From 921d3b1cda739bbec7458e708efc0ff9ba6627cb Mon Sep 17 00:00:00 2001 From: Gabriele Cosmo Date: Wed, 8 Jun 2016 16:18:25 +0200 Subject: [PATCH] Import Geant4 4.0.0 source tree --- Configure | 1775 +- ReleaseNotes/ReleaseNotes4.4.0.txt | 649 + config/G4UI_BUILD.gmk | 33 +- config/G4UI_USE.gmk | 72 +- config/G4VIS_BUILD.gmk | 50 +- config/G4VIS_USE.gmk | 106 +- config/History | 177 +- config/analysis.gmk | 145 +- config/architecture.gmk | 58 +- config/binmake.gmk | 69 +- config/scripts/env.csh.SH | 615 +- config/scripts/env.sh.SH | 542 +- config/scripts/install.sh.SH | 545 +- config/sys/AIX-xlC.gmk | 2 +- config/sys/DEC-cxx.gmk | 2 +- config/sys/HP-aCC.gmk | 2 +- config/sys/Linux-egcs.gmk | 67 + config/sys/Linux-g++.gmk | 26 +- config/sys/SGI-CC.gmk | 2 +- config/sys/SUN-CC.gmk | 24 +- config/sys/{SUN-CC5.gmk => SUN-CC4.gmk} | 31 +- config/sys/WIN32-g++.gmk | 2 +- environments/OPACS/app/EXPO.cc | 2 +- environments/OPACS/app/TEST.cc | 2 +- environments/OPACS/include/EXPO_Detector.icc | 2 +- .../OPACS/include/EXPO_PhysicsList.hh | 2 +- .../OPACS/include/EXPO_PhysicsList.icc | 2 +- environments/OPACS/include/EXPO_Primary.icc | 2 +- environments/OPACS/include/G4o.h | 2 +- environments/OPACS/include/G4oCommon.hh | 2 +- environments/OPACS/include/G4oCommon.icc | 2 +- environments/OPACS/include/G4oDrawer.hh | 2 +- environments/OPACS/include/G4oEXPO.h | 2 +- environments/OPACS/include/G4oScene.hh | 2 +- environments/OPACS/include/G4oState.hh | 2 +- environments/OPACS/include/WoG4o.h | 2 +- environments/OPACS/src/G4o.cc | 2 +- environments/OPACS/src/G4oDrawer.cc | 2 +- environments/OPACS/src/G4oScene.cc | 2 +- environments/OPACS/src/G4oState.cc | 2 +- examples/History | 14 +- examples/README | 43 +- examples/advanced/GNUmakefile | 5 +- examples/advanced/README | 11 +- examples/advanced/brachytherapy/Brachy.cc | 48 +- .../include/BrachyDetectorConstruction.hh | 21 +- .../include/BrachyEventAction.hh | 6 +- .../include/BrachyWaterBoxROGeometry.hh | 4 +- .../brachytherapy/src/BrachyEventAction.cc | 12 + .../advanced/gammaray_telescope/GNUmakefile | 31 +- .../gammaray_telescope/GammaRayTel.cc | 33 +- examples/advanced/gammaray_telescope/README | 153 +- .../advanced/gammaray_telescope/anaphe.gmk | 38 + .../gammaray_telescope/gammaraytel.py | 32 + ...Manager.hh => GammaRayTelAnalysis.hh-AIDA} | 83 +- .../include/GammaRayTelAnalysis.hh-Anaphe | 175 + .../include/GammaRayTelAnalysisMessenger.hh | 13 +- .../include/GammaRayTelAnticoincidenceHit.hh | 4 +- .../include/GammaRayTelAnticoincidenceSD.hh | 6 +- .../include/GammaRayTelCalorimeterHit.hh | 4 +- .../include/GammaRayTelCalorimeterSD.hh | 14 +- .../GammaRayTelDetectorConstruction.hh | 4 +- .../include/GammaRayTelDetectorMessenger.hh | 4 +- .../include/GammaRayTelDigi.hh | 114 + .../include/GammaRayTelDigitizer.hh | 70 +- .../include/GammaRayTelDigitizerMessenger.hh | 68 + .../include/GammaRayTelDummySD.hh | 12 +- .../include/GammaRayTelEventAction.hh | 19 +- .../include/GammaRayTelPhysicsList.hh | 4 +- .../GammaRayTelPrimaryGeneratorAction.hh | 7 +- .../GammaRayTelPrimaryGeneratorMessenger.hh | 4 +- .../include/GammaRayTelRunAction.hh | 16 +- .../include/GammaRayTelTrackerHit.hh | 4 +- .../include/GammaRayTelTrackerROGeometry.hh | 5 +- .../include/GammaRayTelTrackerSD.hh | 14 +- .../include/GammaRayTelVisManager.hh | 4 +- .../advanced/gammaray_telescope/macro1.mac | 23 +- .../advanced/gammaray_telescope/macro2.mac | 33 +- .../advanced/gammaray_telescope/macro3.mac | 20 +- .../gammaray_telescope/prerunGammaRayTel.mac | 4 +- .../src/GammaRayTelAnalysis.cc-AIDA | 344 + .../src/GammaRayTelAnalysis.cc-Anaphe | 405 + .../src/GammaRayTelAnalysisManager.cc | 334 - .../src/GammaRayTelAnalysisMessenger.cc | 29 +- .../src/GammaRayTelAnticoincidenceHit.cc | 4 +- .../src/GammaRayTelAnticoincidenceSD.cc | 17 +- .../src/GammaRayTelCalorimeterHit.cc | 4 +- .../src/GammaRayTelCalorimeterSD.cc | 64 +- .../src/GammaRayTelDetectorConstruction.cc | 103 +- .../src/GammaRayTelDetectorMessenger.cc | 4 +- .../gammaray_telescope/src/GammaRayTelDigi.cc | 102 + .../src/GammaRayTelDigitizer.cc | 152 + .../src/GammaRayTelDigitizerMessenger.cc | 89 + .../src/GammaRayTelEventAction.cc | 160 +- .../src/GammaRayTelPhysicsList.cc | 4 +- .../src/GammaRayTelPrimaryGeneratorAction.cc | 18 +- .../GammaRayTelPrimaryGeneratorMessenger.cc | 4 +- .../src/GammaRayTelRunAction.cc | 25 +- .../src/GammaRayTelTrackerHit.cc | 4 +- .../src/GammaRayTelTrackerROGeometry.cc | 19 +- .../src/GammaRayTelTrackerSD.cc | 82 +- .../src/GammaRayTelVisManager.cc | 44 +- examples/advanced/underground_physics/DMX.cc | 145 + .../advanced/underground_physics/GNUmakefile | 22 + examples/advanced/underground_physics/README | 174 + .../underground_physics/Traceability.txt | 95 + .../underground_physics/UserRequirements.txt | 340 + .../advanced/underground_physics/alpha.mac | 50 + .../underground_physics/alpha_1000.mac | 52 + .../underground_physics/alpha_low.mac | 50 + .../advanced/underground_physics/gamma.mac | 47 + .../underground_physics/gamma_1000.mac | 47 + .../underground_physics/gamma_low.mac | 47 + .../include/DMXDetectorConstruction.hh | 162 + .../include/DMXEventAction.hh | 119 + .../include/DMXEventActionMessenger.hh | 74 + .../include/DMXMaxTimeCuts.hh | 72 + .../include/DMXParticleSource.hh | 132 + .../include/DMXParticleSourceMessenger.hh | 108 + .../include/DMXPhysicsList.hh | 104 + .../underground_physics/include/DMXPmtHit.hh | 100 + .../underground_physics/include/DMXPmtSD.hh | 74 + .../include/DMXPrimaryGeneratorAction.hh | 63 + .../include/DMXRunAction.hh | 72 + .../include/DMXRunActionMessenger.hh | 64 + .../include/DMXScintHit.hh | 114 + .../underground_physics/include/DMXScintSD.hh | 74 + .../include/DMXSpecialCuts.hh | 101 + .../include/DMXStackingAction.hh | 75 + .../include/DMXStackingActionMessenger.hh | 67 + .../include/DMXSteppingAction.hh | 80 + .../include/DMXSteppingActionMessenger.hh | 70 + .../include/DMXVisManager.hh | 80 + .../underground_physics/initInter.mac | 40 + .../advanced/underground_physics/neutron.mac | 56 + .../src/DMXDetectorConstruction.cc | 862 + .../underground_physics/src/DMXEventAction.cc | 335 + .../src/DMXEventActionMessenger.cc | 155 + .../underground_physics/src/DMXMaxTimeCuts.cc | 94 + .../src/DMXParticleSource.cc | 426 + .../src/DMXParticleSourceMessenger.cc | 336 + .../underground_physics/src/DMXPhysicsList.cc | 813 + .../underground_physics/src/DMXPmtHit.cc | 118 + .../underground_physics/src/DMXPmtSD.cc | 124 + .../src/DMXPrimaryGeneratorAction.cc | 59 +- .../underground_physics/src/DMXRunAction.cc | 85 +- .../src/DMXRunActionMessenger.cc | 82 + .../underground_physics/src/DMXScintHit.cc | 109 + .../underground_physics/src/DMXScintSD.cc | 141 + .../underground_physics/src/DMXSpecialCuts.cc | 79 + .../src/DMXStackingAction.cc | 112 + .../src/DMXStackingActionMessenger.cc | 76 + .../src/DMXSteppingAction.cc | 157 + .../src/DMXSteppingActionMessenger.cc | 122 + .../underground_physics/src/DMXVisManager.cc | 159 + .../advanced/underground_physics/wired.mac | 3 + .../advanced/xray_fluorescence/B_flare.dat | 8 + .../advanced/xray_fluorescence/C_flare.dat | 8 + .../xray_fluorescence/G4History.macro | 16 + .../advanced/xray_fluorescence/GNUmakefile | 42 + .../advanced/xray_fluorescence/M_flare.dat | 8 + examples/advanced/xray_fluorescence/README | 131 + .../advanced/xray_fluorescence/XrayFluo.cc | 138 + .../advanced/xray_fluorescence/XrayFluo.py | 199 + .../advanced/xray_fluorescence/anaphe.gmk | 17 + .../advanced/xray_fluorescence/efficienza.dat | 1571 + examples/advanced/xray_fluorescence/fit.py | 77 + .../include/XrayFluoAnalysisManager.hh-AIDA | 101 + .../include/XrayFluoAnalysisManager.hh-Anaphe | 108 + .../include/XrayFluoAnalysisMessenger.hh | 70 + .../include/XrayFluoDataSet.hh | 90 + .../include/XrayFluoDetectorConstruction.hh | 247 + .../include/XrayFluoDetectorMessenger.hh | 69 + .../include/XrayFluoEventAction.hh | 88 + .../include/XrayFluoEventActionMessenger.hh | 61 + .../include/XrayFluoHPGeSD.hh | 77 + .../include/XrayFluoNormalization.hh | 64 + .../include/XrayFluoPhysicsList.hh | 107 + .../include/XrayFluoPhysicsListMessenger.hh | 83 + .../include/XrayFluoPrimaryGeneratorAction.hh | 99 + .../XrayFluoPrimaryGeneratorMessenger.hh | 73 + .../include/XrayFluoRunAction.hh | 122 + .../include/XrayFluoSensorHit.hh | 96 + .../include/XrayFluoSteppingAction.hh | 49 +- .../include/XrayFluoSteppingVerbose.hh | 59 + .../include/XrayFluoVisManager.hh | 73 + .../xray_fluorescence}/initInter.mac | 7 +- examples/advanced/xray_fluorescence/macro.mac | 12 + .../advanced/xray_fluorescence/macro1.mac | 12 + .../advanced/xray_fluorescence/macro2.mac | 16 + .../xray_fluorescence/merc2_flx_alp_max.dat | 837 + .../xray_fluorescence/merc_flx_alp_min.dat | 837 + .../xray_fluorescence/mercury2_flx_solmax.dat | 837 + .../xray_fluorescence/mercury_flx_solmin.dat | 837 + .../advanced/xray_fluorescence/response.dat | 21011 +++++++++++ .../src/XrayFluoAnalysisManager.cc-AIDA | 323 + .../src/XrayFluoAnalysisManager.cc-Anaphe | 257 + .../src/XrayFluoAnalysisMessenger.cc | 84 + .../xray_fluorescence/src/XrayFluoDataSet.cc | 205 + .../src/XrayFluoDetectorConstruction.cc | 536 + .../src/XrayFluoDetectorMessenger.cc | 76 + .../src/XrayFluoEventAction.cc | 244 + .../src/XrayFluoEventActionMessenger.cc | 89 + .../xray_fluorescence/src/XrayFluoHPGeSD.cc | 138 + .../src/XrayFluoNormalization.cc | 88 + .../src/XrayFluoPhysicsList.cc | 333 + .../src/XrayFluoPhysicsListMessenger.cc | 173 + .../src/XrayFluoPrimaryGeneratorAction.cc | 200 + .../src/XrayFluoPrimaryGeneratorMessenger.cc | 103 + .../src/XrayFluoRunAction.cc | 413 + .../src/XrayFluoSensorHit.cc | 101 + .../src/XrayFluoSteppingAction.cc | 65 + .../src/XrayFluoSteppingVerbose.cc | 188 + .../src/XrayFluoVisManager.cc | 162 + examples/advanced/xray_telescope/GNUmakefile | 22 +- examples/advanced/xray_telescope/History | 16 +- examples/advanced/xray_telescope/README | 79 +- examples/advanced/xray_telescope/XrayTel.cc | 34 +- examples/advanced/xray_telescope/anaphe.gmk | 33 + examples/advanced/xray_telescope/dawn.mac | 6 +- ...ysisManager.hh => XrayTelAnalysis.hh-AIDA} | 58 +- .../include/XrayTelAnalysis.hh-Anaphe | 126 + .../include/XrayTelEventAction.hh | 23 +- .../include/XrayTelRunAction.hh | 34 +- .../include/XrayTelSteppingAction.hh | 30 +- examples/advanced/xray_telescope/opengl.mac | 40 +- ...ysisManager.cc => XrayTelAnalysis.cc-AIDA} | 183 +- .../src/XrayTelAnalysis.cc-Anaphe | 169 + .../xray_telescope/src/XrayTelEventAction.cc | 21 +- .../xray_telescope/src/XrayTelRunAction.cc | 98 +- .../src/XrayTelSteppingAction.cc | 97 +- .../xray_telescope/src/XrayTelVisManager.cc | 48 +- examples/advanced/xray_telescope/vrml.mac | 27 +- examples/extended/analysis/AnaEx01/AnaEx01.cc | 23 +- examples/extended/analysis/AnaEx01/History | 11 +- examples/extended/analysis/AnaEx01/README | 141 +- .../AnaEx01/analysis/Falsetto/run.mac | 19 + .../analysis/AnaEx01/analysis/Lab/AnaEx01.C | 20 + .../analysis/Lab/{session.tcl => AnaEx01.py} | 94 +- .../AnaEx01/include/AnaEx01AnalysisManager.hh | 29 +- .../AnaEx01/include/AnaEx01CalorHit.hh | 4 +- .../AnaEx01/include/AnaEx01CalorimeterSD.hh | 4 +- .../include/AnaEx01DetectorConstruction.hh | 4 +- .../include/AnaEx01DetectorMessenger.hh | 4 +- .../AnaEx01/include/AnaEx01EventAction.hh | 4 +- .../AnaEx01/include/AnaEx01PhysicsList.hh | 4 +- .../include/AnaEx01PrimaryGeneratorAction.hh | 4 +- .../AnaEx01PrimaryGeneratorMessenger.hh | 4 +- .../AnaEx01/include/AnaEx01RunAction.hh | 4 +- .../AnaEx01/include/AnaEx01SteppingAction.hh | 4 +- .../AnaEx01/include/AnaEx01SteppingVerbose.hh | 4 +- .../AnaEx01/include/AnaEx01VisManager.hh | 4 +- .../AnaEx01/src/AnaEx01AnalysisManager.cc | 143 +- .../analysis/AnaEx01/src/AnaEx01CalorHit.cc | 4 +- .../AnaEx01/src/AnaEx01CalorimeterSD.cc | 4 +- .../src/AnaEx01DetectorConstruction.cc | 4 +- .../AnaEx01/src/AnaEx01DetectorMessenger.cc | 4 +- .../AnaEx01/src/AnaEx01EventAction.cc | 4 +- .../AnaEx01/src/AnaEx01PhysicsList.cc | 4 +- .../src/AnaEx01PrimaryGeneratorAction.cc | 4 +- .../src/AnaEx01PrimaryGeneratorMessenger.cc | 4 +- .../analysis/AnaEx01/src/AnaEx01RunAction.cc | 4 +- .../AnaEx01/src/AnaEx01SteppingAction.cc | 4 +- .../AnaEx01/src/AnaEx01SteppingVerbose.cc | 4 +- .../analysis/AnaEx01/src/AnaEx01VisManager.cc | 52 +- .../electromagnetic/TestEm1/GNUmakefile | 6 +- .../extended/electromagnetic/TestEm1/History | 104 +- .../extended/electromagnetic/TestEm1/README | 8 +- .../electromagnetic/TestEm1/TestEm1.cc | 20 +- .../electromagnetic/TestEm1/TestEm1.in | 9 +- .../electromagnetic/TestEm1/TestEm1.out | 166 +- .../include/Em1DetectorConstruction.hh | 12 +- .../TestEm1/include/Em1DetectorMessenger.hh | 12 +- .../TestEm1/include/Em1EventAction.hh | 16 +- .../include/Em1EventActionMessenger.hh | 12 +- .../TestEm1/include/Em1PhysicsList.hh | 12 +- .../include/Em1PhysicsListMessenger.hh | 12 +- .../include/Em1PrimaryGeneratorAction.hh | 13 +- .../TestEm1/include/Em1RunAction.hh | 24 +- .../TestEm1/include/Em1SteppingAction.hh | 12 +- .../TestEm1/include/Em1SteppingVerbose.hh | 12 +- .../TestEm1/include/Em1TrackingAction.hh | 11 +- .../TestEm1/include/Em1VisManager.hh | 14 +- .../TestEm1/include/ProcessesCount.hh | 15 +- .../extended/electromagnetic/TestEm1/init.mac | 36 - .../electromagnetic/TestEm1/run00.mac | 3 +- .../electromagnetic/TestEm1/run01.mac | 10 +- .../electromagnetic/TestEm1/run02.mac | 10 +- .../electromagnetic/TestEm1/run03.mac | 10 +- .../electromagnetic/TestEm1/run04.mac | 10 +- .../electromagnetic/TestEm1/run05.mac | 10 +- .../electromagnetic/TestEm1/run06.mac | 10 +- .../electromagnetic/TestEm1/run07.mac | 10 +- .../electromagnetic/TestEm1/run08.mac | 13 +- .../electromagnetic/TestEm1/run09.mac | 13 +- .../electromagnetic/TestEm1/run11.mac | 4 +- .../TestEm1/src/Em1DetectorConstruction.cc | 40 +- .../TestEm1/src/Em1DetectorMessenger.cc | 22 +- .../TestEm1/src/Em1EventAction.cc | 34 +- .../TestEm1/src/Em1EventActionMessenger.cc | 19 +- .../TestEm1/src/Em1PhysicsList.cc | 45 +- .../TestEm1/src/Em1PhysicsListMessenger.cc | 25 +- .../TestEm1/src/Em1PrimaryGeneratorAction.cc | 16 +- .../TestEm1/src/Em1RunAction.cc | 78 +- .../TestEm1/src/Em1SteppingAction.cc | 16 +- .../TestEm1/src/Em1SteppingVerbose.cc | 56 +- .../TestEm1/src/Em1TrackingAction.cc | 13 +- .../TestEm1/src/Em1VisManager.cc | 66 +- .../{TestEm3/init.mac => TestEm1/vis.mac} | 16 +- .../electromagnetic/TestEm10/GNUmakefile | 27 + .../extended/electromagnetic/TestEm10/History | 35 + .../extended/electromagnetic/TestEm10/README | 132 + .../electromagnetic/TestEm10/TestEm10.cc | 133 + .../electromagnetic/TestEm10/TestEm10.in | 46 + .../TestEm10/TestEm10.large_N.in | 46 + .../TestEm10/TestEm10.large_N.out | 1138 + .../electromagnetic/TestEm10/TestEm10.out | 1148 + .../TestEm10/include/Em10CalorHit.hh | 97 + .../TestEm10/include/Em10CalorimeterSD.hh | 66 + .../include/Em10DetectorConstruction.hh | 199 + .../TestEm10/include/Em10DetectorMessenger.hh | 84 + .../TestEm10/include/Em10EventAction.hh | 84 +- .../include/Em10EventActionMessenger.hh | 60 + .../TestEm10/include/Em10Materials.hh | 402 + .../TestEm10/include/Em10PhysicsList.hh | 133 + .../include/Em10PhysicsListMessenger.hh | 66 + .../include/Em10PrimaryGeneratorAction.hh | 75 + .../include/Em10PrimaryGeneratorMessenger.hh | 61 + .../TestEm10/include/Em10RunAction.hh | 190 + .../TestEm10/include/Em10RunMessenger.hh | 115 + .../TestEm10/include/Em10StepCut.hh | 125 + .../TestEm10/include/Em10SteppingAction.hh | 68 + .../TestEm10/include/Em10SteppingMessenger.hh | 63 + .../TestEm10/include/Em10SteppingVerbose.hh | 63 + .../TestEm10/include/Em10VisManager.hh | 66 + .../include/TRTDetectorConstruction.hh | 54 + .../TestEm10/include/TRTMaterials.hh | 121 + .../electromagnetic/TestEm10/init.mac | 10 + .../electromagnetic/TestEm10/run01.mac | 37 + .../electromagnetic/TestEm10/run01a.mac | 39 + .../electromagnetic/TestEm10/run01b.mac | 38 + .../electromagnetic/TestEm10/run02.mac | 37 + .../electromagnetic/TestEm10/run02a.mac | 37 + .../electromagnetic/TestEm10/run03.mac | 36 + .../electromagnetic/TestEm10/run04.mac | 36 + .../electromagnetic/TestEm10/run05.mac | 39 + .../electromagnetic/TestEm10/run1.mac | 95 + .../electromagnetic/TestEm10/run11.mac | 71 + .../electromagnetic/TestEm10/run12.mac | 36 + .../electromagnetic/TestEm10/run13.mac | 36 + .../electromagnetic/TestEm10/run14.mac | 36 + .../electromagnetic/TestEm10/run15.mac | 36 + .../electromagnetic/TestEm10/run16.mac | 36 + .../electromagnetic/TestEm10/run2.mac | 93 + .../electromagnetic/TestEm10/run21.mac | 37 + .../electromagnetic/TestEm10/run22.mac | 37 + .../TestEm10/src/Em10CalorHit.cc | 79 + .../TestEm10/src/Em10CalorimeterSD.cc | 131 + .../TestEm10/src/Em10DetectorConstruction.cc | 908 + .../TestEm10/src/Em10DetectorMessenger.cc | 226 + .../TestEm10/src/Em10EventAction.cc | 248 + .../TestEm10/src/Em10EventActionMessenger.cc | 88 + .../TestEm10/src/Em10PhysicsList.cc | 494 + .../TestEm10/src/Em10PhysicsListMessenger.cc | 120 + .../src/Em10PrimaryGeneratorAction.cc | 152 + .../src/Em10PrimaryGeneratorMessenger.cc | 93 + .../TestEm10/src/Em10RunAction.cc | 1355 + .../TestEm10/src/Em10RunMessenger.cc | 390 + .../TestEm10/src/Em10StepCut.cc | 56 + .../TestEm10/src/Em10SteppingAction.cc | 207 + .../TestEm10/src/Em10SteppingMessenger.cc | 60 + .../TestEm10/src/Em10SteppingVerbose.cc | 186 + .../TestEm10/src/Em10VisManager.cc | 153 + .../electromagnetic/TestEm2/GNUmakefile | 6 +- .../extended/electromagnetic/TestEm2/History | 43 +- .../extended/electromagnetic/TestEm2/README | 8 +- .../electromagnetic/TestEm2/TestEm2.cc | 18 +- .../electromagnetic/TestEm2/TestEm2.in | 11 +- .../electromagnetic/TestEm2/TestEm2.out | 219 +- .../include/Em2DetectorConstruction.hh | 14 +- .../TestEm2/include/Em2DetectorMessenger.hh | 12 +- .../TestEm2/include/Em2EventAction.hh | 12 +- .../include/Em2EventActionMessenger.hh | 12 +- .../TestEm2/include/Em2PhysicsList.hh | 12 +- .../include/Em2PhysicsListMessenger.hh | 12 +- .../include/Em2PrimaryGeneratorAction.hh | 13 +- .../TestEm2/include/Em2RunAction.hh | 31 +- .../TestEm2/include/Em2SteppingAction.hh | 12 +- .../TestEm2/include/Em2SteppingVerbose.hh | 12 +- .../TestEm2/include/Em2TrackingAction.hh | 8 +- .../TestEm2/include/Em2VisManager.hh | 14 +- .../electromagnetic/TestEm2/run01.mac | 6 +- .../electromagnetic/TestEm2/run02.mac | 9 +- .../electromagnetic/TestEm2/run03.mac | 9 +- .../electromagnetic/TestEm2/run04.mac | 9 +- .../TestEm2/src/Em2DetectorConstruction.cc | 45 +- .../TestEm2/src/Em2DetectorMessenger.cc | 20 +- .../TestEm2/src/Em2EventAction.cc | 35 +- .../TestEm2/src/Em2EventActionMessenger.cc | 21 +- .../TestEm2/src/Em2PhysicsList.cc | 36 +- .../TestEm2/src/Em2PhysicsListMessenger.cc | 21 +- .../TestEm2/src/Em2PrimaryGeneratorAction.cc | 16 +- .../TestEm2/src/Em2RunAction.cc | 88 +- .../TestEm2/src/Em2SteppingAction.cc | 38 +- .../TestEm2/src/Em2SteppingVerbose.cc | 56 +- .../TestEm2/src/Em2TrackingAction.cc | 15 +- .../TestEm2/src/Em2VisManager.cc | 62 +- .../TestEm2/{init.mac => vis.mac} | 11 +- .../electromagnetic/TestEm3/GNUmakefile | 6 +- .../extended/electromagnetic/TestEm3/History | 24 +- .../extended/electromagnetic/TestEm3/README | 10 +- .../electromagnetic/TestEm3/TestEm3.cc | 18 +- .../electromagnetic/TestEm3/TestEm3.in | 6 +- .../electromagnetic/TestEm3/TestEm3.out | 150 +- .../TestEm3/geant3/g4mat/include/ggvalues.inc | 22 - .../TestEm3/geant3/g4mat/include/ugmate.inc | 22 - .../TestEm3/geant3/g4mat/iron.dat | 28 - .../TestEm3/geant3/g4mat/scin.dat | 27 - .../TestEm3/geant3/g4mat/src/main.F | 22 - .../TestEm3/geant3/g4mat/src/ug3g4.F | 22 - .../TestEm3/geant3/g4mat/src/ugimat.F | 24 +- .../TestEm3/geant3/g4mat/src/uginit.F | 22 - .../TestEm3/geant3/g4mat/src/uglast.F | 22 - .../electromagnetic/TestEm3/geant3/run07.dat | 3 +- .../TestEm3/geant3/src/ugeom.F | 2 +- .../TestEm3/include/Em3CalorHit.hh | 18 +- .../TestEm3/include/Em3CalorimeterSD.hh | 12 +- .../include/Em3DetectorConstruction.hh | 24 +- .../TestEm3/include/Em3DetectorMessenger.hh | 12 +- .../TestEm3/include/Em3EventAction.hh | 12 +- .../include/Em3EventActionMessenger.hh | 12 +- .../TestEm3/include/Em3PhysicsList.hh | 12 +- .../include/Em3PhysicsListMessenger.hh | 12 +- .../include/Em3PrimaryGeneratorAction.hh | 12 +- .../include/Em3PrimaryGeneratorMessenger.hh | 12 +- .../TestEm3/include/Em3RunAction.hh | 18 +- .../TestEm3/include/Em3RunActionMessenger.hh | 24 +- .../TestEm3/include/Em3SteppingAction.hh | 12 +- .../TestEm3/include/Em3SteppingVerbose.hh | 27 +- .../TestEm3/include/Em3VisManager.hh | 14 +- .../TestEm3/retrieveTables.mac | 17 + .../electromagnetic/TestEm3/run01.mac | 5 +- .../electromagnetic/TestEm3/run02.mac | 10 +- .../electromagnetic/TestEm3/run03.mac | 10 +- .../electromagnetic/TestEm3/run04.mac | 10 +- .../electromagnetic/TestEm3/run05.mac | 10 +- .../electromagnetic/TestEm3/run06.mac | 9 +- .../electromagnetic/TestEm3/run07.mac | 12 +- .../electromagnetic/TestEm3/run12.draw | 12 +- .../electromagnetic/TestEm3/run15.mac | 19 +- .../electromagnetic/TestEm3/run16.mac | 13 +- .../TestEm3/src/Em3CalorHit.cc | 30 +- .../TestEm3/src/Em3CalorimeterSD.cc | 29 +- .../TestEm3/src/Em3DetectorConstruction.cc | 56 +- .../TestEm3/src/Em3DetectorMessenger.cc | 26 +- .../TestEm3/src/Em3EventAction.cc | 35 +- .../TestEm3/src/Em3EventActionMessenger.cc | 21 +- .../TestEm3/src/Em3PhysicsList.cc | 37 +- .../TestEm3/src/Em3PhysicsListMessenger.cc | 21 +- .../TestEm3/src/Em3PrimaryGeneratorAction.cc | 18 +- .../src/Em3PrimaryGeneratorMessenger.cc | 24 +- .../TestEm3/src/Em3RunAction.cc | 76 +- .../TestEm3/src/Em3RunActionMessenger.cc | 51 +- .../TestEm3/src/Em3SteppingAction.cc | 18 +- .../TestEm3/src/Em3SteppingVerbose.cc | 56 +- .../TestEm3/src/Em3VisManager.cc | 62 +- .../electromagnetic/TestEm3/storeTables.mac | 22 + .../extended/electromagnetic/TestEm3/vis.mac | 29 + .../extended/electromagnetic/TestEm4/History | 36 +- .../extended/electromagnetic/TestEm4/README | 6 +- .../electromagnetic/TestEm4/TestEm4.cc | 6 +- .../electromagnetic/TestEm4/TestEm4.in | 6 +- .../electromagnetic/TestEm4/TestEm4.out | 54 +- .../include/Em4DetectorConstruction.hh | 13 +- .../TestEm4/include/Em4EventAction.hh | 12 +- .../include/Em4EventActionMessenger.hh | 12 +- .../TestEm4/include/Em4PhysicsList.hh | 12 +- .../include/Em4PrimaryGeneratorAction.hh | 13 +- .../TestEm4/include/Em4RunAction.hh | 18 +- .../TestEm4/include/Em4SteppingAction.hh | 4 +- .../TestEm4/include/Em4SteppingVerbose.hh | 12 +- .../TestEm4/include/Em4VisManager.hh | 14 +- .../electromagnetic/TestEm4/run01.mac | 5 +- .../TestEm4/src/Em4DetectorConstruction.cc | 18 +- .../TestEm4/src/Em4EventAction.cc | 38 +- .../TestEm4/src/Em4EventActionMessenger.cc | 19 +- .../TestEm4/src/Em4PhysicsList.cc | 37 +- .../TestEm4/src/Em4PrimaryGeneratorAction.cc | 16 +- .../TestEm4/src/Em4RunAction.cc | 50 +- .../TestEm4/src/Em4SteppingAction.cc | 16 +- .../TestEm4/src/Em4SteppingVerbose.cc | 54 +- .../TestEm4/src/Em4VisManager.cc | 66 +- .../TestEm4/{init.mac => vis.mac} | 9 +- .../electromagnetic/TestEm5/GNUmakefile | 6 +- .../extended/electromagnetic/TestEm5/History | 49 +- .../extended/electromagnetic/TestEm5/README | 27 +- .../electromagnetic/TestEm5/TestEm5.cc | 22 +- .../electromagnetic/TestEm5/TestEm5.in | 10 +- .../electromagnetic/TestEm5/TestEm5.out | 371 +- .../TestEm5/include/Em5CalorHit.hh | 56 +- .../TestEm5/include/Em5CalorimeterSD.hh | 11 +- .../include/Em5DetectorConstruction.hh | 14 +- .../TestEm5/include/Em5DetectorMessenger.hh | 12 +- .../TestEm5/include/Em5EventAction.hh | 12 +- .../include/Em5EventActionMessenger.hh | 12 +- .../TestEm5/include/Em5PhysicsList.hh | 12 +- .../include/Em5PhysicsListMessenger.hh | 12 +- .../include/Em5PrimaryGeneratorAction.hh | 12 +- .../include/Em5PrimaryGeneratorMessenger.hh | 12 +- .../TestEm5/include/Em5RunAction.hh | 20 +- .../TestEm5/include/Em5RunMessenger.hh | 19 +- .../TestEm5/include/Em5StepCut.hh | 16 +- .../TestEm5/include/Em5SteppingAction.hh | 12 +- .../TestEm5/include/Em5SteppingMessenger.hh | 4 +- .../TestEm5/include/Em5SteppingVerbose.hh | 12 +- .../TestEm5/include/Em5VisManager.hh | 14 +- .../electromagnetic/TestEm5/run01.mac | 11 +- .../electromagnetic/TestEm5/run01a.mac | 9 +- .../electromagnetic/TestEm5/run02.mac | 8 +- .../electromagnetic/TestEm5/run02a.mac | 9 +- .../electromagnetic/TestEm5/run03.mac | 8 +- .../electromagnetic/TestEm5/run04.mac | 8 +- .../electromagnetic/TestEm5/run05.mac | 8 +- .../electromagnetic/TestEm5/run11.mac | 8 +- .../electromagnetic/TestEm5/run12.mac | 12 +- .../electromagnetic/TestEm5/run13.mac | 8 +- .../electromagnetic/TestEm5/run14.mac | 12 +- .../electromagnetic/TestEm5/run15.mac | 8 +- .../electromagnetic/TestEm5/run16.mac | 8 +- .../electromagnetic/TestEm5/run17.mac | 8 +- .../electromagnetic/TestEm5/run18.mac | 8 +- .../electromagnetic/TestEm5/run19.mac | 8 +- .../electromagnetic/TestEm5/run20.mac | 8 +- .../electromagnetic/TestEm5/run21.mac | 19 +- .../electromagnetic/TestEm5/run22.mac | 18 +- .../electromagnetic/TestEm5/run44.draw | 9 +- .../electromagnetic/TestEm5/run55.mac | 8 +- .../TestEm5/src/Em5CalorHit.cc | 26 +- .../TestEm5/src/Em5CalorimeterSD.cc | 24 +- .../TestEm5/src/Em5DetectorConstruction.cc | 66 +- .../TestEm5/src/Em5DetectorMessenger.cc | 66 +- .../TestEm5/src/Em5EventAction.cc | 56 +- .../TestEm5/src/Em5EventActionMessenger.cc | 19 +- .../TestEm5/src/Em5PhysicsList.cc | 48 +- .../TestEm5/src/Em5PhysicsListMessenger.cc | 29 +- .../TestEm5/src/Em5PrimaryGeneratorAction.cc | 22 +- .../src/Em5PrimaryGeneratorMessenger.cc | 32 +- .../TestEm5/src/Em5RunAction.cc | 162 +- .../TestEm5/src/Em5RunMessenger.cc | 53 +- .../TestEm5/src/Em5SteppingAction.cc | 23 +- .../TestEm5/src/Em5SteppingMessenger.cc | 18 +- .../TestEm5/src/Em5SteppingVerbose.cc | 56 +- .../TestEm5/src/Em5VisManager.cc | 66 +- .../TestEm5/{init.mac => vis.mac} | 12 +- .../extended/electromagnetic/TestEm8/History | 5 +- .../extended/electromagnetic/TestEm8/README | 30 +- .../electromagnetic/TestEm8/TestEm8.cc | 4 +- .../electromagnetic/TestEm8/TestEm8.out | 110 +- .../TestEm8/include/Em8CalorHit.hh | 4 +- .../TestEm8/include/Em8CalorimeterSD.hh | 4 +- .../include/Em8DetectorConstruction.hh | 4 +- .../TestEm8/include/Em8DetectorMessenger.hh | 4 +- .../TestEm8/include/Em8EventAction.hh | 4 +- .../include/Em8EventActionMessenger.hh | 4 +- .../TestEm8/include/Em8PhysicsList.hh | 4 +- .../include/Em8PhysicsListMessenger.hh | 4 +- .../include/Em8PrimaryGeneratorAction.hh | 4 +- .../include/Em8PrimaryGeneratorMessenger.hh | 4 +- .../TestEm8/include/Em8RunAction.hh | 4 +- .../TestEm8/include/Em8RunMessenger.hh | 4 +- .../TestEm8/include/Em8StepCut.hh | 4 +- .../TestEm8/include/Em8SteppingAction.hh | 4 +- .../TestEm8/include/Em8SteppingMessenger.hh | 4 +- .../TestEm8/include/Em8SteppingVerbose.hh | 4 +- .../TestEm8/include/Em8VisManager.hh | 4 +- .../include/TRTDetectorConstruction.hh | 4 +- .../TestEm8/include/TRTMaterials.hh | 4 +- .../TestEm8/src/Em8CalorHit.cc | 4 +- .../TestEm8/src/Em8CalorimeterSD.cc | 4 +- .../TestEm8/src/Em8DetectorConstruction.cc | 12 +- .../TestEm8/src/Em8DetectorMessenger.cc | 4 +- .../TestEm8/src/Em8EventAction.cc | 7 +- .../TestEm8/src/Em8EventActionMessenger.cc | 4 +- .../TestEm8/src/Em8PhysicsList.cc | 4 +- .../TestEm8/src/Em8PhysicsListMessenger.cc | 4 +- .../TestEm8/src/Em8PrimaryGeneratorAction.cc | 4 +- .../src/Em8PrimaryGeneratorMessenger.cc | 4 +- .../TestEm8/src/Em8RunAction.cc | 4 +- .../TestEm8/src/Em8RunMessenger.cc | 4 +- .../electromagnetic/TestEm8/src/Em8StepCut.cc | 4 +- .../TestEm8/src/Em8SteppingAction.cc | 4 +- .../TestEm8/src/Em8SteppingMessenger.cc | 4 +- .../TestEm8/src/Em8SteppingVerbose.cc | 4 +- .../TestEm8/src/Em8VisManager.cc | 56 +- examples/extended/field/field01/GNUmakefile | 19 + examples/extended/field/field01/History | 24 + examples/extended/field/field01/README | 84 + examples/extended/field/field01/field01.cc | 136 + examples/extended/field/field01/field01.in | 33 + examples/extended/field/field01/field01.out | 1160 + .../field/field01/include/F01CalorHit.hh | 97 + .../field/field01/include/F01CalorimeterSD.hh | 66 + .../include/F01DetectorConstruction.hh | 135 + .../field01/include/F01DetectorMessenger.hh | 75 + .../include/F01ElectroMagneticField.hh | 96 + .../field/field01/include/F01EventAction.hh | 69 + .../include/F01EventActionMessenger.hh} | 27 +- .../field01/include/F01FieldMessenger.hh | 67 +- .../field/field01/include/F01PhysicsList.hh | 133 + .../include/F01PhysicsListMessenger.hh | 66 + .../include/F01PrimaryGeneratorAction.hh | 75 + .../include/F01PrimaryGeneratorMessenger.hh | 61 + .../field/field01/include/F01RunAction.hh | 65 + .../field/field01/include/F01RunMessenger.hh | 69 + .../field/field01/include/F01StepCut.hh | 125 + .../field01/include/F01SteppingAction.hh | 56 + .../field01/include/F01SteppingMessenger.hh | 63 + .../field01/include/F01SteppingVerbose.hh | 61 + .../field/field01/include/F01VisManager.hh | 66 + .../extended/field/field01/src/F01CalorHit.cc | 79 + .../field/field01/src/F01CalorimeterSD.cc | 127 + .../field01/src/F01DetectorConstruction.cc | 414 + .../field/field01/src/F01DetectorMessenger.cc | 148 + .../field01/src/F01ElectroMagneticField.cc | 226 + .../field/field01/src/F01EventAction.cc | 138 + .../field01/src/F01EventActionMessenger.cc | 88 + .../field/field01/src/F01FieldMessenger.cc | 119 + .../field/field01/src/F01PhysicsList.cc | 477 + .../field01/src/F01PhysicsListMessenger.cc | 120 + .../field01/src/F01PrimaryGeneratorAction.cc | 164 + .../src/F01PrimaryGeneratorMessenger.cc | 93 + .../field/field01/src/F01RunAction.cc | 95 + .../field01/src/F01RunMessenger.cc} | 34 +- .../extended/field/field01/src/F01StepCut.cc | 56 + .../field/field01/src/F01SteppingAction.cc | 58 + .../field/field01/src/F01SteppingMessenger.cc | 60 + .../field/field01/src/F01SteppingVerbose.cc | 184 + .../field/field01/src/F01VisManager.cc | 153 + examples/extended/field/field02/GNUmakefile | 19 + examples/extended/field/field02/History | 33 + examples/extended/field/field02/README | 79 + examples/extended/field/field02/field02.cc | 136 + examples/extended/field/field02/field02.in | 25 + examples/extended/field/field02/field02.out | 3352 ++ .../field/field02/include/F02CalorHit.hh | 97 + .../field/field02/include/F02CalorimeterSD.hh | 66 + .../include/F02DetectorConstruction.hh | 135 + .../field02/include/F02DetectorMessenger.hh | 75 + .../include/F02ElectroMagneticField.hh | 103 + .../field/field02/include/F02EventAction.hh | 68 + .../include/F02EventActionMessenger.hh} | 27 +- .../field02/include/F02FieldMessenger.hh | 72 + .../field/field02/include/F02PhysicsList.hh | 133 + .../include/F02PhysicsListMessenger.hh | 66 + .../include/F02PrimaryGeneratorAction.hh | 73 + .../include/F02PrimaryGeneratorMessenger.hh | 61 + .../field/field02/include/F02RunAction.hh | 65 + .../field/field02/include/F02RunMessenger.hh | 68 + .../field/field02/include/F02StepCut.hh | 125 + .../field02/include/F02SteppingAction.hh | 57 + .../field02/include/F02SteppingMessenger.hh | 63 + .../field02/include/F02SteppingVerbose.hh | 61 + .../field/field02/include/F02VisManager.hh | 66 + .../extended/field/field02/src/F02CalorHit.cc | 79 + .../field/field02/src/F02CalorimeterSD.cc | 134 + .../field02/src/F02DetectorConstruction.cc | 410 + .../field/field02/src/F02DetectorMessenger.cc | 160 + .../field02/src/F02ElectroMagneticField.cc | 219 + .../field/field02/src/F02EventAction.cc | 136 + .../field02/src/F02EventActionMessenger.cc | 88 + .../field/field02/src/F02FieldMessenger.cc | 121 + .../field/field02/src/F02PhysicsList.cc | 457 + .../field02/src/F02PhysicsListMessenger.cc | 120 + .../field02/src/F02PrimaryGeneratorAction.cc | 154 + .../src/F02PrimaryGeneratorMessenger.cc | 93 + .../field/field02/src/F02RunAction.cc | 94 + .../field02/src/F02RunMessenger.cc} | 37 +- .../extended/field/field02/src/F02StepCut.cc | 56 + .../field/field02/src/F02SteppingAction.cc | 59 + .../field/field02/src/F02SteppingMessenger.cc | 60 + .../field/field02/src/F02SteppingVerbose.cc | 168 + .../field/field02/src/F02VisManager.cc | 153 + examples/extended/field/field03/GNUmakefile | 19 + examples/extended/field/field03/History | 24 + examples/extended/field/field03/README | 80 + examples/extended/field/field03/field03.cc | 136 + examples/extended/field/field03/field03.in | 28 + examples/extended/field/field03/field03.out | 1271 + .../field/field03/include/F03CalorHit.hh | 97 + .../field/field03/include/F03CalorimeterSD.hh | 66 + .../include/F03DetectorConstruction.hh | 156 + .../field03/include/F03DetectorMessenger.hh | 75 + .../include/F03ElectroMagneticField.hh | 96 + .../field/field03/include/F03EventAction.hh | 68 + .../include/F03EventActionMessenger.hh} | 26 +- .../field03/include/F03FieldMessenger.hh | 72 + .../field/field03/include/F03PhysicsList.hh | 130 + .../include/F03PhysicsListMessenger.hh | 65 +- .../include/F03PrimaryGeneratorAction.hh | 75 + .../include/F03PrimaryGeneratorMessenger.hh | 61 + .../field/field03/include/F03RunAction.hh | 65 + .../field/field03/include/F03RunMessenger.hh | 68 + .../field/field03/include/F03StepCut.hh | 125 + .../field03/include/F03SteppingAction.hh | 59 + .../field03/include/F03SteppingMessenger.hh | 63 + .../field03/include/F03SteppingVerbose.hh | 61 + .../field/field03/include/F03VisManager.hh | 66 + .../extended/field/field03/src/F03CalorHit.cc | 79 + .../field/field03/src/F03CalorimeterSD.cc | 133 + .../field03/src/F03DetectorConstruction.cc | 495 + .../field/field03/src/F03DetectorMessenger.cc | 148 + .../field03/src/F03ElectroMagneticField.cc | 238 + .../field/field03/src/F03EventAction.cc | 137 + .../field03/src/F03EventActionMessenger.cc | 88 + .../field/field03/src/F03FieldMessenger.cc | 121 + .../field/field03/src/F03PhysicsList.cc | 457 + .../field03/src/F03PhysicsListMessenger.cc | 120 + .../field03/src/F03PrimaryGeneratorAction.cc | 153 + .../src/F03PrimaryGeneratorMessenger.cc | 92 + .../field/field03/src/F03RunAction.cc | 93 + .../field03/src/F03RunMessenger.cc} | 34 +- .../extended/field/field03/src/F03StepCut.cc | 56 + .../field/field03/src/F03SteppingAction.cc | 58 + .../field/field03/src/F03SteppingMessenger.cc | 60 + .../field/field03/src/F03SteppingVerbose.cc | 183 + .../field/field03/src/F03VisManager.cc | 153 + .../extended/g3tog4/clGeometry/clGeometry.cc | 4 +- .../extended/g3tog4/clGeometry/clGeometry.out | 118 +- .../include/G3toG4DetectorConstruction.hh | 4 +- .../clGeometry/include/G3toG4EventAction.hh | 4 +- .../include/G3toG4EventActionMessenger.hh | 4 +- .../clGeometry/include/G3toG4PhysicsList.hh | 4 +- .../include/G3toG4PrimaryGeneratorAction.hh | 4 +- .../clGeometry/include/G3toG4RunAction.hh | 4 +- .../clGeometry/include/G3toG4VisManager.hh | 4 +- .../src/G3toG4DetectorConstruction.cc | 4 +- .../clGeometry/src/G3toG4EventAction.cc | 5 +- .../src/G3toG4EventActionMessenger.cc | 4 +- .../clGeometry/src/G3toG4PhysicsList.cc | 4 +- .../src/G3toG4PrimaryGeneratorAction.cc | 4 +- .../g3tog4/clGeometry/src/G3toG4RunAction.cc | 4 +- .../g3tog4/clGeometry/src/G3toG4VisManager.cc | 52 +- examples/extended/g3tog4/cltog4/cltog4.cc | 4 +- examples/extended/g3tog4/cltog4/cltog4.out | 99 +- .../include/G3toG4DetectorConstruction.hh | 4 +- .../cltog4/include/G3toG4EventAction.hh | 4 +- .../include/G3toG4EventActionMessenger.hh | 4 +- .../cltog4/include/G3toG4PhysicsList.hh | 4 +- .../include/G3toG4PrimaryGeneratorAction.hh | 4 +- .../g3tog4/cltog4/include/G3toG4RunAction.hh | 4 +- .../g3tog4/cltog4/include/G3toG4VisManager.hh | 4 +- .../cltog4/src/G3toG4DetectorConstruction.cc | 4 +- .../g3tog4/cltog4/src/G3toG4EventAction.cc | 5 +- .../cltog4/src/G3toG4EventActionMessenger.cc | 4 +- .../g3tog4/cltog4/src/G3toG4PhysicsList.cc | 4 +- .../src/G3toG4PrimaryGeneratorAction.cc | 4 +- .../g3tog4/cltog4/src/G3toG4RunAction.cc | 4 +- .../g3tog4/cltog4/src/G3toG4VisManager.cc | 52 +- .../PersistentEx01/PersistentEx01.cc | 4 +- .../PersistentEx01/PersistentEx01.out | 2 +- .../PersistentEx01/g4odbms_setup.csh | 8 +- .../PersistentEx01/g4odbms_setup.sh | 8 +- .../include/PersEx01PhysicsList.hh | 2 +- .../PersistentEx01/src/PersEx01PhysicsList.cc | 2 +- .../PersistentEx02/PersistentEx02.cc | 4 +- .../PersistentEx02/PersistentEx02.out | 2 +- .../include/PersEx02DetectorConstruction.hh | 4 +- .../include/PersEx02EventAction.hh | 4 +- .../include/PersEx02PhysicsList.hh | 4 +- .../include/PersEx02PrimaryGeneratorAction.hh | 4 +- .../include/PersEx02RunAction.hh | 4 +- .../include/PersEx02StackingAction.hh | 4 +- .../include/PersEx02TrackerHit.ddl | 4 +- .../include/PersEx02TrackerHitsCollection.ddl | 4 +- .../include/PersEx02TrackerSD.hh | 4 +- .../src/PersEx02DetectorConstruction.cc | 4 +- .../PersistentEx02/src/PersEx02EventAction.cc | 4 +- .../PersistentEx02/src/PersEx02PhysicsList.cc | 4 +- .../src/PersEx02PrimaryGeneratorAction.cc | 4 +- .../PersistentEx02/src/PersEx02RunAction.cc | 4 +- .../src/PersEx02StackingAction.cc | 4 +- .../PersistentEx02/src/PersEx02TrackerHit.cc | 4 +- .../src/PersEx02TrackerHitsCollection.cc | 4 +- .../PersistentEx02/src/PersEx02TrackerSD.cc | 4 +- examples/novice/N01/exampleN01.cc | 4 +- examples/novice/N01/exampleN01.out | 6 +- .../N01/include/ExN01DetectorConstruction.hh | 24 +- .../novice/N01/include/ExN01PhysicsList.hh | 4 +- .../include/ExN01PrimaryGeneratorAction.hh | 4 +- .../N01/src/ExN01DetectorConstruction.cc | 63 +- examples/novice/N01/src/ExN01PhysicsList.cc | 4 +- .../N01/src/ExN01PrimaryGeneratorAction.cc | 4 +- examples/novice/N02/History | 25 +- examples/novice/N02/README | 10 +- examples/novice/N02/exampleN02.cc | 14 +- examples/novice/N02/exampleN02.large_N.out | 2 +- examples/novice/N02/exampleN02.out | 3827 +- .../include/ExN02ChamberParameterisation.hh | 15 +- .../N02/include/ExN02DetectorConstruction.hh | 47 +- .../N02/include/ExN02DetectorMessenger.hh | 12 +- .../novice/N02/include/ExN02EventAction.hh | 12 +- .../novice/N02/include/ExN02MagneticField.hh | 12 +- .../novice/N02/include/ExN02PhysicsList.hh | 12 +- .../include/ExN02PrimaryGeneratorAction.hh | 12 +- examples/novice/N02/include/ExN02RunAction.hh | 12 +- .../novice/N02/include/ExN02SteppingAction.hh | 12 +- .../N02/include/ExN02SteppingVerbose.hh | 18 +- .../novice/N02/include/ExN02TrackerHit.hh | 18 +- examples/novice/N02/include/ExN02TrackerSD.hh | 13 +- .../novice/N02/include/ExN02VisManager.hh | 14 +- .../N02/src/ExN02ChamberParameterisation.cc | 23 +- .../N02/src/ExN02DetectorConstruction.cc | 75 +- .../novice/N02/src/ExN02DetectorMessenger.cc | 30 +- examples/novice/N02/src/ExN02EventAction.cc | 44 +- examples/novice/N02/src/ExN02MagneticField.cc | 23 +- examples/novice/N02/src/ExN02PhysicsList.cc | 36 +- .../N02/src/ExN02PrimaryGeneratorAction.cc | 19 +- examples/novice/N02/src/ExN02RunAction.cc | 28 +- .../novice/N02/src/ExN02SteppingAction.cc | 18 +- .../novice/N02/src/ExN02SteppingVerbose.cc | 54 +- examples/novice/N02/src/ExN02TrackerHit.cc | 24 +- examples/novice/N02/src/ExN02TrackerSD.cc | 23 +- examples/novice/N02/src/ExN02VisManager.cc | 54 +- .../novice/N02/{initInter.mac => vis.mac} | 12 +- examples/novice/N03/History | 43 +- examples/novice/N03/README | 10 +- examples/novice/N03/exampleN03.cc | 8 +- examples/novice/N03/exampleN03.out | 96 +- examples/novice/N03/include/ExN03CalorHit.hh | 61 +- .../novice/N03/include/ExN03CalorimeterSD.hh | 4 +- .../N03/include/ExN03DetectorConstruction.hh | 14 +- .../N03/include/ExN03DetectorMessenger.hh | 12 +- .../novice/N03/include/ExN03EventAction.hh | 12 +- .../N03/include/ExN03EventActionMessenger.hh | 12 +- .../novice/N03/include/ExN03PhysicsList.hh | 12 +- .../include/ExN03PrimaryGeneratorAction.hh | 16 +- .../include/ExN03PrimaryGeneratorMessenger.hh | 12 +- examples/novice/N03/include/ExN03RunAction.hh | 12 +- .../novice/N03/include/ExN03SteppingAction.hh | 12 +- .../N03/include/ExN03SteppingVerbose.hh | 12 +- .../novice/N03/include/ExN03VisManager.hh | 14 +- examples/novice/N03/newgeom.mac | 13 +- examples/novice/N03/src/ExN03CalorHit.cc | 30 +- examples/novice/N03/src/ExN03CalorimeterSD.cc | 28 +- .../N03/src/ExN03DetectorConstruction.cc | 85 +- .../novice/N03/src/ExN03DetectorMessenger.cc | 22 +- examples/novice/N03/src/ExN03EventAction.cc | 49 +- .../N03/src/ExN03EventActionMessenger.cc | 21 +- examples/novice/N03/src/ExN03PhysicsList.cc | 49 +- .../N03/src/ExN03PrimaryGeneratorAction.cc | 18 +- .../N03/src/ExN03PrimaryGeneratorMessenger.cc | 22 +- examples/novice/N03/src/ExN03RunAction.cc | 21 +- .../novice/N03/src/ExN03SteppingAction.cc | 16 +- .../novice/N03/src/ExN03SteppingVerbose.cc | 59 +- examples/novice/N03/src/ExN03VisManager.cc | 62 +- examples/novice/N03/vis.mac | 27 + examples/novice/N03/visTutor/History | 22 + examples/novice/N03/visTutor/exN03Tree0.mac | 17 +- examples/novice/N03/visTutor/exN03Tree1.mac | 30 +- examples/novice/N03/visTutor/exN03Vis0.mac | 43 +- examples/novice/N03/visTutor/exN03Vis1.mac | 107 +- examples/novice/N03/visTutor/exN03Vis2.mac | 56 +- examples/novice/N03/visTutor/exN03Vis3.mac | 53 +- examples/novice/N03/visTutor/exN03Vis4.mac | 50 +- examples/novice/N03/visTutor/exN03Vis5.mac | 2 +- examples/novice/N03/visTutor/exN03Vis6.mac | 2 +- examples/novice/N03/visTutor/exN03Vis7.mac | 34 +- examples/novice/N03/visTutor/exN03Vis8.mac | 76 +- examples/novice/N03/visTutor/exN03Vis9.mac | 87 + examples/novice/N04/History | 6 +- .../novice/N04/exampleN04.EMtest.large_N.out | 2 +- examples/novice/N04/exampleN04.EMtest.out | 32 +- examples/novice/N04/exampleN04.cc | 4 +- examples/novice/N04/exampleN04.out | 28 +- .../ExN04CalorimeterParametrisation.hh | 14 +- examples/novice/N04/include/ExN04EMPhysics.hh | 4 +- .../novice/N04/include/ExN04GeneralPhysics.hh | 4 +- .../novice/N04/include/ExN04HadronPhysics.hh | 4 +- .../novice/N04/include/ExN04IonPhysics.hh | 4 +- .../novice/N04/include/ExN04MuonPhysics.hh | 4 +- .../include/ExN04TrackerParametrisation.hh | 14 +- .../novice/N04/src/ExN04CalorimeterHit.cc | 4 +- .../N04/src/ExN04CalorimeterROGeometry.cc | 4 +- examples/novice/N04/src/ExN04CalorimeterSD.cc | 2 +- .../N04/src/ExN04DetectorConstruction.cc | 8 +- examples/novice/N04/src/ExN04EMPhysics.cc | 4 +- examples/novice/N04/src/ExN04EventAction.cc | 6 +- .../novice/N04/src/ExN04GeneralPhysics.cc | 4 +- examples/novice/N04/src/ExN04HadronPhysics.cc | 4 +- examples/novice/N04/src/ExN04IonPhysics.cc | 4 +- examples/novice/N04/src/ExN04MuonPhysics.cc | 4 +- examples/novice/N04/src/ExN04MuonSD.cc | 1 - examples/novice/N04/src/ExN04PhysicsList.cc | 4 +- .../novice/N04/src/ExN04StackingAction.cc | 8 +- .../novice/N04/src/ExN04SteppingAction.cc | 1 - examples/novice/N05/History | 12 +- examples/novice/N05/exampleN05.cc | 4 +- examples/novice/N05/exampleN05.out | 477 +- .../novice/N05/include/ExN05CalorimeterHit.hh | 4 +- .../novice/N05/include/ExN05CalorimeterSD.hh | 4 +- .../N05/include/ExN05DetectorConstruction.hh | 4 +- .../N05/include/ExN05DetectorMessenger.hh | 4 +- .../novice/N05/include/ExN05EMShowerModel.hh | 23 +- .../novice/N05/include/ExN05EnergySpot.hh | 6 +- .../novice/N05/include/ExN05EventAction.hh | 4 +- .../N05/include/ExN05EventActionMessenger.hh | 4 +- .../novice/N05/include/ExN05MaxTimeCuts.hh | 4 +- .../novice/N05/include/ExN05MinEkineCuts.hh | 4 +- .../novice/N05/include/ExN05MinRangeCuts.hh | 4 +- .../novice/N05/include/ExN05PhysicsList.hh | 4 +- examples/novice/N05/include/ExN05PiModel.hh | 4 +- .../N05/include/ExN05PionShowerModel.hh | 19 +- .../include/ExN05PrimaryGeneratorAction.hh | 4 +- examples/novice/N05/include/ExN05RunAction.hh | 4 +- .../novice/N05/include/ExN05SpecialCuts.hh | 8 +- .../novice/N05/include/ExN05SteppingAction.hh | 4 +- .../include/ExN05SteppingActionMessenger.hh | 4 +- .../novice/N05/include/ExN05VisManager.hh | 4 +- .../novice/N05/src/ExN05CalorimeterHit.cc | 4 +- examples/novice/N05/src/ExN05CalorimeterSD.cc | 4 +- .../N05/src/ExN05DetectorConstruction.cc | 46 +- .../novice/N05/src/ExN05DetectorMessenger.cc | 4 +- examples/novice/N05/src/ExN05EMShowerModel.cc | 30 +- examples/novice/N05/src/ExN05EnergySpot.cc | 5 +- examples/novice/N05/src/ExN05EventAction.cc | 8 +- .../N05/src/ExN05EventActionMessenger.cc | 4 +- examples/novice/N05/src/ExN05MaxTimeCuts.cc | 5 +- examples/novice/N05/src/ExN05MinEkineCuts.cc | 4 +- examples/novice/N05/src/ExN05MinRangeCuts.cc | 4 +- examples/novice/N05/src/ExN05PhysicsList.cc | 4 +- examples/novice/N05/src/ExN05PiModel.cc | 4 +- .../novice/N05/src/ExN05PionShowerModel.cc | 29 +- .../N05/src/ExN05PrimaryGeneratorAction.cc | 4 +- examples/novice/N05/src/ExN05RunAction.cc | 4 +- examples/novice/N05/src/ExN05SpecialCuts.cc | 4 +- .../novice/N05/src/ExN05SteppingAction.cc | 4 +- .../N05/src/ExN05SteppingActionMessenger.cc | 4 +- examples/novice/N05/src/ExN05VisManager.cc | 52 +- examples/novice/N05/src/RandomGamma.cc | 2 +- examples/novice/N06/History | 5 +- examples/novice/N06/exampleN06.out | 30706 +++++++--------- .../N06/src/ExN06DetectorConstruction.cc | 10 +- source/GNUmakefile | 20 +- source/analysis/GNUmakefile | 51 - source/analysis/Lab/GNUmakefile | 19 - source/analysis/Lab/include/G4LabSystem.hh | 71 - source/analysis/Lab/src/G4LabSystem.cc | 183 - source/analysis/Lizard/GNUmakefile | 18 - source/analysis/Lizard/src/G4LizardSystem.cc | 144 - source/analysis/jas/GNUmakefile | 18 - source/analysis/jas/include/JasHistogram1D.h | 81 - source/analysis/jas/include/JasHistogram2D.h | 89 - source/analysis/jas/src/JasHistogram1D.cc | 111 - source/analysis/jas/src/JasHistogram2D.cc | 120 - .../analysis/jas/src/JasHistogramFactory.cc | 141 - source/analysis/management/GNUmakefile | 18 - .../management/src/G4AnalysisManager.cc | 121 - source/digits+hits/History | 10 +- .../include/G4CollectionNameVector.hh | 4 +- .../digits+hits/detector/include/G4HCtable.hh | 4 +- .../detector/include/G4SDManager.hh | 4 +- .../detector/include/G4SDStructure.hh | 12 +- .../detector/include/G4SDmessenger.hh | 4 +- .../detector/include/G4SensitiveVolumeList.hh | 4 +- .../include/G4SensitiveVolumeList.icc | 4 +- .../detector/include/G4VReadOutGeometry.hh | 4 +- .../detector/include/G4VSensitiveDetector.hh | 11 +- source/digits+hits/detector/src/G4HCtable.cc | 10 +- .../digits+hits/detector/src/G4SDManager.cc | 6 +- .../digits+hits/detector/src/G4SDStructure.cc | 52 +- .../digits+hits/detector/src/G4SDmessenger.cc | 4 +- .../detector/src/G4SensitiveVolumeList.cc | 8 +- .../detector/src/G4VReadOutGeometry.cc | 24 +- .../detector/src/G4VSensitiveDetector.cc | 10 +- .../digits/include/G4DCofThisEvent.hh | 6 +- .../digits/include/G4TDigiCollection.hh | 25 +- source/digits+hits/digits/include/G4VDigi.hh | 8 +- .../digits/include/G4VDigiCollection.hh | 6 +- .../digits+hits/digits/src/G4DCofThisEvent.cc | 12 +- .../digits/src/G4TDigiCollection.cc | 6 +- source/digits+hits/digits/src/G4VDigi.cc | 6 +- .../digits/src/G4VDigiCollection.cc | 6 +- .../hits/include/G4HCofThisEvent.hh | 7 +- .../hits/include/G4THitsCollection.hh | 24 +- source/digits+hits/hits/include/G4VHit.hh | 8 +- .../hits/include/G4VHitsCollection.hh | 6 +- .../digits+hits/hits/src/G4HCofThisEvent.cc | 12 +- .../digits+hits/hits/src/G4THitsCollection.cc | 4 +- source/digits+hits/hits/src/G4VHit.cc | 6 +- .../digits+hits/hits/src/G4VHitsCollection.cc | 6 +- source/event/History | 75 +- .../include/G4ClassificationOfNewTrack.hh | 18 +- source/event/include/G4EvManMessenger.hh | 4 +- source/event/include/G4Event.hh | 16 +- source/event/include/G4EventManager.hh | 10 +- .../event/include/G4GeneralParticleSource.hh | 35 +- .../G4GeneralParticleSourceMessenger.hh | 28 +- source/event/include/G4HEPEvtInterface.hh | 4 +- source/event/include/G4HEPEvtParticle.hh | 8 +- source/event/include/G4ParticleGun.hh | 18 +- .../event/include/G4ParticleGunMessenger.hh | 4 +- source/event/include/G4PrimaryParticle.hh | 12 +- source/event/include/G4PrimaryTransformer.hh | 7 +- source/event/include/G4PrimaryVertex.hh | 18 +- source/event/include/G4StackManager.hh | 57 +- source/event/include/G4StackedTrack.hh | 8 +- source/event/include/G4StackingMessenger.hh | 4 +- source/event/include/G4TrackStack.hh | 8 +- source/event/include/G4TrajectoryContainer.hh | 26 +- source/event/include/G4UserEventAction.hh | 4 +- source/event/include/G4UserStackingAction.hh | 4 +- source/event/include/G4VPrimaryGenerator.hh | 21 +- source/event/include/eventgendefs.hh | 4 +- source/event/include/evmandefs.hh | 4 +- source/event/include/trajectoryControl.hh | 4 +- source/event/src/G4EvManMessenger.cc | 4 +- source/event/src/G4Event.cc | 22 +- source/event/src/G4EventManager.cc | 29 +- source/event/src/G4GeneralParticleSource.cc | 498 +- .../src/G4GeneralParticleSourceMessenger.cc | 327 +- source/event/src/G4HEPEvtInterface.cc | 40 +- source/event/src/G4HEPEvtParticle.cc | 8 +- source/event/src/G4ParticleGun.cc | 12 +- source/event/src/G4ParticleGunMessenger.cc | 9 +- source/event/src/G4PrimaryParticle.cc | 30 +- source/event/src/G4PrimaryTransformer.cc | 40 +- source/event/src/G4PrimaryVertex.cc | 28 +- source/event/src/G4StackManager.cc | 136 +- source/event/src/G4StackedTrack.cc | 16 +- source/event/src/G4StackingMessenger.cc | 4 +- source/event/src/G4TrackStack.cc | 28 +- source/event/src/G4UserEventAction.cc | 4 +- source/event/src/G4UserStackingAction.cc | 4 +- source/event/src/G4VPrimaryGenerator.cc | 4 +- source/g3tog4/GNUmakefile | 15 +- source/g3tog4/History | 26 +- source/g3tog4/README | 17 + source/g3tog4/include/G3DetTable.hh | 4 +- source/g3tog4/include/G3DetTableEntry.hh | 4 +- source/g3tog4/include/G3Division.hh | 6 +- source/g3tog4/include/G3EleTable.hh | 10 +- source/g3tog4/include/G3G4Interface.hh | 6 +- source/g3tog4/include/G3MatTable.hh | 8 +- source/g3tog4/include/G3MatTableEntry.hh | 4 +- source/g3tog4/include/G3MedTable.hh | 8 +- source/g3tog4/include/G3MedTableEntry.hh | 4 +- source/g3tog4/include/G3PartTable.hh | 4 +- source/g3tog4/include/G3Pos.hh | 4 +- source/g3tog4/include/G3RotTable.hh | 8 +- source/g3tog4/include/G3RotTableEntry.hh | 4 +- source/g3tog4/include/G3SensVolVector.hh | 8 +- source/g3tog4/include/G3VolTable.hh | 4 +- source/g3tog4/include/G3VolTableEntry.hh | 26 +- source/g3tog4/include/G3toG4.hh | 4 +- source/g3tog4/include/G3toG4.inc | 4 +- source/g3tog4/include/G3toG4BuildTree.hh | 4 +- source/g3tog4/include/G3toG4MANY.hh | 82 + source/g3tog4/include/G3toG4MakeSolid.hh | 4 +- source/g3tog4/include/G3toG4RotationMatrix.hh | 4 +- source/g3tog4/include/gcbank.inc | 4 +- source/g3tog4/src/G3DetTable.cc | 4 +- source/g3tog4/src/G3DetTableEntry.cc | 4 +- source/g3tog4/src/G3Division.cc | 49 +- source/g3tog4/src/G3EleTable.cc | 12 +- source/g3tog4/src/G3MatTable.cc | 24 +- source/g3tog4/src/G3MatTableEntry.cc | 4 +- source/g3tog4/src/G3MedTable.cc | 24 +- source/g3tog4/src/G3MedTableEntry.cc | 4 +- source/g3tog4/src/G3NegVolPars.cc | 4 +- source/g3tog4/src/G3PartTable.cc | 4 +- source/g3tog4/src/G3Pos.cc | 4 +- source/g3tog4/src/G3RotTable.cc | 23 +- source/g3tog4/src/G3RotTableEntry.cc | 4 +- source/g3tog4/src/G3VolTable.cc | 4 +- source/g3tog4/src/G3VolTableEntry.cc | 85 +- source/g3tog4/src/G3fillParams.cc.archive | 2 +- source/g3tog4/src/G3toG4BuildTree.cc | 55 +- source/g3tog4/src/G3toG4MANY.cc | 155 + source/g3tog4/src/G3toG4MakeSolid.cc | 24 +- source/g3tog4/src/G3toG4RotationMatrix.cc | 4 +- source/g3tog4/src/G4BuildGeom.cc | 8 +- source/g3tog4/src/G4ggclos.cc | 4 +- source/g3tog4/src/G4gsatt.cc | 6 +- source/g3tog4/src/G4gsbool.cc | 53 + source/g3tog4/src/G4gsdet.cc | 4 +- source/g3tog4/src/G4gsdeta.cc | 4 +- source/g3tog4/src/G4gsdetd.cc | 4 +- source/g3tog4/src/G4gsdeth.cc | 4 +- source/g3tog4/src/G4gsdetu.cc | 4 +- source/g3tog4/src/G4gsdetv.cc | 6 +- source/g3tog4/src/G4gsdk.cc | 4 +- source/g3tog4/src/G4gsdvn.cc | 4 +- source/g3tog4/src/G4gsdvn2.cc | 4 +- source/g3tog4/src/G4gsdvt.cc | 4 +- source/g3tog4/src/G4gsdvt2.cc | 4 +- source/g3tog4/src/G4gsdvx.cc | 4 +- source/g3tog4/src/G4gsmate.cc | 4 +- source/g3tog4/src/G4gsmixt.cc | 4 +- source/g3tog4/src/G4gspart.cc | 6 +- source/g3tog4/src/G4gspos.cc | 4 +- source/g3tog4/src/G4gsposp.cc | 4 +- source/g3tog4/src/G4gsrotm.cc | 4 +- source/g3tog4/src/G4gstmed.cc | 4 +- source/g3tog4/src/G4gstpar.cc | 4 +- source/g3tog4/src/G4gsvolu.cc | 4 +- source/g3tog4/src/clparse.cc | 11 +- source/g3tog4/src/g3routines.F | 4 +- source/g3tog4/src/g3test.F.main | 2 +- source/g3tog4/src/g3tog4.F | 4 +- source/g3tog4/src/g4geom.cc.main | 2 +- source/g3tog4/src/jshape.F | 4 +- source/g3tog4/src/mztog4.F | 4 +- source/g3tog4/src/rztog4.F | 4 +- source/g3tog4/src/tog4.F | 4 +- source/geometry/GNUmakefile | 6 +- source/geometry/History | 17 +- source/geometry/magneticfield/History | 111 +- .../magneticfield/include/G4CashKarpRKF45.hh | 4 +- .../magneticfield/include/G4ChordFinder.hh | 7 +- .../magneticfield/include/G4ChordFinder.icc | 11 +- .../magneticfield/include/G4ClassicalRK4.hh | 4 +- .../magneticfield/include/G4DELPHIMagField.hh | 57 + .../include/G4ElectroMagneticField.hh | 6 +- .../include/G4EqMagElectricField.hh | 4 +- .../include/G4EquationOfMotion.hh | 4 +- .../include/G4EquationOfMotion.icc | 4 +- .../magneticfield/include/G4ExplicitEuler.hh | 4 +- .../geometry/magneticfield/include/G4Field.hh | 13 +- .../magneticfield/include/G4FieldManager.hh | 9 +- .../magneticfield/include/G4FieldManager.icc | 10 +- .../magneticfield/include/G4FieldTrack.hh | 6 +- .../magneticfield/include/G4FieldTrack.icc | 6 +- .../include/G4HarmonicPolMagField.hh} | 61 +- .../include/G4HelixExplicitEuler.hh | 4 +- .../magneticfield/include/G4HelixHeum.hh | 4 +- .../include/G4HelixImplicitEuler.hh | 4 +- .../include/G4HelixSimpleRunge.hh | 4 +- .../magneticfield/include/G4ImplicitEuler.hh | 4 +- .../include/G4LineCurrentMagField.hh | 57 + .../magneticfield/include/G4LineSection.hh | 17 +- .../include/G4MagErrorStepper.hh | 4 +- .../include/G4MagErrorStepper.icc | 4 +- .../include/G4MagHelicalStepper.hh | 4 +- .../include/G4MagHelicalStepper.icc | 4 +- .../include/G4MagIntegratorDriver.hh | 40 +- .../include/G4MagIntegratorDriver.icc | 17 +- .../include/G4MagIntegratorStepper.hh | 4 +- .../include/G4MagIntegratorStepper.icc | 4 +- .../magneticfield/include/G4Mag_EqRhs.hh | 4 +- .../magneticfield/include/G4Mag_SpinEqRhs.hh | 6 +- .../magneticfield/include/G4Mag_UsualEqRhs.hh | 4 +- .../magneticfield/include/G4MagneticField.hh | 9 +- .../include/G4QuadrupoleMagField.hh} | 60 +- .../magneticfield/include/G4RKG3_Stepper.hh | 4 +- .../magneticfield/include/G4SimpleHeum.hh | 4 +- .../magneticfield/include/G4SimpleRunge.hh | 4 +- .../include/G4UniformElectricField.hh | 9 +- .../include/G4UniformMagField.hh | 12 +- .../magneticfield/src/G4CashKarpRKF45.cc | 7 +- .../magneticfield/src/G4ChordFinder.cc | 42 +- .../magneticfield/src/G4ClassicalRK4.cc | 4 +- .../magneticfield/src/G4DELPHIMagField.cc | 93 + .../magneticfield/src/G4EqMagElectricField.cc | 12 +- .../magneticfield/src/G4EquationOfMotion.cc | 25 +- .../magneticfield/src/G4ExplicitEuler.cc | 4 +- .../magneticfield/src/G4FieldManager.cc | 8 +- .../magneticfield/src/G4FieldTrack.cc | 4 +- .../src/G4HarmonicPolMagField.cc | 97 + .../magneticfield/src/G4HelixExplicitEuler.cc | 4 +- .../geometry/magneticfield/src/G4HelixHeum.cc | 4 +- .../magneticfield/src/G4HelixImplicitEuler.cc | 4 +- .../magneticfield/src/G4HelixSimpleRunge.cc | 4 +- .../magneticfield/src/G4ImplicitEuler.cc | 4 +- .../src/G4LineCurrentMagField.cc} | 63 +- .../magneticfield/src/G4LineSection.cc | 44 +- .../magneticfield/src/G4MagErrorStepper.cc | 4 +- .../magneticfield/src/G4MagHelicalStepper.cc | 4 +- .../src/G4MagIntegratorDriver.cc | 341 +- .../src/G4MagIntegratorStepper.cc | 4 +- .../geometry/magneticfield/src/G4Mag_EqRhs.cc | 4 +- .../magneticfield/src/G4Mag_SpinEqRhs.cc | 2 +- .../magneticfield/src/G4Mag_UsualEqRhs.cc | 4 +- .../magneticfield/src/G4QuadrupoleMagField.cc | 56 + .../magneticfield/src/G4RKG3_Stepper.cc | 4 +- .../magneticfield/src/G4SimpleHeum.cc | 4 +- .../magneticfield/src/G4SimpleRunge.cc | 4 +- .../src/G4UniformElectricField.cc | 8 +- .../magneticfield/src/G4UniformMagField.cc | 6 +- source/geometry/management/History | 19 +- .../management/include/G4AffineTransform.hh | 4 +- .../management/include/G4AffineTransform.icc | 4 +- .../management/include/G4AssemblyTriplet.hh | 4 +- .../management/include/G4AssemblyTriplet.icc | 4 +- .../management/include/G4AssemblyVolume.hh | 4 +- .../management/include/G4AssemblyVolume.icc | 4 +- .../management/include/G4DrawVoxels.hh | 4 +- .../management/include/G4GeometryManager.hh | 17 +- .../management/include/G4LogicalSurface.hh | 4 +- .../management/include/G4LogicalSurface.icc | 4 +- .../management/include/G4LogicalVolume.hh | 4 +- .../management/include/G4LogicalVolume.icc | 4 +- .../include/G4LogicalVolumeStore.hh | 4 +- .../management/include/G4PVParameterised.hh | 4 +- .../management/include/G4PVPlacement.hh | 4 +- .../management/include/G4PVReplica.hh | 4 +- .../include/G4PhysicalVolumeStore.hh | 4 +- .../management/include/G4SmartVoxelHeader.hh | 4 +- .../management/include/G4SmartVoxelHeader.icc | 4 +- .../management/include/G4SmartVoxelNode.hh | 4 +- .../management/include/G4SmartVoxelNode.icc | 4 +- .../management/include/G4SmartVoxelProxy.hh | 4 +- .../management/include/G4SmartVoxelProxy.icc | 4 +- .../management/include/G4SmartVoxelStat.hh | 126 + .../management/include/G4SolidStore.hh | 4 +- .../management/include/G4TouchableHandle.hh | 50 + .../include/G4VPVParameterisation.hh | 4 +- .../management/include/G4VPhysicalVolume.hh | 4 +- .../management/include/G4VPhysicalVolume.icc | 4 +- .../geometry/management/include/G4VSolid.hh | 4 +- .../geometry/management/include/G4VSolid.icc | 4 +- .../management/include/G4VTouchable.hh | 4 +- .../management/include/G4VTouchable.icc | 4 +- .../management/include/G4VoxelLimits.hh | 4 +- .../management/include/G4VoxelLimits.icc | 4 +- .../geometry/management/include/meshdefs.hh | 4 +- .../geometry/management/include/voxeldefs.hh | 4 +- .../management/src/G4AssemblyVolume.cc | 4 +- .../geometry/management/src/G4DrawVoxels.cc | 4 +- .../management/src/G4GeometryManager.cc | 282 +- .../management/src/G4LogicalVolume.cc | 4 +- .../management/src/G4LogicalVolumeStore.cc | 4 +- .../management/src/G4PVParameterised.cc | 4 +- .../geometry/management/src/G4PVPlacement.cc | 4 +- source/geometry/management/src/G4PVReplica.cc | 4 +- .../management/src/G4PhysicalVolumeStore.cc | 4 +- .../management/src/G4SmartVoxelHeader.cc | 8 +- .../management/src/G4SmartVoxelNode.cc | 4 +- .../management/src/G4SmartVoxelStat.cc | 152 + .../geometry/management/src/G4SolidStore.cc | 4 +- .../management/src/G4VPVParameterisation.cc | 4 +- .../management/src/G4VPhysicalVolume.cc | 4 +- source/geometry/management/src/G4VSolid.cc | 4 +- .../geometry/management/src/G4VoxelLimits.cc | 4 +- source/geometry/solids/BREPS/History | 25 +- .../solids/BREPS/include/G4Assembly.hh | 4 +- .../solids/BREPS/include/G4Assembly.icc | 4 +- .../BREPS/include/G4Axis2Placement3D.hh | 4 +- .../BREPS/include/G4Axis2Placement3D.icc | 10 +- .../solids/BREPS/include/G4BREPSolid.hh | 4 +- .../solids/BREPS/include/G4BREPSolid.icc | 4 +- .../solids/BREPS/include/G4BREPSolidBox.hh | 4 +- .../solids/BREPS/include/G4BREPSolidCone.hh | 4 +- .../BREPS/include/G4BREPSolidCylinder.hh | 4 +- .../BREPS/include/G4BREPSolidOpenPCone.hh | 4 +- .../solids/BREPS/include/G4BREPSolidPCone.hh | 4 +- .../BREPS/include/G4BREPSolidPolyhedra.hh | 4 +- .../solids/BREPS/include/G4BREPSolidSphere.hh | 4 +- .../solids/BREPS/include/G4BREPSolidTorus.hh | 4 +- .../solids/BREPS/include/G4BSplineCurve.hh | 4 +- .../solids/BREPS/include/G4BSplineCurve.icc | 4 +- .../BREPS/include/G4BSplineCurveWithKnots.hh | 4 +- .../solids/BREPS/include/G4BSplineSurface.hh | 4 +- .../solids/BREPS/include/G4BSplineSurface.icc | 4 +- .../include/G4BSplineSurfaceWithKnots.hh | 4 +- .../solids/BREPS/include/G4BezierSurface.hh | 4 +- .../solids/BREPS/include/G4BezierSurface.icc | 4 +- .../solids/BREPS/include/G4BoundingBox3D.hh | 4 +- .../solids/BREPS/include/G4BoundingBox3D.icc | 4 +- .../solids/BREPS/include/G4CircularCurve.hh | 4 +- .../solids/BREPS/include/G4CircularCurve.icc | 4 +- .../solids/BREPS/include/G4CompositeCurve.hh | 4 +- .../solids/BREPS/include/G4CompositeCurve.icc | 4 +- .../geometry/solids/BREPS/include/G4Conic.hh | 4 +- .../geometry/solids/BREPS/include/G4Conic.icc | 4 +- .../solids/BREPS/include/G4ConicalSurface.hh | 4 +- .../solids/BREPS/include/G4ConicalSurface.icc | 4 +- .../solids/BREPS/include/G4ControlPoints.hh | 4 +- .../solids/BREPS/include/G4ControlPoints.icc | 4 +- .../solids/BREPS/include/G4ConvexHull.hh | 4 +- .../geometry/solids/BREPS/include/G4Curve.hh | 4 +- .../geometry/solids/BREPS/include/G4Curve.icc | 4 +- .../solids/BREPS/include/G4CurvePoint.hh | 4 +- .../solids/BREPS/include/G4CurvePoint.icc | 4 +- .../BREPS/include/G4CurveRayIntersection.hh | 4 +- .../BREPS/include/G4CurveRayIntersection.icc | 4 +- .../solids/BREPS/include/G4CurveVector.hh | 4 +- .../BREPS/include/G4CylindricalSurface.hh | 4 +- .../BREPS/include/G4CylindricalSurface.icc | 4 +- .../solids/BREPS/include/G4Ellipse.hh | 4 +- .../solids/BREPS/include/G4Ellipse.icc | 4 +- .../solids/BREPS/include/G4FConicalSurface.hh | 4 +- .../BREPS/include/G4FConicalSurface.icc | 4 +- .../BREPS/include/G4FCylindricalSurface.hh | 4 +- .../BREPS/include/G4FCylindricalSurface.icc | 4 +- .../geometry/solids/BREPS/include/G4FPlane.hh | 4 +- .../solids/BREPS/include/G4FPlane.icc | 4 +- .../solids/BREPS/include/G4Globals.hh | 4 +- .../solids/BREPS/include/G4Hyperbola.hh | 4 +- .../solids/BREPS/include/G4Hyperbola.icc | 4 +- .../solids/BREPS/include/G4KnotVector.hh | 4 +- .../solids/BREPS/include/G4KnotVector.icc | 4 +- .../geometry/solids/BREPS/include/G4Line.hh | 4 +- .../geometry/solids/BREPS/include/G4Line.icc | 4 +- .../solids/BREPS/include/G4OsloMatrix.hh | 4 +- .../solids/BREPS/include/G4OsloMatrix.icc | 4 +- .../solids/BREPS/include/G4Parabola.hh | 4 +- .../solids/BREPS/include/G4Parabola.icc | 4 +- .../solids/BREPS/include/G4PlacedSolid.hh | 4 +- .../solids/BREPS/include/G4PlacedSolid.icc | 4 +- .../solids/BREPS/include/G4PlacementVector.hh | 4 +- .../geometry/solids/BREPS/include/G4Plane.hh | 4 +- .../solids/BREPS/include/G4Point3DVector.hh | 4 +- .../solids/BREPS/include/G4PointRat.hh | 4 +- .../solids/BREPS/include/G4PointRat.icc | 4 +- .../BREPS/include/G4ProjectedSurface.hh | 4 +- .../BREPS/include/G4ProjectedSurface.icc | 4 +- source/geometry/solids/BREPS/include/G4Ray.hh | 4 +- .../geometry/solids/BREPS/include/G4Ray.icc | 4 +- .../include/G4RectangularTrimmedSurface.hh | 4 +- .../solids/BREPS/include/G4STEPEntity.hh | 4 +- .../geometry/solids/BREPS/include/G4Sort.hh | 4 +- .../BREPS/include/G4SphericalSurface.hh | 4 +- .../BREPS/include/G4SphericalSurface.icc | 4 +- .../solids/BREPS/include/G4Surface.hh | 4 +- .../solids/BREPS/include/G4Surface.icc | 4 +- .../solids/BREPS/include/G4SurfaceBoundary.hh | 4 +- .../BREPS/include/G4SurfaceBoundary.icc | 4 +- .../solids/BREPS/include/G4SurfaceList.hh | 4 +- .../include/G4SurfaceOfLinearExtrusion.hh | 4 +- .../BREPS/include/G4SurfaceOfRevolution.hh | 4 +- .../solids/BREPS/include/G4ThreeMat.hh | 4 +- .../solids/BREPS/include/G4ToroidalSurface.hh | 4 +- .../BREPS/include/G4ToroidalSurface.icc | 4 +- .../geometry/solids/BREPS/include/G4UVHit.hh | 4 +- .../geometry/solids/BREPS/src/G4Assembly.cc | 4 +- .../solids/BREPS/src/G4Axis2Placement3D.cc | 4 +- .../geometry/solids/BREPS/src/G4BREPSolid.cc | 9 +- .../solids/BREPS/src/G4BREPSolidBox.cc | 8 +- .../solids/BREPS/src/G4BREPSolidCone.cc | 7 +- .../solids/BREPS/src/G4BREPSolidCylinder.cc | 7 +- .../solids/BREPS/src/G4BREPSolidOpenPCone.cc | 4 +- .../solids/BREPS/src/G4BREPSolidPCone.cc | 11 +- .../solids/BREPS/src/G4BREPSolidPolyhedra.cc | 241 +- .../solids/BREPS/src/G4BREPSolidSphere.cc | 4 +- .../solids/BREPS/src/G4BREPSolidTorus.cc | 4 +- .../solids/BREPS/src/G4BSplineCurve.cc | 13 +- .../BREPS/src/G4BSplineCurveWithKnots.cc | 4 +- .../solids/BREPS/src/G4BSplineSurface.cc | 4 +- .../BREPS/src/G4BSplineSurfaceWithKnots.cc | 4 +- .../solids/BREPS/src/G4BezierSurface.cc | 4 +- .../solids/BREPS/src/G4BoundingBox3D.cc | 4 +- .../solids/BREPS/src/G4CircularCurve.cc | 4 +- .../solids/BREPS/src/G4CompositeCurve.cc | 4 +- source/geometry/solids/BREPS/src/G4Conic.cc | 4 +- .../solids/BREPS/src/G4ConicalSurface.cc | 4 +- .../solids/BREPS/src/G4ControlPoints.cc | 4 +- source/geometry/solids/BREPS/src/G4Curve.cc | 4 +- .../geometry/solids/BREPS/src/G4CurvePoint.cc | 4 +- .../BREPS/src/G4CurveRayIntersection.cc | 4 +- .../solids/BREPS/src/G4CylindricalSurface.cc | 4 +- source/geometry/solids/BREPS/src/G4Ellipse.cc | 4 +- .../solids/BREPS/src/G4FConicalSurface.cc | 4 +- .../solids/BREPS/src/G4FCylindricalSurface.cc | 4 +- source/geometry/solids/BREPS/src/G4FPlane.cc | 4 +- .../geometry/solids/BREPS/src/G4Hyperbola.cc | 4 +- .../geometry/solids/BREPS/src/G4KnotVector.cc | 4 +- source/geometry/solids/BREPS/src/G4Line.cc | 4 +- .../geometry/solids/BREPS/src/G4OsloMatrix.cc | 4 +- .../geometry/solids/BREPS/src/G4Parabola.cc | 4 +- .../solids/BREPS/src/G4PlacedSolid.cc | 4 +- .../geometry/solids/BREPS/src/G4PointRat.cc | 4 +- .../solids/BREPS/src/G4ProjectedSurface.cc | 4 +- source/geometry/solids/BREPS/src/G4Ray.cc | 4 +- .../BREPS/src/G4RectangularTrimmedSurface.cc | 4 +- source/geometry/solids/BREPS/src/G4Sort.cc | 4 +- .../solids/BREPS/src/G4SphericalSurface.cc | 4 +- source/geometry/solids/BREPS/src/G4Surface.cc | 4 +- .../solids/BREPS/src/G4SurfaceBoundary.cc | 4 +- .../solids/BREPS/src/G4SurfaceList.cc | 4 +- .../BREPS/src/G4SurfaceOfLinearExtrusion.cc | 4 +- .../solids/BREPS/src/G4SurfaceOfRevolution.cc | 4 +- .../geometry/solids/BREPS/src/G4ThreeMat.cc | 4 +- .../solids/BREPS/src/G4ToroidalSurface.cc | 4 +- source/geometry/solids/Boolean/History | 15 +- .../solids/Boolean/include/G4BooleanSolid.hh | 4 +- .../Boolean/include/G4DisplacedSolid.hh | 4 +- .../Boolean/include/G4IntersectionSolid.hh | 4 +- .../Boolean/include/G4ReflectedSolid.hh | 143 + .../Boolean/include/G4ReflectionFactory.hh | 195 + .../Boolean/include/G4SubtractionSolid.hh | 4 +- .../solids/Boolean/include/G4UnionSolid.hh | 4 +- .../solids/Boolean/src/G4BooleanSolid.cc | 4 +- .../solids/Boolean/src/G4DisplacedSolid.cc | 4 +- .../solids/Boolean/src/G4IntersectionSolid.cc | 52 +- .../solids/Boolean/src/G4ReflectedSolid.cc | 387 + .../solids/Boolean/src/G4ReflectionFactory.cc | 537 + .../solids/Boolean/src/G4SubtractionSolid.cc | 44 +- .../solids/Boolean/src/G4UnionSolid.cc | 72 +- source/geometry/solids/CSG/History | 6 +- source/geometry/solids/CSG/include/G4Box.hh | 4 +- .../geometry/solids/CSG/include/G4CSGSolid.hh | 4 +- source/geometry/solids/CSG/include/G4Cons.hh | 4 +- source/geometry/solids/CSG/include/G4Para.hh | 4 +- .../geometry/solids/CSG/include/G4Sphere.hh | 4 +- source/geometry/solids/CSG/include/G4Torus.hh | 4 +- source/geometry/solids/CSG/include/G4Trap.hh | 4 +- source/geometry/solids/CSG/include/G4Trd.hh | 4 +- source/geometry/solids/CSG/include/G4Tubs.hh | 4 +- source/geometry/solids/CSG/src/G4Box.cc | 4 +- source/geometry/solids/CSG/src/G4CSGSolid.cc | 4 +- source/geometry/solids/CSG/src/G4Cons.cc | 4 +- source/geometry/solids/CSG/src/G4Para.cc | 4 +- source/geometry/solids/CSG/src/G4Sphere.cc | 6 +- source/geometry/solids/CSG/src/G4Torus.cc | 4 +- source/geometry/solids/CSG/src/G4Trap.cc | 4 +- source/geometry/solids/CSG/src/G4Trd.cc | 4 +- source/geometry/solids/CSG/src/G4Tubs.cc | 4 +- source/geometry/solids/STEP/GNUmakefile | 23 +- source/geometry/solids/STEP/History | 12 +- source/geometry/solids/STEP/include/classes.h | 2 +- .../STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc | 1002 +- source/geometry/solids/STEP/src/dirobj.cc | 10 +- source/geometry/solids/STEP/src/sdaiString.cc | 6 +- .../geometry/solids/STEPinterface/GNUmakefile | 12 +- source/geometry/solids/STEPinterface/History | 10 +- ...4AdvancedBrepShapeRepresentationCreator.hh | 4 +- .../include/G4AdvancedFaceCreator.hh | 4 +- .../include/G4AssemblyCreator.hh | 4 +- .../include/G4Axis1PlacementCreator.hh | 4 +- .../include/G4Axis2Placement2dCreator.hh | 4 +- .../include/G4Axis2Placement3dCreator.hh | 4 +- .../include/G4Axis2PlacementCreator.hh | 4 +- .../include/G4Axis2PlacementsCreator.hh | 4 +- .../include/G4BSplineCurveWithKnotsCreator.hh | 4 +- .../include/G4BSplineSurfaceCreator.hh | 4 +- .../G4BSplineSurfaceWithKnotsCreator.hh | 4 +- .../include/G4BoundedSurfaceCreator.hh | 4 +- .../include/G4CartesianPointCreator.hh | 4 +- .../STEPinterface/include/G4CircleCreator.hh | 4 +- .../include/G4ClosedShellCreator.hh | 4 +- .../STEPinterface/include/G4ConicCreator.hh | 4 +- .../include/G4ConicalSurfaceCreator.hh | 4 +- .../include/G4ConnectedFaceSetCreator.hh | 4 +- ...textDependentShapeRepresentationCreator.hh | 4 +- .../STEPinterface/include/G4CurveCreator.hh | 4 +- .../include/G4CylindricalSurfaceCreator.hh | 4 +- .../include/G4DirectionCreator.hh | 4 +- .../include/G4EdgeCurveCreator.hh | 4 +- .../include/G4EdgeLoopCreator.hh | 4 +- .../STEPinterface/include/G4EllipseCreator.hh | 4 +- .../include/G4FaceBoundCreator.hh | 4 +- .../include/G4FaceOuterBoundCreator.hh | 4 +- .../include/G4FaceSurfaceCreator.hh | 4 +- ...G4GeometricRepresentationContextCreator.hh | 4 +- .../include/G4GeometryCreator.hh | 4 +- .../STEPinterface/include/G4GeometryTable.hh | 4 +- .../include/G4HyperbolaCreator.hh | 4 +- .../G4ItemDefinedTransformationCreator.hh | 4 +- .../STEPinterface/include/G4LineCreator.hh | 4 +- .../include/G4ManifoldSolidBrepCreator.hh | 4 +- .../STEPinterface/include/G4NISTStepReader.hh | 4 +- .../include/G4OpenShellCreator.hh | 4 +- .../include/G4OrientedEdgeCreator.hh | 4 +- .../include/G4ParabolaCreator.hh | 4 +- .../STEPinterface/include/G4PlaneCreator.hh | 4 +- .../STEPinterface/include/G4PointCreator.hh | 4 +- .../include/G4PointOnCurveCreator.hh | 4 +- .../include/G4PointOnSurfaceCreator.hh | 4 +- .../include/G4PointReplicaCreator.hh | 4 +- .../G4ProductDefinitionShapeCreator.hh | 4 +- .../G4RationalBSplineSurfaceCreator.hh | 4 +- .../G4RepresentationRelationshipCreator.hh | 4 +- ...onRelationshipWithTransformationCreator.hh | 4 +- .../G4ShapeDefinitionRepresentationCreator.hh | 4 +- .../include/G4ShapeRepresentationCreator.hh | 4 +- ...4ShapeRepresentationRelationshipCreator.hh | 4 +- .../include/G4SphericalSurfaceCreator.hh | 4 +- .../STEPinterface/include/G4StepFileReader.hh | 4 +- .../include/G4ToroidalSurfaceCreator.hh | 4 +- .../STEPinterface/include/G4VectorCreator.hh | 4 +- .../include/G4VertexPointCreator.hh | 4 +- ...4AdvancedBrepShapeRepresentationCreator.cc | 4 +- .../src/G4AdvancedFaceCreator.cc | 4 +- .../STEPinterface/src/G4AssemblyCreator.cc | 8 +- .../src/G4Axis1PlacementCreator.cc | 4 +- .../src/G4Axis2Placement2dCreator.cc | 4 +- .../src/G4Axis2Placement3dCreator.cc | 14 +- .../src/G4Axis2PlacementCreator.cc | 4 +- .../src/G4Axis2PlacementsCreator.cc | 4 +- .../src/G4BSplineCurveWithKnotsCreator.cc | 4 +- .../src/G4BSplineSurfaceCreator.cc | 4 +- .../src/G4BSplineSurfaceWithKnotsCreator.cc | 4 +- .../src/G4BoundedSurfaceCreator.cc | 4 +- .../src/G4CartesianPointCreator.cc | 4 +- .../STEPinterface/src/G4CircleCreator.cc | 4 +- .../STEPinterface/src/G4ClosedShellCreator.cc | 4 +- .../STEPinterface/src/G4ConicCreator.cc | 4 +- .../src/G4ConicalSurfaceCreator.cc | 4 +- .../src/G4ConnectedFaceSetCreator.cc | 4 +- ...textDependentShapeRepresentationCreator.cc | 4 +- .../STEPinterface/src/G4CurveCreator.cc | 4 +- .../src/G4CylindricalSurfaceCreator.cc | 4 +- .../STEPinterface/src/G4DirectionCreator.cc | 4 +- .../STEPinterface/src/G4EdgeCurveCreator.cc | 4 +- .../STEPinterface/src/G4EdgeLoopCreator.cc | 4 +- .../STEPinterface/src/G4EllipseCreator.cc | 4 +- .../STEPinterface/src/G4FaceBoundCreator.cc | 4 +- .../src/G4FaceOuterBoundCreator.cc | 4 +- .../STEPinterface/src/G4FaceSurfaceCreator.cc | 4 +- ...G4GeometricRepresentationContextCreator.cc | 4 +- .../STEPinterface/src/G4GeometryCreator.cc | 4 +- .../STEPinterface/src/G4GeometryTable.cc | 4 +- .../STEPinterface/src/G4HyperbolaCreator.cc | 4 +- .../src/G4ItemDefinedTransformationCreator.cc | 4 +- .../solids/STEPinterface/src/G4LineCreator.cc | 4 +- .../src/G4ManifoldSolidBrepCreator.cc | 4 +- .../STEPinterface/src/G4NISTStepReader.cc | 4 +- .../STEPinterface/src/G4OpenShellCreator.cc | 4 +- .../src/G4OrientedEdgeCreator.cc | 4 +- .../STEPinterface/src/G4ParabolaCreator.cc | 4 +- .../STEPinterface/src/G4PlaneCreator.cc | 4 +- .../STEPinterface/src/G4PointCreator.cc | 4 +- .../src/G4PointOnCurveCreator.cc | 4 +- .../src/G4PointOnSurfaceCreator.cc | 4 +- .../src/G4PointReplicaCreator.cc | 4 +- .../src/G4ProductDefinitionShapeCreator.cc | 4 +- .../src/G4RationalBSplineSurfaceCreator.cc | 4 +- .../G4RepresentationRelationshipCreator.cc | 4 +- ...onRelationshipWithTransformationCreator.cc | 4 +- .../G4ShapeDefinitionRepresentationCreator.cc | 4 +- .../src/G4ShapeRepresentationCreator.cc | 4 +- ...4ShapeRepresentationRelationshipCreator.cc | 4 +- .../src/G4SphericalSurfaceCreator.cc | 4 +- .../src/G4ToroidalSurfaceCreator.cc | 4 +- .../STEPinterface/src/G4VectorCreator.cc | 4 +- .../STEPinterface/src/G4VertexPointCreator.cc | 4 +- .../specific/include/G4ClippablePolygon.hh | 4 +- .../specific/include/G4ClippablePolygon.icc | 4 +- .../specific/include/G4EllipticalTube.hh | 4 +- .../specific/include/G4EnclosingCylinder.hh | 4 +- .../solids/specific/include/G4Hype.hh | 4 +- .../solids/specific/include/G4Hype.icc | 4 +- .../specific/include/G4IntersectingCone.hh | 4 +- .../solids/specific/include/G4PolyPhiFace.hh | 4 +- .../solids/specific/include/G4PolyPhiFace.icc | 4 +- .../solids/specific/include/G4Polycone.hh | 4 +- .../solids/specific/include/G4PolyconeSide.hh | 4 +- .../solids/specific/include/G4Polyhedra.hh | 4 +- .../specific/include/G4PolyhedraSide.hh | 4 +- .../specific/include/G4ReduciblePolygon.hh | 4 +- .../specific/include/G4SolidExtentList.hh | 4 +- .../solids/specific/include/G4VCSGface.hh | 4 +- .../solids/specific/include/G4VCSGfaceted.hh | 4 +- .../solids/specific/src/G4ClippablePolygon.cc | 4 +- .../solids/specific/src/G4EllipticalTube.cc | 4 +- .../specific/src/G4EnclosingCylinder.cc | 4 +- source/geometry/solids/specific/src/G4Hype.cc | 4 +- .../solids/specific/src/G4IntersectingCone.cc | 4 +- .../solids/specific/src/G4PolyPhiFace.cc | 4 +- .../solids/specific/src/G4Polycone.cc | 4 +- .../solids/specific/src/G4PolyconeSide.cc | 4 +- .../solids/specific/src/G4Polyhedra.cc | 4 +- .../solids/specific/src/G4PolyhedraSide.cc | 4 +- .../solids/specific/src/G4ReduciblePolygon.cc | 4 +- .../solids/specific/src/G4SolidExtentList.cc | 4 +- .../solids/specific/src/G4VCSGfaceted.cc | 4 +- source/geometry/verification/GNUmakefile | 19 + source/geometry/verification/History | 38 + .../include/G4GeomTestErrorList.hh | 109 + .../verification/include/G4GeomTestLogger.hh | 75 + .../include/G4GeomTestOverlapList.hh | 79 + .../include/G4GeomTestOvershootList.hh | 71 + .../verification/include/G4GeomTestPoint.hh | 76 + .../verification/include/G4GeomTestSegment.hh | 80 + .../include/G4GeomTestStreamLogger.hh | 109 + .../include/G4GeomTestVolPoint.hh | 73 + .../verification/include/G4GeomTestVolume.hh | 154 + .../verification/src/G4GeomTestErrorList.cc | 163 + .../verification/src/G4GeomTestOverlapList.cc | 137 + .../src/G4GeomTestOvershootList.cc | 107 + .../verification/src/G4GeomTestPoint.cc | 123 + .../verification/src/G4GeomTestSegment.cc | 371 + .../src/G4GeomTestStreamLogger.cc | 285 + .../verification/src/G4GeomTestVolPoint.cc | 105 + .../verification/src/G4GeomTestVolume.cc | 542 + source/geometry/volumes/GNUmakefile | 6 +- source/geometry/volumes/History | 87 +- .../volumes/include/G4AuxiliaryNavServices.hh | 4 +- .../include/G4AuxiliaryNavServices.icc | 4 +- .../volumes/include/G4BlockingList.hh | 4 +- .../volumes/include/G4BlockingList.icc | 4 +- source/geometry/volumes/include/G4GRSSolid.hh | 4 +- .../geometry/volumes/include/G4GRSSolid.icc | 4 +- .../volumes/include/G4GRSSolidHandle.hh} | 55 +- .../geometry/volumes/include/G4GRSVolume.hh | 4 +- .../geometry/volumes/include/G4GRSVolume.icc | 4 +- .../volumes/include/G4GRSVolumeHandle.hh | 51 + .../volumes/include/G4GeometryMessenger.hh | 90 + .../volumes/include/G4LogicalBorderSurface.hh | 4 +- .../include/G4LogicalBorderSurface.icc | 4 +- .../volumes/include/G4LogicalSkinSurface.hh | 4 +- .../volumes/include/G4LogicalSkinSurface.icc | 4 +- .../volumes/include/G4NavigationHistory.hh | 4 +- .../volumes/include/G4NavigationHistory.icc | 4 +- .../volumes/include/G4NavigationLevel.hh | 4 +- .../volumes/include/G4NavigationLevel.icc | 4 +- .../volumes/include/G4NavigationLevelRep.hh | 4 +- .../volumes/include/G4NavigationLevelRep.icc | 4 +- .../geometry/volumes/include/G4Navigator.hh | 70 +- .../geometry/volumes/include/G4Navigator.icc | 171 +- .../volumes/include/G4NormalNavigation.hh | 4 +- .../volumes/include/G4NormalNavigation.icc | 4 +- .../include/G4ParameterisedNavigation.hh | 4 +- .../include/G4ParameterisedNavigation.icc | 4 +- .../volumes/include/G4PropagatorInField.hh | 32 +- .../volumes/include/G4PropagatorInField.icc | 52 +- .../volumes/include/G4ReplicaNavigation.hh | 4 +- .../volumes/include/G4ReplicaNavigation.icc | 4 +- .../volumes/include/G4TouchableHistory.hh | 4 +- .../volumes/include/G4TouchableHistory.icc | 4 +- .../include/G4TouchableHistoryHandle.hh | 51 + .../include/G4TransportationManager.hh | 6 +- .../include/G4TransportationManager.icc | 4 +- .../volumes/include/G4VoxelNavigation.hh | 4 +- .../volumes/include/G4VoxelNavigation.icc | 4 +- source/geometry/volumes/src/G4BlockingList.cc | 4 +- source/geometry/volumes/src/G4GRSSolid.cc | 4 +- source/geometry/volumes/src/G4GRSVolume.cc | 4 +- .../volumes/src/G4GeometryMessenger.cc | 244 + .../volumes/src/G4LogicalBorderSurface.cc | 4 +- .../volumes/src/G4LogicalSkinSurface.cc | 4 +- .../volumes/src/G4NavigationHistory.cc | 4 +- source/geometry/volumes/src/G4Navigator.cc | 209 +- .../volumes/src/G4NormalNavigation.cc | 4 +- .../volumes/src/G4ParameterisedNavigation.cc | 4 +- .../volumes/src/G4PropagatorInField.cc | 163 +- .../volumes/src/G4ReplicaNavigation.cc | 4 +- .../volumes/src/G4TouchableHistory.cc | 4 +- .../volumes/src/G4TransportationManager.cc | 11 +- .../geometry/volumes/src/G4VoxelNavigation.cc | 4 +- source/global/GNUmakefile | 4 +- .../HEPGeometry/include/G4LorentzRotation.hh | 4 +- .../HEPGeometry/include/G4LorentzVector.hh | 4 +- .../global/HEPGeometry/include/G4Normal3D.hh | 4 +- .../global/HEPGeometry/include/G4Plane3D.hh | 4 +- .../global/HEPGeometry/include/G4Point3D.hh | 4 +- .../HEPGeometry/include/G4Transform3D.hh | 4 +- .../global/HEPGeometry/include/G4Vector3D.hh | 4 +- source/global/HEPGeometry/include/geomdefs.hh | 4 +- .../include/G4ChebyshevApproximation.hh | 4 +- .../include/G4DataInterpolation.hh | 4 +- .../HEPNumerics/include/G4GaussChebyshevQ.hh | 4 +- .../HEPNumerics/include/G4GaussHermiteQ.hh | 4 +- .../HEPNumerics/include/G4GaussJacobiQ.hh | 4 +- .../HEPNumerics/include/G4GaussLaguerreQ.hh | 4 +- .../HEPNumerics/include/G4GaussLegendreQ.hh | 4 +- .../HEPNumerics/include/G4Integrator.hh | 4 +- .../HEPNumerics/include/G4Integrator.icc | 4 +- .../HEPNumerics/include/G4PolynomialSolver.hh | 4 +- .../include/G4PolynomialSolver.icc | 4 +- .../include/G4SimpleIntegration.hh | 4 +- .../include/G4VGaussianQuadrature.hh | 4 +- .../src/G4ChebyshevApproximation.cc | 4 +- .../HEPNumerics/src/G4DataInterpolation.cc | 4 +- .../HEPNumerics/src/G4GaussChebyshevQ.cc | 4 +- .../global/HEPNumerics/src/G4GaussHermiteQ.cc | 4 +- .../global/HEPNumerics/src/G4GaussJacobiQ.cc | 4 +- .../HEPNumerics/src/G4GaussLaguerreQ.cc | 4 +- .../HEPNumerics/src/G4GaussLegendreQ.cc | 4 +- .../HEPNumerics/src/G4SimpleIntegration.cc | 4 +- .../HEPNumerics/src/G4VGaussianQuadrature.cc | 4 +- source/global/HEPRandom/include/G4Poisson.hh | 4 +- source/global/HEPRandom/include/Randomize.hh | 4 +- source/global/History | 37 +- source/global/STLInterface/GNUmakefile | 22 - source/global/STLInterface/History | 156 - source/global/STLInterface/g4rw/defs.h | 139 - source/global/STLInterface/g4rw/tpordvec.h | 107 - source/global/STLInterface/g4rw/tpordvec.icc | 375 - source/global/STLInterface/g4rw/tpsrtvec.h | 100 - source/global/STLInterface/g4rw/tpsrtvec.icc | 254 - source/global/STLInterface/g4rw/tpvector.icc | 138 - source/global/STLInterface/g4rw/tvordvec.h | 106 - source/global/STLInterface/g4rw/tvordvec.icc | 299 - source/global/STLInterface/g4rw/tvvector.h | 87 - source/global/STLInterface/g4rw/tvvector.icc | 141 - .../global/management/include/G4Allocator.hh | 4 +- .../management/include/G4AllocatorPage.hh | 4 +- .../management/include/G4AllocatorUnit.hh | 4 +- .../management/include/G4ApplicationState.hh | 4 +- .../global/management/include/G4DataVector.hh | 19 +- .../global/management/include/G4FastVector.hh | 4 +- .../include/G4LPhysicsFreeVector.hh | 4 +- .../include/G4LPhysicsFreeVector.icc | 4 +- .../management/include/G4OrderedTable.hh | 25 +- .../management/include/G4PhysicsFreeVector.hh | 4 +- .../include/G4PhysicsLinearVector.hh | 4 +- .../management/include/G4PhysicsLnVector.hh | 4 +- .../management/include/G4PhysicsLogVector.hh | 4 +- .../include/G4PhysicsOrderedFreeVector.hh | 4 +- .../include/G4PhysicsOrderedFreeVector.icc | 4 +- .../management/include/G4PhysicsTable.hh | 4 +- .../management/include/G4PhysicsTable.icc | 4 +- .../management/include/G4PhysicsVector.hh | 4 +- .../management/include/G4PhysicsVector.icc | 4 +- .../management/include/G4PhysicsVectorType.hh | 4 +- .../include/G4ReferenceCountedHandle.hh | 319 + .../management/include/G4RotationMatrix.hh | 4 +- source/global/management/include/G4SIunits.hh | 4 +- .../management/include/G4StateManager.hh | 9 +- .../include/G4String.hh} | 23 +- .../include/G4String.icc} | 12 +- .../management/include/G4ThreeVector.hh | 4 +- source/global/management/include/G4Timer.hh | 4 +- .../include/G4Tokenizer.hh} | 17 +- source/global/management/include/G4Types.hh | 4 +- .../global/management/include/G4UnitsTable.hh | 4 +- .../global/management/include/G4UserLimits.hh | 4 +- .../management/include/G4UserLimits.icc | 4 +- .../management/include/G4VStateDependent.hh | 4 +- .../management/include/G4coutDestination.hh | 4 +- source/global/management/include/G4ios.hh | 4 +- .../management/include/G4strstreambuf.hh | 4 +- .../management/include/G4strstreambuf.icc | 4 +- .../management/include/PhysicalConstants.h | 4 +- .../global/management/include/SystemOfUnits.h | 4 +- .../global/management/include/g4std/algorithm | 2 +- .../global/management/include/g4std/complex | 2 +- source/global/management/include/g4std/deque | 23 + .../global/management/include/g4std/fstream | 2 +- .../management/include/g4std/functional | 2 +- .../global/management/include/g4std/iomanip | 2 +- .../global/management/include/g4std/iostream | 2 +- source/global/management/include/g4std/list | 2 +- source/global/management/include/g4std/map | 2 +- source/global/management/include/g4std/queue | 2 +- source/global/management/include/g4std/set | 2 +- .../global/management/include/g4std/streambuf | 2 +- .../global/management/include/g4std/strstream | 2 +- source/global/management/include/g4std/vector | 2 +- .../include/g4std}/wrappers/AIX-xlC/cmath | 0 .../include/g4std}/wrappers/AIX-xlC/cstdio | 0 .../include/g4std}/wrappers/AIX-xlC/cstdlib | 0 .../include/g4std}/wrappers/AIX-xlC/cstring | 0 .../include/g4std}/wrappers/DEC-cxx/cmath | 0 .../include/g4std}/wrappers/DEC-cxx/cstdio | 0 .../include/g4std}/wrappers/DEC-cxx/cstdlib | 0 .../include/g4std}/wrappers/DEC-cxx/cstring | 0 .../include/g4std}/wrappers/HP-aCC/fstream | 0 .../include/g4std}/wrappers/HP-aCC/iomanip | 0 .../include/g4std}/wrappers/HP-aCC/iostream | 0 .../include/g4std}/wrappers/HP-aCC/strstream | 0 .../include/g4std}/wrappers/SGI-CC/iostream | 0 .../include/g4std/wrappers/SUN-CC4}/cmath | 0 .../include/g4std/wrappers/SUN-CC4}/cstdio | 0 .../include/g4std/wrappers/SUN-CC4}/cstdlib | 0 .../include/g4std/wrappers/SUN-CC4}/cstring | 0 source/global/management/include/globals.hh | 13 +- source/global/management/include/templates.hh | 4 +- source/global/management/src/G4DataVector.cc | 112 + source/global/management/src/G4Exception.cc | 16 +- .../management/src/G4LPhysicsFreeVector.cc | 4 +- .../global/management/src/G4OrderedTable.cc | 177 + .../management/src/G4PhysicsFreeVector.cc | 4 +- .../management/src/G4PhysicsLinearVector.cc | 4 +- .../management/src/G4PhysicsLnVector.cc | 4 +- .../management/src/G4PhysicsLogVector.cc | 4 +- .../src/G4PhysicsOrderedFreeVector.cc | 4 +- .../global/management/src/G4PhysicsTable.cc | 4 +- .../global/management/src/G4PhysicsVector.cc | 6 +- .../global/management/src/G4StateManager.cc | 11 +- source/global/management/src/G4Timer.cc | 4 +- source/global/management/src/G4UnitsTable.cc | 4 +- .../management/src/G4VStateDependent.cc | 4 +- source/global/management/src/G4ios.cc | 4 +- source/graphics_reps/History | 20 +- source/graphics_reps/include/G4Circle.hh | 4 +- source/graphics_reps/include/G4Color.hh | 4 +- source/graphics_reps/include/G4Colour.hh | 4 +- source/graphics_reps/include/G4NURBS.hh | 4 +- source/graphics_reps/include/G4NURBSbox.hh | 4 +- .../graphics_reps/include/G4NURBScylinder.hh | 4 +- .../include/G4NURBShexahedron.hh | 4 +- source/graphics_reps/include/G4NURBStube.hh | 4 +- .../include/G4NURBStubesector.hh | 4 +- .../include/G4PlacedPolyhedron.hh | 4 +- source/graphics_reps/include/G4Point3DList.hh | 12 +- source/graphics_reps/include/G4Polyhedron.hh | 4 +- source/graphics_reps/include/G4Polyline.hh | 10 +- source/graphics_reps/include/G4Polymarker.hh | 4 +- source/graphics_reps/include/G4Polymarker.icc | 4 +- source/graphics_reps/include/G4Scale.hh | 90 + source/graphics_reps/include/G4Scale.icc | 55 + source/graphics_reps/include/G4Square.hh | 4 +- source/graphics_reps/include/G4Square.icc | 4 +- source/graphics_reps/include/G4Text.hh | 4 +- source/graphics_reps/include/G4Text.icc | 4 +- source/graphics_reps/include/G4VMarker.hh | 4 +- source/graphics_reps/include/G4VMarker.icc | 4 +- source/graphics_reps/include/G4VVisPrim.hh | 4 +- .../graphics_reps/include/G4VisAttributes.hh | 4 +- .../graphics_reps/include/G4VisAttributes.icc | 4 +- source/graphics_reps/include/G4VisExtent.hh | 20 +- source/graphics_reps/include/G4Visible.hh | 4 +- source/graphics_reps/include/G4Visible.icc | 4 +- source/graphics_reps/include/HepPolyhedron.h | 4 +- source/graphics_reps/src/G4Circle.cc | 4 +- source/graphics_reps/src/G4Colour.cc | 4 +- source/graphics_reps/src/G4NURBS.cc | 18 +- source/graphics_reps/src/G4NURBSbox.cc | 4 +- source/graphics_reps/src/G4NURBScylinder.cc | 4 +- source/graphics_reps/src/G4NURBShexahedron.cc | 4 +- source/graphics_reps/src/G4NURBStube.cc | 4 +- source/graphics_reps/src/G4NURBStubesector.cc | 4 +- .../graphics_reps/src/G4PlacedPolyhedron.cc | 4 +- source/graphics_reps/src/G4Point3DList.cc | 4 +- source/graphics_reps/src/G4Polyhedron.cc | 4 +- source/graphics_reps/src/G4Polyline.cc | 9 +- source/graphics_reps/src/G4Polymarker.cc | 4 +- source/graphics_reps/src/G4Scale.cc | 85 + source/graphics_reps/src/G4Square.cc | 4 +- source/graphics_reps/src/G4Text.cc | 4 +- source/graphics_reps/src/G4VMarker.cc | 4 +- source/graphics_reps/src/G4VVisPrim.cc | 4 +- source/graphics_reps/src/G4VisAttributes.cc | 4 +- source/graphics_reps/src/G4VisExtent.cc | 26 +- source/graphics_reps/src/G4Visible.cc | 4 +- source/graphics_reps/src/HepPolyhedron.cc | 4 +- source/intercoms/History | 74 +- source/intercoms/include/G4UIaliasList.hh | 68 + source/intercoms/include/G4UIbatch.hh | 4 +- .../intercoms/include/G4UIcmdWith3Vector.hh | 4 +- .../include/G4UIcmdWith3VectorAndUnit.hh | 4 +- source/intercoms/include/G4UIcmdWithABool.hh | 4 +- .../intercoms/include/G4UIcmdWithADouble.hh | 4 +- .../include/G4UIcmdWithADoubleAndUnit.hh | 4 +- .../intercoms/include/G4UIcmdWithAString.hh | 4 +- .../intercoms/include/G4UIcmdWithAnInteger.hh | 4 +- .../include/G4UIcmdWithoutParameter.hh | 4 +- source/intercoms/include/G4UIcommand.hh | 48 +- source/intercoms/include/G4UIcommandStatus.hh | 7 +- source/intercoms/include/G4UIcommandTree.hh | 17 +- .../intercoms/include/G4UIcontrolMessenger.hh | 21 +- source/intercoms/include/G4UIdirectory.hh | 4 +- source/intercoms/include/G4UImanager.hh | 62 +- source/intercoms/include/G4UImessenger.hh | 6 +- source/intercoms/include/G4UIparameter.hh | 40 +- source/intercoms/include/G4UIsession.hh | 4 +- source/intercoms/include/G4UItokenNum.hh | 10 +- source/intercoms/include/G4UnitsMessenger.hh | 4 +- .../include/G4VFlavoredParallelWorld.hh | 4 +- .../include/G4VGlobalFastSimulationManager.hh | 4 +- source/intercoms/include/G4VGraphicsScene.hh | 9 +- source/intercoms/include/G4VVisManager.hh | 49 +- source/intercoms/src/G4UIaliasList.cc | 127 + source/intercoms/src/G4UIbatch.cc | 41 +- source/intercoms/src/G4UIcmdWith3Vector.cc | 4 +- .../src/G4UIcmdWith3VectorAndUnit.cc | 4 +- source/intercoms/src/G4UIcmdWithABool.cc | 4 +- source/intercoms/src/G4UIcmdWithADouble.cc | 4 +- .../src/G4UIcmdWithADoubleAndUnit.cc | 4 +- source/intercoms/src/G4UIcmdWithAString.cc | 4 +- source/intercoms/src/G4UIcmdWithAnInteger.cc | 4 +- .../intercoms/src/G4UIcmdWithoutParameter.cc | 4 +- source/intercoms/src/G4UIcommand.cc | 156 +- source/intercoms/src/G4UIcommandTree.cc | 192 +- source/intercoms/src/G4UIcontrolMessenger.cc | 121 +- source/intercoms/src/G4UIdirectory.cc | 4 +- source/intercoms/src/G4UImanager.cc | 253 +- source/intercoms/src/G4UImessenger.cc | 4 +- source/intercoms/src/G4UIparameter.cc | 84 +- source/intercoms/src/G4UIsession.cc | 4 +- source/intercoms/src/G4UnitsMessenger.cc | 4 +- .../src/G4VGlobalFastSimulationManager.cc | 4 +- source/intercoms/src/G4VVisManager.cc | 4 +- source/interfaces/GAG/include/G4UIGAG.hh | 4 +- source/interfaces/GAG/src/G4UIGAG.cc | 48 +- source/interfaces/GNUmakefile | 25 +- source/interfaces/History | 30 +- source/interfaces/OPACS/include/G4UIWo.hh | 4 +- .../interfaces/OPACS/include/G4WoMessenger.hh | 4 +- source/interfaces/OPACS/include/G4oCommon.hh | 4 +- source/interfaces/OPACS/include/G4oCommon.icc | 4 +- source/interfaces/OPACS/src/G4UIWo.cc | 4 +- source/interfaces/OPACS/src/G4WoMessenger.cc | 4 +- source/interfaces/XVT/include/G4UIxvt.hh | 4 +- .../XVT/include/G4UIxvtMessenger.hh | 4 +- source/interfaces/XVT/src/G4UIxvt.cc | 4 +- source/interfaces/XVT/src/G4UIxvtMessenger.cc | 4 +- .../basic/include/G4UIArrayString.hh | 4 +- source/interfaces/basic/include/G4UIWin32.hh | 4 +- source/interfaces/basic/include/G4UIXaw.hh | 4 +- source/interfaces/basic/include/G4UIXm.hh | 4 +- source/interfaces/basic/include/G4UIcsh.hh | 4 +- source/interfaces/basic/include/G4UItcsh.hh | 8 +- .../interfaces/basic/include/G4UIterminal.hh | 4 +- source/interfaces/basic/include/G4VUIshell.hh | 6 +- .../interfaces/basic/src/G4UIArrayString.cc | 12 +- source/interfaces/basic/src/G4UIWin32.cc | 4 +- source/interfaces/basic/src/G4UIXaw.cc | 4 +- source/interfaces/basic/src/G4UIXm.cc | 4 +- source/interfaces/basic/src/G4UIcsh.cc | 4 +- source/interfaces/basic/src/G4UItcsh.cc | 26 +- source/interfaces/basic/src/G4UIterminal.cc | 9 +- source/interfaces/basic/src/G4VUIshell.cc | 18 +- .../common/include/G4VBasicShell.hh | 4 +- .../common/include/G4VInteractorManager.hh | 4 +- source/interfaces/common/include/G4Win32.hh | 4 +- source/interfaces/common/include/G4Xt.hh | 4 +- source/interfaces/common/src/G4VBasicShell.cc | 46 +- .../common/src/G4VInteractorManager.cc | 52 +- source/interfaces/common/src/G4Win32.cc | 4 +- source/interfaces/common/src/G4Xt.cc | 35 +- source/materials/History | 42 +- source/materials/include/G4AtomicShells.hh | 4 +- source/materials/include/G4Element.hh | 256 +- source/materials/include/G4ElementTable.hh | 8 +- source/materials/include/G4ElementVector.hh | 9 +- source/materials/include/G4IonisParamElm.hh | 4 +- source/materials/include/G4IonisParamMat.hh | 4 +- source/materials/include/G4Isotope.hh | 69 +- source/materials/include/G4IsotopeVector.hh | 9 +- source/materials/include/G4MPVEntry.hh | 4 +- source/materials/include/G4Material.hh | 443 +- .../include/G4MaterialPropertiesTable.hh | 4 +- .../include/G4MaterialPropertyVector.hh | 18 +- source/materials/include/G4MaterialTable.hh | 8 +- source/materials/include/G4OpticalSurface.hh | 4 +- source/materials/include/G4SandiaTable.hh | 78 +- .../materials/include/G4StaticSandiaData.hh | 4 +- source/materials/src/G4AtomicShells.cc | 4 +- source/materials/src/G4Element.cc | 159 +- source/materials/src/G4IonisParamElm.cc | 4 +- source/materials/src/G4IonisParamMat.cc | 16 +- source/materials/src/G4Isotope.cc | 110 +- source/materials/src/G4MPVEntry.cc | 4 +- source/materials/src/G4Material.cc | 632 +- .../src/G4MaterialPropertiesTable.cc | 17 +- .../materials/src/G4MaterialPropertyVector.cc | 61 +- source/materials/src/G4OpticalSurface.cc | 6 +- source/materials/src/G4SandiaTable.cc | 104 +- source/parameterisations/History | 21 +- .../include/G4FoamXTRdEdx.hh | 63 + .../include/G4FoamXrayTRmodel.hh | 8 +- .../include/G4GamDistrXTRdEdx.hh | 76 + .../include/G4GamDistrXrayTRmodel.hh | 8 +- .../include/G4IrregularXTRdEdx.hh | 62 + .../include/G4IrregularXrayTRmodel.hh | 8 +- .../include/G4PAIclusterModel.hh | 5 +- .../include/G4PhotoClusterModel.hh | 5 +- .../include/G4PlateIrrGasXTRdEdx.hh | 61 + .../include/G4PlateIrrGasXrayTRmodel.hh | 8 +- .../include/G4RegularXTRdEdx.hh | 61 + .../include/G4RegularXrayTRmodel.hh | 8 +- .../include/G4VClusterModel.hh | 17 +- .../parameterisations/include/G4VXTRdEdx.hh | 91 + .../include/G4VXrayTRadModel.hh} | 79 +- .../include/G4VXrayTRmodel.hh | 33 +- source/parameterisations/src/G4FoamXTRdEdx.cc | 110 + .../src/G4FoamXrayTRmodel.cc | 6 +- .../src/G4GamDistrXTRdEdx.cc | 117 + .../src/G4GamDistrXrayTRmodel.cc | 6 +- .../src/G4IrregularXTRdEdx.cc | 93 + .../src/G4IrregularXrayTRmodel.cc | 8 +- .../src/G4PAIclusterModel.cc | 45 +- .../src/G4PhotoClusterModel.cc | 8 +- .../src/G4PlateIrrGasXTRdEdx.cc | 100 + .../src/G4PlateIrrGasXrayTRmodel.cc | 8 +- .../parameterisations/src/G4RegularXTRdEdx.cc | 121 + .../src/G4RegularXrayTRmodel.cc | 6 +- .../parameterisations/src/G4VClusterModel.cc | 26 +- source/parameterisations/src/G4VXTRdEdx.cc | 393 + .../parameterisations/src/G4VXrayTRadModel.cc | 320 + .../parameterisations/src/G4VXrayTRmodel.cc | 305 +- source/particles/History | 65 +- .../bosons/include/G4BosonConstructor.hh | 4 +- .../bosons/include/G4ChargedGeantino.hh | 13 +- source/particles/bosons/include/G4Gamma.hh | 70 +- source/particles/bosons/include/G4Geantino.hh | 13 +- .../bosons/include/G4OpticalPhoton.hh | 23 +- source/particles/bosons/include/G4VBoson.hh | 4 +- .../bosons/src/G4BosonConstructor.cc | 4 +- .../particles/bosons/src/G4ChargedGeantino.cc | 34 +- source/particles/bosons/src/G4Gamma.cc | 42 +- source/particles/bosons/src/G4Geantino.cc | 36 +- .../particles/bosons/src/G4OpticalPhoton.cc | 38 +- source/particles/bosons/src/G4VBoson.cc | 4 +- .../hadrons/barions/include/G4AntiLambda.hh | 12 +- .../barions/include/G4AntiLambdacPlus.hh | 17 +- .../hadrons/barions/include/G4AntiNeutron.hh | 23 +- .../barions/include/G4AntiOmegaMinus.hh | 20 +- .../barions/include/G4AntiOmegacZero.hh | 10 +- .../hadrons/barions/include/G4AntiProton.hh | 30 +- .../barions/include/G4AntiSigmaMinus.hh | 19 +- .../barions/include/G4AntiSigmaPlus.hh | 20 +- .../barions/include/G4AntiSigmaZero.hh | 12 +- .../barions/include/G4AntiSigmacPlus.hh | 18 +- .../barions/include/G4AntiSigmacPlusPlus.hh | 18 +- .../barions/include/G4AntiSigmacZero.hh | 10 +- .../hadrons/barions/include/G4AntiXiMinus.hh | 19 +- .../hadrons/barions/include/G4AntiXiZero.hh | 14 +- .../hadrons/barions/include/G4AntiXicPlus.hh | 18 +- .../hadrons/barions/include/G4AntiXicZero.hh | 10 +- .../barions/include/G4BaryonConstructor.hh | 4 +- .../hadrons/barions/include/G4Lambda.hh | 13 +- .../hadrons/barions/include/G4LambdacPlus.hh | 18 +- .../hadrons/barions/include/G4Neutron.hh | 26 +- .../hadrons/barions/include/G4OmegaMinus.hh | 20 +- .../hadrons/barions/include/G4OmegacZero.hh | 10 +- .../hadrons/barions/include/G4Proton.hh | 29 +- .../hadrons/barions/include/G4SigmaMinus.hh | 20 +- .../hadrons/barions/include/G4SigmaPlus.hh | 20 +- .../hadrons/barions/include/G4SigmaZero.hh | 12 +- .../hadrons/barions/include/G4SigmacPlus.hh | 18 +- .../barions/include/G4SigmacPlusPlus.hh | 18 +- .../hadrons/barions/include/G4SigmacZero.hh | 10 +- .../hadrons/barions/include/G4VBaryon.hh | 4 +- .../hadrons/barions/include/G4XiMinus.hh | 20 +- .../hadrons/barions/include/G4XiZero.hh | 12 +- .../hadrons/barions/include/G4XicPlus.hh | 19 +- .../hadrons/barions/include/G4XicZero.hh | 10 +- .../hadrons/barions/src/G4AntiLambda.cc | 30 +- .../hadrons/barions/src/G4AntiLambdacPlus.cc | 7 +- .../hadrons/barions/src/G4AntiNeutron.cc | 31 +- .../hadrons/barions/src/G4AntiOmegaMinus.cc | 9 +- .../hadrons/barions/src/G4AntiOmegacZero.cc | 30 +- .../hadrons/barions/src/G4AntiProton.cc | 9 +- .../hadrons/barions/src/G4AntiSigmaMinus.cc | 13 +- .../hadrons/barions/src/G4AntiSigmaPlus.cc | 12 +- .../hadrons/barions/src/G4AntiSigmaZero.cc | 34 +- .../hadrons/barions/src/G4AntiSigmacPlus.cc | 7 +- .../barions/src/G4AntiSigmacPlusPlus.cc | 7 +- .../hadrons/barions/src/G4AntiSigmacZero.cc | 29 +- .../hadrons/barions/src/G4AntiXiMinus.cc | 11 +- .../hadrons/barions/src/G4AntiXiZero.cc | 30 +- .../hadrons/barions/src/G4AntiXicPlus.cc | 7 +- .../hadrons/barions/src/G4AntiXicZero.cc | 30 +- .../barions/src/G4BaryonConstructor.cc | 4 +- .../particles/hadrons/barions/src/G4Lambda.cc | 32 +- .../hadrons/barions/src/G4LambdacPlus.cc | 7 +- .../hadrons/barions/src/G4Neutron.cc | 44 +- .../hadrons/barions/src/G4OmegaMinus.cc | 9 +- .../hadrons/barions/src/G4OmegacZero.cc | 28 +- .../particles/hadrons/barions/src/G4Proton.cc | 12 +- .../hadrons/barions/src/G4SigmaMinus.cc | 9 +- .../hadrons/barions/src/G4SigmaPlus.cc | 9 +- .../hadrons/barions/src/G4SigmaZero.cc | 31 +- .../hadrons/barions/src/G4SigmacPlus.cc | 7 +- .../hadrons/barions/src/G4SigmacPlusPlus.cc | 7 +- .../hadrons/barions/src/G4SigmacZero.cc | 30 +- .../hadrons/barions/src/G4VBaryon.cc | 4 +- .../hadrons/barions/src/G4XiMinus.cc | 9 +- .../particles/hadrons/barions/src/G4XiZero.cc | 29 +- .../hadrons/barions/src/G4XicPlus.cc | 7 +- .../hadrons/barions/src/G4XicZero.cc | 30 +- .../particles/hadrons/ions/include/G4Alpha.hh | 30 +- .../hadrons/ions/include/G4Deuteron.hh | 30 +- .../hadrons/ions/include/G4GenericIon.hh | 30 +- .../particles/hadrons/ions/include/G4He3.hh | 29 +- .../hadrons/ions/include/G4IonConstructor.hh | 4 +- .../hadrons/ions/include/G4Triton.hh | 32 +- .../particles/hadrons/ions/include/G4VIon.hh | 4 +- source/particles/hadrons/ions/src/G4Alpha.cc | 8 +- .../particles/hadrons/ions/src/G4Deuteron.cc | 8 +- .../hadrons/ions/src/G4GenericIon.cc | 8 +- source/particles/hadrons/ions/src/G4He3.cc | 8 +- .../hadrons/ions/src/G4IonConstructor.cc | 4 +- source/particles/hadrons/ions/src/G4Triton.cc | 8 +- source/particles/hadrons/ions/src/G4VIon.cc | 4 +- .../mesons/include/G4AntiBMesonZero.hh | 10 +- .../mesons/include/G4AntiBsMesonZero.hh | 10 +- .../mesons/include/G4AntiDMesonZero.hh | 10 +- .../hadrons/mesons/include/G4AntiKaonZero.hh | 31 +- .../hadrons/mesons/include/G4BMesonMinus.hh | 17 +- .../hadrons/mesons/include/G4BMesonPlus.hh | 17 +- .../hadrons/mesons/include/G4BMesonZero.hh | 10 +- .../hadrons/mesons/include/G4BsMesonZero.hh | 10 +- .../hadrons/mesons/include/G4DMesonMinus.hh | 17 +- .../hadrons/mesons/include/G4DMesonPlus.hh | 17 +- .../hadrons/mesons/include/G4DMesonZero.hh | 10 +- .../hadrons/mesons/include/G4DsMesonMinus.hh | 17 +- .../hadrons/mesons/include/G4DsMesonPlus.hh | 17 +- .../particles/hadrons/mesons/include/G4Eta.hh | 13 +- .../hadrons/mesons/include/G4EtaPrime.hh | 12 +- .../hadrons/mesons/include/G4JPsi.hh | 10 +- .../hadrons/mesons/include/G4KaonMinus.hh | 30 +- .../hadrons/mesons/include/G4KaonPlus.hh | 30 +- .../hadrons/mesons/include/G4KaonZero.hh | 21 +- .../hadrons/mesons/include/G4KaonZeroLong.hh | 13 +- .../hadrons/mesons/include/G4KaonZeroShort.hh | 13 +- .../mesons/include/G4MesonConstructor.hh | 4 +- .../hadrons/mesons/include/G4PionMinus.hh | 29 +- .../hadrons/mesons/include/G4PionPlus.hh | 30 +- .../hadrons/mesons/include/G4PionZero.hh | 23 +- .../hadrons/mesons/include/G4VMeson.hh | 4 +- .../hadrons/mesons/src/G4AntiBMesonZero.cc | 26 +- .../hadrons/mesons/src/G4AntiBsMesonZero.cc | 26 +- .../hadrons/mesons/src/G4AntiDMesonZero.cc | 26 +- .../hadrons/mesons/src/G4AntiKaonZero.cc | 28 +- .../hadrons/mesons/src/G4BMesonMinus.cc | 7 +- .../hadrons/mesons/src/G4BMesonPlus.cc | 7 +- .../hadrons/mesons/src/G4BMesonZero.cc | 26 +- .../hadrons/mesons/src/G4BsMesonZero.cc | 30 +- .../hadrons/mesons/src/G4DMesonMinus.cc | 7 +- .../hadrons/mesons/src/G4DMesonPlus.cc | 7 +- .../hadrons/mesons/src/G4DMesonZero.cc | 26 +- .../hadrons/mesons/src/G4DsMesonMinus.cc | 7 +- .../hadrons/mesons/src/G4DsMesonPlus.cc | 7 +- source/particles/hadrons/mesons/src/G4Eta.cc | 28 +- .../hadrons/mesons/src/G4EtaPrime.cc | 28 +- source/particles/hadrons/mesons/src/G4JPsi.cc | 28 +- .../hadrons/mesons/src/G4KaonMinus.cc | 8 +- .../hadrons/mesons/src/G4KaonPlus.cc | 9 +- .../hadrons/mesons/src/G4KaonZero.cc | 30 +- .../hadrons/mesons/src/G4KaonZeroLong.cc | 28 +- .../hadrons/mesons/src/G4KaonZeroShort.cc | 28 +- .../hadrons/mesons/src/G4MesonConstructor.cc | 4 +- .../hadrons/mesons/src/G4PionMinus.cc | 10 +- .../hadrons/mesons/src/G4PionPlus.cc | 10 +- .../hadrons/mesons/src/G4PionZero.cc | 27 +- .../particles/hadrons/mesons/src/G4VMeson.cc | 4 +- .../leptons/include/G4AntiNeutrinoE.hh | 12 +- .../leptons/include/G4AntiNeutrinoMu.hh | 12 +- .../leptons/include/G4AntiNeutrinoTau.hh | 12 +- .../particles/leptons/include/G4Electron.hh | 32 +- .../leptons/include/G4LeptonConstructor.hh | 4 +- .../particles/leptons/include/G4MuonMinus.hh | 30 +- .../particles/leptons/include/G4MuonPlus.hh | 29 +- .../particles/leptons/include/G4NeutrinoE.hh | 12 +- .../particles/leptons/include/G4NeutrinoMu.hh | 12 +- .../leptons/include/G4NeutrinoTau.hh | 12 +- .../particles/leptons/include/G4Positron.hh | 31 +- .../particles/leptons/include/G4TauMinus.hh | 28 +- source/particles/leptons/include/G4TauPlus.hh | 29 +- source/particles/leptons/include/G4VLepton.hh | 4 +- .../particles/leptons/src/G4AntiNeutrinoE.cc | 33 +- .../particles/leptons/src/G4AntiNeutrinoMu.cc | 34 +- .../leptons/src/G4AntiNeutrinoTau.cc | 35 +- source/particles/leptons/src/G4Electron.cc | 14 +- .../leptons/src/G4LeptonConstructor.cc | 4 +- source/particles/leptons/src/G4MuonMinus.cc | 11 +- source/particles/leptons/src/G4MuonPlus.cc | 15 +- source/particles/leptons/src/G4NeutrinoE.cc | 33 +- source/particles/leptons/src/G4NeutrinoMu.cc | 33 +- source/particles/leptons/src/G4NeutrinoTau.cc | 30 +- source/particles/leptons/src/G4Positron.cc | 12 +- source/particles/leptons/src/G4TauMinus.cc | 13 +- source/particles/leptons/src/G4TauPlus.cc | 15 +- source/particles/leptons/src/G4VLepton.cc | 4 +- .../include/G4DalitzDecayChannel.hh | 4 +- .../management/include/G4DecayProducts.hh | 4 +- .../management/include/G4DecayTable.hh | 4 +- .../include/G4DecayTableMessenger.hh | 4 +- .../management/include/G4DynamicParticle.hh | 4 +- .../management/include/G4DynamicParticle.icc | 4 +- .../include/G4DynamicParticleFastVector.hh | 4 +- .../management/include/G4ElectronOccupancy.hh | 4 +- .../management/include/G4IonTable.hh | 4 +- source/particles/management/include/G4Ions.hh | 22 +- .../management/include/G4IsotopeProperty.hh | 4 +- .../management/include/G4KL3DecayChannel.hh | 4 +- .../management/include/G4MuonDecayChannel.hh | 4 +- .../include/G4NeutronBetaDecayChannel.hh} | 70 +- .../management/include/G4NucleiProperties.hh | 74 +- .../include/G4NucleiPropertiesTable.hh | 50 +- .../G4NucleiPropertiesTheoreticalTable.hh | 60 +- .../management/include/G4PDGCodeChecker.hh | 4 +- .../include/G4ParticleDefinition.hh | 132 +- .../include/G4ParticleDefinition.icc | 153 + .../management/include/G4ParticleMessenger.hh | 4 +- .../management/include/G4ParticleMomentum.hh | 4 +- .../include/G4ParticlePropertyMessenger.hh | 4 +- .../management/include/G4ParticleTable.hh | 4 +- .../management/include/G4ParticleTable.icc | 4 +- .../include/G4ParticleTableIterator.hh | 4 +- .../management/include/G4ParticleWithCuts.hh | 149 +- .../include/G4PhaseSpaceDecayChannel.hh | 12 +- .../management/include/G4ShortLivedTable.hh | 4 +- .../management/include/G4VDecayChannel.hh | 4 +- .../management/include/G4VIsotopeTable.hh | 4 +- .../management/src/G4DalitzDecayChannel.cc | 4 +- .../management/src/G4DecayProducts.cc | 15 +- .../particles/management/src/G4DecayTable.cc | 4 +- .../management/src/G4DecayTableMessenger.cc | 4 +- .../management/src/G4DynamicParticle.cc | 4 +- .../management/src/G4ElectronOccupancy.cc | 4 +- source/particles/management/src/G4IonTable.cc | 19 +- source/particles/management/src/G4Ions.cc | 4 +- .../management/src/G4IsotopeProperty.cc | 4 +- .../management/src/G4KL3DecayChannel.cc | 4 +- .../management/src/G4MuonDecayChannel.cc | 4 +- .../src/G4NeutronBetaDecayChannel.cc | 178 + .../management/src/G4NucleiProperties.cc | 71 +- .../src/G4NucleiPropertiesTableA.cc | 67 +- .../src/G4NucleiPropertiesTableB.cc | 5 +- .../G4NucleiPropertiesTheoreticalTableA.cc | 60 +- .../management/src/G4PDGCodeChecker.cc | 4 +- .../management/src/G4ParticleDefinition.cc | 4 +- .../management/src/G4ParticleMessenger.cc | 6 +- .../src/G4ParticlePropertyMessenger.cc | 4 +- .../management/src/G4ParticleTable.cc | 4 +- .../management/src/G4ParticleWithCuts.cc | 369 +- .../src/G4PhaseSpaceDecayChannel.cc | 11 +- .../management/src/G4ShortLivedTable.cc | 4 +- .../management/src/G4VDecayChannel.cc | 43 +- .../shortlived/include/G4DiQuarks.hh | 4 +- .../include/G4ExcitedBaryonConstructor.hh | 4 +- .../shortlived/include/G4ExcitedBaryons.hh | 4 +- .../include/G4ExcitedDeltaConstructor.hh | 4 +- .../include/G4ExcitedLambdaConstructor.hh | 4 +- .../include/G4ExcitedMesonConstructor.hh | 4 +- .../shortlived/include/G4ExcitedMesons.hh | 4 +- .../include/G4ExcitedNucleonConstructor.hh | 4 +- .../include/G4ExcitedSigmaConstructor.hh | 4 +- .../include/G4ExcitedXiConstructor.hh | 4 +- .../particles/shortlived/include/G4Gluons.hh | 4 +- .../particles/shortlived/include/G4Quarks.hh | 4 +- .../include/G4ShortLivedConstructor.hh | 4 +- .../include/G4VShortLivedParticle.hh | 18 +- source/particles/shortlived/src/G4DiQuarks.cc | 4 +- .../src/G4ExcitedBaryonConstructor.cc | 4 +- .../shortlived/src/G4ExcitedBaryons.cc | 4 +- .../src/G4ExcitedDeltaConstructor.cc | 4 +- .../src/G4ExcitedLambdaConstructor.cc | 4 +- .../src/G4ExcitedMesonConstructor.cc | 4 +- .../shortlived/src/G4ExcitedMesons.cc | 4 +- .../src/G4ExcitedNucleonConstructor.cc | 4 +- .../src/G4ExcitedSigmaConstructor.cc | 4 +- .../shortlived/src/G4ExcitedXiConstructor.cc | 4 +- source/particles/shortlived/src/G4Gluons.cc | 4 +- source/particles/shortlived/src/G4Quarks.cc | 4 +- .../shortlived/src/G4ShortLivedConstructor.cc | 4 +- .../shortlived/src/G4VShortLivedParticle.cc | 42 +- source/persistency/GNUmakefile | 5 +- source/persistency/History | 11 + .../digits/include/G4PDCofThisEvent.ddl | 4 +- .../digits+hits/digits/include/G4PVDigit.ddl | 5 +- .../digits/include/G4PVDigitsCollection.ddl | 4 +- .../digits/include/G4PersistentDigitMan.hh | 4 +- .../digits/src/G4PDCofThisEvent.cc | 4 +- .../digits+hits/digits/src/G4PVDigit.cc | 4 +- .../digits/src/G4PVDigitsCollection.cc | 4 +- .../digits/src/G4PersistentDigitMan.cc | 4 +- .../hits/include/G4PHCofThisEvent.ddl | 4 +- .../digits+hits/hits/include/G4PVHit.ddl | 5 +- .../hits/include/G4PVHitsCollection.ddl | 4 +- .../hits/include/G4PersistentHitMan.hh | 4 +- .../digits+hits/hits/src/G4PHCofThisEvent.cc | 4 +- .../digits+hits/hits/src/G4PVHit.cc | 4 +- .../hits/src/G4PVHitsCollection.cc | 4 +- .../hits/src/G4PersistentHitMan.cc | 4 +- .../persistency/events/include/G4PEvent.ddl | 4 +- .../events/include/G4PPrimaryParticle.ddl | 4 +- .../events/include/G4PPrimaryVertex.ddl | 4 +- .../events/include/G4PersistentEventMan.hh | 7 +- source/persistency/events/src/G4PEvent.cc | 4 +- .../events/src/G4PPrimaryParticle.cc | 4 +- .../events/src/G4PPrimaryVertex.cc | 4 +- .../events/src/G4PersistentEventMan.cc | 4 +- source/persistency/geometry/GNUmakefile | 4 +- .../global/include/G4PAffineTransform.ddl | 13 +- .../geometry/global/include/G4PVSolid.ddl | 24 +- .../geometry/global/src/G4PAffineTransform.cc | 4 +- .../geometry/global/src/G4PVSolid.cc | 4 +- .../include/G4PGeometryObjectMap.ddl | 16 +- .../management/include/G4PLogicalVolume.ddl | 27 +- .../management/include/G4PPVParameterised.ddl | 26 +- .../management/include/G4PPVPlacement.ddl | 17 +- .../management/include/G4PPVReplica.ddl | 18 +- .../management/include/G4PVPhysicalVolume.ddl | 33 +- .../management/include/G4PersistentGeomMan.hh | 4 +- .../management/src/G4PGeometryObjectMap.cc | 65 +- .../management/src/G4PLogicalVolume.cc | 4 +- .../management/src/G4PPVParameterised.cc | 4 +- .../geometry/management/src/G4PPVPlacement.cc | 4 +- .../geometry/management/src/G4PPVReplica.cc | 4 +- .../management/src/G4PVPhysicalVolume.cc | 4 +- .../management/src/G4PersistentGeomMan.cc | 4 +- .../Boolean/include/G4PBooleanSolid.ddl | 13 +- .../Boolean/include/G4PDisplacedSolid.ddl | 14 +- .../Boolean/include/G4PIntersectionSolid.ddl | 13 +- .../Boolean/include/G4PSubtractionSolid.ddl | 14 +- .../solids/Boolean/include/G4PUnionSolid.ddl | 14 +- .../geometry/solids/CSG/include/G4PBox.ddl | 21 +- .../solids/CSG/include/G4PCSGSolid.ddl | 20 +- .../geometry/solids/CSG/include/G4PCons.ddl | 22 +- .../geometry/solids/CSG/include/G4PPara.ddl | 37 +- .../geometry/solids/CSG/include/G4PSphere.ddl | 24 +- .../geometry/solids/CSG/include/G4PTorus.ddl | 24 +- .../geometry/solids/CSG/include/G4PTrap.ddl | 28 +- .../geometry/solids/CSG/include/G4PTrd.ddl | 25 +- .../geometry/solids/CSG/include/G4PTubs.ddl | 23 +- .../geometry/solids/CSG/src/G4PBox.cc | 4 +- .../geometry/solids/CSG/src/G4PCSGSolid.cc | 4 +- .../geometry/solids/CSG/src/G4PCons.cc | 4 +- .../geometry/solids/CSG/src/G4PPara.cc | 4 +- .../geometry/solids/CSG/src/G4PSphere.cc | 4 +- .../geometry/solids/CSG/src/G4PTorus.cc | 4 +- .../geometry/solids/CSG/src/G4PTrap.cc | 4 +- .../geometry/solids/CSG/src/G4PTrd.cc | 4 +- .../geometry/solids/CSG/src/G4PTubs.cc | 4 +- .../solids/specific/include/G4PHype.ddl | 55 +- .../geometry/solids/specific/src/G4PHype.cc | 4 +- .../global/include/G4DatabaseTypes.hh | 6 +- .../global/include/G4PersistentSchema.hh | 10 +- .../global/include/G4PersistentTypes.hh | 11 +- .../persistency/global/include/G4Pglobals.hh | 17 +- .../global/include/G4VMaterialMap.hh | 4 +- .../global/include/G4VPersistentSubDbMan.hh | 19 +- .../global/include/G4VPersistentSubMan.hh | 17 +- .../persistency/global/src/G4VMaterialMap.cc | 4 +- .../global/src/G4VPersistentSubDbMan.cc | 4 +- .../global/src/G4VPersistentSubMan.cc | 4 +- .../include/G4PersistencyManager.hh | 4 +- .../include/G4PersistencyMessenger.hh | 4 +- .../include/G4TransactionManager.hh | 4 +- .../management/src/G4PersistencyManager.cc | 4 +- .../management/src/G4PersistencyMessenger.cc | 4 +- .../management/src/G4TransactionManager.cc | 4 +- source/persistency/run/include/G4PRun.ddl | 4 +- .../run/include/G4PersistentRunMan.hh | 4 +- source/persistency/run/src/G4PRun.cc | 4 +- .../persistency/run/src/G4PersistentRunMan.cc | 4 +- source/processes/GNUmakefile | 14 +- source/processes/decay/History | 5 +- source/processes/decay/include/G4Decay.hh | 4 +- .../processes/decay/include/G4VExtDecayer.hh | 4 +- source/processes/decay/src/G4Decay.cc | 17 +- source/processes/electromagnetic/GNUmakefile | 6 +- source/processes/electromagnetic/History | 10 +- .../integral/include/G4IMuBremsstrahlung.hh | 173 - .../integral/include/G4IMuBremsstrahlung.icc | 185 - .../integral/include/G4IMuIonisation.hh | 162 - .../integral/include/G4IMuIonisation.icc | 165 - .../integral/include/G4IMuPairProduction.hh | 202 - .../integral/include/G4IMuPairProduction.icc | 194 - .../integral/include/G4IMultipleScattering.hh | 170 - .../include/G4IMultipleScattering.icc | 282 - .../integral/include/G4IeBremsstrahlung.hh | 194 - .../integral/include/G4IeBremsstrahlung.icc | 228 - .../integral/include/G4IeIonisation.hh | 158 - .../integral/include/G4IeIonisation.icc | 177 - .../integral/include/G4IeplusAnnihilation.hh | 158 - .../integral/include/G4IeplusAnnihilation.icc | 211 - .../integral/include/G4IhIonisation.hh | 158 - .../integral/include/G4IhIonisation.icc | 159 - .../integral/include/G4VIMuEnergyLoss.hh | 294 - .../integral/include/G4VIMuEnergyLoss.icc | 160 - .../integral/include/G4VIeEnergyLoss.hh | 257 - .../integral/include/G4VIhEnergyLoss.hh | 309 - .../integral/include/G4VIhEnergyLoss.icc | 63 - .../integral/src/G4IMuBremsstrahlung.cc | 1206 - .../integral/src/G4IMuIonisation.cc | 1076 - .../integral/src/G4IMuPairProduction.cc | 1431 - .../integral/src/G4IMultipleScattering.cc | 834 - .../integral/src/G4IeBremsstrahlung.cc | 1442 - .../integral/src/G4IeIonisation.cc | 977 - .../integral/src/G4IeplusAnnihilation.cc | 907 - .../integral/src/G4IhIonisation.cc | 1097 - .../integral/src/G4VIMuEnergyLoss.cc | 1584 - .../integral/src/G4VIeEnergyLoss.cc | 1278 - .../integral/src/G4VIhEnergyLoss.cc | 1417 - .../electromagnetic/lowenergy/History | 232 +- .../lowenergy/include/G4AtomicDeexcitation.hh | 84 + .../lowenergy/include/G4AtomicShell.hh | 75 + .../lowenergy/include/G4AtomicTransition.hh | 95 + .../include/G4AtomicTransitionManager.hh | 121 + .../G4BremsstrahlungCrossSectionHandler.hh | 83 + .../include/G4BremsstrahlungParameters.hh | 103 + .../lowenergy/include/G4CompositeEMDataSet.hh | 107 + .../include/G4CrossSectionHandler.hh | 89 + .../include/G4CutsPerMaterialWarning.hh | 76 + .../lowenergy/include/G4EMDataSet.hh | 107 + .../lowenergy/include/G4FluoData.hh | 101 + .../lowenergy/include/G4LinInterpolation.hh | 80 + .../include/G4LogLogInterpolation.hh | 80 + .../include/G4LowEnergyBremsstrahlung.hh | 132 +- .../include/G4LowEnergyBremsstrahlung.icc | 143 - .../lowenergy/include/G4LowEnergyCompton.hh | 97 +- .../include/G4LowEnergyGammaConversion.hh | 104 +- .../include/G4LowEnergyGammaConversion.icc | 95 - .../include/G4LowEnergyIonisation.hh | 199 +- .../include/G4LowEnergyIonisation.icc | 87 - .../include/G4LowEnergyPhotoElectric.hh | 127 +- .../include/G4LowEnergyPhotoElectric.icc | 104 - .../include/G4LowEnergyPolarizedCompton.hh | 88 +- .../lowenergy/include/G4LowEnergyRayleigh.hh | 92 +- .../lowenergy/include/G4LowEnergyRayleigh.icc | 68 - .../lowenergy/include/G4LowEnergyUtilities.hh | 209 - .../{G4SecondLevel.hh => G4RangeNoTest.hh} | 62 +- .../{G4ThirdLevel.hh => G4RangeTest.hh} | 61 +- .../include/G4SemiLogInterpolation.hh | 80 + .../lowenergy/include/G4ShellData.hh | 90 + .../lowenergy/include/G4ShellEMDataSet.hh | 107 + .../lowenergy/include/G4ShellVacancy.hh | 80 + .../include/G4VCrossSectionHandler.hh | 152 + .../lowenergy/include/G4VDataSetAlgorithm.hh | 80 + .../lowenergy/include/G4VEMDataSet.hh | 93 + .../lowenergy/include/G4VEnergySpectrum.hh | 106 + .../{G4FirstLevel.hh => G4VRangeTest.hh} | 63 +- .../lowenergy/include/G4VeLowEnergyLoss.hh | 18 +- .../include/G4VhShellCrossSection.hh | 82 + .../include/G4eBremsstrahlungSpectrum.hh | 118 + .../G4eIonisationCrossSectionHandler.hh | 87 + .../include/G4eIonisationParameters.hh | 94 + .../include/G4eIonisationSpectrum.hh | 115 + .../lowenergy/include/G4eLowEnergyLoss.hh | 151 +- .../lowenergy/include/G4eLowEnergyLoss.icc | 4 +- .../lowenergy/include/G4hBetheBlochModel.hh | 5 + .../lowenergy/include/G4hICRU49He.hh | 3 + .../lowenergy/include/G4hICRU49Nuclear.hh | 1 + .../lowenergy/include/G4hICRU49p.hh | 3 + .../include/G4hIonEffChargeSquare.hh | 5 + .../include/G4hLowEnergyIonisation.hh | 75 +- .../include/G4hLowEnergyIonisation.icc | 98 - .../lowenergy/include/G4hLowEnergyLoss.hh | 29 +- .../lowenergy/include/G4hLowEnergyLoss.icc | 4 +- .../include/G4hNuclearStoppingModel.hh | 5 + .../include/G4hParametrisedLossModel.hh | 5 + .../lowenergy/include/G4hShellCrossSection.hh | 74 + .../lowenergy/include/G4hZiegler1977He.hh | 3 + .../include/G4hZiegler1977Nuclear.hh | 1 + .../lowenergy/include/G4hZiegler1977p.hh | 3 + .../include/G4hZiegler1985Nuclear.hh | 1 + .../lowenergy/include/G4hZiegler1985p.hh | 3 + .../lowenergy/src/G4AtomicDeexcitation.cc | 237 + .../lowenergy/src/G4AtomicShell.cc | 57 + .../lowenergy/src/G4AtomicTransition.cc | 84 + .../src/G4AtomicTransitionManager.cc | 324 + .../G4BremsstrahlungCrossSectionHandler.cc | 125 + .../src/G4BremsstrahlungParameters.cc | 295 + .../lowenergy/src/G4CompositeEMDataSet.cc | 188 + .../lowenergy/src/G4CrossSectionHandler.cc | 90 + .../lowenergy/src/G4CutsPerMaterialWarning.cc | 73 + .../lowenergy/src/G4EMDataSet.cc | 218 + .../lowenergy/src/G4FluoData.cc | 319 + .../lowenergy/src/G4LinInterpolation.cc | 72 + .../lowenergy/src/G4LogLogInterpolation.cc | 74 + .../src/G4LowEnergyBremsstrahlung.cc | 825 +- .../lowenergy/src/G4LowEnergyCompton.cc | 558 +- .../src/G4LowEnergyGammaConversion.cc | 589 +- .../lowenergy/src/G4LowEnergyIonisation.cc | 2138 +- .../lowenergy/src/G4LowEnergyPhotoElectric.cc | 883 +- .../src/G4LowEnergyPolarizedCompton.cc | 827 +- .../lowenergy/src/G4LowEnergyRayleigh.cc | 452 +- .../lowenergy/src/G4LowEnergyUtilities.cc | 244 - .../src/{G4FirstLevel.cc => G4RangeTest.cc} | 51 +- .../lowenergy/src/G4SemiLogInterpolation.cc | 72 + .../lowenergy/src/G4ShellData.cc | 245 + .../lowenergy/src/G4ShellEMDataSet.cc | 203 + .../lowenergy/src/G4ShellVacancy.cc | 127 + .../lowenergy/src/G4VCrossSectionHandler.cc | 653 + .../lowenergy/src/G4VeLowEnergyLoss.cc | 67 +- .../lowenergy/src/G4VhShellCrossSection.cc | 72 + .../src/G4eBremsstrahlungSpectrum.cc | 346 + .../src/G4eIonisationCrossSectionHandler.cc | 140 + .../lowenergy/src/G4eIonisationParameters.cc | 383 + .../lowenergy/src/G4eIonisationSpectrum.cc | 387 + .../lowenergy/src/G4eLowEnergyLoss.cc | 132 +- .../lowenergy/src/G4hIonEffChargeSquare.cc | 5 +- .../lowenergy/src/G4hLowEnergyIonisation.cc | 697 +- .../lowenergy/src/G4hLowEnergyLoss.cc | 111 +- .../lowenergy/src/G4hNuclearStoppingModel.cc | 7 +- .../lowenergy/src/G4hParametrisedLossModel.cc | 5 +- .../lowenergy/src/G4hShellCrossSection.cc | 107 + .../processes/electromagnetic/muons/History | 46 +- .../muons/include/G4MuBremsstrahlung.hh | 75 +- .../muons/include/G4MuBremsstrahlung.icc | 44 +- .../muons/include/G4MuIonisation.hh | 210 +- .../muons/include/G4MuIonisation.icc | 81 +- .../muons/include/G4MuPairProduction.hh | 75 +- .../muons/include/G4MuPairProduction.icc | 45 +- .../muons/include/G4VMuEnergyLoss.hh | 74 +- .../muons/include/G4VMuEnergyLoss.icc | 23 +- .../muons/src/G4MuBremsstrahlung.cc | 293 +- .../muons/src/G4MuIonisation.cc | 985 +- .../muons/src/G4MuPairProduction.cc | 314 +- .../muons/src/G4VMuEnergyLoss.cc | 341 +- .../electromagnetic/standard/History | 70 +- .../standard/include/G4ComptonScattering.hh | 47 +- .../standard/include/G4ComptonScattering.icc | 55 +- .../standard/include/G4GammaConversion.hh | 57 +- .../standard/include/G4GammaConversion.icc | 59 +- .../standard/include/G4PAIonisation.hh | 14 +- .../standard/include/G4PAIxSection.hh | 4 +- .../standard/include/G4PhotoElectricEffect.hh | 41 +- .../include/G4PhotoElectricEffect.icc | 46 +- .../include/G4PolarizedComptonScattering.hh | 8 +- .../include/G4SynchrotronRadiation.hh | 4 +- .../standard/include/G4VPAIenergyLoss.hh | 38 +- .../standard/include/G4VeEnergyLoss.hh | 54 +- .../standard/include/G4VeEnergyLoss.icc | 25 +- .../standard/include/G4VhEnergyLoss.hh | 159 +- .../standard/include/G4VhEnergyLoss.icc | 47 +- .../standard/include/G4eBremsstrahlung.hh | 86 +- .../standard/include/G4eBremsstrahlung.icc | 33 +- .../standard/include/G4eIonisation.hh | 153 +- .../standard/include/G4eIonisation.icc | 69 +- .../standard/include/G4eplusAnnihilation.hh | 45 +- .../standard/include/G4eplusAnnihilation.icc | 68 +- .../standard/include/G4hIonisation.hh | 178 +- .../standard/include/G4hIonisation.icc | 73 +- .../standard/src/G4ComptonScattering.cc | 234 +- .../standard/src/G4GammaConversion.cc | 330 +- .../standard/src/G4PAIonisation.cc | 147 +- .../standard/src/G4PAIxSection.cc | 56 +- .../standard/src/G4PhotoElectricEffect.cc | 204 +- .../src/G4PolarizedComptonScattering.cc | 212 +- .../standard/src/G4SynchrotronRadiation.cc | 18 +- .../standard/src/G4VPAIenergyLoss.cc | 41 +- .../standard/src/G4VeEnergyLoss.cc | 152 +- .../standard/src/G4VhEnergyLoss.cc | 897 +- .../standard/src/G4eBremsstrahlung.cc | 472 +- .../standard/src/G4eIonisation.cc | 609 +- .../standard/src/G4eplusAnnihilation.cc | 345 +- .../standard/src/G4hIonisation.cc | 1005 +- .../processes/electromagnetic/utils/History | 56 +- .../utils/include/G4EnergyLossMessenger.hh | 4 +- .../utils/include/G4EnergyLossTables.hh | 18 +- .../utils/include/G4EnergyLossTables.icc | 529 - .../utils/include/G4MultipleScattering.hh | 249 +- .../utils/include/G4MultipleScattering.icc | 197 +- .../utils/include/G4MultipleScatteringx.hh | 189 - .../utils/include/G4MultipleScatteringx.icc | 290 - .../utils/include/G4VEnergyLoss.hh | 182 +- .../utils/src/G4EnergyLossMessenger.cc | 4 +- .../utils/src/G4EnergyLossTables.cc | 500 +- .../utils/src/G4MultipleScattering.cc | 878 +- .../utils/src/G4MultipleScatteringx.cc | 643 - .../utils/src/G4VEnergyLoss.cc | 116 +- .../processes/electromagnetic/xrays/History | 17 +- .../xrays/include/G4Cerenkov.hh | 4 +- .../xrays/include/G4ForwardXrayTR.hh | 4 +- .../xrays/include/G4Scintillation.hh | 4 +- .../xrays/include/G4TransitionRadiation.hh | 4 +- .../electromagnetic/xrays/src/G4Cerenkov.cc | 15 +- .../xrays/src/G4ForwardXrayTR.cc | 50 +- .../xrays/src/G4Scintillation.cc | 17 +- .../xrays/src/G4TransitionRadiation.cc | 4 +- source/processes/hadronic/GNUmakefile | 12 +- .../include/G4CrossSectionDataStore.hh | 2 +- .../include/G4ElectroNuclearCrossSection.hh | 186 + .../include/G4HadronCaptureDataSet.hh | 2 +- .../include/G4HadronCrossSections.hh | 8 +- .../include/G4HadronElasticDataSet.hh | 2 +- .../include/G4HadronFissionDataSet.hh | 2 +- .../include/G4HadronInelasticDataSet.hh | 2 +- .../include/G4IonProtonCrossSection.hh | 2 +- .../include/G4NeutronInelasticCrossSection.hh | 2 +- .../include/G4PhotoNuclearCrossSection.hh | 295 + .../include/G4ProtonInelasticCrossSection.hh | 2 +- .../include/G4TripathiCrossSection.hh | 2 +- .../include/G4VCrossSectionDataSet.hh | 2 +- .../src/G4CrossSectionDataStore.cc | 2 +- .../src/G4ElectroNuclearCrossSection.cc | 1670 + .../src/G4HadronCaptureDataSet.cc | 6 +- .../src/G4HadronCrossSections.cc | 473 +- .../src/G4HadronElasticDataSet.cc | 6 +- .../src/G4HadronFissionDataSet.cc | 6 +- .../src/G4HadronInelasticDataSet.cc | 6 +- .../src/G4NeutronInelasticCrossSection.cc | 2 +- .../src/G4PhotoNuclearCrossSection.cc | 233 + .../src/G4ProtonInelasticCrossSection.cc | 2 +- .../src/G4TripathiCrossSection.cc | 4 +- .../src/G4VCrossSectionDataSet.cc | 6 +- .../include/G4EnergyRangeManager.hh | 6 +- .../include/G4HadronInelasticProcess.hh | 16 +- .../include/G4HadronicInteraction.hh | 27 +- .../include/G4HadronicInteractionRegistry.hh | 6 +- .../management/include/G4HadronicProcess.hh | 10 +- .../include/G4InelasticInteraction.hh | 13 +- .../management/include/G4IsoParticleChange.hh | 2 +- .../include/G4VIsotopeProduction.hh | 2 +- .../management/src/G4EnergyRangeManager.cc | 6 +- .../src/G4HadronInelasticProcess.cc | 10 +- .../management/src/G4HadronicInteraction.cc | 7 +- .../src/G4HadronicInteractionRegistry.cc | 7 +- .../management/src/G4HadronicProcess.cc | 41 +- .../management/src/G4InelasticInteraction.cc | 33 +- source/processes/hadronic/models/GNUmakefile | 12 +- .../hadronic/models/cascade/GNUmakefile | 18 + .../models/cascade/evaporation/GNUmakefile | 36 + .../cascade/evaporation/doc/evaporation.mdl | 5468 +++ .../evaporation/doc/evaporation.mdl.eps | 1256 + .../evaporation/include/G4BEChargedChannel.hh | 55 + .../include/G4BEDeuteronChannel.hh | 48 + .../include/G4BEGammaDeexcitation.hh | 59 + .../evaporation/include/G4BEHe3Channel.hh | 48 + .../evaporation/include/G4BEHe4Channel.hh | 48 + .../evaporation/include/G4BENeutronChannel.hh | 50 + .../evaporation/include/G4BEProtonChannel.hh | 48 + .../evaporation/include/G4BETritonChannel.hh | 48 + .../include/G4BertiniEvaporation.hh} | 66 +- .../include/G4BertiniEvaporationChannel.hh | 88 + .../evaporation/src/G4BEChargedChannel.cc | 202 + .../evaporation/src/G4BEDeuteronChannel.cc | 76 + .../evaporation/src/G4BEGammaDeexcitation.cc | 107 + .../cascade/evaporation/src/G4BEHe3Channel.cc | 71 + .../cascade/evaporation/src/G4BEHe4Channel.cc | 71 + .../evaporation/src/G4BENeutronChannel.cc | 201 + .../evaporation/src/G4BEProtonChannel.cc | 71 + .../evaporation/src/G4BETritonChannel.cc | 71 + .../evaporation/src/G4BertiniEvaporation.cc | 413 + .../src/G4BertiniEvaporationChannel.cc | 400 + .../models/cascade/utils}/GNUmakefile | 35 +- .../cascade/utils/include/G4LayeredNucleus.hh | 64 + .../cascade/utils/src/G4LayeredNucleus.cc} | 59 +- .../models/chiral_inv_phase_space/GNUmakefile | 18 + .../chiral_inv_phase_space/body/GNUmakefile | 32 + .../body/include/G4Chips.hh | 47 + .../body/include/G4QCHIPSWorld.hh | 84 + .../body/include/G4QCandidate.hh | 136 + .../body/include/G4QCandidateVector.hh | 41 + .../body/include/G4QChipolino.hh | 112 + .../body/include/G4QContent.hh | 317 + .../body/include/G4QDecayChan.hh | 94 + .../body/include/G4QDecayChanVector.hh | 41 + .../body/include/G4QEnvironment.hh | 107 + .../body/include/G4QHadron.hh | 192 + .../body/include/G4QHadronVector.hh | 41 + .../body/include/G4QNucleus.hh | 212 + .../body/include/G4QPDGCode.hh | 256 + .../body/include/G4QPDGCodeVector.hh | 44 + .../body/include/G4QParentCluster.hh | 131 + .../body/include/G4QParentClusterVector.hh | 43 + .../body/include/G4QParticle.hh | 129 + .../body/include/G4QParticleVector.hh | 43 + .../body/include/G4QSelector.hh | 66 + .../body/include/G4Quasmon.hh | 179 + .../body/include/G4QuasmonVector.hh | 41 + .../body/src/G4QCHIPSWorld.cc | 122 + .../body/src/G4QCandidate.cc | 141 + .../body/src/G4QChipolino.cc | 512 + .../body/src/G4QContent.cc | 1410 + .../body/src/G4QDecayChan.cc | 129 + .../body/src/G4QEnvironment.cc | 4206 +++ .../body/src/G4QHadron.cc | 536 + .../body/src/G4QNucleus.cc | 2873 ++ .../body/src/G4QPDGCode.cc | 1099 + .../body/src/G4QParentCluster.cc | 105 + .../body/src/G4QParticle.cc | 698 + .../body/src/G4QSelector.cc | 52 + .../body/src/G4Quasmon.cc | 4443 +++ .../interface/GNUmakefile | 35 + .../include/G4ChiralInvariantPhaseSpace.hh | 161 + .../include/G4ElectroNuclearReaction.hh | 98 + .../include/G4GammaNuclearReaction.hh | 55 + .../include/G4PionMinusNuclearAtRestChips.hh | 104 + .../include/G4PionMinusNuclearReaction.hh | 51 + .../include/G4ProtonAntiProtonAtRestChips.hh | 117 + .../include/G4ProtonAntiProtonReaction.hh | 55 + .../include/G4StringChipsInterface.hh | 43 + .../G4StringChipsParticleLevelInterface.hh | 54 + .../interface/src/G4StringChipsInterface.cc | 419 + .../G4StringChipsParticleLevelInterface.cc | 486 + .../models/coherent_elastic/GNUmakefile | 36 + .../models/coherent_elastic/include/G4LEnp.hh | 70 + .../coherent_elastic/include/G4LEnpData.hh | 637 + .../models/coherent_elastic/include/G4LEpp.hh | 85 + .../coherent_elastic/include/G4LEppData.hh | 1302 + .../models/coherent_elastic/src/G4LEnp.cc | 343 + .../models/coherent_elastic/src/G4LEpp.cc | 372 + .../include/G4AlphaCoulombBarrier.hh | 6 +- .../include/G4AlphaEvaporationChannel.hh | 6 +- .../include/G4AlphaEvaporationProbability.hh | 6 +- .../include/G4B9FermiFragment.hh | 6 +- .../include/G4Be8FermiFragment.hh | 6 +- .../G4CameronGilbertPairingCorrections.hh | 6 +- .../G4CameronGilbertShellCorrections.hh | 6 +- .../G4CameronShellPlusPairingCorrections.hh | 6 +- .../G4CameronTruranHilfPairingCorrections.hh | 6 +- .../G4CameronTruranHilfShellCorrections.hh | 6 +- .../include/G4CompetitiveFission.hh | 6 +- .../G4ConstantLevelDensityParameter.hh | 6 +- .../include/G4ContinuumGammaDeexcitation.hh | 2 +- .../include/G4ContinuumGammaTransition.hh | 2 +- .../de_excitation/include/G4CoulombBarrier.hh | 12 +- .../include/G4DeuteronCoulombBarrier.hh | 6 +- .../include/G4DeuteronEvaporationChannel.hh | 6 +- .../G4DeuteronEvaporationProbability.hh | 6 +- .../include/G4DiscreteGammaDeexcitation.hh | 2 +- .../include/G4DiscreteGammaTransition.hh | 2 +- .../include/G4DummyProbability.hh | 2 +- .../de_excitation/include/G4E1Probability.hh | 2 +- .../include/G4E1Probability001.hh | 2 +- .../include/G4E1Probability01.hh | 2 +- .../include/G4E1Probability10.hh | 2 +- .../include/G4E1Probability100.hh | 2 +- .../include/G4E1SingleProbability001.hh | 2 +- .../include/G4E1SingleProbability01.hh | 2 +- .../include/G4E1SingleProbability1.hh | 2 +- .../include/G4E1SingleProbability10.hh | 2 +- .../include/G4E1SingleProbability100.hh | 2 +- .../de_excitation/include/G4Evaporation.hh | 10 +- .../include/G4EvaporationChannel.hh | 6 +- .../G4EvaporationLevelDensityParameter.hh | 6 +- .../include/G4EvaporationProbability.hh | 6 +- .../include/G4ExcitationHandler.hh | 6 +- .../de_excitation/include/G4FermiBreakUp.hh | 6 +- .../include/G4FermiConfiguration.hh | 8 +- .../include/G4FermiConfigurationList.hh | 6 +- .../de_excitation/include/G4FissionBarrier.hh | 6 +- .../include/G4FissionLevelDensityParameter.hh | 6 +- .../include/G4FissionParameters.hh | 6 +- .../include/G4FissionProbability.hh | 6 +- .../include/G4He3CoulombBarrier.hh | 6 +- .../include/G4He3EvaporationChannel.hh | 6 +- .../include/G4He3EvaporationProbability.hh | 6 +- .../include/G4He5FermiFragment.hh | 6 +- .../include/G4Li5FermiFragment.hh | 6 +- .../include/G4NeutronCoulombBarrier.hh | 6 +- .../include/G4NeutronEvaporationChannel.hh | 6 +- .../G4NeutronEvaporationProbability.hh | 6 +- .../de_excitation/include/G4NuclearLevel.hh | 2 +- .../include/G4NuclearLevelManager.hh | 2 +- .../include/G4PairingCorrection.hh | 6 +- .../include/G4ParaFissionModel.hh | 2 +- .../include/G4PhotonEvaporation.hh | 2 +- .../include/G4ProtonCoulombBarrier.hh | 6 +- .../include/G4ProtonEvaporationChannel.hh | 6 +- .../include/G4ProtonEvaporationProbability.hh | 6 +- .../de_excitation/include/G4PtrLevelVector.hh | 10 +- .../de_excitation/include/G4RandGeneralTmp.hh | 2 +- .../include/G4RandGeneralTmp.icc | 2 +- .../de_excitation/include/G4Solver.hh | 6 +- .../de_excitation/include/G4Solver.icc | 4 +- .../include/G4StableFermiFragment.hh | 6 +- .../de_excitation/include/G4StatMF.hh | 6 +- .../de_excitation/include/G4StatMFChannel.hh | 8 +- .../de_excitation/include/G4StatMFFragment.hh | 6 +- .../include/G4StatMFMacroBiNucleon.hh | 6 +- .../include/G4StatMFMacroChemicalPotential.hh | 6 +- .../include/G4StatMFMacroMultiNucleon.hh | 6 +- .../include/G4StatMFMacroMultiplicity.hh | 6 +- .../include/G4StatMFMacroNucleon.hh | 10 +- .../include/G4StatMFMacroTemperature.hh | 8 +- .../include/G4StatMFMacroTetraNucleon.hh | 6 +- .../include/G4StatMFMacroTriNucleon.hh | 6 +- .../include/G4StatMFMacrocanonical.hh | 8 +- .../include/G4StatMFMicroManager.hh | 6 +- .../include/G4StatMFMicroPartition.hh | 6 +- .../include/G4StatMFMicrocanonical.hh | 6 +- .../include/G4StatMFParameters.hh | 6 +- .../include/G4TritonCoulombBarrier.hh | 6 +- .../include/G4TritonEvaporationChannel.hh | 6 +- .../include/G4TritonEvaporationProbability.hh | 6 +- .../include/G4UnstableFermiFragment.hh | 8 +- .../include/G4VCoulombBarrier.hh | 6 +- .../include/G4VEmissionProbability.hh | 6 +- .../de_excitation/include/G4VEvaporation.hh | 6 +- .../include/G4VEvaporationChannel.hh | 6 +- .../de_excitation/include/G4VFermiBreakUp.hh | 6 +- .../de_excitation/include/G4VFermiFragment.hh | 6 +- .../include/G4VFissionBarrier.hh | 6 +- .../include/G4VGammaDeexcitation.hh | 2 +- .../include/G4VGammaTransition.hh | 2 +- .../include/G4VLevelDensityParameter.hh | 6 +- .../include/G4VMultiFragmentation.hh | 6 +- .../include/G4VPhotonEvaporation.hh | 2 +- .../include/G4VStatMFEnsemble.hh | 6 +- .../include/G4VStatMFMacroCluster.hh | 6 +- .../src/G4AlphaCoulombBarrier.cc | 6 +- .../src/G4AlphaEvaporationChannel.cc | 6 +- .../src/G4AlphaEvaporationProbability.cc | 6 +- .../de_excitation/src/G4B9FermiFragment.cc | 6 +- .../de_excitation/src/G4Be8FermiFragment.cc | 6 +- .../src/G4CameronGilbertPairingCorrections.cc | 7 +- .../src/G4CameronGilbertShellCorrections.cc | 7 +- .../G4CameronShellPlusPairingCorrections.cc | 7 +- .../G4CameronTruranHilfPairingCorrections.cc | 7 +- .../G4CameronTruranHilfShellCorrections.cc | 7 +- .../de_excitation/src/G4CompetitiveFission.cc | 14 +- .../src/G4ConstantLevelDensityParameter.cc | 2 +- .../src/G4ContinuumGammaDeexcitation.cc | 2 +- .../src/G4ContinuumGammaTransition.cc | 6 +- .../de_excitation/src/G4CoulombBarrier.cc | 9 +- .../src/G4DeuteronCoulombBarrier.cc | 6 +- .../src/G4DeuteronEvaporationChannel.cc | 6 +- .../src/G4DeuteronEvaporationProbability.cc | 6 +- .../src/G4DiscreteGammaDeexcitation.cc | 2 +- .../src/G4DiscreteGammaTransition.cc | 4 +- .../de_excitation/src/G4DummyProbability.cc | 2 +- .../de_excitation/src/G4E1Probability.cc | 2 +- .../de_excitation/src/G4E1Probability001.cc | 2 +- .../de_excitation/src/G4E1Probability01.cc | 2 +- .../de_excitation/src/G4E1Probability10.cc | 2 +- .../de_excitation/src/G4E1Probability100.cc | 2 +- .../src/G4E1SingleProbability001.cc | 2 +- .../src/G4E1SingleProbability01.cc | 2 +- .../src/G4E1SingleProbability1.cc | 2 +- .../src/G4E1SingleProbability10.cc | 2 +- .../src/G4E1SingleProbability100.cc | 2 +- .../de_excitation/src/G4Evaporation.cc | 6 +- .../de_excitation/src/G4EvaporationChannel.cc | 18 +- .../src/G4EvaporationLevelDensityParameter.cc | 6 +- .../src/G4EvaporationProbability.cc | 6 +- .../de_excitation/src/G4ExcitationHandler.cc | 401 +- .../de_excitation/src/G4FermiBreakUp.cc | 6 +- .../de_excitation/src/G4FermiConfiguration.cc | 10 +- .../src/G4FermiConfigurationList.cc | 6 +- .../de_excitation/src/G4FissionBarrier.cc | 6 +- .../src/G4FissionLevelDensityParameter.cc | 6 +- .../de_excitation/src/G4FissionParameters.cc | 6 +- .../de_excitation/src/G4FissionProbability.cc | 6 +- .../de_excitation/src/G4He3CoulombBarrier.cc | 6 +- .../src/G4He3EvaporationChannel.cc | 6 +- .../src/G4He3EvaporationProbability.cc | 6 +- .../de_excitation/src/G4He5FermiFragment.cc | 6 +- .../de_excitation/src/G4Li5FermiFragment.cc | 6 +- .../src/G4NeutronCoulombBarrier.cc | 6 +- .../src/G4NeutronEvaporationChannel.cc | 6 +- .../src/G4NeutronEvaporationProbability.cc | 6 +- .../de_excitation/src/G4NuclearLevel.cc | 4 +- .../src/G4NuclearLevelManager.cc | 52 +- .../de_excitation/src/G4PairingCorrection.cc | 7 +- .../de_excitation/src/G4PhotonEvaporation.cc | 2 +- .../src/G4ProtonCoulombBarrier.cc | 6 +- .../src/G4ProtonEvaporationChannel.cc | 6 +- .../src/G4ProtonEvaporationProbability.cc | 6 +- .../de_excitation/src/G4RandGeneralTmp.cc | 2 +- .../generator/de_excitation/src/G4Solver.cc | 6 +- .../src/G4StableFermiFragment.cc | 6 +- .../generator/de_excitation/src/G4StatMF.cc | 7 +- .../de_excitation/src/G4StatMFChannel.cc | 18 +- .../de_excitation/src/G4StatMFFragment.cc | 6 +- .../src/G4StatMFMacroBiNucleon.cc | 6 +- .../src/G4StatMFMacroChemicalPotential.cc | 6 +- .../src/G4StatMFMacroMultiNucleon.cc | 6 +- .../src/G4StatMFMacroMultiplicity.cc | 6 +- .../de_excitation/src/G4StatMFMacroNucleon.cc | 6 +- .../src/G4StatMFMacroTemperature.cc | 6 +- .../src/G4StatMFMacroTetraNucleon.cc | 6 +- .../src/G4StatMFMacroTriNucleon.cc | 6 +- .../src/G4StatMFMacrocanonical.cc | 9 +- .../de_excitation/src/G4StatMFMicroManager.cc | 8 +- .../src/G4StatMFMicroPartition.cc | 18 +- .../src/G4StatMFMicrocanonical.cc | 14 +- .../de_excitation/src/G4StatMFParameters.cc | 6 +- .../src/G4TritonCoulombBarrier.cc | 6 +- .../src/G4TritonEvaporationChannel.cc | 6 +- .../src/G4TritonEvaporationProbability.cc | 6 +- .../src/G4UnstableFermiFragment.cc | 6 +- .../de_excitation/src/G4VCoulombBarrier.cc | 6 +- .../src/G4VEmissionProbability.cc | 6 +- .../de_excitation/src/G4VEvaporation.cc | 6 +- .../src/G4VEvaporationChannel.cc | 6 +- .../de_excitation/src/G4VFermiBreakUp.cc | 6 +- .../de_excitation/src/G4VFermiFragment.cc | 6 +- .../de_excitation/src/G4VFissionBarrier.cc | 6 +- .../de_excitation/src/G4VGammaDeexcitation.cc | 6 +- .../src/G4VLevelDensityParameter.cc | 6 +- .../src/G4VMultiFragmentation.cc | 6 +- .../de_excitation/src/G4VPhotonEvaporation.cc | 2 +- .../de_excitation/src/G4VStatMFEnsemble.cc | 6 +- .../src/G4VStatMFMacroCluster.cc | 6 +- .../include/G4DiffractiveHHScatterer.hh | 4 +- .../include/G4DiffractiveSplitableHadron.hh | 6 +- .../diffractive_string/include/G4FTFModel.hh | 6 +- .../include/G4FTFParticipants.hh | 12 +- .../src/G4DiffractiveHHScatterer.cc | 10 +- .../src/G4DiffractiveSplitableHadron.cc | 17 +- .../diffractive_string/src/G4FTFModel.cc | 37 +- .../src/G4FTFParticipants.cc | 15 +- .../high_energy/include/G4TheoFSGenerator.hh | 6 +- .../high_energy/src/G4TheoFSGenerator.cc | 22 +- .../generator/kinetic_model/GNUmakefile | 4 +- .../G4GeneratorPrecompoundInterface.hh | 2 +- .../src/G4GeneratorPrecompoundInterface.cc | 36 +- .../management/include/G4V3DNucleus.hh | 6 +- .../management/include/G4VAnnihilator.hh | 2 +- .../management/include/G4VCrossSectionBase.hh | 4 +- .../management/include/G4VElasticScatterer.hh | 4 +- .../include/G4VHighEnergyGenerator.hh | 6 +- .../include/G4VInElasticScatterer.hh | 2 +- .../include/G4VIntraNuclearTransportModel.hh | 6 +- .../management/include/G4VKineticNucleon.hh | 6 +- .../management/include/G4VNuclearDensity.hh | 6 +- .../management/include/G4VPreCompoundModel.hh | 6 +- .../generator/management/src/G4V3DNucleus.cc | 6 +- .../management/src/G4VAnnihilator.cc | 2 +- .../management/src/G4VCrossSectionBase.cc | 2 +- .../management/src/G4VElasticScatterer.cc | 2 +- .../management/src/G4VHighEnergyGenerator.cc | 6 +- .../management/src/G4VInElasticScatterer.cc | 2 +- .../src/G4VIntraNuclearTransportModel.cc | 6 +- .../management/src/G4VKineticNucleon.cc | 6 +- .../management/src/G4VNuclearDensity.cc | 6 +- .../management/src/G4VPreCompoundModel.cc | 6 +- .../include/G4LowEIonFragmentation.hh | 93 + .../include/G4PreCompoundAlpha.hh | 6 +- .../include/G4PreCompoundDeuteron.hh | 6 +- .../include/G4PreCompoundEmission.hh | 13 +- .../include/G4PreCompoundFragmentVector.hh | 6 +- .../include/G4PreCompoundHe3.hh | 6 +- .../include/G4PreCompoundModel.hh | 6 +- .../include/G4PreCompoundNeutron.hh | 6 +- .../include/G4PreCompoundParameters.hh | 6 +- .../include/G4PreCompoundProton.hh | 6 +- .../include/G4PreCompoundTransitions.hh | 6 +- .../include/G4PreCompoundTriton.hh | 6 +- .../include/G4VPreCompoundFragment.hh | 6 +- .../include/G4VPreCompoundIon.hh | 6 +- .../include/G4VPreCompoundNucleon.hh | 6 +- .../src/G4LowEIonFragmentation.cc | 202 + .../src/G4PreCompoundEmission.cc | 107 +- .../src/G4PreCompoundFragmentVector.cc | 6 +- .../pre_equilibrium/src/G4PreCompoundModel.cc | 37 +- .../src/G4PreCompoundNeutron.cc | 6 +- .../src/G4PreCompoundParameters.cc | 6 +- .../src/G4PreCompoundProton.cc | 6 +- .../src/G4PreCompoundTransitions.cc | 14 +- .../src/G4VPreCompoundFragment.cc | 17 +- .../pre_equilibrium/src/G4VPreCompoundIon.cc | 6 +- .../include/G4ASCCrossSection.hh | 2 +- .../include/G4AnnihilationCrossSection.hh | 2 +- .../include/G4BaryonSplitter.hh | 2 +- .../include/G4DiffractiveStringBuilder.hh | 2 +- .../include/G4GammaAnnCrossSection.hh | 3 +- .../include/G4HeavyIonParticipants.hh | 120 + .../include/G4InelasticSplitableHadron.hh | 6 +- .../include/G4MesonSplitter.hh | 2 +- .../include/G4PartonPair.hh | 2 +- .../include/G4PartonStringAnnihilator.hh | 4 +- .../include/G4QGSMParameters.hh | 2 +- .../include/G4QGSMSplitableHadron.hh | 18 +- .../quark_gluon_string/include/G4QGSModel.hh | 7 +- .../G4QGSModel.cc => include/G4QGSModel.icc} | 52 +- .../include/G4QGSParticipants.hh | 37 +- .../quark_gluon_string/include/G4SPBaryon.hh | 4 +- .../include/G4SPBaryonTable.hh | 16 +- .../include/G4SPPartonInfo.hh | 2 +- .../include/G4SoftStringBuilder.hh | 2 +- .../include/G4VAnnihilationCrossSection.hh | 2 +- .../src/G4ASCCrossSection.cc | 2 +- .../src/G4AnnihilationCrossSection.cc | 2 +- .../src/G4BaryonSplitter.cc | 2 +- .../src/G4DiffractiveStringBuilder.cc | 2 +- .../src/G4GammaAnnCrossSection.cc | 2 +- .../src/G4HeavyIonParticipants.cc | 264 + .../src/G4InelasticSplitableHadron.cc | 6 +- .../quark_gluon_string/src/G4MesonSplitter.cc | 11 +- .../quark_gluon_string/src/G4PartonPair.cc | 2 +- .../src/G4PartonStringAnnihilator.cc | 2 +- .../src/G4QGSMParameters.cc | 2 +- .../src/G4QGSMSplitableHadron.cc | 141 +- .../src/G4QGSParticipants.cc | 59 +- .../quark_gluon_string/src/G4SPBaryon.cc | 2 +- .../src/G4SoftStringBuilder.cc | 2 +- .../include/G4DiffractiveExcitation.hh | 4 +- .../string_common/include/G4EventGenerator.hh | 6 +- .../include/G4InteractionCode.hh | 6 +- .../include/G4InteractionContent.hh | 6 +- .../include/G4PomeronCrossSection.hh | 11 +- .../include/G4SingleDiffractiveExcitation.hh | 4 +- .../string_common/include/G4StringModel.hh | 6 +- .../string_common/include/G4VParticipants.hh | 6 +- .../include/G4VPartonStringModel.hh | 6 +- .../include/G4VSplitableHadron.hh | 18 +- .../include/G4VStringFragmentation.hh | 8 +- .../string_common/include/G4VertexCode.hh | 6 +- .../src/G4DiffractiveExcitation.cc | 4 +- .../string_common/src/G4EventGenerator.cc | 6 +- .../string_common/src/G4InteractionContent.cc | 6 +- .../src/G4PomeronCrossSection.cc | 23 +- .../src/G4SingleDiffractiveExcitation.cc | 6 +- .../string_common/src/G4StringModel.cc | 6 +- .../string_common/src/G4VParticipants.cc | 6 +- .../string_common/src/G4VPartonStringModel.cc | 12 +- .../string_common/src/G4VSplitableHadron.cc | 13 +- .../src/G4VStringFragmentation.cc | 6 +- .../include/G4ExcitedStringDecay.hh | 22 +- .../include/G4FragmentingString.hh | 147 + .../include/G4HadronBuilder.hh | 76 + .../include/G4LundStringFragmentation.hh | 8 +- .../include/G4QGSMFragmentation.hh | 6 +- .../include/G4VKinkyStringDecay.hh | 69 + .../include/G4VLongitudinalStringDecay.hh | 148 +- .../src/G4ExcitedStringDecay.cc | 20 +- .../src/G4FragmentingString.cc | 216 + .../src/G4HadronBuilder.cc | 273 + .../src/G4LundStringFragmentation.cc | 6 +- .../src/G4QGSMFragmentation.cc | 6 +- .../src/G4VKinkyStringDecay.cc | 114 + .../src/G4VLongitudinalStringDecay.cc | 886 +- .../generator/util/include/G4ExcitedString.hh | 23 +- .../util/include/G4ExcitedStringVector.hh | 13 +- .../util/include/G4Fancy3DNucleus.hh | 13 +- .../generator/util/include/G4FermiMomentum.hh | 6 +- .../generator/util/include/G4Fragment.hh | 9 +- .../util/include/G4FragmentVector.hh | 6 +- .../util/include/G4GeneralPhaseSpaceDecay.hh | 6 +- .../generator/util/include/G4KineticTrack.hh | 28 +- .../util/include/G4KineticTrackVector.hh | 12 +- .../util/include/G4NuclearFermiDensity.hh | 6 +- .../include/G4NuclearShellModelDensity.hh | 6 +- .../generator/util/include/G4Nucleon.hh | 6 +- .../models/generator/util/include/G4Parton.hh | 22 +- .../generator/util/include/G4PartonVector.hh | 11 +- .../util/include/G4SampleResonance.hh | 84 + .../generator/util/src/G4ExcitedString.cc | 47 +- .../generator/util/src/G4Fancy3DNucleus.cc | 67 +- .../generator/util/src/G4FermiMomentum.cc | 6 +- .../models/generator/util/src/G4Fragment.cc | 11 +- .../util/src/G4GeneralPhaseSpaceDecay.cc | 14 +- .../generator/util/src/G4KineticTrack.cc | 501 +- .../util/src/G4KineticTrackVector.cc | 18 +- .../util/src/G4NuclearFermiDensity.cc | 6 +- .../util/src/G4NuclearShellModelDensity.cc | 6 +- .../models/generator/util/src/G4Nucleon.cc | 6 +- .../models/generator/util/src/G4Parton.cc | 70 +- .../generator/util/src/G4SampleResonance.cc | 140 + .../include/G4HEAntiKaonZeroInelastic.hh | 6 +- .../include/G4HEAntiLambdaInelastic.hh | 6 +- .../include/G4HEAntiNeutronInelastic.hh | 6 +- .../include/G4HEAntiOmegaMinusInelastic.hh | 6 +- .../include/G4HEAntiProtonInelastic.hh | 6 +- .../include/G4HEAntiSigmaMinusInelastic.hh | 6 +- .../include/G4HEAntiSigmaPlusInelastic.hh | 6 +- .../include/G4HEAntiSigmaZeroInelastic.hh | 6 +- .../include/G4HEAntiXiMinusInelastic.hh | 6 +- .../include/G4HEAntiXiZeroInelastic.hh | 6 +- .../high_energy/include/G4HEInelastic.hh | 6 +- .../include/G4HEKaonMinusInelastic.hh | 6 +- .../include/G4HEKaonPlusInelastic.hh | 6 +- .../include/G4HEKaonZeroInelastic.hh | 6 +- .../include/G4HEKaonZeroLongInelastic.hh | 6 +- .../include/G4HEKaonZeroShortInelastic.hh | 6 +- .../include/G4HELambdaInelastic.hh | 6 +- .../include/G4HENeutronInelastic.hh | 6 +- .../include/G4HEOmegaMinusInelastic.hh | 6 +- .../include/G4HEPionMinusInelastic.hh | 6 +- .../include/G4HEPionPlusInelastic.hh | 6 +- .../models/high_energy/include/G4HEPlot.hh | 6 +- .../include/G4HEProtonInelastic.hh | 6 +- .../include/G4HESigmaMinusInelastic.hh | 6 +- .../include/G4HESigmaPlusInelastic.hh | 6 +- .../include/G4HESigmaZeroInelastic.hh | 6 +- .../models/high_energy/include/G4HEVector.hh | 6 +- .../include/G4HEXiMinusInelastic.hh | 6 +- .../include/G4HEXiZeroInelastic.hh | 6 +- .../src/G4HEAntiKaonZeroInelastic.cc | 12 +- .../src/G4HEAntiLambdaInelastic.cc | 14 +- .../src/G4HEAntiNeutronInelastic.cc | 12 +- .../src/G4HEAntiOmegaMinusInelastic.cc | 14 +- .../src/G4HEAntiProtonInelastic.cc | 12 +- .../src/G4HEAntiSigmaMinusInelastic.cc | 12 +- .../src/G4HEAntiSigmaPlusInelastic.cc | 14 +- .../src/G4HEAntiSigmaZeroInelastic.cc | 6 +- .../src/G4HEAntiXiMinusInelastic.cc | 14 +- .../src/G4HEAntiXiZeroInelastic.cc | 14 +- .../models/high_energy/src/G4HEInelastic.cc | 78 +- .../high_energy/src/G4HEKaonMinusInelastic.cc | 12 +- .../high_energy/src/G4HEKaonPlusInelastic.cc | 12 +- .../high_energy/src/G4HEKaonZeroInelastic.cc | 12 +- .../src/G4HEKaonZeroLongInelastic.cc | 6 +- .../src/G4HEKaonZeroShortInelastic.cc | 6 +- .../high_energy/src/G4HELambdaInelastic.cc | 14 +- .../high_energy/src/G4HENeutronInelastic.cc | 12 +- .../src/G4HEOmegaMinusInelastic.cc | 14 +- .../high_energy/src/G4HEPionMinusInelastic.cc | 14 +- .../high_energy/src/G4HEPionPlusInelastic.cc | 12 +- .../models/high_energy/src/G4HEPlot.cc | 6 +- .../high_energy/src/G4HEProtonInelastic.cc | 12 +- .../src/G4HESigmaMinusInelastic.cc | 12 +- .../high_energy/src/G4HESigmaPlusInelastic.cc | 14 +- .../high_energy/src/G4HESigmaZeroInelastic.cc | 8 +- .../models/high_energy/src/G4HEVector.cc | 6 +- .../high_energy/src/G4HEXiMinusInelastic.cc | 12 +- .../high_energy/src/G4HEXiZeroInelastic.cc | 14 +- .../include/G4ElementIsoCrossSections.hh | 2 +- .../include/G4ElementIsoCrossSections.icc | 2 +- .../include/G4IsoProdCrossSections.hh | 2 +- .../include/G4NeutronIsoIsoCrossSections.hh | 2 +- .../include/G4NeutronIsotopeProduction.hh | 4 +- .../include/G4ProtonIsoIsoCrossSections.hh | 2 +- .../include/G4ProtonIsotopeProduction.hh | 2 +- .../src/G4IsoProdCrossSection.cc | 2 +- .../src/G4NeutronIsoIsoCrossSections.cc | 2 +- .../src/G4NeutronIsotopeProduction.cc | 15 +- .../models/low_energy/include/G4LCapture.hh | 6 +- .../low_energy/include/G4LEAlphaInelastic.hh | 6 +- .../include/G4LEAntiLambdaInelastic.hh | 6 +- .../include/G4LEAntiNeutronInelastic.hh | 6 +- .../include/G4LEAntiOmegaMinusInelastic.hh | 6 +- .../include/G4LEAntiProtonInelastic.hh | 6 +- .../include/G4LEAntiSigmaMinusInelastic.hh | 6 +- .../include/G4LEAntiSigmaPlusInelastic.hh | 6 +- .../include/G4LEAntiXiMinusInelastic.hh | 6 +- .../include/G4LEAntiXiZeroInelastic.hh | 6 +- .../include/G4LEDeuteronInelastic.hh | 6 +- .../include/G4LEKaonMinusInelastic.hh | 6 +- .../include/G4LEKaonPlusInelastic.hh | 6 +- .../include/G4LEKaonZeroLInelastic.hh | 6 +- .../include/G4LEKaonZeroSInelastic.hh | 6 +- .../low_energy/include/G4LELambdaInelastic.hh | 6 +- .../include/G4LENeutronInelastic.hh | 2 +- .../include/G4LEOmegaMinusInelastic.hh | 6 +- .../include/G4LEPionMinusInelastic.hh | 6 +- .../include/G4LEPionPlusInelastic.hh | 6 +- .../low_energy/include/G4LEProtonInelastic.hh | 6 +- .../include/G4LESigmaMinusInelastic.hh | 6 +- .../include/G4LESigmaPlusInelastic.hh | 6 +- .../low_energy/include/G4LETritonInelastic.hh | 6 +- .../include/G4LEXiMinusInelastic.hh | 6 +- .../low_energy/include/G4LEXiZeroInelastic.hh | 6 +- .../models/low_energy/include/G4LElastic.hh | 6 +- .../models/low_energy/include/G4LFission.hh | 6 +- .../models/low_energy/src/G4LCapture.cc | 9 +- .../low_energy/src/G4LEAlphaInelastic.cc | 28 +- .../low_energy/src/G4LEAntiLambdaInelastic.cc | 6 +- .../src/G4LEAntiNeutronInelastic.cc | 8 +- .../src/G4LEAntiOmegaMinusInelastic.cc | 8 +- .../low_energy/src/G4LEAntiProtonInelastic.cc | 8 +- .../src/G4LEAntiSigmaMinusInelastic.cc | 6 +- .../src/G4LEAntiSigmaPlusInelastic.cc | 6 +- .../src/G4LEAntiXiMinusInelastic.cc | 6 +- .../low_energy/src/G4LEAntiXiZeroInelastic.cc | 6 +- .../low_energy/src/G4LEDeuteronInelastic.cc | 26 +- .../low_energy/src/G4LEKaonMinusInelastic.cc | 7 +- .../low_energy/src/G4LEKaonPlusInelastic.cc | 7 +- .../low_energy/src/G4LEKaonZeroLInelastic.cc | 7 +- .../low_energy/src/G4LEKaonZeroSInelastic.cc | 6 +- .../low_energy/src/G4LELambdaInelastic.cc | 6 +- .../low_energy/src/G4LENeutronInelastic.cc | 20 +- .../low_energy/src/G4LEOmegaMinusInelastic.cc | 10 +- .../low_energy/src/G4LEPionMinusInelastic.cc | 4 +- .../low_energy/src/G4LEPionPlusInelastic.cc | 8 +- .../low_energy/src/G4LEProtonInelastic.cc | 8 +- .../low_energy/src/G4LESigmaMinusInelastic.cc | 6 +- .../low_energy/src/G4LESigmaPlusInelastic.cc | 6 +- .../low_energy/src/G4LETritonInelastic.cc | 22 +- .../low_energy/src/G4LEXiMinusInelastic.cc | 6 +- .../low_energy/src/G4LEXiZeroInelastic.cc | 6 +- .../models/low_energy/src/G4LElastic.cc | 9 +- .../models/low_energy/src/G4LFission.cc | 9 +- .../include/G4InterpolationIterator.hh | 6 +- .../include/G4InterpolationManager.hh | 6 +- .../include/G4InterpolationScheme.hh | 6 +- .../include/G4NeutronHP2AInelasticFS.hh | 6 +- .../include/G4NeutronHP2N2AInelasticFS.hh | 6 +- .../include/G4NeutronHP2NAInelasticFS.hh | 6 +- .../include/G4NeutronHP2NDInelasticFS.hh | 6 +- .../include/G4NeutronHP2NInelasticFS.hh | 6 +- .../include/G4NeutronHP2NPInelasticFS.hh | 6 +- .../include/G4NeutronHP2PInelasticFS.hh | 6 +- .../include/G4NeutronHP3AInelasticFS.hh | 6 +- .../include/G4NeutronHP3NAInelasticFS.hh | 6 +- .../include/G4NeutronHP3NInelasticFS.hh | 6 +- .../include/G4NeutronHP3NPInelasticFS.hh | 6 +- .../include/G4NeutronHP4NInelasticFS.hh | 6 +- .../include/G4NeutronHPAInelasticFS.hh | 6 +- .../neutron_hp/include/G4NeutronHPAngular.hh | 6 +- .../neutron_hp/include/G4NeutronHPAngularP.hh | 6 +- .../include/G4NeutronHPArbitaryTab.hh | 8 +- .../neutron_hp/include/G4NeutronHPCapture.hh | 6 +- .../include/G4NeutronHPCaptureData.hh | 6 +- .../include/G4NeutronHPCaptureFS.hh | 6 +- .../neutron_hp/include/G4NeutronHPChannel.hh | 7 +- .../include/G4NeutronHPChannelList.hh | 6 +- .../include/G4NeutronHPContAngularPar.hh | 6 +- .../include/G4NeutronHPContEnergyAngular.hh | 6 +- .../include/G4NeutronHPD2AInelasticFS.hh | 6 +- .../include/G4NeutronHPDAInelasticFS.hh | 6 +- .../include/G4NeutronHPDInelasticFS.hh | 6 +- .../neutron_hp/include/G4NeutronHPData.hh | 6 +- .../include/G4NeutronHPDataPoint.hh | 6 +- .../neutron_hp/include/G4NeutronHPDataUsed.hh | 2 +- .../include/G4NeutronHPDeExGammas.hh | 16 +- .../include/G4NeutronHPDiscreteTwoBody.hh | 6 +- .../neutron_hp/include/G4NeutronHPElastic.hh | 6 +- .../include/G4NeutronHPElasticData.hh | 6 +- .../include/G4NeutronHPElasticFS.hh | 6 +- .../include/G4NeutronHPElementData.hh | 6 +- .../include/G4NeutronHPEnAngCorrelation.hh | 6 +- .../include/G4NeutronHPEnergyDistribution.hh | 6 +- .../include/G4NeutronHPEvapSpectrum.hh | 6 +- .../include/G4NeutronHPFCFissionFS.hh | 6 +- .../include/G4NeutronHPFSFissionFS.hh | 6 +- .../include/G4NeutronHPFastLegendre.hh | 8 +- .../neutron_hp/include/G4NeutronHPField.hh | 6 +- .../include/G4NeutronHPFieldPoint.hh | 6 +- .../include/G4NeutronHPFinalState.hh | 6 +- .../neutron_hp/include/G4NeutronHPFission.hh | 6 +- .../include/G4NeutronHPFissionBaseFS.hh | 6 +- .../include/G4NeutronHPFissionData.hh | 6 +- .../include/G4NeutronHPFissionERelease.hh | 6 +- .../include/G4NeutronHPFissionFS.hh | 6 +- .../include/G4NeutronHPFissionSpectrum.hh | 6 +- .../neutron_hp/include/G4NeutronHPGamma.hh | 8 +- .../neutron_hp/include/G4NeutronHPHash.hh | 7 +- .../include/G4NeutronHPHe3InelasticFS.hh | 6 +- .../include/G4NeutronHPInelastic.hh | 6 +- .../include/G4NeutronHPInelasticBaseFS.hh | 6 +- .../include/G4NeutronHPInelasticCompFS.hh | 6 +- .../include/G4NeutronHPInelasticData.hh | 6 +- .../include/G4NeutronHPInterpolator.hh | 6 +- .../neutron_hp/include/G4NeutronHPIsoData.hh | 6 +- .../include/G4NeutronHPIsotropic.hh | 6 +- .../include/G4NeutronHPKallbachMannSyst.hh | 6 +- .../include/G4NeutronHPLCFissionFS.hh | 6 +- .../include/G4NeutronHPLabAngularEnergy.hh | 6 +- .../include/G4NeutronHPLegendreStore.hh | 6 +- .../include/G4NeutronHPLegendreTable.hh | 6 +- .../neutron_hp/include/G4NeutronHPLevel.hh | 6 +- .../neutron_hp/include/G4NeutronHPList.hh | 9 +- .../include/G4NeutronHPMadlandNixSpectrum.hh | 6 +- .../include/G4NeutronHPN2AInelasticFS.hh | 6 +- .../include/G4NeutronHPN2PInelasticFS.hh | 6 +- .../include/G4NeutronHPN3AInelasticFS.hh | 6 +- .../include/G4NeutronHPNAInelasticFS.hh | 6 +- .../include/G4NeutronHPNBodyPhaseSpace.hh | 6 +- .../include/G4NeutronHPND2AInelasticFS.hh | 6 +- .../include/G4NeutronHPNDInelasticFS.hh | 6 +- .../include/G4NeutronHPNHe3InelasticFS.hh | 6 +- .../include/G4NeutronHPNInelasticFS.hh | 6 +- .../include/G4NeutronHPNPAInelasticFS.hh | 6 +- .../include/G4NeutronHPNPInelasticFS.hh | 6 +- .../include/G4NeutronHPNT2AInelasticFS.hh | 6 +- .../include/G4NeutronHPNTInelasticFS.hh | 6 +- .../include/G4NeutronHPNXInelasticFS.hh | 6 +- .../neutron_hp/include/G4NeutronHPNames.hh | 24 +- .../include/G4NeutronHPNeutronYield.hh | 6 +- .../include/G4NeutronHPPAInelasticFS.hh | 6 +- .../include/G4NeutronHPPDInelasticFS.hh | 6 +- .../include/G4NeutronHPPInelasticFS.hh | 6 +- .../include/G4NeutronHPPTInelasticFS.hh | 6 +- .../neutron_hp/include/G4NeutronHPPartial.hh | 7 +- .../include/G4NeutronHPPhotonDist.hh | 6 +- .../include/G4NeutronHPPhotonXSection.hh | 6 +- .../include/G4NeutronHPPolynomExpansion.hh | 6 +- .../neutron_hp/include/G4NeutronHPProduct.hh | 6 +- .../include/G4NeutronHPSCFissionFS.hh | 6 +- .../include/G4NeutronHPSimpleEvapSpectrum.hh | 6 +- .../include/G4NeutronHPT2AInelasticFS.hh | 6 +- .../include/G4NeutronHPTCFissionFS.hh | 6 +- .../include/G4NeutronHPTInelasticFS.hh | 6 +- .../include/G4NeutronHPThermalBoost.hh | 2 +- .../neutron_hp/include/G4NeutronHPVector.hh | 10 +- .../include/G4NeutronHPWattSpectrum.hh | 6 +- .../neutron_hp/include/G4VNeutronHPEDis.hh | 6 +- .../include/G4VNeutronHPEnergyAngular.hh | 6 +- .../neutron_hp/src/G4InterpolationManager.cc | 2 +- .../src/G4NeutronHP2AInelasticFS.cc | 2 +- .../src/G4NeutronHP2N2AInelasticFS.cc | 2 +- .../src/G4NeutronHP2NAInelasticFS.cc | 2 +- .../src/G4NeutronHP2NDInelasticFS.cc | 2 +- .../src/G4NeutronHP2NInelasticFS.cc | 2 +- .../src/G4NeutronHP2NPInelasticFS.cc | 2 +- .../src/G4NeutronHP2PInelasticFS.cc | 2 +- .../src/G4NeutronHP3AInelasticFS.cc | 2 +- .../src/G4NeutronHP3NAInelasticFS.cc | 2 +- .../src/G4NeutronHP3NInelasticFS.cc | 2 +- .../src/G4NeutronHP3NPInelasticFS.cc | 2 +- .../src/G4NeutronHP4NInelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPAInelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPAngular.cc | 5 +- .../neutron_hp/src/G4NeutronHPArbitaryTab.cc | 2 +- .../neutron_hp/src/G4NeutronHPCapture.cc | 4 +- .../neutron_hp/src/G4NeutronHPCaptureData.cc | 2 +- .../neutron_hp/src/G4NeutronHPCaptureFS.cc | 16 +- .../neutron_hp/src/G4NeutronHPChannel.cc | 5 +- .../neutron_hp/src/G4NeutronHPChannelList.cc | 2 +- .../src/G4NeutronHPContAngularPar.cc | 2 +- .../src/G4NeutronHPContEnergyAngular.cc | 4 +- .../src/G4NeutronHPD2AInelasticFS.cc | 2 +- .../src/G4NeutronHPDAInelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPDInelasticFS.cc | 2 +- .../models/neutron_hp/src/G4NeutronHPData.cc | 8 +- .../neutron_hp/src/G4NeutronHPDeExGammas.cc | 2 +- .../src/G4NeutronHPDiscreteTwoBody.cc | 2 +- .../neutron_hp/src/G4NeutronHPElastic.cc | 5 +- .../neutron_hp/src/G4NeutronHPElasticData.cc | 2 +- .../neutron_hp/src/G4NeutronHPElasticFS.cc | 21 +- .../neutron_hp/src/G4NeutronHPElementData.cc | 5 +- .../src/G4NeutronHPEnAngCorrelation.cc | 14 +- .../neutron_hp/src/G4NeutronHPFCFissionFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPFSFissionFS.cc | 18 +- .../neutron_hp/src/G4NeutronHPFastLegendre.cc | 2 +- .../src/G4NeutronHPFastLegendre_14.cc | 2 +- .../src/G4NeutronHPFastLegendre_18.cc | 2 +- .../src/G4NeutronHPFastLegendre_21.cc | 2 +- .../src/G4NeutronHPFastLegendre_24.cc | 2 +- .../src/G4NeutronHPFastLegendre_26.cc | 2 +- .../src/G4NeutronHPFastLegendre_28.cc | 2 +- .../src/G4NeutronHPFastLegendre_30.cc | 2 +- .../models/neutron_hp/src/G4NeutronHPField.cc | 3 +- .../neutron_hp/src/G4NeutronHPFieldPoint.cc | 2 +- .../neutron_hp/src/G4NeutronHPFission.cc | 8 +- .../src/G4NeutronHPFissionBaseFS.cc | 5 +- .../neutron_hp/src/G4NeutronHPFissionData.cc | 2 +- .../neutron_hp/src/G4NeutronHPFissionFS.cc | 34 +- .../models/neutron_hp/src/G4NeutronHPGamma.cc | 2 +- .../src/G4NeutronHPHe3InelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPInelastic.cc | 9 +- .../src/G4NeutronHPInelasticBaseFS.cc | 60 +- .../src/G4NeutronHPInelasticCompFS.cc | 68 +- .../src/G4NeutronHPInelasticData.cc | 2 +- .../neutron_hp/src/G4NeutronHPInterpolator.cc | 2 +- .../neutron_hp/src/G4NeutronHPIsoData.cc | 3 +- .../neutron_hp/src/G4NeutronHPIsotropic.cc | 2 +- .../src/G4NeutronHPKallbachMannSyst.cc | 2 +- .../neutron_hp/src/G4NeutronHPLCFissionFS.cc | 2 +- .../src/G4NeutronHPLabAngularEnergy.cc | 4 +- .../src/G4NeutronHPLegendreStore.cc | 15 +- .../models/neutron_hp/src/G4NeutronHPLevel.cc | 2 +- .../models/neutron_hp/src/G4NeutronHPList.cc | 5 +- .../src/G4NeutronHPMadlandNixSpectrum.cc | 5 +- .../src/G4NeutronHPN2AInelasticFS.cc | 2 +- .../src/G4NeutronHPN2PInelasticFS.cc | 2 +- .../src/G4NeutronHPN3AInelasticFS.cc | 2 +- .../src/G4NeutronHPNAInelasticFS.cc | 2 +- .../src/G4NeutronHPNBodyPhaseSpace.cc | 8 +- .../src/G4NeutronHPND2AInelasticFS.cc | 2 +- .../src/G4NeutronHPNDInelasticFS.cc | 2 +- .../src/G4NeutronHPNHe3InelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPNInelasticFS.cc | 2 +- .../src/G4NeutronHPNPAInelasticFS.cc | 2 +- .../src/G4NeutronHPNPInelasticFS.cc | 2 +- .../src/G4NeutronHPNT2AInelasticFS.cc | 2 +- .../src/G4NeutronHPNTInelasticFS.cc | 2 +- .../src/G4NeutronHPNXInelasticFS.cc | 2 +- .../models/neutron_hp/src/G4NeutronHPNames.cc | 113 +- .../src/G4NeutronHPPAInelasticFS.cc | 2 +- .../src/G4NeutronHPPDInelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPPInelasticFS.cc | 2 +- .../src/G4NeutronHPPTInelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPPartial.cc | 5 +- .../neutron_hp/src/G4NeutronHPPhotonDist.cc | 38 +- .../neutron_hp/src/G4NeutronHPProduct.cc | 10 +- .../neutron_hp/src/G4NeutronHPSCFissionFS.cc | 2 +- .../src/G4NeutronHPT2AInelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPTCFissionFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPTInelasticFS.cc | 2 +- .../neutron_hp/src/G4NeutronHPVector.cc | 24 +- .../neutron_hp/src/G4NeutronHPWattSpectrum.cc | 2 +- .../hadronic/models/radiative_decay/History | 50 + .../include/G4AlphaDecayChannel.hh | 2 +- .../include/G4BetaFermiFunction.hh | 2 +- .../include/G4BetaMinusDecayChannel.hh | 2 +- .../include/G4BetaPlusDecayChannel.hh | 2 +- .../include/G4ITDecayChannel.hh | 2 +- .../include/G4KshellECDecayChannel.hh | 2 +- .../include/G4LshellECDecayChannel.hh | 2 +- .../include/G4NuclearDecayChannel.hh | 2 +- .../include/G4NucleusLimits.hh | 2 +- .../include/G4ParticleChangeForRadDecay.hh | 103 - .../include/G4RIsotopeTable.hh | 2 +- .../include/G4RadioactiveDecay.hh | 8 +- .../include/G4RadioactiveDecayMode.hh | 2 +- .../include/G4RadioactiveDecayRate.hh | 2 +- .../include/G4RadioactiveDecayRateVector.hh | 2 +- .../include/G4RadioactiveDecaymessenger.hh | 2 +- .../include/G4UIcmdWithNucleusLimits.hh | 2 +- .../include/G4UserLimitsForRD.hh | 2 +- .../src/G4BetaFermiFunction.cc | 2 +- .../src/G4NuclearDecayChannel.cc | 10 +- .../radiative_decay/src/G4NucleusLimits.cc | 2 +- .../radiative_decay/src/G4RIsotopeTable.cc | 26 +- .../radiative_decay/src/G4RadioactiveDecay.cc | 35 +- .../src/G4RadioactiveDecayMode.cc | 2 +- .../src/G4RadioactiveDecayRate.cc | 2 +- .../src/G4RadioactiveDecayRateVector.cc | 2 +- .../src/G4RadioactiveDecaymessenger.cc | 2 +- .../src/G4UIcmdWithNucleusLimits.cc | 2 +- .../include/G4AlphaInelasticProcess.hh | 6 +- .../include/G4AntiLambdaInelasticProcess.hh | 6 +- .../include/G4AntiNeutronInelasticProcess.hh | 6 +- .../G4AntiOmegaMinusInelasticProcess.hh | 6 +- .../include/G4AntiProtonInelasticProcess.hh | 6 +- .../G4AntiSigmaMinusInelasticProcess.hh | 6 +- .../G4AntiSigmaPlusInelasticProcess.hh | 6 +- .../include/G4AntiXiMinusInelasticProcess.hh | 6 +- .../include/G4AntiXiZeroInelasticProcess.hh | 6 +- .../include/G4DeuteronInelasticProcess.hh | 6 +- .../include/G4ElectronNuclearProcess.hh | 63 + .../include/G4HadronCaptureProcess.hh | 6 +- .../include/G4HadronElasticProcess.hh | 6 +- .../include/G4HadronFissionProcess.hh | 6 +- .../include/G4IonInelasticProcess.hh | 2 +- .../include/G4KaonMinusInelasticProcess.hh | 6 +- .../include/G4KaonPlusInelasticProcess.hh | 6 +- .../include/G4KaonZeroLInelasticProcess.hh | 6 +- .../include/G4KaonZeroSInelasticProcess.hh | 6 +- .../include/G4LambdaInelasticProcess.hh | 6 +- .../include/G4NeutronInelasticProcess.hh | 6 +- .../include/G4OmegaMinusInelasticProcess.hh | 6 +- .../include/G4PhotoNuclearProcess.hh | 63 + .../include/G4PionMinusInelasticProcess.hh | 6 +- .../include/G4PionPlusInelasticProcess.hh | 6 +- .../include/G4PositronNuclearProcess.hh | 64 + .../include/G4ProtonInelasticProcess.hh | 6 +- .../include/G4SigmaMinusInelasticProcess.hh | 6 +- .../include/G4SigmaPlusInelasticProcess.hh | 6 +- .../include/G4TritonInelasticProcess.hh | 6 +- .../include/G4XiMinusInelasticProcess.hh | 6 +- .../include/G4XiZeroInelasticProcess.hh | 6 +- .../processes/src/G4HadronCaptureProcess.cc | 33 +- .../processes/src/G4HadronElasticProcess.cc | 8 +- .../processes/src/G4HadronFissionProcess.cc | 72 +- .../G4AntiNeutronAnnihilationAtRest.hh | 6 +- .../include/G4AntiProtonAnnihilationAtRest.hh | 6 +- .../include/G4DistributionGenerator.hh | 16 +- .../stopping/include/G4KaonMinusAbsorption.hh | 6 +- .../include/G4KaonMinusAbsorptionAtRest.hh | 9 +- .../include/G4MuMinusCaptureCascade.hh | 2 +- .../include/G4MuonMinusCaptureAtRest.hh | 6 +- .../include/G4NeutronCaptureAtRest.hh | 6 +- .../include/G4PiMinusAbsorptionAtRest.hh | 6 +- .../include/G4PiMinusStopAbsorption.hh | 8 +- .../stopping/include/G4PiMinusStopAl.hh | 16 +- .../stopping/include/G4PiMinusStopC.hh | 10 +- .../stopping/include/G4PiMinusStopCo.hh | 16 +- .../stopping/include/G4PiMinusStopCu.hh | 16 +- .../stopping/include/G4PiMinusStopLi.hh | 16 +- .../stopping/include/G4PiMinusStopMaterial.hh | 17 +- .../stopping/include/G4PiMinusStopN.hh | 16 +- .../stopping/include/G4PiMinusStopO.hh | 16 +- .../stopping/include/G4PiMinusStopPb.hh | 16 +- .../stopping/include/G4PiMinusStopTa.hh | 16 +- .../include/G4PionMinusAbsorptionAtRest.hh | 6 +- .../stopping/include/G4StopDeexcitation.hh | 6 +- .../include/G4StopDeexcitationAlgorithm.hh | 6 +- .../include/G4StopDummyDeexcitation.hh | 6 +- .../stopping/include/G4StopElementSelector.hh | 2 +- .../include/G4StopTheoDeexcitation.hh | 6 +- .../src/G4AntiNeutronAnnihilationAtRest.cc | 14 +- .../src/G4AntiProtonAnnihilationAtRest.cc | 14 +- .../stopping/src/G4DistributionGenerator.cc | 44 +- .../stopping/src/G4KaonMinusAbsorption.cc | 14 +- .../src/G4KaonMinusAbsorptionAtRest.cc | 48 +- .../stopping/src/G4MuMinusCaptureCascade.cc | 6 +- .../stopping/src/G4MuonMinusCaptureAtRest.cc | 6 +- .../stopping/src/G4NeutronCaptureAtRest.cc | 14 +- .../stopping/src/G4PiMinusAbsorptionAtRest.cc | 34 +- .../stopping/src/G4PiMinusStopAbsorption.cc | 30 +- .../hadronic/stopping/src/G4PiMinusStopAl.cc | 34 +- .../hadronic/stopping/src/G4PiMinusStopC.cc | 34 +- .../hadronic/stopping/src/G4PiMinusStopCo.cc | 34 +- .../hadronic/stopping/src/G4PiMinusStopCu.cc | 34 +- .../hadronic/stopping/src/G4PiMinusStopLi.cc | 34 +- .../stopping/src/G4PiMinusStopMaterial.cc | 30 +- .../hadronic/stopping/src/G4PiMinusStopN.cc | 34 +- .../hadronic/stopping/src/G4PiMinusStopO.cc | 34 +- .../hadronic/stopping/src/G4PiMinusStopPb.cc | 34 +- .../hadronic/stopping/src/G4PiMinusStopTa.cc | 34 +- .../src/G4PionMinusAbsorptionAtRest.cc | 16 +- .../stopping/src/G4StopDeexcitation.cc | 10 +- .../stopping/src/G4StopDummyDeexcitation.cc | 9 +- .../stopping/src/G4StopElementSelector.cc | 12 +- .../stopping/src/G4StopTheoDeexcitation.cc | 9 +- .../hadronic/util/include/DumpFrame.hh | 2 +- .../util/include/G4DynamicParticleVector.hh | 20 +- .../util/include/G4GHEKinematicsVector.hh | 6 +- .../hadronic/util/include/G4IsoResult.hh | 4 +- .../hadronic/util/include/G4LightMedia.hh | 6 +- .../hadronic/util/include/G4Nucleus.hh | 7 +- .../processes/hadronic/util/include/G4Pair.hh | 2 +- .../hadronic/util/include/G4ParticleVector.hh | 19 +- .../util/include/G4ReactionDynamics.hh | 10 +- .../util/include/G4ReactionKinematics.hh | 6 +- .../util/include/G4ReactionProduct.hh | 6 +- .../util/include/G4ReactionProductVector.hh | 20 +- .../hadronic/util/include/G4StableIsotopes.hh | 6 +- .../hadronic/util/src/G4IsoResult.cc | 25 + .../hadronic/util/src/G4LightMedia.cc | 44 +- .../processes/hadronic/util/src/G4Nucleus.cc | 13 +- .../hadronic/util/src/G4ReactionDynamics.cc | 144 +- .../hadronic/util/src/G4ReactionKinematics.cc | 6 +- .../hadronic/util/src/G4ReactionProduct.cc | 6 +- .../hadronic/util/src/G4StableIsotopes.cc | 6 +- source/processes/management/History | 21 +- .../include/G4IVContinuousDiscreteProcess.hh | 4 +- .../include/G4IVRestDiscreteProcess.hh | 4 +- .../management/include/G4ParticleTypes.hh | 4 +- .../management/include/G4ProcTblElement.hh | 4 +- .../management/include/G4ProcTblElement.icc | 4 +- .../management/include/G4ProcessAttribute.hh | 4 +- .../management/include/G4ProcessManager.hh | 4 +- .../management/include/G4ProcessManager.icc | 4 +- .../include/G4ProcessManagerMessenger.hh | 4 +- .../management/include/G4ProcessTable.hh | 4 +- .../management/include/G4ProcessTable.icc | 4 +- .../include/G4ProcessTableMessenger.hh | 4 +- .../management/include/G4ProcessType.hh | 4 +- .../management/include/G4ProcessVector.hh | 5 +- .../management/include/G4ProcessVector.icc | 9 +- .../include/G4VContinuousDiscreteProcess.hh | 4 +- .../include/G4VContinuousProcess.hh | 4 +- .../management/include/G4VDiscreteProcess.hh | 4 +- .../management/include/G4VProcess.hh | 44 +- .../G4VRestContinuousDiscreteProcess.hh | 4 +- .../include/G4VRestContinuousProcess.hh | 4 +- .../include/G4VRestDiscreteProcess.hh | 4 +- .../management/include/G4VRestProcess.hh | 4 +- .../src/G4IVContinuousDiscreteProcess.cc | 4 +- .../management/src/G4IVRestDiscreteProcess.cc | 4 +- .../management/src/G4ProcTblElement.cc | 4 +- .../management/src/G4ProcessAttribute.cc | 4 +- .../management/src/G4ProcessManager.cc | 9 +- .../src/G4ProcessManagerMessenger.cc | 4 +- .../management/src/G4ProcessTable.cc | 4 +- .../management/src/G4ProcessTableMessenger.cc | 8 +- .../management/src/G4ProcessVector.cc | 4 +- .../src/G4VContinuousDiscreteProcess.cc | 4 +- .../management/src/G4VContinuousProcess.cc | 4 +- .../management/src/G4VDiscreteProcess.cc | 4 +- source/processes/management/src/G4VProcess.cc | 20 +- .../src/G4VRestContinuousDiscreteProcess.cc | 4 +- .../src/G4VRestContinuousProcess.cc | 4 +- .../management/src/G4VRestDiscreteProcess.cc | 4 +- .../management/src/G4VRestProcess.cc | 4 +- source/processes/optical/History | 10 + .../optical/include/G4OpAbsorption.hh | 6 +- .../optical/include/G4OpBoundaryProcess.hh | 6 +- .../processes/optical/include/G4OpRayleigh.hh | 6 +- .../processes/optical/src/G4OpAbsorption.cc | 4 +- .../optical/src/G4OpBoundaryProcess.cc | 16 +- source/processes/optical/src/G4OpRayleigh.cc | 13 +- source/processes/parameterisation/History | 14 +- .../include/G4FastSimulationManager.hh | 4 +- .../include/G4FastSimulationManagerProcess.hh | 4 +- .../include/G4FastSimulationMessenger.hh | 4 +- .../parameterisation/include/G4FastStep.hh | 4 +- .../parameterisation/include/G4FastStep.icc | 4 +- .../parameterisation/include/G4FastTrack.hh | 4 +- .../include/G4FlavoredParallelWorld.hh | 4 +- .../include/G4GlobalFastSimulationManager.hh | 4 +- .../include/G4VFastSimulationModel.hh | 4 +- .../src/G4FastSimulationManager.cc | 22 +- .../src/G4FastSimulationManagerProcess.cc | 22 +- .../src/G4FastSimulationMessenger.cc | 4 +- .../parameterisation/src/G4FastStep.cc | 12 +- .../parameterisation/src/G4FastTrack.cc | 8 +- .../src/G4GlobalFastSimulationManager.cc | 20 +- .../src/G4VFastSimulationModel.cc | 4 +- source/processes/photolepton_hadron/History | 10 +- .../include/G4LeptonHadronInteractionModel.hh | 2 +- .../include/G4MuNuclearInteraction.hh | 4 +- .../include/G4MuNuclearInteraction.icc | 10 +- .../src/G4MuNuclearInteraction.cc | 45 +- .../src/G4MuonNucleusInteractionModel.cc | 8 +- .../src/G4ParametrizedHadronicVertex.cc | 6 +- source/processes/transportation/History | 69 +- .../include/G4Transportation.hh | 25 +- .../include/G4Transportation.icc | 27 +- .../include/G4UserSpecialCuts.hh | 4 +- .../transportation/src/G4Transportation.cc | 337 +- .../transportation/src/G4UserSpecialCuts.cc | 4 +- source/readout/History | 5 +- source/readout/include/G4DCtable.hh | 4 +- source/readout/include/G4DMmessenger.hh | 4 +- source/readout/include/G4DigiManager.hh | 4 +- source/readout/include/G4VDigitizerModule.hh | 4 +- source/readout/src/G4DCtable.cc | 10 +- source/readout/src/G4DMmessenger.cc | 4 +- source/readout/src/G4DigiManager.cc | 14 +- source/readout/src/G4VDigitizerModule.cc | 4 +- source/run/GNUmakefile | 2 +- source/run/History | 75 +- source/run/include/G4Run.hh | 4 +- source/run/include/G4RunManager.hh | 34 +- source/run/include/G4RunMessenger.hh | 16 +- .../run/include/G4UserPhysicsListMessenger.hh | 7 +- source/run/include/G4UserRunAction.hh | 4 +- source/run/include/G4VModularPhysicsList.hh | 4 +- source/run/include/G4VPersistencyManager.hh | 4 +- source/run/include/G4VPhysicsConstructor.hh | 6 +- .../include/G4VUserDetectorConstruction.hh | 4 +- source/run/include/G4VUserPhysicsList.hh | 44 +- .../include/G4VUserPrimaryGeneratorAction.hh | 4 +- source/run/src/G4Run.cc | 6 +- source/run/src/G4RunManager.cc | 119 +- source/run/src/G4RunMessenger.cc | 139 +- source/run/src/G4UserPhysicsListMessenger.cc | 46 +- source/run/src/G4UserRunAction.cc | 4 +- source/run/src/G4VPersistencyManager.cc | 6 +- source/run/src/G4VUserDetectorConstruction.cc | 4 +- source/run/src/G4VUserPhysicsList.cc | 452 +- .../run/src/G4VUserPrimaryGeneratorAction.cc | 4 +- source/track/History | 37 +- source/track/include/G4EvtBiasMechanism.hh | 4 +- source/track/include/G4ForceCondition.hh | 4 +- source/track/include/G4GPILSelection.hh | 4 +- source/track/include/G4Mars5GeVMechanism.hh | 4 +- source/track/include/G4ParticleChange.hh | 17 +- source/track/include/G4ParticleChange.icc | 28 +- .../track/include/G4ParticleChangeForDecay.hh | 4 +- .../track/include/G4ParticleChangeForLoss.hh | 4 +- .../track/include/G4ParticleChangeForMSC.hh | 2 +- .../track/include/G4ParticleChangeForMSC.icc | 4 +- .../include/G4ParticleChangeForRadDecay.hh | 7 +- .../include/G4ParticleChangeForTransport.hh | 15 +- .../include/G4ParticleChangeForTransport.icc | 15 +- source/track/include/G4Step.hh | 4 +- source/track/include/G4Step.icc | 13 +- source/track/include/G4StepPoint.hh | 13 +- source/track/include/G4StepPoint.icc | 8 +- source/track/include/G4StepStatus.hh | 4 +- source/track/include/G4SteppingControl.hh | 4 +- source/track/include/G4Track.hh | 34 +- source/track/include/G4Track.icc | 39 +- source/track/include/G4TrackFastVector.hh | 4 +- source/track/include/G4TrackStatus.hh | 4 +- source/track/include/G4VEvtBiasMechanism.hh | 4 +- source/track/include/G4VParticleChange.hh | 34 +- source/track/include/G4VParticleChange.icc | 86 +- .../track/include/G4VUserTrackInformation.hh | 4 +- source/track/src/G4EvtBiasMechanism.cc | 8 +- source/track/src/G4Mars5GeVMechanism.cc | 26 +- source/track/src/G4ParticleChange.cc | 35 +- source/track/src/G4ParticleChangeForDecay.cc | 7 +- source/track/src/G4ParticleChangeForLoss.cc | 4 +- source/track/src/G4ParticleChangeForMSC.cc | 5 +- .../track/src/G4ParticleChangeForTransport.cc | 20 +- source/track/src/G4Step.cc | 4 +- source/track/src/G4StepPoint.cc | 8 +- source/track/src/G4Track.cc | 111 +- source/track/src/G4VEvtBiasMechanism.cc | 4 +- source/track/src/G4VParticleChange.cc | 55 +- source/tracking/History | 28 +- source/tracking/include/G4SteppingManager.hh | 330 +- source/tracking/include/G4SteppingVerbose.hh | 4 +- source/tracking/include/G4TrackVector.hh | 4 +- source/tracking/include/G4TrackingManager.hh | 4 +- .../tracking/include/G4TrackingMessenger.hh | 4 +- source/tracking/include/G4Trajectory.hh | 14 +- source/tracking/include/G4TrajectoryPoint.hh | 4 +- .../tracking/include/G4UserSteppingAction.hh | 4 +- .../tracking/include/G4UserTrackingAction.hh | 4 +- source/tracking/include/G4VSteppingVerbose.hh | 14 +- source/tracking/include/G4VTrajectory.hh | 4 +- source/tracking/include/G4VTrajectoryPoint.hh | 4 +- source/tracking/src/G4SteppingManager.cc | 67 +- source/tracking/src/G4SteppingManager2.cc | 8 +- source/tracking/src/G4SteppingVerbose.cc | 539 +- source/tracking/src/G4TrackingManager.cc | 10 +- source/tracking/src/G4TrackingMessenger.cc | 4 +- source/tracking/src/G4Trajectory.cc | 14 +- source/tracking/src/G4TrajectoryPoint.cc | 4 +- source/tracking/src/G4UserSteppingAction.cc | 4 +- source/tracking/src/G4UserTrackingAction.cc | 4 +- source/tracking/src/G4VSteppingVerbose.cc | 9 +- source/visualization/FukuiRenderer/History | 7 + .../FukuiRenderer/include/G4DAWNFILE.hh | 9 +- .../include/G4DAWNFILESceneHandler.hh | 18 +- .../FukuiRenderer/include/G4DAWNFILEViewer.hh | 10 +- .../FukuiRenderer/include/G4FRClientServer.hh | 4 +- .../FukuiRenderer/include/G4FRConst.hh | 4 +- .../FukuiRenderer/include/G4FRFeatures.hh | 4 +- .../{src => include}/G4FRSceneFunc.icc | 324 +- .../FukuiRenderer/include/G4FRofstream.hh | 4 +- .../FukuiRenderer/include/G4FukuiRenderer.hh | 4 +- .../include/G4FukuiRendererSceneHandler.hh | 11 +- .../include/G4FukuiRendererViewer.hh | 4 +- .../FukuiRenderer/src/G4DAWNFILE.cc | 10 +- .../src/G4DAWNFILESceneHandler.cc | 19 +- .../FukuiRenderer/src/G4DAWNFILEViewer.cc | 14 +- .../FukuiRenderer/src/G4FRClientServer.cc | 4 +- .../FukuiRenderer/src/G4FukuiRenderer.cc | 4 +- .../src/G4FukuiRendererSceneHandler.cc | 10 +- .../src/G4FukuiRendererViewer.cc | 4 +- source/visualization/GNUmakefile | 45 +- source/visualization/HepRep/GNUmakefile | 25 + source/visualization/HepRep/History | 53 + source/visualization/HepRep/README | 20 + .../HepRep/include/G4HepRepFile.hh} | 38 +- .../include/G4HepRepFileSceneHandler.hh | 134 + .../include/G4HepRepFileViewer.hh} | 39 +- .../HepRep/include/HepRepXMLWriter.hh} | 105 +- .../visualization/HepRep/src/G4HepRepFile.cc | 83 + .../HepRep/src/G4HepRepFileSceneHandler.cc | 397 + .../HepRep/src/G4HepRepFileViewer.cc | 86 + .../HepRep/src/HepRepXMLWriter.cc | 297 + source/visualization/History | 279 +- .../OPACS/include/G4GoSceneHandler.hh | 10 +- source/visualization/OPACS/include/G4Wo.hh | 4 +- .../visualization/OPACS/include/G4WoViewer.hh | 4 +- source/visualization/OPACS/include/G4Xo.hh | 4 +- .../visualization/OPACS/include/G4XoViewer.hh | 4 +- .../OPACS/src/G4GoSceneHandler.cc | 6 +- source/visualization/OPACS/src/G4Wo.cc | 4 +- source/visualization/OPACS/src/G4WoViewer.cc | 4 +- source/visualization/OPACS/src/G4Xo.cc | 4 +- source/visualization/OPACS/src/G4XoViewer.cc | 4 +- source/visualization/OpenGL/History | 61 +- .../include/G4OpenGLImmediateSceneHandler.hh | 5 +- .../OpenGL/include/G4OpenGLImmediateViewer.hh | 4 +- .../OpenGL/include/G4OpenGLImmediateWin32.hh | 4 +- .../include/G4OpenGLImmediateWin32Viewer.hh | 5 +- .../OpenGL/include/G4OpenGLImmediateX.hh | 4 +- .../include/G4OpenGLImmediateXViewer.hh | 5 +- .../OpenGL/include/G4OpenGLImmediateXm.hh | 4 +- .../include/G4OpenGLImmediateXmViewer.hh | 5 +- .../OpenGL/include/G4OpenGLSceneHandler.hh | 13 +- .../OpenGL/include/G4OpenGLSceneHandler.icc | 9 +- .../include/G4OpenGLStoredSceneHandler.hh | 21 +- .../OpenGL/include/G4OpenGLStoredViewer.hh | 8 +- .../OpenGL/include/G4OpenGLStoredWin32.hh | 4 +- .../include/G4OpenGLStoredWin32Viewer.hh | 5 +- .../OpenGL/include/G4OpenGLStoredX.hh | 4 +- .../OpenGL/include/G4OpenGLStoredXViewer.hh | 5 +- .../OpenGL/include/G4OpenGLStoredXm.hh | 4 +- .../OpenGL/include/G4OpenGLStoredXmViewer.hh | 5 +- .../OpenGL/include/G4OpenGLTransform3D.hh | 4 +- .../OpenGL/include/G4OpenGLViewer.hh | 4 +- .../OpenGL/include/G4OpenGLWin32Viewer.hh | 4 +- .../OpenGL/include/G4OpenGLXViewer.hh | 4 +- .../OpenGL/include/G4OpenGLXmBox.hh | 4 +- .../include/G4OpenGLXmFourArrowButtons.hh | 4 +- .../OpenGL/include/G4OpenGLXmFramedBox.hh | 4 +- .../OpenGL/include/G4OpenGLXmPushButton.hh | 4 +- .../OpenGL/include/G4OpenGLXmRadioButton.hh | 4 +- .../OpenGL/include/G4OpenGLXmResources.hh | 4 +- .../OpenGL/include/G4OpenGLXmSeparator.hh | 4 +- .../OpenGL/include/G4OpenGLXmSliderBar.hh | 4 +- .../OpenGL/include/G4OpenGLXmTextField.hh | 4 +- .../OpenGL/include/G4OpenGLXmTopLevelShell.hh | 4 +- .../include/G4OpenGLXmVWidgetComponent.hh | 4 +- .../include/G4OpenGLXmVWidgetContainer.hh | 4 +- .../OpenGL/include/G4OpenGLXmVWidgetObject.hh | 4 +- .../OpenGL/include/G4OpenGLXmVWidgetShell.hh | 4 +- .../OpenGL/include/G4OpenGLXmViewer.hh | 4 +- .../src/G4OpenGLImmediateSceneHandler.cc | 22 +- .../OpenGL/src/G4OpenGLImmediateViewer.cc | 4 +- .../OpenGL/src/G4OpenGLImmediateWin32.cc | 4 +- .../src/G4OpenGLImmediateWin32Viewer.cc | 8 +- .../OpenGL/src/G4OpenGLImmediateX.cc | 4 +- .../OpenGL/src/G4OpenGLImmediateXViewer.cc | 30 +- .../OpenGL/src/G4OpenGLImmediateXm.cc | 4 +- .../OpenGL/src/G4OpenGLImmediateXmViewer.cc | 29 +- .../OpenGL/src/G4OpenGLSceneHandler.cc | 31 +- .../OpenGL/src/G4OpenGLStoredSceneHandler.cc | 139 +- .../OpenGL/src/G4OpenGLStoredViewer.cc | 53 +- .../OpenGL/src/G4OpenGLStoredWin32.cc | 4 +- .../OpenGL/src/G4OpenGLStoredWin32Viewer.cc | 8 +- .../OpenGL/src/G4OpenGLStoredX.cc | 4 +- .../OpenGL/src/G4OpenGLStoredXViewer.cc | 19 +- .../OpenGL/src/G4OpenGLStoredXm.cc | 4 +- .../OpenGL/src/G4OpenGLStoredXmViewer.cc | 11 +- .../OpenGL/src/G4OpenGLTransform3D.cc | 4 +- .../OpenGL/src/G4OpenGLViewer.cc | 4 +- .../OpenGL/src/G4OpenGLWin32Viewer.cc | 4 +- .../OpenGL/src/G4OpenGLXViewer.cc | 12 +- .../visualization/OpenGL/src/G4OpenGLXmBox.cc | 4 +- .../src/G4OpenGLXmConvenienceRoutines.cc | 10 +- .../OpenGL/src/G4OpenGLXmFourArrowButtons.cc | 4 +- .../OpenGL/src/G4OpenGLXmFramedBox.cc | 4 +- .../src/G4OpenGLXmMainMenubarCallbacks.cc | 4 +- .../OpenGL/src/G4OpenGLXmPanningCallbacks.cc | 4 +- .../OpenGL/src/G4OpenGLXmPushButton.cc | 4 +- .../OpenGL/src/G4OpenGLXmRadioButton.cc | 4 +- .../OpenGL/src/G4OpenGLXmRotationCallbacks.cc | 4 +- .../OpenGL/src/G4OpenGLXmSeparator.cc | 4 +- .../OpenGL/src/G4OpenGLXmSliderBar.cc | 4 +- .../OpenGL/src/G4OpenGLXmStyleCallbacks.cc | 6 +- .../OpenGL/src/G4OpenGLXmTextField.cc | 4 +- .../OpenGL/src/G4OpenGLXmTopLevelShell.cc | 4 +- .../OpenGL/src/G4OpenGLXmVWidgetComponent.cc | 4 +- .../OpenGL/src/G4OpenGLXmVWidgetContainer.cc | 4 +- .../OpenGL/src/G4OpenGLXmVWidgetObject.cc | 4 +- .../OpenGL/src/G4OpenGLXmVWidgetShell.cc | 4 +- .../OpenGL/src/G4OpenGLXmViewer.cc | 19 +- .../src/G4OpenGLXmWindowHandlingCallbacks.cc | 4 +- .../OpenInventor}/History | 11 +- .../OpenInventor/include/G4OpenInventor.hh | 4 +- .../include/G4OpenInventorSceneHandler.hh | 15 +- .../include/G4OpenInventorSceneHandler.icc | 4 +- .../include/G4OpenInventorTransform3D.hh | 4 +- .../include/G4OpenInventorViewer.hh | 14 +- .../include/G4OpenInventorWin32.hh | 4 +- .../OpenInventor/include/G4OpenInventorX.hh | 4 +- .../OpenInventor/include/G4SoWindow.hh | 59 + .../OpenInventor/src/G4OpenInventor.cc | 4 +- .../src/G4OpenInventorSceneHandler.cc | 4 +- .../src/G4OpenInventorTransform3D.cc | 4 +- .../OpenInventor/src/G4OpenInventorViewer.cc | 81 +- .../OpenInventor/src/G4OpenInventorWin32.cc | 4 +- .../OpenInventor/src/G4OpenInventorX.cc | 4 +- .../OpenInventor/src/G4SoWindow.cc | 403 + source/visualization/README | 349 +- .../README.adding_graphics_system | 340 +- source/visualization/README.built_in_commands | 519 + source/visualization/README.quick | 67 + source/visualization/RayTracer/History | 15 +- .../RayTracer/include/G4RTJpeg.hh | 4 +- .../RayTracer/include/G4RTJpegCoder.hh | 4 +- .../RayTracer/include/G4RTJpegCoderTables.hh | 4 +- .../RayTracer/include/G4RTJpegMaker.hh | 4 +- .../RayTracer/include/G4RTMessenger.hh | 4 +- .../RayTracer/include/G4RTOutBitStream.hh | 4 +- .../RayTracer/include/G4RTSteppingAction.hh | 4 +- .../RayTracer/include/G4RTTrackingAction.hh | 4 +- .../RayTracer/include/G4RayShooter.hh | 4 +- .../RayTracer/include/G4RayTracer.hh | 15 +- .../RayTracer/include/G4RayTracerFeatures.hh | 4 +- .../include/G4RayTracerSceneHandler.hh | 5 +- .../RayTracer/include/G4RayTracerViewer.hh | 4 +- .../RayTracer/include/G4RayTrajectory.hh | 4 +- .../RayTracer/include/G4RayTrajectoryPoint.hh | 4 +- .../RayTracer/include/G4VFigureFileMaker.hh | 4 +- .../RayTracer/src/G4RTJpegCoder.cc | 4 +- .../RayTracer/src/G4RTJpegMaker.cc | 21 +- .../RayTracer/src/G4RTMessenger.cc | 4 +- .../RayTracer/src/G4RTOutBitStream.cc | 4 +- .../RayTracer/src/G4RTSteppingAction.cc | 4 +- .../RayTracer/src/G4RTTrackingAction.cc | 4 +- .../RayTracer/src/G4RayShooter.cc | 4 +- .../RayTracer/src/G4RayTracer.cc | 4 +- .../RayTracer/src/G4RayTracerSceneHandler.cc | 4 +- .../RayTracer/src/G4RayTracerViewer.cc | 8 +- .../RayTracer/src/G4RayTrajectory.cc | 4 +- .../RayTracer/src/G4RayTrajectoryPoint.cc | 4 +- source/visualization/Tree/History | 8 +- .../visualization/Tree/include/G4ASCIITree.hh | 4 +- .../Tree/include/G4ASCIITreeMessenger.hh | 4 +- .../Tree/include/G4ASCIITreeSceneHandler.hh | 8 +- .../Tree/include/G4ASCIITreeViewer.hh | 4 +- .../Tree/include/G4GAGTreeSceneHandler.hh | 4 +- source/visualization/Tree/include/G4VTree.hh | 4 +- .../Tree/include/G4VTreeSceneHandler.hh | 33 +- .../Tree/include/G4VTreeSceneHandler.icc | 4 +- .../Tree/include/G4VTreeViewer.hh | 4 +- source/visualization/Tree/src/G4ASCIITree.cc | 8 +- .../Tree/src/G4ASCIITreeMessenger.cc | 4 +- .../Tree/src/G4ASCIITreeSceneHandler.cc | 15 +- .../Tree/src/G4ASCIITreeViewer.cc | 4 +- source/visualization/Tree/src/G4GAGTree.cc | 4 +- .../Tree/src/G4GAGTreeSceneHandler.cc | 11 +- source/visualization/Tree/src/G4VTree.cc | 4 +- .../Tree/src/G4VTreeSceneHandler.cc | 9 +- .../visualization/Tree/src/G4VTreeViewer.cc | 4 +- source/visualization/VRML/GNUmakefile | 6 +- source/visualization/VRML/History | 4 + .../visualization/VRML/g4vrmlview/g4mini.java | 4 +- .../VRML/g4vrmlview/g4vrmlview.java | 4 +- source/visualization/VRML/include/FRClient.h | 4 +- .../visualization/VRML/include/G4FRClient.hh | 4 +- source/visualization/VRML/include/G4VRML1.hh | 4 +- .../visualization/VRML/include/G4VRML1File.hh | 8 +- .../VRML/include/G4VRML1FileSceneHandler.hh | 11 +- .../VRML/include/G4VRML1FileViewer.hh | 7 +- .../VRML/include/G4VRML1SceneHandler.hh | 8 +- .../VRML/include/G4VRML1Viewer.hh | 4 +- source/visualization/VRML/include/G4VRML2.hh | 4 +- .../visualization/VRML/include/G4VRML2File.hh | 8 +- .../VRML/include/G4VRML2FileSceneHandler.hh | 11 +- .../VRML/include/G4VRML2FileViewer.hh | 7 +- .../VRML/include/G4VRML2SceneHandler.hh | 8 +- .../VRML/include/G4VRML2Viewer.hh | 4 +- .../VRML/include/G4VRMLNetConfig.hh | 4 +- source/visualization/VRML/src/FRClient.cc | 4 +- source/visualization/VRML/src/G4FRClient.cc | 4 +- source/visualization/VRML/src/G4VRML1.cc | 4 +- source/visualization/VRML/src/G4VRML1File.cc | 11 +- .../VRML/src/G4VRML1FileSceneHandler.cc | 51 +- .../VRML/src/G4VRML1FileViewer.cc | 11 +- .../VRML/src/G4VRML1SceneHandler.cc | 8 +- .../VRML/src/G4VRML1SceneHandlerFunc.icc | 86 +- .../visualization/VRML/src/G4VRML1Viewer.cc | 4 +- source/visualization/VRML/src/G4VRML2.cc | 4 +- source/visualization/VRML/src/G4VRML2File.cc | 11 +- .../VRML/src/G4VRML2FileSceneHandler.cc | 44 +- .../VRML/src/G4VRML2FileViewer.cc | 12 +- .../VRML/src/G4VRML2SceneHandler.cc | 8 +- .../VRML/src/G4VRML2SceneHandlerFunc.icc | 86 +- .../visualization/VRML/src/G4VRML2Viewer.cc | 4 +- source/visualization/XXX/GNUmakefile | 24 + source/visualization/XXX/History | 30 + .../XXX/include/G4XXX.hh} | 32 +- .../XXX/include/G4XXXSceneHandler.hh | 133 + .../XXX/include/G4XXXViewer.hh} | 33 +- .../XXX/src/G4XXX.cc} | 81 +- .../XXX/src/G4XXXSceneHandler.cc | 339 + .../XXX/src/G4XXXViewer.cc} | 63 +- source/visualization/management/GNUmakefile | 14 +- .../include/G4GraphicsSystemList.hh | 4 +- .../management/include/G4Scene.hh | 27 +- .../management/include/G4Scene.icc | 12 +- .../management/include/G4SceneHandlerList.hh | 4 +- .../management/include/G4SceneList.hh | 4 +- .../management/include/G4VGraphicsSystem.hh | 4 +- .../management/include/G4VGraphicsSystem.icc | 4 +- .../management/include/G4VSceneHandler.hh | 36 +- .../management/include/G4VSceneHandler.icc | 16 +- .../management/include/G4VViewer.hh | 17 +- .../management/include/G4VViewer.icc | 6 +- .../management/include/G4VVisCommand.hh | 8 +- .../management/include/G4VVisCommand.icc | 4 +- .../management/include/G4ViewParameters.hh | 4 +- .../management/include/G4ViewParameters.icc | 4 +- .../management/include/G4ViewerList.hh | 4 +- .../include/G4VisCommandTemplates.hh | 100 - .../include/G4VisCommandTemplates.icc | 134 - .../management/include/G4VisCommands.hh | 8 +- .../management/include/G4VisCommandsClear.hh | 124 - .../include/G4VisCommandsCompound.hh | 4 +- .../management/include/G4VisCommandsCopy.hh | 128 - .../include/G4VisCommandsCreateView.hh | 95 - .../management/include/G4VisCommandsDelete.hh | 97 - .../management/include/G4VisCommandsDraw.hh | 75 - .../management/include/G4VisCommandsLights.hh | 79 - .../include/G4VisCommandsRefresh.hh | 71 - .../management/include/G4VisCommandsScene.hh | 20 +- .../include/G4VisCommandsSceneAdd.hh | 16 +- .../include/G4VisCommandsSceneHandler.hh | 4 +- .../include/G4VisCommandsSceneInclude.hh | 56 - .../management/include/G4VisCommandsSet.hh | 138 - .../management/include/G4VisCommandsShow.hh | 75 - .../management/include/G4VisCommandsViewer.hh | 16 +- .../include/G4VisCommandsViewerSet.hh | 13 +- .../include/G4VisFeaturesOfDAWNFILE.hh | 4 +- .../include/G4VisFeaturesOfFukuiRenderer.hh | 4 +- .../include/G4VisFeaturesOfOpenGL.hh | 4 +- .../include/G4VisFeaturesOfOpenInventor.hh | 4 +- .../management/include/G4VisManMessenger.hh | 79 - .../management/include/G4VisManager.hh | 176 +- .../management/include/G4VisManager.icc | 30 +- .../management/include/G4VisStateDependent.hh | 4 +- .../include/G4VisToOldVisCommands.hh | 4 +- .../management/include/MyVisManager.cc | 66 +- .../management/include/MyVisManager.hh | 4 +- .../management/src/G4GraphicsSystemList.cc | 4 +- .../visualization/management/src/G4Scene.cc | 106 +- .../management/src/G4SceneHandlerList.cc | 4 +- .../management/src/G4SceneList.cc | 4 +- .../management/src/G4VGraphicsSystem.cc | 6 +- .../management/src/G4VSceneHandler.cc | 183 +- .../visualization/management/src/G4VViewer.cc | 35 +- .../management/src/G4VVisCommand.cc | 43 +- .../management/src/G4ViewParameters.cc | 8 +- .../management/src/G4ViewerList.cc | 4 +- .../management/src/G4VisCommandTemplates.cc | 68 - .../management/src/G4VisCommands.cc | 20 +- .../management/src/G4VisCommandsCompound.cc | 58 +- .../management/src/G4VisCommandsScene.cc | 287 +- .../management/src/G4VisCommandsSceneAdd.cc | 532 +- .../src/G4VisCommandsSceneHandler.cc | 149 +- .../src/G4VisCommandsSceneInclude.cc | 83 - .../management/src/G4VisCommandsViewer.cc | 431 +- .../management/src/G4VisCommandsViewerSet.cc | 471 +- .../management/src/G4VisFeaturesOfDAWNFILE.cc | 4 +- .../src/G4VisFeaturesOfFukuiRenderer.cc | 4 +- .../management/src/G4VisFeaturesOfOpenGL.cc | 4 +- .../src/G4VisFeaturesOfOpenInventor.cc | 4 +- .../management/src/G4VisManMessCamera.cc | 471 - .../management/src/G4VisManMessCreateView.cc | 171 - .../management/src/G4VisManMessDraw.cc | 290 - .../management/src/G4VisManMessExpert.cc | 466 - .../management/src/G4VisManMessLights.cc | 92 - .../management/src/G4VisManMessSet.cc | 705 - .../management/src/G4VisManMessenger.cc | 139 - .../management/src/G4VisManager.cc | 1412 +- .../src/G4VisManagerRegisterMessengers.cc | 624 - .../management/src/G4VisStateDependent.cc | 19 +- .../management/src/G4VisToOldVisCommands.cc | 101 - source/visualization/modeling/History | 37 +- .../modeling/include/G4AxesModel.hh | 11 +- .../modeling/include/G4AxesModel.icc | 8 +- .../modeling/include/G4BoundingSphereScene.hh | 10 +- .../include/G4FlavoredParallelWorldModel.hh | 4 +- .../modeling/include/G4HitsModel.hh | 9 +- .../modeling/include/G4HitsModel.icc | 8 +- .../modeling/include/G4LogicalVolumeModel.hh | 4 +- .../modeling/include/G4ModelingParameters.hh | 7 +- .../modeling/include/G4ModelingParameters.icc | 4 +- .../modeling/include/G4NullModel.hh | 7 +- .../modeling/include/G4PhysicalVolumeModel.hh | 18 +- .../include/G4PhysicalVolumeSearchScene.hh | 5 +- .../include/G4PhysicalVolumeSearchScene.icc | 4 +- .../modeling/include/G4ScaleModel.hh | 72 + .../modeling/include/G4ScaleModel.icc} | 22 +- .../modeling/include/G4TextModel.hh | 11 +- .../modeling/include/G4TextModel.icc | 8 +- .../modeling/include/G4TrajectoriesModel.hh | 9 +- .../modeling/include/G4TrajectoriesModel.icc | 9 +- .../modeling/include/G4VModel.hh | 18 +- .../modeling/include/G4VModel.icc | 17 +- .../visualization/modeling/src/G4AxesModel.cc | 16 +- .../modeling/src/G4BoundingSphereScene.cc | 62 +- .../src/G4FlavoredParallelWorldModel.cc | 4 +- .../visualization/modeling/src/G4HitsModel.cc | 9 +- .../modeling/src/G4LogicalVolumeModel.cc | 4 +- .../modeling/src/G4ModelingParameters.cc | 4 +- .../visualization/modeling/src/G4NullModel.cc | 10 +- .../modeling/src/G4PhysicalVolumeModel.cc | 57 +- .../src/G4PhysicalVolumeSearchScene.cc | 4 +- .../modeling/src/G4ScaleModel.cc | 58 + .../visualization/modeling/src/G4TextModel.cc | 10 +- .../modeling/src/G4TrajectoriesModel.cc | 9 +- source/visualization/modeling/src/G4VModel.cc | 8 +- 3990 files changed, 185376 insertions(+), 82884 deletions(-) create mode 100644 ReleaseNotes/ReleaseNotes4.4.0.txt create mode 100644 config/sys/Linux-egcs.gmk rename config/sys/{SUN-CC5.gmk => SUN-CC4.gmk} (81%) create mode 100644 examples/advanced/gammaray_telescope/anaphe.gmk create mode 100644 examples/advanced/gammaray_telescope/gammaraytel.py rename examples/advanced/gammaray_telescope/include/{GammaRayTelAnalysisManager.hh => GammaRayTelAnalysis.hh-AIDA} (75%) create mode 100644 examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh-Anaphe create mode 100644 examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh rename source/analysis/management/include/G4AnalysisManager.hh => examples/advanced/gammaray_telescope/include/GammaRayTelDigitizer.hh (59%) create mode 100644 examples/advanced/gammaray_telescope/include/GammaRayTelDigitizerMessenger.hh create mode 100644 examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc-AIDA create mode 100644 examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc-Anaphe delete mode 100644 examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisManager.cc create mode 100644 examples/advanced/gammaray_telescope/src/GammaRayTelDigi.cc create mode 100644 examples/advanced/gammaray_telescope/src/GammaRayTelDigitizer.cc create mode 100644 examples/advanced/gammaray_telescope/src/GammaRayTelDigitizerMessenger.cc create mode 100644 examples/advanced/underground_physics/DMX.cc create mode 100644 examples/advanced/underground_physics/GNUmakefile create mode 100644 examples/advanced/underground_physics/README create mode 100644 examples/advanced/underground_physics/Traceability.txt create mode 100644 examples/advanced/underground_physics/UserRequirements.txt create mode 100644 examples/advanced/underground_physics/alpha.mac create mode 100644 examples/advanced/underground_physics/alpha_1000.mac create mode 100644 examples/advanced/underground_physics/alpha_low.mac create mode 100644 examples/advanced/underground_physics/gamma.mac create mode 100644 examples/advanced/underground_physics/gamma_1000.mac create mode 100644 examples/advanced/underground_physics/gamma_low.mac create mode 100644 examples/advanced/underground_physics/include/DMXDetectorConstruction.hh create mode 100644 examples/advanced/underground_physics/include/DMXEventAction.hh create mode 100644 examples/advanced/underground_physics/include/DMXEventActionMessenger.hh create mode 100644 examples/advanced/underground_physics/include/DMXMaxTimeCuts.hh create mode 100644 examples/advanced/underground_physics/include/DMXParticleSource.hh create mode 100644 examples/advanced/underground_physics/include/DMXParticleSourceMessenger.hh create mode 100644 examples/advanced/underground_physics/include/DMXPhysicsList.hh create mode 100644 examples/advanced/underground_physics/include/DMXPmtHit.hh create mode 100644 examples/advanced/underground_physics/include/DMXPmtSD.hh create mode 100644 examples/advanced/underground_physics/include/DMXPrimaryGeneratorAction.hh create mode 100644 examples/advanced/underground_physics/include/DMXRunAction.hh create mode 100644 examples/advanced/underground_physics/include/DMXRunActionMessenger.hh create mode 100644 examples/advanced/underground_physics/include/DMXScintHit.hh create mode 100644 examples/advanced/underground_physics/include/DMXScintSD.hh create mode 100644 examples/advanced/underground_physics/include/DMXSpecialCuts.hh create mode 100644 examples/advanced/underground_physics/include/DMXStackingAction.hh create mode 100644 examples/advanced/underground_physics/include/DMXStackingActionMessenger.hh create mode 100644 examples/advanced/underground_physics/include/DMXSteppingAction.hh create mode 100644 examples/advanced/underground_physics/include/DMXSteppingActionMessenger.hh create mode 100644 examples/advanced/underground_physics/include/DMXVisManager.hh create mode 100644 examples/advanced/underground_physics/initInter.mac create mode 100644 examples/advanced/underground_physics/neutron.mac create mode 100644 examples/advanced/underground_physics/src/DMXDetectorConstruction.cc create mode 100644 examples/advanced/underground_physics/src/DMXEventAction.cc create mode 100644 examples/advanced/underground_physics/src/DMXEventActionMessenger.cc create mode 100644 examples/advanced/underground_physics/src/DMXMaxTimeCuts.cc create mode 100644 examples/advanced/underground_physics/src/DMXParticleSource.cc create mode 100644 examples/advanced/underground_physics/src/DMXParticleSourceMessenger.cc create mode 100644 examples/advanced/underground_physics/src/DMXPhysicsList.cc create mode 100644 examples/advanced/underground_physics/src/DMXPmtHit.cc create mode 100644 examples/advanced/underground_physics/src/DMXPmtSD.cc rename source/processes/electromagnetic/lowenergy/src/G4ThirdLevel.cc => examples/advanced/underground_physics/src/DMXPrimaryGeneratorAction.cc (66%) rename source/processes/electromagnetic/integral/include/G4VIeEnergyLoss.icc => examples/advanced/underground_physics/src/DMXRunAction.cc (56%) create mode 100644 examples/advanced/underground_physics/src/DMXRunActionMessenger.cc create mode 100644 examples/advanced/underground_physics/src/DMXScintHit.cc create mode 100644 examples/advanced/underground_physics/src/DMXScintSD.cc create mode 100644 examples/advanced/underground_physics/src/DMXSpecialCuts.cc create mode 100644 examples/advanced/underground_physics/src/DMXStackingAction.cc create mode 100644 examples/advanced/underground_physics/src/DMXStackingActionMessenger.cc create mode 100644 examples/advanced/underground_physics/src/DMXSteppingAction.cc create mode 100644 examples/advanced/underground_physics/src/DMXSteppingActionMessenger.cc create mode 100644 examples/advanced/underground_physics/src/DMXVisManager.cc create mode 100644 examples/advanced/underground_physics/wired.mac create mode 100644 examples/advanced/xray_fluorescence/B_flare.dat create mode 100644 examples/advanced/xray_fluorescence/C_flare.dat create mode 100644 examples/advanced/xray_fluorescence/G4History.macro create mode 100644 examples/advanced/xray_fluorescence/GNUmakefile create mode 100644 examples/advanced/xray_fluorescence/M_flare.dat create mode 100644 examples/advanced/xray_fluorescence/README create mode 100644 examples/advanced/xray_fluorescence/XrayFluo.cc create mode 100644 examples/advanced/xray_fluorescence/XrayFluo.py create mode 100644 examples/advanced/xray_fluorescence/anaphe.gmk create mode 100644 examples/advanced/xray_fluorescence/efficienza.dat create mode 100644 examples/advanced/xray_fluorescence/fit.py create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoAnalysisManager.hh-AIDA create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoAnalysisManager.hh-Anaphe create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoAnalysisMessenger.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoDataSet.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoDetectorConstruction.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoDetectorMessenger.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoEventAction.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoEventActionMessenger.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoHPGeSD.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoNormalization.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoPhysicsList.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoPhysicsListMessenger.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoPrimaryGeneratorAction.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoPrimaryGeneratorMessenger.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoRunAction.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoSensorHit.hh rename source/analysis/jas/include/G4JasSystem.hh => examples/advanced/xray_fluorescence/include/XrayFluoSteppingAction.hh (66%) create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoSteppingVerbose.hh create mode 100644 examples/advanced/xray_fluorescence/include/XrayFluoVisManager.hh rename examples/{novice/N03 => advanced/xray_fluorescence}/initInter.mac (93%) create mode 100644 examples/advanced/xray_fluorescence/macro.mac create mode 100644 examples/advanced/xray_fluorescence/macro1.mac create mode 100644 examples/advanced/xray_fluorescence/macro2.mac create mode 100644 examples/advanced/xray_fluorescence/merc2_flx_alp_max.dat create mode 100644 examples/advanced/xray_fluorescence/merc_flx_alp_min.dat create mode 100644 examples/advanced/xray_fluorescence/mercury2_flx_solmax.dat create mode 100644 examples/advanced/xray_fluorescence/mercury_flx_solmin.dat create mode 100644 examples/advanced/xray_fluorescence/response.dat create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc-AIDA create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc-Anaphe create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoAnalysisMessenger.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoDataSet.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoDetectorConstruction.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoDetectorMessenger.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoEventAction.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoEventActionMessenger.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoHPGeSD.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoNormalization.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoPhysicsList.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoPhysicsListMessenger.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoPrimaryGeneratorAction.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoPrimaryGeneratorMessenger.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoRunAction.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoSensorHit.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoSteppingAction.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoSteppingVerbose.cc create mode 100644 examples/advanced/xray_fluorescence/src/XrayFluoVisManager.cc create mode 100644 examples/advanced/xray_telescope/anaphe.gmk rename examples/advanced/xray_telescope/include/{XrayTelAnalysisManager.hh => XrayTelAnalysis.hh-AIDA} (78%) create mode 100644 examples/advanced/xray_telescope/include/XrayTelAnalysis.hh-Anaphe rename examples/advanced/xray_telescope/src/{XrayTelAnalysisManager.cc => XrayTelAnalysis.cc-AIDA} (51%) create mode 100644 examples/advanced/xray_telescope/src/XrayTelAnalysis.cc-Anaphe create mode 100644 examples/extended/analysis/AnaEx01/analysis/Falsetto/run.mac create mode 100644 examples/extended/analysis/AnaEx01/analysis/Lab/AnaEx01.C rename examples/extended/analysis/AnaEx01/analysis/Lab/{session.tcl => AnaEx01.py} (53%) delete mode 100644 examples/extended/electromagnetic/TestEm1/init.mac rename examples/extended/electromagnetic/{TestEm3/init.mac => TestEm1/vis.mac} (71%) create mode 100644 examples/extended/electromagnetic/TestEm10/GNUmakefile create mode 100644 examples/extended/electromagnetic/TestEm10/History create mode 100644 examples/extended/electromagnetic/TestEm10/README create mode 100644 examples/extended/electromagnetic/TestEm10/TestEm10.cc create mode 100644 examples/extended/electromagnetic/TestEm10/TestEm10.in create mode 100644 examples/extended/electromagnetic/TestEm10/TestEm10.large_N.in create mode 100644 examples/extended/electromagnetic/TestEm10/TestEm10.large_N.out create mode 100644 examples/extended/electromagnetic/TestEm10/TestEm10.out create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10CalorHit.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10CalorimeterSD.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10DetectorConstruction.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10DetectorMessenger.hh rename source/analysis/management/include/G4VAnalysisManager.hh => examples/extended/electromagnetic/TestEm10/include/Em10EventAction.hh (51%) create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10EventActionMessenger.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10Materials.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10PhysicsList.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10PhysicsListMessenger.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorAction.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorMessenger.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10RunAction.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10RunMessenger.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10StepCut.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10SteppingAction.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10SteppingMessenger.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10SteppingVerbose.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/Em10VisManager.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/TRTDetectorConstruction.hh create mode 100644 examples/extended/electromagnetic/TestEm10/include/TRTMaterials.hh create mode 100644 examples/extended/electromagnetic/TestEm10/init.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run01.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run01a.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run01b.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run02.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run02a.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run03.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run04.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run05.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run1.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run11.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run12.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run13.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run14.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run15.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run16.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run2.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run21.mac create mode 100644 examples/extended/electromagnetic/TestEm10/run22.mac create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10CalorHit.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10CalorimeterSD.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10DetectorConstruction.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10DetectorMessenger.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10EventAction.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10EventActionMessenger.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10PhysicsList.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10RunAction.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10RunMessenger.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10StepCut.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10SteppingAction.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10SteppingMessenger.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10SteppingVerbose.cc create mode 100644 examples/extended/electromagnetic/TestEm10/src/Em10VisManager.cc rename examples/extended/electromagnetic/TestEm2/{init.mac => vis.mac} (76%) delete mode 100644 examples/extended/electromagnetic/TestEm3/geant3/g4mat/iron.dat delete mode 100644 examples/extended/electromagnetic/TestEm3/geant3/g4mat/scin.dat create mode 100644 examples/extended/electromagnetic/TestEm3/retrieveTables.mac create mode 100644 examples/extended/electromagnetic/TestEm3/storeTables.mac create mode 100644 examples/extended/electromagnetic/TestEm3/vis.mac rename examples/extended/electromagnetic/TestEm4/{init.mac => vis.mac} (83%) rename examples/extended/electromagnetic/TestEm5/{init.mac => vis.mac} (78%) create mode 100644 examples/extended/field/field01/GNUmakefile create mode 100644 examples/extended/field/field01/History create mode 100644 examples/extended/field/field01/README create mode 100644 examples/extended/field/field01/field01.cc create mode 100644 examples/extended/field/field01/field01.in create mode 100644 examples/extended/field/field01/field01.out create mode 100644 examples/extended/field/field01/include/F01CalorHit.hh create mode 100644 examples/extended/field/field01/include/F01CalorimeterSD.hh create mode 100644 examples/extended/field/field01/include/F01DetectorConstruction.hh create mode 100644 examples/extended/field/field01/include/F01DetectorMessenger.hh create mode 100644 examples/extended/field/field01/include/F01ElectroMagneticField.hh create mode 100644 examples/extended/field/field01/include/F01EventAction.hh rename examples/extended/{electromagnetic/TestEm4/include/Em4RunActionMessenger.hh => field/field01/include/F01EventActionMessenger.hh} (78%) rename source/visualization/management/include/G4VisCommandsCamera.hh => examples/extended/field/field01/include/F01FieldMessenger.hh (59%) create mode 100644 examples/extended/field/field01/include/F01PhysicsList.hh create mode 100644 examples/extended/field/field01/include/F01PhysicsListMessenger.hh create mode 100644 examples/extended/field/field01/include/F01PrimaryGeneratorAction.hh create mode 100644 examples/extended/field/field01/include/F01PrimaryGeneratorMessenger.hh create mode 100644 examples/extended/field/field01/include/F01RunAction.hh create mode 100644 examples/extended/field/field01/include/F01RunMessenger.hh create mode 100644 examples/extended/field/field01/include/F01StepCut.hh create mode 100644 examples/extended/field/field01/include/F01SteppingAction.hh create mode 100644 examples/extended/field/field01/include/F01SteppingMessenger.hh create mode 100644 examples/extended/field/field01/include/F01SteppingVerbose.hh create mode 100644 examples/extended/field/field01/include/F01VisManager.hh create mode 100644 examples/extended/field/field01/src/F01CalorHit.cc create mode 100644 examples/extended/field/field01/src/F01CalorimeterSD.cc create mode 100644 examples/extended/field/field01/src/F01DetectorConstruction.cc create mode 100644 examples/extended/field/field01/src/F01DetectorMessenger.cc create mode 100644 examples/extended/field/field01/src/F01ElectroMagneticField.cc create mode 100644 examples/extended/field/field01/src/F01EventAction.cc create mode 100644 examples/extended/field/field01/src/F01EventActionMessenger.cc create mode 100644 examples/extended/field/field01/src/F01FieldMessenger.cc create mode 100644 examples/extended/field/field01/src/F01PhysicsList.cc create mode 100644 examples/extended/field/field01/src/F01PhysicsListMessenger.cc create mode 100644 examples/extended/field/field01/src/F01PrimaryGeneratorAction.cc create mode 100644 examples/extended/field/field01/src/F01PrimaryGeneratorMessenger.cc create mode 100644 examples/extended/field/field01/src/F01RunAction.cc rename examples/extended/{electromagnetic/TestEm1/src/Em1RunActionMessenger.cc => field/field01/src/F01RunMessenger.cc} (81%) create mode 100644 examples/extended/field/field01/src/F01StepCut.cc create mode 100644 examples/extended/field/field01/src/F01SteppingAction.cc create mode 100644 examples/extended/field/field01/src/F01SteppingMessenger.cc create mode 100644 examples/extended/field/field01/src/F01SteppingVerbose.cc create mode 100644 examples/extended/field/field01/src/F01VisManager.cc create mode 100644 examples/extended/field/field02/GNUmakefile create mode 100644 examples/extended/field/field02/History create mode 100644 examples/extended/field/field02/README create mode 100644 examples/extended/field/field02/field02.cc create mode 100644 examples/extended/field/field02/field02.in create mode 100644 examples/extended/field/field02/field02.out create mode 100644 examples/extended/field/field02/include/F02CalorHit.hh create mode 100644 examples/extended/field/field02/include/F02CalorimeterSD.hh create mode 100644 examples/extended/field/field02/include/F02DetectorConstruction.hh create mode 100644 examples/extended/field/field02/include/F02DetectorMessenger.hh create mode 100644 examples/extended/field/field02/include/F02ElectroMagneticField.hh create mode 100644 examples/extended/field/field02/include/F02EventAction.hh rename examples/extended/{electromagnetic/TestEm1/include/Em1RunActionMessenger.hh => field/field02/include/F02EventActionMessenger.hh} (78%) create mode 100644 examples/extended/field/field02/include/F02FieldMessenger.hh create mode 100644 examples/extended/field/field02/include/F02PhysicsList.hh create mode 100644 examples/extended/field/field02/include/F02PhysicsListMessenger.hh create mode 100644 examples/extended/field/field02/include/F02PrimaryGeneratorAction.hh create mode 100644 examples/extended/field/field02/include/F02PrimaryGeneratorMessenger.hh create mode 100644 examples/extended/field/field02/include/F02RunAction.hh create mode 100644 examples/extended/field/field02/include/F02RunMessenger.hh create mode 100644 examples/extended/field/field02/include/F02StepCut.hh create mode 100644 examples/extended/field/field02/include/F02SteppingAction.hh create mode 100644 examples/extended/field/field02/include/F02SteppingMessenger.hh create mode 100644 examples/extended/field/field02/include/F02SteppingVerbose.hh create mode 100644 examples/extended/field/field02/include/F02VisManager.hh create mode 100644 examples/extended/field/field02/src/F02CalorHit.cc create mode 100644 examples/extended/field/field02/src/F02CalorimeterSD.cc create mode 100644 examples/extended/field/field02/src/F02DetectorConstruction.cc create mode 100644 examples/extended/field/field02/src/F02DetectorMessenger.cc create mode 100644 examples/extended/field/field02/src/F02ElectroMagneticField.cc create mode 100644 examples/extended/field/field02/src/F02EventAction.cc create mode 100644 examples/extended/field/field02/src/F02EventActionMessenger.cc create mode 100644 examples/extended/field/field02/src/F02FieldMessenger.cc create mode 100644 examples/extended/field/field02/src/F02PhysicsList.cc create mode 100644 examples/extended/field/field02/src/F02PhysicsListMessenger.cc create mode 100644 examples/extended/field/field02/src/F02PrimaryGeneratorAction.cc create mode 100644 examples/extended/field/field02/src/F02PrimaryGeneratorMessenger.cc create mode 100644 examples/extended/field/field02/src/F02RunAction.cc rename examples/extended/{electromagnetic/TestEm2/src/Em2RunActionMessenger.cc => field/field02/src/F02RunMessenger.cc} (78%) create mode 100644 examples/extended/field/field02/src/F02StepCut.cc create mode 100644 examples/extended/field/field02/src/F02SteppingAction.cc create mode 100644 examples/extended/field/field02/src/F02SteppingMessenger.cc create mode 100644 examples/extended/field/field02/src/F02SteppingVerbose.cc create mode 100644 examples/extended/field/field02/src/F02VisManager.cc create mode 100644 examples/extended/field/field03/GNUmakefile create mode 100644 examples/extended/field/field03/History create mode 100644 examples/extended/field/field03/README create mode 100644 examples/extended/field/field03/field03.cc create mode 100644 examples/extended/field/field03/field03.in create mode 100644 examples/extended/field/field03/field03.out create mode 100644 examples/extended/field/field03/include/F03CalorHit.hh create mode 100644 examples/extended/field/field03/include/F03CalorimeterSD.hh create mode 100644 examples/extended/field/field03/include/F03DetectorConstruction.hh create mode 100644 examples/extended/field/field03/include/F03DetectorMessenger.hh create mode 100644 examples/extended/field/field03/include/F03ElectroMagneticField.hh create mode 100644 examples/extended/field/field03/include/F03EventAction.hh rename examples/extended/{electromagnetic/TestEm2/include/Em2RunActionMessenger.hh => field/field03/include/F03EventActionMessenger.hh} (78%) create mode 100644 examples/extended/field/field03/include/F03FieldMessenger.hh create mode 100644 examples/extended/field/field03/include/F03PhysicsList.hh rename source/persistency/geometry/management/include/G4VSolidRefArray.hh => examples/extended/field/field03/include/F03PhysicsListMessenger.hh (58%) create mode 100644 examples/extended/field/field03/include/F03PrimaryGeneratorAction.hh create mode 100644 examples/extended/field/field03/include/F03PrimaryGeneratorMessenger.hh create mode 100644 examples/extended/field/field03/include/F03RunAction.hh create mode 100644 examples/extended/field/field03/include/F03RunMessenger.hh create mode 100644 examples/extended/field/field03/include/F03StepCut.hh create mode 100644 examples/extended/field/field03/include/F03SteppingAction.hh create mode 100644 examples/extended/field/field03/include/F03SteppingMessenger.hh create mode 100644 examples/extended/field/field03/include/F03SteppingVerbose.hh create mode 100644 examples/extended/field/field03/include/F03VisManager.hh create mode 100644 examples/extended/field/field03/src/F03CalorHit.cc create mode 100644 examples/extended/field/field03/src/F03CalorimeterSD.cc create mode 100644 examples/extended/field/field03/src/F03DetectorConstruction.cc create mode 100644 examples/extended/field/field03/src/F03DetectorMessenger.cc create mode 100644 examples/extended/field/field03/src/F03ElectroMagneticField.cc create mode 100644 examples/extended/field/field03/src/F03EventAction.cc create mode 100644 examples/extended/field/field03/src/F03EventActionMessenger.cc create mode 100644 examples/extended/field/field03/src/F03FieldMessenger.cc create mode 100644 examples/extended/field/field03/src/F03PhysicsList.cc create mode 100644 examples/extended/field/field03/src/F03PhysicsListMessenger.cc create mode 100644 examples/extended/field/field03/src/F03PrimaryGeneratorAction.cc create mode 100644 examples/extended/field/field03/src/F03PrimaryGeneratorMessenger.cc create mode 100644 examples/extended/field/field03/src/F03RunAction.cc rename examples/extended/{electromagnetic/TestEm4/src/Em4RunActionMessenger.cc => field/field03/src/F03RunMessenger.cc} (81%) create mode 100644 examples/extended/field/field03/src/F03StepCut.cc create mode 100644 examples/extended/field/field03/src/F03SteppingAction.cc create mode 100644 examples/extended/field/field03/src/F03SteppingMessenger.cc create mode 100644 examples/extended/field/field03/src/F03SteppingVerbose.cc create mode 100644 examples/extended/field/field03/src/F03VisManager.cc rename examples/novice/N02/{initInter.mac => vis.mac} (76%) create mode 100644 examples/novice/N03/vis.mac create mode 100644 examples/novice/N03/visTutor/History create mode 100644 examples/novice/N03/visTutor/exN03Vis9.mac delete mode 100644 source/analysis/GNUmakefile delete mode 100644 source/analysis/Lab/GNUmakefile delete mode 100644 source/analysis/Lab/include/G4LabSystem.hh delete mode 100644 source/analysis/Lab/src/G4LabSystem.cc delete mode 100644 source/analysis/Lizard/GNUmakefile delete mode 100644 source/analysis/Lizard/src/G4LizardSystem.cc delete mode 100644 source/analysis/jas/GNUmakefile delete mode 100644 source/analysis/jas/include/JasHistogram1D.h delete mode 100644 source/analysis/jas/include/JasHistogram2D.h delete mode 100644 source/analysis/jas/src/JasHistogram1D.cc delete mode 100644 source/analysis/jas/src/JasHistogram2D.cc delete mode 100644 source/analysis/jas/src/JasHistogramFactory.cc delete mode 100644 source/analysis/management/GNUmakefile delete mode 100644 source/analysis/management/src/G4AnalysisManager.cc create mode 100644 source/g3tog4/include/G3toG4MANY.hh create mode 100644 source/g3tog4/src/G3toG4MANY.cc create mode 100644 source/g3tog4/src/G4gsbool.cc create mode 100644 source/geometry/magneticfield/include/G4DELPHIMagField.hh rename source/{analysis/management/include/G4VAnalysisSystem.hh => geometry/magneticfield/include/G4HarmonicPolMagField.hh} (64%) create mode 100644 source/geometry/magneticfield/include/G4LineCurrentMagField.hh rename source/{analysis/Lizard/include/G4LizardSystem.hh => geometry/magneticfield/include/G4QuadrupoleMagField.hh} (64%) create mode 100644 source/geometry/magneticfield/src/G4DELPHIMagField.cc create mode 100644 source/geometry/magneticfield/src/G4HarmonicPolMagField.cc rename source/{analysis/jas/include/JasHistogramFactory.h => geometry/magneticfield/src/G4LineCurrentMagField.cc} (63%) create mode 100644 source/geometry/magneticfield/src/G4QuadrupoleMagField.cc create mode 100644 source/geometry/management/include/G4SmartVoxelStat.hh create mode 100644 source/geometry/management/include/G4TouchableHandle.hh create mode 100644 source/geometry/management/src/G4SmartVoxelStat.cc create mode 100644 source/geometry/solids/Boolean/include/G4ReflectedSolid.hh create mode 100644 source/geometry/solids/Boolean/include/G4ReflectionFactory.hh create mode 100644 source/geometry/solids/Boolean/src/G4ReflectedSolid.cc create mode 100644 source/geometry/solids/Boolean/src/G4ReflectionFactory.cc create mode 100644 source/geometry/verification/GNUmakefile create mode 100644 source/geometry/verification/History create mode 100644 source/geometry/verification/include/G4GeomTestErrorList.hh create mode 100644 source/geometry/verification/include/G4GeomTestLogger.hh create mode 100644 source/geometry/verification/include/G4GeomTestOverlapList.hh create mode 100644 source/geometry/verification/include/G4GeomTestOvershootList.hh create mode 100644 source/geometry/verification/include/G4GeomTestPoint.hh create mode 100644 source/geometry/verification/include/G4GeomTestSegment.hh create mode 100644 source/geometry/verification/include/G4GeomTestStreamLogger.hh create mode 100644 source/geometry/verification/include/G4GeomTestVolPoint.hh create mode 100644 source/geometry/verification/include/G4GeomTestVolume.hh create mode 100644 source/geometry/verification/src/G4GeomTestErrorList.cc create mode 100644 source/geometry/verification/src/G4GeomTestOverlapList.cc create mode 100644 source/geometry/verification/src/G4GeomTestOvershootList.cc create mode 100644 source/geometry/verification/src/G4GeomTestPoint.cc create mode 100644 source/geometry/verification/src/G4GeomTestSegment.cc create mode 100644 source/geometry/verification/src/G4GeomTestStreamLogger.cc create mode 100644 source/geometry/verification/src/G4GeomTestVolPoint.cc create mode 100644 source/geometry/verification/src/G4GeomTestVolume.cc rename source/{processes/electromagnetic/lowenergy/src/G4SecondLevel.cc => geometry/volumes/include/G4GRSSolidHandle.hh} (65%) create mode 100644 source/geometry/volumes/include/G4GRSVolumeHandle.hh create mode 100644 source/geometry/volumes/include/G4GeometryMessenger.hh create mode 100644 source/geometry/volumes/include/G4TouchableHistoryHandle.hh create mode 100644 source/geometry/volumes/src/G4GeometryMessenger.cc delete mode 100644 source/global/STLInterface/GNUmakefile delete mode 100644 source/global/STLInterface/History delete mode 100644 source/global/STLInterface/g4rw/defs.h delete mode 100644 source/global/STLInterface/g4rw/tpordvec.h delete mode 100644 source/global/STLInterface/g4rw/tpordvec.icc delete mode 100644 source/global/STLInterface/g4rw/tpsrtvec.h delete mode 100644 source/global/STLInterface/g4rw/tpsrtvec.icc delete mode 100644 source/global/STLInterface/g4rw/tpvector.icc delete mode 100644 source/global/STLInterface/g4rw/tvordvec.h delete mode 100644 source/global/STLInterface/g4rw/tvordvec.icc delete mode 100644 source/global/STLInterface/g4rw/tvvector.h delete mode 100644 source/global/STLInterface/g4rw/tvvector.icc create mode 100755 source/global/management/include/G4ReferenceCountedHandle.hh rename source/global/{STLInterface/g4rw/cstring.h => management/include/G4String.hh} (93%) rename source/global/{STLInterface/g4rw/cstring.icc => management/include/G4String.icc} (96%) rename source/global/{STLInterface/g4rw/ctoken.h => management/include/G4Tokenizer.hh} (89%) create mode 100644 source/global/management/include/g4std/deque rename source/global/{STLInterface => management/include/g4std}/wrappers/AIX-xlC/cmath (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/AIX-xlC/cstdio (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/AIX-xlC/cstdlib (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/AIX-xlC/cstring (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/DEC-cxx/cmath (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/DEC-cxx/cstdio (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/DEC-cxx/cstdlib (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/DEC-cxx/cstring (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/HP-aCC/fstream (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/HP-aCC/iomanip (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/HP-aCC/iostream (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/HP-aCC/strstream (100%) rename source/global/{STLInterface => management/include/g4std}/wrappers/SGI-CC/iostream (100%) rename source/global/{STLInterface/wrappers/SUN-CC => management/include/g4std/wrappers/SUN-CC4}/cmath (100%) rename source/global/{STLInterface/wrappers/SUN-CC => management/include/g4std/wrappers/SUN-CC4}/cstdio (100%) rename source/global/{STLInterface/wrappers/SUN-CC => management/include/g4std/wrappers/SUN-CC4}/cstdlib (100%) rename source/global/{STLInterface/wrappers/SUN-CC => management/include/g4std/wrappers/SUN-CC4}/cstring (100%) create mode 100644 source/global/management/src/G4DataVector.cc create mode 100644 source/global/management/src/G4OrderedTable.cc create mode 100644 source/graphics_reps/include/G4Scale.hh create mode 100644 source/graphics_reps/include/G4Scale.icc create mode 100644 source/graphics_reps/src/G4Scale.cc create mode 100644 source/intercoms/include/G4UIaliasList.hh create mode 100644 source/intercoms/src/G4UIaliasList.cc create mode 100644 source/parameterisations/include/G4FoamXTRdEdx.hh create mode 100644 source/parameterisations/include/G4GamDistrXTRdEdx.hh create mode 100644 source/parameterisations/include/G4IrregularXTRdEdx.hh create mode 100644 source/parameterisations/include/G4PlateIrrGasXTRdEdx.hh create mode 100644 source/parameterisations/include/G4RegularXTRdEdx.hh create mode 100644 source/parameterisations/include/G4VXTRdEdx.hh rename source/{persistency/geometry/management/include/G4VPhysVolRefArray.hh => parameterisations/include/G4VXrayTRadModel.hh} (55%) create mode 100644 source/parameterisations/src/G4FoamXTRdEdx.cc create mode 100644 source/parameterisations/src/G4GamDistrXTRdEdx.cc create mode 100644 source/parameterisations/src/G4IrregularXTRdEdx.cc create mode 100644 source/parameterisations/src/G4PlateIrrGasXTRdEdx.cc create mode 100644 source/parameterisations/src/G4RegularXTRdEdx.cc create mode 100644 source/parameterisations/src/G4VXTRdEdx.cc create mode 100644 source/parameterisations/src/G4VXrayTRadModel.cc rename source/{persistency/geometry/management/include/G4LogVolRefArray.hh => particles/management/include/G4NeutronBetaDecayChannel.hh} (57%) create mode 100644 source/particles/management/include/G4ParticleDefinition.icc create mode 100644 source/particles/management/src/G4NeutronBetaDecayChannel.cc delete mode 100644 source/processes/electromagnetic/integral/include/G4IMuBremsstrahlung.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4IMuBremsstrahlung.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4IMuIonisation.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4IMuIonisation.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4IMuPairProduction.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4IMuPairProduction.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4IMultipleScattering.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4IMultipleScattering.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4IeBremsstrahlung.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4IeBremsstrahlung.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4IeIonisation.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4IeIonisation.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4IeplusAnnihilation.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4IeplusAnnihilation.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4IhIonisation.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4IhIonisation.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4VIMuEnergyLoss.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4VIMuEnergyLoss.icc delete mode 100644 source/processes/electromagnetic/integral/include/G4VIeEnergyLoss.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4VIhEnergyLoss.hh delete mode 100644 source/processes/electromagnetic/integral/include/G4VIhEnergyLoss.icc delete mode 100644 source/processes/electromagnetic/integral/src/G4IMuBremsstrahlung.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4IMuIonisation.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4IMuPairProduction.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4IMultipleScattering.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4IeBremsstrahlung.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4IeIonisation.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4IeplusAnnihilation.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4IhIonisation.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4VIMuEnergyLoss.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4VIeEnergyLoss.cc delete mode 100644 source/processes/electromagnetic/integral/src/G4VIhEnergyLoss.cc create mode 100644 source/processes/electromagnetic/lowenergy/include/G4AtomicDeexcitation.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4AtomicTransition.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungCrossSectionHandler.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4CutsPerMaterialWarning.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4FluoData.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh delete mode 100644 source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.icc delete mode 100644 source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.icc delete mode 100644 source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.icc delete mode 100644 source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.icc delete mode 100644 source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.icc delete mode 100644 source/processes/electromagnetic/lowenergy/include/G4LowEnergyUtilities.hh rename source/processes/electromagnetic/lowenergy/include/{G4SecondLevel.hh => G4RangeNoTest.hh} (68%) rename source/processes/electromagnetic/lowenergy/include/{G4ThirdLevel.hh => G4RangeTest.hh} (68%) create mode 100644 source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4ShellData.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4ShellVacancy.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4VEnergySpectrum.hh rename source/processes/electromagnetic/lowenergy/include/{G4FirstLevel.hh => G4VRangeTest.hh} (71%) create mode 100644 source/processes/electromagnetic/lowenergy/include/G4VhShellCrossSection.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh create mode 100644 source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh delete mode 100644 source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.icc create mode 100644 source/processes/electromagnetic/lowenergy/include/G4hShellCrossSection.hh create mode 100644 source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4AtomicTransition.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungCrossSectionHandler.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4CrossSectionHandler.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4CutsPerMaterialWarning.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4FluoData.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4LinInterpolation.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4LogLogInterpolation.cc delete mode 100644 source/processes/electromagnetic/lowenergy/src/G4LowEnergyUtilities.cc rename source/processes/electromagnetic/lowenergy/src/{G4FirstLevel.cc => G4RangeTest.cc} (66%) create mode 100644 source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4ShellData.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4ShellVacancy.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4VhShellCrossSection.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc create mode 100644 source/processes/electromagnetic/lowenergy/src/G4hShellCrossSection.cc delete mode 100644 source/processes/electromagnetic/utils/include/G4EnergyLossTables.icc delete mode 100644 source/processes/electromagnetic/utils/include/G4MultipleScatteringx.hh delete mode 100644 source/processes/electromagnetic/utils/include/G4MultipleScatteringx.icc delete mode 100644 source/processes/electromagnetic/utils/src/G4MultipleScatteringx.cc create mode 100644 source/processes/hadronic/cross_sections/include/G4ElectroNuclearCrossSection.hh create mode 100644 source/processes/hadronic/cross_sections/include/G4PhotoNuclearCrossSection.hh create mode 100644 source/processes/hadronic/cross_sections/src/G4ElectroNuclearCrossSection.cc create mode 100644 source/processes/hadronic/cross_sections/src/G4PhotoNuclearCrossSection.cc create mode 100644 source/processes/hadronic/models/cascade/GNUmakefile create mode 100644 source/processes/hadronic/models/cascade/evaporation/GNUmakefile create mode 100644 source/processes/hadronic/models/cascade/evaporation/doc/evaporation.mdl create mode 100644 source/processes/hadronic/models/cascade/evaporation/doc/evaporation.mdl.eps create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BEChargedChannel.hh create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BEDeuteronChannel.hh create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BEGammaDeexcitation.hh create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BEHe3Channel.hh create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BEHe4Channel.hh create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BENeutronChannel.hh create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BEProtonChannel.hh create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BETritonChannel.hh rename source/{visualization/management/include/G4VisCommandsCreateScene.hh => processes/hadronic/models/cascade/evaporation/include/G4BertiniEvaporation.hh} (52%) create mode 100644 source/processes/hadronic/models/cascade/evaporation/include/G4BertiniEvaporationChannel.hh create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BEChargedChannel.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BEDeuteronChannel.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BEGammaDeexcitation.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BEHe3Channel.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BEHe4Channel.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BENeutronChannel.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BEProtonChannel.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BETritonChannel.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BertiniEvaporation.cc create mode 100644 source/processes/hadronic/models/cascade/evaporation/src/G4BertiniEvaporationChannel.cc rename source/processes/{electromagnetic/integral => hadronic/models/cascade/utils}/GNUmakefile (53%) create mode 100644 source/processes/hadronic/models/cascade/utils/include/G4LayeredNucleus.hh rename source/{visualization/management/src/G4VisCommandsCamera.cc => processes/hadronic/models/cascade/utils/src/G4LayeredNucleus.cc} (58%) create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/GNUmakefile create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/GNUmakefile create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Chips.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCHIPSWorld.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidate.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidateVector.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QChipolino.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QContent.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChan.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChanVector.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadronVector.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QNucleus.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCode.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCodeVector.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentCluster.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentClusterVector.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticle.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticleVector.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSelector.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Quasmon.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonVector.hh create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCHIPSWorld.cc create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCandidate.cc create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QChipolino.cc create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QContent.cc create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QDecayChan.cc create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QHadron.cc create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QNucleus.cc create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParentCluster.cc create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParticle.cc create mode 100755 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QSelector.cc create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/GNUmakefile create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ChiralInvariantPhaseSpace.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ElectroNuclearReaction.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4GammaNuclearReaction.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4PionMinusNuclearAtRestChips.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4PionMinusNuclearReaction.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ProtonAntiProtonAtRestChips.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ProtonAntiProtonReaction.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4StringChipsInterface.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4StringChipsParticleLevelInterface.hh create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4StringChipsInterface.cc create mode 100644 source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4StringChipsParticleLevelInterface.cc create mode 100644 source/processes/hadronic/models/coherent_elastic/GNUmakefile create mode 100644 source/processes/hadronic/models/coherent_elastic/include/G4LEnp.hh create mode 100644 source/processes/hadronic/models/coherent_elastic/include/G4LEnpData.hh create mode 100644 source/processes/hadronic/models/coherent_elastic/include/G4LEpp.hh create mode 100644 source/processes/hadronic/models/coherent_elastic/include/G4LEppData.hh create mode 100644 source/processes/hadronic/models/coherent_elastic/src/G4LEnp.cc create mode 100644 source/processes/hadronic/models/coherent_elastic/src/G4LEpp.cc create mode 100644 source/processes/hadronic/models/generator/pre_equilibrium/include/G4LowEIonFragmentation.hh create mode 100644 source/processes/hadronic/models/generator/pre_equilibrium/src/G4LowEIonFragmentation.cc create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/include/G4HeavyIonParticipants.hh rename source/processes/hadronic/models/generator/quark_gluon_string/{src/G4QGSModel.cc => include/G4QGSModel.icc} (64%) create mode 100644 source/processes/hadronic/models/generator/quark_gluon_string/src/G4HeavyIonParticipants.cc create mode 100644 source/processes/hadronic/models/generator/string_fragmentation/include/G4FragmentingString.hh create mode 100644 source/processes/hadronic/models/generator/string_fragmentation/include/G4HadronBuilder.hh create mode 100644 source/processes/hadronic/models/generator/string_fragmentation/include/G4VKinkyStringDecay.hh create mode 100644 source/processes/hadronic/models/generator/string_fragmentation/src/G4FragmentingString.cc create mode 100644 source/processes/hadronic/models/generator/string_fragmentation/src/G4HadronBuilder.cc create mode 100644 source/processes/hadronic/models/generator/string_fragmentation/src/G4VKinkyStringDecay.cc create mode 100644 source/processes/hadronic/models/generator/util/include/G4SampleResonance.hh create mode 100644 source/processes/hadronic/models/generator/util/src/G4SampleResonance.cc create mode 100644 source/processes/hadronic/models/radiative_decay/History delete mode 100644 source/processes/hadronic/models/radiative_decay/include/G4ParticleChangeForRadDecay.hh create mode 100644 source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh create mode 100644 source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh create mode 100644 source/processes/hadronic/processes/include/G4PositronNuclearProcess.hh create mode 100644 source/processes/hadronic/util/src/G4IsoResult.cc rename source/visualization/FukuiRenderer/{src => include}/G4FRSceneFunc.icc (81%) create mode 100644 source/visualization/HepRep/GNUmakefile create mode 100644 source/visualization/HepRep/History create mode 100644 source/visualization/HepRep/README rename source/{global/STLInterface/g4rw/rw2stl_algo.h => visualization/HepRep/include/G4HepRepFile.hh} (71%) create mode 100644 source/visualization/HepRep/include/G4HepRepFileSceneHandler.hh rename source/visualization/{management/include/G4VisCommandsPrint.hh => HepRep/include/G4HepRepFileViewer.hh} (68%) rename source/{global/STLInterface/g4rw/tpvector.h => visualization/HepRep/include/HepRepXMLWriter.hh} (53%) create mode 100644 source/visualization/HepRep/src/G4HepRepFile.cc create mode 100644 source/visualization/HepRep/src/G4HepRepFileSceneHandler.cc create mode 100644 source/visualization/HepRep/src/G4HepRepFileViewer.cc create mode 100644 source/visualization/HepRep/src/HepRepXMLWriter.cc rename source/{processes/electromagnetic/integral => visualization/OpenInventor}/History (77%) create mode 100644 source/visualization/OpenInventor/include/G4SoWindow.hh create mode 100644 source/visualization/OpenInventor/src/G4SoWindow.cc create mode 100644 source/visualization/README.built_in_commands create mode 100644 source/visualization/README.quick create mode 100644 source/visualization/XXX/GNUmakefile create mode 100644 source/visualization/XXX/History rename source/{analysis/jas/include/JasAxis.h => visualization/XXX/include/G4XXX.hh} (76%) create mode 100644 source/visualization/XXX/include/G4XXXSceneHandler.hh rename source/{global/STLInterface/g4rw/rstream.h => visualization/XXX/include/G4XXXViewer.hh} (74%) rename source/{processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.icc => visualization/XXX/src/G4XXX.cc} (54%) create mode 100644 source/visualization/XXX/src/G4XXXSceneHandler.cc rename source/{analysis/jas/src/G4JasSystem.cc => visualization/XXX/src/G4XXXViewer.cc} (65%) delete mode 100644 source/visualization/management/include/G4VisCommandTemplates.hh delete mode 100644 source/visualization/management/include/G4VisCommandTemplates.icc delete mode 100644 source/visualization/management/include/G4VisCommandsClear.hh delete mode 100644 source/visualization/management/include/G4VisCommandsCopy.hh delete mode 100644 source/visualization/management/include/G4VisCommandsCreateView.hh delete mode 100644 source/visualization/management/include/G4VisCommandsDelete.hh delete mode 100644 source/visualization/management/include/G4VisCommandsDraw.hh delete mode 100644 source/visualization/management/include/G4VisCommandsLights.hh delete mode 100644 source/visualization/management/include/G4VisCommandsRefresh.hh delete mode 100644 source/visualization/management/include/G4VisCommandsSceneInclude.hh delete mode 100644 source/visualization/management/include/G4VisCommandsSet.hh delete mode 100644 source/visualization/management/include/G4VisCommandsShow.hh delete mode 100644 source/visualization/management/include/G4VisManMessenger.hh delete mode 100644 source/visualization/management/src/G4VisCommandTemplates.cc delete mode 100644 source/visualization/management/src/G4VisCommandsSceneInclude.cc delete mode 100644 source/visualization/management/src/G4VisManMessCamera.cc delete mode 100644 source/visualization/management/src/G4VisManMessCreateView.cc delete mode 100644 source/visualization/management/src/G4VisManMessDraw.cc delete mode 100644 source/visualization/management/src/G4VisManMessExpert.cc delete mode 100644 source/visualization/management/src/G4VisManMessLights.cc delete mode 100644 source/visualization/management/src/G4VisManMessSet.cc delete mode 100644 source/visualization/management/src/G4VisManMessenger.cc delete mode 100644 source/visualization/management/src/G4VisManagerRegisterMessengers.cc delete mode 100644 source/visualization/management/src/G4VisToOldVisCommands.cc create mode 100644 source/visualization/modeling/include/G4ScaleModel.hh rename source/{analysis/jas/src/JasAxis.cc => visualization/modeling/include/G4ScaleModel.icc} (76%) create mode 100644 source/visualization/modeling/src/G4ScaleModel.cc diff --git a/Configure b/Configure index 6c97c2fd08..5a7efc4cc1 100755 --- a/Configure +++ b/Configure @@ -18,9 +18,9 @@ # you may fetch it yourself from your nearest archive site.) # -# $Id: Configure,v 1.11 2001/07/03 13:25:59 sadilov Exp $ +# $Id: Configure,v 1.20 2001/12/14 12:19:57 sadilov Exp $ # -# Generated on Tue Jul 3 15:21:54 CEST 2001 [metaconfig 3.0 PL70] +# Generated on Fri Dec 14 13:19:47 CET 2001 [metaconfig 3.0 PL70] cat >/tmp/c1$$ <&2 error=true fi - cd UU + cd .config/UU shift;; -h) shift; error=true;; -r) shift; reuseval=true;; @@ -758,7 +694,7 @@ case "$src" in #echo "rsrc=$rsrc" ;; ./*) cur_dir=`pwd` - cd ../$src + cd ../../$src src=`pwd` cd $cur_dir rsrc="$src/.." @@ -766,7 +702,7 @@ rsrc="$src/.." #echo "src=$src" #echo "rsrc=$rsrc" ;; -*) rsrc="../$src" +*) rsrc="../../$src" #echo "rsrc=$rsrc" ;; esac @@ -779,10 +715,10 @@ then else rsrc='' for src in . .. ../.. ../../.. ../../../..; do - if test -f ../$src/Configure && \ - $contains "^package=$package" ../$src/Configure >/dev/null 2>&1 + if test -f ../../$src/Configure && \ + $contains "^package=$package" ../../$src/Configure >/dev/null 2>&1 then - rsrc=../$src + rsrc=../../$src break fi done @@ -803,10 +739,11 @@ case "$rsrc" in echo "Ok, I've found them under $src" else echo "Sorry, I can't seem to be able to locate $package sources." >&4 + echo "Please, use absolute path or relative with './' to Configure." >&4 exit 1 fi ;; -../.) ;; +../../.) ;; *) echo " " echo "Sources for $package found in $src" >&4 @@ -930,9 +867,9 @@ true) . $config test "$override" && . ./optdef.sh echo " " - cd .. - . UU/extract - rm -rf UU + cd ../.. + . .config/UU/extract + rm -rf .config/UU echo "Done." exit 0 ;; @@ -961,7 +898,7 @@ echo " " echo " " fi -trap 'echo " ";rm -rf ../UU; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15 +trap 'echo " ";rm -rf ../../.config/UU; test -d ../../.config/UU && rm -rf X $rmlist; exit 1' 1 2 3 15 : create .config dir to save info across Configure sessions test -d ../.config || mkdir ../.config @@ -980,7 +917,7 @@ case "$user" in '') user=`whoami 2>&1`;; esac if [ X$install = Xyes ] ; then -if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then +if $contains "^$user\$" ../../.config/instruct >/dev/null 2>&1; then firsttime=false echo " " rp='Would you like to see the instructions?' @@ -1006,9 +943,8 @@ a question, you may use a ! shell escape to start a subshell or execute a command. Many of the questions will have default answers in square brackets; typing carriage return will set the default. -If asked for a path or file name, you are allowed to use the ~username -construct to specify the AFS path. -Questions where this is allowed will be marked "(~username ok)". +On AFS it is allowed to specify either absolute or relative +paths (i.e. starting with the ~username construct). EOH rp='' @@ -1025,9 +961,9 @@ Everytime there is a substitution, you will have to confirm. If there is an error (e.g. an unmatched backtick), the default answer will remain unchanged and you will be prompted again. -Running 'Configure -d' will bypass nearly all the questions and use the -computed defaults (or the previous answers if there was already a config.sh -file generated). +Running 'Configure -d' will bypass nearly all the questions and +use the computed defaults (or answers saved in a configuration +previously generated). Type 'Configure -h' for a list of options. @@ -1041,19 +977,19 @@ EOH Much effort has been spent to ensure that this shell script will run on any Unix system. If despite that you can't run Configure for some reason, you'll have to set the proper environment variables by hand and follow the "manual" -installation. +installation as specified in the Geant4 Installation Guide. EOH dflt='Type carriage return to continue' . ./myread case "$firsttime" in - true) echo $user >>../.config/instruct;; + true) echo $user >>../../.config/instruct;; esac fi : find out where common programs are -echo " " -echo "Locating common programs..." >&4 +#echo " " +#echo "Locating common programs..." >&4 cat <loc $startsh case \$# in @@ -1102,6 +1038,7 @@ tr " trylist=" date +gcc ln test uname @@ -1126,10 +1063,10 @@ for file in $loclist; do eval _$file=$xxx case "$xxx" in /*) - echo $file is in $xxx. + echo "$file is in $xxx." > /dev/null ;; ?:[\\/]*) - echo $file is in $xxx. + echo "$file is in $xxx." > /dev/null ;; *) echo "I don't know where '$file' is." >&4 @@ -1138,8 +1075,8 @@ for file in $loclist; do ;; esac done -echo " " -echo "Don't worry if any of the following aren't found..." +#echo " " +#echo "Don't worry if any of the following aren't found..." say=offhand for file in $trylist; do eval xxx=\$$file @@ -1159,10 +1096,10 @@ for file in $trylist; do eval _$file=$xxx case "$xxx" in /*) - echo $file is in $xxx. + echo "$file is in $xxx." > /dev/null ;; ?:[\\/]*) - echo $file is in $xxx. + echo "$file is in $xxx." > /dev/null ;; *) echo "I don't see $file out there, $say." @@ -1172,23 +1109,23 @@ for file in $trylist; do done case "$egrep" in egrep) - echo "Substituting grep for egrep." +# echo "Substituting grep for egrep." egrep=$grep ;; esac case "$ln" in ln) - echo "Substituting cp for ln." +# echo "Substituting cp for ln." ln=$cp ;; esac case "$test" in test) - echo "Hopefully test is built into your sh." + echo "Hopefully test is built into your sh." > /dev/null ;; *) if `sh -c "PATH= test true" >/dev/null 2>&1`; then - echo "Using the test built into your sh." + echo "Using the test built into your sh." > /dev/null test=test _test=test fi @@ -1196,16 +1133,16 @@ test) esac case "$echo" in echo) - echo "Hopefully echo is built into your sh." + echo "Hopefully echo is built into your sh." > /dev/null ;; '') ;; *) - echo " " -echo "Checking compatibility between $echo and builtin echo (if any)..." >&4 +# echo " " +#echo "Checking compatibility between $echo and builtin echo (if any)..." >&4 $echo $n "hi there$c" >foo1 echo $n "hi there$c" >foo2 if cmp foo1 foo2 >/dev/null 2>&1; then - echo "They are compatible. In fact, they may be identical." + echo "They are compatible. In fact, they may be identical." > /dev/null else case "$n" in '-n') n='' c='\c';; @@ -1226,29 +1163,29 @@ FOO esac : determine whether symbolic links are supported -echo " " +#echo " " $touch blurfl if $ln -s blurfl sym > /dev/null 2>&1 ; then - echo "Symbolic links are supported." >&4 +# echo "Symbolic links are supported." >&4 lns="$ln -s" else - echo "Symbolic links are NOT supported." >&4 +# echo "Symbolic links are NOT supported." >&4 lns="$ln" fi $rm -f blurfl sym : see whether [:lower:] and [:upper:] are supported character classes -echo " " +#echo " " up='[A-Z]' low='[a-z]' case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in ABYZ) - echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4 +# echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4 up='[:upper:]' low='[:lower:]' ;; *) - echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4 +# echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4 ;; esac : set up the translation script tr, must be called with ./tr of course @@ -1267,6 +1204,8 @@ $eunicefix tr case "$config_sh" in '') myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1` + +mygcc=`( ($g++ -v) 2>/dev/null) 2>&1` myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \ ./tr '[A-Z]' '[a-z]' | tr '\012' ' '` newmyuname="$myuname" @@ -1288,9 +1227,11 @@ esac : Get old answers from old config file if Configure was run on the : same system, otherwise use the hints. hint=default -cd .. +cd ../.. - (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4 + if $test -d $src/hints ; then + (cd $src/hints; ls -C *.sh 2> /dev/null) | $sed 's/\.sh/ /g' >&4 + fi dflt='' : Half the following guesses are probably wrong... If you have better : tests or hints, please send them to Serguei.Sadilov@cern.ch @@ -1502,11 +1443,11 @@ cd .. esac else if test -f /vmunix -a -f $src/hints/news_os.sh; then - (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1 - if $contains news-os UU/kernel.what >/dev/null 2>&1; then + (what /vmunix | .config/UU/tr '[A-Z]' '[a-z]') > .config/UU/kernel.what 2>&1 + if $contains news-os .config/UU/kernel.what >/dev/null 2>&1; then osname=news_os fi - $rm -f UU/kernel.what + $rm -f .config/UU/kernel.what elif test -d c:/.; then set X $myuname osname=os2 @@ -1561,12 +1502,12 @@ If your OS version has no hints, DO NOT give a wrong version -- say "none". EOM rp="Which of these apply, if any?" - . UU/myread + . .config/UU/myread tans=$ans for file in $tans; do if $test -f $src/hints/$file.sh; then . $src/hints/$file.sh - $cat $src/hints/$file.sh >> UU/config.sh + $cat $src/hints/$file.sh >> .config/UU/config.sh elif $test X$tans = X -o X$tans = Xnone ; then : nothing else @@ -1574,11 +1515,11 @@ EOM echo "$file.sh does not exist" dflt=$file rp="hint to use instead?" - . UU/myread + . .config/UU/myread for file in $ans; do if $test -f "$src/hints/$file.sh"; then . $src/hints/$file.sh - $cat $src/hints/$file.sh >> UU/config.sh + $cat $src/hints/$file.sh >> .config/UU/config.sh elif $test X$ans = X -o X$ans = Xnone ; then : nothing else @@ -1634,7 +1575,20 @@ case "$g4compiler" in g4compiler=aCC ;; 'Linux') - g4compiler=g++ +# g4compiler=g++ +# Assume if "gcc" is in place then "g++" is here + gcccompiler=`( ($gcc -v) 1>/dev/null || echo "ERROR: There is no 'gcc' ('g++'?) compiler.") 2>&1` + case $gcccompiler in + *egcs*) g4compiler=egcs + ;; + *2.96*) + echo "WARNING: Found version of 'g++' (2.96.XXX) is known to be buggy!" + g4compiler="g++" + ;; + *) g4compiler="g++" + ;; + esac + ;; 'SGI') g4compiler=CC @@ -1661,7 +1615,7 @@ EOM` dflt="Press [Enter] for default settings" rp=$g4message -. UU/myread +. .config/UU/myread gans=$ans case $gans in @@ -1689,7 +1643,7 @@ gans=$ans esac dflt=$g4osname rp="What is your OS'?" - . UU/myread + . .config/UU/myread tans=$ans if test X$tans != X$g4osnamerec ; then @@ -1704,7 +1658,7 @@ EOM dflt=$tans rp="Confirm your selection or set native '$g4osnamerec'!" - . UU/myread + . .config/UU/myread tans=$ans fi @@ -1733,7 +1687,7 @@ EOM esac dflt=$g4compiler rp="Which C++ compiler?" - . UU/myread + . .config/UU/myread tans=$ans if test X$tans != X$g4compilerrec ; then @@ -1748,7 +1702,7 @@ EOM dflt=$tans rp="Confirm your selection or set recommended '$g4compilerrec'!" - . UU/myread + . .config/UU/myread tans=$ans fi @@ -1776,7 +1730,7 @@ G4SYSTEM is now set to $g4system. EOM -cd UU +cd .config/UU myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1` myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \ @@ -1784,21 +1738,32 @@ myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \ newmyuname="$myuname" dflt=n -cd .. +cd ../.. if [ X$install = X ] ; then if test -f $src/.config/bin/$g4system/env.sh; then cat >&2 </dev/null 2>&1; then eval "`grep myuname= $src/.config/bin/$g4system/config.sh`" @@ -1824,17 +1789,17 @@ case "$knowitall" in dflt=y fi fi - cd UU + cd .config/UU ;; *) dflt=y;; esac -cd .. +cd ../.. if test -f $src/.config/bin/$g4system/config.sh; then echo " " rp="There exists a config.sh file. Shall I use it to set the defaults?" - . UU/myread + . .config/UU/myread case "$ans" in n*|N*) echo "OK, I'll ignore it."; mv $src/.config/bin/$g4system/config.sh $src/.config/bin/$g4system/config.sh.old;; *) echo "Fetching default answers from your old config.sh file..." >&4 @@ -1842,7 +1807,7 @@ if test -f $src/.config/bin/$g4system/config.sh; then tmp_c="$c" tmp_sh="$sh" . $src/.config/bin/$g4system/config.sh - cp $src/.config/bin/$g4system/config.sh UU + cp $src/.config/bin/$g4system/config.sh .config/UU n="$tmp_n" c="$tmp_c" : Older versions did not always set $sh. Catch re-use of such @@ -1855,18 +1820,18 @@ if test -f $src/.config/bin/$g4system/config.sh; then esac fi -cd UU +cd .config/UU ;; *) echo " " echo "Fetching default answers from $config_sh..." >&4 tmp_n="$n" tmp_c="$c" - cd .. + cd ../.. cp $config_sh config.sh 2>/dev/null chmod +w config.sh . ./config.sh - cd UU + cd .config/UU cp ../config.sh . n="$tmp_n" c="$tmp_c" @@ -1881,6 +1846,7 @@ for file in $loclist $trylist; do eval $file="\$_$file" done + : who configured the system cf_time=`$date 2>&1` cf_by=`(logname) 2>/dev/null` @@ -2025,17 +1991,17 @@ case "$exp_file" in ;; esac -cd .. +cd ../.. while test "$type"; do redo='' rp="$orig_rp" dflt="$orig_dflt" case "$tilde" in - true) rp="$rp (~name ok)";; + true) rp="$rp ";; esac - . UU/myread - if test -f UU/getfile.ok && \ - $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1 + . .config/UU/myread + if test -f .config/UU/getfile.ok && \ + $contains "^$ans\$" .config/UU/getfile.ok >/dev/null 2>&1 then value="$ans" ansexp="$ans" @@ -2054,7 +2020,7 @@ while test "$type"; do '') value="$ans" ansexp="$ans";; *) - value=`UU/filexp $ans` + value=`.config/UU/filexp $ans` case $? in 0) if test "$ans" != "$value"; then @@ -2144,7 +2110,7 @@ while test "$type"; do dflt=n fi rp="$what $value doesn't exist. Use that name anyway?" - . UU/myread + . .config/UU/myread dflt='' case "$ans" in y*) type='';; @@ -2157,7 +2123,7 @@ while test "$type"; do ;; esac done -cd UU +cd .config/UU ans="$value" rp="$orig_rp" dflt="$orig_dflt" @@ -2171,9 +2137,9 @@ echo " " #echo "SSS" if [ X$src = X. ] ; then - cd .. + cd ../.. abssrc=`pwd` - cd UU + cd .config/UU else abssrc=$src fi @@ -2192,12 +2158,6 @@ case "$g4install" in ;; esac -case "$g4base" in -'') - g4base=$g4install/source - ;; -esac - case "$g4workdir" in '') g4workdir=$g4install @@ -2250,7 +2210,7 @@ Where will be directory to copy all Geant4 headers? EOM` #dflt="NO DEFAULT ANSWER" -dflt=$g4include +dflt=$g4install/include fn='d~+' rp=$g4message . ./getfile @@ -2258,7 +2218,6 @@ g4include=$ans fi -g4base=$g4install/source #if test "X$g4include" = "X[NOT DEFINED]" ; then #g4include="" #fi @@ -2277,12 +2236,6 @@ case "$g4lib" in ;; esac -case "$g4bin" in -'') - g4bin=$g4workdir/bin - ;; -esac - while test 1 = 1 ; do g4message=`cat << EOM @@ -2290,14 +2243,11 @@ g4message=`cat << EOM (OPTIONAL) You can now customise installation directories: G4TMP - tmp/ containing temporary dependency (.d) and object (.o) files; G4LIB - lib/ containing final static (.a) or shared (.so) libraries; - G4BIN - bin/ containing final executable and scripts. 1) G4TMP: $g4tmp 2) G4LIB: $g4lib -3) G4BIN: $g4bin - Select from list above (e.g. 2) EOM` @@ -2325,13 +2275,13 @@ gans=$ans . ./getfile g4lib=$ans ;; - 3) - dflt=$g4bin - fn='d~+' - rp="Where will be your Geant4 bin directory?" - . ./getfile - g4bin=$ans - ;; +# 3) +# dflt=$g4bin +# fn='d~+' +# rp="Where will be your Geant4 bin directory?" +# . ./getfile +# g4bin=$ans +# ;; # [eE]) # break @@ -2342,96 +2292,7 @@ gans=$ans ;; esac done -echo " " -case "$g4clhep_base_dir" in -'') - g4clhep_base_dir=/usr/local - ;; -esac -case "$g4clhep_include_dir" in -'') - g4clhep_include_dir=$g4clhep_base_dir/include - ;; -esac - -case "$g4clhep_lib_dir" in -'') - g4clhep_lib_dir=$g4clhep_base_dir/lib - ;; -esac - -case "$g4clhep_lib" in -'') - g4clhep_lib=CLHEP - ;; -esac - -#while test 1 = 1 ; do - -g4message=`cat << EOM - -Please, specify where CLHEP is installed: - -CLHEP_BASE_DIR: $g4clhep_base_dir - -According to it will be set: - -CLHEP_INCLUDE_DIR: \\$CLHEP_BASE_DIR/include -CLHEP_LIB_DIR: \\$CLHEP_BASE_DIR/lib -CLHEP_LIB: CLHEP - -If you need to change one of those last three you can do it by editing -the generated config.sh at the end of this session. -EOM` - - -#dflt="Press [Enter] for default settings" -#fn='d~' -rp=$g4message -#. ./myread -#gans=$ans - -# case $gans in - -# 1) - dflt=$g4clhep_base_dir - fn='d~' -# rp="Where is CLHEP installed?" - . ./getfile - g4clhep_base_dir=$ans - g4clhep_include_dir=$ans/include - g4clhep_lib_dir=$ans/lib -# ;; -# 2) -# dflt=$g4clhep_include_dir -# fn='d~' -# rp="Where is CLHEP include directory?" -# . ./getfile -# g4clhep_include_dir=$ans -# ;; -# 3) -# dflt=$g4clhep_lib_dir -# fn='d~' -# rp="Where is CLHEP lib directory?" -# . ./getfile -# g4clhep_lib_dir=$ans -# ;; -# 4) -# dflt=$g4clhep_lib -# rp="What is CLHEP lib title?" -# . ./myread -# g4clhep_lib=$ans -# ;; -## [eE]) -## break -## ;; -# *) -# echo " " -# break -# ;; -# esac -#done echo " " case "$g4data" in @@ -2454,13 +2315,13 @@ esac case "$g4ledata" in '') - g4ledata=$g4install/../G4EMLOW + g4ledata=$g4install/../G4EMLOW0.5 ;; esac case "$g4neutronhpcrosssections" in '') - g4neutronhpcrosssections=$g4install/../G4NDL + g4neutronhpcrosssections=$g4install/../G4NDL3.5 ;; esac @@ -2510,14 +2371,14 @@ gans=$ans 3) dflt=$g4ledata fn='f~' - rp="Where is G4EMLOW0.3 data installed ?" + rp="Where is G4EMLOW0.5 data installed ?" . ./getfile g4ledata=$ans ;; 4) dflt=$g4neutronhpcrosssections fn='f~' - rp="Where is G4NDL0.2 installed?" + rp="Where is G4NDL3.5 installed?" . ./getfile g4neutronhpcrosssections=$ans ;; @@ -2531,6 +2392,297 @@ gans=$ans esac done +echo " " +case "$g4clhep_base_dir" in +'') + g4clhep_base_dir=/usr/local + ;; +esac + +case "$g4clhep_include_dir" in +'') + g4clhep_include_dir=$g4clhep_base_dir/include + ;; +esac + +case "$g4clhep_lib_dir" in +'') + g4clhep_lib_dir=$g4clhep_base_dir/lib + ;; +esac + +case "$g4clhep_lib" in +'') + g4clhep_lib=CLHEP + ;; +esac + +#while test 1 = 1 ; do + +g4message=`cat << EOM + +Please, specify where CLHEP is installed: + +CLHEP_BASE_DIR: $g4clhep_base_dir + +According to it will be set: + +CLHEP_INCLUDE_DIR +CLHEP_LIB_DIR +CLHEP_LIB + +You will be asked about customizing these next. +EOM` + + +#dflt="Press [Enter] for default settings" +#fn='d~' +rp=$g4message +#. ./myread +#gans=$ans + +# case $gans in + +# 1) + dflt=$g4clhep_base_dir + fn='d~' +# rp="Where is CLHEP installed?" + . ./getfile + g4clhep_base_dir=$ans + g4clhep_include_dir=$ans/include + g4clhep_lib_dir=$ans/lib +# ;; +# 2) +# dflt=$g4clhep_include_dir +# fn='d~' +# rp="Where is CLHEP include directory?" +# . ./getfile +# g4clhep_include_dir=$ans +# ;; +# 3) +# dflt=$g4clhep_lib_dir +# fn='d~' +# rp="Where is CLHEP lib directory?" +# . ./getfile +# g4clhep_lib_dir=$ans +# ;; +# 4) +# dflt=$g4clhep_lib +# rp="What is CLHEP lib title?" +# . ./myread +# g4clhep_lib=$ans +# ;; +## [eE]) +## break +## ;; +# *) +# echo " " +# break +# ;; +# esac +#done + +while test 1 = 1 ; do + +g4message=`cat << EOM + +You can customize paths of you CLHEP installation: + +1) CLHEP_INCLUDE_DIR: $g4clhep_include_dir +2) CLHEP_LIB_DIR: $g4clhep_lib_dir +3) CLHEP_LIB: $g4clhep_lib + +Select from list above (e.g. 2) +EOM` + + +dflt="Press [Enter] for default settings" +#fn='d~' +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + 1) + dflt=$g4clhep_include_dir + fn='d~' + rp="Where is CLHEP include directory?" + . ./getfile + g4clhep_include_dir=$ans + ;; + 2) + dflt=$g4clhep_lib_dir + fn='d~' + rp="Where is CLHEP lib directory?" + . ./getfile + g4clhep_lib_dir=$ans + ;; + 3) + dflt=$g4clhep_lib + rp="What is CLHEP lib title?" + . ./myread + g4clhep_lib=$ans + ;; +# [eE]) +## break +## ;; + *) +# echo " " + break + ;; + esac +done + + + +echo " " +case "$g4global" in +'') + g4global=n + ;; +esac + +echo " " +# By default it's 'grabular'! +case "$g4granular" in +'') + g4granular=y + ;; +esac + +echo " " +# Will be set (if needed) in GNUmakefile! +case "$g4lib_use_granular" in +'') + g4lib_use_granular=n + ;; +esac + +# +# Ask about g4global - default "(empty)". +# +echo "" + +while test 1 = 1 ; do + +g4message=`cat << EOM + +Do you want to build 'global' compound libraries? +EOM` + +dflt=$g4global +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4global=n + g4granular=y + g4lib_use_granular=n + break + ;; + y*|Y*) + g4global=y + g4granular=n + g4lib_use_granular=n + break + ;; +# [eE]) +# break +# ;; +# *) +# echo " " +# break +# ;; + esac +done + +if [ X$g4global = Xy ] ; then +# +# Ask about g4granular - default "n". +# +echo "" + +while test 1 = 1 ; do + +g4message=`cat << EOM + +Granular libraries are used by defaults, you asked to build global +compound libraries. Do you want to build 'granular' libraries too? +EOM` + +dflt=$g4granular +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4granular=n + break + ;; + y*|Y*) + g4granular=y + break + ;; +# [eE]) +# break +# ;; +# *) +# echo " " +# break +# ;; + esac +done + +if [ X$g4granular = Xy ] ; then +# +# Ask about g4lib_use_granular - default "n". +# +echo "" + +while test 1 = 1 ; do + +g4message=`cat << EOM + +Global libraries are used by defaults, you asked to build global +compound libraries and granular libraries. +Do you want to use 'granular' libraries instead? +EOM` + +dflt=$g4lib_use_granular +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + break + ;; + y*|Y*) + g4lib_use_granular=y + break + ;; +# [eE]) +# break +# ;; +# *) +# echo " " +# break +# ;; + esac +done +fi +fi + +### End file - without will be problem! Check in others... + + echo " " case "$g4debug" in '') @@ -2574,143 +2726,6 @@ gans=$ans esac done -echo " " -case "$g4global" in -'') - g4global=n - ;; -esac - -# -# Ask about g4global - default "(empty)". -# -echo "" - -while test 1 = 1 ; do - -g4message=`cat << EOM - -Do you want to build 'global' compound libraries? -EOM` - -dflt=$g4global -rp=$g4message -. ./myread -gans=$ans - - case $gans in - - n*|N*) - g4global=n - break - ;; - y*|Y*) - g4global=y - break - ;; -# [eE]) -# break -# ;; -# *) -# echo " " -# break -# ;; - esac -done - -echo " " -case "$g4granular" in -'') - g4granular=n - ;; -esac - -if [ X$g4global = Xy ] ; then -# -# Ask about g4granular - default "n". -# -echo "" - -while test 1 = 1 ; do - -g4message=`cat << EOM - -Granular libraries are used by defaults, you asked to build global -compound libraries. Do you want to build 'granular' libraries too? -EOM` - -dflt=$g4granular -rp=$g4message -. ./myread -gans=$ans - - case $gans in - - n*|N*) - g4granular=n - break - ;; - y*|Y*) - g4granular=y - break - ;; -# [eE]) -# break -# ;; -# *) -# echo " " -# break -# ;; - esac -done -fi - -echo " " -case "$g4lib_use_granular" in -'') - g4lib_use_granular=n - ;; -esac - -if [ X$g4granular = Xy ] ; then -# -# Ask about g4lib_use_granular - default "n". -# -echo "" - -while test 1 = 1 ; do - -g4message=`cat << EOM - -Global libraries are used by defaults, you asked to build global -compound libraries and granular libraries. -Do you want to use 'granular' libraries instead? -EOM` - -dflt=$g4lib_use_granular -rp=$g4message -. ./myread -gans=$ans - - case $gans in - - n*|N*) - break - ;; - y*|Y*) - g4lib_use_granular=y - break - ;; -# [eE]) -# break -# ;; -# *) -# echo " " -# break -# ;; - esac -done -fi echo " " case "$g4lib_build_shared" in @@ -2868,73 +2883,38 @@ fi echo " " -case "$g4use_ospace" in + +case "$g4ui_none" in '') - g4use_ospace=n + g4ui_none=n ;; esac -case "$g4ospace_base_dir" in -'') - g4ospace_base_dir="" - ;; -esac - -# -# Ask about g4install used. -# -echo "" - -g4message=`cat << EOM - -In case your compiler do not provide 'native' STL and choose for a non -ISO/ANSI installation, ObjectSpace STL (if available in your system) may -be used and its installation path specified. - -Do you want to use ObjectSpace STL? -EOM` - -dflt=$g4use_ospace -rp=$g4message -. ./myread -g4use_ospace=$ans - -if [ X$g4use_ospace = Xy ] ; then - -dflt=$g4ospace_base_dir -fn='d~' -rp="Where is OSPACE installed?" -. ./getfile -g4ospace_base_dir=$ans - -fi - -#if test "X$g4use_ospace" = "X[NOT DEFINED]" ; then -#g4use_ospace="" -#fi - -echo " " +# Set by default! case "$g4ui_build_terminal_session" in '') g4ui_build_terminal_session=y ;; esac +# Set by default! case "$g4ui_use_terminal" in '') g4ui_use_terminal=y ;; esac +# Set by default! case "$g4ui_build_gag_session" in '') - g4ui_build_gag_session=n + g4ui_build_gag_session=y ;; esac +# Set by default! case "$g4ui_use_gag" in '') - g4ui_use_gag=n + g4ui_use_gag=y ;; esac @@ -2944,24 +2924,36 @@ case "$g4ui_build_xm_session" in ;; esac -case "$g4ui_build_xaw_session" in -'') - g4ui_build_xaw_session=n - ;; -esac - case "$g4ui_use_xm" in '') g4ui_use_xm=n ;; esac +case "$g4ui_build_xaw_session" in +'') + g4ui_build_xaw_session=n + ;; +esac + case "$g4ui_use_xaw" in '') g4ui_use_xaw=n ;; esac +case "$g4ui_build_wo_session" in +'') + g4ui_build_wo_session=n + ;; +esac + +case "$g4ui_use_wo" in +'') + g4ui_use_wo=n + ;; +esac + case "$g4ui_build_win32_session" in '') g4ui_build_win32_session=n @@ -2974,14 +2966,43 @@ case "$g4ui_use_win32" in ;; esac +# Set by default! case "$g4ui_use_tcsh" in '') - g4ui_use_tcsh=n + g4ui_use_tcsh=y ;; esac echo "" +g4message=`cat << EOM + + G4UI_NONE + +If set, no UI sessions nor any UI libraries are built. This can be useful +when running a pure batch job or in a user framework having its own UI system. + +EOM` + +dflt=$g4ui_none +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4ui_none=n + ;; + y*|Y*) + g4ui_none=y + ;; + esac + +case $g4ui_none in + +n) + g4message=`cat << EOM G4UI_BUILD_TERMINAL_SESSION @@ -2995,8 +3016,9 @@ EOM` dflt=$g4ui_use_terminal rp=$g4message -. ./myread -gans=$ans +#. ./myread +#gans=$ans +gans=y case $gans in @@ -3023,8 +3045,9 @@ EOM` dflt=$g4ui_use_gag rp=$g4message -. ./myread -gans=$ans +#. ./myread +#gans=$ans +gans=y case $gans in @@ -3041,12 +3064,12 @@ gans=$ans g4message=`cat << EOM G4UI_BUILD_XAW_SESSION - Specifies to include in kernel library the XAW - Motif-based user interfaces. - G4UI_USE_XAW - Specifies to use the XAW interfaces in the + + Specifies to include and use the XAW interfaces in the application to be built. + The XAW (X11 Athena Widget set) extensions are required to activate + and build this driver. EOM` dflt=$g4ui_use_xaw @@ -3069,12 +3092,12 @@ gans=$ans g4message=`cat << EOM G4UI_BUILD_XM_SESSION - Specifies to include in kernel library the XM - Motif-based user interfaces. - G4UI_USE_XM - Specifies to use the XM interfaces in the - application to be built. + + Specifies to include and use the XM Motif based user interfaces. + The XM Motif extensions are required to activate and build this + driver. + EOM` dflt=$g4ui_use_xm @@ -3098,12 +3121,11 @@ gans=$ans g4message=`cat << EOM G4UI_BUILD_WIN32_SESSION - Specifies to include in kernel library the WIN32 terminal interface - for Windows systems. - G4UI_USE_WIN32 - Specifies to use the WIN32 interfaces in the application to be built - on Windows systems. + + Specifies to include and use the terminal interface for + Windows systems. + EOM` dflt=$g4ui_use_win32 @@ -3123,6 +3145,34 @@ gans=$ans ;; esac +g4message=`cat << EOM + + G4UI_BUILD_WO_SESSION + G4UI_USE_WO + + Specifies to include in kernel library and use the OPACS WO terminal + interface for the OPACS system. The OPACS tool must be installed + to activate and build this driver ! + +EOM` + +dflt=$g4ui_use_wo +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4ui_build_wo_session=n + g4ui_use_wo=n + ;; + y*|Y*) + g4ui_build_wo_session=y + g4ui_use_wo=y + ;; + esac + g4message=`cat << EOM G4UI_USE_TCSH @@ -3132,8 +3182,9 @@ EOM` dflt=$g4ui_use_tcsh rp=$g4message -. ./myread -gans=$ans +#. ./myread +#gans=$ans +gans=y case $gans in @@ -3145,49 +3196,64 @@ gans=$ans ;; esac +;; +esac + echo " " -case "$g4use_hepodbms" in +case "$g4vis_none" in '') - g4use_hepodbms=n + g4vis_none=n ;; esac -g4message=`cat << EOM +case "$g4vis_build_openglwin32_driver" in +'') + g4vis_build_openglwin32_driver=n + ;; +esac - G4USE_HEPODBMS -In Geant4, object persistency is provided as an optional category, so -that the users could be able to run Geant4 with or without a commercial -ODBMS package. How to store and retrieve Geant4 events, hits and geometry -objects is explained in documentation. -EOM` +case "$g4vis_use_openglwin32" in +'') + g4vis_use_openglwin32=n + ;; +esac -dflt=$g4use_hepodbms -rp=$g4message -. ./myread -gans=$ans +case "$g4vis_build_oiwin32_driver" in +'') + g4vis_build_oiwin32_driver=n + ;; +esac - case $gans in - - n*|N*) - g4use_hepodbms=n - ;; - y*|Y*) - g4use_hepodbms=y - ;; - esac +case "$g4vis_use_oiwin32" in +'') + g4vis_use_oiwin32=n + ;; +esac - -echo " " case "$g4vis_build_dawn_driver" in '') g4vis_build_dawn_driver=n ;; esac +case "$g4vis_use_dawn" in +'') + g4vis_use_dawn=n + ;; +esac + +# Set by default! case "$g4vis_build_dawnfile_driver" in '') - g4vis_build_dawnfile_driver=n + g4vis_build_dawnfile_driver=y + ;; +esac + +# Set by default! +case "$g4vis_use_dawnfile" in +'') + g4vis_use_dawnfile=y ;; esac @@ -3197,27 +3263,59 @@ case "$g4vis_build_opacs_driver" in ;; esac +case "$g4vis_use_opacs" in +'') + g4vis_use_opacs=n + ;; +esac + case "$g4vis_build_openglx_driver" in '') g4vis_build_openglx_driver=n ;; esac +case "$g4vis_use_openglx" in +'') + g4vis_use_openglx=n + ;; +esac + case "$g4vis_build_openglxm_driver" in '') g4vis_build_openglxm_driver=n ;; esac +case "$g4vis_use_openglxm" in +'') + g4vis_use_openglxm=n + ;; +esac + case "$g4vis_build_oix_driver" in '') g4vis_build_oix_driver=n ;; esac +case "$g4vis_use_oix" in +'') + g4vis_use_oix=n + ;; +esac + +# Set by default! case "$g4vis_build_raytracer_driver" in '') - g4vis_build_raytracer_driver=n + g4vis_build_raytracer_driver=y + ;; +esac + +# Set by default! +case "$g4vis_use_raytracer" in +'') + g4vis_use_raytracer=y ;; esac @@ -3227,9 +3325,9 @@ case "$g4vis_build_vrml_driver" in ;; esac -case "$g4vis_build_vrmlfile_driver" in +case "$g4vis_use_vrml" in '') - g4vis_build_vrmlfile_driver=n + g4vis_use_vrml=n ;; esac @@ -3240,60 +3338,6 @@ case "$g4vis_build_asciitree_driver" in ;; esac -case "$g4vis_use_dawn" in -'') - g4vis_use_dawn=n - ;; -esac - -case "$g4vis_use_dawnfile" in -'') - g4vis_use_dawnfile=n - ;; -esac - -case "$g4vis_use_opacs" in -'') - g4vis_use_opacs=n - ;; -esac - -case "$g4vis_use_openglx" in -'') - g4vis_use_openglx=n - ;; -esac - -case "$g4vis_use_openglxm" in -'') - g4vis_use_openglxm=n - ;; -esac - -case "$g4vis_use_oix" in -'') - g4vis_use_oix=n - ;; -esac - -case "$g4vis_use_raytracer" in -'') - g4vis_use_raytracer=n - ;; -esac - -case "$g4vis_use_vrml" in -'') - g4vis_use_vrml=n - ;; -esac - -case "$g4vis_use_vrmlfile" in -'') - g4vis_use_vrmlfile=n - ;; -esac - # Set by default! case "$g4vis_use_asciitree" in '') @@ -3301,23 +3345,31 @@ case "$g4vis_use_asciitree" in ;; esac +# Set by default! +case "$g4vis_build_gagtree_driver" in +'') + g4vis_build_gagtree_driver=y + ;; +esac + +# Set by default! +case "$g4vis_use_gagtree" in +'') + g4vis_use_gagtree=y + ;; +esac + echo "" g4message=`cat << EOM - G4VIS_BUILD_DAWN_DRIVER - G4VIS_USE_DAWN + G4VIS_NONE + +If specified, no visualization drivers will be built or used. -DAWN drivers are interfaces to Fukui Renderer DAWN. It is a vectorized 3D -PostScript processor, and so well suited to prepare technical high -quality outputs for presentation and/or documentation. -When Geant4 Visualization is performed with the DAWN driver, -the visualized view is automatically saved to a file -named g4.eps in the current directory, which describes a vectorized -(Encapsulated) PostScript data of the view. EOM` -dflt=$g4vis_use_dawn +dflt=$g4vis_none rp=$g4message . ./myread gans=$ans @@ -3325,81 +3377,26 @@ gans=$ans case $gans in n*|N*) - g4vis_build_dawn_driver=n - g4vis_use_dawn=n + g4vis_none=n ;; y*|Y*) - g4vis_build_dawn_driver=y - g4vis_use_dawn=y + g4vis_none=y ;; esac -g4message=`cat << EOM +case $g4vis_none in - G4VIS_BUILD_DAWNFILE_DRIVER - G4VIS_USE_DAWNFILE - -DAWN drivers are interfaces to Fukui Renderer DAWN. It is a vectorized 3D -PostScript processor, and so well suited to prepare technical high -quality outputs for presentation and/or documentation. -The DAWNFILE driver sends 3D data to DAWN via an intermediate file, -named g4.prim in the current directory. The file g4.prim is able to -be re-visualized later without the help of Geant4. -EOM` - -dflt=$g4vis_use_dawnfile -rp=$g4message -. ./myread -gans=$ans - - case $gans in - - n*|N*) - g4vis_build_dawnfile_driver=n - g4vis_use_dawnfile=n - ;; - y*|Y*) - g4vis_build_dawnfile_driver=y - g4vis_use_dawnfile=y - ;; - esac - -g4message=`cat << EOM - - G4VIS_BUILD_OPACS_DRIVER - G4VIS_USE_OPACS - -OPACS is a visualization environment based on X windows and OpenGL. -It is written in ANSI C and is highly portable (UNIX, NT/X11, VMS). -EOM` - -dflt=$g4vis_use_opacs -rp=$g4message -. ./myread -gans=$ans - - case $gans in - - n*|N*) - g4vis_build_opacs_driver=n - g4vis_use_opacs=n - ;; - y*|Y*) - g4vis_build_opacs_driver=y - g4vis_use_opacs=y - ;; - esac +n) g4message=`cat << EOM G4VIS_BUILD_OPENGLX_DRIVER G4VIS_USE_OPENGLX -It is an interface to the de facto standard 3D graphics library, OpenGL. -It is well suited for real-time fast visualization -and demonstration. Fast visualization is realized with hardware -acceleration, reuse of shapes stored in a display list, etc. -NURBS visualization is also supported. This is version for Xlib. +It is an interface to the de facto standard 3D graphics library, +OpenGL. It is well suited for real-time fast visualization +and prototyping. The X11 version of the OpenGL libraries is +required. EOM` dflt=$g4vis_use_openglx @@ -3424,11 +3421,11 @@ g4message=`cat << EOM G4VIS_BUILD_OPENGLXM_DRIVER G4VIS_USE_OPENGLXM -It is an interface to the de facto standard 3D graphics library, OpenGL. -It is well suited for real-time fast visualization -and demonstration. Fast visualization is realized with hardware -acceleration, reuse of shapes stored in a display list, etc. -NURBS visualization is also supported. This is version for Motif. +It is an interface to the de facto standard 3D graphics library, +OpenGL. It is well suited for real-time fast visualization +and prototyping. The X11 version of the OpenGL libraries and +the Motif Xm extension is required. + EOM` dflt=$g4vis_use_openglxm @@ -3448,15 +3445,73 @@ gans=$ans ;; esac +g4message=`cat << EOM + + G4VIS_BUILD_OPENGLWIN32_DRIVER + G4VIS_USE_OPENGLWIN32 + +It is an interface to the de facto standard 3D graphics library, +OpenGL. It is well suited for real-time fast visualization +and prototyping. The Windows version of the OpenGL libraries is +required. + +EOM` + +dflt=$g4vis_use_openglwin32 +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4vis_build_openglwin32_driver=n + g4vis_use_openglwin32=n + ;; + y*|Y*) + g4vis_build_openglwin32_driver=y + g4vis_use_openglwin32=y + ;; + esac + +g4message=`cat << EOM + + G4VIS_BUILD_DAWN_DRIVER + G4VIS_USE_DAWN + +DAWN drivers are interfaces to the Fukui Renderer DAWN. DAWN is +a vectorized 3D PostScript processor suited to prepare technical +high quality outputs for presentation and/or documentation. + +EOM` + +dflt=$g4vis_use_dawn +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4vis_build_dawn_driver=n + g4vis_use_dawn=n + ;; + y*|Y*) + g4vis_build_dawn_driver=y + g4vis_use_dawn=y + ;; + esac + g4message=`cat << EOM G4VIS_BUILD_OIX_DRIVER G4VIS_USE_OIX -These drivers are based on the "Hepvis class library". -The OpenInventor drivers and the Hepvis class library are based on the -well-established OpenInventor technology for scientific visualization. -They have high extendibility. +This driver is based on the "Hepvis" class library. +The OpenInventor driver and the Hepvis class library are based +on OpenInventor technology for scientific visualization. +The X11 version of OpenInventor is required. + EOM` dflt=$g4vis_use_oix @@ -3476,6 +3531,93 @@ gans=$ans ;; esac +g4message=`cat << EOM + + G4VIS_BUILD_OIWIN32_DRIVER + G4VIS_USE_OIWIN32 + +Specifies to build and use the driver for the free X11 version of +OpenInventor on Windows systems. +The Windows version of OpenInventor is required. + +EOM` + +dflt=$g4vis_use_oiwin32 +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4vis_build_oiwin32_driver=n + g4vis_use_oiwin32=n + ;; + y*|Y*) + g4vis_build_oiwin32_driver=y + g4vis_use_oiwin32=y + ;; + esac + +g4message=`cat << EOM + + G4VIS_BUILD_DAWNFILE_DRIVER + G4VIS_USE_DAWNFILE + +DAWN drivers are interfaces to Fukui Renderer DAWN. It is a vectorized 3D +PostScript processor, and so well suited to prepare technical high +quality outputs for presentation and/or documentation. +The DAWNFILE driver sends 3D data to DAWN via an intermediate file, +named g4.prim in the current directory. The file g4.prim is able to +be re-visualized later without the help of Geant4. +EOM` + +dflt=$g4vis_use_dawnfile +rp=$g4message +#. ./myread +#gans=$ans +gans=y + + case $gans in + + n*|N*) + g4vis_build_dawnfile_driver=n + g4vis_use_dawnfile=n + ;; + y*|Y*) + g4vis_build_dawnfile_driver=y + g4vis_use_dawnfile=y + ;; + esac + +g4message=`cat << EOM + + G4VIS_BUILD_OPACS_DRIVER + G4VIS_USE_OPACS + +OPACS is a visualization environment based on X windows and OpenGL. +It is written in ANSI C and is highly portable (UNIX, NT/X11, VMS). +The OPACS tool is required to activate and build this driver. + +EOM` + +dflt=$g4vis_use_opacs +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4vis_build_opacs_driver=n + g4vis_use_opacs=n + ;; + y*|Y*) + g4vis_build_opacs_driver=y + g4vis_use_opacs=y + ;; + esac + g4message=`cat << EOM G4VIS_BUILD_RAYTRACER_DRIVER @@ -3489,8 +3631,9 @@ EOM` dflt=$g4vis_use_raytracer rp=$g4message -. ./myread -gans=$ans +#. ./myread +#gans=$ans +gans=y case $gans in @@ -3509,8 +3652,9 @@ g4message=`cat << EOM G4VIS_BUILD_VRML_DRIVER G4VIS_USE_VRML -This driver generates VRML files, which describe 3D scenes to be -visualized with a proper VRML viewer, at either a local or a remote host. +These driver generate VRML files, which describe 3D scenes to be +visualized with a proper VRML viewer. + EOM` dflt=$g4vis_use_vrml @@ -3547,8 +3691,9 @@ EOM` dflt=$g4vis_use_vrmlfile rp=$g4message -. ./myread -gans=$ans +#. ./myread +#gans=$ans +gans=y case $gans in @@ -3562,6 +3707,7 @@ gans=$ans ;; esac + g4message=`cat << EOM G4VIS_BUILD_ASCIITREE_DRIVER @@ -3574,6 +3720,7 @@ dflt=$g4vis_use_asciitree rp=$g4message # Don't ask by default and set to 'y'! #. ./myread +#gans=$ans gans=y case $gans in @@ -3589,30 +3736,74 @@ gans=y esac +g4message=`cat << EOM + + G4VIS_BUILD_GAGTREE_DRIVER + G4VIS_USE_GAGTREE + +Description???????????????????????? +EOM` + +dflt=$g4vis_use_gagtree +rp=$g4message +# Don't ask by default and set to 'y'! +#. ./myread +#gans=$ans +gans=y + + case $gans in + + n*|N*) + g4vis_build_gagtree_driver=n + g4vis_use_gagtree=n + ;; + y*|Y*) + g4vis_build_gagtree_driver=y + g4vis_use_gagtree=y + ;; + esac + +;; +esac + + echo " " -case "$g4wanalysis_build" in +case "$g4use_hepodbms" in '') - g4wanalysis_build=n + g4use_hepodbms=n ;; esac -case "$g4wanalysis_build_jas" in -'') - g4wanalysis_build_jas=n - ;; -esac +g4message=`cat << EOM -case "$g4wanalysis_build_lab" in -'') - g4wanalysis_build_lab=n - ;; -esac +G4USE_HEPODBMS +In Geant4, object persistency is provided as an optional category, so +that the users could be able to run Geant4 with or without a commercial +ODBMS package. How to store and retrieve Geant4 events, hits and geometry +objects is explained in documentation. -case "$g4wanalysis_build_lizard" in -'') - g4wanalysis_build_lizard=n - ;; -esac +For setting this you should have an ODMG compliant database +(e.g. Objectivity/DB) installed and running on your system! +EOM` + +dflt=$g4use_hepodbms +rp=$g4message +. ./myread +gans=$ans + + case $gans in + + n*|N*) + g4use_hepodbms=n + ;; + y*|Y*) + g4use_hepodbms=y + ;; + esac + + + +echo " " case "$g4wanalysis_use" in '') @@ -3620,34 +3811,17 @@ case "$g4wanalysis_use" in ;; esac -case "$g4wanalysis_use_jas" in -'') - g4wanalysis_use_jas=n - ;; -esac - -case "$g4wanalysis_use_lab" in -'') - g4wanalysis_use_lab=n - ;; -esac - -case "$g4wanalysis_use_lizard" in -'') - g4wanalysis_use_lizard=n - ;; -esac - echo "" g4message=`cat << EOM - G4ANALYSIS_BUILD G4ANALYSIS_USE - Specifies to include building (using) of the abstract G4analysisManager for - activating interfaces based on AIDA to analysis drivers. - No histogramming capabilities are possible without a specific - wanalysis driver activated. + +Activates the configuration setup for allowing plugins to +analysis tools based on AIDA (Astract Interfaces for Data +Analysis). In order to use AIDA features and compliant analysis +tools, the proper environment for these tools will have to be +set (see documentation for the specific analysis tools). EOM` dflt=$g4wanalysis_use @@ -3658,94 +3832,13 @@ gans=$ans case $gans in n*|N*) - g4wanalysis_build=n g4wanalysis_use=n ;; y*|Y*) - g4wanalysis_build=y g4wanalysis_use=y ;; esac -g4message=`cat << EOM - - G4ANALYSIS_BUILD_LAB - Includes the Open Scientist proxy driver for analysis in the kernel. - - G4ANALYSIS_USE_LAB - To use Open Scientist as analysis system in the application - to be built. -EOM` - -dflt=$g4wanalysis_use_lab -rp=$g4message -. ./myread -gans=$ans - - case $gans in - - n*|N*) - g4wanalysis_build_lab=n - g4wanalysis_use_lab=n - ;; - y*|Y*) - g4wanalysis_build_lab=y - g4wanalysis_use_lab=y - ;; - esac - -g4message=`cat << EOM - - G4ANALYSIS_BUILD_LIZARD - Includes the Lizard proxy driver for analysis in the kernel. - - G4ANALYSIS_USE_LIZARD - To use Lizard as analysis system in the application to be built. -EOM` - -dflt=$g4wanalysis_use_lizard -rp=$g4message -. ./myread -gans=$ans - - case $gans in - - n*|N*) - g4wanalysis_build_lizard=n - g4wanalysis_use_lizard=n - ;; - y*|Y*) - g4wanalysis_build_lizard=y - g4wanalysis_use_lizard=y - ;; - esac - -g4message=`cat << EOM - - G4ANALYSIS_BUILD_JAS - Includes the JAS proxy driver for analysis in the kernel. - - G4ANALYSIS_USE_JAS - To use JAS as analysis system in the application to be built. -EOM` - -dflt=$g4wanalysis_use_jas -rp=$g4message -. ./myread -gans=$ans - - case $gans in - - n*|N*) - g4wanalysis_build_jas=n - g4wanalysis_use_jas=n - ;; - y*|Y*) - g4wanalysis_build_jas=y - g4wanalysis_use_jas=y - ;; - esac - : end of configuration questions echo " " @@ -3753,8 +3846,8 @@ echo "End of configuration phase." echo " " : back to where it started -if test -d ../UU; then - cd .. +if test -d ../../.config/UU; then + cd ../.. fi : configuration may be patched via a 'config.over' file @@ -3762,7 +3855,7 @@ if $test -f config.over; then echo " " dflt=y rp='A config.over file exists. Do you wish to load it?' - . UU/myread + . .config/UU/myread case "$ans" in n*) echo "OK, I'll ignore it.";; *) . ./config.over @@ -3784,7 +3877,7 @@ esac : create config.sh file echo " " -echo "Creating config.sh..." >&4 +echo "Creating configuration setup file..." >&4 mkdir -p $g4conf $spitshell < $g4conf/config.sh $startsh @@ -3807,39 +3900,17 @@ Header='$Header' Id='$Id' Locker='$Locker' Log='$Log' -Mcc='$Mcc' RCSfile='$RCSfile' Revision='$Revision' Source='$Source' State='$State' -ar='$ar' -awk='$awk' -bash='$bash' -bison='$bison' -byacc='$byacc' c='$c' -cat='$cat' cf_by='$cf_by' cf_time='$cf_time' -chgrp='$chgrp' -chmod='$chmod' -chown='$chown' -comm='$comm' -compress='$compress' contains='$contains' -cp='$cp' -cpio='$cpio' -cpp='$cpp' -csh='$csh' d_portable='$d_portable' -date='$date' -echo='$echo' -egrep='$egrep' -emacs='$emacs' eunicefix='$eunicefix' -expr='$expr' -find='$find' -flex='$flex' +g4_build_wo_session='$g4_build_wo_session' g4base='$g4base' g4bin='$g4bin' g4clhep_base_dir='$g4clhep_base_dir' @@ -3864,7 +3935,6 @@ g4lib_use_shared='$g4lib_use_shared' g4lib_use_static='$g4lib_use_static' g4neutronhpcrosssections='$g4neutronhpcrosssections' g4osname='$g4osname' -g4ospace_base_dir='$g4ospace_base_dir' g4radioactivedata='$g4radioactivedata' g4system='$g4system' g4tmp='$g4tmp' @@ -3877,15 +3947,17 @@ g4ui_use_gag='$g4ui_use_gag' g4ui_use_tcsh='$g4ui_use_tcsh' g4ui_use_terminal='$g4ui_use_terminal' g4ui_use_win32='$g4ui_use_win32' +g4ui_use_wo='$g4ui_use_wo' g4ui_use_xaw='$g4ui_use_xaw' g4ui_use_xm='$g4ui_use_xm' g4use_hepodbms='$g4use_hepodbms' -g4use_ospace='$g4use_ospace' g4vis_build_asciitree_driver='$g4vis_build_asciitree_driver' g4vis_build_dawn_driver='$g4vis_build_dawn_driver' g4vis_build_dawnfile_driver='$g4vis_build_dawnfile_driver' +g4vis_build_oiwin32_driver='$g4vis_build_oiwin32_driver' g4vis_build_oix_driver='$g4vis_build_oix_driver' g4vis_build_opacs_driver='$g4vis_build_opacs_driver' +g4vis_build_openglwin32_driver='$g4vis_build_openglwin32_driver' g4vis_build_openglx_driver='$g4vis_build_openglx_driver' g4vis_build_openglxm_driver='$g4vis_build_openglxm_driver' g4vis_build_raytracer_driver='$g4vis_build_raytracer_driver' @@ -3894,8 +3966,10 @@ g4vis_build_vrmlfile_driver='$g4vis_build_vrmlfile_driver' g4vis_use_asciitree='$g4vis_use_asciitree' g4vis_use_dawn='$g4vis_use_dawn' g4vis_use_dawnfile='$g4vis_use_dawnfile' +g4vis_use_oiwin32='$g4vis_use_oiwin32' g4vis_use_oix='$g4vis_use_oix' g4vis_use_opacs='$g4vis_use_opacs' +g4vis_use_openglwin32='$g4vis_use_openglwin32' g4vis_use_openglx='$g4vis_use_openglx' g4vis_use_openglxm='$g4vis_use_openglxm' g4vis_use_raytracer='$g4vis_use_raytracer' @@ -3910,65 +3984,20 @@ g4wanalysis_use_jas='$g4wanalysis_use_jas' g4wanalysis_use_lab='$g4wanalysis_use_lab' g4wanalysis_use_lizard='$g4wanalysis_use_lizard' g4workdir='$g4workdir' -gcc='$gcc' -grep='$grep' -gzip='$gzip' hint='$hint' -inews='$inews' -ksh='$ksh' -less='$less' -line='$line' -lint='$lint' -ln='$ln' lns='$lns' -lp='$lp' -lpr='$lpr' -ls='$ls' -mail='$mail' -mailx='$mailx' -make='$make' -mkdir='$mkdir' -more='$more' -mv='$mv' myuname='$myuname' n='$n' -nroff='$nroff' osname='$osname' osvers='$osvers' package='$package' -perl='$perl' -pg='$pg' -pmake='$pmake' -pr='$pr' -rm='$rm' -rmail='$rmail' -sed='$sed' -sendmail='$sendmail' sh='$sh' -shar='$shar' sharpbang='$sharpbang' shsharp='$shsharp' -sleep='$sleep' -smail='$smail' -sort='$sort' spackage='$spackage' spitshell='$spitshell' src='$src' startsh='$startsh' -submit='$submit' -tail='$tail' -tar='$tar' -tbl='$tbl' -test='$test' -touch='$touch' -tr='$tr' -troff='$troff' -uname='$uname' -uniq='$uniq' -uuname='$uuname' -vi='$vi' -zcat='$zcat' -zip='$zip' EOT : add special variables @@ -3978,11 +4007,11 @@ awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >> $g4conf/config.sh echo "CONFIG=true" >> $g4conf/config.sh : propagate old symbols -if $test -f UU/config.sh; then - UU/oldconfig.sh - sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\ - sort | uniq -u >UU/oldsyms - set X `cat UU/oldsyms` +if $test -f .config/UU/config.sh; then + <.config/UU/config.sh sort | uniq >.config/UU/oldconfig.sh + sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh .config/UU/oldconfig.sh |\ + sort | uniq -u >.config/UU/oldsyms + set X `cat .config/UU/oldsyms` shift case $# in 0) ;; @@ -3994,7 +4023,7 @@ Hmm...You had some extra variables I don't know about... EOM echo "# Variables propagated from previous config.sh file." >>.config/bin/$g4system/config.sh - for sym in `cat UU/oldsyms`; do + for sym in `cat .config/UU/oldsyms`; do echo " Propagating $hint variable "'$'"$sym..." eval 'tmp="$'"${sym}"'"' echo "$tmp" | \ @@ -4010,7 +4039,7 @@ Id='$Id' : Finish up by extracting the .SH files case "$alldone" in exit) - $rm -rf UU + $rm -rf .config/UU echo "Done." exit 0 ;; @@ -4021,13 +4050,15 @@ cont) nostick=true $cat <&4 -. ./UU/extract +. ./.config/UU/extract if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then dflt=y @@ -4059,7 +4090,7 @@ EOM ;; esac rp="Run make depend now?" - . UU/myread + . .config/UU/myread case "$ans" in y*) make depend && echo "Now you must run a make." @@ -4086,7 +4117,7 @@ else fi $rm -f kit*isdone ark*isdone -$rm -rf UU +$rm -rf .config/UU : End of Configure diff --git a/ReleaseNotes/ReleaseNotes4.4.0.txt b/ReleaseNotes/ReleaseNotes4.4.0.txt new file mode 100644 index 0000000000..cc10ffdd74 --- /dev/null +++ b/ReleaseNotes/ReleaseNotes4.4.0.txt @@ -0,0 +1,649 @@ + + Geant4 4.0 Release Notes + ------------------------ + + 14th December 2001 + +These are the main new features/fixes included in this release since the +last public release (for the detailed list of fixes/additions, please refer +to the related History files): + + o Analysis: + -------- + - Removed analysis module. AIDA 2.2 or higher should now be adopted. + + o Configuration: + ------------- + - New version of the 'Configure' script for installation. + - architecture.gmk: + o made Linux-g++ architecture the default G4SYSTEM. + o removed references to STLInterface. + - Added Linux-egcs for old Linux architectures based on egcs-1.1.2 compiler. + - Made Linux-g++ specific to gcc-2.95.2 compiler or higher. + - Made SUN-CC specific to CC-5.2 compiler, the default compiler on SUN + systems. CC-4.2 is no longer supported. + - Introduced environment variable G4VIS_NONE that, if set, no visualization + drivers are built and no vis libraries are built. + - Introduced environment variable G4UI_NONE that, if set, no UI + sessions nor any UI libraries are built. + - Re-engineered G4VIS variables: removed the need to specify environment + variables for visualization drivers which do not need external packages + or libraries, namely : + G4VIS_BUILD_DAWNFILE_DRIVER + G4VIS_BUILD_RAYTRACER_DRIVER + G4VIS_BUILD_VRMLFILE_DRIVER + G4VIS_BUILD_ASCIITREE_DRIVER + G4VIS_BUILD_GAGTREE_DRIVER + with associated G4VIS_USE environment variables: + G4VIS_USE_DAWNFILE + G4VIS_USE_RAYTRACER + G4VIS_USE_VRMLFILE + G4VIS_USE_ASCIITREE + G4VIS_USE_GAGTREE + - Re-engineered G4UI variables: removed the need to specify environment + variables for UI sessions which do not need external packages or + libraries, namely : + G4UI_BUILD_GAG_SESSION, G4UI_BUILD_TERMINAL_SESSION + with associated G4UI_USE environment variables: + G4UI_USE_GAG, G4UI_USE_TCSH, G4UI_USE_TERMINAL + - Removed references to STLInterface module in architecture.gmk + and architecture setups. + - analysis.gmk: added flags to use an AIDA 2.2 compliant analysis system. + + o Event: + ----- + - Added a new feature for the user to increase the number of waiting stacks. + - Added Beam option for generating accelerator beams. + - Added check whether the primary vertex is inside of the world volume. + - G4PrimaryParticle now stores the proper trackID. + - G4PrimaryTransformer: now considering case where a primary is + placed on the boundary of the world volume. + - G4GeneralParticleSource (GPS): implemented co-ordinates rotation for + angular distribution. + - Bug fix in G4EventManager in case G4_STORETRAJECTORY is off. + - Moved set method of position and time from G4ParticleGun to + G4VPrimaryGenerator so that G4HEPEvtInterface can accept the primary + vertex position + - Cleared compilation warnings on gcc-2.95.2. + - Fixes to comply with removal of STLInterface. + + o Electromagnetic Processes (Low-energy): + -------------------------------------- + - Major revision of G4LowEnergyCompton, G4LowEnergyRayleigh and + G4LowEnergyGammaConversion: re-implementation according to the design + iteration in the data domain. + - New version of data G4EMLOW0.5 required. + - New classes for shell cross sections for proton-induced fluorescence. + - First implementation of fluorescence process. + - Introduced PIXE in G4hLowEnergyIonisation. + - Significant physics an performance improvement in electron processes. + - Added method to deactivate fluorescence in ionisation if needed. + - Added protection in G4LowEnergyPhotoElectric to avoid generation of + photons causing negative energy balance. + - Fixed a problem of continuity of ion effective charge. + - Fixed energy conservation problems for small range cuts in + G4LowEnergyIonisation. + - Introduced changes to allow multiple cuts per material (temporary). + - Removed static inline methods to non inline. + - Cleared compilation warnings on gcc-2.95.2. + - Fixes to comply with removal of STLInterface. + + o Electromagnetic Processes (Standard): + ------------------------------------ + - Implemented mechanism for storing and retrieving Physics Tables. + - Implemented new function ComputeRestrictedMeandEdx() for ionisation + processes. + - Implemented subcutoff delta-rays mechanism in G4VMuEnergyLoss. + - Suppression of the production threshold in phot, compt, conv, annih + processes. + - Removed obsolete "integral" module. + - Fixed old outstanding bug in G4EnergyLossTables, responsible for + causing negative energy deposit in some occasions. + - Introduced changes for reference-counted touchables. + - Introduced changes to allow multiple cuts per material (temporary). + - Removed static inline methods to non inline. + - Cleared compilation warnings on gcc-2.95.2. + - Fixes to comply with removal of STLInterface. + + o General Processes, Parameterisation, Decay, Optical: + --------------------------------------------------- + - management: + o Added Set/GetProcessManager() to G4VProcess and modified + G4ProcessManager::AddProcess() to invoke SetProcessManager(). + o Fixed bug in copy constructor of G4ProcessManager. + - parameterisation(s): + o Added new classes describing X-ray transition radiation generation + inside radiators (i.e. just along incident particle track): + G4FoamXTRdEdx, G4GamDistrXTRdEdx, G4IrregularXTRdEdx, + G4PlateIrrGasXTRdEdx, G4RegularXTRdEdx, G4VXTRdEdx, G4VXrayTRadModel. + o Introduced changes in G4VClusterModel for reference-counted + touchables. + - optical: + o Changed process name for G4OpRayleigh, G4OpBoundary and G4OpAbsorption. + - Cleared compilation warnings on gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o Geometry: + -------- + - Introduced geometry/verification module for checking geometry for + volumes overlaps. + - Magnetic field: + o Handling Electric Field and time-dependent fields. + o Introduced ability to set field per volume. + o New extended examples for field in examples/extended. + o Added method in G4ChordFinder to erase/reset the state of the + StepEstimate. This is unwanted internal state that was carried + between tracks and events as a side effect. + Calling this at the start of each track, it is now possible to + eliminate a reported problem of non-repeatability. + o Reduced maximum number of steps in G4MagIntegratorDriver. + o Protected verbose warnings with G4DEBUG_FIELD flag in G4ChordFinder + and G4MagIntegratorDriver. + o G4FieldManager: added fFieldChangesEnergy data member and get/set + methods. + o Fixed interface to virtual functions in the inheritance chain of + G4Field and subclasses. + - Management: + o Added definition of G4TouchableHandle. + o Added class G4SmartVoxelStat for statistics on geometry optimisation + of volumes through voxelisation. + o Modified G4GeometryManager to make use of G4SmartVoxelStat when run + in verbose mode: + - added argument to CloseGeometry() method for verbosity + - added ReportVoxelStats() method for reporting optimisation statistics. + o Initialise noNodes to 1 in G4SmartVoxelHeader::BuildNodes() in case + computed nodes for smartless happen to be zero. + - Volumes: + o Introduced G4GeometryMessenger associated to G4TransportationManager + with following commands defined: + - geometry/test/run - to start verification of geometry for overlapping + regions based on standard grid setup. + - geometry/test/line_test - to activate test along a specified + direction and position user defined. + - geometry/test/position - to specify position for the line_test. + - geometry/test/direction - to specify direction for the line_test. + - geometry/test/tolerance - to customise test precision. + - geometry/navigator/reset - for resetting navigation history + and position. + o Added handles for reference counting: G4GRSSolidHandle, + G4GRSVolumeHandle, G4TouchableHistoryHandle. + o Modified G4Navigator for reference counted touchables. + Introduced new methods CreateTouchableHistoryHandle() and + LocateGlobalPointAndUpdateTouchableHandle(...). + o G4PropagatorInField: + - Added thresholds for number of steps with get/Set methods. + - Modified choice of subsequent step size in case of zero steps. + - Added GetCurrentFieldManager() method. + - Added 'maximum' epsilon value. + o G4Navigator: + - Fixed mirroring of the input argument for global direction into + local variable in LocateGlobalPointAndSetup(). + - Added ResetState() method (that only reset state - not stack). + - Added optional argument for direction to LocateGlobalPointAndSetup(). + - State is now resetted when touchable history is used to + re-initialise it. + - Direction in LocateGlobalPointAndSetup() methods is now used. + - solids/Boolean: + o Introduced first implementation of classes G4ReflectedSolid and + G4ReflectionFactory for reflections of positioned volumes based + on simple CSG solids. + o Introduced G4BOOLDEBUG flag and relaxed G4Exception calls with + warnings to G4cerr for rare occurences of anomalous conditions. + - solids/BREPS: + o Fix in G4BSplineCurve::Init() for initialisation of point vector. + o G4BREPSolidPolyhedra.cc: fixed situation when phi1 = 0 dphi1 = 2*pi + and all RMINs = 0.0. In this case the inner planes are not created. + - solids/CSG: + o G4Sphere: bug fix in SurfaceNormal() for the case kNETheta. + - solids/STEP & STEPinterface: + o SdaiCONFIG_CONTROL_DESIGN.cc: cleaned up warnings issued on SUN-CC. + o dirobj.cc: restored usage of strdup() and forced non-ANSI setup. + o Fixes for compilation on gcc-2.96.98 and gcc-3.0.2 compilers. + o G4Axis2Placement3dCreator::CreateG4Geometry(): added check to + attribute validity for 'direction'. + - Cleared compilation warnings on gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o Global: + ------ + - Introduced G4ReferenceCountedHandle templated class. + - Modified G4Exception behavior, now setting G4StateManager to + "abort" state instead of aborting the application. + - Removed STLinterface module: + o renamed cstring[.h.icc] to G4String[.hh.icc]. + o renamed ctoken.h to G4Tokenizer.hh. + + o Graphics Representations: + ------------------------ + - Added G4Scale class. + - Added G4Polyline::transform. + - Cleared compilation warnings on gcc-2.95.2 compiler. + + o Hadronic Processes: + ------------------ + - Doppler broadening of low energy neutron cross-sections on the fly, + enabling to simulate setups with mixed temperatures from 0K data files. + - First release of chiral invariant phase-cpace decay. + Usable now for electron and gamma nuclear reactions, and for pi- + and anti-proton absorption. Also a cascade back-end replacement for + string models. + - First release of specialized models for neutron and proton scattering + off Hydrogene, with particular focus on recoils. + - First release of the evaporation and utilities parts of the HETC + re-write. + - Optimized memory usage of the neutron_hp transport code (gained an + integer factor) + - Maximized robustness: system tests now at O(5000) LHC event of hadronic + energy flow; large-N tests with about a factor 100 more statistics. + - Addition of gamma nuclar and electro nuclear reaction cross-sections. + - Checking for tracking consistancy. + - Added possibility to activate models for single elements/materials in + one call + - Now calling ResetNumberOfInteractionLengthLeft() rather than + ClearNumberOfInteractionLengthLeft(). + - Enabled logging in various places. + - Fix for final state rotation from z; this can be done in general in + the hadronic process framework layer. + - Added G4PhotoNuclearProcess, G4PositronNuclearProcess, and + G4ElectronNuclearProcess. + - Optimised sampling of gaussian distributions. + - Fixed a missing initialization of strangeness in the high energy + models. + - Fixed the particle production for low energy light ion reactions. + - Bug fix for beta+ decay in radioactive decay (corrected Q-value). + - Bug-fix in neutron induced isotope production code to allow for mixtures. + - Bug-fix in the vector hash to allow for re-use of the hash tables. + - Getting rid of the strstream portability problem between SUN and Linux. + - Some conservative programming in the sampling vector, to allow for + binary re-use of the hash. + - Minor bug fix on gamma distributions in very special cases (yields and + integral energy was correct, but distribution had a slight bias before). + - Fix on elastic scattering final states: getting rid of a bias that was + there for a particular data representation. Affects Xenon. + - Fix for inelastic n->b+m*gamma channel; for the case of 4 gammas in the + final state, the mass of the recoil was of by one under certain condition. + (Mildly relevant for activation when simulating earth.) + - Fix in Names finding for scattering off Hydrogen. + - New calculation for compound radius in coulomb barrier calculation. + - Reduced default vector size. + - Added delete structs to the vectors. + - Getting rid of the E-11ev gamma problem, and a few memory leaks + introduced in the STL transition. + - Templated qgs models with the type of participants to enable heavy ion + collision simulation; heavy ion participants still to be fixed for + impact of fermi momentum. + - qgs model now also for kaons. + - Enabled 'meson' splitting for incident gammas in quark gluon string + model. + - First tuning of pomeron trajectory and vertex parameters for incident + gammas, assuming vector meson dominance; based on total reaction + cross-section only; further improvement scheduled. + - Fixed minimum mass constraint on string fragmentation in the + presence of zeitgleiche multiple and multi pomoron exchange, and + diffractive collisions. + - Design iteration on string fragmentation. + - Traced an elusing charge non-conservation to isotopic composition of + Hydrogene, which is taken care of internally. + - Bug-fix for splitting Omega- into partons. + - Added transformation in pre-equilibrium decay. + - Enabled tracing of colour, spin and iso-spin in the parton. + - Some improvement on folding two resonance collision cross-section. + - Cleared most compilation warnings and minor fixes for gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o Materials: + --------- + - G4Isotope, G4Element, G4Material: IndexInTable is now obtained + dynamically via GetIndex(). + - Added new function G4Materials::SetChemicalFormula(). + - Fixed problems erasing when deleting Isotope, Element or Material objects. + - Fixed memory leak in G4SandiaTable::ComputeMatSandiaMatrix(), + for deletion of temporary vectors Z, tmp1, tmp2. + - Moved definitions of G4IsotopeVector and G4ElementVector + G4ElementTable and G4MaterialTable to the appropriate headers. + - Removed static inline methods to non-inline. + - Cleared compilation warnings on gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o Particles: + --------- + - Introduced G4NeutronBetaDecayChannel and added to G4Neutron. + - Allow MassDifference in case of nucleon decay. + - Fixed bug in copy constructor of G4DecayProduct. + - Introduced changes to allow multiple cuts per material (temporary). + - Removed static inline methods to non-inlined. + - Cleared compilation warnings and minor fixed for gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o Persistency: + ----------- + - Fixes to comply with removal of STLInterface. + - Fixed porting problems on gcc-2.95.2. + + o Run, Intercoms and Interfaces + ----------------------------- + - run: + o Added new feature allowing to increase the number of waiting stacks. + o Added Set/GetApplyCuts methods in G4VUserPhysicsList. + o Added /run/particle/applyCuts command in G4UserPhysicsListMessenger. + o Added GetVersionString() method to G4RunManager. + o Added rndmSaveThisRun() and rndmSaveThisEvent() methods to G4RunManager. + o Added /random/ commands to G4RunMessenger. + o Fixed bugs in G4VUserPhysicsList. + - intercoms: + o Introduced feature for suppressing the program abortion due to + G4Exception. + o Introduced "Shell variables" for UI command handling. Added + class G4UIaliasList. + o Introduced loop execution of a macro file, recursive expansion of + aliased variables, and some other new features in G4UImanager and + related classes. + New commands: /control/shell, /control/foreach, /control/loop, + /control/createHTML. + o Added G4VGraphicsScene::AddPrimitive(const G4Scale&). + o Added G4VisManager::Draw(const G4Scale&,...). + o Modified G4UIbatch to display (G4cerr) the error message. + Comment lines are now displayed only for verbose level=2. + o Included correction for string parameter starting with a space. + o Fixed parsing of quoted (") tokens. + o Fixed a problem for commands with doubled slash. + - interfaces: + o Re-engineered G4UI variables: + changed GNUmakefile so that GAG, TERMINAL and TCSH built by default. + Nothing built if G4UI_NONE is set. + o G4VInteractorManager::RemoveDispatcher : change the remove logic in + order to fix a disfunctionning with vis/OpenInventor driver. + - Cleared compilation warnings on gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o Tracking & Track: + ---------------- + - track: + o Fixed bug for velocity in method G4Step::UpdateTrack(). + o Implemented assignment operator for G4ParticleChangeForRadDecay. + o Fixed bug in assignment operator of G4Track. + o Removed static inline methods to non inline. + - tracking: + o Added protection for tracks placed outside the world volume + at the initial point. + o Correction to the use the touchable Handle for secondary tracks, + when it is available. Now the direction is used in locating a particle + (primary or secondary) in SetInitialStep(). This is in order to assist + in starting particles that are on/near-to boundaries in the correct + volume. + - Introduced changes for reference-counted touchables mechanism. + - Cleared compilation warnings on gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o Transportation: + -------------- + - Motivated by the use case of an Electric Field, in order to achieve + reasonable accuracy in time integration, and to enable fields that + vary with the global time: + o G4Transportation now try obtaining the delta_time from G4FieldTrack. + - Introduced changes to G4Transportation for reference-counted touchables. + Added methods GetFreeTouchable() and SetTheOtherTouchableFree(). + - Added protection in G4Transportation::AlongStepGPIL for messaging + "ResestStepEstimate" of G4ChordFinder for the case there is no global + field. + + o Visualization: + ------------- + - Introduced new HepRep graphics driver. + - Removed the need to specify environment variables for visualization + drivers which do not need external packages or libraries. + - Removed old-style commands. + - Added commands: + o /vis/scene/add/scale + o /vis/viewer/flush = refresh + update. + o /vis/viewer/set/upThetaPhi and upVector. + o refresh|flush option to /vis/scene/notifyHandlers. + - Moved /vis/viewer/lights and viewpoint to /vis/viewer/set. + - Added G4ScaleModel. + - Added G4VModel::SetExtent(const G4VisExtent&). + - Added G4VisManager::Draw(const G4Scale&,...). + - Added template graphics system XXX. + - Re-implemented verbosity control. Output statements wherever possible + are controlled by the verbosity in a simple graded message scheme. + - Improved auto-refreshing. + - Force rebuild of graphics "stores" (graphical databases) and, + if auto-refresh is true, refresh of all views + (/vis/scene/notifyHandlers) after an addition to scene. + - Eliminated view parameters from G4VisManager. + Paramenters can be copied from one view to another with: + /vis/viewer/set/all + - Updated G4RTJpegMaker for porting Windows systems. + - OpenInventor : move HEPVis/SoWindow under vis/OpenInventor/G4SoWindow + to prepare HEPVis/6.0. (HEPVis/SoWindow will disappear from HEPVis/6.0). + - Fixed crash in optimised mode: added Initialise() to viewers so + that windows are opened after viewers are fully constructed. + - Corrected mistake which could cause crash if user specified a + non-existent scene handler in /vis/sceneHandler/remove. + - Fix for replica rotation matrix. It Fixes observed crashes in replica + tracking with visualisation. + - Fixed bug in G4VSceneHandler::AddPrimitive(const G4Scale&). + - Fixed bug in G4VisManager::EndOfEvent. + - Added README.quick, a quick installation guide. + - Improved verbosity guidance and READMEs. + - Cleared compilation warnings on gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o G4toG4 Tool: + ----------- + - Implemented reflection of CSG solids through G4ReflectionFactory + class and G4ReflectedSolid. Added G3G4_NO_REFLECTION flag to exclude + it if needed for cases not yet covered. + - Added limited support for MANY volumes through adoption of boolean solids. + - Changed G3Division::CreatePVReplica() to return a G4PhysicalVolumesPair. + - Cleared compilation warnings on gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + + o Examples: + -------- + - Novice: + o updated visualization macros. + o updated vis-managers. + - Extended: + o new electromagnetic example "TestEm10" for exercising + specific parameterisation models. + o new examples for electro-magnetic field: field01, field02, field03. + o updated vis-managers. + - Advanced: + o underground_physics: new example for simulation of an underground + dark matter experiment. + o xray_fluorescence: new simulation setup for the study the elemental + composition of a planet through the measurement of the X-rays emitted. + o new improved versions of existing advanced applications. + - Cleared most compilation warnings on gcc-2.95.2 compiler. + - Fixes to comply with removal of STLInterface. + - Updated reference outputs. + + ---------------------------------------------------------------------------- + + Technical Notes + --------------- + + o Geant4 4.0 is based on STL and can be installed with strict + ISO/ANSI C++ compliant setup or not. See notes below. + +The code and some binary libraries are available through our "Source Code" +Web page: +- see our Geant4 Home Page. + +Please refer to Geant4 +User Documentation for further information about using Geant4. + + +Contents +-------- + + 1. Supported and Tested Platforms + 2. ANAPHE and CLHEP + 3. The Standard Template Library (STL) + 4. Persistency + 5. Compiler Specific Problems + 6. Known Run-Time Problems + 7. Compilation Warnings + 8. Known Run-Time Warnings + + +1. Supported and Tested Platforms +--------------------------------- + + o SUN Solaris 5.7, C++ 5.2 Patch 109508-03. + o Linux, gcc 2.95.2, egcs-2.91.66 (egcs 1.1.2). + This configuration was tested with the RedHat 6.1 distribution, but + versions of Geant4 have also been compiled successfully on more recent + RedHat, Debian and Suse distributions. + o NT 4.0 (Service Pack 4) or Windows-2000 and Cygnus Tools b20 with: + Visual C++ 6.0 Service Pack 5 + +Platforms also tested but giving rise to some problems - see below: + + o DEC V4.0, cxx C++ V6.1-027. + +Platforms configured but not tested and not supported: + o HP 10.20, aCC C++ B3910B A.01.23 + o SGI V6.5.5, CC 7.2.1 with ObjectSpace + o AIX 4.3.2, xlC compiler with ObjectSpace + + +2. ANAPHE and CLHEP +------------------- + +Geant4 4.0 requires the installation of CLHEP. + +See +CLHEP. Tests have been performed with CLHEP 1.7.0.0. + +By default, the CLHEP installation scripts will activate ISO/ANSI C++ features +if the compiler is capable. You need to explicitly disable CLHEP settings in +case you wish non-ISO/ANSI setup on specific compilers. + +Geant4 4.0 coworks with ANAPHE 3.6.5 and components included therein: + Objectivity 6.1.3 + HepODBMS 0.3.3.1 + CLHEP 1.7.0.0 + +For more information about ANAPHE 3.6.5, see: + ANAPHE + + +3. The Standard Template Library +-------------------------------- + +Native versions of STL have been tested on the following platforms: + + Windows/2000, Linux, DEC and SUN. + +NOTES: + +- Platform specific setup: + o DEC: Native STL is required for ISO/ANSI setup. + o SUN: Native STL is required for ISO/ANSI setup (CC 5.2 only). + o Linux: Native STL is required (non ISO/ANSI setup for egcs compiler only). + o W2000: Native STL and ISO/ANSI setup required (VC++ 6.0). + + +4. Persistency +-------------- + + Platform + -------- + + Persistency in Geant4 4.0 release is tested on the following + platforms: + + G4SYSTEM OS C++ compiler HepODBMS Objectivity + --------- ----------- ------------ --------- ----------- + SUN-CC SunOS 5.7 CC 5.2 0.3.3.1 6.1.3 (*) + Linux-g++ RedHat 6.1 gcc-2.95.2 0.3.3.1 6.1.3 (#) + + (*) HepODBMS header files must be prepared with "ooddlx -noline" + option. See below. + (#) See g4odbms_setup[.sh.csh] in example PersistentEx01 in + 'geant4/examples/extended/persistency' for example setup scripts. + + Known Problems + -------------- + + - There are several warning messages on some platforms during the + installation of the libraries and the compilation of the examples. + Most of them can be safely ignored. It is annoying but hard to get + rid of them due to various reasons. + + - If you are using Solaris7 CC compiler 5.2 (SUN-CC) with the original + release version, persistent header files has to be generated by + ooddlx with "-noline" option due to a bug in C++ compiler. + This workaround applies not only to Geant4 Persistency category but + also to HepODBMS, and the user defined ddl files as well. + This is the default for SUN-CC configuration for Geant4 GNUmakefiles. + When this option is turned on, it removes the "#line" directive of + the file name and the line number of the original .ddl file. As a + consequences, C++ compiler no longer "tells" the correct file name + and the line number of the .ddl file if compiler error occurs. When + you design a persistent object with Geant4 GNUmakefiles and get the + compiler errors, try to identify the problem by first looking into + the header file generated by ooddlx, and then locate the source of + the problem by looking into the .ddl file. + A patch to the compiler is released from SUN, and you may remove this + option by commenting out the line: + + G4DDLX_FLAGS += -noline + + in the file $G4INSTALL/config/sys/SUN-CC.gmk. + + You can check the SUN-CC patch by the following command: + + % what `which CC` | grep RELEASE + + +5. Compiler Specific Problems +----------------------------- + + o DEC V4.0, cxx C++ V6.1-027. + + - We have found cases of mis-compilation of min and max templates + on DEC. We have traced those which cause serious malfunction + but there is no guarantee that there are no other cases. + Detailed inspection of assembler output suggests that this + problem might not be confined to min and max. This has been + reported to DEC/Compaq. We understand a new version 6.2 of the + compiler is now available. However we cannot guarantee correct + execution of Geant4 on DEC with the current version of the + compiler. + - A bug in cin.getline() system function causes an anomalous + behavior when running in interactive-mode on DEC-cxx 6.1 in + ISO/ANSI mode. We tested the bug has been fixed in more recent + versions of the compiler. + + +6. Known Run-Time Problems and Limitations +------------------------------------------ + +For a complete list of outstanding run-time problems and to submit any +problem you may find running this version of Geant4, please refer to the +Geant4 Problem Reporting System, available on the Web at this address: + + http://wwwinfo.cern.ch/asd/cgi-bin/geant4/problemreport + + +7. Compilation Warnings +----------------------- + +There are compilation warnings on some platforms. We do not believe +that any will lead to incorrect run-time behaviour, but we are working +on reducing them. + + +8. Known Run-Time Warnings +-------------------------- + +The following messages can be written to error output while tracking. We +believe none give rise to incorrect behaviour. + + o G4PropagateInField: Warning: Particle is looping + - tracking in field will be stopped. + It has performed 10000 steps in Field while a maximum of 10000 + are allowed. diff --git a/config/G4UI_BUILD.gmk b/config/G4UI_BUILD.gmk index 75c0a40741..9a3ca6650c 100644 --- a/config/G4UI_BUILD.gmk +++ b/config/G4UI_BUILD.gmk @@ -1,21 +1,18 @@ -# $Id: G4UI_BUILD.gmk,v 1.1 1999/01/07 15:58:31 gunter Exp $ +# $Id: G4UI_BUILD.gmk,v 1.2 2001/08/11 22:36:47 johna Exp $ # ------------------------------------------------------------- # Interfaces-specific CPPFLAGS for BUILD phase. # John Allison, 6th July 1998. # Include this *after* architecture.gmk # Include this *before* interactivity.gmk -########################### interfaces/basic ####################### - -ifndef G4UI_BUILD_TERMINAL_SESSION - G4UI_BUILD_TERMINAL_SESSION = 1 -endif - -ifdef G4UI_BUILD_TERMINAL_SESSION +ifndef G4UI_NONE G4UI_BUILD = 1 - G4UI_BUILD_BASIC_SESSION = 1 - CPPFLAGS += -DG4UI_BUILD_TERMINAL_SESSION -endif + CPPFLAGS += -DG4UI_BUILD + +# The following sessions are built by default (no environment +# variables needed)... +# GAG_SESSION +# TERMINAL_SESSION ifdef G4UI_BUILD_XM_SESSION G4UI_BUILD = 1 @@ -40,13 +37,6 @@ ifdef G4UI_BUILD_WIN32_SESSION CPPFLAGS += -DG4UI_BUILD_WIN32_SESSION endif -########################### interfaces/GAG ####################### - -ifdef G4UI_BUILD_GAG_SESSION - G4UI_BUILD = 1 - CPPFLAGS += -DG4UI_BUILD_GAG_SESSION -endif - ########################### interfaces/OPACS ####################### ifdef G4UI_BUILD_WO_SESSION @@ -60,10 +50,5 @@ endif ############################################################################ -ifdef G4UI_BUILD - CPPFLAGS += -DG4UI_BUILD -endif - - - +endif #G4UI_NONE diff --git a/config/G4UI_USE.gmk b/config/G4UI_USE.gmk index 97c0244478..a17b4bd01b 100644 --- a/config/G4UI_USE.gmk +++ b/config/G4UI_USE.gmk @@ -1,31 +1,53 @@ -# $Id: G4UI_USE.gmk,v 1.2 2000/11/21 10:15:22 maire Exp $ +# $Id: G4UI_USE.gmk,v 1.5 2001/11/13 16:00:44 johna Exp $ # ------------------------------------------------------------- # GNUmakefile for CPPFLAGS for interfaces USE phase. # John Allison, 6th July 1998. ########################### interfaces/basic ####################### +ifndef G4UI_NONE + UILIBS := -ifndef G4UI_USE_TERMINAL - G4UI_USE_TERMINAL = 1 -endif +# Sessions not needing external packages or libraries. These +# libraries are always built (see G4UI_BUILD.gmk) and linked so the +# user can instantiate one of these sessions without rebuilding the +# libraries. For backwards compatibility with user code, as typified +# by geant4/examples main programs, the C-pre-processor variables +# corresponding to the original environment variables are set, but +# there is no dependency in the Geant4 kernel; a user may instantiate +# a session from this list without setting any environment variables. +# However, if he/she sets no environment variables, then the +# C-pre-processor variable G4UI_USE_TERMINAL is set by default, although +# there is no need to use it. + +CPPFLAGS += -I$(G4BASE)/interfaces/basic/include +UILIBS += -lG4UIbasic +CPPFLAGS += -I$(G4BASE)/interfaces/common/include +UILIBS += -lG4UIcommon +CPPFLAGS += -I$(G4BASE)/interfaces/GAG/include +UILIBS += -lG4UIGAG ifdef G4UI_USE_TERMINAL - G4UI_USE = 1 - G4UI_USE_BASIC = 1 + G4UI_USE = 1 CPPFLAGS += -DG4UI_USE_TERMINAL endif ifdef G4UI_USE_TCSH - G4UI_USE = 1 - G4UI_USE_BASIC = 1 + G4UI_USE = 1 CPPFLAGS += -DG4UI_USE_TCSH endif +ifdef G4UI_USE_GAG + G4UI_USE = 1 + CPPFLAGS += -DG4UI_USE_GAG +endif + +# Other sessions: environment variables *must* be used to control the build +# and the usage, becuase they need external packages or libraries. + ifdef G4UI_USE_XM G4UI_USE = 1 - G4UI_USE_BASIC = 1 G4INTY_USE_XT = 1 INC_XM = 1 LOAD_XM = 1 @@ -34,7 +56,6 @@ endif ifdef G4UI_USE_XAW G4UI_USE = 1 - G4UI_USE_BASIC = 1 G4INTY_USE_XT = 1 INC_XAW = 1 LOAD_XAW = 1 @@ -42,30 +63,15 @@ ifdef G4UI_USE_XAW endif ifdef G4UI_USE_WIN32 - G4UI_USE = 1 - G4UI_USE_BASIC = 1 + G4UI_USE = 1 G4INTY_USE_WIN32 = 1 CPPFLAGS += -DG4UI_USE_WIN32 endif -ifdef G4UI_USE_BASIC - CPPFLAGS += -I$(G4BASE)/interfaces/basic/include - UILIBS += -lG4UIbasic -endif - -########################### interfaces/GAG ####################### - -ifdef G4UI_USE_GAG - G4UI_USE = 1 - CPPFLAGS += -DG4UI_USE_GAG - CPPFLAGS += -I$(G4BASE)/interfaces/GAG/include - UILIBS += -lG4UIGAG -endif - ########################### interfaces/OPACS ####################### ifdef G4UI_USE_WO - G4UI_USE = 1 + G4UI_USE = 1 G4INTY_USE_XT = 1 CPPFLAGS += -DG4UI_USE_WO CPPFLAGS += -I$(G4BASE)/interfaces/OPACS/include @@ -76,10 +82,12 @@ endif ########################### interfaces/XVT - not currently implemented ##### -########################### and finally... ####################### +##################### Default to TERMINAL if no environment variables set ## +##################### (No need actually to use it - see above.) ############ -ifdef G4UI_USE - CPPFLAGS += -DG4UI_USE - CPPFLAGS += -I$(G4BASE)/interfaces/common/include - UILIBS += -lG4UIcommon +ifndef G4UI_USE + G4UI_USE = 1 + CPPFLAGS += -DG4UI_USE_TERMINAL endif + +endif #G4UI_NONE diff --git a/config/G4VIS_BUILD.gmk b/config/G4VIS_BUILD.gmk index d5abfee595..cd0c26f6ac 100644 --- a/config/G4VIS_BUILD.gmk +++ b/config/G4VIS_BUILD.gmk @@ -1,29 +1,28 @@ -# $Id: G4VIS_BUILD.gmk,v 1.5 2001/06/19 20:38:12 johna Exp $ +# $Id: G4VIS_BUILD.gmk,v 1.11 2001/11/06 13:16:39 johna Exp $ # ------------------------------------------------------------- # Visualization-specific CPPFLAGS for BUILD phase. # John Allison, 24th January 1998. # Include this *after* architecture.gmk # Include this *before* interactivity.gmk +ifndef G4VIS_NONE + G4VIS_BUILD = 1 + CPPFLAGS += -DG4VIS_BUILD + +# The following drivers are built by default (no environment +# variables needed)... +# G4VIS_BUILD_ASCIITREE_DRIVER +# G4VIS_BUILD_DAWNFILE_DRIVER +# G4VIS_BUILD_GAGTREE_DRIVER +# G4VIS_BUILD_HEPREPFILE_DRIVER +# G4VIS_BUILD_RAYTRACER_DRIVER +# G4VIS_BUILD_VRMLFILE_DRIVER -# For DAWN and DAWNFILE drivers ifdef G4VIS_BUILD_DAWN_DRIVER - G4VIS_BUILD = 1 CPPFLAGS += -DG4VIS_BUILD_DAWN_DRIVER endif -ifdef G4VIS_BUILD_DAWNFILE_DRIVER - G4VIS_BUILD = 1 - CPPFLAGS += -DG4VIS_BUILD_DAWNFILE_DRIVER -endif -# End of DAWN and DAWNFILE drivers - -ifdef G4VIS_BUILD_RAYTRACER_DRIVER - G4VIS_BUILD = 1 - CPPFLAGS += -DG4VIS_BUILD_RAYTRACER_DRIVER -endif ifdef G4VIS_BUILD_OPACS_DRIVER - G4VIS_BUILD = 1 G4INTY_BUILD_XT = 1 CPPFLAGS += -DG4VIS_BUILD_OPACS_DRIVER INC_OPACS = 1 @@ -46,7 +45,6 @@ ifdef G4VIS_BUILD_OPENGLXM_DRIVER CPPFLAGS += -DG4VIS_BUILD_OPENGLXM_DRIVER endif ifdef G4VIS_BUILD_OPENGL_DRIVER - G4VIS_BUILD = 1 INC_GL = 1 CPPFLAGS += -DG4VIS_BUILD_OPENGL_DRIVER endif @@ -62,32 +60,12 @@ ifdef G4VIS_BUILD_OIWIN32_DRIVER CPPFLAGS += -DG4VIS_BUILD_OIWIN32_DRIVER endif ifdef G4VIS_BUILD_OI_DRIVER - G4VIS_BUILD = 1 INC_IV = 1 CPPFLAGS += -DG4VIS_BUILD_OI_DRIVER endif -# For VRML and VRMLFILE drivers ifdef G4VIS_BUILD_VRML_DRIVER - G4VIS_BUILD = 1 CPPFLAGS += -DG4VIS_BUILD_VRML_DRIVER endif -ifdef G4VIS_BUILD_VRMLFILE_DRIVER - G4VIS_BUILD = 1 - CPPFLAGS += -DG4VIS_BUILD_VRMLFILE_DRIVER -endif -# End of VRML and VRMLFILE drivers -ifdef G4VIS_BUILD_ASCIITREE_DRIVER - G4VIS_BUILD = 1 - CPPFLAGS += -DG4VIS_BUILD_ASCIITREE_DRIVER -endif - -ifdef G4VIS_BUILD_GAGTREE_DRIVER - G4VIS_BUILD = 1 - CPPFLAGS += -DG4VIS_BUILD_GAGTREE_DRIVER -endif - -ifdef G4VIS_BUILD - CPPFLAGS += -DG4VIS_BUILD -endif +endif #G4VIS_NONE diff --git a/config/G4VIS_USE.gmk b/config/G4VIS_USE.gmk index 79ce86b713..5f526d7558 100644 --- a/config/G4VIS_USE.gmk +++ b/config/G4VIS_USE.gmk @@ -1,35 +1,44 @@ -# $Id: G4VIS_USE.gmk,v 1.5 2001/06/19 20:38:31 johna Exp $ +# $Id: G4VIS_USE.gmk,v 1.12 2001/12/03 08:09:48 barrand Exp $ # ------------------------------------------------------------- # GNUmakefile for CPPFLAGS for visualization USE phase. # John Allison, 24th January 1998. +ifndef G4VIS_NONE + ifndef VISLIBS VISLIBS := endif -ifdef G4VIS_USE_DAWN - G4VIS_USE_DAWN_OR_DAWNFILE = 1 - CPPFLAGS += -DG4VIS_USE_DAWN -endif -ifdef G4VIS_USE_DAWNFILE - G4VIS_USE_DAWN_OR_DAWNFILE = 1 - CPPFLAGS += -DG4VIS_USE_DAWNFILE -endif -ifdef G4VIS_USE_DAWN_OR_DAWNFILE - G4VIS_USE = 1 - CPPFLAGS += -I$(G4BASE)/visualization/FukuiRenderer/include - VISLIBS += -lG4FR -endif +# Not needing external packages or libraries... +# Set old USE C-pre-processor flags for backwards compatibility of user code... -ifdef G4VIS_USE_RAYTRACER - G4VIS_USE = 1 - CPPFLAGS += -DG4VIS_USE_RAYTRACER - CPPFLAGS += -I$(G4BASE)/visualization/RayTracer/include - VISLIBS += -lG4RayTracer +CPPFLAGS += -DG4VIS_USE_DAWNFILE +CPPFLAGS += -I$(G4BASE)/visualization/FukuiRenderer/include +VISLIBS += -lG4FR + +CPPFLAGS += -DG4VIS_USE_HEPREPFILE +CPPFLAGS += -I$(G4BASE)/visualization/HepRep/include +VISLIBS += -lG4visHepRep + +CPPFLAGS += -DG4VIS_USE_RAYTRACER +CPPFLAGS += -I$(G4BASE)/visualization/RayTracer/include +VISLIBS += -lG4RayTracer + +CPPFLAGS += -DG4VIS_USE_VRMLFILE +CPPFLAGS += -I$(G4BASE)/visualization/VRML/include +VISLIBS += -lG4VRML + +CPPFLAGS += -DG4VIS_USE_ASCIITREE +CPPFLAGS += -DG4VIS_USE_GAGTREE +CPPFLAGS += -I$(G4BASE)/visualization/Tree/include +VISLIBS += -lG4Tree + +ifdef G4VIS_USE_DAWN + CPPFLAGS += -DG4VIS_USE_DAWN + # CPPFLAGS += -I... and VISLIBS += set above. endif ifdef G4VIS_USE_OPACS - G4VIS_USE = 1 INC_OPACS = 1 LOAD_OPACS = 1 CPPFLAGS += -DG4VIS_USE_OPACS @@ -50,7 +59,6 @@ ifdef G4VIS_USE_OPENGLXM LOAD_XM = 1 endif ifdef G4VIS_USE_OPENGL - G4VIS_USE = 1 CPPFLAGS += -DG4VIS_USE_OPENGL CPPFLAGS += -I$(G4BASE)/visualization/OpenGL/include VISLIBS += -lG4OpenGL @@ -69,7 +77,6 @@ ifdef G4VIS_USE_OIWIN32 CPPFLAGS += -DG4VIS_USE_OIWIN32 endif ifdef G4VIS_USE_OI - G4VIS_USE = 1 CPPFLAGS += -DG4VIS_USE_OI CPPFLAGS += -I$(G4BASE)/visualization/OpenInventor/include VISLIBS += -lG4OpenInventor @@ -78,47 +85,26 @@ ifdef G4VIS_USE_OI endif ifdef G4VIS_USE_VRML - G4VIS_USE_VRML_OR_VRMLFILE = 1 CPPFLAGS += -DG4VIS_USE_VRML -endif -ifdef G4VIS_USE_VRMLFILE - G4VIS_USE_VRML_OR_VRMLFILE = 1 - CPPFLAGS += -DG4VIS_USE_VRMLFILE -endif -ifdef G4VIS_USE_VRML_OR_VRMLFILE - G4VIS_USE = 1 - CPPFLAGS += -I$(G4BASE)/visualization/VRML/include - VISLIBS += -lG4VRML + # CPPFLAGS += -I... and VISLIBS += set above. endif -ifdef G4VIS_USE_ASCIITREE - G4VIS_USE_TREE = 1 - CPPFLAGS += -DG4VIS_USE_ASCIITREE -endif -ifdef G4VIS_USE_GAGTREE - G4VIS_USE_TREE = 1 - CPPFLAGS += -DG4VIS_USE_GAGTREE -endif -ifdef G4VIS_USE_TREE - G4VIS_USE = 1 - CPPFLAGS += -I$(G4BASE)/visualization/Tree/include - VISLIBS += -lG4Tree -endif +########################### and finally... ####################### -ifdef G4VIS_USE - ifdef G4_SOLVE_TEMPLATES - G4_SOLVE_VIS_TEMPLATES = 1 - endif - ifdef GNU_GCC - G4_SOLVE_VIS_TEMPLATES = 1 - endif - ifdef G4_SOLVE_VIS_TEMPLATES - CPPFLAGS += -DG4_SOLVE_VIS_TEMPLATES - endif - CPPFLAGS += -DG4VIS_USE - CPPFLAGS += -I$(G4BASE)/visualization/management/include - CPPFLAGS += -I$(G4BASE)/visualization/modeling/include - VISLIBS += -lG4vis_management - VISLIBS += -lG4modeling +G4VIS_USE = 1 +CPPFLAGS += -DG4VIS_USE +ifdef G4_SOLVE_TEMPLATES + G4_SOLVE_VIS_TEMPLATES = 1 endif +ifdef GNU_GCC + G4_SOLVE_VIS_TEMPLATES = 1 +endif +ifdef G4_SOLVE_VIS_TEMPLATES + CPPFLAGS += -DG4_SOLVE_VIS_TEMPLATES +endif +CPPFLAGS += -I$(G4BASE)/visualization/management/include +CPPFLAGS += -I$(G4BASE)/visualization/modeling/include +VISLIBS += -lG4vis_management +VISLIBS += -lG4modeling +endif # G4VIS_NONE diff --git a/config/History b/config/History index 2a03681d53..4c5e06e710 100644 --- a/config/History +++ b/config/History @@ -1,5 +1,5 @@ -$Id: History,v 1.149 2001/06/29 12:49:25 gcosmo Exp $ -$Name: $ +$Id: History,v 1.177 2001/12/14 08:37:39 gcosmo Exp $ +$Name: geant4-04-00 $ ------------------------------------------------------------------- @@ -18,6 +18,179 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +10th December 2001 Gabriele Cosmo (config-V03-02-15) +- architecture.gmk: + o updated list of supported compilers + o removed obsolete setup for STL ObjectSpace and STLport for Win/VC++. +- binmake.gmk: activated mechanism for using $G4INCLUDE effectively for + building examples/applications. Currently activated only for global compound + libraries; for granular libraries it requires re-engineering of liblist, + feature which will be added in future. + This mechanism allows to considerably reduce the compilation/linking command + length and the number of -I options fed to the compiler. +- Added G4PROFILE options to Linux-g++ and Linux-egcs setups. +- Removed binmake.EXTRALIBS.README, now part of User's Guide. +- Updated sources for Configure installation script. + +3rd December 2001 Guy Barrand (config-V03-02-14) +- G4VIS_USE.gmk : -lG4HepRep replaced by -lG4visHepRep. + +29th November 2001 Gabriele Cosmo (config-V03-02-13) +- Removed SUN-CC5.gmk configuration file. Now replaced by SUN-CC architecture + +21st Novemver 2001 Gabriele Cosmo (config-V03-02-12) +- On top of "config-V03-02-11", added paths in binmake.gmk including + new hadronic models for cascade, CHIPS and coherent_elastic. + Does not include changes to analysis.gmk. + +19th November 2001 Guy Barrand +- analysis.gmk : then remove all system specifc flags, have + only the AIDA ones. Have G4ANALYSIS_USE to drive the insertion of + CPP and libs in the Geant4 GNUmakefile system. + +19th November 2001 John Allison (config-V03-02-11) +- Does not include Guy's changes of 16rd November. +- Re-instated creation of CPPFLAGS (see 6th November) but conditonal + on existence of corresponding environment variable. If no environmet + variable is set, CPPFLAGS += -DG4UI_USE_TERMINAL. + +16rd November 2001 Guy Barrand +- analysis.gmk : add flags to use an AIDA 2.2 compliant analysis system. + +6th November 2001 John Allison (config-V03-02-10) +- Removed CPPFLAGS += -DG4UI_USE_GAG -DG4UI_USE_TCSH -DG4UI_USE_TERMINAL. + +6th November 2001 John Allison (config-V03-02-09) +- Removed references to HepRep, added code for HepRepFile, thus + needed by vis-V03-02-15. + +23rd October 2001 Gabriele Cosmo (config-V03-02-08) +- Merged changes in "config-V03-02-07" for removal of STLInterface. + +22nd October 2001 Gabriele Cosmo (config-V03-02-06b) +- binmake.gmk: added include path for geometry/verification + according to tag "geometry-V03-02-01". + +1st October 2001 Gabriele Cosmo (config-V03-02-06a) +- binmake.gmk: removed include path for processes/electromagnetic/integral + according to tag "em-V03-02-02". + +30th September 2001 Gabriele Cosmo (config-V03-02-07) +- Removed references to STLInterface module in architecture.gmk + and architecture setups. Coworks with tag "global-V03-02-03" where + STLInterface module has been removed. + +29th August 2001 John Allison/Joseph Perl (config-V03-02-06) +- Needed by vis-V03-02-14. +- First developers release of HepRep graphics driver. + +27th August 2001 John Allison +- Tidied HepRep configuration in G4VIS*, moving stuff to interactivity.gmk. + +24th August 2001 Joseph Perl (config-V03-02-05) +- Introduced HepRep graphics driver + +11th August 2001 John Allison (config-V03-02-04) +- Re-engineered G4UI variables. Coworks with interfaces-V03-02-00. +- Introduced environment variable G4UI_NONE that, if set, no UI + sessions nor any UI libraries are built, not even libG4UIbasic.a nor + libG4UIcommon.a. (This would only happen in a pure batch job or, + perhaps, in a user framework having its own UI system.) +- Removed the need to specify environment variables for UI sessions + which do not need external packages or libraries, namely : + G4UI_BUILD_GAG_SESSION + G4UI_BUILD_TERMINAL_SESSION + with associated G4UI_USE environment variables: + G4UI_USE_GAG + G4UI_USE_TCSH + G4UI_USE_TERMINAL + In other words, the above environment variables become redundant and are + ignored. + For backwards compatibility, unless G4UI_NONE is set, the corresponding + G4UI_USE C-pre-processor variables are automatically set. Also, the + C-pre-processor variables G4UI_BUILD and G4UI_USE are set. +- As before, environment variables for other sessions still need positive + setting of their G4UI_BUILD and G4UI_USE environment variables. In this + category are: + G4UI_BUILD_WIN32_SESSION + G4UI_BUILD_WO_SESSION + G4UI_BUILD_XAW_SESSION + G4UI_BUILD_XM_SESSION + with associated G4UI_USE environment variables: + G4UI_USE_WIN32 + G4UI_USE_WO + G4UI_USE_XAW + G4UI_USE_XM +- Note: The user must still instantiate and SessionStart only *one* + session, but if it is to be one in the category needing external + packages or libraries, the corresponding G4UI_USE must be set to + trigger inclusion oflibraries. Otherwise the user need not set any + environment variables. + +3rd August 2001 Gabriele Cosmo (config-V03-02-03) +- architecture.gmk: + o updated list of supported systems/compilers. + o made Linux-g++ architecture the default G4SYSTEM. Replaced SUN-CC. +- Added SUN-CC4.gmk for old SUN architectures based on CC-4.2 compiler. +- Added Linux-egcs for old Linux architectures based on egcs-1.1.2 compiler. +- Made SUN-CC.gmk a copy of SUN-CC5.gmk (kept for backward compatibility, + will be removed soon). CC-5.2 compiler is now the default on SUN systems. +- Made Linux-g++.gmk specific to gcc-2.95.2 compiler, from now on the default + compiler on Linux systems. + +1st August 2001 Gabriele Cosmo (config-V03-02-02) +- Included recent updates to scripts sources for 'Configure'. + +27th July 2001 John Allison (config-V03-02-01) +- Introduced environment variable G4VIS_NONE that, if set, no visualization + drivers are built and no vis libraries are built, not even + libG4vis_management. (libG4modeling is still built.) The C-pre-processor + variables G4VIS_BUILD and G4VIS_USE are *not* set. +- Removed the need to specify environment variables for visualization drivers + which do not need external packages or libraries, namely : + G4VIS_BUILD_DAWNFILE_DRIVER + G4VIS_BUILD_RAYTRACER_DRIVER + G4VIS_BUILD_VRMLFILE_DRIVER + G4VIS_BUILD_ASCIITREE_DRIVER + G4VIS_BUILD_GAGTREE_DRIVER + with associated G4VIS_USE environment variables: + G4VIS_USE_DAWNFILE + G4VIS_USE_RAYTRACER + G4VIS_USE_VRMLFILE + G4VIS_USE_ASCIITREE + G4VIS_USE_GAGTREE + In other words, the above environment variables become redundant and are + ignored. + For backwards compatibility, unless G4VIS_NONE is set, the corresponding + G4VIS_USE C-pre-processor variables are automatically set. Also, the + C-pre-processor variables G4VIS_BUILD and G4VIS_USE are set. +- As before, environment variables for other drivers still need positive + setting of their G4VIS_BUILD and G4VIS_USE environment variables. In this + category are: + G4VIS_BUILD_DAWN_DRIVER + G4VIS_BUILD_OPACS_DRIVER + G4VIS_BUILD_OPENGLX_DRIVER + G4VIS_BUILD_OPENGLWIN32_DRIVER + G4VIS_BUILD_OPENGLXM_DRIVER + G4VIS_BUILD_OIX_DRIVER + G4VIS_BUILD_OIWIN32_DRIVER + G4VIS_BUILD_VRML_DRIVER + with associated G4VIS_USE environment variables: + G4VIS_USE_DAWN + G4VIS_USE_OPACS + G4VIS_USE_OPENGLX + G4VIS_USE_OPENGLWIN32 + G4VIS_USE_OPENGLXM + G4VIS_USE_OIX + G4VIS_USE_OIWIN32 + G4VIS_USE_VRML + In this case G4VIS_NONE must *not* be set. +- Added binmake.EXTRALIBS.README. + +5th July 2001 Youhei Morita (config-V03-02-00) +- Linux-g++.gmk: Use -pedantic (G.Cosmo) +- Linux-g++.gmk, SUN-CC.gmk, SUN-CC5.gmk: added -DG4std in G4DDLX_FLAGS + 29th June 2001 Gabriele Cosmo (config-V03-01-10) - Updated source scripts for 'Configure'. diff --git a/config/analysis.gmk b/config/analysis.gmk index b1668db50f..3bc9b64c8e 100644 --- a/config/analysis.gmk +++ b/config/analysis.gmk @@ -3,150 +3,13 @@ # Analysis variables... # -# ----------------------------------- +ANALYSISLIBS := ifdef G4ANALYSIS_USE CPPFLAGS += -DG4ANALYSIS_USE - G4ANALYSIS_BUILD = 1 -endif - -ifdef G4ANALYSIS_BUILD - CPPFLAGS += -DG4ANALYSIS_BUILD - INC_ANALYSIS = 1 - LIB_ANALYSIS = 1 -endif - -# ------------- Lab ----------------- -ifdef G4ANALYSIS_USE_LAB - CPPFLAGS += -DG4ANALYSIS_USE_LAB - CPPFLAGS += -DG4ANALYSIS_USE - G4ANALYSIS_BUILD_LAB = 1 -endif - -ifdef G4ANALYSIS_BUILD_LAB - CPPFLAGS += -DG4ANALYSIS_BUILD - CPPFLAGS += -DG4ANALYSIS_BUILD_LAB - INC_ANALYSIS = 1 - LIB_ANALYSIS = 1 - INC_LAB = 1 - LIB_LAB = 1 -endif - -# ------------- jas ----------------- -ifdef G4ANALYSIS_USE_JAS - CPPFLAGS += -DG4ANALYSIS_USE_JAS - CPPFLAGS += -DG4ANALYSIS_USE - G4ANALYSIS_BUILD_JAS = 1 -endif - -ifdef G4ANALYSIS_BUILD_JAS - CPPFLAGS += -DG4ANALYSIS_BUILD - CPPFLAGS += -DG4ANALYSIS_BUILD_JAS - INC_ANALYSIS = 1 - LIB_ANALYSIS = 1 - INC_JAS = 1 - LIB_JAS = 1 -endif - -# ------------- Lizard ----------------- -ifdef G4ANALYSIS_USE_LIZARD - CPPFLAGS += -DG4ANALYSIS_USE_LIZARD - CPPFLAGS += -DG4ANALYSIS_USE - G4ANALYSIS_BUILD_LIZARD = 1 -endif - -ifdef G4ANALYSIS_BUILD_LIZARD - CPPFLAGS += -DG4ANALYSIS_BUILD - CPPFLAGS += -DG4ANALYSIS_BUILD_LIZARD - INC_ANALYSIS = 1 - LIB_ANALYSIS = 1 - INC_LIZARD = 1 - LIB_LIZARD = 1 -endif - -# ------------- Else --------------- - -ifdef G4ANALYSIS_NON_AIDA - CPPFLAGS += -DG4ANALYSIS_NON_AIDA -endif - -# ------------- Hook packages ----------------- -ANALYSISLIBS := -# -ifdef INC_ANALYSIS - CPPFLAGS += -I$(G4BASE)/analysis/management/include -# AIDA interfaces : -ifdef G4ANALYSIS_AIDA - CPPFLAGS += -I$(G4ANALYSIS_AIDA) -endif -endif -# -ifdef LIB_LAB - ANALYSISLIBS += -lG4Lab -endif -ifdef LIB_JAS - ANALYSISLIBS += -lG4jas -endif -ifdef LIB_LIZARD - ANALYSISLIBS += -lG4Lizard -endif -ifdef LIB_ANALYSIS - ANALYSISLIBS += -lG4analysis_management -endif -# -# ------------- Lab ----------------- -ifdef INC_LAB - CPPFLAGS += -I$(G4BASE)/analysis/Lab/include - CPPFLAGS += -I$(LIBROOT)/include -I$(HCLROOT)/include -I$(LABROOT)/include - CPPFLAGS += -DHasRio -ifdef G4ANALYSIS_LAB_VISUALIZATION - CPPFLAGS += -DG4ANALYSIS_LAB_VISUALIZATION - CPPFLAGS += -I$(ONXROOT)/include - INC_XM = 1 -endif -endif -# -ifdef LIB_LAB -ifdef G4ANALYSIS_LAB_VISUALIZATION - ANALYSISLIBS += $(ONXROOT)/$(ONXCONFIG)/XmUI.o - ANALYSISLIBS += -L$(ONXROOT)/$(ONXCONFIG) -lOnXInventorXt - ANALYSISLIBS += -L$(HEPVISROOT)/$(HEPVISCONFIG) -lHEPVisXt - ANALYSISLIBS += -L$(ONXROOT)/$(ONXCONFIG) -lOnXInventor - ANALYSISLIBS += -L$(ONXROOT)/$(ONXCONFIG) -lOnX - ANALYSISLIBS += -L$(EXPATROOT)/$(EXPATCONFIG) -lexpat - ANALYSISLIBS += -L$(SOFREEROOT)/$(SOFREECONFIG) -lSoFreeXt - ANALYSISLIBS += -L$(HEPVISROOT)/$(HEPVISCONFIG) -lHEPVis - ANALYSISLIBS += -L$(SOFREEROOT)/$(SOFREECONFIG) -lSoFree - LIB_XM = 1 - LIB_GL = 1 -endif - ANALYSISLIBS += -L$(LABROOT)/$(LABCONFIG) -lLab - ANALYSISLIBS += -L$(RIOGRANDEROOT)/$(RIOGRANDECONFIG) -lRioTree -lRioBed - ANALYSISLIBS += -L$(CINTROOT)/$(CINTCONFIG) -lcint - ANALYSISLIBS += -L$(HCLROOT)/$(HCLCONFIG) -lHCL - ANALYSISLIBS += -L$(MIDNIGHTROOT)/$(MIDNIGHTCONFIG) -lMidnight - ANALYSISLIBS += -L$(LIBROOT)/$(LIBCONFIG) -lLib - ANALYSISLIBS += $(DLDLIBS) -endif -# -# ------------- jas ----------------- -ifdef INC_JAS - CPPFLAGS += -I$(G4BASE)/analysis/jas/include - CPPFLAGS += -I$(JDKHOME)/include -I$(JDKHOME)/include/linux -endif -# -ifdef LIB_JAS - ANALYSISLIBS += -L$(JDKHOME)/jre/lib/i386/classic -L$(JDKHOME)/jre/lib/i386/native_threads -ljvm -lhpi -endif - -# ------------- Lizard ----------------- -ifdef INC_LIZARD - CPPFLAGS += -I$(G4BASE)/analysis/Lizard/include - CPPFLAGS += -I$(LIZARDROOT)/include -endif -# -ifdef LIB_LIZARD - ANALYSISLIBS += -L$(LIZARDROOT)/lib -lAIDA_HTL -lT_Histoxx -lVector -lAIDA_Annotation -lAIDA_Plotter -lqp -lqpview -lqpqwt -lqt -lHepUtilities + CPPFLAGS += $(G4ANALYSIS_AIDA_CONFIG_CFLAGS) + ANALYSISLIBS += $(G4ANALYSIS_AIDA_CONFIG_LIBS) endif + diff --git a/config/architecture.gmk b/config/architecture.gmk index 5b4bef26ee..7521cfb2ac 100644 --- a/config/architecture.gmk +++ b/config/architecture.gmk @@ -1,4 +1,4 @@ -# $Id: architecture.gmk,v 1.71 2001/05/30 15:04:13 gunter Exp $ +# $Id: architecture.gmk,v 1.77 2001/12/11 15:31:11 gcosmo Exp $ # ------------------------------------------------------------------------ # GEANT 4 - Architecture configuration script for GNU Make # @@ -13,18 +13,16 @@ # List of the supported architectures/compilers and related flavors for # the environment variable G4SYSTEM: # -# SUN-CC SunOS 5.6, CC 4.2 compiler (default) +# Linux-g++ Linux (Red Hat 6.1), gcc-2.95.2 (default) # -# HP-aCC HP-UX 10.20, aCC A.01.23 compiler +# Linux-egcs Linux (Red Hat 6.1), egcs-1.1.2 +# +# SUN-CC SunOS 5.7, CC 5.2 # # DEC-cxx DEC-OSF/1 4.0, DEC C++ 6.1 # -# Linux-g++ Linux (Red Hat 6.1), egcs 1.1.2 -# -# WIN32-VC Windows/NT and Microsoft Visual C++ 6.0 -# Adding CYGWIN32 tools (make, g++ as "makedepend", sh...) -# Note: you will need to set your environment, see the -# installation guide. +# WIN32-VC Windows/2000 and Microsoft Visual C++ 6.0 - SP5 +# Adding CYGWIN32 tools # ------------------------------------------------------------------------- # Definition of HEP_ODBMS_LIBS, OBJY_LIBS and OSPACE_LIBS by HepODBMS. @@ -39,13 +37,10 @@ endif MAKEFLAGS= --no-print-directory -# If not specified, the default platform for G4SYSTEM is SUN-CC ... +# If not specified, the default platform for G4SYSTEM is Linux-g++ ... # ifndef G4SYSTEM - G4SYSTEM := SUN-CC -endif -ifeq ($(G4SYSTEM),WIN32-VC-NICE) - G4SYSTEM := WIN32-VC + G4SYSTEM := Linux-g++ endif # If not specified, the default path for G4 installation G4INSTALL is @@ -201,12 +196,11 @@ endif # Native STL is the default # CPPFLAGS += -DG4USE_STL -G4STLINC := $(G4BASE)/global/STLInterface -# Path to ObjectSpace STL (or STLport <- only test for Win/NT) +# Path to ObjectSpace STL (NOT supported. Kept for backward compatibility) # ifdef G4USE_OSPACE - + # # ObjectSpace STL implementation # ifndef OSPACE_BASE_DIR @@ -214,31 +208,7 @@ ifdef G4USE_OSPACE endif OSPACEINC := -I$(OSPACE_BASE_DIR)/ospace/std -I$(OSPACE_BASE_DIR)/ospace/stl OSPACELIBS := -L$(OSPACE_BASE_DIR)/lib -lospace - - ifeq ($(G4SYSTEM),WIN32-VC) - OSPACE_BASE_DIR := $(OBJECT_SPACE_BASE) - OSPACEINC := -I$(OSPACE_BASE_DIR)/ospace/std -I$(OSPACE_BASE_DIR)/ospace/stl -I$(OSPACE_BASE_DIR) - OSPACELIBS := '-libpath':$(OSPACE_BASE_DIR)/lib std-2.1-vc5.0-mt.lib - CPPFLAGS += -DG4USE_OLDSTL - CPPFLAGS += -DOS_WIN_NT_4_0 -DOS_MULTI_THREADED -D_WIN32_WINNT $(OSPACEINC) - endif - -else -ifdef G4USE_STLPORT - - # STLport STL implementation - # (derived from SGI implementation) - TEST on WIN32 - # - ifeq ($(G4SYSTEM),WIN32-VC) - STLPORT_BASE_DIR := $(STLPORT_BASE) - OSPACEINC := -I$(STLPORT_BASE_DIR)/stl - CPPFLAGS += -DG4USE_OLDSTL - CPPFLAGS += -D_NOTHREADS -D__STL_NO_NEW_IOSTREAMS -D__STL_NO_NAMESPACES - CPPFLAGS += -D__STL_NO_NEW_STYLE_HEADERS - endif - -endif #STLport -endif #OPSPACE +endif #OSPACE # Paths for G4 data # @@ -284,7 +254,7 @@ endif # Variables for implicit rules, etc., as suggested in GNU Make manual... # -CPPFLAGS += -Iinclude -I$(G4STLINC) +CPPFLAGS += -Iinclude CPPFLAGS += -I$(CLHEP_INCLUDE_DIR) # Positional qualifiers in action... @@ -345,7 +315,7 @@ endif # coherent we set in Geant4 the default toolkit to lesstif # on Linux in order to link with -lXaw, etc... ifndef G4_OPACS_WIDGET_SET - ifeq ($(G4SYSTEM),Linux-g++) + ifeq ($(findstring Linux,$(G4SYSTEM)),Linux) G4_OPACS_WIDGET_SET := lesstif else G4_OPACS_WIDGET_SET := Xm diff --git a/config/binmake.gmk b/config/binmake.gmk index 954370fafe..a85c1d1fe1 100644 --- a/config/binmake.gmk +++ b/config/binmake.gmk @@ -1,4 +1,4 @@ -# $Id: binmake.gmk,v 1.63 2001/06/22 16:11:21 gcosmo Exp $ +# $Id: binmake.gmk,v 1.74 2001/12/13 11:36:05 gcosmo Exp $ # ---------------------------------------------------------- # Script defining rules and paths for making binaries. # First implementation: Gabriele Cosmo, 25/06/1998. @@ -10,20 +10,39 @@ endif G4LIBDIR := $(G4LIB)/$(G4SYSTEM) -# Define variable checking for existence of centrally installed headers. -# If check will be true, avoid explicit definition of paths to INCFLAGS. -# -# G4INCLUDE_EXEC := $(shell [ -r $(G4INCLUDE)/globals.hh ] && echo 1) - include $(G4INSTALL)/config/G4UI_USE.gmk include $(G4INSTALL)/config/G4VIS_USE.gmk include $(G4INSTALL)/config/interactivity.gmk include $(G4INSTALL)/config/analysis.gmk +ifndef G4LIB_USE_GRANULAR + GLOBALLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4global.a && echo yes) + ifndef GLOBALLIBS + GLOBALLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4global.$(SHEXT) && echo yes) + SHAREDLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4global.$(SHEXT) && echo yes) + endif +endif + +ifndef SHAREDLIBS + SHAREDLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4globman.$(SHEXT) && echo yes) +endif + +# Define variable checking for existence of centrally installed headers, +# and global compound libraries installed (in future, the mechanism will +# be extended to the granular libraries as well. The liblist application +# must be re-engineered for that). +# If check will be true, avoid explicit definition of paths to INCFLAGS. +# +ifndef GLOBALLIBS + G4INCLUDE_EXEC := 0 +else + G4INCLUDE_EXEC := $(shell [ -r $(G4INCLUDE)/globals.hh ] && echo 1) +endif + ifndef INCFLAGS -# ifeq ($(G4INCLUDE_EXEC),1) -# INCFLAGS := -I$(G4INCLUDE) -# else + ifeq ($(G4INCLUDE_EXEC),1) + INCFLAGS := -I$(G4INCLUDE) + else INCFLAGS := \ -I$(G4BASE)/global/management/include \ -I$(G4BASE)/global/HEPRandom/include \ @@ -47,7 +66,6 @@ ifndef INCFLAGS -I$(G4BASE)/processes/parameterisation/include \ -I$(G4BASE)/processes/photolepton_hadron/include \ -I$(G4BASE)/processes/electromagnetic/standard/include \ - -I$(G4BASE)/processes/electromagnetic/integral/include \ -I$(G4BASE)/processes/electromagnetic/muons/include \ -I$(G4BASE)/processes/electromagnetic/utils/include \ -I$(G4BASE)/processes/electromagnetic/xrays/include \ @@ -56,6 +74,11 @@ ifndef INCFLAGS -I$(G4BASE)/processes/hadronic/processes/include \ -I$(G4BASE)/processes/hadronic/util/include \ -I$(G4BASE)/processes/hadronic/cross_sections/include \ + -I$(G4BASE)/processes/hadronic/models/cascade/evaporation/include \ + -I$(G4BASE)/processes/hadronic/models/cascade/utils/include \ + -I$(G4BASE)/processes/hadronic/models/coherent_elastic/include \ + -I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/body/include \ + -I$(G4BASE)/processes/hadronic/models/chiral_inv_phase_space/interface/include \ -I$(G4BASE)/processes/hadronic/models/generator/de_excitation/include \ -I$(G4BASE)/processes/hadronic/models/generator/diffractive_string/include \ -I$(G4BASE)/processes/hadronic/models/generator/high_energy/include \ @@ -80,6 +103,7 @@ ifndef INCFLAGS -I$(G4BASE)/geometry/solids/STEP/include \ -I$(G4BASE)/geometry/solids/STEPinterface/include \ -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/verification/include \ -I$(G4BASE)/geometry/magneticfield/include \ -I$(G4BASE)/track/include \ -I$(G4BASE)/tracking/include \ @@ -91,11 +115,11 @@ ifndef INCFLAGS -I$(G4BASE)/graphics_reps/include \ -I$(G4BASE)/intercoms/include \ -I$(G4BASE)/g3tog4/include -# endif + endif endif ifdef G4ODBMS -# ifneq ($(G4INCLUDE_EXEC),1) +ifneq ($(G4INCLUDE_EXEC),1) INCFLAGS += \ -I$(G4BASE)/persistency/global/include \ -I$(G4BASE)/persistency/digits+hits/hits/include \ @@ -104,27 +128,16 @@ ifdef G4ODBMS -I$(G4BASE)/persistency/geometry/global/include \ -I$(G4BASE)/persistency/geometry/solids/CSG/include \ -I$(G4BASE)/persistency/geometry/solids/Boolean/include \ + -I$(G4BASE)/persistency/geometry/solids/specific/include \ -I$(G4BASE)/persistency/geometry/management/include \ - -I$(G4BASE)/persistency/management/include -# endif - INCFLAGS += -I$(G4SCHEMA_INCLUDE) \ - -I$(OBJY_DIR)/include \ + -I$(G4BASE)/persistency/management/include \ + -I$(G4SCHEMA_INCLUDE) +endif + INCFLAGS += -I$(OBJY_DIR)/include \ -I$(HEP_ODBMS_DIR)/include \ -DHep_HAS_BUILDIN_BOOL_CONSTANTS endif -ifndef G4LIB_USE_GRANULAR - GLOBALLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4global.a && echo yes) - ifndef GLOBALLIBS - GLOBALLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4global.$(SHEXT) && echo yes) - SHAREDLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4global.$(SHEXT) && echo yes) - endif -endif - -ifndef SHAREDLIBS - SHAREDLIBS := $(shell test -f $(G4LIB)/$(G4SYSTEM)/libG4globman.$(SHEXT) && echo yes) -endif - CPPFLAGS += $(INCFLAGS) LDFLAGS += -L$(G4LIBDIR) diff --git a/config/scripts/env.csh.SH b/config/scripts/env.csh.SH index 78474eda92..2cf84829a1 100755 --- a/config/scripts/env.csh.SH +++ b/config/scripts/env.csh.SH @@ -26,502 +26,309 @@ $spitshell >env.csh <>env.csh <<'!NO!SUBS!' + +#+ +# +# G4WORKDIR +# +if ( ${?G4WORKDIR} ) then +echo "In your environment you have the G4WORKDIR=$G4WORKDIR" +else +echo "G4WORKDIR will be set to HOME=$HOME." +setenv G4WORKDIR $HOME +endif + + !NO!SUBS! chmod 755 env.csh $eunicefix env.csh diff --git a/config/scripts/env.sh.SH b/config/scripts/env.sh.SH index d028cbb632..f98a7a1e80 100755 --- a/config/scripts/env.sh.SH +++ b/config/scripts/env.sh.SH @@ -26,100 +26,109 @@ $spitshell >env.sh <>env.sh <<'!NO!SUBS!' + +#+ +# +# G4WORKDIR +# +if [ $G4WORKDIR ] ; then +echo "In your environment you have the G4WORKDIR=$G4WORKDIR" +else +echo "G4WORKDIR will be set to HOME=$HOME." +export G4WORKDIR=$HOME +fi + !NO!SUBS! chmod 755 env.sh $eunicefix env.sh diff --git a/config/scripts/install.sh.SH b/config/scripts/install.sh.SH index 96ebe8bacd..6442e9ef42 100755 --- a/config/scripts/install.sh.SH +++ b/config/scripts/install.sh.SH @@ -28,119 +28,114 @@ $spitshell >install.sh <>install.sh <<'!NO!SUBS!' !NO!SUBS! chmod 755 install.sh $eunicefix install.sh + diff --git a/config/sys/AIX-xlC.gmk b/config/sys/AIX-xlC.gmk index 60f786102a..3c6c28258f 100644 --- a/config/sys/AIX-xlC.gmk +++ b/config/sys/AIX-xlC.gmk @@ -28,7 +28,7 @@ ifeq ($(G4SYSTEM),AIX-xlC) OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL endif CPPFLAGS += -DG4NOT_ISO_DELETES - CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) + CPPFLAGS += -I$(G4BASE)/global/management/include/g4std/wrappers/$(G4SYSTEM) ifdef G4USE_OSPACE CPPFLAGS += -DOS_AIX_4 -DOS_NEW_CHECK -DOS_STL_ASSERT CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS diff --git a/config/sys/DEC-cxx.gmk b/config/sys/DEC-cxx.gmk index 7238543a00..37e91a1136 100644 --- a/config/sys/DEC-cxx.gmk +++ b/config/sys/DEC-cxx.gmk @@ -27,7 +27,7 @@ ifeq ($(G4SYSTEM),DEC-cxx) OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL # OGLLIBS := -lMesaGLU -lMesaGL endif - CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) + CPPFLAGS += -I$(G4BASE)/global/management/include/g4std/wrappers/$(G4SYSTEM) ifdef G4USE_OSPACE CPPFLAGS += -DOS_OSF1_4 -DOS_NEW_CHECK -DOS_STL_ASSERT -DOS_NO_WSTRING CPPFLAGS += -DOS_NO_ALLOCATORS -D__NO_EDG_EXCEPTION_CLASSES diff --git a/config/sys/HP-aCC.gmk b/config/sys/HP-aCC.gmk index 509a0be915..d915eb8a22 100644 --- a/config/sys/HP-aCC.gmk +++ b/config/sys/HP-aCC.gmk @@ -39,7 +39,7 @@ ifeq ($(G4SYSTEM),HP-aCC) OGLLIBS += -L/opt/graphics/common/lib -lXwindow -lhpgfx -lXhp11 -ldld endif CPPFLAGS += -DG4NOT_ISO_DELETES - CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) + CPPFLAGS += -I$(G4BASE)/global/management/include/g4std/wrappers/$(G4SYSTEM) ifdef G4USE_OSPACE CPPFLAGS += -DOS_HPUX_10_20 -DOS_NEW_CHECK -DOS_STL_ASSERT CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS -D__HPACC_NOEH diff --git a/config/sys/Linux-egcs.gmk b/config/sys/Linux-egcs.gmk new file mode 100644 index 0000000000..8a98228f93 --- /dev/null +++ b/config/sys/Linux-egcs.gmk @@ -0,0 +1,67 @@ +# +# ------ GNU/LINUX ------ +# +ifeq ($(G4SYSTEM),Linux-egcs) + CXX := g++ + GNU_GCC = 1 + CXXFLAGS := -pipe -fno-for-scope -DGNU_GCC + ifdef G4OPTIMISE + CXXFLAGS += -O + FCFLAGS := -O + CCFLAGS := -O + else + ifdef G4DEBUG + CXXFLAGS += -g + FCFLAGS := -g + CCFLAGS := -g + endif + endif + ifdef G4PROFILE + CXXFLAGS += -pg + FCFLAGS += -pg + CCFLAGS += -pg + endif + ifdef G4LIB_BUILD_SHARED + CXXFLAGS += -fPIC + FCFLAGS += -fPIC + CCFLAGS += -fPIC + endif + G4RUNPATHOPTION := -Wl,-rpath + FC := g77 + FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore + FCLIBS := -lg2c -lnsl + ECHO := /bin/echo -e + SHEXT := so + X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 + X11LIBS := -L/usr/X11R6/lib -lXmu -lXt -lXext -lX11 -lSM -lICE + XMFLAGS := -I/usr/X11R6/include + XMLIBS := -lXm -lXpm + DLDLIBS := -ldl + ifndef OGLFLAGS + OGLFLAGS := -I$(OGLHOME)/include + endif + ifndef OGLLIBS + OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL + endif + OIVFLAGS += -I$(OIHOME)/include + ifdef G4USE_OSPACE + CPPFLAGS += -DOS_LINUX_2 -DOS_NEW_CHECK -DOS_STL_ASSERT + CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS + CPPFLAGS += -I$(OSPACE_BASE_DIR)/ospace/std -I$(OSPACE_BASE_DIR) + endif + ifdef G4ODBMS + G4DDLX_FLAGS += -D__STL_CLASS_PARTIAL_SPECIALIZATION -Dstd="" -DG4std="" + endif + define build-granular-shared-lib + @libdir=`(cd $(@D);/bin/pwd)`; \ + cd $(G4TMPDIR); \ + $(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) *.o + endef + define build-global-shared-lib + @libdir=`(cd $(@D);/bin/pwd)`; \ + cd $(G4TMP)/$(G4SYSTEM); \ + $(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) \ + $(foreach dir,$(SUBLIBS),$(dir)/*.o); + endef + +endif diff --git a/config/sys/Linux-g++.gmk b/config/sys/Linux-g++.gmk index 82af9ca663..43a3c75fae 100644 --- a/config/sys/Linux-g++.gmk +++ b/config/sys/Linux-g++.gmk @@ -1,11 +1,11 @@ # -# ------ GNU/LINUX ------ +# ------ GNU/LINUX ------ gcc 2.95.2 # ifeq ($(G4SYSTEM),Linux-g++) CXX := g++ GNU_GCC = 1 -# CXXFLAGS := -Wall -ansi -pedantic -pipe -fno-for-scope -DGNU_GCC - CXXFLAGS := -pipe -fno-for-scope -DGNU_GCC + CXXFLAGS := -Wall -ansi -pedantic -pipe -fno-for-scope -DGNU_GCC +# CXXFLAGS := -pipe -fno-for-scope -DGNU_GCC ifdef G4OPTIMISE CXXFLAGS += -O FCFLAGS := -O @@ -17,6 +17,11 @@ ifeq ($(G4SYSTEM),Linux-g++) CCFLAGS := -g endif endif + ifdef G4PROFILE + CXXFLAGS += -pg + FCFLAGS += -pg + CCFLAGS += -pg + endif ifdef G4LIB_BUILD_SHARED CXXFLAGS += -fPIC FCFLAGS += -fPIC @@ -40,19 +45,10 @@ ifeq ($(G4SYSTEM),Linux-g++) OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL endif OIVFLAGS += -I$(OIHOME)/include - ifdef G4USE_OSPACE - CPPFLAGS += -DOS_LINUX_2 -DOS_NEW_CHECK -DOS_STL_ASSERT - CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS - CPPFLAGS += -I$(OSPACE_BASE_DIR)/ospace/std -I$(OSPACE_BASE_DIR) -# else -# G4USE_STD_NAMESPACE := yes -# CPPFLAGS += -DG4USE_STD_NAMESPACE - endif + G4USE_STD_NAMESPACE := yes + CPPFLAGS += -DG4USE_STD_NAMESPACE ifdef G4ODBMS - GCCVERSION := $(shell g++ -v 2>&1 | grep version | grep egcs) - ifeq ($(findstring 1.1,$(GCCVERSION)),1.1) - G4DDLX_FLAGS += -D__STL_CLASS_PARTIAL_SPECIALIZATION -Dstd="" - endif + G4DDLX_FLAGS += -DG4std="" endif define build-granular-shared-lib @libdir=`(cd $(@D);/bin/pwd)`; \ diff --git a/config/sys/SGI-CC.gmk b/config/sys/SGI-CC.gmk index d227ff145c..8234115972 100644 --- a/config/sys/SGI-CC.gmk +++ b/config/sys/SGI-CC.gmk @@ -27,7 +27,7 @@ ifeq ($(G4SYSTEM),SGI-CC) OGLLIBS := -L/usr/lib -lGLU -lGL endif CPPFLAGS += -DSOCKET_IRIX_SOLARIS - CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) + CPPFLAGS += -I$(G4BASE)/global/management/include/g4std/wrappers/$(G4SYSTEM) ifdef G4USE_OSPACE CPPFLAGS += -DOS_IRIX_6_5 -DOS_NEW_CHECK -DOS_STL_ASSERT CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS diff --git a/config/sys/SUN-CC.gmk b/config/sys/SUN-CC.gmk index 479cce90b4..c66646ab70 100644 --- a/config/sys/SUN-CC.gmk +++ b/config/sys/SUN-CC.gmk @@ -12,13 +12,15 @@ ifeq ($(G4SYSTEM),SUN-CC) CCFLAGS := -g endif endif + CXXFLAGS += -features=no%anachronisms -mt -lpthread +# CXXFLAGS += -fnonstd ifdef G4LIB_BUILD_SHARED CXXFLAGS += -KPIC FCFLAGS += -KPIC CCFLAGS += -KPIC endif - G4RUNPATHOPTION = -R -# CXXFLAGS += -fnonstd + G4RUNPATHOPTION := -R + G4_HAVE_BOOL := yes CFRONT_G4TEMPLATE_REPOSITORY := true FC := f77 SHEXT := so @@ -44,11 +46,24 @@ ifeq ($(G4SYSTEM),SUN-CC) CPPFLAGS += -DSOCKET_IRIX_SOLARIS LOADLIBS += -L/usr/lib -lsocket -lnsl CPPFLAGS += -DG4NOT_ISO_DELETES - CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) + ifdef G4ODBMS + G4DDLX_FLAGS += -noline + endif ifdef G4USE_OSPACE CPPFLAGS += -DOS_SOLARIS_2_5 -DOS_NEW_CHECK -DOS_STL_ASSERT CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) + CXXFLAGS += -compat + else + ifndef G4NO_STD_NAMESPACE + G4USE_STD_NAMESPACE := yes + CPPFLAGS += -DG4USE_STD_NAMESPACE + ifdef G4ODBMS + G4DDLX_FLAGS += -DG4std="std" + endif + else + CXXFLAGS += -compat + endif endif define build-granular-shared-lib @@ -61,6 +76,5 @@ ifeq ($(G4SYSTEM),SUN-CC) cd $(G4TMP)/$(G4SYSTEM); \ $(CXX) -G $(CXXTEMPLATE_FLAGS) -o $$libdir/$(@F) -h $(@F) \ $(foreach dir,$(SUBLIBS),$(dir)/*.o); -endef - + endef endif diff --git a/config/sys/SUN-CC5.gmk b/config/sys/SUN-CC4.gmk similarity index 81% rename from config/sys/SUN-CC5.gmk rename to config/sys/SUN-CC4.gmk index aff3d9d95a..26b2844e39 100644 --- a/config/sys/SUN-CC5.gmk +++ b/config/sys/SUN-CC4.gmk @@ -1,7 +1,7 @@ # -# -------- SUN --------- -# -ifeq ($(G4SYSTEM),SUN-CC5) +# -------- SUN --------- !!! not supported !!! +# SUN CC-4.2 +ifeq ($(G4SYSTEM),SUN-CC4) CXX := CC ifdef G4OPTIMISE CXXFLAGS := -O @@ -12,15 +12,13 @@ ifeq ($(G4SYSTEM),SUN-CC5) CCFLAGS := -g endif endif - CXXFLAGS += -features=no%anachronisms -mt -lpthread -# CXXFLAGS += -fnonstd ifdef G4LIB_BUILD_SHARED CXXFLAGS += -KPIC FCFLAGS += -KPIC CCFLAGS += -KPIC endif - G4RUNPATHOPTION := -R - G4_HAVE_BOOL := yes + G4RUNPATHOPTION = -R +# CXXFLAGS += -fnonstd CFRONT_G4TEMPLATE_REPOSITORY := true FC := f77 SHEXT := so @@ -46,22 +44,14 @@ ifeq ($(G4SYSTEM),SUN-CC5) CPPFLAGS += -DSOCKET_IRIX_SOLARIS LOADLIBS += -L/usr/lib -lsocket -lnsl CPPFLAGS += -DG4NOT_ISO_DELETES - CPPFLAGS += -I$(G4STLINC)/wrappers/$(G4SYSTEM) - ifdef G4ODBMS - G4DDLX_FLAGS += -noline - endif + CPPFLAGS += -I$(G4BASE)/global/management/include/g4std/wrappers/$(G4SYSTEM) ifdef G4USE_OSPACE CPPFLAGS += -DOS_SOLARIS_2_5 -DOS_NEW_CHECK -DOS_STL_ASSERT CPPFLAGS += -DOS_NO_WSTRING -DOS_NO_ALLOCATORS CPPFLAGS += $(OSPACEINC) -I$(OSPACE_BASE_DIR) - CXXFLAGS += -compat - else - ifndef G4NO_STD_NAMESPACE - G4USE_STD_NAMESPACE := yes - CPPFLAGS += -DG4USE_STD_NAMESPACE - else - CXXFLAGS += -compat - endif + endif + ifdef G4ODBMS + G4DDLX_FLAGS += -DG4std="" endif define build-granular-shared-lib @@ -74,5 +64,6 @@ ifeq ($(G4SYSTEM),SUN-CC5) cd $(G4TMP)/$(G4SYSTEM); \ $(CXX) -G $(CXXTEMPLATE_FLAGS) -o $$libdir/$(@F) -h $(@F) \ $(foreach dir,$(SUBLIBS),$(dir)/*.o); - endef +endef + endif diff --git a/config/sys/WIN32-g++.gmk b/config/sys/WIN32-g++.gmk index 59ad08e7cf..0753dd191d 100644 --- a/config/sys/WIN32-g++.gmk +++ b/config/sys/WIN32-g++.gmk @@ -47,7 +47,7 @@ ifeq ($(G4SYSTEM),WIN32-g++) CPPFLAGS += -I$(OSPACE_BASE_DIR)/ospace/std -I$(OSPACE_BASE_DIR) endif ifdef G4ODBMS - G4DDLX_FLAGS += -D__STL_CLASS_PARTIAL_SPECIALIZATION -Dstd="" + G4DDLX_FLAGS += -D__STL_CLASS_PARTIAL_SPECIALIZATION -Dstd="" -DG4std="" endif define build-granular-shared-lib diff --git a/environments/OPACS/app/EXPO.cc b/environments/OPACS/app/EXPO.cc index f95920b6ec..7bfa003b74 100644 --- a/environments/OPACS/app/EXPO.cc +++ b/environments/OPACS/app/EXPO.cc @@ -22,7 +22,7 @@ // // // $Id: EXPO.cc,v 1.8.4.1 2001/06/28 19:06:29 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // #include diff --git a/environments/OPACS/app/TEST.cc b/environments/OPACS/app/TEST.cc index bc6630801c..386e1f79ac 100644 --- a/environments/OPACS/app/TEST.cc +++ b/environments/OPACS/app/TEST.cc @@ -22,7 +22,7 @@ // // // $Id: TEST.cc,v 1.3.4.1 2001/06/28 19:06:29 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // #include diff --git a/environments/OPACS/include/EXPO_Detector.icc b/environments/OPACS/include/EXPO_Detector.icc index 24f38e08b2..16b45f1369 100644 --- a/environments/OPACS/include/EXPO_Detector.icc +++ b/environments/OPACS/include/EXPO_Detector.icc @@ -22,7 +22,7 @@ // // // $Id: EXPO_Detector.icc,v 1.3.4.1 2001/06/28 19:06:31 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // See also G4/run/example/MyDetectorConstruction.cc. diff --git a/environments/OPACS/include/EXPO_PhysicsList.hh b/environments/OPACS/include/EXPO_PhysicsList.hh index 5e7a34626f..5b5ad6c7ff 100644 --- a/environments/OPACS/include/EXPO_PhysicsList.hh +++ b/environments/OPACS/include/EXPO_PhysicsList.hh @@ -22,7 +22,7 @@ // // // $Id: EXPO_PhysicsList.hh,v 1.4.4.1 2001/06/28 19:06:31 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/environments/OPACS/include/EXPO_PhysicsList.icc b/environments/OPACS/include/EXPO_PhysicsList.icc index ad15562ad3..39534cb657 100644 --- a/environments/OPACS/include/EXPO_PhysicsList.icc +++ b/environments/OPACS/include/EXPO_PhysicsList.icc @@ -22,7 +22,7 @@ // // // $Id: EXPO_PhysicsList.icc,v 1.4.4.1 2001/06/28 19:06:31 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/environments/OPACS/include/EXPO_Primary.icc b/environments/OPACS/include/EXPO_Primary.icc index eac86ec594..9de84dd7ee 100644 --- a/environments/OPACS/include/EXPO_Primary.icc +++ b/environments/OPACS/include/EXPO_Primary.icc @@ -22,7 +22,7 @@ // // // $Id: EXPO_Primary.icc,v 1.3.4.1 2001/06/28 19:06:31 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // See also G4/run/example/EXPO_PrimaryGeneratorAction.cc. diff --git a/environments/OPACS/include/G4o.h b/environments/OPACS/include/G4o.h index 389a618f45..ec3410b0ae 100644 --- a/environments/OPACS/include/G4o.h +++ b/environments/OPACS/include/G4o.h @@ -22,7 +22,7 @@ // // // $Id: G4o.h,v 1.3.4.1 2001/06/28 19:06:31 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ diff --git a/environments/OPACS/include/G4oCommon.hh b/environments/OPACS/include/G4oCommon.hh index 06bb50400d..bcef06a406 100644 --- a/environments/OPACS/include/G4oCommon.hh +++ b/environments/OPACS/include/G4oCommon.hh @@ -22,7 +22,7 @@ // // // $Id: G4oCommon.hh,v 1.3.4.1 2001/06/28 19:06:32 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* Included by G4o.h. diff --git a/environments/OPACS/include/G4oCommon.icc b/environments/OPACS/include/G4oCommon.icc index d3183b9ab6..ea34fdee5d 100644 --- a/environments/OPACS/include/G4oCommon.icc +++ b/environments/OPACS/include/G4oCommon.icc @@ -22,7 +22,7 @@ // // // $Id: G4oCommon.icc,v 1.3.4.1 2001/06/28 19:06:32 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* Included by G4o.cc. diff --git a/environments/OPACS/include/G4oDrawer.hh b/environments/OPACS/include/G4oDrawer.hh index 1cd5c27689..585ed41c60 100644 --- a/environments/OPACS/include/G4oDrawer.hh +++ b/environments/OPACS/include/G4oDrawer.hh @@ -22,7 +22,7 @@ // // // $Id: G4oDrawer.hh,v 1.3.4.1 2001/06/28 19:06:32 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ diff --git a/environments/OPACS/include/G4oEXPO.h b/environments/OPACS/include/G4oEXPO.h index 0ba7ebad20..59a1c3a8dc 100644 --- a/environments/OPACS/include/G4oEXPO.h +++ b/environments/OPACS/include/G4oEXPO.h @@ -22,7 +22,7 @@ // // // $Id: G4oEXPO.h,v 1.3.4.1 2001/06/28 19:06:32 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ diff --git a/environments/OPACS/include/G4oScene.hh b/environments/OPACS/include/G4oScene.hh index 6cf4058a4b..261cec4c6a 100644 --- a/environments/OPACS/include/G4oScene.hh +++ b/environments/OPACS/include/G4oScene.hh @@ -22,7 +22,7 @@ // // // $Id: G4oScene.hh,v 1.4.4.1 2001/06/28 19:06:33 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ diff --git a/environments/OPACS/include/G4oState.hh b/environments/OPACS/include/G4oState.hh index 3259db264f..ed629add0e 100644 --- a/environments/OPACS/include/G4oState.hh +++ b/environments/OPACS/include/G4oState.hh @@ -22,7 +22,7 @@ // // // $Id: G4oState.hh,v 1.4.4.1 2001/06/28 19:06:33 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4oState_h #define G4oState_h diff --git a/environments/OPACS/include/WoG4o.h b/environments/OPACS/include/WoG4o.h index c11a4e83d2..5bda164c7d 100644 --- a/environments/OPACS/include/WoG4o.h +++ b/environments/OPACS/include/WoG4o.h @@ -22,7 +22,7 @@ // // // $Id: WoG4o.h,v 1.3.4.1 2001/06/28 19:06:33 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ diff --git a/environments/OPACS/src/G4o.cc b/environments/OPACS/src/G4o.cc index 4ba814576d..5aa7c4abba 100644 --- a/environments/OPACS/src/G4o.cc +++ b/environments/OPACS/src/G4o.cc @@ -22,7 +22,7 @@ // // // $Id: G4o.cc,v 1.7.4.1 2001/06/28 19:06:33 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* #define DEBUG diff --git a/environments/OPACS/src/G4oDrawer.cc b/environments/OPACS/src/G4oDrawer.cc index 4e575153ad..0e7cb0789b 100644 --- a/environments/OPACS/src/G4oDrawer.cc +++ b/environments/OPACS/src/G4oDrawer.cc @@ -22,7 +22,7 @@ // // // $Id: G4oDrawer.cc,v 1.6.4.1 2001/06/28 19:06:34 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* From geant4/visualization/management/src/G4VisManager.cc. diff --git a/environments/OPACS/src/G4oScene.cc b/environments/OPACS/src/G4oScene.cc index 258f86c348..bf3b62309c 100644 --- a/environments/OPACS/src/G4oScene.cc +++ b/environments/OPACS/src/G4oScene.cc @@ -22,7 +22,7 @@ // // // $Id: G4oScene.cc,v 1.7.4.1 2001/06/28 19:06:34 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* +---------------------- Copyright notice -------------------------------+ */ /* | Copyright (C) 1995, Guy Barrand, LAL Orsay, (barrand@lal.in2p3.fr) | */ diff --git a/environments/OPACS/src/G4oState.cc b/environments/OPACS/src/G4oState.cc index 20adf8fab4..e7f6b2ed17 100644 --- a/environments/OPACS/src/G4oState.cc +++ b/environments/OPACS/src/G4oState.cc @@ -22,7 +22,7 @@ // // // $Id: G4oState.cc,v 1.6.4.1 2001/06/28 19:06:34 gunter Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // //#define DEBUG diff --git a/examples/History b/examples/History index e37e4a08bd..67dbb305d4 100644 --- a/examples/History +++ b/examples/History @@ -1,4 +1,4 @@ -$Id: History,v 1.59 2001/01/25 11:58:05 stesting Exp $ +$Id: History,v 1.63 2001/12/13 17:49:48 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,18 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +13th December 2001 Gabriele Cosmo (examples-V03-02-05) +- Updated reference outputs. + +12th December 2001 John Allison (examples-V03-02-04) +- Updated new VisManagers for new graphics systems and defaults. + +19th November 2001 John Allison (examples-V03-02-02) +- Updated VisManagers for new graphics systems and defaults. + +23-Oct-2001 Gabriele Cosmo (examples-V03-02-01) +- Synchronised with HEAD revision. Removal of all occurences of RW wrappers. + 25-Jan-2001 Steve O'Neale (examples-V03-00-00) - Updated all "small_N" test outputs diff --git a/examples/README b/examples/README index 8a4fa60a28..35bfb92de7 100644 --- a/examples/README +++ b/examples/README @@ -1,4 +1,4 @@ -$Id: README,v 1.2 1999/05/31 08:14:43 asaim Exp $ +$Id: README,v 1.3 2001/10/23 15:24:08 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,16 +14,18 @@ in a correct way those user-classes which the user is supposed to customize in order to define his/her own simulation setup. One set of examples is oriented to "novice" users and covering all possible general use-cases typical of an "application"-oriented kind of -development. An "Extended" set of examples require some additional -libraries besides of Geant4. This set covers some realistic use cases -for actual detector simulation for HEP. An "advanced" set of examples -(not yet available at the current time), will cover the use-cases typical -of a "toolkit"-oriented kind of development. +development. An "extended" set of examples require some additional +libraries besides of Geant4. This set covers some specific use cases +for actual detector simulation. An "advanced" set of examples covers +the use-cases typical of a "toolkit"-oriented kind of development, +where real complete applications for different simulation studies are +provided; may require additional third party products to be built. Most of the examples can be run both in interactive and batch mode, and input macro files (*.in) and reference output files (*.out) are provided. -These examples are considered part of the validation procedure for the -official releases of the GEANT4 toolkit, as "acceptance"-testing phase -of the validation process. +Novice and most of the extended examples are considered part of the +system testing suite for validation of the official releases of the +GEANT4 toolkit. Novice examples are used as "acceptance"-tests for the +release process. Novice level examples ExampleN01 @@ -48,10 +50,21 @@ Novice level examples - Optical photon processes Extended level examples - ExampleE01 - - CLHEP histogramming - ExampleE02 - - Persistency by HepODBMS (CERN RD45) - ExampleE03 - - STEP geometry interface + analysis + - Histogramming through the AIDA interface + electromagnetic + - Specific EM physics simulation with histogramming + field + - Specific simulation setups in magnetic field + g3tog3 + - Examples of usage of the g3tog4 converter tool + persistency + - Persistency through the HepODBMS interface +Advanced level examples + brachytherapy + - Setup for brachytherapy Ir-192 HDR source + gammaray_telescope + - Simulation of a typical telescope for gamma ray analysis + xray_telescope + - Realistic simulation of an X-ray Telescope diff --git a/examples/advanced/GNUmakefile b/examples/advanced/GNUmakefile index 746025b899..26054c3bda 100644 --- a/examples/advanced/GNUmakefile +++ b/examples/advanced/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:05:17 gunter Exp $ +# $Id: GNUmakefile,v 1.3 2001/12/04 13:38:55 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -9,7 +9,8 @@ endif include $(G4INSTALL)/config/architecture.gmk -SUBDIRS = A01 A02 A03 A04 A05 A06 +SUBDIRS = brachytherapy gammaray_telescope underground_physics +SUBDIRS += xray_fluorescence xray_telescope .PHONY : all clean clean_libs diff --git a/examples/advanced/README b/examples/advanced/README index 4653c041a8..ff2c966efa 100644 --- a/examples/advanced/README +++ b/examples/advanced/README @@ -1,4 +1,4 @@ -$Id: README,v 1.1 1999/01/07 16:05:17 gunter Exp $ +$Id: README,v 1.2 2001/10/23 15:09:27 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -8,3 +8,12 @@ $Id: README,v 1.1 1999/01/07 16:05:17 gunter Exp $ Advanced Examples ----------------- +In this directory one can find examples of real complete applications used +for different simulation studies. The applications included here may require +third party products for handling of the data produced (visualization, +analysis or persistency tools). Refer to the README and documentation provided +in each example for the details. +These application are made part of the official GEANT4 distribution, however +their maintenance and updates is under responsibility of the authors. These +applications are not subject to regular system testing. + diff --git a/examples/advanced/brachytherapy/Brachy.cc b/examples/advanced/brachytherapy/Brachy.cc index e2bf6e08c9..d58d19a43a 100644 --- a/examples/advanced/brachytherapy/Brachy.cc +++ b/examples/advanced/brachytherapy/Brachy.cc @@ -19,10 +19,7 @@ // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** -// -// -// $Id: Brachy.cc,v 1.4.4.1 2001/06/28 19:06:34 gunter Exp $ -// GEANT4 tag $Name: $ + // // -------------------------------------------------------------- // GEANT 4 - Brachytherapy example @@ -37,12 +34,13 @@ // // Simplified gamma generation is used. // Source axis is oriented along Z axis. -// Voxel data on the X-Z plane is output to ASCII file +// Voxel data on the X-Z plan +//e is output to ASCII file // "Brachy.out". -// -// For information related to this code contact the developers. -// -// -------------------------------------------------------------- + +// +// $Id: Brachy.cc,v 1.8 2001/12/13 13:44:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "BrachyEventAction.hh" #include "BrachyDetectorConstruction.hh" @@ -50,6 +48,7 @@ #include "BrachyPrimaryGeneratorAction.hh" #include "BrachyWaterBoxSD.hh" + #include "Randomize.hh" #include "G4RunManager.hh" #include "G4SDManager.hh" @@ -58,7 +57,7 @@ int main() { // Number of generated photons - G4int NumberOfEvents = 10; + G4int NumberOfEvents = 1000; // Define number of voxels in X-Z plane G4int NumVoxelX = 101; @@ -103,8 +102,15 @@ int main() // Format = x coord [mm] z coord [mm] edep [MeV] ofs.open("Brachy.out"); { - G4double VoxelWidth_X = pDetectorConstruction->m_BoxDimX/NumVoxelX; - G4double VoxelWidth_Z = pDetectorConstruction->m_BoxDimZ/NumVoxelZ; + + ofs<<" x(mm)"<<'\t'<<"z(mm)"<<'\t'<<"released energy(Mev)" + <GetBoxDim_X()/NumVoxelX; + G4double VoxelWidth_Z = pDetectorConstruction->GetBoxDim_Z()/NumVoxelZ; + G4double x,z; for(G4int k=0;k 3*mm || fabs(z) > 6*mm) - ofs << x << '\t' << z << '\t' << pVoxel[j] << G4endl; - } + { ofs << x << '\t' << z << '\t' << pVoxel[j] << G4endl; + //check released energy + // if(pVoxel[j]!=0) + // G4cout<SetUserInitialization(new GammaRayTelPhysicsList); // Set mandatory user action classes - runManager->SetUserAction(new GammaRayTelPrimaryGeneratorAction(detector)); + runManager->SetUserAction(new GammaRayTelPrimaryGeneratorAction); #ifdef G4ANALYSIS_USE // Creation of the analysis manager - GammaRayTelAnalysisManager* analysisMgr = new GammaRayTelAnalysisManager(detector); + GammaRayTelAnalysis* analysis = GammaRayTelAnalysis::getInstance(); #endif // Set optional user action classes -#ifdef G4ANALYSIS_USE - GammaRayTelEventAction* eventAction = - new GammaRayTelEventAction(analysisMgr); - GammaRayTelRunAction* runAction = - new GammaRayTelRunAction(analysisMgr); -#else GammaRayTelEventAction* eventAction = new GammaRayTelEventAction(); GammaRayTelRunAction* runAction = new GammaRayTelRunAction(); -#endif runManager->SetUserAction(eventAction); runManager->SetUserAction(runAction); @@ -102,10 +100,15 @@ int main(int argc, char** argv) #ifdef G4UI_USE_XM // Create a XMotif user interface session = new G4UIXm(argc,argv); +#else +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); #else // Create the standard user interface - session = new G4UIterminal; + session = new G4UIterminal(); #endif +#endif + #ifdef G4VIS_USE // Visualization manager G4VisManager* visManager = new GammaRayTelVisManager; @@ -143,7 +146,7 @@ int main(int argc, char** argv) delete visManager; #endif #ifdef G4ANALYSIS_USE - delete analysisMgr; + delete analysis; #endif delete runManager; return 0; @@ -156,3 +159,5 @@ int main(int argc, char** argv) + + diff --git a/examples/advanced/gammaray_telescope/README b/examples/advanced/gammaray_telescope/README index c1c478627a..99c19e8c3f 100644 --- a/examples/advanced/gammaray_telescope/README +++ b/examples/advanced/gammaray_telescope/README @@ -1,4 +1,4 @@ -$Id: README,v 1.2 2000/12/06 16:53:12 flongo Exp $ +$Id: README,v 1.11 2001/12/07 12:57:30 pfeiffer Exp $ ------------------------------------------------------------------- ========================================================= @@ -19,12 +19,14 @@ GammaRayTel is an example of application of Geant4 in a space envinronment. It simulates a typical telescope for gamma ray analysis; the detector setup is composed by a tracker made with silicon planes, subdivided in ladders and strips, a CsI calorimeter and an -anticoincidence system. In this version, only the tracker is made -sensitive; the hits on the tracker strips are registered and relevant +anticoincidence system. In this version, the three detectors are made +sensitive but only the hits on the tracker strips are registered and relevant information (energy deposition, position etc) are dumped to an external -ASCII file for subsequent analysis. If Lizard is available on the user -platform, than some histograms with relevant hits information are -displayed and saved as PostScript files. +ASCII file for subsequent analysis. If the user has set up the +AIDA (version 2.2 or compatible) environment or Anaphe/Lizard is available, +then some histograms with relevant hits information are displayed +and saved as PostScript files, and histograms and ntuples with +relevant information are stored on a HBOOK file. The main features of this example are @@ -39,11 +41,12 @@ The main features of this example are subdivisions of the planes of the tracker (strips) without affecting in a relevant way the simulation performances - d) Histogramming for Linux and Solaris platform via the - Lizard system (tested on Linux platform); this is a preliminary - feature of GEANT4, so expect some changes and/or improvements in - future releases - + d) Histograming facilities are presently provided for the Linux + environment either by using the AIDA interfaces, or through + the Anaphe/Lizard system. The AIDA compliant version has not + been tested by the developers and is here as a example of + "forward compatibility" on how to use analysis. + e) User interfaces via Xmotif or normal terminal provided @@ -67,36 +70,43 @@ The main features of this example are - Setup for Xmotif user interface setenv G4UI_USE_XM 1 + (IMPORTANT: Do not set G4ANALYSIS_USE_NTUPLE when using XM!) + - - - Set up for analysis using Lizard - - IMPORTANT: be sure that your G4 installation has been done properly; - in particular be sure that the following environment variables are - set prior to build the library (this is working only on Linux and - Solaris platform) - - setenv G4ANALYSIS_BUILD 1 # Build the analysis tools - setenv G4ANALYSIS_BUILD_LIZARD 1 # Build the Lizard interface - setenv LIZARDROOT /usr/local/freeLizard/3.2.0 #get correct path - - For example at CERN the path is - setenv LIZARDROOT /afs/cern.ch/project/asddat/lhcxx/3.2.0/freeLizard/3.2.0 - + - Set up for analysis using AIDA To compile the GammaRayTel example with the analysis tools activated, set the following variables setenv G4ANALYSIS_USE 1 # Use the analysis tools - setenv G4ANALYSIS_USE_LIZARD 1 # Use the Lizard one - and be sure to have the right path to the Lizard library + To be sure to have the right compilation and link flags, the + 'aida-config' command, provided by an AIDA compliant implementation + must be up and running ; in particular 'aida-config --cflags' and + 'aida-config --libs' must be active. - #add to the LD_LIBRARY_PATH (get correct path) - setenv LD_LIBRARY_PATH /usr/local/freeLizard/3.2.0/Linux/lib + - Set up for analysis using Anaphe/Lizard - For example at CERN the path is - setenv LD_LIBRARY_PATH /afs/cern.ch/project/asddat/lhcxx/3.2.0/freeLizard/3.2.0/Linux/lib + To compile the GammaRayTel example with the analysis tools activated, + set the following variables + + setenv G4ANALYSIS_USE 1 # Use the analysis tools + setenv G4ANALYSIS_USE_NTUPLE 1 # To store Ntuples + + (IMPORTANT: Do not set G4UI_USE_XM when using Ntuples!) + + and be sure to have the right path to the Lizard library, inserting this + on the .tcshrc: + + (on a CERN machine with the gcc-2.95 compiler) + + setenv PATH ${PATH}:/afs/cern.ch/sw/lhcxx/specific/redhat61/gcc-2.95.2/3.6.5/bin + source /afs/cern.ch/sw/lhcxx/share/LHCXX/3.6.5/install/sharedstart.csh + + (on a CERN machine with the egcs-2.91.66 compiler (G4SYSTEM Linux-egcs) + + setenv PATH ${PATH}:/afs/cern.ch/sw/lhcxx/specific/redhat61/egcs_1.1.2/3.6.5-sec/bin + source /afs/cern.ch/sw/lhcxx/share/LHCXX/3.6.5-sec/install/sharedstart.csh 2. Sample run @@ -120,6 +130,18 @@ The main features of this example are your local G4 installation (see geant4/source/visualization/README for more information). + + ATTENTION: + If you use analysis with Lizard, you have to remove any hbook file in the + example directory obtained in previous Geant4 sessions. This issues will be + solved in future releases. Note also that the following error can be reported + during run with analysis activated + + ***** ERROR in HLNEXT : Bad sequence for RZ : ID= 1 + + Ignore this message; histograms (and ntuples) are correctly saved in the hbook files. + + 3. Detector description ----------------------- @@ -163,8 +185,9 @@ The main features of this example are 7. Hit ------ - In this version only the hits from the TKR are recorded. Each hit - contains the following information + In this version the hits from the TKR the CAL and the ACD are generated. + Only the hit from the TRK are saved. Each TKR hit contains the following + information a) ID of the event (this is important for multiple events run) b) Energy deposition of the particle in the strip (keV) @@ -176,7 +199,20 @@ The main features of this example are The hit information are saved on an ASCII file named Tracks_N.dat, where N is the progressive ID number associated to the run. -8. Histogramming +8. Analysis +---------------- + + At present there are two options for analysis packages: either + explicitely the Anaphe 3.6.5 (or compatible) version is selected, + or any AIDA-2.2 compliant analysis system is chosen. This dual + approach will be removed in the next release when only the AIDA + compliant version will be present. Presently, the OpenScientist + package (version 8) provides an implementation of AIDA 2.2, + other packages as Anaphe and JAS will follow soon. The AIDA + compliant version has not been tested by the developers and is + here as a example of "forward compatibility" on how to use analysis. + +9. Histogramming ---------------- Some hits information can be visualized runtime using Lizard (if it is @@ -207,7 +243,20 @@ The main features of this example are for next releases. -9. Classes Overview +10. Digi +-------- + + For the TKR also the digits corresponding to the Hits are generated. + A digi is generated when the hit energy deposit is greater than a threshold + (in this example setted at 120 keV). + The TKR digi information are stored on the same file Tracks_N.dat and contain: + + a) ID of the event (this is important for multiple events run) + b) Number of the strip + c) Number of the plane + d) Type of the plane (1=X 0=Y) + +11. Classes Overview ------------------- This is the overview of the classes defined in this example @@ -233,7 +282,7 @@ The main features of this example are Messenger for interactive geometry parameters modification via the User Interface - GammaRayTelAnalysisManager + GammaRayTelAnalysis Analysis manager class with Lizard tool (experimental) GammaRayTelAnalysisMessenger @@ -246,14 +295,36 @@ The main features of this example are GammaRayTelEventAction User event action class - GammaRayTelPayloadHit + GammaRayTelTrackerHit Description of the hits on the tracker - GammaRayTelPayloadROGeometry + GammaRayTelDigi + Description of the digi on the tracker + + GammaRayTelDigitizer + Description of the digitizer for the tracker + + GammaRayTelTrackerROGeometry Description of the readout geometry for strips subdivision - GammaRayTelPayloadSD - Description of the sensitive detector + GammaRayTelTrackerSD + Description of the TKR sensitive detector + + GammaRayTelAnticoincidenceHit + Description of the hits on the anticoincidence + + GammaRayTelAnticoincidenceSD + Description of the ACD sensitive detector + + GammaRayTelCalorimeterHit + Description of the hits on the calorimeter + + GammaRayTelCalorimeterSD + Description of the CAL sensitive detector + + + + diff --git a/examples/advanced/gammaray_telescope/anaphe.gmk b/examples/advanced/gammaray_telescope/anaphe.gmk new file mode 100644 index 0000000000..6efb7de56b --- /dev/null +++ b/examples/advanced/gammaray_telescope/anaphe.gmk @@ -0,0 +1,38 @@ + +# Some pieces to include if Anaphe is selected as analysis environment +# be aware that this will be obsolete as soon as Anaphe is implementing +# the AIDA 2.2 interfaces. + +# +# This requires the env-var LHCXX_REL_DIR to be set up correctly, +# see the first lines in G4ComptonTest.cc +# + +ifdef G4ANALYSIS_USE + + CPPFLAGS += -I$(LHCXX_REL_DIR)/include + +ifdef G4ANALYSIS_USE_NTUPLE + CPPFLAGS += -DG4ANALYSIS_USE_NTUPLE +endif + +# C_FLAGS += -I$(LHCXX_REL_DIR)/include + LDFLAGS += -L$(LHCXX_REL_DIR)/lib +# general stuff: + LOADLIBS += -lHepUtilities -lAIDA_Annotation +# add for Histograms: + LOADLIBS += -lAIDA_HBook +# add for Vectors: + LOADLIBS += -lVector +# add for Plotter: + LOADLIBS += -lAIDA_Plotter -lqp -lqpview -lqt-mt -lqutil -lqt +# add for Ntuples: + LOADLIBS += -lAIDA_Ntuple -lNtupleTag -lNtupleTag_HBook +# ... and finally system stuff and to deal with the "Fortran legacy": + LOADLIBS += -lCHBook -ldl -lg2c +# Xm Xt + LDFLAGS += -L$/usr/local/lib -lXm -L/usr/X11R6/lib -lXt + + + +endif diff --git a/examples/advanced/gammaray_telescope/gammaraytel.py b/examples/advanced/gammaray_telescope/gammaraytel.py new file mode 100644 index 0000000000..4686582b9a --- /dev/null +++ b/examples/advanced/gammaray_telescope/gammaraytel.py @@ -0,0 +1,32 @@ +# tell HistoManager where to find the histograms: +# change the name to access hbook files different from the first run +hm.selectStore("gammaraytel0.hbook") + +# ... and load them into memory: +hE = hm.load1D(1) +hPl = hm.load1D(2) +hXZ = hm.load2D(3) +hYZ = hm.load2D(4) + +# set plotter to 3*2 zones +pl.zone(2,2) +# ... and plot the histograms +hplot(hE) +hplot(hPl) +hplot(hXZ) +hplot(hYZ) + +# get the primary ntuple from the NtupleManager +nt1 = ntm.findNtuple("gammaraytel0.hbook::1" ) + +# see which attributes there are: +nt1.listAttributes() + + + + + + + + + diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisManager.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh-AIDA similarity index 75% rename from examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisManager.hh rename to examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh-AIDA index babafbda01..86f089b481 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisManager.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh-AIDA @@ -21,23 +21,29 @@ // ******************************************************************** // // -// $Id: GammaRayTelAnalysisManager.hh,v 1.2.2.2 2001/06/28 20:18:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelAnalysis.hh-AIDA,v 1.3 2001/12/07 13:20:20 pfeiffer Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland // // -// ------------ GammaRayTelAnalysisManager ------ +// ------------ GammaRayTelAnalysis ------ // by R.Giannitrapani, F. Longo & G.Santin (30 nov 2000) // +// 07.12.2001 A.Pfeiffer +// - integrated Guy's addition of the ntuple +// +// 06.12.2001 A.Pfeiffer +// - updating to new design (singleton) +// +// 22.11.2001 G.Barrand +// - Adaptation to AIDA +// // ************************************************************ -#ifdef G4ANALYSIS_USE -#ifndef GammaRayTelAnalysisManager_h -#define GammaRayTelAnalysisManager_h 1 - -#include "G4VAnalysisManager.hh" +#ifndef GammaRayTelAnalysis_h +#define GammaRayTelAnalysis_h 1 #include "globals.hh" #include "g4std/vector" @@ -45,33 +51,29 @@ class GammaRayTelAnalysisMessenger; class GammaRayTelDetectorConstruction; + +class IAnalysisFactory; class IHistogramFactory; +class ITree; class IHistogram1D; class IHistogram2D; +class ITuple; class IPlotter; -class IVectorFactory; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class GammaRayTelAnalysisManager: public G4VAnalysisManager -{ +class GammaRayTelAnalysis { public: - GammaRayTelAnalysisManager(GammaRayTelDetectorConstruction*); - virtual ~GammaRayTelAnalysisManager(); + virtual ~GammaRayTelAnalysis(); public: - G4bool RegisterAnalysisSystem(G4VAnalysisSystem*); - IHistogramFactory* GetHistogramFactory(const G4String&); - void Store(IHistogram* = 0, const G4String& = ""); - void Plot(IHistogram* = 0); - void InsertPositionXZ(double x, double z); - void InsertPositionYZ(double y, double z); - void InsertEnergy(double en); - void InsertHits(int nplane); - void BeginOfRun(); + void BeginOfRun(G4int n); void EndOfRun(G4int n); void EndOfEvent(G4int flag); + void Init(); + void Finish(); + void SetHisto1DDraw(G4String str) {histo1DDraw = str;}; void SetHisto1DSave(G4String str) {histo1DSave = str;}; void SetHisto2DDraw(G4String str) {histo2DDraw = str;}; @@ -80,19 +82,35 @@ public: G4String GetHisto2DMode() {return histo2DMode;}; + void InsertPositionXZ(double x, double z); + void InsertPositionYZ(double y, double z); + void InsertEnergy(double en); + void InsertHits(int nplane); + + void setNtuple(float E, float p, float x, float y, float z); + + static GammaRayTelAnalysis* getInstance(int = 0, char** = 0); + private: - G4VAnalysisSystem* analysisSystem; - IPlotter* pl; - IVectorFactory* fVectorFactory; - IHistogramFactory* histoFactory; + GammaRayTelAnalysis(int = 0, char** = 0); + void plot1D(IHistogram1D* histo); + void plot2D(IHistogram2D* histo); + void Plot(); +private: + static GammaRayTelAnalysis* instance; + + GammaRayTelDetectorConstruction* GammaRayTelDetector; + + IAnalysisFactory* analysisFactory; + ITree* tree; + IPlotter* plotter; + ITuple* tuple; IHistogram1D* energy; IHistogram1D* hits; IHistogram2D* posXZ; IHistogram2D* posYZ; - GammaRayTelDetectorConstruction* GammaRayTelDetector; - G4String histo1DDraw; G4String histo1DSave; G4String histo2DDraw; @@ -104,13 +122,4 @@ private: #endif -#endif - - - - - - - - diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh-Anaphe b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh-Anaphe new file mode 100644 index 0000000000..2d6370d128 --- /dev/null +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysis.hh-Anaphe @@ -0,0 +1,175 @@ + +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// Author: A. Pfeiffer (Andreas.Pfeiffer@cern.ch) +// (copy of his UserAnalyser class) +// +// History: +// ----------- +// 7 Nov 2001 MGP Implemented according to A. Pfeiffer's instructions +// 18 Nov 2001 G.Santin GammaRayTel analysis management modified +// according to the new design +// +// ------------------------------------------------------------------- +// Class description: +// Example of analysis in a simulation application (histograms, ntuples etc.) +// This class follows the singleton design pattern; +// it is responsible for the analysis management and algorithms +// Histograms are compliant with AIDA, except for the usage of IHistoManager, +// which is Anaphe/Lizard-specific +// For ntuples, for which the AIDA interfaces and compliant implementations +// are still in progress at the time of the current Geant4 release, +// an implementation with Anaphe/Lizard is shown +// Other implementations specific to an analysis system are possible too +// (see, for instance, JAS and OpenScientist documentation from the links +// in http://aida.freehep.org/) +// The implementation of the usage of ntuples shown in this example +// is expected to change in future Geant4 releases, when AIDA interfaces +// and related implementations would be available +// Further documentation is available from: http://www.ge.infn.it/geant4/lowE/ +// http://aida.freehep.org/ +// http://cern.ch/anaphe/ + +// ------------------------------------------------------------------- +#ifdef G4ANALYSIS_USE + +#ifndef GammaRayTelAnalysis_h +#define GammaRayTelAnalysis_h + +#include "globals.hh" + +// Histogramming from AIDA +#include "Interfaces/IHistogram1D.h" +#include "Interfaces/IHistogram2D.h" + +// Histogramming from Anaphe +#include "Interfaces/IHistoManager.h" + +// Vectors from ? +#include "Interfaces/IVector.h" +#include "Interfaces/IVectorFactory.h" + +// Plotting from Anaphe? +#include "Interfaces/IPlotter.h" +//#include "AIDA_Plotter/AIDAPlotter.h" + +// Ntuples from Anaphe + +#ifdef G4ANALYSIS_USE_NTUPLE + +#include "NtupleTag/LizardNTupleFactory.h" +#include "NtupleTag/LizardQuantity.h" +#include "NtupleTag/LizardNTuple.h" + +//using namespace Lizard; + +#endif + +class G4Track; +class GammaRayTelAnalysisMessenger; +class GammaRayTelDetectorConstruction; + +class GammaRayTelAnalysis +{ +public: + + ~GammaRayTelAnalysis(); + + void BeginOfRun(G4int n); + void EndOfRun(G4int n); + void EndOfEvent(G4int flag); + + void Init(); + void Finish(); + + void SetHisto1DDraw(G4String str) {histo1DDraw = str;}; + void SetHisto1DSave(G4String str) {histo1DSave = str;}; + void SetHisto2DDraw(G4String str) {histo2DDraw = str;}; + void SetHisto2DSave(G4String str) {histo2DSave = str;}; + void SetHisto2DMode(G4String str) {histo2DMode = str;}; + G4String GetHisto2DMode() {return histo2DMode;}; + + void InsertPositionXZ(double x, double z); + void InsertPositionYZ(double y, double z); + void InsertEnergy(double en); + void InsertHits(int nplane); + +#ifdef G4ANALYSIS_USE_NTUPLE + void setNtuple(float E, float p, float x, float y, float z); +#endif + + static GammaRayTelAnalysis* getInstance(); + +private: + + GammaRayTelAnalysis(); + + void plot1D(IHistogram1D* histo); + void plot2D(IHistogram2D* histo); + void Plot(); + + static GammaRayTelAnalysis* instance; + + IHistoManager* histoManager; + IVectorFactory* vectorFactory; + IPlotter* plotter; + +#ifdef G4ANALYSIS_USE_NTUPLE + + // ---- NOTE ---- + // Histograms are compliant to AIDA interfaces, ntuples are Lizard specific + + Lizard::NTuple* ntuple; + Lizard::NTupleFactory* ntFactory; + + // Quantities for the ntuple + Lizard::Quantity ntEnergy; + Lizard::Quantity ntPlane; + Lizard::Quantity ntX; + Lizard::Quantity ntY; + Lizard::Quantity ntZ; + +#endif + + + GammaRayTelDetectorConstruction* GammaRayTelDetector; + + G4String histo1DDraw; + G4String histo1DSave; + G4String histo2DDraw; + G4String histo2DSave; + G4String histo2DMode; + + GammaRayTelAnalysisMessenger* analysisMessenger; + +}; + +#endif +#endif + + + + + + + diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisMessenger.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisMessenger.hh index e8ccb7a465..54b06b1cbd 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisMessenger.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnalysisMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelAnalysisMessenger.hh,v 1.1.4.2 2001/06/28 20:18:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelAnalysisMessenger.hh,v 1.3 2001/11/23 17:44:54 santin Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file @@ -31,6 +31,7 @@ // // ------------ GammaRayTelAnalysysMessenger ------ // by R.Giannitrapani, F.Longo & G.Santin (03 dec 2000) +// 20.11.01 G.Santin: new analysis management, modified according to GammaRayTelAnalysis // // ************************************************************ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -42,7 +43,7 @@ #include "globals.hh" #include "G4UImessenger.hh" -class GammaRayTelAnalysisManager; +class GammaRayTelAnalysis; class G4UIdirectory; class G4UIcmdWithAString; @@ -51,14 +52,14 @@ class G4UIcmdWithAString; class GammaRayTelAnalysisMessenger: public G4UImessenger { public: - GammaRayTelAnalysisMessenger(GammaRayTelAnalysisManager* ); + GammaRayTelAnalysisMessenger(GammaRayTelAnalysis* ); ~GammaRayTelAnalysisMessenger(); void SetNewValue(G4UIcommand*, G4String); private: - GammaRayTelAnalysisManager* GammaRayTelAnalysis; - G4UIdirectory* GammaRayTelAnalysisDir; + GammaRayTelAnalysis* gammaRayTelAnalysis; + G4UIdirectory* gammaRayTelAnalysisDir; G4UIcmdWithAString* Histo1DDrawCmd; G4UIcmdWithAString* Histo2DDrawCmd; diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceHit.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceHit.hh index 08f14980db..1916e6926e 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceHit.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceHit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelAnticoincidenceHit.hh,v 1.1.2.2 2001/06/28 20:18:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelAnticoincidenceHit.hh,v 1.2 2001/07/11 09:56:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceSD.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceSD.hh index 08cacb4c03..b1c2f74138 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceSD.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelAnticoincidenceSD.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelAnticoincidenceSD.hh,v 1.1.2.2 2001/06/28 20:18:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelAnticoincidenceSD.hh,v 1.3 2001/11/29 11:19:17 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland @@ -50,7 +50,7 @@ class GammaRayTelAnticoincidenceSD : public G4VSensitiveDetector { public: - GammaRayTelAnticoincidenceSD(G4String, GammaRayTelDetectorConstruction* ); + GammaRayTelAnticoincidenceSD(G4String); ~GammaRayTelAnticoincidenceSD(); void Initialize(G4HCofThisEvent*); diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterHit.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterHit.hh index cea735475d..34ec1eda17 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterHit.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterHit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelCalorimeterHit.hh,v 1.1.2.2 2001/06/28 20:18:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelCalorimeterHit.hh,v 1.2 2001/07/11 09:56:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterSD.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterSD.hh index 5416664e7e..43e3b6c924 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterSD.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelCalorimeterSD.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelCalorimeterSD.hh,v 1.1.2.2 2001/06/28 20:18:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelCalorimeterSD.hh,v 1.4 2001/11/29 11:19:17 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland @@ -50,7 +50,7 @@ class GammaRayTelCalorimeterSD : public G4VSensitiveDetector { public: - GammaRayTelCalorimeterSD(G4String, GammaRayTelDetectorConstruction* ); + GammaRayTelCalorimeterSD(G4String); ~GammaRayTelCalorimeterSD(); void Initialize(G4HCofThisEvent*); @@ -64,10 +64,14 @@ private: GammaRayTelCalorimeterHitsCollection* CalorimeterCollection; GammaRayTelDetectorConstruction* Detector; - G4int (*ChitXID)[12]; - G4int (*ChitYID)[12]; + + G4int (*ChitXID); + G4int (*ChitYID); + G4int NbOfCALLayers; G4int NbOfCALBars; + G4int NbOfCALChannels; + }; #endif diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorConstruction.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorConstruction.hh index 4962b46ef1..bfce9b4702 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorConstruction.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelDetectorConstruction.hh,v 1.5.2.2 2001/06/28 20:18:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelDetectorConstruction.hh,v 1.6 2001/07/11 09:56:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorMessenger.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorMessenger.hh index c314cbe195..3731150838 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorMessenger.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDetectorMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelDetectorMessenger.hh,v 1.2.4.2 2001/06/28 20:18:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelDetectorMessenger.hh,v 1.3 2001/07/11 09:56:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh new file mode 100644 index 0000000000..297dbdd967 --- /dev/null +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDigi.hh @@ -0,0 +1,114 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: GammaRayTelDigi.hh,v 1.1 2001/10/24 13:11:54 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// ------------------------------------------------------------ +// GEANT 4 class header file +// CERN Geneva Switzerland +// +// +// ------------ GammaRayTelDigi ------ +// by F.Longo, R.Giannitrapani & G.Santin (24 oct 2001) +// +// ************************************************************ +// This Class describe the digits + +#ifndef GammaRayTelDigi_h +#define GammaRayTelDigi_h 1 + +#include "G4VDigi.hh" +#include "G4TDigiCollection.hh" +#include "G4Allocator.hh" +#include "G4ThreeVector.hh" + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class GammaRayTelDigi : public G4VDigi +{ + +public: + + GammaRayTelDigi(); + ~GammaRayTelDigi(); + GammaRayTelDigi(const GammaRayTelDigi&); + const GammaRayTelDigi& operator=(const GammaRayTelDigi&); + int operator==(const GammaRayTelDigi&) const; + + inline void* operator new(size_t); + inline void operator delete(void*); + + void Draw(); + void Print(); + +private: + + G4int PlaneNumber; // (active detector) + G4int PlaneType; // (0 or 1 for X or Y plane) + G4int StripNumber; // strip number + +public: + + inline void SetPlaneNumber(G4int PlaneNum) {PlaneNumber = PlaneNum;}; + inline void SetPlaneType(G4int PlaneTyp) {PlaneType = PlaneTyp;}; + inline void SetStripNumber(G4int StripNum) {StripNumber = StripNum;}; + + inline G4int GetPlaneNumber() {return PlaneNumber;}; + inline G4int GetPlaneType() {return PlaneType;}; + inline G4int GetStripNumber() {return StripNumber;}; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +typedef G4TDigiCollection GammaRayTelDigitsCollection; + +extern G4Allocator GammaRayTelDigiAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void* GammaRayTelDigi::operator new(size_t) +{ + void* aDigi; + aDigi = (void*) GammaRayTelDigiAllocator.MallocSingle(); + return aDigi; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void GammaRayTelDigi::operator delete(void* aDigi) +{ + GammaRayTelDigiAllocator.FreeSingle((GammaRayTelDigi*) aDigi); +} + +#endif + + + + + + + + + diff --git a/source/analysis/management/include/G4AnalysisManager.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizer.hh similarity index 59% rename from source/analysis/management/include/G4AnalysisManager.hh rename to examples/advanced/gammaray_telescope/include/GammaRayTelDigitizer.hh index 0f71fcf4c3..dc7e28f7ad 100644 --- a/source/analysis/management/include/G4AnalysisManager.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizer.hh @@ -21,49 +21,55 @@ // ******************************************************************** // // -// $Id: G4AnalysisManager.hh,v 1.8.4.1 2001/06/28 19:07:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelDigitizer.hh,v 1.2 2001/11/29 09:34:17 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// ------------------------------------------------------------ +// GEANT 4 class header file +// CERN Geneva Switzerland // -// -// Guy Barrand 20th Mai 2000 // -// Class description +// ------------ GammaRayTelDigitizer ------ // -// Base class for the analysis manager proxy mechanism. +// by F.Longo, R.Giannitrapani & G.Santin (24 oct 2001) // +// ************************************************************ -#ifndef G4ANALYSIS_HH -#define G4ANALYSIS_HH - -#if defined(G4ANALYSIS_BUILD) || defined(G4ANALYSIS_USE) +#ifndef GammaRayTelDigitizer_h +#define GammaRayTelDigitizer_h 1 +#include "G4VDigitizerModule.hh" +#include "GammaRayTelDigi.hh" #include "globals.hh" -#include "g4std/vector" -#include "G4VAnalysisManager.hh" +//#include "g4std/vector" -class G4AnalysisManager : public G4VAnalysisManager { -public: // I methods : - G4bool RegisterAnalysisSystem(G4VAnalysisSystem*); - IHistogramFactory* GetHistogramFactory(const G4String&); - // - virtual void Store(IHistogram* = 0,const G4String& = ""); - virtual void Plot(IHistogram*); +class GammaRayTelDigitizerMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class GammaRayTelDigitizer : public G4VDigitizerModule +{ public: - G4AnalysisManager(); - virtual ~G4AnalysisManager(); + + GammaRayTelDigitizer(G4String name); + ~GammaRayTelDigitizer(); + + void Digitize(); + void SetThreshold(G4double val) { Energy_Threshold = val;} + private: - G4VAnalysisSystem* FindSystem(const G4String&); - G4std::vector fSystems; - G4VAnalysisSystem* fCurrentSystem; - // -#ifdef G4ANALYSIS_NON_AIDA -public: - ICloudFactory* GetCloudFactory(const G4String&); - virtual void Plot(ICloud*); - ITuple* CreateTuple(const G4String&,const G4String&,const G4String&); -#endif + + GammaRayTelDigitsCollection* DigitsCollection; + G4double Energy_Threshold; + GammaRayTelDigitizerMessenger* digiMessenger; + }; #endif -#endif + + + + + + + diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizerMessenger.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizerMessenger.hh new file mode 100644 index 0000000000..3d45aa4e57 --- /dev/null +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDigitizerMessenger.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: GammaRayTelDigitizerMessenger.hh,v 1.1 2001/11/29 09:34:17 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// CERN Geneva Switzerland +// +// +// ------------ GammaRayTelDigitizerMessenger ------ +// by F.Longo, G.Santin & R.Giannitrapani (29 nov 2001) +// +// ************************************************************ + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef GammaRayTelDigitizerMessenger_h +#define GammaRayTelDigitizerMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class GammaRayTelDigitizer; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class GammaRayTelDigitizerMessenger: public G4UImessenger +{ +public: + GammaRayTelDigitizerMessenger(GammaRayTelDigitizer*); + ~GammaRayTelDigitizerMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + +private: + GammaRayTelDigitizer* GammaRayTelAction; + G4UIcmdWithADoubleAndUnit* ThresholdCmd; + +}; + +#endif + + diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelDummySD.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelDummySD.hh index 6324687e1e..0b9d510282 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelDummySD.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelDummySD.hh @@ -22,8 +22,8 @@ // // -// $Id: GammaRayTelDummySD.hh,v 1.1.4.2 2001/06/28 20:18:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelDummySD.hh,v 1.4 2001/11/28 10:07:01 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland @@ -42,12 +42,14 @@ #define GammaRayTelDummySD_h 1 #include "G4VSensitiveDetector.hh" +#include "globals.hh" + class G4Step; class GammaRayTelDummySD : public G4VSensitiveDetector { public: - GammaRayTelDummySD(); + GammaRayTelDummySD(G4String name):G4VSensitiveDetector(name){}; ~GammaRayTelDummySD() {}; void Initialize(G4HCofThisEvent*HCE) {}; @@ -57,7 +59,5 @@ public: void DrawAll() {}; void PrintAll() {}; }; -GammaRayTelDummySD::GammaRayTelDummySD() - : G4VSensitiveDetector("dummySD") -{} + #endif diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelEventAction.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelEventAction.hh index f549e52775..78acbcac43 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelEventAction.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelEventAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelEventAction.hh,v 1.4.2.2 2001/06/28 20:18:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelEventAction.hh,v 1.9 2001/12/04 11:40:28 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland @@ -31,6 +31,8 @@ // ------------ GammaRayTelEventAction ------ // by R.Giannitrapani, F. Longo & G.Santin (13 nov 2000) // +//- inclusion of Digits by F.Longo & R.Giannitrapani (24 oct 2001) +// 20.11.01 G.Santin: new analysis management, modified according to GammaRayTelAnalysis // ************************************************************ @@ -43,21 +45,13 @@ #include "G4UserEventAction.hh" #include "globals.hh" -#ifdef G4ANALYSIS_USE -#include "GammaRayTelAnalysisManager.hh" -#endif - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... class GammaRayTelEventAction : public G4UserEventAction { public: -#ifdef G4ANALYSIS_USE - GammaRayTelEventAction(GammaRayTelAnalysisManager* analysisMgr); -#else GammaRayTelEventAction(); -#endif virtual ~GammaRayTelEventAction(); public: @@ -67,13 +61,11 @@ public: void SetDrawFlag (G4String val) {drawFlag = val;}; private: + G4int trackerCollID; G4int calorimeterCollID; G4int anticoincidenceCollID; G4String drawFlag; -#ifdef G4ANALYSIS_USE - GammaRayTelAnalysisManager* analysisManager; -#endif }; #endif @@ -83,3 +75,4 @@ private: + diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelPhysicsList.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelPhysicsList.hh index 720c8a4973..3ce061c8d3 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelPhysicsList.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelPhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelPhysicsList.hh,v 1.2.4.2 2001/06/28 20:18:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelPhysicsList.hh,v 1.3 2001/07/11 09:56:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorAction.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorAction.hh index b6a2f6a702..d16ce02f89 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorAction.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelPrimaryGeneratorAction.hh,v 1.3.4.2 2001/06/28 20:18:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelPrimaryGeneratorAction.hh,v 1.6 2001/11/29 11:19:17 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file @@ -55,7 +55,8 @@ class GammaRayTelPrimaryGeneratorMessenger; class GammaRayTelPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { public: - GammaRayTelPrimaryGeneratorAction(GammaRayTelDetectorConstruction*); + + GammaRayTelPrimaryGeneratorAction(); ~GammaRayTelPrimaryGeneratorAction(); public: diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorMessenger.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorMessenger.hh index e9b58caee2..dbac35a765 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorMessenger.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelPrimaryGeneratorMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelPrimaryGeneratorMessenger.hh,v 1.2.4.2 2001/06/28 20:18:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelPrimaryGeneratorMessenger.hh,v 1.3 2001/07/11 09:56:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelRunAction.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelRunAction.hh index 43c3c52113..273de492eb 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelRunAction.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelRunAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelRunAction.hh,v 1.3.4.2 2001/06/28 20:18:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelRunAction.hh,v 1.5 2001/11/23 17:44:54 santin Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland @@ -30,6 +30,7 @@ // // ------------ GammaRayTelRunAction ------ // by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000) +// 18.11.2001 G.Santin - Modified the analysis management according to the new design // // ************************************************************ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -41,10 +42,6 @@ #include "G4UserRunAction.hh" #include "globals.hh" -#ifdef G4ANALYSIS_USE -#include "GammaRayTelAnalysisManager.hh" -#endif - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... class G4Run; @@ -52,11 +49,7 @@ class G4Run; class GammaRayTelRunAction : public G4UserRunAction { public: -#ifdef G4ANALYSIS_USE - GammaRayTelRunAction(GammaRayTelAnalysisManager* analysisMgr); -#else GammaRayTelRunAction(); -#endif ~GammaRayTelRunAction(); public: @@ -64,9 +57,6 @@ public: void EndOfRunAction(const G4Run*); private: -#ifdef G4ANALYSIS_USE - GammaRayTelAnalysisManager* analysisManager; -#endif }; #endif diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerHit.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerHit.hh index b04dab0b21..77cc567219 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerHit.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerHit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelTrackerHit.hh,v 1.1.2.2 2001/06/28 20:18:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelTrackerHit.hh,v 1.2 2001/07/11 09:56:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerROGeometry.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerROGeometry.hh index 2e33d3b293..496b314c77 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerROGeometry.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerROGeometry.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelTrackerROGeometry.hh,v 1.1.2.2 2001/06/28 20:18:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelTrackerROGeometry.hh,v 1.3 2001/11/29 11:19:17 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland @@ -45,7 +45,6 @@ class GammaRayTelTrackerROGeometry : public G4VReadOutGeometry public: GammaRayTelTrackerROGeometry(); GammaRayTelTrackerROGeometry(G4String); - GammaRayTelTrackerROGeometry(G4String, GammaRayTelDetectorConstruction*); ~GammaRayTelTrackerROGeometry(); private: diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerSD.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerSD.hh index 6d4c4f38e4..8994870c7a 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerSD.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelTrackerSD.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelTrackerSD.hh,v 1.1.2.2 2001/06/28 20:18:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelTrackerSD.hh,v 1.4 2001/11/29 11:19:17 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland @@ -50,7 +50,7 @@ class GammaRayTelTrackerSD : public G4VSensitiveDetector { public: - GammaRayTelTrackerSD(G4String, GammaRayTelDetectorConstruction* ); + GammaRayTelTrackerSD(G4String); ~GammaRayTelTrackerSD(); void Initialize(G4HCofThisEvent*); @@ -64,10 +64,14 @@ private: GammaRayTelTrackerHitsCollection* TrackerCollection; GammaRayTelDetectorConstruction* Detector; - G4int (*ThitXID)[30]; - G4int (*ThitYID)[30]; + + G4int (*ThitXID); + G4int (*ThitYID); + G4int NbOfTKRLayers; G4int NbOfTKRStrips; + G4int NbOfTKRChannels; + }; diff --git a/examples/advanced/gammaray_telescope/include/GammaRayTelVisManager.hh b/examples/advanced/gammaray_telescope/include/GammaRayTelVisManager.hh index ea560bfe70..f75eadf458 100644 --- a/examples/advanced/gammaray_telescope/include/GammaRayTelVisManager.hh +++ b/examples/advanced/gammaray_telescope/include/GammaRayTelVisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelVisManager.hh,v 1.2.4.2 2001/06/28 20:18:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelVisManager.hh,v 1.3 2001/07/11 09:56:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class header file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/macro1.mac b/examples/advanced/gammaray_telescope/macro1.mac index 2b479396aa..c3aac92a3e 100644 --- a/examples/advanced/gammaray_telescope/macro1.mac +++ b/examples/advanced/gammaray_telescope/macro1.mac @@ -22,35 +22,24 @@ #/payload/setNbOfTKRLayers 15 #/payload/update -# -# Create empty scene ("world" is default) -/vis/scene/create - -# -# Add volume to scene -/vis/scene/add/volume - # # Create a scene handler for a specific graphics system -/vis/sceneHandler/create OGLSX +/vis/open OGLSX -# Create a viewer -/vis/viewer/create +/vis/viewer/reset +/vis/viewer/viewpointThetaPhi 90 0 -# Positioning of the camera -/vis/camera/viewpoint 30 30 +# Visualize of the whole detector geometry +/vis/drawVolume # for drawing the tracks # if too many tracks cause core dump => storeTrajectory 0 /tracking/storeTrajectory 1 -#/vis/scene/include/trajectories + # # Flush visualization /vis/viewer/update -# -# Draw scene -/vis/scene/notifyHandlers diff --git a/examples/advanced/gammaray_telescope/macro2.mac b/examples/advanced/gammaray_telescope/macro2.mac index 42132974b0..5afc2fb6d2 100644 --- a/examples/advanced/gammaray_telescope/macro2.mac +++ b/examples/advanced/gammaray_telescope/macro2.mac @@ -22,39 +22,21 @@ /payload/setNbOfTKRLayers 10 /payload/update -# -# Create empty scene ("world" is default) -/vis/scene/create # -# Add volume to scene -/vis/scene/add/volume +# Create a scene handler for a specific graphics system +/vis/open VRML2FILE -# -# Create a scene handler for a VRML file -/vis/sceneHandler/create VRML2FILE - -# Create a viewer -/vis/viewer/create - -# Positioning of the camera -/vis/camera/viewpoint 30 30 - - -# Create a viewer -/vis/viewer/create - -# Positioning of the camera -/vis/camera/viewpoint 90 0 - -# Draw scene -/vis/scene/notifyHandlers +/vis/viewer/reset +/vis/viewer/viewpointThetaPhi 90 0 +# Visualize of the whole detector geometry +/vis/drawVolume # for drawing the tracks # if too many tracks cause core dump => storeTrajectory 0 /tracking/storeTrajectory 1 -#/vis/scene/include/trajectories + # # Flush visualization /vis/viewer/update @@ -65,4 +47,3 @@ - diff --git a/examples/advanced/gammaray_telescope/macro3.mac b/examples/advanced/gammaray_telescope/macro3.mac index 778c13bd37..6f38096276 100644 --- a/examples/advanced/gammaray_telescope/macro3.mac +++ b/examples/advanced/gammaray_telescope/macro3.mac @@ -22,6 +22,7 @@ #/payload/setNbOfTKRLayers 15 #/payload/update + # # Create empty scene ("world" is default) /vis/scene/create @@ -31,7 +32,7 @@ /vis/scene/add/volume # -# Create a scene handler for a specific graphics system +# Create a scene handler for a VRML file /vis/sceneHandler/create DAWNFILE # Create a viewer @@ -40,6 +41,17 @@ # Positioning of the camera /vis/camera/viewpoint 30 30 + +# Create a viewer +/vis/viewer/create + +# Positioning of the camera +/vis/camera/viewpoint 90 0 + +# Draw scene +/vis/scene/notifyHandlers + + # for drawing the tracks # if too many tracks cause core dump => storeTrajectory 0 /tracking/storeTrajectory 1 @@ -48,9 +60,9 @@ # Flush visualization /vis/viewer/update -# -# Draw scene -/vis/scene/notifyHandlers + + + diff --git a/examples/advanced/gammaray_telescope/prerunGammaRayTel.mac b/examples/advanced/gammaray_telescope/prerunGammaRayTel.mac index 8250603968..309f0365e0 100644 --- a/examples/advanced/gammaray_telescope/prerunGammaRayTel.mac +++ b/examples/advanced/gammaray_telescope/prerunGammaRayTel.mac @@ -6,12 +6,10 @@ # /control/verbose 2 /control/saveHistory -/run/verbose 2 +/run/verbose 1 /gun/particle gamma /gun/energy 1 GeV /gun/vertexRadius 25. cm /gun/sourceType 2 - - diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc-AIDA b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc-AIDA new file mode 100644 index 0000000000..49c5e12ca4 --- /dev/null +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc-AIDA @@ -0,0 +1,344 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: GammaRayTelAnalysis.cc-AIDA,v 1.3 2001/12/07 13:20:20 pfeiffer Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// ------------------------------------------------------------ +// GEANT 4 class implementation file +// CERN Geneva Switzerland +// +// +// ------------ GammaRayAnalysisManager ------ +// by R.Giannitrapani, F.Longo & G.Santin (03 dic 2000) +// +// 07.12.2001 A.Pfeiffer +// - integrated Guy's addition of the ntuple +// +// 06.12.2001 A.Pfeiffer +// - updating to new design (singleton) +// +// 22.11.2001 G.Barrand +// - Adaptation to AIDA +// +// ************************************************************ + + +#include "G4RunManager.hh" + +#include "GammaRayTelAnalysis.hh" +#include "GammaRayTelDetectorConstruction.hh" +#include "GammaRayTelAnalysisMessenger.hh" + +#ifdef G4ANALYSIS_USE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +GammaRayTelAnalysis* GammaRayTelAnalysis::instance = 0; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelAnalysis::GammaRayTelAnalysis(int argc,char** argv) +:GammaRayTelDetector(0) +,analysisFactory(0), tree(0), plotter(0), tuple(0) +,energy(0), hits(0), posXZ(0), posYZ(0) +,histo1DDraw("enable"),histo1DSave("enable"),histo2DDraw("enable") +,histo2DSave("enable"),histo2DMode("strip") +{ + G4RunManager* runManager = G4RunManager::GetRunManager(); + GammaRayTelDetector = +(GammaRayTelDetectorConstruction*)(runManager->GetUserDetectorConstruction()); + +#ifdef G4ANALYSIS_USE + // Define the messenger and the analysis system + analysisMessenger = new GammaRayTelAnalysisMessenger(this); + + analysisFactory = AIDA_createAnalysisFactory(); + if(analysisFactory) { + + ITreeFactory* treeFactory = analysisFactory->createTreeFactory(); + if(treeFactory) { + // Tree in memory : + //tree = treeFactory->create(); + // Create a "tree" associated to a ROOT "store" (in RECREATE mode). + tree = treeFactory->create("GammaRayTel.root",false,false,"ROOT"); + if(tree) { + IHistogramFactory* histoFactory = + analysisFactory->createHistogramFactory(*tree); + if(histoFactory) { + // Create histos : + int Nplane = GammaRayTelDetector->GetNbOfTKRLayers(); + int Nstrip = GammaRayTelDetector->GetNbOfTKRStrips(); + int Ntile = GammaRayTelDetector->GetNbOfTKRTiles(); + float sizexy = GammaRayTelDetector->GetTKRSizeXY(); + float sizez = GammaRayTelDetector->GetTKRSizeZ(); + int N = Nstrip*Ntile; + + // 1D histogram that store the energy deposition of the + // particle in the last (number 0) TKR X-plane + energy = histoFactory->create1D("1","Energy deposition in the last X plane (keV)", 100, 50, 200); + + // 1D histogram that store the hits distribution along the TKR X-planes + hits = histoFactory->create1D("2","Hits distribution in the TKR X planes",Nplane, 0, Nplane-1); + + // 2D histogram that store the position (mm) of the hits (XZ projection) + if (histo2DMode == "strip") + posXZ = histoFactory->create2D("3","Tracker Hits XZ (strip,plane)", + N, 0, N-1, + 2*Nplane, 0, Nplane-1); + else + posXZ = histoFactory->create2D("3","Tracker Hits XZ (x,z) in mm", + sizexy/5, -sizexy/2, sizexy/2, + sizez/5, -sizez/2, sizez/2); + + // 2D histogram that store the position (mm) of the hits (YZ projection) + if(histo2DMode=="strip") + posYZ = histoFactory->create2D("4","Tracker Hits YZ (strip,plane)", + N, 0, N-1, + 2*Nplane, 0, Nplane-1); + else + posYZ = histoFactory->create2D("4","Tracker Hits YZ (y,z) in mm", + sizexy/5, -sizexy/2, sizexy/2, + sizez/5, -sizez/2, sizez/2); + + delete histoFactory; + } + + + // Get a tuple factory : + ITupleFactory* tupleFactory = analysisFactory->createTupleFactory(*tree); + if(tupleFactory) { + // Create a tuple : + tuple = tupleFactory->create("tuple","tuple", + "energy plane x y z"); + delete tupleFactory; + } + } + delete treeFactory; // Will not delete the ITree. + } + + IPlotterFactory* plotterFactory = + analysisFactory->createPlotterFactory(argc,argv); + if(plotterFactory) { + plotter = plotterFactory->create(); + if(plotter) { + plotter->show(); + plotter->setParameter("pageTitle","Gamma Ray Tel"); + } + delete plotterFactory; + } + + } + + +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelAnalysis::~GammaRayTelAnalysis() { + Finish(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void GammaRayTelAnalysis::Init() +{ +} + +void GammaRayTelAnalysis::Finish() +{ +#ifdef G4ANALYSIS_USE + delete plotter; + delete analysisFactory; // Will delete tree and histos. + delete analysisMessenger; + analysisMessenger = 0; +#endif +} + +GammaRayTelAnalysis* GammaRayTelAnalysis::getInstance(int argc,char** argv) +{ + if (instance == 0) instance = new GammaRayTelAnalysis(argc,argv); + return instance; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// This function fill the 2d histogram of the XZ positions +void GammaRayTelAnalysis::InsertPositionXZ(double x, double z) +{ +#ifdef G4ANALYSIS_USE + if(posXZ) posXZ->fill(x, z); +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// This function fill the 2d histogram of the YZ positions +void GammaRayTelAnalysis::InsertPositionYZ(double y, double z) +{ +#ifdef G4ANALYSIS_USE + if(posYZ) posYZ->fill(y, z); +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// This function fill the 1d histogram of the energy released in the last Si plane +void GammaRayTelAnalysis::InsertEnergy(double en) +{ +#ifdef G4ANALYSIS_USE + if(energy) energy->fill(en); +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// This function fill the 1d histogram of the hits distribution along the TKR planes +void GammaRayTelAnalysis::InsertHits(int nplane) +{ +#ifdef G4ANALYSIS_USE + if(hits) hits->fill(nplane); +#endif +} + +void GammaRayTelAnalysis::setNtuple(float E, float p, float x, float y, float z) +{ +#ifdef G4ANALYSIS_USE + if(tuple) { + tuple->fill(0,E); + tuple->fill(1,p); + tuple->fill(2,x); + tuple->fill(3,y); + tuple->fill(4,z); + tuple->addRow(); + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +/* + This member reset the histograms and it is called at the begin + of each run; here we put the inizialization so that the histograms have + always the right dimensions depending from the detector geometry +*/ +void GammaRayTelAnalysis::BeginOfRun(G4int n) +{ +#ifdef G4ANALYSIS_USE + + if(energy) energy->reset(); + if(hits) hits->reset(); + if(posXZ) posXZ->reset(); + if(posYZ) posYZ->reset(); + + // Set the plotter ; set the number of regions and attach histograms + // to plot for each region. + // It is done here, since then EndOfRun set regions + // for paper output. + if(plotter) { + if((histo2DDraw == "enable") && (histo1DDraw == "enable")) { + plotter->createRegions(2,2); + plotter->plot(*posXZ); + plotter->next(); + plotter->plot(*posYZ); + plotter->next(); + plotter->plot(*energy); + plotter->next(); + plotter->plot(*hits); + } else if((histo1DDraw == "enable") && (histo2DDraw != "enable")) { + plotter->createRegions(1,2); + plotter->plot(*energy); + plotter->next(); + plotter->plot(*hits); + } else if((histo1DDraw != "enable") && (histo2DDraw == "enable")) { + plotter->createRegions(1,2); + plotter->plot(*posXZ); + plotter->next(); + plotter->plot(*posYZ); + } else { // Nothing to plot. + plotter->createRegions(1,1); + } + plotter->refresh(); + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +/* + This member is called at the end of each run +*/ +void GammaRayTelAnalysis::EndOfRun(G4int n) +{ +#ifdef G4ANALYSIS_USE + if(tree) tree->commit(); + + if(plotter) { + // We set one single region for the plotter + plotter->createRegions(1,1); + + // We now print the histograms, each one in a separate file + if(histo2DSave == "enable") { + char name[15]; + sprintf(name,"posxz_%d.ps", n); + plotter->plot(*posXZ); + plotter->write(name,"PS"); + + sprintf(name,"posyz_%d.ps", n); + plotter->clearRegion(); + plotter->plot(*posYZ); + plotter->write(name,"PS"); + } + + if(histo1DSave == "enable") { + char name[15]; + sprintf(name,"energy_%d.ps", n); + plotter->plot(*energy); + plotter->write(name,"PS"); + + sprintf(name,"hits_%d.ps", n); + plotter->clearRegion(); + plotter->plot(*hits); + plotter->write(name,"PS"); + } + } +#endif +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +/* This member is called at the end of every event */ +void GammaRayTelAnalysis::EndOfEvent(G4int flag) +{ + // The plotter is updated only if there is some + // hits in the event + if(!flag) return; +#ifdef G4ANALYSIS_USE + if(plotter) plotter->refresh(); +#endif +} + diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc-Anaphe b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc-Anaphe new file mode 100644 index 0000000000..10261334d2 --- /dev/null +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysis.cc-Anaphe @@ -0,0 +1,405 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// Author: A. Pfeiffer (Andreas.Pfeiffer@cern.ch) +// (copied from his UserAnalyser class) +// +// History: +// ----------- +// 7 Nov 2001 MGP Implementation +// 03 dic 2000 AnalysisManager by R.Giannitrapani, F.Longo & G.Santin +// 18 Nov 2001 G.Santin GammaRayTel analysis management modified +// according to the new design +// +// ------------------------------------------------------------------- +#ifdef G4ANALYSIS_USE + +#include "GammaRayTelAnalysis.hh" +#include "GammaRayTelAnalysisMessenger.hh" +#include "globals.hh" +#include "G4RunManager.hh" +#include "G4Track.hh" +#include "G4SteppingManager.hh" +#include "G4ThreeVector.hh" +#include "GammaRayTelDetectorConstruction.hh" + +//using namespace Lizard; + +GammaRayTelAnalysis* GammaRayTelAnalysis::instance = 0; + +GammaRayTelAnalysis::GammaRayTelAnalysis() : + histoManager(0), vectorFactory(0),plotter(0), + histo1DDraw("enable"),histo1DSave("enable"),histo2DDraw("enable"), + histo2DSave("enable"),histo2DMode("strip"), + analysisMessenger(0) +{ +} + +GammaRayTelAnalysis::~GammaRayTelAnalysis() +{ + Finish(); +} + + +void GammaRayTelAnalysis::Init() +{ + G4RunManager* runManager = G4RunManager::GetRunManager(); + GammaRayTelDetector = +(GammaRayTelDetectorConstruction*)(runManager->GetUserDetectorConstruction()); + + analysisMessenger = new GammaRayTelAnalysisMessenger(this); + histoManager = createIHistoManager(); + +#ifdef G4ANALYSIS_USE_NTUPLE + ntFactory = Lizard::createNTupleFactory(); +#endif + + vectorFactory = createIVectorFactory(); + + plotter = createIPlotter(); +} + +void GammaRayTelAnalysis::Finish() +{ +#ifdef G4ANALYSIS_USE_NTUPLE + delete ntFactory; + ntFactory = 0; +#endif + + delete histoManager; + histoManager = 0; + + delete vectorFactory; + vectorFactory = 0; + + delete plotter; + plotter = 0; + + delete analysisMessenger; + analysisMessenger = 0; +} + +GammaRayTelAnalysis* GammaRayTelAnalysis::getInstance() +{ + if (instance == 0) instance = new GammaRayTelAnalysis; + return instance; +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// This function fill the 2d histogram of the XZ positions +void GammaRayTelAnalysis::InsertPositionXZ(double x, double z) +{ + IHistogram2D* posXZ = histoManager->retrieveHisto2D("3"); + posXZ->fill(x, z); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// This function fill the 2d histogram of the YZ positions +void GammaRayTelAnalysis::InsertPositionYZ(double y, double z) +{ + IHistogram2D* posYZ = histoManager->retrieveHisto2D("4"); + posYZ->fill(y, z); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// This function fill the 1d histogram of the energy released in the last Si plane +void GammaRayTelAnalysis::InsertEnergy(double en) +{ + IHistogram1D* energy = histoManager->retrieveHisto1D("1"); + energy->fill(en); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +// This function fill the 1d histogram of the hits distribution along the TKR planes +void GammaRayTelAnalysis::InsertHits(int nplane) +{ + IHistogram1D* hits = histoManager->retrieveHisto1D("2"); + hits->fill(nplane); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +/* + This member reset the histograms and it is called at the begin + of each run; here we put the inizialization so that the histograms have + always the right dimensions depending from the detector geometry +*/ +void GammaRayTelAnalysis::BeginOfRun(G4int n) +{ + float sizexy, sizez; + int Nstrip, Nplane, Ntile, N; + char name[30]; + + Init(); + + // Relevant data from the detector to set the histograms dimensions + Nplane = GammaRayTelDetector->GetNbOfTKRLayers(); + Nstrip = GammaRayTelDetector->GetNbOfTKRStrips(); + Ntile = GammaRayTelDetector->GetNbOfTKRTiles(); + sizexy = GammaRayTelDetector->GetTKRSizeXY(); + sizez = GammaRayTelDetector->GetTKRSizeZ(); + N = Nstrip*Ntile; + + if (histoManager) { + sprintf(name,"gammaraytel%d.hbook", n); + histoManager->selectStore(name); + + // Check if deleteHisto is enough, maybe we need to delete the object + histoManager->deleteHisto("1"); + histoManager->create1D("1","Energy deposition in the last X plane (keV)", 100, 50., 200.); + + // 1D histogram that store the hits distribution along the TKR X-planes + histoManager->deleteHisto("2"); + histoManager->create1D("2","Hits distribution in the TKR X planes", + Nplane, 0, Nplane-1); + + // 2D histogram that store the position (mm) of the hits (XZ projection) + histoManager->deleteHisto("3"); + if (histo2DMode == "strip") + histoManager->create2D("3","Tracker Hits XZ (strip,plane)", + N, 0, N-1, + 2*Nplane, 0, Nplane-1); + else + histoManager->create2D("3","Tracker Hits XZ (x,z) in mm", + sizexy/5, -sizexy/2, sizexy/2, + sizez/5, -sizez/2, sizez/2); + + // 2D histogram that store the position (mm) of the hits (YZ projection) + histoManager->deleteHisto("4"); + if(histo2DMode=="strip") + histoManager->create2D("4","Tracker Hits YZ (strip,plane)", + N, 0, N-1, + 2*Nplane, 0, Nplane-1); + else + histoManager->create2D("4","Tracker Hits YZ (y,z) in mm", + sizexy/5, -sizexy/2, sizexy/2, + sizez/5, -sizez/2, sizez/2); + } + + IHistogram2D* posXZ = histoManager->retrieveHisto2D("3"); + if (posXZ) + posXZ->reset(); + IHistogram2D* posYZ = histoManager->retrieveHisto2D("4"); + if(posYZ) + posYZ->reset(); + IHistogram1D* energy = histoManager->retrieveHisto1D("1"); + if(energy) + energy->reset(); + IHistogram1D* hits = histoManager->retrieveHisto1D("2"); + if(hits) + hits->reset(); + + // We divide the plotter in the right nuber of zone depending + // on which histograms the user want to draw + if((histo2DDraw == "enable") && (histo1DDraw == "enable")) + plotter->zone(2,2,0,0); + else if((histo1DDraw == "enable") || (histo2DDraw == "enable")) + plotter->zone(1,2,0,0); + else + plotter->zone(1,1,0,0); + + +#ifdef G4ANALYSIS_USE_NTUPLE + + // Book ntuples + sprintf(name,"gammaraytel%d.hbook::1", n); + ntuple = ntFactory->createC(name); + + // Add and bind the attributes to the ntuple + if ( !( ntuple->addAndBind( "energy", ntEnergy) && + ntuple->addAndBind( "plane" , ntPlane) && + ntuple->addAndBind( "x" , ntX ) && + ntuple->addAndBind( "y" , ntY ) && + ntuple->addAndBind( "z" , ntZ ) ) ) { + delete ntuple; + G4Exception(" GammaRayTelAnalysis::BeginOfRun - Could not addAndBind ntuple"); + } +#endif + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +/* + This member is called at the end of each run +*/ +void GammaRayTelAnalysis::EndOfRun(G4int n) +{ + // This variable contains the names of the PS files + char name[15]; + // We define some vectors + IVector* vxz = 0; + IVector* vyz = 0; + IVector* ve = 0; + IVector* vhit = 0; + + + // Temporary we set one single zone for the plotter + plotter->zone(1,1,0,0); + + // We now print the histograms, each one in a separate file + if(histo2DSave == "enable") { + IHistogram2D* posXZ = histoManager->retrieveHisto2D("3"); + IHistogram2D* posYZ = histoManager->retrieveHisto2D("4"); + plot2D(posXZ); + sprintf(name,"posxz_%d.ps", n); + plotter->psPrint(name); + + plot2D(posYZ); + sprintf(name,"posyz_%d.ps", n); + plotter->psPrint(name); + } + + if(histo1DSave == "enable") { + IHistogram1D* energy = histoManager->retrieveHisto1D("1"); + IHistogram1D* hits = histoManager->retrieveHisto1D("2"); + + plot1D(energy); + sprintf(name,"energy_%d.ps", n); + plotter->psPrint(name); + + plot1D(hits); + sprintf(name,"hits_%d.ps", n); + plotter->psPrint(name); + } + + delete vxz; + delete vyz; + delete ve; + delete vhit; + + // Store histograms + + // Because of a Lizard feature, ntuples must be deleted at this stage, + // not in the destructor (otherwise the ntuples are not stored) + + // In version 3.6.4 of Anaphe, no licence, storing other histograms after + // having stored a 2D one generates an error message "ERROR in HLNEXT" + // Histograms are stored correctly, in spite of the error message + // The same error message is issued if attempting to store 1D or 2D + // histograms after deleting a ntuple + + histoManager->store("1"); + histoManager->store("3"); + histoManager->store("2"); + histoManager->store("4"); + +#ifdef G4ANALYSIS_USE_NTUPLE + delete ntuple; + ntuple = 0; + G4cout << "Deleted ntuple" << G4endl; +#endif +// close files for this run + if (histoManager != 0) Finish(); + +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +/* This member is called at the end of every event */ +void GammaRayTelAnalysis::EndOfEvent(G4int flag) +{ + // The histograms are updated only if there is some + // hits in the event + if(flag) Plot(); +} + + +void GammaRayTelAnalysis::Plot() +{ + // In a normal case we use the following line to use the standard plot + // analysisSystem->Plot(histo); + + // We define some vectors + IVector* vxz = 0; + IVector* vyz = 0; + IVector* ve = 0; + IVector* vhit= 0; + + // We fill them with the histograms and + // draw them + if(histo2DDraw == "enable") + { + IHistogram2D* posXZ = histoManager->retrieveHisto2D("3"); + IHistogram2D* posYZ = histoManager->retrieveHisto2D("4"); + plot2D(posXZ); + plot2D(posYZ); + plotter->refresh(); + } + + if(histo1DDraw == "enable") + { + IHistogram1D* energy = histoManager->retrieveHisto1D("1"); + IHistogram1D* hits = histoManager->retrieveHisto1D("2"); + plot1D(energy); + plot1D(hits); + plotter->refresh(); + } + + delete vxz; + delete vyz; + delete ve; + delete vhit; +} + +void GammaRayTelAnalysis::plot1D(IHistogram1D* histo) +{ + IVector* v = vectorFactory->from1D(histo); + plotter->plot(v,0); + plotter->refresh(); + delete v; +} + +void GammaRayTelAnalysis::plot2D(IHistogram2D* histo) +{ + IVector* v = vectorFactory->from2D(histo); + plotter->plot(v,0); + plotter->refresh(); + delete v; +} + +#ifdef G4ANALYSIS_USE_NTUPLE +void GammaRayTelAnalysis::setNtuple(float E, float p, float x, float y, float z) +{ + ntEnergy = E; + ntPlane = p; + ntX = x; + ntY = y; + ntZ = z; + + ntuple->addRow(); +} +#endif + + +#endif + + + + + + + + + + + diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisManager.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisManager.cc deleted file mode 100644 index 8fccab7884..0000000000 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisManager.cc +++ /dev/null @@ -1,334 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: GammaRayTelAnalysisManager.cc,v 1.1.4.2 2001/06/28 20:18:40 gunter Exp $ -// GEANT4 tag $Name: $ -// ------------------------------------------------------------ -// GEANT 4 class implementation file -// CERN Geneva Switzerland -// -// -// ------------ GammaRayAnalysisManager ------ -// by R.Giannitrapani, F.Longo & G.Santin (03 dic 2000) -// -// ************************************************************ -#ifdef G4ANALYSIS_USE - -#include -#include "g4std/fstream" -#include "GammaRayTelAnalysisManager.hh" -#include "G4VAnalysisSystem.hh" -#include "GammaRayTelDetectorConstruction.hh" -#include "GammaRayTelAnalysisMessenger.hh" -#include -#include -#include -#include -#include -#include - -#include "G4LizardSystem.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -GammaRayTelAnalysisManager::GammaRayTelAnalysisManager(GammaRayTelDetectorConstruction* GammaRayTelDC): - GammaRayTelDetector(GammaRayTelDC), - posXZ(0), posYZ(0), energy(0), hits(0), histoFactory(0), pl(0), - histo1DDraw("enable"),histo1DSave("enable"),histo2DDraw("enable"), - histo2DSave("enable"),histo2DMode("strip") -{ - // Define the messenger and the analysis system - analysisMessenger = new GammaRayTelAnalysisMessenger(this); - analysisSystem = new G4LizardSystem; - - histoFactory = analysisSystem->GetHistogramFactory(); - - /* - The following lines set the plotter and the vectorfactory that - are needed in this example for a multiple histograms - visualization. Please see the README for more information - */ - fVectorFactory = createIVectorFactory(); - pl = createIPlotter(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -GammaRayTelAnalysisManager::~GammaRayTelAnalysisManager() { - delete posXZ; - delete posYZ; - delete energy; - delete hits; - delete analysisSystem; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4bool GammaRayTelAnalysisManager::RegisterAnalysisSystem(G4VAnalysisSystem*) -{ - return true; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -IHistogramFactory* GammaRayTelAnalysisManager::GetHistogramFactory(const G4String& aSystem) -{ - return histoFactory; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void GammaRayTelAnalysisManager::Store(IHistogram* histo, const G4String& ID) -{ - analysisSystem->Store(histo, ID); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -/* - Since the Lizard interface and analysis classes in G4 are still - experimental, they lack for now the possibility to show directly - more than one histograms at the same time. In order to show 2 or 4 histo - in a single view in our example, we decided to override this implementation - and use directly the IPlotter interface for our needs. This will change - in future releases. - - Please note that for visualization purpouses the histograms result - stretched along the x axis; when they are saved in a PostScript - file the proportions are the right ones. -*/ -void GammaRayTelAnalysisManager::Plot(IHistogram* histo = 0) -{ - // In a normal case we use the following line to use the standard plot - // analysisSystem->Plot(histo); - - // We define some vectors - IVector* vxz = 0; - IVector* vyz = 0; - IVector* ve = 0; - IVector* vhit= 0; - - // We fill them with the histograms and - // draw them - if(histo2DDraw == "enable") - { - vxz = fVectorFactory->from2D(dynamic_cast(posXZ)); - vyz = fVectorFactory->from2D(dynamic_cast(posYZ)); - pl->plot(vxz); - pl->plot(vyz); - pl->refresh(); - } - - if(histo1DDraw == "enable") - { - ve = fVectorFactory->from1D(dynamic_cast(energy)); - vhit = fVectorFactory->from1D(dynamic_cast(hits)); - pl->plot(ve); - pl->plot(vhit); - pl->refresh(); - } - - delete vxz; - delete vyz; - delete ve; - delete vhit; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -// This function fill the 2d histogram of the XZ positions -void GammaRayTelAnalysisManager::InsertPositionXZ(double x, double z) -{ - posXZ->fill(x, z); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -// This function fill the 2d histogram of the YZ positions -void GammaRayTelAnalysisManager::InsertPositionYZ(double y, double z) -{ - posYZ->fill(y, z); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -// This function fill the 1d histogram of the energy released in the last Si plane -void GammaRayTelAnalysisManager::InsertEnergy(double en) -{ - energy->fill(en); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -// This function fill the 1d histogram of the hits distribution along the TKR planes -void GammaRayTelAnalysisManager::InsertHits(int nplane) -{ - hits->fill(nplane); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -/* - This member reset the histograms and it is called at the begin - of each run; here we put the inizialization so that the histograms have - always the right dimensions depending from the detector geometry -*/ -void GammaRayTelAnalysisManager::BeginOfRun() -{ - float sizexy, sizez; - int nplane; - int Nstrip, Nplane, Ntile, N; - - // Relevant data from the detector to set the histograms dimensions - Nplane = GammaRayTelDetector->GetNbOfTKRLayers(); - Nstrip = GammaRayTelDetector->GetNbOfTKRStrips(); - Ntile = GammaRayTelDetector->GetNbOfTKRTiles(); - sizexy = GammaRayTelDetector->GetTKRSizeXY(); - sizez = GammaRayTelDetector->GetTKRSizeZ(); - N = Nstrip*Ntile; - - if (histoFactory) - { - // 1D histogram that store the energy deposition of the - // particle in the last (number 0) TKR X-plane - histoFactory->destroy(energy); - energy = histoFactory->create1D("Energy deposition in the last X plane (keV)", 100, 50, 200); - - // 1D histogram that store the hits distribution along the TKR X-planes - histoFactory->destroy(hits); - hits = histoFactory->create1D("Hits distribution in the TKR X planes", - Nplane, 0, Nplane-1); - - // 2D histogram that store the position (mm) of the hits (XZ projection) - histoFactory->destroy(posXZ); - if (histo2DMode == "strip") - posXZ = histoFactory->create2D("Tracker Hits XZ (strip,plane)", - N, 0, N-1, - 2*Nplane, 0, Nplane-1); - else - posXZ = histoFactory->create2D("Tracker Hits XZ (x,z) in mm", - sizexy/5, -sizexy/2, sizexy/2, - sizez/5, -sizez/2, sizez/2); - - // 2D histogram that store the position (mm) of the hits (YZ projection) - histoFactory->destroy(posYZ); - if(histo2DMode=="strip") - posYZ = histoFactory->create2D("Tracker Hits YZ (strip,plane)", - N, 0, N-1, - 2*Nplane, 0, Nplane-1); - else - posYZ = histoFactory->create2D("Tracker Hits YZ (y,z) in mm", - sizexy/5, -sizexy/2, sizexy/2, - sizez/5, -sizez/2, sizez/2); - } - - if(posXZ) - posXZ->reset(); - if(posYZ) - posYZ->reset(); - if(energy) - energy->reset(); - if(hits) - hits->reset(); - - // We divide the plotter in the right nuber of zone depending - // on which histograms the user want to draw - if((histo2DDraw == "enable") && (histo1DDraw == "enable")) - pl->zone(2,2); - else if((histo1DDraw == "enable") || (histo2DDraw == "enable")) - pl->zone(1,2); - else - pl->zone(1,1); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -/* - This member is called at the end of each run -*/ -void GammaRayTelAnalysisManager::EndOfRun(G4int n) -{ - // This variable contains the names of the PS files - char name[15]; - // We define some vectors - IVector* vxz = 0; - IVector* vyz = 0; - IVector* ve = 0; - IVector* vhit = 0; - - - // Temporary we set one single zone for the plotter - pl->zone(1,1); - - // We now print the histograms, each one in a separate file - if(histo2DSave == "enable") - { - vxz = fVectorFactory->from2D(dynamic_cast(posXZ)); - vyz = fVectorFactory->from2D(dynamic_cast(posYZ)); - - sprintf(name,"posxz_%d.ps", n); - pl->plot(vxz); - pl->psPrint(name); - - sprintf(name,"posyz_%d.ps", n); - pl->plot(vyz); - pl->psPrint(name); - } - - if(histo1DSave == "enable") - { - ve = fVectorFactory->from1D(dynamic_cast(energy)); - vhit = fVectorFactory->from1D(dynamic_cast(hits)); - - sprintf(name,"energy_%d.ps", n); - pl->plot(ve); - pl->psPrint(name); - - sprintf(name,"hits_%d.ps", n); - pl->plot(vhit); - pl->psPrint(name); - - } - - delete vxz; - delete vyz; - delete ve; - delete vhit; -} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -/* This member is called at the end of every event */ -void GammaRayTelAnalysisManager::EndOfEvent(G4int flag) -{ - // The histograms are updated only if there is some - // hits in the event - if(flag) Plot(); -} - -#endif - - - - - - - - - - - diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisMessenger.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisMessenger.cc index 28177688b3..59d650e41d 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisMessenger.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnalysisMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelAnalysisMessenger.cc,v 1.1.4.2 2001/06/28 20:18:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelAnalysisMessenger.cc,v 1.5 2001/12/04 11:40:28 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -31,23 +31,24 @@ // // ------------ GammaRayTelAnalysisMessenger ------ // by R.Giannitrapani, F.Longo & G.Santin (03 dic 2000) -// +// 20.11.01 G.Santin: modified according to the new GammaRayTelAnalysis.cc // ************************************************************ #ifdef G4ANALYSIS_USE -#include "GammaRayTelAnalysisMessenger.hh" -#include "GammaRayTelAnalysisManager.hh" #include "G4UIdirectory.hh" #include "G4UIcmdWithAString.hh" +#include "GammaRayTelAnalysisMessenger.hh" +#include "GammaRayTelAnalysis.hh" + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -GammaRayTelAnalysisMessenger::GammaRayTelAnalysisMessenger(GammaRayTelAnalysisManager* analysisManager) - :GammaRayTelAnalysis(analysisManager) +GammaRayTelAnalysisMessenger::GammaRayTelAnalysisMessenger(GammaRayTelAnalysis* analysis) + :gammaRayTelAnalysis(analysis) { - GammaRayTelAnalysisDir = new G4UIdirectory("/analysis/"); - GammaRayTelAnalysisDir->SetGuidance("GammaRayTel analysis control."); + gammaRayTelAnalysisDir = new G4UIdirectory("/analysis/"); + gammaRayTelAnalysisDir->SetGuidance("GammaRayTel analysis control."); /* Commands for the 1D histograms (energy deposition in the last @@ -139,21 +140,21 @@ void GammaRayTelAnalysisMessenger::SetNewValue(G4UIcommand* command,G4String new // 1D Histograms if( command == Histo1DDrawCmd ) - { GammaRayTelAnalysis->SetHisto1DDraw(newValue);} + { gammaRayTelAnalysis->SetHisto1DDraw(newValue);} if( command == Histo1DSaveCmd ) - { GammaRayTelAnalysis->SetHisto1DSave(newValue);} + { gammaRayTelAnalysis->SetHisto1DSave(newValue);} // 2D Histograms if( command == Histo2DDrawCmd ) - { GammaRayTelAnalysis->SetHisto2DDraw(newValue);} + { gammaRayTelAnalysis->SetHisto2DDraw(newValue);} if( command == Histo2DSaveCmd ) - { GammaRayTelAnalysis->SetHisto2DSave(newValue);} + { gammaRayTelAnalysis->SetHisto2DSave(newValue);} if( command == Histo2DModeCmd ) - { GammaRayTelAnalysis->SetHisto2DMode(newValue);} + { gammaRayTelAnalysis->SetHisto2DMode(newValue);} } diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceHit.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceHit.cc index cd9dcda6c7..ead7f590e4 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceHit.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelAnticoincidenceHit.cc,v 1.1.2.2 2001/06/28 20:18:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelAnticoincidenceHit.cc,v 1.2 2001/07/11 09:56:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceSD.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceSD.cc index facbf0e807..831b0c7ffe 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceSD.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelAnticoincidenceSD.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelAnticoincidenceSD.cc,v 1.1.2.2 2001/06/28 20:18:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelAnticoincidenceSD.cc,v 1.4 2001/11/29 11:19:18 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland @@ -32,7 +32,7 @@ // by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000) // // ************************************************************ - +#include "G4RunManager.hh" #include "GammaRayTelAnticoincidenceSD.hh" #include "GammaRayTelAnticoincidenceHit.hh" #include "GammaRayTelDetectorConstruction.hh" @@ -46,10 +46,13 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -GammaRayTelAnticoincidenceSD::GammaRayTelAnticoincidenceSD(G4String name, - GammaRayTelDetectorConstruction* det) -:G4VSensitiveDetector(name),Detector(det) +GammaRayTelAnticoincidenceSD::GammaRayTelAnticoincidenceSD(G4String name) +:G4VSensitiveDetector(name) { + G4RunManager* runManager = G4RunManager::GetRunManager(); + Detector = + (GammaRayTelDetectorConstruction*)(runManager->GetUserDetectorConstruction()); + NbOfACDLateralTiles = Detector->GetNbOfACDLateralTiles(); NbOfACDTopTiles = Detector->GetNbOfACDTopTiles(); @@ -105,7 +108,7 @@ G4bool GammaRayTelAnticoincidenceSD::ProcessHits(G4Step* aStep,G4TouchableHistor G4int ACDTileNumber=acd_tile->GetCopyNo(); G4String ACDTileName = acd_tile->GetName(); - G4cout << ACDTileName << " " << edep/keV << G4endl; + // G4cout << ACDTileName << " " << edep/keV << G4endl; if (ACDTileName == "ACT" ) // The hit is on an top ACD tile (ACDType 0) diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterHit.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterHit.cc index 36bcade4d1..722a635918 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterHit.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelCalorimeterHit.cc,v 1.1.2.2 2001/06/28 20:18:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelCalorimeterHit.cc,v 1.2 2001/07/11 09:56:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterSD.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterSD.cc index d809cf2172..903345dd6e 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterSD.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelCalorimeterSD.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelCalorimeterSD.cc,v 1.1.2.2 2001/06/28 20:18:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelCalorimeterSD.cc,v 1.4 2001/11/29 11:19:18 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland @@ -32,7 +32,7 @@ // by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000) // // ************************************************************ - +#include "G4RunManager.hh" #include "GammaRayTelCalorimeterSD.hh" #include "GammaRayTelCalorimeterHit.hh" #include "GammaRayTelDetectorConstruction.hh" @@ -46,17 +46,22 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -GammaRayTelCalorimeterSD::GammaRayTelCalorimeterSD(G4String name, - GammaRayTelDetectorConstruction* det) -:G4VSensitiveDetector(name),Detector(det) +GammaRayTelCalorimeterSD::GammaRayTelCalorimeterSD(G4String name):G4VSensitiveDetector(name) { + G4RunManager* runManager = G4RunManager::GetRunManager(); + Detector = + (GammaRayTelDetectorConstruction*)(runManager->GetUserDetectorConstruction()); + NbOfCALBars = Detector->GetNbOfCALBars(); NbOfCALLayers = Detector->GetNbOfCALLayers(); - G4cout << NbOfCALBars << " bars " << G4endl; - G4cout << NbOfCALLayers << " layers " << G4endl; + + //G4cout << NbOfCALBars << " bars " << G4endl; + //G4cout << NbOfCALLayers << " layers " << G4endl; - ChitXID = new G4int[NbOfCALBars][12]; - ChitYID = new G4int[NbOfCALBars][12]; + NbOfCALChannels = NbOfCALBars*NbOfCALLayers; + + ChitXID = new G4int[NbOfCALChannels]; + ChitYID = new G4int[NbOfCALChannels]; collectionName.insert("CalorimeterCollection"); } @@ -74,11 +79,10 @@ void GammaRayTelCalorimeterSD::Initialize(G4HCofThisEvent*HCE) { CalorimeterCollection = new GammaRayTelCalorimeterHitsCollection (SensitiveDetectorName,collectionName[0]); - for (G4int i=0;iGetCopyNo(); G4String PlaneName = cal_plane->GetName(); - if (PlaneName == "CALLayerX" ) + G4int NChannel = 0; + + NChannel = PlaneNumber * NbOfCALBars + CALBarNumber; + + if (PlaneName == "CALLayerX" ) + // The hit is on an X CsI plane - + { // This is a new hit - if (ChitXID[CALBarNumber][PlaneNumber]==-1) + if (ChitXID[NChannel]==-1) { GammaRayTelCalorimeterHit* CalorimeterHit = new GammaRayTelCalorimeterHit; CalorimeterHit->SetCALType(1); @@ -119,13 +128,13 @@ G4bool GammaRayTelCalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* R CalorimeterHit->SetPos(aStep->GetPreStepPoint()->GetPosition()); CalorimeterHit->SetCALPlaneNumber(PlaneNumber); CalorimeterHit->SetCALBarNumber(CALBarNumber); - ChitXID[CALBarNumber][PlaneNumber] = + ChitXID[NChannel] = CalorimeterCollection->insert(CalorimeterHit) -1; } else // This is not new { (*CalorimeterCollection) - [ChitXID[CALBarNumber][PlaneNumber]]->AddEnergy(edep); + [ChitXID[NChannel]]->AddEnergy(edep); } } @@ -133,7 +142,7 @@ G4bool GammaRayTelCalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* R // The hit is on an Y CsI plane { // This is a new hit - if (ChitYID[CALBarNumber][PlaneNumber]==-1) + if (ChitYID[NChannel]==-1) { GammaRayTelCalorimeterHit* CalorimeterHit = new GammaRayTelCalorimeterHit; @@ -142,13 +151,13 @@ G4bool GammaRayTelCalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* R CalorimeterHit->SetPos(aStep->GetPreStepPoint()->GetPosition()); CalorimeterHit->SetCALPlaneNumber(PlaneNumber); CalorimeterHit->SetCALBarNumber(CALBarNumber); - ChitYID[CALBarNumber][PlaneNumber] = + ChitYID[NChannel] = CalorimeterCollection->insert(CalorimeterHit)-1; } else // This is not new { (*CalorimeterCollection) - [ChitYID[CALBarNumber][PlaneNumber]]->AddEnergy(edep); + [ChitYID[NChannel]]->AddEnergy(edep); } } @@ -167,12 +176,11 @@ void GammaRayTelCalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) HCE->AddHitsCollection(HCID,CalorimeterCollection); - for (G4int i=0;iAddElement(C, natoms=5); - CsI->AddElement(H, natoms=5); + CsI->AddElement(Cs, natoms=5); + CsI->AddElement(I, natoms=5); // // define a material from elements. case 2: mixture by fractional mass @@ -203,11 +198,27 @@ void GammaRayTelDetectorConstruction::DefineMaterials() G4Material* Air = new G4Material(name="Air" , density, ncomponents=2); Air->AddElement(N, fractionmass=0.7); Air->AddElement(O, fractionmass=0.3); - -// -// examples of vacuum -// + density = 2.700*g/cm3; + G4Material* Al = new G4Material(name="Aluminum", density, ncomponents=1); + Al->AddElement(Alumin, fractionmass=1.); + + density = 2.333*g/cm3; + G4Material* Si = new G4Material(name="Silicon", density, ncomponents=1); + Si->AddElement(Silicon, fractionmass=1.); + + density = 7.87*g/cm3; + G4Material* Fe = new G4Material(name="Iron", density, ncomponents=1); + Fe->AddElement(Iron, fractionmass=1.); + + density = 11.35*g/cm3; + G4Material* Pb = new G4Material(name="Lead", density, ncomponents=1); + Pb->AddElement(Lead, fractionmass=1.); + + // + // examples of vacuum + // + density = universe_mean_density; //from PhysicalConstants.h pressure = 3.e-18*pascal; temperature = 2.73*kelvin; @@ -224,7 +235,7 @@ void GammaRayTelDetectorConstruction::DefineMaterials() //default materials of the payload - ConverterMaterial = Pb; + ConverterMaterial = W; defaultMaterial = vacuum; ACDMaterial = Sci; CALMaterial = CsI; @@ -481,22 +492,23 @@ G4VPhysicalVolume* GammaRayTelDetectorConstruction::ConstructPayload() physiTKR, false, i); - + + physiPlane = new G4PVPlacement(0,G4ThreeVector(0.,0., -TKRSizeZ/2+ 2*TKRSiliconThickness + TKRViewsDistance+ ConverterThickness+ - TKRSupportThickness/2), + TKRSupportThickness/2+ + (i)*TKRLayerDistance), "Plane", logicPlane, physiTKR, false, i); - } @@ -676,17 +688,18 @@ G4VPhysicalVolume* GammaRayTelDetectorConstruction::ConstructPayload() if(!trackerSD) { - trackerSD = new GammaRayTelTrackerSD("TrackerSD",this); + trackerSD = new GammaRayTelTrackerSD("TrackerSD"); SDman->AddNewDetector( trackerSD ); } - + G4String ROgeometryName = "TrackerROGeom"; G4VReadOutGeometry* trackerRO = - new GammaRayTelTrackerROGeometry(ROgeometryName, this); + new GammaRayTelTrackerROGeometry(ROgeometryName); trackerRO->BuildROGeometry(); trackerSD->SetROgeometry(trackerRO); + if (logicTKRActiveTileX) logicTKRActiveTileX->SetSensitiveDetector(trackerSD); // ActiveTileX if (logicTKRActiveTileY) @@ -700,7 +713,7 @@ G4VPhysicalVolume* GammaRayTelDetectorConstruction::ConstructPayload() if(!calorimeterSD) { - calorimeterSD = new GammaRayTelCalorimeterSD("CalorimeterSD",this); + calorimeterSD = new GammaRayTelCalorimeterSD("CalorimeterSD"); SDman->AddNewDetector( calorimeterSD ); } @@ -716,7 +729,7 @@ G4VPhysicalVolume* GammaRayTelDetectorConstruction::ConstructPayload() if(!anticoincidenceSD) { anticoincidenceSD = new GammaRayTelAnticoincidenceSD - ("AnticoincidenceSD",this); + ("AnticoincidenceSD"); SDman->AddNewDetector( anticoincidenceSD ); } diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorMessenger.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorMessenger.cc index 94305da398..24110156af 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorMessenger.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDetectorMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelDetectorMessenger.cc,v 1.3.4.2 2001/06/28 20:18:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelDetectorMessenger.cc,v 1.4 2001/07/11 09:56:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDigi.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDigi.cc new file mode 100644 index 0000000000..ebe1062a5c --- /dev/null +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDigi.cc @@ -0,0 +1,102 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: GammaRayTelDigi.cc,v 1.2 2001/12/13 13:44:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// ------------------------------------------------------------ +// GEANT 4 class implementation file +// CERN Geneva Switzerland +// +// +// ------------ GammaRayTelDigi ------ +// by F.Longo, R.Giannitrapani & G.Santin (21 oct 2001) +// +// ************************************************************ + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +#include "GammaRayTelDigi.hh" + +G4Allocator GammaRayTelDigiAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelDigi::GammaRayTelDigi() +{ + PlaneType = 0; + PlaneNumber = 0; + StripNumber=0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelDigi::~GammaRayTelDigi() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelDigi::GammaRayTelDigi(const GammaRayTelDigi& right) +{ + PlaneType = right.PlaneType; + PlaneNumber = right.PlaneNumber; + StripNumber = right.StripNumber; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const GammaRayTelDigi& GammaRayTelDigi::operator=(const GammaRayTelDigi& right) +{ + PlaneType = right.PlaneType; + PlaneNumber = right.PlaneNumber; + StripNumber = right.StripNumber; + return *this; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +int GammaRayTelDigi::operator==(const GammaRayTelDigi& right) const +{ + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void GammaRayTelDigi::Draw() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void GammaRayTelDigi::Print() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + + + + + + diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizer.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizer.cc new file mode 100644 index 0000000000..b8620badbd --- /dev/null +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizer.cc @@ -0,0 +1,152 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: GammaRayTelDigitizer.cc,v 1.3 2001/12/04 11:40:28 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// ------------------------------------------------------------ +// GEANT 4 class implementation file +// CERN Geneva Switzerland +// +// +// ------------ GammaRayTelDigitizer ------ +// by F.Longo, R.Giannitrapani & G.Santin (13 nov 2000) +// +// ************************************************************ + +#include "GammaRayTelDigitizer.hh" +#include "GammaRayTelDigi.hh" +#include "GammaRayTelDigitizerMessenger.hh" + +#include "GammaRayTelTrackerHit.hh" +#include "G4EventManager.hh" +#include "G4Event.hh" +#include "G4SDManager.hh" +#include "G4DigiManager.hh" +#include "G4ios.hh" + +//#include "G4CollectionNameVector.hh" +#include "g4std/vector" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelDigitizer::GammaRayTelDigitizer(G4String name) + :G4VDigitizerModule(name) +{ + + + G4String colName = "DigitsCollection"; + collectionName.push_back(colName); + Energy_Threshold = 120.*keV; + +//create a messenger for this class + digiMessenger = new GammaRayTelDigitizerMessenger(this); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelDigitizer::~GammaRayTelDigitizer() +{ + delete digiMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void GammaRayTelDigitizer::Digitize() +{ + DigitsCollection = new GammaRayTelDigitsCollection + ("TrackerDigitizer","DigitsCollection"); // to create the Digi Collection + + G4DigiManager* DigiMan = G4DigiManager::GetDMpointer(); + + G4int THCID; + + + // hits collections IDs + + THCID = DigiMan->GetHitsCollectionID("TrackerCollection"); + + // Hits collection + + GammaRayTelTrackerHitsCollection* THC = 0; + + + THC = (GammaRayTelTrackerHitsCollection*) + (DigiMan->GetHitsCollection(THCID)); + + + if (THC) + { + G4int n_hit = THC->entries(); + + for (G4int i=0;iGetEdepSil(); + G4int NStrip = (*THC)[i]->GetNStrip(); + G4int NPlane = (*THC)[i]->GetNSilPlane(); + G4int IsX = (*THC)[i]->GetPlaneType(); + + // digi generation only if energy deposit greater than threshold + + if (ESil>Energy_Threshold) + { + GammaRayTelDigi* Digi = new GammaRayTelDigi(); + Digi->SetPlaneNumber(NPlane); + Digi->SetPlaneType(IsX); + Digi->SetStripNumber(NStrip); + DigitsCollection->insert(Digi); + } + } + + G4cout << "Number of tracker digits in this event = " + << DigitsCollection->entries() + // << " " << DigitsCollection->GetName() + // << " " << DigitsCollection->GetDMname() + << G4endl; + + + StoreDigiCollection(DigitsCollection); + + G4int DCID = -1; + if(DCID<0) + { + // DigiMan->List(); + DCID = DigiMan->GetDigiCollectionID("TrackerDigitizer/DigitsCollection"); + } + + + } +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + + + + + diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizerMessenger.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizerMessenger.cc new file mode 100644 index 0000000000..172be5b517 --- /dev/null +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelDigitizerMessenger.cc @@ -0,0 +1,89 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: GammaRayTelDigitizerMessenger.cc,v 1.1 2001/11/29 09:34:17 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// ------------------------------------------------------------ +// GEANT 4 class implementation file +// CERN Geneva Switzerland +// +// +// ------------ GammaRayTelDigitizerMessenger ------ +// by F.Longo, G.Santin & R.Giannitrapani (27 nov 2001) +// +// ************************************************************ + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "GammaRayTelDigitizerMessenger.hh" + +#include "GammaRayTelDigitizer.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelDigitizerMessenger::GammaRayTelDigitizerMessenger +(GammaRayTelDigitizer* GammaRayTelDigit) + :GammaRayTelAction(GammaRayTelDigit) +{ + ThresholdCmd = new G4UIcmdWithADoubleAndUnit("/digitizer/Threshold",this); + ThresholdCmd->SetGuidance("Energy deposition threshold for TKR digi generation"); + ThresholdCmd->SetParameterName("choice",true); + ThresholdCmd->SetDefaultValue((G4double)20.*keV); + ThresholdCmd->SetRange("Threshold >=0."); + ThresholdCmd->SetUnitCategory("Energy"); + ThresholdCmd->AvailableForStates(PreInit,Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +GammaRayTelDigitizerMessenger::~GammaRayTelDigitizerMessenger() +{ + delete ThresholdCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void GammaRayTelDigitizerMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if( command == ThresholdCmd ) + { + GammaRayTelAction->SetThreshold + (ThresholdCmd->GetNewDoubleValue(newValue)); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + + + + + + + diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelEventAction.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelEventAction.cc index 8b11713e26..0e27ba5584 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelEventAction.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelEventAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelEventAction.cc,v 1.5.2.2 2001/06/28 20:18:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelEventAction.cc,v 1.13 2001/12/04 13:23:52 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland @@ -31,6 +31,10 @@ // ------------ GammaRayTelEventAction ------ // by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000) // +// - inclusion of Digits by F.Longo & R.Giannitrapani (24 oct 2001) +// +// - Modification of analysis management by G.Santin (18 Nov 2001) +// // ************************************************************ #include "GammaRayTelEventAction.hh" @@ -38,10 +42,8 @@ #include "GammaRayTelAnticoincidenceHit.hh" #include "GammaRayTelCalorimeterHit.hh" -#include "g4rw/tvordvec.h" - #ifdef G4ANALYSIS_USE -#include "GammaRayTelAnalysisManager.hh" +#include "GammaRayTelAnalysis.hh" #endif #include "G4Event.hh" @@ -57,25 +59,25 @@ #include "G4UnitsTable.hh" #include "Randomize.hh" +#include "GammaRayTelDigi.hh" +#include "GammaRayTelDigitizer.hh" +#include "G4DigiManager.hh" + // This file is a global variable in which we store energy deposition per hit // and other relevant information + extern G4std::ofstream outFile; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#ifdef G4ANALYSIS_USE -GammaRayTelEventAction::GammaRayTelEventAction(GammaRayTelAnalysisManager* aMgr) - :drawFlag("all"),trackerCollID(-1), calorimeterCollID(-1), - anticoincidenceCollID(-1), analysisManager(aMgr) -{ -} -#else GammaRayTelEventAction::GammaRayTelEventAction() - :drawFlag("all"), trackerCollID(-1),calorimeterCollID(-1), - anticoincidenceCollID(-1) -{ + :trackerCollID(-1),calorimeterCollID(-1), + anticoincidenceCollID(-1), drawFlag("all") +{ + G4DigiManager * fDM = G4DigiManager::GetDMpointer(); + GammaRayTelDigitizer * myDM = new GammaRayTelDigitizer( "TrackerDigitizer" ); + fDM->AddNewModule(myDM); } -#endif //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -90,22 +92,19 @@ void GammaRayTelEventAction::BeginOfEventAction(const G4Event* evt) G4int evtNb = evt->GetEventID(); G4cout << "Event: " << evtNb << G4endl; - G4SDManager * SDman = G4SDManager::GetSDMpointer(); - if (trackerCollID==-1) - { - trackerCollID = SDman->GetCollectionID("TrackerCollection"); - } - if(anticoincidenceCollID==-1) - { - anticoincidenceCollID = - SDman->GetCollectionID("AnticoincidenceCollection"); - } - if(calorimeterCollID==-1) - { - calorimeterCollID = - SDman->GetCollectionID("CalorimeterCollection"); - } + + if (trackerCollID==-1) { + trackerCollID = SDman->GetCollectionID("TrackerCollection"); + } + if(anticoincidenceCollID==-1) { + anticoincidenceCollID = + SDman->GetCollectionID("AnticoincidenceCollection"); + } + if(calorimeterCollID==-1) { + calorimeterCollID = + SDman->GetCollectionID("CalorimeterCollection"); + } } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -125,6 +124,8 @@ void GammaRayTelEventAction::EndOfEventAction(const G4Event* evt) GammaRayTelAnticoincidenceHitsCollection* AHC = 0; + G4DigiManager * fDM = G4DigiManager::GetDMpointer(); + if (HCE) { THC = (GammaRayTelTrackerHitsCollection*)(HCE->GetHC(trackerCollID)); @@ -142,8 +143,8 @@ void GammaRayTelEventAction::EndOfEventAction(const G4Event* evt) G4int NStrip, NPlane, IsX; // This is a cycle on all the tracker hits of this event - - for (int i=0;iGetPos().x()/mm <<" "<< (*THC)[i]->GetPos().y()/mm <<" "<< (*THC)[i]->GetPos().z()/mm <<" "<< - G4endl; + G4endl; #ifdef G4ANALYSIS_USE - // Here we fill the histograms of the Analysis manager - if(IsX) - { - if (analysisManager->GetHisto2DMode()=="position") - analysisManager->InsertPositionXZ((*CHC)[i]->GetPos().x()/mm,(*CHC)[i]->GetPos().z()/mm); - else - analysisManager->InsertPositionXZ(NStrip, NPlane); - if (NPlane == 0) analysisManager->InsertEnergy(ESil/keV); - analysisManager->InsertHits(NPlane); - } - else - if (analysisManager->GetHisto2DMode()=="position") - analysisManager->InsertPositionYZ((*CHC)[i]->GetPos().y()/mm,(*CHC)[i]->GetPos().z()/mm); - else - analysisManager->InsertPositionYZ(NStrip, NPlane); -#endif - } + // Here we fill the histograms of the Analysis manager + GammaRayTelAnalysis* analysis = GammaRayTelAnalysis::getInstance(); + + if(IsX) + { + if (analysis->GetHisto2DMode()=="position") + analysis->InsertPositionXZ((*THC)[i]->GetPos().x()/mm,(*THC)[i]->GetPos().z()/mm); + else + analysis->InsertPositionXZ(NStrip, NPlane); + if (NPlane == 0) analysis->InsertEnergy(ESil/keV); + analysis->InsertHits(NPlane); + } + else + { + if (analysis->GetHisto2DMode()=="position") + analysis->InsertPositionYZ((*THC)[i]->GetPos().y()/mm,(*THC)[i]->GetPos().z()/mm); + else + analysis->InsertPositionYZ(NStrip, NPlane); + if (NPlane == 0) analysis->InsertEnergy(ESil/keV); + analysis->InsertHits(NPlane); + } + +#ifdef G4ANALYSIS_USE_NTUPLE + + analysis->setNtuple( ESil/keV, NPlane, (*THC)[i]->GetPos().x()/mm, + (*THC)[i]->GetPos().y()/mm, + (*THC)[i]->GetPos().z()/mm); +#endif + +#endif + + } // Here we call the analysis manager function for visualization #ifdef G4ANALYSIS_USE - analysisManager->EndOfEvent(n_hit); + GammaRayTelAnalysis* analysis = GammaRayTelAnalysis::getInstance(); + analysis->EndOfEvent(n_hit); #endif } + GammaRayTelDigitizer * myDM = + (GammaRayTelDigitizer*)fDM->FindDigitizerModule( "TrackerDigitizer" ); + myDM->Digitize(); + G4int myDigiCollID = fDM->GetDigiCollectionID("DigitsCollection"); + + // G4cout << "digi collecion" << myDigiCollID << G4endl; - if(G4VVisManager::GetConcreteInstance()) - { - for(G4int i=0; iGetTrajectoryContainer()))[i]); - if (drawFlag == "all") trj->DrawTrajectory(50); - else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) - trj->DrawTrajectory(50); - } + GammaRayTelDigitsCollection * DC = (GammaRayTelDigitsCollection*)fDM->GetDigiCollection( myDigiCollID ); + + if(DC) { + // G4cout << "Total Digits " << DC->entries() << G4endl; + G4int n_digi = DC->entries(); + G4int NStrip, NPlane, IsX; + for (G4int i=0;iGetStripNumber(); + NPlane = (*DC)[i]->GetPlaneNumber(); + IsX = (*DC)[i]->GetPlaneType(); + + outFile << G4std::setw(7) << event_id << " " << NStrip << + " " << NPlane << " " << IsX << " " << G4endl; } + } + + if(G4VVisManager::GetConcreteInstance()) { + for(G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") trj->DrawTrajectory(50); + else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) + trj->DrawTrajectory(50); + } + } } diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelPhysicsList.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelPhysicsList.cc index 087189cc64..42152f6199 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelPhysicsList.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelPhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelPhysicsList.cc,v 1.2.4.2 2001/06/28 20:18:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelPhysicsList.cc,v 1.3 2001/07/11 09:56:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorAction.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorAction.cc index daa55072f1..45db4e85dd 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorAction.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelPrimaryGeneratorAction.cc,v 1.3.4.2 2001/06/28 20:18:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelPrimaryGeneratorAction.cc,v 1.6 2001/11/29 11:19:18 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland @@ -36,6 +36,7 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +#include "G4RunManager.hh" #include "GammaRayTelPrimaryGeneratorAction.hh" #include "GammaRayTelDetectorConstruction.hh" @@ -49,11 +50,13 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -GammaRayTelPrimaryGeneratorAction::GammaRayTelPrimaryGeneratorAction -(GammaRayTelDetectorConstruction* GammaRayTelDC) - :GammaRayTelDetector(GammaRayTelDC),rndmFlag("off"), - nSourceType(0),nSpectrumType(0) +GammaRayTelPrimaryGeneratorAction::GammaRayTelPrimaryGeneratorAction() + :rndmFlag("off"),nSourceType(0),nSpectrumType(0) { + G4RunManager* runManager = G4RunManager::GetRunManager(); + GammaRayTelDetector = + (GammaRayTelDetectorConstruction*)(runManager->GetUserDetectorConstruction()); + G4int n_particle = 1; particleGun = new G4ParticleGun(n_particle); @@ -98,7 +101,8 @@ void GammaRayTelPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) dir0 = G4ThreeVector(0.,0.,-1.); G4double theta, phi, y, f; - G4double theta0,phi0; + G4double theta0=0.; + G4double phi0=0.; switch(nSourceType) { case 0: diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorMessenger.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorMessenger.cc index 59f972aead..3848b8f070 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorMessenger.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelPrimaryGeneratorMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelPrimaryGeneratorMessenger.cc,v 1.2.4.2 2001/06/28 20:18:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelPrimaryGeneratorMessenger.cc,v 1.3 2001/07/11 09:56:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelRunAction.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelRunAction.cc index c53dc02d63..4012efa6f9 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelRunAction.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelRunAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelRunAction.cc,v 1.3.4.2 2001/06/28 20:18:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelRunAction.cc,v 1.7 2001/12/04 11:40:28 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland @@ -30,6 +30,8 @@ // // ------------ GammaRayTelRunAction ------ // by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000) +// 18.11.2001 G.Santin +// - Modified the analysis management according to the new design // // ************************************************************ @@ -39,24 +41,21 @@ #include "GammaRayTelRunAction.hh" +#ifdef G4ANALYSIS_USE +#include "GammaRayTelAnalysis.hh" +#endif + #include #include "G4Run.hh" #include "G4UImanager.hh" #include "G4VVisManager.hh" #include "G4ios.hh" -extern ofstream outFile; +extern G4std::ofstream outFile; -#ifdef G4ANALYSIS_USE -GammaRayTelRunAction::GammaRayTelRunAction(GammaRayTelAnalysisManager* aMgr) - :analysisManager(aMgr) -{ -} -#else GammaRayTelRunAction::GammaRayTelRunAction() { } -#endif //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -84,7 +83,8 @@ void GammaRayTelRunAction::BeginOfRunAction(const G4Run* aRun) // If analysis is used reset the histograms #ifdef G4ANALYSIS_USE - analysisManager->BeginOfRun(); + GammaRayTelAnalysis* analysis = GammaRayTelAnalysis::getInstance(); + analysis->BeginOfRun(aRun->GetRunID()); #endif } @@ -102,7 +102,8 @@ void GammaRayTelRunAction::EndOfRunAction(const G4Run* aRun) // If analysis is used, print out the histograms #ifdef G4ANALYSIS_USE - analysisManager->EndOfRun(aRun->GetRunID()); + GammaRayTelAnalysis* analysis = GammaRayTelAnalysis::getInstance(); + analysis->EndOfRun(aRun->GetRunID()); #endif } diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerHit.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerHit.cc index 8a09795469..c3002ccf5a 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerHit.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelTrackerHit.cc,v 1.1.2.2 2001/06/28 20:18:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelTrackerHit.cc,v 1.2 2001/07/11 09:56:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerROGeometry.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerROGeometry.cc index b4386ec7fd..1d24ce2f1a 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerROGeometry.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerROGeometry.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelTrackerROGeometry.cc,v 1.1.2.2 2001/06/28 20:18:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelTrackerROGeometry.cc,v 1.5 2001/11/29 11:19:18 griccard Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -34,7 +34,7 @@ // by F.Longo, R.Giannitrapani & G.Santin (13 nov 2000) // // ************************************************************ - +#include "G4RunManager.hh" #include "GammaRayTelTrackerROGeometry.hh" #include "GammaRayTelDummySD.hh" #include "GammaRayTelDetectorConstruction.hh" @@ -53,14 +53,12 @@ GammaRayTelTrackerROGeometry::GammaRayTelTrackerROGeometry() : G4VReadOutGeometry() { } -GammaRayTelTrackerROGeometry::GammaRayTelTrackerROGeometry(G4String aString,GammaRayTelDetectorConstruction* GammaRayTelDC) - :GammaRayTelDetector(GammaRayTelDC), G4VReadOutGeometry(aString) -{ -} - GammaRayTelTrackerROGeometry::GammaRayTelTrackerROGeometry(G4String aString) - : G4VReadOutGeometry(aString) + :G4VReadOutGeometry(aString) { + G4RunManager* runManager = G4RunManager::GetRunManager(); + GammaRayTelDetector = + (GammaRayTelDetectorConstruction*)(runManager->GetUserDetectorConstruction()); } GammaRayTelTrackerROGeometry::~GammaRayTelTrackerROGeometry() @@ -326,8 +324,7 @@ G4VPhysicalVolume* GammaRayTelTrackerROGeometry::Build() // as a flag only to check for sensitivity. // (Could we make it by a simple cast of a non-NULL value ?) - - GammaRayTelDummySD * dummySensi = new GammaRayTelDummySD; + GammaRayTelDummySD * dummySensi = new GammaRayTelDummySD("Orpo"); logicTKRStripX->SetSensitiveDetector(dummySensi); logicTKRStripY->SetSensitiveDetector(dummySensi); diff --git a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerSD.cc b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerSD.cc index 80f6516d9a..2e83edd027 100644 --- a/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerSD.cc +++ b/examples/advanced/gammaray_telescope/src/GammaRayTelTrackerSD.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: GammaRayTelTrackerSD.cc,v 1.1.2.2 2001/06/28 20:18:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: GammaRayTelTrackerSD.cc,v 1.6 2001/12/04 11:40:28 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 class implementation file // CERN Geneva Switzerland @@ -32,7 +32,7 @@ // by R.Giannitrapani, F.Longo & G.Santin (13 nov 2000) // // ************************************************************ - +#include "G4RunManager.hh" #include "GammaRayTelTrackerSD.hh" #include "GammaRayTelTrackerHit.hh" @@ -49,17 +49,21 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -GammaRayTelTrackerSD::GammaRayTelTrackerSD(G4String name, - GammaRayTelDetectorConstruction* det) -:G4VSensitiveDetector(name),Detector(det) +GammaRayTelTrackerSD::GammaRayTelTrackerSD(G4String name):G4VSensitiveDetector(name) { + G4RunManager* runManager = G4RunManager::GetRunManager(); + Detector = + (GammaRayTelDetectorConstruction*)(runManager->GetUserDetectorConstruction()); + G4int NbOfTKRTiles = Detector->GetNbOfTKRTiles(); NbOfTKRStrips = Detector->GetNbOfTKRStrips(); NbOfTKRLayers = Detector->GetNbOfTKRLayers(); NbOfTKRStrips = NbOfTKRStrips*NbOfTKRTiles; - ThitXID = new G4int[NbOfTKRStrips][30]; - ThitYID = new G4int[NbOfTKRStrips][30]; + NbOfTKRChannels = NbOfTKRStrips* NbOfTKRTiles * NbOfTKRLayers; + + ThitXID = new G4int[NbOfTKRChannels]; + ThitYID = new G4int[NbOfTKRChannels]; collectionName.insert("TrackerCollection"); } @@ -77,20 +81,19 @@ void GammaRayTelTrackerSD::Initialize(G4HCofThisEvent*HCE) { TrackerCollection = new GammaRayTelTrackerHitsCollection (SensitiveDetectorName,collectionName[0]); - - for (G4int i=0;iGetTotalEnergyDeposit(); if ((edep/keV == 0.)) return false; @@ -101,7 +104,7 @@ G4bool GammaRayTelTrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhis // of the hit G4TouchableHistory* theTouchable = (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable()); - + G4VPhysicalVolume* phys_tile = theTouchable->GetVolume(); G4VPhysicalVolume* plane = phys_tile->GetMother(); @@ -125,26 +128,26 @@ G4bool GammaRayTelTrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhis G4int NTile = (TileNumber%TileTotal); G4int j=0; - + + G4int NChannel = 0; + for (j=0;jMoveUpHistory(); - - G4VPhysicalVolume* ROPlane = ROhist->GetVolume(); - G4int ROPlaneNumber = ROPlane->GetCopyNo(); - G4String ROPlaneName = ROPlane->GetName(); - if (PlaneName == "TKRDetectorX" ) // The hit is on an X silicon plane { // This is a new hit - if (ThitXID[StripNumber][PlaneNumber]==-1) + if (ThitXID[NChannel]==-1) { GammaRayTelTrackerHit* TrackerHit = new GammaRayTelTrackerHit; TrackerHit->SetPlaneType(1); @@ -152,21 +155,21 @@ G4bool GammaRayTelTrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhis TrackerHit->SetPos(aStep->GetPreStepPoint()->GetPosition()); TrackerHit->SetNSilPlane(PlaneNumber); TrackerHit->SetNStrip(StripNumber); - ThitXID[StripNumber][PlaneNumber] = + ThitXID[NChannel] = TrackerCollection->insert(TrackerHit) -1; } else // This is not new { - (*TrackerCollection)[ThitXID[StripNumber][PlaneNumber]]->AddSil(edep); + (*TrackerCollection)[ThitXID[NChannel]]->AddSil(edep); // G4cout << "X" << PlaneNumber << " " << StripNumber << G4endl; } } - + if (PlaneName == "TKRDetectorY") // The hit is on an Y silicon plane { // This is a new hit - if (ThitYID[StripNumber][PlaneNumber]==-1) + if (ThitYID[NChannel]==-1) { GammaRayTelTrackerHit* TrackerHit = new GammaRayTelTrackerHit; TrackerHit->SetPlaneType(0); @@ -174,12 +177,12 @@ G4bool GammaRayTelTrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhis TrackerHit->SetPos(aStep->GetPreStepPoint()->GetPosition()); TrackerHit->SetNSilPlane(PlaneNumber); TrackerHit->SetNStrip(StripNumber); - ThitYID[StripNumber][PlaneNumber] = + ThitYID[NChannel] = TrackerCollection->insert(TrackerHit)-1; } else // This is not new { - (*TrackerCollection)[ThitYID[StripNumber][PlaneNumber]]->AddSil(edep); + (*TrackerCollection)[ThitYID[NChannel]]->AddSil(edep); // G4cout << "Y" << PlaneNumber << " " << StripNumber << G4endl; } } @@ -199,12 +202,11 @@ void GammaRayTelTrackerSD::EndOfEvent(G4HCofThisEvent* HCE) HCE->AddHitsCollection(HCID,TrackerCollection); - for (G4int i=0;i 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." diff --git a/examples/advanced/underground_physics/DMX.cc b/examples/advanced/underground_physics/DMX.cc new file mode 100644 index 0000000000..f0dfa905af --- /dev/null +++ b/examples/advanced/underground_physics/DMX.cc @@ -0,0 +1,145 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced example main program +// by A. Howard and H. Araujo +// (27th November 2001) +// +// main program +// -------------------------------------------------------------- + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "G4UItcsh.hh" + +#ifdef G4UI_USE_XM +#include "G4UIXm.hh" +#endif + +#include "Randomize.hh" + +#ifdef G4VIS_USE +#include "DMXVisManager.hh" +#endif + +#include "DMXDetectorConstruction.hh" +#include "DMXPhysicsList.hh" +#include "DMXPrimaryGeneratorAction.hh" +#include "DMXRunAction.hh" +#include "DMXEventAction.hh" +#include "DMXSteppingAction.hh" +#include "DMXStackingAction.hh" + +#include "g4std/vector" + +int main(int argc,char** argv) { + + // choose the Random engine + HepRandom::setTheEngine(new RanecuEngine); + + // Construct the default run manager + G4RunManager * runManager = new G4RunManager; + + // set mandatory initialization classes + DMXDetectorConstruction* detector = new DMXDetectorConstruction; + runManager->SetUserInitialization(detector); + runManager->SetUserInitialization(new DMXPhysicsList); + + G4UIsession* session=0; + + if (argc==1) // Define UI session for interactive mode. + { + // G4UIterminal is a (dumb) terminal. +#ifdef G4UI_USE_XM + session = new G4UIXm(argc,argv); +#else +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif +#endif + } + +#ifdef G4VIS_USE + // visualization manager + G4VisManager* visManager = new DMXVisManager; + visManager->Initialize(); +#endif + + // set user action classes + runManager->SetUserAction(new DMXPrimaryGeneratorAction); + runManager->SetUserAction(new DMXRunAction); + DMXEventAction* eventAction = new DMXEventAction; + runManager->SetUserAction(eventAction); + // eventAction is inherited by SteppingAction in order to switch colour + // flag: + runManager->SetUserAction(new DMXSteppingAction(eventAction)); + runManager->SetUserAction(new DMXStackingAction); + + //Initialize G4 kernel + runManager->Initialize(); + + // get the pointer to the User Interface manager + G4UImanager* UI = G4UImanager::GetUIpointer(); + + // Define UI session for interactive mode. + if(session) { + + // G4UIterminal is a (dumb) terminal. + UI->ApplyCommand("/control/execute initInter.mac"); + /* + #ifdef G4UI_USE_XM + // Customize the G4UIXm menubar with a macro file : + UI->ApplyCommand("/control/execute gui.mac"); + #endif + */ + session->SessionStart(); + delete session; + } + // Batch mode + else + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + // job termination +#ifdef G4VIS_USE + delete visManager; +#endif + delete runManager; + + return 0; +} + diff --git a/examples/advanced/underground_physics/GNUmakefile b/examples/advanced/underground_physics/GNUmakefile new file mode 100644 index 0000000000..bcbaf2a52b --- /dev/null +++ b/examples/advanced/underground_physics/GNUmakefile @@ -0,0 +1,22 @@ +# $Id: GNUmakefile,v 1.4 2001/11/29 19:59:12 ahoward Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := DMX +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* + diff --git a/examples/advanced/underground_physics/README b/examples/advanced/underground_physics/README new file mode 100644 index 0000000000..e45bcc1135 --- /dev/null +++ b/examples/advanced/underground_physics/README @@ -0,0 +1,174 @@ +------------------------------Advanced Example--------------------------------- README FILE + + +UNDERGROUND PHYSICS + +An example of a underground dark matter experiment. + +Please see the UserRequirements.txt and related web-pages referred to +at the end of that document. + +Over-view: +A single liquid xenon cell is simulated within Geant4 and the scintillation +light produced from interactions from various calibration species is recorded +as PhotoMultiplier hits. The output is then written to an ASCII file for +future off-line analysis. + +Geometry: +Experimental set-up: + +A "cavern" of dimensions 5m x 6m x 3m with concrete walls is defined +as the World Volume. In the centre of the cavern a steel vacuum +vessel containing liquid and gaseous xenon is placed. The internal +construction of the vessel accurately reproduces an existing prototype +Dark Matter detector which allows experimental comparison. The active +detector volume is defined by a series of metal rings, complemented by +a cover mirror and a PMT immersed in the liquid. Two grids and a +thermalising copper shield are also incorporated. The liquid/gas +interface is located 6mm away from the mirror surface. A Am241 +calibration source is suspended from one of the grids in the liquid +phase, above the PMT. + + XXX================XXX mirror + XXX________________XXX gas phase + XXX XXX + XXX XXX liquid phase + XXX XXX + XXX.......U........XXX grid + calibrator + XXX................XXX grid + XXX| |XXX + | ___------___ | + || PMT || + || || + + +Hits Output (file "hits.out"): +An ASCII file containing the following information: + Evt # : event number + Etot, MeV : energy deposited in liquid xenon + LXe hits : number of hits in liquid xenon + LXeTime, ns : time of first hit in liquid xenon + PMT hits : number of hits in PMT (photocathode) + PmtTime, ns : average PMT hit time relative to LXeTime + First hit : first particle to hit liquid xenon + Flags : particles contributing to energy deposition + + Note: + + The time information PmtTime is erroneous when forcing nuclear + decay with the RadioactiveDecay module due to the precision + required to detect nanosecond scintillation times on a global + time of 432 years (in the case of 241Am decay). + + +Pmt Output (file "pmt.out"): +Photon hit positions within the PMT face (overwritten every event): +"Hit# X, mm Y, mm Z, mm" + + +To Run: +Either run the macro files interactively or in batch with the command +DMX macro_name.mac. + + +Macros: + + initInter.mac + Initialisation macro for interactive mode. + + gamma.mac + Shoots one 60 keV gamma upwards from the calibrator and traces the + scintillation light produced in LXe to the PMT. All tracks are drawn + with custom colours. PMT hits in photocathode are also shown. Event + summary is writen to file "hits.out". + + gamma_1000.mac + Similar to above, but 1000 gammas are emmited isotropically from the + source. No hits or tracks are draw, and the verbosity is reduced. + + alpha.mac + Shoots one 5.486 MeV alpha particle upwards from the calibrator and + traces the scintillation light to the PMT. All tracks except + optical photons are drawn. Event summary is written to file + "hits.out" and PMT hits to file "pmt.out". + + alpha_1000.mac + Similar to above, but 1000 alphas are emmited isotropically from the + source. No tracks are stored, and the verbosity is reduced. Event + summary is written to file "hits.out", PMT hits are not written out. + + neutron.mac + Shoots one 2.48 MeV neutron inside the room aimed at the detector. + All tracks except scintillation photons are drawn (custom colours). + Gammas are not killed at the concrete wall. Event summery is written + to file "hits.out". + + sourceAm241.mac + Forces the decay of 241Am nuclei in the calibrator and tracks the + resulting particles (237Np + alpha + gamma from 237Np + de-excitation). All tracks are drawn except scintillation photons. + Event summery is written to file "hits.out". + -> To be added for a future release + + + sourceAm241_1000.mac + Similar to above but for 1000 events. No tracks are stored. + -> To be added for a future release + + +Note: +The following environment variables need to be set: +G4RADIOACTIVEDATA : points to Radioactive Decay Data files +G4LEDATA : points to low energy data base - G4EMLOW0.5 +G4LEVELGAMMADATA : points to PhotoEvaporation data +NeutronHPCrossSections : points to neutron data files G4NDL3.5 + + + +ERRORS: + +When running interactively the following error will be shown: + +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor: boolean operation failed +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor::caseIE : unimplemented case +BooleanProcessor: boolean operation failed + +This is a "feature" of the visualisation of boolean volumes, but does not +affect functionality/performance so can be ignored. + + + + +NB: +If using explicit libraries (?) i.e. non-shared then compilation time with +neutrons in physics list is very long (>5 minutes) - check this............. +It is more efficient to use shared libraries that are loaded at run-time with +increased initialisation time (at run-time). + +Also if using shared libraries the load time at run-time may be several minutes +- this is partially due to the neutron implementation requires full data sets +for each isotope being specified. + + +-------------------------------------- + +If running on Redhat 7.0 or above set G4SYSTEM to Linux-g++, alternatively you +can install backward compatibility to egcs, however, requires +config/sys/Linux-egcs.gmk to be altered so that CXX is set to kgcc +(compared to g++ in original file) + +-------------------------------------- + + +Alex Howard, 29/11/01 + + diff --git a/examples/advanced/underground_physics/Traceability.txt b/examples/advanced/underground_physics/Traceability.txt new file mode 100644 index 0000000000..64cdec5a86 --- /dev/null +++ b/examples/advanced/underground_physics/Traceability.txt @@ -0,0 +1,95 @@ +UR OOAD Implemention Test +------------------------------------------------------------------------------- +1.1 DMX Class Diagram DMXRunAction Start Run + +1.2 DMX Class Diagram DMXEventAction Run events + + +2.1 DMX Class Diagram DMXDetectorConstruction Visualisation + +2.2 DMX Class Diagram DMXScintHit Event output + +2.3 DMX Class Diagram DMXPhysicsList Visualisation + +2.4 DMX Class Diagram DMXDetectorConstruction Track visualisation + +2.5 DMX Class Diagram DMXPmtHit Record photons + + +3.1 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.2 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.3 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.4 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.5 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.6 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.7 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.8 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.9 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.10 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.11 DMX Class Diagram DMXPhysicsList Compare output E with expt + +3.12 DMX Class Diagram DMXPhysicsList Compare output E with expt + + +4.1 DMX Class Diagram DMXParticleSource Vis. and Event summary + +4.2 DMX Class Diagram DMXParticleSource Vis. and Event summary + +4.3 DMX Class Diagram DMXParticleSource Vis. and Event summary + +4.4 DMX Class Diagram DMXParticleSource Vis. and Event summary + + +5.1 DMX Class Diagram DMXPhysicsList Run control and output + +5.2 DMX Class Diagram DMXPhysicsList Run control and output + +5.3 DMX Class Diagram DMXPhysicsList Run control and output + + +6.1 DMX Class Diagram DMXEventAction Saved output file + +6.2 DMX Class Diagram DMXEventAction Saved output file + + +7.1 DMX Class Diagram DMXVisManager Visualisation + +7.2 DMX Class Diagram DMXEventAction Visualisation + +7.3 DMX Class Diagram DMXEventActionMessenger Visualisation + +7.4 DMX Class Diagram DMXSteppingAction Visualisation + +7.5 DMX Class Diagram DMXVisManager Outputfile into wired + + +8.1 DMX Class Diagram DMXParticleSourceMessenger User Control + +8.2 DMX Class Diagram User Control + +8.3 DMX Class Diagram DMXEventAction User Control + +8.4 DMX Class Diagram DMXEventAction User Control + +8.5 DMX Class Diagram DMXEventAction User Control + +8.6 DMX Class Diagram DMXStackingActionMessenger User Control + + + +9.1 DMX Class Diagram DMXMaxTimeCuts Output summary file + +9.2 DMX Class Diagram DMXStackingAction Output and optimisation + + + diff --git a/examples/advanced/underground_physics/UserRequirements.txt b/examples/advanced/underground_physics/UserRequirements.txt new file mode 100644 index 0000000000..69ff77b9a4 --- /dev/null +++ b/examples/advanced/underground_physics/UserRequirements.txt @@ -0,0 +1,340 @@ +UNDERGROUND PHYSICS ADVANCED EXAMPLE - DMX + +UserRequirements.txt - Alex Howard, e-mail: a.s.howard@ic.ac.uk, 29/11/01. + +Introduction: + +This document is an initial introduction to the Dark Matter Example - +DMX. A single liquid xenon cell is simulated within Geant4 and the +scintillation light produced from interactions from various +calibration species is recorded as hits in a PhotoMultiplier Tube +(PMT). The output is then written to an ASCII file for future +off-line analysis. + +------------------------------------------------------------------------------- + + User Requirements: + +General + +UR 1.1: Configure the run management + +UR 1.2: Configure the event loop + + + +Geometry: +Experimental set-up: + +UR 2.1: +A "cavern" of dimensions 5m x 6m x 3m with concrete walls is defined +as the World Volume. In the centre of the cavern a steel vacuum +vessel containing liquid and gaseous xenon is placed. The internal +construction of the vessel accurately reproduces an existing prototype +Dark Matter detector which allows experimental comparison. The active +detector volume is defined by a series of metal rings, complemented by +a cover mirror and a PMT immersed in the liquid. Two grids and a +thermalising copper shield are also incorporated. The liquid/gas +interface is located 6mm away from the mirror surface. A Am241 +calibration source is suspended from one of the grids in the liquid +phase, above the PMT. + + XXX================XXX mirror + XXX________________XXX gas phase + XXX XXX + XXX XXX liquid phase + XXX XXX + XXX.......U........XXX grid + calibrator + XXX................XXX grid + XXX| |XXX + | ___------___ | + || PMT || + || || + +An accurate simulation of the above set-up should be carried. + +UR 2.2: +Record the energy deposited in the sensitive volume of the xenon +chamber (liquid phase). + +UR 2.3: +Produce scintillation photons with different time constants and light +yields depending upon the species of particle causing the excitation - +either nuclear recoil or electron recoil type interactions. + +UR 2.4: +Implement reflectivities and transmission probabilities for all materials +concerned. + +UR 2.5: +Ray trace the scintillation back to the PMT and record hit times, positions and +number of photons. + + +PHYSICS: + +The following areas of physics should be included: + +UR 3.1: · Low Energy Electromagnetic - to 250eV for both e and photons + Maximum energy range around 10 MeV for any particle +UR 3.2: · Compton Scattering +UR 3.3: · Photoelectric Effect +UR 3.4: · Bremsstrahlung +UR 3.5: · Rayleigh Scattering - for both optical photons and hard + X-rays/Gammas +UR 3.6: · Electromagnetic ionisation +UR 3.7: · Delta Rays + Produced discretely down to 250eV to allow secondaries and + tertiaries to be properly handled +UR 3.8: · Heavy Ion Transport - to 250eV for protons, alphas and nuclei + Allows separate scintillation time and yield compared to gammas + (electrons) +UR 3.9: · Radioactive Decay - induced + All materials are sensitive to induced activity as a consequence + of photo-nuclear or neutron capture +UR 3.10: · Radioactive Decay - sources + Specific nuclei can be decayed within the geometry to reproduce + experimental calibration the experiment +UR 3.11: · Neutron tracking from medium energy (few MeV) to thermal capture + Discretely transported through-out the volume to give full + detector response for both neutron capture activation and + elastic and inelastic interaction in the target volume +UR 3.12: · Scintillation light production and ray-tracing to PMT + Optical photon transport introduced to allow realistic + detector response to be produced. + +ParticleSource: + +UR 4.1: +Implement a generic particle source that allows various particles, ions and +nuclei to be fired or decayed anywhere within the volume. + +UR 4.2: +Allow confinement of the particle source to within given volumes and randomly +select particle or ion production within that volume. + +UR 4.3: +Allow various source shapes - point, sphere and cylinder have been +implemented. + +UR 4.4: !!!! not in ours !!! +Allow spectrum of energies to be chosen as well as a monoenergetic particle +type. + + +Radioactive Decay Module: + +UR 5.1: +Allows specific ions to be decayed within set nuclear limits and energies and +positions - linked to Particle Source above. + +UR 5.2: +Can control induced activity to specific volumes. + +UR 5.3: +Allows increased functionality in terms of choice of weighting for the decay +and other non-analogue MC techniques. + + +Analysis: + +UR 6.1: +Outputs to file "hits.out" the event number (Evt #), the energy +deposited in the liquid phase (Etot, MeV), the number of hits in LXe +(LXe hits), the time of the first hit (LXeTime, ns), the number of PMT +hits (PMT hits), the average PMT hit time relative to the first hit in +LXe (PmtTime, ns), the first particle to hit the LXe (First hit) and +flags the type of particles depositing energy - gamma, neutron, +electron, positron, proton, other (Flags). + +UR 6.2: +The "First hit" and "Flags" described above constitute a record of +particle type history important for identifying and differentiating +between elastic and inelastic neutron interactions. + + + +Visualisation: + +UR 7.1: +Visualise the experimental set-up. + +UR 7.2: +Visualise tracks in the experimental set-up. + +UR 7.3: +Allow the choice between scintillation light, PMT photocathode hits, +and full tracking to be displayed. + +UR 7.4: +Allow the user to choose specific track colours for gammas, neutrons, +charged-plus and charged-minus tracks. + +UR 7.5: +Allow output to stored interactive files using the HEPREP interface which can +then be read into Wired and other XML packages. + + +User Interface: + +UR 8.1: + +Allow control of the particle source via the /dmx/gun control: + +Command directory path : /dmx/gun/ +Guidance : +Particle Source control commands. + + Sub-directories : + Commands : + 1) List * List available particles. + 2) particle * Set particle to be generated. + 3) direction * Set momentum direction. + 4) energy * Set kinetic energy. + 5) position * Set starting position of the particle. + 6) ion * Set properties of ion to be generated. + 7) type * Sets source distribution type. + 8) shape * Sets source shape type. + 9) centre * Set centre coordinates of source. + 10) halfz * Set z half length of source. + 11) radius * Set radius of source. + 12) confine * Confine source to volume (NULL to unset). + 13) angtype * Sets angular source distribution type + 14) energytype * Sets energy distribution type + 15) verbose * Set Verbose level for gun + + +UR 8.2: +Control verbosities via: +The user should have the ability to change several features including + a) verbosities can be controlled for + /control/verbose + /run/verbose + /tracking/verbose + /hits/verbose + /grdm/verbose + /dmx/gun/verbose + + +UR 8.3: +Control the output to the screen into Modulo N events: +using printModulo control. + +Command /dmx/printModulo +Guidance : +Print events modulo n + Range of parameters : EventNb>0 + +Parameter : EventNb + Parameter type : i + Omittable : False + + +UR 8.4: +Draw commands controlled via /dmx/draw/: + +DM Example draw commands. + + Sub-directories : + Commands : + 1) drawColours * Tracks drawn by Event (standard colours) or + by Step (custom colours) + 2) drawTracks * Which tracks to draw in the event + 3) drawHits * Set flag to draw hits in PMT. + 4) neutronColour * Colour of neutron in the event + 5) gammaColour * Colour of gamma in the event + 6) opticalColour * Colour of gamma in the event + 7) chargedplusColour * colour of chargedplus in the event + 8) chargedminusColour * colour of chargedminus in the event + + + +UR 8.5: +Control the files to be saved - PMT hits and event summary in terms of +energy deposit and number of photon hits observed. + +Command /dmx/savePmt +Guidance : +Set flag to save (x,y,z) of hits in PMT +into file 'pmt.out' +Default = false + +Parameter : savePmtFlag + Parameter type : b + Omittable : False + + +Command /dmx/saveHits +Guidance : +Set flag to save hits in each run +into file 'hits.out' +Default = true + +Parameter : saveHitsFlag + Parameter type : b + Omittable : False + + + +UR 8.6: +Allow the suppression of physics processes within specific volumes in +order to optimise running of the neutron transport code. + +Gammas may be killed in the concrete wall in order to reduce +processing time significantly. + +Command /dmx/KillGammasInConcrete +Guidance : +Kills gammas produced by neutrons in the concrete wall +Default = false + +Parameter : KillGammasFlag + Parameter type : b + Omittable : False + Default value : 0 + + + +CUTS: + +UR 9.1: +User can apply special cuts to time and step length to tracks. If the +global time is exceeded then the track is killed. + +UR 9.2: +Allow gammas to be killed in the concrete wall in order to optimise +processing time for neutron transport. + +------------------------------------------------------------------------------ + + + +Background Information/Links + +Information on the experimental side of this project can be obtained from the +following: + +Who we are: + Imperial College High Energy Physics Group -> http://www.hep.ph.ic.ac.uk/ + + Imperial College Astrophysics -> http://astro.ic.ac.uk/ + +Dark Matter collaboration and existing experimental programme: + Boulby Collaboration Home Page -> http://hepwww.rl.ac.uk/ukdmc/ + + +Full Users Requirement Document + +A draft of the full users requirement document for the advanced example can be +downloaded/viewed at the following: + + Word Document -> + http://icva.hep.ph.ic.ac.uk/~howard/g4_project/urd_draft1.doc + + Web Page -> + http://icva.hep.ph.ic.ac.uk/~howard/g4_project/urd_draft1.htm + + + + + diff --git a/examples/advanced/underground_physics/alpha.mac b/examples/advanced/underground_physics/alpha.mac new file mode 100644 index 0000000000..381944954f --- /dev/null +++ b/examples/advanced/underground_physics/alpha.mac @@ -0,0 +1,50 @@ +############################################################################### +# # +# alpha.mac # +# PMT hits from internal calibrator (single alphas) # +# output in files hits.out and pmt.out # +# # +############################################################################### +# +# verbosities +/control/verbose 1 +/run/verbose 1 +/tracking/verbose 0 +/hits/verbose 1 +# +# draw flags +/dmx/draw/drawColours standard +/dmx/draw/drawTracks noscint +/dmx/draw/drawHits 0 +# +# file output +/dmx/savePmt 1 +/dmx/saveHits 1 +# +# gun: particle +/dmx/gun/verbose 1 +/dmx/gun/particle alpha +/dmx/gun/energytype Mono +/dmx/gun/energy 5.486 MeV +# +# gun: isotropic +#/dmx/gun/angtype iso +# +# OR gun: shoot up +/dmx/gun/angtype direction +/dmx/gun/direction 0 0 1 +# +# gun: source +/dmx/gun/type Volume +/dmx/gun/shape Cylinder +/dmx/gun/radius 250 mum +/dmx/gun/halfz 10.0 nm +/dmx/gun/centre 0 0 82.750 mm +/dmx/gun/confine americium_phys +# +# set to 0 if too many tracks to store +/tracking/storeTrajectory 1 +# +/run/beamOn 1 + + diff --git a/examples/advanced/underground_physics/alpha_1000.mac b/examples/advanced/underground_physics/alpha_1000.mac new file mode 100644 index 0000000000..c9c7851f17 --- /dev/null +++ b/examples/advanced/underground_physics/alpha_1000.mac @@ -0,0 +1,52 @@ +############################################################################### +# # +# alpha_1000.mac # +# Alpha spectrum from internal calibrator # +# output in file hits.out # +# # +############################################################################### +# +# verbosities +/control/verbose 0 +/run/verbose 0 +/tracking/verbose 0 +/hits/verbose 0 +/dmx/printModulo 10 +# +# draw flags +/dmx/draw/drawColours standard +/dmx/draw/drawTracks none +/dmx/draw/drawHits 0 +# +# file output +/dmx/savePmt 0 +/dmx/saveHits 1 +# +# gun: particle +/dmx/gun/verbose 0 +/dmx/gun/particle alpha +/dmx/gun/energytype Mono +/dmx/gun/energy 5.486 MeV +# +# gun: isotropic +/dmx/gun/angtype iso +# +# OR gun: shoot up +#/dmx/gun/angtype direction +#/dmx/gun/direction 0 0 1 +# +# gun: source +/dmx/gun/type Volume +/dmx/gun/shape Cylinder +/dmx/gun/radius 250 mum +/dmx/gun/halfz 10.0 nm +/dmx/gun/centre 0 0 82.750 mm +/dmx/gun/confine americium_phys +# +# set to 0 if too many tracks to store +/tracking/storeTrajectory 0 +# +/run/beamOn 1000 +# +/tracking/storeTrajectory 1 + diff --git a/examples/advanced/underground_physics/alpha_low.mac b/examples/advanced/underground_physics/alpha_low.mac new file mode 100644 index 0000000000..c902649a1b --- /dev/null +++ b/examples/advanced/underground_physics/alpha_low.mac @@ -0,0 +1,50 @@ +############################################################################### +# # +# alpha.mac # +# PMT hits from internal calibrator (single alphas) # +# output in files hits.out and pmt.out # +# # +############################################################################### +# +# verbosities +/control/verbose 1 +/run/verbose 1 +/tracking/verbose 0 +/hits/verbose 1 +# +# draw flags +/dmx/draw/drawColours standard +/dmx/draw/drawTracks noscint +/dmx/draw/drawHits 0 +# +# file output +/dmx/savePmt 1 +/dmx/saveHits 1 +# +# gun: particle +/dmx/gun/verbose 1 +/dmx/gun/particle alpha +/dmx/gun/energytype Mono +/dmx/gun/energy 10.0 keV +# +# gun: isotropic +#/dmx/gun/angtype iso +# +# OR gun: shoot up +/dmx/gun/angtype direction +/dmx/gun/direction 0 0 1 +# +# gun: source +/dmx/gun/type Volume +/dmx/gun/shape Cylinder +/dmx/gun/radius 250 mum +/dmx/gun/halfz 10.0 nm +/dmx/gun/centre 0 0 82.750 mm +/dmx/gun/confine americium_phys +# +# set to 0 if too many tracks to store +/tracking/storeTrajectory 1 +# +/run/beamOn 1 + + diff --git a/examples/advanced/underground_physics/gamma.mac b/examples/advanced/underground_physics/gamma.mac new file mode 100644 index 0000000000..9632de2430 --- /dev/null +++ b/examples/advanced/underground_physics/gamma.mac @@ -0,0 +1,47 @@ +############################################################################### +# # +# gamma.mac # +# Single gammas from internal calibrator # +# output in file hits.out # +# # +############################################################################### +# +# verbosities +/control/verbose 1 +/run/verbose 1 +/tracking/verbose 0 +/hits/verbose 1 +# +# draw flags +/dmx/draw/drawColours custom +/dmx/draw/gammaColour yellow +/dmx/draw/drawTracks all +/dmx/draw/drawHits 1 +# +# file output +/dmx/savePmt 0 +/dmx/saveHits 1 +# +# gun: particle +/dmx/gun/verbose 0 +/dmx/gun/particle gamma +/dmx/gun/energytype Mono +/dmx/gun/energy 60.0 keV +# +# gun: isotropic +#/dmx/gun/angtype iso +# +# OR gun: shoot up +/dmx/gun/angtype direction +/dmx/gun/direction 0 0 1 +# +# gun: source +/dmx/gun/type Volume +/dmx/gun/shape Cylinder +/dmx/gun/radius 250 mum +/dmx/gun/halfz 10.0 nm +/dmx/gun/centre 0 0 82.750 mm +/dmx/gun/confine americium_phys +# +/run/beamOn 1 + diff --git a/examples/advanced/underground_physics/gamma_1000.mac b/examples/advanced/underground_physics/gamma_1000.mac new file mode 100644 index 0000000000..cf99b7180f --- /dev/null +++ b/examples/advanced/underground_physics/gamma_1000.mac @@ -0,0 +1,47 @@ +############################################################################### +# # +# gamma_1000.mac # +# Gamma spectrum from internal calibrator # +# output in file hits.out # +# # +############################################################################### +# +# verbosities +/control/verbose 0 +/run/verbose 0 +/tracking/verbose 0 +/hits/verbose 0 +/dmx/printModulo 10 +# +# draw flags +/dmx/draw/drawColours standard +/dmx/draw/drawTracks none +/dmx/draw/drawHits 0 +# +# file output +/dmx/savePmt 0 +/dmx/saveHits 1 +# +# gun: particle +/dmx/gun/verbose 0 +/dmx/gun/particle gamma +/dmx/gun/energytype Mono +/dmx/gun/energy 60.0 keV +# +# gun: isotropic +/dmx/gun/angtype iso +# +# OR gun: shoot up +#/dmx/gun/angtype direction +#/dmx/gun/direction 0 0 1 +# +# gun: source +/dmx/gun/type Volume +/dmx/gun/shape Cylinder +/dmx/gun/radius 250 mum +/dmx/gun/halfz 10.0 nm +/dmx/gun/centre 0 0 82.750 mm +/dmx/gun/confine americium_phys +# +/run/beamOn 1000 + diff --git a/examples/advanced/underground_physics/gamma_low.mac b/examples/advanced/underground_physics/gamma_low.mac new file mode 100644 index 0000000000..d4585d9224 --- /dev/null +++ b/examples/advanced/underground_physics/gamma_low.mac @@ -0,0 +1,47 @@ +############################################################################### +# # +# gamma.mac # +# Single gammas from internal calibrator # +# output in file hits.out # +# # +############################################################################### +# +# verbosities +/control/verbose 1 +/run/verbose 1 +/tracking/verbose 0 +/hits/verbose 1 +# +# draw flags +/dmx/draw/drawColours custom +/dmx/draw/gammaColour yellow +/dmx/draw/drawTracks all +/dmx/draw/drawHits 1 +# +# file output +/dmx/savePmt 0 +/dmx/saveHits 1 +# +# gun: particle +/dmx/gun/verbose 0 +/dmx/gun/particle gamma +/dmx/gun/energytype Mono +/dmx/gun/energy 2.0 keV +# +# gun: isotropic +#/dmx/gun/angtype iso +# +# OR gun: shoot up +/dmx/gun/angtype direction +/dmx/gun/direction 0 0 1 +# +# gun: source +/dmx/gun/type Volume +/dmx/gun/shape Cylinder +/dmx/gun/radius 250 mum +/dmx/gun/halfz 10.0 nm +/dmx/gun/centre 0 0 82.750 mm +/dmx/gun/confine americium_phys +# +/run/beamOn 1 + diff --git a/examples/advanced/underground_physics/include/DMXDetectorConstruction.hh b/examples/advanced/underground_physics/include/DMXDetectorConstruction.hh new file mode 100644 index 0000000000..6c7f4bf627 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXDetectorConstruction.hh @@ -0,0 +1,162 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// DetectorConstruction header +// -------------------------------------------------------------- + +#ifndef DMXDetectorConstruction_h +#define DMXDetectorConstruction_h 1 + +#include "G4VUserDetectorConstruction.hh" +#include "globals.hh" + +class G4VPhysicalVolume; +class G4LogicalVolume; +class G4Material; + +class G4UserLimits; + +class DMXScintSD; +class DMXPmtSD; + +class DMXDetectorConstruction : public G4VUserDetectorConstruction +{ +public: + + DMXDetectorConstruction(); + ~DMXDetectorConstruction(); + +public: + + G4VPhysicalVolume* Construct(); + + // methods for UserLimits + void UseUserLimits(G4bool value); + G4bool IsUseUserLimits() { return fUseUserLimits; } + G4double GetMaxTime() const { return theMaxTimeCuts; } + G4double GetMaxStepSize() const { return theMaxStepSize; } + + G4double GetRoomTime() const { return theRoomTimeCut; } + + void SetMaxTime(G4double value); + void SetMaxStepSize(G4double value); + void SetRoomTime(G4double value); + +private: + + void DefineMaterials(); + + G4bool fUseUserLimits; + G4UserLimits* theUserLimits; + G4double theMaxTimeCuts; + G4double theMaxStepSize; + + G4double theRoomTimeCut; + + G4Material* world_mat; // materials used + G4Material* lab_mat; + G4Material* jacket_mat; + G4Material* vacuum_mat; + G4Material* vessel_mat; + G4Material* detector_mat; + G4Material* liqPhase_mat; + G4Material* CuShield_mat; + G4Material* alpha_mat; + G4Material* americium_mat; + G4Material* ring_mat; + G4Material* mirror_mat; + G4Material* grid_mat; + G4Material* pmt_mat; + G4Material* window_mat; + G4Material* phcath_mat; + + + G4double worldRadius; // sizes + G4double worldHeight; + G4double sourceZ; + G4double sourceZ2; + + + G4LogicalVolume* world_log; // pointers + G4VPhysicalVolume* world_phys; + G4LogicalVolume* lab_log; + G4VPhysicalVolume* lab_phys; + G4LogicalVolume* jacket_log; + G4VPhysicalVolume* jacket_phys; + G4LogicalVolume* vacuum_log; + G4VPhysicalVolume* vacuum_phys; + G4LogicalVolume* vessel_log; + G4VPhysicalVolume* vessel_phys; + G4LogicalVolume* detector_log; + G4VPhysicalVolume* detector_phys; + G4LogicalVolume* CuShield_log; + G4VPhysicalVolume* CuShield_phys; + G4LogicalVolume* liqPhase_log; + G4VPhysicalVolume* liqPhase_phys; + G4LogicalVolume* alpha_log; + G4VPhysicalVolume* alpha_phys; + /* + G4LogicalVolume* recess_log; + G4VPhysicalVolume* recess_phys; + */ + G4LogicalVolume* americium_log; + G4VPhysicalVolume* americium_phys; + G4LogicalVolume* ring_log; + G4VPhysicalVolume* ring_phys_gas[1]; + G4VPhysicalVolume* ring_phys_liq[5]; + // G4VPhysicalVolume* ring_phys[8]; + G4LogicalVolume* mirror_log; + G4VPhysicalVolume* mirror_phys; + G4LogicalVolume* grid1_log; + G4VPhysicalVolume* grid1_phys; + G4LogicalVolume* grid2_log; + G4VPhysicalVolume* grid2_phys; + G4LogicalVolume* pmt_log; + G4VPhysicalVolume* pmt_phys; + /* + G4LogicalVolume* window_log; + G4VPhysicalVolume* window_phys; + */ + G4LogicalVolume* phcath_log; + G4VPhysicalVolume* phcath_phys; + + + DMXScintSD* LXeSD; //pointer to sensitive detectors + DMXPmtSD* pmtSD; + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXEventAction.hh b/examples/advanced/underground_physics/include/DMXEventAction.hh new file mode 100644 index 0000000000..c01eb73794 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXEventAction.hh @@ -0,0 +1,119 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// EventAction header +// -------------------------------------------------------------- + +#ifndef DMXEventAction_h +#define DMXEventAction_h 1 + +#include "G4UserEventAction.hh" +#include "globals.hh" +#include "G4ios.hh" + +#include "DMXScintHit.hh" +#include "DMXPmtHit.hh" + +class DMXEventActionMessenger; + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +class DMXEventAction : public G4UserEventAction { + + public: + DMXEventAction(); + virtual ~DMXEventAction(); + virtual void BeginOfEventAction(const G4Event*); + virtual void EndOfEventAction(const G4Event*); + + private: + void writeScintHitsToFile(void); + void writePmtHitsToFile(const DMXPmtHitsCollection*); + void drawTracks(const G4Event*); + + public: + void SetDrawTrksFlag (G4String val) {drawTrksFlag = val;}; + G4String GetDrawTrksFlag() {return drawTrksFlag;}; + + void SetDrawColsFlag (G4String val) {drawColsFlag = val;}; + G4String GetDrawColsFlag() {return drawColsFlag;}; + + void SetDrawHitsFlag (G4int val) {drawHitsFlag = val;}; + void SetSavePmtFlag (G4int val) {savePmtFlag = val;}; + void SetSaveHitsFlag (G4int val) {saveHitsFlag = val;}; + void SetPrintModulo (G4int val) {printModulo = val;}; + + private: + G4int event_id; + + // hits collections + G4int scintillatorCollID; + G4int pmtCollID; + G4int S_hits; + G4int P_hits; + + // event summary + G4double aveTimePmtHits; + G4double totEnergy; + G4double totEnergyGammas; + G4double totEnergyNeutrons; + G4double hitEnergy; + G4double firstLXeHitTime; + G4double particleEnergy; + G4String particleName; + G4String firstParticleName; + + G4bool gamma_ev; + G4bool neutron_ev; + G4bool positron_ev; + G4bool electron_ev; + G4bool proton_ev; + G4bool other_ev; + G4bool start_gamma; + G4bool start_neutron; + + // messenger + G4String drawTrksFlag; + G4String drawColsFlag; + G4int drawHitsFlag; + G4int savePmtFlag; + G4int saveHitsFlag; + G4int printModulo; + DMXEventActionMessenger* eventMessenger; + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXEventActionMessenger.hh b/examples/advanced/underground_physics/include/DMXEventActionMessenger.hh new file mode 100644 index 0000000000..6abf74be89 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXEventActionMessenger.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// EventActionMessenger header +// -------------------------------------------------------------- + +#ifndef DMXEventActionMessenger_h +#define DMXEventActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class DMXEventAction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithABool; + + +class DMXEventActionMessenger: public G4UImessenger { + + public: + DMXEventActionMessenger(DMXEventAction*); + ~DMXEventActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + DMXEventAction* eventAction; + + G4UIdirectory* dmxDirectory; + G4UIdirectory* drawDirectory; + G4UIcmdWithAString* DrawTrksCmd; + G4UIcmdWithAString* DrawColsCmd; + G4UIcmdWithABool* DrawHitsCmd; + G4UIcmdWithABool* SavePmtCmd; + G4UIcmdWithABool* SaveHitsCmd; + G4UIcmdWithAnInteger* PrintCmd; + +}; + +#endif diff --git a/examples/advanced/underground_physics/include/DMXMaxTimeCuts.hh b/examples/advanced/underground_physics/include/DMXMaxTimeCuts.hh new file mode 100644 index 0000000000..2cf2aa870f --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXMaxTimeCuts.hh @@ -0,0 +1,72 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// MaxTimeCuts header +// -------------------------------------------------------------- + +#ifndef DMXMaxTimeCuts_h +#define DMXMaxTimeCuts_h 1 + +#include "G4ios.hh" +#include "globals.hh" +#include "DMXSpecialCuts.hh" + + +class DMXMaxTimeCuts : public DMXSpecialCuts +{ + public: + + DMXMaxTimeCuts(const G4String& processName ="DMXMaxTimeCuts" ); + + virtual ~DMXMaxTimeCuts(); + + // PostStep GPIL + virtual G4double PostStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition + ); + + + private: + + // hide assignment operator as private + DMXMaxTimeCuts(DMXMaxTimeCuts&); + DMXMaxTimeCuts& operator=(const DMXMaxTimeCuts& right); + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXParticleSource.hh b/examples/advanced/underground_physics/include/DMXParticleSource.hh new file mode 100644 index 0000000000..a1e877b5d7 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXParticleSource.hh @@ -0,0 +1,132 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// ParticleSource header +// -------------------------------------------------------------- +////////////////////////////////////////////////////////////////////////////// +// This particle source is a shortened version of G4GeneralParticleSource by +// C Ferguson, F Lei & P Truscott (University of Southampton / DERA), with +// some minor modifications. +////////////////////////////////////////////////////////////////////////////// + +#ifndef DMXParticleSource_h +#define DMXParticleSource_h 1 + +#include "G4VPrimaryGenerator.hh" +#include "G4Navigator.hh" +#include "G4ParticleMomentum.hh" +#include "G4ParticleDefinition.hh" + +#include "DMXParticleSourceMessenger.hh" + + +class DMXParticleSource : public G4VPrimaryGenerator { + + public: + DMXParticleSource (); + ~DMXParticleSource (); + void GeneratePrimaryVertex(G4Event *evt); + + public: + + // position distribution + void SetPosDisType(G4String); + void SetPosDisShape(G4String); + void SetCentreCoords(G4ThreeVector); + void SetHalfZ(G4double); + void SetRadius(G4double); + void GeneratePointSource(); + void GeneratePointsInVolume(); + G4bool IsSourceConfined(); + void ConfineSourceToVolume(G4String); + + // angular distribution + void SetAngDistType(G4String); + void SetParticleMomentumDirection(G4ParticleMomentum); + void GenerateIsotropicFlux(); + + // energy distribution + void SetEnergyDisType(G4String); + void SetMonoEnergy(G4double); + void GenerateMonoEnergetic(); + + // verbosity + void SetVerbosity(G4int); + + // particle properties + void SetParticleDefinition(G4ParticleDefinition * aParticleDefinition); + inline void SetParticleCharge(G4double aCharge) + { particle_charge = aCharge; } + + private: + + // position distribution + G4String SourcePosType; + G4String Shape; + G4double halfz; + G4double Radius; + G4ThreeVector CentreCoords; + G4bool Confine; + G4String VolName; + G4String AngDistType; + G4double MinTheta, MaxTheta, MinPhi, MaxPhi; + G4double Theta, Phi; + G4String EnergyDisType; + G4double MonoEnergy; + + // particle properties + G4int NumberOfParticlesToBeGenerated; + G4ParticleDefinition* particle_definition; + G4ParticleMomentum particle_momentum_direction; + G4double particle_energy; + G4double particle_charge; + G4ThreeVector particle_position; + G4double particle_time; + G4ThreeVector particle_polarization; + + // Verbose + G4int verbosityLevel; + + private: + + DMXParticleSourceMessenger *theMessenger; + G4Navigator *gNavigator; + + +}; + + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXParticleSourceMessenger.hh b/examples/advanced/underground_physics/include/DMXParticleSourceMessenger.hh new file mode 100644 index 0000000000..6f968104f2 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXParticleSourceMessenger.hh @@ -0,0 +1,108 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// ParticleSourceMessenger header +// -------------------------------------------------------------- +////////////////////////////////////////////////////////////////////////////// +// This particle source is a shortened version of G4GeneralParticleSource by +// C Ferguson, F Lei & P Truscott (University of Southampton / DERA), with +// some minor modifications. +////////////////////////////////////////////////////////////////////////////// + +#ifndef DMXParticleSourceMessenger_h +#define DMXParticleSourceMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class DMXParticleSource; + +class G4ParticleTable; +class G4UIcommand; +class G4UIdirectory; +class G4UIcmdWithoutParameter; +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWith3Vector; +class G4UIcmdWith3VectorAndUnit; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADouble; +class G4UIcmdWithABool; +class G4UIcmdWithoutParameter; + + +class DMXParticleSourceMessenger: public G4UImessenger { + + public: + DMXParticleSourceMessenger(DMXParticleSource *fPtclGun); + ~DMXParticleSourceMessenger(); + + void SetNewValue(G4UIcommand *command, G4String newValues); + + + private: + DMXParticleSource *fParticleGun; + G4ParticleTable *particleTable; + + private: + G4UIdirectory *gunDirectory; + + G4UIcmdWithAString *typeCmd; + G4UIcmdWithAString *shapeCmd; + G4UIcmdWith3VectorAndUnit *centreCmd; + G4UIcmdWithADoubleAndUnit *halfzCmd; + G4UIcmdWithADoubleAndUnit *radiusCmd; + G4UIcmdWithAString *confineCmd; + G4UIcmdWithAString *angtypeCmd; + G4UIcmdWithAString *energytypeCmd; + G4UIcmdWithAnInteger *verbosityCmd; + G4UIcommand *ionCmd; + G4UIcmdWithAString *particleCmd; + G4UIcmdWith3VectorAndUnit *positionCmd; + G4UIcmdWith3Vector *directionCmd; + G4UIcmdWithADoubleAndUnit *energyCmd; + G4UIcmdWithoutParameter *listCmd; + + + private: + G4bool fShootIon; + G4int fAtomicNumber; + G4int fAtomicMass; + G4int fIonCharge; + G4double fIonExciteEnergy; + +}; + +#endif diff --git a/examples/advanced/underground_physics/include/DMXPhysicsList.hh b/examples/advanced/underground_physics/include/DMXPhysicsList.hh new file mode 100644 index 0000000000..48dc384622 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXPhysicsList.hh @@ -0,0 +1,104 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// PhysicsList header +// -------------------------------------------------------------- + +#ifndef DMXPhysicsList_h +#define DMXPhysicsList_h 1 + +#include "G4VUserPhysicsList.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class DMXPhysicsList: public G4VUserPhysicsList +{ +public: + DMXPhysicsList(); + virtual ~DMXPhysicsList(); + + +public: + virtual void SetCuts(); + + +protected: + // Construct particle and physics + virtual void ConstructParticle(); + virtual void ConstructProcess(); + + // these methods Construct physics processes and register them + virtual void ConstructGeneral(); + virtual void ConstructEM(); + virtual void ConstructHad(); + virtual void ConstructOp(); + + + /* + // these methods Construct all particles in each category + virtual void ConstructAllBosons(); + virtual void ConstructAllLeptons(); + virtual void ConstructAllMesons(); + virtual void ConstructAllBaryons(); + virtual void ConstructAllIons(); + virtual void ConstructAllShortLiveds(); + */ + + virtual void AddTransportation(); + +private: + G4int VerboseLevel; + G4int OpVerbLevel; + + G4double cutForGamma; + G4double cutForElectron; + G4double cutForPositron; + G4double cutForProton; + G4double cutForAlpha; + G4double cutForGenericIon; + G4double cutForOpticalPhoton; + + // these methods Construct particles + void ConstructMyBosons(); + void ConstructMyLeptons(); + void ConstructMyMesons(); + void ConstructMyBaryons(); + void ConstructMyIons(); + void ConstructMyShortLiveds(); + +}; + +#endif diff --git a/examples/advanced/underground_physics/include/DMXPmtHit.hh b/examples/advanced/underground_physics/include/DMXPmtHit.hh new file mode 100644 index 0000000000..a19aab816f --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXPmtHit.hh @@ -0,0 +1,100 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// PmtHit (sensitive detector) header +// -------------------------------------------------------------- + +#ifndef DMXPmtHit_h +#define DMXPmtHit_h 1 + +#include "G4VHit.hh" +#include "G4THitsCollection.hh" +#include "G4Allocator.hh" +#include "G4ThreeVector.hh" + + +class DMXPmtHit : public G4VHit +{ + public: + + DMXPmtHit(); + ~DMXPmtHit(); + + DMXPmtHit(const DMXPmtHit&); + const DMXPmtHit& operator=(const DMXPmtHit&); + int operator==(const DMXPmtHit&) const; + + inline void* operator new(size_t); + inline void operator delete(void*); + + void Draw(); + void Print(); + + private: + G4ThreeVector pos; + G4double time; + + + public: + inline void SetPos(G4ThreeVector xyz) {pos=xyz;}; + inline G4ThreeVector GetPos() const {return pos;}; + + inline void SetTime(G4double t) {time=t;}; + inline G4double GetTime() const {return time;}; + + +}; + + +// vector collection of one type of hits +typedef G4THitsCollection DMXPmtHitsCollection; + + +extern G4Allocator DMXPmtHitsAllocator; + + +inline void* DMXPmtHit::operator new(size_t) { + void* aHit; + aHit = (void*) DMXPmtHitsAllocator.MallocSingle(); + return aHit; +} + + +inline void DMXPmtHit::operator delete(void* aHit) { + DMXPmtHitsAllocator.FreeSingle((DMXPmtHit*) aHit); +} + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXPmtSD.hh b/examples/advanced/underground_physics/include/DMXPmtSD.hh new file mode 100644 index 0000000000..d793e6932d --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXPmtSD.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// PmtSD (sensitive detector) header +// -------------------------------------------------------------- + +#ifndef DMXPmtSD_h +#define DMXPmtSD_h 1 + + + +#include "G4VSensitiveDetector.hh" +#include "globals.hh" + +#include "DMXPmtHit.hh" + +class DMXDetectorConstruction; +class G4Step; +class G4HCofThisEvent; + +class DMXPmtSD : public G4VSensitiveDetector { + + public: + + DMXPmtSD(G4String, DMXDetectorConstruction*); + ~DMXPmtSD(); + + void Initialize(G4HCofThisEvent*); + G4bool ProcessHits(G4Step*,G4TouchableHistory*); + void EndOfEvent(G4HCofThisEvent*); + void clear(); + void DrawAll(); + void PrintAll(); + + private: + + DMXPmtHitsCollection* pmtCollection; + DMXDetectorConstruction* DMXDetector; + G4int HitID; +}; + +#endif diff --git a/examples/advanced/underground_physics/include/DMXPrimaryGeneratorAction.hh b/examples/advanced/underground_physics/include/DMXPrimaryGeneratorAction.hh new file mode 100644 index 0000000000..147d382bfc --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXPrimaryGeneratorAction.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// PrimaryGeneratorAction header +// -------------------------------------------------------------- + +#ifndef DMXPrimaryGeneratorMessenger_h +#define DMXPrimaryGeneratorMessenger_h 1 + +#include "G4VUserPrimaryGeneratorAction.hh" + +class DMXParticleSource; + +class G4Event; + +class DMXPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { + + public: + DMXPrimaryGeneratorAction(); + ~DMXPrimaryGeneratorAction(); + + public: + void GeneratePrimaries(G4Event* anEvent); + + private: + DMXParticleSource* particleGun; + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXRunAction.hh b/examples/advanced/underground_physics/include/DMXRunAction.hh new file mode 100644 index 0000000000..f347614c34 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXRunAction.hh @@ -0,0 +1,72 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// RunAction header +// -------------------------------------------------------------- + +#ifndef DMXRunAction_h +#define DMXRunAction_h 1 + +#include "G4UserRunAction.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class DMXRunActionMessenger; +class G4Run; + +class DMXRunAction : public G4UserRunAction +{ + public: + DMXRunAction(); + ~DMXRunAction(); + + public: + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + void SetFilename(G4String val) { fileName = val; }; + + private: + + G4String fileName; // log file name for the run + DMXRunActionMessenger* runMessenger; + + + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXRunActionMessenger.hh b/examples/advanced/underground_physics/include/DMXRunActionMessenger.hh new file mode 100644 index 0000000000..a67362999a --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXRunActionMessenger.hh @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// RunActionMessenger header +// -------------------------------------------------------------- + +#ifndef DMXRunActionMessenger_h +#define DMXRunActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class DMXRunAction; +class G4UIcmdWithAString; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class DMXRunActionMessenger: public G4UImessenger +{ + public: + DMXRunActionMessenger(DMXRunAction*); + ~DMXRunActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + DMXRunAction* DMXRun; + G4UIcmdWithAString* FileCmd; +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXScintHit.hh b/examples/advanced/underground_physics/include/DMXScintHit.hh new file mode 100644 index 0000000000..78e1c02a88 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXScintHit.hh @@ -0,0 +1,114 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// DetectorConstruction header +// -------------------------------------------------------------- + +#ifndef DMXScintHit_h +#define DMXScintHit_h 1 + +#include "G4VHit.hh" +#include "G4THitsCollection.hh" +#include "G4Allocator.hh" +#include "G4ThreeVector.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class DMXScintHit : public G4VHit +{ + public: + + DMXScintHit(); + ~DMXScintHit(); + DMXScintHit(const DMXScintHit&); + const DMXScintHit& operator=(const DMXScintHit&); + int operator==(const DMXScintHit&) const; + + inline void* operator new(size_t); + inline void operator delete(void*); + + void Draw(); + void Print(); + + public: + + void SetEdep (G4double de) { edep = de; }; + void SetPos (G4ThreeVector xyz) { pos = xyz; }; + void SetParticle (G4String name) { particleName = name; }; + void SetParticleEnergy (G4double e1) { particleEnergy = e1; }; + void SetTime (G4double t2) { time = t2; }; + + + G4double GetEdep() { return edep; }; + G4ThreeVector GetPos() { return pos; }; + G4String GetParticle() { return particleName;}; + G4double GetParticleEnergy() { return particleEnergy;}; + G4double GetTime() { return time; }; + + + private: + G4double edep; + G4ThreeVector pos; + G4double time; + G4String particleName; + G4double particleEnergy; + + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +typedef G4THitsCollection DMXScintHitsCollection; + +extern G4Allocator DMXScintHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void* DMXScintHit::operator new(size_t) +{ + void* aHit; + aHit = (void*) DMXScintHitAllocator.MallocSingle(); + return aHit; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void DMXScintHit::operator delete(void* aHit) +{ + DMXScintHitAllocator.FreeSingle((DMXScintHit*) aHit); +} + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXScintSD.hh b/examples/advanced/underground_physics/include/DMXScintSD.hh new file mode 100644 index 0000000000..734dbcbd57 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXScintSD.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// ScintSD (sensitive detector) header +// -------------------------------------------------------------- + +#ifndef DMXScintSD_h +#define DMXScintSD_h 1 + +#include "G4VSensitiveDetector.hh" +#include "globals.hh" +#include "DMXScintHit.hh" + +class DMXDetectorConstruction; +class G4Step; +class G4HCofThisEvent; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class DMXScintSD : public G4VSensitiveDetector +{ + public: + + DMXScintSD(G4String, DMXDetectorConstruction*); + ~DMXScintSD(); + + void Initialize(G4HCofThisEvent*); + G4bool ProcessHits(G4Step*, G4TouchableHistory*); + void EndOfEvent(G4HCofThisEvent*); + void clear(); + void DrawAll(); + void PrintAll(); + +private: + + DMXScintHitsCollection* scintillatorCollection; + DMXDetectorConstruction* DMXDetector; + G4int HitID; +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXSpecialCuts.hh b/examples/advanced/underground_physics/include/DMXSpecialCuts.hh new file mode 100644 index 0000000000..5c18a50de6 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXSpecialCuts.hh @@ -0,0 +1,101 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// SpecialCuts header +// -------------------------------------------------------------- + +#ifndef DMXSpecialCuts_h +#define DMXSpecialCuts_h 1 + +#include "G4ios.hh" +#include "globals.hh" +#include "G4VProcess.hh" + + +class DMXSpecialCuts : public G4VProcess +{ + public: + + DMXSpecialCuts(const G4String& processName ="DMXSpecialCut" ); + + virtual ~DMXSpecialCuts(); + + virtual G4double PostStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition + ); + + virtual G4VParticleChange* PostStepDoIt( + const G4Track& , + const G4Step& + ); + + // no operation in AtRestGPIL + virtual G4double AtRestGetPhysicalInteractionLength( + const G4Track& , + G4ForceCondition* + ){ return -1.0; }; + + // no operation in AtRestDoIt + virtual G4VParticleChange* AtRestDoIt( + const G4Track& , + const G4Step& + ){return NULL;}; + + // no operation in AlongStepGPIL + virtual G4double AlongStepGetPhysicalInteractionLength( + const G4Track&, + G4double , + G4double , + G4double& , + G4GPILSelection* + ){ return -1.0; }; + + // no operation in AlongStepDoIt + virtual G4VParticleChange* AlongStepDoIt( + const G4Track& , + const G4Step& + ) {return NULL;}; + + private: + + // hide assignment operator as private + DMXSpecialCuts& operator=(const DMXSpecialCuts& right){return *this;}; + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXStackingAction.hh b/examples/advanced/underground_physics/include/DMXStackingAction.hh new file mode 100644 index 0000000000..5b44e8c13a --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXStackingAction.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// StackingAction header +// -------------------------------------------------------------- + +#ifndef DMXStackingAction_H +#define DMXStackingAction_H 1 + +#include "globals.hh" +#include "G4UserStackingAction.hh" + + +class DMXStackingActionMessenger; +class G4Navigator; +class G4Track; + +class DMXStackingAction : public G4UserStackingAction { + + public: + DMXStackingAction(); + virtual ~DMXStackingAction(); + + public: + virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack); + virtual void NewStage(); + virtual void PrepareNewEvent(); + + DMXStackingActionMessenger* theMessenger; + + + private: + G4bool killGammasFlag; + + G4Navigator* gNavigator; + + public: + inline void SetKillGammasFlag(G4bool val) {killGammasFlag = val;}; + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXStackingActionMessenger.hh b/examples/advanced/underground_physics/include/DMXStackingActionMessenger.hh new file mode 100644 index 0000000000..21cabb4aec --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXStackingActionMessenger.hh @@ -0,0 +1,67 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// StackingActionMessenger header +// -------------------------------------------------------------- + +#ifndef protpStackingActionMessenger_h +#define DMXStackingActionMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class DMXStackingAction; +class G4UIcmdWithABool; + + +class DMXStackingActionMessenger: public G4UImessenger { + + public: + DMXStackingActionMessenger(DMXStackingAction*); + ~DMXStackingActionMessenger(); + + public: + void SetNewValue(G4UIcommand* , G4String); + + private: + DMXStackingAction* DMXAction; + + private: + G4UIcmdWithABool* KillGammasCmd; + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXSteppingAction.hh b/examples/advanced/underground_physics/include/DMXSteppingAction.hh new file mode 100644 index 0000000000..c3be14cc06 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXSteppingAction.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// SteppingAction header +// -------------------------------------------------------------- + +#ifndef DMXSteppingAction_h +#define DMXSteppingAction_h 1 + +#include "G4UserSteppingAction.hh" +#include "globals.hh" + + +class DMXSteppingActionMessenger; +class DMXEventAction; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class DMXSteppingAction : public G4UserSteppingAction +{ + public: + DMXSteppingAction(DMXEventAction*); + virtual ~DMXSteppingAction(); + + virtual void UserSteppingAction(const G4Step*); + + public: + void SetColourNeutronFlag(G4String val) {colourNeutronFlag =val;}; + void SetColourGammaFlag(G4String val) {colourGammaFlag =val;}; + void SetColourOpticalFlag(G4String val) {colourOpticalFlag =val;}; + void SetColourChargedPlusFlag(G4String val) {colourChargedPlusFlag =val;}; + void SetColourChargedMinusFlag(G4String val) {colourChargedMinusFlag=val;}; + + private: + G4String colourNeutronFlag; + G4String colourGammaFlag; + G4String colourOpticalFlag; + G4String colourChargedPlusFlag; + G4String colourChargedMinusFlag; + + DMXSteppingActionMessenger* steppingMessenger; + + DMXEventAction* evtAction; //pointer to event action + + +}; + +#endif diff --git a/examples/advanced/underground_physics/include/DMXSteppingActionMessenger.hh b/examples/advanced/underground_physics/include/DMXSteppingActionMessenger.hh new file mode 100644 index 0000000000..14950afe3e --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXSteppingActionMessenger.hh @@ -0,0 +1,70 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// SteppingActionMessenger header +// -------------------------------------------------------------- + +#ifndef DMXSteppingActionMessenger_h +#define DMXSteppingActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class DMXSteppingAction; +class G4UIdirectory; +class G4UIcmdWithAString; + + +class DMXSteppingActionMessenger: public G4UImessenger { + + public: + DMXSteppingActionMessenger(DMXSteppingAction*); + ~DMXSteppingActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + DMXSteppingAction* steppingAction; + + G4UIcmdWithAString* colourNeutronCmd; + G4UIcmdWithAString* colourGammaCmd; + G4UIcmdWithAString* colourOpticalCmd; + G4UIcmdWithAString* colourChargedPlusCmd; + G4UIcmdWithAString* colourChargedMinusCmd; + +}; + +#endif + diff --git a/examples/advanced/underground_physics/include/DMXVisManager.hh b/examples/advanced/underground_physics/include/DMXVisManager.hh new file mode 100644 index 0000000000..f92e556145 --- /dev/null +++ b/examples/advanced/underground_physics/include/DMXVisManager.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// VisManager header +// -------------------------------------------------------------- +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// Example Visualization Manager implementing virtual function +// RegisterGraphicsSystems. Exploits C-pre-processor variables +// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if +// environment variables of the same name are set. + +// So all you have to do is set environment variables and compile and +// instantiate this in your main(). + +// Alternatively, you can implement an empty function here and just +// register the systems you want in your main(), e.g.: +// G4VisManager* DMXVisManager = new MyVisManager; +// DMXVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef DMXVisManager_h +#define DMXVisManager_h 1 + +#ifdef G4VIS_USE + +#include "G4VisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class DMXVisManager: public G4VisManager { + +public: + + DMXVisManager (); + +private: + + void RegisterGraphicsSystems (); + +}; + +#endif + +#endif + diff --git a/examples/advanced/underground_physics/initInter.mac b/examples/advanced/underground_physics/initInter.mac new file mode 100644 index 0000000000..f58293c72f --- /dev/null +++ b/examples/advanced/underground_physics/initInter.mac @@ -0,0 +1,40 @@ +#############################################################################*# +# # +# initInter.mac # +# Initialisation macro for interactive mode # +# # +############################################################################### +# +/control/verbose 2 +/control/saveHistory +# +# Create empty scene +/vis/scene/create +# +# Create a scene handler for a specific graphics system +# (Edit the next line(s) to choose another graphic system) +#/vis/open OGLSX +#/vis/open OGLIX +/vis/open OGLSXm +#/vis/open OGLIXm +#/vis/open DANWFILE +#/vis/open Xo +# +# Trajectories: set to 0 if too many +# alternatively use /dmx/drawTracks [none charged noscint all] +/tracking/storeTrajectory 1 +# +# +# Camera viewpoint +/vis/drawView 70 -90 0. 0. cm 1.5 +# +# Add detector to scene +/vis/drawVolume +# +# Flush visualization +/vis/viewer/update +# +# +# now run macro: gamma.mac, alpha.mac, neutron.mac, sourceAm241.mac + + diff --git a/examples/advanced/underground_physics/neutron.mac b/examples/advanced/underground_physics/neutron.mac new file mode 100644 index 0000000000..7f935632aa --- /dev/null +++ b/examples/advanced/underground_physics/neutron.mac @@ -0,0 +1,56 @@ +############################################################################### +# # +# neutron.mac # +# 1 neutron fired in the room # +# # +############################################################################### +# +# output log-file name +/run/filename n_phantom_100000.log +# +# verbosities +/control/verbose 1 +/run/verbose 1 +/tracking/verbose 0 +/hits/verbose 1 +# +# draw flags +/dmx/draw/drawColours custom +/dmx/draw/gammaColour green +/dmx/draw/drawTracks noscint +/dmx/draw/drawHits 0 +# +# file output +/dmx/savePmt 0 +/dmx/saveHits 1 +# +# kill gammas in lab wall +/dmx/KillGammasInConcrete 0 +# +# radioactive decay module +/grdm/analogueMC 1 +/grdm/verbose 0 +/grdm/allVolumes +# +# gun: particle +/dmx/gun/verbose 1 +/dmx/gun/particle neutron +/dmx/gun/energytype Mono +/dmx/gun/energy 2.48 MeV +# +# gun: isotropic +# /dmx/gun/angtype iso +# +# OR gun: shoot at detector +/dmx/gun/angtype direction +/dmx/gun/direction 0 -1 -0 m +# +# gun: source +/dmx/gun/confine NULL +/dmx/gun/type Volume +/dmx/gun/shape Sphere +/dmx/gun/centre 0 2 0.090 m +/dmx/gun/radius 3 cm +# +/run/beamOn 1 + diff --git a/examples/advanced/underground_physics/src/DMXDetectorConstruction.cc b/examples/advanced/underground_physics/src/DMXDetectorConstruction.cc new file mode 100644 index 0000000000..d1078e87ac --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXDetectorConstruction.cc @@ -0,0 +1,862 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// DetectorConstruction program +// -------------------------------------------------------------- + +#include "DMXDetectorConstruction.hh" + +#include "DMXScintSD.hh" +#include "DMXPmtSD.hh" + +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "G4Element.hh" +#include "G4Isotope.hh" +#include "G4UnitsTable.hh" +#include "G4Box.hh" +#include "G4Tubs.hh" +#include "G4Sphere.hh" +#include "G4UnionSolid.hh" +#include "G4SubtractionSolid.hh" +#include "G4SphericalSurface.hh" + +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4ThreeVector.hh" +#include "G4RotationMatrix.hh" +#include "G4Transform3D.hh" +#include "G4LogicalBorderSurface.hh" +#include "G4LogicalSkinSurface.hh" +#include "G4OpBoundaryProcess.hh" + +#include "G4FieldManager.hh" +#include "G4UniformElectricField.hh" +#include "G4TransportationManager.hh" +#include "G4MagIntegratorStepper.hh" +#include "G4EqMagElectricField.hh" +#include "G4ClassicalRK4.hh" +#include "G4ChordFinder.hh" + +#include "G4SDManager.hh" + +#include "G4VisAttributes.hh" +#include "G4Colour.hh" + +#include "G4UserLimits.hh" + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +DMXDetectorConstruction::DMXDetectorConstruction() +{ + theUserLimits = NULL; + fUseUserLimits = false; + // theMaxTimeCuts = 1000000. * s; + // default time cut = infinite + // - note also number of steps cut in stepping action = MaxNoSteps + theMaxTimeCuts = DBL_MAX; + theMaxStepSize = DBL_MAX; + + theRoomTimeCut = 10000. * s; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +DMXDetectorConstruction::~DMXDetectorConstruction() {;} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void DMXDetectorConstruction::DefineMaterials() { + + G4double density, // density + a, // atomic mass + z; // atomic number + G4String name, // name + symbol; // symbol + G4int ncomponents, // n components + iz, // number of protons + in; // number of nuceons + G4double abundance, // abundance + temperature, // temperature + pressure; // pressure + + + // making vacuum + G4Material* vacuum = new G4Material + (name="Vacuum", z=1., a=1.*g/mole, density=1.e-20*g/cm3, + kStateGas, temperature=0.1*kelvin, pressure=1.e-20*bar); + + + // xenons + G4Element* elementXe = new G4Element( "Xenon", "Xe", 54., 131.29*g/mole ); + G4Material* LXe = new G4Material + ("LXe", 3.02*g/cm3, 1, kStateLiquid, 173.15*kelvin, 1.5*atmosphere ); + G4Material* GXe = new G4Material + ("GXe", 0.005887*g/cm3, 1, kStateGas, 173.15*kelvin, 1.5*atmosphere ); + LXe->AddElement( elementXe, 1); + GXe->AddElement( elementXe, 1); + + const G4int NUMENTRIES = 2; + G4double LXe_PP[NUMENTRIES] = { 7.07*eV, 7.07*eV }; + G4double LXe_SCINT[NUMENTRIES] = { 1.0, 1.0 }; + G4double LXe_RIND[NUMENTRIES] = { 1.57, 1.57 }; + G4double LXe_ABSL[NUMENTRIES] = { 35.*cm, 35.*cm}; + G4MaterialPropertiesTable *LXe_mt = new G4MaterialPropertiesTable(); + LXe_mt->AddProperty("SCINTILLATION", LXe_PP, LXe_SCINT, NUMENTRIES); + LXe_mt->AddProperty("RINDEX", LXe_PP, LXe_RIND, NUMENTRIES); + LXe_mt->AddProperty("ABSLENGTH", LXe_PP, LXe_ABSL, NUMENTRIES); + LXe->SetMaterialPropertiesTable(LXe_mt); + + G4double GXe_PP[NUMENTRIES] = { 7.07*eV, 7.07*eV }; + G4double GXe_SCINT[NUMENTRIES] = { 1.0, 1.0 }; + G4double GXe_RIND[NUMENTRIES] = { 1.00, 1.00 }; + G4double GXe_ABSL[NUMENTRIES] = { 100*m, 100*m}; + G4MaterialPropertiesTable *GXe_mt = new G4MaterialPropertiesTable(); + GXe_mt->AddProperty("SCINTILLATION", GXe_PP, GXe_SCINT, NUMENTRIES); + GXe_mt->AddProperty("RINDEX", GXe_PP, GXe_RIND, NUMENTRIES); + GXe_mt->AddProperty("ABSLENGTH", GXe_PP, GXe_ABSL, NUMENTRIES); + GXe->SetMaterialPropertiesTable(GXe_mt); + + + // making quartz + G4Element* O = new G4Element + (name="Oxygen" ,symbol="O" , z= 8., a=16.00*g/mole); + G4Element* Si = new G4Element + (name="Silicon",symbol="Si" , z= 14., a=28.09*g/mole); + G4Material* quartz = new G4Material + (name="quartz", density=2.200*g/cm3, ncomponents=2); + quartz->AddElement(Si, 1); + quartz->AddElement(O , 2); + + G4double quartz_PP[NUMENTRIES] = { 6.69*eV, 7.50*eV }; // lambda range 4 ri + G4double quartz_RIND[NUMENTRIES] = { 1.575, 1.628 }; // ref index + G4double quartz_ABSL[NUMENTRIES] = { 1.5*cm, 1.5*cm }; // atten length + G4MaterialPropertiesTable *quartz_mt = new G4MaterialPropertiesTable(); + quartz_mt->AddProperty("RINDEX", quartz_PP, quartz_RIND, NUMENTRIES); + quartz_mt->AddProperty("ABSLENGTH", quartz_PP, quartz_ABSL, NUMENTRIES); + quartz->SetMaterialPropertiesTable(quartz_mt); + + + // aluminium + G4Element* Al = new G4Element + (name="Aluminium" ,symbol="Al" , z= 13., a=26.98*g/mole); + G4Material* metalAl = new G4Material + (name="MetalAluminium", density=2.700*g/cm3, ncomponents=1); + metalAl->AddElement(Al, 1); + + + // iron + G4Element* Fe = new G4Element + (name="Iron" ,symbol="Fe" , z= 26., a=55.85*g/mole); + G4Material* metalFe = new G4Material + (name="MetalIron", density=7.874*g/cm3, ncomponents=1); + metalFe->AddElement(Fe, 1); + + + // stainless steel + G4Element* C = new G4Element( "Carbon", "C", 6. , 12.011*g/mole); + G4Element* Co = new G4Element( "Cobalt", "Co", 27. , 58.9332*g/mole); + G4Material* ssteel = new G4Material + (name="Steel", density=7.7*g/cm3, ncomponents=3); + ssteel->AddElement(C, 0.04); + ssteel->AddElement(Fe, 0.88); + ssteel->AddElement(Co, 0.08); + + + // copper + G4Element* Cu = new G4Element + (name="Copper" ,symbol="Cu" , z= 29., a=63.55*g/mole); + G4Material* metalCu = new G4Material + (name="MetalCopper", density=8.960*g/cm3, ncomponents=1); + metalCu->AddElement(Cu, 1); + + // lead + G4Element* Pb = new G4Element + (name="Lead",symbol="Pb" , z= 82., a=207.2*g/mole); + G4Material* metalPb = new G4Material + (name="MetalLead", density=11.340*g/cm3, ncomponents=1); + metalPb->AddElement(Pb, 1); + + + /* + // Americium: + G4Isotope* Am241 = new G4Isotope + (name="Americium241", iz= 95, in=241, a=241.0*g/mole); + G4Element* Am = new G4Element + (name="Americium241", "Am", ncomponents=1); + Am->AddIsotope(Am241, abundance=1); + G4Material* sourceAm = new G4Material + (name="AmericiumSource", density=13.61*g/cm3, ncomponents=1); + sourceAm->AddElement(Am, 1); + */ + + // using Uranium because Americium not yet defined for RDM + G4Isotope* U235 = new G4Isotope + (name="Uranium235", iz= 92, in=235, a=235.0*g/mole); + G4Element* U = new G4Element + (name="Uranium", "U", ncomponents=1); + U->AddIsotope(U235, abundance=1); + G4Material* sourceAm = new G4Material + (name="UraniumSource", density=13.61*g/cm3, ncomponents=1); + sourceAm->AddElement(U, 1); + + // air + G4Element* N = new G4Element + (name="Nitrogen",symbol="N" , z= 7., a=14.00674*g/mole); + G4Material* Air = new G4Material + ("AIR", 1.2929*kg/m3, 2, kStateGas, 300.00*kelvin, 1.0*atmosphere); + Air->AddElement(N, 0.8); + Air->AddElement(O , 0.2); + + + //concrete + G4Element* H = new G4Element + (name="Hydrogen",symbol="H" , z= 1., a=1.00794*g/mole); + G4Element* Ca = new G4Element + (name="Calcium",symbol="Ca" , z= 20., a=40.078*g/mole); + G4Material* concrete = new G4Material + (name="Concrete", density=2.3*g/cm3, ncomponents=6); + concrete->AddElement(Si, 0.227915); + concrete->AddElement(O, 0.60541); + concrete->AddElement(H, 0.09972); + concrete->AddElement(Ca, 0.04986); + concrete->AddElement(Al, 0.014245); + concrete->AddElement(Fe, 0.00285); + + //water + G4Material* water = new G4Material + (name="water", density=1.00*g/cm3, ncomponents=2); + water->AddElement(H , 2); + water->AddElement(O , 1); + + // print materials + // G4cout << *(G4Material::GetMaterialTable()) << G4endl; + // G4cout << *(G4Isotope::GetIsotopeTable()) << G4endl; + // G4cout << *(G4Element::GetElementTable()) << G4endl; + + // assign materials + world_mat = concrete; + lab_mat = Air; + jacket_mat = ssteel; + vacuum_mat = vacuum; + vessel_mat = ssteel; + detector_mat = GXe; + CuShield_mat = metalCu; + liqPhase_mat = LXe; + alpha_mat = metalPb; + americium_mat = sourceAm; + ring_mat = ssteel; + mirror_mat = metalAl; + grid_mat = LXe; + pmt_mat = quartz; + phcath_mat = metalAl; +} + + +/* +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void DMXDetectorConstruction::DefineField() { + + G4double EField = 0.0*kilovolt/cm; + + // create electric field + G4UniformElectricField* elecField = + new G4UniformElectricField(G4ThreeVector(0,EField,0)); + + // equation of motion + G4EqMagElectricField* EquationOfMotion = + new G4EqMagElectricField(elecField); + + // stepper for equation of motion + G4MagIntegratorStepper* DMXStepper = + new G4ClassicalRK4(EquationOfMotion); + + // chordfinder + G4ChordFinder* DMXChordFinder = + new G4ChordFinder(elecField, 1.0e-3*mm, DMXStepper); + + // field manager + G4FieldManager* DMXFieldManager = new G4FieldManager(); + DMXFieldManager->SetChordFinder(DMXChordFinder); + G4TransportationManager::GetTransportationManager() + -> SetFieldManager(DMXFieldManager); +} +*/ + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +G4VPhysicalVolume* DMXDetectorConstruction::Construct() { + + DefineMaterials(); + + // DefineField(); + + // make colours + G4Colour white (1.0, 1.0, 1.0) ; + G4Colour grey (0.5, 0.5, 0.5) ; + G4Colour lgrey (.75, .75, .75) ; + G4Colour red (1.0, 0.0, 0.0) ; + G4Colour blue (0.0, 0.0, 1.0) ; + G4Colour cyan (0.0, 1.0, 1.0) ; + G4Colour magenta (1.0, 0.0, 1.0) ; + G4Colour yellow (1.0, 1.0, 0.0) ; + G4Colour lblue (0.0, 0.0, .75) ; + // un-used colours: + // G4Colour black (0.0, 0.0, 0.0) ; + // G4Colour green (0.0, 1.0, 0.0) ; + // G4Colour lgreen (0.0, .75, 0.0) ; + + + + // Universe - room wall - CONCRETE ************************************ + + G4double worldWidth = 5.0*m; + G4double worldLength = 6.0*m; + G4double worldHeight = 3.0*m; + + G4Box* world_box= new G4Box + ("world_box", 0.5*worldWidth, 0.5*worldLength, 0.5*worldHeight ); + world_log = new G4LogicalVolume(world_box, world_mat, "world_log"); + world_phys=new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), + "world_phys", world_log, NULL, false,0); + + G4VisAttributes* world_vat= new G4VisAttributes(white); + // world_log->SetVisAttributes(G4VisAttributes::Invisible); + world_vat->SetVisibility(true); + world_log->SetVisAttributes(world_vat); + + + // Lab Space - AIR ***************************************************** + + G4double wallThick = 30.*cm; + G4double labWidth = worldWidth - wallThick; + G4double labLength = worldLength - wallThick; + G4double labHeight = worldHeight - wallThick; + + G4Box* lab_box= new G4Box + ("lab_box", 0.5*labWidth, 0.5*labLength, 0.5*labHeight ); + lab_log = new G4LogicalVolume(lab_box, lab_mat, "lab_log"); + lab_phys=new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), "lab_phys", + lab_log, world_phys, false,0); + + G4VisAttributes* lab_vat= new G4VisAttributes(white); + lab_log->SetVisAttributes(G4VisAttributes::Invisible); + // lab_log->SetVisibility(true); + lab_log->SetVisAttributes(lab_vat); + + + // outer vacuum jacket volume: stainless steel ************************* + + G4double jacketRadius = 15.0*cm; + G4double jacketHeight = 40.0*cm; + G4double jacketMetalThick = 3.0*mm; + + G4Tubs* jacket_tube=new G4Tubs("jacket_tube", + 0.*cm, jacketRadius, 0.5*jacketHeight, 0.*deg, 360.*deg); + jacket_log = new G4LogicalVolume(jacket_tube, jacket_mat, "jacket_log"); + jacket_phys=new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), + "jacket_phys", jacket_log, lab_phys, false,0); + + G4VisAttributes* jacket_vat= new G4VisAttributes(grey); + // jacket_log->SetVisAttributes(G4VisAttributes::Invisible); + jacket_log->SetVisAttributes(jacket_vat); + + + // vacuum ************************************************************** + + G4double vacuumRadius = jacketRadius - jacketMetalThick; + G4double vacuumHeight = jacketHeight - jacketMetalThick; + + G4Tubs* vacuum_tube=new G4Tubs("vacuum_tube", + 0.*cm, vacuumRadius, 0.5*vacuumHeight, 0.*deg, 360.*deg); + vacuum_log = new G4LogicalVolume(vacuum_tube, vacuum_mat, "vacuum_log"); + vacuum_phys=new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), + "vacuum_phys", vacuum_log, jacket_phys, false,0); + + // G4VisAttributes* vacuum_vat= new G4VisAttributes(lgrey); + vacuum_log->SetVisAttributes(G4VisAttributes::Invisible); + + + // inner vessel jacket volume: stainless steel ************************ + + G4double vesselRadius = 10.0*cm; + G4double vesselHeight = 30.0*cm; + G4double vesselMetalThick = 3.0*mm; + + G4Tubs* vessel_tube=new G4Tubs("vessel_tube", + 0.*cm, vesselRadius, 0.5*vesselHeight, 0.*deg, 360.*deg); + vessel_log = new G4LogicalVolume(vessel_tube, vessel_mat, "vessel_log"); + vessel_phys=new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), + "vessel_phys", vessel_log, vacuum_phys, false,0); + + G4VisAttributes* vessel_vat= new G4VisAttributes(grey); + // vessel_log->SetVisAttributes(G4VisAttributes::Invisible); + vessel_log->SetVisAttributes(vessel_vat); + + + // ********************************************************************* + // grid#1 to mirror surface: 21.75 mm + // LXe height = 15.75 mm, gXe height = 6.00 mm + // NB: Increased liquid height by 1mm - to take away problem with + // over-lapping volumes/ring pronounced from liquid phase.......... + // ********************************************************************* + + // detector volume: gas phase ****************************************** + + G4double fullDetectorRadius = vesselRadius - vesselMetalThick; + G4double fullDetectorHeight = vesselHeight - vesselMetalThick; + + G4Tubs* detector_tube=new G4Tubs("detector_tube", + 0.*cm, fullDetectorRadius, 0.5*fullDetectorHeight, 0.*deg, 360.*deg); + detector_log = new G4LogicalVolume + (detector_tube, detector_mat, "detector_log"); + detector_phys=new G4PVPlacement(0, G4ThreeVector(0.,0.,0.), + "detector_phys", detector_log, vessel_phys, false,0); + + G4VisAttributes* detector_vat= new G4VisAttributes(yellow); + // detector_log->SetVisAttributes(G4VisAttributes::Invisible); + detector_log->SetVisAttributes(detector_vat); + + + // liquid phase ******************************************************* + + G4double detectorRadius = 4.0*cm; + G4double detectorHeight = 21.3*cm; + G4double liqPhaseHeight = 20.40*cm; + G4double liqPhaseRadius = fullDetectorRadius; + G4double liqPhaseVPosition = -0.5*(detectorHeight-liqPhaseHeight); + + G4Tubs* liqPhase_tube=new G4Tubs("liqPhase_tube", 0.*cm, + liqPhaseRadius, 0.5*liqPhaseHeight, 0.*deg, 360.*deg); + liqPhase_log = + new G4LogicalVolume(liqPhase_tube, liqPhase_mat, "liqPhase_log"); + liqPhase_phys=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, liqPhaseVPosition), + "liqPhase_phys", liqPhase_log, detector_phys, false, 0); + + // attributes + G4VisAttributes* liqPhase_vat= new G4VisAttributes(yellow); + liqPhase_vat->SetVisibility(true); + liqPhase_log->SetVisAttributes(liqPhase_vat); + + + // Cu Shield ********************************************************** + + G4double CuShieldHeight = 17.7*cm; + G4double CuShieldThickness = 2.4*mm; + G4double CuShieldOuterRadius = 3.0*cm; + G4double CuShieldInnerRadius = CuShieldOuterRadius-CuShieldThickness; + G4double CuShieldVPosition = -0.5*(liqPhaseHeight-CuShieldHeight); + + G4Tubs* CuShield_tube=new G4Tubs("CuShield_tube", CuShieldInnerRadius, + CuShieldOuterRadius, 0.5*CuShieldHeight, 0.*deg, 360.*deg); + CuShield_log = + new G4LogicalVolume(CuShield_tube, CuShield_mat, "CuShield_log"); + CuShield_phys=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, CuShieldVPosition), + "CuShield_phys", CuShield_log, liqPhase_phys, false, 0); + G4VisAttributes* CuShield_vat= new G4VisAttributes(magenta); + CuShield_vat->SetVisibility(true); + CuShield_log->SetVisAttributes(CuShield_vat); + + // Cu shield surface + G4OpticalSurface* OpCuShieldSurface = new G4OpticalSurface + ("ShieldSurface", unified, polished, dielectric_metal); + G4LogicalBorderSurface* ShieldSurface; + ShieldSurface = new G4LogicalBorderSurface + ("Shield", liqPhase_phys, CuShield_phys, OpCuShieldSurface); + + const G4int NUM = 2; + G4double CuShield_PP[NUM] = { 7.0*eV, 7.50*eV }; + G4double CuShield_REFL[NUM] = { 0.271, 0.230 }; + G4MaterialPropertiesTable *CuShield_mt = new G4MaterialPropertiesTable(); + CuShield_mt->AddProperty("REFLECTIVITY", CuShield_PP, CuShield_REFL, NUM); + OpCuShieldSurface->SetMaterialPropertiesTable(CuShield_mt); + + + // rings *************************************************************** + + G4double ringHeight = 4.*mm; + G4double ringOuterRadius = detectorRadius; + G4double ringInnerRadius = CuShieldOuterRadius; + G4double ringVOffset = 0.5*ringHeight; + G4double ringVPosition = 0.5*detectorHeight-ringVOffset; + + G4Tubs* ring_tube=new G4Tubs("ring_tube", ringInnerRadius, + ringOuterRadius, 0.5*ringHeight, 0.*deg, 360.*deg); + ring_log = new G4LogicalVolume(ring_tube, ring_mat, "ring_log"); + + // optical surface: ring materials table + G4double ring_PP[NUM] = { 7.00*eV, 7.50*eV }; + G4double ring_REFL[NUM] = { 0.25, 0.25 }; + G4MaterialPropertiesTable *ring_mt = new G4MaterialPropertiesTable(); + ring_mt->AddProperty("REFLECTIVITY", ring_PP, ring_REFL, NUM); + + G4OpticalSurface* OpRingSurface = new G4OpticalSurface("RingSurface", + unified, polished, dielectric_metal); + // omitted last argument which is surface roughness if it's non-polished + // - i.e. ground + OpRingSurface->SetMaterialPropertiesTable(ring_mt); + + // rings + ring_phys_gas[0]=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, ringVPosition), + "ring_phys0",ring_log,detector_phys,false, 0); + G4LogicalBorderSurface* RingSurface_gas0; + RingSurface_gas0 = new G4LogicalBorderSurface + ("Ring", detector_phys, ring_phys_gas[0], OpRingSurface); + + ring_phys_gas[1]=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, ringVPosition-=ringHeight+1.0*mm), + "ring_phys1",ring_log, detector_phys, false, 0); + G4LogicalBorderSurface* RingSurface_gas1; + RingSurface_gas1 = new G4LogicalBorderSurface + ("Ring", detector_phys, ring_phys_gas[1], OpRingSurface); + + + // LIQUID Phase starts here: + ringVPosition+=0.5*(detectorHeight-liqPhaseHeight); + + ring_phys_liq[0]=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, ringVPosition-=ringHeight), + "ring_phys2",ring_log,liqPhase_phys, false, 0); + G4LogicalBorderSurface* RingSurface_liq0; + RingSurface_liq0 = new G4LogicalBorderSurface + ("Ring", liqPhase_phys, ring_phys_liq[0], OpRingSurface); + + ring_phys_liq[1]=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, ringVPosition-=ringHeight+1.75*mm), + "ring_phys3",ring_log, liqPhase_phys, false, 0); + G4LogicalBorderSurface* RingSurface_liq1; + RingSurface_liq1 = new G4LogicalBorderSurface + ("Ring", liqPhase_phys, ring_phys_liq[1], OpRingSurface); + + ring_phys_liq[2]=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, ringVPosition-=ringHeight), + "ring_phys4",ring_log, liqPhase_phys, false, 0); + G4LogicalBorderSurface* RingSurface_liq2; + RingSurface_liq2 = new G4LogicalBorderSurface + ("Ring", liqPhase_phys, ring_phys_liq[2], OpRingSurface); + + ring_phys_liq[3]=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, ringVPosition-=ringHeight), + "ring_phys5",ring_log, liqPhase_phys, false, 0); + G4LogicalBorderSurface* RingSurface_liq3; + RingSurface_liq3 = new G4LogicalBorderSurface + ("Ring", liqPhase_phys, ring_phys_liq[3], OpRingSurface); + + ring_phys_liq[4]=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, ringVPosition-=ringHeight+1.75*mm), + "ring_phys6",ring_log, liqPhase_phys,false, 0); + G4LogicalBorderSurface* RingSurface_liq4; + RingSurface_liq4 = new G4LogicalBorderSurface + ("Ring", liqPhase_phys, ring_phys_liq[4], OpRingSurface); + + ring_phys_liq[5]=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, ringVPosition-=ringHeight+1.75*mm), + "ring_phys7",ring_log, liqPhase_phys,false, 0); + G4LogicalBorderSurface* RingSurface_liq5; + RingSurface_liq5 = new G4LogicalBorderSurface + ("Ring", liqPhase_phys, ring_phys_liq[5], OpRingSurface); + + + G4VisAttributes* ring_vat= new G4VisAttributes(lgrey); + ring_vat->SetVisibility(true); + ring_log->SetVisAttributes(ring_vat); + + + // Mirror ************************************************************* + + G4double mirrorHeight = 2.0*mm; + G4double mirrorRadius = ringInnerRadius; + G4double mirrorVOffset = 0.5*ringHeight; + G4double mirrorVPosition = 0.5*detectorHeight-mirrorVOffset; + + G4Tubs* mirror_tube=new G4Tubs("mirror_tube", 0.*cm, mirrorRadius, + 0.5*mirrorHeight, 0.*deg, 360.*deg); + mirror_log = + new G4LogicalVolume(mirror_tube, mirror_mat, "mirror_log"); + mirror_phys=new G4PVPlacement(0, + G4ThreeVector(0.*cm, 0.*cm, mirrorVPosition), + "mirror_phys", mirror_log, detector_phys, false, 0); + + G4VisAttributes* mirror_vat= new G4VisAttributes(red); + mirror_vat->SetVisibility(true); + // mirror_vat->SetForceSolid(true); + mirror_log->SetVisAttributes(mirror_vat); + + + // mirror surface + G4OpticalSurface * OpMirrorSurface = new G4OpticalSurface + ("MirrorSurface", unified, polished, dielectric_metal); + G4LogicalBorderSurface* MirrorSurface; + MirrorSurface = new G4LogicalBorderSurface + ("Mirror", detector_phys, mirror_phys, OpMirrorSurface); + + G4double mirror_PP[NUM] = { 7.00*eV, 7.50*eV }; + G4double mirror_REFL[NUM] = { 0.70, 0.70 }; + G4MaterialPropertiesTable *mirror_mt = new G4MaterialPropertiesTable(); + mirror_mt->AddProperty("REFLECTIVITY", mirror_PP, mirror_REFL, NUM); + OpMirrorSurface->SetMaterialPropertiesTable(mirror_mt); + + + // Grids ************************************************************* + + G4double gridHeight = 0.100*mm; + G4double gridRadius = ringInnerRadius; + G4double grid1VOffset = 5.5*ringHeight+2.75*mm; + G4double grid1VPosition = 0.5*liqPhaseHeight+(detectorHeight-liqPhaseHeight) + - grid1VOffset; + G4double grid2VOffset = 6.5*ringHeight+4.50*mm; + G4double grid2VPosition = 0.5*liqPhaseHeight+(detectorHeight-liqPhaseHeight) + - grid2VOffset; + + G4Tubs* grid_tube=new G4Tubs("grid_tube", 0.*cm, gridRadius, + 0.5*gridHeight, 0.*deg, 360.*deg); + + grid1_log = new G4LogicalVolume(grid_tube, grid_mat, "grid1_log"); + grid1_phys=new G4PVPlacement(0, G4ThreeVector(0.*cm, 0.*cm, grid1VPosition), + "grid1_phys", grid1_log, liqPhase_phys, false, 0); + grid2_log = new G4LogicalVolume(grid_tube, grid_mat, "grid2_log"); + grid2_phys=new G4PVPlacement(0, G4ThreeVector(0.*cm, 0.*cm, grid2VPosition), + "grid2_phys", grid2_log, liqPhase_phys, false, 0); + + G4VisAttributes* grid_vat= new G4VisAttributes(red); + grid_vat->SetVisibility(true); + grid1_log->SetVisAttributes(grid_vat); + grid2_log->SetVisAttributes(grid_vat); + + + // alpha source holder ************************************************ + + G4double alphaHeight = 1.230*mm; // position where alpha starts + G4double recessHeight = 0.23*mm; // totals lead thickness = 1.23 mm + G4double alphaRadius = 0.65*mm; + G4double recessRadius = 0.40*mm; + + G4double recessVOffset = 0.5*(alphaHeight - recessHeight); + // G4double recessVPosition = recessVOffset; + G4double alphaVOffset = grid1VOffset-0.5*alphaHeight; + G4double alphaVPosition = 0.5*liqPhaseHeight+(detectorHeight-liqPhaseHeight) + - alphaVOffset; + + G4Tubs* alpha_tube = new G4Tubs("alpha_tube", 0.*cm, alphaRadius, + 0.5*alphaHeight, 0.*deg, 360.*deg); + G4Tubs* recess_tube = new G4Tubs("recess_tube", 0.*cm, recessRadius, + 0.5*recessHeight, 0.*deg, 360.*deg); + + G4RotationMatrix rotMatrixAlpha; + rotMatrixAlpha.rotateY(0.0*deg); + G4SubtractionSolid* alpha_sol = new G4SubtractionSolid + ("alpha_sol", alpha_tube, recess_tube, G4Transform3D + (rotMatrixAlpha, G4ThreeVector(0,0,recessVOffset))); + alpha_log = new G4LogicalVolume(alpha_sol, alpha_mat, "alpha_log"); + alpha_phys = new G4PVPlacement(0, G4ThreeVector(0., 0., alphaVPosition), + "alpha_phys", alpha_log, liqPhase_phys, false, 0); + + G4VisAttributes* alpha_vat= new G4VisAttributes(white); + alpha_vat->SetVisibility(true); + alpha_log ->SetVisAttributes(alpha_vat); + + // alpha source HOLDER surface + G4OpticalSurface* OpAlphaSurface = new G4OpticalSurface("AlphaSurface", + unified, polished, dielectric_metal); + G4LogicalBorderSurface* AlphaSurface; + AlphaSurface = new G4LogicalBorderSurface + ("Alpha", liqPhase_phys, alpha_phys, OpAlphaSurface); + + G4double alpha_PP[NUM] = { 7.00*eV, 7.50*eV }; + G4double alpha_REFL[NUM] = { 0.1, 0.1 }; + G4MaterialPropertiesTable *alpha_mt = new G4MaterialPropertiesTable(); + alpha_mt->AddProperty("REFLECTIVITY", alpha_PP, alpha_REFL, NUM); + OpAlphaSurface->SetMaterialPropertiesTable(alpha_mt); + + + // americium *********************************************************** + + G4double americiumHeight = 20.*nanometer; + G4double americiumRadius = recessRadius; + G4double americiumVOffset = 0.5*(alphaHeight-americiumHeight)-recessHeight; + G4double americiumVPosition = americiumVOffset; + + sourceZ = -0.5*(detectorHeight-liqPhaseHeight)+ + alphaVPosition + americiumVPosition; + G4cout << "Calibration source: Z= " << sourceZ/mm << " mm" << G4endl; + + G4Tubs* americium_tube = new G4Tubs("americium_tube", 0.*cm, + americiumRadius, 0.5*americiumHeight, 0.*deg, 360.*deg); + americium_log = new G4LogicalVolume(americium_tube, americium_mat, + "americium_log"); + americium_phys = new G4PVPlacement(0, G4ThreeVector(0., 0., + americiumVPosition),"americium_phys", americium_log, alpha_phys,false,0); + + G4VisAttributes* americium_vat= new G4VisAttributes(cyan); + americium_vat->SetVisibility(true); + americium_vat->SetForceSolid(true); + americium_log->SetVisAttributes(americium_vat); + + + // Photomultiplier: ETL 9829 QA **************************************** + + G4double pmtHeight = 12.0*cm; + G4double pmtRadius = 2.6*cm; + G4double pmtVOffset = 5.0*cm; + G4double pmtVPosition = -0.5*(liqPhaseHeight-pmtHeight)+pmtVOffset; + + // G4double windowVOffset = 0.5*pmtHeight - 2.*pmtRadius*cos(30.0*deg); + // G4double windowVPosition = pmtVPosition + windowVOffset; + + G4Sphere* pmt_window = new G4Sphere("pmt_sphere", 0.*cm, 2.*pmtRadius, + 0.*deg, 360.*deg, 0.*deg, 30.0*deg); + G4Tubs* pmt_tube=new G4Tubs("pmt_tube", 0.*cm, pmtRadius, 0.5*pmtHeight, + 0.*deg, 360.*deg); + + G4RotationMatrix rotMatrixpmt; // unit rotation matrix + G4double anglepmt_Phys = 0.0*deg; // rotational angle + rotMatrixpmt.rotateY(anglepmt_Phys); // rot matrix + + G4UnionSolid* pmt_sol = new G4UnionSolid("pmt_sol", pmt_tube, pmt_window, + G4Transform3D(rotMatrixpmt, G4ThreeVector(0,0,0.5*pmtHeight + -2.*pmtRadius*cos(30.0*deg)))); + + pmt_log = new G4LogicalVolume(pmt_sol, pmt_mat, "pmt_log"); + pmt_phys = new G4PVPlacement(0,G4ThreeVector(0.*cm, 0.*cm, pmtVPosition), + "pmt_phys", pmt_log, liqPhase_phys, false, 0); + + G4OpticalSurface* pmt_opsurf = new G4OpticalSurface("pmt_opsurf", + unified, polished, dielectric_dielectric); + G4LogicalBorderSurface* pmt_surf; + pmt_surf = new G4LogicalBorderSurface + ("pmt_surf", liqPhase_phys, pmt_phys, pmt_opsurf); + + G4VisAttributes* pmt_vat= new G4VisAttributes(blue); + pmt_vat->SetForceSolid(true); + pmt_vat->SetVisibility(true); + pmt_log->SetVisAttributes(pmt_vat); + + + // photocathode ******************************************************* + + // G4double phcathRadius = 22.5*mm; + // G4double phcathVOffset = 2.*pmtRadius*cos(30.*deg); + G4double phcathVPosition = 0.*cm; + + G4Sphere* phcath_sol = new G4Sphere("phcath_sphere", + 2.*pmtRadius-1.6*mm, 2.*pmtRadius-1.59*mm, 0.*deg, 360.*deg, 0.*deg, + 27.0*deg); + + phcath_log = new G4LogicalVolume(phcath_sol, phcath_mat, "phcath_log"); + phcath_phys = new G4PVPlacement(0, G4ThreeVector(0., 0., phcathVPosition), + "phcath_phys", phcath_log, pmt_phys, false, 0); + + G4OpticalSurface* phcath_opsurf = new G4OpticalSurface("phcath_opsurf", + unified, polished, dielectric_dielectric); + G4LogicalBorderSurface* phcath_surf; + phcath_surf = new G4LogicalBorderSurface + ("phcath_surf", pmt_phys, phcath_phys, phcath_opsurf); + + G4double phcath_PP[NUM] = { 7.00*eV, 7.50*eV }; + G4double phcath_REFL[NUM] = { 0.0, 0.0}; + G4MaterialPropertiesTable* phcath_mt = new G4MaterialPropertiesTable(); + phcath_mt->AddProperty("REFLECTIVITY", phcath_PP, phcath_REFL, NUM); + phcath_opsurf->SetMaterialPropertiesTable(phcath_mt); + + G4VisAttributes* phcath_vat= new G4VisAttributes(lblue); + phcath_vat->SetForceSolid(true); + phcath_vat->SetVisibility(true); + phcath_log->SetVisAttributes(phcath_vat); + + + // ...................................................................... + // attach user limits ................................................... + + G4double RoomTimeCut = 10000. * s; + + world_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,RoomTimeCut)); + lab_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,RoomTimeCut)); + jacket_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,RoomTimeCut)); + vacuum_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,RoomTimeCut)); + vessel_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,RoomTimeCut)); + detector_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + liqPhase_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + CuShield_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + ring_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + mirror_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + grid1_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + grid2_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + alpha_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + americium_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + pmt_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + phcath_log->SetUserLimits + (new G4UserLimits(theMaxStepSize,DBL_MAX,theMaxTimeCuts)); + + + // ...................................................................... + // sensitive detectors .................................................. + + G4SDManager* SDman = G4SDManager::GetSDMpointer(); + + G4String name="/DMXDet/LXeSD"; + LXeSD = new DMXScintSD(name, this); + SDman->AddNewDetector(LXeSD); + liqPhase_log->SetSensitiveDetector(LXeSD); + + SDman = G4SDManager::GetSDMpointer(); + name="/DMXDet/pmtSD"; + pmtSD = new DMXPmtSD(name, this); + SDman->AddNewDetector(pmtSD); + phcath_log->SetSensitiveDetector(pmtSD); + + + return world_phys; + +} + diff --git a/examples/advanced/underground_physics/src/DMXEventAction.cc b/examples/advanced/underground_physics/src/DMXEventAction.cc new file mode 100644 index 0000000000..0c6373bf0e --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXEventAction.cc @@ -0,0 +1,335 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// EventAction program +// -------------------------------------------------------------- + +#include "DMXEventAction.hh" + +// note DMXPmtHit.hh and DMXScintHit.hh are included in DMXEventAction.hh + +#include "DMXEventActionMessenger.hh" + +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4HCofThisEvent.hh" +#include "G4VHitsCollection.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Trajectory.hh" +#include "G4VVisManager.hh" +#include "G4SDManager.hh" +#include "G4UImanager.hh" +#include "G4UnitsTable.hh" +#include "G4ios.hh" +#include "g4std/fstream" +#include "g4std/iomanip" + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +DMXEventAction::DMXEventAction() { + + // create messenger + eventMessenger = new DMXEventActionMessenger(this); + + // defaults for messenger + drawColsFlag = "standard"; + drawTrksFlag = "all"; + drawHitsFlag = 1; + savePmtFlag = 0; + saveHitsFlag = 1; + + printModulo = 1; + + // hits collections + scintillatorCollID = -1; + pmtCollID = -1; + +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +DMXEventAction::~DMXEventAction() { + + delete eventMessenger; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void DMXEventAction::BeginOfEventAction(const G4Event* evt) { + + event_id = evt->GetEventID(); + + // print this information event by event (modulo n) + if (event_id%printModulo == 0) + G4cout << "\n---> Begin of event: " << event_id << G4endl; + + // get ID for scintillator hits collection + if (scintillatorCollID==-1) { + G4SDManager *SDman = G4SDManager::GetSDMpointer(); + scintillatorCollID = SDman->GetCollectionID("scintillatorCollection"); + } + + // get ID for pmt hits collection + if (pmtCollID==-1) { + G4SDManager *SDman = G4SDManager::GetSDMpointer(); + pmtCollID = SDman->GetCollectionID("pmtCollection"); + } + +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void DMXEventAction::EndOfEventAction(const G4Event* evt) { + + // check that both hits collections have been defined + if(scintillatorCollID<0||pmtCollID<0) return; + + // address hits collections + DMXScintHitsCollection* SHC = NULL; + DMXPmtHitsCollection* PHC = NULL; + G4HCofThisEvent* HCE = evt->GetHCofThisEvent(); + if(HCE) { + SHC = (DMXScintHitsCollection*)(HCE->GetHC(scintillatorCollID)); + PHC = (DMXPmtHitsCollection*)(HCE->GetHC(pmtCollID)); + } + + // event summary + totEnergy = 0.; + totEnergyGammas = 0.; + totEnergyNeutrons = 0.; + particleEnergy = 0.; + firstLXeHitTime = 0.; + aveTimePmtHits = 0.; + + firstParticleName = ""; + particleName = ""; + + + // particle flags + gamma_ev = false; + neutron_ev = false; + positron_ev = false; + electron_ev = false; + proton_ev = false; + other_ev = false; + start_gamma = false; + start_neutron = false; + + + // scintillator hits + if(SHC) { + S_hits = SHC->entries(); + + for (G4int i=0; iGetParticle(); + firstLXeHitTime = (*SHC)[0]->GetTime(); + if (event_id%printModulo == 0) + G4cout << " First hit: " << firstParticleName << G4endl; + } + hitEnergy = (*SHC)[i]->GetEdep(); + totEnergy += hitEnergy; + particleName = (*SHC)[i]->GetParticle(); + particleEnergy = (*SHC)[i]->GetParticleEnergy(); + + if(particleName == "gamma") { + gamma_ev = true; + start_gamma = true; + start_neutron = false; + } + else if(particleName == "neutron") + neutron_ev = true; + else if(particleName == "e+") + positron_ev = true; + else if(particleName == "e-") + electron_ev = true; + else if(particleName == "proton") + proton_ev = true; + else { + other_ev = true; + start_gamma = false; + start_neutron = true; + } + + if(start_gamma && !start_neutron) + totEnergyGammas += hitEnergy; + if(start_neutron && !start_gamma) + totEnergyNeutrons += hitEnergy; + } + + if (event_id%printModulo == 0) + G4cout << " Total energy in LXe: " + << G4BestUnit(totEnergy,"Energy") << G4endl; + } + + + // PMT hits + if(PHC) { + P_hits = PHC->entries(); + + // average time of PMT hits + for (G4int i=0; iGetTime() - firstLXeHitTime) + / (G4double)P_hits; + if (event_id%printModulo == 0) + G4cout << " Average light collection time: " + << G4BestUnit(aveTimePmtHits,"Time") << G4endl; + + // write out (x,y,z) of PMT hits + if (savePmtFlag) + writePmtHitsToFile(PHC); + } + + + // write out event summary + if(saveHitsFlag) + writeScintHitsToFile(); + + // draw trajectories + if(drawColsFlag=="standard" && drawTrksFlag!="none") + drawTracks(evt); + + // hits in PMT + if(drawHitsFlag && PHC) + PHC->DrawAllHits(); + + // print this event by event (modulo n) + if (event_id%printModulo == 0) + G4cout << "---> End of event: " << event_id << G4endl; + + +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void DMXEventAction::writeScintHitsToFile(void) { + + G4String filename="hits.out"; + G4std::ofstream hitsfile(filename, G4std::ios::app); + if(!event_id) { + G4std::ofstream hitsfile(filename); + hitsfile <<"Evt Etot LXe LXeTime PMT PmtTime First Flags" + << G4endl; + hitsfile <<"# MeV hits ns hits ns hit" << G4endl + << G4endl; + } + + + if(hitsfile.is_open()) { + + hitsfile << G4std::setiosflags(G4std::ios::fixed) + << G4std::setprecision(4) + << G4std::setiosflags(G4std::ios::left) + << G4std::setw(6) + << event_id << "\t" + << totEnergy/MeV << "\t" + << S_hits << "\t" + << G4std::setiosflags(G4std::ios::scientific) + << G4std::setprecision(2) + << firstLXeHitTime/nanosecond << "\t" + << P_hits << "\t" + << G4std::setiosflags(G4std::ios::fixed) + << G4std::setprecision(4) + << aveTimePmtHits/nanosecond << "\t" + << firstParticleName << "\t" + << (gamma_ev ? "gamma " : "") + << (neutron_ev ? "neutron " : "") + << (positron_ev ? "positron " : "") + << (electron_ev ? "electron " : "") + << (other_ev ? "other " : "") + << G4endl; + + if (event_id%printModulo == 0) + G4cout << " Event summary in file " << filename << G4endl; + hitsfile.close(); + } + + +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void DMXEventAction::writePmtHitsToFile(const DMXPmtHitsCollection* hits) { + + G4String filename="pmt.out"; + G4std::ofstream pmtfile(filename); + + if(pmtfile.is_open()) { + pmtfile << "Hit# X, mm Y, mm Z, mm" << G4endl; + pmtfile << G4std::setiosflags(G4std::ios::fixed) + << G4std::setprecision(3) + << G4std::setiosflags(G4std::ios::left) + << G4std::setw(6); + for (G4int i=0; iGetPos()).x()/mm << "\t" + << ((*hits)[i]->GetPos()).y()/mm << "\t" + << ((*hits)[i]->GetPos()).z()/mm << G4endl; + pmtfile.close(); + if (event_id%printModulo == 0) + G4cout << " PMT hits in " << filename << G4endl; + } + + +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void DMXEventAction::drawTracks(const G4Event* evt) { + + if(G4VVisManager::GetConcreteInstance()) { + G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers"); + G4TrajectoryContainer* trajContainer = evt->GetTrajectoryContainer(); + G4int n_trajectories = 0; + + if(trajContainer) n_trajectories = trajContainer->entries(); + for (G4int i=0; iDrawTrajectory(); + else if ((drawTrksFlag == "charged") && (trj->GetCharge() != 0.)) + trj->DrawTrajectory(); + else if ((drawTrksFlag == "noscint") + && (trj->GetParticleName() != "opticalphoton")) + trj->DrawTrajectory(); + } + + // G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); + } + +} diff --git a/examples/advanced/underground_physics/src/DMXEventActionMessenger.cc b/examples/advanced/underground_physics/src/DMXEventActionMessenger.cc new file mode 100644 index 0000000000..cc41371e6c --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXEventActionMessenger.cc @@ -0,0 +1,155 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// EventActionMessenger program +// -------------------------------------------------------------- + +#include "DMXEventActionMessenger.hh" + +#include "DMXEventAction.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithABool.hh" +#include "G4UIcommand.hh" +#include "globals.hh" + + +DMXEventActionMessenger::DMXEventActionMessenger(DMXEventAction* EvAct) +:eventAction(EvAct){ + + // saving event information + dmxDirectory = new G4UIdirectory("/dmx/"); + dmxDirectory->SetGuidance("DM Example commands."); + + SavePmtCmd = new G4UIcmdWithABool("/dmx/savePmt",this); + SavePmtCmd->SetGuidance("Set flag to save (x,y,z) of hits in PMT"); + SavePmtCmd->SetGuidance("into file 'pmt.out'"); + SavePmtCmd->SetGuidance("Default = false"); + SavePmtCmd->SetParameterName("savePmtFlag", false); + + SaveHitsCmd = new G4UIcmdWithABool("/dmx/saveHits",this); + SaveHitsCmd->SetGuidance("Set flag to save hits in each run"); + SaveHitsCmd->SetGuidance("into file 'hits.out'"); + SaveHitsCmd->SetGuidance("Default = true"); + SaveHitsCmd->SetParameterName("saveHitsFlag", false); + + + // drawing event + drawDirectory = new G4UIdirectory("/dmx/draw/"); + drawDirectory->SetGuidance("DM Example draw commands."); + + DrawColsCmd = new G4UIcmdWithAString("/dmx/draw/drawColours",this); + DrawColsCmd->SetGuidance("Tracks drawn by Event (standard colours) or by Step (custom colours)"); + DrawColsCmd->SetGuidance(" Choice : custom, standard(default)"); + DrawColsCmd->SetParameterName("drawColsFlag", false); + DrawColsCmd->SetCandidates("custom standard"); + DrawColsCmd->AvailableForStates(Idle); + + DrawTrksCmd = new G4UIcmdWithAString("/dmx/draw/drawTracks",this); + DrawTrksCmd->SetGuidance("Draw the tracks in the event"); + DrawTrksCmd->SetGuidance(" Choice : none, charged, noscint, all(default)"); + DrawTrksCmd->SetParameterName("drawTrksFlag", false); + DrawTrksCmd->SetCandidates("none charged noscint all"); + DrawTrksCmd->AvailableForStates(Idle); + + DrawHitsCmd = new G4UIcmdWithABool("/dmx/draw/drawHits",this); + DrawHitsCmd->SetGuidance("Set flag to draw hits in PMT."); + DrawHitsCmd->SetGuidance("Default = true"); + DrawHitsCmd->SetParameterName("drawHitsFlag", false); + DrawHitsCmd->SetDefaultValue(true); + + PrintCmd = new G4UIcmdWithAnInteger("/dmx/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(Idle); + +} + + +DMXEventActionMessenger::~DMXEventActionMessenger() { + + delete SavePmtCmd; + delete SaveHitsCmd; + delete dmxDirectory; + delete DrawColsCmd; + delete DrawTrksCmd; + delete DrawHitsCmd; + delete drawDirectory; + delete PrintCmd; + +} + +void DMXEventActionMessenger::SetNewValue + (G4UIcommand* command, G4String newValue) { + + if(command == DrawColsCmd) + eventAction->SetDrawColsFlag(newValue); + + if(command == DrawTrksCmd) + eventAction->SetDrawTrksFlag(newValue); + + if(command == DrawHitsCmd) { + G4int vl; + const char* t = newValue; + G4std::istrstream is((char*)t); + is >> vl; + eventAction->SetDrawHitsFlag(vl!=0); + } + + if(command == SavePmtCmd) { + G4int vl; + const char* t = newValue; + G4std::istrstream is((char*)t); + is >> vl; + eventAction->SetSavePmtFlag(vl!=0); + } + + if(command == SaveHitsCmd) { + G4int vl; + const char* t = newValue; + G4std::istrstream is((char*)t); + is >> vl; + eventAction->SetSaveHitsFlag(vl!=0); + } + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} + + +} + diff --git a/examples/advanced/underground_physics/src/DMXMaxTimeCuts.cc b/examples/advanced/underground_physics/src/DMXMaxTimeCuts.cc new file mode 100644 index 0000000000..24f4f7b537 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXMaxTimeCuts.cc @@ -0,0 +1,94 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// MaxTimeCuts program +// -------------------------------------------------------------- + +#include "DMXMaxTimeCuts.hh" + +#include "G4Step.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + + +DMXMaxTimeCuts::DMXMaxTimeCuts(const G4String& aName) + : DMXSpecialCuts(aName) +{ + if (verboseLevel>1) { + G4cout << GetProcessName() << " is created "<< G4endl; + } + SetProcessType(fUserDefined); +} + +DMXMaxTimeCuts::~DMXMaxTimeCuts() +{} + +DMXMaxTimeCuts::DMXMaxTimeCuts(DMXMaxTimeCuts& right) +{} + + +G4double DMXMaxTimeCuts::PostStepGetPhysicalInteractionLength( + const G4Track& aTrack, + G4double , + G4ForceCondition* condition + ) +{ + // condition is set to "Not Forced" + *condition = NotForced; + + G4double proposedStep = DBL_MAX; + // get the pointer to UserLimits + G4UserLimits* pUserLimits = aTrack.GetVolume()->GetLogicalVolume()->GetUserLimits(); + const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); + + // can apply cuts for specific particles - use if(particleDef): + // G4ParticleDefinition* aParticleDef = aTrack.GetDefinition(); + + if (pUserLimits) { + G4double temp = DBL_MAX; + //max time limit + G4double dTime= (pUserLimits->GetUserMaxTime(aTrack) - aTrack.GetGlobalTime()); + if (dTime < 0. ) { + proposedStep = 0.; + } else { + G4double beta = (aParticle->GetTotalMomentum())/(aParticle->GetTotalEnergy()); + temp = beta*c_light*dTime; + if (proposedStep > temp) proposedStep = temp; + } + + } + return proposedStep; +} diff --git a/examples/advanced/underground_physics/src/DMXParticleSource.cc b/examples/advanced/underground_physics/src/DMXParticleSource.cc new file mode 100644 index 0000000000..5062b4e786 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXParticleSource.cc @@ -0,0 +1,426 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// ParticleSource program +// -------------------------------------------------------------- +////////////////////////////////////////////////////////////////////////////// +// This particle source is a shortened version of G4GeneralParticleSource by +// C Ferguson, F Lei & P Truscott (University of Southampton / DERA), with +// some minor modifications. +////////////////////////////////////////////////////////////////////////////// + +#include "DMXParticleSource.hh" + +#include "G4PrimaryParticle.hh" +#include "G4Event.hh" +#include "Randomize.hh" +#include +#include "G4TransportationManager.hh" +#include "G4VPhysicalVolume.hh" +#include "G4PhysicalVolumeStore.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "G4IonTable.hh" +#include "G4Ions.hh" +#include "G4TrackingManager.hh" +#include "G4Track.hh" + + +DMXParticleSource::DMXParticleSource() { + + NumberOfParticlesToBeGenerated = 1; + particle_definition = NULL; + G4ThreeVector zero(0., 0., 0.); + particle_momentum_direction = G4ParticleMomentum(1., 0., 0.); + particle_energy = 1.0*MeV; + particle_position = zero; + particle_time = 0.0; + particle_polarization = zero; + particle_charge = 0.0; + + SourcePosType = "Volume"; + Shape = "NULL"; + halfz = 0.; + Radius = 0.; + CentreCoords = zero; + Confine = false; + VolName = "NULL"; + + AngDistType = "iso"; + MinTheta = 0.; + MaxTheta = pi; + MinPhi = 0.; + MaxPhi = twopi; + + EnergyDisType = "Mono"; + MonoEnergy = 1*MeV; + + verbosityLevel = 0; + + theMessenger = new DMXParticleSourceMessenger(this); + gNavigator = G4TransportationManager::GetTransportationManager() + ->GetNavigatorForTracking(); +} + +DMXParticleSource::~DMXParticleSource() +{ + delete theMessenger; +} + +void DMXParticleSource::SetPosDisType(G4String PosType) +{ + SourcePosType = PosType; +} + +void DMXParticleSource::SetPosDisShape(G4String shapeType) +{ + Shape = shapeType; +} + +void DMXParticleSource::SetCentreCoords(G4ThreeVector coordsOfCentre) +{ + CentreCoords = coordsOfCentre; +} + +void DMXParticleSource::SetHalfZ(G4double zhalf) +{ + halfz = zhalf; +} + +void DMXParticleSource::SetRadius(G4double rad) +{ + Radius = rad; +} + +void DMXParticleSource::ConfineSourceToVolume(G4String Vname) +{ + VolName = Vname; + if(verbosityLevel == 2) G4cout << VolName << G4endl; + + // checks if selected volume exists + G4VPhysicalVolume *tempPV = NULL; + G4PhysicalVolumeStore *PVStore = 0; + G4String theRequiredVolumeName = VolName; + PVStore = G4PhysicalVolumeStore::GetInstance(); + G4int i = 0; + G4bool found = false; + if(verbosityLevel == 2) G4cout << PVStore->size() << G4endl; + + // recasting required since PVStore->size() is actually a signed int... + while (!found && i<(G4int)PVStore->size()) + { + tempPV = (*PVStore)[i]; + found = tempPV->GetName() == theRequiredVolumeName; + if(verbosityLevel == 2) + G4cout << i << " " << " " << tempPV->GetName() + << " " << theRequiredVolumeName << " " << found << G4endl; + if (!found) + {i++;} + } + + // found = true then the volume exists else it doesnt. + if(found == true) { + if(verbosityLevel >= 1) + G4cout << "Volume " << VolName << " exists" << G4endl; + Confine = true; + } + else if(VolName=="NULL") + Confine = false; + else { + G4cout << " **** Error: Volume does not exist **** " << G4endl; + G4cout << " Ignoring confine condition" << G4endl; + VolName = "NULL"; + Confine = false; + } + +} + + +void DMXParticleSource::SetAngDistType(G4String atype) +{ + AngDistType = atype; +} + + +void DMXParticleSource::GeneratePointSource() +{ + // Generates Points given the point source. + if(SourcePosType == "Point") + particle_position = CentreCoords; + else + if(verbosityLevel >= 1) + G4cout << "Error SourcePosType is not set to Point" << G4endl; +} + + +void DMXParticleSource::GeneratePointsInVolume() +{ + G4ThreeVector RandPos; + G4double x=0., y=0., z=0.; + + if(SourcePosType != "Volume" && verbosityLevel >= 1) + G4cout << "Error SourcePosType not Volume" << G4endl; + + if(Shape == "Sphere") { + x = Radius*2.; + y = Radius*2.; + z = Radius*2.; + while(((x*x)+(y*y)+(z*z)) > (Radius*Radius)) { + x = G4UniformRand(); + y = G4UniformRand(); + z = G4UniformRand(); + + x = (x*2.*Radius) - Radius; + y = (y*2.*Radius) - Radius; + z = (z*2.*Radius) - Radius; + } + } + + else if(Shape == "Cylinder") { + x = Radius*2.; + y = Radius*2.; + while(((x*x)+(y*y)) > (Radius*Radius)) { + x = G4UniformRand(); + y = G4UniformRand(); + z = G4UniformRand(); + x = (x*2.*Radius) - Radius; + y = (y*2.*Radius) - Radius; + z = (z*2.*halfz) - halfz; + } + } + + else + G4cout << "Error: Volume Shape Does Not Exist" << G4endl; + + RandPos.setX(x); + RandPos.setY(y); + RandPos.setZ(z); + particle_position = CentreCoords + RandPos; + +} + + +G4bool DMXParticleSource::IsSourceConfined() +{ + + // Method to check point is within the volume specified + if(Confine == false) + G4cout << "Error: Confine is false" << G4endl; + G4ThreeVector null(0.,0.,0.); + G4ThreeVector *ptr; + ptr = &null; + + // Check particle_position is within VolName + G4VPhysicalVolume *theVolume; + theVolume=gNavigator->LocateGlobalPointAndSetup(particle_position,ptr,true); + G4String theVolName = theVolume->GetName(); + if(theVolName == VolName) { + if(verbosityLevel >= 1) + G4cout << "Particle is in volume " << VolName << G4endl; + return(true); + } + else + return(false); +} + + +void DMXParticleSource::SetParticleMomentumDirection + (G4ParticleMomentum aDirection) { + + particle_momentum_direction = aDirection.unit(); +} + + +void DMXParticleSource::GenerateIsotropicFlux() +{ + + G4double rndm, rndm2; + G4double px, py, pz; + + G4double sintheta, sinphi, costheta, cosphi; + rndm = G4UniformRand(); + costheta = cos(MinTheta) - rndm * (cos(MinTheta) - cos(MaxTheta)); + sintheta = sqrt(1. - costheta*costheta); + + rndm2 = G4UniformRand(); + Phi = MinPhi + (MaxPhi - MinPhi) * rndm2; + sinphi = sin(Phi); + cosphi = cos(Phi); + + px = -sintheta * cosphi; + py = -sintheta * sinphi; + pz = -costheta; + + G4double ResMag = sqrt((px*px) + (py*py) + (pz*pz)); + px = px/ResMag; + py = py/ResMag; + pz = pz/ResMag; + + particle_momentum_direction.setX(px); + particle_momentum_direction.setY(py); + particle_momentum_direction.setZ(pz); + + // particle_momentum_direction now holds unit momentum vector. + if(verbosityLevel >= 2) + G4cout << "Generating isotropic vector: " << particle_momentum_direction << G4endl; +} + + +void DMXParticleSource::SetEnergyDisType(G4String DisType) +{ + EnergyDisType = DisType; +} + +void DMXParticleSource::SetMonoEnergy(G4double menergy) +{ + MonoEnergy = menergy; +} + +void DMXParticleSource::GenerateMonoEnergetic() +{ + particle_energy = MonoEnergy; +} + + +void DMXParticleSource::SetVerbosity(int vL) +{ + verbosityLevel = vL; + G4cout << "Verbosity Set to: " << verbosityLevel << G4endl; +} + +void DMXParticleSource::SetParticleDefinition + (G4ParticleDefinition* aParticleDefinition) +{ + particle_definition = aParticleDefinition; + particle_charge = particle_definition->GetPDGCharge(); +} + + +void DMXParticleSource::GeneratePrimaryVertex(G4Event *evt) +{ + + if(particle_definition==NULL) { + G4cout << "No particle has been defined!" << G4endl; + return; + } + + // Position + G4bool srcconf = false; + G4int LoopCount = 0; + + while(srcconf == false) { + if(SourcePosType == "Point") + GeneratePointSource(); + else if(SourcePosType == "Volume") + GeneratePointsInVolume(); + else { + G4cout << "Error: SourcePosType undefined" << G4endl; + G4cout << "Generating point source" << G4endl; + GeneratePointSource(); + } + if(Confine == true) { + srcconf = IsSourceConfined(); + // if source in confined srcconf = true terminating the loop + // if source isnt confined srcconf = false and loop continues + } + else if(Confine == false) + srcconf = true; // terminate loop + + LoopCount++; + if(LoopCount == 100000) { + G4cout << "*************************************" << G4endl; + G4cout << "LoopCount = 100000" << G4endl; + G4cout << "Either the source distribution >> confinement" << G4endl; + G4cout << "or any confining volume may not overlap with" << G4endl; + G4cout << "the source distribution or any confining volumes" << G4endl; + G4cout << "may not exist"<< G4endl; + G4cout << "If you have set confine then this will be ignored" <= 2) + G4cout << "Creating primaries and assigning to vertex" << G4endl; + // create new primaries and set them to the vertex + G4double mass = particle_definition->GetPDGMass(); + G4double energy = particle_energy + mass; + G4double pmom = sqrt(energy*energy-mass*mass); + G4double px = pmom*particle_momentum_direction.x(); + G4double py = pmom*particle_momentum_direction.y(); + G4double pz = pmom*particle_momentum_direction.z(); + + if(verbosityLevel >= 1){ + G4cout << "Particle name: " + << particle_definition->GetParticleName() << G4endl; + G4cout << " Energy: "<SetMass( mass ); + particle->SetCharge( particle_charge ); + particle->SetPolarization(particle_polarization.x(), + particle_polarization.y(), + particle_polarization.z()); + vertex->SetPrimary( particle ); + } + evt->AddPrimaryVertex( vertex ); + if(verbosityLevel > 1) + G4cout << " Primary Vetex generated "<< G4endl; +} + diff --git a/examples/advanced/underground_physics/src/DMXParticleSourceMessenger.cc b/examples/advanced/underground_physics/src/DMXParticleSourceMessenger.cc new file mode 100644 index 0000000000..8dd65e8f4a --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXParticleSourceMessenger.cc @@ -0,0 +1,336 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// ParticleSourceMessenger program +// -------------------------------------------------------------- +////////////////////////////////////////////////////////////////////////////// +// This particle source is a shortened version of G4GeneralParticleSource by +// C Ferguson, F Lei & P Truscott (University of Southampton / DERA), with +// some minor modifications. +////////////////////////////////////////////////////////////////////////////// + +#include "DMXParticleSourceMessenger.hh" +#include "DMXParticleSource.hh" + +#include "G4Geantino.hh" +#include "G4ThreeVector.hh" +#include "G4ParticleTable.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWith3Vector.hh" +#include "G4UIcmdWith3VectorAndUnit.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcmdWithABool.hh" +#include "G4ios.hh" +#include "g4std/fstream" +#include "g4std/iomanip" +#include "G4Tokenizer.hh" +#include "g4std/strstream" + +/////////////////////////////////////////////////////////////////////////////// +DMXParticleSourceMessenger::DMXParticleSourceMessenger +(DMXParticleSource *fPtclGun) : fParticleGun(fPtclGun),fShootIon(false) { + + particleTable = G4ParticleTable::GetParticleTable(); + + // create directory + gunDirectory = new G4UIdirectory("/dmx/gun/"); + gunDirectory->SetGuidance("Particle Source control commands."); + + // list available particles + listCmd = new G4UIcmdWithoutParameter("/dmx/gun/List",this); + listCmd->SetGuidance("List available particles."); + listCmd->SetGuidance(" Invoke G4ParticleTable."); + + // set particle + particleCmd = new G4UIcmdWithAString("/dmx/gun/particle",this); + particleCmd->SetGuidance("Set particle to be generated."); + particleCmd->SetGuidance(" (geantino is default)"); + particleCmd->SetGuidance(" (ion can be specified for shooting ions)"); + particleCmd->SetParameterName("particleName",true); + particleCmd->SetDefaultValue("geantino"); + G4String candidateList; + G4int nPtcl = particleTable->entries(); + for(G4int i=0;iGetParticleName(i); + candidateList += " "; + } + candidateList += "ion "; + particleCmd->SetCandidates(candidateList); + + + // particle direction + directionCmd = new G4UIcmdWith3Vector("/dmx/gun/direction",this); + directionCmd->SetGuidance("Set momentum direction."); + directionCmd->SetGuidance("Direction needs not to be a unit vector."); + directionCmd->SetParameterName("Px","Py","Pz",true,true); + directionCmd->SetRange("Px != 0 || Py != 0 || Pz != 0"); + + // particle energy + energyCmd = new G4UIcmdWithADoubleAndUnit("/dmx/gun/energy",this); + energyCmd->SetGuidance("Set kinetic energy."); + energyCmd->SetParameterName("Energy",true,true); + energyCmd->SetDefaultUnit("GeV"); + //energyCmd->SetUnitCategory("Energy"); + //energyCmd->SetUnitCandidates("eV keV MeV GeV TeV"); + + positionCmd = new G4UIcmdWith3VectorAndUnit("/dmx/gun/position",this); + positionCmd->SetGuidance("Set starting position of the particle."); + positionCmd->SetParameterName("X","Y","Z",true,true); + positionCmd->SetDefaultUnit("cm"); + //positionCmd->SetUnitCategory("Length"); + //positionCmd->SetUnitCandidates("microm mm cm m km"); + + + // ion + ionCmd = new G4UIcommand("/dmx/gun/ion",this); + ionCmd->SetGuidance("Set properties of ion to be generated."); + ionCmd->SetGuidance("[usage] /gun/ion Z A Q E"); + ionCmd->SetGuidance(" Z:(int) AtomicNumber"); + ionCmd->SetGuidance(" A:(int) AtomicMass"); + ionCmd->SetGuidance(" Q:(int) Charge of Ion (in unit of e)"); + ionCmd->SetGuidance(" E:(double) Excitation energy (in keV)"); + + G4UIparameter* param; + param = new G4UIparameter("Z",'i',false); + param->SetDefaultValue("1"); + ionCmd->SetParameter(param); + param = new G4UIparameter("A",'i',false); + param->SetDefaultValue("1"); + ionCmd->SetParameter(param); + param = new G4UIparameter("Q",'i',true); + param->SetDefaultValue("0"); + ionCmd->SetParameter(param); + param = new G4UIparameter("E",'d',true); + param->SetDefaultValue("0.0"); + ionCmd->SetParameter(param); + + + // source distribution type + typeCmd = new G4UIcmdWithAString("/dmx/gun/type",this); + typeCmd->SetGuidance("Sets source distribution type."); + typeCmd->SetGuidance("Either Point or Volume"); + typeCmd->SetParameterName("DisType",true,true); + typeCmd->SetDefaultValue("Point"); + typeCmd->SetCandidates("Point Volume"); + + // source shape + shapeCmd = new G4UIcmdWithAString("/dmx/gun/shape",this); + shapeCmd->SetGuidance("Sets source shape type."); + shapeCmd->SetParameterName("Shape",true,true); + shapeCmd->SetDefaultValue("NULL"); + shapeCmd->SetCandidates("Sphere Cylinder"); + + // centre coordinates + centreCmd = new G4UIcmdWith3VectorAndUnit("/dmx/gun/centre",this); + centreCmd->SetGuidance("Set centre coordinates of source."); + centreCmd->SetParameterName("X","Y","Z",true,true); + centreCmd->SetDefaultUnit("cm"); + centreCmd->SetUnitCandidates("nm mum mm cm m km"); + + // half height of source + halfzCmd = new G4UIcmdWithADoubleAndUnit("/dmx/gun/halfz",this); + halfzCmd->SetGuidance("Set z half length of source."); + halfzCmd->SetParameterName("Halfz",true,true); + halfzCmd->SetDefaultUnit("cm"); + halfzCmd->SetUnitCandidates("nm mum mm cm m km"); + + // radius of source + radiusCmd = new G4UIcmdWithADoubleAndUnit("/dmx/gun/radius",this); + radiusCmd->SetGuidance("Set radius of source."); + radiusCmd->SetParameterName("Radius",true,true); + radiusCmd->SetDefaultUnit("cm"); + radiusCmd->SetUnitCandidates("nm mum mm cm m km"); + + // confine to volume + confineCmd = new G4UIcmdWithAString("/dmx/gun/confine",this); + confineCmd->SetGuidance("Confine source to volume (NULL to unset)."); + confineCmd->SetGuidance("usage: confine VolName"); + confineCmd->SetParameterName("VolName",true,true); + confineCmd->SetDefaultValue("NULL"); + + // angular distribution + angtypeCmd = new G4UIcmdWithAString("/dmx/gun/angtype",this); + angtypeCmd->SetGuidance("Sets angular source distribution type"); + angtypeCmd->SetGuidance("Possible variables are: iso direction"); + angtypeCmd->SetParameterName("AngDis",true,true); + angtypeCmd->SetDefaultValue("iso"); + angtypeCmd->SetCandidates("iso direction"); + + // energy distribution + energytypeCmd = new G4UIcmdWithAString("/dmx/gun/energytype",this); + energytypeCmd->SetGuidance("Sets energy distribution type"); + energytypeCmd->SetGuidance("Possible variables are: Mono"); + energytypeCmd->SetParameterName("EnergyDis",true,true); + energytypeCmd->SetDefaultValue("Mono"); + energytypeCmd->SetCandidates("Mono"); + + // verbosity + verbosityCmd = new G4UIcmdWithAnInteger("/dmx/gun/verbose",this); + verbosityCmd->SetGuidance("Set Verbose level for gun"); + verbosityCmd->SetGuidance(" 0 : Silent"); + verbosityCmd->SetGuidance(" 1 : Limited information"); + verbosityCmd->SetGuidance(" 2 : Detailed information"); + verbosityCmd->SetParameterName("level",false); + verbosityCmd->SetRange("level>=0 && level <=2"); + +} + + +DMXParticleSourceMessenger::~DMXParticleSourceMessenger() { + + delete typeCmd; + delete shapeCmd; + delete centreCmd; + delete halfzCmd; + delete radiusCmd; + delete confineCmd; + delete angtypeCmd; + delete energytypeCmd; + delete verbosityCmd; + delete ionCmd; + delete particleCmd; + delete positionCmd; + delete directionCmd; + delete energyCmd; + delete listCmd; + + delete gunDirectory; +} + +void DMXParticleSourceMessenger::SetNewValue + (G4UIcommand *command, G4String newValues) { + + if(command == typeCmd) + fParticleGun->SetPosDisType(newValues); + + else if(command == shapeCmd) + fParticleGun->SetPosDisShape(newValues); + + else if(command == centreCmd) + fParticleGun->SetCentreCoords(centreCmd->GetNew3VectorValue(newValues)); + + else if(command == halfzCmd) + fParticleGun->SetHalfZ(halfzCmd->GetNewDoubleValue(newValues)); + + else if(command == radiusCmd) + fParticleGun->SetRadius(radiusCmd->GetNewDoubleValue(newValues)); + + else if(command == angtypeCmd) + fParticleGun->SetAngDistType(newValues); + + else if(command == confineCmd) + fParticleGun->ConfineSourceToVolume(newValues); + + else if(command == energytypeCmd) + fParticleGun->SetEnergyDisType(newValues); + + else if(command == verbosityCmd) + fParticleGun->SetVerbosity(verbosityCmd->GetNewIntValue(newValues)); + + else if( command==particleCmd ) { + if (newValues =="ion") { + fShootIon = true; + } else { + fShootIon = false; + G4ParticleDefinition* pd = particleTable->FindParticle(newValues); + if(pd != NULL) + { fParticleGun->SetParticleDefinition( pd ); } + } + } + + else if( command==ionCmd ) { + if (fShootIon) { + G4Tokenizer next( newValues ); + // check argument + fAtomicNumber = StoI(next()); + fAtomicMass = StoI(next()); + G4String sQ = next(); + if (sQ.isNull()) { + fIonCharge = fAtomicNumber; + } else { + fIonCharge = StoI(sQ); + sQ = next(); + if (sQ.isNull()) { + fIonExciteEnergy = 0.0; + } else { + fIonExciteEnergy = StoD(sQ) * keV; + } + } + + G4ParticleDefinition* ion; + ion = particleTable->GetIon(fAtomicNumber,fAtomicMass,fIonExciteEnergy); + if (ion==0) { + G4cout << "Ion with Z=" << fAtomicNumber; + G4cout << " A=" << fAtomicMass << "is not be defined" << G4endl; + } else { + fParticleGun->SetParticleDefinition(ion); + fParticleGun->SetParticleCharge(fIonCharge*eplus); + } + } else { + G4cout<<"Set /dmx/gun/particle to ion before using /dmx/gun/ion command"; + G4cout<DumpTable(); + + else if( command==directionCmd ) { + fParticleGun->SetAngDistType("direction"); + fParticleGun->SetParticleMomentumDirection + (directionCmd->GetNew3VectorValue(newValues)); + } + + else if( command==energyCmd ) { + fParticleGun->SetEnergyDisType("Mono"); + fParticleGun->SetMonoEnergy(energyCmd->GetNewDoubleValue(newValues)); + } + + else if( command==positionCmd ) { + fParticleGun->SetPosDisType("Point"); + fParticleGun->SetCentreCoords(positionCmd->GetNew3VectorValue(newValues)); + } + else + G4cout << "Error entering command" << G4endl; +} + + + + diff --git a/examples/advanced/underground_physics/src/DMXPhysicsList.cc b/examples/advanced/underground_physics/src/DMXPhysicsList.cc new file mode 100644 index 0000000000..e22413a692 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXPhysicsList.cc @@ -0,0 +1,813 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// PhysicsList program +// -------------------------------------------------------------- + +#include "DMXPhysicsList.hh" + +#include "globals.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" + +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" + +/* +#include "G4hZiegler1977p.hh" +#include "G4hZiegler1985p.hh" +#include "G4hZiegler1977He.hh" +#include "G4hICRU49p.hh" +#include "G4hICRU49He.hh" + +#include "G4hZiegler1977Nuclear.hh" +#include "G4hZiegler1985Nuclear.hh" +*/ + +//#include "G4BosonConstructor.hh" +//#include "G4LeptonConstructor.hh" +//#include "G4MesonConstructor.hh" +//#include "G4BaryonConstructor.hh" +//#include "G4IonConstructor.hh" +//#include "G4ShortLivedConstructor.hh" + +//#include "G4Material.hh" +//#include "G4MaterialTable.hh" + +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "G4UserLimits.hh" + +//#include "G4FastSimulationManagerProcess.hh" + + +// Constructor ///////////////////////////////////////////////////////////// +DMXPhysicsList::DMXPhysicsList() : G4VUserPhysicsList() { + + defaultCutValue = 1.0*micrometer; + cutForGamma = defaultCutValue; + cutForElectron = 1.0*nanometer; + cutForPositron = defaultCutValue; + cutForProton = defaultCutValue; + cutForAlpha = 1.0*nanometer; + cutForGenericIon = 1.0*nanometer; + cutForOpticalPhoton = defaultCutValue; + + VerboseLevel = 1; + OpVerbLevel = 0; + + SetVerboseLevel(VerboseLevel); +} + + +// Destructor ////////////////////////////////////////////////////////////// +DMXPhysicsList::~DMXPhysicsList() {;} + + +// Construct Particles ///////////////////////////////////////////////////// +void DMXPhysicsList::ConstructParticle() { + + // In this method, static member functions should be called + // for all particles which you want to use. + // This ensures that objects of these particle types will be + // created in the program. + + // create all particles - DON'T! - inefficient - but are they created? + // GENERIC ION runs okay without declaration - see hTest + + ConstructMyBosons(); + ConstructMyLeptons(); + ConstructMyMesons(); + ConstructMyBaryons(); + ConstructMyIons(); + ConstructMyShortLiveds(); + +} + + +// construct Bosons:///////////////////////////////////////////////////// +void DMXPhysicsList::ConstructMyBosons() +{ + // pseudo-particles + G4Geantino::GeantinoDefinition(); + G4ChargedGeantino::ChargedGeantinoDefinition(); + + // gamma + G4Gamma::GammaDefinition(); + + //OpticalPhotons + G4OpticalPhoton::OpticalPhotonDefinition(); + +} + + +// construct Leptons:///////////////////////////////////////////////////// +void DMXPhysicsList::ConstructMyLeptons() +{ + // leptons + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); + G4MuonPlus::MuonPlusDefinition(); + G4MuonMinus::MuonMinusDefinition(); + + G4NeutrinoE::NeutrinoEDefinition(); + G4AntiNeutrinoE::AntiNeutrinoEDefinition(); + G4NeutrinoMu::NeutrinoMuDefinition(); + G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); +} + + +// construct Mesons:///////////////////////////////////////////////////// +void DMXPhysicsList::ConstructMyMesons() +{ + // mesons + G4PionPlus::PionPlusDefinition(); + G4PionMinus::PionMinusDefinition(); + G4PionZero::PionZeroDefinition(); + G4KaonPlus::KaonPlusDefinition(); + G4KaonMinus::KaonMinusDefinition(); + G4Eta::EtaDefinition(); + G4EtaPrime::EtaPrimeDefinition(); + G4KaonZero::KaonZeroDefinition(); + G4AntiKaonZero::AntiKaonZeroDefinition(); + G4KaonZeroLong::KaonZeroLongDefinition(); + G4KaonZeroShort::KaonZeroShortDefinition(); +} + + +// construct Baryons:///////////////////////////////////////////////////// +void DMXPhysicsList::ConstructMyBaryons() +{ +// barions + G4Proton::ProtonDefinition(); + G4AntiProton::AntiProtonDefinition(); + G4Neutron::NeutronDefinition(); + G4AntiNeutron::AntiNeutronDefinition(); +} + +// NB: FOR ROCK EXAMPLE WILL HAVE TO EXPAND PHYSICS PARTICLE CONSTRUCTORS + + +// construct Ions:///////////////////////////////////////////////////// +void DMXPhysicsList::ConstructMyIons() +{ +// Ions + G4Deuteron::DeuteronDefinition(); + G4Triton::TritonDefinition(); + G4He3::He3Definition(); + G4Alpha::AlphaDefinition(); + G4GenericIon::GenericIonDefinition(); +} + +// construct Shortliveds:///////////////////////////////////////////////////// +void DMXPhysicsList::ConstructMyShortLiveds() +{ + // ShortLiveds + ; +} + + + + +// Construct Processes ////////////////////////////////////////////////////// +void DMXPhysicsList::ConstructProcess() { + + AddTransportation(); + + ConstructEM(); + + ConstructOp(); + + ConstructHad(); + + ConstructGeneral(); + +} + + +// Transportation /////////////////////////////////////////////////////////// +#include "DMXMaxTimeCuts.hh" + +void DMXPhysicsList::AddTransportation() { + + G4VUserPhysicsList::AddTransportation(); + + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + if(particle != G4OpticalPhoton::OpticalPhotonDefinition()) + pmanager->AddDiscreteProcess(new DMXMaxTimeCuts()); + } +} + + +// Electromagnetic Processes //////////////////////////////////////////////// +// all charged particles +#include "G4MultipleScattering.hh" + +// gamma +#include "G4LowEnergyRayleigh.hh" +#include "G4LowEnergyPhotoElectric.hh" +#include "G4LowEnergyCompton.hh" +#include "G4LowEnergyGammaConversion.hh" + + +// e- +#include "G4LowEnergyIonisation.hh" +#include "G4LowEnergyBremsstrahlung.hh" + +// e+ +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + + +// alpha and GenericIon and deuterons, triton, He3: +#include "G4hLowEnergyIonisation.hh" +#include "G4EnergyLossTables.hh" +// this uses Ziegler 1988 and is the default - requires detailed testing +// particularly with split between NuclearStopping and electron ionisation + +//muon: +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" +#include "G4MuonMinusCaptureAtRest.hh" + +//OTHERS: +//#include "G4hIonisation.hh" + +void DMXPhysicsList::ConstructEM() { + + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + G4String particleType = particle->GetParticleType(); + G4double charge = particle->GetPDGCharge(); + + //processes + G4LowEnergyPhotoElectric* lowePhot = new G4LowEnergyPhotoElectric(); + G4LowEnergyIonisation* loweIon = new G4LowEnergyIonisation(); + G4LowEnergyBremsstrahlung* loweBrem = new G4LowEnergyBremsstrahlung(); + G4MultipleScattering* aMultipleScattering = new G4MultipleScattering(); + G4hLowEnergyIonisation* ahadronLowEIon = new G4hLowEnergyIonisation(); + + // note LowEIon uses proton as basis for its data-base, therefore + // cannot specify different LowEnergyIonisation models for different + // particles, but can change model globally for Ion, Alpha and Proton. + + if (particleName == "gamma") { + //gamma + pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh()); + pmanager->AddDiscreteProcess(lowePhot); + pmanager->AddDiscreteProcess(new G4LowEnergyCompton()); + pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion()); + + } else if (particleName == "e-") { + //electron + // process ordering: AddProcess(name, at rest, along step, post step) + // -1 = not implemented, then ordering............ + pmanager->AddProcess(aMultipleScattering, -1, 1,1); + pmanager->AddProcess(loweIon, -1, 2,2); + pmanager->AddProcess(loweBrem, -1,-1,3); + + } else if (particleName == "e+") { + //positron + pmanager->AddProcess(aMultipleScattering, -1, 1,1); + pmanager->AddProcess(new G4eIonisation(), -1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung(), -1,-1,3); + pmanager->AddProcess(new G4eplusAnnihilation(), 0,-1,4); + + } else if( particleName == "mu+" || + particleName == "mu-" ) { + //muon + pmanager->AddProcess(aMultipleScattering, -1, 1, 1); + pmanager->AddProcess(new G4MuIonisation(), -1, 2, 2); + pmanager->AddProcess(new G4MuBremsstrahlung(), -1, -1, 3); + pmanager->AddProcess(new G4MuPairProduction(), -1, -1, 4); + pmanager->AddProcess(new G4MuonMinusCaptureAtRest(),0,-1,-1); + + } else if (particleName == "GenericIon" || + (particleType == "nucleus" && charge != 0)) { + // OBJECT may be dynamically created as either a GenericIon or a nucleus + // G4Nucleus exists and therefore has particle type nucleus + // genericIon: + pmanager->AddProcess(aMultipleScattering,-1,1,1); + pmanager->AddProcess(ahadronLowEIon,-1,2,2); + + } else if (particleName == "Alpha") { + // alpha: + pmanager->AddProcess(aMultipleScattering,-1,1,1); + pmanager->AddProcess(ahadronLowEIon,-1,2,2); + + } else if (particleName == "Proton") { + // alpha: + pmanager->AddProcess(aMultipleScattering,-1,1,1); + pmanager->AddProcess(ahadronLowEIon,-1,2,2); + + } else if (particleName == "deuteron" + || particleName == "triton" + || particleName == "He3") { + pmanager->AddProcess(aMultipleScattering,-1,1,1); + pmanager->AddProcess(ahadronLowEIon,-1,2,2); + + } else if ((!particle->IsShortLived()) && + (particle->GetPDGCharge() != 0.0) && + (particle->GetParticleName() != "chargedgeantino")) { + //all others charged particles except geantino + pmanager->AddProcess(aMultipleScattering,-1,1,1); + pmanager->AddProcess(ahadronLowEIon, -1,2,2); + // pmanager->AddProcess(new G4hIonisation(), -1,2,2); + } + + ahadronLowEIon->SetNuclearStoppingOn() ; + + //fluorescence switch off for hadrons (for now): + ahadronLowEIon->SetFluorescence(false); + + //fluorescence apply specific cut for flourescence from photons, electrons + //and bremsstrahlung photons: + G4double cut = 250*eV; + lowePhot->SetCutForLowEnSecPhotons(cut); + loweIon->SetCutForLowEnSecPhotons(cut); + loweBrem->SetCutForLowEnSecPhotons(cut); + + + + // ahadronLowEIon->SetNuclearStoppingOff() ; + + //ahadronLowEIon->SetStoppingPowerTableName("ICRU_R49p") ; + + //ahadronLowEIon->SetStoppingPowerTableName("Ziegler1977H") ; + + } +} + + +// Optical Processes //////////////////////////////////////////////////////// +#include "G4Scintillation.hh" +#include "G4OpAbsorption.hh" +#include "G4OpRayleigh.hh" +#include "G4OpBoundaryProcess.hh" + +void DMXPhysicsList::ConstructOp() { + + // default scintillation process + G4Scintillation* theScintProcessDef = new G4Scintillation("Scintillation"); + // theScintProcessDef->DumpPhysicsTable(); + theScintProcessDef->SetTrackSecondariesFirst(true); + theScintProcessDef->SetScintillationYield(50000./MeV); + // Fano factor assumed 1 should be much less for Xe - 0.13? + // but is the Fano factor already included in the correlated electron + // production........ + theScintProcessDef->SetResolutionScale(1.); + theScintProcessDef->SetScintillationTime(45.*ns); + theScintProcessDef->SetVerboseLevel(OpVerbLevel); + + // scintillation process for alpha: + G4Scintillation* theScintProcessAlpha = new G4Scintillation("Scintillation"); + // theScintProcessNuc->DumpPhysicsTable(); + theScintProcessAlpha->SetTrackSecondariesFirst(true); + theScintProcessAlpha->SetScintillationYield(60000./MeV); + theScintProcessAlpha->SetResolutionScale(0./MeV); + theScintProcessAlpha->SetScintillationTime(20.*ns); + theScintProcessAlpha->SetVerboseLevel(OpVerbLevel); + + // scintillation process for heavy nuclei + G4Scintillation* theScintProcessNuc = new G4Scintillation("Scintillation"); + // theScintProcessNuc->DumpPhysicsTable(); + theScintProcessNuc->SetTrackSecondariesFirst(true); + theScintProcessNuc->SetScintillationYield(5000./MeV); + theScintProcessNuc->SetResolutionScale(0./MeV); + theScintProcessNuc->SetScintillationTime(20.*ns); + theScintProcessNuc->SetVerboseLevel(OpVerbLevel); + + // optical processes + G4OpAbsorption* theAbsorptionProcess = new G4OpAbsorption(); + G4OpRayleigh* theRayleighScatteringProcess = new G4OpRayleigh(); + G4OpBoundaryProcess* theBoundaryProcess = new G4OpBoundaryProcess(); + // theAbsorptionProcess->DumpPhysicsTable(); + // theRayleighScatteringProcess->DumpPhysicsTable(); + theAbsorptionProcess->SetVerboseLevel(OpVerbLevel); + theRayleighScatteringProcess->SetVerboseLevel(OpVerbLevel); + theBoundaryProcess->SetVerboseLevel(OpVerbLevel); + G4OpticalSurfaceModel themodel = unified; + theBoundaryProcess->SetModel(themodel); + + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + if (theScintProcessDef->IsApplicable(*particle)) { + // if(particle->GetPDGMass() > 5.0*GeV) + if(particle->GetParticleName() == "GenericIon") + pmanager->AddDiscreteProcess(theScintProcessNuc); + else if(particle->GetParticleName() == "alpha") + pmanager->AddDiscreteProcess(theScintProcessAlpha); + else + pmanager->AddDiscreteProcess(theScintProcessDef); + } + if (particleName == "opticalphoton") { + pmanager->AddDiscreteProcess(theAbsorptionProcess); + pmanager->AddDiscreteProcess(theRayleighScatteringProcess); + pmanager->AddDiscreteProcess(theBoundaryProcess); + } + } +} + + +// Hadronic rocesses //////////////////////////////////////////////////////// +#include "G4HadronElasticProcess.hh" + +#include "G4PionPlusInelasticProcess.hh" +#include "G4PionMinusInelasticProcess.hh" +#include "G4KaonPlusInelasticProcess.hh" +#include "G4KaonZeroSInelasticProcess.hh" +#include "G4KaonZeroLInelasticProcess.hh" +#include "G4KaonMinusInelasticProcess.hh" +#include "G4ProtonInelasticProcess.hh" +#include "G4AntiProtonInelasticProcess.hh" +#include "G4NeutronInelasticProcess.hh" +#include "G4AntiNeutronInelasticProcess.hh" +#include "G4DeuteronInelasticProcess.hh" +#include "G4TritonInelasticProcess.hh" +#include "G4AlphaInelasticProcess.hh" + +// Low-energy Models +#include "G4LElastic.hh" +#include "G4LEPionPlusInelastic.hh" +#include "G4LEPionMinusInelastic.hh" +#include "G4LEKaonPlusInelastic.hh" +#include "G4LEKaonZeroSInelastic.hh" +#include "G4LEKaonZeroLInelastic.hh" +#include "G4LEKaonMinusInelastic.hh" +#include "G4LEProtonInelastic.hh" +#include "G4LEAntiProtonInelastic.hh" +#include "G4LENeutronInelastic.hh" +#include "G4LEAntiNeutronInelastic.hh" +#include "G4LEDeuteronInelastic.hh" +#include "G4LETritonInelastic.hh" +#include "G4LEAlphaInelastic.hh" + +// High-energy Models +#include "G4HEPionPlusInelastic.hh" +#include "G4HEPionMinusInelastic.hh" +#include "G4HEKaonPlusInelastic.hh" +#include "G4HEKaonZeroInelastic.hh" +#include "G4HEKaonZeroInelastic.hh" +#include "G4HEKaonMinusInelastic.hh" +#include "G4HEProtonInelastic.hh" +#include "G4HEAntiProtonInelastic.hh" +#include "G4HENeutronInelastic.hh" +#include "G4HEAntiNeutronInelastic.hh" +#include "G4NeutronHPElastic.hh" +#include "G4NeutronHPElasticData.hh" +#include "G4NeutronHPCapture.hh" +#include "G4NeutronHPCaptureData.hh" +#include "G4NeutronHPInelastic.hh" +#include "G4NeutronHPInelasticData.hh" +#include "G4LCapture.hh" + +// Stopping processes +#include "G4PiMinusAbsorptionAtRest.hh" +#include "G4KaonMinusAbsorptionAtRest.hh" + + +// ConstructHad() +// Makes discrete physics processes for the hadrons, at present limited +// to those particles with GHEISHA interactions (INTRC > 0). +// The processes are: Elastic scattering and Inelastic scattering. +// F.W.Jones 09-JUL-1998 +void DMXPhysicsList::ConstructHad() { + + G4HadronElasticProcess* theElasticProcess = new G4HadronElasticProcess; + G4LElastic* theElasticModel = new G4LElastic; + theElasticProcess->RegisterMe(theElasticModel); + + theParticleIterator->reset(); + while ((*theParticleIterator)()) { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + + if (particleName == "pi+") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4PionPlusInelasticProcess* theInelasticProcess = + new G4PionPlusInelasticProcess("inelastic"); + G4LEPionPlusInelastic* theLEInelasticModel = + new G4LEPionPlusInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEPionPlusInelastic* theHEInelasticModel = + new G4HEPionPlusInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "pi-") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4PionMinusInelasticProcess* theInelasticProcess = + new G4PionMinusInelasticProcess("inelastic"); + G4LEPionMinusInelastic* theLEInelasticModel = + new G4LEPionMinusInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEPionMinusInelastic* theHEInelasticModel = + new G4HEPionMinusInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + G4String prcNam; + pmanager->AddRestProcess(new G4PiMinusAbsorptionAtRest, ordDefault); + } + + else if (particleName == "kaon+") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4KaonPlusInelasticProcess* theInelasticProcess = + new G4KaonPlusInelasticProcess("inelastic"); + G4LEKaonPlusInelastic* theLEInelasticModel = + new G4LEKaonPlusInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEKaonPlusInelastic* theHEInelasticModel = + new G4HEKaonPlusInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "kaon0S") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4KaonZeroSInelasticProcess* theInelasticProcess = + new G4KaonZeroSInelasticProcess("inelastic"); + G4LEKaonZeroSInelastic* theLEInelasticModel = + new G4LEKaonZeroSInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEKaonZeroInelastic* theHEInelasticModel = + new G4HEKaonZeroInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "kaon0L") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4KaonZeroLInelasticProcess* theInelasticProcess = + new G4KaonZeroLInelasticProcess("inelastic"); + G4LEKaonZeroLInelastic* theLEInelasticModel = + new G4LEKaonZeroLInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEKaonZeroInelastic* theHEInelasticModel = + new G4HEKaonZeroInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "kaon-") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4KaonMinusInelasticProcess* theInelasticProcess = + new G4KaonMinusInelasticProcess("inelastic"); + G4LEKaonMinusInelastic* theLEInelasticModel = + new G4LEKaonMinusInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEKaonMinusInelastic* theHEInelasticModel = + new G4HEKaonMinusInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + pmanager->AddRestProcess(new G4KaonMinusAbsorptionAtRest, ordDefault); + } + + else if (particleName == "proton") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4ProtonInelasticProcess* theInelasticProcess = + new G4ProtonInelasticProcess("inelastic"); + G4LEProtonInelastic* theLEInelasticModel = new G4LEProtonInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEProtonInelastic* theHEInelasticModel = new G4HEProtonInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "anti_proton") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4AntiProtonInelasticProcess* theInelasticProcess = + new G4AntiProtonInelasticProcess("inelastic"); + G4LEAntiProtonInelastic* theLEInelasticModel = + new G4LEAntiProtonInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEAntiProtonInelastic* theHEInelasticModel = + new G4HEAntiProtonInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "neutron") { + // elastic scattering + G4HadronElasticProcess* theNeutronElasticProcess = + new G4HadronElasticProcess; + G4LElastic* theElasticModel1 = new G4LElastic; + G4NeutronHPElastic * theElasticNeutron = new G4NeutronHPElastic; + theNeutronElasticProcess->RegisterMe(theElasticModel1); + theElasticModel1->SetMinEnergy(19*MeV); + theNeutronElasticProcess->RegisterMe(theElasticNeutron); + G4CrossSectionDataStore * theStore = + ((G4HadronElasticProcess*)theNeutronElasticProcess) + ->GetCrossSectionDataStore(); + G4NeutronHPElasticData * theNeutronData = new G4NeutronHPElasticData; + theStore->AddDataSet(theNeutronData); + pmanager->AddDiscreteProcess(theNeutronElasticProcess); + // inelastic scattering + G4NeutronInelasticProcess* theInelasticProcess = + new G4NeutronInelasticProcess("inelastic"); + G4LENeutronInelastic* theInelasticModel = new G4LENeutronInelastic; + theInelasticModel->SetMinEnergy(19*MeV); + theInelasticProcess->RegisterMe(theInelasticModel); + G4NeutronHPInelastic * theLENeutronInelasticModel = + new G4NeutronHPInelastic; + theInelasticProcess->RegisterMe(theLENeutronInelasticModel); + G4CrossSectionDataStore * theStore1 = + ((G4HadronInelasticProcess*)theInelasticProcess) + ->GetCrossSectionDataStore(); + G4NeutronHPInelasticData * theNeutronData1 = + new G4NeutronHPInelasticData; + theStore1->AddDataSet(theNeutronData1); + pmanager->AddDiscreteProcess(theInelasticProcess); + // capture + G4HadronCaptureProcess* theCaptureProcess = + new G4HadronCaptureProcess; + G4LCapture* theCaptureModel = new G4LCapture; + theCaptureModel->SetMinEnergy(19*MeV); + theCaptureProcess->RegisterMe(theCaptureModel); + G4NeutronHPCapture * theLENeutronCaptureModel = new G4NeutronHPCapture; + theCaptureProcess->RegisterMe(theLENeutronCaptureModel); + G4CrossSectionDataStore * theStore3 = + ((G4HadronCaptureProcess*)theCaptureProcess)-> + GetCrossSectionDataStore(); + G4NeutronHPCaptureData * theNeutronData3 = new G4NeutronHPCaptureData; + theStore3->AddDataSet(theNeutronData3); + pmanager->AddDiscreteProcess(theCaptureProcess); + // G4ProcessManager* pmanager = G4Neutron::Neutron->GetProcessManager(); + // pmanager->AddProcess(new G4UserSpecialCuts(),-1,-1,1); + } + + else if (particleName == "anti_neutron") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4AntiNeutronInelasticProcess* theInelasticProcess = + new G4AntiNeutronInelasticProcess("inelastic"); + G4LEAntiNeutronInelastic* theLEInelasticModel = + new G4LEAntiNeutronInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + G4HEAntiNeutronInelastic* theHEInelasticModel = + new G4HEAntiNeutronInelastic; + theInelasticProcess->RegisterMe(theHEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "deuteron") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4DeuteronInelasticProcess* theInelasticProcess = + new G4DeuteronInelasticProcess("inelastic"); + G4LEDeuteronInelastic* theLEInelasticModel = + new G4LEDeuteronInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "triton") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4TritonInelasticProcess* theInelasticProcess = + new G4TritonInelasticProcess("inelastic"); + G4LETritonInelastic* theLEInelasticModel = + new G4LETritonInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + else if (particleName == "alpha") { + pmanager->AddDiscreteProcess(theElasticProcess); + G4AlphaInelasticProcess* theInelasticProcess = + new G4AlphaInelasticProcess("inelastic"); + G4LEAlphaInelastic* theLEInelasticModel = + new G4LEAlphaInelastic; + theInelasticProcess->RegisterMe(theLEInelasticModel); + pmanager->AddDiscreteProcess(theInelasticProcess); + } + + } +} + + +// Decays /////////////////////////////////////////////////////////////////// +#include "G4Decay.hh" +#include "G4RadioactiveDecay.hh" +#include "G4IonTable.hh" +#include "G4Ions.hh" + +void DMXPhysicsList::ConstructGeneral() { + + // Add Decay Process + G4Decay* theDecayProcess = new G4Decay(); + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + + if (theDecayProcess->IsApplicable(*particle)) { + pmanager ->AddProcess(theDecayProcess); + // set ordering for PostStepDoIt and AtRestDoIt + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + } + } + + // Declare radioactive decay to the GenericIon in the IonTable. + const G4IonTable *theIonTable = + G4ParticleTable::GetParticleTable()->GetIonTable(); + G4RadioactiveDecay *theRadioactiveDecay = new G4RadioactiveDecay(); + + for (G4int i=0; iEntries(); i++) { + G4String particleName = theIonTable->GetParticle(i)->GetParticleName(); + G4String particleType = theIonTable->GetParticle(i)->GetParticleType(); + + if (particleName == "GenericIon") { + G4ProcessManager* pmanager = + theIonTable->GetParticle(i)->GetProcessManager(); + pmanager->SetVerboseLevel(VerboseLevel); + pmanager ->AddProcess(theRadioactiveDecay); + pmanager ->SetProcessOrdering(theRadioactiveDecay, idxPostStep); + pmanager ->SetProcessOrdering(theRadioactiveDecay, idxAtRest); + } + } +} + +// Cuts ///////////////////////////////////////////////////////////////////// +void DMXPhysicsList::SetCuts() { + + if (verboseLevel >1) + G4cout << "DMXPhysicsList::SetCuts:"; + + if (verboseLevel>0){ + G4cout << "DMXPhysicsList::SetCuts:"; + G4cout << "CutLength : " + << G4BestUnit(defaultCutValue,"Length") << G4endl; + } + + //special for low energy physics + // G4double lowlimit=250*eV; -- should this be lowered? - see Vladimir's + // htest + G4double lowlimit=250*eV; + G4Gamma ::SetEnergyRange(lowlimit,100*GeV); + G4Electron::SetEnergyRange(lowlimit,100*GeV); + G4Positron::SetEnergyRange(lowlimit,100*GeV); + + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + SetCutValue(cutForGamma, "gamma"); + SetCutValue(cutForElectron, "e-"); + SetCutValue(cutForPositron, "e+"); + + SetCutValue(cutForProton, "proton"); + SetCutValue(cutForProton, "anti_proton"); + SetCutValue(cutForAlpha, "alpha"); + SetCutValue(cutForGenericIon, "GenericIon"); + + SetCutValue(cutForOpticalPhoton, "opticalphoton"); + + SetCutValueForOthers(defaultCutValue); + + if (verboseLevel>0) DumpCutValuesTable(); +} + diff --git a/examples/advanced/underground_physics/src/DMXPmtHit.cc b/examples/advanced/underground_physics/src/DMXPmtHit.cc new file mode 100644 index 0000000000..d3de66c43d --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXPmtHit.cc @@ -0,0 +1,118 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// PmtHit (sensitive detector) program +// -------------------------------------------------------------- + +#include "DMXPmtHit.hh" + +#include "G4UnitsTable.hh" +#include "G4VVisManager.hh" +#include "G4Circle.hh" +#include "G4Colour.hh" +#include "G4VisAttributes.hh" + +#include "g4std/iomanip" + +G4Allocator DMXPmtHitsAllocator; + + +DMXPmtHit::DMXPmtHit() { + + pos = G4ThreeVector(0., 0., 0.); + time=0.; + +} + + +DMXPmtHit::~DMXPmtHit() {;} + + +DMXPmtHit::DMXPmtHit(const DMXPmtHit& right) { + + pos = right.pos; + time = right.time; + +} + + + +const DMXPmtHit& DMXPmtHit::operator=(const DMXPmtHit& right) { + + pos = right.pos; + time = right.time; + + return *this; + +} + + +int DMXPmtHit::operator==(const DMXPmtHit& right) const { + + return 0; +} + + + +void DMXPmtHit::Draw() { + + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) { + G4Circle circle(pos); + circle.SetScreenSize(0.002); + circle.SetFillStyle(G4Circle::filled); + G4Colour colour(1.,1.,0.); + G4VisAttributes attribs(colour); + circle.SetVisAttributes(attribs); + pVVisManager->Draw(circle); + } + + +} + + +void DMXPmtHit::Print() { + + // G4cout << " PMT hit: " << G4BestUnit(pos,"Length") << G4endl; + + G4cout << " PMT hit: " << G4std::setw(5) << G4BestUnit(time,"Time") + << ", at " << G4BestUnit(pos,"Length") << G4endl; + + +} + + + diff --git a/examples/advanced/underground_physics/src/DMXPmtSD.cc b/examples/advanced/underground_physics/src/DMXPmtSD.cc new file mode 100644 index 0000000000..dbc0a5b5ae --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXPmtSD.cc @@ -0,0 +1,124 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// PmtSD (sensitive PMT) program +// -------------------------------------------------------------- + +#include "DMXPmtSD.hh" + +#include "DMXDetectorConstruction.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4Step.hh" +#include "G4VTouchable.hh" +#include "G4TouchableHistory.hh" +#include "G4SDManager.hh" +#include "G4UImanager.hh" +#include "G4ios.hh" + + +DMXPmtSD::DMXPmtSD(G4String name, DMXDetectorConstruction* DMXSD) + :G4VSensitiveDetector(name),DMXDetector(DMXSD) { + + G4String HCname="pmtCollection"; + collectionName.insert(HCname); +} + + +DMXPmtSD::~DMXPmtSD() {;} + + +//////////////////////////////////////////////////////////////////////////// +void DMXPmtSD::Initialize(G4HCofThisEvent* HCE) { + + pmtCollection = new DMXPmtHitsCollection + (SensitiveDetectorName,collectionName[0]); + + HitID = -1; + + +} + + + +//////////////////////////////////////////////////////////////////////////// +G4bool DMXPmtSD::ProcessHits + (G4Step* aStep, G4TouchableHistory* ROhist){ + + // make known hit position + DMXPmtHit* aPmtHit = new DMXPmtHit(); + aPmtHit->SetPos(aStep->GetPostStepPoint()->GetPosition()); + aPmtHit->SetTime(aStep->GetPostStepPoint()->GetGlobalTime()); + HitID = pmtCollection->insert(aPmtHit); + + return true; + +} + + + +//////////////////////////////////////////////////////////////////////////// +void DMXPmtSD::EndOfEvent(G4HCofThisEvent* HCE) { + + G4String HCname = collectionName[0]; + + static G4int HCID = -1; + if(HCID<0) + HCID = G4SDManager::GetSDMpointer()->GetCollectionID(HCname); + HCE->AddHitsCollection(HCID,pmtCollection); + + G4int nHits = pmtCollection->entries(); + if (verboseLevel>=1) { + G4cout << " PMT collection: " << nHits << " hits" << G4endl; + if (verboseLevel>=2) + pmtCollection->PrintAllHits(); + } + + +} + + +//////////////////////////////////////////////////////////////////////////// +void DMXPmtSD::clear() {;} + + +void DMXPmtSD::DrawAll() {;} + + +void DMXPmtSD::PrintAll() {;} + + + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4ThirdLevel.cc b/examples/advanced/underground_physics/src/DMXPrimaryGeneratorAction.cc similarity index 66% rename from source/processes/electromagnetic/lowenergy/src/G4ThirdLevel.cc rename to examples/advanced/underground_physics/src/DMXPrimaryGeneratorAction.cc index 23454e64f0..93df7d9d60 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4ThirdLevel.cc +++ b/examples/advanced/underground_physics/src/DMXPrimaryGeneratorAction.cc @@ -21,46 +21,47 @@ // ******************************************************************** // // -// ------------------------------------------------------------------- -// GEANT 4 class file +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example // -// CERN, Geneva, Switzerland +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments // -// File name: G4ThirdLevel.hh +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) // -// Author: Alessandra Forti (Alessandra.Forti@cern.ch) -// -// Creation date: 1 Giugno 1999 -// -// Modifications: 24.04.01 V.Ivanchenko remove RogueWave -// -// ------------------------------------------------------------------- +// PrimaryGeneratorAction program +// -------------------------------------------------------------- -#include "G4ThirdLevel.hh" +#include "DMXPrimaryGeneratorAction.hh" + +#include "DMXParticleSource.hh" + +#include "G4Event.hh" +#include "globals.hh" -G4ThirdLevel::~G4ThirdLevel(){ - - // this->clearAndDestroy(); - this->clear(); -} - -G4bool G4ThirdLevel::operator == (const G4ThirdLevel& input) const{ - - // return( this->entries() == input.entries()); - return( this->size() == input.size()); - -} - -G4bool G4ThirdLevel::operator < (const G4ThirdLevel& input) const{ - - // return(this->entries() < input.entries()); - return(this->size() < input.size()); +DMXPrimaryGeneratorAction::DMXPrimaryGeneratorAction() { + + particleGun = new DMXParticleSource(); } +DMXPrimaryGeneratorAction::~DMXPrimaryGeneratorAction() { + + delete particleGun; +} +void DMXPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { + + + particleGun->GeneratePrimaryVertex(anEvent); + +} diff --git a/source/processes/electromagnetic/integral/include/G4VIeEnergyLoss.icc b/examples/advanced/underground_physics/src/DMXRunAction.cc similarity index 56% rename from source/processes/electromagnetic/integral/include/G4VIeEnergyLoss.icc rename to examples/advanced/underground_physics/src/DMXRunAction.cc index 56ffe78141..37de8bf601 100644 --- a/source/processes/electromagnetic/integral/include/G4VIeEnergyLoss.icc +++ b/examples/advanced/underground_physics/src/DMXRunAction.cc @@ -21,49 +21,70 @@ // ******************************************************************** // // -// $Id: G4VIeEnergyLoss.icc,v 1.1.2.2 2001/06/28 20:19:19 gunter Exp $ -// GEANT4 tag $Name: $ +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example // -// $Id: -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments // -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4VIeEnergyLoss physics process ------------ -// by Laszlo Urban, 20 March 1997 -// *************************************************************** -// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. -// It calculates the energy loss of e+/e-. -// ------------------------------------------------------------- +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) // -// 27-05-98: new randomization of the Step limit , new extrapolations for -// high/low energies. L.Urban -// 26-10-98: cleanup , L.Urban -// --------------------------------------------------------------- +// RunAction program +// -------------------------------------------------------------- -inline G4bool G4VIeEnergyLoss::IsApplicable(const G4ParticleDefinition& - particle) +#include "DMXRunActionMessenger.hh" +#include "DMXRunAction.hh" + +#include "G4Run.hh" +#include "G4UImanager.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" + +#include "g4std/fstream" +#include "g4std/iomanip" +#include "g4std/vector" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXRunAction::DMXRunAction() { - return( (&particle == G4Electron::Electron()) - ||(&particle == G4Positron::Positron()) ); + runMessenger = new DMXRunActionMessenger(this); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -inline G4double G4VIeEnergyLoss::GetContinuousStepLimit( - const G4Track& track, - G4double, - G4double currentMinimumStep, - G4double&) +DMXRunAction::~DMXRunAction() +{ + delete runMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXRunAction::BeginOfRunAction(const G4Run* aRun) { - G4double Step = - GetConstraints(track.GetDynamicParticle(),track.GetMaterial()); - - if ((Step>0.0)&&(StepGetRunID() << " start." << G4endl; + + if (G4VVisManager::GetConcreteInstance()) { + G4UImanager* UI = G4UImanager::GetUIpointer(); + UI->ApplyCommand("/vis/scene/notifyHandlers"); + } + + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXRunAction::EndOfRunAction(const G4Run* aRun) +{ + if (G4VVisManager::GetConcreteInstance()) { + G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); + } + } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/underground_physics/src/DMXRunActionMessenger.cc b/examples/advanced/underground_physics/src/DMXRunActionMessenger.cc new file mode 100644 index 0000000000..b42ca63ca0 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXRunActionMessenger.cc @@ -0,0 +1,82 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// RunActionMessenger program +// -------------------------------------------------------------- + +#include "DMXRunActionMessenger.hh" +#include "DMXRunAction.hh" + +#include "G4UIcmdWithAString.hh" +#include "G4ios.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXRunActionMessenger::DMXRunActionMessenger(DMXRunAction* run) +:DMXRun(run) +{ + FileCmd = new G4UIcmdWithAString("/run/filename",this); + FileCmd->SetGuidance(" The log file name for the run"); + FileCmd->SetGuidance(" default = rdmex2.log "); + FileCmd->SetParameterName(" Input ",true); + FileCmd->SetDefaultValue("rdmex2.log"); + FileCmd->AvailableForStates(Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXRunActionMessenger::~DMXRunActionMessenger() +{ + delete FileCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXRunActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if(command == FileCmd) + {DMXRun->SetFilename(newValue);} + +} + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + diff --git a/examples/advanced/underground_physics/src/DMXScintHit.cc b/examples/advanced/underground_physics/src/DMXScintHit.cc new file mode 100644 index 0000000000..5a259875a1 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXScintHit.cc @@ -0,0 +1,109 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// ScintHit (scintillator sensitive detector definition) program +// -------------------------------------------------------------- + +#include "DMXScintHit.hh" +#include "G4UnitsTable.hh" +#include "G4VVisManager.hh" +#include "G4Circle.hh" +#include "G4Colour.hh" +#include "G4VisAttributes.hh" +#include "g4std/iomanip" + +G4Allocator DMXScintHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXScintHit::DMXScintHit() +{ + edep=0.; + pos = G4ThreeVector(0., 0., 0.); + time = 0.; + particleEnergy = 0.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXScintHit::~DMXScintHit() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXScintHit::DMXScintHit(const DMXScintHit& right) +{ + edep = right.edep; + pos = right.pos; + time = right.time; + particleName = right.particleName; + particleEnergy = right.particleEnergy; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const DMXScintHit& DMXScintHit::operator=(const DMXScintHit& right) +{ + edep = right.edep; + pos = right.pos; + time = right.time; + particleName = right.particleName; + particleEnergy = right.particleEnergy; + return *this; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +int DMXScintHit::operator==(const DMXScintHit& right) const +{ + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void DMXScintHit::Draw() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXScintHit::Print() +{ + + G4cout << " LXe hit ENERGY: " << G4std::setw(5) << G4BestUnit(edep,"Energy") + << ", at " << G4BestUnit(pos,"Length") << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/examples/advanced/underground_physics/src/DMXScintSD.cc b/examples/advanced/underground_physics/src/DMXScintSD.cc new file mode 100644 index 0000000000..441eccbee0 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXScintSD.cc @@ -0,0 +1,141 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// ScintSD (scintillator sensitive detector definition) program +// -------------------------------------------------------------- + +#include "DMXScintSD.hh" + +#include "DMXScintHit.hh" +#include "DMXDetectorConstruction.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4HCofThisEvent.hh" +#include "G4Step.hh" +#include "G4SDManager.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTypes.hh" +#include "G4Ions.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXScintSD::DMXScintSD(G4String name,DMXDetectorConstruction* DMXSD) + :G4VSensitiveDetector(name),DMXDetector(DMXSD) +{ + G4String HCname="scintillatorCollection"; + collectionName.insert(HCname); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXScintSD::~DMXScintSD(){ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXScintSD::Initialize(G4HCofThisEvent* HCE) +{ + scintillatorCollection = new DMXScintHitsCollection + (SensitiveDetectorName,collectionName[0]); + + HitID = -1; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4bool DMXScintSD::ProcessHits(G4Step* aStep, G4TouchableHistory* ROhist) +{ + G4double edep = aStep->GetTotalEnergyDeposit(); + G4ParticleDefinition* particleType = aStep->GetTrack()->GetDefinition(); + G4String particleName = particleType->GetParticleName(); + + G4double stepl = 0.; + if (particleType->GetPDGCharge() != 0.) + stepl = aStep->GetStepLength(); + + if ((edep==0.)&&(stepl==0.)) return false; + + + // fill in hit + DMXScintHit* newHit = new DMXScintHit(); + newHit->SetEdep(edep); + newHit->SetPos(aStep->GetPostStepPoint()->GetPosition()); + newHit->SetTime(aStep->GetPreStepPoint()->GetGlobalTime()); + newHit->SetParticle(particleName); + newHit->SetParticleEnergy(aStep->GetPreStepPoint()->GetKineticEnergy() ); + + HitID = scintillatorCollection->insert(newHit); + + return true; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXScintSD::EndOfEvent(G4HCofThisEvent* HCE) +{ + + G4String HCname = collectionName[0]; + static G4int HCID = -1; + if(HCID<0) + HCID = G4SDManager::GetSDMpointer()->GetCollectionID(HCname); + HCE->AddHitsCollection(HCID,scintillatorCollection); + + G4int nHits = scintillatorCollection->entries(); + if (verboseLevel>=1) + G4cout << " LXe collection: " << nHits << " hits" << G4endl; + if (verboseLevel>=2) + scintillatorCollection->PrintAllHits(); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXScintSD::clear() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXScintSD::DrawAll() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXScintSD::PrintAll() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/advanced/underground_physics/src/DMXSpecialCuts.cc b/examples/advanced/underground_physics/src/DMXSpecialCuts.cc new file mode 100644 index 0000000000..5d246dca08 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXSpecialCuts.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// SpecialCuts program +// -------------------------------------------------------------- + +#include "DMXSpecialCuts.hh" +#include "G4VParticleChange.hh" +#include "G4Track.hh" +#include "G4Step.hh" + +DMXSpecialCuts::DMXSpecialCuts(const G4String& aName) + : G4VProcess(aName) +{ + if (verboseLevel>1) { + G4cout << GetProcessName() << " is created "<< G4endl; + } +} + +DMXSpecialCuts::~DMXSpecialCuts() +{ +} + +G4VParticleChange* DMXSpecialCuts::PostStepDoIt( + const G4Track& aTrack, + const G4Step& + ) +// +// Stop the current particle, if requested by G4UserLimits +// +{ + aParticleChange.Initialize(aTrack); + aParticleChange.SetEnergyChange(0.) ; + aParticleChange.SetLocalEnergyDeposit (aTrack.GetKineticEnergy()) ; + aParticleChange.SetStatusChange(fStopButAlive); + return &aParticleChange; +} + +G4double DMXSpecialCuts::PostStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + return DBL_MAX; +} + diff --git a/examples/advanced/underground_physics/src/DMXStackingAction.cc b/examples/advanced/underground_physics/src/DMXStackingAction.cc new file mode 100644 index 0000000000..28c3867bed --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXStackingAction.cc @@ -0,0 +1,112 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// StackingAction program +// -------------------------------------------------------------- + +#include "DMXStackingAction.hh" + +#include "DMXStackingActionMessenger.hh" +#include "DMXDetectorConstruction.hh" + +#include "G4Track.hh" +#include "G4TrackStatus.hh" +#include "G4VPhysicalVolume.hh" +#include "G4Navigator.hh" +#include "G4TransportationManager.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTypes.hh" + + + +DMXStackingAction::DMXStackingAction() { + + // new messenger + theMessenger = new DMXStackingActionMessenger(this); + + // messenger defaults + killGammasFlag = 0; + + // global geometry navigator + gNavigator = G4TransportationManager::GetTransportationManager() + ->GetNavigatorForTracking(); +} + + +DMXStackingAction::~DMXStackingAction() { + + delete theMessenger; +} + + +G4ClassificationOfNewTrack DMXStackingAction::ClassifyNewTrack +(const G4Track* aTrack) { + + + static G4int gammasKilled = 0; + + G4ClassificationOfNewTrack classification = fWaiting; + + // Kill gammas from neutrons in concrete wall + if(killGammasFlag) { + // check if particle is gamma + G4ParticleDefinition* particleType = aTrack->GetDefinition(); + if(particleType==G4Gamma::GammaDefinition()) { + // check if particle is in world_phys + G4ThreeVector pos = aTrack->GetPosition(); + G4ThreeVector *ptr = NULL; + G4VPhysicalVolume *theVolume; + theVolume = gNavigator->LocateGlobalPointAndSetup(pos,ptr,false); + if(theVolume->GetName() == "world_phys") { + classification = fKill; + G4cout << " Total for session Gammas killed in concrete wall (world_phys): " + << ++gammasKilled << G4endl; + } + } + } + + return classification; + +} + + +void DMXStackingAction::NewStage() {;} + + +void DMXStackingAction::PrepareNewEvent() {;} + + + + diff --git a/examples/advanced/underground_physics/src/DMXStackingActionMessenger.cc b/examples/advanced/underground_physics/src/DMXStackingActionMessenger.cc new file mode 100644 index 0000000000..9c42573a07 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXStackingActionMessenger.cc @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// StackingActionMessenger program +// -------------------------------------------------------------- + +#include "DMXStackingActionMessenger.hh" +#include "DMXStackingAction.hh" + +#include "G4UIcmdWithABool.hh" +#include "G4UIcommand.hh" +#include "globals.hh" + + +DMXStackingActionMessenger::DMXStackingActionMessenger + (DMXStackingAction* msa) :DMXAction(msa) { + + KillGammasCmd = new G4UIcmdWithABool("/dmx/KillGammasInConcrete",this); + KillGammasCmd-> + SetGuidance("Kills gammas produced by neutrons in the concrete wall"); + KillGammasCmd->SetGuidance("Default = false"); + KillGammasCmd->SetParameterName("KillGammasFlag", false); + KillGammasCmd->SetDefaultValue(false); + +} + +DMXStackingActionMessenger::~DMXStackingActionMessenger() { + + delete KillGammasCmd; +} + +void DMXStackingActionMessenger::SetNewValue + (G4UIcommand* command, G4String newValue) { + + if(command==KillGammasCmd) { + G4int vl; + const char* t = newValue; + G4std::istrstream is((char*)t); + is >> vl; + DMXAction->SetKillGammasFlag(vl!=0); + } + +} + diff --git a/examples/advanced/underground_physics/src/DMXSteppingAction.cc b/examples/advanced/underground_physics/src/DMXSteppingAction.cc new file mode 100644 index 0000000000..af3252c6ae --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXSteppingAction.cc @@ -0,0 +1,157 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// SteppingAction program +// -------------------------------------------------------------- + +#include "DMXSteppingAction.hh" +#include "DMXSteppingActionMessenger.hh" + +#include "DMXEventAction.hh" + +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4StepPoint.hh" +#include "G4TrackStatus.hh" +#include "G4ParticleDefinition.hh" +#include "G4ParticleTypes.hh" +#include "G4VVisManager.hh" +#include "G4Colour.hh" +#include "G4Polyline.hh" +#include "G4VisAttributes.hh" +#include "globals.hh" +#include "G4ios.hh" + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXSteppingAction::DMXSteppingAction(DMXEventAction* eventAction) + : evtAction(eventAction) { + + steppingMessenger = new DMXSteppingActionMessenger(this); + + // defaults for messenger + colourNeutronFlag = "magenta"; + colourGammaFlag = "cyan"; + colourOpticalFlag = "white"; + colourChargedPlusFlag = "red"; + colourChargedMinusFlag = "blue"; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXSteppingAction::~DMXSteppingAction() +{ + + delete steppingMessenger; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXSteppingAction::UserSteppingAction(const G4Step* fStep) +{ + + // removed 28/11/01 - unnecessary unless program "hangs" + // kill track if too many steps + // NB: This is set to DBL_MAX - therefore may cause program to "hang" + // G4int MaxNoSteps = DBL_MAX; + // G4int StepNo = fStep->GetTrack()->GetCurrentStepNumber(); + // if(StepNo >= MaxNoSteps) fStep->GetTrack()->SetTrackStatus(fStopAndKill); + + // check what is to be drawn from EventAction/EventActionMessenger + G4String drawColsFlag = evtAction->GetDrawColsFlag(); + G4String drawTrksFlag = evtAction->GetDrawTrksFlag(); + + // draw by step (here) instead of by event (event action) + if (drawColsFlag=="custom" && drawTrksFlag!="none") { + + // check that VisManager exists + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + if(pVVisManager) { + + // particle colour in a string + G4String name = fStep->GetTrack()->GetDefinition()->GetParticleName(); + G4String strColour; + if(name=="neutron") { + if(drawTrksFlag=="charged") return; + strColour = colourNeutronFlag; + } else if (name=="gamma") { + if(drawTrksFlag=="charged") return; + strColour = colourGammaFlag; + } else if (name=="opticalphoton") { + if(drawTrksFlag!="all") return; + strColour = colourOpticalFlag; + } + else if (name=="alpha" || name=="e+") + strColour = colourChargedPlusFlag; + else + strColour = colourChargedMinusFlag; + + // convert string to G4Colour + G4Colour colour; + if (strColour=="white") colour=G4Colour(1.0, 1.0, 1.0); + else if(strColour=="grey" ) colour=G4Colour(0.5, 0.5, 0.5); + else if(strColour=="lgrey") colour=G4Colour(.75, .75, .75); + else if(strColour=="black") colour=G4Colour(0.0, 0.0, 0.0); + else if(strColour=="red") colour=G4Colour(1.0, 0.0, 0.0); + else if(strColour=="green") colour=G4Colour(0.0, 1.0, 0.0); + else if(strColour=="blue") colour=G4Colour(0.0, 0.0, 1.0); + else if(strColour=="cyan") colour=G4Colour(0.0, 1.0, 1.0); + else if(strColour=="magenta") colour=G4Colour(1.0, 0.0, 1.0); + else if(strColour=="yellow") colour=G4Colour(1.0, 1.0, 0.0); + else if(strColour=="lgreen") colour=G4Colour(0.0, .75, 0.0); + else if(strColour=="lblue") colour=G4Colour(0.0, 0.0, .75); + else colour=G4Colour(1.0, 1.0, 1.0); + + // create line with colour + G4VisAttributes attribs(colour); + G4Polyline polyline; + polyline.SetVisAttributes(attribs); + + // draw line + G4Point3D start(fStep->GetPreStepPoint()->GetPosition()); + G4Point3D end(fStep->GetPostStepPoint()->GetPosition()); + polyline.push_back(start); + polyline.push_back(end); + pVVisManager->Draw(polyline); + } + + } + +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/advanced/underground_physics/src/DMXSteppingActionMessenger.cc b/examples/advanced/underground_physics/src/DMXSteppingActionMessenger.cc new file mode 100644 index 0000000000..1c6e56eb67 --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXSteppingActionMessenger.cc @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// SteppingActionMessenger program +// -------------------------------------------------------------- + +#include "DMXSteppingActionMessenger.hh" + +#include "DMXSteppingAction.hh" +#include "DMXEventActionMessenger.hh" + +#include "globals.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" + +DMXSteppingActionMessenger::DMXSteppingActionMessenger + (DMXSteppingAction* SA):steppingAction(SA) { + + colourNeutronCmd = new G4UIcmdWithAString("/dmx/draw/neutronColour",this); + colourNeutronCmd->SetGuidance("Colour of neutron in the event"); + colourNeutronCmd->SetGuidance(" Choice : white, grey, lgrey, black, red, green, blue, cyan, magenta(default), yellow, lgreen, lblue"); + colourNeutronCmd->SetParameterName("colourNeutronFlag", false); + colourNeutronCmd->SetCandidates("white grey lgrey black red green blue cyan magenta yellow lgreen lblue"); + colourNeutronCmd->AvailableForStates(Idle); + + colourGammaCmd = new G4UIcmdWithAString("/dmx/draw/gammaColour",this); + colourGammaCmd->SetGuidance("Colour of gamma in the event"); + colourGammaCmd->SetGuidance(" Choice : white, grey, lgrey, black, red, green, blue, cyan(default), magenta, yellow, lgreen, lblue"); + colourGammaCmd->SetParameterName("colourGammaFlag", false); + colourGammaCmd->SetCandidates("white grey lgrey black red green blue cyan magenta yellow lgreen lblue"); + colourGammaCmd->AvailableForStates(Idle); + + colourOpticalCmd = new G4UIcmdWithAString("/dmx/draw/opticalColour",this); + colourOpticalCmd->SetGuidance("Colour of gamma in the event"); + colourOpticalCmd->SetGuidance(" Choice : white(default), grey, lgrey, black, red, green, blue, cyan, magenta, yellow, lgreen, lblue"); + colourOpticalCmd->SetParameterName("colourOpticalFlag", false); + colourOpticalCmd->SetCandidates("white grey lgrey black red green blue cyan magenta yellow lgreen lblue"); + colourOpticalCmd->AvailableForStates(Idle); + + colourChargedPlusCmd = new G4UIcmdWithAString("/dmx/draw/chargedplusColour",this); + colourChargedPlusCmd->SetGuidance("colour of chargedplus in the event"); + colourChargedPlusCmd->SetGuidance(" Choice : white, grey, lgrey, black, red (default), green, blue, cyan, magenta, yellow, lgreen, lblue"); + colourChargedPlusCmd->SetParameterName("ColourChargedPlusFlag", false); + colourChargedPlusCmd->SetCandidates("white grey lgrey black red(default) green blue cyan magenta yellow lgreen lblue"); + colourChargedPlusCmd->AvailableForStates(Idle); + + colourChargedMinusCmd = new G4UIcmdWithAString("/dmx/draw/chargedminusColour",this); + colourChargedMinusCmd->SetGuidance("colour of chargedminus in the event"); + colourChargedMinusCmd->SetGuidance(" Choice : white, grey, lgrey, black, red, green, blue(default), cyan, magenta, yellow, lgreen, lblue"); + colourChargedMinusCmd->SetParameterName("colourChargedMinusFlag", false); + colourChargedMinusCmd->SetCandidates("white grey lgrey black red green blue cyan magenta yellow lgreen lblue"); + colourChargedMinusCmd->AvailableForStates(Idle); + +} + + +//ooooooooooooooooooooooooooooooooooooooooo +DMXSteppingActionMessenger::~DMXSteppingActionMessenger() { + + delete colourNeutronCmd; + delete colourGammaCmd; + delete colourOpticalCmd; + delete colourChargedPlusCmd; + delete colourChargedMinusCmd; +} + + +//ooooooooooooooooooooooooooooooooooooooooo +void DMXSteppingActionMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { + + if(command == colourNeutronCmd) + steppingAction->SetColourNeutronFlag(newValue); + + if(command == colourGammaCmd) + steppingAction->SetColourGammaFlag(newValue); + + if(command == colourOpticalCmd) + steppingAction->SetColourOpticalFlag(newValue); + + if(command == colourChargedPlusCmd) + steppingAction->SetColourChargedPlusFlag(newValue); + + if(command == colourChargedMinusCmd) + steppingAction->SetColourChargedMinusFlag(newValue); + +} + + + diff --git a/examples/advanced/underground_physics/src/DMXVisManager.cc b/examples/advanced/underground_physics/src/DMXVisManager.cc new file mode 100644 index 0000000000..d1bf819f0f --- /dev/null +++ b/examples/advanced/underground_physics/src/DMXVisManager.cc @@ -0,0 +1,159 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// -------------------------------------------------------------- +// GEANT 4 - Underground Dark Matter Detector Advanced Example +// +// For information related to this code contact: Alex Howard +// e-mail: a.s.howard@ic.ac.uk +// -------------------------------------------------------------- +// Comments +// +// Underground Advanced +// by A. Howard and H. Araujo +// (27th November 2001) +// +// VisManager program +// -------------------------------------------------------------- + +#ifdef G4VIS_USE + +#include "DMXVisManager.hh" + +// Supported drivers... + +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN +#include "G4FukuiRenderer.hh" +#endif + +#ifdef G4VIS_USE_OPACS +#include "G4Wo.hh" +#include "G4Xo.hh" +#endif + +#ifdef G4VIS_USE_OPENGLX +#include "G4OpenGLImmediateX.hh" +#include "G4OpenGLStoredX.hh" +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 +#include "G4OpenGLImmediateWin32.hh" +#include "G4OpenGLStoredWin32.hh" +#endif + +#ifdef G4VIS_USE_OPENGLXM +#include "G4OpenGLImmediateXm.hh" +#include "G4OpenGLStoredXm.hh" +#endif + +#ifdef G4VIS_USE_OIX +#include "G4OpenInventorX.hh" +#endif + +#ifdef G4VIS_USE_OIWIN32 +#include "G4OpenInventorWin32.hh" +#endif + +#ifdef G4VIS_USE_VRML +#include "G4VRML1.hh" +#include "G4VRML2.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +DMXVisManager::DMXVisManager () {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void DMXVisManager::RegisterGraphicsSystems () { + + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN + RegisterGraphicsSystem (new G4FukuiRenderer); +#endif + +#ifdef G4VIS_USE_OPACS + RegisterGraphicsSystem (new G4Wo); + RegisterGraphicsSystem (new G4Xo); +#endif + +#ifdef G4VIS_USE_OPENGLX + RegisterGraphicsSystem (new G4OpenGLImmediateX); + RegisterGraphicsSystem (new G4OpenGLStoredX); +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 + RegisterGraphicsSystem (new G4OpenGLImmediateWin32); + RegisterGraphicsSystem (new G4OpenGLStoredWin32); +#endif + +#ifdef G4VIS_USE_OPENGLXM + RegisterGraphicsSystem (new G4OpenGLImmediateXm); + RegisterGraphicsSystem (new G4OpenGLStoredXm); +#endif + +#ifdef G4VIS_USE_OIX + RegisterGraphicsSystem (new G4OpenInventorX); +#endif + +#ifdef G4VIS_USE_OIWIN32 + RegisterGraphicsSystem (new G4OpenInventorWin32); +#endif + +#ifdef G4VIS_USE_VRML + RegisterGraphicsSystem (new G4VRML1); + RegisterGraphicsSystem (new G4VRML2); +#endif + + if (fVerbose > 0) { + G4cout << + "\nYou have successfully chosen to use the following graphics systems." + << G4endl; + PrintAvailableGraphicsSystems (); + } +} + +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/underground_physics/wired.mac b/examples/advanced/underground_physics/wired.mac new file mode 100644 index 0000000000..06579bdcc3 --- /dev/null +++ b/examples/advanced/underground_physics/wired.mac @@ -0,0 +1,3 @@ +/vis/open HepRep +/vis/drawVolume +/vis/viewer/update diff --git a/examples/advanced/xray_fluorescence/B_flare.dat b/examples/advanced/xray_fluorescence/B_flare.dat new file mode 100644 index 0000000000..c494f3fb72 --- /dev/null +++ b/examples/advanced/xray_fluorescence/B_flare.dat @@ -0,0 +1,8 @@ +1.0 5.0E6 +2.0 1.0E5 +4.0 1.0E3 +6.0 1.7E1 +8.0 2.3E0 +10.0 4.2E-1 +-1 -1 +-2 -2 \ No newline at end of file diff --git a/examples/advanced/xray_fluorescence/C_flare.dat b/examples/advanced/xray_fluorescence/C_flare.dat new file mode 100644 index 0000000000..c2779a732d --- /dev/null +++ b/examples/advanced/xray_fluorescence/C_flare.dat @@ -0,0 +1,8 @@ +1.0 1.0E7 +2.0 5.6E5 +4.0 4.2E4 +6.0 4.9E3 +8.0 4.2E2 +10.0 1.0E2 +-1 -1 +-2 -2 \ No newline at end of file diff --git a/examples/advanced/xray_fluorescence/G4History.macro b/examples/advanced/xray_fluorescence/G4History.macro new file mode 100644 index 0000000000..7c9674d204 --- /dev/null +++ b/examples/advanced/xray_fluorescence/G4History.macro @@ -0,0 +1,16 @@ +/run/verbose 2 +/vis/scene/create +/vis/open VRML1FILE +/vis/sceneHandler/create VRML1FILE +/vis/sceneHandler/attach +/vis/viewer/create ! ! 600 +/vis/drawVolume +/vis/scene/create +/vis/scene/add/volume world +/vis/sceneHandler/attach +/vis/viewer/refresh +/vis/viewer/update +/tracking/storeTrajectory 1 +/run/beamOn 10 +/vis/scene/notifyHandlers +/vis/viewer/update diff --git a/examples/advanced/xray_fluorescence/GNUmakefile b/examples/advanced/xray_fluorescence/GNUmakefile new file mode 100644 index 0000000000..19d13fe1ee --- /dev/null +++ b/examples/advanced/xray_fluorescence/GNUmakefile @@ -0,0 +1,42 @@ +# $Id: GNUmakefile,v 1.11 2001/12/10 08:52:10 gcosmo Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := XrayFluo +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +# Copy the XrayFluoAnalysisManage files according to which version +# is selected. +# As the dependency is checked before "all" is reached, we need +# to do some tricks here ... + +ifdef G4ANALYSIS_AIDA_CONFIG_CFLAGS +# AIDA (version 2.2 for now) selected + FOO := $(shell cp -p include/XrayFluoAnalysisManager.hh-AIDA include/XrayFluoAnalysisManager.hh ) + FOO := $(shell cp -p src/XrayFluoAnalysisManager.cc-AIDA src/XrayFluoAnalysisManager.cc ) +else +# Anaphe selected + include anaphe.gmk + FOO := $(shell cp -p include/XrayFluoAnalysisManager.hh-Anaphe include/XrayFluoAnalysisManager.hh ) + FOO := $(shell cp -p src/XrayFluoAnalysisManager.cc-Anaphe src/XrayFluoAnalysisManager.cc ) +endif + +# End Analysis. + +.PHONY: all visclean +all: lib bin + +include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* + diff --git a/examples/advanced/xray_fluorescence/M_flare.dat b/examples/advanced/xray_fluorescence/M_flare.dat new file mode 100644 index 0000000000..da63528b0e --- /dev/null +++ b/examples/advanced/xray_fluorescence/M_flare.dat @@ -0,0 +1,8 @@ +1.0 1.0E8 +2.0 4.2E6 +4.0 1.8E5 +6.0 2.4E4 +8.0 4.9E3 +10.0 1.8E3 +-1 -1 +-2 -2 \ No newline at end of file diff --git a/examples/advanced/xray_fluorescence/README b/examples/advanced/xray_fluorescence/README new file mode 100644 index 0000000000..0301a71488 --- /dev/null +++ b/examples/advanced/xray_fluorescence/README @@ -0,0 +1,131 @@ +$Id: README,v 1.2 2001/12/11 13:07:14 gcosmo Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + xray_fluorescence + ----------------- +XrayFluo is an advanced Geant4 example based on a realistic simulation of +a test beam. +The aim of the test beam was to characterize the response function of an +HPGe detector used to measure fluorescence emissions from samples composed +of different materials irradiated with a monochromatic beam of photons. +In this example the geometry of the detector is simplified: +one single pixel is used instead of an array of pixels. +The response function is tabulated for ten different values of incident +energy and stored in the file response.dat. +The sample, a simple box whose material can be selected, can be irradiated +with different particles, with different spectra for the incident energy and +with different shapes of the primary generator. +Apart from the sample and the detector there are two diaphragm reproducing +those used to collimate the incident beam during the test beam. + +The aim of this advanced example is to illustrate the use of particle +generation and analysis schemes available in Geant4: + +- the generation of particles is done via the G4ParticleGun: the example + shows how to use it in order to obtain a beam of circular section or + a particle source isotropic in space + +_ the example includes the possibility to shoot particles according to a + given energy spectrum: the files B_flare.dat, C_Flare.dat and M_flare.dat + store the spectra of photons during solar flares, the files + mercury2_flx_solmax.dat and mercury_flx_solmin.dat contain the spectra of + protons respectively during solar maximum and solar minimum conditions, and + merc2_flx_alp_max.dat merc_flx_alp_min.dat contain the spectra of alpha + particles again respectively during solar maximum and solar minimum + conditions. + + - histograming facilities are presently provided for the Linux environment + either by using the AIDA interfaces, or through the Anaphe/Lizard system. + The AIDA compliant version has not been tested by the developers and is + here as a example of "forward compatibility" on how to use analysis. + +In order to be able to use any of these packages, prior installation is +necessary and a number of environment variables will have to be set. + + +#set up VRMLview +setenv G4VRMLFILE_MAX_FILE_NUM 100 +setenv G4VRMLFILE_VIEWER vrmlview #if installed +setenv PATH ${PATH}:"/afs/cern.ch/sw/contrib/VRML/bin/Linux" + +#set up OpenGL or Mesa +setenv G4VIS_BUILD_OPENGLX_DRIVER 1 +setenv G4VIS_USE_OPENGLX 1 +setenv OGLHOME /afs/cern.ch/sw/geant4/dev/Mesa/Linux-g++ + +#set up DAWN +setenv G4VIS_BUILD_DAWN_DRIVER 1 +setenv G4VIS_USE_DAWN 1 +setenv PATH ${PATH}:"/afs/cern.ch/sw/geant4/dev/DAWN/Linux-g++" + +# flag that we want to use analysis: +setenv G4ANALYSIS_USE 1 + +# select analysis system: any AIDA 2.2 compliant system or Anaphe 3.6.5 + +# set up for AIDA 2.2 compliancy: +# Compilation and link flags to hook and AIDA compliant system +# are passed to the Geant4 GNUmakefile system by using the "aida-config" tool +# that should come with any AIDA compliant system. Examples are: +# setenv G4ANALYSIS_AIDA_CONFIG_CFLAGS `aida-config --include` +# setenv G4ANALYSIS_AIDA_CONFIG_LIBS `aida-config --libs` + +#set up Anaphe/Lizard for the gcc-2.95 compiler +setenv G4ANALYSIS_SYSTEM Lizard +setenv PATH ${PATH}:/afs/cern.ch/sw/lhcxx/specific/redhat61/gcc-2.95.2/3.6.5/bin +source /afs/cern.ch/sw/lhcxx/share/LHCXX/3.6.5/install/sharedstart.csh + +#path to the lowEnergy data base + +setenv G4LEDATA /afs/cern.ch/sw/geant4/stt/dev1/src/G4EMLOW0.5 + +1. Run +To execute a sample simulation with visualisation of tracks +reaching the detector run: + +XrayFluo + +execute command "/control/execute xxxxx.mac" + + +If the Lizard analysis options are set, histograming windows will +automatically stored in the corresponding files + +2. Detector description + +The telescope and detector geometry is defined in +XrayFluoDetectorConstruction.cc + +3. Physics processes + +The physics processes are in XrayFluoPhysicsList.cc +The main process in this example is fluorescence emission from the sample. + +4. Event generation + +This is done using the G4ParticleGun with some modifications. See +XrayFluoParticleGeneratorAction.cc + +5. Analysis + +At present there are two options for analysis packages: either +explicitely the Anaphe 3.6.5 (or compatible) version is selected, +or any AIDA-2.2 compliant analysis system is chosen. This dual +approach will be removed in the next release when only the AIDA +compliant version will be present. Presently, the OpenScientist +package (version 8) provides an implementation of AIDA 2.2, +other packages as Anaphe and JAS will follow soon. The AIDA +compliant version has not been tested by the developers and is +here as a example of "forward compatibility" on how to use analysis. + +To build and execute the example on platforms where there is no +implementation of the analysis system, the environment variables +must not be set. + +The example provides also two Python files used to display and fit the +histograms. + diff --git a/examples/advanced/xray_fluorescence/XrayFluo.cc b/examples/advanced/xray_fluorescence/XrayFluo.cc new file mode 100644 index 0000000000..989294db25 --- /dev/null +++ b/examples/advanced/xray_fluorescence/XrayFluo.cc @@ -0,0 +1,138 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluo.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "G4UItcsh.hh" +#ifdef G4UI_USE_XM +#include "G4UIXm.hh" +#endif +#include "Randomize.hh" +#ifdef G4VIS_USE +#include "XrayFluoVisManager.hh" +#endif +#include "XrayFluoDetectorConstruction.hh" +#include "XrayFluoPhysicsList.hh" +#include "XrayFluoPrimaryGeneratorAction.hh" +#include "XrayFluoRunAction.hh" +#include "XrayFluoEventAction.hh" +#include "XrayFluoSteppingAction.hh" +#include "XrayFluoSteppingVerbose.hh" + +int main(int argc,char** argv) { + + // choose the Random engine + HepRandom::setTheEngine(new RanecuEngine); + + //XrayFluo Verbose output class + G4VSteppingVerbose::SetInstance(new XrayFluoSteppingVerbose); + + // Construct the default run manager + G4RunManager * runManager = new G4RunManager; + + // set mandatory initialization classes + XrayFluoDetectorConstruction* detector = new XrayFluoDetectorConstruction; + runManager->SetUserInitialization(detector); + XrayFluoPhysicsList* list = new XrayFluoPhysicsList(detector); + runManager->SetUserInitialization(list); + + G4UIsession* session=0; + + if (argc==1) // Define UI session for interactive mode. + { + // G4UIterminal is a (dumb) terminal. +#ifdef G4UI_USE_XM + session = new G4UIXm(argc,argv); +#else +#ifdef G4UI_USE_TCSH + session = new G4UIterminal(new G4UItcsh); +#else + session = new G4UIterminal(); +#endif +#endif + } + +#ifdef G4VIS_USE + //visualization manager + G4VisManager* visManager = new XrayFluoVisManager; + visManager->Initialize(); +#endif + + XrayFluoEventAction* eventAction = new XrayFluoEventAction(); + XrayFluoRunAction* runAction = new XrayFluoRunAction(); + XrayFluoSteppingAction* stepAction = new XrayFluoSteppingAction(); + + runManager->SetUserAction(new XrayFluoPrimaryGeneratorAction(detector)); + + runManager->SetUserAction(eventAction); + runManager->SetUserAction(runAction); + runManager->SetUserAction(stepAction); + + //Initialize G4 kernel + runManager->Initialize(); + + // get the pointer to the User Interface manager + G4UImanager* UI = G4UImanager::GetUIpointer(); + + if (session) // Define UI session for interactive mode. + { + // G4UIterminal is a (dumb) terminal. + UI->ApplyCommand("/control/execute initInter.mac"); +#ifdef G4UI_USE_XM + // Customize the G4UIXm menubar with a macro file : + UI->ApplyCommand("/control/execute gui.mac"); +#endif + session->SessionStart(); + delete session; + } + else // Batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + // job termination + +#ifdef G4VIS_USE + delete visManager; +#endif + + delete runManager; + return 0; +} + + + + diff --git a/examples/advanced/xray_fluorescence/XrayFluo.py b/examples/advanced/xray_fluorescence/XrayFluo.py new file mode 100644 index 0000000000..f5578295a8 --- /dev/null +++ b/examples/advanced/xray_fluorescence/XrayFluo.py @@ -0,0 +1,199 @@ + +# tell HistoManger where to find the histograms: +hm.selectStore("xrayfluo.his") + +# ... and load them into memory: +histoGamDet = hm.load1D(1) +histoGamDetPre = hm.load1D(6) +histoGamLeavSam = hm.load1D(4) +histoEleLeavSam = hm.load1D(5) +histoProtRD = hm.load1D(8) +histoProtLS = hm.load1D(9) +histoGamBornSam = hm.load1D(2) +histoEleBornSam = hm.load1D(3) +histoSpectrum = hm.load1D(7) + +# set plotter to 4*2 zones +pl.zone(5,2) +# ... and plot the histograms +hplot(histoGamDet) +hplot(histoGamDetPre) +hplot(histoGamLeavSam) +hplot(histoEleLeavSam) +hplot(histoProtRD) +hplot(histoProtLS) +hplot(histoGamBornSam) +hplot(histoEleBornSam) +hplot(histoSpectrum) + +pl.psPrint("histos.ps") + +# prompt user for +wait() + +# set plotter to 1*1 zones +pl.zone(1,1) + +#titols: +pl.xAxisOption ("title","energy of the electrons generated in the sample") +pl.xAxisOption ("label","E (keV)") +pl.yAxisOption("title","counts") + +pl.textStyle("fontsize","10.") +#color of the histogram +pl.dataStyle("linecolor", "red") + +#draw a grid even on the top and on the right of the plot +#pl.zoneOption("mirrorAxis","yes") + +#legend +pl.dataOption("legend","EleBorn") + + +hplot(histoEleBornSam) + +wait() +pl.psPrint("hEleBornSam.ps") + + + +#titols: +pl.xAxisOption ("title","energy of the gammas generated in the sample") +pl.xAxisOption ("label","E (keV)") +pl.yAxisOption("title","counts") + +pl.textStyle("fontsize","10.") +#colore dell'istogramma +pl.dataStyle("linecolor", "blue") + +#draw a grid even on the top and on the right of the plot +#pl.zoneOption("mirrorAxis","yes") + +#legend +pl.dataOption("legend","GamBorn") + + +hplot(histoGamBornSam) +wait() +pl.psPrint("hGamBornSam.ps") + +#titols: +pl.xAxisOption ("title","energy deposit in the detector") +pl.xAxisOption ("label","E (keV)") +pl.yAxisOption("title","counts") + +pl.textStyle("fontsize","10.") +#colore dell'istogramma +pl.dataStyle("linecolor", "green") + + + +pl.dataOption("legend","EnergyDep") + + +hplot(histoGamDet) +wait() +pl.psPrint("histoGamDet.ps") + + +pl.xAxisOption ("title","spectrum of the incident photons") +pl.xAxisOption ("label","E (keV)") +pl.yAxisOption("title","counts") + +pl.textStyle("fontsize","10.") + +pl.dataStyle("linecolor", "yellow") + +#pl.zoneOption("mirrorAxis","yes") + +pl.dataOption("legend","B-Flare") + + +hplot(histoSpectrum) +wait() +pl.psPrint("hSpectrum.ps") + + +pl.xAxisOption ("title","spectrum of the photons at the detector") +pl.xAxisOption ("label","E (keV)") +pl.yAxisOption("title","counts") + +pl.textStyle("fontsize","10.") + +pl.dataStyle("linecolor", "blue") + +#pl.zoneOption("mirrorAxis","yes") + +pl.dataOption("legend","photonsDet") + + +hplot(histoGamDetPre) +wait() +pl.psPrint("hGamDetPre.ps") + +pl.xAxisOption ("title","spectrum of the electrons leaving the sample") +pl.xAxisOption ("label","E (keV)") +pl.yAxisOption("title","counts") + +pl.textStyle("fontsize","10.") + +pl.dataStyle("linecolor", "red") + +#pl.zoneOption("mirrorAxis","yes") + +pl.dataOption("legend","electronsLeav") + +hplot(histoEleLeavSam) +wait() +pl.psPrint("hEleLeav.ps") + +pl.xAxisOption ("title","spectrum of the photons leaving the sample") +pl.xAxisOption ("label","E (keV)") +pl.yAxisOption("title","counts") + +pl.textStyle("fontsize","10.") +#colore dell'istogramma +pl.dataStyle("linecolor", "red") + +#disegna il reticolo anche sopra e a destra +#pl.zoneOption("mirrorAxis","yes") + +pl.dataOption("legend","photonsLeav") + +hplot(histoGamLeavSam) +wait() +pl.psPrint("hGamLeav.ps") + +pl.xAxisOption ("title","history of photons") +pl.xAxisOption ("label","E (keV)") +pl.yAxisOption("title","counts") + +pl.dataStyle("linecolor", "yellow") + +pl.dataOption("legend","photonsBorn") + +hplot(histoGamBornSam) + +pl.dataStyle("linecolor", "red") + +pl.dataOption("legend","photonsLeav") + +v1=vm.from1D(histoGamLeavSam) + +pl.overlay(v1) + +pl.dataStyle("linecolor", "blue") + +pl.dataOption("legend","photonsDet") + +v2=vm.from1D(histoGamDetPre) + +pl.overlay(v2) + +wait() +pl.psPrint("history.ps") + + + + + diff --git a/examples/advanced/xray_fluorescence/anaphe.gmk b/examples/advanced/xray_fluorescence/anaphe.gmk new file mode 100644 index 0000000000..73c3da74a9 --- /dev/null +++ b/examples/advanced/xray_fluorescence/anaphe.gmk @@ -0,0 +1,17 @@ + +# Some pieces to include if Anaphe is selected as analysis environment +# be aware that this will be obsolete as soon as Anaphe is implementing +# the AIDA 2.2 interfaces. + +CPPFLAGS += -I$(LHCXX_REL_DIR)/include +LDFLAGS += -L$(LHCXX_REL_DIR)/lib +#LOADLIBS += -L$(LHCXX_REL_DIR)/lib +# general stuff: +LOADLIBS += -lHepUtilities -lAIDA_Annotation +# add for Histograms: +LOADLIBS += -lAIDA_HBook +# add for Ntuples: +LOADLIBS += -lAIDA_Ntuple -lNtupleTag -lNtupleTag_HBook +# ... and finally system stuff and to deal with the "Fortran legacy": +LOADLIBS += -lCHBook -ldl -lg2c + diff --git a/examples/advanced/xray_fluorescence/efficienza.dat b/examples/advanced/xray_fluorescence/efficienza.dat new file mode 100644 index 0000000000..23fd85bc86 --- /dev/null +++ b/examples/advanced/xray_fluorescence/efficienza.dat @@ -0,0 +1,1571 @@ + 3.00445 0.757371 + 3.00923 0.757649 + 3.01402 0.757927 + 3.01880 0.758204 + 3.02358 0.758482 + 3.02837 0.758759 + 3.03315 0.759036 + 3.03794 0.759313 + 3.04272 0.759589 + 3.04750 0.759866 + 3.05229 0.760141 + 3.05707 0.760417 + 3.06186 0.760692 + 3.06664 0.760966 + 3.07142 0.761241 + 3.07621 0.761515 + 3.08099 0.761789 + 3.08578 0.762063 + 3.09056 0.762336 + 3.09534 0.762609 + 3.10013 0.762882 + 3.10491 0.763155 + 3.10970 0.763428 + 3.11448 0.763700 + 3.11926 0.763973 + 3.12405 0.764245 + 3.12883 0.764517 + 3.13362 0.764789 + 3.13840 0.765060 + 3.14318 0.765331 + 3.14797 0.765602 + 3.15275 0.765873 + 3.15754 0.766144 + 3.16232 0.766415 + 3.16710 0.766685 + 3.17189 0.766956 + 3.17667 0.767226 + 3.18146 0.767496 + 3.18624 0.767766 + 3.19102 0.768036 + 3.19581 0.768306 + 3.20059 0.768576 + 3.20538 0.768846 + 3.21016 0.769115 + 3.21494 0.769385 + 3.21973 0.769654 + 3.22451 0.769924 + 3.22930 0.770193 + 3.23408 0.770463 + 3.23886 0.770732 + 3.24365 0.771001 + 3.24843 0.771270 + 3.25322 0.771538 + 3.25800 0.771807 + 3.26278 0.772076 + 3.26757 0.772345 + 3.27235 0.772613 + 3.27714 0.772882 + 3.28192 0.773151 + 3.28670 0.773420 + 3.29149 0.773689 + 3.29627 0.773957 + 3.30106 0.774226 + 3.30584 0.774495 + 3.31062 0.774763 + 3.31541 0.775032 + 3.32019 0.775300 + 3.32498 0.775569 + 3.32976 0.775837 + 3.33454 0.776106 + 3.33933 0.776374 + 3.34411 0.776643 + 3.34890 0.776911 + 3.35368 0.777179 + 3.35846 0.777448 + 3.36325 0.777716 + 3.36803 0.777985 + 3.37282 0.778254 + 3.37760 0.778523 + 3.38238 0.778791 + 3.38717 0.779060 + 3.39195 0.779329 + 3.39674 0.779598 + 3.40152 0.779867 + 3.40630 0.780135 + 3.41109 0.780404 + 3.41587 0.780673 + 3.42066 0.780942 + 3.42544 0.781211 + 3.43022 0.781480 + 3.43501 0.781748 + 3.43979 0.782017 + 3.44458 0.782286 + 3.44936 0.782555 + 3.45414 0.782824 + 3.45893 0.783094 + 3.46371 0.783363 + 3.46850 0.783632 + 3.47328 0.783902 + 3.47806 0.784171 + 3.48285 0.784441 + 3.48763 0.784710 + 3.49242 0.784980 + 3.49720 0.785249 + 3.50198 0.785519 + 3.50677 0.785788 + 3.51155 0.786058 + 3.51634 0.786327 + 3.52112 0.786597 + 3.52590 0.786867 + 3.53069 0.787136 + 3.53547 0.787406 + 3.54026 0.787676 + 3.54504 0.787945 + 3.54982 0.788215 + 3.55461 0.788485 + 3.55939 0.788755 + 3.56418 0.789025 + 3.56896 0.789295 + 3.57374 0.789565 + 3.57853 0.789835 + 3.58331 0.790106 + 3.58810 0.790376 + 3.59288 0.790646 + 3.59766 0.790916 + 3.60245 0.791186 + 3.60723 0.791456 + 3.61202 0.791726 + 3.61680 0.791997 + 3.62158 0.792267 + 3.62637 0.792537 + 3.63115 0.792808 + 3.63594 0.793078 + 3.64072 0.793348 + 3.64550 0.793619 + 3.65029 0.793890 + 3.65507 0.794161 + 3.65986 0.794432 + 3.66464 0.794703 + 3.66942 0.794974 + 3.67421 0.795245 + 3.67899 0.795516 + 3.68378 0.795787 + 3.68856 0.796058 + 3.69334 0.796329 + 3.69813 0.796600 + 3.70291 0.796871 + 3.70770 0.797142 + 3.71248 0.797413 + 3.71726 0.797684 + 3.72205 0.797955 + 3.72683 0.798226 + 3.73162 0.798497 + 3.73640 0.798768 + 3.74118 0.799040 + 3.74597 0.799311 + 3.75075 0.799582 + 3.75554 0.799853 + 3.76032 0.800124 + 3.76510 0.800395 + 3.76989 0.800666 + 3.77467 0.800937 + 3.77946 0.801208 + 3.78424 0.801479 + 3.78902 0.801750 + 3.79381 0.802021 + 3.79859 0.802292 + 3.80338 0.802563 + 3.80816 0.802834 + 3.81294 0.803105 + 3.81773 0.803375 + 3.82251 0.803646 + 3.82730 0.803917 + 3.83208 0.804188 + 3.83686 0.804458 + 3.84165 0.804729 + 3.84643 0.805000 + 3.85122 0.805271 + 3.85600 0.805542 + 3.86078 0.805813 + 3.86557 0.806084 + 3.87035 0.806355 + 3.87514 0.806626 + 3.87992 0.806897 + 3.88470 0.807168 + 3.88949 0.807439 + 3.89427 0.807709 + 3.89906 0.807980 + 3.90384 0.808250 + 3.90862 0.808521 + 3.91341 0.808792 + 3.91819 0.809062 + 3.92298 0.809332 + 3.92776 0.809602 + 3.93254 0.809872 + 3.93733 0.810143 + 3.94211 0.810413 + 3.94690 0.810683 + 3.95168 0.810953 + 3.95646 0.811223 + 3.96125 0.811493 + 3.96603 0.811763 + 3.97082 0.812032 + 3.97560 0.812302 + 3.98038 0.812572 + 3.98517 0.812841 + 3.98995 0.813111 + 3.99474 0.813380 + 3.99952 0.813649 + 4.00430 0.813918 + 4.00909 0.814187 + 4.01387 0.814456 + 4.01866 0.814725 + 4.02344 0.814994 + 4.02822 0.815262 + 4.03301 0.815531 + 4.03779 0.815799 + 4.04258 0.816068 + 4.04736 0.816336 + 4.05214 0.816604 + 4.05693 0.816872 + 4.06171 0.817141 + 4.06650 0.817409 + 4.07128 0.817677 + 4.07606 0.817945 + 4.08085 0.818213 + 4.08563 0.818481 + 4.09042 0.818749 + 4.09520 0.819016 + 4.09998 0.819284 + 4.10477 0.819551 + 4.10955 0.819818 + 4.11434 0.820085 + 4.11912 0.820352 + 4.12390 0.820619 + 4.12869 0.820886 + 4.13347 0.821152 + 4.13826 0.821418 + 4.14304 0.821685 + 4.14782 0.821951 + 4.15261 0.822216 + 4.15739 0.822482 + 4.16218 0.822748 + 4.16696 0.823013 + 4.17174 0.823279 + 4.17653 0.823544 + 4.18131 0.823809 + 4.18610 0.824074 + 4.19088 0.824338 + 4.19566 0.824603 + 4.20045 0.824867 + 4.20523 0.825131 + 4.21002 0.825395 + 4.21480 0.825659 + 4.21958 0.825923 + 4.22437 0.826186 + 4.22915 0.826450 + 4.23394 0.826713 + 4.23872 0.826976 + 4.24350 0.827239 + 4.24829 0.827501 + 4.25307 0.827764 + 4.25786 0.828026 + 4.26264 0.828288 + 4.26742 0.828550 + 4.27221 0.828812 + 4.27699 0.829073 + 4.28178 0.829335 + 4.28656 0.829597 + 4.29134 0.829858 + 4.29613 0.830119 + 4.30091 0.830380 + 4.30570 0.830641 + 4.31048 0.830901 + 4.31526 0.831162 + 4.32005 0.831422 + 4.32483 0.831682 + 4.32962 0.831941 + 4.33440 0.832201 + 4.33918 0.832460 + 4.34397 0.832720 + 4.34875 0.832978 + 4.35354 0.833237 + 4.35832 0.833496 + 4.36310 0.833754 + 4.36789 0.834012 + 4.37267 0.834270 + 4.37746 0.834527 + 4.38224 0.834785 + 4.38702 0.835042 + 4.39181 0.835299 + 4.39659 0.835556 + 4.40138 0.835813 + 4.40616 0.836070 + 4.41094 0.836326 + 4.41573 0.836582 + 4.42051 0.836838 + 4.42530 0.837094 + 4.43008 0.837349 + 4.43486 0.837605 + 4.43965 0.837860 + 4.44443 0.838114 + 4.44922 0.838369 + 4.45400 0.838623 + 4.45878 0.838877 + 4.46357 0.839131 + 4.46835 0.839385 + 4.47314 0.839638 + 4.47792 0.839891 + 4.48270 0.840144 + 4.48749 0.840397 + 4.49227 0.840649 + 4.49706 0.840901 + 4.50184 0.841153 + 4.50662 0.841404 + 4.51141 0.841656 + 4.51619 0.841907 + 4.52098 0.842158 + 4.52576 0.842409 + 4.53054 0.842660 + 4.53533 0.842910 + 4.54011 0.843160 + 4.54490 0.843410 + 4.54968 0.843660 + 4.55446 0.843909 + 4.55925 0.844158 + 4.56403 0.844407 + 4.56882 0.844655 + 4.57360 0.844903 + 4.57838 0.845151 + 4.58317 0.845399 + 4.58795 0.845646 + 4.59274 0.845894 + 4.59752 0.846141 + 4.60230 0.846387 + 4.60709 0.846633 + 4.61187 0.846879 + 4.61666 0.847125 + 4.62144 0.847371 + 4.62622 0.847616 + 4.63101 0.847861 + 4.63579 0.848106 + 4.64058 0.848351 + 4.64536 0.848595 + 4.65014 0.848839 + 4.65493 0.849083 + 4.65971 0.849327 + 4.66450 0.849570 + 4.66928 0.849813 + 4.67406 0.850056 + 4.67885 0.850299 + 4.68363 0.850541 + 4.68842 0.850783 + 4.69320 0.851025 + 4.69798 0.851266 + 4.70277 0.851507 + 4.70755 0.851748 + 4.71234 0.851988 + 4.71712 0.852229 + 4.72190 0.852468 + 4.72669 0.852708 + 4.73147 0.852947 + 4.73626 0.853186 + 4.74104 0.853425 + 4.74582 0.853663 + 4.75061 0.853902 + 4.75539 0.854139 + 4.76018 0.854377 + 4.76496 0.854615 + 4.76974 0.854852 + 4.77453 0.855090 + 4.77931 0.855326 + 4.78410 0.855563 + 4.78888 0.855799 + 4.79366 0.856035 + 4.79845 0.856271 + 4.80323 0.856506 + 4.80802 0.856741 + 4.81280 0.856976 + 4.81758 0.857210 + 4.82237 0.857444 + 4.82715 0.857678 + 4.83194 0.857912 + 4.83672 0.858145 + 4.84150 0.858378 + 4.84629 0.858610 + 4.85107 0.858842 + 4.85586 0.859074 + 4.86064 0.859306 + 4.86542 0.859537 + 4.87021 0.859769 + 4.87499 0.859999 + 4.87978 0.860230 + 4.88456 0.860459 + 4.88934 0.860689 + 4.89413 0.860919 + 4.89891 0.861148 + 4.90370 0.861377 + 4.90848 0.861605 + 4.91326 0.861834 + 4.91805 0.862061 + 4.92283 0.862289 + 4.92762 0.862516 + 4.93240 0.862743 + 4.93718 0.862970 + 4.94197 0.863196 + 4.94675 0.863422 + 4.95154 0.863648 + 4.95632 0.863873 + 4.96110 0.864098 + 4.96589 0.864323 + 4.97067 0.864547 + 4.97546 0.864771 + 4.98024 0.864995 + 4.98502 0.865218 + 4.98981 0.865442 + 4.99459 0.865664 + 4.99938 0.865887 + 5.00416 0.866109 + 5.00894 0.866331 + 5.01373 0.866552 + 5.01851 0.866773 + 5.02330 0.866995 + 5.02808 0.867216 + 5.03286 0.867437 + 5.03765 0.867657 + 5.04243 0.867878 + 5.04722 0.868098 + 5.05200 0.868317 + 5.05678 0.868536 + 5.06157 0.868755 + 5.06635 0.868974 + 5.07114 0.869192 + 5.07592 0.869410 + 5.08070 0.869627 + 5.08549 0.869845 + 5.09027 0.870062 + 5.09506 0.870278 + 5.09984 0.870495 + 5.10462 0.870710 + 5.10941 0.870926 + 5.11419 0.871141 + 5.11898 0.871356 + 5.12376 0.871571 + 5.12854 0.871785 + 5.13333 0.871999 + 5.13811 0.872213 + 5.14290 0.872426 + 5.14768 0.872639 + 5.15246 0.872852 + 5.15725 0.873064 + 5.16203 0.873276 + 5.16682 0.873488 + 5.17160 0.873700 + 5.17638 0.873911 + 5.18117 0.874121 + 5.18595 0.874332 + 5.19074 0.874542 + 5.19552 0.874752 + 5.20030 0.874961 + 5.20509 0.875170 + 5.20987 0.875379 + 5.21466 0.875588 + 5.21944 0.875796 + 5.22422 0.876004 + 5.22901 0.876211 + 5.23379 0.876418 + 5.23858 0.876625 + 5.24336 0.876832 + 5.24814 0.877038 + 5.25293 0.877244 + 5.25771 0.877449 + 5.26250 0.877654 + 5.26728 0.877859 + 5.27206 0.878064 + 5.27685 0.878268 + 5.28163 0.878472 + 5.28642 0.878675 + 5.29120 0.878878 + 5.29598 0.879082 + 5.30077 0.879285 + 5.30555 0.879487 + 5.31034 0.879690 + 5.31512 0.879892 + 5.31990 0.880094 + 5.32469 0.880295 + 5.32947 0.880496 + 5.33426 0.880697 + 5.33904 0.880897 + 5.34382 0.881097 + 5.34861 0.881297 + 5.35339 0.881497 + 5.35818 0.881696 + 5.36296 0.881895 + 5.36774 0.882093 + 5.37253 0.882291 + 5.37731 0.882489 + 5.38210 0.882687 + 5.38688 0.882883 + 5.39166 0.883080 + 5.39645 0.883277 + 5.40123 0.883473 + 5.40602 0.883669 + 5.41080 0.883864 + 5.41558 0.884059 + 5.42037 0.884254 + 5.42515 0.884449 + 5.42994 0.884643 + 5.43472 0.884837 + 5.43950 0.885031 + 5.44429 0.885224 + 5.44907 0.885418 + 5.45386 0.885611 + 5.45864 0.885803 + 5.46342 0.885996 + 5.46821 0.886188 + 5.47299 0.886379 + 5.47778 0.886571 + 5.48256 0.886762 + 5.48734 0.886952 + 5.49213 0.887143 + 5.49691 0.887333 + 5.50170 0.887522 + 5.50648 0.887712 + 5.51126 0.887901 + 5.51605 0.888089 + 5.52083 0.888278 + 5.52562 0.888466 + 5.53040 0.888654 + 5.53518 0.888841 + 5.53997 0.889028 + 5.54475 0.889215 + 5.54954 0.889402 + 5.55432 0.889588 + 5.55910 0.889774 + 5.56389 0.889959 + 5.56867 0.890144 + 5.57346 0.890329 + 5.57824 0.890514 + 5.58302 0.890698 + 5.58781 0.890882 + 5.59259 0.891066 + 5.59738 0.891249 + 5.60216 0.891432 + 5.60694 0.891615 + 5.61173 0.891797 + 5.61651 0.891979 + 5.62130 0.892161 + 5.62608 0.892342 + 5.63086 0.892523 + 5.63565 0.892704 + 5.64043 0.892884 + 5.64522 0.893065 + 5.65000 0.893244 + 5.65478 0.893424 + 5.65957 0.893603 + 5.66435 0.893782 + 5.66914 0.893960 + 5.67392 0.894138 + 5.67870 0.894316 + 5.68349 0.894494 + 5.68827 0.894671 + 5.69306 0.894848 + 5.69784 0.895025 + 5.70262 0.895201 + 5.70741 0.895377 + 5.71219 0.895553 + 5.71698 0.895728 + 5.72176 0.895903 + 5.72654 0.896078 + 5.73133 0.896252 + 5.73611 0.896427 + 5.74090 0.896601 + 5.74568 0.896775 + 5.75046 0.896949 + 5.75525 0.897122 + 5.76003 0.897295 + 5.76482 0.897468 + 5.76960 0.897640 + 5.77438 0.897812 + 5.77917 0.897984 + 5.78395 0.898156 + 5.78874 0.898327 + 5.79352 0.898498 + 5.79830 0.898668 + 5.80309 0.898838 + 5.80787 0.899008 + 5.81266 0.899178 + 5.81744 0.899347 + 5.82222 0.899516 + 5.82701 0.899685 + 5.83179 0.899853 + 5.83658 0.900021 + 5.84136 0.900189 + 5.84614 0.900357 + 5.85093 0.900524 + 5.85571 0.900691 + 5.86050 0.900857 + 5.86528 0.901024 + 5.87006 0.901189 + 5.87485 0.901355 + 5.87963 0.901520 + 5.88442 0.901685 + 5.88920 0.901850 + 5.89398 0.902015 + 5.89877 0.902179 + 5.90355 0.902344 + 5.90834 0.902508 + 5.91312 0.902671 + 5.91790 0.902835 + 5.92269 0.902998 + 5.92747 0.903160 + 5.93226 0.903323 + 5.93704 0.903485 + 5.94182 0.903647 + 5.94661 0.903808 + 5.95139 0.903970 + 5.95618 0.904131 + 5.96096 0.904291 + 5.96574 0.904452 + 5.97053 0.904612 + 5.97531 0.904771 + 5.98010 0.904931 + 5.98488 0.905090 + 5.98966 0.905249 + 5.99445 0.905408 + 5.99923 0.905566 + 6.00402 0.905724 + 6.00880 0.905881 + 6.01358 0.906039 + 6.01837 0.906196 + 6.02315 0.906353 + 6.02794 0.906509 + 6.03272 0.906665 + 6.03750 0.906821 + 6.04229 0.906977 + 6.04707 0.907133 + 6.05186 0.907288 + 6.05664 0.907443 + 6.06142 0.907598 + 6.06621 0.907752 + 6.07099 0.907907 + 6.07578 0.908061 + 6.08056 0.908214 + 6.08534 0.908368 + 6.09013 0.908521 + 6.09491 0.908674 + 6.09970 0.908826 + 6.10448 0.908979 + 6.10926 0.909131 + 6.11405 0.909282 + 6.11883 0.909434 + 6.12362 0.909585 + 6.12840 0.909736 + 6.13318 0.909886 + 6.13797 0.910036 + 6.14275 0.910186 + 6.14754 0.910336 + 6.15232 0.910486 + 6.15710 0.910635 + 6.16189 0.910783 + 6.16667 0.910932 + 6.17146 0.911080 + 6.17624 0.911229 + 6.18102 0.911376 + 6.18581 0.911524 + 6.19059 0.911671 + 6.19538 0.911818 + 6.20016 0.911964 + 6.20494 0.912111 + 6.20973 0.912257 + 6.21451 0.912403 + 6.21930 0.912549 + 6.22408 0.912694 + 6.22886 0.912840 + 6.23365 0.912985 + 6.23843 0.913130 + 6.24322 0.913274 + 6.24800 0.913418 + 6.25278 0.913562 + 6.25757 0.913706 + 6.26235 0.913850 + 6.26714 0.913993 + 6.27192 0.914136 + 6.27670 0.914278 + 6.28149 0.914421 + 6.28627 0.914563 + 6.29106 0.914705 + 6.29584 0.914846 + 6.30062 0.914987 + 6.30541 0.915128 + 6.31019 0.915269 + 6.31498 0.915409 + 6.31976 0.915550 + 6.32454 0.915690 + 6.32933 0.915829 + 6.33411 0.915969 + 6.33890 0.916108 + 6.34368 0.916247 + 6.34846 0.916385 + 6.35325 0.916523 + 6.35803 0.916661 + 6.36282 0.916799 + 6.36760 0.916937 + 6.37238 0.917074 + 6.37717 0.917211 + 6.38195 0.917348 + 6.38674 0.917485 + 6.39152 0.917621 + 6.39630 0.917758 + 6.40109 0.917894 + 6.40587 0.918030 + 6.41066 0.918165 + 6.41544 0.918300 + 6.42022 0.918435 + 6.42501 0.918570 + 6.42979 0.918705 + 6.43458 0.918839 + 6.43936 0.918973 + 6.44414 0.919106 + 6.44893 0.919240 + 6.45371 0.919373 + 6.45850 0.919506 + 6.46328 0.919639 + 6.46806 0.919771 + 6.47285 0.919903 + 6.47763 0.920035 + 6.48242 0.920167 + 6.48720 0.920298 + 6.49198 0.920429 + 6.49677 0.920560 + 6.50155 0.920691 + 6.50634 0.920821 + 6.51112 0.920952 + 6.51590 0.921082 + 6.52069 0.921211 + 6.52547 0.921341 + 6.53026 0.921470 + 6.53504 0.921599 + 6.53982 0.921727 + 6.54461 0.921856 + 6.54939 0.921984 + 6.55418 0.922112 + 6.55896 0.922240 + 6.56374 0.922368 + 6.56853 0.922495 + 6.57331 0.922623 + 6.57810 0.922750 + 6.58288 0.922876 + 6.58766 0.923003 + 6.59245 0.923129 + 6.59723 0.923256 + 6.60202 0.923381 + 6.60680 0.923507 + 6.61158 0.923632 + 6.61637 0.923757 + 6.62115 0.923882 + 6.62594 0.924007 + 6.63072 0.924131 + 6.63550 0.924255 + 6.64029 0.924379 + 6.64507 0.924503 + 6.64986 0.924626 + 6.65464 0.924750 + 6.65942 0.924872 + 6.66421 0.924995 + 6.66899 0.925118 + 6.67378 0.925240 + 6.67856 0.925362 + 6.68334 0.925484 + 6.68813 0.925605 + 6.69291 0.925726 + 6.69770 0.925847 + 6.70248 0.925968 + 6.70726 0.926089 + 6.71205 0.926209 + 6.71683 0.926329 + 6.72162 0.926449 + 6.72640 0.926569 + 6.73118 0.926688 + 6.73597 0.926808 + 6.74075 0.926927 + 6.74554 0.927047 + 6.75032 0.927165 + 6.75510 0.927284 + 6.75989 0.927403 + 6.76467 0.927521 + 6.76946 0.927639 + 6.77424 0.927757 + 6.77902 0.927874 + 6.78381 0.927992 + 6.78859 0.928109 + 6.79338 0.928226 + 6.79816 0.928342 + 6.80294 0.928459 + 6.80773 0.928575 + 6.81251 0.928691 + 6.81730 0.928806 + 6.82208 0.928922 + 6.82686 0.929037 + 6.83165 0.929152 + 6.83643 0.929267 + 6.84122 0.929382 + 6.84600 0.929496 + 6.85078 0.929610 + 6.85557 0.929724 + 6.86035 0.929838 + 6.86514 0.929952 + 6.86992 0.930065 + 6.87470 0.930178 + 6.87949 0.930291 + 6.88427 0.930403 + 6.88906 0.930516 + 6.89384 0.930628 + 6.89862 0.930740 + 6.90341 0.930852 + 6.90819 0.930963 + 6.91298 0.931075 + 6.91776 0.931186 + 6.92254 0.931297 + 6.92733 0.931408 + 6.93211 0.931519 + 6.93690 0.931630 + 6.94168 0.931740 + 6.94646 0.931850 + 6.95125 0.931960 + 6.95603 0.932070 + 6.96082 0.932179 + 6.96560 0.932288 + 6.97038 0.932398 + 6.97517 0.932507 + 6.97995 0.932615 + 6.98474 0.932724 + 6.98952 0.932832 + 6.99430 0.932940 + 6.99909 0.933048 + 7.00387 0.933155 + 7.00866 0.933263 + 7.01344 0.933370 + 7.01822 0.933477 + 7.02301 0.933584 + 7.02779 0.933690 + 7.03258 0.933797 + 7.03736 0.933903 + 7.04214 0.934009 + 7.04693 0.934114 + 7.05171 0.934220 + 7.05650 0.934325 + 7.06128 0.934430 + 7.06606 0.934535 + 7.07085 0.934640 + 7.07563 0.934745 + 7.08042 0.934849 + 7.08520 0.934953 + 7.08998 0.935057 + 7.09477 0.935161 + 7.09955 0.935264 + 7.10434 0.935368 + 7.10912 0.935471 + 7.11390 0.935574 + 7.11869 0.935678 + 7.12347 0.935781 + 7.12826 0.935883 + 7.13304 0.935986 + 7.13782 0.936088 + 7.14261 0.936191 + 7.14739 0.936292 + 7.15218 0.936394 + 7.15696 0.936496 + 7.16174 0.936597 + 7.16653 0.936698 + 7.17131 0.936799 + 7.17610 0.936900 + 7.18088 0.937000 + 7.18566 0.937101 + 7.19045 0.937201 + 7.19523 0.937301 + 7.20002 0.937401 + 7.20480 0.937500 + 7.20958 0.937600 + 7.21437 0.937699 + 7.21915 0.937798 + 7.22394 0.937897 + 7.22872 0.937995 + 7.23350 0.938094 + 7.23829 0.938192 + 7.24307 0.938290 + 7.24786 0.938388 + 7.25264 0.938486 + 7.25742 0.938583 + 7.26221 0.938680 + 7.26699 0.938777 + 7.27178 0.938874 + 7.27656 0.938971 + 7.28134 0.939068 + 7.28613 0.939164 + 7.29091 0.939260 + 7.29570 0.939356 + 7.30048 0.939452 + 7.30526 0.939548 + 7.31005 0.939644 + 7.31483 0.939740 + 7.31962 0.939835 + 7.32440 0.939930 + 7.32918 0.940025 + 7.33397 0.940120 + 7.33875 0.940215 + 7.34354 0.940309 + 7.34832 0.940404 + 7.35310 0.940498 + 7.35789 0.940592 + 7.36267 0.940686 + 7.36746 0.940779 + 7.37224 0.940872 + 7.37702 0.940966 + 7.38181 0.941058 + 7.38659 0.941151 + 7.39138 0.941244 + 7.39616 0.941337 + 7.40094 0.941429 + 7.40573 0.941521 + 7.41051 0.941613 + 7.41530 0.941705 + 7.42008 0.941796 + 7.42486 0.941888 + 7.42965 0.941979 + 7.43443 0.942070 + 7.43922 0.942161 + 7.44400 0.942252 + 7.44878 0.942342 + 7.45357 0.942432 + 7.45835 0.942522 + 7.46314 0.942613 + 7.46792 0.942702 + 7.47270 0.942792 + 7.47749 0.942881 + 7.48227 0.942971 + 7.48706 0.943060 + 7.49184 0.943149 + 7.49662 0.943238 + 7.50141 0.943327 + 7.50619 0.943416 + 7.51098 0.943505 + 7.51576 0.943593 + 7.52054 0.943681 + 7.52533 0.943770 + 7.53011 0.943857 + 7.53490 0.943945 + 7.53968 0.944033 + 7.54446 0.944120 + 7.54925 0.944207 + 7.55403 0.944295 + 7.55882 0.944382 + 7.56360 0.944468 + 7.56838 0.944555 + 7.57317 0.944641 + 7.57795 0.944728 + 7.58274 0.944814 + 7.58752 0.944900 + 7.59230 0.944985 + 7.59709 0.945071 + 7.60187 0.945156 + 7.60666 0.945242 + 7.61144 0.945327 + 7.61622 0.945412 + 7.62101 0.945496 + 7.62579 0.945581 + 7.63058 0.945665 + 7.63536 0.945750 + 7.64014 0.945834 + 7.64493 0.945918 + 7.64971 0.946002 + 7.65450 0.946085 + 7.65928 0.946169 + 7.66406 0.946252 + 7.66885 0.946335 + 7.67363 0.946418 + 7.67842 0.946501 + 7.68320 0.946584 + 7.68798 0.946666 + 7.69277 0.946749 + 7.69755 0.946831 + 7.70234 0.946914 + 7.70712 0.946996 + 7.71190 0.947078 + 7.71669 0.947160 + 7.72147 0.947242 + 7.72626 0.947324 + 7.73104 0.947405 + 7.73582 0.947486 + 7.74061 0.947568 + 7.74539 0.947648 + 7.75018 0.947729 + 7.75496 0.947810 + 7.75974 0.947891 + 7.76453 0.947971 + 7.76931 0.948051 + 7.77410 0.948132 + 7.77888 0.948211 + 7.78366 0.948291 + 7.78845 0.948371 + 7.79323 0.948450 + 7.79802 0.948530 + 7.80280 0.948609 + 7.80758 0.948688 + 7.81237 0.948767 + 7.81715 0.948846 + 7.82194 0.948924 + 7.82672 0.949002 + 7.83150 0.949081 + 7.83629 0.949159 + 7.84107 0.949237 + 7.84586 0.949314 + 7.85064 0.949392 + 7.85542 0.949470 + 7.86021 0.949547 + 7.86499 0.949624 + 7.86978 0.949701 + 7.87456 0.949778 + 7.87934 0.949855 + 7.88413 0.949932 + 7.88891 0.950008 + 7.89370 0.950085 + 7.89848 0.950161 + 7.90326 0.950237 + 7.90805 0.950313 + 7.91283 0.950390 + 7.91762 0.950466 + 7.92240 0.950541 + 7.92718 0.950617 + 7.93197 0.950693 + 7.93675 0.950768 + 7.94154 0.950843 + 7.94632 0.950918 + 7.95110 0.950993 + 7.95589 0.951068 + 7.96067 0.951143 + 7.96546 0.951217 + 7.97024 0.951292 + 7.97502 0.951366 + 7.97981 0.951440 + 7.98459 0.951514 + 7.98938 0.951588 + 7.99416 0.951662 + 7.99894 0.951735 + 8.00373 0.951809 + 8.00851 0.951882 + 8.01330 0.951955 + 8.01808 0.952028 + 8.02286 0.952101 + 8.02765 0.952174 + 8.03243 0.952246 + 8.03722 0.952319 + 8.04200 0.952391 + 8.04678 0.952463 + 8.05157 0.952535 + 8.05635 0.952607 + 8.06114 0.952679 + 8.06592 0.952750 + 8.07070 0.952822 + 8.07549 0.952893 + 8.08027 0.952964 + 8.08506 0.953036 + 8.08984 0.953106 + 8.09462 0.953177 + 8.09941 0.953248 + 8.10419 0.953318 + 8.10898 0.953389 + 8.11376 0.953459 + 8.11854 0.953530 + 8.12333 0.953600 + 8.12811 0.953670 + 8.13290 0.953740 + 8.13768 0.953810 + 8.14246 0.953880 + 8.14725 0.953949 + 8.15203 0.954019 + 8.15682 0.954088 + 8.16160 0.954157 + 8.16638 0.954226 + 8.17117 0.954295 + 8.17595 0.954364 + 8.18074 0.954433 + 8.18552 0.954502 + 8.19030 0.954570 + 8.19509 0.954638 + 8.19987 0.954706 + 8.20466 0.954774 + 8.20944 0.954842 + 8.21422 0.954910 + 8.21901 0.954978 + 8.22379 0.955045 + 8.22858 0.955113 + 8.23336 0.955180 + 8.23814 0.955247 + 8.24293 0.955314 + 8.24771 0.955381 + 8.25250 0.955448 + 8.25728 0.955515 + 8.26206 0.955581 + 8.26685 0.955647 + 8.27163 0.955714 + 8.27642 0.955780 + 8.28120 0.955846 + 8.28598 0.955912 + 8.29077 0.955978 + 8.29555 0.956043 + 8.30034 0.956109 + 8.30512 0.956174 + 8.30990 0.956240 + 8.31469 0.956305 + 8.31947 0.956370 + 8.32426 0.956435 + 8.32904 0.956499 + 8.33382 0.848667 + 8.33861 0.831932 + 8.34339 0.832019 + 8.34818 0.832106 + 8.35296 0.832193 + 8.35774 0.832280 + 8.36253 0.832367 + 8.36731 0.832454 + 8.37210 0.832541 + 8.37688 0.832628 + 8.38166 0.832715 + 8.38645 0.832803 + 8.39123 0.832890 + 8.39602 0.832977 + 8.40080 0.833064 + 8.40558 0.833152 + 8.41037 0.833239 + 8.41515 0.833326 + 8.41994 0.833414 + 8.42472 0.833501 + 8.42950 0.833588 + 8.43429 0.833676 + 8.43907 0.833763 + 8.44386 0.833851 + 8.44864 0.833938 + 8.45342 0.834026 + 8.45821 0.834113 + 8.46299 0.834201 + 8.46778 0.834289 + 8.47256 0.834376 + 8.47734 0.834464 + 8.48213 0.834552 + 8.48691 0.834639 + 8.49170 0.834727 + 8.49648 0.834815 + 8.50126 0.834903 + 8.50605 0.834990 + 8.51083 0.835078 + 8.51562 0.835166 + 8.52040 0.835254 + 8.52518 0.835342 + 8.52997 0.835429 + 8.53475 0.835517 + 8.53954 0.835605 + 8.54432 0.835693 + 8.54910 0.835781 + 8.55389 0.835869 + 8.55867 0.835957 + 8.56346 0.836049 + 8.56824 0.836141 + 8.57302 0.836233 + 8.57781 0.836325 + 8.58259 0.836417 + 8.58738 0.836509 + 8.59216 0.836600 + 8.59694 0.836692 + 8.60173 0.836784 + 8.60651 0.836876 + 8.61130 0.836968 + 8.61608 0.837060 + 8.62086 0.837152 + 8.62565 0.837244 + 8.63043 0.837337 + 8.63522 0.837429 + 8.64000 0.837521 + 8.64478 0.837613 + 8.64957 0.837705 + 8.65435 0.837797 + 8.65914 0.837889 + 8.66392 0.837981 + 8.66870 0.838074 + 8.67349 0.838166 + 8.67827 0.838258 + 8.68306 0.838351 + 8.68784 0.838443 + 8.69262 0.838535 + 8.69741 0.838627 + 8.70219 0.838720 + 8.70698 0.838812 + 8.71176 0.838904 + 8.71654 0.838997 + 8.72133 0.839089 + 8.72611 0.839181 + 8.73090 0.839274 + 8.73568 0.839366 + 8.74046 0.839459 + 8.74525 0.839551 + 8.75003 0.839644 + 8.75482 0.839736 + 8.75960 0.839828 + 8.76438 0.839921 + 8.76917 0.840013 + 8.77395 0.840106 + 8.77874 0.840198 + 8.78352 0.840291 + 8.78830 0.840383 + 8.79309 0.840477 + 8.79787 0.840570 + 8.80266 0.840663 + 8.80744 0.840756 + 8.81222 0.840850 + 8.81701 0.840943 + 8.82179 0.841036 + 8.82658 0.841130 + 8.83136 0.841223 + 8.83614 0.841316 + 8.84093 0.841410 + 8.84571 0.841503 + 8.85050 0.841596 + 8.85528 0.841690 + 8.86006 0.841783 + 8.86485 0.841877 + 8.86963 0.841970 + 8.87442 0.842063 + 8.87920 0.842157 + 8.88398 0.842250 + 8.88877 0.842344 + 8.89355 0.842437 + 8.89834 0.842530 + 8.90312 0.842624 + 8.90790 0.842717 + 8.91269 0.842811 + 8.91747 0.842904 + 8.92226 0.842998 + 8.92704 0.843091 + 8.93182 0.843185 + 8.93661 0.843278 + 8.94139 0.843372 + 8.94618 0.843465 + 8.95096 0.843558 + 8.95574 0.843652 + 8.96053 0.843745 + 8.96531 0.843839 + 8.97010 0.843932 + 8.97488 0.844026 + 8.97966 0.844119 + 8.98445 0.844213 + 8.98923 0.844306 + 8.99402 0.844400 + 8.99880 0.844493 + 9.00358 0.844587 + 9.00837 0.844680 + 9.01315 0.844774 + 9.01794 0.844867 + 9.02272 0.844961 + 9.02750 0.845054 + 9.03229 0.845148 + 9.03707 0.845243 + 9.04186 0.845337 + 9.04664 0.845431 + 9.05142 0.845525 + 9.05621 0.845619 + 9.06099 0.845713 + 9.06578 0.845808 + 9.07056 0.845902 + 9.07534 0.845996 + 9.08013 0.846090 + 9.08491 0.846184 + 9.08970 0.846279 + 9.09448 0.846373 + 9.09926 0.846467 + 9.10405 0.846561 + 9.10883 0.846655 + 9.11362 0.846749 + 9.11840 0.846843 + 9.12318 0.846938 + 9.12797 0.847032 + 9.13275 0.847126 + 9.13754 0.847220 + 9.14232 0.847314 + 9.14710 0.847408 + 9.15189 0.847502 + 9.15667 0.847596 + 9.16146 0.847690 + 9.16624 0.847785 + 9.17102 0.847879 + 9.17581 0.847973 + 9.18059 0.848067 + 9.18538 0.848161 + 9.19016 0.848255 + 9.19494 0.848349 + 9.19973 0.848443 + 9.20451 0.848537 + 9.20930 0.848631 + 9.21408 0.848725 + 9.21886 0.848819 + 9.22365 0.848913 + 9.22843 0.849007 + 9.23322 0.849101 + 9.23800 0.849195 + 9.24278 0.849289 + 9.24757 0.849383 + 9.25235 0.849477 + 9.25714 0.849571 + 9.26192 0.849664 + 9.26670 0.849758 + 9.27149 0.849852 + 9.27627 0.849947 + 9.28106 0.850041 + 9.28584 0.850136 + 9.29062 0.850231 + 9.29541 0.850325 + 9.30019 0.850420 + 9.30498 0.850514 + 9.30976 0.850609 + 9.31454 0.850703 + 9.31933 0.850798 + 9.32411 0.850892 + 9.32890 0.850987 + 9.33368 0.851081 + 9.33846 0.851176 + 9.34325 0.851270 + 9.34803 0.851365 + 9.35282 0.851459 + 9.35760 0.851553 + 9.36238 0.851648 + 9.36717 0.851742 + 9.37195 0.851837 + 9.37674 0.851931 + 9.38152 0.852025 + 9.38630 0.852120 + 9.39109 0.852214 + 9.39587 0.852308 + 9.40066 0.852402 + 9.40544 0.852497 + 9.41022 0.852591 + 9.41501 0.852685 + 9.41979 0.852779 + 9.42458 0.852874 + 9.42936 0.852968 + 9.43414 0.853062 + 9.43893 0.853156 + 9.44371 0.853250 + 9.44850 0.853344 + 9.45328 0.853438 + 9.45806 0.853532 + 9.46285 0.853626 + 9.46763 0.853720 + 9.47242 0.853814 + 9.47720 0.853908 + 9.48198 0.854002 + 9.48677 0.854096 + 9.49155 0.854190 + 9.49634 0.854284 + 9.50112 0.854378 + 9.50590 0.854472 + 9.51069 0.854566 + 9.51547 0.854659 + 9.52026 0.854753 + 9.52504 0.854847 + 9.52982 0.854942 + 9.53461 0.855036 + 9.53939 0.855131 + 9.54418 0.855225 + 9.54896 0.855319 + 9.55374 0.855413 + 9.55853 0.855508 + 9.56331 0.855602 + 9.56810 0.855696 + 9.57288 0.855790 + 9.57766 0.855884 + 9.58245 0.855979 + 9.58723 0.856073 + 9.59202 0.856167 + 9.59680 0.856261 + 9.60158 0.856355 + 9.60637 0.856449 + 9.61115 0.856543 + 9.61594 0.856637 + 9.62072 0.856731 + 9.62550 0.856825 + 9.63029 0.856919 + 9.63507 0.857013 + 9.63986 0.857106 + 9.64464 0.857200 + 9.64942 0.857294 + 9.65421 0.857388 + 9.65899 0.857482 + 9.66378 0.857575 + 9.66856 0.857669 + 9.67334 0.857763 + 9.67813 0.857856 + 9.68291 0.857950 + 9.68770 0.858044 + 9.69248 0.858137 + 9.69726 0.858231 + 9.70205 0.858324 + 9.70683 0.858418 + 9.71162 0.858511 + 9.71640 0.858604 + 9.72118 0.858698 + 9.72597 0.858792 + 9.73075 0.858885 + 9.73554 0.858978 + 9.74032 0.859071 + 9.74510 0.859165 + 9.74989 0.859258 + 9.75467 0.859351 + 9.75946 0.859444 + 9.76424 0.859538 + 9.76902 0.859631 + 9.77381 0.859724 + 9.77859 0.859817 + 9.78338 0.859913 + 9.78816 0.860009 + 9.79294 0.860106 + 9.79773 0.860202 + 9.80251 0.860299 + 9.80730 0.860395 + 9.81208 0.860491 + 9.81686 0.860588 + 9.82165 0.860684 + 9.82643 0.860780 + 9.83122 0.860876 + 9.83600 0.860973 + 9.84078 0.861069 + 9.84557 0.861165 + 9.85035 0.861261 + 9.85514 0.861357 + 9.85992 0.861453 + 9.86470 0.861549 + 9.86949 0.861645 + 9.87427 0.861741 + 9.87906 0.861837 + 9.88384 0.861933 + 9.88862 0.862029 + 9.89341 0.862125 + 9.89819 0.862220 + 9.90298 0.862316 + 9.90776 0.862412 + 9.91254 0.862507 + 9.91733 0.862603 + 9.92211 0.862699 + 9.92690 0.862794 + 9.93168 0.862890 + 9.93646 0.862985 + 9.94125 0.863081 + 9.94603 0.863176 + 9.95082 0.863272 + 9.95560 0.863367 + 9.96038 0.863462 + 9.96517 0.863558 + 9.96995 0.863653 + 9.97474 0.863748 + 9.97952 0.863843 + 9.98430 0.863939 + 9.98909 0.864034 + 9.99387 0.864129 + 9.99866 0.864224 + 10.0034 0.864319 + 10.0082 0.864414 + 10.0130 0.864509 + 10.0178 0.864604 + 10.0226 0.864698 + 10.0274 0.864793 + 10.0321 0.864888 + 10.0369 0.864983 + 10.0417 0.865078 + 10.0465 0.865172 + 10.0513 0.865267 + 10.0561 0.865362 + 10.0608 0.865457 + 10.0656 0.865551 + 10.0704 0.865646 + 10.0752 0.865741 + 10.0800 0.865835 + 10.0848 0.865930 + 10.0896 0.866024 + 10.0943 0.866119 + 10.0991 0.866213 + 10.1039 0.866308 + 10.1087 0.866402 + 10.1135 0.866496 + 10.1183 0.866590 + 10.1230 0.866685 + 10.1278 0.866779 + 10.1326 0.866873 + 10.1374 0.866967 + 10.1422 0.867061 + 10.1470 0.867155 + 10.1517 0.867249 + 10.1565 0.867343 + 10.1613 0.867437 + 10.1661 0.867531 + 10.1709 0.867625 + 10.1757 0.867719 + 10.1804 0.867812 + 10.1852 0.867906 + 10.1900 0.868000 + 10.1948 0.868094 + 10.1996 0.868187 + 10.2044 0.868281 + 10.2092 0.868374 + 10.2139 0.868468 + 10.2187 0.868561 + 10.2235 0.868655 + 10.2283 0.868748 + 10.2331 0.868841 + 10.2379 0.868935 + 10.2426 0.869028 + 10.2474 0.869121 + 10.2522 0.869214 + 10.2570 0.869307 + 10.2618 0.869400 + 10.2666 0.869493 + 10.2713 0.869586 + 10.2761 0.869679 + 10.2809 0.869772 + 10.2857 0.869865 + 10.2905 0.869958 + 10.2953 0.870050 + 10.3000 0.870143 + 10.3048 0.870236 + 10.3096 0.870328 + 10.3144 0.870421 + 10.3192 0.870512 + 10.3240 0.870603 + 10.3288 0.870694 + 10.3335 0.870784 + 10.3383 0.870875 + 10.3431 0.870966 + 10.3479 0.871056 + 10.3527 0.871147 + 10.3575 0.871237 + 10.3622 0.871327 + 10.3670 0.871418 + 10.3718 0.871508 + 10.3766 0.871598 + 10.3814 0.871688 + 10.3862 0.871779 + 10.3909 0.871869 + 10.3957 0.871959 + 10.4005 0.872049 + 10.4053 0.872139 + 10.4101 0.872229 + 10.4149 0.872319 + 10.4196 0.872409 + 10.4244 0.872498 + 10.4292 0.872588 + 10.4340 0.872678 + 10.4388 0.872768 + 10.4436 0.872857 + 10.4484 0.872947 + 10.4531 0.873037 + 10.4579 0.873126 + 10.4627 0.873215 + 10.4675 0.873305 + 10.4723 0.873394 + 10.4771 0.873483 + 10.4818 0.873573 + 10.4866 0.873662 + 10.4914 0.873751 + 10.4962 0.873840 + 10.5010 0.873929 + -1 -1 + -2 -2 + diff --git a/examples/advanced/xray_fluorescence/fit.py b/examples/advanced/xray_fluorescence/fit.py new file mode 100644 index 0000000000..55e06bf3af --- /dev/null +++ b/examples/advanced/xray_fluorescence/fit.py @@ -0,0 +1,77 @@ +hm.selectStore("xrayfluo.his") +histoGamDet = hm.load1D(1) + +# prepare to fit the histo h1 +# creating a vector from a histogram +v1=vm.from1D(histoGamDet) + +vm.list() + +# create a new fitter: +fit=Fitter() +# perform fit using the histogram +fit.setData(v1) +v1.toAscii("EnergyDep.dat") +# set the model to "gaussian" +fit.setModel("G") +# define (and init) parameters for fit function +fit.setParameter("amp" ,653.) +amp = fit.fitParameter ("amp") +amp.setStart(653.) +amp.setStep(1.) +amp.setBounds(500.,700.) +# ... for these the order is relevant +fit.setParameter("mean" ,1.72) +mean = fit.fitParameter ("mean") +mean.setStart(1.72) +mean.setStep(0.01) +mean.setBounds(1.62,1.82) + +# ... as there is no "intelligent parsing" possible :-( +fit.setParameter("sigma",.1) +sigma = fit.fitParameter ("sigma") +sigma.setStart(0.1) +sigma.setStep(0.005) +sigma.setBounds(0.01,0.3) +# perform fit using the histogram +fit.chiSquareFit() +fit.printResult() +# get vector wiht fitted function for overlay + +vfit=fit.fittedVector(vm) + +# comment this if you want to have a look at the resource file for NAG +shell("rm -f e04ucc.r") + +#pl.zoneOption("mirrorAxis","yes") +pl.xAxisOption("title","energy release in the detector") +pl.yAxisOption("label","counts") +# set error bars (full version) +#pl.dataOption("Representation","Error") +# plot data with overlayed fit-result +pl.textStyle("fontsize","10.") +pl.dataStyle("linecolor", "green") +pl.dataOption("legend","fit") +#pl.dataStyle("lineshape","dashdot") +pl.plot(vfit) + +wait() +pl.psPrint("fitEnegyDep.ps") +pl.reset() + +pl.textStyle("fontsize","10.") +pl.dataStyle("linecolor", "red") +pl.dataOption("legend","energyDeposit") +pl.plot(v1) +wait() + +pl.dataStyle("linecolor", "green") +pl.dataOption("legend","fit") +pl.dataStyle("lineshape","dashdot") +pl.overlay(vfit) + +pl.psPrint("fitEnegyOverl.ps") +pl.reset() +del fit + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisManager.hh-AIDA b/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisManager.hh-AIDA new file mode 100644 index 0000000000..6818569b01 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisManager.hh-AIDA @@ -0,0 +1,101 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoAnalysisManager.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 30 Nov 2001 Guy Barrand : migrate to AIDA-2.2. +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + + +#ifndef XrayFluoAnalysisManager_h +#define XrayFluoAnalysisManager_h 1 + +#include "globals.hh" + +class G4Step; +class XrayFluoAnalysisMessenger; + +class IAnalysisFactory; +class ITree; +class IHistogram1D; +class ITuple; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoAnalysisManager +{ +public: + + virtual ~XrayFluoAnalysisManager(); + + void book(); + + void finish(); + + //fill histograms with data from XrayFluoSteppingAction + void analyseStepping(const G4Step* aStep); + + //fill histograms with data from XrayFluoEventAction + void analyseEnergyDep(G4double eDep); + + //fill histograms with data from XrayFluoPrimarygeneratoraction + void analysePrimaryGenerator(G4double energy); + + //method to call to create an instance of this class + static XrayFluoAnalysisManager* getInstance(); + +private: + //private constructor in order to create a singleton + XrayFluoAnalysisManager(); + + static XrayFluoAnalysisManager* instance; + + //pointer to the analysis messenger + XrayFluoAnalysisMessenger* analysisMessenger; + + IAnalysisFactory* analysisFactory; + ITree* tree; + IHistogram1D* histo_1; + IHistogram1D* histo_2; + IHistogram1D* histo_3; + IHistogram1D* histo_4; + IHistogram1D* histo_5; + IHistogram1D* histo_6; + IHistogram1D* histo_7; + IHistogram1D* histo_8; + IHistogram1D* histo_9; + ITuple* tuple; +}; + +#endif + + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisManager.hh-Anaphe b/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisManager.hh-Anaphe new file mode 100644 index 0000000000..1ac54fa5b9 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisManager.hh-Anaphe @@ -0,0 +1,108 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoAnalysisManager.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + + +#ifdef G4ANALYSIS_USE +#ifndef XrayFluoAnalysisManager_h +#define XrayFluoAnalysisManager_h 1 + +#include "globals.hh" + +// Histogramming from AIDA +#include "Interfaces/IHistogram1D.h" +#include "Interfaces/IHistogram2D.h" + +// Histogramming from Anaphe +#include "Interfaces/IHistoManager.h" + +// Ntuples from Anaphe +#include "NtupleTag/LizardNTupleFactory.h" +#include "NtupleTag/LizardQuantity.h" + + +class G4Step; +class XrayFluoAnalysisMessenger; +class NTuple; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoAnalysisManager +{ +public: + + virtual ~XrayFluoAnalysisManager(); + + void book(); + + void finish(); + + //fill histograms with data from XrayFluoSteppingAction + void analyseStepping(const G4Step* aStep); + + //fill histograms with data from XrayFluoEventAction + void analyseEnergyDep(G4double eDep); + + //fill histograms with data from XrayFluoPrimarygeneratoraction + void analysePrimaryGenerator(G4double energy); + + //method to call to create an instance of this class + static XrayFluoAnalysisManager* getInstance(); + + +private: + + //private constructor in order to create a singleton + XrayFluoAnalysisManager(); + + static XrayFluoAnalysisManager* instance; + + IHistoManager* histoManager; + + //nTuple factory + Lizard::NTupleFactory* factory; + Lizard::NTuple* ntuple; + + //pointer to the analysis messenger + XrayFluoAnalysisMessenger* analysisMessenger; + + // Quantities for the ntuple + Lizard::Quantity eDep; + Lizard::Quantity counts; +}; +#endif +#endif + + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisMessenger.hh b/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisMessenger.hh new file mode 100644 index 0000000000..b62519d9b1 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoAnalysisMessenger.hh @@ -0,0 +1,70 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoAnalysisMessenger.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifdef G4ANALYSIS_USE +#ifndef XrayFluoAnalysisMessenger_h +#define XrayFluoAnalysisMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + + +class XrayFluoAnalysisManager; +class G4UIdirectory; +class G4UIcmdWithAString; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoAnalysisMessenger: public G4UImessenger +{ +public: + XrayFluoAnalysisMessenger(XrayFluoAnalysisManager* ); + ~XrayFluoAnalysisMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + +private: + + //pointer to XrayFluoAnalysisManager + XrayFluoAnalysisManager* XrayFluoAnalysis; + G4UIdirectory* XrayFluoAnalysisDir; + +}; +#endif +#endif diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoDataSet.hh b/examples/advanced/xray_fluorescence/include/XrayFluoDataSet.hh new file mode 100644 index 0000000000..0649e9126e --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoDataSet.hh @@ -0,0 +1,90 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoDataSet.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +//for the documentation of this class see also G4EMDataSet class + +#ifndef FluoDataSet_hh +#define FluoDataSet_hh 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "G4VEMDataSet.hh" + +class G4VDataSetAlgorithm; + +class XrayFluoDataSet : public G4VEMDataSet { + +public: + + XrayFluoDataSet(G4int Z, + G4DataVector* points, + G4DataVector* values, + const G4VDataSetAlgorithm* interpolation, + G4double unitE = MeV, G4double unitData = barn); + + XrayFluoDataSet(G4int Z, + const G4String& dataFile, + const G4VDataSetAlgorithm* interpolation, + G4double unitE = MeV, G4double unitData = barn); + + ~XrayFluoDataSet(); + + //find the value corresponding to the energy e in the set + //identified by id + G4double FindValue(G4double e, G4int id = 0) const; + + void PrintData() const; + + const G4DataVector& GetEnergies(G4int i) const { return *energies; } + const G4DataVector& GetData(G4int i) const { return *data; } + +private: + + void LoadData(const G4String& dataFile); + G4int z; + G4int FindBinLocation(G4double energy) const; + + G4DataVector* energies; // Owned pointer + G4DataVector* data; // Owned pointer + + const G4VDataSetAlgorithm* algorithm; // Not owned pointer + + G4double unit1; + G4double unit2; + + size_t numberOfBins; + +}; + +#endif diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoDetectorConstruction.hh b/examples/advanced/xray_fluorescence/include/XrayFluoDetectorConstruction.hh new file mode 100644 index 0000000000..8ad627f87b --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoDetectorConstruction.hh @@ -0,0 +1,247 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoDetectorConstruction.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifndef XrayFluoDetectorConstruction_h +#define XrayFluoDetectorConstruction_h 1 + +#include "G4VUserDetectorConstruction.hh" +#include "globals.hh" +#include "G4RotationMatrix.hh" +class G4Box; +class G4Tubs; +class G4LogicalVolume; +class G4VPhysicalVolume; +class G4Material; +class XrayFluoDetectorMessenger; +class XrayFluoHPGeSD; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoDetectorConstruction : public G4VUserDetectorConstruction +{ +public: + + XrayFluoDetectorConstruction(); + ~XrayFluoDetectorConstruction(); + +public: + + G4VPhysicalVolume* Construct(); + + void UpdateGeometry(); + +public: + + void PrintApparateParameters(); + + G4double GetWorldSizeZ() {return WorldSizeZ;}; + G4double GetWorldSizeXY() {return WorldSizeXY;}; + + G4double GetDeviceThickness() {return DeviceThickness;}; + G4double GetDeviceSizeX() {return DeviceSizeX;}; + G4double GetDeviceSizeY() {return DeviceSizeY;}; + G4double GetPixelSizeXY() {return PixelSizeXY;}; + G4double GetContactSizeXY() {return ContactSizeXY;}; + + G4int GetNbOfPixels() {return NbOfPixels;}; + G4int GetNbOfPixelRows() {return NbOfPixelRows;}; + G4int GetNbOfPixelColumns() {return NbOfPixelColumns;}; + + G4Material* GetOhmicPosMaterial() {return OhmicPosMaterial;}; + G4double GetOhmicPosThickness() {return OhmicPosThickness;}; + + G4Material* GetOhmicNegMaterial() {return OhmicNegMaterial;}; + G4double GetOhmicNegThickness() {return OhmicNegThickness;}; + + const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; + const G4VPhysicalVolume* GetHPGe() {return physiHPGe;}; + const G4VPhysicalVolume* GetSample() {return physiSample;}; + const G4VPhysicalVolume* GetDia1() {return physiDia1;}; + const G4VPhysicalVolume* GetDia3() {return physiDia3;}; + + const G4VPhysicalVolume* GetphysiPixel() {return physiPixel;}; + const G4VPhysicalVolume* GetOhmicPos() {return physiOhmicPos;}; + const G4VPhysicalVolume* GetOhmicNeg() {return physiOhmicNeg;}; + + +private: + + G4double DeviceSizeX; + G4double DeviceSizeY; + G4double DeviceThickness; + + G4Box* solidWorld; //pointer to the solid World + G4LogicalVolume* logicWorld; //pointer to the logical World + G4VPhysicalVolume* physiWorld; //pointer to the physical World + + G4Box* solidHPGe; //pointer to the solid Sensor + G4LogicalVolume* logicHPGe; //pointer to the logical Sensor + G4VPhysicalVolume* physiHPGe; //pointer to the physical Sensor + + G4Box* solidSample; //pointer to the solid Sample + G4LogicalVolume* logicSample; //pointer to the logical Sample + G4VPhysicalVolume* physiSample; //pointer to the physical Sample + + G4Tubs* solidDia1; //pointer to the solid Diaphragm + G4LogicalVolume* logicDia1; //pointer to the logical Diaphragm + G4VPhysicalVolume* physiDia1; //pointer to the physical Diaphragm + + G4Tubs* solidDia3; //pointer to the solid Diaphragm + G4LogicalVolume* logicDia3; //pointer to the logical Diaphragm + G4VPhysicalVolume* physiDia3; //pointer to the physical Diaphragm + + G4Box* solidOhmicPos; + G4LogicalVolume* logicOhmicPos; + G4VPhysicalVolume* physiOhmicPos; + + G4Box* solidOhmicNeg; + G4LogicalVolume* logicOhmicNeg; + G4VPhysicalVolume* physiOhmicNeg; + + G4Box* solidPixel; + G4LogicalVolume* logicPixel; + G4VPhysicalVolume* physiPixel; + + //pointers to the materials used + G4Material* OhmicPosMaterial; + G4Material* OhmicNegMaterial; + G4Material* pixelMaterial; + G4Material* sampleMaterial; + G4Material* Dia1Material; + G4Material* Dia3Material; + G4Material* defaultMaterial; + G4double OhmicPosThickness; + + G4double OhmicNegThickness; + + G4int PixelCopyNb; + G4int NbOfPixels; + G4int NbOfPixelRows; + G4int NbOfPixelColumns; + G4double PixelThickness; + + G4double PixelSizeXY; + G4double ContactSizeXY; + +public: + + G4Material* GetSampleMaterial() {return sampleMaterial;}; + G4Material* GetPixelMaterial() {return pixelMaterial;}; + G4Material* GetDia1Material() {return Dia1Material;}; + G4Material* GetDia3Material() {return Dia3Material;}; + +private: + + G4double SampleThickness; + G4double SampleSizeXY; + G4double SiSizeXY; + G4double Dia1Thickness; + G4double Dia1SizeXY; + G4double Dia3Thickness; + G4double Dia3SizeXY; + G4double DiaInnerSize; + G4double Dia3InnerSize; + G4double DistSi; +public: + + + G4double GetSampleThickness() {return SampleThickness;}; + G4double GetSampleSizeXY() {return SampleSizeXY;}; + + G4double GetDia1Thickness() {return Dia1Thickness;}; + G4double GetDia1SizeXY() {return Dia1SizeXY;}; + + G4double GetDia3Thickness() {return Dia3Thickness;}; + G4double GetDia3SizeXY() {return Dia3SizeXY;}; + + +private: + + + G4double ThetaHPGe; + G4double ThetaDia1; + G4double ThetaDia3; + + G4double DistDe; + G4double DistDia; + G4double Dia3Dist; + G4double PhiHPGe; + G4double PhiDia1; + G4double PhiDia3; + G4double AlphaDia1; + G4double AlphaDia3; + + + G4RotationMatrix zRotPhiHPGe; + G4RotationMatrix zRotPhiDia1; + G4RotationMatrix zRotPhiDia3; + G4double WorldSizeXY; + G4double WorldSizeZ; + + + XrayFluoDetectorMessenger* detectorMessenger; //pointer to the Messenger + + XrayFluoHPGeSD* HPGeSD; //pointer to the sensitive detector + +private: + + void DefineMaterials(); + G4VPhysicalVolume* ConstructApparate(); + + //calculates some quantities used to construct geometry + void ComputeApparateParameters(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void XrayFluoDetectorConstruction::ComputeApparateParameters() +{ + // Compute derived parameters of the apparate + + DeviceThickness = PixelThickness+OhmicNegThickness+OhmicPosThickness; + DeviceSizeY =NbOfPixelRows*max(ContactSizeXY,PixelSizeXY); + DeviceSizeX =NbOfPixelColumns*max(ContactSizeXY,PixelSizeXY); + + WorldSizeZ = (2 * (DistDe +1.4142 *(max(max(DeviceThickness,DeviceSizeY), DeviceSizeX))))+5*m; + WorldSizeXY = 2 * (DistDe +1.4142 *Dia1SizeXY)+5*m; + +} + +#endif + + + + + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoDetectorMessenger.hh b/examples/advanced/xray_fluorescence/include/XrayFluoDetectorMessenger.hh new file mode 100644 index 0000000000..96cca8469a --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoDetectorMessenger.hh @@ -0,0 +1,69 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoDetectorMessenger.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifndef XrayFluoDetectorMessenger_h +#define XrayFluoDetectorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class XrayFluoDetectorConstruction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoDetectorMessenger: public G4UImessenger +{ + public: + XrayFluoDetectorMessenger(XrayFluoDetectorConstruction* ); + ~XrayFluoDetectorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + XrayFluoDetectorConstruction* Detector; + G4UIdirectory* detDir; + + G4UIcmdWithoutParameter* UpdateCmd; +}; + +#endif + + + + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoEventAction.hh b/examples/advanced/xray_fluorescence/include/XrayFluoEventAction.hh new file mode 100644 index 0000000000..6fbac9b6be --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoEventAction.hh @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoEventAction.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + +#ifndef XrayFluoEventAction_h +#define XrayFluoEventAction_h 1 + +#include "G4UserEventAction.hh" +#include "globals.hh" + +class XrayFluoRunAction; +class XrayFluoEventActionMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +class XrayFluoEventAction : public G4UserEventAction +{ +public: + + XrayFluoEventAction(); + + virtual ~XrayFluoEventAction(); + +public: + virtual void BeginOfEventAction(const G4Event*); + virtual void EndOfEventAction(const G4Event*); + + //method used to set the flags for drawing the tracks + void SetDrawFlag (G4String val) {drawFlag = val;}; + void SetPrintModulo(G4int val) {printModulo = val;}; + +private: + + G4String drawFlag; + G4int HPGeCollID; + + //pointer to XrayFluoEventActionMessenger + XrayFluoEventActionMessenger* eventMessenger; + G4int printModulo; + + //this method generates a gaussian distribution + //the argument is the mean + //the sigma is to be set in the file XrayFluoEventAction.cc + G4double RandomCut(G4double); + + //this method distributes the energy deposit (which must be given as + //argument) according to the response function stored in the file + //response.dat + G4double ResponseFunction(G4double); + + XrayFluoRunAction* runManager; +}; + +#endif + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoEventActionMessenger.hh b/examples/advanced/xray_fluorescence/include/XrayFluoEventActionMessenger.hh new file mode 100644 index 0000000000..466875e3bd --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoEventActionMessenger.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoEventActionMessenger.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifndef XrayFluoEventActionMessenger_h +#define XrayFluoEventActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class XrayFluoEventAction; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoEventActionMessenger: public G4UImessenger +{ + public: + XrayFluoEventActionMessenger(XrayFluoEventAction*); + ~XrayFluoEventActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + XrayFluoEventAction* eventAction; + G4UIcmdWithAString* DrawCmd; + G4UIcmdWithAnInteger* PrintCmd; +}; + +#endif diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoHPGeSD.hh b/examples/advanced/xray_fluorescence/include/XrayFluoHPGeSD.hh new file mode 100644 index 0000000000..7ba6d14c29 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoHPGeSD.hh @@ -0,0 +1,77 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoHPGeSD.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifndef XrayFluoHpGe_h +#define XrayFluoHPGeSD_h 1 + +#include "G4VSensitiveDetector.hh" +#include "globals.hh" +#include "XrayFluoSensorHit.hh" + +class XrayFluoDetectorConstruction; +class G4HCofThisEvent; +class G4Step; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoHPGeSD : public G4VSensitiveDetector +{ +public: + + XrayFluoHPGeSD(G4String, XrayFluoDetectorConstruction* ); + ~XrayFluoHPGeSD(); + + void Initialize(G4HCofThisEvent*); + void EndOfEvent(G4HCofThisEvent*); + void clear(); + void DrawAll(); + void PrintAll(); + +protected: + + G4bool ProcessHits(G4Step*,G4TouchableHistory*); +private: + + //hit collection for the detector + XrayFluoSensorHitsCollection* HPGeCollection; + XrayFluoDetectorConstruction* Detector; + G4int* HitHPGeID; +}; + +#endif + + + + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoNormalization.hh b/examples/advanced/xray_fluorescence/include/XrayFluoNormalization.hh new file mode 100644 index 0000000000..2e8a0f9591 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoNormalization.hh @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoNormalization.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- +#ifndef XrayFluoNormalization_h +#define XrayFluoNormalization_h 1 +#include "globals.hh" + +class XrayFluoDataSet; +class XrayFluoNormalization +{ +public: + + //constructor + XrayFluoNormalization(); + + //destructor + ~XrayFluoNormalization(); + + //this method returns a data set equivalent to the one in the file whose + //name must be passed as the last argument normalized to the value returned + //by Integrate + //the first and second arguments identifies the energy value in which + //Integrate() integrates, the third is the number of buns used in the + //integration + const XrayFluoDataSet* Normalize(G4double, G4double, G4int,G4String); + +private: + //this method integrates the function achieved interpolating + //berween the points of the data file and returns the value of the integral + G4double Integrate(G4double, G4double, G4int, XrayFluoDataSet*); + +}; + +#endif diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoPhysicsList.hh b/examples/advanced/xray_fluorescence/include/XrayFluoPhysicsList.hh new file mode 100644 index 0000000000..f7bd8ab949 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoPhysicsList.hh @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoPhysicsList.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifndef XrayFluoPhysicsList_h +#define XrayFluoPhysicsList_h 1 + +#include "G4VUserPhysicsList.hh" +#include "globals.hh" + +class XrayFluoPhysicsListMessenger; +class G4LowEnergyIonisation; +class G4LowEnergyPhotoElectric; +class G4LowEnergyBremsstrahlung; +class XrayFluoDetectorConstruction; +class XrayFluoPhysicsList: public G4VUserPhysicsList +{ +public: + + XrayFluoPhysicsList(XrayFluoDetectorConstruction*); + virtual ~XrayFluoPhysicsList(); + +protected: + + // Construct particle and physics + virtual void ConstructParticle(); + virtual void ConstructProcess(); + +protected: + + // these methods Construct particles + virtual void ConstructBosons(); + virtual void ConstructLeptons(); + virtual void ConstructBarions(); + virtual void ConstructIons(); + +protected: + // these methods Construct physics processes and register them + void ConstructEM(); + void ConstructGeneral(); + +public: + + void SetCuts(); + void SetGammaCut(G4double); + void SetElectronCut(G4double); + + void SetGammaLowLimit(G4double); + void SetElectronLowLimit(G4double); + void SetGELowLimit(G4double); + void SetLowEnSecPhotCut(G4double); + void SetLowEnSecElecCut(G4double); + void SetProtonCut(G4double); + void SetCutsByEnergy(G4double); + + +private: + + G4LowEnergyIonisation* LeIoprocess; + G4LowEnergyPhotoElectric* LePeprocess; + G4LowEnergyBremsstrahlung* LeBrprocess; + XrayFluoPhysicsListMessenger* physicsListMessenger; + G4double cutForGamma; + G4double cutForElectron; + G4double cutForProton; + XrayFluoDetectorConstruction* pDet; + +}; + +#endif + + + + + + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoPhysicsListMessenger.hh b/examples/advanced/xray_fluorescence/include/XrayFluoPhysicsListMessenger.hh new file mode 100644 index 0000000000..010db96662 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoPhysicsListMessenger.hh @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoPhysicsListMessenger.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + +#ifndef XrayFluoPhysicsListMessenger_h +#define XrayFluoPhysicsListMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class XrayFluoPhysicsList; +class G4UIdirectory; +class G4UIcmdWithoutParameter; +class G4UIcmdWithADouble; +class G4UIcmdWithADoubleAndUnit; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoPhysicsListMessenger: public G4UImessenger +{ + +public: + + XrayFluoPhysicsListMessenger(XrayFluoPhysicsList*); + ~XrayFluoPhysicsListMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + +private: + + XrayFluoPhysicsList* XrayFluoList; + + G4UIdirectory* lowEnDir; + G4UIcmdWithADoubleAndUnit* cutGLowLimCmd; + G4UIcmdWithADoubleAndUnit* cutELowLimCmd; + G4UIcmdWithADoubleAndUnit* cutGELowLimCmd; + G4UIcmdWithADoubleAndUnit* cutSecPhotCmd; + G4UIcmdWithADoubleAndUnit* cutSecElecCmd; + G4UIcmdWithADoubleAndUnit* cutGCmd; + G4UIcmdWithADoubleAndUnit* cutECmd; + G4UIcmdWithADoubleAndUnit* cutPCmd; + G4UIcmdWithADoubleAndUnit* eCmd; +}; + +#endif + + + + + + + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoPrimaryGeneratorAction.hh b/examples/advanced/xray_fluorescence/include/XrayFluoPrimaryGeneratorAction.hh new file mode 100644 index 0000000000..1f41613451 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoPrimaryGeneratorAction.hh @@ -0,0 +1,99 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoPrimaryGeneratorAction.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + +#ifndef XrayFluoPrimaryGeneratorAction_h +#define XrayFluoPrimaryGeneratorAction_h 1 + +#include "G4VUserPrimaryGeneratorAction.hh" +#include "globals.hh" + +class G4ParticleGun; +class G4Event; +class XrayFluoDetectorConstruction; +class XrayFluoPrimaryGeneratorMessenger; +class XrayFluoRunAction; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoPrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + + XrayFluoPrimaryGeneratorAction(XrayFluoDetectorConstruction*); + + ~XrayFluoPrimaryGeneratorAction(); + + public: + void GeneratePrimaries(G4Event*); + + //method to set a random impact point on the sample + void SetRndmFlag(G4String val) { rndmFlag = val;} + + //method to choose a circular non-point source + void SetRndmVert (G4String val) { beam = val;} + + //set the flag for shooting particles according to certain spectra + void SetSpectrum (G4String val) { spectrum= val ;} + + //set the flag for shooting particles from an isotropic source + void SetIsoVert (G4String val) { isoVert = val ;} + +private: +//pointer a to G4 service class + G4ParticleGun* particleGun; + + //pointer to the geometry + XrayFluoDetectorConstruction* XrayFluoDetector; + + //messenger of this class + XrayFluoPrimaryGeneratorMessenger* gunMessenger; + XrayFluoRunAction* runManager; + + //flag for a random impact point + G4String rndmFlag; + + //flag for a circular non-point source + G4String beam; + + //flag for shooting particles according to certain spectra + G4String spectrum; + + //flag for shooting particles from an isotropic source + G4String isoVert; +}; + +#endif + + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoPrimaryGeneratorMessenger.hh b/examples/advanced/xray_fluorescence/include/XrayFluoPrimaryGeneratorMessenger.hh new file mode 100644 index 0000000000..aac0b99269 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoPrimaryGeneratorMessenger.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoPrimaryGeneratorMessenger.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + +#ifndef XrayFluoPrimaryGeneratorMessenger_h +#define XrayFluoPrimaryGeneratorMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class XrayFluoPrimaryGeneratorAction; +class G4UIcmdWithAString; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoPrimaryGeneratorMessenger: public G4UImessenger +{ + public: + XrayFluoPrimaryGeneratorMessenger(XrayFluoPrimaryGeneratorAction*); + ~XrayFluoPrimaryGeneratorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + +private: + + XrayFluoPrimaryGeneratorAction* XrayFluoAction; + + //command to set a random impact point + G4UIcmdWithAString* RndmCmd; + + //command to choose a plane circular source + G4UIcmdWithAString* RndmVert; + + //command to shot particles according to certain spectra + G4UIcmdWithAString* spectrum; + + //command to shot particles from an isotropic source + G4UIcmdWithAString* isoVert; +}; + +#endif + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoRunAction.hh b/examples/advanced/xray_fluorescence/include/XrayFluoRunAction.hh new file mode 100644 index 0000000000..bff70b2645 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoRunAction.hh @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoRunAction.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + +#ifndef XrayFluoRunAction_h +#define XrayFluoRunAction_h 1 + +#include "G4UserRunAction.hh" +#include "globals.hh" +#include "g4std/map" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class G4Run; +class XrayFluoDataSet; +class G4DataVector; + +class XrayFluoRunAction : public G4UserRunAction +{ + public: + + + XrayFluoRunAction(); + + ~XrayFluoRunAction(); + const XrayFluoDataSet* GetSet(); + const XrayFluoDataSet* GetGammaSet(); + const XrayFluoDataSet* GetAlphaSet(); + const XrayFluoDataSet* GetEfficiencySet(); + G4DataVector* GetEnergies(); + G4DataVector* GetData(); + + + public: + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + //returns the sum of the element of data + G4double GetDataSum(); + + //calulates the maximum integer contained in energy + //choose from dataMap and energyMap the set of values + //corresponding to the calculated integer + //returns a value of energy chosen randomly from this set + G4double GetInfData(G4double energy, G4double random); + + //calulates the minimum integer contained in energy + //choose from dataMap and energyMap the set of values + //corresponding to the calculated integer + //returns a value of energy chosen randomly from this set + G4double GetSupData(G4double energy, G4double random); + +private: + + const XrayFluoDataSet* dataSet; + + //stores the data of the incident gamma spectrum + const XrayFluoDataSet* dataGammaSet; + + //stores the data of the incident alpha spectrum + const XrayFluoDataSet* dataAlphaSet; + + //stores the data of the efficience of the detector + const XrayFluoDataSet* efficiencySet; + + //stores the energy data of the proton and alpha spectra + G4DataVector* energies; + +//stores the data of the proton and alpha spectra + G4DataVector* data; + + //stores the energy data (first column of the file) of the + //response function + G4std::map > energyMap; + + //stores the values (second column of the file) of the + //response function +G4std::map > dataMap; + + //read the data for protons and alpha spectra + void ReadData(G4double,G4String); + + //read the data for the response function if the detector + void ReadResponse(const G4String& fileName); + + + +}; + +#endif + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoSensorHit.hh b/examples/advanced/xray_fluorescence/include/XrayFluoSensorHit.hh new file mode 100644 index 0000000000..0d80af6263 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoSensorHit.hh @@ -0,0 +1,96 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoSensorHit.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifndef XrayFluoSensorHit_h +#define XrayFluoSensorHit_h 1 + +#include "G4VHit.hh" +#include "G4THitsCollection.hh" +#include "G4Allocator.hh" +#include "G4ThreeVector.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoRunAction; +class XrayFluoSensorHit : public G4VHit +{ +public: + + XrayFluoSensorHit(); + ~XrayFluoSensorHit(); + XrayFluoSensorHit(const XrayFluoSensorHit&); + const XrayFluoSensorHit& operator=(const XrayFluoSensorHit&); + int operator==(const XrayFluoSensorHit&) const; + inline void* operator new(size_t); + inline void operator delete(void*); + void AddEnergy(G4double de) {EdepTot += de;}; + void Draw(); + void Print(); + G4double GetEdepTot() { return EdepTot;}; + +private: + + G4double EdepTot; + + G4double EdepDetect; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +typedef G4THitsCollection XrayFluoSensorHitsCollection; + +extern G4Allocator XrayFluoSensorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void* XrayFluoSensorHit::operator new(size_t) +{ + void* aHit; + aHit = (void*) XrayFluoSensorHitAllocator.MallocSingle(); + return aHit; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void XrayFluoSensorHit::operator delete(void* aHit) +{ + XrayFluoSensorHitAllocator.FreeSingle((XrayFluoSensorHit*) aHit); +} + +#endif + + + diff --git a/source/analysis/jas/include/G4JasSystem.hh b/examples/advanced/xray_fluorescence/include/XrayFluoSteppingAction.hh similarity index 66% rename from source/analysis/jas/include/G4JasSystem.hh rename to examples/advanced/xray_fluorescence/include/XrayFluoSteppingAction.hh index 388fd688fd..1eafec51d5 100644 --- a/source/analysis/jas/include/G4JasSystem.hh +++ b/examples/advanced/xray_fluorescence/include/XrayFluoSteppingAction.hh @@ -21,38 +21,37 @@ // ******************************************************************** // // -// $Id: G4JasSystem.hh,v 1.8.4.1 2001/06/28 19:07:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: XrayFluoSteppingAction.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 // -// -// Guy Barrand 14 September 2000 +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- -#ifndef G4JASSYSTEM_H -#define G4JASSYSTEM_H +#ifndef XrayFluoSteppingAction_h +#define XrayFluoSteppingAction_h 1 +#include "globals.hh" +#include "G4UserSteppingAction.hh" -#if defined(G4ANALYSIS_BUILD_JAS) || defined(G4ANALYSIS_USE_JAS) +class XrayFluoDetectorConstruction; -#include "G4VAnalysisSystem.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class IHistogramManager; -class JasHistogramFactory; +class XrayFluoSteppingAction : public G4UserSteppingAction +{ + public: -class G4JasSystem : public G4VAnalysisSystem { -public: // I methods : - virtual const G4String& GetName() const; - virtual IHistogramFactory* GetHistogramFactory(); - // - virtual void Store(IHistogram* = 0,const G4String& = ""); - virtual void Plot(IHistogram*); -public: - G4JasSystem(const G4String& name = "jas"); - virtual ~G4JasSystem(); + XrayFluoSteppingAction(); + ~XrayFluoSteppingAction(); + + void UserSteppingAction(const G4Step*); private: - G4String fName; - JasHistogramFactory* fHistogramFactory; + + }; #endif - -#endif - diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoSteppingVerbose.hh b/examples/advanced/xray_fluorescence/include/XrayFluoSteppingVerbose.hh new file mode 100644 index 0000000000..23ca2ece74 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoSteppingVerbose.hh @@ -0,0 +1,59 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoSteppingVerbose.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + + +class XrayFluoSteppingVerbose; + +#ifndef XrayFluoSteppingVerbose_h +#define XrayFluoSteppingVerbose_h 1 + +#include "G4SteppingVerbose.hh" + +class XrayFluoSteppingVerbose : public G4SteppingVerbose { + +public: + +// Constructor/Destructor + XrayFluoSteppingVerbose(); + ~XrayFluoSteppingVerbose(); + + void StepInfo(); + void TrackingStarted(); + + + +}; + +#endif + diff --git a/examples/advanced/xray_fluorescence/include/XrayFluoVisManager.hh b/examples/advanced/xray_fluorescence/include/XrayFluoVisManager.hh new file mode 100644 index 0000000000..60688fdce8 --- /dev/null +++ b/examples/advanced/xray_fluorescence/include/XrayFluoVisManager.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoVisManager.hh +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +// Example Visualization Manager implementing virtual function +// RegisterGraphicsSystems. Exploits C-pre-processor variables +// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if +// environment variables of the same name are set. + +// So all you have to do is set environment variables and compile and +// instantiate this in your main(). + +// Alternatively, you can implement an empty function here and just +// register the systems you want in your main(), e.g.: +// G4VisManager* XrayFluoVisManager = new XrayFluoVisManager; +// XrayFluoVisManager -> RegisterGraphicsSystem (new XrayFluoGraphicsSystem); + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef XrayFluoVisManager_h +#define XrayFluoVisManager_h 1 + +#ifdef G4VIS_USE + +#include "G4VisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class XrayFluoVisManager: public G4VisManager { + +public: + + XrayFluoVisManager (); + +private: + + void RegisterGraphicsSystems (); + +}; + +#endif + +#endif diff --git a/examples/novice/N03/initInter.mac b/examples/advanced/xray_fluorescence/initInter.mac similarity index 93% rename from examples/novice/N03/initInter.mac rename to examples/advanced/xray_fluorescence/initInter.mac index 10ed0b91d4..fd83eeeca0 100644 --- a/examples/novice/N03/initInter.mac +++ b/examples/advanced/xray_fluorescence/initInter.mac @@ -15,8 +15,10 @@ # Create a scene handler for a specific graphics system # (Edit the next line(s) to choose another graphic system) # -/vis/open OGLIX -#/vis/open DAWNFILE + +/vis/open VRML1FILE + + # # draw scene # @@ -25,4 +27,5 @@ # # for drawing the tracks # (if too many tracks cause core dump => storeTrajectory 0) + /tracking/storeTrajectory 1 diff --git a/examples/advanced/xray_fluorescence/macro.mac b/examples/advanced/xray_fluorescence/macro.mac new file mode 100644 index 0000000000..26eb34617f --- /dev/null +++ b/examples/advanced/xray_fluorescence/macro.mac @@ -0,0 +1,12 @@ + +/lowenergy/lowlimGE 250 eV + +/lowenergy/cutEnergy 250 eV + +/gun/randomVert on + +/gun/particle gamma + +/gun/energy 6 keV + +/run/beamOn 100 diff --git a/examples/advanced/xray_fluorescence/macro1.mac b/examples/advanced/xray_fluorescence/macro1.mac new file mode 100644 index 0000000000..b6c61a2d85 --- /dev/null +++ b/examples/advanced/xray_fluorescence/macro1.mac @@ -0,0 +1,12 @@ + + +/lowenergy/lowlimGE 250 eV + +/lowenergy/cutEnergy 250 eV + +# B-flare spectrum +/gun/spectrum on + +/gun/particle gamma + +/run/beamOn 100 diff --git a/examples/advanced/xray_fluorescence/macro2.mac b/examples/advanced/xray_fluorescence/macro2.mac new file mode 100644 index 0000000000..9708e280fe --- /dev/null +++ b/examples/advanced/xray_fluorescence/macro2.mac @@ -0,0 +1,16 @@ +/lowenergy/lowlimGE 250 eV + +/lowenergy/cutEnergy 250 eV + +#isotropic source +/gun/isoVert on + +/gun/particle proton + +#solar minimum proton spectrum +/gun/spectrum on + +/gun/particle proton + +/run/beamOn 100 + diff --git a/examples/advanced/xray_fluorescence/merc2_flx_alp_max.dat b/examples/advanced/xray_fluorescence/merc2_flx_alp_max.dat new file mode 100644 index 0000000000..3c867e4a9b --- /dev/null +++ b/examples/advanced/xray_fluorescence/merc2_flx_alp_max.dat @@ -0,0 +1,837 @@ + .10023E+01 .10242E+02 + .10162E+01 .10503E+02 + .10304E+01 .10772E+02 + .10447E+01 .11050E+02 + .10592E+01 .11338E+02 + .10739E+01 .11635E+02 + .10888E+01 .11942E+02 + .11040E+01 .11788E+02 + .11193E+01 .11359E+02 + .11349E+01 .10943E+02 + .11506E+01 .10540E+02 + .11666E+01 .10150E+02 + .11828E+01 .97728E+01 + .11993E+01 .94078E+01 + .12159E+01 .90548E+01 + .12328E+01 .87134E+01 + .12500E+01 .83833E+01 + .12674E+01 .80642E+01 + .12850E+01 .77558E+01 + .13028E+01 .74578E+01 + .13209E+01 .71699E+01 + .13393E+01 .68919E+01 + .13579E+01 .66234E+01 + .13768E+01 .63642E+01 + .13959E+01 .61140E+01 + .14153E+01 .58726E+01 + .14350E+01 .56397E+01 + .14549E+01 .54150E+01 + .14751E+01 .51983E+01 + .14956E+01 .49894E+01 + .15164E+01 .47880E+01 + .15375E+01 .45939E+01 + .15589E+01 .43815E+01 + .15805E+01 .42013E+01 + .16025E+01 .40278E+01 + .16248E+01 .38608E+01 + .16473E+01 .37000E+01 + .16702E+01 .35453E+01 + .16934E+01 .33965E+01 + .17170E+01 .32534E+01 + .17408E+01 .31158E+01 + .17650E+01 .29835E+01 + .17896E+01 .28563E+01 + .18144E+01 .27341E+01 + .18397E+01 .26167E+01 + .18652E+01 .25039E+01 + .18911E+01 .23956E+01 + .19174E+01 .22916E+01 + .19441E+01 .21918E+01 + .19711E+01 .20960E+01 + .19985E+01 .20041E+01 + .20263E+01 .19159E+01 + .20544E+01 .18313E+01 + .20830E+01 .17502E+01 + .21119E+01 .16725E+01 + .21413E+01 .15980E+01 + .21710E+01 .15266E+01 + .22012E+01 .14582E+01 + .22318E+01 .13926E+01 + .22628E+01 .13299E+01 + .22942E+01 .12698E+01 + .23261E+01 .12122E+01 + .23585E+01 .11572E+01 + .23912E+01 .11045E+01 + .24245E+01 .10541E+01 + .24582E+01 .10059E+01 + .24923E+01 .95974E+00 + .25270E+01 .91564E+00 + .25621E+01 .87348E+00 + .25977E+01 .83319E+00 + .26338E+01 .79468E+00 + .26704E+01 .75788E+00 + .27075E+01 .72273E+00 + .27451E+01 .68916E+00 + .27833E+01 .65709E+00 + .28220E+01 .62648E+00 + .28612E+01 .59725E+00 + .29009E+01 .56935E+00 + .29412E+01 .54273E+00 + .29821E+01 .51733E+00 + .30236E+01 .49309E+00 + .30656E+01 .46997E+00 + .31082E+01 .44792E+00 + .31514E+01 .41812E+00 + .31952E+01 .39835E+00 + .32396E+01 .37950E+00 + .32846E+01 .36154E+00 + .33303E+01 .34442E+00 + .33765E+01 .32812E+00 + .34235E+01 .31259E+00 + .34710E+01 .29780E+00 + .35193E+01 .28372E+00 + .35682E+01 .27031E+00 + .36178E+01 .25754E+00 + .36681E+01 .24538E+00 + .37190E+01 .23381E+00 + .37707E+01 .22279E+00 + .38231E+01 .21231E+00 + .38762E+01 .20234E+00 + .39301E+01 .19284E+00 + .39847E+01 .18381E+00 + .40401E+01 .17522E+00 + .40963E+01 .16704E+00 + .41532E+01 .15927E+00 + .42109E+01 .15187E+00 + .42694E+01 .14484E+00 + .43288E+01 .13815E+00 + .43889E+01 .13178E+00 + .44499E+01 .12573E+00 + .45118E+01 .11997E+00 + .45745E+01 .11450E+00 + .46380E+01 .10930E+00 + .47025E+01 .10435E+00 + .47678E+01 .99642E-01 + .48341E+01 .95168E-01 + .49013E+01 .90914E-01 + .49694E+01 .86869E-01 + .50385E+01 .83023E-01 + .51085E+01 .79366E-01 + .51795E+01 .75889E-01 + .52515E+01 .72583E-01 + .53244E+01 .69439E-01 + .53984E+01 .66450E-01 + .54735E+01 .63608E-01 + .55495E+01 .60905E-01 + .56266E+01 .58335E-01 + .57048E+01 .55891E-01 + .57841E+01 .53567E-01 + .58645E+01 .51357E-01 + .59460E+01 .49255E-01 + .60286E+01 .47255E-01 + .61124E+01 .45353E-01 + .61974E+01 .43544E-01 + .62835E+01 .41824E-01 + .63708E+01 .40187E-01 + .64594E+01 .38629E-01 + .65491E+01 .37148E-01 + .66401E+01 .35738E-01 + .67324E+01 .34397E-01 + .68260E+01 .33120E-01 + .69209E+01 .31371E-01 + .70170E+01 .30230E-01 + .71146E+01 .29145E-01 + .72134E+01 .28112E-01 + .73137E+01 .27130E-01 + .74153E+01 .26194E-01 + .75184E+01 .25304E-01 + .76229E+01 .24456E-01 + .77288E+01 .23649E-01 + .78362E+01 .22881E-01 + .79451E+01 .22150E-01 + .80555E+01 .21454E-01 + .81675E+01 .20791E-01 + .82810E+01 .20160E-01 + .83961E+01 .19559E-01 + .85128E+01 .18987E-01 + .86311E+01 .18443E-01 + .87510E+01 .17924E-01 + .88726E+01 .17431E-01 + .89959E+01 .16961E-01 + .91209E+01 .16513E-01 + .92477E+01 .16088E-01 + .93762E+01 .15682E-01 + .95065E+01 .15297E-01 + .96386E+01 .14930E-01 + .97726E+01 .14581E-01 + .99084E+01 .14249E-01 + .10046E+02 .13933E-01 + .10186E+02 .13633E-01 + .10327E+02 .13348E-01 + .10471E+02 .13077E-01 + .10616E+02 .12819E-01 + .10764E+02 .12575E-01 + .10913E+02 .12343E-01 + .11065E+02 .12123E-01 + .11219E+02 .11914E-01 + .11375E+02 .11717E-01 + .11533E+02 .11530E-01 + .11693E+02 .11353E-01 + .11856E+02 .11186E-01 + .12020E+02 .11028E-01 + .12187E+02 .10879E-01 + .12357E+02 .10739E-01 + .12529E+02 .10607E-01 + .12703E+02 .10483E-01 + .12879E+02 .10367E-01 + .13058E+02 .10258E-01 + .13240E+02 .10157E-01 + .13424E+02 .10062E-01 + .13610E+02 .99746E-02 + .13799E+02 .98934E-02 + .13991E+02 .98186E-02 + .14186E+02 .97498E-02 + .14383E+02 .96871E-02 + .14583E+02 .96301E-02 + .14785E+02 .95787E-02 + .14991E+02 .95328E-02 + .15199E+02 .94923E-02 + .15410E+02 .94569E-02 + .15625E+02 .94266E-02 + .15842E+02 .94013E-02 + .16062E+02 .93809E-02 + .16285E+02 .93652E-02 + .16511E+02 .93541E-02 + .16741E+02 .93476E-02 + .16973E+02 .90742E-02 + .17209E+02 .90763E-02 + .17449E+02 .90826E-02 + .17691E+02 .90931E-02 + .17937E+02 .91077E-02 + .18186E+02 .91263E-02 + .18439E+02 .91489E-02 + .18695E+02 .91754E-02 + .18955E+02 .92058E-02 + .19218E+02 .92401E-02 + .19485E+02 .92781E-02 + .19756E+02 .93200E-02 + .20031E+02 .93656E-02 + .20309E+02 .94149E-02 + .20591E+02 .94679E-02 + .20878E+02 .95246E-02 + .21168E+02 .95849E-02 + .21462E+02 .96489E-02 + .21760E+02 .97165E-02 + .22063E+02 .97877E-02 + .22369E+02 .98625E-02 + .22680E+02 .99409E-02 + .22995E+02 .10023E-01 + .23315E+02 .10108E-01 + .23639E+02 .10198E-01 + .23967E+02 .10290E-01 + .24300E+02 .10387E-01 + .24638E+02 .10486E-01 + .24981E+02 .10590E-01 + .25328E+02 .10697E-01 + .25680E+02 .10807E-01 + .26037E+02 .10921E-01 + .26398E+02 .11039E-01 + .26765E+02 .11160E-01 + .27137E+02 .11285E-01 + .27514E+02 .11413E-01 + .27897E+02 .11545E-01 + .28284E+02 .11681E-01 + .28678E+02 .11820E-01 + .29076E+02 .11963E-01 + .29480E+02 .12109E-01 + .29890E+02 .12259E-01 + .30305E+02 .12412E-01 + .30726E+02 .12569E-01 + .31153E+02 .12730E-01 + .31586E+02 .12894E-01 + .32025E+02 .13062E-01 + .32470E+02 .13234E-01 + .32922E+02 .13409E-01 + .33379E+02 .13587E-01 + .33843E+02 .13770E-01 + .34313E+02 .13956E-01 + .34790E+02 .14145E-01 + .35274E+02 .14339E-01 + .35764E+02 .14535E-01 + .36261E+02 .14736E-01 + .36765E+02 .14940E-01 + .37276E+02 .15148E-01 + .37794E+02 .15359E-01 + .38319E+02 .15574E-01 + .38852E+02 .15793E-01 + .39392E+02 .16015E-01 + .39939E+02 .16241E-01 + .40494E+02 .16470E-01 + .41057E+02 .16703E-01 + .41628E+02 .16940E-01 + .42206E+02 .17180E-01 + .42793E+02 .17424E-01 + .43387E+02 .17671E-01 + .43990E+02 .17922E-01 + .44602E+02 .18176E-01 + .45221E+02 .18434E-01 + .45850E+02 .18696E-01 + .46487E+02 .18961E-01 + .47133E+02 .18199E-01 + .47788E+02 .18458E-01 + .48452E+02 .18721E-01 + .49126E+02 .18987E-01 + .49808E+02 .19257E-01 + .50501E+02 .19530E-01 + .51202E+02 .19807E-01 + .51914E+02 .20086E-01 + .52635E+02 .20369E-01 + .53367E+02 .20655E-01 + .54109E+02 .20945E-01 + .54861E+02 .21238E-01 + .55623E+02 .21534E-01 + .56396E+02 .21833E-01 + .57180E+02 .22135E-01 + .57974E+02 .22440E-01 + .58780E+02 .22749E-01 + .59597E+02 .23060E-01 + .60425E+02 .23375E-01 + .61265E+02 .23693E-01 + .62116E+02 .24013E-01 + .62980E+02 .24337E-01 + .63855E+02 .24663E-01 + .64742E+02 .24993E-01 + .65642E+02 .25325E-01 + .66554E+02 .25660E-01 + .67479E+02 .25998E-01 + .68417E+02 .26338E-01 + .69368E+02 .26682E-01 + .70332E+02 .27028E-01 + .71309E+02 .27376E-01 + .72300E+02 .27727E-01 + .73305E+02 .28081E-01 + .74324E+02 .28437E-01 + .75357E+02 .28796E-01 + .76404E+02 .29158E-01 + .77466E+02 .29521E-01 + .78543E+02 .29887E-01 + .79634E+02 .30256E-01 + .80741E+02 .30627E-01 + .81863E+02 .31000E-01 + .83001E+02 .31375E-01 + .84154E+02 .31752E-01 + .85324E+02 .32132E-01 + .86509E+02 .32513E-01 + .87712E+02 .32897E-01 + .88931E+02 .33283E-01 + .90166E+02 .33671E-01 + .91420E+02 .34060E-01 + .92690E+02 .34452E-01 + .93978E+02 .34845E-01 + .95284E+02 .35241E-01 + .96608E+02 .35638E-01 + .97951E+02 .36036E-01 + .99312E+02 .36437E-01 + .10069E+03 .36839E-01 + .10209E+03 .37242E-01 + .10351E+03 .37647E-01 + .10495E+03 .38054E-01 + .10641E+03 .38462E-01 + .10789E+03 .38871E-01 + .10939E+03 .39281E-01 + .11091E+03 .39693E-01 + .11245E+03 .40106E-01 + .11401E+03 .40520E-01 + .11559E+03 .40935E-01 + .11720E+03 .41351E-01 + .11883E+03 .41768E-01 + .12048E+03 .42186E-01 + .12216E+03 .42605E-01 + .12385E+03 .43024E-01 + .12557E+03 .43445E-01 + .12732E+03 .43865E-01 + .12909E+03 .44286E-01 + .13088E+03 .44708E-01 + .13270E+03 .45130E-01 + .13455E+03 .45553E-01 + .13642E+03 .45975E-01 + .13831E+03 .46398E-01 + .14023E+03 .46821E-01 + .14218E+03 .47243E-01 + .14416E+03 .47666E-01 + .14616E+03 .48088E-01 + .14819E+03 .48511E-01 + .15025E+03 .48933E-01 + .15234E+03 .48131E-01 + .15446E+03 .48545E-01 + .15660E+03 .48959E-01 + .15878E+03 .49372E-01 + .16099E+03 .49785E-01 + .16323E+03 .50197E-01 + .16549E+03 .50607E-01 + .16779E+03 .51017E-01 + .17013E+03 .51426E-01 + .17249E+03 .51833E-01 + .17489E+03 .52240E-01 + .17732E+03 .52644E-01 + .17978E+03 .53047E-01 + .18228E+03 .53449E-01 + .18481E+03 .53849E-01 + .18738E+03 .54247E-01 + .18999E+03 .54643E-01 + .19263E+03 .55037E-01 + .19530E+03 .55429E-01 + .19802E+03 .55818E-01 + .20077E+03 .56205E-01 + .20356E+03 .56590E-01 + .20639E+03 .56972E-01 + .20926E+03 .57351E-01 + .21216E+03 .57727E-01 + .21511E+03 .58100E-01 + .21810E+03 .58470E-01 + .22113E+03 .58837E-01 + .22421E+03 .59200E-01 + .22732E+03 .59560E-01 + .23048E+03 .59916E-01 + .23369E+03 .60268E-01 + .23693E+03 .60616E-01 + .24023E+03 .60960E-01 + .24356E+03 .61300E-01 + .24695E+03 .61636E-01 + .25038E+03 .61967E-01 + .25386E+03 .62293E-01 + .25739E+03 .62615E-01 + .26097E+03 .62931E-01 + .26459E+03 .63243E-01 + .26827E+03 .63549E-01 + .27200E+03 .63850E-01 + .27578E+03 .64146E-01 + .27961E+03 .64435E-01 + .28350E+03 .64719E-01 + .28744E+03 .64997E-01 + .29143E+03 .65269E-01 + .29548E+03 .65535E-01 + .29959E+03 .65794E-01 + .30375E+03 .66046E-01 + .30797E+03 .66292E-01 + .31225E+03 .66531E-01 + .31659E+03 .66763E-01 + .32099E+03 .66988E-01 + .32545E+03 .67205E-01 + .32998E+03 .67415E-01 + .33456E+03 .67617E-01 + .33921E+03 .67812E-01 + .34392E+03 .67999E-01 + .34870E+03 .68177E-01 + .35355E+03 .68348E-01 + .35846E+03 .68510E-01 + .36345E+03 .68664E-01 + .36850E+03 .68809E-01 + .37362E+03 .68945E-01 + .37881E+03 .69073E-01 + .38407E+03 .69191E-01 + .38941E+03 .69300E-01 + .39482E+03 .69401E-01 + .40031E+03 .69491E-01 + .40587E+03 .69573E-01 + .41151E+03 .69644E-01 + .41723E+03 .69706E-01 + .42303E+03 .69759E-01 + .42891E+03 .69801E-01 + .43487E+03 .69833E-01 + .44092E+03 .69855E-01 + .44704E+03 .69867E-01 + .45326E+03 .69869E-01 + .45956E+03 .69860E-01 + .46594E+03 .69841E-01 + .47242E+03 .69812E-01 + .47898E+03 .69771E-01 + .48564E+03 .69721E-01 + .49239E+03 .69659E-01 + .49923E+03 .69587E-01 + .50617E+03 .69504E-01 + .51320E+03 .69410E-01 + .52034E+03 .69305E-01 + .52757E+03 .69190E-01 + .53490E+03 .69063E-01 + .54233E+03 .68926E-01 + .54987E+03 .68778E-01 + .55751E+03 .68619E-01 + .56526E+03 .67481E-01 + .57311E+03 .67309E-01 + .58108E+03 .67126E-01 + .58916E+03 .66932E-01 + .59734E+03 .66728E-01 + .60564E+03 .66513E-01 + .61406E+03 .66287E-01 + .62260E+03 .66051E-01 + .63125E+03 .65805E-01 + .64002E+03 .65548E-01 + .64891E+03 .65281E-01 + .65793E+03 .65003E-01 + .66708E+03 .64716E-01 + .67635E+03 .64418E-01 + .68575E+03 .64111E-01 + .69528E+03 .63793E-01 + .70494E+03 .63466E-01 + .71474E+03 .63129E-01 + .72467E+03 .62783E-01 + .73474E+03 .62428E-01 + .74495E+03 .62063E-01 + .75530E+03 .61689E-01 + .76580E+03 .61307E-01 + .77644E+03 .60915E-01 + .78723E+03 .60515E-01 + .79817E+03 .60107E-01 + .80927E+03 .59691E-01 + .82051E+03 .59266E-01 + .83192E+03 .58834E-01 + .84348E+03 .58394E-01 + .85520E+03 .57946E-01 + .86709E+03 .57492E-01 + .87914E+03 .57030E-01 + .89135E+03 .56562E-01 + .90374E+03 .56087E-01 + .91630E+03 .55605E-01 + .92903E+03 .55118E-01 + .94195E+03 .54624E-01 + .95504E+03 .54125E-01 + .96831E+03 .53621E-01 + .98177E+03 .53111E-01 + .99541E+03 .52596E-01 + .10092E+04 .52077E-01 + .10233E+04 .51553E-01 + .10375E+04 .51024E-01 + .10519E+04 .50492E-01 + .10665E+04 .49956E-01 + .10813E+04 .49416E-01 + .10964E+04 .48873E-01 + .11116E+04 .48328E-01 + .11271E+04 .47779E-01 + .11427E+04 .47228E-01 + .11586E+04 .46674E-01 + .11747E+04 .46118E-01 + .11910E+04 .45561E-01 + .12076E+04 .45002E-01 + .12244E+04 .44442E-01 + .12414E+04 .43880E-01 + .12586E+04 .43318E-01 + .12761E+04 .42755E-01 + .12939E+04 .42192E-01 + .13118E+04 .41629E-01 + .13301E+04 .41065E-01 + .13486E+04 .40502E-01 + .13673E+04 .39940E-01 + .13863E+04 .39378E-01 + .14056E+04 .38817E-01 + .14251E+04 .38257E-01 + .14449E+04 .37698E-01 + .14650E+04 .37142E-01 + .14853E+04 .36586E-01 + .15060E+04 .36033E-01 + .15269E+04 .35482E-01 + .15481E+04 .34933E-01 + .15697E+04 .34387E-01 + .15915E+04 .33843E-01 + .16136E+04 .33302E-01 + .16360E+04 .32764E-01 + .16587E+04 .32229E-01 + .16818E+04 .31698E-01 + .17052E+04 .31170E-01 + .17289E+04 .30645E-01 + .17529E+04 .30125E-01 + .17773E+04 .29608E-01 + .18020E+04 .29095E-01 + .18270E+04 .28586E-01 + .18524E+04 .28082E-01 + .18781E+04 .27582E-01 + .19042E+04 .27086E-01 + .19307E+04 .26595E-01 + .19575E+04 .26108E-01 + .19847E+04 .25626E-01 + .20123E+04 .25149E-01 + .20403E+04 .24677E-01 + .20686E+04 .24210E-01 + .20974E+04 .23748E-01 + .21265E+04 .23291E-01 + .21561E+04 .22840E-01 + .21861E+04 .22393E-01 + .22164E+04 .21952E-01 + .22472E+04 .21516E-01 + .22785E+04 .21086E-01 + .23101E+04 .20792E-01 + .23422E+04 .20369E-01 + .23748E+04 .19951E-01 + .24078E+04 .19539E-01 + .24413E+04 .19132E-01 + .24752E+04 .18731E-01 + .25096E+04 .18336E-01 + .25445E+04 .17947E-01 + .25798E+04 .17563E-01 + .26157E+04 .17185E-01 + .26520E+04 .16812E-01 + .26889E+04 .16446E-01 + .27262E+04 .16085E-01 + .27641E+04 .15730E-01 + .28025E+04 .15380E-01 + .28415E+04 .15036E-01 + .28810E+04 .14698E-01 + .29210E+04 .14365E-01 + .29616E+04 .14038E-01 + .30028E+04 .13716E-01 + .30445E+04 .13400E-01 + .30868E+04 .13090E-01 + .31297E+04 .12785E-01 + .31732E+04 .12485E-01 + .32173E+04 .12191E-01 + .32620E+04 .11902E-01 + .33074E+04 .11618E-01 + .33533E+04 .11340E-01 + .33999E+04 .11067E-01 + .34472E+04 .10799E-01 + .34951E+04 .10536E-01 + .35436E+04 .10279E-01 + .35929E+04 .10026E-01 + .36428E+04 .97783E-02 + .36935E+04 .95355E-02 + .37448E+04 .92976E-02 + .37968E+04 .90646E-02 + .38496E+04 .88362E-02 + .39031E+04 .86126E-02 + .39573E+04 .83936E-02 + .40123E+04 .81792E-02 + .40681E+04 .79693E-02 + .41246E+04 .77638E-02 + .41819E+04 .75628E-02 + .42401E+04 .73661E-02 + .42990E+04 .71737E-02 + .43587E+04 .69855E-02 + .44193E+04 .68014E-02 + .44807E+04 .66215E-02 + .45430E+04 .64456E-02 + .46061E+04 .62736E-02 + .46701E+04 .61056E-02 + .47351E+04 .59413E-02 + .48009E+04 .57809E-02 + .48676E+04 .56242E-02 + .49352E+04 .54711E-02 + .50038E+04 .53216E-02 + .50733E+04 .51757E-02 + .51439E+04 .50332E-02 + .52153E+04 .48941E-02 + .52878E+04 .47584E-02 + .53613E+04 .46260E-02 + .54358E+04 .44968E-02 + .55114E+04 .43707E-02 + .55880E+04 .42477E-02 + .56656E+04 .41278E-02 + .57443E+04 .40109E-02 + .58242E+04 .38969E-02 + .59051E+04 .37858E-02 + .59872E+04 .36774E-02 + .60704E+04 .35719E-02 + .61548E+04 .34690E-02 + .62403E+04 .33688E-02 + .63270E+04 .32711E-02 + .64149E+04 .31760E-02 + .65041E+04 .30834E-02 + .65945E+04 .29932E-02 + .66861E+04 .29053E-02 + .67790E+04 .28198E-02 + .68733E+04 .27366E-02 + .69688E+04 .26556E-02 + .70656E+04 .25767E-02 + .71638E+04 .25000E-02 + .72634E+04 .24253E-02 + .73643E+04 .23527E-02 + .74667E+04 .22821E-02 + .75704E+04 .22134E-02 + .76756E+04 .21466E-02 + .77823E+04 .20816E-02 + .78905E+04 .20184E-02 + .80001E+04 .19570E-02 + .81113E+04 .18973E-02 + .82240E+04 .18393E-02 + .83383E+04 .17829E-02 + .84542E+04 .17281E-02 + .85717E+04 .16749E-02 + .86908E+04 .16231E-02 + .88116E+04 .15729E-02 + .89341E+04 .15241E-02 + .90582E+04 .14767E-02 + .91841E+04 .14306E-02 + .93117E+04 .13859E-02 + .94412E+04 .13425E-02 + .95724E+04 .13004E-02 + .97054E+04 .12595E-02 + .98403E+04 .12198E-02 + .99770E+04 .11813E-02 + .10116E+05 .11439E-02 + .10256E+05 .11076E-02 + .10399E+05 .10724E-02 + .10543E+05 .10382E-02 + .10690E+05 .10051E-02 + .10838E+05 .97293E-03 + .10989E+05 .94175E-03 + .11142E+05 .91152E-03 + .11297E+05 .88427E-03 + .11454E+05 .85575E-03 + .11613E+05 .82810E-03 + .11774E+05 .80128E-03 + .11938E+05 .77530E-03 + .12104E+05 .75010E-03 + .12272E+05 .72569E-03 + .12442E+05 .70203E-03 + .12615E+05 .67909E-03 + .12791E+05 .65688E-03 + .12968E+05 .63535E-03 + .13149E+05 .61449E-03 + .13331E+05 .59428E-03 + .13517E+05 .57471E-03 + .13704E+05 .55575E-03 + .13895E+05 .53739E-03 + .14088E+05 .51960E-03 + .14284E+05 .50238E-03 + .14482E+05 .48571E-03 + .14684E+05 .46956E-03 + .14888E+05 .45393E-03 + .15095E+05 .43879E-03 + .15304E+05 .42414E-03 + .15517E+05 .40996E-03 + .15733E+05 .39623E-03 + .15951E+05 .38294E-03 + .16173E+05 .37008E-03 + .16398E+05 .35764E-03 + .16626E+05 .34560E-03 + .16857E+05 .33395E-03 + .17091E+05 .32267E-03 + .17329E+05 .31177E-03 + .17569E+05 .30121E-03 + .17814E+05 .29101E-03 + .18061E+05 .28113E-03 + .18312E+05 .27158E-03 + .18567E+05 .26235E-03 + .18825E+05 .25341E-03 + .19086E+05 .24477E-03 + .19351E+05 .23642E-03 + .19620E+05 .22834E-03 + .19893E+05 .22053E-03 + .20170E+05 .21297E-03 + .20450E+05 .20567E-03 + .20734E+05 .19861E-03 + .21022E+05 .19179E-03 + .21314E+05 .18519E-03 + .21611E+05 .17881E-03 + .21911E+05 .17265E-03 + .22215E+05 .16669E-03 + .22524E+05 .16093E-03 + .22837E+05 .15537E-03 + .23154E+05 .14999E-03 + .23476E+05 .14479E-03 + .23803E+05 .13977E-03 + .24133E+05 .13492E-03 + .24469E+05 .13023E-03 + .24809E+05 .12571E-03 + .25154E+05 .12133E-03 + .25503E+05 .11710E-03 + .25858E+05 .11302E-03 + .26217E+05 .10908E-03 + .26581E+05 .10527E-03 + .26951E+05 .10159E-03 + .27325E+05 .98031E-04 + .27705E+05 .94598E-04 + .28090E+05 .91282E-04 + .28480E+05 .88081E-04 + .28876E+05 .84989E-04 + .29277E+05 .82003E-04 + .29684E+05 .79120E-04 + .30097E+05 .76336E-04 + .30515E+05 .73648E-04 + .30939E+05 .71053E-04 + .31369E+05 .68547E-04 + .31805E+05 .66128E-04 + .32247E+05 .63792E-04 + .32695E+05 .61538E-04 + .33150E+05 .59361E-04 + .33610E+05 .57261E-04 + .34077E+05 .55233E-04 + .34551E+05 .53275E-04 + .35031E+05 .51386E-04 + .35518E+05 .49562E-04 + .36012E+05 .47803E-04 + .36512E+05 .46104E-04 + .37020E+05 .44465E-04 + .37534E+05 .42883E-04 + .38056E+05 .41356E-04 + .38585E+05 .39883E-04 + .39121E+05 .38462E-04 + .39664E+05 .37090E-04 + .40216E+05 .35767E-04 + .40775E+05 .34490E-04 + .41341E+05 .33258E-04 + .41916E+05 .32069E-04 + .42498E+05 .30922E-04 + .43089E+05 .29815E-04 + .43688E+05 .28748E-04 + .44295E+05 .27718E-04 + .44910E+05 .26725E-04 + .45535E+05 .25766E-04 + .46167E+05 .24842E-04 + .46809E+05 .23950E-04 + .47460E+05 .23090E-04 + .48119E+05 .22260E-04 + .48788E+05 .21460E-04 + .49466E+05 .20688E-04 + .50153E+05 .19944E-04 + .50850E+05 .19226E-04 + .51557E+05 .18534E-04 + .52274E+05 .17866E-04 + .53000E+05 .17222E-04 + .53737E+05 .16601E-04 + .54483E+05 .16002E-04 + .55241E+05 .15424E-04 + .56008E+05 .14867E-04 + .56787E+05 .14330E-04 + .57576E+05 .13812E-04 + .58376E+05 .13313E-04 + .59187E+05 .12831E-04 + .60010E+05 .12367E-04 + .60844E+05 .11919E-04 + .61689E+05 .11488E-04 + .62547E+05 .11072E-04 + .63416E+05 .10670E-04 + .64297E+05 .10283E-04 + .65191E+05 .99105E-05 + .66097E+05 .95510E-05 + .67015E+05 .92044E-05 + .67947E+05 .88702E-05 + .68891E+05 .85481E-05 + .69848E+05 .82375E-05 + .70819E+05 .79382E-05 + .71803E+05 .76496E-05 + .72801E+05 .73714E-05 + .73813E+05 .71032E-05 + .74839E+05 .68448E-05 + .75879E+05 .65956E-05 + .76933E+05 .63554E-05 + .78002E+05 .61239E-05 + .79086E+05 .59008E-05 + .80186E+05 .56858E-05 + .81300E+05 .54785E-05 + .82430E+05 .52787E-05 + .83575E+05 .50862E-05 + .84737E+05 .49006E-05 + .85914E+05 .47217E-05 + .87108E+05 .45493E-05 + .88319E+05 .43832E-05 + .89546E+05 .42231E-05 + .90791E+05 .40688E-05 + .92053E+05 .39201E-05 + .93332E+05 .37768E-05 + .94629E+05 .36387E-05 + .95944E+05 .35056E-05 + .97277E+05 .33774E-05 + .98629E+05 .32538E-05 + .10000E+06 .31349E-05 + -1 -1 + -2 -2 \ No newline at end of file diff --git a/examples/advanced/xray_fluorescence/merc_flx_alp_min.dat b/examples/advanced/xray_fluorescence/merc_flx_alp_min.dat new file mode 100644 index 0000000000..9433bc731e --- /dev/null +++ b/examples/advanced/xray_fluorescence/merc_flx_alp_min.dat @@ -0,0 +1,837 @@ + .10023E+01 .11167E+02 + .10162E+01 .11364E+02 + .10304E+01 .11565E+02 + .10447E+01 .11771E+02 + .10592E+01 .11982E+02 + .10739E+01 .12198E+02 + .10888E+01 .12419E+02 + .11040E+01 .12289E+02 + .11193E+01 .11949E+02 + .11349E+01 .11617E+02 + .11506E+01 .11292E+02 + .11666E+01 .10976E+02 + .11828E+01 .10668E+02 + .11993E+01 .10367E+02 + .12159E+01 .10074E+02 + .12328E+01 .97885E+01 + .12500E+01 .95099E+01 + .12674E+01 .92384E+01 + .12850E+01 .89737E+01 + .13028E+01 .87159E+01 + .13209E+01 .84646E+01 + .13393E+01 .82199E+01 + .13579E+01 .79815E+01 + .13768E+01 .77493E+01 + .13959E+01 .75232E+01 + .14153E+01 .73031E+01 + .14350E+01 .70888E+01 + .14549E+01 .68802E+01 + .14751E+01 .66772E+01 + .14956E+01 .64796E+01 + .15164E+01 .62874E+01 + .15375E+01 .61004E+01 + .15589E+01 .59185E+01 + .15805E+01 .57416E+01 + .16025E+01 .55695E+01 + .16248E+01 .54022E+01 + .16473E+01 .52396E+01 + .16702E+01 .50815E+01 + .16934E+01 .49278E+01 + .17170E+01 .47785E+01 + .17408E+01 .46334E+01 + .17650E+01 .44924E+01 + .17896E+01 .43554E+01 + .18144E+01 .42224E+01 + .18397E+01 .40933E+01 + .18652E+01 .39678E+01 + .18911E+01 .38461E+01 + .19174E+01 .37279E+01 + .19441E+01 .36131E+01 + .19711E+01 .35018E+01 + .19985E+01 .33937E+01 + .20263E+01 .32889E+01 + .20544E+01 .31872E+01 + .20830E+01 .30897E+01 + .21119E+01 .29940E+01 + .21413E+01 .29013E+01 + .21710E+01 .28113E+01 + .22012E+01 .27241E+01 + .22318E+01 .26396E+01 + .22628E+01 .25577E+01 + .22942E+01 .24783E+01 + .23261E+01 .24014E+01 + .23585E+01 .23269E+01 + .23912E+01 .22547E+01 + .24245E+01 .21848E+01 + .24582E+01 .21171E+01 + .24923E+01 .20516E+01 + .25270E+01 .19882E+01 + .25621E+01 .19267E+01 + .25977E+01 .18673E+01 + .26338E+01 .18098E+01 + .26704E+01 .17541E+01 + .27075E+01 .17003E+01 + .27451E+01 .16482E+01 + .27833E+01 .15978E+01 + .28220E+01 .15491E+01 + .28612E+01 .15019E+01 + .29009E+01 .14564E+01 + .29412E+01 .14124E+01 + .29821E+01 .13698E+01 + .30236E+01 .13287E+01 + .30656E+01 .12889E+01 + .31082E+01 .12505E+01 + .31514E+01 .12134E+01 + .31952E+01 .11776E+01 + .32396E+01 .11430E+01 + .32846E+01 .11096E+01 + .33303E+01 .10773E+01 + .33765E+01 .10462E+01 + .34235E+01 .10161E+01 + .34710E+01 .98711E+00 + .35193E+01 .95912E+00 + .35682E+01 .93211E+00 + .36178E+01 .90606E+00 + .36681E+01 .88094E+00 + .37190E+01 .85671E+00 + .37707E+01 .83335E+00 + .38231E+01 .81083E+00 + .38762E+01 .78912E+00 + .39301E+01 .76821E+00 + .39847E+01 .74805E+00 + .40401E+01 .72863E+00 + .40963E+01 .70993E+00 + .41532E+01 .69192E+00 + .42109E+01 .67458E+00 + .42694E+01 .65788E+00 + .43288E+01 .64181E+00 + .43889E+01 .62635E+00 + .44499E+01 .61147E+00 + .45118E+01 .59717E+00 + .45745E+01 .58341E+00 + .46380E+01 .57018E+00 + .47025E+01 .55937E+00 + .47678E+01 .54711E+00 + .48341E+01 .53534E+00 + .49013E+01 .52403E+00 + .49694E+01 .51317E+00 + .50385E+01 .50275E+00 + .51085E+01 .49274E+00 + .51795E+01 .48314E+00 + .52515E+01 .47394E+00 + .53244E+01 .46511E+00 + .53984E+01 .45666E+00 + .54735E+01 .44855E+00 + .55495E+01 .44079E+00 + .56266E+01 .43337E+00 + .57048E+01 .42626E+00 + .57841E+01 .41946E+00 + .58645E+01 .41296E+00 + .59460E+01 .40675E+00 + .60286E+01 .40083E+00 + .61124E+01 .39517E+00 + .61974E+01 .38977E+00 + .62835E+01 .38463E+00 + .63708E+01 .37973E+00 + .64594E+01 .37506E+00 + .65491E+01 .37063E+00 + .66401E+01 .36641E+00 + .67324E+01 .36241E+00 + .68260E+01 .35861E+00 + .69209E+01 .35501E+00 + .70170E+01 .35161E+00 + .71146E+01 .34839E+00 + .72134E+01 .34535E+00 + .73137E+01 .34248E+00 + .74153E+01 .33978E+00 + .75184E+01 .33723E+00 + .76229E+01 .33485E+00 + .77288E+01 .33262E+00 + .78362E+01 .33053E+00 + .79451E+01 .32858E+00 + .80555E+01 .32676E+00 + .81675E+01 .32508E+00 + .82810E+01 .32352E+00 + .83961E+01 .32209E+00 + .85128E+01 .32077E+00 + .86311E+01 .31956E+00 + .87510E+01 .31846E+00 + .88726E+01 .31747E+00 + .89959E+01 .31658E+00 + .91209E+01 .31578E+00 + .92477E+01 .31508E+00 + .93762E+01 .31447E+00 + .95065E+01 .31394E+00 + .96386E+01 .31349E+00 + .97726E+01 .31313E+00 + .99084E+01 .31284E+00 + .10046E+02 .31262E+00 + .10186E+02 .31247E+00 + .10327E+02 .31239E+00 + .10471E+02 .31237E+00 + .10616E+02 .31241E+00 + .10764E+02 .31251E+00 + .10913E+02 .31266E+00 + .11065E+02 .31287E+00 + .11219E+02 .31312E+00 + .11375E+02 .31342E+00 + .11533E+02 .31376E+00 + .11693E+02 .31415E+00 + .11856E+02 .31500E+00 + .12020E+02 .31545E+00 + .12187E+02 .31594E+00 + .12357E+02 .31645E+00 + .12529E+02 .31700E+00 + .12703E+02 .31757E+00 + .12879E+02 .31816E+00 + .13058E+02 .31878E+00 + .13240E+02 .31941E+00 + .13424E+02 .32005E+00 + .13610E+02 .32071E+00 + .13799E+02 .32138E+00 + .13991E+02 .32206E+00 + .14186E+02 .32275E+00 + .14383E+02 .32343E+00 + .14583E+02 .32412E+00 + .14785E+02 .32481E+00 + .14991E+02 .32549E+00 + .15199E+02 .32617E+00 + .15410E+02 .32684E+00 + .15625E+02 .32750E+00 + .15842E+02 .32814E+00 + .16062E+02 .32878E+00 + .16285E+02 .32939E+00 + .16511E+02 .32998E+00 + .16741E+02 .33056E+00 + .16973E+02 .33111E+00 + .17209E+02 .33163E+00 + .17449E+02 .33213E+00 + .17691E+02 .33260E+00 + .17937E+02 .33303E+00 + .18186E+02 .33343E+00 + .18439E+02 .33380E+00 + .18695E+02 .33413E+00 + .18955E+02 .33442E+00 + .19218E+02 .33466E+00 + .19485E+02 .33487E+00 + .19756E+02 .33503E+00 + .20031E+02 .33514E+00 + .20309E+02 .33521E+00 + .20591E+02 .33523E+00 + .20878E+02 .33520E+00 + .21168E+02 .33511E+00 + .21462E+02 .33498E+00 + .21760E+02 .33478E+00 + .22063E+02 .33454E+00 + .22369E+02 .33424E+00 + .22680E+02 .33388E+00 + .22995E+02 .33346E+00 + .23315E+02 .33299E+00 + .23639E+02 .33245E+00 + .23967E+02 .33186E+00 + .24300E+02 .33121E+00 + .24638E+02 .33050E+00 + .24981E+02 .32974E+00 + .25328E+02 .32891E+00 + .25680E+02 .32802E+00 + .26037E+02 .32708E+00 + .26398E+02 .32608E+00 + .26765E+02 .32503E+00 + .27137E+02 .32392E+00 + .27514E+02 .32275E+00 + .27897E+02 .32153E+00 + .28284E+02 .32027E+00 + .28678E+02 .31895E+00 + .29076E+02 .31758E+00 + .29480E+02 .31617E+00 + .29890E+02 .31472E+00 + .30305E+02 .31323E+00 + .30726E+02 .31169E+00 + .31153E+02 .31013E+00 + .31586E+02 .30853E+00 + .32025E+02 .30690E+00 + .32470E+02 .30524E+00 + .32922E+02 .30356E+00 + .33379E+02 .30186E+00 + .33843E+02 .30015E+00 + .34313E+02 .29842E+00 + .34790E+02 .29683E+00 + .35274E+02 .29509E+00 + .35764E+02 .29335E+00 + .36261E+02 .29161E+00 + .36765E+02 .28988E+00 + .37276E+02 .28816E+00 + .37794E+02 .28645E+00 + .38319E+02 .28477E+00 + .38852E+02 .28310E+00 + .39392E+02 .28147E+00 + .39939E+02 .27987E+00 + .40494E+02 .27830E+00 + .41057E+02 .27677E+00 + .41628E+02 .27528E+00 + .42206E+02 .27384E+00 + .42793E+02 .27246E+00 + .43387E+02 .27112E+00 + .43990E+02 .26984E+00 + .44602E+02 .26862E+00 + .45221E+02 .26746E+00 + .45850E+02 .26637E+00 + .46487E+02 .26534E+00 + .47133E+02 .26439E+00 + .47788E+02 .26350E+00 + .48452E+02 .26269E+00 + .49126E+02 .26195E+00 + .49808E+02 .26129E+00 + .50501E+02 .26070E+00 + .51202E+02 .26018E+00 + .51914E+02 .25975E+00 + .52635E+02 .25939E+00 + .53367E+02 .25910E+00 + .54109E+02 .25889E+00 + .54861E+02 .25875E+00 + .55623E+02 .25869E+00 + .56396E+02 .25869E+00 + .57180E+02 .25877E+00 + .57974E+02 .25891E+00 + .58780E+02 .25912E+00 + .59597E+02 .25939E+00 + .60425E+02 .25972E+00 + .61265E+02 .26011E+00 + .62116E+02 .26055E+00 + .62980E+02 .26104E+00 + .63855E+02 .26159E+00 + .64742E+02 .26218E+00 + .65642E+02 .26281E+00 + .66554E+02 .26348E+00 + .67479E+02 .26419E+00 + .68417E+02 .26493E+00 + .69368E+02 .26569E+00 + .70332E+02 .26649E+00 + .71309E+02 .26731E+00 + .72300E+02 .26815E+00 + .73305E+02 .26901E+00 + .74324E+02 .26988E+00 + .75357E+02 .27076E+00 + .76404E+02 .27165E+00 + .77466E+02 .27255E+00 + .78543E+02 .27346E+00 + .79634E+02 .27436E+00 + .80741E+02 .27527E+00 + .81863E+02 .27617E+00 + .83001E+02 .27708E+00 + .84154E+02 .27797E+00 + .85324E+02 .27886E+00 + .86509E+02 .27974E+00 + .87712E+02 .28061E+00 + .88931E+02 .28147E+00 + .90166E+02 .28232E+00 + .91420E+02 .28315E+00 + .92690E+02 .28397E+00 + .93978E+02 .28477E+00 + .95284E+02 .28556E+00 + .96608E+02 .28633E+00 + .97951E+02 .28708E+00 + .99312E+02 .28782E+00 + .10069E+03 .28853E+00 + .10209E+03 .28923E+00 + .10351E+03 .28990E+00 + .10495E+03 .29056E+00 + .10641E+03 .29119E+00 + .10789E+03 .29180E+00 + .10939E+03 .29239E+00 + .11091E+03 .29295E+00 + .11245E+03 .29349E+00 + .11401E+03 .29401E+00 + .11559E+03 .29450E+00 + .11720E+03 .29496E+00 + .11883E+03 .29541E+00 + .12048E+03 .29584E+00 + .12216E+03 .29623E+00 + .12385E+03 .29659E+00 + .12557E+03 .29692E+00 + .12732E+03 .29723E+00 + .12909E+03 .29751E+00 + .13088E+03 .29775E+00 + .13270E+03 .29797E+00 + .13455E+03 .29816E+00 + .13642E+03 .29832E+00 + .13831E+03 .29845E+00 + .14023E+03 .29855E+00 + .14218E+03 .29862E+00 + .14416E+03 .29866E+00 + .14616E+03 .29867E+00 + .14819E+03 .29864E+00 + .15025E+03 .29859E+00 + .15234E+03 .29850E+00 + .15446E+03 .29838E+00 + .15660E+03 .29823E+00 + .15878E+03 .29805E+00 + .16099E+03 .29783E+00 + .16323E+03 .29759E+00 + .16549E+03 .29731E+00 + .16779E+03 .29700E+00 + .17013E+03 .29666E+00 + .17249E+03 .29629E+00 + .17489E+03 .29589E+00 + .17732E+03 .29546E+00 + .17978E+03 .29499E+00 + .18228E+03 .29449E+00 + .18481E+03 .29397E+00 + .18738E+03 .29341E+00 + .18999E+03 .29282E+00 + .19263E+03 .29221E+00 + .19530E+03 .29156E+00 + .19802E+03 .29089E+00 + .20077E+03 .29018E+00 + .20356E+03 .28945E+00 + .20639E+03 .28868E+00 + .20926E+03 .28789E+00 + .21216E+03 .28707E+00 + .21511E+03 .28623E+00 + .21810E+03 .28535E+00 + .22113E+03 .28445E+00 + .22421E+03 .28352E+00 + .22732E+03 .28257E+00 + .23048E+03 .28159E+00 + .23369E+03 .28058E+00 + .23693E+03 .27955E+00 + .24023E+03 .27849E+00 + .24356E+03 .27741E+00 + .24695E+03 .27631E+00 + .25038E+03 .27518E+00 + .25386E+03 .27403E+00 + .25739E+03 .27285E+00 + .26097E+03 .27165E+00 + .26459E+03 .27043E+00 + .26827E+03 .26919E+00 + .27200E+03 .26792E+00 + .27578E+03 .26664E+00 + .27961E+03 .26533E+00 + .28350E+03 .26400E+00 + .28744E+03 .26265E+00 + .29143E+03 .26129E+00 + .29548E+03 .25990E+00 + .29959E+03 .25849E+00 + .30375E+03 .25707E+00 + .30797E+03 .25562E+00 + .31225E+03 .25416E+00 + .31659E+03 .25268E+00 + .32099E+03 .25119E+00 + .32545E+03 .24967E+00 + .32998E+03 .24814E+00 + .33456E+03 .24660E+00 + .33921E+03 .24504E+00 + .34392E+03 .24346E+00 + .34870E+03 .24187E+00 + .35355E+03 .24026E+00 + .35846E+03 .23864E+00 + .36345E+03 .23700E+00 + .36850E+03 .23535E+00 + .37362E+03 .23369E+00 + .37881E+03 .23202E+00 + .38407E+03 .23033E+00 + .38941E+03 .22863E+00 + .39482E+03 .22692E+00 + .40031E+03 .22520E+00 + .40587E+03 .22346E+00 + .41151E+03 .22172E+00 + .41723E+03 .21996E+00 + .42303E+03 .21820E+00 + .42891E+03 .21642E+00 + .43487E+03 .21464E+00 + .44092E+03 .21285E+00 + .44704E+03 .21104E+00 + .45326E+03 .20923E+00 + .45956E+03 .20742E+00 + .46594E+03 .20559E+00 + .47242E+03 .20376E+00 + .47898E+03 .20192E+00 + .48564E+03 .20007E+00 + .49239E+03 .19822E+00 + .49923E+03 .19636E+00 + .50617E+03 .19453E+00 + .51320E+03 .19266E+00 + .52034E+03 .19079E+00 + .52757E+03 .18891E+00 + .53490E+03 .18703E+00 + .54233E+03 .18514E+00 + .54987E+03 .18326E+00 + .55751E+03 .18137E+00 + .56526E+03 .17947E+00 + .57311E+03 .17758E+00 + .58108E+03 .17568E+00 + .58916E+03 .17378E+00 + .59734E+03 .17188E+00 + .60564E+03 .16999E+00 + .61406E+03 .16809E+00 + .62260E+03 .16619E+00 + .63125E+03 .16429E+00 + .64002E+03 .16239E+00 + .64891E+03 .16049E+00 + .65793E+03 .15860E+00 + .66708E+03 .15671E+00 + .67635E+03 .15482E+00 + .68575E+03 .15293E+00 + .69528E+03 .15105E+00 + .70494E+03 .14916E+00 + .71474E+03 .14729E+00 + .72467E+03 .14542E+00 + .73474E+03 .14355E+00 + .74495E+03 .14169E+00 + .75530E+03 .13983E+00 + .76580E+03 .13798E+00 + .77644E+03 .13613E+00 + .78723E+03 .13429E+00 + .79817E+03 .13246E+00 + .80927E+03 .13064E+00 + .82051E+03 .12882E+00 + .83192E+03 .12701E+00 + .84348E+03 .12521E+00 + .85520E+03 .12342E+00 + .86709E+03 .12164E+00 + .87914E+03 .11986E+00 + .89135E+03 .11810E+00 + .90374E+03 .11634E+00 + .91630E+03 .11460E+00 + .92903E+03 .11286E+00 + .94195E+03 .11114E+00 + .95504E+03 .10943E+00 + .96831E+03 .10773E+00 + .98177E+03 .10604E+00 + .99541E+03 .10436E+00 + .10092E+04 .10269E+00 + .10233E+04 .10104E+00 + .10375E+04 .99399E-01 + .10519E+04 .97772E-01 + .10665E+04 .96157E-01 + .10813E+04 .94556E-01 + .10964E+04 .92969E-01 + .11116E+04 .91395E-01 + .11271E+04 .89835E-01 + .11427E+04 .88290E-01 + .11586E+04 .86758E-01 + .11747E+04 .85242E-01 + .11910E+04 .83740E-01 + .12076E+04 .82253E-01 + .12244E+04 .80781E-01 + .12414E+04 .79325E-01 + .12586E+04 .77883E-01 + .12761E+04 .76458E-01 + .12939E+04 .75047E-01 + .13118E+04 .73653E-01 + .13301E+04 .72274E-01 + .13486E+04 .70911E-01 + .13673E+04 .69565E-01 + .13863E+04 .68234E-01 + .14056E+04 .66920E-01 + .14251E+04 .65622E-01 + .14449E+04 .64340E-01 + .14650E+04 .63074E-01 + .14853E+04 .61825E-01 + .15060E+04 .60592E-01 + .15269E+04 .59376E-01 + .15481E+04 .58176E-01 + .15697E+04 .56993E-01 + .15915E+04 .55826E-01 + .16136E+04 .54675E-01 + .16360E+04 .53541E-01 + .16587E+04 .52424E-01 + .16818E+04 .51323E-01 + .17052E+04 .50238E-01 + .17289E+04 .49170E-01 + .17529E+04 .48118E-01 + .17773E+04 .47082E-01 + .18020E+04 .46062E-01 + .18270E+04 .45059E-01 + .18524E+04 .44071E-01 + .18781E+04 .43100E-01 + .19042E+04 .42144E-01 + .19307E+04 .41204E-01 + .19575E+04 .40280E-01 + .19847E+04 .39372E-01 + .20123E+04 .38479E-01 + .20403E+04 .37602E-01 + .20686E+04 .36740E-01 + .20974E+04 .35893E-01 + .21265E+04 .35061E-01 + .21561E+04 .34244E-01 + .21861E+04 .33442E-01 + .22164E+04 .32655E-01 + .22472E+04 .31882E-01 + .22785E+04 .31123E-01 + .23101E+04 .30379E-01 + .23422E+04 .29649E-01 + .23748E+04 .28919E-01 + .24078E+04 .28217E-01 + .24413E+04 .27529E-01 + .24752E+04 .26855E-01 + .25096E+04 .26194E-01 + .25445E+04 .25546E-01 + .25798E+04 .24911E-01 + .26157E+04 .24289E-01 + .26520E+04 .23680E-01 + .26889E+04 .23084E-01 + .27262E+04 .22500E-01 + .27641E+04 .21928E-01 + .28025E+04 .21368E-01 + .28415E+04 .20820E-01 + .28810E+04 .20284E-01 + .29210E+04 .19759E-01 + .29616E+04 .19246E-01 + .30028E+04 .18744E-01 + .30445E+04 .18253E-01 + .30868E+04 .17773E-01 + .31297E+04 .17304E-01 + .31732E+04 .16845E-01 + .32173E+04 .16397E-01 + .32620E+04 .15959E-01 + .33074E+04 .15531E-01 + .33533E+04 .15113E-01 + .33999E+04 .14704E-01 + .34472E+04 .14305E-01 + .34951E+04 .13916E-01 + .35436E+04 .13535E-01 + .35929E+04 .13164E-01 + .36428E+04 .12802E-01 + .36935E+04 .12448E-01 + .37448E+04 .12103E-01 + .37968E+04 .11766E-01 + .38496E+04 .11437E-01 + .39031E+04 .11117E-01 + .39573E+04 .10804E-01 + .40123E+04 .10499E-01 + .40681E+04 .10202E-01 + .41246E+04 .99124E-02 + .41819E+04 .96300E-02 + .42401E+04 .93547E-02 + .42990E+04 .90865E-02 + .43587E+04 .88251E-02 + .44193E+04 .85705E-02 + .44807E+04 .83224E-02 + .45430E+04 .80808E-02 + .46061E+04 .78455E-02 + .46701E+04 .76163E-02 + .47351E+04 .73932E-02 + .48009E+04 .71760E-02 + .48676E+04 .69646E-02 + .49352E+04 .67588E-02 + .50038E+04 .65585E-02 + .50733E+04 .63636E-02 + .51439E+04 .61740E-02 + .52153E+04 .59895E-02 + .52878E+04 .58101E-02 + .53613E+04 .56355E-02 + .54358E+04 .54658E-02 + .55114E+04 .53007E-02 + .55880E+04 .51403E-02 + .56656E+04 .49842E-02 + .57443E+04 .48326E-02 + .58242E+04 .46851E-02 + .59051E+04 .45419E-02 + .59872E+04 .44026E-02 + .60704E+04 .42673E-02 + .61548E+04 .41359E-02 + .62403E+04 .40082E-02 + .63270E+04 .38841E-02 + .64149E+04 .37636E-02 + .65041E+04 .36466E-02 + .65945E+04 .35330E-02 + .66861E+04 .34226E-02 + .67790E+04 .33155E-02 + .68733E+04 .32115E-02 + .69688E+04 .31106E-02 + .70656E+04 .30126E-02 + .71638E+04 .29175E-02 + .72634E+04 .28252E-02 + .73643E+04 .27356E-02 + .74667E+04 .26487E-02 + .75704E+04 .25644E-02 + .76756E+04 .24826E-02 + .77823E+04 .24033E-02 + .78905E+04 .23264E-02 + .80001E+04 .22518E-02 + .81113E+04 .21794E-02 + .82240E+04 .21092E-02 + .83383E+04 .20412E-02 + .84542E+04 .19752E-02 + .85717E+04 .19113E-02 + .86908E+04 .18493E-02 + .88116E+04 .17892E-02 + .89341E+04 .17310E-02 + .90582E+04 .16745E-02 + .91841E+04 .16199E-02 + .93117E+04 .15669E-02 + .94412E+04 .15155E-02 + .95724E+04 .14658E-02 + .97054E+04 .14176E-02 + .98403E+04 .13709E-02 + .99770E+04 .13257E-02 + .10116E+05 .12819E-02 + .10256E+05 .12395E-02 + .10399E+05 .11985E-02 + .10543E+05 .11587E-02 + .10690E+05 .11202E-02 + .10838E+05 .10829E-02 + .10989E+05 .10468E-02 + .11142E+05 .10119E-02 + .11297E+05 .97806E-03 + .11454E+05 .94532E-03 + .11613E+05 .91364E-03 + .11774E+05 .88298E-03 + .11938E+05 .85330E-03 + .12104E+05 .82459E-03 + .12272E+05 .79680E-03 + .12442E+05 .76992E-03 + .12615E+05 .74391E-03 + .12791E+05 .71875E-03 + .12968E+05 .69440E-03 + .13149E+05 .67086E-03 + .13331E+05 .64808E-03 + .13517E+05 .62605E-03 + .13704E+05 .60475E-03 + .13895E+05 .58414E-03 + .14088E+05 .56421E-03 + .14284E+05 .54495E-03 + .14482E+05 .52610E-03 + .14684E+05 .50810E-03 + .14888E+05 .49069E-03 + .15095E+05 .47386E-03 + .15304E+05 .45759E-03 + .15517E+05 .44186E-03 + .15733E+05 .42666E-03 + .15951E+05 .41196E-03 + .16173E+05 .39776E-03 + .16398E+05 .38403E-03 + .16626E+05 .37076E-03 + .16857E+05 .35794E-03 + .17091E+05 .34555E-03 + .17329E+05 .33357E-03 + .17569E+05 .32201E-03 + .17814E+05 .31083E-03 + .18061E+05 .30003E-03 + .18312E+05 .28959E-03 + .18567E+05 .27951E-03 + .18825E+05 .26977E-03 + .19086E+05 .26036E-03 + .19351E+05 .25128E-03 + .19620E+05 .24250E-03 + .19893E+05 .23402E-03 + .20170E+05 .22583E-03 + .20450E+05 .21792E-03 + .20734E+05 .21028E-03 + .21022E+05 .20291E-03 + .21314E+05 .19578E-03 + .21611E+05 .18891E-03 + .21911E+05 .18226E-03 + .22215E+05 .17585E-03 + .22524E+05 .16966E-03 + .22837E+05 .16368E-03 + .23154E+05 .15791E-03 + .23476E+05 .15233E-03 + .23803E+05 .14695E-03 + .24133E+05 .14176E-03 + .24469E+05 .13675E-03 + .24809E+05 .13191E-03 + .25154E+05 .12724E-03 + .25503E+05 .12273E-03 + .25858E+05 .11838E-03 + .26217E+05 .11417E-03 + .26581E+05 .11012E-03 + .26951E+05 .10621E-03 + .27325E+05 .10243E-03 + .27705E+05 .98788E-04 + .28090E+05 .95271E-04 + .28480E+05 .91878E-04 + .28876E+05 .88604E-04 + .29277E+05 .85444E-04 + .29684E+05 .82395E-04 + .30097E+05 .79454E-04 + .30515E+05 .76615E-04 + .30939E+05 .73877E-04 + .31369E+05 .71235E-04 + .31805E+05 .68686E-04 + .32247E+05 .66227E-04 + .32695E+05 .63855E-04 + .33150E+05 .61567E-04 + .33610E+05 .59359E-04 + .34077E+05 .57229E-04 + .34551E+05 .55175E-04 + .35031E+05 .53194E-04 + .35518E+05 .51283E-04 + .36012E+05 .49439E-04 + .36512E+05 .47661E-04 + .37020E+05 .45947E-04 + .37534E+05 .44293E-04 + .38056E+05 .42698E-04 + .38585E+05 .41159E-04 + .39121E+05 .39676E-04 + .39664E+05 .38245E-04 + .40216E+05 .36865E-04 + .40775E+05 .35535E-04 + .41341E+05 .34252E-04 + .41916E+05 .33014E-04 + .42498E+05 .31821E-04 + .43089E+05 .30671E-04 + .43688E+05 .29562E-04 + .44295E+05 .28492E-04 + .44910E+05 .27461E-04 + .45535E+05 .26467E-04 + .46167E+05 .25508E-04 + .46809E+05 .24584E-04 + .47460E+05 .23692E-04 + .48119E+05 .22833E-04 + .48788E+05 .22005E-04 + .49466E+05 .21206E-04 + .50153E+05 .20437E-04 + .50850E+05 .19694E-04 + .51557E+05 .18979E-04 + .52274E+05 .18289E-04 + .53000E+05 .17625E-04 + .53737E+05 .16984E-04 + .54483E+05 .16366E-04 + .55241E+05 .15770E-04 + .56008E+05 .15196E-04 + .56787E+05 .14643E-04 + .57576E+05 .14110E-04 + .58376E+05 .13596E-04 + .59187E+05 .13100E-04 + .60010E+05 .12623E-04 + .60844E+05 .12163E-04 + .61689E+05 .11719E-04 + .62547E+05 .11291E-04 + .63416E+05 .10879E-04 + .64297E+05 .10482E-04 + .65191E+05 .10099E-04 + .66097E+05 .97305E-05 + .67015E+05 .93750E-05 + .67947E+05 .90324E-05 + .68891E+05 .87023E-05 + .69848E+05 .83841E-05 + .70819E+05 .80775E-05 + .71803E+05 .77820E-05 + .72801E+05 .74973E-05 + .73813E+05 .72229E-05 + .74839E+05 .69585E-05 + .75879E+05 .67037E-05 + .76933E+05 .64582E-05 + .78002E+05 .62216E-05 + .79086E+05 .59937E-05 + .80186E+05 .57740E-05 + .81300E+05 .55624E-05 + .82430E+05 .53584E-05 + .83575E+05 .51619E-05 + .84737E+05 .49726E-05 + .85914E+05 .47901E-05 + .87108E+05 .46144E-05 + .88319E+05 .44450E-05 + .89546E+05 .42818E-05 + .90791E+05 .41246E-05 + .92053E+05 .39732E-05 + .93332E+05 .38272E-05 + .94629E+05 .36866E-05 + .95944E+05 .35512E-05 + .97277E+05 .34206E-05 + .98629E+05 .32949E-05 + .10000E+06 .31740E-05 + -1 -1 + -2 -2 \ No newline at end of file diff --git a/examples/advanced/xray_fluorescence/mercury2_flx_solmax.dat b/examples/advanced/xray_fluorescence/mercury2_flx_solmax.dat new file mode 100644 index 0000000000..55081e9cad --- /dev/null +++ b/examples/advanced/xray_fluorescence/mercury2_flx_solmax.dat @@ -0,0 +1,837 @@ + .10023E+01 .18822E+03 + .10162E+01 .19446E+03 + .10304E+01 .20096E+03 + .10447E+01 .20774E+03 + .10592E+01 .21479E+03 + .10739E+01 .22215E+03 + .10888E+01 .22983E+03 + .11040E+01 .22642E+03 + .11193E+01 .21636E+03 + .11349E+01 .20668E+03 + .11506E+01 .19739E+03 + .11666E+01 .18846E+03 + .11828E+01 .17989E+03 + .11993E+01 .17166E+03 + .12159E+01 .16376E+03 + .12328E+01 .15618E+03 + .12500E+01 .14891E+03 + .12674E+01 .14194E+03 + .12850E+01 .13526E+03 + .13028E+01 .12886E+03 + .13209E+01 .12273E+03 + .13393E+01 .11685E+03 + .13579E+01 .11123E+03 + .13768E+01 .10585E+03 + .13959E+01 .10070E+03 + .14153E+01 .95775E+02 + .14350E+01 .91066E+02 + .14549E+01 .86564E+02 + .14751E+01 .82262E+02 + .14956E+01 .78153E+02 + .15164E+01 .74228E+02 + .15375E+01 .70481E+02 + .15589E+01 .66905E+02 + .15805E+01 .63493E+02 + .16025E+01 .60239E+02 + .16248E+01 .57136E+02 + .16473E+01 .54178E+02 + .16702E+01 .51360E+02 + .16934E+01 .48675E+02 + .17170E+01 .46118E+02 + .17408E+01 .43683E+02 + .17650E+01 .41367E+02 + .17896E+01 .39163E+02 + .18144E+01 .37066E+02 + .18397E+01 .34599E+02 + .18652E+01 .32715E+02 + .18911E+01 .30927E+02 + .19174E+01 .29228E+02 + .19441E+01 .27616E+02 + .19711E+01 .26086E+02 + .19985E+01 .24634E+02 + .20263E+01 .23258E+02 + .20544E+01 .21953E+02 + .20830E+01 .20716E+02 + .21119E+01 .19544E+02 + .21413E+01 .18434E+02 + .21710E+01 .17383E+02 + .22012E+01 .16388E+02 + .22318E+01 .15446E+02 + .22628E+01 .14556E+02 + .22942E+01 .13713E+02 + .23261E+01 .12917E+02 + .23585E+01 .12164E+02 + .23912E+01 .11452E+02 + .24245E+01 .10780E+02 + .24582E+01 .10146E+02 + .24923E+01 .95464E+01 + .25270E+01 .89808E+01 + .25621E+01 .84471E+01 + .25977E+01 .79436E+01 + .26338E+01 .74688E+01 + .26704E+01 .70211E+01 + .27075E+01 .65992E+01 + .27451E+01 .62015E+01 + .27833E+01 .58269E+01 + .28220E+01 .54741E+01 + .28612E+01 .51418E+01 + .29009E+01 .48290E+01 + .29412E+01 .45347E+01 + .29821E+01 .42577E+01 + .30236E+01 .39971E+01 + .30656E+01 .37520E+01 + .31082E+01 .35216E+01 + .31514E+01 .33049E+01 + .31952E+01 .31013E+01 + .32396E+01 .29100E+01 + .32846E+01 .26468E+01 + .33303E+01 .24818E+01 + .33765E+01 .23270E+01 + .34235E+01 .21816E+01 + .34710E+01 .20452E+01 + .35193E+01 .19173E+01 + .35682E+01 .17973E+01 + .36178E+01 .16847E+01 + .36681E+01 .15792E+01 + .37190E+01 .14802E+01 + .37707E+01 .13875E+01 + .38231E+01 .13005E+01 + .38762E+01 .12190E+01 + .39301E+01 .11427E+01 + .39847E+01 .10712E+01 + .40401E+01 .10042E+01 + .40963E+01 .94139E+00 + .41532E+01 .88259E+00 + .42109E+01 .82753E+00 + .42694E+01 .77597E+00 + .43288E+01 .72769E+00 + .43889E+01 .68248E+00 + .44499E+01 .64015E+00 + .45118E+01 .60053E+00 + .45745E+01 .56343E+00 + .46380E+01 .52871E+00 + .47025E+01 .49620E+00 + .47678E+01 .46577E+00 + .48341E+01 .43729E+00 + .49013E+01 .41062E+00 + .49694E+01 .38567E+00 + .50385E+01 .36231E+00 + .51085E+01 .34044E+00 + .51795E+01 .31997E+00 + .52515E+01 .30080E+00 + .53244E+01 .28286E+00 + .53984E+01 .26607E+00 + .54735E+01 .25034E+00 + .55495E+01 .23562E+00 + .56266E+01 .22183E+00 + .57048E+01 .20891E+00 + .57841E+01 .19682E+00 + .58645E+01 .18549E+00 + .59460E+01 .17488E+00 + .60286E+01 .16494E+00 + .61124E+01 .15563E+00 + .61974E+01 .14690E+00 + .62835E+01 .13249E+00 + .63708E+01 .12511E+00 + .64594E+01 .11820E+00 + .65491E+01 .11172E+00 + .66401E+01 .10564E+00 + .67324E+01 .99943E-01 + .68260E+01 .94601E-01 + .69209E+01 .89591E-01 + .70170E+01 .84891E-01 + .71146E+01 .80482E-01 + .72134E+01 .76343E-01 + .73137E+01 .72458E-01 + .74153E+01 .68811E-01 + .75184E+01 .65387E-01 + .76229E+01 .62170E-01 + .77288E+01 .59148E-01 + .78362E+01 .56309E-01 + .79451E+01 .53640E-01 + .80555E+01 .51131E-01 + .81675E+01 .48772E-01 + .82810E+01 .46554E-01 + .83961E+01 .44467E-01 + .85128E+01 .42503E-01 + .86311E+01 .40655E-01 + .87510E+01 .38915E-01 + .88726E+01 .37278E-01 + .89959E+01 .35735E-01 + .91209E+01 .34283E-01 + .92477E+01 .32914E-01 + .93762E+01 .31625E-01 + .95065E+01 .30410E-01 + .96386E+01 .29264E-01 + .97726E+01 .28185E-01 + .99084E+01 .27167E-01 + .10046E+02 .26207E-01 + .10186E+02 .25302E-01 + .10327E+02 .24448E-01 + .10471E+02 .23643E-01 + .10616E+02 .22884E-01 + .10764E+02 .22168E-01 + .10913E+02 .21493E-01 + .11065E+02 .20856E-01 + .11219E+02 .20255E-01 + .11375E+02 .19689E-01 + .11533E+02 .19156E-01 + .11693E+02 .18653E-01 + .11856E+02 .18179E-01 + .12020E+02 .17733E-01 + .12187E+02 .17313E-01 + .12357E+02 .16918E-01 + .12529E+02 .15577E-01 + .12703E+02 .15245E-01 + .12879E+02 .14934E-01 + .13058E+02 .14642E-01 + .13240E+02 .14368E-01 + .13424E+02 .14112E-01 + .13610E+02 .13873E-01 + .13799E+02 .13649E-01 + .13991E+02 .13441E-01 + .14186E+02 .13248E-01 + .14383E+02 .13069E-01 + .14583E+02 .12904E-01 + .14785E+02 .12751E-01 + .14991E+02 .12611E-01 + .15199E+02 .12484E-01 + .15410E+02 .12367E-01 + .15625E+02 .12263E-01 + .15842E+02 .12169E-01 + .16062E+02 .12085E-01 + .16285E+02 .12012E-01 + .16511E+02 .11949E-01 + .16741E+02 .11896E-01 + .16973E+02 .11852E-01 + .17209E+02 .11817E-01 + .17449E+02 .11792E-01 + .17691E+02 .11775E-01 + .17937E+02 .11767E-01 + .18186E+02 .11768E-01 + .18439E+02 .11777E-01 + .18695E+02 .11795E-01 + .18955E+02 .11820E-01 + .19218E+02 .11854E-01 + .19485E+02 .11896E-01 + .19756E+02 .11946E-01 + .20031E+02 .12004E-01 + .20309E+02 .12069E-01 + .20591E+02 .12143E-01 + .20878E+02 .12224E-01 + .21168E+02 .12313E-01 + .21462E+02 .12410E-01 + .21760E+02 .12514E-01 + .22063E+02 .12627E-01 + .22369E+02 .12747E-01 + .22680E+02 .12875E-01 + .22995E+02 .13011E-01 + .23315E+02 .13155E-01 + .23639E+02 .13306E-01 + .23967E+02 .13466E-01 + .24300E+02 .13633E-01 + .24638E+02 .13809E-01 + .24981E+02 .13992E-01 + .25328E+02 .14184E-01 + .25680E+02 .14384E-01 + .26037E+02 .14593E-01 + .26398E+02 .14809E-01 + .26765E+02 .15035E-01 + .27137E+02 .15268E-01 + .27514E+02 .15103E-01 + .27897E+02 .15348E-01 + .28284E+02 .15601E-01 + .28678E+02 .15863E-01 + .29076E+02 .16133E-01 + .29480E+02 .16412E-01 + .29890E+02 .16701E-01 + .30305E+02 .16998E-01 + .30726E+02 .17304E-01 + .31153E+02 .17619E-01 + .31586E+02 .17944E-01 + .32025E+02 .18278E-01 + .32470E+02 .18621E-01 + .32922E+02 .18974E-01 + .33379E+02 .19337E-01 + .33843E+02 .19709E-01 + .34313E+02 .20091E-01 + .34790E+02 .20483E-01 + .35274E+02 .20885E-01 + .35764E+02 .21297E-01 + .36261E+02 .21719E-01 + .36765E+02 .22151E-01 + .37276E+02 .22593E-01 + .37794E+02 .23047E-01 + .38319E+02 .23510E-01 + .38852E+02 .23984E-01 + .39392E+02 .24469E-01 + .39939E+02 .24965E-01 + .40494E+02 .25471E-01 + .41057E+02 .25989E-01 + .41628E+02 .26517E-01 + .42206E+02 .27057E-01 + .42793E+02 .27608E-01 + .43387E+02 .28170E-01 + .43990E+02 .28744E-01 + .44602E+02 .29329E-01 + .45221E+02 .29926E-01 + .45850E+02 .30535E-01 + .46487E+02 .31155E-01 + .47133E+02 .31787E-01 + .47788E+02 .32431E-01 + .48452E+02 .33088E-01 + .49126E+02 .33756E-01 + .49808E+02 .34437E-01 + .50501E+02 .35130E-01 + .51202E+02 .35836E-01 + .51914E+02 .36554E-01 + .52635E+02 .37285E-01 + .53367E+02 .38029E-01 + .54109E+02 .38786E-01 + .54861E+02 .39555E-01 + .55623E+02 .40338E-01 + .56396E+02 .41134E-01 + .57180E+02 .41943E-01 + .57974E+02 .42766E-01 + .58780E+02 .43602E-01 + .59597E+02 .44452E-01 + .60425E+02 .45316E-01 + .61265E+02 .46193E-01 + .62116E+02 .47084E-01 + .62980E+02 .47990E-01 + .63855E+02 .48909E-01 + .64742E+02 .49843E-01 + .65642E+02 .49072E-01 + .66554E+02 .50005E-01 + .67479E+02 .50953E-01 + .68417E+02 .51915E-01 + .69368E+02 .52891E-01 + .70332E+02 .53882E-01 + .71309E+02 .54887E-01 + .72300E+02 .55907E-01 + .73305E+02 .56942E-01 + .74324E+02 .57992E-01 + .75357E+02 .59057E-01 + .76404E+02 .60138E-01 + .77466E+02 .61233E-01 + .78543E+02 .62344E-01 + .79634E+02 .63470E-01 + .80741E+02 .64612E-01 + .81863E+02 .65769E-01 + .83001E+02 .66942E-01 + .84154E+02 .68131E-01 + .85324E+02 .69335E-01 + .86509E+02 .70556E-01 + .87712E+02 .71792E-01 + .88931E+02 .73045E-01 + .90166E+02 .74314E-01 + .91420E+02 .75599E-01 + .92690E+02 .76900E-01 + .93978E+02 .78218E-01 + .95284E+02 .79552E-01 + .96608E+02 .80903E-01 + .97951E+02 .82270E-01 + .99312E+02 .83654E-01 + .10069E+03 .85054E-01 + .10209E+03 .86471E-01 + .10351E+03 .87905E-01 + .10495E+03 .89356E-01 + .10641E+03 .90823E-01 + .10789E+03 .92308E-01 + .10939E+03 .93809E-01 + .11091E+03 .95327E-01 + .11245E+03 .96862E-01 + .11401E+03 .98414E-01 + .11559E+03 .99982E-01 + .11720E+03 .10157E+00 + .11883E+03 .10317E+00 + .12048E+03 .10479E+00 + .12216E+03 .10643E+00 + .12385E+03 .10808E+00 + .12557E+03 .10975E+00 + .12732E+03 .11144E+00 + .12909E+03 .11314E+00 + .13088E+03 .11486E+00 + .13270E+03 .11660E+00 + .13455E+03 .11835E+00 + .13642E+03 .12012E+00 + .13831E+03 .12191E+00 + .14023E+03 .12371E+00 + .14218E+03 .12553E+00 + .14416E+03 .12737E+00 + .14616E+03 .12922E+00 + .14819E+03 .13109E+00 + .15025E+03 .13297E+00 + .15234E+03 .13487E+00 + .15446E+03 .13679E+00 + .15660E+03 .13872E+00 + .15878E+03 .14066E+00 + .16099E+03 .14262E+00 + .16323E+03 .14460E+00 + .16549E+03 .14659E+00 + .16779E+03 .14860E+00 + .17013E+03 .15062E+00 + .17249E+03 .15266E+00 + .17489E+03 .14622E+00 + .17732E+03 .14819E+00 + .17978E+03 .15018E+00 + .18228E+03 .15218E+00 + .18481E+03 .15419E+00 + .18738E+03 .15621E+00 + .18999E+03 .15825E+00 + .19263E+03 .16030E+00 + .19530E+03 .16236E+00 + .19802E+03 .16444E+00 + .20077E+03 .16653E+00 + .20356E+03 .16862E+00 + .20639E+03 .17073E+00 + .20926E+03 .17285E+00 + .21216E+03 .17498E+00 + .21511E+03 .17712E+00 + .21810E+03 .17927E+00 + .22113E+03 .18143E+00 + .22421E+03 .18359E+00 + .22732E+03 .18577E+00 + .23048E+03 .18795E+00 + .23369E+03 .19015E+00 + .23693E+03 .19235E+00 + .24023E+03 .19455E+00 + .24356E+03 .19677E+00 + .24695E+03 .19899E+00 + .25038E+03 .20121E+00 + .25386E+03 .20345E+00 + .25739E+03 .20568E+00 + .26097E+03 .20792E+00 + .26459E+03 .21017E+00 + .26827E+03 .21241E+00 + .27200E+03 .21467E+00 + .27578E+03 .21692E+00 + .27961E+03 .21917E+00 + .28350E+03 .22143E+00 + .28744E+03 .22369E+00 + .29143E+03 .22595E+00 + .29548E+03 .22821E+00 + .29959E+03 .23046E+00 + .30375E+03 .23272E+00 + .30797E+03 .23497E+00 + .31225E+03 .23722E+00 + .31659E+03 .23947E+00 + .32099E+03 .24172E+00 + .32545E+03 .24395E+00 + .32998E+03 .24619E+00 + .33456E+03 .24842E+00 + .33921E+03 .25064E+00 + .34392E+03 .25286E+00 + .34870E+03 .25506E+00 + .35355E+03 .25726E+00 + .35846E+03 .25945E+00 + .36345E+03 .26163E+00 + .36850E+03 .26380E+00 + .37362E+03 .26596E+00 + .37881E+03 .26811E+00 + .38407E+03 .27024E+00 + .38941E+03 .27236E+00 + .39482E+03 .27447E+00 + .40031E+03 .27656E+00 + .40587E+03 .27863E+00 + .41151E+03 .28069E+00 + .41723E+03 .28273E+00 + .42303E+03 .28475E+00 + .42891E+03 .28675E+00 + .43487E+03 .28874E+00 + .44092E+03 .29070E+00 + .44704E+03 .29264E+00 + .45326E+03 .29456E+00 + .45956E+03 .29645E+00 + .46594E+03 .29832E+00 + .47242E+03 .30017E+00 + .47898E+03 .30198E+00 + .48564E+03 .30378E+00 + .49239E+03 .30554E+00 + .49923E+03 .30728E+00 + .50617E+03 .30899E+00 + .51320E+03 .30271E+00 + .52034E+03 .30434E+00 + .52757E+03 .30594E+00 + .53490E+03 .30751E+00 + .54233E+03 .30905E+00 + .54987E+03 .31056E+00 + .55751E+03 .31203E+00 + .56526E+03 .31346E+00 + .57311E+03 .31486E+00 + .58108E+03 .31622E+00 + .58916E+03 .31755E+00 + .59734E+03 .31884E+00 + .60564E+03 .32008E+00 + .61406E+03 .32129E+00 + .62260E+03 .32246E+00 + .63125E+03 .32358E+00 + .64002E+03 .32467E+00 + .64891E+03 .32570E+00 + .65793E+03 .32670E+00 + .66708E+03 .32765E+00 + .67635E+03 .32855E+00 + .68575E+03 .32941E+00 + .69528E+03 .33022E+00 + .70494E+03 .33099E+00 + .71474E+03 .33170E+00 + .72467E+03 .33237E+00 + .73474E+03 .33299E+00 + .74495E+03 .33355E+00 + .75530E+03 .33407E+00 + .76580E+03 .33453E+00 + .77644E+03 .33494E+00 + .78723E+03 .33530E+00 + .79817E+03 .33561E+00 + .80927E+03 .33586E+00 + .82051E+03 .33605E+00 + .83192E+03 .33620E+00 + .84348E+03 .33628E+00 + .85520E+03 .33631E+00 + .86709E+03 .33629E+00 + .87914E+03 .33621E+00 + .89135E+03 .33607E+00 + .90374E+03 .33588E+00 + .91630E+03 .33563E+00 + .92903E+03 .33532E+00 + .94195E+03 .33495E+00 + .95504E+03 .33453E+00 + .96831E+03 .33405E+00 + .98177E+03 .33351E+00 + .99541E+03 .33291E+00 + .10092E+04 .33225E+00 + .10233E+04 .33154E+00 + .10375E+04 .33077E+00 + .10519E+04 .32994E+00 + .10665E+04 .32905E+00 + .10813E+04 .32810E+00 + .10964E+04 .32710E+00 + .11116E+04 .32604E+00 + .11271E+04 .32493E+00 + .11427E+04 .32375E+00 + .11586E+04 .32252E+00 + .11747E+04 .32124E+00 + .11910E+04 .31990E+00 + .12076E+04 .31850E+00 + .12244E+04 .31705E+00 + .12414E+04 .31555E+00 + .12586E+04 .31400E+00 + .12761E+04 .31239E+00 + .12939E+04 .31073E+00 + .13118E+04 .30901E+00 + .13301E+04 .30725E+00 + .13486E+04 .30544E+00 + .13673E+04 .30358E+00 + .13863E+04 .30167E+00 + .14056E+04 .29971E+00 + .14251E+04 .29771E+00 + .14449E+04 .29566E+00 + .14650E+04 .29357E+00 + .14853E+04 .29143E+00 + .15060E+04 .28925E+00 + .15269E+04 .28703E+00 + .15481E+04 .28477E+00 + .15697E+04 .28247E+00 + .15915E+04 .27620E+00 + .16136E+04 .27389E+00 + .16360E+04 .27154E+00 + .16587E+04 .26916E+00 + .16818E+04 .26675E+00 + .17052E+04 .26430E+00 + .17289E+04 .26182E+00 + .17529E+04 .25932E+00 + .17773E+04 .25678E+00 + .18020E+04 .25422E+00 + .18270E+04 .25163E+00 + .18524E+04 .24902E+00 + .18781E+04 .24638E+00 + .19042E+04 .24372E+00 + .19307E+04 .24105E+00 + .19575E+04 .23835E+00 + .19847E+04 .23563E+00 + .20123E+04 .23290E+00 + .20403E+04 .23015E+00 + .20686E+04 .22739E+00 + .20974E+04 .22462E+00 + .21265E+04 .22183E+00 + .21561E+04 .21903E+00 + .21861E+04 .21623E+00 + .22164E+04 .21342E+00 + .22472E+04 .21060E+00 + .22785E+04 .20778E+00 + .23101E+04 .20495E+00 + .23422E+04 .20212E+00 + .23748E+04 .19929E+00 + .24078E+04 .19646E+00 + .24413E+04 .19363E+00 + .24752E+04 .19081E+00 + .25096E+04 .18799E+00 + .25445E+04 .18517E+00 + .25798E+04 .18236E+00 + .26157E+04 .17956E+00 + .26520E+04 .17676E+00 + .26889E+04 .17398E+00 + .27262E+04 .17121E+00 + .27641E+04 .16844E+00 + .28025E+04 .16569E+00 + .28415E+04 .16296E+00 + .28810E+04 .16023E+00 + .29210E+04 .15753E+00 + .29616E+04 .15484E+00 + .30028E+04 .15216E+00 + .30445E+04 .14951E+00 + .30868E+04 .14687E+00 + .31297E+04 .14426E+00 + .31732E+04 .14166E+00 + .32173E+04 .13909E+00 + .32620E+04 .13653E+00 + .33074E+04 .13400E+00 + .33533E+04 .13150E+00 + .33999E+04 .12901E+00 + .34472E+04 .12655E+00 + .34951E+04 .12412E+00 + .35436E+04 .12171E+00 + .35929E+04 .11933E+00 + .36428E+04 .11697E+00 + .36935E+04 .11464E+00 + .37448E+04 .11234E+00 + .37968E+04 .11006E+00 + .38496E+04 .10782E+00 + .39031E+04 .10560E+00 + .39573E+04 .10341E+00 + .40123E+04 .10124E+00 + .40681E+04 .99110E-01 + .41246E+04 .97006E-01 + .41819E+04 .94931E-01 + .42401E+04 .92885E-01 + .42990E+04 .90869E-01 + .43587E+04 .88883E-01 + .44193E+04 .86926E-01 + .44807E+04 .85000E-01 + .45430E+04 .83103E-01 + .46061E+04 .81236E-01 + .46701E+04 .79398E-01 + .47351E+04 .77591E-01 + .48009E+04 .75813E-01 + .48676E+04 .74065E-01 + .49352E+04 .72347E-01 + .50038E+04 .70658E-01 + .50733E+04 .68999E-01 + .51439E+04 .67369E-01 + .52153E+04 .65768E-01 + .52878E+04 .64195E-01 + .53613E+04 .63048E-01 + .54358E+04 .61520E-01 + .55114E+04 .60020E-01 + .55880E+04 .58548E-01 + .56656E+04 .57105E-01 + .57443E+04 .55691E-01 + .58242E+04 .54304E-01 + .59051E+04 .52944E-01 + .59872E+04 .51612E-01 + .60704E+04 .50307E-01 + .61548E+04 .49028E-01 + .62403E+04 .47776E-01 + .63270E+04 .46550E-01 + .64149E+04 .45349E-01 + .65041E+04 .44175E-01 + .65945E+04 .43025E-01 + .66861E+04 .41900E-01 + .67790E+04 .40799E-01 + .68733E+04 .39723E-01 + .69688E+04 .38670E-01 + .70656E+04 .37641E-01 + .71638E+04 .36635E-01 + .72634E+04 .35652E-01 + .73643E+04 .34691E-01 + .74667E+04 .33752E-01 + .75704E+04 .32834E-01 + .76756E+04 .31938E-01 + .77823E+04 .31064E-01 + .78905E+04 .30209E-01 + .80001E+04 .29375E-01 + .81113E+04 .28561E-01 + .82240E+04 .27766E-01 + .83383E+04 .26991E-01 + .84542E+04 .26235E-01 + .85717E+04 .25497E-01 + .86908E+04 .24777E-01 + .88116E+04 .24075E-01 + .89341E+04 .23390E-01 + .90582E+04 .22723E-01 + .91841E+04 .22073E-01 + .93117E+04 .21439E-01 + .94412E+04 .20821E-01 + .95724E+04 .20219E-01 + .97054E+04 .19632E-01 + .98403E+04 .19061E-01 + .99770E+04 .18504E-01 + .10116E+05 .17962E-01 + .10256E+05 .17435E-01 + .10399E+05 .16921E-01 + .10543E+05 .16421E-01 + .10690E+05 .15934E-01 + .10838E+05 .15460E-01 + .10989E+05 .14999E-01 + .11142E+05 .14551E-01 + .11297E+05 .14114E-01 + .11454E+05 .13690E-01 + .11613E+05 .13277E-01 + .11774E+05 .12875E-01 + .11938E+05 .12485E-01 + .12104E+05 .12105E-01 + .12272E+05 .11736E-01 + .12442E+05 .11378E-01 + .12615E+05 .11029E-01 + .12791E+05 .10690E-01 + .12968E+05 .10361E-01 + .13149E+05 .10041E-01 + .13331E+05 .97305E-02 + .13517E+05 .94287E-02 + .13704E+05 .91355E-02 + .13895E+05 .88507E-02 + .14088E+05 .85742E-02 + .14284E+05 .83057E-02 + .14482E+05 .80450E-02 + .14684E+05 .77920E-02 + .14888E+05 .75463E-02 + .15095E+05 .73079E-02 + .15304E+05 .70765E-02 + .15517E+05 .68520E-02 + .15733E+05 .66341E-02 + .15951E+05 .64228E-02 + .16173E+05 .62177E-02 + .16398E+05 .60188E-02 + .16626E+05 .58259E-02 + .16857E+05 .56387E-02 + .17091E+05 .54573E-02 + .17329E+05 .52813E-02 + .17569E+05 .51107E-02 + .17814E+05 .49453E-02 + .18061E+05 .47849E-02 + .18312E+05 .46295E-02 + .18567E+05 .44789E-02 + .18825E+05 .43328E-02 + .19086E+05 .41913E-02 + .19351E+05 .40542E-02 + .19620E+05 .39214E-02 + .19893E+05 .37926E-02 + .20170E+05 .36679E-02 + .20450E+05 .35471E-02 + .20734E+05 .34301E-02 + .21022E+05 .33168E-02 + .21314E+05 .32070E-02 + .21611E+05 .31007E-02 + .21911E+05 .29978E-02 + .22215E+05 .28981E-02 + .22524E+05 .28016E-02 + .22837E+05 .27082E-02 + .23154E+05 .26177E-02 + .23476E+05 .25361E-02 + .23803E+05 .24511E-02 + .24133E+05 .23688E-02 + .24469E+05 .22892E-02 + .24809E+05 .22121E-02 + .25154E+05 .21376E-02 + .25503E+05 .20654E-02 + .25858E+05 .19956E-02 + .26217E+05 .19281E-02 + .26581E+05 .18628E-02 + .26951E+05 .17996E-02 + .27325E+05 .17385E-02 + .27705E+05 .16793E-02 + .28090E+05 .16222E-02 + .28480E+05 .15669E-02 + .28876E+05 .15134E-02 + .29277E+05 .14617E-02 + .29684E+05 .14117E-02 + .30097E+05 .13633E-02 + .30515E+05 .13166E-02 + .30939E+05 .12714E-02 + .31369E+05 .12277E-02 + .31805E+05 .11855E-02 + .32247E+05 .11446E-02 + .32695E+05 .11052E-02 + .33150E+05 .10670E-02 + .33610E+05 .10302E-02 + .34077E+05 .99455E-03 + .34551E+05 .96013E-03 + .35031E+05 .92686E-03 + .35518E+05 .89472E-03 + .36012E+05 .86366E-03 + .36512E+05 .83365E-03 + .37020E+05 .80465E-03 + .37534E+05 .77664E-03 + .38056E+05 .74958E-03 + .38585E+05 .72344E-03 + .39121E+05 .69819E-03 + .39664E+05 .67380E-03 + .40216E+05 .65024E-03 + .40775E+05 .62749E-03 + .41341E+05 .60551E-03 + .41916E+05 .58428E-03 + .42498E+05 .56379E-03 + .43089E+05 .54399E-03 + .43688E+05 .52488E-03 + .44295E+05 .50642E-03 + .44910E+05 .48860E-03 + .45535E+05 .47139E-03 + .46167E+05 .45477E-03 + .46809E+05 .43873E-03 + .47460E+05 .42325E-03 + .48119E+05 .40830E-03 + .48788E+05 .39386E-03 + .49466E+05 .37993E-03 + .50153E+05 .36648E-03 + .50850E+05 .35350E-03 + .51557E+05 .34097E-03 + .52274E+05 .32888E-03 + .53000E+05 .31720E-03 + .53737E+05 .30594E-03 + .54483E+05 .29506E-03 + .55241E+05 .28457E-03 + .56008E+05 .27444E-03 + .56787E+05 .26467E-03 + .57576E+05 .25524E-03 + .58376E+05 .24614E-03 + .59187E+05 .23736E-03 + .60010E+05 .22889E-03 + .60844E+05 .22072E-03 + .61689E+05 .21283E-03 + .62547E+05 .20522E-03 + .63416E+05 .19788E-03 + .64297E+05 .19080E-03 + .65191E+05 .18397E-03 + .66097E+05 .17737E-03 + .67015E+05 .17102E-03 + .67947E+05 .16488E-03 + .68891E+05 .15897E-03 + .69848E+05 .15326E-03 + .70819E+05 .14775E-03 + .71803E+05 .14244E-03 + .72801E+05 .13732E-03 + .73813E+05 .13238E-03 + .74839E+05 .12762E-03 + .75879E+05 .12302E-03 + .76933E+05 .11859E-03 + .78002E+05 .11432E-03 + .79086E+05 .11019E-03 + .80186E+05 .10622E-03 + .81300E+05 .10239E-03 + .82430E+05 .98690E-04 + .83575E+05 .95125E-04 + .84737E+05 .91688E-04 + .85914E+05 .88374E-04 + .87108E+05 .85178E-04 + .88319E+05 .82097E-04 + .89546E+05 .79125E-04 + .90791E+05 .76261E-04 + .92053E+05 .73499E-04 + .93332E+05 .70835E-04 + .94629E+05 .68268E-04 + .95944E+05 .65793E-04 + .97277E+05 .63406E-04 + .98629E+05 .61105E-04 + .10000E+06 .58891E-04 + -1 -1 + -2 -2 \ No newline at end of file diff --git a/examples/advanced/xray_fluorescence/mercury_flx_solmin.dat b/examples/advanced/xray_fluorescence/mercury_flx_solmin.dat new file mode 100644 index 0000000000..63b9d2bd19 --- /dev/null +++ b/examples/advanced/xray_fluorescence/mercury_flx_solmin.dat @@ -0,0 +1,837 @@ + .10023E+01 .20226E+03 + .10162E+01 .20742E+03 + .10304E+01 .21275E+03 + .10447E+01 .21826E+03 + .10592E+01 .22395E+03 + .10739E+01 .22983E+03 + .10888E+01 .23592E+03 + .11040E+01 .23296E+03 + .11193E+01 .22459E+03 + .11349E+01 .21650E+03 + .11506E+01 .20866E+03 + .11666E+01 .20106E+03 + .11828E+01 .19370E+03 + .11993E+01 .18658E+03 + .12159E+01 .17969E+03 + .12328E+01 .17302E+03 + .12500E+01 .16657E+03 + .12674E+01 .16033E+03 + .12850E+01 .15429E+03 + .13028E+01 .14846E+03 + .13209E+01 .14282E+03 + .13393E+01 .13737E+03 + .13579E+01 .13211E+03 + .13768E+01 .12702E+03 + .13959E+01 .12211E+03 + .14153E+01 .11737E+03 + .14350E+01 .11279E+03 + .14549E+01 .10837E+03 + .14751E+01 .10410E+03 + .14956E+01 .99991E+02 + .15164E+01 .96024E+02 + .15375E+01 .92198E+02 + .15589E+01 .88509E+02 + .15805E+01 .84953E+02 + .16025E+01 .81526E+02 + .16248E+01 .78224E+02 + .16473E+01 .75044E+02 + .16702E+01 .71981E+02 + .16934E+01 .69031E+02 + .17170E+01 .66191E+02 + .17408E+01 .63458E+02 + .17650E+01 .60828E+02 + .17896E+01 .58298E+02 + .18144E+01 .55865E+02 + .18397E+01 .53524E+02 + .18652E+01 .51274E+02 + .18911E+01 .49111E+02 + .19174E+01 .47032E+02 + .19441E+01 .45034E+02 + .19711E+01 .43115E+02 + .19985E+01 .41272E+02 + .20263E+01 .39502E+02 + .20544E+01 .37803E+02 + .20830E+01 .36196E+02 + .21119E+01 .34630E+02 + .21413E+01 .33127E+02 + .21710E+01 .31686E+02 + .22012E+01 .30304E+02 + .22318E+01 .28978E+02 + .22628E+01 .27707E+02 + .22942E+01 .26489E+02 + .23261E+01 .25322E+02 + .23585E+01 .24203E+02 + .23912E+01 .23131E+02 + .24245E+01 .22104E+02 + .24582E+01 .21121E+02 + .24923E+01 .20180E+02 + .25270E+01 .19279E+02 + .25621E+01 .18416E+02 + .25977E+01 .17591E+02 + .26338E+01 .16801E+02 + .26704E+01 .16046E+02 + .27075E+01 .15323E+02 + .27451E+01 .14632E+02 + .27833E+01 .13971E+02 + .28220E+01 .13340E+02 + .28612E+01 .12736E+02 + .29009E+01 .12159E+02 + .29412E+01 .11608E+02 + .29821E+01 .11081E+02 + .30236E+01 .10578E+02 + .30656E+01 .10097E+02 + .31082E+01 .96380E+01 + .31514E+01 .91998E+01 + .31952E+01 .87814E+01 + .32396E+01 .83820E+01 + .32846E+01 .80007E+01 + .33303E+01 .76369E+01 + .33765E+01 .72897E+01 + .34235E+01 .69585E+01 + .34710E+01 .66425E+01 + .35193E+01 .63411E+01 + .35682E+01 .60536E+01 + .36178E+01 .57794E+01 + .36681E+01 .55180E+01 + .37190E+01 .52686E+01 + .37707E+01 .50310E+01 + .38231E+01 .48044E+01 + .38762E+01 .45884E+01 + .39301E+01 .43825E+01 + .39847E+01 .41897E+01 + .40401E+01 .40026E+01 + .40963E+01 .38243E+01 + .41532E+01 .36544E+01 + .42109E+01 .34925E+01 + .42694E+01 .33383E+01 + .43288E+01 .31913E+01 + .43889E+01 .30513E+01 + .44499E+01 .29180E+01 + .45118E+01 .27909E+01 + .45745E+01 .26699E+01 + .46380E+01 .25547E+01 + .47025E+01 .24449E+01 + .47678E+01 .23403E+01 + .48341E+01 .22407E+01 + .49013E+01 .21459E+01 + .49694E+01 .20555E+01 + .50385E+01 .19695E+01 + .51085E+01 .18875E+01 + .51795E+01 .18095E+01 + .52515E+01 .17352E+01 + .53244E+01 .16644E+01 + .53984E+01 .15970E+01 + .54735E+01 .15328E+01 + .55495E+01 .14717E+01 + .56266E+01 .14135E+01 + .57048E+01 .13580E+01 + .57841E+01 .13052E+01 + .58645E+01 .12549E+01 + .59460E+01 .12070E+01 + .60286E+01 .11614E+01 + .61124E+01 .11180E+01 + .61974E+01 .10766E+01 + .62835E+01 .10372E+01 + .63708E+01 .99961E+00 + .64594E+01 .96385E+00 + .65491E+01 .92979E+00 + .66401E+01 .89735E+00 + .67324E+01 .86645E+00 + .68260E+01 .83701E+00 + .69209E+01 .80898E+00 + .70170E+01 .78227E+00 + .71146E+01 .75683E+00 + .72134E+01 .73260E+00 + .73137E+01 .70953E+00 + .74153E+01 .68755E+00 + .75184E+01 .66661E+00 + .76229E+01 .64668E+00 + .77288E+01 .62769E+00 + .78362E+01 .60961E+00 + .79451E+01 .59239E+00 + .80555E+01 .57600E+00 + .81675E+01 .56040E+00 + .82810E+01 .54640E+00 + .83961E+01 .53224E+00 + .85128E+01 .51877E+00 + .86311E+01 .50596E+00 + .87510E+01 .49377E+00 + .88726E+01 .48218E+00 + .89959E+01 .47116E+00 + .91209E+01 .46068E+00 + .92477E+01 .45073E+00 + .93762E+01 .44128E+00 + .95065E+01 .43230E+00 + .96386E+01 .42379E+00 + .97726E+01 .41571E+00 + .99084E+01 .40806E+00 + .10046E+02 .40080E+00 + .10186E+02 .39394E+00 + .10327E+02 .38744E+00 + .10471E+02 .38131E+00 + .10616E+02 .37551E+00 + .10764E+02 .37005E+00 + .10913E+02 .36490E+00 + .11065E+02 .36006E+00 + .11219E+02 .35551E+00 + .11375E+02 .35124E+00 + .11533E+02 .34725E+00 + .11693E+02 .34352E+00 + .11856E+02 .34004E+00 + .12020E+02 .33682E+00 + .12187E+02 .33383E+00 + .12357E+02 .33107E+00 + .12529E+02 .32853E+00 + .12703E+02 .32621E+00 + .12879E+02 .32410E+00 + .13058E+02 .32220E+00 + .13240E+02 .32049E+00 + .13424E+02 .31898E+00 + .13610E+02 .31766E+00 + .13799E+02 .31652E+00 + .13991E+02 .31556E+00 + .14186E+02 .31477E+00 + .14383E+02 .31416E+00 + .14583E+02 .31372E+00 + .14785E+02 .31343E+00 + .14991E+02 .31332E+00 + .15199E+02 .31336E+00 + .15410E+02 .31355E+00 + .15625E+02 .31390E+00 + .15842E+02 .31440E+00 + .16062E+02 .31505E+00 + .16285E+02 .31585E+00 + .16511E+02 .31679E+00 + .16741E+02 .31787E+00 + .16973E+02 .31910E+00 + .17209E+02 .32047E+00 + .17449E+02 .32198E+00 + .17691E+02 .32363E+00 + .17937E+02 .32541E+00 + .18186E+02 .32733E+00 + .18439E+02 .32939E+00 + .18695E+02 .33380E+00 + .18955E+02 .33614E+00 + .19218E+02 .33862E+00 + .19485E+02 .34123E+00 + .19756E+02 .34398E+00 + .20031E+02 .34686E+00 + .20309E+02 .34988E+00 + .20591E+02 .35303E+00 + .20878E+02 .35631E+00 + .21168E+02 .35973E+00 + .21462E+02 .36329E+00 + .21760E+02 .36697E+00 + .22063E+02 .37080E+00 + .22369E+02 .37475E+00 + .22680E+02 .37885E+00 + .22995E+02 .38307E+00 + .23315E+02 .38744E+00 + .23639E+02 .39194E+00 + .23967E+02 .39657E+00 + .24300E+02 .40134E+00 + .24638E+02 .40625E+00 + .24981E+02 .41129E+00 + .25328E+02 .41647E+00 + .25680E+02 .42179E+00 + .26037E+02 .42724E+00 + .26398E+02 .43283E+00 + .26765E+02 .43856E+00 + .27137E+02 .44443E+00 + .27514E+02 .45043E+00 + .27897E+02 .45658E+00 + .28284E+02 .46286E+00 + .28678E+02 .46927E+00 + .29076E+02 .47583E+00 + .29480E+02 .48252E+00 + .29890E+02 .48935E+00 + .30305E+02 .49632E+00 + .30726E+02 .50342E+00 + .31153E+02 .51066E+00 + .31586E+02 .51804E+00 + .32025E+02 .52556E+00 + .32470E+02 .53320E+00 + .32922E+02 .54099E+00 + .33379E+02 .54891E+00 + .33843E+02 .55696E+00 + .34313E+02 .56514E+00 + .34790E+02 .57346E+00 + .35274E+02 .58191E+00 + .35764E+02 .59049E+00 + .36261E+02 .59920E+00 + .36765E+02 .60804E+00 + .37276E+02 .61701E+00 + .37794E+02 .62610E+00 + .38319E+02 .63532E+00 + .38852E+02 .64467E+00 + .39392E+02 .65414E+00 + .39939E+02 .66373E+00 + .40494E+02 .67344E+00 + .41057E+02 .68326E+00 + .41628E+02 .69321E+00 + .42206E+02 .70327E+00 + .42793E+02 .71345E+00 + .43387E+02 .72374E+00 + .43990E+02 .73415E+00 + .44602E+02 .74466E+00 + .45221E+02 .75528E+00 + .45850E+02 .76600E+00 + .46487E+02 .77955E+00 + .47133E+02 .79051E+00 + .47788E+02 .80158E+00 + .48452E+02 .81275E+00 + .49126E+02 .82401E+00 + .49808E+02 .83536E+00 + .50501E+02 .84681E+00 + .51202E+02 .85835E+00 + .51914E+02 .86997E+00 + .52635E+02 .88168E+00 + .53367E+02 .89348E+00 + .54109E+02 .90535E+00 + .54861E+02 .91730E+00 + .55623E+02 .92933E+00 + .56396E+02 .94143E+00 + .57180E+02 .95360E+00 + .57974E+02 .96583E+00 + .58780E+02 .97814E+00 + .59597E+02 .99050E+00 + .60425E+02 .10029E+01 + .61265E+02 .10154E+01 + .62116E+02 .10279E+01 + .62980E+02 .10405E+01 + .63855E+02 .10532E+01 + .64742E+02 .10658E+01 + .65642E+02 .10786E+01 + .66554E+02 .10913E+01 + .67479E+02 .11041E+01 + .68417E+02 .11170E+01 + .69368E+02 .11298E+01 + .70332E+02 .11427E+01 + .71309E+02 .11556E+01 + .72300E+02 .11686E+01 + .73305E+02 .11815E+01 + .74324E+02 .11945E+01 + .75357E+02 .12075E+01 + .76404E+02 .12205E+01 + .77466E+02 .12335E+01 + .78543E+02 .12465E+01 + .79634E+02 .12595E+01 + .80741E+02 .12725E+01 + .81863E+02 .12854E+01 + .83001E+02 .12984E+01 + .84154E+02 .13114E+01 + .85324E+02 .13243E+01 + .86509E+02 .13373E+01 + .87712E+02 .13502E+01 + .88931E+02 .13631E+01 + .90166E+02 .13759E+01 + .91420E+02 .13887E+01 + .92690E+02 .14015E+01 + .93978E+02 .14143E+01 + .95284E+02 .14270E+01 + .96608E+02 .14397E+01 + .97951E+02 .14523E+01 + .99312E+02 .14649E+01 + .10069E+03 .14775E+01 + .10209E+03 .14900E+01 + .10351E+03 .15024E+01 + .10495E+03 .15148E+01 + .10641E+03 .15271E+01 + .10789E+03 .15394E+01 + .10939E+03 .15516E+01 + .11091E+03 .15637E+01 + .11245E+03 .15758E+01 + .11401E+03 .15878E+01 + .11559E+03 .15997E+01 + .11720E+03 .16116E+01 + .11883E+03 .16234E+01 + .12048E+03 .16351E+01 + .12216E+03 .16467E+01 + .12385E+03 .16583E+01 + .12557E+03 .16697E+01 + .12732E+03 .16811E+01 + .12909E+03 .16924E+01 + .13088E+03 .17037E+01 + .13270E+03 .17162E+01 + .13455E+03 .17272E+01 + .13642E+03 .17382E+01 + .13831E+03 .17490E+01 + .14023E+03 .17598E+01 + .14218E+03 .17705E+01 + .14416E+03 .17810E+01 + .14616E+03 .17915E+01 + .14819E+03 .18018E+01 + .15025E+03 .18121E+01 + .15234E+03 .18222E+01 + .15446E+03 .18323E+01 + .15660E+03 .18422E+01 + .15878E+03 .18520E+01 + .16099E+03 .18616E+01 + .16323E+03 .18712E+01 + .16549E+03 .18806E+01 + .16779E+03 .18899E+01 + .17013E+03 .18990E+01 + .17249E+03 .19080E+01 + .17489E+03 .19169E+01 + .17732E+03 .19256E+01 + .17978E+03 .19341E+01 + .18228E+03 .19425E+01 + .18481E+03 .19508E+01 + .18738E+03 .19589E+01 + .18999E+03 .19668E+01 + .19263E+03 .19745E+01 + .19530E+03 .19820E+01 + .19802E+03 .19894E+01 + .20077E+03 .19965E+01 + .20356E+03 .20035E+01 + .20639E+03 .20102E+01 + .20926E+03 .20168E+01 + .21216E+03 .20231E+01 + .21511E+03 .20292E+01 + .21810E+03 .20351E+01 + .22113E+03 .20407E+01 + .22421E+03 .20461E+01 + .22732E+03 .20513E+01 + .23048E+03 .20562E+01 + .23369E+03 .20609E+01 + .23693E+03 .20653E+01 + .24023E+03 .20695E+01 + .24356E+03 .20733E+01 + .24695E+03 .20770E+01 + .25038E+03 .20803E+01 + .25386E+03 .20834E+01 + .25739E+03 .20862E+01 + .26097E+03 .20886E+01 + .26459E+03 .20909E+01 + .26827E+03 .20928E+01 + .27200E+03 .20944E+01 + .27578E+03 .20957E+01 + .27961E+03 .20968E+01 + .28350E+03 .20975E+01 + .28744E+03 .20979E+01 + .29143E+03 .20980E+01 + .29548E+03 .20979E+01 + .29959E+03 .20974E+01 + .30375E+03 .20966E+01 + .30797E+03 .20955E+01 + .31225E+03 .20941E+01 + .31659E+03 .20924E+01 + .32099E+03 .20904E+01 + .32545E+03 .20881E+01 + .32998E+03 .20855E+01 + .33456E+03 .20825E+01 + .33921E+03 .20793E+01 + .34392E+03 .20758E+01 + .34870E+03 .20720E+01 + .35355E+03 .20679E+01 + .35846E+03 .20635E+01 + .36345E+03 .20588E+01 + .36850E+03 .20538E+01 + .37362E+03 .20486E+01 + .37881E+03 .20430E+01 + .38407E+03 .20372E+01 + .38941E+03 .20311E+01 + .39482E+03 .20247E+01 + .40031E+03 .20181E+01 + .40587E+03 .20111E+01 + .41151E+03 .20040E+01 + .41723E+03 .19965E+01 + .42303E+03 .19889E+01 + .42891E+03 .19810E+01 + .43487E+03 .19728E+01 + .44092E+03 .19643E+01 + .44704E+03 .19556E+01 + .45326E+03 .19467E+01 + .45956E+03 .19375E+01 + .46594E+03 .19281E+01 + .47242E+03 .19185E+01 + .47898E+03 .19087E+01 + .48564E+03 .18986E+01 + .49239E+03 .18884E+01 + .49923E+03 .18779E+01 + .50617E+03 .18672E+01 + .51320E+03 .18563E+01 + .52034E+03 .18453E+01 + .52757E+03 .18340E+01 + .53490E+03 .18226E+01 + .54233E+03 .18109E+01 + .54987E+03 .17991E+01 + .55751E+03 .17872E+01 + .56526E+03 .17750E+01 + .57311E+03 .17627E+01 + .58108E+03 .17503E+01 + .58916E+03 .17377E+01 + .59734E+03 .17249E+01 + .60564E+03 .17121E+01 + .61406E+03 .16990E+01 + .62260E+03 .16859E+01 + .63125E+03 .16726E+01 + .64002E+03 .16592E+01 + .64891E+03 .16457E+01 + .65793E+03 .16320E+01 + .66708E+03 .16183E+01 + .67635E+03 .16045E+01 + .68575E+03 .15905E+01 + .69528E+03 .15765E+01 + .70494E+03 .15624E+01 + .71474E+03 .15481E+01 + .72467E+03 .15339E+01 + .73474E+03 .15195E+01 + .74495E+03 .15051E+01 + .75530E+03 .14906E+01 + .76580E+03 .14760E+01 + .77644E+03 .14614E+01 + .78723E+03 .14467E+01 + .79817E+03 .14320E+01 + .80927E+03 .14172E+01 + .82051E+03 .14024E+01 + .83192E+03 .13876E+01 + .84348E+03 .13727E+01 + .85520E+03 .13578E+01 + .86709E+03 .13429E+01 + .87914E+03 .13280E+01 + .89135E+03 .13130E+01 + .90374E+03 .12981E+01 + .91630E+03 .12831E+01 + .92903E+03 .12681E+01 + .94195E+03 .12532E+01 + .95504E+03 .12382E+01 + .96831E+03 .12233E+01 + .98177E+03 .12083E+01 + .99541E+03 .11934E+01 + .10092E+04 .11785E+01 + .10233E+04 .11636E+01 + .10375E+04 .11488E+01 + .10519E+04 .11340E+01 + .10665E+04 .11192E+01 + .10813E+04 .11044E+01 + .10964E+04 .10897E+01 + .11116E+04 .10751E+01 + .11271E+04 .10604E+01 + .11427E+04 .10459E+01 + .11586E+04 .10314E+01 + .11747E+04 .10169E+01 + .11910E+04 .10025E+01 + .12076E+04 .98821E+00 + .12244E+04 .97395E+00 + .12414E+04 .95976E+00 + .12586E+04 .94564E+00 + .12761E+04 .93160E+00 + .12939E+04 .91763E+00 + .13118E+04 .90374E+00 + .13301E+04 .88994E+00 + .13486E+04 .87622E+00 + .13673E+04 .86259E+00 + .13863E+04 .84904E+00 + .14056E+04 .83559E+00 + .14251E+04 .82224E+00 + .14449E+04 .80908E+00 + .14650E+04 .79592E+00 + .14853E+04 .78286E+00 + .15060E+04 .76990E+00 + .15269E+04 .75705E+00 + .15481E+04 .74430E+00 + .15697E+04 .73166E+00 + .15915E+04 .71913E+00 + .16136E+04 .70671E+00 + .16360E+04 .69441E+00 + .16587E+04 .68222E+00 + .16818E+04 .67015E+00 + .17052E+04 .65819E+00 + .17289E+04 .64636E+00 + .17529E+04 .63465E+00 + .17773E+04 .62305E+00 + .18020E+04 .61159E+00 + .18270E+04 .60024E+00 + .18524E+04 .58902E+00 + .18781E+04 .57793E+00 + .19042E+04 .56696E+00 + .19307E+04 .55612E+00 + .19575E+04 .54541E+00 + .19847E+04 .53483E+00 + .20123E+04 .52438E+00 + .20403E+04 .51406E+00 + .20686E+04 .50387E+00 + .20974E+04 .49381E+00 + .21265E+04 .48389E+00 + .21561E+04 .47409E+00 + .21861E+04 .46443E+00 + .22164E+04 .45490E+00 + .22472E+04 .44550E+00 + .22785E+04 .43624E+00 + .23101E+04 .42710E+00 + .23422E+04 .41810E+00 + .23748E+04 .40924E+00 + .24078E+04 .40050E+00 + .24413E+04 .39190E+00 + .24752E+04 .38342E+00 + .25096E+04 .37508E+00 + .25445E+04 .36687E+00 + .25798E+04 .35879E+00 + .26157E+04 .35084E+00 + .26520E+04 .34302E+00 + .26889E+04 .33533E+00 + .27262E+04 .32777E+00 + .27641E+04 .32033E+00 + .28025E+04 .31302E+00 + .28415E+04 .30584E+00 + .28810E+04 .29878E+00 + .29210E+04 .29184E+00 + .29616E+04 .28503E+00 + .30028E+04 .27834E+00 + .30445E+04 .27178E+00 + .30868E+04 .26533E+00 + .31297E+04 .25900E+00 + .31732E+04 .25279E+00 + .32173E+04 .24670E+00 + .32620E+04 .24073E+00 + .33074E+04 .23487E+00 + .33533E+04 .22912E+00 + .33999E+04 .22348E+00 + .34472E+04 .21796E+00 + .34951E+04 .21255E+00 + .35436E+04 .20724E+00 + .35929E+04 .20205E+00 + .36428E+04 .19696E+00 + .36935E+04 .19197E+00 + .37448E+04 .18709E+00 + .37968E+04 .18231E+00 + .38496E+04 .17763E+00 + .39031E+04 .17306E+00 + .39573E+04 .16858E+00 + .40123E+04 .16419E+00 + .40681E+04 .15990E+00 + .41246E+04 .15571E+00 + .41819E+04 .15161E+00 + .42401E+04 .14760E+00 + .42990E+04 .14368E+00 + .43587E+04 .13985E+00 + .44193E+04 .13610E+00 + .44807E+04 .13244E+00 + .45430E+04 .12887E+00 + .46061E+04 .12538E+00 + .46701E+04 .12196E+00 + .47351E+04 .11863E+00 + .48009E+04 .11538E+00 + .48676E+04 .11221E+00 + .49352E+04 .10911E+00 + .50038E+04 .10608E+00 + .50733E+04 .10313E+00 + .51439E+04 .10025E+00 + .52153E+04 .97445E-01 + .52878E+04 .94705E-01 + .53613E+04 .92033E-01 + .54358E+04 .89428E-01 + .55114E+04 .86843E-01 + .55880E+04 .84368E-01 + .56656E+04 .81956E-01 + .57443E+04 .79605E-01 + .58242E+04 .77314E-01 + .59051E+04 .75082E-01 + .59872E+04 .72908E-01 + .60704E+04 .70790E-01 + .61548E+04 .68727E-01 + .62403E+04 .66718E-01 + .63270E+04 .64762E-01 + .64149E+04 .62857E-01 + .65041E+04 .61003E-01 + .65945E+04 .59199E-01 + .66861E+04 .57443E-01 + .67790E+04 .55734E-01 + .68733E+04 .54071E-01 + .69688E+04 .52453E-01 + .70656E+04 .50880E-01 + .71638E+04 .49349E-01 + .72634E+04 .47861E-01 + .73643E+04 .46413E-01 + .74667E+04 .45006E-01 + .75704E+04 .43638E-01 + .76756E+04 .42308E-01 + .77823E+04 .41015E-01 + .78905E+04 .39758E-01 + .80001E+04 .38538E-01 + .81113E+04 .37351E-01 + .82240E+04 .36199E-01 + .83383E+04 .35079E-01 + .84542E+04 .33991E-01 + .85717E+04 .32935E-01 + .86908E+04 .31909E-01 + .88116E+04 .30913E-01 + .89341E+04 .29946E-01 + .90582E+04 .29006E-01 + .91841E+04 .28095E-01 + .93117E+04 .27210E-01 + .94412E+04 .26351E-01 + .95724E+04 .25518E-01 + .97054E+04 .24709E-01 + .98403E+04 .23924E-01 + .99770E+04 .23162E-01 + .10116E+05 .22424E-01 + .10256E+05 .21707E-01 + .10399E+05 .21012E-01 + .10543E+05 .20338E-01 + .10690E+05 .19684E-01 + .10838E+05 .19050E-01 + .10989E+05 .18436E-01 + .11142E+05 .17840E-01 + .11297E+05 .17262E-01 + .11454E+05 .16702E-01 + .11613E+05 .16159E-01 + .11774E+05 .15633E-01 + .11938E+05 .15123E-01 + .12104E+05 .14629E-01 + .12272E+05 .14150E-01 + .12442E+05 .13687E-01 + .12615E+05 .13237E-01 + .12791E+05 .12802E-01 + .12968E+05 .12380E-01 + .13149E+05 .11972E-01 + .13331E+05 .11576E-01 + .13517E+05 .11193E-01 + .13704E+05 .10822E-01 + .13895E+05 .10463E-01 + .14088E+05 .10115E-01 + .14284E+05 .97779E-02 + .14482E+05 .94518E-02 + .14684E+05 .91362E-02 + .14888E+05 .88307E-02 + .15095E+05 .85349E-02 + .15304E+05 .82487E-02 + .15517E+05 .79717E-02 + .15733E+05 .77036E-02 + .15951E+05 .74442E-02 + .16173E+05 .71932E-02 + .16398E+05 .69503E-02 + .16626E+05 .67154E-02 + .16857E+05 .64881E-02 + .17091E+05 .62682E-02 + .17329E+05 .60555E-02 + .17569E+05 .58498E-02 + .17814E+05 .56508E-02 + .18061E+05 .54583E-02 + .18312E+05 .52722E-02 + .18567E+05 .50923E-02 + .18825E+05 .49182E-02 + .19086E+05 .47500E-02 + .19351E+05 .45873E-02 + .19620E+05 .44300E-02 + .19893E+05 .42779E-02 + .20170E+05 .41309E-02 + .20450E+05 .39888E-02 + .20734E+05 .38514E-02 + .21022E+05 .37186E-02 + .21314E+05 .35903E-02 + .21611E+05 .34663E-02 + .21911E+05 .33464E-02 + .22215E+05 .32306E-02 + .22524E+05 .31187E-02 + .22837E+05 .30105E-02 + .23154E+05 .29060E-02 + .23476E+05 .28051E-02 + .23803E+05 .27075E-02 + .24133E+05 .26133E-02 + .24469E+05 .25222E-02 + .24809E+05 .24343E-02 + .25154E+05 .23493E-02 + .25503E+05 .22672E-02 + .25858E+05 .21880E-02 + .26217E+05 .21114E-02 + .26581E+05 .20375E-02 + .26951E+05 .19661E-02 + .27325E+05 .18971E-02 + .27705E+05 .18305E-02 + .28090E+05 .17662E-02 + .28480E+05 .17041E-02 + .28876E+05 .16441E-02 + .29277E+05 .15862E-02 + .29684E+05 .15297E-02 + .30097E+05 .14758E-02 + .30515E+05 .14237E-02 + .30939E+05 .13734E-02 + .31369E+05 .13249E-02 + .31805E+05 .12781E-02 + .32247E+05 .12328E-02 + .32695E+05 .11892E-02 + .33150E+05 .11470E-02 + .33610E+05 .11064E-02 + .34077E+05 .10671E-02 + .34551E+05 .10292E-02 + .35031E+05 .99265E-03 + .35518E+05 .95736E-03 + .36012E+05 .92331E-03 + .36512E+05 .89044E-03 + .37020E+05 .85873E-03 + .37534E+05 .82812E-03 + .38056E+05 .79859E-03 + .38585E+05 .77010E-03 + .39121E+05 .74261E-03 + .39664E+05 .71608E-03 + .40216E+05 .69049E-03 + .40775E+05 .66580E-03 + .41341E+05 .64198E-03 + .41916E+05 .61899E-03 + .42498E+05 .59682E-03 + .43089E+05 .57543E-03 + .43688E+05 .55480E-03 + .44295E+05 .53490E-03 + .44910E+05 .51570E-03 + .45535E+05 .49718E-03 + .46167E+05 .47932E-03 + .46809E+05 .46209E-03 + .47460E+05 .44547E-03 + .48119E+05 .42944E-03 + .48788E+05 .41399E-03 + .49466E+05 .39908E-03 + .50153E+05 .38470E-03 + .50850E+05 .37083E-03 + .51557E+05 .35746E-03 + .52274E+05 .34456E-03 + .53000E+05 .33213E-03 + .53737E+05 .32014E-03 + .54483E+05 .30857E-03 + .55241E+05 .29742E-03 + .56008E+05 .28667E-03 + .56787E+05 .27630E-03 + .57576E+05 .26630E-03 + .58376E+05 .25666E-03 + .59187E+05 .24737E-03 + .60010E+05 .23841E-03 + .60844E+05 .22977E-03 + .61689E+05 .22144E-03 + .62547E+05 .21341E-03 + .63416E+05 .20567E-03 + .64297E+05 .19821E-03 + .65191E+05 .19101E-03 + .66097E+05 .18407E-03 + .67015E+05 .17739E-03 + .67947E+05 .17094E-03 + .68891E+05 .16473E-03 + .69848E+05 .15874E-03 + .70819E+05 .15296E-03 + .71803E+05 .14740E-03 + .72801E+05 .14203E-03 + .73813E+05 .13686E-03 + .74839E+05 .13188E-03 + .75879E+05 .12707E-03 + .76933E+05 .12244E-03 + .78002E+05 .11798E-03 + .79086E+05 .11368E-03 + .80186E+05 .10953E-03 + .81300E+05 .10553E-03 + .82430E+05 .10168E-03 + .83575E+05 .97970E-04 + .84737E+05 .94392E-04 + .85914E+05 .90944E-04 + .87108E+05 .87622E-04 + .88319E+05 .84420E-04 + .89546E+05 .81334E-04 + .90791E+05 .78360E-04 + .92053E+05 .75494E-04 + .93332E+05 .72733E-04 + .94629E+05 .70071E-04 + .95944E+05 .67507E-04 + .97277E+05 .65036E-04 + .98629E+05 .62654E-04 + .10000E+06 .60364E-04 + -1 -1 + -2 -2 diff --git a/examples/advanced/xray_fluorescence/response.dat b/examples/advanced/xray_fluorescence/response.dat new file mode 100644 index 0000000000..70a8f174de --- /dev/null +++ b/examples/advanced/xray_fluorescence/response.dat @@ -0,0 +1,21011 @@ + 0.20000 2.0642e-05 + 0.20500 2.2326e-05 + 0.21000 2.3954e-05 + 0.21500 2.5506e-05 + 0.22000 2.6964e-05 + 0.22500 2.8316e-05 + 0.23000 2.9552e-05 + 0.23500 3.0665e-05 + 0.24000 3.1654e-05 + 0.24500 3.2520e-05 + 0.25000 3.3269e-05 + 0.25500 3.3906e-05 + 0.26000 3.4441e-05 + 0.26500 3.4885e-05 + 0.27000 3.5246e-05 + 0.27500 3.5538e-05 + 0.28000 3.5769e-05 + 0.28500 3.5950e-05 + 0.29000 3.6090e-05 + 0.29500 3.6196e-05 + 0.30000 3.6276e-05 + 0.30500 3.6335e-05 + 0.31000 3.6378e-05 + 0.31500 3.6409e-05 + 0.32000 3.6431e-05 + 0.32500 3.6446e-05 + 0.33000 3.6457e-05 + 0.33500 3.6464e-05 + 0.34000 3.6469e-05 + 0.34500 3.6472e-05 + 0.35000 3.6474e-05 + 0.35500 3.6475e-05 + 0.36000 3.6476e-05 + 0.36500 3.6477e-05 + 0.37000 3.6477e-05 + 0.37500 3.6477e-05 + 0.38000 3.6477e-05 + 0.38500 3.6477e-05 + 0.39000 3.6477e-05 + 0.39500 3.6477e-05 + 0.40000 3.6477e-05 + 0.40500 3.6477e-05 + 0.41000 3.6477e-05 + 0.41500 3.6477e-05 + 0.42000 3.6477e-05 + 0.42500 3.6477e-05 + 0.43000 3.6477e-05 + 0.43500 3.6477e-05 + 0.44000 3.6477e-05 + 0.44500 3.6477e-05 + 0.45000 3.6477e-05 + 0.45500 3.6477e-05 + 0.46000 3.6477e-05 + 0.46500 3.6477e-05 + 0.47000 3.6477e-05 + 0.47500 3.6477e-05 + 0.48000 3.6477e-05 + 0.48500 3.6477e-05 + 0.49000 3.6477e-05 + 0.49500 3.6477e-05 + 0.50000 3.6477e-05 + 0.50500 3.6477e-05 + 0.51000 3.6477e-05 + 0.51500 3.6477e-05 + 0.52000 3.6477e-05 + 0.52500 3.6477e-05 + 0.53000 3.6477e-05 + 0.53500 3.6477e-05 + 0.54000 3.6477e-05 + 0.54500 3.6477e-05 + 0.55000 3.6477e-05 + 0.55500 3.6477e-05 + 0.56000 3.6477e-05 + 0.56500 3.6478e-05 + 0.57000 3.6478e-05 + 0.57500 3.6478e-05 + 0.58000 3.6478e-05 + 0.58500 3.6478e-05 + 0.59000 3.6478e-05 + 0.59500 3.6479e-05 + 0.60000 3.6481e-05 + 0.60500 3.6483e-05 + 0.61000 3.6487e-05 + 0.61500 3.6493e-05 + 0.62000 3.6504e-05 + 0.62500 3.6521e-05 + 0.63000 3.6548e-05 + 0.63500 3.6590e-05 + 0.64000 3.6655e-05 + 0.64500 3.6754e-05 + 0.65000 3.6902e-05 + 0.65500 3.7120e-05 + 0.66000 3.7437e-05 + 0.66500 3.7891e-05 + 0.67000 3.8534e-05 + 0.67500 3.9431e-05 + 0.68000 4.0665e-05 + 0.68500 4.2339e-05 + 0.69000 4.4581e-05 + 0.69500 4.7542e-05 + 0.70000 5.1402e-05 + 0.70500 5.6370e-05 + 0.71000 6.2681e-05 + 0.71500 7.0597e-05 + 0.72000 8.0405e-05 + 0.72500 9.2409e-05 + 0.73000 0.00010693 + 0.73500 0.00012428 + 0.74000 0.00014481 + 0.74500 0.00016881 + 0.75000 0.00019659 + 0.75500 0.00022842 + 0.76000 0.00026458 + 0.76500 0.00030527 + 0.77000 0.00035070 + 0.77500 0.00040106 + 0.78000 0.00045650 + 0.78500 0.00051718 + 0.79000 0.00058327 + 0.79500 0.00065494 + 0.80000 0.00073242 + 0.80500 0.00081599 + 0.81000 0.00090600 + 0.81500 0.0010029 + 0.82000 0.0011073 + 0.82500 0.0012200 + 0.83000 0.0013420 + 0.83500 0.0014747 + 0.84000 0.0016197 + 0.84500 0.0017794 + 0.85000 0.0019568 + 0.85500 0.0021558 + 0.86000 0.0023813 + 0.86500 0.0026398 + 0.87000 0.0029392 + 0.87500 0.0032895 + 0.88000 0.0037027 + 0.88500 0.0041931 + 0.89000 0.0047771 + 0.89500 0.0054734 + 0.90000 0.0063021 + 0.90500 0.0072842 + 0.91000 0.0084406 + 0.91500 0.0097903 + 0.92000 0.011349 + 0.92500 0.013128 + 0.93000 0.015128 + 0.93500 0.017345 + 0.94000 0.019759 + 0.94500 0.022340 + 0.95000 0.025044 + 0.95500 0.027813 + 0.96000 0.030577 + 0.96500 0.033257 + 0.97000 0.035767 + 0.97500 0.038021 + 0.98000 0.039933 + 0.98500 0.041427 + 0.99000 0.042439 + 0.99500 0.042922 + 1.0000 0.042850 + 1.0050 0.042219 + 1.0100 0.041050 + 1.0150 0.039382 + 1.0200 0.037276 + 1.0250 0.034807 + 1.0300 0.032063 + 1.0350 0.029133 + 1.0400 0.026111 + 1.0450 0.023082 + 1.0500 0.020124 + 1.0550 0.017304 + 1.0600 0.014675 + 1.0650 0.012273 + 1.0700 0.010122 + 1.0750 0.0082333 + 1.0800 0.0066039 + 1.0850 0.0052235 + 1.0900 0.0040743 + 1.0950 0.0031338 + 1.1000 0.0023769 + 1.1050 0.0017777 + 1.1100 0.0013111 + 1.1150 0.00095347 + 1.1200 0.00068373 + 1.1250 0.00048347 + 1.1300 0.00033710 + 1.1350 0.00023177 + 1.1400 0.00015712 + 1.1450 0.00010503 + 1.1500 6.9229e-05 + 1.1550 4.4994e-05 + 1.1600 2.8835e-05 + 1.1650 1.8221e-05 + 1.1700 1.1353e-05 + 1.1750 6.9748e-06 + 1.1800 4.2252e-06 + 1.1850 2.5238e-06 + 1.1900 1.4864e-06 + 1.1950 8.6320e-07 + 1.2000 4.9428e-07 + 1.2050 2.7907e-07 + 1.2100 1.5536e-07 + 1.2150 8.5279e-08 + 1.2200 4.6157e-08 + 1.2250 2.4632e-08 + 1.2300 1.2962e-08 + 1.2350 6.7250e-09 + 1.2400 3.4404e-09 + 1.2450 1.7354e-09 + 1.2500 8.6313e-10 + 1.2550 4.2328e-10 + 1.2600 2.0468e-10 + 1.2650 9.7583e-11 + 1.2700 4.5874e-11 + 1.2750 2.1263e-11 + 1.2800 9.7171e-12 + 1.2850 4.3781e-12 + 1.2900 1.9445e-12 + 1.2950 8.5096e-13 + 1.3000 0.00000 + 1.3050 0.00000 + 1.3100 0.00000 + 1.3150 0.00000 + 1.3200 0.00000 + 1.3250 0.00000 + 1.3300 0.00000 + 1.3350 0.00000 + 1.3400 0.00000 + 1.3450 0.00000 + 1.3500 0.00000 + 1.3550 0.00000 + 1.3600 0.00000 + 1.3650 0.00000 + 1.3700 0.00000 + 1.3750 0.00000 + 1.3800 0.00000 + 1.3850 0.00000 + 1.3900 0.00000 + 1.3950 0.00000 + 1.4000 0.00000 + 1.4050 0.00000 + 1.4100 0.00000 + 1.4150 0.00000 + 1.4200 0.00000 + 1.4250 0.00000 + 1.4300 0.00000 + 1.4350 0.00000 + 1.4400 0.00000 + 1.4450 0.00000 + 1.4500 0.00000 + 1.4550 0.00000 + 1.4600 0.00000 + 1.4650 0.00000 + 1.4700 0.00000 + 1.4750 0.00000 + 1.4800 0.00000 + 1.4850 0.00000 + 1.4900 0.00000 + 1.4950 0.00000 + 1.5000 0.00000 + 1.5050 0.00000 + 1.5100 0.00000 + 1.5150 0.00000 + 1.5200 0.00000 + 1.5250 0.00000 + 1.5300 0.00000 + 1.5350 0.00000 + 1.5400 0.00000 + 1.5450 0.00000 + 1.5500 0.00000 + 1.5550 0.00000 + 1.5600 0.00000 + 1.5650 0.00000 + 1.5700 0.00000 + 1.5750 0.00000 + 1.5800 0.00000 + 1.5850 0.00000 + 1.5900 0.00000 + 1.5950 0.00000 + 1.6000 0.00000 + 1.6050 0.00000 + 1.6100 0.00000 + 1.6150 0.00000 + 1.6200 0.00000 + 1.6250 0.00000 + 1.6300 0.00000 + 1.6350 0.00000 + 1.6400 0.00000 + 1.6450 0.00000 + 1.6500 0.00000 + 1.6550 0.00000 + 1.6600 0.00000 + 1.6650 0.00000 + 1.6700 0.00000 + 1.6750 0.00000 + 1.6800 0.00000 + 1.6850 0.00000 + 1.6900 0.00000 + 1.6950 0.00000 + 1.7000 0.00000 + 1.7050 0.00000 + 1.7100 0.00000 + 1.7150 0.00000 + 1.7200 0.00000 + 1.7250 0.00000 + 1.7300 0.00000 + 1.7350 0.00000 + 1.7400 0.00000 + 1.7450 0.00000 + 1.7500 0.00000 + 1.7550 0.00000 + 1.7600 0.00000 + 1.7650 0.00000 + 1.7700 0.00000 + 1.7750 0.00000 + 1.7800 0.00000 + 1.7850 0.00000 + 1.7900 0.00000 + 1.7950 0.00000 + 1.8000 0.00000 + 1.8050 0.00000 + 1.8100 0.00000 + 1.8150 0.00000 + 1.8200 0.00000 + 1.8250 0.00000 + 1.8300 0.00000 + 1.8350 0.00000 + 1.8400 0.00000 + 1.8450 0.00000 + 1.8500 0.00000 + 1.8550 0.00000 + 1.8600 0.00000 + 1.8650 0.00000 + 1.8700 0.00000 + 1.8750 0.00000 + 1.8800 0.00000 + 1.8850 0.00000 + 1.8900 0.00000 + 1.8950 0.00000 + 1.9000 0.00000 + 1.9050 0.00000 + 1.9100 0.00000 + 1.9150 0.00000 + 1.9200 0.00000 + 1.9250 0.00000 + 1.9300 0.00000 + 1.9350 0.00000 + 1.9400 0.00000 + 1.9450 0.00000 + 1.9500 0.00000 + 1.9550 0.00000 + 1.9600 0.00000 + 1.9650 0.00000 + 1.9700 0.00000 + 1.9750 0.00000 + 1.9800 0.00000 + 1.9850 0.00000 + 1.9900 0.00000 + 1.9950 0.00000 + 2.0000 0.00000 + 2.0050 0.00000 + 2.0100 0.00000 + 2.0150 0.00000 + 2.0200 0.00000 + 2.0250 0.00000 + 2.0300 0.00000 + 2.0350 0.00000 + 2.0400 0.00000 + 2.0450 0.00000 + 2.0500 0.00000 + 2.0550 0.00000 + 2.0600 0.00000 + 2.0650 0.00000 + 2.0700 0.00000 + 2.0750 0.00000 + 2.0800 0.00000 + 2.0850 0.00000 + 2.0900 0.00000 + 2.0950 0.00000 + 2.1000 0.00000 + 2.1050 0.00000 + 2.1100 0.00000 + 2.1150 0.00000 + 2.1200 0.00000 + 2.1250 0.00000 + 2.1300 0.00000 + 2.1350 0.00000 + 2.1400 0.00000 + 2.1450 0.00000 + 2.1500 0.00000 + 2.1550 0.00000 + 2.1600 0.00000 + 2.1650 0.00000 + 2.1700 0.00000 + 2.1750 0.00000 + 2.1800 0.00000 + 2.1850 0.00000 + 2.1900 0.00000 + 2.1950 0.00000 + 2.2000 0.00000 + 2.2050 0.00000 + 2.2100 0.00000 + 2.2150 0.00000 + 2.2200 0.00000 + 2.2250 0.00000 + 2.2300 0.00000 + 2.2350 0.00000 + 2.2400 0.00000 + 2.2450 0.00000 + 2.2500 0.00000 + 2.2550 0.00000 + 2.2600 0.00000 + 2.2650 0.00000 + 2.2700 0.00000 + 2.2750 0.00000 + 2.2800 0.00000 + 2.2850 0.00000 + 2.2900 0.00000 + 2.2950 0.00000 + 2.3000 0.00000 + 2.3050 0.00000 + 2.3100 0.00000 + 2.3150 0.00000 + 2.3200 0.00000 + 2.3250 0.00000 + 2.3300 0.00000 + 2.3350 0.00000 + 2.3400 0.00000 + 2.3450 0.00000 + 2.3500 0.00000 + 2.3550 0.00000 + 2.3600 0.00000 + 2.3650 0.00000 + 2.3700 0.00000 + 2.3750 0.00000 + 2.3800 0.00000 + 2.3850 0.00000 + 2.3900 0.00000 + 2.3950 0.00000 + 2.4000 0.00000 + 2.4050 0.00000 + 2.4100 0.00000 + 2.4150 0.00000 + 2.4200 0.00000 + 2.4250 0.00000 + 2.4300 0.00000 + 2.4350 0.00000 + 2.4400 0.00000 + 2.4450 0.00000 + 2.4500 0.00000 + 2.4550 0.00000 + 2.4600 0.00000 + 2.4650 0.00000 + 2.4700 0.00000 + 2.4750 0.00000 + 2.4800 0.00000 + 2.4850 0.00000 + 2.4900 0.00000 + 2.4950 0.00000 + 2.5000 0.00000 + 2.5050 0.00000 + 2.5100 0.00000 + 2.5150 0.00000 + 2.5200 0.00000 + 2.5250 0.00000 + 2.5300 0.00000 + 2.5350 0.00000 + 2.5400 0.00000 + 2.5450 0.00000 + 2.5500 0.00000 + 2.5550 0.00000 + 2.5600 0.00000 + 2.5650 0.00000 + 2.5700 0.00000 + 2.5750 0.00000 + 2.5800 0.00000 + 2.5850 0.00000 + 2.5900 0.00000 + 2.5950 0.00000 + 2.6000 0.00000 + 2.6050 0.00000 + 2.6100 0.00000 + 2.6150 0.00000 + 2.6200 0.00000 + 2.6250 0.00000 + 2.6300 0.00000 + 2.6350 0.00000 + 2.6400 0.00000 + 2.6450 0.00000 + 2.6500 0.00000 + 2.6550 0.00000 + 2.6600 0.00000 + 2.6650 0.00000 + 2.6700 0.00000 + 2.6750 0.00000 + 2.6800 0.00000 + 2.6850 0.00000 + 2.6900 0.00000 + 2.6950 0.00000 + 2.7000 0.00000 + 2.7050 0.00000 + 2.7100 0.00000 + 2.7150 0.00000 + 2.7200 0.00000 + 2.7250 0.00000 + 2.7300 0.00000 + 2.7350 0.00000 + 2.7400 0.00000 + 2.7450 0.00000 + 2.7500 0.00000 + 2.7550 0.00000 + 2.7600 0.00000 + 2.7650 0.00000 + 2.7700 0.00000 + 2.7750 0.00000 + 2.7800 0.00000 + 2.7850 0.00000 + 2.7900 0.00000 + 2.7950 0.00000 + 2.8000 0.00000 + 2.8050 0.00000 + 2.8100 0.00000 + 2.8150 0.00000 + 2.8200 0.00000 + 2.8250 0.00000 + 2.8300 0.00000 + 2.8350 0.00000 + 2.8400 0.00000 + 2.8450 0.00000 + 2.8500 0.00000 + 2.8550 0.00000 + 2.8600 0.00000 + 2.8650 0.00000 + 2.8700 0.00000 + 2.8750 0.00000 + 2.8800 0.00000 + 2.8850 0.00000 + 2.8900 0.00000 + 2.8950 0.00000 + 2.9000 0.00000 + 2.9050 0.00000 + 2.9100 0.00000 + 2.9150 0.00000 + 2.9200 0.00000 + 2.9250 0.00000 + 2.9300 0.00000 + 2.9350 0.00000 + 2.9400 0.00000 + 2.9450 0.00000 + 2.9500 0.00000 + 2.9550 0.00000 + 2.9600 0.00000 + 2.9650 0.00000 + 2.9700 0.00000 + 2.9750 0.00000 + 2.9800 0.00000 + 2.9850 0.00000 + 2.9900 0.00000 + 2.9950 0.00000 + 3.0000 0.00000 + 3.0050 0.00000 + 3.0100 0.00000 + 3.0150 0.00000 + 3.0200 0.00000 + 3.0250 0.00000 + 3.0300 0.00000 + 3.0350 0.00000 + 3.0400 0.00000 + 3.0450 0.00000 + 3.0500 0.00000 + 3.0550 0.00000 + 3.0600 0.00000 + 3.0650 0.00000 + 3.0700 0.00000 + 3.0750 0.00000 + 3.0800 0.00000 + 3.0850 0.00000 + 3.0900 0.00000 + 3.0950 0.00000 + 3.1000 0.00000 + 3.1050 0.00000 + 3.1100 0.00000 + 3.1150 0.00000 + 3.1200 0.00000 + 3.1250 0.00000 + 3.1300 0.00000 + 3.1350 0.00000 + 3.1400 0.00000 + 3.1450 0.00000 + 3.1500 0.00000 + 3.1550 0.00000 + 3.1600 0.00000 + 3.1650 0.00000 + 3.1700 0.00000 + 3.1750 0.00000 + 3.1800 0.00000 + 3.1850 0.00000 + 3.1900 0.00000 + 3.1950 0.00000 + 3.2000 0.00000 + 3.2050 0.00000 + 3.2100 0.00000 + 3.2150 0.00000 + 3.2200 0.00000 + 3.2250 0.00000 + 3.2300 0.00000 + 3.2350 0.00000 + 3.2400 0.00000 + 3.2450 0.00000 + 3.2500 0.00000 + 3.2550 0.00000 + 3.2600 0.00000 + 3.2650 0.00000 + 3.2700 0.00000 + 3.2750 0.00000 + 3.2800 0.00000 + 3.2850 0.00000 + 3.2900 0.00000 + 3.2950 0.00000 + 3.3000 0.00000 + 3.3050 0.00000 + 3.3100 0.00000 + 3.3150 0.00000 + 3.3200 0.00000 + 3.3250 0.00000 + 3.3300 0.00000 + 3.3350 0.00000 + 3.3400 0.00000 + 3.3450 0.00000 + 3.3500 0.00000 + 3.3550 0.00000 + 3.3600 0.00000 + 3.3650 0.00000 + 3.3700 0.00000 + 3.3750 0.00000 + 3.3800 0.00000 + 3.3850 0.00000 + 3.3900 0.00000 + 3.3950 0.00000 + 3.4000 0.00000 + 3.4050 0.00000 + 3.4100 0.00000 + 3.4150 0.00000 + 3.4200 0.00000 + 3.4250 0.00000 + 3.4300 0.00000 + 3.4350 0.00000 + 3.4400 0.00000 + 3.4450 0.00000 + 3.4500 0.00000 + 3.4550 0.00000 + 3.4600 0.00000 + 3.4650 0.00000 + 3.4700 0.00000 + 3.4750 0.00000 + 3.4800 0.00000 + 3.4850 0.00000 + 3.4900 0.00000 + 3.4950 0.00000 + 3.5000 0.00000 + 3.5050 0.00000 + 3.5100 0.00000 + 3.5150 0.00000 + 3.5200 0.00000 + 3.5250 0.00000 + 3.5300 0.00000 + 3.5350 0.00000 + 3.5400 0.00000 + 3.5450 0.00000 + 3.5500 0.00000 + 3.5550 0.00000 + 3.5600 0.00000 + 3.5650 0.00000 + 3.5700 0.00000 + 3.5750 0.00000 + 3.5800 0.00000 + 3.5850 0.00000 + 3.5900 0.00000 + 3.5950 0.00000 + 3.6000 0.00000 + 3.6050 0.00000 + 3.6100 0.00000 + 3.6150 0.00000 + 3.6200 0.00000 + 3.6250 0.00000 + 3.6300 0.00000 + 3.6350 0.00000 + 3.6400 0.00000 + 3.6450 0.00000 + 3.6500 0.00000 + 3.6550 0.00000 + 3.6600 0.00000 + 3.6650 0.00000 + 3.6700 0.00000 + 3.6750 0.00000 + 3.6800 0.00000 + 3.6850 0.00000 + 3.6900 0.00000 + 3.6950 0.00000 + 3.7000 0.00000 + 3.7050 0.00000 + 3.7100 0.00000 + 3.7150 0.00000 + 3.7200 0.00000 + 3.7250 0.00000 + 3.7300 0.00000 + 3.7350 0.00000 + 3.7400 0.00000 + 3.7450 0.00000 + 3.7500 0.00000 + 3.7550 0.00000 + 3.7600 0.00000 + 3.7650 0.00000 + 3.7700 0.00000 + 3.7750 0.00000 + 3.7800 0.00000 + 3.7850 0.00000 + 3.7900 0.00000 + 3.7950 0.00000 + 3.8000 0.00000 + 3.8050 0.00000 + 3.8100 0.00000 + 3.8150 0.00000 + 3.8200 0.00000 + 3.8250 0.00000 + 3.8300 0.00000 + 3.8350 0.00000 + 3.8400 0.00000 + 3.8450 0.00000 + 3.8500 0.00000 + 3.8550 0.00000 + 3.8600 0.00000 + 3.8650 0.00000 + 3.8700 0.00000 + 3.8750 0.00000 + 3.8800 0.00000 + 3.8850 0.00000 + 3.8900 0.00000 + 3.8950 0.00000 + 3.9000 0.00000 + 3.9050 0.00000 + 3.9100 0.00000 + 3.9150 0.00000 + 3.9200 0.00000 + 3.9250 0.00000 + 3.9300 0.00000 + 3.9350 0.00000 + 3.9400 0.00000 + 3.9450 0.00000 + 3.9500 0.00000 + 3.9550 0.00000 + 3.9600 0.00000 + 3.9650 0.00000 + 3.9700 0.00000 + 3.9750 0.00000 + 3.9800 0.00000 + 3.9850 0.00000 + 3.9900 0.00000 + 3.9950 0.00000 + 4.0000 0.00000 + 4.0050 0.00000 + 4.0100 0.00000 + 4.0150 0.00000 + 4.0200 0.00000 + 4.0250 0.00000 + 4.0300 0.00000 + 4.0350 0.00000 + 4.0400 0.00000 + 4.0450 0.00000 + 4.0500 0.00000 + 4.0550 0.00000 + 4.0600 0.00000 + 4.0650 0.00000 + 4.0700 0.00000 + 4.0750 0.00000 + 4.0800 0.00000 + 4.0850 0.00000 + 4.0900 0.00000 + 4.0950 0.00000 + 4.1000 0.00000 + 4.1050 0.00000 + 4.1100 0.00000 + 4.1150 0.00000 + 4.1200 0.00000 + 4.1250 0.00000 + 4.1300 0.00000 + 4.1350 0.00000 + 4.1400 0.00000 + 4.1450 0.00000 + 4.1500 0.00000 + 4.1550 0.00000 + 4.1600 0.00000 + 4.1650 0.00000 + 4.1700 0.00000 + 4.1750 0.00000 + 4.1800 0.00000 + 4.1850 0.00000 + 4.1900 0.00000 + 4.1950 0.00000 + 4.2000 0.00000 + 4.2050 0.00000 + 4.2100 0.00000 + 4.2150 0.00000 + 4.2200 0.00000 + 4.2250 0.00000 + 4.2300 0.00000 + 4.2350 0.00000 + 4.2400 0.00000 + 4.2450 0.00000 + 4.2500 0.00000 + 4.2550 0.00000 + 4.2600 0.00000 + 4.2650 0.00000 + 4.2700 0.00000 + 4.2750 0.00000 + 4.2800 0.00000 + 4.2850 0.00000 + 4.2900 0.00000 + 4.2950 0.00000 + 4.3000 0.00000 + 4.3050 0.00000 + 4.3100 0.00000 + 4.3150 0.00000 + 4.3200 0.00000 + 4.3250 0.00000 + 4.3300 0.00000 + 4.3350 0.00000 + 4.3400 0.00000 + 4.3450 0.00000 + 4.3500 0.00000 + 4.3550 0.00000 + 4.3600 0.00000 + 4.3650 0.00000 + 4.3700 0.00000 + 4.3750 0.00000 + 4.3800 0.00000 + 4.3850 0.00000 + 4.3900 0.00000 + 4.3950 0.00000 + 4.4000 0.00000 + 4.4050 0.00000 + 4.4100 0.00000 + 4.4150 0.00000 + 4.4200 0.00000 + 4.4250 0.00000 + 4.4300 0.00000 + 4.4350 0.00000 + 4.4400 0.00000 + 4.4450 0.00000 + 4.4500 0.00000 + 4.4550 0.00000 + 4.4600 0.00000 + 4.4650 0.00000 + 4.4700 0.00000 + 4.4750 0.00000 + 4.4800 0.00000 + 4.4850 0.00000 + 4.4900 0.00000 + 4.4950 0.00000 + 4.5000 0.00000 + 4.5050 0.00000 + 4.5100 0.00000 + 4.5150 0.00000 + 4.5200 0.00000 + 4.5250 0.00000 + 4.5300 0.00000 + 4.5350 0.00000 + 4.5400 0.00000 + 4.5450 0.00000 + 4.5500 0.00000 + 4.5550 0.00000 + 4.5600 0.00000 + 4.5650 0.00000 + 4.5700 0.00000 + 4.5750 0.00000 + 4.5800 0.00000 + 4.5850 0.00000 + 4.5900 0.00000 + 4.5950 0.00000 + 4.6000 0.00000 + 4.6050 0.00000 + 4.6100 0.00000 + 4.6150 0.00000 + 4.6200 0.00000 + 4.6250 0.00000 + 4.6300 0.00000 + 4.6350 0.00000 + 4.6400 0.00000 + 4.6450 0.00000 + 4.6500 0.00000 + 4.6550 0.00000 + 4.6600 0.00000 + 4.6650 0.00000 + 4.6700 0.00000 + 4.6750 0.00000 + 4.6800 0.00000 + 4.6850 0.00000 + 4.6900 0.00000 + 4.6950 0.00000 + 4.7000 0.00000 + 4.7050 0.00000 + 4.7100 0.00000 + 4.7150 0.00000 + 4.7200 0.00000 + 4.7250 0.00000 + 4.7300 0.00000 + 4.7350 0.00000 + 4.7400 0.00000 + 4.7450 0.00000 + 4.7500 0.00000 + 4.7550 0.00000 + 4.7600 0.00000 + 4.7650 0.00000 + 4.7700 0.00000 + 4.7750 0.00000 + 4.7800 0.00000 + 4.7850 0.00000 + 4.7900 0.00000 + 4.7950 0.00000 + 4.8000 0.00000 + 4.8050 0.00000 + 4.8100 0.00000 + 4.8150 0.00000 + 4.8200 0.00000 + 4.8250 0.00000 + 4.8300 0.00000 + 4.8350 0.00000 + 4.8400 0.00000 + 4.8450 0.00000 + 4.8500 0.00000 + 4.8550 0.00000 + 4.8600 0.00000 + 4.8650 0.00000 + 4.8700 0.00000 + 4.8750 0.00000 + 4.8800 0.00000 + 4.8850 0.00000 + 4.8900 0.00000 + 4.8950 0.00000 + 4.9000 0.00000 + 4.9050 0.00000 + 4.9100 0.00000 + 4.9150 0.00000 + 4.9200 0.00000 + 4.9250 0.00000 + 4.9300 0.00000 + 4.9350 0.00000 + 4.9400 0.00000 + 4.9450 0.00000 + 4.9500 0.00000 + 4.9550 0.00000 + 4.9600 0.00000 + 4.9650 0.00000 + 4.9700 0.00000 + 4.9750 0.00000 + 4.9800 0.00000 + 4.9850 0.00000 + 4.9900 0.00000 + 4.9950 0.00000 + 5.0000 0.00000 + 5.0050 0.00000 + 5.0100 0.00000 + 5.0150 0.00000 + 5.0200 0.00000 + 5.0250 0.00000 + 5.0300 0.00000 + 5.0350 0.00000 + 5.0400 0.00000 + 5.0450 0.00000 + 5.0500 0.00000 + 5.0550 0.00000 + 5.0600 0.00000 + 5.0650 0.00000 + 5.0700 0.00000 + 5.0750 0.00000 + 5.0800 0.00000 + 5.0850 0.00000 + 5.0900 0.00000 + 5.0950 0.00000 + 5.1000 0.00000 + 5.1050 0.00000 + 5.1100 0.00000 + 5.1150 0.00000 + 5.1200 0.00000 + 5.1250 0.00000 + 5.1300 0.00000 + 5.1350 0.00000 + 5.1400 0.00000 + 5.1450 0.00000 + 5.1500 0.00000 + 5.1550 0.00000 + 5.1600 0.00000 + 5.1650 0.00000 + 5.1700 0.00000 + 5.1750 0.00000 + 5.1800 0.00000 + 5.1850 0.00000 + 5.1900 0.00000 + 5.1950 0.00000 + 5.2000 0.00000 + 5.2050 0.00000 + 5.2100 0.00000 + 5.2150 0.00000 + 5.2200 0.00000 + 5.2250 0.00000 + 5.2300 0.00000 + 5.2350 0.00000 + 5.2400 0.00000 + 5.2450 0.00000 + 5.2500 0.00000 + 5.2550 0.00000 + 5.2600 0.00000 + 5.2650 0.00000 + 5.2700 0.00000 + 5.2750 0.00000 + 5.2800 0.00000 + 5.2850 0.00000 + 5.2900 0.00000 + 5.2950 0.00000 + 5.3000 0.00000 + 5.3050 0.00000 + 5.3100 0.00000 + 5.3150 0.00000 + 5.3200 0.00000 + 5.3250 0.00000 + 5.3300 0.00000 + 5.3350 0.00000 + 5.3400 0.00000 + 5.3450 0.00000 + 5.3500 0.00000 + 5.3550 0.00000 + 5.3600 0.00000 + 5.3650 0.00000 + 5.3700 0.00000 + 5.3750 0.00000 + 5.3800 0.00000 + 5.3850 0.00000 + 5.3900 0.00000 + 5.3950 0.00000 + 5.4000 0.00000 + 5.4050 0.00000 + 5.4100 0.00000 + 5.4150 0.00000 + 5.4200 0.00000 + 5.4250 0.00000 + 5.4300 0.00000 + 5.4350 0.00000 + 5.4400 0.00000 + 5.4450 0.00000 + 5.4500 0.00000 + 5.4550 0.00000 + 5.4600 0.00000 + 5.4650 0.00000 + 5.4700 0.00000 + 5.4750 0.00000 + 5.4800 0.00000 + 5.4850 0.00000 + 5.4900 0.00000 + 5.4950 0.00000 + 5.5000 0.00000 + 5.5050 0.00000 + 5.5100 0.00000 + 5.5150 0.00000 + 5.5200 0.00000 + 5.5250 0.00000 + 5.5300 0.00000 + 5.5350 0.00000 + 5.5400 0.00000 + 5.5450 0.00000 + 5.5500 0.00000 + 5.5550 0.00000 + 5.5600 0.00000 + 5.5650 0.00000 + 5.5700 0.00000 + 5.5750 0.00000 + 5.5800 0.00000 + 5.5850 0.00000 + 5.5900 0.00000 + 5.5950 0.00000 + 5.6000 0.00000 + 5.6050 0.00000 + 5.6100 0.00000 + 5.6150 0.00000 + 5.6200 0.00000 + 5.6250 0.00000 + 5.6300 0.00000 + 5.6350 0.00000 + 5.6400 0.00000 + 5.6450 0.00000 + 5.6500 0.00000 + 5.6550 0.00000 + 5.6600 0.00000 + 5.6650 0.00000 + 5.6700 0.00000 + 5.6750 0.00000 + 5.6800 0.00000 + 5.6850 0.00000 + 5.6900 0.00000 + 5.6950 0.00000 + 5.7000 0.00000 + 5.7050 0.00000 + 5.7100 0.00000 + 5.7150 0.00000 + 5.7200 0.00000 + 5.7250 0.00000 + 5.7300 0.00000 + 5.7350 0.00000 + 5.7400 0.00000 + 5.7450 0.00000 + 5.7500 0.00000 + 5.7550 0.00000 + 5.7600 0.00000 + 5.7650 0.00000 + 5.7700 0.00000 + 5.7750 0.00000 + 5.7800 0.00000 + 5.7850 0.00000 + 5.7900 0.00000 + 5.7950 0.00000 + 5.8000 0.00000 + 5.8050 0.00000 + 5.8100 0.00000 + 5.8150 0.00000 + 5.8200 0.00000 + 5.8250 0.00000 + 5.8300 0.00000 + 5.8350 0.00000 + 5.8400 0.00000 + 5.8450 0.00000 + 5.8500 0.00000 + 5.8550 0.00000 + 5.8600 0.00000 + 5.8650 0.00000 + 5.8700 0.00000 + 5.8750 0.00000 + 5.8800 0.00000 + 5.8850 0.00000 + 5.8900 0.00000 + 5.8950 0.00000 + 5.9000 0.00000 + 5.9050 0.00000 + 5.9100 0.00000 + 5.9150 0.00000 + 5.9200 0.00000 + 5.9250 0.00000 + 5.9300 0.00000 + 5.9350 0.00000 + 5.9400 0.00000 + 5.9450 0.00000 + 5.9500 0.00000 + 5.9550 0.00000 + 5.9600 0.00000 + 5.9650 0.00000 + 5.9700 0.00000 + 5.9750 0.00000 + 5.9800 0.00000 + 5.9850 0.00000 + 5.9900 0.00000 + 5.9950 0.00000 + 6.0000 0.00000 + 6.0050 0.00000 + 6.0100 0.00000 + 6.0150 0.00000 + 6.0200 0.00000 + 6.0250 0.00000 + 6.0300 0.00000 + 6.0350 0.00000 + 6.0400 0.00000 + 6.0450 0.00000 + 6.0500 0.00000 + 6.0550 0.00000 + 6.0600 0.00000 + 6.0650 0.00000 + 6.0700 0.00000 + 6.0750 0.00000 + 6.0800 0.00000 + 6.0850 0.00000 + 6.0900 0.00000 + 6.0950 0.00000 + 6.1000 0.00000 + 6.1050 0.00000 + 6.1100 0.00000 + 6.1150 0.00000 + 6.1200 0.00000 + 6.1250 0.00000 + 6.1300 0.00000 + 6.1350 0.00000 + 6.1400 0.00000 + 6.1450 0.00000 + 6.1500 0.00000 + 6.1550 0.00000 + 6.1600 0.00000 + 6.1650 0.00000 + 6.1700 0.00000 + 6.1750 0.00000 + 6.1800 0.00000 + 6.1850 0.00000 + 6.1900 0.00000 + 6.1950 0.00000 + 6.2000 0.00000 + 6.2050 0.00000 + 6.2100 0.00000 + 6.2150 0.00000 + 6.2200 0.00000 + 6.2250 0.00000 + 6.2300 0.00000 + 6.2350 0.00000 + 6.2400 0.00000 + 6.2450 0.00000 + 6.2500 0.00000 + 6.2550 0.00000 + 6.2600 0.00000 + 6.2650 0.00000 + 6.2700 0.00000 + 6.2750 0.00000 + 6.2800 0.00000 + 6.2850 0.00000 + 6.2900 0.00000 + 6.2950 0.00000 + 6.3000 0.00000 + 6.3050 0.00000 + 6.3100 0.00000 + 6.3150 0.00000 + 6.3200 0.00000 + 6.3250 0.00000 + 6.3300 0.00000 + 6.3350 0.00000 + 6.3400 0.00000 + 6.3450 0.00000 + 6.3500 0.00000 + 6.3550 0.00000 + 6.3600 0.00000 + 6.3650 0.00000 + 6.3700 0.00000 + 6.3750 0.00000 + 6.3800 0.00000 + 6.3850 0.00000 + 6.3900 0.00000 + 6.3950 0.00000 + 6.4000 0.00000 + 6.4050 0.00000 + 6.4100 0.00000 + 6.4150 0.00000 + 6.4200 0.00000 + 6.4250 0.00000 + 6.4300 0.00000 + 6.4350 0.00000 + 6.4400 0.00000 + 6.4450 0.00000 + 6.4500 0.00000 + 6.4550 0.00000 + 6.4600 0.00000 + 6.4650 0.00000 + 6.4700 0.00000 + 6.4750 0.00000 + 6.4800 0.00000 + 6.4850 0.00000 + 6.4900 0.00000 + 6.4950 0.00000 + 6.5000 0.00000 + 6.5050 0.00000 + 6.5100 0.00000 + 6.5150 0.00000 + 6.5200 0.00000 + 6.5250 0.00000 + 6.5300 0.00000 + 6.5350 0.00000 + 6.5400 0.00000 + 6.5450 0.00000 + 6.5500 0.00000 + 6.5550 0.00000 + 6.5600 0.00000 + 6.5650 0.00000 + 6.5700 0.00000 + 6.5750 0.00000 + 6.5800 0.00000 + 6.5850 0.00000 + 6.5900 0.00000 + 6.5950 0.00000 + 6.6000 0.00000 + 6.6050 0.00000 + 6.6100 0.00000 + 6.6150 0.00000 + 6.6200 0.00000 + 6.6250 0.00000 + 6.6300 0.00000 + 6.6350 0.00000 + 6.6400 0.00000 + 6.6450 0.00000 + 6.6500 0.00000 + 6.6550 0.00000 + 6.6600 0.00000 + 6.6650 0.00000 + 6.6700 0.00000 + 6.6750 0.00000 + 6.6800 0.00000 + 6.6850 0.00000 + 6.6900 0.00000 + 6.6950 0.00000 + 6.7000 0.00000 + 6.7050 0.00000 + 6.7100 0.00000 + 6.7150 0.00000 + 6.7200 0.00000 + 6.7250 0.00000 + 6.7300 0.00000 + 6.7350 0.00000 + 6.7400 0.00000 + 6.7450 0.00000 + 6.7500 0.00000 + 6.7550 0.00000 + 6.7600 0.00000 + 6.7650 0.00000 + 6.7700 0.00000 + 6.7750 0.00000 + 6.7800 0.00000 + 6.7850 0.00000 + 6.7900 0.00000 + 6.7950 0.00000 + 6.8000 0.00000 + 6.8050 0.00000 + 6.8100 0.00000 + 6.8150 0.00000 + 6.8200 0.00000 + 6.8250 0.00000 + 6.8300 0.00000 + 6.8350 0.00000 + 6.8400 0.00000 + 6.8450 0.00000 + 6.8500 0.00000 + 6.8550 0.00000 + 6.8600 0.00000 + 6.8650 0.00000 + 6.8700 0.00000 + 6.8750 0.00000 + 6.8800 0.00000 + 6.8850 0.00000 + 6.8900 0.00000 + 6.8950 0.00000 + 6.9000 0.00000 + 6.9050 0.00000 + 6.9100 0.00000 + 6.9150 0.00000 + 6.9200 0.00000 + 6.9250 0.00000 + 6.9300 0.00000 + 6.9350 0.00000 + 6.9400 0.00000 + 6.9450 0.00000 + 6.9500 0.00000 + 6.9550 0.00000 + 6.9600 0.00000 + 6.9650 0.00000 + 6.9700 0.00000 + 6.9750 0.00000 + 6.9800 0.00000 + 6.9850 0.00000 + 6.9900 0.00000 + 6.9950 0.00000 + 7.0000 0.00000 + 7.0050 0.00000 + 7.0100 0.00000 + 7.0150 0.00000 + 7.0200 0.00000 + 7.0250 0.00000 + 7.0300 0.00000 + 7.0350 0.00000 + 7.0400 0.00000 + 7.0450 0.00000 + 7.0500 0.00000 + 7.0550 0.00000 + 7.0600 0.00000 + 7.0650 0.00000 + 7.0700 0.00000 + 7.0750 0.00000 + 7.0800 0.00000 + 7.0850 0.00000 + 7.0900 0.00000 + 7.0950 0.00000 + 7.1000 0.00000 + 7.1050 0.00000 + 7.1100 0.00000 + 7.1150 0.00000 + 7.1200 0.00000 + 7.1250 0.00000 + 7.1300 0.00000 + 7.1350 0.00000 + 7.1400 0.00000 + 7.1450 0.00000 + 7.1500 0.00000 + 7.1550 0.00000 + 7.1600 0.00000 + 7.1650 0.00000 + 7.1700 0.00000 + 7.1750 0.00000 + 7.1800 0.00000 + 7.1850 0.00000 + 7.1900 0.00000 + 7.1950 0.00000 + 7.2000 0.00000 + 7.2050 0.00000 + 7.2100 0.00000 + 7.2150 0.00000 + 7.2200 0.00000 + 7.2250 0.00000 + 7.2300 0.00000 + 7.2350 0.00000 + 7.2400 0.00000 + 7.2450 0.00000 + 7.2500 0.00000 + 7.2550 0.00000 + 7.2600 0.00000 + 7.2650 0.00000 + 7.2700 0.00000 + 7.2750 0.00000 + 7.2800 0.00000 + 7.2850 0.00000 + 7.2900 0.00000 + 7.2950 0.00000 + 7.3000 0.00000 + 7.3050 0.00000 + 7.3100 0.00000 + 7.3150 0.00000 + 7.3200 0.00000 + 7.3250 0.00000 + 7.3300 0.00000 + 7.3350 0.00000 + 7.3400 0.00000 + 7.3450 0.00000 + 7.3500 0.00000 + 7.3550 0.00000 + 7.3600 0.00000 + 7.3650 0.00000 + 7.3700 0.00000 + 7.3750 0.00000 + 7.3800 0.00000 + 7.3850 0.00000 + 7.3900 0.00000 + 7.3950 0.00000 + 7.4000 0.00000 + 7.4050 0.00000 + 7.4100 0.00000 + 7.4150 0.00000 + 7.4200 0.00000 + 7.4250 0.00000 + 7.4300 0.00000 + 7.4350 0.00000 + 7.4400 0.00000 + 7.4450 0.00000 + 7.4500 0.00000 + 7.4550 0.00000 + 7.4600 0.00000 + 7.4650 0.00000 + 7.4700 0.00000 + 7.4750 0.00000 + 7.4800 0.00000 + 7.4850 0.00000 + 7.4900 0.00000 + 7.4950 0.00000 + 7.5000 0.00000 + 7.5050 0.00000 + 7.5100 0.00000 + 7.5150 0.00000 + 7.5200 0.00000 + 7.5250 0.00000 + 7.5300 0.00000 + 7.5350 0.00000 + 7.5400 0.00000 + 7.5450 0.00000 + 7.5500 0.00000 + 7.5550 0.00000 + 7.5600 0.00000 + 7.5650 0.00000 + 7.5700 0.00000 + 7.5750 0.00000 + 7.5800 0.00000 + 7.5850 0.00000 + 7.5900 0.00000 + 7.5950 0.00000 + 7.6000 0.00000 + 7.6050 0.00000 + 7.6100 0.00000 + 7.6150 0.00000 + 7.6200 0.00000 + 7.6250 0.00000 + 7.6300 0.00000 + 7.6350 0.00000 + 7.6400 0.00000 + 7.6450 0.00000 + 7.6500 0.00000 + 7.6550 0.00000 + 7.6600 0.00000 + 7.6650 0.00000 + 7.6700 0.00000 + 7.6750 0.00000 + 7.6800 0.00000 + 7.6850 0.00000 + 7.6900 0.00000 + 7.6950 0.00000 + 7.7000 0.00000 + 7.7050 0.00000 + 7.7100 0.00000 + 7.7150 0.00000 + 7.7200 0.00000 + 7.7250 0.00000 + 7.7300 0.00000 + 7.7350 0.00000 + 7.7400 0.00000 + 7.7450 0.00000 + 7.7500 0.00000 + 7.7550 0.00000 + 7.7600 0.00000 + 7.7650 0.00000 + 7.7700 0.00000 + 7.7750 0.00000 + 7.7800 0.00000 + 7.7850 0.00000 + 7.7900 0.00000 + 7.7950 0.00000 + 7.8000 0.00000 + 7.8050 0.00000 + 7.8100 0.00000 + 7.8150 0.00000 + 7.8200 0.00000 + 7.8250 0.00000 + 7.8300 0.00000 + 7.8350 0.00000 + 7.8400 0.00000 + 7.8450 0.00000 + 7.8500 0.00000 + 7.8550 0.00000 + 7.8600 0.00000 + 7.8650 0.00000 + 7.8700 0.00000 + 7.8750 0.00000 + 7.8800 0.00000 + 7.8850 0.00000 + 7.8900 0.00000 + 7.8950 0.00000 + 7.9000 0.00000 + 7.9050 0.00000 + 7.9100 0.00000 + 7.9150 0.00000 + 7.9200 0.00000 + 7.9250 0.00000 + 7.9300 0.00000 + 7.9350 0.00000 + 7.9400 0.00000 + 7.9450 0.00000 + 7.9500 0.00000 + 7.9550 0.00000 + 7.9600 0.00000 + 7.9650 0.00000 + 7.9700 0.00000 + 7.9750 0.00000 + 7.9800 0.00000 + 7.9850 0.00000 + 7.9900 0.00000 + 7.9950 0.00000 + 8.0000 0.00000 + 8.0050 0.00000 + 8.0100 0.00000 + 8.0150 0.00000 + 8.0200 0.00000 + 8.0250 0.00000 + 8.0300 0.00000 + 8.0350 0.00000 + 8.0400 0.00000 + 8.0450 0.00000 + 8.0500 0.00000 + 8.0550 0.00000 + 8.0600 0.00000 + 8.0650 0.00000 + 8.0700 0.00000 + 8.0750 0.00000 + 8.0800 0.00000 + 8.0850 0.00000 + 8.0900 0.00000 + 8.0950 0.00000 + 8.1000 0.00000 + 8.1050 0.00000 + 8.1100 0.00000 + 8.1150 0.00000 + 8.1200 0.00000 + 8.1250 0.00000 + 8.1300 0.00000 + 8.1350 0.00000 + 8.1400 0.00000 + 8.1450 0.00000 + 8.1500 0.00000 + 8.1550 0.00000 + 8.1600 0.00000 + 8.1650 0.00000 + 8.1700 0.00000 + 8.1750 0.00000 + 8.1800 0.00000 + 8.1850 0.00000 + 8.1900 0.00000 + 8.1950 0.00000 + 8.2000 0.00000 + 8.2050 0.00000 + 8.2100 0.00000 + 8.2150 0.00000 + 8.2200 0.00000 + 8.2250 0.00000 + 8.2300 0.00000 + 8.2350 0.00000 + 8.2400 0.00000 + 8.2450 0.00000 + 8.2500 0.00000 + 8.2550 0.00000 + 8.2600 0.00000 + 8.2650 0.00000 + 8.2700 0.00000 + 8.2750 0.00000 + 8.2800 0.00000 + 8.2850 0.00000 + 8.2900 0.00000 + 8.2950 0.00000 + 8.3000 0.00000 + 8.3050 0.00000 + 8.3100 0.00000 + 8.3150 0.00000 + 8.3200 0.00000 + 8.3250 0.00000 + 8.3300 0.00000 + 8.3350 0.00000 + 8.3400 0.00000 + 8.3450 0.00000 + 8.3500 0.00000 + 8.3550 0.00000 + 8.3600 0.00000 + 8.3650 0.00000 + 8.3700 0.00000 + 8.3750 0.00000 + 8.3800 0.00000 + 8.3850 0.00000 + 8.3900 0.00000 + 8.3950 0.00000 + 8.4000 0.00000 + 8.4050 0.00000 + 8.4100 0.00000 + 8.4150 0.00000 + 8.4200 0.00000 + 8.4250 0.00000 + 8.4300 0.00000 + 8.4350 0.00000 + 8.4400 0.00000 + 8.4450 0.00000 + 8.4500 0.00000 + 8.4550 0.00000 + 8.4600 0.00000 + 8.4650 0.00000 + 8.4700 0.00000 + 8.4750 0.00000 + 8.4800 0.00000 + 8.4850 0.00000 + 8.4900 0.00000 + 8.4950 0.00000 + 8.5000 0.00000 + 8.5050 0.00000 + 8.5100 0.00000 + 8.5150 0.00000 + 8.5200 0.00000 + 8.5250 0.00000 + 8.5300 0.00000 + 8.5350 0.00000 + 8.5400 0.00000 + 8.5450 0.00000 + 8.5500 0.00000 + 8.5550 0.00000 + 8.5600 0.00000 + 8.5650 0.00000 + 8.5700 0.00000 + 8.5750 0.00000 + 8.5800 0.00000 + 8.5850 0.00000 + 8.5900 0.00000 + 8.5950 0.00000 + 8.6000 0.00000 + 8.6050 0.00000 + 8.6100 0.00000 + 8.6150 0.00000 + 8.6200 0.00000 + 8.6250 0.00000 + 8.6300 0.00000 + 8.6350 0.00000 + 8.6400 0.00000 + 8.6450 0.00000 + 8.6500 0.00000 + 8.6550 0.00000 + 8.6600 0.00000 + 8.6650 0.00000 + 8.6700 0.00000 + 8.6750 0.00000 + 8.6800 0.00000 + 8.6850 0.00000 + 8.6900 0.00000 + 8.6950 0.00000 + 8.7000 0.00000 + 8.7050 0.00000 + 8.7100 0.00000 + 8.7150 0.00000 + 8.7200 0.00000 + 8.7250 0.00000 + 8.7300 0.00000 + 8.7350 0.00000 + 8.7400 0.00000 + 8.7450 0.00000 + 8.7500 0.00000 + 8.7550 0.00000 + 8.7600 0.00000 + 8.7650 0.00000 + 8.7700 0.00000 + 8.7750 0.00000 + 8.7800 0.00000 + 8.7850 0.00000 + 8.7900 0.00000 + 8.7950 0.00000 + 8.8000 0.00000 + 8.8050 0.00000 + 8.8100 0.00000 + 8.8150 0.00000 + 8.8200 0.00000 + 8.8250 0.00000 + 8.8300 0.00000 + 8.8350 0.00000 + 8.8400 0.00000 + 8.8450 0.00000 + 8.8500 0.00000 + 8.8550 0.00000 + 8.8600 0.00000 + 8.8650 0.00000 + 8.8700 0.00000 + 8.8750 0.00000 + 8.8800 0.00000 + 8.8850 0.00000 + 8.8900 0.00000 + 8.8950 0.00000 + 8.9000 0.00000 + 8.9050 0.00000 + 8.9100 0.00000 + 8.9150 0.00000 + 8.9200 0.00000 + 8.9250 0.00000 + 8.9300 0.00000 + 8.9350 0.00000 + 8.9400 0.00000 + 8.9450 0.00000 + 8.9500 0.00000 + 8.9550 0.00000 + 8.9600 0.00000 + 8.9650 0.00000 + 8.9700 0.00000 + 8.9750 0.00000 + 8.9800 0.00000 + 8.9850 0.00000 + 8.9900 0.00000 + 8.9950 0.00000 + 9.0000 0.00000 + 9.0050 0.00000 + 9.0100 0.00000 + 9.0150 0.00000 + 9.0200 0.00000 + 9.0250 0.00000 + 9.0300 0.00000 + 9.0350 0.00000 + 9.0400 0.00000 + 9.0450 0.00000 + 9.0500 0.00000 + 9.0550 0.00000 + 9.0600 0.00000 + 9.0650 0.00000 + 9.0700 0.00000 + 9.0750 0.00000 + 9.0800 0.00000 + 9.0850 0.00000 + 9.0900 0.00000 + 9.0950 0.00000 + 9.1000 0.00000 + 9.1050 0.00000 + 9.1100 0.00000 + 9.1150 0.00000 + 9.1200 0.00000 + 9.1250 0.00000 + 9.1300 0.00000 + 9.1350 0.00000 + 9.1400 0.00000 + 9.1450 0.00000 + 9.1500 0.00000 + 9.1550 0.00000 + 9.1600 0.00000 + 9.1650 0.00000 + 9.1700 0.00000 + 9.1750 0.00000 + 9.1800 0.00000 + 9.1850 0.00000 + 9.1900 0.00000 + 9.1950 0.00000 + 9.2000 0.00000 + 9.2050 0.00000 + 9.2100 0.00000 + 9.2150 0.00000 + 9.2200 0.00000 + 9.2250 0.00000 + 9.2300 0.00000 + 9.2350 0.00000 + 9.2400 0.00000 + 9.2450 0.00000 + 9.2500 0.00000 + 9.2550 0.00000 + 9.2600 0.00000 + 9.2650 0.00000 + 9.2700 0.00000 + 9.2750 0.00000 + 9.2800 0.00000 + 9.2850 0.00000 + 9.2900 0.00000 + 9.2950 0.00000 + 9.3000 0.00000 + 9.3050 0.00000 + 9.3100 0.00000 + 9.3150 0.00000 + 9.3200 0.00000 + 9.3250 0.00000 + 9.3300 0.00000 + 9.3350 0.00000 + 9.3400 0.00000 + 9.3450 0.00000 + 9.3500 0.00000 + 9.3550 0.00000 + 9.3600 0.00000 + 9.3650 0.00000 + 9.3700 0.00000 + 9.3750 0.00000 + 9.3800 0.00000 + 9.3850 0.00000 + 9.3900 0.00000 + 9.3950 0.00000 + 9.4000 0.00000 + 9.4050 0.00000 + 9.4100 0.00000 + 9.4150 0.00000 + 9.4200 0.00000 + 9.4250 0.00000 + 9.4300 0.00000 + 9.4350 0.00000 + 9.4400 0.00000 + 9.4450 0.00000 + 9.4500 0.00000 + 9.4550 0.00000 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 4.1162e-05 + 0.20500 4.4270e-05 + 0.21000 4.7287e-05 + 0.21500 5.0181e-05 + 0.22000 5.2922e-05 + 0.22500 5.5489e-05 + 0.23000 5.7864e-05 + 0.23500 6.0035e-05 + 0.24000 6.1995e-05 + 0.24500 6.3745e-05 + 0.25000 6.5287e-05 + 0.25500 6.6631e-05 + 0.26000 6.7788e-05 + 0.26500 6.8771e-05 + 0.27000 6.9597e-05 + 0.27500 7.0283e-05 + 0.28000 7.0844e-05 + 0.28500 7.1297e-05 + 0.29000 7.1657e-05 + 0.29500 7.1938e-05 + 0.30000 7.2153e-05 + 0.30500 7.2312e-05 + 0.31000 7.2423e-05 + 0.31500 7.2493e-05 + 0.32000 7.2527e-05 + 0.32500 7.2527e-05 + 0.33000 7.2495e-05 + 0.33500 7.2431e-05 + 0.34000 7.2332e-05 + 0.34500 7.2196e-05 + 0.35000 7.2018e-05 + 0.35500 7.1793e-05 + 0.36000 7.1515e-05 + 0.36500 7.1178e-05 + 0.37000 7.0775e-05 + 0.37500 7.0300e-05 + 0.38000 6.9747e-05 + 0.38500 6.9113e-05 + 0.39000 6.8392e-05 + 0.39500 6.7585e-05 + 0.40000 6.6691e-05 + 0.40500 6.5713e-05 + 0.41000 6.4656e-05 + 0.41500 6.3526e-05 + 0.42000 6.2334e-05 + 0.42500 6.1090e-05 + 0.43000 5.9809e-05 + 0.43500 5.8505e-05 + 0.44000 5.7192e-05 + 0.44500 5.5888e-05 + 0.45000 5.4607e-05 + 0.45500 5.3363e-05 + 0.46000 5.2171e-05 + 0.46500 5.1041e-05 + 0.47000 4.9984e-05 + 0.47500 4.9005e-05 + 0.48000 4.8111e-05 + 0.48500 4.7304e-05 + 0.49000 4.6583e-05 + 0.49500 4.5948e-05 + 0.50000 4.5395e-05 + 0.50500 4.4919e-05 + 0.51000 4.4513e-05 + 0.51500 4.4173e-05 + 0.52000 4.3890e-05 + 0.52500 4.3658e-05 + 0.53000 4.3470e-05 + 0.53500 4.3320e-05 + 0.54000 4.3200e-05 + 0.54500 4.3107e-05 + 0.55000 4.3035e-05 + 0.55500 4.2980e-05 + 0.56000 4.2939e-05 + 0.56500 4.2908e-05 + 0.57000 4.2885e-05 + 0.57500 4.2868e-05 + 0.58000 4.2857e-05 + 0.58500 4.2848e-05 + 0.59000 4.2843e-05 + 0.59500 4.2839e-05 + 0.60000 4.2837e-05 + 0.60500 4.2837e-05 + 0.61000 4.2838e-05 + 0.61500 4.2842e-05 + 0.62000 4.2848e-05 + 0.62500 4.2859e-05 + 0.63000 4.2875e-05 + 0.63500 4.2900e-05 + 0.64000 4.2938e-05 + 0.64500 4.2993e-05 + 0.65000 4.3074e-05 + 0.65500 4.3190e-05 + 0.66000 4.3353e-05 + 0.66500 4.3579e-05 + 0.67000 4.3888e-05 + 0.67500 4.4304e-05 + 0.68000 4.4857e-05 + 0.68500 4.5578e-05 + 0.69000 4.6505e-05 + 0.69500 4.7680e-05 + 0.70000 4.9145e-05 + 0.70500 5.0944e-05 + 0.71000 5.3118e-05 + 0.71500 5.5704e-05 + 0.72000 5.8731e-05 + 0.72500 6.2217e-05 + 0.73000 6.6166e-05 + 0.73500 7.0562e-05 + 0.74000 7.5372e-05 + 0.74500 8.0540e-05 + 0.75000 8.5989e-05 + 0.75500 9.1620e-05 + 0.76000 9.7318e-05 + 0.76500 0.00010295 + 0.77000 0.00010838 + 0.77500 0.00011346 + 0.78000 0.00011807 + 0.78500 0.00012206 + 0.79000 0.00012533 + 0.79500 0.00012781 + 0.80000 0.00012944 + 0.80500 0.00013019 + 0.81000 0.00013008 + 0.81500 0.00012916 + 0.82000 0.00012749 + 0.82500 0.00012519 + 0.83000 0.00012235 + 0.83500 0.00011911 + 0.84000 0.00011561 + 0.84500 0.00011197 + 0.85000 0.00010831 + 0.85500 0.00010475 + 0.86000 0.00010135 + 0.86500 9.8211e-05 + 0.87000 9.5362e-05 + 0.87500 9.2837e-05 + 0.88000 9.0647e-05 + 0.88500 8.8786e-05 + 0.89000 8.7237e-05 + 0.89500 8.5975e-05 + 0.90000 8.4969e-05 + 0.90500 8.4183e-05 + 0.91000 8.3584e-05 + 0.91500 8.3137e-05 + 0.92000 8.2811e-05 + 0.92500 8.2581e-05 + 0.93000 8.2424e-05 + 0.93500 8.2319e-05 + 0.94000 8.2253e-05 + 0.94500 8.2213e-05 + 0.95000 8.2192e-05 + 0.95500 8.2181e-05 + 0.96000 8.2178e-05 + 0.96500 8.2178e-05 + 0.97000 8.2180e-05 + 0.97500 8.2184e-05 + 0.98000 8.2187e-05 + 0.98500 8.2189e-05 + 0.99000 8.2191e-05 + 0.99500 8.2193e-05 + 1.0000 8.2195e-05 + 1.0050 8.2196e-05 + 1.0100 8.2197e-05 + 1.0150 8.2197e-05 + 1.0200 8.2197e-05 + 1.0250 8.2198e-05 + 1.0300 8.2198e-05 + 1.0350 8.2199e-05 + 1.0400 8.2200e-05 + 1.0450 8.2201e-05 + 1.0500 8.2202e-05 + 1.0550 8.2204e-05 + 1.0600 8.2207e-05 + 1.0650 8.2212e-05 + 1.0700 8.2218e-05 + 1.0750 8.2227e-05 + 1.0800 8.2239e-05 + 1.0850 8.2255e-05 + 1.0900 8.2277e-05 + 1.0950 8.2306e-05 + 1.1000 8.2345e-05 + 1.1050 8.2395e-05 + 1.1100 8.2459e-05 + 1.1150 8.2541e-05 + 1.1200 8.2645e-05 + 1.1250 8.2773e-05 + 1.1300 8.2930e-05 + 1.1350 8.3121e-05 + 1.1400 8.3351e-05 + 1.1450 8.3623e-05 + 1.1500 8.3943e-05 + 1.1550 8.4314e-05 + 1.1600 8.4739e-05 + 1.1650 8.5221e-05 + 1.1700 8.5762e-05 + 1.1750 8.6362e-05 + 1.1800 8.7021e-05 + 1.1850 8.7734e-05 + 1.1900 8.8500e-05 + 1.1950 8.9312e-05 + 1.2000 9.0163e-05 + 1.2050 9.1047e-05 + 1.2100 9.1954e-05 + 1.2150 9.2875e-05 + 1.2200 9.3799e-05 + 1.2250 9.4717e-05 + 1.2300 9.5619e-05 + 1.2350 9.6495e-05 + 1.2400 9.7337e-05 + 1.2450 9.8137e-05 + 1.2500 9.8889e-05 + 1.2550 9.9587e-05 + 1.2600 0.00010023 + 1.2650 0.00010081 + 1.2700 0.00010133 + 1.2750 0.00010178 + 1.2800 0.00010218 + 1.2850 0.00010251 + 1.2900 0.00010278 + 1.2950 0.00010300 + 1.3000 0.00010315 + 1.3050 0.00010324 + 1.3100 0.00010328 + 1.3150 0.00010325 + 1.3200 0.00010315 + 1.3250 0.00010299 + 1.3300 0.00010277 + 1.3350 0.00010246 + 1.3400 0.00010208 + 1.3450 0.00010161 + 1.3500 0.00010105 + 1.3550 0.00010040 + 1.3600 9.9663e-05 + 1.3650 9.8827e-05 + 1.3700 9.7897e-05 + 1.3750 9.6878e-05 + 1.3800 9.5774e-05 + 1.3850 9.4593e-05 + 1.3900 9.3346e-05 + 1.3950 9.2044e-05 + 1.4000 9.0703e-05 + 1.4050 8.9337e-05 + 1.4100 8.7963e-05 + 1.4150 8.6597e-05 + 1.4200 8.5255e-05 + 1.4250 8.3953e-05 + 1.4300 8.2704e-05 + 1.4350 8.1521e-05 + 1.4400 8.0413e-05 + 1.4450 7.9389e-05 + 1.4500 7.8452e-05 + 1.4550 7.7607e-05 + 1.4600 7.6853e-05 + 1.4650 7.6188e-05 + 1.4700 7.5610e-05 + 1.4750 7.5113e-05 + 1.4800 7.4692e-05 + 1.4850 7.4341e-05 + 1.4900 7.4053e-05 + 1.4950 7.3824e-05 + 1.5000 7.3649e-05 + 1.5050 7.3524e-05 + 1.5100 7.3450e-05 + 1.5150 7.3428e-05 + 1.5200 7.3466e-05 + 1.5250 7.3574e-05 + 1.5300 7.3770e-05 + 1.5350 7.4082e-05 + 1.5400 7.4544e-05 + 1.5450 7.5207e-05 + 1.5500 7.6133e-05 + 1.5550 7.7405e-05 + 1.5600 7.9125e-05 + 1.5650 8.1421e-05 + 1.5700 8.4445e-05 + 1.5750 8.8379e-05 + 1.5800 9.3438e-05 + 1.5850 9.9865e-05 + 1.5900 0.00010793 + 1.5950 0.00011795 + 1.6000 0.00013023 + 1.6050 0.00014512 + 1.6100 0.00016298 + 1.6150 0.00018413 + 1.6200 0.00020893 + 1.6250 0.00023766 + 1.6300 0.00027060 + 1.6350 0.00030795 + 1.6400 0.00034986 + 1.6450 0.00039638 + 1.6500 0.00044750 + 1.6550 0.00050312 + 1.6600 0.00056305 + 1.6650 0.00062702 + 1.6700 0.00069470 + 1.6750 0.00076569 + 1.6800 0.00083957 + 1.6850 0.00091586 + 1.6900 0.00099412 + 1.6950 0.0010739 + 1.7000 0.0011548 + 1.7050 0.0012364 + 1.7100 0.0013185 + 1.7150 0.0014008 + 1.7200 0.0014831 + 1.7250 0.0015653 + 1.7300 0.0016475 + 1.7350 0.0017297 + 1.7400 0.0018119 + 1.7450 0.0018943 + 1.7500 0.0019771 + 1.7550 0.0020606 + 1.7600 0.0021449 + 1.7650 0.0022302 + 1.7700 0.0023169 + 1.7750 0.0024052 + 1.7800 0.0024952 + 1.7850 0.0025872 + 1.7900 0.0026815 + 1.7950 0.0027783 + 1.8000 0.0028778 + 1.8050 0.0029804 + 1.8100 0.0030863 + 1.8150 0.0031961 + 1.8200 0.0033103 + 1.8250 0.0034297 + 1.8300 0.0035554 + 1.8350 0.0036887 + 1.8400 0.0038315 + 1.8450 0.0039863 + 1.8500 0.0041562 + 1.8550 0.0043453 + 1.8600 0.0045587 + 1.8650 0.0048025 + 1.8700 0.0050844 + 1.8750 0.0054134 + 1.8800 0.0057996 + 1.8850 0.0062549 + 1.8900 0.0067917 + 1.8950 0.0074237 + 1.9000 0.0081644 + 1.9050 0.0090270 + 1.9100 0.010023 + 1.9150 0.011162 + 1.9200 0.012450 + 1.9250 0.013888 + 1.9300 0.015471 + 1.9350 0.017188 + 1.9400 0.019020 + 1.9450 0.020940 + 1.9500 0.022913 + 1.9550 0.024898 + 1.9600 0.026846 + 1.9650 0.028704 + 1.9700 0.030418 + 1.9750 0.031933 + 1.9800 0.033197 + 1.9850 0.034164 + 1.9900 0.034796 + 1.9950 0.035066 + 2.0000 0.034957 + 2.0050 0.034469 + 2.0100 0.033612 + 2.0150 0.032410 + 2.0200 0.030899 + 2.0250 0.029124 + 2.0300 0.027138 + 2.0350 0.024997 + 2.0400 0.022759 + 2.0450 0.020482 + 2.0500 0.018218 + 2.0550 0.016016 + 2.0600 0.013915 + 2.0650 0.011948 + 2.0700 0.010139 + 2.0750 0.0085033 + 2.0800 0.0070472 + 2.0850 0.0057717 + 2.0900 0.0046712 + 2.0950 0.0037360 + 2.1000 0.0029527 + 2.1050 0.0023060 + 2.1100 0.0017797 + 2.1150 0.0013572 + 2.1200 0.0010227 + 2.1250 0.00076157 + 2.1300 0.00056037 + 2.1350 0.00040743 + 2.1400 0.00029272 + 2.1450 0.00020780 + 2.1500 0.00014577 + 2.1550 0.00010104 + 2.1600 6.9205e-05 + 2.1650 4.6837e-05 + 2.1700 3.1321e-05 + 2.1750 2.0696e-05 + 2.1800 1.3513e-05 + 2.1850 8.7179e-06 + 2.1900 5.5575e-06 + 2.1950 3.5006e-06 + 2.2000 2.1788e-06 + 2.2050 1.3399e-06 + 2.2100 8.1424e-07 + 2.2150 4.8890e-07 + 2.2200 2.9006e-07 + 2.2250 1.7004e-07 + 2.2300 9.8497e-08 + 2.2350 5.6375e-08 + 2.2400 3.1882e-08 + 2.2450 1.7816e-08 + 2.2500 9.8368e-09 + 2.2550 5.3667e-09 + 2.2600 2.8930e-09 + 2.2650 1.5410e-09 + 2.2700 8.1102e-10 + 2.2750 4.2176e-10 + 2.2800 2.1672e-10 + 2.2850 1.1003e-10 + 2.2900 5.5199e-11 + 2.2950 2.7361e-11 + 2.3000 1.3401e-11 + 2.3050 6.4846e-12 + 2.3100 3.1002e-12 + 2.3150 1.4641e-12 + 2.3200 6.8279e-13 + 2.3250 0.00000 + 2.3300 0.00000 + 2.3350 0.00000 + 2.3400 0.00000 + 2.3450 0.00000 + 2.3500 0.00000 + 2.3550 0.00000 + 2.3600 0.00000 + 2.3650 0.00000 + 2.3700 0.00000 + 2.3750 0.00000 + 2.3800 0.00000 + 2.3850 0.00000 + 2.3900 0.00000 + 2.3950 0.00000 + 2.4000 0.00000 + 2.4050 0.00000 + 2.4100 0.00000 + 2.4150 0.00000 + 2.4200 0.00000 + 2.4250 0.00000 + 2.4300 0.00000 + 2.4350 0.00000 + 2.4400 0.00000 + 2.4450 0.00000 + 2.4500 0.00000 + 2.4550 0.00000 + 2.4600 0.00000 + 2.4650 0.00000 + 2.4700 0.00000 + 2.4750 0.00000 + 2.4800 0.00000 + 2.4850 0.00000 + 2.4900 0.00000 + 2.4950 0.00000 + 2.5000 0.00000 + 2.5050 0.00000 + 2.5100 0.00000 + 2.5150 0.00000 + 2.5200 0.00000 + 2.5250 0.00000 + 2.5300 0.00000 + 2.5350 0.00000 + 2.5400 0.00000 + 2.5450 0.00000 + 2.5500 0.00000 + 2.5550 0.00000 + 2.5600 0.00000 + 2.5650 0.00000 + 2.5700 0.00000 + 2.5750 0.00000 + 2.5800 0.00000 + 2.5850 0.00000 + 2.5900 0.00000 + 2.5950 0.00000 + 2.6000 0.00000 + 2.6050 0.00000 + 2.6100 0.00000 + 2.6150 0.00000 + 2.6200 0.00000 + 2.6250 0.00000 + 2.6300 0.00000 + 2.6350 0.00000 + 2.6400 0.00000 + 2.6450 0.00000 + 2.6500 0.00000 + 2.6550 0.00000 + 2.6600 0.00000 + 2.6650 0.00000 + 2.6700 0.00000 + 2.6750 0.00000 + 2.6800 0.00000 + 2.6850 0.00000 + 2.6900 0.00000 + 2.6950 0.00000 + 2.7000 0.00000 + 2.7050 0.00000 + 2.7100 0.00000 + 2.7150 0.00000 + 2.7200 0.00000 + 2.7250 0.00000 + 2.7300 0.00000 + 2.7350 0.00000 + 2.7400 0.00000 + 2.7450 0.00000 + 2.7500 0.00000 + 2.7550 0.00000 + 2.7600 0.00000 + 2.7650 0.00000 + 2.7700 0.00000 + 2.7750 0.00000 + 2.7800 0.00000 + 2.7850 0.00000 + 2.7900 0.00000 + 2.7950 0.00000 + 2.8000 0.00000 + 2.8050 0.00000 + 2.8100 0.00000 + 2.8150 0.00000 + 2.8200 0.00000 + 2.8250 0.00000 + 2.8300 0.00000 + 2.8350 0.00000 + 2.8400 0.00000 + 2.8450 0.00000 + 2.8500 0.00000 + 2.8550 0.00000 + 2.8600 0.00000 + 2.8650 0.00000 + 2.8700 0.00000 + 2.8750 0.00000 + 2.8800 0.00000 + 2.8850 0.00000 + 2.8900 0.00000 + 2.8950 0.00000 + 2.9000 0.00000 + 2.9050 0.00000 + 2.9100 0.00000 + 2.9150 0.00000 + 2.9200 0.00000 + 2.9250 0.00000 + 2.9300 0.00000 + 2.9350 0.00000 + 2.9400 0.00000 + 2.9450 0.00000 + 2.9500 0.00000 + 2.9550 0.00000 + 2.9600 0.00000 + 2.9650 0.00000 + 2.9700 0.00000 + 2.9750 0.00000 + 2.9800 0.00000 + 2.9850 0.00000 + 2.9900 0.00000 + 2.9950 0.00000 + 3.0000 0.00000 + 3.0050 0.00000 + 3.0100 0.00000 + 3.0150 0.00000 + 3.0200 0.00000 + 3.0250 0.00000 + 3.0300 0.00000 + 3.0350 0.00000 + 3.0400 0.00000 + 3.0450 0.00000 + 3.0500 0.00000 + 3.0550 0.00000 + 3.0600 0.00000 + 3.0650 0.00000 + 3.0700 0.00000 + 3.0750 0.00000 + 3.0800 0.00000 + 3.0850 0.00000 + 3.0900 0.00000 + 3.0950 0.00000 + 3.1000 0.00000 + 3.1050 0.00000 + 3.1100 0.00000 + 3.1150 0.00000 + 3.1200 0.00000 + 3.1250 0.00000 + 3.1300 0.00000 + 3.1350 0.00000 + 3.1400 0.00000 + 3.1450 0.00000 + 3.1500 0.00000 + 3.1550 0.00000 + 3.1600 0.00000 + 3.1650 0.00000 + 3.1700 0.00000 + 3.1750 0.00000 + 3.1800 0.00000 + 3.1850 0.00000 + 3.1900 0.00000 + 3.1950 0.00000 + 3.2000 0.00000 + 3.2050 0.00000 + 3.2100 0.00000 + 3.2150 0.00000 + 3.2200 0.00000 + 3.2250 0.00000 + 3.2300 0.00000 + 3.2350 0.00000 + 3.2400 0.00000 + 3.2450 0.00000 + 3.2500 0.00000 + 3.2550 0.00000 + 3.2600 0.00000 + 3.2650 0.00000 + 3.2700 0.00000 + 3.2750 0.00000 + 3.2800 0.00000 + 3.2850 0.00000 + 3.2900 0.00000 + 3.2950 0.00000 + 3.3000 0.00000 + 3.3050 0.00000 + 3.3100 0.00000 + 3.3150 0.00000 + 3.3200 0.00000 + 3.3250 0.00000 + 3.3300 0.00000 + 3.3350 0.00000 + 3.3400 0.00000 + 3.3450 0.00000 + 3.3500 0.00000 + 3.3550 0.00000 + 3.3600 0.00000 + 3.3650 0.00000 + 3.3700 0.00000 + 3.3750 0.00000 + 3.3800 0.00000 + 3.3850 0.00000 + 3.3900 0.00000 + 3.3950 0.00000 + 3.4000 0.00000 + 3.4050 0.00000 + 3.4100 0.00000 + 3.4150 0.00000 + 3.4200 0.00000 + 3.4250 0.00000 + 3.4300 0.00000 + 3.4350 0.00000 + 3.4400 0.00000 + 3.4450 0.00000 + 3.4500 0.00000 + 3.4550 0.00000 + 3.4600 0.00000 + 3.4650 0.00000 + 3.4700 0.00000 + 3.4750 0.00000 + 3.4800 0.00000 + 3.4850 0.00000 + 3.4900 0.00000 + 3.4950 0.00000 + 3.5000 0.00000 + 3.5050 0.00000 + 3.5100 0.00000 + 3.5150 0.00000 + 3.5200 0.00000 + 3.5250 0.00000 + 3.5300 0.00000 + 3.5350 0.00000 + 3.5400 0.00000 + 3.5450 0.00000 + 3.5500 0.00000 + 3.5550 0.00000 + 3.5600 0.00000 + 3.5650 0.00000 + 3.5700 0.00000 + 3.5750 0.00000 + 3.5800 0.00000 + 3.5850 0.00000 + 3.5900 0.00000 + 3.5950 0.00000 + 3.6000 0.00000 + 3.6050 0.00000 + 3.6100 0.00000 + 3.6150 0.00000 + 3.6200 0.00000 + 3.6250 0.00000 + 3.6300 0.00000 + 3.6350 0.00000 + 3.6400 0.00000 + 3.6450 0.00000 + 3.6500 0.00000 + 3.6550 0.00000 + 3.6600 0.00000 + 3.6650 0.00000 + 3.6700 0.00000 + 3.6750 0.00000 + 3.6800 0.00000 + 3.6850 0.00000 + 3.6900 0.00000 + 3.6950 0.00000 + 3.7000 0.00000 + 3.7050 0.00000 + 3.7100 0.00000 + 3.7150 0.00000 + 3.7200 0.00000 + 3.7250 0.00000 + 3.7300 0.00000 + 3.7350 0.00000 + 3.7400 0.00000 + 3.7450 0.00000 + 3.7500 0.00000 + 3.7550 0.00000 + 3.7600 0.00000 + 3.7650 0.00000 + 3.7700 0.00000 + 3.7750 0.00000 + 3.7800 0.00000 + 3.7850 0.00000 + 3.7900 0.00000 + 3.7950 0.00000 + 3.8000 0.00000 + 3.8050 0.00000 + 3.8100 0.00000 + 3.8150 0.00000 + 3.8200 0.00000 + 3.8250 0.00000 + 3.8300 0.00000 + 3.8350 0.00000 + 3.8400 0.00000 + 3.8450 0.00000 + 3.8500 0.00000 + 3.8550 0.00000 + 3.8600 0.00000 + 3.8650 0.00000 + 3.8700 0.00000 + 3.8750 0.00000 + 3.8800 0.00000 + 3.8850 0.00000 + 3.8900 0.00000 + 3.8950 0.00000 + 3.9000 0.00000 + 3.9050 0.00000 + 3.9100 0.00000 + 3.9150 0.00000 + 3.9200 0.00000 + 3.9250 0.00000 + 3.9300 0.00000 + 3.9350 0.00000 + 3.9400 0.00000 + 3.9450 0.00000 + 3.9500 0.00000 + 3.9550 0.00000 + 3.9600 0.00000 + 3.9650 0.00000 + 3.9700 0.00000 + 3.9750 0.00000 + 3.9800 0.00000 + 3.9850 0.00000 + 3.9900 0.00000 + 3.9950 0.00000 + 4.0000 0.00000 + 4.0050 0.00000 + 4.0100 0.00000 + 4.0150 0.00000 + 4.0200 0.00000 + 4.0250 0.00000 + 4.0300 0.00000 + 4.0350 0.00000 + 4.0400 0.00000 + 4.0450 0.00000 + 4.0500 0.00000 + 4.0550 0.00000 + 4.0600 0.00000 + 4.0650 0.00000 + 4.0700 0.00000 + 4.0750 0.00000 + 4.0800 0.00000 + 4.0850 0.00000 + 4.0900 0.00000 + 4.0950 0.00000 + 4.1000 0.00000 + 4.1050 0.00000 + 4.1100 0.00000 + 4.1150 0.00000 + 4.1200 0.00000 + 4.1250 0.00000 + 4.1300 0.00000 + 4.1350 0.00000 + 4.1400 0.00000 + 4.1450 0.00000 + 4.1500 0.00000 + 4.1550 0.00000 + 4.1600 0.00000 + 4.1650 0.00000 + 4.1700 0.00000 + 4.1750 0.00000 + 4.1800 0.00000 + 4.1850 0.00000 + 4.1900 0.00000 + 4.1950 0.00000 + 4.2000 0.00000 + 4.2050 0.00000 + 4.2100 0.00000 + 4.2150 0.00000 + 4.2200 0.00000 + 4.2250 0.00000 + 4.2300 0.00000 + 4.2350 0.00000 + 4.2400 0.00000 + 4.2450 0.00000 + 4.2500 0.00000 + 4.2550 0.00000 + 4.2600 0.00000 + 4.2650 0.00000 + 4.2700 0.00000 + 4.2750 0.00000 + 4.2800 0.00000 + 4.2850 0.00000 + 4.2900 0.00000 + 4.2950 0.00000 + 4.3000 0.00000 + 4.3050 0.00000 + 4.3100 0.00000 + 4.3150 0.00000 + 4.3200 0.00000 + 4.3250 0.00000 + 4.3300 0.00000 + 4.3350 0.00000 + 4.3400 0.00000 + 4.3450 0.00000 + 4.3500 0.00000 + 4.3550 0.00000 + 4.3600 0.00000 + 4.3650 0.00000 + 4.3700 0.00000 + 4.3750 0.00000 + 4.3800 0.00000 + 4.3850 0.00000 + 4.3900 0.00000 + 4.3950 0.00000 + 4.4000 0.00000 + 4.4050 0.00000 + 4.4100 0.00000 + 4.4150 0.00000 + 4.4200 0.00000 + 4.4250 0.00000 + 4.4300 0.00000 + 4.4350 0.00000 + 4.4400 0.00000 + 4.4450 0.00000 + 4.4500 0.00000 + 4.4550 0.00000 + 4.4600 0.00000 + 4.4650 0.00000 + 4.4700 0.00000 + 4.4750 0.00000 + 4.4800 0.00000 + 4.4850 0.00000 + 4.4900 0.00000 + 4.4950 0.00000 + 4.5000 0.00000 + 4.5050 0.00000 + 4.5100 0.00000 + 4.5150 0.00000 + 4.5200 0.00000 + 4.5250 0.00000 + 4.5300 0.00000 + 4.5350 0.00000 + 4.5400 0.00000 + 4.5450 0.00000 + 4.5500 0.00000 + 4.5550 0.00000 + 4.5600 0.00000 + 4.5650 0.00000 + 4.5700 0.00000 + 4.5750 0.00000 + 4.5800 0.00000 + 4.5850 0.00000 + 4.5900 0.00000 + 4.5950 0.00000 + 4.6000 0.00000 + 4.6050 0.00000 + 4.6100 0.00000 + 4.6150 0.00000 + 4.6200 0.00000 + 4.6250 0.00000 + 4.6300 0.00000 + 4.6350 0.00000 + 4.6400 0.00000 + 4.6450 0.00000 + 4.6500 0.00000 + 4.6550 0.00000 + 4.6600 0.00000 + 4.6650 0.00000 + 4.6700 0.00000 + 4.6750 0.00000 + 4.6800 0.00000 + 4.6850 0.00000 + 4.6900 0.00000 + 4.6950 0.00000 + 4.7000 0.00000 + 4.7050 0.00000 + 4.7100 0.00000 + 4.7150 0.00000 + 4.7200 0.00000 + 4.7250 0.00000 + 4.7300 0.00000 + 4.7350 0.00000 + 4.7400 0.00000 + 4.7450 0.00000 + 4.7500 0.00000 + 4.7550 0.00000 + 4.7600 0.00000 + 4.7650 0.00000 + 4.7700 0.00000 + 4.7750 0.00000 + 4.7800 0.00000 + 4.7850 0.00000 + 4.7900 0.00000 + 4.7950 0.00000 + 4.8000 0.00000 + 4.8050 0.00000 + 4.8100 0.00000 + 4.8150 0.00000 + 4.8200 0.00000 + 4.8250 0.00000 + 4.8300 0.00000 + 4.8350 0.00000 + 4.8400 0.00000 + 4.8450 0.00000 + 4.8500 0.00000 + 4.8550 0.00000 + 4.8600 0.00000 + 4.8650 0.00000 + 4.8700 0.00000 + 4.8750 0.00000 + 4.8800 0.00000 + 4.8850 0.00000 + 4.8900 0.00000 + 4.8950 0.00000 + 4.9000 0.00000 + 4.9050 0.00000 + 4.9100 0.00000 + 4.9150 0.00000 + 4.9200 0.00000 + 4.9250 0.00000 + 4.9300 0.00000 + 4.9350 0.00000 + 4.9400 0.00000 + 4.9450 0.00000 + 4.9500 0.00000 + 4.9550 0.00000 + 4.9600 0.00000 + 4.9650 0.00000 + 4.9700 0.00000 + 4.9750 0.00000 + 4.9800 0.00000 + 4.9850 0.00000 + 4.9900 0.00000 + 4.9950 0.00000 + 5.0000 0.00000 + 5.0050 0.00000 + 5.0100 0.00000 + 5.0150 0.00000 + 5.0200 0.00000 + 5.0250 0.00000 + 5.0300 0.00000 + 5.0350 0.00000 + 5.0400 0.00000 + 5.0450 0.00000 + 5.0500 0.00000 + 5.0550 0.00000 + 5.0600 0.00000 + 5.0650 0.00000 + 5.0700 0.00000 + 5.0750 0.00000 + 5.0800 0.00000 + 5.0850 0.00000 + 5.0900 0.00000 + 5.0950 0.00000 + 5.1000 0.00000 + 5.1050 0.00000 + 5.1100 0.00000 + 5.1150 0.00000 + 5.1200 0.00000 + 5.1250 0.00000 + 5.1300 0.00000 + 5.1350 0.00000 + 5.1400 0.00000 + 5.1450 0.00000 + 5.1500 0.00000 + 5.1550 0.00000 + 5.1600 0.00000 + 5.1650 0.00000 + 5.1700 0.00000 + 5.1750 0.00000 + 5.1800 0.00000 + 5.1850 0.00000 + 5.1900 0.00000 + 5.1950 0.00000 + 5.2000 0.00000 + 5.2050 0.00000 + 5.2100 0.00000 + 5.2150 0.00000 + 5.2200 0.00000 + 5.2250 0.00000 + 5.2300 0.00000 + 5.2350 0.00000 + 5.2400 0.00000 + 5.2450 0.00000 + 5.2500 0.00000 + 5.2550 0.00000 + 5.2600 0.00000 + 5.2650 0.00000 + 5.2700 0.00000 + 5.2750 0.00000 + 5.2800 0.00000 + 5.2850 0.00000 + 5.2900 0.00000 + 5.2950 0.00000 + 5.3000 0.00000 + 5.3050 0.00000 + 5.3100 0.00000 + 5.3150 0.00000 + 5.3200 0.00000 + 5.3250 0.00000 + 5.3300 0.00000 + 5.3350 0.00000 + 5.3400 0.00000 + 5.3450 0.00000 + 5.3500 0.00000 + 5.3550 0.00000 + 5.3600 0.00000 + 5.3650 0.00000 + 5.3700 0.00000 + 5.3750 0.00000 + 5.3800 0.00000 + 5.3850 0.00000 + 5.3900 0.00000 + 5.3950 0.00000 + 5.4000 0.00000 + 5.4050 0.00000 + 5.4100 0.00000 + 5.4150 0.00000 + 5.4200 0.00000 + 5.4250 0.00000 + 5.4300 0.00000 + 5.4350 0.00000 + 5.4400 0.00000 + 5.4450 0.00000 + 5.4500 0.00000 + 5.4550 0.00000 + 5.4600 0.00000 + 5.4650 0.00000 + 5.4700 0.00000 + 5.4750 0.00000 + 5.4800 0.00000 + 5.4850 0.00000 + 5.4900 0.00000 + 5.4950 0.00000 + 5.5000 0.00000 + 5.5050 0.00000 + 5.5100 0.00000 + 5.5150 0.00000 + 5.5200 0.00000 + 5.5250 0.00000 + 5.5300 0.00000 + 5.5350 0.00000 + 5.5400 0.00000 + 5.5450 0.00000 + 5.5500 0.00000 + 5.5550 0.00000 + 5.5600 0.00000 + 5.5650 0.00000 + 5.5700 0.00000 + 5.5750 0.00000 + 5.5800 0.00000 + 5.5850 0.00000 + 5.5900 0.00000 + 5.5950 0.00000 + 5.6000 0.00000 + 5.6050 0.00000 + 5.6100 0.00000 + 5.6150 0.00000 + 5.6200 0.00000 + 5.6250 0.00000 + 5.6300 0.00000 + 5.6350 0.00000 + 5.6400 0.00000 + 5.6450 0.00000 + 5.6500 0.00000 + 5.6550 0.00000 + 5.6600 0.00000 + 5.6650 0.00000 + 5.6700 0.00000 + 5.6750 0.00000 + 5.6800 0.00000 + 5.6850 0.00000 + 5.6900 0.00000 + 5.6950 0.00000 + 5.7000 0.00000 + 5.7050 0.00000 + 5.7100 0.00000 + 5.7150 0.00000 + 5.7200 0.00000 + 5.7250 0.00000 + 5.7300 0.00000 + 5.7350 0.00000 + 5.7400 0.00000 + 5.7450 0.00000 + 5.7500 0.00000 + 5.7550 0.00000 + 5.7600 0.00000 + 5.7650 0.00000 + 5.7700 0.00000 + 5.7750 0.00000 + 5.7800 0.00000 + 5.7850 0.00000 + 5.7900 0.00000 + 5.7950 0.00000 + 5.8000 0.00000 + 5.8050 0.00000 + 5.8100 0.00000 + 5.8150 0.00000 + 5.8200 0.00000 + 5.8250 0.00000 + 5.8300 0.00000 + 5.8350 0.00000 + 5.8400 0.00000 + 5.8450 0.00000 + 5.8500 0.00000 + 5.8550 0.00000 + 5.8600 0.00000 + 5.8650 0.00000 + 5.8700 0.00000 + 5.8750 0.00000 + 5.8800 0.00000 + 5.8850 0.00000 + 5.8900 0.00000 + 5.8950 0.00000 + 5.9000 0.00000 + 5.9050 0.00000 + 5.9100 0.00000 + 5.9150 0.00000 + 5.9200 0.00000 + 5.9250 0.00000 + 5.9300 0.00000 + 5.9350 0.00000 + 5.9400 0.00000 + 5.9450 0.00000 + 5.9500 0.00000 + 5.9550 0.00000 + 5.9600 0.00000 + 5.9650 0.00000 + 5.9700 0.00000 + 5.9750 0.00000 + 5.9800 0.00000 + 5.9850 0.00000 + 5.9900 0.00000 + 5.9950 0.00000 + 6.0000 0.00000 + 6.0050 0.00000 + 6.0100 0.00000 + 6.0150 0.00000 + 6.0200 0.00000 + 6.0250 0.00000 + 6.0300 0.00000 + 6.0350 0.00000 + 6.0400 0.00000 + 6.0450 0.00000 + 6.0500 0.00000 + 6.0550 0.00000 + 6.0600 0.00000 + 6.0650 0.00000 + 6.0700 0.00000 + 6.0750 0.00000 + 6.0800 0.00000 + 6.0850 0.00000 + 6.0900 0.00000 + 6.0950 0.00000 + 6.1000 0.00000 + 6.1050 0.00000 + 6.1100 0.00000 + 6.1150 0.00000 + 6.1200 0.00000 + 6.1250 0.00000 + 6.1300 0.00000 + 6.1350 0.00000 + 6.1400 0.00000 + 6.1450 0.00000 + 6.1500 0.00000 + 6.1550 0.00000 + 6.1600 0.00000 + 6.1650 0.00000 + 6.1700 0.00000 + 6.1750 0.00000 + 6.1800 0.00000 + 6.1850 0.00000 + 6.1900 0.00000 + 6.1950 0.00000 + 6.2000 0.00000 + 6.2050 0.00000 + 6.2100 0.00000 + 6.2150 0.00000 + 6.2200 0.00000 + 6.2250 0.00000 + 6.2300 0.00000 + 6.2350 0.00000 + 6.2400 0.00000 + 6.2450 0.00000 + 6.2500 0.00000 + 6.2550 0.00000 + 6.2600 0.00000 + 6.2650 0.00000 + 6.2700 0.00000 + 6.2750 0.00000 + 6.2800 0.00000 + 6.2850 0.00000 + 6.2900 0.00000 + 6.2950 0.00000 + 6.3000 0.00000 + 6.3050 0.00000 + 6.3100 0.00000 + 6.3150 0.00000 + 6.3200 0.00000 + 6.3250 0.00000 + 6.3300 0.00000 + 6.3350 0.00000 + 6.3400 0.00000 + 6.3450 0.00000 + 6.3500 0.00000 + 6.3550 0.00000 + 6.3600 0.00000 + 6.3650 0.00000 + 6.3700 0.00000 + 6.3750 0.00000 + 6.3800 0.00000 + 6.3850 0.00000 + 6.3900 0.00000 + 6.3950 0.00000 + 6.4000 0.00000 + 6.4050 0.00000 + 6.4100 0.00000 + 6.4150 0.00000 + 6.4200 0.00000 + 6.4250 0.00000 + 6.4300 0.00000 + 6.4350 0.00000 + 6.4400 0.00000 + 6.4450 0.00000 + 6.4500 0.00000 + 6.4550 0.00000 + 6.4600 0.00000 + 6.4650 0.00000 + 6.4700 0.00000 + 6.4750 0.00000 + 6.4800 0.00000 + 6.4850 0.00000 + 6.4900 0.00000 + 6.4950 0.00000 + 6.5000 0.00000 + 6.5050 0.00000 + 6.5100 0.00000 + 6.5150 0.00000 + 6.5200 0.00000 + 6.5250 0.00000 + 6.5300 0.00000 + 6.5350 0.00000 + 6.5400 0.00000 + 6.5450 0.00000 + 6.5500 0.00000 + 6.5550 0.00000 + 6.5600 0.00000 + 6.5650 0.00000 + 6.5700 0.00000 + 6.5750 0.00000 + 6.5800 0.00000 + 6.5850 0.00000 + 6.5900 0.00000 + 6.5950 0.00000 + 6.6000 0.00000 + 6.6050 0.00000 + 6.6100 0.00000 + 6.6150 0.00000 + 6.6200 0.00000 + 6.6250 0.00000 + 6.6300 0.00000 + 6.6350 0.00000 + 6.6400 0.00000 + 6.6450 0.00000 + 6.6500 0.00000 + 6.6550 0.00000 + 6.6600 0.00000 + 6.6650 0.00000 + 6.6700 0.00000 + 6.6750 0.00000 + 6.6800 0.00000 + 6.6850 0.00000 + 6.6900 0.00000 + 6.6950 0.00000 + 6.7000 0.00000 + 6.7050 0.00000 + 6.7100 0.00000 + 6.7150 0.00000 + 6.7200 0.00000 + 6.7250 0.00000 + 6.7300 0.00000 + 6.7350 0.00000 + 6.7400 0.00000 + 6.7450 0.00000 + 6.7500 0.00000 + 6.7550 0.00000 + 6.7600 0.00000 + 6.7650 0.00000 + 6.7700 0.00000 + 6.7750 0.00000 + 6.7800 0.00000 + 6.7850 0.00000 + 6.7900 0.00000 + 6.7950 0.00000 + 6.8000 0.00000 + 6.8050 0.00000 + 6.8100 0.00000 + 6.8150 0.00000 + 6.8200 0.00000 + 6.8250 0.00000 + 6.8300 0.00000 + 6.8350 0.00000 + 6.8400 0.00000 + 6.8450 0.00000 + 6.8500 0.00000 + 6.8550 0.00000 + 6.8600 0.00000 + 6.8650 0.00000 + 6.8700 0.00000 + 6.8750 0.00000 + 6.8800 0.00000 + 6.8850 0.00000 + 6.8900 0.00000 + 6.8950 0.00000 + 6.9000 0.00000 + 6.9050 0.00000 + 6.9100 0.00000 + 6.9150 0.00000 + 6.9200 0.00000 + 6.9250 0.00000 + 6.9300 0.00000 + 6.9350 0.00000 + 6.9400 0.00000 + 6.9450 0.00000 + 6.9500 0.00000 + 6.9550 0.00000 + 6.9600 0.00000 + 6.9650 0.00000 + 6.9700 0.00000 + 6.9750 0.00000 + 6.9800 0.00000 + 6.9850 0.00000 + 6.9900 0.00000 + 6.9950 0.00000 + 7.0000 0.00000 + 7.0050 0.00000 + 7.0100 0.00000 + 7.0150 0.00000 + 7.0200 0.00000 + 7.0250 0.00000 + 7.0300 0.00000 + 7.0350 0.00000 + 7.0400 0.00000 + 7.0450 0.00000 + 7.0500 0.00000 + 7.0550 0.00000 + 7.0600 0.00000 + 7.0650 0.00000 + 7.0700 0.00000 + 7.0750 0.00000 + 7.0800 0.00000 + 7.0850 0.00000 + 7.0900 0.00000 + 7.0950 0.00000 + 7.1000 0.00000 + 7.1050 0.00000 + 7.1100 0.00000 + 7.1150 0.00000 + 7.1200 0.00000 + 7.1250 0.00000 + 7.1300 0.00000 + 7.1350 0.00000 + 7.1400 0.00000 + 7.1450 0.00000 + 7.1500 0.00000 + 7.1550 0.00000 + 7.1600 0.00000 + 7.1650 0.00000 + 7.1700 0.00000 + 7.1750 0.00000 + 7.1800 0.00000 + 7.1850 0.00000 + 7.1900 0.00000 + 7.1950 0.00000 + 7.2000 0.00000 + 7.2050 0.00000 + 7.2100 0.00000 + 7.2150 0.00000 + 7.2200 0.00000 + 7.2250 0.00000 + 7.2300 0.00000 + 7.2350 0.00000 + 7.2400 0.00000 + 7.2450 0.00000 + 7.2500 0.00000 + 7.2550 0.00000 + 7.2600 0.00000 + 7.2650 0.00000 + 7.2700 0.00000 + 7.2750 0.00000 + 7.2800 0.00000 + 7.2850 0.00000 + 7.2900 0.00000 + 7.2950 0.00000 + 7.3000 0.00000 + 7.3050 0.00000 + 7.3100 0.00000 + 7.3150 0.00000 + 7.3200 0.00000 + 7.3250 0.00000 + 7.3300 0.00000 + 7.3350 0.00000 + 7.3400 0.00000 + 7.3450 0.00000 + 7.3500 0.00000 + 7.3550 0.00000 + 7.3600 0.00000 + 7.3650 0.00000 + 7.3700 0.00000 + 7.3750 0.00000 + 7.3800 0.00000 + 7.3850 0.00000 + 7.3900 0.00000 + 7.3950 0.00000 + 7.4000 0.00000 + 7.4050 0.00000 + 7.4100 0.00000 + 7.4150 0.00000 + 7.4200 0.00000 + 7.4250 0.00000 + 7.4300 0.00000 + 7.4350 0.00000 + 7.4400 0.00000 + 7.4450 0.00000 + 7.4500 0.00000 + 7.4550 0.00000 + 7.4600 0.00000 + 7.4650 0.00000 + 7.4700 0.00000 + 7.4750 0.00000 + 7.4800 0.00000 + 7.4850 0.00000 + 7.4900 0.00000 + 7.4950 0.00000 + 7.5000 0.00000 + 7.5050 0.00000 + 7.5100 0.00000 + 7.5150 0.00000 + 7.5200 0.00000 + 7.5250 0.00000 + 7.5300 0.00000 + 7.5350 0.00000 + 7.5400 0.00000 + 7.5450 0.00000 + 7.5500 0.00000 + 7.5550 0.00000 + 7.5600 0.00000 + 7.5650 0.00000 + 7.5700 0.00000 + 7.5750 0.00000 + 7.5800 0.00000 + 7.5850 0.00000 + 7.5900 0.00000 + 7.5950 0.00000 + 7.6000 0.00000 + 7.6050 0.00000 + 7.6100 0.00000 + 7.6150 0.00000 + 7.6200 0.00000 + 7.6250 0.00000 + 7.6300 0.00000 + 7.6350 0.00000 + 7.6400 0.00000 + 7.6450 0.00000 + 7.6500 0.00000 + 7.6550 0.00000 + 7.6600 0.00000 + 7.6650 0.00000 + 7.6700 0.00000 + 7.6750 0.00000 + 7.6800 0.00000 + 7.6850 0.00000 + 7.6900 0.00000 + 7.6950 0.00000 + 7.7000 0.00000 + 7.7050 0.00000 + 7.7100 0.00000 + 7.7150 0.00000 + 7.7200 0.00000 + 7.7250 0.00000 + 7.7300 0.00000 + 7.7350 0.00000 + 7.7400 0.00000 + 7.7450 0.00000 + 7.7500 0.00000 + 7.7550 0.00000 + 7.7600 0.00000 + 7.7650 0.00000 + 7.7700 0.00000 + 7.7750 0.00000 + 7.7800 0.00000 + 7.7850 0.00000 + 7.7900 0.00000 + 7.7950 0.00000 + 7.8000 0.00000 + 7.8050 0.00000 + 7.8100 0.00000 + 7.8150 0.00000 + 7.8200 0.00000 + 7.8250 0.00000 + 7.8300 0.00000 + 7.8350 0.00000 + 7.8400 0.00000 + 7.8450 0.00000 + 7.8500 0.00000 + 7.8550 0.00000 + 7.8600 0.00000 + 7.8650 0.00000 + 7.8700 0.00000 + 7.8750 0.00000 + 7.8800 0.00000 + 7.8850 0.00000 + 7.8900 0.00000 + 7.8950 0.00000 + 7.9000 0.00000 + 7.9050 0.00000 + 7.9100 0.00000 + 7.9150 0.00000 + 7.9200 0.00000 + 7.9250 0.00000 + 7.9300 0.00000 + 7.9350 0.00000 + 7.9400 0.00000 + 7.9450 0.00000 + 7.9500 0.00000 + 7.9550 0.00000 + 7.9600 0.00000 + 7.9650 0.00000 + 7.9700 0.00000 + 7.9750 0.00000 + 7.9800 0.00000 + 7.9850 0.00000 + 7.9900 0.00000 + 7.9950 0.00000 + 8.0000 0.00000 + 8.0050 0.00000 + 8.0100 0.00000 + 8.0150 0.00000 + 8.0200 0.00000 + 8.0250 0.00000 + 8.0300 0.00000 + 8.0350 0.00000 + 8.0400 0.00000 + 8.0450 0.00000 + 8.0500 0.00000 + 8.0550 0.00000 + 8.0600 0.00000 + 8.0650 0.00000 + 8.0700 0.00000 + 8.0750 0.00000 + 8.0800 0.00000 + 8.0850 0.00000 + 8.0900 0.00000 + 8.0950 0.00000 + 8.1000 0.00000 + 8.1050 0.00000 + 8.1100 0.00000 + 8.1150 0.00000 + 8.1200 0.00000 + 8.1250 0.00000 + 8.1300 0.00000 + 8.1350 0.00000 + 8.1400 0.00000 + 8.1450 0.00000 + 8.1500 0.00000 + 8.1550 0.00000 + 8.1600 0.00000 + 8.1650 0.00000 + 8.1700 0.00000 + 8.1750 0.00000 + 8.1800 0.00000 + 8.1850 0.00000 + 8.1900 0.00000 + 8.1950 0.00000 + 8.2000 0.00000 + 8.2050 0.00000 + 8.2100 0.00000 + 8.2150 0.00000 + 8.2200 0.00000 + 8.2250 0.00000 + 8.2300 0.00000 + 8.2350 0.00000 + 8.2400 0.00000 + 8.2450 0.00000 + 8.2500 0.00000 + 8.2550 0.00000 + 8.2600 0.00000 + 8.2650 0.00000 + 8.2700 0.00000 + 8.2750 0.00000 + 8.2800 0.00000 + 8.2850 0.00000 + 8.2900 0.00000 + 8.2950 0.00000 + 8.3000 0.00000 + 8.3050 0.00000 + 8.3100 0.00000 + 8.3150 0.00000 + 8.3200 0.00000 + 8.3250 0.00000 + 8.3300 0.00000 + 8.3350 0.00000 + 8.3400 0.00000 + 8.3450 0.00000 + 8.3500 0.00000 + 8.3550 0.00000 + 8.3600 0.00000 + 8.3650 0.00000 + 8.3700 0.00000 + 8.3750 0.00000 + 8.3800 0.00000 + 8.3850 0.00000 + 8.3900 0.00000 + 8.3950 0.00000 + 8.4000 0.00000 + 8.4050 0.00000 + 8.4100 0.00000 + 8.4150 0.00000 + 8.4200 0.00000 + 8.4250 0.00000 + 8.4300 0.00000 + 8.4350 0.00000 + 8.4400 0.00000 + 8.4450 0.00000 + 8.4500 0.00000 + 8.4550 0.00000 + 8.4600 0.00000 + 8.4650 0.00000 + 8.4700 0.00000 + 8.4750 0.00000 + 8.4800 0.00000 + 8.4850 0.00000 + 8.4900 0.00000 + 8.4950 0.00000 + 8.5000 0.00000 + 8.5050 0.00000 + 8.5100 0.00000 + 8.5150 0.00000 + 8.5200 0.00000 + 8.5250 0.00000 + 8.5300 0.00000 + 8.5350 0.00000 + 8.5400 0.00000 + 8.5450 0.00000 + 8.5500 0.00000 + 8.5550 0.00000 + 8.5600 0.00000 + 8.5650 0.00000 + 8.5700 0.00000 + 8.5750 0.00000 + 8.5800 0.00000 + 8.5850 0.00000 + 8.5900 0.00000 + 8.5950 0.00000 + 8.6000 0.00000 + 8.6050 0.00000 + 8.6100 0.00000 + 8.6150 0.00000 + 8.6200 0.00000 + 8.6250 0.00000 + 8.6300 0.00000 + 8.6350 0.00000 + 8.6400 0.00000 + 8.6450 0.00000 + 8.6500 0.00000 + 8.6550 0.00000 + 8.6600 0.00000 + 8.6650 0.00000 + 8.6700 0.00000 + 8.6750 0.00000 + 8.6800 0.00000 + 8.6850 0.00000 + 8.6900 0.00000 + 8.6950 0.00000 + 8.7000 0.00000 + 8.7050 0.00000 + 8.7100 0.00000 + 8.7150 0.00000 + 8.7200 0.00000 + 8.7250 0.00000 + 8.7300 0.00000 + 8.7350 0.00000 + 8.7400 0.00000 + 8.7450 0.00000 + 8.7500 0.00000 + 8.7550 0.00000 + 8.7600 0.00000 + 8.7650 0.00000 + 8.7700 0.00000 + 8.7750 0.00000 + 8.7800 0.00000 + 8.7850 0.00000 + 8.7900 0.00000 + 8.7950 0.00000 + 8.8000 0.00000 + 8.8050 0.00000 + 8.8100 0.00000 + 8.8150 0.00000 + 8.8200 0.00000 + 8.8250 0.00000 + 8.8300 0.00000 + 8.8350 0.00000 + 8.8400 0.00000 + 8.8450 0.00000 + 8.8500 0.00000 + 8.8550 0.00000 + 8.8600 0.00000 + 8.8650 0.00000 + 8.8700 0.00000 + 8.8750 0.00000 + 8.8800 0.00000 + 8.8850 0.00000 + 8.8900 0.00000 + 8.8950 0.00000 + 8.9000 0.00000 + 8.9050 0.00000 + 8.9100 0.00000 + 8.9150 0.00000 + 8.9200 0.00000 + 8.9250 0.00000 + 8.9300 0.00000 + 8.9350 0.00000 + 8.9400 0.00000 + 8.9450 0.00000 + 8.9500 0.00000 + 8.9550 0.00000 + 8.9600 0.00000 + 8.9650 0.00000 + 8.9700 0.00000 + 8.9750 0.00000 + 8.9800 0.00000 + 8.9850 0.00000 + 8.9900 0.00000 + 8.9950 0.00000 + 9.0000 0.00000 + 9.0050 0.00000 + 9.0100 0.00000 + 9.0150 0.00000 + 9.0200 0.00000 + 9.0250 0.00000 + 9.0300 0.00000 + 9.0350 0.00000 + 9.0400 0.00000 + 9.0450 0.00000 + 9.0500 0.00000 + 9.0550 0.00000 + 9.0600 0.00000 + 9.0650 0.00000 + 9.0700 0.00000 + 9.0750 0.00000 + 9.0800 0.00000 + 9.0850 0.00000 + 9.0900 0.00000 + 9.0950 0.00000 + 9.1000 0.00000 + 9.1050 0.00000 + 9.1100 0.00000 + 9.1150 0.00000 + 9.1200 0.00000 + 9.1250 0.00000 + 9.1300 0.00000 + 9.1350 0.00000 + 9.1400 0.00000 + 9.1450 0.00000 + 9.1500 0.00000 + 9.1550 0.00000 + 9.1600 0.00000 + 9.1650 0.00000 + 9.1700 0.00000 + 9.1750 0.00000 + 9.1800 0.00000 + 9.1850 0.00000 + 9.1900 0.00000 + 9.1950 0.00000 + 9.2000 0.00000 + 9.2050 0.00000 + 9.2100 0.00000 + 9.2150 0.00000 + 9.2200 0.00000 + 9.2250 0.00000 + 9.2300 0.00000 + 9.2350 0.00000 + 9.2400 0.00000 + 9.2450 0.00000 + 9.2500 0.00000 + 9.2550 0.00000 + 9.2600 0.00000 + 9.2650 0.00000 + 9.2700 0.00000 + 9.2750 0.00000 + 9.2800 0.00000 + 9.2850 0.00000 + 9.2900 0.00000 + 9.2950 0.00000 + 9.3000 0.00000 + 9.3050 0.00000 + 9.3100 0.00000 + 9.3150 0.00000 + 9.3200 0.00000 + 9.3250 0.00000 + 9.3300 0.00000 + 9.3350 0.00000 + 9.3400 0.00000 + 9.3450 0.00000 + 9.3500 0.00000 + 9.3550 0.00000 + 9.3600 0.00000 + 9.3650 0.00000 + 9.3700 0.00000 + 9.3750 0.00000 + 9.3800 0.00000 + 9.3850 0.00000 + 9.3900 0.00000 + 9.3950 0.00000 + 9.4000 0.00000 + 9.4050 0.00000 + 9.4100 0.00000 + 9.4150 0.00000 + 9.4200 0.00000 + 9.4250 0.00000 + 9.4300 0.00000 + 9.4350 0.00000 + 9.4400 0.00000 + 9.4450 0.00000 + 9.4500 0.00000 + 9.4550 0.00000 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 1.3482e-05 + 0.20500 1.4442e-05 + 0.21000 1.5377e-05 + 0.21500 1.6279e-05 + 0.22000 1.7140e-05 + 0.22500 1.7953e-05 + 0.23000 1.8712e-05 + 0.23500 1.9415e-05 + 0.24000 2.0057e-05 + 0.24500 2.0640e-05 + 0.25000 2.1162e-05 + 0.25500 2.1625e-05 + 0.26000 2.2031e-05 + 0.26500 2.2384e-05 + 0.27000 2.2688e-05 + 0.27500 2.2946e-05 + 0.28000 2.3163e-05 + 0.28500 2.3345e-05 + 0.29000 2.3494e-05 + 0.29500 2.3616e-05 + 0.30000 2.3714e-05 + 0.30500 2.3793e-05 + 0.31000 2.3855e-05 + 0.31500 2.3904e-05 + 0.32000 2.3942e-05 + 0.32500 2.3971e-05 + 0.33000 2.3993e-05 + 0.33500 2.4009e-05 + 0.34000 2.4021e-05 + 0.34500 2.4030e-05 + 0.35000 2.4037e-05 + 0.35500 2.4042e-05 + 0.36000 2.4045e-05 + 0.36500 2.4047e-05 + 0.37000 2.4049e-05 + 0.37500 2.4050e-05 + 0.38000 2.4051e-05 + 0.38500 2.4051e-05 + 0.39000 2.4052e-05 + 0.39500 2.4052e-05 + 0.40000 2.4052e-05 + 0.40500 2.4052e-05 + 0.41000 2.4052e-05 + 0.41500 2.4052e-05 + 0.42000 2.4052e-05 + 0.42500 2.4052e-05 + 0.43000 2.4052e-05 + 0.43500 2.4052e-05 + 0.44000 2.4052e-05 + 0.44500 2.4052e-05 + 0.45000 2.4052e-05 + 0.45500 2.4052e-05 + 0.46000 2.4052e-05 + 0.46500 2.4052e-05 + 0.47000 2.4052e-05 + 0.47500 2.4052e-05 + 0.48000 2.4052e-05 + 0.48500 2.4052e-05 + 0.49000 2.4052e-05 + 0.49500 2.4052e-05 + 0.50000 2.4052e-05 + 0.50500 2.4052e-05 + 0.51000 2.4052e-05 + 0.51500 2.4052e-05 + 0.52000 2.4052e-05 + 0.52500 2.4052e-05 + 0.53000 2.4052e-05 + 0.53500 2.4052e-05 + 0.54000 2.4052e-05 + 0.54500 2.4052e-05 + 0.55000 2.4052e-05 + 0.55500 2.4052e-05 + 0.56000 2.4052e-05 + 0.56500 2.4052e-05 + 0.57000 2.4052e-05 + 0.57500 2.4052e-05 + 0.58000 2.4052e-05 + 0.58500 2.4052e-05 + 0.59000 2.4052e-05 + 0.59500 2.4052e-05 + 0.60000 2.4052e-05 + 0.60500 2.4052e-05 + 0.61000 2.4052e-05 + 0.61500 2.4052e-05 + 0.62000 2.4052e-05 + 0.62500 2.4052e-05 + 0.63000 2.4052e-05 + 0.63500 2.4052e-05 + 0.64000 2.4052e-05 + 0.64500 2.4052e-05 + 0.65000 2.4052e-05 + 0.65500 2.4052e-05 + 0.66000 2.4052e-05 + 0.66500 2.4052e-05 + 0.67000 2.4052e-05 + 0.67500 2.4052e-05 + 0.68000 2.4052e-05 + 0.68500 2.4052e-05 + 0.69000 2.4052e-05 + 0.69500 2.4052e-05 + 0.70000 2.4052e-05 + 0.70500 2.4052e-05 + 0.71000 2.4052e-05 + 0.71500 2.4052e-05 + 0.72000 2.4052e-05 + 0.72500 2.4052e-05 + 0.73000 2.4052e-05 + 0.73500 2.4052e-05 + 0.74000 2.4052e-05 + 0.74500 2.4052e-05 + 0.75000 2.4052e-05 + 0.75500 2.4052e-05 + 0.76000 2.4052e-05 + 0.76500 2.4052e-05 + 0.77000 2.4052e-05 + 0.77500 2.4052e-05 + 0.78000 2.4052e-05 + 0.78500 2.4052e-05 + 0.79000 2.4052e-05 + 0.79500 2.4052e-05 + 0.80000 2.4052e-05 + 0.80500 2.4052e-05 + 0.81000 2.4052e-05 + 0.81500 2.4052e-05 + 0.82000 2.4052e-05 + 0.82500 2.4052e-05 + 0.83000 2.4052e-05 + 0.83500 2.4052e-05 + 0.84000 2.4052e-05 + 0.84500 2.4052e-05 + 0.85000 2.4052e-05 + 0.85500 2.4052e-05 + 0.86000 2.4052e-05 + 0.86500 2.4052e-05 + 0.87000 2.4052e-05 + 0.87500 2.4052e-05 + 0.88000 2.4052e-05 + 0.88500 2.4052e-05 + 0.89000 2.4052e-05 + 0.89500 2.4052e-05 + 0.90000 2.4052e-05 + 0.90500 2.4052e-05 + 0.91000 2.4052e-05 + 0.91500 2.4052e-05 + 0.92000 2.4052e-05 + 0.92500 2.4052e-05 + 0.93000 2.4052e-05 + 0.93500 2.4052e-05 + 0.94000 2.4052e-05 + 0.94500 2.4052e-05 + 0.95000 2.4052e-05 + 0.95500 2.4052e-05 + 0.96000 2.4052e-05 + 0.96500 2.4052e-05 + 0.97000 2.4052e-05 + 0.97500 2.4052e-05 + 0.98000 2.4052e-05 + 0.98500 2.4052e-05 + 0.99000 2.4052e-05 + 0.99500 2.4052e-05 + 1.0000 2.4052e-05 + 1.0050 2.4053e-05 + 1.0100 2.4053e-05 + 1.0150 2.4053e-05 + 1.0200 2.4053e-05 + 1.0250 2.4053e-05 + 1.0300 2.4053e-05 + 1.0350 2.4054e-05 + 1.0400 2.4055e-05 + 1.0450 2.4056e-05 + 1.0500 2.4057e-05 + 1.0550 2.4059e-05 + 1.0600 2.4061e-05 + 1.0650 2.4065e-05 + 1.0700 2.4070e-05 + 1.0750 2.4076e-05 + 1.0800 2.4085e-05 + 1.0850 2.4096e-05 + 1.0900 2.4111e-05 + 1.0950 2.4130e-05 + 1.1000 2.4154e-05 + 1.1050 2.4184e-05 + 1.1100 2.4222e-05 + 1.1150 2.4269e-05 + 1.1200 2.4325e-05 + 1.1250 2.4394e-05 + 1.1300 2.4476e-05 + 1.1350 2.4574e-05 + 1.1400 2.4688e-05 + 1.1450 2.4822e-05 + 1.1500 2.4975e-05 + 1.1550 2.5149e-05 + 1.1600 2.5346e-05 + 1.1650 2.5566e-05 + 1.1700 2.5809e-05 + 1.1750 2.6075e-05 + 1.1800 2.6364e-05 + 1.1850 2.6675e-05 + 1.1900 2.7005e-05 + 1.1950 2.7353e-05 + 1.2000 2.7715e-05 + 1.2050 2.8090e-05 + 1.2100 2.8474e-05 + 1.2150 2.8862e-05 + 1.2200 2.9253e-05 + 1.2250 2.9640e-05 + 1.2300 3.0022e-05 + 1.2350 3.0394e-05 + 1.2400 3.0753e-05 + 1.2450 3.1096e-05 + 1.2500 3.1421e-05 + 1.2550 3.1725e-05 + 1.2600 3.2006e-05 + 1.2650 3.2263e-05 + 1.2700 3.2496e-05 + 1.2750 3.2702e-05 + 1.2800 3.2882e-05 + 1.2850 3.3036e-05 + 1.2900 3.3164e-05 + 1.2950 3.3264e-05 + 1.3000 3.3338e-05 + 1.3050 3.3385e-05 + 1.3100 3.3404e-05 + 1.3150 3.3395e-05 + 1.3200 3.3356e-05 + 1.3250 3.3286e-05 + 1.3300 3.3183e-05 + 1.3350 3.3046e-05 + 1.3400 3.2873e-05 + 1.3450 3.2661e-05 + 1.3500 3.2408e-05 + 1.3550 3.2113e-05 + 1.3600 3.1773e-05 + 1.3650 3.1388e-05 + 1.3700 3.0956e-05 + 1.3750 3.0478e-05 + 1.3800 2.9954e-05 + 1.3850 2.9386e-05 + 1.3900 2.8777e-05 + 1.3950 2.8129e-05 + 1.4000 2.7447e-05 + 1.4050 2.6737e-05 + 1.4100 2.6004e-05 + 1.4150 2.5254e-05 + 1.4200 2.4495e-05 + 1.4250 2.3733e-05 + 1.4300 2.2976e-05 + 1.4350 2.2231e-05 + 1.4400 2.1505e-05 + 1.4450 2.0803e-05 + 1.4500 2.0132e-05 + 1.4550 1.9496e-05 + 1.4600 1.8898e-05 + 1.4650 1.8343e-05 + 1.4700 1.7831e-05 + 1.4750 1.7364e-05 + 1.4800 1.6942e-05 + 1.4850 1.6565e-05 + 1.4900 1.6230e-05 + 1.4950 1.5935e-05 + 1.5000 1.5679e-05 + 1.5050 1.5459e-05 + 1.5100 1.5271e-05 + 1.5150 1.5111e-05 + 1.5200 1.4978e-05 + 1.5250 1.4868e-05 + 1.5300 1.4777e-05 + 1.5350 1.4704e-05 + 1.5400 1.4644e-05 + 1.5450 1.4597e-05 + 1.5500 1.4560e-05 + 1.5550 1.4531e-05 + 1.5600 1.4508e-05 + 1.5650 1.4491e-05 + 1.5700 1.4478e-05 + 1.5750 1.4468e-05 + 1.5800 1.4461e-05 + 1.5850 1.4456e-05 + 1.5900 1.4453e-05 + 1.5950 1.4451e-05 + 1.6000 1.4451e-05 + 1.6050 1.4452e-05 + 1.6100 1.4455e-05 + 1.6150 1.4461e-05 + 1.6200 1.4470e-05 + 1.6250 1.4483e-05 + 1.6300 1.4502e-05 + 1.6350 1.4529e-05 + 1.6400 1.4568e-05 + 1.6450 1.4621e-05 + 1.6500 1.4694e-05 + 1.6550 1.4793e-05 + 1.6600 1.4925e-05 + 1.6650 1.5099e-05 + 1.6700 1.5325e-05 + 1.6750 1.5615e-05 + 1.6800 1.5982e-05 + 1.6850 1.6441e-05 + 1.6900 1.7007e-05 + 1.6950 1.7695e-05 + 1.7000 1.8523e-05 + 1.7050 1.9504e-05 + 1.7100 2.0650e-05 + 1.7150 2.1971e-05 + 1.7200 2.3472e-05 + 1.7250 2.5154e-05 + 1.7300 2.7010e-05 + 1.7350 2.9028e-05 + 1.7400 3.1187e-05 + 1.7450 3.3459e-05 + 1.7500 3.5810e-05 + 1.7550 3.8196e-05 + 1.7600 4.0571e-05 + 1.7650 4.2885e-05 + 1.7700 4.5082e-05 + 1.7750 4.7112e-05 + 1.7800 4.8924e-05 + 1.7850 5.0472e-05 + 1.7900 5.1719e-05 + 1.7950 5.2635e-05 + 1.8000 5.3202e-05 + 1.8050 5.3414e-05 + 1.8100 5.3274e-05 + 1.8150 5.2799e-05 + 1.8200 5.2016e-05 + 1.8250 5.0959e-05 + 1.8300 4.9672e-05 + 1.8350 4.8201e-05 + 1.8400 4.6597e-05 + 1.8450 4.4909e-05 + 1.8500 4.3187e-05 + 1.8550 4.1473e-05 + 1.8600 3.9807e-05 + 1.8650 3.8222e-05 + 1.8700 3.6744e-05 + 1.8750 3.5389e-05 + 1.8800 3.4170e-05 + 1.8850 3.3093e-05 + 1.8900 3.2156e-05 + 1.8950 3.1354e-05 + 1.9000 3.0679e-05 + 1.9050 3.0120e-05 + 1.9100 2.9664e-05 + 1.9150 2.9298e-05 + 1.9200 2.9010e-05 + 1.9250 2.8785e-05 + 1.9300 2.8614e-05 + 1.9350 2.8485e-05 + 1.9400 2.8390e-05 + 1.9450 2.8322e-05 + 1.9500 2.8273e-05 + 1.9550 2.8239e-05 + 1.9600 2.8215e-05 + 1.9650 2.8200e-05 + 1.9700 2.8190e-05 + 1.9750 2.8184e-05 + 1.9800 2.8180e-05 + 1.9850 2.8178e-05 + 1.9900 2.8176e-05 + 1.9950 2.8176e-05 + 2.0000 2.8176e-05 + 2.0050 2.8176e-05 + 2.0100 2.8176e-05 + 2.0150 2.8176e-05 + 2.0200 2.8176e-05 + 2.0250 2.8176e-05 + 2.0300 2.8176e-05 + 2.0350 2.8176e-05 + 2.0400 2.8176e-05 + 2.0450 2.8176e-05 + 2.0500 2.8176e-05 + 2.0550 2.8176e-05 + 2.0600 2.8176e-05 + 2.0650 2.8176e-05 + 2.0700 2.8176e-05 + 2.0750 2.8176e-05 + 2.0800 2.8176e-05 + 2.0850 2.8176e-05 + 2.0900 2.8176e-05 + 2.0950 2.8176e-05 + 2.1000 2.8176e-05 + 2.1050 2.8176e-05 + 2.1100 2.8176e-05 + 2.1150 2.8176e-05 + 2.1200 2.8176e-05 + 2.1250 2.8176e-05 + 2.1300 2.8176e-05 + 2.1350 2.8176e-05 + 2.1400 2.8176e-05 + 2.1450 2.8176e-05 + 2.1500 2.8176e-05 + 2.1550 2.8176e-05 + 2.1600 2.8176e-05 + 2.1650 2.8176e-05 + 2.1700 2.8176e-05 + 2.1750 2.8176e-05 + 2.1800 2.8176e-05 + 2.1850 2.8176e-05 + 2.1900 2.8176e-05 + 2.1950 2.8176e-05 + 2.2000 2.8176e-05 + 2.2050 2.8176e-05 + 2.2100 2.8176e-05 + 2.2150 2.8176e-05 + 2.2200 2.8176e-05 + 2.2250 2.8176e-05 + 2.2300 2.8176e-05 + 2.2350 2.8176e-05 + 2.2400 2.8176e-05 + 2.2450 2.8176e-05 + 2.2500 2.8176e-05 + 2.2550 2.8176e-05 + 2.2600 2.8176e-05 + 2.2650 2.8176e-05 + 2.2700 2.8176e-05 + 2.2750 2.8176e-05 + 2.2800 2.8176e-05 + 2.2850 2.8176e-05 + 2.2900 2.8176e-05 + 2.2950 2.8176e-05 + 2.3000 2.8176e-05 + 2.3050 2.8176e-05 + 2.3100 2.8176e-05 + 2.3150 2.8176e-05 + 2.3200 2.8176e-05 + 2.3250 2.8177e-05 + 2.3300 2.8177e-05 + 2.3350 2.8177e-05 + 2.3400 2.8177e-05 + 2.3450 2.8177e-05 + 2.3500 2.8178e-05 + 2.3550 2.8179e-05 + 2.3600 2.8181e-05 + 2.3650 2.8183e-05 + 2.3700 2.8187e-05 + 2.3750 2.8192e-05 + 2.3800 2.8201e-05 + 2.3850 2.8213e-05 + 2.3900 2.8232e-05 + 2.3950 2.8258e-05 + 2.4000 2.8297e-05 + 2.4050 2.8351e-05 + 2.4100 2.8428e-05 + 2.4150 2.8535e-05 + 2.4200 2.8682e-05 + 2.4250 2.8883e-05 + 2.4300 2.9154e-05 + 2.4350 2.9516e-05 + 2.4400 2.9995e-05 + 2.4450 3.0621e-05 + 2.4500 3.1430e-05 + 2.4550 3.2468e-05 + 2.4600 3.3782e-05 + 2.4650 3.5431e-05 + 2.4700 3.7479e-05 + 2.4750 3.9994e-05 + 2.4800 4.3054e-05 + 2.4850 4.6738e-05 + 2.4900 5.1128e-05 + 2.4950 5.6306e-05 + 2.5000 6.2354e-05 + 2.5050 6.9345e-05 + 2.5100 7.7348e-05 + 2.5150 8.6420e-05 + 2.5200 9.6601e-05 + 2.5250 0.00010792 + 2.5300 0.00012038 + 2.5350 0.00013396 + 2.5400 0.00014864 + 2.5450 0.00016435 + 2.5500 0.00018103 + 2.5550 0.00019856 + 2.5600 0.00021685 + 2.5650 0.00023576 + 2.5700 0.00025517 + 2.5750 0.00027493 + 2.5800 0.00029492 + 2.5850 0.00031500 + 2.5900 0.00033505 + 2.5950 0.00035496 + 2.6000 0.00037464 + 2.6050 0.00039401 + 2.6100 0.00041302 + 2.6150 0.00043162 + 2.6200 0.00044980 + 2.6250 0.00046756 + 2.6300 0.00048491 + 2.6350 0.00050188 + 2.6400 0.00051851 + 2.6450 0.00053485 + 2.6500 0.00055095 + 2.6550 0.00056686 + 2.6600 0.00058265 + 2.6650 0.00059838 + 2.6700 0.00061409 + 2.6750 0.00062986 + 2.6800 0.00064572 + 2.6850 0.00066172 + 2.6900 0.00067791 + 2.6950 0.00069431 + 2.7000 0.00071097 + 2.7050 0.00072791 + 2.7100 0.00074515 + 2.7150 0.00076272 + 2.7200 0.00078064 + 2.7250 0.00079893 + 2.7300 0.00081759 + 2.7350 0.00083664 + 2.7400 0.00085611 + 2.7450 0.00087600 + 2.7500 0.00089632 + 2.7550 0.00091710 + 2.7600 0.00093836 + 2.7650 0.00096013 + 2.7700 0.00098244 + 2.7750 0.0010054 + 2.7800 0.0010290 + 2.7850 0.0010533 + 2.7900 0.0010787 + 2.7950 0.0011052 + 2.8000 0.0011332 + 2.8050 0.0011631 + 2.8100 0.0011956 + 2.8150 0.0012315 + 2.8200 0.0012719 + 2.8250 0.0013183 + 2.8300 0.0013728 + 2.8350 0.0014378 + 2.8400 0.0015167 + 2.8450 0.0016135 + 2.8500 0.0017335 + 2.8550 0.0018827 + 2.8600 0.0020688 + 2.8650 0.0023003 + 2.8700 0.0025874 + 2.8750 0.0029415 + 2.8800 0.0033750 + 2.8850 0.0039013 + 2.8900 0.0045345 + 2.8950 0.0052883 + 2.9000 0.0061762 + 2.9050 0.0072099 + 2.9100 0.0083991 + 2.9150 0.0097501 + 2.9200 0.011265 + 2.9250 0.012940 + 2.9300 0.014767 + 2.9350 0.016729 + 2.9400 0.018803 + 2.9450 0.020960 + 2.9500 0.023161 + 2.9550 0.025365 + 2.9600 0.027523 + 2.9650 0.029583 + 2.9700 0.031494 + 2.9750 0.033204 + 2.9800 0.034663 + 2.9850 0.035829 + 2.9900 0.036664 + 2.9950 0.037143 + 3.0000 0.037250 + 3.0050 0.036978 + 3.0100 0.036336 + 3.0150 0.035342 + 3.0200 0.034023 + 3.0250 0.032419 + 3.0300 0.030574 + 3.0350 0.028538 + 3.0400 0.026364 + 3.0450 0.024104 + 3.0500 0.021812 + 3.0550 0.019534 + 3.0600 0.017313 + 3.0650 0.015187 + 3.0700 0.013184 + 3.0750 0.011327 + 3.0800 0.0096307 + 3.0850 0.0081039 + 3.0900 0.0067487 + 3.0950 0.0055619 + 3.1000 0.0045364 + 3.1050 0.0036617 + 3.1100 0.0029250 + 3.1150 0.0023124 + 3.1200 0.0018091 + 3.1250 0.0014007 + 3.1300 0.0010732 + 3.1350 0.00081383 + 3.1400 0.00061072 + 3.1450 0.00045355 + 3.1500 0.00033334 + 3.1550 0.00024245 + 3.1600 0.00017451 + 3.1650 0.00012431 + 3.1700 8.7633e-05 + 3.1750 6.1136e-05 + 3.1800 4.2208e-05 + 3.1850 2.8838e-05 + 3.1900 1.9499e-05 + 3.1950 1.3048e-05 + 3.2000 8.6403e-06 + 3.2050 5.6623e-06 + 3.2100 3.6722e-06 + 3.2150 2.3568e-06 + 3.2200 1.4970e-06 + 3.2250 9.4093e-07 + 3.2300 5.8530e-07 + 3.2350 3.6031e-07 + 3.2400 2.1950e-07 + 3.2450 1.3233e-07 + 3.2500 7.8954e-08 + 3.2550 4.6618e-08 + 3.2600 2.7240e-08 + 3.2650 1.5751e-08 + 3.2700 9.0138e-09 + 3.2750 5.1047e-09 + 3.2800 2.8609e-09 + 3.2850 1.5867e-09 + 3.2900 8.7090e-10 + 3.2950 4.7305e-10 + 3.3000 2.5429e-10 + 3.3050 1.3527e-10 + 3.3100 7.1212e-11 + 3.3150 3.7100e-11 + 3.3200 1.9128e-11 + 3.3250 9.7594e-12 + 3.3300 4.9277e-12 + 3.3350 2.4622e-12 + 3.3400 1.2174e-12 + 3.3450 5.9557e-13 + 3.3500 0.00000 + 3.3550 0.00000 + 3.3600 0.00000 + 3.3650 0.00000 + 3.3700 0.00000 + 3.3750 0.00000 + 3.3800 0.00000 + 3.3850 0.00000 + 3.3900 0.00000 + 3.3950 0.00000 + 3.4000 0.00000 + 3.4050 0.00000 + 3.4100 0.00000 + 3.4150 0.00000 + 3.4200 0.00000 + 3.4250 0.00000 + 3.4300 0.00000 + 3.4350 0.00000 + 3.4400 0.00000 + 3.4450 0.00000 + 3.4500 0.00000 + 3.4550 0.00000 + 3.4600 0.00000 + 3.4650 0.00000 + 3.4700 0.00000 + 3.4750 0.00000 + 3.4800 0.00000 + 3.4850 0.00000 + 3.4900 0.00000 + 3.4950 0.00000 + 3.5000 0.00000 + 3.5050 0.00000 + 3.5100 0.00000 + 3.5150 0.00000 + 3.5200 0.00000 + 3.5250 0.00000 + 3.5300 0.00000 + 3.5350 0.00000 + 3.5400 0.00000 + 3.5450 0.00000 + 3.5500 0.00000 + 3.5550 0.00000 + 3.5600 0.00000 + 3.5650 0.00000 + 3.5700 0.00000 + 3.5750 0.00000 + 3.5800 0.00000 + 3.5850 0.00000 + 3.5900 0.00000 + 3.5950 0.00000 + 3.6000 0.00000 + 3.6050 0.00000 + 3.6100 0.00000 + 3.6150 0.00000 + 3.6200 0.00000 + 3.6250 0.00000 + 3.6300 0.00000 + 3.6350 0.00000 + 3.6400 0.00000 + 3.6450 0.00000 + 3.6500 0.00000 + 3.6550 0.00000 + 3.6600 0.00000 + 3.6650 0.00000 + 3.6700 0.00000 + 3.6750 0.00000 + 3.6800 0.00000 + 3.6850 0.00000 + 3.6900 0.00000 + 3.6950 0.00000 + 3.7000 0.00000 + 3.7050 0.00000 + 3.7100 0.00000 + 3.7150 0.00000 + 3.7200 0.00000 + 3.7250 0.00000 + 3.7300 0.00000 + 3.7350 0.00000 + 3.7400 0.00000 + 3.7450 0.00000 + 3.7500 0.00000 + 3.7550 0.00000 + 3.7600 0.00000 + 3.7650 0.00000 + 3.7700 0.00000 + 3.7750 0.00000 + 3.7800 0.00000 + 3.7850 0.00000 + 3.7900 0.00000 + 3.7950 0.00000 + 3.8000 0.00000 + 3.8050 0.00000 + 3.8100 0.00000 + 3.8150 0.00000 + 3.8200 0.00000 + 3.8250 0.00000 + 3.8300 0.00000 + 3.8350 0.00000 + 3.8400 0.00000 + 3.8450 0.00000 + 3.8500 0.00000 + 3.8550 0.00000 + 3.8600 0.00000 + 3.8650 0.00000 + 3.8700 0.00000 + 3.8750 0.00000 + 3.8800 0.00000 + 3.8850 0.00000 + 3.8900 0.00000 + 3.8950 0.00000 + 3.9000 0.00000 + 3.9050 0.00000 + 3.9100 0.00000 + 3.9150 0.00000 + 3.9200 0.00000 + 3.9250 0.00000 + 3.9300 0.00000 + 3.9350 0.00000 + 3.9400 0.00000 + 3.9450 0.00000 + 3.9500 0.00000 + 3.9550 0.00000 + 3.9600 0.00000 + 3.9650 0.00000 + 3.9700 0.00000 + 3.9750 0.00000 + 3.9800 0.00000 + 3.9850 0.00000 + 3.9900 0.00000 + 3.9950 0.00000 + 4.0000 0.00000 + 4.0050 0.00000 + 4.0100 0.00000 + 4.0150 0.00000 + 4.0200 0.00000 + 4.0250 0.00000 + 4.0300 0.00000 + 4.0350 0.00000 + 4.0400 0.00000 + 4.0450 0.00000 + 4.0500 0.00000 + 4.0550 0.00000 + 4.0600 0.00000 + 4.0650 0.00000 + 4.0700 0.00000 + 4.0750 0.00000 + 4.0800 0.00000 + 4.0850 0.00000 + 4.0900 0.00000 + 4.0950 0.00000 + 4.1000 0.00000 + 4.1050 0.00000 + 4.1100 0.00000 + 4.1150 0.00000 + 4.1200 0.00000 + 4.1250 0.00000 + 4.1300 0.00000 + 4.1350 0.00000 + 4.1400 0.00000 + 4.1450 0.00000 + 4.1500 0.00000 + 4.1550 0.00000 + 4.1600 0.00000 + 4.1650 0.00000 + 4.1700 0.00000 + 4.1750 0.00000 + 4.1800 0.00000 + 4.1850 0.00000 + 4.1900 0.00000 + 4.1950 0.00000 + 4.2000 0.00000 + 4.2050 0.00000 + 4.2100 0.00000 + 4.2150 0.00000 + 4.2200 0.00000 + 4.2250 0.00000 + 4.2300 0.00000 + 4.2350 0.00000 + 4.2400 0.00000 + 4.2450 0.00000 + 4.2500 0.00000 + 4.2550 0.00000 + 4.2600 0.00000 + 4.2650 0.00000 + 4.2700 0.00000 + 4.2750 0.00000 + 4.2800 0.00000 + 4.2850 0.00000 + 4.2900 0.00000 + 4.2950 0.00000 + 4.3000 0.00000 + 4.3050 0.00000 + 4.3100 0.00000 + 4.3150 0.00000 + 4.3200 0.00000 + 4.3250 0.00000 + 4.3300 0.00000 + 4.3350 0.00000 + 4.3400 0.00000 + 4.3450 0.00000 + 4.3500 0.00000 + 4.3550 0.00000 + 4.3600 0.00000 + 4.3650 0.00000 + 4.3700 0.00000 + 4.3750 0.00000 + 4.3800 0.00000 + 4.3850 0.00000 + 4.3900 0.00000 + 4.3950 0.00000 + 4.4000 0.00000 + 4.4050 0.00000 + 4.4100 0.00000 + 4.4150 0.00000 + 4.4200 0.00000 + 4.4250 0.00000 + 4.4300 0.00000 + 4.4350 0.00000 + 4.4400 0.00000 + 4.4450 0.00000 + 4.4500 0.00000 + 4.4550 0.00000 + 4.4600 0.00000 + 4.4650 0.00000 + 4.4700 0.00000 + 4.4750 0.00000 + 4.4800 0.00000 + 4.4850 0.00000 + 4.4900 0.00000 + 4.4950 0.00000 + 4.5000 0.00000 + 4.5050 0.00000 + 4.5100 0.00000 + 4.5150 0.00000 + 4.5200 0.00000 + 4.5250 0.00000 + 4.5300 0.00000 + 4.5350 0.00000 + 4.5400 0.00000 + 4.5450 0.00000 + 4.5500 0.00000 + 4.5550 0.00000 + 4.5600 0.00000 + 4.5650 0.00000 + 4.5700 0.00000 + 4.5750 0.00000 + 4.5800 0.00000 + 4.5850 0.00000 + 4.5900 0.00000 + 4.5950 0.00000 + 4.6000 0.00000 + 4.6050 0.00000 + 4.6100 0.00000 + 4.6150 0.00000 + 4.6200 0.00000 + 4.6250 0.00000 + 4.6300 0.00000 + 4.6350 0.00000 + 4.6400 0.00000 + 4.6450 0.00000 + 4.6500 0.00000 + 4.6550 0.00000 + 4.6600 0.00000 + 4.6650 0.00000 + 4.6700 0.00000 + 4.6750 0.00000 + 4.6800 0.00000 + 4.6850 0.00000 + 4.6900 0.00000 + 4.6950 0.00000 + 4.7000 0.00000 + 4.7050 0.00000 + 4.7100 0.00000 + 4.7150 0.00000 + 4.7200 0.00000 + 4.7250 0.00000 + 4.7300 0.00000 + 4.7350 0.00000 + 4.7400 0.00000 + 4.7450 0.00000 + 4.7500 0.00000 + 4.7550 0.00000 + 4.7600 0.00000 + 4.7650 0.00000 + 4.7700 0.00000 + 4.7750 0.00000 + 4.7800 0.00000 + 4.7850 0.00000 + 4.7900 0.00000 + 4.7950 0.00000 + 4.8000 0.00000 + 4.8050 0.00000 + 4.8100 0.00000 + 4.8150 0.00000 + 4.8200 0.00000 + 4.8250 0.00000 + 4.8300 0.00000 + 4.8350 0.00000 + 4.8400 0.00000 + 4.8450 0.00000 + 4.8500 0.00000 + 4.8550 0.00000 + 4.8600 0.00000 + 4.8650 0.00000 + 4.8700 0.00000 + 4.8750 0.00000 + 4.8800 0.00000 + 4.8850 0.00000 + 4.8900 0.00000 + 4.8950 0.00000 + 4.9000 0.00000 + 4.9050 0.00000 + 4.9100 0.00000 + 4.9150 0.00000 + 4.9200 0.00000 + 4.9250 0.00000 + 4.9300 0.00000 + 4.9350 0.00000 + 4.9400 0.00000 + 4.9450 0.00000 + 4.9500 0.00000 + 4.9550 0.00000 + 4.9600 0.00000 + 4.9650 0.00000 + 4.9700 0.00000 + 4.9750 0.00000 + 4.9800 0.00000 + 4.9850 0.00000 + 4.9900 0.00000 + 4.9950 0.00000 + 5.0000 0.00000 + 5.0050 0.00000 + 5.0100 0.00000 + 5.0150 0.00000 + 5.0200 0.00000 + 5.0250 0.00000 + 5.0300 0.00000 + 5.0350 0.00000 + 5.0400 0.00000 + 5.0450 0.00000 + 5.0500 0.00000 + 5.0550 0.00000 + 5.0600 0.00000 + 5.0650 0.00000 + 5.0700 0.00000 + 5.0750 0.00000 + 5.0800 0.00000 + 5.0850 0.00000 + 5.0900 0.00000 + 5.0950 0.00000 + 5.1000 0.00000 + 5.1050 0.00000 + 5.1100 0.00000 + 5.1150 0.00000 + 5.1200 0.00000 + 5.1250 0.00000 + 5.1300 0.00000 + 5.1350 0.00000 + 5.1400 0.00000 + 5.1450 0.00000 + 5.1500 0.00000 + 5.1550 0.00000 + 5.1600 0.00000 + 5.1650 0.00000 + 5.1700 0.00000 + 5.1750 0.00000 + 5.1800 0.00000 + 5.1850 0.00000 + 5.1900 0.00000 + 5.1950 0.00000 + 5.2000 0.00000 + 5.2050 0.00000 + 5.2100 0.00000 + 5.2150 0.00000 + 5.2200 0.00000 + 5.2250 0.00000 + 5.2300 0.00000 + 5.2350 0.00000 + 5.2400 0.00000 + 5.2450 0.00000 + 5.2500 0.00000 + 5.2550 0.00000 + 5.2600 0.00000 + 5.2650 0.00000 + 5.2700 0.00000 + 5.2750 0.00000 + 5.2800 0.00000 + 5.2850 0.00000 + 5.2900 0.00000 + 5.2950 0.00000 + 5.3000 0.00000 + 5.3050 0.00000 + 5.3100 0.00000 + 5.3150 0.00000 + 5.3200 0.00000 + 5.3250 0.00000 + 5.3300 0.00000 + 5.3350 0.00000 + 5.3400 0.00000 + 5.3450 0.00000 + 5.3500 0.00000 + 5.3550 0.00000 + 5.3600 0.00000 + 5.3650 0.00000 + 5.3700 0.00000 + 5.3750 0.00000 + 5.3800 0.00000 + 5.3850 0.00000 + 5.3900 0.00000 + 5.3950 0.00000 + 5.4000 0.00000 + 5.4050 0.00000 + 5.4100 0.00000 + 5.4150 0.00000 + 5.4200 0.00000 + 5.4250 0.00000 + 5.4300 0.00000 + 5.4350 0.00000 + 5.4400 0.00000 + 5.4450 0.00000 + 5.4500 0.00000 + 5.4550 0.00000 + 5.4600 0.00000 + 5.4650 0.00000 + 5.4700 0.00000 + 5.4750 0.00000 + 5.4800 0.00000 + 5.4850 0.00000 + 5.4900 0.00000 + 5.4950 0.00000 + 5.5000 0.00000 + 5.5050 0.00000 + 5.5100 0.00000 + 5.5150 0.00000 + 5.5200 0.00000 + 5.5250 0.00000 + 5.5300 0.00000 + 5.5350 0.00000 + 5.5400 0.00000 + 5.5450 0.00000 + 5.5500 0.00000 + 5.5550 0.00000 + 5.5600 0.00000 + 5.5650 0.00000 + 5.5700 0.00000 + 5.5750 0.00000 + 5.5800 0.00000 + 5.5850 0.00000 + 5.5900 0.00000 + 5.5950 0.00000 + 5.6000 0.00000 + 5.6050 0.00000 + 5.6100 0.00000 + 5.6150 0.00000 + 5.6200 0.00000 + 5.6250 0.00000 + 5.6300 0.00000 + 5.6350 0.00000 + 5.6400 0.00000 + 5.6450 0.00000 + 5.6500 0.00000 + 5.6550 0.00000 + 5.6600 0.00000 + 5.6650 0.00000 + 5.6700 0.00000 + 5.6750 0.00000 + 5.6800 0.00000 + 5.6850 0.00000 + 5.6900 0.00000 + 5.6950 0.00000 + 5.7000 0.00000 + 5.7050 0.00000 + 5.7100 0.00000 + 5.7150 0.00000 + 5.7200 0.00000 + 5.7250 0.00000 + 5.7300 0.00000 + 5.7350 0.00000 + 5.7400 0.00000 + 5.7450 0.00000 + 5.7500 0.00000 + 5.7550 0.00000 + 5.7600 0.00000 + 5.7650 0.00000 + 5.7700 0.00000 + 5.7750 0.00000 + 5.7800 0.00000 + 5.7850 0.00000 + 5.7900 0.00000 + 5.7950 0.00000 + 5.8000 0.00000 + 5.8050 0.00000 + 5.8100 0.00000 + 5.8150 0.00000 + 5.8200 0.00000 + 5.8250 0.00000 + 5.8300 0.00000 + 5.8350 0.00000 + 5.8400 0.00000 + 5.8450 0.00000 + 5.8500 0.00000 + 5.8550 0.00000 + 5.8600 0.00000 + 5.8650 0.00000 + 5.8700 0.00000 + 5.8750 0.00000 + 5.8800 0.00000 + 5.8850 0.00000 + 5.8900 0.00000 + 5.8950 0.00000 + 5.9000 0.00000 + 5.9050 0.00000 + 5.9100 0.00000 + 5.9150 0.00000 + 5.9200 0.00000 + 5.9250 0.00000 + 5.9300 0.00000 + 5.9350 0.00000 + 5.9400 0.00000 + 5.9450 0.00000 + 5.9500 0.00000 + 5.9550 0.00000 + 5.9600 0.00000 + 5.9650 0.00000 + 5.9700 0.00000 + 5.9750 0.00000 + 5.9800 0.00000 + 5.9850 0.00000 + 5.9900 0.00000 + 5.9950 0.00000 + 6.0000 0.00000 + 6.0050 0.00000 + 6.0100 0.00000 + 6.0150 0.00000 + 6.0200 0.00000 + 6.0250 0.00000 + 6.0300 0.00000 + 6.0350 0.00000 + 6.0400 0.00000 + 6.0450 0.00000 + 6.0500 0.00000 + 6.0550 0.00000 + 6.0600 0.00000 + 6.0650 0.00000 + 6.0700 0.00000 + 6.0750 0.00000 + 6.0800 0.00000 + 6.0850 0.00000 + 6.0900 0.00000 + 6.0950 0.00000 + 6.1000 0.00000 + 6.1050 0.00000 + 6.1100 0.00000 + 6.1150 0.00000 + 6.1200 0.00000 + 6.1250 0.00000 + 6.1300 0.00000 + 6.1350 0.00000 + 6.1400 0.00000 + 6.1450 0.00000 + 6.1500 0.00000 + 6.1550 0.00000 + 6.1600 0.00000 + 6.1650 0.00000 + 6.1700 0.00000 + 6.1750 0.00000 + 6.1800 0.00000 + 6.1850 0.00000 + 6.1900 0.00000 + 6.1950 0.00000 + 6.2000 0.00000 + 6.2050 0.00000 + 6.2100 0.00000 + 6.2150 0.00000 + 6.2200 0.00000 + 6.2250 0.00000 + 6.2300 0.00000 + 6.2350 0.00000 + 6.2400 0.00000 + 6.2450 0.00000 + 6.2500 0.00000 + 6.2550 0.00000 + 6.2600 0.00000 + 6.2650 0.00000 + 6.2700 0.00000 + 6.2750 0.00000 + 6.2800 0.00000 + 6.2850 0.00000 + 6.2900 0.00000 + 6.2950 0.00000 + 6.3000 0.00000 + 6.3050 0.00000 + 6.3100 0.00000 + 6.3150 0.00000 + 6.3200 0.00000 + 6.3250 0.00000 + 6.3300 0.00000 + 6.3350 0.00000 + 6.3400 0.00000 + 6.3450 0.00000 + 6.3500 0.00000 + 6.3550 0.00000 + 6.3600 0.00000 + 6.3650 0.00000 + 6.3700 0.00000 + 6.3750 0.00000 + 6.3800 0.00000 + 6.3850 0.00000 + 6.3900 0.00000 + 6.3950 0.00000 + 6.4000 0.00000 + 6.4050 0.00000 + 6.4100 0.00000 + 6.4150 0.00000 + 6.4200 0.00000 + 6.4250 0.00000 + 6.4300 0.00000 + 6.4350 0.00000 + 6.4400 0.00000 + 6.4450 0.00000 + 6.4500 0.00000 + 6.4550 0.00000 + 6.4600 0.00000 + 6.4650 0.00000 + 6.4700 0.00000 + 6.4750 0.00000 + 6.4800 0.00000 + 6.4850 0.00000 + 6.4900 0.00000 + 6.4950 0.00000 + 6.5000 0.00000 + 6.5050 0.00000 + 6.5100 0.00000 + 6.5150 0.00000 + 6.5200 0.00000 + 6.5250 0.00000 + 6.5300 0.00000 + 6.5350 0.00000 + 6.5400 0.00000 + 6.5450 0.00000 + 6.5500 0.00000 + 6.5550 0.00000 + 6.5600 0.00000 + 6.5650 0.00000 + 6.5700 0.00000 + 6.5750 0.00000 + 6.5800 0.00000 + 6.5850 0.00000 + 6.5900 0.00000 + 6.5950 0.00000 + 6.6000 0.00000 + 6.6050 0.00000 + 6.6100 0.00000 + 6.6150 0.00000 + 6.6200 0.00000 + 6.6250 0.00000 + 6.6300 0.00000 + 6.6350 0.00000 + 6.6400 0.00000 + 6.6450 0.00000 + 6.6500 0.00000 + 6.6550 0.00000 + 6.6600 0.00000 + 6.6650 0.00000 + 6.6700 0.00000 + 6.6750 0.00000 + 6.6800 0.00000 + 6.6850 0.00000 + 6.6900 0.00000 + 6.6950 0.00000 + 6.7000 0.00000 + 6.7050 0.00000 + 6.7100 0.00000 + 6.7150 0.00000 + 6.7200 0.00000 + 6.7250 0.00000 + 6.7300 0.00000 + 6.7350 0.00000 + 6.7400 0.00000 + 6.7450 0.00000 + 6.7500 0.00000 + 6.7550 0.00000 + 6.7600 0.00000 + 6.7650 0.00000 + 6.7700 0.00000 + 6.7750 0.00000 + 6.7800 0.00000 + 6.7850 0.00000 + 6.7900 0.00000 + 6.7950 0.00000 + 6.8000 0.00000 + 6.8050 0.00000 + 6.8100 0.00000 + 6.8150 0.00000 + 6.8200 0.00000 + 6.8250 0.00000 + 6.8300 0.00000 + 6.8350 0.00000 + 6.8400 0.00000 + 6.8450 0.00000 + 6.8500 0.00000 + 6.8550 0.00000 + 6.8600 0.00000 + 6.8650 0.00000 + 6.8700 0.00000 + 6.8750 0.00000 + 6.8800 0.00000 + 6.8850 0.00000 + 6.8900 0.00000 + 6.8950 0.00000 + 6.9000 0.00000 + 6.9050 0.00000 + 6.9100 0.00000 + 6.9150 0.00000 + 6.9200 0.00000 + 6.9250 0.00000 + 6.9300 0.00000 + 6.9350 0.00000 + 6.9400 0.00000 + 6.9450 0.00000 + 6.9500 0.00000 + 6.9550 0.00000 + 6.9600 0.00000 + 6.9650 0.00000 + 6.9700 0.00000 + 6.9750 0.00000 + 6.9800 0.00000 + 6.9850 0.00000 + 6.9900 0.00000 + 6.9950 0.00000 + 7.0000 0.00000 + 7.0050 0.00000 + 7.0100 0.00000 + 7.0150 0.00000 + 7.0200 0.00000 + 7.0250 0.00000 + 7.0300 0.00000 + 7.0350 0.00000 + 7.0400 0.00000 + 7.0450 0.00000 + 7.0500 0.00000 + 7.0550 0.00000 + 7.0600 0.00000 + 7.0650 0.00000 + 7.0700 0.00000 + 7.0750 0.00000 + 7.0800 0.00000 + 7.0850 0.00000 + 7.0900 0.00000 + 7.0950 0.00000 + 7.1000 0.00000 + 7.1050 0.00000 + 7.1100 0.00000 + 7.1150 0.00000 + 7.1200 0.00000 + 7.1250 0.00000 + 7.1300 0.00000 + 7.1350 0.00000 + 7.1400 0.00000 + 7.1450 0.00000 + 7.1500 0.00000 + 7.1550 0.00000 + 7.1600 0.00000 + 7.1650 0.00000 + 7.1700 0.00000 + 7.1750 0.00000 + 7.1800 0.00000 + 7.1850 0.00000 + 7.1900 0.00000 + 7.1950 0.00000 + 7.2000 0.00000 + 7.2050 0.00000 + 7.2100 0.00000 + 7.2150 0.00000 + 7.2200 0.00000 + 7.2250 0.00000 + 7.2300 0.00000 + 7.2350 0.00000 + 7.2400 0.00000 + 7.2450 0.00000 + 7.2500 0.00000 + 7.2550 0.00000 + 7.2600 0.00000 + 7.2650 0.00000 + 7.2700 0.00000 + 7.2750 0.00000 + 7.2800 0.00000 + 7.2850 0.00000 + 7.2900 0.00000 + 7.2950 0.00000 + 7.3000 0.00000 + 7.3050 0.00000 + 7.3100 0.00000 + 7.3150 0.00000 + 7.3200 0.00000 + 7.3250 0.00000 + 7.3300 0.00000 + 7.3350 0.00000 + 7.3400 0.00000 + 7.3450 0.00000 + 7.3500 0.00000 + 7.3550 0.00000 + 7.3600 0.00000 + 7.3650 0.00000 + 7.3700 0.00000 + 7.3750 0.00000 + 7.3800 0.00000 + 7.3850 0.00000 + 7.3900 0.00000 + 7.3950 0.00000 + 7.4000 0.00000 + 7.4050 0.00000 + 7.4100 0.00000 + 7.4150 0.00000 + 7.4200 0.00000 + 7.4250 0.00000 + 7.4300 0.00000 + 7.4350 0.00000 + 7.4400 0.00000 + 7.4450 0.00000 + 7.4500 0.00000 + 7.4550 0.00000 + 7.4600 0.00000 + 7.4650 0.00000 + 7.4700 0.00000 + 7.4750 0.00000 + 7.4800 0.00000 + 7.4850 0.00000 + 7.4900 0.00000 + 7.4950 0.00000 + 7.5000 0.00000 + 7.5050 0.00000 + 7.5100 0.00000 + 7.5150 0.00000 + 7.5200 0.00000 + 7.5250 0.00000 + 7.5300 0.00000 + 7.5350 0.00000 + 7.5400 0.00000 + 7.5450 0.00000 + 7.5500 0.00000 + 7.5550 0.00000 + 7.5600 0.00000 + 7.5650 0.00000 + 7.5700 0.00000 + 7.5750 0.00000 + 7.5800 0.00000 + 7.5850 0.00000 + 7.5900 0.00000 + 7.5950 0.00000 + 7.6000 0.00000 + 7.6050 0.00000 + 7.6100 0.00000 + 7.6150 0.00000 + 7.6200 0.00000 + 7.6250 0.00000 + 7.6300 0.00000 + 7.6350 0.00000 + 7.6400 0.00000 + 7.6450 0.00000 + 7.6500 0.00000 + 7.6550 0.00000 + 7.6600 0.00000 + 7.6650 0.00000 + 7.6700 0.00000 + 7.6750 0.00000 + 7.6800 0.00000 + 7.6850 0.00000 + 7.6900 0.00000 + 7.6950 0.00000 + 7.7000 0.00000 + 7.7050 0.00000 + 7.7100 0.00000 + 7.7150 0.00000 + 7.7200 0.00000 + 7.7250 0.00000 + 7.7300 0.00000 + 7.7350 0.00000 + 7.7400 0.00000 + 7.7450 0.00000 + 7.7500 0.00000 + 7.7550 0.00000 + 7.7600 0.00000 + 7.7650 0.00000 + 7.7700 0.00000 + 7.7750 0.00000 + 7.7800 0.00000 + 7.7850 0.00000 + 7.7900 0.00000 + 7.7950 0.00000 + 7.8000 0.00000 + 7.8050 0.00000 + 7.8100 0.00000 + 7.8150 0.00000 + 7.8200 0.00000 + 7.8250 0.00000 + 7.8300 0.00000 + 7.8350 0.00000 + 7.8400 0.00000 + 7.8450 0.00000 + 7.8500 0.00000 + 7.8550 0.00000 + 7.8600 0.00000 + 7.8650 0.00000 + 7.8700 0.00000 + 7.8750 0.00000 + 7.8800 0.00000 + 7.8850 0.00000 + 7.8900 0.00000 + 7.8950 0.00000 + 7.9000 0.00000 + 7.9050 0.00000 + 7.9100 0.00000 + 7.9150 0.00000 + 7.9200 0.00000 + 7.9250 0.00000 + 7.9300 0.00000 + 7.9350 0.00000 + 7.9400 0.00000 + 7.9450 0.00000 + 7.9500 0.00000 + 7.9550 0.00000 + 7.9600 0.00000 + 7.9650 0.00000 + 7.9700 0.00000 + 7.9750 0.00000 + 7.9800 0.00000 + 7.9850 0.00000 + 7.9900 0.00000 + 7.9950 0.00000 + 8.0000 0.00000 + 8.0050 0.00000 + 8.0100 0.00000 + 8.0150 0.00000 + 8.0200 0.00000 + 8.0250 0.00000 + 8.0300 0.00000 + 8.0350 0.00000 + 8.0400 0.00000 + 8.0450 0.00000 + 8.0500 0.00000 + 8.0550 0.00000 + 8.0600 0.00000 + 8.0650 0.00000 + 8.0700 0.00000 + 8.0750 0.00000 + 8.0800 0.00000 + 8.0850 0.00000 + 8.0900 0.00000 + 8.0950 0.00000 + 8.1000 0.00000 + 8.1050 0.00000 + 8.1100 0.00000 + 8.1150 0.00000 + 8.1200 0.00000 + 8.1250 0.00000 + 8.1300 0.00000 + 8.1350 0.00000 + 8.1400 0.00000 + 8.1450 0.00000 + 8.1500 0.00000 + 8.1550 0.00000 + 8.1600 0.00000 + 8.1650 0.00000 + 8.1700 0.00000 + 8.1750 0.00000 + 8.1800 0.00000 + 8.1850 0.00000 + 8.1900 0.00000 + 8.1950 0.00000 + 8.2000 0.00000 + 8.2050 0.00000 + 8.2100 0.00000 + 8.2150 0.00000 + 8.2200 0.00000 + 8.2250 0.00000 + 8.2300 0.00000 + 8.2350 0.00000 + 8.2400 0.00000 + 8.2450 0.00000 + 8.2500 0.00000 + 8.2550 0.00000 + 8.2600 0.00000 + 8.2650 0.00000 + 8.2700 0.00000 + 8.2750 0.00000 + 8.2800 0.00000 + 8.2850 0.00000 + 8.2900 0.00000 + 8.2950 0.00000 + 8.3000 0.00000 + 8.3050 0.00000 + 8.3100 0.00000 + 8.3150 0.00000 + 8.3200 0.00000 + 8.3250 0.00000 + 8.3300 0.00000 + 8.3350 0.00000 + 8.3400 0.00000 + 8.3450 0.00000 + 8.3500 0.00000 + 8.3550 0.00000 + 8.3600 0.00000 + 8.3650 0.00000 + 8.3700 0.00000 + 8.3750 0.00000 + 8.3800 0.00000 + 8.3850 0.00000 + 8.3900 0.00000 + 8.3950 0.00000 + 8.4000 0.00000 + 8.4050 0.00000 + 8.4100 0.00000 + 8.4150 0.00000 + 8.4200 0.00000 + 8.4250 0.00000 + 8.4300 0.00000 + 8.4350 0.00000 + 8.4400 0.00000 + 8.4450 0.00000 + 8.4500 0.00000 + 8.4550 0.00000 + 8.4600 0.00000 + 8.4650 0.00000 + 8.4700 0.00000 + 8.4750 0.00000 + 8.4800 0.00000 + 8.4850 0.00000 + 8.4900 0.00000 + 8.4950 0.00000 + 8.5000 0.00000 + 8.5050 0.00000 + 8.5100 0.00000 + 8.5150 0.00000 + 8.5200 0.00000 + 8.5250 0.00000 + 8.5300 0.00000 + 8.5350 0.00000 + 8.5400 0.00000 + 8.5450 0.00000 + 8.5500 0.00000 + 8.5550 0.00000 + 8.5600 0.00000 + 8.5650 0.00000 + 8.5700 0.00000 + 8.5750 0.00000 + 8.5800 0.00000 + 8.5850 0.00000 + 8.5900 0.00000 + 8.5950 0.00000 + 8.6000 0.00000 + 8.6050 0.00000 + 8.6100 0.00000 + 8.6150 0.00000 + 8.6200 0.00000 + 8.6250 0.00000 + 8.6300 0.00000 + 8.6350 0.00000 + 8.6400 0.00000 + 8.6450 0.00000 + 8.6500 0.00000 + 8.6550 0.00000 + 8.6600 0.00000 + 8.6650 0.00000 + 8.6700 0.00000 + 8.6750 0.00000 + 8.6800 0.00000 + 8.6850 0.00000 + 8.6900 0.00000 + 8.6950 0.00000 + 8.7000 0.00000 + 8.7050 0.00000 + 8.7100 0.00000 + 8.7150 0.00000 + 8.7200 0.00000 + 8.7250 0.00000 + 8.7300 0.00000 + 8.7350 0.00000 + 8.7400 0.00000 + 8.7450 0.00000 + 8.7500 0.00000 + 8.7550 0.00000 + 8.7600 0.00000 + 8.7650 0.00000 + 8.7700 0.00000 + 8.7750 0.00000 + 8.7800 0.00000 + 8.7850 0.00000 + 8.7900 0.00000 + 8.7950 0.00000 + 8.8000 0.00000 + 8.8050 0.00000 + 8.8100 0.00000 + 8.8150 0.00000 + 8.8200 0.00000 + 8.8250 0.00000 + 8.8300 0.00000 + 8.8350 0.00000 + 8.8400 0.00000 + 8.8450 0.00000 + 8.8500 0.00000 + 8.8550 0.00000 + 8.8600 0.00000 + 8.8650 0.00000 + 8.8700 0.00000 + 8.8750 0.00000 + 8.8800 0.00000 + 8.8850 0.00000 + 8.8900 0.00000 + 8.8950 0.00000 + 8.9000 0.00000 + 8.9050 0.00000 + 8.9100 0.00000 + 8.9150 0.00000 + 8.9200 0.00000 + 8.9250 0.00000 + 8.9300 0.00000 + 8.9350 0.00000 + 8.9400 0.00000 + 8.9450 0.00000 + 8.9500 0.00000 + 8.9550 0.00000 + 8.9600 0.00000 + 8.9650 0.00000 + 8.9700 0.00000 + 8.9750 0.00000 + 8.9800 0.00000 + 8.9850 0.00000 + 8.9900 0.00000 + 8.9950 0.00000 + 9.0000 0.00000 + 9.0050 0.00000 + 9.0100 0.00000 + 9.0150 0.00000 + 9.0200 0.00000 + 9.0250 0.00000 + 9.0300 0.00000 + 9.0350 0.00000 + 9.0400 0.00000 + 9.0450 0.00000 + 9.0500 0.00000 + 9.0550 0.00000 + 9.0600 0.00000 + 9.0650 0.00000 + 9.0700 0.00000 + 9.0750 0.00000 + 9.0800 0.00000 + 9.0850 0.00000 + 9.0900 0.00000 + 9.0950 0.00000 + 9.1000 0.00000 + 9.1050 0.00000 + 9.1100 0.00000 + 9.1150 0.00000 + 9.1200 0.00000 + 9.1250 0.00000 + 9.1300 0.00000 + 9.1350 0.00000 + 9.1400 0.00000 + 9.1450 0.00000 + 9.1500 0.00000 + 9.1550 0.00000 + 9.1600 0.00000 + 9.1650 0.00000 + 9.1700 0.00000 + 9.1750 0.00000 + 9.1800 0.00000 + 9.1850 0.00000 + 9.1900 0.00000 + 9.1950 0.00000 + 9.2000 0.00000 + 9.2050 0.00000 + 9.2100 0.00000 + 9.2150 0.00000 + 9.2200 0.00000 + 9.2250 0.00000 + 9.2300 0.00000 + 9.2350 0.00000 + 9.2400 0.00000 + 9.2450 0.00000 + 9.2500 0.00000 + 9.2550 0.00000 + 9.2600 0.00000 + 9.2650 0.00000 + 9.2700 0.00000 + 9.2750 0.00000 + 9.2800 0.00000 + 9.2850 0.00000 + 9.2900 0.00000 + 9.2950 0.00000 + 9.3000 0.00000 + 9.3050 0.00000 + 9.3100 0.00000 + 9.3150 0.00000 + 9.3200 0.00000 + 9.3250 0.00000 + 9.3300 0.00000 + 9.3350 0.00000 + 9.3400 0.00000 + 9.3450 0.00000 + 9.3500 0.00000 + 9.3550 0.00000 + 9.3600 0.00000 + 9.3650 0.00000 + 9.3700 0.00000 + 9.3750 0.00000 + 9.3800 0.00000 + 9.3850 0.00000 + 9.3900 0.00000 + 9.3950 0.00000 + 9.4000 0.00000 + 9.4050 0.00000 + 9.4100 0.00000 + 9.4150 0.00000 + 9.4200 0.00000 + 9.4250 0.00000 + 9.4300 0.00000 + 9.4350 0.00000 + 9.4400 0.00000 + 9.4450 0.00000 + 9.4500 0.00000 + 9.4550 0.00000 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 5.6473e-06 + 0.20500 6.0289e-06 + 0.21000 6.4018e-06 + 0.21500 6.7629e-06 + 0.22000 7.1094e-06 + 0.22500 7.4387e-06 + 0.23000 7.7489e-06 + 0.23500 8.0383e-06 + 0.24000 8.3060e-06 + 0.24500 8.5512e-06 + 0.25000 8.7737e-06 + 0.25500 8.9739e-06 + 0.26000 9.1523e-06 + 0.26500 9.3098e-06 + 0.27000 9.4476e-06 + 0.27500 9.5670e-06 + 0.28000 9.6696e-06 + 0.28500 9.7569e-06 + 0.29000 9.8305e-06 + 0.29500 9.8919e-06 + 0.30000 9.9428e-06 + 0.30500 9.9845e-06 + 0.31000 1.0018e-05 + 0.31500 1.0046e-05 + 0.32000 1.0068e-05 + 0.32500 1.0085e-05 + 0.33000 1.0098e-05 + 0.33500 1.0109e-05 + 0.34000 1.0117e-05 + 0.34500 1.0123e-05 + 0.35000 1.0127e-05 + 0.35500 1.0131e-05 + 0.36000 1.0133e-05 + 0.36500 1.0135e-05 + 0.37000 1.0137e-05 + 0.37500 1.0138e-05 + 0.38000 1.0138e-05 + 0.38500 1.0139e-05 + 0.39000 1.0139e-05 + 0.39500 1.0139e-05 + 0.40000 1.0140e-05 + 0.40500 1.0140e-05 + 0.41000 1.0140e-05 + 0.41500 1.0140e-05 + 0.42000 1.0140e-05 + 0.42500 1.0140e-05 + 0.43000 1.0140e-05 + 0.43500 1.0140e-05 + 0.44000 1.0140e-05 + 0.44500 1.0140e-05 + 0.45000 1.0140e-05 + 0.45500 1.0140e-05 + 0.46000 1.0140e-05 + 0.46500 1.0140e-05 + 0.47000 1.0140e-05 + 0.47500 1.0140e-05 + 0.48000 1.0140e-05 + 0.48500 1.0140e-05 + 0.49000 1.0140e-05 + 0.49500 1.0140e-05 + 0.50000 1.0140e-05 + 0.50500 1.0140e-05 + 0.51000 1.0140e-05 + 0.51500 1.0140e-05 + 0.52000 1.0140e-05 + 0.52500 1.0140e-05 + 0.53000 1.0140e-05 + 0.53500 1.0140e-05 + 0.54000 1.0140e-05 + 0.54500 1.0140e-05 + 0.55000 1.0140e-05 + 0.55500 1.0140e-05 + 0.56000 1.0140e-05 + 0.56500 1.0140e-05 + 0.57000 1.0140e-05 + 0.57500 1.0140e-05 + 0.58000 1.0140e-05 + 0.58500 1.0140e-05 + 0.59000 1.0140e-05 + 0.59500 1.0140e-05 + 0.60000 1.0140e-05 + 0.60500 1.0140e-05 + 0.61000 1.0140e-05 + 0.61500 1.0140e-05 + 0.62000 1.0140e-05 + 0.62500 1.0140e-05 + 0.63000 1.0140e-05 + 0.63500 1.0140e-05 + 0.64000 1.0140e-05 + 0.64500 1.0140e-05 + 0.65000 1.0140e-05 + 0.65500 1.0140e-05 + 0.66000 1.0140e-05 + 0.66500 1.0140e-05 + 0.67000 1.0140e-05 + 0.67500 1.0140e-05 + 0.68000 1.0140e-05 + 0.68500 1.0140e-05 + 0.69000 1.0140e-05 + 0.69500 1.0140e-05 + 0.70000 1.0140e-05 + 0.70500 1.0140e-05 + 0.71000 1.0140e-05 + 0.71500 1.0140e-05 + 0.72000 1.0140e-05 + 0.72500 1.0140e-05 + 0.73000 1.0140e-05 + 0.73500 1.0140e-05 + 0.74000 1.0140e-05 + 0.74500 1.0140e-05 + 0.75000 1.0140e-05 + 0.75500 1.0140e-05 + 0.76000 1.0140e-05 + 0.76500 1.0140e-05 + 0.77000 1.0140e-05 + 0.77500 1.0140e-05 + 0.78000 1.0140e-05 + 0.78500 1.0140e-05 + 0.79000 1.0140e-05 + 0.79500 1.0140e-05 + 0.80000 1.0140e-05 + 0.80500 1.0140e-05 + 0.81000 1.0140e-05 + 0.81500 1.0140e-05 + 0.82000 1.0140e-05 + 0.82500 1.0140e-05 + 0.83000 1.0140e-05 + 0.83500 1.0140e-05 + 0.84000 1.0140e-05 + 0.84500 1.0140e-05 + 0.85000 1.0140e-05 + 0.85500 1.0140e-05 + 0.86000 1.0140e-05 + 0.86500 1.0140e-05 + 0.87000 1.0140e-05 + 0.87500 1.0140e-05 + 0.88000 1.0140e-05 + 0.88500 1.0140e-05 + 0.89000 1.0140e-05 + 0.89500 1.0140e-05 + 0.90000 1.0140e-05 + 0.90500 1.0140e-05 + 0.91000 1.0140e-05 + 0.91500 1.0140e-05 + 0.92000 1.0140e-05 + 0.92500 1.0140e-05 + 0.93000 1.0140e-05 + 0.93500 1.0140e-05 + 0.94000 1.0140e-05 + 0.94500 1.0140e-05 + 0.95000 1.0140e-05 + 0.95500 1.0140e-05 + 0.96000 1.0140e-05 + 0.96500 1.0140e-05 + 0.97000 1.0140e-05 + 0.97500 1.0140e-05 + 0.98000 1.0140e-05 + 0.98500 1.0140e-05 + 0.99000 1.0140e-05 + 0.99500 1.0140e-05 + 1.0000 1.0140e-05 + 1.0050 1.0140e-05 + 1.0100 1.0140e-05 + 1.0150 1.0140e-05 + 1.0200 1.0141e-05 + 1.0250 1.0141e-05 + 1.0300 1.0141e-05 + 1.0350 1.0142e-05 + 1.0400 1.0142e-05 + 1.0450 1.0143e-05 + 1.0500 1.0145e-05 + 1.0550 1.0146e-05 + 1.0600 1.0149e-05 + 1.0650 1.0152e-05 + 1.0700 1.0156e-05 + 1.0750 1.0161e-05 + 1.0800 1.0167e-05 + 1.0850 1.0176e-05 + 1.0900 1.0186e-05 + 1.0950 1.0199e-05 + 1.1000 1.0216e-05 + 1.1050 1.0236e-05 + 1.1100 1.0260e-05 + 1.1150 1.0289e-05 + 1.1200 1.0324e-05 + 1.1250 1.0366e-05 + 1.1300 1.0415e-05 + 1.1350 1.0471e-05 + 1.1400 1.0537e-05 + 1.1450 1.0612e-05 + 1.1500 1.0696e-05 + 1.1550 1.0792e-05 + 1.1600 1.0898e-05 + 1.1650 1.1015e-05 + 1.1700 1.1143e-05 + 1.1750 1.1281e-05 + 1.1800 1.1431e-05 + 1.1850 1.1590e-05 + 1.1900 1.1758e-05 + 1.1950 1.1934e-05 + 1.2000 1.2117e-05 + 1.2050 1.2306e-05 + 1.2100 1.2498e-05 + 1.2150 1.2692e-05 + 1.2200 1.2888e-05 + 1.2250 1.3082e-05 + 1.2300 1.3273e-05 + 1.2350 1.3460e-05 + 1.2400 1.3642e-05 + 1.2450 1.3815e-05 + 1.2500 1.3981e-05 + 1.2550 1.4137e-05 + 1.2600 1.4282e-05 + 1.2650 1.4416e-05 + 1.2700 1.4538e-05 + 1.2750 1.4648e-05 + 1.2800 1.4745e-05 + 1.2850 1.4830e-05 + 1.2900 1.4902e-05 + 1.2950 1.4961e-05 + 1.3000 1.5007e-05 + 1.3050 1.5041e-05 + 1.3100 1.5063e-05 + 1.3150 1.5072e-05 + 1.3200 1.5069e-05 + 1.3250 1.5053e-05 + 1.3300 1.5024e-05 + 1.3350 1.4984e-05 + 1.3400 1.4931e-05 + 1.3450 1.4865e-05 + 1.3500 1.4788e-05 + 1.3550 1.4698e-05 + 1.3600 1.4596e-05 + 1.3650 1.4483e-05 + 1.3700 1.4359e-05 + 1.3750 1.4225e-05 + 1.3800 1.4082e-05 + 1.3850 1.3930e-05 + 1.3900 1.3772e-05 + 1.3950 1.3608e-05 + 1.4000 1.3439e-05 + 1.4050 1.3269e-05 + 1.4100 1.3097e-05 + 1.4150 1.2926e-05 + 1.4200 1.2757e-05 + 1.4250 1.2592e-05 + 1.4300 1.2432e-05 + 1.4350 1.2279e-05 + 1.4400 1.2133e-05 + 1.4450 1.1996e-05 + 1.4500 1.1868e-05 + 1.4550 1.1749e-05 + 1.4600 1.1641e-05 + 1.4650 1.1542e-05 + 1.4700 1.1454e-05 + 1.4750 1.1375e-05 + 1.4800 1.1305e-05 + 1.4850 1.1244e-05 + 1.4900 1.1192e-05 + 1.4950 1.1146e-05 + 1.5000 1.1108e-05 + 1.5050 1.1075e-05 + 1.5100 1.1048e-05 + 1.5150 1.1025e-05 + 1.5200 1.1007e-05 + 1.5250 1.0992e-05 + 1.5300 1.0980e-05 + 1.5350 1.0970e-05 + 1.5400 1.0963e-05 + 1.5450 1.0957e-05 + 1.5500 1.0952e-05 + 1.5550 1.0949e-05 + 1.5600 1.0946e-05 + 1.5650 1.0944e-05 + 1.5700 1.0942e-05 + 1.5750 1.0941e-05 + 1.5800 1.0940e-05 + 1.5850 1.0940e-05 + 1.5900 1.0939e-05 + 1.5950 1.0939e-05 + 1.6000 1.0939e-05 + 1.6050 1.0939e-05 + 1.6100 1.0939e-05 + 1.6150 1.0938e-05 + 1.6200 1.0938e-05 + 1.6250 1.0938e-05 + 1.6300 1.0938e-05 + 1.6350 1.0938e-05 + 1.6400 1.0938e-05 + 1.6450 1.0938e-05 + 1.6500 1.0938e-05 + 1.6550 1.0938e-05 + 1.6600 1.0938e-05 + 1.6650 1.0938e-05 + 1.6700 1.0938e-05 + 1.6750 1.0938e-05 + 1.6800 1.0938e-05 + 1.6850 1.0938e-05 + 1.6900 1.0938e-05 + 1.6950 1.0938e-05 + 1.7000 1.0938e-05 + 1.7050 1.0938e-05 + 1.7100 1.0938e-05 + 1.7150 1.0938e-05 + 1.7200 1.0938e-05 + 1.7250 1.0938e-05 + 1.7300 1.0938e-05 + 1.7350 1.0938e-05 + 1.7400 1.0938e-05 + 1.7450 1.0938e-05 + 1.7500 1.0938e-05 + 1.7550 1.0938e-05 + 1.7600 1.0938e-05 + 1.7650 1.0938e-05 + 1.7700 1.0938e-05 + 1.7750 1.0938e-05 + 1.7800 1.0938e-05 + 1.7850 1.0938e-05 + 1.7900 1.0938e-05 + 1.7950 1.0938e-05 + 1.8000 1.0938e-05 + 1.8050 1.0938e-05 + 1.8100 1.0938e-05 + 1.8150 1.0938e-05 + 1.8200 1.0938e-05 + 1.8250 1.0938e-05 + 1.8300 1.0938e-05 + 1.8350 1.0938e-05 + 1.8400 1.0938e-05 + 1.8450 1.0938e-05 + 1.8500 1.0938e-05 + 1.8550 1.0938e-05 + 1.8600 1.0938e-05 + 1.8650 1.0938e-05 + 1.8700 1.0938e-05 + 1.8750 1.0938e-05 + 1.8800 1.0938e-05 + 1.8850 1.0938e-05 + 1.8900 1.0938e-05 + 1.8950 1.0938e-05 + 1.9000 1.0938e-05 + 1.9050 1.0938e-05 + 1.9100 1.0938e-05 + 1.9150 1.0938e-05 + 1.9200 1.0938e-05 + 1.9250 1.0938e-05 + 1.9300 1.0938e-05 + 1.9350 1.0938e-05 + 1.9400 1.0938e-05 + 1.9450 1.0938e-05 + 1.9500 1.0938e-05 + 1.9550 1.0938e-05 + 1.9600 1.0938e-05 + 1.9650 1.0938e-05 + 1.9700 1.0938e-05 + 1.9750 1.0938e-05 + 1.9800 1.0938e-05 + 1.9850 1.0938e-05 + 1.9900 1.0938e-05 + 1.9950 1.0938e-05 + 2.0000 1.0938e-05 + 2.0050 1.0938e-05 + 2.0100 1.0938e-05 + 2.0150 1.0938e-05 + 2.0200 1.0938e-05 + 2.0250 1.0938e-05 + 2.0300 1.0938e-05 + 2.0350 1.0938e-05 + 2.0400 1.0938e-05 + 2.0450 1.0938e-05 + 2.0500 1.0938e-05 + 2.0550 1.0938e-05 + 2.0600 1.0938e-05 + 2.0650 1.0938e-05 + 2.0700 1.0938e-05 + 2.0750 1.0938e-05 + 2.0800 1.0938e-05 + 2.0850 1.0938e-05 + 2.0900 1.0938e-05 + 2.0950 1.0938e-05 + 2.1000 1.0938e-05 + 2.1050 1.0938e-05 + 2.1100 1.0938e-05 + 2.1150 1.0938e-05 + 2.1200 1.0938e-05 + 2.1250 1.0938e-05 + 2.1300 1.0938e-05 + 2.1350 1.0938e-05 + 2.1400 1.0938e-05 + 2.1450 1.0938e-05 + 2.1500 1.0938e-05 + 2.1550 1.0938e-05 + 2.1600 1.0938e-05 + 2.1650 1.0938e-05 + 2.1700 1.0938e-05 + 2.1750 1.0938e-05 + 2.1800 1.0938e-05 + 2.1850 1.0938e-05 + 2.1900 1.0938e-05 + 2.1950 1.0938e-05 + 2.2000 1.0938e-05 + 2.2050 1.0938e-05 + 2.2100 1.0938e-05 + 2.2150 1.0938e-05 + 2.2200 1.0938e-05 + 2.2250 1.0938e-05 + 2.2300 1.0938e-05 + 2.2350 1.0938e-05 + 2.2400 1.0938e-05 + 2.2450 1.0938e-05 + 2.2500 1.0938e-05 + 2.2550 1.0938e-05 + 2.2600 1.0937e-05 + 2.2650 1.0937e-05 + 2.2700 1.0936e-05 + 2.2750 1.0935e-05 + 2.2800 1.0934e-05 + 2.2850 1.0933e-05 + 2.2900 1.0930e-05 + 2.2950 1.0928e-05 + 2.3000 1.0924e-05 + 2.3050 1.0920e-05 + 2.3100 1.0914e-05 + 2.3150 1.0906e-05 + 2.3200 1.0897e-05 + 2.3250 1.0886e-05 + 2.3300 1.0872e-05 + 2.3350 1.0854e-05 + 2.3400 1.0833e-05 + 2.3450 1.0809e-05 + 2.3500 1.0779e-05 + 2.3550 1.0744e-05 + 2.3600 1.0704e-05 + 2.3650 1.0657e-05 + 2.3700 1.0604e-05 + 2.3750 1.0543e-05 + 2.3800 1.0475e-05 + 2.3850 1.0400e-05 + 2.3900 1.0317e-05 + 2.3950 1.0226e-05 + 2.4000 1.0128e-05 + 2.4050 1.0022e-05 + 2.4100 9.9106e-06 + 2.4150 9.7930e-06 + 2.4200 9.6705e-06 + 2.4250 9.5439e-06 + 2.4300 9.4144e-06 + 2.4350 9.2831e-06 + 2.4400 9.1511e-06 + 2.4450 9.0198e-06 + 2.4500 8.8902e-06 + 2.4550 8.7637e-06 + 2.4600 8.6411e-06 + 2.4650 8.5236e-06 + 2.4700 8.4118e-06 + 2.4750 8.3066e-06 + 2.4800 8.2084e-06 + 2.4850 8.1176e-06 + 2.4900 8.0344e-06 + 2.4950 7.9589e-06 + 2.5000 7.8910e-06 + 2.5050 7.8306e-06 + 2.5100 7.7772e-06 + 2.5150 7.7305e-06 + 2.5200 7.6900e-06 + 2.5250 7.6552e-06 + 2.5300 7.6256e-06 + 2.5350 7.6007e-06 + 2.5400 7.5799e-06 + 2.5450 7.5627e-06 + 2.5500 7.5486e-06 + 2.5550 7.5371e-06 + 2.5600 7.5280e-06 + 2.5650 7.5207e-06 + 2.5700 7.5151e-06 + 2.5750 7.5109e-06 + 2.5800 7.5078e-06 + 2.5850 7.5059e-06 + 2.5900 7.5049e-06 + 2.5950 7.5050e-06 + 2.6000 7.5063e-06 + 2.6050 7.5089e-06 + 2.6100 7.5133e-06 + 2.6150 7.5200e-06 + 2.6200 7.5296e-06 + 2.6250 7.5432e-06 + 2.6300 7.5619e-06 + 2.6350 7.5874e-06 + 2.6400 7.6216e-06 + 2.6450 7.6670e-06 + 2.6500 7.7264e-06 + 2.6550 7.8035e-06 + 2.6600 7.9022e-06 + 2.6650 8.0273e-06 + 2.6700 8.1839e-06 + 2.6750 8.3778e-06 + 2.6800 8.6152e-06 + 2.6850 8.9025e-06 + 2.6900 9.2461e-06 + 2.6950 9.6523e-06 + 2.7000 1.0127e-05 + 2.7050 1.0674e-05 + 2.7100 1.1299e-05 + 2.7150 1.2002e-05 + 2.7200 1.2784e-05 + 2.7250 1.3641e-05 + 2.7300 1.4570e-05 + 2.7350 1.5562e-05 + 2.7400 1.6606e-05 + 2.7450 1.7689e-05 + 2.7500 1.8794e-05 + 2.7550 1.9902e-05 + 2.7600 2.0993e-05 + 2.7650 2.2045e-05 + 2.7700 2.3037e-05 + 2.7750 2.3946e-05 + 2.7800 2.4754e-05 + 2.7850 2.5441e-05 + 2.7900 2.5993e-05 + 2.7950 2.6398e-05 + 2.8000 2.6650e-05 + 2.8050 2.6746e-05 + 2.8100 2.6687e-05 + 2.8150 2.6479e-05 + 2.8200 2.6133e-05 + 2.8250 2.5662e-05 + 2.8300 2.5084e-05 + 2.8350 2.4417e-05 + 2.8400 2.3682e-05 + 2.8450 2.2899e-05 + 2.8500 2.2089e-05 + 2.8550 2.1271e-05 + 2.8600 2.0462e-05 + 2.8650 1.9678e-05 + 2.8700 1.8931e-05 + 2.8750 1.8233e-05 + 2.8800 1.7589e-05 + 2.8850 1.7005e-05 + 2.8900 1.6483e-05 + 2.8950 1.6023e-05 + 2.9000 1.5623e-05 + 2.9050 1.5281e-05 + 2.9100 1.4991e-05 + 2.9150 1.4750e-05 + 2.9200 1.4551e-05 + 2.9250 1.4390e-05 + 2.9300 1.4261e-05 + 2.9350 1.4158e-05 + 2.9400 1.4079e-05 + 2.9450 1.4017e-05 + 2.9500 1.3971e-05 + 2.9550 1.3936e-05 + 2.9600 1.3910e-05 + 2.9650 1.3891e-05 + 2.9700 1.3878e-05 + 2.9750 1.3869e-05 + 2.9800 1.3862e-05 + 2.9850 1.3858e-05 + 2.9900 1.3855e-05 + 2.9950 1.3853e-05 + 3.0000 1.3852e-05 + 3.0050 1.3851e-05 + 3.0100 1.3850e-05 + 3.0150 1.3850e-05 + 3.0200 1.3850e-05 + 3.0250 1.3850e-05 + 3.0300 1.3850e-05 + 3.0350 1.3850e-05 + 3.0400 1.3850e-05 + 3.0450 1.3850e-05 + 3.0500 1.3850e-05 + 3.0550 1.3850e-05 + 3.0600 1.3850e-05 + 3.0650 1.3850e-05 + 3.0700 1.3850e-05 + 3.0750 1.3850e-05 + 3.0800 1.3850e-05 + 3.0850 1.3850e-05 + 3.0900 1.3850e-05 + 3.0950 1.3850e-05 + 3.1000 1.3850e-05 + 3.1050 1.3850e-05 + 3.1100 1.3850e-05 + 3.1150 1.3850e-05 + 3.1200 1.3850e-05 + 3.1250 1.3850e-05 + 3.1300 1.3850e-05 + 3.1350 1.3850e-05 + 3.1400 1.3850e-05 + 3.1450 1.3850e-05 + 3.1500 1.3850e-05 + 3.1550 1.3850e-05 + 3.1600 1.3850e-05 + 3.1650 1.3850e-05 + 3.1700 1.3850e-05 + 3.1750 1.3850e-05 + 3.1800 1.3850e-05 + 3.1850 1.3850e-05 + 3.1900 1.3850e-05 + 3.1950 1.3850e-05 + 3.2000 1.3850e-05 + 3.2050 1.3850e-05 + 3.2100 1.3850e-05 + 3.2150 1.3850e-05 + 3.2200 1.3850e-05 + 3.2250 1.3850e-05 + 3.2300 1.3850e-05 + 3.2350 1.3850e-05 + 3.2400 1.3850e-05 + 3.2450 1.3850e-05 + 3.2500 1.3850e-05 + 3.2550 1.3850e-05 + 3.2600 1.3851e-05 + 3.2650 1.3851e-05 + 3.2700 1.3852e-05 + 3.2750 1.3853e-05 + 3.2800 1.3855e-05 + 3.2850 1.3857e-05 + 3.2900 1.3861e-05 + 3.2950 1.3867e-05 + 3.3000 1.3874e-05 + 3.3050 1.3885e-05 + 3.3100 1.3900e-05 + 3.3150 1.3922e-05 + 3.3200 1.3951e-05 + 3.3250 1.3991e-05 + 3.3300 1.4046e-05 + 3.3350 1.4119e-05 + 3.3400 1.4217e-05 + 3.3450 1.4345e-05 + 3.3500 1.4514e-05 + 3.3550 1.4731e-05 + 3.3600 1.5011e-05 + 3.3650 1.5367e-05 + 3.3700 1.5815e-05 + 3.3750 1.6375e-05 + 3.3800 1.7068e-05 + 3.3850 1.7918e-05 + 3.3900 1.8951e-05 + 3.3950 2.0195e-05 + 3.4000 2.1679e-05 + 3.4050 2.3434e-05 + 3.4100 2.5492e-05 + 3.4150 2.7882e-05 + 3.4200 3.0635e-05 + 3.4250 3.3775e-05 + 3.4300 3.7328e-05 + 3.4350 4.1311e-05 + 3.4400 4.5738e-05 + 3.4450 5.0616e-05 + 3.4500 5.5945e-05 + 3.4550 6.1716e-05 + 3.4600 6.7913e-05 + 3.4650 7.4514e-05 + 3.4700 8.1486e-05 + 3.4750 8.8791e-05 + 3.4800 9.6385e-05 + 3.4850 0.00010422 + 3.4900 0.00011223 + 3.4950 0.00012038 + 3.5000 0.00012860 + 3.5050 0.00013684 + 3.5100 0.00014504 + 3.5150 0.00015316 + 3.5200 0.00016115 + 3.5250 0.00016898 + 3.5300 0.00017661 + 3.5350 0.00018402 + 3.5400 0.00019120 + 3.5450 0.00019813 + 3.5500 0.00020482 + 3.5550 0.00021126 + 3.5600 0.00021747 + 3.5650 0.00022346 + 3.5700 0.00022925 + 3.5750 0.00023486 + 3.5800 0.00024030 + 3.5850 0.00024561 + 3.5900 0.00025081 + 3.5950 0.00025592 + 3.6000 0.00026096 + 3.6050 0.00026595 + 3.6100 0.00027091 + 3.6150 0.00027586 + 3.6200 0.00028081 + 3.6250 0.00028579 + 3.6300 0.00029079 + 3.6350 0.00029584 + 3.6400 0.00030094 + 3.6450 0.00030609 + 3.6500 0.00031131 + 3.6550 0.00031660 + 3.6600 0.00032197 + 3.6650 0.00032742 + 3.6700 0.00033294 + 3.6750 0.00033856 + 3.6800 0.00034426 + 3.6850 0.00035006 + 3.6900 0.00035594 + 3.6950 0.00036193 + 3.7000 0.00036801 + 3.7050 0.00037419 + 3.7100 0.00038047 + 3.7150 0.00038686 + 3.7200 0.00039335 + 3.7250 0.00039995 + 3.7300 0.00040667 + 3.7350 0.00041351 + 3.7400 0.00042048 + 3.7450 0.00042759 + 3.7500 0.00043487 + 3.7550 0.00044233 + 3.7600 0.00045002 + 3.7650 0.00045800 + 3.7700 0.00046634 + 3.7750 0.00047517 + 3.7800 0.00048464 + 3.7850 0.00049498 + 3.7900 0.00050652 + 3.7950 0.00051969 + 3.8000 0.00053508 + 3.8050 0.00055348 + 3.8100 0.00057593 + 3.8150 0.00060379 + 3.8200 0.00063883 + 3.8250 0.00068330 + 3.8300 0.00074001 + 3.8350 0.00081245 + 3.8400 0.00090492 + 3.8450 0.0010226 + 3.8500 0.0011715 + 3.8550 0.0013589 + 3.8600 0.0015930 + 3.8650 0.0018830 + 3.8700 0.0022391 + 3.8750 0.0026723 + 3.8800 0.0031943 + 3.8850 0.0038170 + 3.8900 0.0045520 + 3.8950 0.0054103 + 3.9000 0.0064017 + 3.9050 0.0075339 + 3.9100 0.0088119 + 3.9150 0.010237 + 3.9200 0.011808 + 3.9250 0.013516 + 3.9300 0.015349 + 3.9350 0.017288 + 3.9400 0.019311 + 3.9450 0.021388 + 3.9500 0.023485 + 3.9550 0.025562 + 3.9600 0.027579 + 3.9650 0.029492 + 3.9700 0.031256 + 3.9750 0.032830 + 3.9800 0.034173 + 3.9850 0.035250 + 3.9900 0.036032 + 3.9950 0.036498 + 4.0000 0.036634 + 4.0050 0.036437 + 4.0100 0.035910 + 4.0150 0.035069 + 4.0200 0.033934 + 4.0250 0.032537 + 4.0300 0.030911 + 4.0350 0.029099 + 4.0400 0.027142 + 4.0450 0.025085 + 4.0500 0.022971 + 4.0550 0.020843 + 4.0600 0.018739 + 4.0650 0.016692 + 4.0700 0.014733 + 4.0750 0.012885 + 4.0800 0.011165 + 4.0850 0.0095857 + 4.0900 0.0081544 + 4.0950 0.0068732 + 4.1000 0.0057402 + 4.1050 0.0047499 + 4.1100 0.0038944 + 4.1150 0.0031636 + 4.1200 0.0025464 + 4.1250 0.0020308 + 4.1300 0.0016047 + 4.1350 0.0012564 + 4.1400 0.00097466 + 4.1450 0.00074915 + 4.1500 0.00057052 + 4.1550 0.00043050 + 4.1600 0.00032186 + 4.1650 0.00023843 + 4.1700 0.00017500 + 4.1750 0.00012727 + 4.1800 9.1702e-05 + 4.1850 6.5469e-05 + 4.1900 4.6311e-05 + 4.1950 3.2459e-05 + 4.2000 2.2541e-05 + 4.2050 1.5510e-05 + 4.2100 1.0574e-05 + 4.2150 7.1422e-06 + 4.2200 4.7801e-06 + 4.2250 3.1698e-06 + 4.2300 2.0827e-06 + 4.2350 1.3558e-06 + 4.2400 8.7455e-07 + 4.2450 5.5892e-07 + 4.2500 3.5392e-07 + 4.2550 2.2205e-07 + 4.2600 1.3804e-07 + 4.2650 8.5023e-08 + 4.2700 5.1887e-08 + 4.2750 3.1375e-08 + 4.2800 1.8797e-08 + 4.2850 1.1158e-08 + 4.2900 6.5627e-09 + 4.2950 3.8244e-09 + 4.3000 2.2082e-09 + 4.3050 1.2633e-09 + 4.3100 7.1610e-10 + 4.3150 4.0219e-10 + 4.3200 2.2381e-10 + 4.3250 1.2340e-10 + 4.3300 6.7411e-11 + 4.3350 3.6488e-11 + 4.3400 1.9569e-11 + 4.3450 1.0398e-11 + 4.3500 5.4745e-12 + 4.3550 2.8557e-12 + 4.3600 1.4759e-12 + 4.3650 7.5574e-13 + 4.3700 0.00000 + 4.3750 0.00000 + 4.3800 0.00000 + 4.3850 0.00000 + 4.3900 0.00000 + 4.3950 0.00000 + 4.4000 0.00000 + 4.4050 0.00000 + 4.4100 0.00000 + 4.4150 0.00000 + 4.4200 0.00000 + 4.4250 0.00000 + 4.4300 0.00000 + 4.4350 0.00000 + 4.4400 0.00000 + 4.4450 0.00000 + 4.4500 0.00000 + 4.4550 0.00000 + 4.4600 0.00000 + 4.4650 0.00000 + 4.4700 0.00000 + 4.4750 0.00000 + 4.4800 0.00000 + 4.4850 0.00000 + 4.4900 0.00000 + 4.4950 0.00000 + 4.5000 0.00000 + 4.5050 0.00000 + 4.5100 0.00000 + 4.5150 0.00000 + 4.5200 0.00000 + 4.5250 0.00000 + 4.5300 0.00000 + 4.5350 0.00000 + 4.5400 0.00000 + 4.5450 0.00000 + 4.5500 0.00000 + 4.5550 0.00000 + 4.5600 0.00000 + 4.5650 0.00000 + 4.5700 0.00000 + 4.5750 0.00000 + 4.5800 0.00000 + 4.5850 0.00000 + 4.5900 0.00000 + 4.5950 0.00000 + 4.6000 0.00000 + 4.6050 0.00000 + 4.6100 0.00000 + 4.6150 0.00000 + 4.6200 0.00000 + 4.6250 0.00000 + 4.6300 0.00000 + 4.6350 0.00000 + 4.6400 0.00000 + 4.6450 0.00000 + 4.6500 0.00000 + 4.6550 0.00000 + 4.6600 0.00000 + 4.6650 0.00000 + 4.6700 0.00000 + 4.6750 0.00000 + 4.6800 0.00000 + 4.6850 0.00000 + 4.6900 0.00000 + 4.6950 0.00000 + 4.7000 0.00000 + 4.7050 0.00000 + 4.7100 0.00000 + 4.7150 0.00000 + 4.7200 0.00000 + 4.7250 0.00000 + 4.7300 0.00000 + 4.7350 0.00000 + 4.7400 0.00000 + 4.7450 0.00000 + 4.7500 0.00000 + 4.7550 0.00000 + 4.7600 0.00000 + 4.7650 0.00000 + 4.7700 0.00000 + 4.7750 0.00000 + 4.7800 0.00000 + 4.7850 0.00000 + 4.7900 0.00000 + 4.7950 0.00000 + 4.8000 0.00000 + 4.8050 0.00000 + 4.8100 0.00000 + 4.8150 0.00000 + 4.8200 0.00000 + 4.8250 0.00000 + 4.8300 0.00000 + 4.8350 0.00000 + 4.8400 0.00000 + 4.8450 0.00000 + 4.8500 0.00000 + 4.8550 0.00000 + 4.8600 0.00000 + 4.8650 0.00000 + 4.8700 0.00000 + 4.8750 0.00000 + 4.8800 0.00000 + 4.8850 0.00000 + 4.8900 0.00000 + 4.8950 0.00000 + 4.9000 0.00000 + 4.9050 0.00000 + 4.9100 0.00000 + 4.9150 0.00000 + 4.9200 0.00000 + 4.9250 0.00000 + 4.9300 0.00000 + 4.9350 0.00000 + 4.9400 0.00000 + 4.9450 0.00000 + 4.9500 0.00000 + 4.9550 0.00000 + 4.9600 0.00000 + 4.9650 0.00000 + 4.9700 0.00000 + 4.9750 0.00000 + 4.9800 0.00000 + 4.9850 0.00000 + 4.9900 0.00000 + 4.9950 0.00000 + 5.0000 0.00000 + 5.0050 0.00000 + 5.0100 0.00000 + 5.0150 0.00000 + 5.0200 0.00000 + 5.0250 0.00000 + 5.0300 0.00000 + 5.0350 0.00000 + 5.0400 0.00000 + 5.0450 0.00000 + 5.0500 0.00000 + 5.0550 0.00000 + 5.0600 0.00000 + 5.0650 0.00000 + 5.0700 0.00000 + 5.0750 0.00000 + 5.0800 0.00000 + 5.0850 0.00000 + 5.0900 0.00000 + 5.0950 0.00000 + 5.1000 0.00000 + 5.1050 0.00000 + 5.1100 0.00000 + 5.1150 0.00000 + 5.1200 0.00000 + 5.1250 0.00000 + 5.1300 0.00000 + 5.1350 0.00000 + 5.1400 0.00000 + 5.1450 0.00000 + 5.1500 0.00000 + 5.1550 0.00000 + 5.1600 0.00000 + 5.1650 0.00000 + 5.1700 0.00000 + 5.1750 0.00000 + 5.1800 0.00000 + 5.1850 0.00000 + 5.1900 0.00000 + 5.1950 0.00000 + 5.2000 0.00000 + 5.2050 0.00000 + 5.2100 0.00000 + 5.2150 0.00000 + 5.2200 0.00000 + 5.2250 0.00000 + 5.2300 0.00000 + 5.2350 0.00000 + 5.2400 0.00000 + 5.2450 0.00000 + 5.2500 0.00000 + 5.2550 0.00000 + 5.2600 0.00000 + 5.2650 0.00000 + 5.2700 0.00000 + 5.2750 0.00000 + 5.2800 0.00000 + 5.2850 0.00000 + 5.2900 0.00000 + 5.2950 0.00000 + 5.3000 0.00000 + 5.3050 0.00000 + 5.3100 0.00000 + 5.3150 0.00000 + 5.3200 0.00000 + 5.3250 0.00000 + 5.3300 0.00000 + 5.3350 0.00000 + 5.3400 0.00000 + 5.3450 0.00000 + 5.3500 0.00000 + 5.3550 0.00000 + 5.3600 0.00000 + 5.3650 0.00000 + 5.3700 0.00000 + 5.3750 0.00000 + 5.3800 0.00000 + 5.3850 0.00000 + 5.3900 0.00000 + 5.3950 0.00000 + 5.4000 0.00000 + 5.4050 0.00000 + 5.4100 0.00000 + 5.4150 0.00000 + 5.4200 0.00000 + 5.4250 0.00000 + 5.4300 0.00000 + 5.4350 0.00000 + 5.4400 0.00000 + 5.4450 0.00000 + 5.4500 0.00000 + 5.4550 0.00000 + 5.4600 0.00000 + 5.4650 0.00000 + 5.4700 0.00000 + 5.4750 0.00000 + 5.4800 0.00000 + 5.4850 0.00000 + 5.4900 0.00000 + 5.4950 0.00000 + 5.5000 0.00000 + 5.5050 0.00000 + 5.5100 0.00000 + 5.5150 0.00000 + 5.5200 0.00000 + 5.5250 0.00000 + 5.5300 0.00000 + 5.5350 0.00000 + 5.5400 0.00000 + 5.5450 0.00000 + 5.5500 0.00000 + 5.5550 0.00000 + 5.5600 0.00000 + 5.5650 0.00000 + 5.5700 0.00000 + 5.5750 0.00000 + 5.5800 0.00000 + 5.5850 0.00000 + 5.5900 0.00000 + 5.5950 0.00000 + 5.6000 0.00000 + 5.6050 0.00000 + 5.6100 0.00000 + 5.6150 0.00000 + 5.6200 0.00000 + 5.6250 0.00000 + 5.6300 0.00000 + 5.6350 0.00000 + 5.6400 0.00000 + 5.6450 0.00000 + 5.6500 0.00000 + 5.6550 0.00000 + 5.6600 0.00000 + 5.6650 0.00000 + 5.6700 0.00000 + 5.6750 0.00000 + 5.6800 0.00000 + 5.6850 0.00000 + 5.6900 0.00000 + 5.6950 0.00000 + 5.7000 0.00000 + 5.7050 0.00000 + 5.7100 0.00000 + 5.7150 0.00000 + 5.7200 0.00000 + 5.7250 0.00000 + 5.7300 0.00000 + 5.7350 0.00000 + 5.7400 0.00000 + 5.7450 0.00000 + 5.7500 0.00000 + 5.7550 0.00000 + 5.7600 0.00000 + 5.7650 0.00000 + 5.7700 0.00000 + 5.7750 0.00000 + 5.7800 0.00000 + 5.7850 0.00000 + 5.7900 0.00000 + 5.7950 0.00000 + 5.8000 0.00000 + 5.8050 0.00000 + 5.8100 0.00000 + 5.8150 0.00000 + 5.8200 0.00000 + 5.8250 0.00000 + 5.8300 0.00000 + 5.8350 0.00000 + 5.8400 0.00000 + 5.8450 0.00000 + 5.8500 0.00000 + 5.8550 0.00000 + 5.8600 0.00000 + 5.8650 0.00000 + 5.8700 0.00000 + 5.8750 0.00000 + 5.8800 0.00000 + 5.8850 0.00000 + 5.8900 0.00000 + 5.8950 0.00000 + 5.9000 0.00000 + 5.9050 0.00000 + 5.9100 0.00000 + 5.9150 0.00000 + 5.9200 0.00000 + 5.9250 0.00000 + 5.9300 0.00000 + 5.9350 0.00000 + 5.9400 0.00000 + 5.9450 0.00000 + 5.9500 0.00000 + 5.9550 0.00000 + 5.9600 0.00000 + 5.9650 0.00000 + 5.9700 0.00000 + 5.9750 0.00000 + 5.9800 0.00000 + 5.9850 0.00000 + 5.9900 0.00000 + 5.9950 0.00000 + 6.0000 0.00000 + 6.0050 0.00000 + 6.0100 0.00000 + 6.0150 0.00000 + 6.0200 0.00000 + 6.0250 0.00000 + 6.0300 0.00000 + 6.0350 0.00000 + 6.0400 0.00000 + 6.0450 0.00000 + 6.0500 0.00000 + 6.0550 0.00000 + 6.0600 0.00000 + 6.0650 0.00000 + 6.0700 0.00000 + 6.0750 0.00000 + 6.0800 0.00000 + 6.0850 0.00000 + 6.0900 0.00000 + 6.0950 0.00000 + 6.1000 0.00000 + 6.1050 0.00000 + 6.1100 0.00000 + 6.1150 0.00000 + 6.1200 0.00000 + 6.1250 0.00000 + 6.1300 0.00000 + 6.1350 0.00000 + 6.1400 0.00000 + 6.1450 0.00000 + 6.1500 0.00000 + 6.1550 0.00000 + 6.1600 0.00000 + 6.1650 0.00000 + 6.1700 0.00000 + 6.1750 0.00000 + 6.1800 0.00000 + 6.1850 0.00000 + 6.1900 0.00000 + 6.1950 0.00000 + 6.2000 0.00000 + 6.2050 0.00000 + 6.2100 0.00000 + 6.2150 0.00000 + 6.2200 0.00000 + 6.2250 0.00000 + 6.2300 0.00000 + 6.2350 0.00000 + 6.2400 0.00000 + 6.2450 0.00000 + 6.2500 0.00000 + 6.2550 0.00000 + 6.2600 0.00000 + 6.2650 0.00000 + 6.2700 0.00000 + 6.2750 0.00000 + 6.2800 0.00000 + 6.2850 0.00000 + 6.2900 0.00000 + 6.2950 0.00000 + 6.3000 0.00000 + 6.3050 0.00000 + 6.3100 0.00000 + 6.3150 0.00000 + 6.3200 0.00000 + 6.3250 0.00000 + 6.3300 0.00000 + 6.3350 0.00000 + 6.3400 0.00000 + 6.3450 0.00000 + 6.3500 0.00000 + 6.3550 0.00000 + 6.3600 0.00000 + 6.3650 0.00000 + 6.3700 0.00000 + 6.3750 0.00000 + 6.3800 0.00000 + 6.3850 0.00000 + 6.3900 0.00000 + 6.3950 0.00000 + 6.4000 0.00000 + 6.4050 0.00000 + 6.4100 0.00000 + 6.4150 0.00000 + 6.4200 0.00000 + 6.4250 0.00000 + 6.4300 0.00000 + 6.4350 0.00000 + 6.4400 0.00000 + 6.4450 0.00000 + 6.4500 0.00000 + 6.4550 0.00000 + 6.4600 0.00000 + 6.4650 0.00000 + 6.4700 0.00000 + 6.4750 0.00000 + 6.4800 0.00000 + 6.4850 0.00000 + 6.4900 0.00000 + 6.4950 0.00000 + 6.5000 0.00000 + 6.5050 0.00000 + 6.5100 0.00000 + 6.5150 0.00000 + 6.5200 0.00000 + 6.5250 0.00000 + 6.5300 0.00000 + 6.5350 0.00000 + 6.5400 0.00000 + 6.5450 0.00000 + 6.5500 0.00000 + 6.5550 0.00000 + 6.5600 0.00000 + 6.5650 0.00000 + 6.5700 0.00000 + 6.5750 0.00000 + 6.5800 0.00000 + 6.5850 0.00000 + 6.5900 0.00000 + 6.5950 0.00000 + 6.6000 0.00000 + 6.6050 0.00000 + 6.6100 0.00000 + 6.6150 0.00000 + 6.6200 0.00000 + 6.6250 0.00000 + 6.6300 0.00000 + 6.6350 0.00000 + 6.6400 0.00000 + 6.6450 0.00000 + 6.6500 0.00000 + 6.6550 0.00000 + 6.6600 0.00000 + 6.6650 0.00000 + 6.6700 0.00000 + 6.6750 0.00000 + 6.6800 0.00000 + 6.6850 0.00000 + 6.6900 0.00000 + 6.6950 0.00000 + 6.7000 0.00000 + 6.7050 0.00000 + 6.7100 0.00000 + 6.7150 0.00000 + 6.7200 0.00000 + 6.7250 0.00000 + 6.7300 0.00000 + 6.7350 0.00000 + 6.7400 0.00000 + 6.7450 0.00000 + 6.7500 0.00000 + 6.7550 0.00000 + 6.7600 0.00000 + 6.7650 0.00000 + 6.7700 0.00000 + 6.7750 0.00000 + 6.7800 0.00000 + 6.7850 0.00000 + 6.7900 0.00000 + 6.7950 0.00000 + 6.8000 0.00000 + 6.8050 0.00000 + 6.8100 0.00000 + 6.8150 0.00000 + 6.8200 0.00000 + 6.8250 0.00000 + 6.8300 0.00000 + 6.8350 0.00000 + 6.8400 0.00000 + 6.8450 0.00000 + 6.8500 0.00000 + 6.8550 0.00000 + 6.8600 0.00000 + 6.8650 0.00000 + 6.8700 0.00000 + 6.8750 0.00000 + 6.8800 0.00000 + 6.8850 0.00000 + 6.8900 0.00000 + 6.8950 0.00000 + 6.9000 0.00000 + 6.9050 0.00000 + 6.9100 0.00000 + 6.9150 0.00000 + 6.9200 0.00000 + 6.9250 0.00000 + 6.9300 0.00000 + 6.9350 0.00000 + 6.9400 0.00000 + 6.9450 0.00000 + 6.9500 0.00000 + 6.9550 0.00000 + 6.9600 0.00000 + 6.9650 0.00000 + 6.9700 0.00000 + 6.9750 0.00000 + 6.9800 0.00000 + 6.9850 0.00000 + 6.9900 0.00000 + 6.9950 0.00000 + 7.0000 0.00000 + 7.0050 0.00000 + 7.0100 0.00000 + 7.0150 0.00000 + 7.0200 0.00000 + 7.0250 0.00000 + 7.0300 0.00000 + 7.0350 0.00000 + 7.0400 0.00000 + 7.0450 0.00000 + 7.0500 0.00000 + 7.0550 0.00000 + 7.0600 0.00000 + 7.0650 0.00000 + 7.0700 0.00000 + 7.0750 0.00000 + 7.0800 0.00000 + 7.0850 0.00000 + 7.0900 0.00000 + 7.0950 0.00000 + 7.1000 0.00000 + 7.1050 0.00000 + 7.1100 0.00000 + 7.1150 0.00000 + 7.1200 0.00000 + 7.1250 0.00000 + 7.1300 0.00000 + 7.1350 0.00000 + 7.1400 0.00000 + 7.1450 0.00000 + 7.1500 0.00000 + 7.1550 0.00000 + 7.1600 0.00000 + 7.1650 0.00000 + 7.1700 0.00000 + 7.1750 0.00000 + 7.1800 0.00000 + 7.1850 0.00000 + 7.1900 0.00000 + 7.1950 0.00000 + 7.2000 0.00000 + 7.2050 0.00000 + 7.2100 0.00000 + 7.2150 0.00000 + 7.2200 0.00000 + 7.2250 0.00000 + 7.2300 0.00000 + 7.2350 0.00000 + 7.2400 0.00000 + 7.2450 0.00000 + 7.2500 0.00000 + 7.2550 0.00000 + 7.2600 0.00000 + 7.2650 0.00000 + 7.2700 0.00000 + 7.2750 0.00000 + 7.2800 0.00000 + 7.2850 0.00000 + 7.2900 0.00000 + 7.2950 0.00000 + 7.3000 0.00000 + 7.3050 0.00000 + 7.3100 0.00000 + 7.3150 0.00000 + 7.3200 0.00000 + 7.3250 0.00000 + 7.3300 0.00000 + 7.3350 0.00000 + 7.3400 0.00000 + 7.3450 0.00000 + 7.3500 0.00000 + 7.3550 0.00000 + 7.3600 0.00000 + 7.3650 0.00000 + 7.3700 0.00000 + 7.3750 0.00000 + 7.3800 0.00000 + 7.3850 0.00000 + 7.3900 0.00000 + 7.3950 0.00000 + 7.4000 0.00000 + 7.4050 0.00000 + 7.4100 0.00000 + 7.4150 0.00000 + 7.4200 0.00000 + 7.4250 0.00000 + 7.4300 0.00000 + 7.4350 0.00000 + 7.4400 0.00000 + 7.4450 0.00000 + 7.4500 0.00000 + 7.4550 0.00000 + 7.4600 0.00000 + 7.4650 0.00000 + 7.4700 0.00000 + 7.4750 0.00000 + 7.4800 0.00000 + 7.4850 0.00000 + 7.4900 0.00000 + 7.4950 0.00000 + 7.5000 0.00000 + 7.5050 0.00000 + 7.5100 0.00000 + 7.5150 0.00000 + 7.5200 0.00000 + 7.5250 0.00000 + 7.5300 0.00000 + 7.5350 0.00000 + 7.5400 0.00000 + 7.5450 0.00000 + 7.5500 0.00000 + 7.5550 0.00000 + 7.5600 0.00000 + 7.5650 0.00000 + 7.5700 0.00000 + 7.5750 0.00000 + 7.5800 0.00000 + 7.5850 0.00000 + 7.5900 0.00000 + 7.5950 0.00000 + 7.6000 0.00000 + 7.6050 0.00000 + 7.6100 0.00000 + 7.6150 0.00000 + 7.6200 0.00000 + 7.6250 0.00000 + 7.6300 0.00000 + 7.6350 0.00000 + 7.6400 0.00000 + 7.6450 0.00000 + 7.6500 0.00000 + 7.6550 0.00000 + 7.6600 0.00000 + 7.6650 0.00000 + 7.6700 0.00000 + 7.6750 0.00000 + 7.6800 0.00000 + 7.6850 0.00000 + 7.6900 0.00000 + 7.6950 0.00000 + 7.7000 0.00000 + 7.7050 0.00000 + 7.7100 0.00000 + 7.7150 0.00000 + 7.7200 0.00000 + 7.7250 0.00000 + 7.7300 0.00000 + 7.7350 0.00000 + 7.7400 0.00000 + 7.7450 0.00000 + 7.7500 0.00000 + 7.7550 0.00000 + 7.7600 0.00000 + 7.7650 0.00000 + 7.7700 0.00000 + 7.7750 0.00000 + 7.7800 0.00000 + 7.7850 0.00000 + 7.7900 0.00000 + 7.7950 0.00000 + 7.8000 0.00000 + 7.8050 0.00000 + 7.8100 0.00000 + 7.8150 0.00000 + 7.8200 0.00000 + 7.8250 0.00000 + 7.8300 0.00000 + 7.8350 0.00000 + 7.8400 0.00000 + 7.8450 0.00000 + 7.8500 0.00000 + 7.8550 0.00000 + 7.8600 0.00000 + 7.8650 0.00000 + 7.8700 0.00000 + 7.8750 0.00000 + 7.8800 0.00000 + 7.8850 0.00000 + 7.8900 0.00000 + 7.8950 0.00000 + 7.9000 0.00000 + 7.9050 0.00000 + 7.9100 0.00000 + 7.9150 0.00000 + 7.9200 0.00000 + 7.9250 0.00000 + 7.9300 0.00000 + 7.9350 0.00000 + 7.9400 0.00000 + 7.9450 0.00000 + 7.9500 0.00000 + 7.9550 0.00000 + 7.9600 0.00000 + 7.9650 0.00000 + 7.9700 0.00000 + 7.9750 0.00000 + 7.9800 0.00000 + 7.9850 0.00000 + 7.9900 0.00000 + 7.9950 0.00000 + 8.0000 0.00000 + 8.0050 0.00000 + 8.0100 0.00000 + 8.0150 0.00000 + 8.0200 0.00000 + 8.0250 0.00000 + 8.0300 0.00000 + 8.0350 0.00000 + 8.0400 0.00000 + 8.0450 0.00000 + 8.0500 0.00000 + 8.0550 0.00000 + 8.0600 0.00000 + 8.0650 0.00000 + 8.0700 0.00000 + 8.0750 0.00000 + 8.0800 0.00000 + 8.0850 0.00000 + 8.0900 0.00000 + 8.0950 0.00000 + 8.1000 0.00000 + 8.1050 0.00000 + 8.1100 0.00000 + 8.1150 0.00000 + 8.1200 0.00000 + 8.1250 0.00000 + 8.1300 0.00000 + 8.1350 0.00000 + 8.1400 0.00000 + 8.1450 0.00000 + 8.1500 0.00000 + 8.1550 0.00000 + 8.1600 0.00000 + 8.1650 0.00000 + 8.1700 0.00000 + 8.1750 0.00000 + 8.1800 0.00000 + 8.1850 0.00000 + 8.1900 0.00000 + 8.1950 0.00000 + 8.2000 0.00000 + 8.2050 0.00000 + 8.2100 0.00000 + 8.2150 0.00000 + 8.2200 0.00000 + 8.2250 0.00000 + 8.2300 0.00000 + 8.2350 0.00000 + 8.2400 0.00000 + 8.2450 0.00000 + 8.2500 0.00000 + 8.2550 0.00000 + 8.2600 0.00000 + 8.2650 0.00000 + 8.2700 0.00000 + 8.2750 0.00000 + 8.2800 0.00000 + 8.2850 0.00000 + 8.2900 0.00000 + 8.2950 0.00000 + 8.3000 0.00000 + 8.3050 0.00000 + 8.3100 0.00000 + 8.3150 0.00000 + 8.3200 0.00000 + 8.3250 0.00000 + 8.3300 0.00000 + 8.3350 0.00000 + 8.3400 0.00000 + 8.3450 0.00000 + 8.3500 0.00000 + 8.3550 0.00000 + 8.3600 0.00000 + 8.3650 0.00000 + 8.3700 0.00000 + 8.3750 0.00000 + 8.3800 0.00000 + 8.3850 0.00000 + 8.3900 0.00000 + 8.3950 0.00000 + 8.4000 0.00000 + 8.4050 0.00000 + 8.4100 0.00000 + 8.4150 0.00000 + 8.4200 0.00000 + 8.4250 0.00000 + 8.4300 0.00000 + 8.4350 0.00000 + 8.4400 0.00000 + 8.4450 0.00000 + 8.4500 0.00000 + 8.4550 0.00000 + 8.4600 0.00000 + 8.4650 0.00000 + 8.4700 0.00000 + 8.4750 0.00000 + 8.4800 0.00000 + 8.4850 0.00000 + 8.4900 0.00000 + 8.4950 0.00000 + 8.5000 0.00000 + 8.5050 0.00000 + 8.5100 0.00000 + 8.5150 0.00000 + 8.5200 0.00000 + 8.5250 0.00000 + 8.5300 0.00000 + 8.5350 0.00000 + 8.5400 0.00000 + 8.5450 0.00000 + 8.5500 0.00000 + 8.5550 0.00000 + 8.5600 0.00000 + 8.5650 0.00000 + 8.5700 0.00000 + 8.5750 0.00000 + 8.5800 0.00000 + 8.5850 0.00000 + 8.5900 0.00000 + 8.5950 0.00000 + 8.6000 0.00000 + 8.6050 0.00000 + 8.6100 0.00000 + 8.6150 0.00000 + 8.6200 0.00000 + 8.6250 0.00000 + 8.6300 0.00000 + 8.6350 0.00000 + 8.6400 0.00000 + 8.6450 0.00000 + 8.6500 0.00000 + 8.6550 0.00000 + 8.6600 0.00000 + 8.6650 0.00000 + 8.6700 0.00000 + 8.6750 0.00000 + 8.6800 0.00000 + 8.6850 0.00000 + 8.6900 0.00000 + 8.6950 0.00000 + 8.7000 0.00000 + 8.7050 0.00000 + 8.7100 0.00000 + 8.7150 0.00000 + 8.7200 0.00000 + 8.7250 0.00000 + 8.7300 0.00000 + 8.7350 0.00000 + 8.7400 0.00000 + 8.7450 0.00000 + 8.7500 0.00000 + 8.7550 0.00000 + 8.7600 0.00000 + 8.7650 0.00000 + 8.7700 0.00000 + 8.7750 0.00000 + 8.7800 0.00000 + 8.7850 0.00000 + 8.7900 0.00000 + 8.7950 0.00000 + 8.8000 0.00000 + 8.8050 0.00000 + 8.8100 0.00000 + 8.8150 0.00000 + 8.8200 0.00000 + 8.8250 0.00000 + 8.8300 0.00000 + 8.8350 0.00000 + 8.8400 0.00000 + 8.8450 0.00000 + 8.8500 0.00000 + 8.8550 0.00000 + 8.8600 0.00000 + 8.8650 0.00000 + 8.8700 0.00000 + 8.8750 0.00000 + 8.8800 0.00000 + 8.8850 0.00000 + 8.8900 0.00000 + 8.8950 0.00000 + 8.9000 0.00000 + 8.9050 0.00000 + 8.9100 0.00000 + 8.9150 0.00000 + 8.9200 0.00000 + 8.9250 0.00000 + 8.9300 0.00000 + 8.9350 0.00000 + 8.9400 0.00000 + 8.9450 0.00000 + 8.9500 0.00000 + 8.9550 0.00000 + 8.9600 0.00000 + 8.9650 0.00000 + 8.9700 0.00000 + 8.9750 0.00000 + 8.9800 0.00000 + 8.9850 0.00000 + 8.9900 0.00000 + 8.9950 0.00000 + 9.0000 0.00000 + 9.0050 0.00000 + 9.0100 0.00000 + 9.0150 0.00000 + 9.0200 0.00000 + 9.0250 0.00000 + 9.0300 0.00000 + 9.0350 0.00000 + 9.0400 0.00000 + 9.0450 0.00000 + 9.0500 0.00000 + 9.0550 0.00000 + 9.0600 0.00000 + 9.0650 0.00000 + 9.0700 0.00000 + 9.0750 0.00000 + 9.0800 0.00000 + 9.0850 0.00000 + 9.0900 0.00000 + 9.0950 0.00000 + 9.1000 0.00000 + 9.1050 0.00000 + 9.1100 0.00000 + 9.1150 0.00000 + 9.1200 0.00000 + 9.1250 0.00000 + 9.1300 0.00000 + 9.1350 0.00000 + 9.1400 0.00000 + 9.1450 0.00000 + 9.1500 0.00000 + 9.1550 0.00000 + 9.1600 0.00000 + 9.1650 0.00000 + 9.1700 0.00000 + 9.1750 0.00000 + 9.1800 0.00000 + 9.1850 0.00000 + 9.1900 0.00000 + 9.1950 0.00000 + 9.2000 0.00000 + 9.2050 0.00000 + 9.2100 0.00000 + 9.2150 0.00000 + 9.2200 0.00000 + 9.2250 0.00000 + 9.2300 0.00000 + 9.2350 0.00000 + 9.2400 0.00000 + 9.2450 0.00000 + 9.2500 0.00000 + 9.2550 0.00000 + 9.2600 0.00000 + 9.2650 0.00000 + 9.2700 0.00000 + 9.2750 0.00000 + 9.2800 0.00000 + 9.2850 0.00000 + 9.2900 0.00000 + 9.2950 0.00000 + 9.3000 0.00000 + 9.3050 0.00000 + 9.3100 0.00000 + 9.3150 0.00000 + 9.3200 0.00000 + 9.3250 0.00000 + 9.3300 0.00000 + 9.3350 0.00000 + 9.3400 0.00000 + 9.3450 0.00000 + 9.3500 0.00000 + 9.3550 0.00000 + 9.3600 0.00000 + 9.3650 0.00000 + 9.3700 0.00000 + 9.3750 0.00000 + 9.3800 0.00000 + 9.3850 0.00000 + 9.3900 0.00000 + 9.3950 0.00000 + 9.4000 0.00000 + 9.4050 0.00000 + 9.4100 0.00000 + 9.4150 0.00000 + 9.4200 0.00000 + 9.4250 0.00000 + 9.4300 0.00000 + 9.4350 0.00000 + 9.4400 0.00000 + 9.4450 0.00000 + 9.4500 0.00000 + 9.4550 0.00000 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 2.7829e-06 + 0.20500 2.9623e-06 + 0.21000 3.1380e-06 + 0.21500 3.3087e-06 + 0.22000 3.4732e-06 + 0.22500 3.6304e-06 + 0.23000 3.7793e-06 + 0.23500 3.9194e-06 + 0.24000 4.0499e-06 + 0.24500 4.1705e-06 + 0.25000 4.2812e-06 + 0.25500 4.3817e-06 + 0.26000 4.4725e-06 + 0.26500 4.5536e-06 + 0.27000 4.6256e-06 + 0.27500 4.6889e-06 + 0.28000 4.7441e-06 + 0.28500 4.7919e-06 + 0.29000 4.8329e-06 + 0.29500 4.8678e-06 + 0.30000 4.8972e-06 + 0.30500 4.9219e-06 + 0.31000 4.9424e-06 + 0.31500 4.9592e-06 + 0.32000 4.9730e-06 + 0.32500 4.9841e-06 + 0.33000 4.9931e-06 + 0.33500 5.0002e-06 + 0.34000 5.0058e-06 + 0.34500 5.0102e-06 + 0.35000 5.0137e-06 + 0.35500 5.0163e-06 + 0.36000 5.0183e-06 + 0.36500 5.0199e-06 + 0.37000 5.0210e-06 + 0.37500 5.0219e-06 + 0.38000 5.0225e-06 + 0.38500 5.0230e-06 + 0.39000 5.0233e-06 + 0.39500 5.0235e-06 + 0.40000 5.0237e-06 + 0.40500 5.0238e-06 + 0.41000 5.0239e-06 + 0.41500 5.0240e-06 + 0.42000 5.0240e-06 + 0.42500 5.0241e-06 + 0.43000 5.0241e-06 + 0.43500 5.0241e-06 + 0.44000 5.0241e-06 + 0.44500 5.0241e-06 + 0.45000 5.0241e-06 + 0.45500 5.0241e-06 + 0.46000 5.0241e-06 + 0.46500 5.0241e-06 + 0.47000 5.0241e-06 + 0.47500 5.0241e-06 + 0.48000 5.0241e-06 + 0.48500 5.0241e-06 + 0.49000 5.0241e-06 + 0.49500 5.0241e-06 + 0.50000 5.0241e-06 + 0.50500 5.0241e-06 + 0.51000 5.0241e-06 + 0.51500 5.0241e-06 + 0.52000 5.0241e-06 + 0.52500 5.0241e-06 + 0.53000 5.0241e-06 + 0.53500 5.0241e-06 + 0.54000 5.0241e-06 + 0.54500 5.0241e-06 + 0.55000 5.0241e-06 + 0.55500 5.0241e-06 + 0.56000 5.0241e-06 + 0.56500 5.0241e-06 + 0.57000 5.0241e-06 + 0.57500 5.0241e-06 + 0.58000 5.0241e-06 + 0.58500 5.0241e-06 + 0.59000 5.0241e-06 + 0.59500 5.0241e-06 + 0.60000 5.0241e-06 + 0.60500 5.0241e-06 + 0.61000 5.0241e-06 + 0.61500 5.0241e-06 + 0.62000 5.0241e-06 + 0.62500 5.0241e-06 + 0.63000 5.0241e-06 + 0.63500 5.0241e-06 + 0.64000 5.0241e-06 + 0.64500 5.0241e-06 + 0.65000 5.0241e-06 + 0.65500 5.0241e-06 + 0.66000 5.0241e-06 + 0.66500 5.0241e-06 + 0.67000 5.0241e-06 + 0.67500 5.0241e-06 + 0.68000 5.0241e-06 + 0.68500 5.0241e-06 + 0.69000 5.0241e-06 + 0.69500 5.0241e-06 + 0.70000 5.0241e-06 + 0.70500 5.0241e-06 + 0.71000 5.0241e-06 + 0.71500 5.0241e-06 + 0.72000 5.0241e-06 + 0.72500 5.0241e-06 + 0.73000 5.0241e-06 + 0.73500 5.0241e-06 + 0.74000 5.0241e-06 + 0.74500 5.0241e-06 + 0.75000 5.0241e-06 + 0.75500 5.0241e-06 + 0.76000 5.0241e-06 + 0.76500 5.0241e-06 + 0.77000 5.0241e-06 + 0.77500 5.0241e-06 + 0.78000 5.0241e-06 + 0.78500 5.0241e-06 + 0.79000 5.0241e-06 + 0.79500 5.0241e-06 + 0.80000 5.0241e-06 + 0.80500 5.0241e-06 + 0.81000 5.0241e-06 + 0.81500 5.0241e-06 + 0.82000 5.0241e-06 + 0.82500 5.0241e-06 + 0.83000 5.0241e-06 + 0.83500 5.0241e-06 + 0.84000 5.0241e-06 + 0.84500 5.0241e-06 + 0.85000 5.0241e-06 + 0.85500 5.0241e-06 + 0.86000 5.0241e-06 + 0.86500 5.0241e-06 + 0.87000 5.0241e-06 + 0.87500 5.0241e-06 + 0.88000 5.0241e-06 + 0.88500 5.0241e-06 + 0.89000 5.0241e-06 + 0.89500 5.0241e-06 + 0.90000 5.0241e-06 + 0.90500 5.0241e-06 + 0.91000 5.0241e-06 + 0.91500 5.0241e-06 + 0.92000 5.0241e-06 + 0.92500 5.0241e-06 + 0.93000 5.0241e-06 + 0.93500 5.0241e-06 + 0.94000 5.0241e-06 + 0.94500 5.0241e-06 + 0.95000 5.0241e-06 + 0.95500 5.0241e-06 + 0.96000 5.0241e-06 + 0.96500 5.0241e-06 + 0.97000 5.0241e-06 + 0.97500 5.0241e-06 + 0.98000 5.0242e-06 + 0.98500 5.0242e-06 + 0.99000 5.0242e-06 + 0.99500 5.0242e-06 + 1.0000 5.0243e-06 + 1.0050 5.0244e-06 + 1.0100 5.0245e-06 + 1.0150 5.0246e-06 + 1.0200 5.0248e-06 + 1.0250 5.0251e-06 + 1.0300 5.0255e-06 + 1.0350 5.0260e-06 + 1.0400 5.0267e-06 + 1.0450 5.0276e-06 + 1.0500 5.0288e-06 + 1.0550 5.0304e-06 + 1.0600 5.0324e-06 + 1.0650 5.0350e-06 + 1.0700 5.0384e-06 + 1.0750 5.0425e-06 + 1.0800 5.0478e-06 + 1.0850 5.0543e-06 + 1.0900 5.0623e-06 + 1.0950 5.0720e-06 + 1.1000 5.0839e-06 + 1.1050 5.0981e-06 + 1.1100 5.1151e-06 + 1.1150 5.1352e-06 + 1.1200 5.1589e-06 + 1.1250 5.1864e-06 + 1.1300 5.2181e-06 + 1.1350 5.2545e-06 + 1.1400 5.2960e-06 + 1.1450 5.3427e-06 + 1.1500 5.3950e-06 + 1.1550 5.4531e-06 + 1.1600 5.5171e-06 + 1.1650 5.5871e-06 + 1.1700 5.6630e-06 + 1.1750 5.7446e-06 + 1.1800 5.8318e-06 + 1.1850 5.9242e-06 + 1.1900 6.0213e-06 + 1.1950 6.1226e-06 + 1.2000 6.2274e-06 + 1.2050 6.3350e-06 + 1.2100 6.4446e-06 + 1.2150 6.5554e-06 + 1.2200 6.6665e-06 + 1.2250 6.7770e-06 + 1.2300 6.8861e-06 + 1.2350 6.9929e-06 + 1.2400 7.0966e-06 + 1.2450 7.1965e-06 + 1.2500 7.2918e-06 + 1.2550 7.3820e-06 + 1.2600 7.4665e-06 + 1.2650 7.5450e-06 + 1.2700 7.6169e-06 + 1.2750 7.6822e-06 + 1.2800 7.7406e-06 + 1.2850 7.7918e-06 + 1.2900 7.8360e-06 + 1.2950 7.8730e-06 + 1.3000 7.9028e-06 + 1.3050 7.9255e-06 + 1.3100 7.9411e-06 + 1.3150 7.9497e-06 + 1.3200 7.9513e-06 + 1.3250 7.9460e-06 + 1.3300 7.9339e-06 + 1.3350 7.9152e-06 + 1.3400 7.8898e-06 + 1.3450 7.8579e-06 + 1.3500 7.8197e-06 + 1.3550 7.7754e-06 + 1.3600 7.7252e-06 + 1.3650 7.6693e-06 + 1.3700 7.6082e-06 + 1.3750 7.5423e-06 + 1.3800 7.4720e-06 + 1.3850 7.3978e-06 + 1.3900 7.3203e-06 + 1.3950 7.2403e-06 + 1.4000 7.1583e-06 + 1.4050 7.0751e-06 + 1.4100 6.9914e-06 + 1.4150 6.9080e-06 + 1.4200 6.8255e-06 + 1.4250 6.7446e-06 + 1.4300 6.6660e-06 + 1.4350 6.5903e-06 + 1.4400 6.5179e-06 + 1.4450 6.4492e-06 + 1.4500 6.3847e-06 + 1.4550 6.3246e-06 + 1.4600 6.2690e-06 + 1.4650 6.2180e-06 + 1.4700 6.1717e-06 + 1.4750 6.1299e-06 + 1.4800 6.0925e-06 + 1.4850 6.0594e-06 + 1.4900 6.0302e-06 + 1.4950 6.0048e-06 + 1.5000 5.9828e-06 + 1.5050 5.9639e-06 + 1.5100 5.9478e-06 + 1.5150 5.9343e-06 + 1.5200 5.9229e-06 + 1.5250 5.9135e-06 + 1.5300 5.9058e-06 + 1.5350 5.8994e-06 + 1.5400 5.8943e-06 + 1.5450 5.8902e-06 + 1.5500 5.8869e-06 + 1.5550 5.8843e-06 + 1.5600 5.8823e-06 + 1.5650 5.8807e-06 + 1.5700 5.8795e-06 + 1.5750 5.8786e-06 + 1.5800 5.8779e-06 + 1.5850 5.8773e-06 + 1.5900 5.8769e-06 + 1.5950 5.8766e-06 + 1.6000 5.8764e-06 + 1.6050 5.8763e-06 + 1.6100 5.8762e-06 + 1.6150 5.8761e-06 + 1.6200 5.8760e-06 + 1.6250 5.8760e-06 + 1.6300 5.8760e-06 + 1.6350 5.8759e-06 + 1.6400 5.8759e-06 + 1.6450 5.8759e-06 + 1.6500 5.8759e-06 + 1.6550 5.8759e-06 + 1.6600 5.8759e-06 + 1.6650 5.8759e-06 + 1.6700 5.8759e-06 + 1.6750 5.8759e-06 + 1.6800 5.8759e-06 + 1.6850 5.8759e-06 + 1.6900 5.8759e-06 + 1.6950 5.8759e-06 + 1.7000 5.8759e-06 + 1.7050 5.8759e-06 + 1.7100 5.8759e-06 + 1.7150 5.8759e-06 + 1.7200 5.8759e-06 + 1.7250 5.8759e-06 + 1.7300 5.8759e-06 + 1.7350 5.8759e-06 + 1.7400 5.8759e-06 + 1.7450 5.8759e-06 + 1.7500 5.8759e-06 + 1.7550 5.8759e-06 + 1.7600 5.8759e-06 + 1.7650 5.8759e-06 + 1.7700 5.8759e-06 + 1.7750 5.8759e-06 + 1.7800 5.8759e-06 + 1.7850 5.8759e-06 + 1.7900 5.8759e-06 + 1.7950 5.8759e-06 + 1.8000 5.8759e-06 + 1.8050 5.8759e-06 + 1.8100 5.8759e-06 + 1.8150 5.8759e-06 + 1.8200 5.8759e-06 + 1.8250 5.8759e-06 + 1.8300 5.8759e-06 + 1.8350 5.8759e-06 + 1.8400 5.8759e-06 + 1.8450 5.8759e-06 + 1.8500 5.8759e-06 + 1.8550 5.8759e-06 + 1.8600 5.8759e-06 + 1.8650 5.8759e-06 + 1.8700 5.8759e-06 + 1.8750 5.8759e-06 + 1.8800 5.8759e-06 + 1.8850 5.8759e-06 + 1.8900 5.8759e-06 + 1.8950 5.8759e-06 + 1.9000 5.8759e-06 + 1.9050 5.8759e-06 + 1.9100 5.8759e-06 + 1.9150 5.8759e-06 + 1.9200 5.8759e-06 + 1.9250 5.8759e-06 + 1.9300 5.8759e-06 + 1.9350 5.8759e-06 + 1.9400 5.8759e-06 + 1.9450 5.8759e-06 + 1.9500 5.8759e-06 + 1.9550 5.8759e-06 + 1.9600 5.8759e-06 + 1.9650 5.8759e-06 + 1.9700 5.8759e-06 + 1.9750 5.8759e-06 + 1.9800 5.8759e-06 + 1.9850 5.8759e-06 + 1.9900 5.8759e-06 + 1.9950 5.8759e-06 + 2.0000 5.8759e-06 + 2.0050 5.8759e-06 + 2.0100 5.8759e-06 + 2.0150 5.8759e-06 + 2.0200 5.8759e-06 + 2.0250 5.8759e-06 + 2.0300 5.8759e-06 + 2.0350 5.8759e-06 + 2.0400 5.8759e-06 + 2.0450 5.8759e-06 + 2.0500 5.8759e-06 + 2.0550 5.8759e-06 + 2.0600 5.8759e-06 + 2.0650 5.8759e-06 + 2.0700 5.8759e-06 + 2.0750 5.8759e-06 + 2.0800 5.8759e-06 + 2.0850 5.8759e-06 + 2.0900 5.8759e-06 + 2.0950 5.8759e-06 + 2.1000 5.8759e-06 + 2.1050 5.8759e-06 + 2.1100 5.8759e-06 + 2.1150 5.8759e-06 + 2.1200 5.8759e-06 + 2.1250 5.8759e-06 + 2.1300 5.8759e-06 + 2.1350 5.8759e-06 + 2.1400 5.8759e-06 + 2.1450 5.8759e-06 + 2.1500 5.8759e-06 + 2.1550 5.8759e-06 + 2.1600 5.8759e-06 + 2.1650 5.8759e-06 + 2.1700 5.8759e-06 + 2.1750 5.8759e-06 + 2.1800 5.8759e-06 + 2.1850 5.8759e-06 + 2.1900 5.8759e-06 + 2.1950 5.8759e-06 + 2.2000 5.8759e-06 + 2.2050 5.8759e-06 + 2.2100 5.8759e-06 + 2.2150 5.8759e-06 + 2.2200 5.8759e-06 + 2.2250 5.8759e-06 + 2.2300 5.8759e-06 + 2.2350 5.8759e-06 + 2.2400 5.8759e-06 + 2.2450 5.8759e-06 + 2.2500 5.8759e-06 + 2.2550 5.8759e-06 + 2.2600 5.8759e-06 + 2.2650 5.8759e-06 + 2.2700 5.8759e-06 + 2.2750 5.8759e-06 + 2.2800 5.8759e-06 + 2.2850 5.8759e-06 + 2.2900 5.8759e-06 + 2.2950 5.8759e-06 + 2.3000 5.8759e-06 + 2.3050 5.8759e-06 + 2.3100 5.8759e-06 + 2.3150 5.8759e-06 + 2.3200 5.8759e-06 + 2.3250 5.8759e-06 + 2.3300 5.8759e-06 + 2.3350 5.8759e-06 + 2.3400 5.8759e-06 + 2.3450 5.8759e-06 + 2.3500 5.8759e-06 + 2.3550 5.8759e-06 + 2.3600 5.8759e-06 + 2.3650 5.8759e-06 + 2.3700 5.8759e-06 + 2.3750 5.8759e-06 + 2.3800 5.8759e-06 + 2.3850 5.8759e-06 + 2.3900 5.8759e-06 + 2.3950 5.8759e-06 + 2.4000 5.8759e-06 + 2.4050 5.8759e-06 + 2.4100 5.8759e-06 + 2.4150 5.8759e-06 + 2.4200 5.8759e-06 + 2.4250 5.8759e-06 + 2.4300 5.8759e-06 + 2.4350 5.8759e-06 + 2.4400 5.8759e-06 + 2.4450 5.8759e-06 + 2.4500 5.8759e-06 + 2.4550 5.8759e-06 + 2.4600 5.8759e-06 + 2.4650 5.8759e-06 + 2.4700 5.8759e-06 + 2.4750 5.8759e-06 + 2.4800 5.8759e-06 + 2.4850 5.8759e-06 + 2.4900 5.8759e-06 + 2.4950 5.8759e-06 + 2.5000 5.8759e-06 + 2.5050 5.8759e-06 + 2.5100 5.8759e-06 + 2.5150 5.8759e-06 + 2.5200 5.8759e-06 + 2.5250 5.8759e-06 + 2.5300 5.8759e-06 + 2.5350 5.8759e-06 + 2.5400 5.8759e-06 + 2.5450 5.8759e-06 + 2.5500 5.8759e-06 + 2.5550 5.8759e-06 + 2.5600 5.8759e-06 + 2.5650 5.8759e-06 + 2.5700 5.8759e-06 + 2.5750 5.8759e-06 + 2.5800 5.8759e-06 + 2.5850 5.8759e-06 + 2.5900 5.8759e-06 + 2.5950 5.8759e-06 + 2.6000 5.8759e-06 + 2.6050 5.8759e-06 + 2.6100 5.8759e-06 + 2.6150 5.8759e-06 + 2.6200 5.8759e-06 + 2.6250 5.8759e-06 + 2.6300 5.8759e-06 + 2.6350 5.8759e-06 + 2.6400 5.8759e-06 + 2.6450 5.8759e-06 + 2.6500 5.8759e-06 + 2.6550 5.8759e-06 + 2.6600 5.8759e-06 + 2.6650 5.8759e-06 + 2.6700 5.8759e-06 + 2.6750 5.8759e-06 + 2.6800 5.8759e-06 + 2.6850 5.8759e-06 + 2.6900 5.8759e-06 + 2.6950 5.8759e-06 + 2.7000 5.8759e-06 + 2.7050 5.8759e-06 + 2.7100 5.8759e-06 + 2.7150 5.8759e-06 + 2.7200 5.8759e-06 + 2.7250 5.8759e-06 + 2.7300 5.8759e-06 + 2.7350 5.8759e-06 + 2.7400 5.8759e-06 + 2.7450 5.8759e-06 + 2.7500 5.8759e-06 + 2.7550 5.8759e-06 + 2.7600 5.8759e-06 + 2.7650 5.8759e-06 + 2.7700 5.8759e-06 + 2.7750 5.8759e-06 + 2.7800 5.8759e-06 + 2.7850 5.8759e-06 + 2.7900 5.8759e-06 + 2.7950 5.8759e-06 + 2.8000 5.8759e-06 + 2.8050 5.8759e-06 + 2.8100 5.8759e-06 + 2.8150 5.8759e-06 + 2.8200 5.8759e-06 + 2.8250 5.8759e-06 + 2.8300 5.8759e-06 + 2.8350 5.8759e-06 + 2.8400 5.8759e-06 + 2.8450 5.8759e-06 + 2.8500 5.8759e-06 + 2.8550 5.8759e-06 + 2.8600 5.8759e-06 + 2.8650 5.8759e-06 + 2.8700 5.8759e-06 + 2.8750 5.8759e-06 + 2.8800 5.8759e-06 + 2.8850 5.8759e-06 + 2.8900 5.8759e-06 + 2.8950 5.8759e-06 + 2.9000 5.8759e-06 + 2.9050 5.8759e-06 + 2.9100 5.8759e-06 + 2.9150 5.8759e-06 + 2.9200 5.8759e-06 + 2.9250 5.8759e-06 + 2.9300 5.8759e-06 + 2.9350 5.8759e-06 + 2.9400 5.8759e-06 + 2.9450 5.8759e-06 + 2.9500 5.8759e-06 + 2.9550 5.8759e-06 + 2.9600 5.8759e-06 + 2.9650 5.8759e-06 + 2.9700 5.8759e-06 + 2.9750 5.8759e-06 + 2.9800 5.8759e-06 + 2.9850 5.8759e-06 + 2.9900 5.8759e-06 + 2.9950 5.8759e-06 + 3.0000 5.8759e-06 + 3.0050 5.8759e-06 + 3.0100 5.8759e-06 + 3.0150 5.8759e-06 + 3.0200 5.8759e-06 + 3.0250 5.8759e-06 + 3.0300 5.8759e-06 + 3.0350 5.8759e-06 + 3.0400 5.8759e-06 + 3.0450 5.8759e-06 + 3.0500 5.8759e-06 + 3.0550 5.8759e-06 + 3.0600 5.8759e-06 + 3.0650 5.8759e-06 + 3.0700 5.8759e-06 + 3.0750 5.8759e-06 + 3.0800 5.8759e-06 + 3.0850 5.8759e-06 + 3.0900 5.8759e-06 + 3.0950 5.8759e-06 + 3.1000 5.8759e-06 + 3.1050 5.8759e-06 + 3.1100 5.8759e-06 + 3.1150 5.8759e-06 + 3.1200 5.8759e-06 + 3.1250 5.8759e-06 + 3.1300 5.8759e-06 + 3.1350 5.8759e-06 + 3.1400 5.8759e-06 + 3.1450 5.8759e-06 + 3.1500 5.8759e-06 + 3.1550 5.8759e-06 + 3.1600 5.8759e-06 + 3.1650 5.8759e-06 + 3.1700 5.8759e-06 + 3.1750 5.8759e-06 + 3.1800 5.8759e-06 + 3.1850 5.8759e-06 + 3.1900 5.8759e-06 + 3.1950 5.8759e-06 + 3.2000 5.8759e-06 + 3.2050 5.8759e-06 + 3.2100 5.8759e-06 + 3.2150 5.8759e-06 + 3.2200 5.8758e-06 + 3.2250 5.8758e-06 + 3.2300 5.8758e-06 + 3.2350 5.8757e-06 + 3.2400 5.8757e-06 + 3.2450 5.8756e-06 + 3.2500 5.8754e-06 + 3.2550 5.8753e-06 + 3.2600 5.8750e-06 + 3.2650 5.8747e-06 + 3.2700 5.8743e-06 + 3.2750 5.8737e-06 + 3.2800 5.8729e-06 + 3.2850 5.8719e-06 + 3.2900 5.8707e-06 + 3.2950 5.8691e-06 + 3.3000 5.8670e-06 + 3.3050 5.8645e-06 + 3.3100 5.8613e-06 + 3.3150 5.8574e-06 + 3.3200 5.8526e-06 + 3.3250 5.8467e-06 + 3.3300 5.8397e-06 + 3.3350 5.8313e-06 + 3.3400 5.8213e-06 + 3.3450 5.8096e-06 + 3.3500 5.7960e-06 + 3.3550 5.7802e-06 + 3.3600 5.7622e-06 + 3.3650 5.7416e-06 + 3.3700 5.7184e-06 + 3.3750 5.6925e-06 + 3.3800 5.6638e-06 + 3.3850 5.6322e-06 + 3.3900 5.5977e-06 + 3.3950 5.5604e-06 + 3.4000 5.5204e-06 + 3.4050 5.4778e-06 + 3.4100 5.4329e-06 + 3.4150 5.3859e-06 + 3.4200 5.3371e-06 + 3.4250 5.2869e-06 + 3.4300 5.2356e-06 + 3.4350 5.1836e-06 + 3.4400 5.1315e-06 + 3.4450 5.0796e-06 + 3.4500 5.0283e-06 + 3.4550 4.9780e-06 + 3.4600 4.9292e-06 + 3.4650 4.8822e-06 + 3.4700 4.8373e-06 + 3.4750 4.7947e-06 + 3.4800 4.7547e-06 + 3.4850 4.7174e-06 + 3.4900 4.6830e-06 + 3.4950 4.6514e-06 + 3.5000 4.6226e-06 + 3.5050 4.5967e-06 + 3.5100 4.5735e-06 + 3.5150 4.5530e-06 + 3.5200 4.5349e-06 + 3.5250 4.5192e-06 + 3.5300 4.5055e-06 + 3.5350 4.4938e-06 + 3.5400 4.4839e-06 + 3.5450 4.4755e-06 + 3.5500 4.4686e-06 + 3.5550 4.4628e-06 + 3.5600 4.4582e-06 + 3.5650 4.4545e-06 + 3.5700 4.4516e-06 + 3.5750 4.4496e-06 + 3.5800 4.4482e-06 + 3.5850 4.4476e-06 + 3.5900 4.4478e-06 + 3.5950 4.4489e-06 + 3.6000 4.4510e-06 + 3.6050 4.4543e-06 + 3.6100 4.4593e-06 + 3.6150 4.4663e-06 + 3.6200 4.4759e-06 + 3.6250 4.4888e-06 + 3.6300 4.5060e-06 + 3.6350 4.5284e-06 + 3.6400 4.5575e-06 + 3.6450 4.5947e-06 + 3.6500 4.6418e-06 + 3.6550 4.7010e-06 + 3.6600 4.7745e-06 + 3.6650 4.8649e-06 + 3.6700 4.9749e-06 + 3.6750 5.1075e-06 + 3.6800 5.2655e-06 + 3.6850 5.4520e-06 + 3.6900 5.6698e-06 + 3.6950 5.9215e-06 + 3.7000 6.2093e-06 + 3.7050 6.5347e-06 + 3.7100 6.8986e-06 + 3.7150 7.3010e-06 + 3.7200 7.7409e-06 + 3.7250 8.2160e-06 + 3.7300 8.7229e-06 + 3.7350 9.2568e-06 + 3.7400 9.8119e-06 + 3.7450 1.0381e-05 + 3.7500 1.0955e-05 + 3.7550 1.1527e-05 + 3.7600 1.2084e-05 + 3.7650 1.2619e-05 + 3.7700 1.3120e-05 + 3.7750 1.3578e-05 + 3.7800 1.3983e-05 + 3.7850 1.4328e-05 + 3.7900 1.4606e-05 + 3.7950 1.4812e-05 + 3.8000 1.4942e-05 + 3.8050 1.4997e-05 + 3.8100 1.4975e-05 + 3.8150 1.4880e-05 + 3.8200 1.4716e-05 + 3.8250 1.4489e-05 + 3.8300 1.4208e-05 + 3.8350 1.3879e-05 + 3.8400 1.3513e-05 + 3.8450 1.3119e-05 + 3.8500 1.2706e-05 + 3.8550 1.2284e-05 + 3.8600 1.1861e-05 + 3.8650 1.1446e-05 + 3.8700 1.1043e-05 + 3.8750 1.0661e-05 + 3.8800 1.0302e-05 + 3.8850 9.9695e-06 + 3.8900 9.6665e-06 + 3.8950 9.3937e-06 + 3.9000 9.1510e-06 + 3.9050 8.9379e-06 + 3.9100 8.7530e-06 + 3.9150 8.5945e-06 + 3.9200 8.4601e-06 + 3.9250 8.3476e-06 + 3.9300 8.2545e-06 + 3.9350 8.1783e-06 + 3.9400 8.1166e-06 + 3.9450 8.0673e-06 + 3.9500 8.0284e-06 + 3.9550 7.9979e-06 + 3.9600 7.9744e-06 + 3.9650 7.9565e-06 + 3.9700 7.9429e-06 + 3.9750 7.9329e-06 + 3.9800 7.9254e-06 + 3.9850 7.9201e-06 + 3.9900 7.9162e-06 + 3.9950 7.9135e-06 + 4.0000 7.9116e-06 + 4.0050 7.9102e-06 + 4.0100 7.9094e-06 + 4.0150 7.9088e-06 + 4.0200 7.9084e-06 + 4.0250 7.9081e-06 + 4.0300 7.9080e-06 + 4.0350 7.9079e-06 + 4.0400 7.9078e-06 + 4.0450 7.9078e-06 + 4.0500 7.9078e-06 + 4.0550 7.9078e-06 + 4.0600 7.9078e-06 + 4.0650 7.9078e-06 + 4.0700 7.9077e-06 + 4.0750 7.9078e-06 + 4.0800 7.9078e-06 + 4.0850 7.9078e-06 + 4.0900 7.9078e-06 + 4.0950 7.9078e-06 + 4.1000 7.9078e-06 + 4.1050 7.9078e-06 + 4.1100 7.9078e-06 + 4.1150 7.9078e-06 + 4.1200 7.9078e-06 + 4.1250 7.9078e-06 + 4.1300 7.9078e-06 + 4.1350 7.9078e-06 + 4.1400 7.9078e-06 + 4.1450 7.9078e-06 + 4.1500 7.9078e-06 + 4.1550 7.9078e-06 + 4.1600 7.9079e-06 + 4.1650 7.9079e-06 + 4.1700 7.9080e-06 + 4.1750 7.9082e-06 + 4.1800 7.9084e-06 + 4.1850 7.9087e-06 + 4.1900 7.9091e-06 + 4.1950 7.9098e-06 + 4.2000 7.9108e-06 + 4.2050 7.9121e-06 + 4.2100 7.9141e-06 + 4.2150 7.9169e-06 + 4.2200 7.9209e-06 + 4.2250 7.9264e-06 + 4.2300 7.9340e-06 + 4.2350 7.9444e-06 + 4.2400 7.9586e-06 + 4.2450 7.9777e-06 + 4.2500 8.0033e-06 + 4.2550 8.0372e-06 + 4.2600 8.0818e-06 + 4.2650 8.1399e-06 + 4.2700 8.2152e-06 + 4.2750 8.3118e-06 + 4.2800 8.4346e-06 + 4.2850 8.5898e-06 + 4.2900 8.7839e-06 + 4.2950 9.0250e-06 + 4.3000 9.3219e-06 + 4.3050 9.6846e-06 + 4.3100 1.0124e-05 + 4.3150 1.0652e-05 + 4.3200 1.1281e-05 + 4.3250 1.2024e-05 + 4.3300 1.2896e-05 + 4.3350 1.3910e-05 + 4.3400 1.5080e-05 + 4.3450 1.6419e-05 + 4.3500 1.7939e-05 + 4.3550 1.9651e-05 + 4.3600 2.1563e-05 + 4.3650 2.3682e-05 + 4.3700 2.6013e-05 + 4.3750 2.8555e-05 + 4.3800 3.1306e-05 + 4.3850 3.4262e-05 + 4.3900 3.7412e-05 + 4.3950 4.0744e-05 + 4.4000 4.4242e-05 + 4.4050 4.7886e-05 + 4.4100 5.1656e-05 + 4.4150 5.5527e-05 + 4.4200 5.9475e-05 + 4.4250 6.3472e-05 + 4.4300 6.7494e-05 + 4.4350 7.1513e-05 + 4.4400 7.5505e-05 + 4.4450 7.9447e-05 + 4.4500 8.3318e-05 + 4.4550 8.7098e-05 + 4.4600 9.0773e-05 + 4.4650 9.4330e-05 + 4.4700 9.7760e-05 + 4.4750 0.00010106 + 4.4800 0.00010422 + 4.4850 0.00010724 + 4.4900 0.00011013 + 4.4950 0.00011290 + 4.5000 0.00011554 + 4.5050 0.00011807 + 4.5100 0.00012050 + 4.5150 0.00012283 + 4.5200 0.00012508 + 4.5250 0.00012726 + 4.5300 0.00012938 + 4.5350 0.00013145 + 4.5400 0.00013348 + 4.5450 0.00013548 + 4.5500 0.00013745 + 4.5550 0.00013941 + 4.5600 0.00014136 + 4.5650 0.00014331 + 4.5700 0.00014526 + 4.5750 0.00014722 + 4.5800 0.00014918 + 4.5850 0.00015116 + 4.5900 0.00015316 + 4.5950 0.00015518 + 4.6000 0.00015721 + 4.6050 0.00015927 + 4.6100 0.00016136 + 4.6150 0.00016346 + 4.6200 0.00016560 + 4.6250 0.00016775 + 4.6300 0.00016994 + 4.6350 0.00017215 + 4.6400 0.00017440 + 4.6450 0.00017667 + 4.6500 0.00017897 + 4.6550 0.00018130 + 4.6600 0.00018366 + 4.6650 0.00018605 + 4.6700 0.00018847 + 4.6750 0.00019092 + 4.6800 0.00019340 + 4.6850 0.00019592 + 4.6900 0.00019847 + 4.6950 0.00020106 + 4.7000 0.00020368 + 4.7050 0.00020633 + 4.7100 0.00020903 + 4.7150 0.00021177 + 4.7200 0.00021455 + 4.7250 0.00021739 + 4.7300 0.00022028 + 4.7350 0.00022326 + 4.7400 0.00022633 + 4.7450 0.00022952 + 4.7500 0.00023289 + 4.7550 0.00023647 + 4.7600 0.00024037 + 4.7650 0.00024469 + 4.7700 0.00024959 + 4.7750 0.00025530 + 4.7800 0.00026212 + 4.7850 0.00027044 + 4.7900 0.00028079 + 4.7950 0.00029388 + 4.8000 0.00031062 + 4.8050 0.00033218 + 4.8100 0.00036004 + 4.8150 0.00039608 + 4.8200 0.00044263 + 4.8250 0.00050252 + 4.8300 0.00057923 + 4.8350 0.00067688 + 4.8400 0.00080036 + 4.8450 0.00095533 + 4.8500 0.0011483 + 4.8550 0.0013866 + 4.8600 0.0016783 + 4.8650 0.0020323 + 4.8700 0.0024579 + 4.8750 0.0029649 + 4.8800 0.0035631 + 4.8850 0.0042621 + 4.8900 0.0050707 + 4.8950 0.0059970 + 4.9000 0.0070469 + 4.9050 0.0082245 + 4.9100 0.0095312 + 4.9150 0.010965 + 4.9200 0.012520 + 4.9250 0.014187 + 4.9300 0.015951 + 4.9350 0.017795 + 4.9400 0.019695 + 4.9450 0.021624 + 4.9500 0.023552 + 4.9550 0.025446 + 4.9600 0.027270 + 4.9650 0.028989 + 4.9700 0.030565 + 4.9750 0.031964 + 4.9800 0.033155 + 4.9850 0.034110 + 4.9900 0.034805 + 4.9950 0.035223 + 5.0000 0.035354 + 5.0050 0.035195 + 5.0100 0.034749 + 5.0150 0.034027 + 5.0200 0.033046 + 5.0250 0.031830 + 5.0300 0.030406 + 5.0350 0.028808 + 5.0400 0.027069 + 5.0450 0.025225 + 5.0500 0.023314 + 5.0550 0.021370 + 5.0600 0.019427 + 5.0650 0.017515 + 5.0700 0.015662 + 5.0750 0.013889 + 5.0800 0.012215 + 5.0850 0.010655 + 5.0900 0.0092175 + 5.0950 0.0079081 + 5.1000 0.0067289 + 5.1050 0.0056784 + 5.1100 0.0047524 + 5.1150 0.0039446 + 5.1200 0.0032472 + 5.1250 0.0026510 + 5.1300 0.0021465 + 5.1350 0.0017236 + 5.1400 0.0013727 + 5.1450 0.0010842 + 5.1500 0.00084928 + 5.1550 0.00065978 + 5.1600 0.00050834 + 5.1650 0.00038843 + 5.1700 0.00029436 + 5.1750 0.00022123 + 5.1800 0.00016490 + 5.1850 0.00012190 + 5.1900 8.9373e-05 + 5.1950 6.4984e-05 + 5.2000 4.6860e-05 + 5.2050 3.3513e-05 + 5.2100 2.3770e-05 + 5.2150 1.6721e-05 + 5.2200 1.1665e-05 + 5.2250 8.0707e-06 + 5.2300 5.5379e-06 + 5.2350 3.7687e-06 + 5.2400 2.5436e-06 + 5.2450 1.7025e-06 + 5.2500 1.1302e-06 + 5.2550 7.4409e-07 + 5.2600 4.8585e-07 + 5.2650 3.1462e-07 + 5.2700 2.0205e-07 + 5.2750 1.2869e-07 + 5.2800 8.1293e-08 + 5.2850 5.0927e-08 + 5.2900 3.1642e-08 + 5.2950 1.9497e-08 + 5.3000 1.1915e-08 + 5.3050 7.2213e-09 + 5.3100 4.3406e-09 + 5.3150 2.5875e-09 + 5.3200 1.5298e-09 + 5.3250 8.9695e-10 + 5.3300 5.2158e-10 + 5.3350 3.0080e-10 + 5.3400 1.7204e-10 + 5.3450 9.7591e-11 + 5.3500 5.4902e-11 + 5.3550 3.0631e-11 + 5.3600 1.6949e-11 + 5.3650 9.3012e-12 + 5.3700 5.0621e-12 + 5.3750 2.7323e-12 + 5.3800 1.4626e-12 + 5.3850 7.7642e-13 + 5.3900 0.00000 + 5.3950 0.00000 + 5.4000 0.00000 + 5.4050 0.00000 + 5.4100 0.00000 + 5.4150 0.00000 + 5.4200 0.00000 + 5.4250 0.00000 + 5.4300 0.00000 + 5.4350 0.00000 + 5.4400 0.00000 + 5.4450 0.00000 + 5.4500 0.00000 + 5.4550 0.00000 + 5.4600 0.00000 + 5.4650 0.00000 + 5.4700 0.00000 + 5.4750 0.00000 + 5.4800 0.00000 + 5.4850 0.00000 + 5.4900 0.00000 + 5.4950 0.00000 + 5.5000 0.00000 + 5.5050 0.00000 + 5.5100 0.00000 + 5.5150 0.00000 + 5.5200 0.00000 + 5.5250 0.00000 + 5.5300 0.00000 + 5.5350 0.00000 + 5.5400 0.00000 + 5.5450 0.00000 + 5.5500 0.00000 + 5.5550 0.00000 + 5.5600 0.00000 + 5.5650 0.00000 + 5.5700 0.00000 + 5.5750 0.00000 + 5.5800 0.00000 + 5.5850 0.00000 + 5.5900 0.00000 + 5.5950 0.00000 + 5.6000 0.00000 + 5.6050 0.00000 + 5.6100 0.00000 + 5.6150 0.00000 + 5.6200 0.00000 + 5.6250 0.00000 + 5.6300 0.00000 + 5.6350 0.00000 + 5.6400 0.00000 + 5.6450 0.00000 + 5.6500 0.00000 + 5.6550 0.00000 + 5.6600 0.00000 + 5.6650 0.00000 + 5.6700 0.00000 + 5.6750 0.00000 + 5.6800 0.00000 + 5.6850 0.00000 + 5.6900 0.00000 + 5.6950 0.00000 + 5.7000 0.00000 + 5.7050 0.00000 + 5.7100 0.00000 + 5.7150 0.00000 + 5.7200 0.00000 + 5.7250 0.00000 + 5.7300 0.00000 + 5.7350 0.00000 + 5.7400 0.00000 + 5.7450 0.00000 + 5.7500 0.00000 + 5.7550 0.00000 + 5.7600 0.00000 + 5.7650 0.00000 + 5.7700 0.00000 + 5.7750 0.00000 + 5.7800 0.00000 + 5.7850 0.00000 + 5.7900 0.00000 + 5.7950 0.00000 + 5.8000 0.00000 + 5.8050 0.00000 + 5.8100 0.00000 + 5.8150 0.00000 + 5.8200 0.00000 + 5.8250 0.00000 + 5.8300 0.00000 + 5.8350 0.00000 + 5.8400 0.00000 + 5.8450 0.00000 + 5.8500 0.00000 + 5.8550 0.00000 + 5.8600 0.00000 + 5.8650 0.00000 + 5.8700 0.00000 + 5.8750 0.00000 + 5.8800 0.00000 + 5.8850 0.00000 + 5.8900 0.00000 + 5.8950 0.00000 + 5.9000 0.00000 + 5.9050 0.00000 + 5.9100 0.00000 + 5.9150 0.00000 + 5.9200 0.00000 + 5.9250 0.00000 + 5.9300 0.00000 + 5.9350 0.00000 + 5.9400 0.00000 + 5.9450 0.00000 + 5.9500 0.00000 + 5.9550 0.00000 + 5.9600 0.00000 + 5.9650 0.00000 + 5.9700 0.00000 + 5.9750 0.00000 + 5.9800 0.00000 + 5.9850 0.00000 + 5.9900 0.00000 + 5.9950 0.00000 + 6.0000 0.00000 + 6.0050 0.00000 + 6.0100 0.00000 + 6.0150 0.00000 + 6.0200 0.00000 + 6.0250 0.00000 + 6.0300 0.00000 + 6.0350 0.00000 + 6.0400 0.00000 + 6.0450 0.00000 + 6.0500 0.00000 + 6.0550 0.00000 + 6.0600 0.00000 + 6.0650 0.00000 + 6.0700 0.00000 + 6.0750 0.00000 + 6.0800 0.00000 + 6.0850 0.00000 + 6.0900 0.00000 + 6.0950 0.00000 + 6.1000 0.00000 + 6.1050 0.00000 + 6.1100 0.00000 + 6.1150 0.00000 + 6.1200 0.00000 + 6.1250 0.00000 + 6.1300 0.00000 + 6.1350 0.00000 + 6.1400 0.00000 + 6.1450 0.00000 + 6.1500 0.00000 + 6.1550 0.00000 + 6.1600 0.00000 + 6.1650 0.00000 + 6.1700 0.00000 + 6.1750 0.00000 + 6.1800 0.00000 + 6.1850 0.00000 + 6.1900 0.00000 + 6.1950 0.00000 + 6.2000 0.00000 + 6.2050 0.00000 + 6.2100 0.00000 + 6.2150 0.00000 + 6.2200 0.00000 + 6.2250 0.00000 + 6.2300 0.00000 + 6.2350 0.00000 + 6.2400 0.00000 + 6.2450 0.00000 + 6.2500 0.00000 + 6.2550 0.00000 + 6.2600 0.00000 + 6.2650 0.00000 + 6.2700 0.00000 + 6.2750 0.00000 + 6.2800 0.00000 + 6.2850 0.00000 + 6.2900 0.00000 + 6.2950 0.00000 + 6.3000 0.00000 + 6.3050 0.00000 + 6.3100 0.00000 + 6.3150 0.00000 + 6.3200 0.00000 + 6.3250 0.00000 + 6.3300 0.00000 + 6.3350 0.00000 + 6.3400 0.00000 + 6.3450 0.00000 + 6.3500 0.00000 + 6.3550 0.00000 + 6.3600 0.00000 + 6.3650 0.00000 + 6.3700 0.00000 + 6.3750 0.00000 + 6.3800 0.00000 + 6.3850 0.00000 + 6.3900 0.00000 + 6.3950 0.00000 + 6.4000 0.00000 + 6.4050 0.00000 + 6.4100 0.00000 + 6.4150 0.00000 + 6.4200 0.00000 + 6.4250 0.00000 + 6.4300 0.00000 + 6.4350 0.00000 + 6.4400 0.00000 + 6.4450 0.00000 + 6.4500 0.00000 + 6.4550 0.00000 + 6.4600 0.00000 + 6.4650 0.00000 + 6.4700 0.00000 + 6.4750 0.00000 + 6.4800 0.00000 + 6.4850 0.00000 + 6.4900 0.00000 + 6.4950 0.00000 + 6.5000 0.00000 + 6.5050 0.00000 + 6.5100 0.00000 + 6.5150 0.00000 + 6.5200 0.00000 + 6.5250 0.00000 + 6.5300 0.00000 + 6.5350 0.00000 + 6.5400 0.00000 + 6.5450 0.00000 + 6.5500 0.00000 + 6.5550 0.00000 + 6.5600 0.00000 + 6.5650 0.00000 + 6.5700 0.00000 + 6.5750 0.00000 + 6.5800 0.00000 + 6.5850 0.00000 + 6.5900 0.00000 + 6.5950 0.00000 + 6.6000 0.00000 + 6.6050 0.00000 + 6.6100 0.00000 + 6.6150 0.00000 + 6.6200 0.00000 + 6.6250 0.00000 + 6.6300 0.00000 + 6.6350 0.00000 + 6.6400 0.00000 + 6.6450 0.00000 + 6.6500 0.00000 + 6.6550 0.00000 + 6.6600 0.00000 + 6.6650 0.00000 + 6.6700 0.00000 + 6.6750 0.00000 + 6.6800 0.00000 + 6.6850 0.00000 + 6.6900 0.00000 + 6.6950 0.00000 + 6.7000 0.00000 + 6.7050 0.00000 + 6.7100 0.00000 + 6.7150 0.00000 + 6.7200 0.00000 + 6.7250 0.00000 + 6.7300 0.00000 + 6.7350 0.00000 + 6.7400 0.00000 + 6.7450 0.00000 + 6.7500 0.00000 + 6.7550 0.00000 + 6.7600 0.00000 + 6.7650 0.00000 + 6.7700 0.00000 + 6.7750 0.00000 + 6.7800 0.00000 + 6.7850 0.00000 + 6.7900 0.00000 + 6.7950 0.00000 + 6.8000 0.00000 + 6.8050 0.00000 + 6.8100 0.00000 + 6.8150 0.00000 + 6.8200 0.00000 + 6.8250 0.00000 + 6.8300 0.00000 + 6.8350 0.00000 + 6.8400 0.00000 + 6.8450 0.00000 + 6.8500 0.00000 + 6.8550 0.00000 + 6.8600 0.00000 + 6.8650 0.00000 + 6.8700 0.00000 + 6.8750 0.00000 + 6.8800 0.00000 + 6.8850 0.00000 + 6.8900 0.00000 + 6.8950 0.00000 + 6.9000 0.00000 + 6.9050 0.00000 + 6.9100 0.00000 + 6.9150 0.00000 + 6.9200 0.00000 + 6.9250 0.00000 + 6.9300 0.00000 + 6.9350 0.00000 + 6.9400 0.00000 + 6.9450 0.00000 + 6.9500 0.00000 + 6.9550 0.00000 + 6.9600 0.00000 + 6.9650 0.00000 + 6.9700 0.00000 + 6.9750 0.00000 + 6.9800 0.00000 + 6.9850 0.00000 + 6.9900 0.00000 + 6.9950 0.00000 + 7.0000 0.00000 + 7.0050 0.00000 + 7.0100 0.00000 + 7.0150 0.00000 + 7.0200 0.00000 + 7.0250 0.00000 + 7.0300 0.00000 + 7.0350 0.00000 + 7.0400 0.00000 + 7.0450 0.00000 + 7.0500 0.00000 + 7.0550 0.00000 + 7.0600 0.00000 + 7.0650 0.00000 + 7.0700 0.00000 + 7.0750 0.00000 + 7.0800 0.00000 + 7.0850 0.00000 + 7.0900 0.00000 + 7.0950 0.00000 + 7.1000 0.00000 + 7.1050 0.00000 + 7.1100 0.00000 + 7.1150 0.00000 + 7.1200 0.00000 + 7.1250 0.00000 + 7.1300 0.00000 + 7.1350 0.00000 + 7.1400 0.00000 + 7.1450 0.00000 + 7.1500 0.00000 + 7.1550 0.00000 + 7.1600 0.00000 + 7.1650 0.00000 + 7.1700 0.00000 + 7.1750 0.00000 + 7.1800 0.00000 + 7.1850 0.00000 + 7.1900 0.00000 + 7.1950 0.00000 + 7.2000 0.00000 + 7.2050 0.00000 + 7.2100 0.00000 + 7.2150 0.00000 + 7.2200 0.00000 + 7.2250 0.00000 + 7.2300 0.00000 + 7.2350 0.00000 + 7.2400 0.00000 + 7.2450 0.00000 + 7.2500 0.00000 + 7.2550 0.00000 + 7.2600 0.00000 + 7.2650 0.00000 + 7.2700 0.00000 + 7.2750 0.00000 + 7.2800 0.00000 + 7.2850 0.00000 + 7.2900 0.00000 + 7.2950 0.00000 + 7.3000 0.00000 + 7.3050 0.00000 + 7.3100 0.00000 + 7.3150 0.00000 + 7.3200 0.00000 + 7.3250 0.00000 + 7.3300 0.00000 + 7.3350 0.00000 + 7.3400 0.00000 + 7.3450 0.00000 + 7.3500 0.00000 + 7.3550 0.00000 + 7.3600 0.00000 + 7.3650 0.00000 + 7.3700 0.00000 + 7.3750 0.00000 + 7.3800 0.00000 + 7.3850 0.00000 + 7.3900 0.00000 + 7.3950 0.00000 + 7.4000 0.00000 + 7.4050 0.00000 + 7.4100 0.00000 + 7.4150 0.00000 + 7.4200 0.00000 + 7.4250 0.00000 + 7.4300 0.00000 + 7.4350 0.00000 + 7.4400 0.00000 + 7.4450 0.00000 + 7.4500 0.00000 + 7.4550 0.00000 + 7.4600 0.00000 + 7.4650 0.00000 + 7.4700 0.00000 + 7.4750 0.00000 + 7.4800 0.00000 + 7.4850 0.00000 + 7.4900 0.00000 + 7.4950 0.00000 + 7.5000 0.00000 + 7.5050 0.00000 + 7.5100 0.00000 + 7.5150 0.00000 + 7.5200 0.00000 + 7.5250 0.00000 + 7.5300 0.00000 + 7.5350 0.00000 + 7.5400 0.00000 + 7.5450 0.00000 + 7.5500 0.00000 + 7.5550 0.00000 + 7.5600 0.00000 + 7.5650 0.00000 + 7.5700 0.00000 + 7.5750 0.00000 + 7.5800 0.00000 + 7.5850 0.00000 + 7.5900 0.00000 + 7.5950 0.00000 + 7.6000 0.00000 + 7.6050 0.00000 + 7.6100 0.00000 + 7.6150 0.00000 + 7.6200 0.00000 + 7.6250 0.00000 + 7.6300 0.00000 + 7.6350 0.00000 + 7.6400 0.00000 + 7.6450 0.00000 + 7.6500 0.00000 + 7.6550 0.00000 + 7.6600 0.00000 + 7.6650 0.00000 + 7.6700 0.00000 + 7.6750 0.00000 + 7.6800 0.00000 + 7.6850 0.00000 + 7.6900 0.00000 + 7.6950 0.00000 + 7.7000 0.00000 + 7.7050 0.00000 + 7.7100 0.00000 + 7.7150 0.00000 + 7.7200 0.00000 + 7.7250 0.00000 + 7.7300 0.00000 + 7.7350 0.00000 + 7.7400 0.00000 + 7.7450 0.00000 + 7.7500 0.00000 + 7.7550 0.00000 + 7.7600 0.00000 + 7.7650 0.00000 + 7.7700 0.00000 + 7.7750 0.00000 + 7.7800 0.00000 + 7.7850 0.00000 + 7.7900 0.00000 + 7.7950 0.00000 + 7.8000 0.00000 + 7.8050 0.00000 + 7.8100 0.00000 + 7.8150 0.00000 + 7.8200 0.00000 + 7.8250 0.00000 + 7.8300 0.00000 + 7.8350 0.00000 + 7.8400 0.00000 + 7.8450 0.00000 + 7.8500 0.00000 + 7.8550 0.00000 + 7.8600 0.00000 + 7.8650 0.00000 + 7.8700 0.00000 + 7.8750 0.00000 + 7.8800 0.00000 + 7.8850 0.00000 + 7.8900 0.00000 + 7.8950 0.00000 + 7.9000 0.00000 + 7.9050 0.00000 + 7.9100 0.00000 + 7.9150 0.00000 + 7.9200 0.00000 + 7.9250 0.00000 + 7.9300 0.00000 + 7.9350 0.00000 + 7.9400 0.00000 + 7.9450 0.00000 + 7.9500 0.00000 + 7.9550 0.00000 + 7.9600 0.00000 + 7.9650 0.00000 + 7.9700 0.00000 + 7.9750 0.00000 + 7.9800 0.00000 + 7.9850 0.00000 + 7.9900 0.00000 + 7.9950 0.00000 + 8.0000 0.00000 + 8.0050 0.00000 + 8.0100 0.00000 + 8.0150 0.00000 + 8.0200 0.00000 + 8.0250 0.00000 + 8.0300 0.00000 + 8.0350 0.00000 + 8.0400 0.00000 + 8.0450 0.00000 + 8.0500 0.00000 + 8.0550 0.00000 + 8.0600 0.00000 + 8.0650 0.00000 + 8.0700 0.00000 + 8.0750 0.00000 + 8.0800 0.00000 + 8.0850 0.00000 + 8.0900 0.00000 + 8.0950 0.00000 + 8.1000 0.00000 + 8.1050 0.00000 + 8.1100 0.00000 + 8.1150 0.00000 + 8.1200 0.00000 + 8.1250 0.00000 + 8.1300 0.00000 + 8.1350 0.00000 + 8.1400 0.00000 + 8.1450 0.00000 + 8.1500 0.00000 + 8.1550 0.00000 + 8.1600 0.00000 + 8.1650 0.00000 + 8.1700 0.00000 + 8.1750 0.00000 + 8.1800 0.00000 + 8.1850 0.00000 + 8.1900 0.00000 + 8.1950 0.00000 + 8.2000 0.00000 + 8.2050 0.00000 + 8.2100 0.00000 + 8.2150 0.00000 + 8.2200 0.00000 + 8.2250 0.00000 + 8.2300 0.00000 + 8.2350 0.00000 + 8.2400 0.00000 + 8.2450 0.00000 + 8.2500 0.00000 + 8.2550 0.00000 + 8.2600 0.00000 + 8.2650 0.00000 + 8.2700 0.00000 + 8.2750 0.00000 + 8.2800 0.00000 + 8.2850 0.00000 + 8.2900 0.00000 + 8.2950 0.00000 + 8.3000 0.00000 + 8.3050 0.00000 + 8.3100 0.00000 + 8.3150 0.00000 + 8.3200 0.00000 + 8.3250 0.00000 + 8.3300 0.00000 + 8.3350 0.00000 + 8.3400 0.00000 + 8.3450 0.00000 + 8.3500 0.00000 + 8.3550 0.00000 + 8.3600 0.00000 + 8.3650 0.00000 + 8.3700 0.00000 + 8.3750 0.00000 + 8.3800 0.00000 + 8.3850 0.00000 + 8.3900 0.00000 + 8.3950 0.00000 + 8.4000 0.00000 + 8.4050 0.00000 + 8.4100 0.00000 + 8.4150 0.00000 + 8.4200 0.00000 + 8.4250 0.00000 + 8.4300 0.00000 + 8.4350 0.00000 + 8.4400 0.00000 + 8.4450 0.00000 + 8.4500 0.00000 + 8.4550 0.00000 + 8.4600 0.00000 + 8.4650 0.00000 + 8.4700 0.00000 + 8.4750 0.00000 + 8.4800 0.00000 + 8.4850 0.00000 + 8.4900 0.00000 + 8.4950 0.00000 + 8.5000 0.00000 + 8.5050 0.00000 + 8.5100 0.00000 + 8.5150 0.00000 + 8.5200 0.00000 + 8.5250 0.00000 + 8.5300 0.00000 + 8.5350 0.00000 + 8.5400 0.00000 + 8.5450 0.00000 + 8.5500 0.00000 + 8.5550 0.00000 + 8.5600 0.00000 + 8.5650 0.00000 + 8.5700 0.00000 + 8.5750 0.00000 + 8.5800 0.00000 + 8.5850 0.00000 + 8.5900 0.00000 + 8.5950 0.00000 + 8.6000 0.00000 + 8.6050 0.00000 + 8.6100 0.00000 + 8.6150 0.00000 + 8.6200 0.00000 + 8.6250 0.00000 + 8.6300 0.00000 + 8.6350 0.00000 + 8.6400 0.00000 + 8.6450 0.00000 + 8.6500 0.00000 + 8.6550 0.00000 + 8.6600 0.00000 + 8.6650 0.00000 + 8.6700 0.00000 + 8.6750 0.00000 + 8.6800 0.00000 + 8.6850 0.00000 + 8.6900 0.00000 + 8.6950 0.00000 + 8.7000 0.00000 + 8.7050 0.00000 + 8.7100 0.00000 + 8.7150 0.00000 + 8.7200 0.00000 + 8.7250 0.00000 + 8.7300 0.00000 + 8.7350 0.00000 + 8.7400 0.00000 + 8.7450 0.00000 + 8.7500 0.00000 + 8.7550 0.00000 + 8.7600 0.00000 + 8.7650 0.00000 + 8.7700 0.00000 + 8.7750 0.00000 + 8.7800 0.00000 + 8.7850 0.00000 + 8.7900 0.00000 + 8.7950 0.00000 + 8.8000 0.00000 + 8.8050 0.00000 + 8.8100 0.00000 + 8.8150 0.00000 + 8.8200 0.00000 + 8.8250 0.00000 + 8.8300 0.00000 + 8.8350 0.00000 + 8.8400 0.00000 + 8.8450 0.00000 + 8.8500 0.00000 + 8.8550 0.00000 + 8.8600 0.00000 + 8.8650 0.00000 + 8.8700 0.00000 + 8.8750 0.00000 + 8.8800 0.00000 + 8.8850 0.00000 + 8.8900 0.00000 + 8.8950 0.00000 + 8.9000 0.00000 + 8.9050 0.00000 + 8.9100 0.00000 + 8.9150 0.00000 + 8.9200 0.00000 + 8.9250 0.00000 + 8.9300 0.00000 + 8.9350 0.00000 + 8.9400 0.00000 + 8.9450 0.00000 + 8.9500 0.00000 + 8.9550 0.00000 + 8.9600 0.00000 + 8.9650 0.00000 + 8.9700 0.00000 + 8.9750 0.00000 + 8.9800 0.00000 + 8.9850 0.00000 + 8.9900 0.00000 + 8.9950 0.00000 + 9.0000 0.00000 + 9.0050 0.00000 + 9.0100 0.00000 + 9.0150 0.00000 + 9.0200 0.00000 + 9.0250 0.00000 + 9.0300 0.00000 + 9.0350 0.00000 + 9.0400 0.00000 + 9.0450 0.00000 + 9.0500 0.00000 + 9.0550 0.00000 + 9.0600 0.00000 + 9.0650 0.00000 + 9.0700 0.00000 + 9.0750 0.00000 + 9.0800 0.00000 + 9.0850 0.00000 + 9.0900 0.00000 + 9.0950 0.00000 + 9.1000 0.00000 + 9.1050 0.00000 + 9.1100 0.00000 + 9.1150 0.00000 + 9.1200 0.00000 + 9.1250 0.00000 + 9.1300 0.00000 + 9.1350 0.00000 + 9.1400 0.00000 + 9.1450 0.00000 + 9.1500 0.00000 + 9.1550 0.00000 + 9.1600 0.00000 + 9.1650 0.00000 + 9.1700 0.00000 + 9.1750 0.00000 + 9.1800 0.00000 + 9.1850 0.00000 + 9.1900 0.00000 + 9.1950 0.00000 + 9.2000 0.00000 + 9.2050 0.00000 + 9.2100 0.00000 + 9.2150 0.00000 + 9.2200 0.00000 + 9.2250 0.00000 + 9.2300 0.00000 + 9.2350 0.00000 + 9.2400 0.00000 + 9.2450 0.00000 + 9.2500 0.00000 + 9.2550 0.00000 + 9.2600 0.00000 + 9.2650 0.00000 + 9.2700 0.00000 + 9.2750 0.00000 + 9.2800 0.00000 + 9.2850 0.00000 + 9.2900 0.00000 + 9.2950 0.00000 + 9.3000 0.00000 + 9.3050 0.00000 + 9.3100 0.00000 + 9.3150 0.00000 + 9.3200 0.00000 + 9.3250 0.00000 + 9.3300 0.00000 + 9.3350 0.00000 + 9.3400 0.00000 + 9.3450 0.00000 + 9.3500 0.00000 + 9.3550 0.00000 + 9.3600 0.00000 + 9.3650 0.00000 + 9.3700 0.00000 + 9.3750 0.00000 + 9.3800 0.00000 + 9.3850 0.00000 + 9.3900 0.00000 + 9.3950 0.00000 + 9.4000 0.00000 + 9.4050 0.00000 + 9.4100 0.00000 + 9.4150 0.00000 + 9.4200 0.00000 + 9.4250 0.00000 + 9.4300 0.00000 + 9.4350 0.00000 + 9.4400 0.00000 + 9.4450 0.00000 + 9.4500 0.00000 + 9.4550 0.00000 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 1.5626e-06 + 0.20500 1.6591e-06 + 0.21000 1.7538e-06 + 0.21500 1.8460e-06 + 0.22000 1.9353e-06 + 0.22500 2.0209e-06 + 0.23000 2.1024e-06 + 0.23500 2.1795e-06 + 0.24000 2.2518e-06 + 0.24500 2.3192e-06 + 0.25000 2.3814e-06 + 0.25500 2.4386e-06 + 0.26000 2.4906e-06 + 0.26500 2.5376e-06 + 0.27000 2.5797e-06 + 0.27500 2.6173e-06 + 0.28000 2.6505e-06 + 0.28500 2.6796e-06 + 0.29000 2.7049e-06 + 0.29500 2.7268e-06 + 0.30000 2.7455e-06 + 0.30500 2.7615e-06 + 0.31000 2.7750e-06 + 0.31500 2.7863e-06 + 0.32000 2.7957e-06 + 0.32500 2.8035e-06 + 0.33000 2.8099e-06 + 0.33500 2.8151e-06 + 0.34000 2.8192e-06 + 0.34500 2.8226e-06 + 0.35000 2.8253e-06 + 0.35500 2.8274e-06 + 0.36000 2.8290e-06 + 0.36500 2.8303e-06 + 0.37000 2.8313e-06 + 0.37500 2.8321e-06 + 0.38000 2.8327e-06 + 0.38500 2.8331e-06 + 0.39000 2.8334e-06 + 0.39500 2.8337e-06 + 0.40000 2.8338e-06 + 0.40500 2.8340e-06 + 0.41000 2.8341e-06 + 0.41500 2.8341e-06 + 0.42000 2.8342e-06 + 0.42500 2.8342e-06 + 0.43000 2.8342e-06 + 0.43500 2.8343e-06 + 0.44000 2.8343e-06 + 0.44500 2.8343e-06 + 0.45000 2.8343e-06 + 0.45500 2.8343e-06 + 0.46000 2.8343e-06 + 0.46500 2.8343e-06 + 0.47000 2.8343e-06 + 0.47500 2.8343e-06 + 0.48000 2.8343e-06 + 0.48500 2.8343e-06 + 0.49000 2.8343e-06 + 0.49500 2.8343e-06 + 0.50000 2.8343e-06 + 0.50500 2.8343e-06 + 0.51000 2.8343e-06 + 0.51500 2.8343e-06 + 0.52000 2.8343e-06 + 0.52500 2.8343e-06 + 0.53000 2.8343e-06 + 0.53500 2.8343e-06 + 0.54000 2.8343e-06 + 0.54500 2.8343e-06 + 0.55000 2.8343e-06 + 0.55500 2.8343e-06 + 0.56000 2.8343e-06 + 0.56500 2.8343e-06 + 0.57000 2.8343e-06 + 0.57500 2.8343e-06 + 0.58000 2.8343e-06 + 0.58500 2.8343e-06 + 0.59000 2.8343e-06 + 0.59500 2.8343e-06 + 0.60000 2.8343e-06 + 0.60500 2.8343e-06 + 0.61000 2.8343e-06 + 0.61500 2.8343e-06 + 0.62000 2.8343e-06 + 0.62500 2.8343e-06 + 0.63000 2.8343e-06 + 0.63500 2.8343e-06 + 0.64000 2.8343e-06 + 0.64500 2.8343e-06 + 0.65000 2.8343e-06 + 0.65500 2.8343e-06 + 0.66000 2.8343e-06 + 0.66500 2.8343e-06 + 0.67000 2.8343e-06 + 0.67500 2.8343e-06 + 0.68000 2.8343e-06 + 0.68500 2.8343e-06 + 0.69000 2.8343e-06 + 0.69500 2.8343e-06 + 0.70000 2.8343e-06 + 0.70500 2.8343e-06 + 0.71000 2.8343e-06 + 0.71500 2.8343e-06 + 0.72000 2.8343e-06 + 0.72500 2.8343e-06 + 0.73000 2.8343e-06 + 0.73500 2.8343e-06 + 0.74000 2.8343e-06 + 0.74500 2.8343e-06 + 0.75000 2.8343e-06 + 0.75500 2.8343e-06 + 0.76000 2.8343e-06 + 0.76500 2.8343e-06 + 0.77000 2.8343e-06 + 0.77500 2.8343e-06 + 0.78000 2.8343e-06 + 0.78500 2.8343e-06 + 0.79000 2.8343e-06 + 0.79500 2.8343e-06 + 0.80000 2.8343e-06 + 0.80500 2.8343e-06 + 0.81000 2.8343e-06 + 0.81500 2.8343e-06 + 0.82000 2.8343e-06 + 0.82500 2.8343e-06 + 0.83000 2.8343e-06 + 0.83500 2.8343e-06 + 0.84000 2.8343e-06 + 0.84500 2.8343e-06 + 0.85000 2.8343e-06 + 0.85500 2.8343e-06 + 0.86000 2.8343e-06 + 0.86500 2.8343e-06 + 0.87000 2.8343e-06 + 0.87500 2.8343e-06 + 0.88000 2.8343e-06 + 0.88500 2.8343e-06 + 0.89000 2.8343e-06 + 0.89500 2.8343e-06 + 0.90000 2.8343e-06 + 0.90500 2.8343e-06 + 0.91000 2.8343e-06 + 0.91500 2.8343e-06 + 0.92000 2.8343e-06 + 0.92500 2.8343e-06 + 0.93000 2.8343e-06 + 0.93500 2.8343e-06 + 0.94000 2.8343e-06 + 0.94500 2.8343e-06 + 0.95000 2.8343e-06 + 0.95500 2.8343e-06 + 0.96000 2.8343e-06 + 0.96500 2.8343e-06 + 0.97000 2.8343e-06 + 0.97500 2.8343e-06 + 0.98000 2.8344e-06 + 0.98500 2.8344e-06 + 0.99000 2.8344e-06 + 0.99500 2.8345e-06 + 1.0000 2.8345e-06 + 1.0050 2.8346e-06 + 1.0100 2.8348e-06 + 1.0150 2.8349e-06 + 1.0200 2.8352e-06 + 1.0250 2.8355e-06 + 1.0300 2.8359e-06 + 1.0350 2.8364e-06 + 1.0400 2.8371e-06 + 1.0450 2.8380e-06 + 1.0500 2.8391e-06 + 1.0550 2.8405e-06 + 1.0600 2.8423e-06 + 1.0650 2.8446e-06 + 1.0700 2.8474e-06 + 1.0750 2.8509e-06 + 1.0800 2.8552e-06 + 1.0850 2.8604e-06 + 1.0900 2.8667e-06 + 1.0950 2.8743e-06 + 1.1000 2.8833e-06 + 1.1050 2.8940e-06 + 1.1100 2.9065e-06 + 1.1150 2.9211e-06 + 1.1200 2.9379e-06 + 1.1250 2.9573e-06 + 1.1300 2.9794e-06 + 1.1350 3.0045e-06 + 1.1400 3.0326e-06 + 1.1450 3.0640e-06 + 1.1500 3.0988e-06 + 1.1550 3.1371e-06 + 1.1600 3.1790e-06 + 1.1650 3.2243e-06 + 1.1700 3.2732e-06 + 1.1750 3.3255e-06 + 1.1800 3.3809e-06 + 1.1850 3.4394e-06 + 1.1900 3.5006e-06 + 1.1950 3.5641e-06 + 1.2000 3.6297e-06 + 1.2050 3.6969e-06 + 1.2100 3.7652e-06 + 1.2150 3.8341e-06 + 1.2200 3.9032e-06 + 1.2250 3.9720e-06 + 1.2300 4.0400e-06 + 1.2350 4.1066e-06 + 1.2400 4.1713e-06 + 1.2450 4.2339e-06 + 1.2500 4.2938e-06 + 1.2550 4.3507e-06 + 1.2600 4.4042e-06 + 1.2650 4.4542e-06 + 1.2700 4.5003e-06 + 1.2750 4.5423e-06 + 1.2800 4.5802e-06 + 1.2850 4.6138e-06 + 1.2900 4.6431e-06 + 1.2950 4.6679e-06 + 1.3000 4.6884e-06 + 1.3050 4.7045e-06 + 1.3100 4.7162e-06 + 1.3150 4.7236e-06 + 1.3200 4.7268e-06 + 1.3250 4.7257e-06 + 1.3300 4.7206e-06 + 1.3350 4.7114e-06 + 1.3400 4.6984e-06 + 1.3450 4.6815e-06 + 1.3500 4.6610e-06 + 1.3550 4.6369e-06 + 1.3600 4.6096e-06 + 1.3650 4.5790e-06 + 1.3700 4.5456e-06 + 1.3750 4.5095e-06 + 1.3800 4.4710e-06 + 1.3850 4.4305e-06 + 1.3900 4.3882e-06 + 1.3950 4.3444e-06 + 1.4000 4.2996e-06 + 1.4050 4.2542e-06 + 1.4100 4.2084e-06 + 1.4150 4.1627e-06 + 1.4200 4.1175e-06 + 1.4250 4.0730e-06 + 1.4300 4.0296e-06 + 1.4350 3.9877e-06 + 1.4400 3.9474e-06 + 1.4450 3.9090e-06 + 1.4500 3.8727e-06 + 1.4550 3.8386e-06 + 1.4600 3.8069e-06 + 1.4650 3.7776e-06 + 1.4700 3.7507e-06 + 1.4750 3.7262e-06 + 1.4800 3.7040e-06 + 1.4850 3.6842e-06 + 1.4900 3.6665e-06 + 1.4950 3.6509e-06 + 1.5000 3.6372e-06 + 1.5050 3.6253e-06 + 1.5100 3.6150e-06 + 1.5150 3.6061e-06 + 1.5200 3.5986e-06 + 1.5250 3.5922e-06 + 1.5300 3.5869e-06 + 1.5350 3.5825e-06 + 1.5400 3.5788e-06 + 1.5450 3.5758e-06 + 1.5500 3.5734e-06 + 1.5550 3.5714e-06 + 1.5600 3.5698e-06 + 1.5650 3.5686e-06 + 1.5700 3.5676e-06 + 1.5750 3.5668e-06 + 1.5800 3.5662e-06 + 1.5850 3.5657e-06 + 1.5900 3.5654e-06 + 1.5950 3.5651e-06 + 1.6000 3.5649e-06 + 1.6050 3.5648e-06 + 1.6100 3.5646e-06 + 1.6150 3.5646e-06 + 1.6200 3.5645e-06 + 1.6250 3.5645e-06 + 1.6300 3.5644e-06 + 1.6350 3.5644e-06 + 1.6400 3.5644e-06 + 1.6450 3.5644e-06 + 1.6500 3.5644e-06 + 1.6550 3.5644e-06 + 1.6600 3.5644e-06 + 1.6650 3.5644e-06 + 1.6700 3.5643e-06 + 1.6750 3.5643e-06 + 1.6800 3.5643e-06 + 1.6850 3.5643e-06 + 1.6900 3.5643e-06 + 1.6950 3.5643e-06 + 1.7000 3.5643e-06 + 1.7050 3.5643e-06 + 1.7100 3.5643e-06 + 1.7150 3.5643e-06 + 1.7200 3.5643e-06 + 1.7250 3.5643e-06 + 1.7300 3.5643e-06 + 1.7350 3.5643e-06 + 1.7400 3.5643e-06 + 1.7450 3.5643e-06 + 1.7500 3.5643e-06 + 1.7550 3.5643e-06 + 1.7600 3.5643e-06 + 1.7650 3.5643e-06 + 1.7700 3.5643e-06 + 1.7750 3.5643e-06 + 1.7800 3.5643e-06 + 1.7850 3.5643e-06 + 1.7900 3.5643e-06 + 1.7950 3.5643e-06 + 1.8000 3.5643e-06 + 1.8050 3.5643e-06 + 1.8100 3.5643e-06 + 1.8150 3.5643e-06 + 1.8200 3.5643e-06 + 1.8250 3.5643e-06 + 1.8300 3.5643e-06 + 1.8350 3.5643e-06 + 1.8400 3.5643e-06 + 1.8450 3.5643e-06 + 1.8500 3.5643e-06 + 1.8550 3.5643e-06 + 1.8600 3.5643e-06 + 1.8650 3.5643e-06 + 1.8700 3.5643e-06 + 1.8750 3.5643e-06 + 1.8800 3.5643e-06 + 1.8850 3.5643e-06 + 1.8900 3.5643e-06 + 1.8950 3.5643e-06 + 1.9000 3.5643e-06 + 1.9050 3.5643e-06 + 1.9100 3.5643e-06 + 1.9150 3.5643e-06 + 1.9200 3.5643e-06 + 1.9250 3.5643e-06 + 1.9300 3.5643e-06 + 1.9350 3.5643e-06 + 1.9400 3.5643e-06 + 1.9450 3.5643e-06 + 1.9500 3.5643e-06 + 1.9550 3.5643e-06 + 1.9600 3.5643e-06 + 1.9650 3.5643e-06 + 1.9700 3.5643e-06 + 1.9750 3.5643e-06 + 1.9800 3.5643e-06 + 1.9850 3.5643e-06 + 1.9900 3.5643e-06 + 1.9950 3.5643e-06 + 2.0000 3.5643e-06 + 2.0050 3.5643e-06 + 2.0100 3.5643e-06 + 2.0150 3.5643e-06 + 2.0200 3.5643e-06 + 2.0250 3.5643e-06 + 2.0300 3.5643e-06 + 2.0350 3.5643e-06 + 2.0400 3.5643e-06 + 2.0450 3.5643e-06 + 2.0500 3.5643e-06 + 2.0550 3.5643e-06 + 2.0600 3.5643e-06 + 2.0650 3.5643e-06 + 2.0700 3.5643e-06 + 2.0750 3.5643e-06 + 2.0800 3.5643e-06 + 2.0850 3.5643e-06 + 2.0900 3.5643e-06 + 2.0950 3.5643e-06 + 2.1000 3.5643e-06 + 2.1050 3.5643e-06 + 2.1100 3.5643e-06 + 2.1150 3.5643e-06 + 2.1200 3.5643e-06 + 2.1250 3.5643e-06 + 2.1300 3.5643e-06 + 2.1350 3.5643e-06 + 2.1400 3.5643e-06 + 2.1450 3.5643e-06 + 2.1500 3.5643e-06 + 2.1550 3.5643e-06 + 2.1600 3.5643e-06 + 2.1650 3.5643e-06 + 2.1700 3.5643e-06 + 2.1750 3.5643e-06 + 2.1800 3.5643e-06 + 2.1850 3.5643e-06 + 2.1900 3.5643e-06 + 2.1950 3.5643e-06 + 2.2000 3.5643e-06 + 2.2050 3.5643e-06 + 2.2100 3.5643e-06 + 2.2150 3.5643e-06 + 2.2200 3.5643e-06 + 2.2250 3.5643e-06 + 2.2300 3.5643e-06 + 2.2350 3.5643e-06 + 2.2400 3.5643e-06 + 2.2450 3.5643e-06 + 2.2500 3.5643e-06 + 2.2550 3.5643e-06 + 2.2600 3.5643e-06 + 2.2650 3.5643e-06 + 2.2700 3.5643e-06 + 2.2750 3.5643e-06 + 2.2800 3.5643e-06 + 2.2850 3.5643e-06 + 2.2900 3.5643e-06 + 2.2950 3.5643e-06 + 2.3000 3.5643e-06 + 2.3050 3.5643e-06 + 2.3100 3.5643e-06 + 2.3150 3.5643e-06 + 2.3200 3.5643e-06 + 2.3250 3.5643e-06 + 2.3300 3.5643e-06 + 2.3350 3.5643e-06 + 2.3400 3.5643e-06 + 2.3450 3.5643e-06 + 2.3500 3.5643e-06 + 2.3550 3.5643e-06 + 2.3600 3.5643e-06 + 2.3650 3.5643e-06 + 2.3700 3.5643e-06 + 2.3750 3.5643e-06 + 2.3800 3.5643e-06 + 2.3850 3.5643e-06 + 2.3900 3.5643e-06 + 2.3950 3.5643e-06 + 2.4000 3.5643e-06 + 2.4050 3.5643e-06 + 2.4100 3.5643e-06 + 2.4150 3.5643e-06 + 2.4200 3.5643e-06 + 2.4250 3.5643e-06 + 2.4300 3.5643e-06 + 2.4350 3.5643e-06 + 2.4400 3.5643e-06 + 2.4450 3.5643e-06 + 2.4500 3.5643e-06 + 2.4550 3.5643e-06 + 2.4600 3.5643e-06 + 2.4650 3.5643e-06 + 2.4700 3.5643e-06 + 2.4750 3.5643e-06 + 2.4800 3.5643e-06 + 2.4850 3.5643e-06 + 2.4900 3.5643e-06 + 2.4950 3.5643e-06 + 2.5000 3.5643e-06 + 2.5050 3.5643e-06 + 2.5100 3.5643e-06 + 2.5150 3.5643e-06 + 2.5200 3.5643e-06 + 2.5250 3.5643e-06 + 2.5300 3.5643e-06 + 2.5350 3.5643e-06 + 2.5400 3.5643e-06 + 2.5450 3.5643e-06 + 2.5500 3.5643e-06 + 2.5550 3.5643e-06 + 2.5600 3.5643e-06 + 2.5650 3.5643e-06 + 2.5700 3.5643e-06 + 2.5750 3.5643e-06 + 2.5800 3.5643e-06 + 2.5850 3.5643e-06 + 2.5900 3.5643e-06 + 2.5950 3.5643e-06 + 2.6000 3.5643e-06 + 2.6050 3.5643e-06 + 2.6100 3.5643e-06 + 2.6150 3.5643e-06 + 2.6200 3.5643e-06 + 2.6250 3.5643e-06 + 2.6300 3.5643e-06 + 2.6350 3.5643e-06 + 2.6400 3.5643e-06 + 2.6450 3.5643e-06 + 2.6500 3.5643e-06 + 2.6550 3.5643e-06 + 2.6600 3.5643e-06 + 2.6650 3.5643e-06 + 2.6700 3.5643e-06 + 2.6750 3.5643e-06 + 2.6800 3.5643e-06 + 2.6850 3.5643e-06 + 2.6900 3.5643e-06 + 2.6950 3.5643e-06 + 2.7000 3.5643e-06 + 2.7050 3.5643e-06 + 2.7100 3.5643e-06 + 2.7150 3.5643e-06 + 2.7200 3.5643e-06 + 2.7250 3.5643e-06 + 2.7300 3.5643e-06 + 2.7350 3.5643e-06 + 2.7400 3.5643e-06 + 2.7450 3.5643e-06 + 2.7500 3.5643e-06 + 2.7550 3.5643e-06 + 2.7600 3.5643e-06 + 2.7650 3.5643e-06 + 2.7700 3.5643e-06 + 2.7750 3.5643e-06 + 2.7800 3.5643e-06 + 2.7850 3.5643e-06 + 2.7900 3.5643e-06 + 2.7950 3.5643e-06 + 2.8000 3.5643e-06 + 2.8050 3.5643e-06 + 2.8100 3.5643e-06 + 2.8150 3.5643e-06 + 2.8200 3.5643e-06 + 2.8250 3.5643e-06 + 2.8300 3.5643e-06 + 2.8350 3.5643e-06 + 2.8400 3.5643e-06 + 2.8450 3.5643e-06 + 2.8500 3.5643e-06 + 2.8550 3.5643e-06 + 2.8600 3.5643e-06 + 2.8650 3.5643e-06 + 2.8700 3.5643e-06 + 2.8750 3.5643e-06 + 2.8800 3.5643e-06 + 2.8850 3.5643e-06 + 2.8900 3.5643e-06 + 2.8950 3.5643e-06 + 2.9000 3.5643e-06 + 2.9050 3.5643e-06 + 2.9100 3.5643e-06 + 2.9150 3.5643e-06 + 2.9200 3.5643e-06 + 2.9250 3.5643e-06 + 2.9300 3.5643e-06 + 2.9350 3.5643e-06 + 2.9400 3.5643e-06 + 2.9450 3.5643e-06 + 2.9500 3.5643e-06 + 2.9550 3.5643e-06 + 2.9600 3.5643e-06 + 2.9650 3.5643e-06 + 2.9700 3.5643e-06 + 2.9750 3.5643e-06 + 2.9800 3.5643e-06 + 2.9850 3.5643e-06 + 2.9900 3.5643e-06 + 2.9950 3.5643e-06 + 3.0000 3.5643e-06 + 3.0050 3.5643e-06 + 3.0100 3.5643e-06 + 3.0150 3.5643e-06 + 3.0200 3.5643e-06 + 3.0250 3.5643e-06 + 3.0300 3.5643e-06 + 3.0350 3.5643e-06 + 3.0400 3.5643e-06 + 3.0450 3.5643e-06 + 3.0500 3.5643e-06 + 3.0550 3.5643e-06 + 3.0600 3.5643e-06 + 3.0650 3.5643e-06 + 3.0700 3.5643e-06 + 3.0750 3.5643e-06 + 3.0800 3.5643e-06 + 3.0850 3.5643e-06 + 3.0900 3.5643e-06 + 3.0950 3.5643e-06 + 3.1000 3.5643e-06 + 3.1050 3.5643e-06 + 3.1100 3.5643e-06 + 3.1150 3.5643e-06 + 3.1200 3.5643e-06 + 3.1250 3.5643e-06 + 3.1300 3.5643e-06 + 3.1350 3.5643e-06 + 3.1400 3.5643e-06 + 3.1450 3.5643e-06 + 3.1500 3.5643e-06 + 3.1550 3.5643e-06 + 3.1600 3.5643e-06 + 3.1650 3.5643e-06 + 3.1700 3.5643e-06 + 3.1750 3.5643e-06 + 3.1800 3.5643e-06 + 3.1850 3.5643e-06 + 3.1900 3.5643e-06 + 3.1950 3.5643e-06 + 3.2000 3.5643e-06 + 3.2050 3.5643e-06 + 3.2100 3.5643e-06 + 3.2150 3.5643e-06 + 3.2200 3.5643e-06 + 3.2250 3.5643e-06 + 3.2300 3.5643e-06 + 3.2350 3.5643e-06 + 3.2400 3.5643e-06 + 3.2450 3.5643e-06 + 3.2500 3.5643e-06 + 3.2550 3.5643e-06 + 3.2600 3.5643e-06 + 3.2650 3.5643e-06 + 3.2700 3.5643e-06 + 3.2750 3.5643e-06 + 3.2800 3.5643e-06 + 3.2850 3.5643e-06 + 3.2900 3.5643e-06 + 3.2950 3.5643e-06 + 3.3000 3.5643e-06 + 3.3050 3.5643e-06 + 3.3100 3.5643e-06 + 3.3150 3.5643e-06 + 3.3200 3.5643e-06 + 3.3250 3.5643e-06 + 3.3300 3.5643e-06 + 3.3350 3.5643e-06 + 3.3400 3.5643e-06 + 3.3450 3.5643e-06 + 3.3500 3.5643e-06 + 3.3550 3.5643e-06 + 3.3600 3.5643e-06 + 3.3650 3.5643e-06 + 3.3700 3.5643e-06 + 3.3750 3.5643e-06 + 3.3800 3.5643e-06 + 3.3850 3.5643e-06 + 3.3900 3.5643e-06 + 3.3950 3.5643e-06 + 3.4000 3.5643e-06 + 3.4050 3.5643e-06 + 3.4100 3.5643e-06 + 3.4150 3.5643e-06 + 3.4200 3.5643e-06 + 3.4250 3.5643e-06 + 3.4300 3.5643e-06 + 3.4350 3.5643e-06 + 3.4400 3.5643e-06 + 3.4450 3.5643e-06 + 3.4500 3.5643e-06 + 3.4550 3.5643e-06 + 3.4600 3.5643e-06 + 3.4650 3.5643e-06 + 3.4700 3.5643e-06 + 3.4750 3.5643e-06 + 3.4800 3.5643e-06 + 3.4850 3.5643e-06 + 3.4900 3.5643e-06 + 3.4950 3.5643e-06 + 3.5000 3.5643e-06 + 3.5050 3.5643e-06 + 3.5100 3.5643e-06 + 3.5150 3.5643e-06 + 3.5200 3.5643e-06 + 3.5250 3.5643e-06 + 3.5300 3.5643e-06 + 3.5350 3.5643e-06 + 3.5400 3.5643e-06 + 3.5450 3.5643e-06 + 3.5500 3.5643e-06 + 3.5550 3.5643e-06 + 3.5600 3.5643e-06 + 3.5650 3.5643e-06 + 3.5700 3.5643e-06 + 3.5750 3.5643e-06 + 3.5800 3.5643e-06 + 3.5850 3.5643e-06 + 3.5900 3.5643e-06 + 3.5950 3.5643e-06 + 3.6000 3.5643e-06 + 3.6050 3.5643e-06 + 3.6100 3.5643e-06 + 3.6150 3.5643e-06 + 3.6200 3.5643e-06 + 3.6250 3.5643e-06 + 3.6300 3.5643e-06 + 3.6350 3.5643e-06 + 3.6400 3.5643e-06 + 3.6450 3.5643e-06 + 3.6500 3.5643e-06 + 3.6550 3.5643e-06 + 3.6600 3.5643e-06 + 3.6650 3.5643e-06 + 3.6700 3.5643e-06 + 3.6750 3.5643e-06 + 3.6800 3.5643e-06 + 3.6850 3.5643e-06 + 3.6900 3.5643e-06 + 3.6950 3.5643e-06 + 3.7000 3.5643e-06 + 3.7050 3.5643e-06 + 3.7100 3.5643e-06 + 3.7150 3.5643e-06 + 3.7200 3.5643e-06 + 3.7250 3.5643e-06 + 3.7300 3.5643e-06 + 3.7350 3.5643e-06 + 3.7400 3.5643e-06 + 3.7450 3.5643e-06 + 3.7500 3.5643e-06 + 3.7550 3.5643e-06 + 3.7600 3.5643e-06 + 3.7650 3.5643e-06 + 3.7700 3.5643e-06 + 3.7750 3.5643e-06 + 3.7800 3.5643e-06 + 3.7850 3.5643e-06 + 3.7900 3.5643e-06 + 3.7950 3.5643e-06 + 3.8000 3.5643e-06 + 3.8050 3.5643e-06 + 3.8100 3.5643e-06 + 3.8150 3.5643e-06 + 3.8200 3.5643e-06 + 3.8250 3.5643e-06 + 3.8300 3.5643e-06 + 3.8350 3.5643e-06 + 3.8400 3.5643e-06 + 3.8450 3.5643e-06 + 3.8500 3.5643e-06 + 3.8550 3.5643e-06 + 3.8600 3.5643e-06 + 3.8650 3.5643e-06 + 3.8700 3.5643e-06 + 3.8750 3.5643e-06 + 3.8800 3.5643e-06 + 3.8850 3.5643e-06 + 3.8900 3.5643e-06 + 3.8950 3.5643e-06 + 3.9000 3.5643e-06 + 3.9050 3.5643e-06 + 3.9100 3.5643e-06 + 3.9150 3.5643e-06 + 3.9200 3.5643e-06 + 3.9250 3.5643e-06 + 3.9300 3.5643e-06 + 3.9350 3.5643e-06 + 3.9400 3.5643e-06 + 3.9450 3.5643e-06 + 3.9500 3.5643e-06 + 3.9550 3.5643e-06 + 3.9600 3.5643e-06 + 3.9650 3.5643e-06 + 3.9700 3.5643e-06 + 3.9750 3.5643e-06 + 3.9800 3.5643e-06 + 3.9850 3.5643e-06 + 3.9900 3.5643e-06 + 3.9950 3.5643e-06 + 4.0000 3.5643e-06 + 4.0050 3.5643e-06 + 4.0100 3.5643e-06 + 4.0150 3.5643e-06 + 4.0200 3.5643e-06 + 4.0250 3.5643e-06 + 4.0300 3.5643e-06 + 4.0350 3.5643e-06 + 4.0400 3.5643e-06 + 4.0450 3.5643e-06 + 4.0500 3.5643e-06 + 4.0550 3.5643e-06 + 4.0600 3.5643e-06 + 4.0650 3.5643e-06 + 4.0700 3.5643e-06 + 4.0750 3.5643e-06 + 4.0800 3.5643e-06 + 4.0850 3.5643e-06 + 4.0900 3.5643e-06 + 4.0950 3.5643e-06 + 4.1000 3.5643e-06 + 4.1050 3.5643e-06 + 4.1100 3.5643e-06 + 4.1150 3.5643e-06 + 4.1200 3.5643e-06 + 4.1250 3.5643e-06 + 4.1300 3.5643e-06 + 4.1350 3.5643e-06 + 4.1400 3.5643e-06 + 4.1450 3.5643e-06 + 4.1500 3.5643e-06 + 4.1550 3.5643e-06 + 4.1600 3.5643e-06 + 4.1650 3.5643e-06 + 4.1700 3.5643e-06 + 4.1750 3.5643e-06 + 4.1800 3.5643e-06 + 4.1850 3.5643e-06 + 4.1900 3.5643e-06 + 4.1950 3.5643e-06 + 4.2000 3.5643e-06 + 4.2050 3.5643e-06 + 4.2100 3.5643e-06 + 4.2150 3.5643e-06 + 4.2200 3.5643e-06 + 4.2250 3.5643e-06 + 4.2300 3.5642e-06 + 4.2350 3.5642e-06 + 4.2400 3.5641e-06 + 4.2450 3.5641e-06 + 4.2500 3.5639e-06 + 4.2550 3.5638e-06 + 4.2600 3.5636e-06 + 4.2650 3.5634e-06 + 4.2700 3.5631e-06 + 4.2750 3.5627e-06 + 4.2800 3.5622e-06 + 4.2850 3.5615e-06 + 4.2900 3.5607e-06 + 4.2950 3.5597e-06 + 4.3000 3.5584e-06 + 4.3050 3.5569e-06 + 4.3100 3.5550e-06 + 4.3150 3.5527e-06 + 4.3200 3.5499e-06 + 4.3250 3.5467e-06 + 4.3300 3.5428e-06 + 4.3350 3.5382e-06 + 4.3400 3.5329e-06 + 4.3450 3.5267e-06 + 4.3500 3.5197e-06 + 4.3550 3.5116e-06 + 4.3600 3.5025e-06 + 4.3650 3.4922e-06 + 4.3700 3.4808e-06 + 4.3750 3.4681e-06 + 4.3800 3.4542e-06 + 4.3850 3.4391e-06 + 4.3900 3.4227e-06 + 4.3950 3.4051e-06 + 4.4000 3.3863e-06 + 4.4050 3.3665e-06 + 4.4100 3.3457e-06 + 4.4150 3.3240e-06 + 4.4200 3.3015e-06 + 4.4250 3.2784e-06 + 4.4300 3.2550e-06 + 4.4350 3.2312e-06 + 4.4400 3.2073e-06 + 4.4450 3.1836e-06 + 4.4500 3.1601e-06 + 4.4550 3.1370e-06 + 4.4600 3.1146e-06 + 4.4650 3.0929e-06 + 4.4700 3.0720e-06 + 4.4750 3.0522e-06 + 4.4800 3.0334e-06 + 4.4850 3.0158e-06 + 4.4900 2.9994e-06 + 4.4950 2.9843e-06 + 4.5000 2.9704e-06 + 4.5050 2.9578e-06 + 4.5100 2.9464e-06 + 4.5150 2.9361e-06 + 4.5200 2.9270e-06 + 4.5250 2.9190e-06 + 4.5300 2.9120e-06 + 4.5350 2.9061e-06 + 4.5400 2.9009e-06 + 4.5450 2.8967e-06 + 4.5500 2.8933e-06 + 4.5550 2.8907e-06 + 4.5600 2.8889e-06 + 4.5650 2.8880e-06 + 4.5700 2.8881e-06 + 4.5750 2.8894e-06 + 4.5800 2.8920e-06 + 4.5850 2.8964e-06 + 4.5900 2.9029e-06 + 4.5950 2.9123e-06 + 4.6000 2.9253e-06 + 4.6050 2.9429e-06 + 4.6100 2.9665e-06 + 4.6150 2.9975e-06 + 4.6200 3.0380e-06 + 4.6250 3.0903e-06 + 4.6300 3.1573e-06 + 4.6350 3.2421e-06 + 4.6400 3.3486e-06 + 4.6450 3.4810e-06 + 4.6500 3.6444e-06 + 4.6550 3.8439e-06 + 4.6600 4.0855e-06 + 4.6650 4.3752e-06 + 4.6700 4.7195e-06 + 4.6750 5.1248e-06 + 4.6800 5.5976e-06 + 4.6850 6.1436e-06 + 4.6900 6.7683e-06 + 4.6950 7.4759e-06 + 4.7000 8.2694e-06 + 4.7050 9.1503e-06 + 4.7100 1.0118e-05 + 4.7150 1.1170e-05 + 4.7200 1.2300e-05 + 4.7250 1.3501e-05 + 4.7300 1.4763e-05 + 4.7350 1.6071e-05 + 4.7400 1.7410e-05 + 4.7450 1.8761e-05 + 4.7500 2.0104e-05 + 4.7550 2.1416e-05 + 4.7600 2.2676e-05 + 4.7650 2.3859e-05 + 4.7700 2.4942e-05 + 4.7750 2.5905e-05 + 4.7800 2.6727e-05 + 4.7850 2.7390e-05 + 4.7900 2.7882e-05 + 4.7950 2.8191e-05 + 4.8000 2.8311e-05 + 4.8050 2.8241e-05 + 4.8100 2.7984e-05 + 4.8150 2.7545e-05 + 4.8200 2.6937e-05 + 4.8250 2.6174e-05 + 4.8300 2.5274e-05 + 4.8350 2.4257e-05 + 4.8400 2.3144e-05 + 4.8450 2.1959e-05 + 4.8500 2.0724e-05 + 4.8550 1.9463e-05 + 4.8600 1.8196e-05 + 4.8650 1.6944e-05 + 4.8700 1.5723e-05 + 4.8750 1.4550e-05 + 4.8800 1.3437e-05 + 4.8850 1.2393e-05 + 4.8900 1.1426e-05 + 4.8950 1.0540e-05 + 4.9000 9.7369e-06 + 4.9050 9.0171e-06 + 4.9100 8.3784e-06 + 4.9150 7.8177e-06 + 4.9200 7.3302e-06 + 4.9250 6.9107e-06 + 4.9300 6.5532e-06 + 4.9350 6.2514e-06 + 4.9400 5.9992e-06 + 4.9450 5.7903e-06 + 4.9500 5.6190e-06 + 4.9550 5.4799e-06 + 4.9600 5.3678e-06 + 4.9650 5.2785e-06 + 4.9700 5.2079e-06 + 4.9750 5.1526e-06 + 4.9800 5.1098e-06 + 4.9850 5.0768e-06 + 4.9900 5.0517e-06 + 4.9950 5.0328e-06 + 5.0000 5.0186e-06 + 5.0050 5.0081e-06 + 5.0100 5.0005e-06 + 5.0150 4.9948e-06 + 5.0200 4.9908e-06 + 5.0250 4.9879e-06 + 5.0300 4.9859e-06 + 5.0350 4.9845e-06 + 5.0400 4.9835e-06 + 5.0450 4.9828e-06 + 5.0500 4.9823e-06 + 5.0550 4.9820e-06 + 5.0600 4.9818e-06 + 5.0650 4.9816e-06 + 5.0700 4.9816e-06 + 5.0750 4.9815e-06 + 5.0800 4.9815e-06 + 5.0850 4.9814e-06 + 5.0900 4.9814e-06 + 5.0950 4.9814e-06 + 5.1000 4.9815e-06 + 5.1050 4.9815e-06 + 5.1100 4.9816e-06 + 5.1150 4.9817e-06 + 5.1200 4.9818e-06 + 5.1250 4.9821e-06 + 5.1300 4.9824e-06 + 5.1350 4.9828e-06 + 5.1400 4.9834e-06 + 5.1450 4.9844e-06 + 5.1500 4.9856e-06 + 5.1550 4.9874e-06 + 5.1600 4.9899e-06 + 5.1650 4.9932e-06 + 5.1700 4.9979e-06 + 5.1750 5.0041e-06 + 5.1800 5.0125e-06 + 5.1850 5.0236e-06 + 5.1900 5.0384e-06 + 5.1950 5.0577e-06 + 5.2000 5.0829e-06 + 5.2050 5.1155e-06 + 5.2100 5.1572e-06 + 5.2150 5.2103e-06 + 5.2200 5.2773e-06 + 5.2250 5.3613e-06 + 5.2300 5.4658e-06 + 5.2350 5.5947e-06 + 5.2400 5.7526e-06 + 5.2450 5.9445e-06 + 5.2500 6.1760e-06 + 5.2550 6.4531e-06 + 5.2600 6.7825e-06 + 5.2650 7.1708e-06 + 5.2700 7.6254e-06 + 5.2750 8.1535e-06 + 5.2800 8.7624e-06 + 5.2850 9.4593e-06 + 5.2900 1.0251e-05 + 5.2950 1.1144e-05 + 5.3000 1.2143e-05 + 5.3050 1.3253e-05 + 5.3100 1.4477e-05 + 5.3150 1.5817e-05 + 5.3200 1.7273e-05 + 5.3250 1.8845e-05 + 5.3300 2.0528e-05 + 5.3350 2.2319e-05 + 5.3400 2.4210e-05 + 5.3450 2.6193e-05 + 5.3500 2.8258e-05 + 5.3550 3.0394e-05 + 5.3600 3.2588e-05 + 5.3650 3.4826e-05 + 5.3700 3.7096e-05 + 5.3750 3.9382e-05 + 5.3800 4.1670e-05 + 5.3850 4.3946e-05 + 5.3900 4.6197e-05 + 5.3950 4.8411e-05 + 5.4000 5.0577e-05 + 5.4050 5.2684e-05 + 5.4100 5.4726e-05 + 5.4150 5.6695e-05 + 5.4200 5.8586e-05 + 5.4250 6.0398e-05 + 5.4300 6.2127e-05 + 5.4350 6.3774e-05 + 5.4400 6.5341e-05 + 5.4450 6.6831e-05 + 5.4500 6.8245e-05 + 5.4550 6.9590e-05 + 5.4600 7.0870e-05 + 5.4650 7.2091e-05 + 5.4700 7.3259e-05 + 5.4750 7.4379e-05 + 5.4800 7.5457e-05 + 5.4850 7.6500e-05 + 5.4900 7.7512e-05 + 5.4950 7.8499e-05 + 5.5000 7.9465e-05 + 5.5050 8.0415e-05 + 5.5100 8.1353e-05 + 5.5150 8.2282e-05 + 5.5200 8.3205e-05 + 5.5250 8.4126e-05 + 5.5300 8.5045e-05 + 5.5350 8.5967e-05 + 5.5400 8.6891e-05 + 5.5450 8.7819e-05 + 5.5500 8.8754e-05 + 5.5550 8.9695e-05 + 5.5600 9.0643e-05 + 5.5650 9.1599e-05 + 5.5700 9.2564e-05 + 5.5750 9.3539e-05 + 5.5800 9.4522e-05 + 5.5850 9.5516e-05 + 5.5900 9.6519e-05 + 5.5950 9.7533e-05 + 5.6000 9.8558e-05 + 5.6050 9.9593e-05 + 5.6100 0.00010064 + 5.6150 0.00010170 + 5.6200 0.00010276 + 5.6250 0.00010384 + 5.6300 0.00010493 + 5.6350 0.00010604 + 5.6400 0.00010715 + 5.6450 0.00010828 + 5.6500 0.00010941 + 5.6550 0.00011056 + 5.6600 0.00011173 + 5.6650 0.00011290 + 5.6700 0.00011409 + 5.6750 0.00011529 + 5.6800 0.00011651 + 5.6850 0.00011774 + 5.6900 0.00011898 + 5.6950 0.00012024 + 5.7000 0.00012152 + 5.7050 0.00012283 + 5.7100 0.00012416 + 5.7150 0.00012553 + 5.7200 0.00012694 + 5.7250 0.00012842 + 5.7300 0.00012997 + 5.7350 0.00013163 + 5.7400 0.00013345 + 5.7450 0.00013548 + 5.7500 0.00013780 + 5.7550 0.00014053 + 5.7600 0.00014381 + 5.7650 0.00014785 + 5.7700 0.00015291 + 5.7750 0.00015936 + 5.7800 0.00016765 + 5.7850 0.00017839 + 5.7900 0.00019236 + 5.7950 0.00021053 + 5.8000 0.00023415 + 5.8050 0.00026475 + 5.8100 0.00030421 + 5.8150 0.00035484 + 5.8200 0.00041940 + 5.8250 0.00050119 + 5.8300 0.00060408 + 5.8350 0.00073255 + 5.8400 0.00089173 + 5.8450 0.0010874 + 5.8500 0.0013260 + 5.8550 0.0016146 + 5.8600 0.0019608 + 5.8650 0.0023723 + 5.8700 0.0028575 + 5.8750 0.0034245 + 5.8800 0.0040812 + 5.8850 0.0048349 + 5.8900 0.0056919 + 5.8950 0.0066573 + 5.9000 0.0077344 + 5.9050 0.0089243 + 5.9100 0.010226 + 5.9150 0.011634 + 5.9200 0.013142 + 5.9250 0.014739 + 5.9300 0.016410 + 5.9350 0.018138 + 5.9400 0.019901 + 5.9450 0.021675 + 5.9500 0.023433 + 5.9550 0.025147 + 5.9600 0.026788 + 5.9650 0.028324 + 5.9700 0.029725 + 5.9750 0.030965 + 5.9800 0.032017 + 5.9850 0.032858 + 5.9900 0.033471 + 5.9950 0.033841 + 6.0000 0.033960 + 6.0050 0.033826 + 6.0100 0.033441 + 6.0150 0.032814 + 6.0200 0.031959 + 6.0250 0.030893 + 6.0300 0.029641 + 6.0350 0.028227 + 6.0400 0.026679 + 6.0450 0.025029 + 6.0500 0.023305 + 6.0550 0.021538 + 6.0600 0.019756 + 6.0650 0.017986 + 6.0700 0.016253 + 6.0750 0.014576 + 6.0800 0.012976 + 6.0850 0.011464 + 6.0900 0.010053 + 6.0950 0.0087500 + 6.1000 0.0075589 + 6.1050 0.0064811 + 6.1100 0.0055155 + 6.1150 0.0046587 + 6.1200 0.0039055 + 6.1250 0.0032497 + 6.1300 0.0026838 + 6.1350 0.0021999 + 6.1400 0.0017897 + 6.1450 0.0014452 + 6.1500 0.0011582 + 6.1550 0.00092134 + 6.1600 0.00072741 + 6.1650 0.00057001 + 6.1700 0.00044334 + 6.1750 0.00034223 + 6.1800 0.00026221 + 6.1850 0.00019940 + 6.1900 0.00015050 + 6.1950 0.00011275 + 6.2000 8.3831e-05 + 6.2050 6.1865e-05 + 6.2100 4.5314e-05 + 6.2150 3.2943e-05 + 6.2200 2.3770e-05 + 6.2250 1.7023e-05 + 6.2300 1.2100e-05 + 6.2350 8.5367e-06 + 6.2400 5.9777e-06 + 6.2450 4.1544e-06 + 6.2500 2.8657e-06 + 6.2550 1.9620e-06 + 6.2600 1.3332e-06 + 6.2650 8.9920e-07 + 6.2700 6.0194e-07 + 6.2750 3.9993e-07 + 6.2800 2.6373e-07 + 6.2850 1.7261e-07 + 6.2900 1.1213e-07 + 6.2950 7.2300e-08 + 6.3000 4.6268e-08 + 6.3050 2.9388e-08 + 6.3100 1.8527e-08 + 6.3150 1.1592e-08 + 6.3200 7.1992e-09 + 6.3250 4.4375e-09 + 6.3300 2.7148e-09 + 6.3350 1.6484e-09 + 6.3400 9.9347e-10 + 6.3450 5.9426e-10 + 6.3500 3.5281e-10 + 6.3550 2.0790e-10 + 6.3600 1.2159e-10 + 6.3650 7.0582e-11 + 6.3700 4.0665e-11 + 6.3750 2.3254e-11 + 6.3800 1.3198e-11 + 6.3850 7.4349e-12 + 6.3900 4.1569e-12 + 6.3950 2.3068e-12 + 6.4000 1.2705e-12 + 6.4050 6.9454e-13 + 6.4100 0.00000 + 6.4150 0.00000 + 6.4200 0.00000 + 6.4250 0.00000 + 6.4300 0.00000 + 6.4350 0.00000 + 6.4400 0.00000 + 6.4450 0.00000 + 6.4500 0.00000 + 6.4550 0.00000 + 6.4600 0.00000 + 6.4650 0.00000 + 6.4700 0.00000 + 6.4750 0.00000 + 6.4800 0.00000 + 6.4850 0.00000 + 6.4900 0.00000 + 6.4950 0.00000 + 6.5000 0.00000 + 6.5050 0.00000 + 6.5100 0.00000 + 6.5150 0.00000 + 6.5200 0.00000 + 6.5250 0.00000 + 6.5300 0.00000 + 6.5350 0.00000 + 6.5400 0.00000 + 6.5450 0.00000 + 6.5500 0.00000 + 6.5550 0.00000 + 6.5600 0.00000 + 6.5650 0.00000 + 6.5700 0.00000 + 6.5750 0.00000 + 6.5800 0.00000 + 6.5850 0.00000 + 6.5900 0.00000 + 6.5950 0.00000 + 6.6000 0.00000 + 6.6050 0.00000 + 6.6100 0.00000 + 6.6150 0.00000 + 6.6200 0.00000 + 6.6250 0.00000 + 6.6300 0.00000 + 6.6350 0.00000 + 6.6400 0.00000 + 6.6450 0.00000 + 6.6500 0.00000 + 6.6550 0.00000 + 6.6600 0.00000 + 6.6650 0.00000 + 6.6700 0.00000 + 6.6750 0.00000 + 6.6800 0.00000 + 6.6850 0.00000 + 6.6900 0.00000 + 6.6950 0.00000 + 6.7000 0.00000 + 6.7050 0.00000 + 6.7100 0.00000 + 6.7150 0.00000 + 6.7200 0.00000 + 6.7250 0.00000 + 6.7300 0.00000 + 6.7350 0.00000 + 6.7400 0.00000 + 6.7450 0.00000 + 6.7500 0.00000 + 6.7550 0.00000 + 6.7600 0.00000 + 6.7650 0.00000 + 6.7700 0.00000 + 6.7750 0.00000 + 6.7800 0.00000 + 6.7850 0.00000 + 6.7900 0.00000 + 6.7950 0.00000 + 6.8000 0.00000 + 6.8050 0.00000 + 6.8100 0.00000 + 6.8150 0.00000 + 6.8200 0.00000 + 6.8250 0.00000 + 6.8300 0.00000 + 6.8350 0.00000 + 6.8400 0.00000 + 6.8450 0.00000 + 6.8500 0.00000 + 6.8550 0.00000 + 6.8600 0.00000 + 6.8650 0.00000 + 6.8700 0.00000 + 6.8750 0.00000 + 6.8800 0.00000 + 6.8850 0.00000 + 6.8900 0.00000 + 6.8950 0.00000 + 6.9000 0.00000 + 6.9050 0.00000 + 6.9100 0.00000 + 6.9150 0.00000 + 6.9200 0.00000 + 6.9250 0.00000 + 6.9300 0.00000 + 6.9350 0.00000 + 6.9400 0.00000 + 6.9450 0.00000 + 6.9500 0.00000 + 6.9550 0.00000 + 6.9600 0.00000 + 6.9650 0.00000 + 6.9700 0.00000 + 6.9750 0.00000 + 6.9800 0.00000 + 6.9850 0.00000 + 6.9900 0.00000 + 6.9950 0.00000 + 7.0000 0.00000 + 7.0050 0.00000 + 7.0100 0.00000 + 7.0150 0.00000 + 7.0200 0.00000 + 7.0250 0.00000 + 7.0300 0.00000 + 7.0350 0.00000 + 7.0400 0.00000 + 7.0450 0.00000 + 7.0500 0.00000 + 7.0550 0.00000 + 7.0600 0.00000 + 7.0650 0.00000 + 7.0700 0.00000 + 7.0750 0.00000 + 7.0800 0.00000 + 7.0850 0.00000 + 7.0900 0.00000 + 7.0950 0.00000 + 7.1000 0.00000 + 7.1050 0.00000 + 7.1100 0.00000 + 7.1150 0.00000 + 7.1200 0.00000 + 7.1250 0.00000 + 7.1300 0.00000 + 7.1350 0.00000 + 7.1400 0.00000 + 7.1450 0.00000 + 7.1500 0.00000 + 7.1550 0.00000 + 7.1600 0.00000 + 7.1650 0.00000 + 7.1700 0.00000 + 7.1750 0.00000 + 7.1800 0.00000 + 7.1850 0.00000 + 7.1900 0.00000 + 7.1950 0.00000 + 7.2000 0.00000 + 7.2050 0.00000 + 7.2100 0.00000 + 7.2150 0.00000 + 7.2200 0.00000 + 7.2250 0.00000 + 7.2300 0.00000 + 7.2350 0.00000 + 7.2400 0.00000 + 7.2450 0.00000 + 7.2500 0.00000 + 7.2550 0.00000 + 7.2600 0.00000 + 7.2650 0.00000 + 7.2700 0.00000 + 7.2750 0.00000 + 7.2800 0.00000 + 7.2850 0.00000 + 7.2900 0.00000 + 7.2950 0.00000 + 7.3000 0.00000 + 7.3050 0.00000 + 7.3100 0.00000 + 7.3150 0.00000 + 7.3200 0.00000 + 7.3250 0.00000 + 7.3300 0.00000 + 7.3350 0.00000 + 7.3400 0.00000 + 7.3450 0.00000 + 7.3500 0.00000 + 7.3550 0.00000 + 7.3600 0.00000 + 7.3650 0.00000 + 7.3700 0.00000 + 7.3750 0.00000 + 7.3800 0.00000 + 7.3850 0.00000 + 7.3900 0.00000 + 7.3950 0.00000 + 7.4000 0.00000 + 7.4050 0.00000 + 7.4100 0.00000 + 7.4150 0.00000 + 7.4200 0.00000 + 7.4250 0.00000 + 7.4300 0.00000 + 7.4350 0.00000 + 7.4400 0.00000 + 7.4450 0.00000 + 7.4500 0.00000 + 7.4550 0.00000 + 7.4600 0.00000 + 7.4650 0.00000 + 7.4700 0.00000 + 7.4750 0.00000 + 7.4800 0.00000 + 7.4850 0.00000 + 7.4900 0.00000 + 7.4950 0.00000 + 7.5000 0.00000 + 7.5050 0.00000 + 7.5100 0.00000 + 7.5150 0.00000 + 7.5200 0.00000 + 7.5250 0.00000 + 7.5300 0.00000 + 7.5350 0.00000 + 7.5400 0.00000 + 7.5450 0.00000 + 7.5500 0.00000 + 7.5550 0.00000 + 7.5600 0.00000 + 7.5650 0.00000 + 7.5700 0.00000 + 7.5750 0.00000 + 7.5800 0.00000 + 7.5850 0.00000 + 7.5900 0.00000 + 7.5950 0.00000 + 7.6000 0.00000 + 7.6050 0.00000 + 7.6100 0.00000 + 7.6150 0.00000 + 7.6200 0.00000 + 7.6250 0.00000 + 7.6300 0.00000 + 7.6350 0.00000 + 7.6400 0.00000 + 7.6450 0.00000 + 7.6500 0.00000 + 7.6550 0.00000 + 7.6600 0.00000 + 7.6650 0.00000 + 7.6700 0.00000 + 7.6750 0.00000 + 7.6800 0.00000 + 7.6850 0.00000 + 7.6900 0.00000 + 7.6950 0.00000 + 7.7000 0.00000 + 7.7050 0.00000 + 7.7100 0.00000 + 7.7150 0.00000 + 7.7200 0.00000 + 7.7250 0.00000 + 7.7300 0.00000 + 7.7350 0.00000 + 7.7400 0.00000 + 7.7450 0.00000 + 7.7500 0.00000 + 7.7550 0.00000 + 7.7600 0.00000 + 7.7650 0.00000 + 7.7700 0.00000 + 7.7750 0.00000 + 7.7800 0.00000 + 7.7850 0.00000 + 7.7900 0.00000 + 7.7950 0.00000 + 7.8000 0.00000 + 7.8050 0.00000 + 7.8100 0.00000 + 7.8150 0.00000 + 7.8200 0.00000 + 7.8250 0.00000 + 7.8300 0.00000 + 7.8350 0.00000 + 7.8400 0.00000 + 7.8450 0.00000 + 7.8500 0.00000 + 7.8550 0.00000 + 7.8600 0.00000 + 7.8650 0.00000 + 7.8700 0.00000 + 7.8750 0.00000 + 7.8800 0.00000 + 7.8850 0.00000 + 7.8900 0.00000 + 7.8950 0.00000 + 7.9000 0.00000 + 7.9050 0.00000 + 7.9100 0.00000 + 7.9150 0.00000 + 7.9200 0.00000 + 7.9250 0.00000 + 7.9300 0.00000 + 7.9350 0.00000 + 7.9400 0.00000 + 7.9450 0.00000 + 7.9500 0.00000 + 7.9550 0.00000 + 7.9600 0.00000 + 7.9650 0.00000 + 7.9700 0.00000 + 7.9750 0.00000 + 7.9800 0.00000 + 7.9850 0.00000 + 7.9900 0.00000 + 7.9950 0.00000 + 8.0000 0.00000 + 8.0050 0.00000 + 8.0100 0.00000 + 8.0150 0.00000 + 8.0200 0.00000 + 8.0250 0.00000 + 8.0300 0.00000 + 8.0350 0.00000 + 8.0400 0.00000 + 8.0450 0.00000 + 8.0500 0.00000 + 8.0550 0.00000 + 8.0600 0.00000 + 8.0650 0.00000 + 8.0700 0.00000 + 8.0750 0.00000 + 8.0800 0.00000 + 8.0850 0.00000 + 8.0900 0.00000 + 8.0950 0.00000 + 8.1000 0.00000 + 8.1050 0.00000 + 8.1100 0.00000 + 8.1150 0.00000 + 8.1200 0.00000 + 8.1250 0.00000 + 8.1300 0.00000 + 8.1350 0.00000 + 8.1400 0.00000 + 8.1450 0.00000 + 8.1500 0.00000 + 8.1550 0.00000 + 8.1600 0.00000 + 8.1650 0.00000 + 8.1700 0.00000 + 8.1750 0.00000 + 8.1800 0.00000 + 8.1850 0.00000 + 8.1900 0.00000 + 8.1950 0.00000 + 8.2000 0.00000 + 8.2050 0.00000 + 8.2100 0.00000 + 8.2150 0.00000 + 8.2200 0.00000 + 8.2250 0.00000 + 8.2300 0.00000 + 8.2350 0.00000 + 8.2400 0.00000 + 8.2450 0.00000 + 8.2500 0.00000 + 8.2550 0.00000 + 8.2600 0.00000 + 8.2650 0.00000 + 8.2700 0.00000 + 8.2750 0.00000 + 8.2800 0.00000 + 8.2850 0.00000 + 8.2900 0.00000 + 8.2950 0.00000 + 8.3000 0.00000 + 8.3050 0.00000 + 8.3100 0.00000 + 8.3150 0.00000 + 8.3200 0.00000 + 8.3250 0.00000 + 8.3300 0.00000 + 8.3350 0.00000 + 8.3400 0.00000 + 8.3450 0.00000 + 8.3500 0.00000 + 8.3550 0.00000 + 8.3600 0.00000 + 8.3650 0.00000 + 8.3700 0.00000 + 8.3750 0.00000 + 8.3800 0.00000 + 8.3850 0.00000 + 8.3900 0.00000 + 8.3950 0.00000 + 8.4000 0.00000 + 8.4050 0.00000 + 8.4100 0.00000 + 8.4150 0.00000 + 8.4200 0.00000 + 8.4250 0.00000 + 8.4300 0.00000 + 8.4350 0.00000 + 8.4400 0.00000 + 8.4450 0.00000 + 8.4500 0.00000 + 8.4550 0.00000 + 8.4600 0.00000 + 8.4650 0.00000 + 8.4700 0.00000 + 8.4750 0.00000 + 8.4800 0.00000 + 8.4850 0.00000 + 8.4900 0.00000 + 8.4950 0.00000 + 8.5000 0.00000 + 8.5050 0.00000 + 8.5100 0.00000 + 8.5150 0.00000 + 8.5200 0.00000 + 8.5250 0.00000 + 8.5300 0.00000 + 8.5350 0.00000 + 8.5400 0.00000 + 8.5450 0.00000 + 8.5500 0.00000 + 8.5550 0.00000 + 8.5600 0.00000 + 8.5650 0.00000 + 8.5700 0.00000 + 8.5750 0.00000 + 8.5800 0.00000 + 8.5850 0.00000 + 8.5900 0.00000 + 8.5950 0.00000 + 8.6000 0.00000 + 8.6050 0.00000 + 8.6100 0.00000 + 8.6150 0.00000 + 8.6200 0.00000 + 8.6250 0.00000 + 8.6300 0.00000 + 8.6350 0.00000 + 8.6400 0.00000 + 8.6450 0.00000 + 8.6500 0.00000 + 8.6550 0.00000 + 8.6600 0.00000 + 8.6650 0.00000 + 8.6700 0.00000 + 8.6750 0.00000 + 8.6800 0.00000 + 8.6850 0.00000 + 8.6900 0.00000 + 8.6950 0.00000 + 8.7000 0.00000 + 8.7050 0.00000 + 8.7100 0.00000 + 8.7150 0.00000 + 8.7200 0.00000 + 8.7250 0.00000 + 8.7300 0.00000 + 8.7350 0.00000 + 8.7400 0.00000 + 8.7450 0.00000 + 8.7500 0.00000 + 8.7550 0.00000 + 8.7600 0.00000 + 8.7650 0.00000 + 8.7700 0.00000 + 8.7750 0.00000 + 8.7800 0.00000 + 8.7850 0.00000 + 8.7900 0.00000 + 8.7950 0.00000 + 8.8000 0.00000 + 8.8050 0.00000 + 8.8100 0.00000 + 8.8150 0.00000 + 8.8200 0.00000 + 8.8250 0.00000 + 8.8300 0.00000 + 8.8350 0.00000 + 8.8400 0.00000 + 8.8450 0.00000 + 8.8500 0.00000 + 8.8550 0.00000 + 8.8600 0.00000 + 8.8650 0.00000 + 8.8700 0.00000 + 8.8750 0.00000 + 8.8800 0.00000 + 8.8850 0.00000 + 8.8900 0.00000 + 8.8950 0.00000 + 8.9000 0.00000 + 8.9050 0.00000 + 8.9100 0.00000 + 8.9150 0.00000 + 8.9200 0.00000 + 8.9250 0.00000 + 8.9300 0.00000 + 8.9350 0.00000 + 8.9400 0.00000 + 8.9450 0.00000 + 8.9500 0.00000 + 8.9550 0.00000 + 8.9600 0.00000 + 8.9650 0.00000 + 8.9700 0.00000 + 8.9750 0.00000 + 8.9800 0.00000 + 8.9850 0.00000 + 8.9900 0.00000 + 8.9950 0.00000 + 9.0000 0.00000 + 9.0050 0.00000 + 9.0100 0.00000 + 9.0150 0.00000 + 9.0200 0.00000 + 9.0250 0.00000 + 9.0300 0.00000 + 9.0350 0.00000 + 9.0400 0.00000 + 9.0450 0.00000 + 9.0500 0.00000 + 9.0550 0.00000 + 9.0600 0.00000 + 9.0650 0.00000 + 9.0700 0.00000 + 9.0750 0.00000 + 9.0800 0.00000 + 9.0850 0.00000 + 9.0900 0.00000 + 9.0950 0.00000 + 9.1000 0.00000 + 9.1050 0.00000 + 9.1100 0.00000 + 9.1150 0.00000 + 9.1200 0.00000 + 9.1250 0.00000 + 9.1300 0.00000 + 9.1350 0.00000 + 9.1400 0.00000 + 9.1450 0.00000 + 9.1500 0.00000 + 9.1550 0.00000 + 9.1600 0.00000 + 9.1650 0.00000 + 9.1700 0.00000 + 9.1750 0.00000 + 9.1800 0.00000 + 9.1850 0.00000 + 9.1900 0.00000 + 9.1950 0.00000 + 9.2000 0.00000 + 9.2050 0.00000 + 9.2100 0.00000 + 9.2150 0.00000 + 9.2200 0.00000 + 9.2250 0.00000 + 9.2300 0.00000 + 9.2350 0.00000 + 9.2400 0.00000 + 9.2450 0.00000 + 9.2500 0.00000 + 9.2550 0.00000 + 9.2600 0.00000 + 9.2650 0.00000 + 9.2700 0.00000 + 9.2750 0.00000 + 9.2800 0.00000 + 9.2850 0.00000 + 9.2900 0.00000 + 9.2950 0.00000 + 9.3000 0.00000 + 9.3050 0.00000 + 9.3100 0.00000 + 9.3150 0.00000 + 9.3200 0.00000 + 9.3250 0.00000 + 9.3300 0.00000 + 9.3350 0.00000 + 9.3400 0.00000 + 9.3450 0.00000 + 9.3500 0.00000 + 9.3550 0.00000 + 9.3600 0.00000 + 9.3650 0.00000 + 9.3700 0.00000 + 9.3750 0.00000 + 9.3800 0.00000 + 9.3850 0.00000 + 9.3900 0.00000 + 9.3950 0.00000 + 9.4000 0.00000 + 9.4050 0.00000 + 9.4100 0.00000 + 9.4150 0.00000 + 9.4200 0.00000 + 9.4250 0.00000 + 9.4300 0.00000 + 9.4350 0.00000 + 9.4400 0.00000 + 9.4450 0.00000 + 9.4500 0.00000 + 9.4550 0.00000 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 9.6277e-07 + 0.20500 1.0199e-06 + 0.21000 1.0761e-06 + 0.21500 1.1310e-06 + 0.22000 1.1842e-06 + 0.22500 1.2354e-06 + 0.23000 1.2844e-06 + 0.23500 1.3309e-06 + 0.24000 1.3749e-06 + 0.24500 1.4160e-06 + 0.25000 1.4543e-06 + 0.25500 1.4897e-06 + 0.26000 1.5222e-06 + 0.26500 1.5518e-06 + 0.27000 1.5786e-06 + 0.27500 1.6027e-06 + 0.28000 1.6242e-06 + 0.28500 1.6433e-06 + 0.29000 1.6602e-06 + 0.29500 1.6749e-06 + 0.30000 1.6877e-06 + 0.30500 1.6987e-06 + 0.31000 1.7082e-06 + 0.31500 1.7162e-06 + 0.32000 1.7230e-06 + 0.32500 1.7287e-06 + 0.33000 1.7335e-06 + 0.33500 1.7374e-06 + 0.34000 1.7407e-06 + 0.34500 1.7433e-06 + 0.35000 1.7455e-06 + 0.35500 1.7472e-06 + 0.36000 1.7486e-06 + 0.36500 1.7497e-06 + 0.37000 1.7506e-06 + 0.37500 1.7513e-06 + 0.38000 1.7518e-06 + 0.38500 1.7522e-06 + 0.39000 1.7525e-06 + 0.39500 1.7528e-06 + 0.40000 1.7529e-06 + 0.40500 1.7531e-06 + 0.41000 1.7532e-06 + 0.41500 1.7533e-06 + 0.42000 1.7533e-06 + 0.42500 1.7534e-06 + 0.43000 1.7534e-06 + 0.43500 1.7534e-06 + 0.44000 1.7534e-06 + 0.44500 1.7534e-06 + 0.45000 1.7534e-06 + 0.45500 1.7534e-06 + 0.46000 1.7535e-06 + 0.46500 1.7535e-06 + 0.47000 1.7535e-06 + 0.47500 1.7535e-06 + 0.48000 1.7535e-06 + 0.48500 1.7535e-06 + 0.49000 1.7535e-06 + 0.49500 1.7535e-06 + 0.50000 1.7535e-06 + 0.50500 1.7535e-06 + 0.51000 1.7535e-06 + 0.51500 1.7535e-06 + 0.52000 1.7535e-06 + 0.52500 1.7535e-06 + 0.53000 1.7535e-06 + 0.53500 1.7535e-06 + 0.54000 1.7535e-06 + 0.54500 1.7535e-06 + 0.55000 1.7535e-06 + 0.55500 1.7535e-06 + 0.56000 1.7535e-06 + 0.56500 1.7535e-06 + 0.57000 1.7535e-06 + 0.57500 1.7535e-06 + 0.58000 1.7535e-06 + 0.58500 1.7535e-06 + 0.59000 1.7535e-06 + 0.59500 1.7535e-06 + 0.60000 1.7535e-06 + 0.60500 1.7535e-06 + 0.61000 1.7535e-06 + 0.61500 1.7535e-06 + 0.62000 1.7535e-06 + 0.62500 1.7535e-06 + 0.63000 1.7535e-06 + 0.63500 1.7535e-06 + 0.64000 1.7535e-06 + 0.64500 1.7535e-06 + 0.65000 1.7535e-06 + 0.65500 1.7535e-06 + 0.66000 1.7535e-06 + 0.66500 1.7535e-06 + 0.67000 1.7535e-06 + 0.67500 1.7535e-06 + 0.68000 1.7535e-06 + 0.68500 1.7535e-06 + 0.69000 1.7535e-06 + 0.69500 1.7535e-06 + 0.70000 1.7535e-06 + 0.70500 1.7535e-06 + 0.71000 1.7535e-06 + 0.71500 1.7535e-06 + 0.72000 1.7535e-06 + 0.72500 1.7535e-06 + 0.73000 1.7535e-06 + 0.73500 1.7535e-06 + 0.74000 1.7535e-06 + 0.74500 1.7535e-06 + 0.75000 1.7535e-06 + 0.75500 1.7535e-06 + 0.76000 1.7535e-06 + 0.76500 1.7535e-06 + 0.77000 1.7535e-06 + 0.77500 1.7535e-06 + 0.78000 1.7535e-06 + 0.78500 1.7535e-06 + 0.79000 1.7535e-06 + 0.79500 1.7535e-06 + 0.80000 1.7535e-06 + 0.80500 1.7535e-06 + 0.81000 1.7535e-06 + 0.81500 1.7535e-06 + 0.82000 1.7535e-06 + 0.82500 1.7535e-06 + 0.83000 1.7535e-06 + 0.83500 1.7535e-06 + 0.84000 1.7535e-06 + 0.84500 1.7535e-06 + 0.85000 1.7535e-06 + 0.85500 1.7535e-06 + 0.86000 1.7535e-06 + 0.86500 1.7535e-06 + 0.87000 1.7535e-06 + 0.87500 1.7535e-06 + 0.88000 1.7535e-06 + 0.88500 1.7535e-06 + 0.89000 1.7535e-06 + 0.89500 1.7535e-06 + 0.90000 1.7535e-06 + 0.90500 1.7535e-06 + 0.91000 1.7535e-06 + 0.91500 1.7535e-06 + 0.92000 1.7535e-06 + 0.92500 1.7535e-06 + 0.93000 1.7535e-06 + 0.93500 1.7535e-06 + 0.94000 1.7535e-06 + 0.94500 1.7535e-06 + 0.95000 1.7535e-06 + 0.95500 1.7535e-06 + 0.96000 1.7535e-06 + 0.96500 1.7535e-06 + 0.97000 1.7535e-06 + 0.97500 1.7535e-06 + 0.98000 1.7535e-06 + 0.98500 1.7536e-06 + 0.99000 1.7536e-06 + 0.99500 1.7537e-06 + 1.0000 1.7538e-06 + 1.0050 1.7539e-06 + 1.0100 1.7540e-06 + 1.0150 1.7542e-06 + 1.0200 1.7544e-06 + 1.0250 1.7548e-06 + 1.0300 1.7552e-06 + 1.0350 1.7557e-06 + 1.0400 1.7563e-06 + 1.0450 1.7572e-06 + 1.0500 1.7582e-06 + 1.0550 1.7596e-06 + 1.0600 1.7612e-06 + 1.0650 1.7632e-06 + 1.0700 1.7656e-06 + 1.0750 1.7686e-06 + 1.0800 1.7722e-06 + 1.0850 1.7765e-06 + 1.0900 1.7816e-06 + 1.0950 1.7876e-06 + 1.1000 1.7946e-06 + 1.1050 1.8029e-06 + 1.1100 1.8125e-06 + 1.1150 1.8235e-06 + 1.1200 1.8360e-06 + 1.1250 1.8503e-06 + 1.1300 1.8664e-06 + 1.1350 1.8845e-06 + 1.1400 1.9046e-06 + 1.1450 1.9269e-06 + 1.1500 1.9513e-06 + 1.1550 1.9780e-06 + 1.1600 2.0069e-06 + 1.1650 2.0381e-06 + 1.1700 2.0715e-06 + 1.1750 2.1070e-06 + 1.1800 2.1445e-06 + 1.1850 2.1839e-06 + 1.1900 2.2249e-06 + 1.1950 2.2674e-06 + 1.2000 2.3111e-06 + 1.2050 2.3558e-06 + 1.2100 2.4012e-06 + 1.2150 2.4470e-06 + 1.2200 2.4928e-06 + 1.2250 2.5385e-06 + 1.2300 2.5836e-06 + 1.2350 2.6278e-06 + 1.2400 2.6710e-06 + 1.2450 2.7127e-06 + 1.2500 2.7528e-06 + 1.2550 2.7909e-06 + 1.2600 2.8270e-06 + 1.2650 2.8608e-06 + 1.2700 2.8921e-06 + 1.2750 2.9208e-06 + 1.2800 2.9469e-06 + 1.2850 2.9702e-06 + 1.2900 2.9907e-06 + 1.2950 3.0083e-06 + 1.3000 3.0230e-06 + 1.3050 3.0350e-06 + 1.3100 3.0440e-06 + 1.3150 3.0503e-06 + 1.3200 3.0537e-06 + 1.3250 3.0545e-06 + 1.3300 3.0526e-06 + 1.3350 3.0481e-06 + 1.3400 3.0411e-06 + 1.3450 3.0318e-06 + 1.3500 3.0201e-06 + 1.3550 3.0062e-06 + 1.3600 2.9903e-06 + 1.3650 2.9724e-06 + 1.3700 2.9528e-06 + 1.3750 2.9315e-06 + 1.3800 2.9088e-06 + 1.3850 2.8848e-06 + 1.3900 2.8598e-06 + 1.3950 2.8340e-06 + 1.4000 2.8075e-06 + 1.4050 2.7805e-06 + 1.4100 2.7534e-06 + 1.4150 2.7263e-06 + 1.4200 2.6993e-06 + 1.4250 2.6728e-06 + 1.4300 2.6468e-06 + 1.4350 2.6217e-06 + 1.4400 2.5974e-06 + 1.4450 2.5741e-06 + 1.4500 2.5520e-06 + 1.4550 2.5312e-06 + 1.4600 2.5117e-06 + 1.4650 2.4935e-06 + 1.4700 2.4767e-06 + 1.4750 2.4612e-06 + 1.4800 2.4472e-06 + 1.4850 2.4344e-06 + 1.4900 2.4230e-06 + 1.4950 2.4127e-06 + 1.5000 2.4037e-06 + 1.5050 2.3957e-06 + 1.5100 2.3887e-06 + 1.5150 2.3826e-06 + 1.5200 2.3774e-06 + 1.5250 2.3729e-06 + 1.5300 2.3690e-06 + 1.5350 2.3658e-06 + 1.5400 2.3631e-06 + 1.5450 2.3608e-06 + 1.5500 2.3590e-06 + 1.5550 2.3574e-06 + 1.5600 2.3562e-06 + 1.5650 2.3551e-06 + 1.5700 2.3543e-06 + 1.5750 2.3537e-06 + 1.5800 2.3531e-06 + 1.5850 2.3527e-06 + 1.5900 2.3524e-06 + 1.5950 2.3522e-06 + 1.6000 2.3520e-06 + 1.6050 2.3518e-06 + 1.6100 2.3517e-06 + 1.6150 2.3516e-06 + 1.6200 2.3515e-06 + 1.6250 2.3515e-06 + 1.6300 2.3515e-06 + 1.6350 2.3514e-06 + 1.6400 2.3514e-06 + 1.6450 2.3514e-06 + 1.6500 2.3514e-06 + 1.6550 2.3514e-06 + 1.6600 2.3514e-06 + 1.6650 2.3514e-06 + 1.6700 2.3514e-06 + 1.6750 2.3514e-06 + 1.6800 2.3514e-06 + 1.6850 2.3514e-06 + 1.6900 2.3514e-06 + 1.6950 2.3514e-06 + 1.7000 2.3514e-06 + 1.7050 2.3514e-06 + 1.7100 2.3514e-06 + 1.7150 2.3514e-06 + 1.7200 2.3514e-06 + 1.7250 2.3514e-06 + 1.7300 2.3514e-06 + 1.7350 2.3514e-06 + 1.7400 2.3514e-06 + 1.7450 2.3514e-06 + 1.7500 2.3514e-06 + 1.7550 2.3514e-06 + 1.7600 2.3514e-06 + 1.7650 2.3514e-06 + 1.7700 2.3514e-06 + 1.7750 2.3514e-06 + 1.7800 2.3514e-06 + 1.7850 2.3514e-06 + 1.7900 2.3514e-06 + 1.7950 2.3514e-06 + 1.8000 2.3514e-06 + 1.8050 2.3514e-06 + 1.8100 2.3514e-06 + 1.8150 2.3514e-06 + 1.8200 2.3514e-06 + 1.8250 2.3514e-06 + 1.8300 2.3514e-06 + 1.8350 2.3514e-06 + 1.8400 2.3514e-06 + 1.8450 2.3514e-06 + 1.8500 2.3514e-06 + 1.8550 2.3514e-06 + 1.8600 2.3514e-06 + 1.8650 2.3514e-06 + 1.8700 2.3514e-06 + 1.8750 2.3514e-06 + 1.8800 2.3514e-06 + 1.8850 2.3514e-06 + 1.8900 2.3514e-06 + 1.8950 2.3514e-06 + 1.9000 2.3514e-06 + 1.9050 2.3514e-06 + 1.9100 2.3514e-06 + 1.9150 2.3514e-06 + 1.9200 2.3514e-06 + 1.9250 2.3514e-06 + 1.9300 2.3514e-06 + 1.9350 2.3514e-06 + 1.9400 2.3514e-06 + 1.9450 2.3514e-06 + 1.9500 2.3514e-06 + 1.9550 2.3514e-06 + 1.9600 2.3514e-06 + 1.9650 2.3514e-06 + 1.9700 2.3514e-06 + 1.9750 2.3514e-06 + 1.9800 2.3514e-06 + 1.9850 2.3514e-06 + 1.9900 2.3514e-06 + 1.9950 2.3514e-06 + 2.0000 2.3514e-06 + 2.0050 2.3514e-06 + 2.0100 2.3514e-06 + 2.0150 2.3514e-06 + 2.0200 2.3514e-06 + 2.0250 2.3514e-06 + 2.0300 2.3514e-06 + 2.0350 2.3514e-06 + 2.0400 2.3514e-06 + 2.0450 2.3514e-06 + 2.0500 2.3514e-06 + 2.0550 2.3514e-06 + 2.0600 2.3514e-06 + 2.0650 2.3514e-06 + 2.0700 2.3514e-06 + 2.0750 2.3514e-06 + 2.0800 2.3514e-06 + 2.0850 2.3514e-06 + 2.0900 2.3514e-06 + 2.0950 2.3514e-06 + 2.1000 2.3514e-06 + 2.1050 2.3514e-06 + 2.1100 2.3514e-06 + 2.1150 2.3514e-06 + 2.1200 2.3514e-06 + 2.1250 2.3514e-06 + 2.1300 2.3514e-06 + 2.1350 2.3514e-06 + 2.1400 2.3514e-06 + 2.1450 2.3514e-06 + 2.1500 2.3514e-06 + 2.1550 2.3514e-06 + 2.1600 2.3514e-06 + 2.1650 2.3514e-06 + 2.1700 2.3514e-06 + 2.1750 2.3514e-06 + 2.1800 2.3514e-06 + 2.1850 2.3514e-06 + 2.1900 2.3514e-06 + 2.1950 2.3514e-06 + 2.2000 2.3514e-06 + 2.2050 2.3514e-06 + 2.2100 2.3514e-06 + 2.2150 2.3514e-06 + 2.2200 2.3514e-06 + 2.2250 2.3514e-06 + 2.2300 2.3514e-06 + 2.2350 2.3514e-06 + 2.2400 2.3514e-06 + 2.2450 2.3514e-06 + 2.2500 2.3514e-06 + 2.2550 2.3514e-06 + 2.2600 2.3514e-06 + 2.2650 2.3514e-06 + 2.2700 2.3514e-06 + 2.2750 2.3514e-06 + 2.2800 2.3514e-06 + 2.2850 2.3514e-06 + 2.2900 2.3514e-06 + 2.2950 2.3514e-06 + 2.3000 2.3514e-06 + 2.3050 2.3514e-06 + 2.3100 2.3514e-06 + 2.3150 2.3514e-06 + 2.3200 2.3514e-06 + 2.3250 2.3514e-06 + 2.3300 2.3514e-06 + 2.3350 2.3514e-06 + 2.3400 2.3514e-06 + 2.3450 2.3514e-06 + 2.3500 2.3514e-06 + 2.3550 2.3514e-06 + 2.3600 2.3514e-06 + 2.3650 2.3514e-06 + 2.3700 2.3514e-06 + 2.3750 2.3514e-06 + 2.3800 2.3514e-06 + 2.3850 2.3514e-06 + 2.3900 2.3514e-06 + 2.3950 2.3514e-06 + 2.4000 2.3514e-06 + 2.4050 2.3514e-06 + 2.4100 2.3514e-06 + 2.4150 2.3514e-06 + 2.4200 2.3514e-06 + 2.4250 2.3514e-06 + 2.4300 2.3514e-06 + 2.4350 2.3514e-06 + 2.4400 2.3514e-06 + 2.4450 2.3514e-06 + 2.4500 2.3514e-06 + 2.4550 2.3514e-06 + 2.4600 2.3514e-06 + 2.4650 2.3514e-06 + 2.4700 2.3514e-06 + 2.4750 2.3514e-06 + 2.4800 2.3514e-06 + 2.4850 2.3514e-06 + 2.4900 2.3514e-06 + 2.4950 2.3514e-06 + 2.5000 2.3514e-06 + 2.5050 2.3514e-06 + 2.5100 2.3514e-06 + 2.5150 2.3514e-06 + 2.5200 2.3514e-06 + 2.5250 2.3514e-06 + 2.5300 2.3514e-06 + 2.5350 2.3514e-06 + 2.5400 2.3514e-06 + 2.5450 2.3514e-06 + 2.5500 2.3514e-06 + 2.5550 2.3514e-06 + 2.5600 2.3514e-06 + 2.5650 2.3514e-06 + 2.5700 2.3514e-06 + 2.5750 2.3514e-06 + 2.5800 2.3514e-06 + 2.5850 2.3514e-06 + 2.5900 2.3514e-06 + 2.5950 2.3514e-06 + 2.6000 2.3514e-06 + 2.6050 2.3514e-06 + 2.6100 2.3514e-06 + 2.6150 2.3514e-06 + 2.6200 2.3514e-06 + 2.6250 2.3514e-06 + 2.6300 2.3514e-06 + 2.6350 2.3514e-06 + 2.6400 2.3514e-06 + 2.6450 2.3514e-06 + 2.6500 2.3514e-06 + 2.6550 2.3514e-06 + 2.6600 2.3514e-06 + 2.6650 2.3514e-06 + 2.6700 2.3514e-06 + 2.6750 2.3514e-06 + 2.6800 2.3514e-06 + 2.6850 2.3514e-06 + 2.6900 2.3514e-06 + 2.6950 2.3514e-06 + 2.7000 2.3514e-06 + 2.7050 2.3514e-06 + 2.7100 2.3514e-06 + 2.7150 2.3514e-06 + 2.7200 2.3514e-06 + 2.7250 2.3514e-06 + 2.7300 2.3514e-06 + 2.7350 2.3514e-06 + 2.7400 2.3514e-06 + 2.7450 2.3514e-06 + 2.7500 2.3514e-06 + 2.7550 2.3514e-06 + 2.7600 2.3514e-06 + 2.7650 2.3514e-06 + 2.7700 2.3514e-06 + 2.7750 2.3514e-06 + 2.7800 2.3514e-06 + 2.7850 2.3514e-06 + 2.7900 2.3514e-06 + 2.7950 2.3514e-06 + 2.8000 2.3514e-06 + 2.8050 2.3514e-06 + 2.8100 2.3514e-06 + 2.8150 2.3514e-06 + 2.8200 2.3514e-06 + 2.8250 2.3514e-06 + 2.8300 2.3514e-06 + 2.8350 2.3514e-06 + 2.8400 2.3514e-06 + 2.8450 2.3514e-06 + 2.8500 2.3514e-06 + 2.8550 2.3514e-06 + 2.8600 2.3514e-06 + 2.8650 2.3514e-06 + 2.8700 2.3514e-06 + 2.8750 2.3514e-06 + 2.8800 2.3514e-06 + 2.8850 2.3514e-06 + 2.8900 2.3514e-06 + 2.8950 2.3514e-06 + 2.9000 2.3514e-06 + 2.9050 2.3514e-06 + 2.9100 2.3514e-06 + 2.9150 2.3514e-06 + 2.9200 2.3514e-06 + 2.9250 2.3514e-06 + 2.9300 2.3514e-06 + 2.9350 2.3514e-06 + 2.9400 2.3514e-06 + 2.9450 2.3514e-06 + 2.9500 2.3514e-06 + 2.9550 2.3514e-06 + 2.9600 2.3514e-06 + 2.9650 2.3514e-06 + 2.9700 2.3514e-06 + 2.9750 2.3514e-06 + 2.9800 2.3514e-06 + 2.9850 2.3514e-06 + 2.9900 2.3514e-06 + 2.9950 2.3514e-06 + 3.0000 2.3514e-06 + 3.0050 2.3514e-06 + 3.0100 2.3514e-06 + 3.0150 2.3514e-06 + 3.0200 2.3514e-06 + 3.0250 2.3514e-06 + 3.0300 2.3514e-06 + 3.0350 2.3514e-06 + 3.0400 2.3514e-06 + 3.0450 2.3514e-06 + 3.0500 2.3514e-06 + 3.0550 2.3514e-06 + 3.0600 2.3514e-06 + 3.0650 2.3514e-06 + 3.0700 2.3514e-06 + 3.0750 2.3514e-06 + 3.0800 2.3514e-06 + 3.0850 2.3514e-06 + 3.0900 2.3514e-06 + 3.0950 2.3514e-06 + 3.1000 2.3514e-06 + 3.1050 2.3514e-06 + 3.1100 2.3514e-06 + 3.1150 2.3514e-06 + 3.1200 2.3514e-06 + 3.1250 2.3514e-06 + 3.1300 2.3514e-06 + 3.1350 2.3514e-06 + 3.1400 2.3514e-06 + 3.1450 2.3514e-06 + 3.1500 2.3514e-06 + 3.1550 2.3514e-06 + 3.1600 2.3514e-06 + 3.1650 2.3514e-06 + 3.1700 2.3514e-06 + 3.1750 2.3514e-06 + 3.1800 2.3514e-06 + 3.1850 2.3514e-06 + 3.1900 2.3514e-06 + 3.1950 2.3514e-06 + 3.2000 2.3514e-06 + 3.2050 2.3514e-06 + 3.2100 2.3514e-06 + 3.2150 2.3514e-06 + 3.2200 2.3514e-06 + 3.2250 2.3514e-06 + 3.2300 2.3514e-06 + 3.2350 2.3514e-06 + 3.2400 2.3514e-06 + 3.2450 2.3514e-06 + 3.2500 2.3514e-06 + 3.2550 2.3514e-06 + 3.2600 2.3514e-06 + 3.2650 2.3514e-06 + 3.2700 2.3514e-06 + 3.2750 2.3514e-06 + 3.2800 2.3514e-06 + 3.2850 2.3514e-06 + 3.2900 2.3514e-06 + 3.2950 2.3514e-06 + 3.3000 2.3514e-06 + 3.3050 2.3514e-06 + 3.3100 2.3514e-06 + 3.3150 2.3514e-06 + 3.3200 2.3514e-06 + 3.3250 2.3514e-06 + 3.3300 2.3514e-06 + 3.3350 2.3514e-06 + 3.3400 2.3514e-06 + 3.3450 2.3514e-06 + 3.3500 2.3514e-06 + 3.3550 2.3514e-06 + 3.3600 2.3514e-06 + 3.3650 2.3514e-06 + 3.3700 2.3514e-06 + 3.3750 2.3514e-06 + 3.3800 2.3514e-06 + 3.3850 2.3514e-06 + 3.3900 2.3514e-06 + 3.3950 2.3514e-06 + 3.4000 2.3514e-06 + 3.4050 2.3514e-06 + 3.4100 2.3514e-06 + 3.4150 2.3514e-06 + 3.4200 2.3514e-06 + 3.4250 2.3514e-06 + 3.4300 2.3514e-06 + 3.4350 2.3514e-06 + 3.4400 2.3514e-06 + 3.4450 2.3514e-06 + 3.4500 2.3514e-06 + 3.4550 2.3514e-06 + 3.4600 2.3514e-06 + 3.4650 2.3514e-06 + 3.4700 2.3514e-06 + 3.4750 2.3514e-06 + 3.4800 2.3514e-06 + 3.4850 2.3514e-06 + 3.4900 2.3514e-06 + 3.4950 2.3514e-06 + 3.5000 2.3514e-06 + 3.5050 2.3514e-06 + 3.5100 2.3514e-06 + 3.5150 2.3514e-06 + 3.5200 2.3514e-06 + 3.5250 2.3514e-06 + 3.5300 2.3514e-06 + 3.5350 2.3514e-06 + 3.5400 2.3514e-06 + 3.5450 2.3514e-06 + 3.5500 2.3514e-06 + 3.5550 2.3514e-06 + 3.5600 2.3514e-06 + 3.5650 2.3514e-06 + 3.5700 2.3514e-06 + 3.5750 2.3514e-06 + 3.5800 2.3514e-06 + 3.5850 2.3514e-06 + 3.5900 2.3514e-06 + 3.5950 2.3514e-06 + 3.6000 2.3514e-06 + 3.6050 2.3514e-06 + 3.6100 2.3514e-06 + 3.6150 2.3514e-06 + 3.6200 2.3514e-06 + 3.6250 2.3514e-06 + 3.6300 2.3514e-06 + 3.6350 2.3514e-06 + 3.6400 2.3514e-06 + 3.6450 2.3514e-06 + 3.6500 2.3514e-06 + 3.6550 2.3514e-06 + 3.6600 2.3514e-06 + 3.6650 2.3514e-06 + 3.6700 2.3514e-06 + 3.6750 2.3514e-06 + 3.6800 2.3514e-06 + 3.6850 2.3514e-06 + 3.6900 2.3514e-06 + 3.6950 2.3514e-06 + 3.7000 2.3514e-06 + 3.7050 2.3514e-06 + 3.7100 2.3514e-06 + 3.7150 2.3514e-06 + 3.7200 2.3514e-06 + 3.7250 2.3514e-06 + 3.7300 2.3514e-06 + 3.7350 2.3514e-06 + 3.7400 2.3514e-06 + 3.7450 2.3514e-06 + 3.7500 2.3514e-06 + 3.7550 2.3514e-06 + 3.7600 2.3514e-06 + 3.7650 2.3514e-06 + 3.7700 2.3514e-06 + 3.7750 2.3514e-06 + 3.7800 2.3514e-06 + 3.7850 2.3514e-06 + 3.7900 2.3514e-06 + 3.7950 2.3514e-06 + 3.8000 2.3514e-06 + 3.8050 2.3514e-06 + 3.8100 2.3514e-06 + 3.8150 2.3514e-06 + 3.8200 2.3514e-06 + 3.8250 2.3514e-06 + 3.8300 2.3514e-06 + 3.8350 2.3514e-06 + 3.8400 2.3514e-06 + 3.8450 2.3514e-06 + 3.8500 2.3514e-06 + 3.8550 2.3514e-06 + 3.8600 2.3514e-06 + 3.8650 2.3514e-06 + 3.8700 2.3514e-06 + 3.8750 2.3514e-06 + 3.8800 2.3514e-06 + 3.8850 2.3514e-06 + 3.8900 2.3514e-06 + 3.8950 2.3514e-06 + 3.9000 2.3514e-06 + 3.9050 2.3514e-06 + 3.9100 2.3514e-06 + 3.9150 2.3514e-06 + 3.9200 2.3514e-06 + 3.9250 2.3514e-06 + 3.9300 2.3514e-06 + 3.9350 2.3514e-06 + 3.9400 2.3514e-06 + 3.9450 2.3514e-06 + 3.9500 2.3514e-06 + 3.9550 2.3514e-06 + 3.9600 2.3514e-06 + 3.9650 2.3514e-06 + 3.9700 2.3514e-06 + 3.9750 2.3514e-06 + 3.9800 2.3514e-06 + 3.9850 2.3514e-06 + 3.9900 2.3514e-06 + 3.9950 2.3514e-06 + 4.0000 2.3514e-06 + 4.0050 2.3514e-06 + 4.0100 2.3514e-06 + 4.0150 2.3514e-06 + 4.0200 2.3514e-06 + 4.0250 2.3514e-06 + 4.0300 2.3514e-06 + 4.0350 2.3514e-06 + 4.0400 2.3514e-06 + 4.0450 2.3514e-06 + 4.0500 2.3514e-06 + 4.0550 2.3514e-06 + 4.0600 2.3514e-06 + 4.0650 2.3514e-06 + 4.0700 2.3514e-06 + 4.0750 2.3514e-06 + 4.0800 2.3514e-06 + 4.0850 2.3514e-06 + 4.0900 2.3514e-06 + 4.0950 2.3514e-06 + 4.1000 2.3514e-06 + 4.1050 2.3514e-06 + 4.1100 2.3514e-06 + 4.1150 2.3514e-06 + 4.1200 2.3514e-06 + 4.1250 2.3514e-06 + 4.1300 2.3514e-06 + 4.1350 2.3514e-06 + 4.1400 2.3514e-06 + 4.1450 2.3514e-06 + 4.1500 2.3514e-06 + 4.1550 2.3514e-06 + 4.1600 2.3514e-06 + 4.1650 2.3514e-06 + 4.1700 2.3514e-06 + 4.1750 2.3514e-06 + 4.1800 2.3514e-06 + 4.1850 2.3514e-06 + 4.1900 2.3514e-06 + 4.1950 2.3514e-06 + 4.2000 2.3514e-06 + 4.2050 2.3514e-06 + 4.2100 2.3514e-06 + 4.2150 2.3514e-06 + 4.2200 2.3514e-06 + 4.2250 2.3514e-06 + 4.2300 2.3514e-06 + 4.2350 2.3514e-06 + 4.2400 2.3514e-06 + 4.2450 2.3514e-06 + 4.2500 2.3514e-06 + 4.2550 2.3514e-06 + 4.2600 2.3514e-06 + 4.2650 2.3514e-06 + 4.2700 2.3514e-06 + 4.2750 2.3514e-06 + 4.2800 2.3514e-06 + 4.2850 2.3514e-06 + 4.2900 2.3514e-06 + 4.2950 2.3514e-06 + 4.3000 2.3514e-06 + 4.3050 2.3514e-06 + 4.3100 2.3514e-06 + 4.3150 2.3514e-06 + 4.3200 2.3514e-06 + 4.3250 2.3514e-06 + 4.3300 2.3514e-06 + 4.3350 2.3514e-06 + 4.3400 2.3514e-06 + 4.3450 2.3514e-06 + 4.3500 2.3514e-06 + 4.3550 2.3514e-06 + 4.3600 2.3514e-06 + 4.3650 2.3514e-06 + 4.3700 2.3514e-06 + 4.3750 2.3514e-06 + 4.3800 2.3514e-06 + 4.3850 2.3514e-06 + 4.3900 2.3514e-06 + 4.3950 2.3514e-06 + 4.4000 2.3514e-06 + 4.4050 2.3514e-06 + 4.4100 2.3514e-06 + 4.4150 2.3514e-06 + 4.4200 2.3514e-06 + 4.4250 2.3514e-06 + 4.4300 2.3514e-06 + 4.4350 2.3514e-06 + 4.4400 2.3514e-06 + 4.4450 2.3514e-06 + 4.4500 2.3514e-06 + 4.4550 2.3514e-06 + 4.4600 2.3514e-06 + 4.4650 2.3514e-06 + 4.4700 2.3514e-06 + 4.4750 2.3514e-06 + 4.4800 2.3514e-06 + 4.4850 2.3514e-06 + 4.4900 2.3514e-06 + 4.4950 2.3514e-06 + 4.5000 2.3514e-06 + 4.5050 2.3514e-06 + 4.5100 2.3514e-06 + 4.5150 2.3514e-06 + 4.5200 2.3514e-06 + 4.5250 2.3514e-06 + 4.5300 2.3514e-06 + 4.5350 2.3514e-06 + 4.5400 2.3514e-06 + 4.5450 2.3514e-06 + 4.5500 2.3514e-06 + 4.5550 2.3514e-06 + 4.5600 2.3514e-06 + 4.5650 2.3514e-06 + 4.5700 2.3514e-06 + 4.5750 2.3514e-06 + 4.5800 2.3514e-06 + 4.5850 2.3514e-06 + 4.5900 2.3514e-06 + 4.5950 2.3514e-06 + 4.6000 2.3514e-06 + 4.6050 2.3514e-06 + 4.6100 2.3514e-06 + 4.6150 2.3514e-06 + 4.6200 2.3514e-06 + 4.6250 2.3514e-06 + 4.6300 2.3514e-06 + 4.6350 2.3514e-06 + 4.6400 2.3514e-06 + 4.6450 2.3514e-06 + 4.6500 2.3514e-06 + 4.6550 2.3514e-06 + 4.6600 2.3514e-06 + 4.6650 2.3514e-06 + 4.6700 2.3514e-06 + 4.6750 2.3514e-06 + 4.6800 2.3514e-06 + 4.6850 2.3514e-06 + 4.6900 2.3514e-06 + 4.6950 2.3514e-06 + 4.7000 2.3514e-06 + 4.7050 2.3514e-06 + 4.7100 2.3514e-06 + 4.7150 2.3514e-06 + 4.7200 2.3514e-06 + 4.7250 2.3514e-06 + 4.7300 2.3514e-06 + 4.7350 2.3514e-06 + 4.7400 2.3514e-06 + 4.7450 2.3514e-06 + 4.7500 2.3514e-06 + 4.7550 2.3514e-06 + 4.7600 2.3514e-06 + 4.7650 2.3514e-06 + 4.7700 2.3514e-06 + 4.7750 2.3514e-06 + 4.7800 2.3514e-06 + 4.7850 2.3514e-06 + 4.7900 2.3514e-06 + 4.7950 2.3514e-06 + 4.8000 2.3514e-06 + 4.8050 2.3514e-06 + 4.8100 2.3514e-06 + 4.8150 2.3514e-06 + 4.8200 2.3514e-06 + 4.8250 2.3514e-06 + 4.8300 2.3514e-06 + 4.8350 2.3514e-06 + 4.8400 2.3514e-06 + 4.8450 2.3514e-06 + 4.8500 2.3514e-06 + 4.8550 2.3514e-06 + 4.8600 2.3514e-06 + 4.8650 2.3514e-06 + 4.8700 2.3514e-06 + 4.8750 2.3514e-06 + 4.8800 2.3514e-06 + 4.8850 2.3514e-06 + 4.8900 2.3514e-06 + 4.8950 2.3514e-06 + 4.9000 2.3514e-06 + 4.9050 2.3514e-06 + 4.9100 2.3514e-06 + 4.9150 2.3514e-06 + 4.9200 2.3514e-06 + 4.9250 2.3514e-06 + 4.9300 2.3514e-06 + 4.9350 2.3514e-06 + 4.9400 2.3514e-06 + 4.9450 2.3514e-06 + 4.9500 2.3514e-06 + 4.9550 2.3514e-06 + 4.9600 2.3514e-06 + 4.9650 2.3514e-06 + 4.9700 2.3514e-06 + 4.9750 2.3514e-06 + 4.9800 2.3514e-06 + 4.9850 2.3514e-06 + 4.9900 2.3514e-06 + 4.9950 2.3514e-06 + 5.0000 2.3514e-06 + 5.0050 2.3514e-06 + 5.0100 2.3514e-06 + 5.0150 2.3514e-06 + 5.0200 2.3514e-06 + 5.0250 2.3514e-06 + 5.0300 2.3514e-06 + 5.0350 2.3514e-06 + 5.0400 2.3514e-06 + 5.0450 2.3514e-06 + 5.0500 2.3514e-06 + 5.0550 2.3514e-06 + 5.0600 2.3514e-06 + 5.0650 2.3514e-06 + 5.0700 2.3514e-06 + 5.0750 2.3514e-06 + 5.0800 2.3514e-06 + 5.0850 2.3514e-06 + 5.0900 2.3514e-06 + 5.0950 2.3514e-06 + 5.1000 2.3514e-06 + 5.1050 2.3514e-06 + 5.1100 2.3514e-06 + 5.1150 2.3514e-06 + 5.1200 2.3514e-06 + 5.1250 2.3514e-06 + 5.1300 2.3514e-06 + 5.1350 2.3514e-06 + 5.1400 2.3514e-06 + 5.1450 2.3514e-06 + 5.1500 2.3514e-06 + 5.1550 2.3514e-06 + 5.1600 2.3514e-06 + 5.1650 2.3514e-06 + 5.1700 2.3514e-06 + 5.1750 2.3514e-06 + 5.1800 2.3514e-06 + 5.1850 2.3514e-06 + 5.1900 2.3514e-06 + 5.1950 2.3514e-06 + 5.2000 2.3513e-06 + 5.2050 2.3513e-06 + 5.2100 2.3513e-06 + 5.2150 2.3513e-06 + 5.2200 2.3513e-06 + 5.2250 2.3513e-06 + 5.2300 2.3513e-06 + 5.2350 2.3512e-06 + 5.2400 2.3512e-06 + 5.2450 2.3511e-06 + 5.2500 2.3510e-06 + 5.2550 2.3509e-06 + 5.2600 2.3508e-06 + 5.2650 2.3506e-06 + 5.2700 2.3503e-06 + 5.2750 2.3501e-06 + 5.2800 2.3497e-06 + 5.2850 2.3492e-06 + 5.2900 2.3487e-06 + 5.2950 2.3480e-06 + 5.3000 2.3472e-06 + 5.3050 2.3462e-06 + 5.3100 2.3450e-06 + 5.3150 2.3435e-06 + 5.3200 2.3418e-06 + 5.3250 2.3399e-06 + 5.3300 2.3375e-06 + 5.3350 2.3348e-06 + 5.3400 2.3318e-06 + 5.3450 2.3282e-06 + 5.3500 2.3242e-06 + 5.3550 2.3197e-06 + 5.3600 2.3146e-06 + 5.3650 2.3090e-06 + 5.3700 2.3027e-06 + 5.3750 2.2959e-06 + 5.3800 2.2884e-06 + 5.3850 2.2804e-06 + 5.3900 2.2717e-06 + 5.3950 2.2625e-06 + 5.4000 2.2527e-06 + 5.4050 2.2424e-06 + 5.4100 2.2316e-06 + 5.4150 2.2204e-06 + 5.4200 2.2088e-06 + 5.4250 2.1970e-06 + 5.4300 2.1850e-06 + 5.4350 2.1728e-06 + 5.4400 2.1606e-06 + 5.4450 2.1484e-06 + 5.4500 2.1364e-06 + 5.4550 2.1246e-06 + 5.4600 2.1130e-06 + 5.4650 2.1018e-06 + 5.4700 2.0910e-06 + 5.4750 2.0807e-06 + 5.4800 2.0709e-06 + 5.4850 2.0617e-06 + 5.4900 2.0530e-06 + 5.4950 2.0450e-06 + 5.5000 2.0375e-06 + 5.5050 2.0307e-06 + 5.5100 2.0245e-06 + 5.5150 2.0189e-06 + 5.5200 2.0139e-06 + 5.5250 2.0095e-06 + 5.5300 2.0057e-06 + 5.5350 2.0024e-06 + 5.5400 1.9996e-06 + 5.5450 1.9974e-06 + 5.5500 1.9958e-06 + 5.5550 1.9948e-06 + 5.5600 1.9945e-06 + 5.5650 1.9949e-06 + 5.5700 1.9963e-06 + 5.5750 1.9988e-06 + 5.5800 2.0028e-06 + 5.5850 2.0085e-06 + 5.5900 2.0164e-06 + 5.5950 2.0271e-06 + 5.6000 2.0413e-06 + 5.6050 2.0599e-06 + 5.6100 2.0840e-06 + 5.6150 2.1149e-06 + 5.6200 2.1542e-06 + 5.6250 2.2035e-06 + 5.6300 2.2651e-06 + 5.6350 2.3413e-06 + 5.6400 2.4347e-06 + 5.6450 2.5484e-06 + 5.6500 2.6855e-06 + 5.6550 2.8495e-06 + 5.6600 3.0441e-06 + 5.6650 3.2730e-06 + 5.6700 3.5400e-06 + 5.6750 3.8487e-06 + 5.6800 4.2026e-06 + 5.6850 4.6046e-06 + 5.6900 5.0573e-06 + 5.6950 5.5625e-06 + 5.7000 6.1210e-06 + 5.7050 6.7325e-06 + 5.7100 7.3957e-06 + 5.7150 8.1078e-06 + 5.7200 8.8644e-06 + 5.7250 9.6597e-06 + 5.7300 1.0487e-05 + 5.7350 1.1336e-05 + 5.7400 1.2198e-05 + 5.7450 1.3060e-05 + 5.7500 1.3912e-05 + 5.7550 1.4738e-05 + 5.7600 1.5527e-05 + 5.7650 1.6264e-05 + 5.7700 1.6936e-05 + 5.7750 1.7530e-05 + 5.7800 1.8036e-05 + 5.7850 1.8444e-05 + 5.7900 1.8746e-05 + 5.7950 1.8936e-05 + 5.8000 1.9011e-05 + 5.8050 1.8969e-05 + 5.8100 1.8813e-05 + 5.8150 1.8545e-05 + 5.8200 1.8173e-05 + 5.8250 1.7705e-05 + 5.8300 1.7150e-05 + 5.8350 1.6520e-05 + 5.8400 1.5827e-05 + 5.8450 1.5085e-05 + 5.8500 1.4307e-05 + 5.8550 1.3506e-05 + 5.8600 1.2696e-05 + 5.8650 1.1888e-05 + 5.8700 1.1093e-05 + 5.8750 1.0322e-05 + 5.8800 9.5814e-06 + 5.8850 8.8793e-06 + 5.8900 8.2208e-06 + 5.8950 7.6097e-06 + 5.9000 7.0482e-06 + 5.9050 6.5375e-06 + 5.9100 6.0775e-06 + 5.9150 5.6671e-06 + 5.9200 5.3042e-06 + 5.9250 4.9864e-06 + 5.9300 4.7106e-06 + 5.9350 4.4733e-06 + 5.9400 4.2709e-06 + 5.9450 4.0998e-06 + 5.9500 3.9565e-06 + 5.9550 3.8373e-06 + 5.9600 3.7392e-06 + 5.9650 3.6590e-06 + 5.9700 3.5941e-06 + 5.9750 3.5419e-06 + 5.9800 3.5004e-06 + 5.9850 3.4676e-06 + 5.9900 3.4418e-06 + 5.9950 3.4219e-06 + 6.0000 3.4065e-06 + 6.0050 3.3947e-06 + 6.0100 3.3858e-06 + 6.0150 3.3791e-06 + 6.0200 3.3741e-06 + 6.0250 3.3704e-06 + 6.0300 3.3677e-06 + 6.0350 3.3657e-06 + 6.0400 3.3643e-06 + 6.0450 3.3633e-06 + 6.0500 3.3626e-06 + 6.0550 3.3621e-06 + 6.0600 3.3617e-06 + 6.0650 3.3615e-06 + 6.0700 3.3614e-06 + 6.0750 3.3614e-06 + 6.0800 3.3614e-06 + 6.0850 3.3615e-06 + 6.0900 3.3617e-06 + 6.0950 3.3620e-06 + 6.1000 3.3624e-06 + 6.1050 3.3631e-06 + 6.1100 3.3639e-06 + 6.1150 3.3651e-06 + 6.1200 3.3668e-06 + 6.1250 3.3689e-06 + 6.1300 3.3719e-06 + 6.1350 3.3758e-06 + 6.1400 3.3809e-06 + 6.1450 3.3877e-06 + 6.1500 3.3965e-06 + 6.1550 3.4080e-06 + 6.1600 3.4227e-06 + 6.1650 3.4415e-06 + 6.1700 3.4654e-06 + 6.1750 3.4956e-06 + 6.1800 3.5333e-06 + 6.1850 3.5802e-06 + 6.1900 3.6382e-06 + 6.1950 3.7093e-06 + 6.2000 3.7959e-06 + 6.2050 3.9008e-06 + 6.2100 4.0268e-06 + 6.2150 4.1773e-06 + 6.2200 4.3557e-06 + 6.2250 4.5659e-06 + 6.2300 4.8117e-06 + 6.2350 5.0974e-06 + 6.2400 5.4271e-06 + 6.2450 5.8050e-06 + 6.2500 6.2354e-06 + 6.2550 6.7221e-06 + 6.2600 7.2690e-06 + 6.2650 7.8792e-06 + 6.2700 8.5557e-06 + 6.2750 9.3007e-06 + 6.2800 1.0116e-05 + 6.2850 1.1001e-05 + 6.2900 1.1957e-05 + 6.2950 1.2982e-05 + 6.3000 1.4074e-05 + 6.3050 1.5230e-05 + 6.3100 1.6446e-05 + 6.3150 1.7717e-05 + 6.3200 1.9036e-05 + 6.3250 2.0398e-05 + 6.3300 2.1794e-05 + 6.3350 2.3217e-05 + 6.3400 2.4658e-05 + 6.3450 2.6110e-05 + 6.3500 2.7563e-05 + 6.3550 2.9009e-05 + 6.3600 3.0441e-05 + 6.3650 3.1850e-05 + 6.3700 3.3231e-05 + 6.3750 3.4577e-05 + 6.3800 3.5882e-05 + 6.3850 3.7142e-05 + 6.3900 3.8355e-05 + 6.3950 3.9517e-05 + 6.4000 4.0627e-05 + 6.4050 4.1683e-05 + 6.4100 4.2688e-05 + 6.4150 4.3640e-05 + 6.4200 4.4543e-05 + 6.4250 4.5398e-05 + 6.4300 4.6207e-05 + 6.4350 4.6974e-05 + 6.4400 4.7702e-05 + 6.4450 4.8395e-05 + 6.4500 4.9056e-05 + 6.4550 4.9688e-05 + 6.4600 5.0295e-05 + 6.4650 5.0880e-05 + 6.4700 5.1446e-05 + 6.4750 5.1997e-05 + 6.4800 5.2534e-05 + 6.4850 5.3061e-05 + 6.4900 5.3580e-05 + 6.4950 5.4093e-05 + 6.5000 5.4600e-05 + 6.5050 5.5105e-05 + 6.5100 5.5608e-05 + 6.5150 5.6110e-05 + 6.5200 5.6613e-05 + 6.5250 5.7116e-05 + 6.5300 5.7622e-05 + 6.5350 5.8130e-05 + 6.5400 5.8640e-05 + 6.5450 5.9155e-05 + 6.5500 5.9672e-05 + 6.5550 6.0194e-05 + 6.5600 6.0719e-05 + 6.5650 6.1249e-05 + 6.5700 6.1783e-05 + 6.5750 6.2322e-05 + 6.5800 6.2865e-05 + 6.5850 6.3413e-05 + 6.5900 6.3966e-05 + 6.5950 6.4523e-05 + 6.6000 6.5086e-05 + 6.6050 6.5653e-05 + 6.6100 6.6226e-05 + 6.6150 6.6803e-05 + 6.6200 6.7386e-05 + 6.6250 6.7974e-05 + 6.6300 6.8567e-05 + 6.6350 6.9166e-05 + 6.6400 6.9770e-05 + 6.6450 7.0380e-05 + 6.6500 7.0995e-05 + 6.6550 7.1617e-05 + 6.6600 7.2244e-05 + 6.6650 7.2879e-05 + 6.6700 7.3521e-05 + 6.6750 7.4171e-05 + 6.6800 7.4830e-05 + 6.6850 7.5501e-05 + 6.6900 7.6186e-05 + 6.6950 7.6888e-05 + 6.7000 7.7614e-05 + 6.7050 7.8370e-05 + 6.7100 7.9168e-05 + 6.7150 8.0024e-05 + 6.7200 8.0958e-05 + 6.7250 8.2000e-05 + 6.7300 8.3192e-05 + 6.7350 8.4589e-05 + 6.7400 8.6269e-05 + 6.7450 8.8332e-05 + 6.7500 9.0917e-05 + 6.7550 9.4204e-05 + 6.7600 9.8432e-05 + 6.7650 0.00010391 + 6.7700 0.00011104 + 6.7750 0.00012033 + 6.7800 0.00013243 + 6.7850 0.00014817 + 6.7900 0.00016854 + 6.7950 0.00019482 + 6.8000 0.00022853 + 6.8050 0.00027153 + 6.8100 0.00032603 + 6.8150 0.00039465 + 6.8200 0.00048049 + 6.8250 0.00058709 + 6.8300 0.00071853 + 6.8350 0.00087942 + 6.8400 0.0010749 + 6.8450 0.0013106 + 6.8500 0.0015926 + 6.8550 0.0019274 + 6.8600 0.0023218 + 6.8650 0.0027826 + 6.8700 0.0033167 + 6.8750 0.0039307 + 6.8800 0.0046307 + 6.8850 0.0054220 + 6.8900 0.0063088 + 6.8950 0.0072938 + 6.9000 0.0083783 + 6.9050 0.0095613 + 6.9100 0.010839 + 6.9150 0.012207 + 6.9200 0.013656 + 6.9250 0.015174 + 6.9300 0.016748 + 6.9350 0.018361 + 6.9400 0.019993 + 6.9450 0.021623 + 6.9500 0.023228 + 6.9550 0.024782 + 6.9600 0.026261 + 6.9650 0.027639 + 6.9700 0.028892 + 6.9750 0.029995 + 6.9800 0.030929 + 6.9850 0.031674 + 6.9900 0.032217 + 6.9950 0.032545 + 7.0000 0.032652 + 7.0050 0.032536 + 7.0100 0.032199 + 7.0150 0.031648 + 7.0200 0.030894 + 7.0250 0.029952 + 7.0300 0.028841 + 7.0350 0.027581 + 7.0400 0.026196 + 7.0450 0.024711 + 7.0500 0.023150 + 7.0550 0.021540 + 7.0600 0.019905 + 7.0650 0.018269 + 7.0700 0.016652 + 7.0750 0.015075 + 7.0800 0.013554 + 7.0850 0.012103 + 7.0900 0.010734 + 7.0950 0.0094540 + 7.1000 0.0082700 + 7.1050 0.0071849 + 7.1100 0.0061996 + 7.1150 0.0053127 + 7.1200 0.0045217 + 7.1250 0.0038221 + 7.1300 0.0032087 + 7.1350 0.0026753 + 7.1400 0.0022153 + 7.1450 0.0018219 + 7.1500 0.0014881 + 7.1550 0.0012071 + 7.1600 0.00097255 + 7.1650 0.00077819 + 7.1700 0.00061841 + 7.1750 0.00048808 + 7.1800 0.00038259 + 7.1850 0.00029784 + 7.1900 0.00023028 + 7.1950 0.00017683 + 7.2000 0.00013486 + 7.2050 0.00010215 + 7.2100 7.6840e-05 + 7.2150 5.7408e-05 + 7.2200 4.2597e-05 + 7.2250 3.1391e-05 + 7.2300 2.2975e-05 + 7.2350 1.6700e-05 + 7.2400 1.2056e-05 + 7.2450 8.6440e-06 + 7.2500 6.1553e-06 + 7.2550 4.3531e-06 + 7.2600 3.0575e-06 + 7.2650 2.1329e-06 + 7.2700 1.4777e-06 + 7.2750 1.0168e-06 + 7.2800 6.9482e-07 + 7.2850 4.7158e-07 + 7.2900 3.1787e-07 + 7.2950 2.1280e-07 + 7.3000 1.4149e-07 + 7.3050 9.3427e-08 + 7.3100 6.1271e-08 + 7.3150 3.9908e-08 + 7.3200 2.5816e-08 + 7.3250 1.6586e-08 + 7.3300 1.0583e-08 + 7.3350 6.7063e-09 + 7.3400 4.2208e-09 + 7.3450 2.6383e-09 + 7.3500 1.6378e-09 + 7.3550 1.0098e-09 + 7.3600 6.1835e-10 + 7.3650 3.7605e-10 + 7.3700 2.2714e-10 + 7.3750 1.3625e-10 + 7.3800 8.1174e-11 + 7.3850 4.8030e-11 + 7.3900 2.8225e-11 + 7.3950 1.6473e-11 + 7.4000 9.5484e-12 + 7.4050 5.4968e-12 + 7.4100 3.1427e-12 + 7.4150 1.7845e-12 + 7.4200 1.0064e-12 + 7.4250 5.6366e-13 + 7.4300 0.00000 + 7.4350 0.00000 + 7.4400 0.00000 + 7.4450 0.00000 + 7.4500 0.00000 + 7.4550 0.00000 + 7.4600 0.00000 + 7.4650 0.00000 + 7.4700 0.00000 + 7.4750 0.00000 + 7.4800 0.00000 + 7.4850 0.00000 + 7.4900 0.00000 + 7.4950 0.00000 + 7.5000 0.00000 + 7.5050 0.00000 + 7.5100 0.00000 + 7.5150 0.00000 + 7.5200 0.00000 + 7.5250 0.00000 + 7.5300 0.00000 + 7.5350 0.00000 + 7.5400 0.00000 + 7.5450 0.00000 + 7.5500 0.00000 + 7.5550 0.00000 + 7.5600 0.00000 + 7.5650 0.00000 + 7.5700 0.00000 + 7.5750 0.00000 + 7.5800 0.00000 + 7.5850 0.00000 + 7.5900 0.00000 + 7.5950 0.00000 + 7.6000 0.00000 + 7.6050 0.00000 + 7.6100 0.00000 + 7.6150 0.00000 + 7.6200 0.00000 + 7.6250 0.00000 + 7.6300 0.00000 + 7.6350 0.00000 + 7.6400 0.00000 + 7.6450 0.00000 + 7.6500 0.00000 + 7.6550 0.00000 + 7.6600 0.00000 + 7.6650 0.00000 + 7.6700 0.00000 + 7.6750 0.00000 + 7.6800 0.00000 + 7.6850 0.00000 + 7.6900 0.00000 + 7.6950 0.00000 + 7.7000 0.00000 + 7.7050 0.00000 + 7.7100 0.00000 + 7.7150 0.00000 + 7.7200 0.00000 + 7.7250 0.00000 + 7.7300 0.00000 + 7.7350 0.00000 + 7.7400 0.00000 + 7.7450 0.00000 + 7.7500 0.00000 + 7.7550 0.00000 + 7.7600 0.00000 + 7.7650 0.00000 + 7.7700 0.00000 + 7.7750 0.00000 + 7.7800 0.00000 + 7.7850 0.00000 + 7.7900 0.00000 + 7.7950 0.00000 + 7.8000 0.00000 + 7.8050 0.00000 + 7.8100 0.00000 + 7.8150 0.00000 + 7.8200 0.00000 + 7.8250 0.00000 + 7.8300 0.00000 + 7.8350 0.00000 + 7.8400 0.00000 + 7.8450 0.00000 + 7.8500 0.00000 + 7.8550 0.00000 + 7.8600 0.00000 + 7.8650 0.00000 + 7.8700 0.00000 + 7.8750 0.00000 + 7.8800 0.00000 + 7.8850 0.00000 + 7.8900 0.00000 + 7.8950 0.00000 + 7.9000 0.00000 + 7.9050 0.00000 + 7.9100 0.00000 + 7.9150 0.00000 + 7.9200 0.00000 + 7.9250 0.00000 + 7.9300 0.00000 + 7.9350 0.00000 + 7.9400 0.00000 + 7.9450 0.00000 + 7.9500 0.00000 + 7.9550 0.00000 + 7.9600 0.00000 + 7.9650 0.00000 + 7.9700 0.00000 + 7.9750 0.00000 + 7.9800 0.00000 + 7.9850 0.00000 + 7.9900 0.00000 + 7.9950 0.00000 + 8.0000 0.00000 + 8.0050 0.00000 + 8.0100 0.00000 + 8.0150 0.00000 + 8.0200 0.00000 + 8.0250 0.00000 + 8.0300 0.00000 + 8.0350 0.00000 + 8.0400 0.00000 + 8.0450 0.00000 + 8.0500 0.00000 + 8.0550 0.00000 + 8.0600 0.00000 + 8.0650 0.00000 + 8.0700 0.00000 + 8.0750 0.00000 + 8.0800 0.00000 + 8.0850 0.00000 + 8.0900 0.00000 + 8.0950 0.00000 + 8.1000 0.00000 + 8.1050 0.00000 + 8.1100 0.00000 + 8.1150 0.00000 + 8.1200 0.00000 + 8.1250 0.00000 + 8.1300 0.00000 + 8.1350 0.00000 + 8.1400 0.00000 + 8.1450 0.00000 + 8.1500 0.00000 + 8.1550 0.00000 + 8.1600 0.00000 + 8.1650 0.00000 + 8.1700 0.00000 + 8.1750 0.00000 + 8.1800 0.00000 + 8.1850 0.00000 + 8.1900 0.00000 + 8.1950 0.00000 + 8.2000 0.00000 + 8.2050 0.00000 + 8.2100 0.00000 + 8.2150 0.00000 + 8.2200 0.00000 + 8.2250 0.00000 + 8.2300 0.00000 + 8.2350 0.00000 + 8.2400 0.00000 + 8.2450 0.00000 + 8.2500 0.00000 + 8.2550 0.00000 + 8.2600 0.00000 + 8.2650 0.00000 + 8.2700 0.00000 + 8.2750 0.00000 + 8.2800 0.00000 + 8.2850 0.00000 + 8.2900 0.00000 + 8.2950 0.00000 + 8.3000 0.00000 + 8.3050 0.00000 + 8.3100 0.00000 + 8.3150 0.00000 + 8.3200 0.00000 + 8.3250 0.00000 + 8.3300 0.00000 + 8.3350 0.00000 + 8.3400 0.00000 + 8.3450 0.00000 + 8.3500 0.00000 + 8.3550 0.00000 + 8.3600 0.00000 + 8.3650 0.00000 + 8.3700 0.00000 + 8.3750 0.00000 + 8.3800 0.00000 + 8.3850 0.00000 + 8.3900 0.00000 + 8.3950 0.00000 + 8.4000 0.00000 + 8.4050 0.00000 + 8.4100 0.00000 + 8.4150 0.00000 + 8.4200 0.00000 + 8.4250 0.00000 + 8.4300 0.00000 + 8.4350 0.00000 + 8.4400 0.00000 + 8.4450 0.00000 + 8.4500 0.00000 + 8.4550 0.00000 + 8.4600 0.00000 + 8.4650 0.00000 + 8.4700 0.00000 + 8.4750 0.00000 + 8.4800 0.00000 + 8.4850 0.00000 + 8.4900 0.00000 + 8.4950 0.00000 + 8.5000 0.00000 + 8.5050 0.00000 + 8.5100 0.00000 + 8.5150 0.00000 + 8.5200 0.00000 + 8.5250 0.00000 + 8.5300 0.00000 + 8.5350 0.00000 + 8.5400 0.00000 + 8.5450 0.00000 + 8.5500 0.00000 + 8.5550 0.00000 + 8.5600 0.00000 + 8.5650 0.00000 + 8.5700 0.00000 + 8.5750 0.00000 + 8.5800 0.00000 + 8.5850 0.00000 + 8.5900 0.00000 + 8.5950 0.00000 + 8.6000 0.00000 + 8.6050 0.00000 + 8.6100 0.00000 + 8.6150 0.00000 + 8.6200 0.00000 + 8.6250 0.00000 + 8.6300 0.00000 + 8.6350 0.00000 + 8.6400 0.00000 + 8.6450 0.00000 + 8.6500 0.00000 + 8.6550 0.00000 + 8.6600 0.00000 + 8.6650 0.00000 + 8.6700 0.00000 + 8.6750 0.00000 + 8.6800 0.00000 + 8.6850 0.00000 + 8.6900 0.00000 + 8.6950 0.00000 + 8.7000 0.00000 + 8.7050 0.00000 + 8.7100 0.00000 + 8.7150 0.00000 + 8.7200 0.00000 + 8.7250 0.00000 + 8.7300 0.00000 + 8.7350 0.00000 + 8.7400 0.00000 + 8.7450 0.00000 + 8.7500 0.00000 + 8.7550 0.00000 + 8.7600 0.00000 + 8.7650 0.00000 + 8.7700 0.00000 + 8.7750 0.00000 + 8.7800 0.00000 + 8.7850 0.00000 + 8.7900 0.00000 + 8.7950 0.00000 + 8.8000 0.00000 + 8.8050 0.00000 + 8.8100 0.00000 + 8.8150 0.00000 + 8.8200 0.00000 + 8.8250 0.00000 + 8.8300 0.00000 + 8.8350 0.00000 + 8.8400 0.00000 + 8.8450 0.00000 + 8.8500 0.00000 + 8.8550 0.00000 + 8.8600 0.00000 + 8.8650 0.00000 + 8.8700 0.00000 + 8.8750 0.00000 + 8.8800 0.00000 + 8.8850 0.00000 + 8.8900 0.00000 + 8.8950 0.00000 + 8.9000 0.00000 + 8.9050 0.00000 + 8.9100 0.00000 + 8.9150 0.00000 + 8.9200 0.00000 + 8.9250 0.00000 + 8.9300 0.00000 + 8.9350 0.00000 + 8.9400 0.00000 + 8.9450 0.00000 + 8.9500 0.00000 + 8.9550 0.00000 + 8.9600 0.00000 + 8.9650 0.00000 + 8.9700 0.00000 + 8.9750 0.00000 + 8.9800 0.00000 + 8.9850 0.00000 + 8.9900 0.00000 + 8.9950 0.00000 + 9.0000 0.00000 + 9.0050 0.00000 + 9.0100 0.00000 + 9.0150 0.00000 + 9.0200 0.00000 + 9.0250 0.00000 + 9.0300 0.00000 + 9.0350 0.00000 + 9.0400 0.00000 + 9.0450 0.00000 + 9.0500 0.00000 + 9.0550 0.00000 + 9.0600 0.00000 + 9.0650 0.00000 + 9.0700 0.00000 + 9.0750 0.00000 + 9.0800 0.00000 + 9.0850 0.00000 + 9.0900 0.00000 + 9.0950 0.00000 + 9.1000 0.00000 + 9.1050 0.00000 + 9.1100 0.00000 + 9.1150 0.00000 + 9.1200 0.00000 + 9.1250 0.00000 + 9.1300 0.00000 + 9.1350 0.00000 + 9.1400 0.00000 + 9.1450 0.00000 + 9.1500 0.00000 + 9.1550 0.00000 + 9.1600 0.00000 + 9.1650 0.00000 + 9.1700 0.00000 + 9.1750 0.00000 + 9.1800 0.00000 + 9.1850 0.00000 + 9.1900 0.00000 + 9.1950 0.00000 + 9.2000 0.00000 + 9.2050 0.00000 + 9.2100 0.00000 + 9.2150 0.00000 + 9.2200 0.00000 + 9.2250 0.00000 + 9.2300 0.00000 + 9.2350 0.00000 + 9.2400 0.00000 + 9.2450 0.00000 + 9.2500 0.00000 + 9.2550 0.00000 + 9.2600 0.00000 + 9.2650 0.00000 + 9.2700 0.00000 + 9.2750 0.00000 + 9.2800 0.00000 + 9.2850 0.00000 + 9.2900 0.00000 + 9.2950 0.00000 + 9.3000 0.00000 + 9.3050 0.00000 + 9.3100 0.00000 + 9.3150 0.00000 + 9.3200 0.00000 + 9.3250 0.00000 + 9.3300 0.00000 + 9.3350 0.00000 + 9.3400 0.00000 + 9.3450 0.00000 + 9.3500 0.00000 + 9.3550 0.00000 + 9.3600 0.00000 + 9.3650 0.00000 + 9.3700 0.00000 + 9.3750 0.00000 + 9.3800 0.00000 + 9.3850 0.00000 + 9.3900 0.00000 + 9.3950 0.00000 + 9.4000 0.00000 + 9.4050 0.00000 + 9.4100 0.00000 + 9.4150 0.00000 + 9.4200 0.00000 + 9.4250 0.00000 + 9.4300 0.00000 + 9.4350 0.00000 + 9.4400 0.00000 + 9.4450 0.00000 + 9.4500 0.00000 + 9.4550 0.00000 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 6.3478e-07 + 0.20500 6.7111e-07 + 0.21000 7.0688e-07 + 0.21500 7.4187e-07 + 0.22000 7.7589e-07 + 0.22500 8.0874e-07 + 0.23000 8.4027e-07 + 0.23500 8.7035e-07 + 0.24000 8.9885e-07 + 0.24500 9.2570e-07 + 0.25000 9.5083e-07 + 0.25500 9.7419e-07 + 0.26000 9.9579e-07 + 0.26500 1.0156e-06 + 0.27000 1.0337e-06 + 0.27500 1.0501e-06 + 0.28000 1.0649e-06 + 0.28500 1.0781e-06 + 0.29000 1.0899e-06 + 0.29500 1.1003e-06 + 0.30000 1.1095e-06 + 0.30500 1.1175e-06 + 0.31000 1.1244e-06 + 0.31500 1.1304e-06 + 0.32000 1.1355e-06 + 0.32500 1.1399e-06 + 0.33000 1.1435e-06 + 0.33500 1.1466e-06 + 0.34000 1.1492e-06 + 0.34500 1.1514e-06 + 0.35000 1.1531e-06 + 0.35500 1.1546e-06 + 0.36000 1.1558e-06 + 0.36500 1.1567e-06 + 0.37000 1.1575e-06 + 0.37500 1.1581e-06 + 0.38000 1.1586e-06 + 0.38500 1.1590e-06 + 0.39000 1.1593e-06 + 0.39500 1.1595e-06 + 0.40000 1.1597e-06 + 0.40500 1.1598e-06 + 0.41000 1.1600e-06 + 0.41500 1.1600e-06 + 0.42000 1.1601e-06 + 0.42500 1.1601e-06 + 0.43000 1.1602e-06 + 0.43500 1.1602e-06 + 0.44000 1.1602e-06 + 0.44500 1.1602e-06 + 0.45000 1.1602e-06 + 0.45500 1.1603e-06 + 0.46000 1.1603e-06 + 0.46500 1.1603e-06 + 0.47000 1.1603e-06 + 0.47500 1.1603e-06 + 0.48000 1.1603e-06 + 0.48500 1.1603e-06 + 0.49000 1.1603e-06 + 0.49500 1.1603e-06 + 0.50000 1.1603e-06 + 0.50500 1.1603e-06 + 0.51000 1.1603e-06 + 0.51500 1.1603e-06 + 0.52000 1.1603e-06 + 0.52500 1.1603e-06 + 0.53000 1.1603e-06 + 0.53500 1.1603e-06 + 0.54000 1.1603e-06 + 0.54500 1.1603e-06 + 0.55000 1.1603e-06 + 0.55500 1.1603e-06 + 0.56000 1.1603e-06 + 0.56500 1.1603e-06 + 0.57000 1.1603e-06 + 0.57500 1.1603e-06 + 0.58000 1.1603e-06 + 0.58500 1.1603e-06 + 0.59000 1.1603e-06 + 0.59500 1.1603e-06 + 0.60000 1.1603e-06 + 0.60500 1.1603e-06 + 0.61000 1.1603e-06 + 0.61500 1.1603e-06 + 0.62000 1.1603e-06 + 0.62500 1.1603e-06 + 0.63000 1.1603e-06 + 0.63500 1.1603e-06 + 0.64000 1.1603e-06 + 0.64500 1.1603e-06 + 0.65000 1.1603e-06 + 0.65500 1.1603e-06 + 0.66000 1.1603e-06 + 0.66500 1.1603e-06 + 0.67000 1.1603e-06 + 0.67500 1.1603e-06 + 0.68000 1.1603e-06 + 0.68500 1.1603e-06 + 0.69000 1.1603e-06 + 0.69500 1.1603e-06 + 0.70000 1.1603e-06 + 0.70500 1.1603e-06 + 0.71000 1.1603e-06 + 0.71500 1.1603e-06 + 0.72000 1.1603e-06 + 0.72500 1.1603e-06 + 0.73000 1.1603e-06 + 0.73500 1.1603e-06 + 0.74000 1.1603e-06 + 0.74500 1.1603e-06 + 0.75000 1.1603e-06 + 0.75500 1.1603e-06 + 0.76000 1.1603e-06 + 0.76500 1.1603e-06 + 0.77000 1.1603e-06 + 0.77500 1.1603e-06 + 0.78000 1.1603e-06 + 0.78500 1.1603e-06 + 0.79000 1.1603e-06 + 0.79500 1.1603e-06 + 0.80000 1.1603e-06 + 0.80500 1.1603e-06 + 0.81000 1.1603e-06 + 0.81500 1.1603e-06 + 0.82000 1.1603e-06 + 0.82500 1.1603e-06 + 0.83000 1.1603e-06 + 0.83500 1.1603e-06 + 0.84000 1.1603e-06 + 0.84500 1.1603e-06 + 0.85000 1.1603e-06 + 0.85500 1.1603e-06 + 0.86000 1.1603e-06 + 0.86500 1.1603e-06 + 0.87000 1.1603e-06 + 0.87500 1.1603e-06 + 0.88000 1.1603e-06 + 0.88500 1.1603e-06 + 0.89000 1.1603e-06 + 0.89500 1.1603e-06 + 0.90000 1.1603e-06 + 0.90500 1.1603e-06 + 0.91000 1.1603e-06 + 0.91500 1.1603e-06 + 0.92000 1.1603e-06 + 0.92500 1.1603e-06 + 0.93000 1.1603e-06 + 0.93500 1.1603e-06 + 0.94000 1.1603e-06 + 0.94500 1.1603e-06 + 0.95000 1.1603e-06 + 0.95500 1.1603e-06 + 0.96000 1.1603e-06 + 0.96500 1.1603e-06 + 0.97000 1.1603e-06 + 0.97500 1.1604e-06 + 0.98000 1.1604e-06 + 0.98500 1.1604e-06 + 0.99000 1.1605e-06 + 0.99500 1.1605e-06 + 1.0000 1.1606e-06 + 1.0050 1.1608e-06 + 1.0100 1.1609e-06 + 1.0150 1.1611e-06 + 1.0200 1.1614e-06 + 1.0250 1.1617e-06 + 1.0300 1.1621e-06 + 1.0350 1.1626e-06 + 1.0400 1.1632e-06 + 1.0450 1.1640e-06 + 1.0500 1.1650e-06 + 1.0550 1.1662e-06 + 1.0600 1.1677e-06 + 1.0650 1.1694e-06 + 1.0700 1.1716e-06 + 1.0750 1.1741e-06 + 1.0800 1.1771e-06 + 1.0850 1.1807e-06 + 1.0900 1.1849e-06 + 1.0950 1.1898e-06 + 1.1000 1.1955e-06 + 1.1050 1.2020e-06 + 1.1100 1.2096e-06 + 1.1150 1.2181e-06 + 1.1200 1.2278e-06 + 1.1250 1.2386e-06 + 1.1300 1.2508e-06 + 1.1350 1.2643e-06 + 1.1400 1.2792e-06 + 1.1450 1.2956e-06 + 1.1500 1.3135e-06 + 1.1550 1.3329e-06 + 1.1600 1.3537e-06 + 1.1650 1.3761e-06 + 1.1700 1.4000e-06 + 1.1750 1.4252e-06 + 1.1800 1.4517e-06 + 1.1850 1.4795e-06 + 1.1900 1.5083e-06 + 1.1950 1.5381e-06 + 1.2000 1.5687e-06 + 1.2050 1.5999e-06 + 1.2100 1.6315e-06 + 1.2150 1.6634e-06 + 1.2200 1.6953e-06 + 1.2250 1.7271e-06 + 1.2300 1.7585e-06 + 1.2350 1.7894e-06 + 1.2400 1.8195e-06 + 1.2450 1.8487e-06 + 1.2500 1.8768e-06 + 1.2550 1.9036e-06 + 1.2600 1.9290e-06 + 1.2650 1.9529e-06 + 1.2700 1.9751e-06 + 1.2750 1.9957e-06 + 1.2800 2.0144e-06 + 1.2850 2.0312e-06 + 1.2900 2.0462e-06 + 1.2950 2.0592e-06 + 1.3000 2.0702e-06 + 1.3050 2.0793e-06 + 1.3100 2.0865e-06 + 1.3150 2.0917e-06 + 1.3200 2.0951e-06 + 1.3250 2.0966e-06 + 1.3300 2.0963e-06 + 1.3350 2.0942e-06 + 1.3400 2.0905e-06 + 1.3450 2.0851e-06 + 1.3500 2.0782e-06 + 1.3550 2.0699e-06 + 1.3600 2.0602e-06 + 1.3650 2.0492e-06 + 1.3700 2.0370e-06 + 1.3750 2.0238e-06 + 1.3800 2.0097e-06 + 1.3850 1.9947e-06 + 1.3900 1.9791e-06 + 1.3950 1.9629e-06 + 1.4000 1.9463e-06 + 1.4050 1.9293e-06 + 1.4100 1.9122e-06 + 1.4150 1.8951e-06 + 1.4200 1.8781e-06 + 1.4250 1.8613e-06 + 1.4300 1.8448e-06 + 1.4350 1.8287e-06 + 1.4400 1.8132e-06 + 1.4450 1.7983e-06 + 1.4500 1.7840e-06 + 1.4550 1.7705e-06 + 1.4600 1.7577e-06 + 1.4650 1.7458e-06 + 1.4700 1.7347e-06 + 1.4750 1.7245e-06 + 1.4800 1.7151e-06 + 1.4850 1.7065e-06 + 1.4900 1.6987e-06 + 1.4950 1.6916e-06 + 1.5000 1.6853e-06 + 1.5050 1.6797e-06 + 1.5100 1.6748e-06 + 1.5150 1.6705e-06 + 1.5200 1.6667e-06 + 1.5250 1.6634e-06 + 1.5300 1.6605e-06 + 1.5350 1.6581e-06 + 1.5400 1.6560e-06 + 1.5450 1.6543e-06 + 1.5500 1.6528e-06 + 1.5550 1.6516e-06 + 1.5600 1.6506e-06 + 1.5650 1.6497e-06 + 1.5700 1.6490e-06 + 1.5750 1.6485e-06 + 1.5800 1.6480e-06 + 1.5850 1.6476e-06 + 1.5900 1.6474e-06 + 1.5950 1.6471e-06 + 1.6000 1.6469e-06 + 1.6050 1.6468e-06 + 1.6100 1.6467e-06 + 1.6150 1.6466e-06 + 1.6200 1.6465e-06 + 1.6250 1.6465e-06 + 1.6300 1.6464e-06 + 1.6350 1.6464e-06 + 1.6400 1.6464e-06 + 1.6450 1.6464e-06 + 1.6500 1.6464e-06 + 1.6550 1.6464e-06 + 1.6600 1.6463e-06 + 1.6650 1.6463e-06 + 1.6700 1.6463e-06 + 1.6750 1.6463e-06 + 1.6800 1.6463e-06 + 1.6850 1.6463e-06 + 1.6900 1.6463e-06 + 1.6950 1.6463e-06 + 1.7000 1.6463e-06 + 1.7050 1.6463e-06 + 1.7100 1.6463e-06 + 1.7150 1.6463e-06 + 1.7200 1.6463e-06 + 1.7250 1.6463e-06 + 1.7300 1.6463e-06 + 1.7350 1.6463e-06 + 1.7400 1.6463e-06 + 1.7450 1.6463e-06 + 1.7500 1.6463e-06 + 1.7550 1.6463e-06 + 1.7600 1.6463e-06 + 1.7650 1.6463e-06 + 1.7700 1.6463e-06 + 1.7750 1.6463e-06 + 1.7800 1.6463e-06 + 1.7850 1.6463e-06 + 1.7900 1.6463e-06 + 1.7950 1.6463e-06 + 1.8000 1.6463e-06 + 1.8050 1.6463e-06 + 1.8100 1.6463e-06 + 1.8150 1.6463e-06 + 1.8200 1.6463e-06 + 1.8250 1.6463e-06 + 1.8300 1.6463e-06 + 1.8350 1.6463e-06 + 1.8400 1.6463e-06 + 1.8450 1.6463e-06 + 1.8500 1.6463e-06 + 1.8550 1.6463e-06 + 1.8600 1.6463e-06 + 1.8650 1.6463e-06 + 1.8700 1.6463e-06 + 1.8750 1.6463e-06 + 1.8800 1.6463e-06 + 1.8850 1.6463e-06 + 1.8900 1.6463e-06 + 1.8950 1.6463e-06 + 1.9000 1.6463e-06 + 1.9050 1.6463e-06 + 1.9100 1.6463e-06 + 1.9150 1.6463e-06 + 1.9200 1.6463e-06 + 1.9250 1.6463e-06 + 1.9300 1.6463e-06 + 1.9350 1.6463e-06 + 1.9400 1.6463e-06 + 1.9450 1.6463e-06 + 1.9500 1.6463e-06 + 1.9550 1.6463e-06 + 1.9600 1.6463e-06 + 1.9650 1.6463e-06 + 1.9700 1.6463e-06 + 1.9750 1.6463e-06 + 1.9800 1.6463e-06 + 1.9850 1.6463e-06 + 1.9900 1.6463e-06 + 1.9950 1.6463e-06 + 2.0000 1.6463e-06 + 2.0050 1.6463e-06 + 2.0100 1.6463e-06 + 2.0150 1.6463e-06 + 2.0200 1.6463e-06 + 2.0250 1.6463e-06 + 2.0300 1.6463e-06 + 2.0350 1.6463e-06 + 2.0400 1.6463e-06 + 2.0450 1.6463e-06 + 2.0500 1.6463e-06 + 2.0550 1.6463e-06 + 2.0600 1.6463e-06 + 2.0650 1.6463e-06 + 2.0700 1.6463e-06 + 2.0750 1.6463e-06 + 2.0800 1.6463e-06 + 2.0850 1.6463e-06 + 2.0900 1.6463e-06 + 2.0950 1.6463e-06 + 2.1000 1.6463e-06 + 2.1050 1.6463e-06 + 2.1100 1.6463e-06 + 2.1150 1.6463e-06 + 2.1200 1.6463e-06 + 2.1250 1.6463e-06 + 2.1300 1.6463e-06 + 2.1350 1.6463e-06 + 2.1400 1.6463e-06 + 2.1450 1.6463e-06 + 2.1500 1.6463e-06 + 2.1550 1.6463e-06 + 2.1600 1.6463e-06 + 2.1650 1.6463e-06 + 2.1700 1.6463e-06 + 2.1750 1.6463e-06 + 2.1800 1.6463e-06 + 2.1850 1.6463e-06 + 2.1900 1.6463e-06 + 2.1950 1.6463e-06 + 2.2000 1.6463e-06 + 2.2050 1.6463e-06 + 2.2100 1.6463e-06 + 2.2150 1.6463e-06 + 2.2200 1.6463e-06 + 2.2250 1.6463e-06 + 2.2300 1.6463e-06 + 2.2350 1.6463e-06 + 2.2400 1.6463e-06 + 2.2450 1.6463e-06 + 2.2500 1.6463e-06 + 2.2550 1.6463e-06 + 2.2600 1.6463e-06 + 2.2650 1.6463e-06 + 2.2700 1.6463e-06 + 2.2750 1.6463e-06 + 2.2800 1.6463e-06 + 2.2850 1.6463e-06 + 2.2900 1.6463e-06 + 2.2950 1.6463e-06 + 2.3000 1.6463e-06 + 2.3050 1.6463e-06 + 2.3100 1.6463e-06 + 2.3150 1.6463e-06 + 2.3200 1.6463e-06 + 2.3250 1.6463e-06 + 2.3300 1.6463e-06 + 2.3350 1.6463e-06 + 2.3400 1.6463e-06 + 2.3450 1.6463e-06 + 2.3500 1.6463e-06 + 2.3550 1.6463e-06 + 2.3600 1.6463e-06 + 2.3650 1.6463e-06 + 2.3700 1.6463e-06 + 2.3750 1.6463e-06 + 2.3800 1.6463e-06 + 2.3850 1.6463e-06 + 2.3900 1.6463e-06 + 2.3950 1.6463e-06 + 2.4000 1.6463e-06 + 2.4050 1.6463e-06 + 2.4100 1.6463e-06 + 2.4150 1.6463e-06 + 2.4200 1.6463e-06 + 2.4250 1.6463e-06 + 2.4300 1.6463e-06 + 2.4350 1.6463e-06 + 2.4400 1.6463e-06 + 2.4450 1.6463e-06 + 2.4500 1.6463e-06 + 2.4550 1.6463e-06 + 2.4600 1.6463e-06 + 2.4650 1.6463e-06 + 2.4700 1.6463e-06 + 2.4750 1.6463e-06 + 2.4800 1.6463e-06 + 2.4850 1.6463e-06 + 2.4900 1.6463e-06 + 2.4950 1.6463e-06 + 2.5000 1.6463e-06 + 2.5050 1.6463e-06 + 2.5100 1.6463e-06 + 2.5150 1.6463e-06 + 2.5200 1.6463e-06 + 2.5250 1.6463e-06 + 2.5300 1.6463e-06 + 2.5350 1.6463e-06 + 2.5400 1.6463e-06 + 2.5450 1.6463e-06 + 2.5500 1.6463e-06 + 2.5550 1.6463e-06 + 2.5600 1.6463e-06 + 2.5650 1.6463e-06 + 2.5700 1.6463e-06 + 2.5750 1.6463e-06 + 2.5800 1.6463e-06 + 2.5850 1.6463e-06 + 2.5900 1.6463e-06 + 2.5950 1.6463e-06 + 2.6000 1.6463e-06 + 2.6050 1.6463e-06 + 2.6100 1.6463e-06 + 2.6150 1.6463e-06 + 2.6200 1.6463e-06 + 2.6250 1.6463e-06 + 2.6300 1.6463e-06 + 2.6350 1.6463e-06 + 2.6400 1.6463e-06 + 2.6450 1.6463e-06 + 2.6500 1.6463e-06 + 2.6550 1.6463e-06 + 2.6600 1.6463e-06 + 2.6650 1.6463e-06 + 2.6700 1.6463e-06 + 2.6750 1.6463e-06 + 2.6800 1.6463e-06 + 2.6850 1.6463e-06 + 2.6900 1.6463e-06 + 2.6950 1.6463e-06 + 2.7000 1.6463e-06 + 2.7050 1.6463e-06 + 2.7100 1.6463e-06 + 2.7150 1.6463e-06 + 2.7200 1.6463e-06 + 2.7250 1.6463e-06 + 2.7300 1.6463e-06 + 2.7350 1.6463e-06 + 2.7400 1.6463e-06 + 2.7450 1.6463e-06 + 2.7500 1.6463e-06 + 2.7550 1.6463e-06 + 2.7600 1.6463e-06 + 2.7650 1.6463e-06 + 2.7700 1.6463e-06 + 2.7750 1.6463e-06 + 2.7800 1.6463e-06 + 2.7850 1.6463e-06 + 2.7900 1.6463e-06 + 2.7950 1.6463e-06 + 2.8000 1.6463e-06 + 2.8050 1.6463e-06 + 2.8100 1.6463e-06 + 2.8150 1.6463e-06 + 2.8200 1.6463e-06 + 2.8250 1.6463e-06 + 2.8300 1.6463e-06 + 2.8350 1.6463e-06 + 2.8400 1.6463e-06 + 2.8450 1.6463e-06 + 2.8500 1.6463e-06 + 2.8550 1.6463e-06 + 2.8600 1.6463e-06 + 2.8650 1.6463e-06 + 2.8700 1.6463e-06 + 2.8750 1.6463e-06 + 2.8800 1.6463e-06 + 2.8850 1.6463e-06 + 2.8900 1.6463e-06 + 2.8950 1.6463e-06 + 2.9000 1.6463e-06 + 2.9050 1.6463e-06 + 2.9100 1.6463e-06 + 2.9150 1.6463e-06 + 2.9200 1.6463e-06 + 2.9250 1.6463e-06 + 2.9300 1.6463e-06 + 2.9350 1.6463e-06 + 2.9400 1.6463e-06 + 2.9450 1.6463e-06 + 2.9500 1.6463e-06 + 2.9550 1.6463e-06 + 2.9600 1.6463e-06 + 2.9650 1.6463e-06 + 2.9700 1.6463e-06 + 2.9750 1.6463e-06 + 2.9800 1.6463e-06 + 2.9850 1.6463e-06 + 2.9900 1.6463e-06 + 2.9950 1.6463e-06 + 3.0000 1.6463e-06 + 3.0050 1.6463e-06 + 3.0100 1.6463e-06 + 3.0150 1.6463e-06 + 3.0200 1.6463e-06 + 3.0250 1.6463e-06 + 3.0300 1.6463e-06 + 3.0350 1.6463e-06 + 3.0400 1.6463e-06 + 3.0450 1.6463e-06 + 3.0500 1.6463e-06 + 3.0550 1.6463e-06 + 3.0600 1.6463e-06 + 3.0650 1.6463e-06 + 3.0700 1.6463e-06 + 3.0750 1.6463e-06 + 3.0800 1.6463e-06 + 3.0850 1.6463e-06 + 3.0900 1.6463e-06 + 3.0950 1.6463e-06 + 3.1000 1.6463e-06 + 3.1050 1.6463e-06 + 3.1100 1.6463e-06 + 3.1150 1.6463e-06 + 3.1200 1.6463e-06 + 3.1250 1.6463e-06 + 3.1300 1.6463e-06 + 3.1350 1.6463e-06 + 3.1400 1.6463e-06 + 3.1450 1.6463e-06 + 3.1500 1.6463e-06 + 3.1550 1.6463e-06 + 3.1600 1.6463e-06 + 3.1650 1.6463e-06 + 3.1700 1.6463e-06 + 3.1750 1.6463e-06 + 3.1800 1.6463e-06 + 3.1850 1.6463e-06 + 3.1900 1.6463e-06 + 3.1950 1.6463e-06 + 3.2000 1.6463e-06 + 3.2050 1.6463e-06 + 3.2100 1.6463e-06 + 3.2150 1.6463e-06 + 3.2200 1.6463e-06 + 3.2250 1.6463e-06 + 3.2300 1.6463e-06 + 3.2350 1.6463e-06 + 3.2400 1.6463e-06 + 3.2450 1.6463e-06 + 3.2500 1.6463e-06 + 3.2550 1.6463e-06 + 3.2600 1.6463e-06 + 3.2650 1.6463e-06 + 3.2700 1.6463e-06 + 3.2750 1.6463e-06 + 3.2800 1.6463e-06 + 3.2850 1.6463e-06 + 3.2900 1.6463e-06 + 3.2950 1.6463e-06 + 3.3000 1.6463e-06 + 3.3050 1.6463e-06 + 3.3100 1.6463e-06 + 3.3150 1.6463e-06 + 3.3200 1.6463e-06 + 3.3250 1.6463e-06 + 3.3300 1.6463e-06 + 3.3350 1.6463e-06 + 3.3400 1.6463e-06 + 3.3450 1.6463e-06 + 3.3500 1.6463e-06 + 3.3550 1.6463e-06 + 3.3600 1.6463e-06 + 3.3650 1.6463e-06 + 3.3700 1.6463e-06 + 3.3750 1.6463e-06 + 3.3800 1.6463e-06 + 3.3850 1.6463e-06 + 3.3900 1.6463e-06 + 3.3950 1.6463e-06 + 3.4000 1.6463e-06 + 3.4050 1.6463e-06 + 3.4100 1.6463e-06 + 3.4150 1.6463e-06 + 3.4200 1.6463e-06 + 3.4250 1.6463e-06 + 3.4300 1.6463e-06 + 3.4350 1.6463e-06 + 3.4400 1.6463e-06 + 3.4450 1.6463e-06 + 3.4500 1.6463e-06 + 3.4550 1.6463e-06 + 3.4600 1.6463e-06 + 3.4650 1.6463e-06 + 3.4700 1.6463e-06 + 3.4750 1.6463e-06 + 3.4800 1.6463e-06 + 3.4850 1.6463e-06 + 3.4900 1.6463e-06 + 3.4950 1.6463e-06 + 3.5000 1.6463e-06 + 3.5050 1.6463e-06 + 3.5100 1.6463e-06 + 3.5150 1.6463e-06 + 3.5200 1.6463e-06 + 3.5250 1.6463e-06 + 3.5300 1.6463e-06 + 3.5350 1.6463e-06 + 3.5400 1.6463e-06 + 3.5450 1.6463e-06 + 3.5500 1.6463e-06 + 3.5550 1.6463e-06 + 3.5600 1.6463e-06 + 3.5650 1.6463e-06 + 3.5700 1.6463e-06 + 3.5750 1.6463e-06 + 3.5800 1.6463e-06 + 3.5850 1.6463e-06 + 3.5900 1.6463e-06 + 3.5950 1.6463e-06 + 3.6000 1.6463e-06 + 3.6050 1.6463e-06 + 3.6100 1.6463e-06 + 3.6150 1.6463e-06 + 3.6200 1.6463e-06 + 3.6250 1.6463e-06 + 3.6300 1.6463e-06 + 3.6350 1.6463e-06 + 3.6400 1.6463e-06 + 3.6450 1.6463e-06 + 3.6500 1.6463e-06 + 3.6550 1.6463e-06 + 3.6600 1.6463e-06 + 3.6650 1.6463e-06 + 3.6700 1.6463e-06 + 3.6750 1.6463e-06 + 3.6800 1.6463e-06 + 3.6850 1.6463e-06 + 3.6900 1.6463e-06 + 3.6950 1.6463e-06 + 3.7000 1.6463e-06 + 3.7050 1.6463e-06 + 3.7100 1.6463e-06 + 3.7150 1.6463e-06 + 3.7200 1.6463e-06 + 3.7250 1.6463e-06 + 3.7300 1.6463e-06 + 3.7350 1.6463e-06 + 3.7400 1.6463e-06 + 3.7450 1.6463e-06 + 3.7500 1.6463e-06 + 3.7550 1.6463e-06 + 3.7600 1.6463e-06 + 3.7650 1.6463e-06 + 3.7700 1.6463e-06 + 3.7750 1.6463e-06 + 3.7800 1.6463e-06 + 3.7850 1.6463e-06 + 3.7900 1.6463e-06 + 3.7950 1.6463e-06 + 3.8000 1.6463e-06 + 3.8050 1.6463e-06 + 3.8100 1.6463e-06 + 3.8150 1.6463e-06 + 3.8200 1.6463e-06 + 3.8250 1.6463e-06 + 3.8300 1.6463e-06 + 3.8350 1.6463e-06 + 3.8400 1.6463e-06 + 3.8450 1.6463e-06 + 3.8500 1.6463e-06 + 3.8550 1.6463e-06 + 3.8600 1.6463e-06 + 3.8650 1.6463e-06 + 3.8700 1.6463e-06 + 3.8750 1.6463e-06 + 3.8800 1.6463e-06 + 3.8850 1.6463e-06 + 3.8900 1.6463e-06 + 3.8950 1.6463e-06 + 3.9000 1.6463e-06 + 3.9050 1.6463e-06 + 3.9100 1.6463e-06 + 3.9150 1.6463e-06 + 3.9200 1.6463e-06 + 3.9250 1.6463e-06 + 3.9300 1.6463e-06 + 3.9350 1.6463e-06 + 3.9400 1.6463e-06 + 3.9450 1.6463e-06 + 3.9500 1.6463e-06 + 3.9550 1.6463e-06 + 3.9600 1.6463e-06 + 3.9650 1.6463e-06 + 3.9700 1.6463e-06 + 3.9750 1.6463e-06 + 3.9800 1.6463e-06 + 3.9850 1.6463e-06 + 3.9900 1.6463e-06 + 3.9950 1.6463e-06 + 4.0000 1.6463e-06 + 4.0050 1.6463e-06 + 4.0100 1.6463e-06 + 4.0150 1.6463e-06 + 4.0200 1.6463e-06 + 4.0250 1.6463e-06 + 4.0300 1.6463e-06 + 4.0350 1.6463e-06 + 4.0400 1.6463e-06 + 4.0450 1.6463e-06 + 4.0500 1.6463e-06 + 4.0550 1.6463e-06 + 4.0600 1.6463e-06 + 4.0650 1.6463e-06 + 4.0700 1.6463e-06 + 4.0750 1.6463e-06 + 4.0800 1.6463e-06 + 4.0850 1.6463e-06 + 4.0900 1.6463e-06 + 4.0950 1.6463e-06 + 4.1000 1.6463e-06 + 4.1050 1.6463e-06 + 4.1100 1.6463e-06 + 4.1150 1.6463e-06 + 4.1200 1.6463e-06 + 4.1250 1.6463e-06 + 4.1300 1.6463e-06 + 4.1350 1.6463e-06 + 4.1400 1.6463e-06 + 4.1450 1.6463e-06 + 4.1500 1.6463e-06 + 4.1550 1.6463e-06 + 4.1600 1.6463e-06 + 4.1650 1.6463e-06 + 4.1700 1.6463e-06 + 4.1750 1.6463e-06 + 4.1800 1.6463e-06 + 4.1850 1.6463e-06 + 4.1900 1.6463e-06 + 4.1950 1.6463e-06 + 4.2000 1.6463e-06 + 4.2050 1.6463e-06 + 4.2100 1.6463e-06 + 4.2150 1.6463e-06 + 4.2200 1.6463e-06 + 4.2250 1.6463e-06 + 4.2300 1.6463e-06 + 4.2350 1.6463e-06 + 4.2400 1.6463e-06 + 4.2450 1.6463e-06 + 4.2500 1.6463e-06 + 4.2550 1.6463e-06 + 4.2600 1.6463e-06 + 4.2650 1.6463e-06 + 4.2700 1.6463e-06 + 4.2750 1.6463e-06 + 4.2800 1.6463e-06 + 4.2850 1.6463e-06 + 4.2900 1.6463e-06 + 4.2950 1.6463e-06 + 4.3000 1.6463e-06 + 4.3050 1.6463e-06 + 4.3100 1.6463e-06 + 4.3150 1.6463e-06 + 4.3200 1.6463e-06 + 4.3250 1.6463e-06 + 4.3300 1.6463e-06 + 4.3350 1.6463e-06 + 4.3400 1.6463e-06 + 4.3450 1.6463e-06 + 4.3500 1.6463e-06 + 4.3550 1.6463e-06 + 4.3600 1.6463e-06 + 4.3650 1.6463e-06 + 4.3700 1.6463e-06 + 4.3750 1.6463e-06 + 4.3800 1.6463e-06 + 4.3850 1.6463e-06 + 4.3900 1.6463e-06 + 4.3950 1.6463e-06 + 4.4000 1.6463e-06 + 4.4050 1.6463e-06 + 4.4100 1.6463e-06 + 4.4150 1.6463e-06 + 4.4200 1.6463e-06 + 4.4250 1.6463e-06 + 4.4300 1.6463e-06 + 4.4350 1.6463e-06 + 4.4400 1.6463e-06 + 4.4450 1.6463e-06 + 4.4500 1.6463e-06 + 4.4550 1.6463e-06 + 4.4600 1.6463e-06 + 4.4650 1.6463e-06 + 4.4700 1.6463e-06 + 4.4750 1.6463e-06 + 4.4800 1.6463e-06 + 4.4850 1.6463e-06 + 4.4900 1.6463e-06 + 4.4950 1.6463e-06 + 4.5000 1.6463e-06 + 4.5050 1.6463e-06 + 4.5100 1.6463e-06 + 4.5150 1.6463e-06 + 4.5200 1.6463e-06 + 4.5250 1.6463e-06 + 4.5300 1.6463e-06 + 4.5350 1.6463e-06 + 4.5400 1.6463e-06 + 4.5450 1.6463e-06 + 4.5500 1.6463e-06 + 4.5550 1.6463e-06 + 4.5600 1.6463e-06 + 4.5650 1.6463e-06 + 4.5700 1.6463e-06 + 4.5750 1.6463e-06 + 4.5800 1.6463e-06 + 4.5850 1.6463e-06 + 4.5900 1.6463e-06 + 4.5950 1.6463e-06 + 4.6000 1.6463e-06 + 4.6050 1.6463e-06 + 4.6100 1.6463e-06 + 4.6150 1.6463e-06 + 4.6200 1.6463e-06 + 4.6250 1.6463e-06 + 4.6300 1.6463e-06 + 4.6350 1.6463e-06 + 4.6400 1.6463e-06 + 4.6450 1.6463e-06 + 4.6500 1.6463e-06 + 4.6550 1.6463e-06 + 4.6600 1.6463e-06 + 4.6650 1.6463e-06 + 4.6700 1.6463e-06 + 4.6750 1.6463e-06 + 4.6800 1.6463e-06 + 4.6850 1.6463e-06 + 4.6900 1.6463e-06 + 4.6950 1.6463e-06 + 4.7000 1.6463e-06 + 4.7050 1.6463e-06 + 4.7100 1.6463e-06 + 4.7150 1.6463e-06 + 4.7200 1.6463e-06 + 4.7250 1.6463e-06 + 4.7300 1.6463e-06 + 4.7350 1.6463e-06 + 4.7400 1.6463e-06 + 4.7450 1.6463e-06 + 4.7500 1.6463e-06 + 4.7550 1.6463e-06 + 4.7600 1.6463e-06 + 4.7650 1.6463e-06 + 4.7700 1.6463e-06 + 4.7750 1.6463e-06 + 4.7800 1.6463e-06 + 4.7850 1.6463e-06 + 4.7900 1.6463e-06 + 4.7950 1.6463e-06 + 4.8000 1.6463e-06 + 4.8050 1.6463e-06 + 4.8100 1.6463e-06 + 4.8150 1.6463e-06 + 4.8200 1.6463e-06 + 4.8250 1.6463e-06 + 4.8300 1.6463e-06 + 4.8350 1.6463e-06 + 4.8400 1.6463e-06 + 4.8450 1.6463e-06 + 4.8500 1.6463e-06 + 4.8550 1.6463e-06 + 4.8600 1.6463e-06 + 4.8650 1.6463e-06 + 4.8700 1.6463e-06 + 4.8750 1.6463e-06 + 4.8800 1.6463e-06 + 4.8850 1.6463e-06 + 4.8900 1.6463e-06 + 4.8950 1.6463e-06 + 4.9000 1.6463e-06 + 4.9050 1.6463e-06 + 4.9100 1.6463e-06 + 4.9150 1.6463e-06 + 4.9200 1.6463e-06 + 4.9250 1.6463e-06 + 4.9300 1.6463e-06 + 4.9350 1.6463e-06 + 4.9400 1.6463e-06 + 4.9450 1.6463e-06 + 4.9500 1.6463e-06 + 4.9550 1.6463e-06 + 4.9600 1.6463e-06 + 4.9650 1.6463e-06 + 4.9700 1.6463e-06 + 4.9750 1.6463e-06 + 4.9800 1.6463e-06 + 4.9850 1.6463e-06 + 4.9900 1.6463e-06 + 4.9950 1.6463e-06 + 5.0000 1.6463e-06 + 5.0050 1.6463e-06 + 5.0100 1.6463e-06 + 5.0150 1.6463e-06 + 5.0200 1.6463e-06 + 5.0250 1.6463e-06 + 5.0300 1.6463e-06 + 5.0350 1.6463e-06 + 5.0400 1.6463e-06 + 5.0450 1.6463e-06 + 5.0500 1.6463e-06 + 5.0550 1.6463e-06 + 5.0600 1.6463e-06 + 5.0650 1.6463e-06 + 5.0700 1.6463e-06 + 5.0750 1.6463e-06 + 5.0800 1.6463e-06 + 5.0850 1.6463e-06 + 5.0900 1.6463e-06 + 5.0950 1.6463e-06 + 5.1000 1.6463e-06 + 5.1050 1.6463e-06 + 5.1100 1.6463e-06 + 5.1150 1.6463e-06 + 5.1200 1.6463e-06 + 5.1250 1.6463e-06 + 5.1300 1.6463e-06 + 5.1350 1.6463e-06 + 5.1400 1.6463e-06 + 5.1450 1.6463e-06 + 5.1500 1.6463e-06 + 5.1550 1.6463e-06 + 5.1600 1.6463e-06 + 5.1650 1.6463e-06 + 5.1700 1.6463e-06 + 5.1750 1.6463e-06 + 5.1800 1.6463e-06 + 5.1850 1.6463e-06 + 5.1900 1.6463e-06 + 5.1950 1.6463e-06 + 5.2000 1.6463e-06 + 5.2050 1.6463e-06 + 5.2100 1.6463e-06 + 5.2150 1.6463e-06 + 5.2200 1.6463e-06 + 5.2250 1.6463e-06 + 5.2300 1.6463e-06 + 5.2350 1.6463e-06 + 5.2400 1.6463e-06 + 5.2450 1.6463e-06 + 5.2500 1.6463e-06 + 5.2550 1.6463e-06 + 5.2600 1.6463e-06 + 5.2650 1.6463e-06 + 5.2700 1.6463e-06 + 5.2750 1.6463e-06 + 5.2800 1.6463e-06 + 5.2850 1.6463e-06 + 5.2900 1.6463e-06 + 5.2950 1.6463e-06 + 5.3000 1.6463e-06 + 5.3050 1.6463e-06 + 5.3100 1.6463e-06 + 5.3150 1.6463e-06 + 5.3200 1.6463e-06 + 5.3250 1.6463e-06 + 5.3300 1.6463e-06 + 5.3350 1.6463e-06 + 5.3400 1.6463e-06 + 5.3450 1.6463e-06 + 5.3500 1.6463e-06 + 5.3550 1.6463e-06 + 5.3600 1.6463e-06 + 5.3650 1.6463e-06 + 5.3700 1.6463e-06 + 5.3750 1.6463e-06 + 5.3800 1.6463e-06 + 5.3850 1.6463e-06 + 5.3900 1.6463e-06 + 5.3950 1.6463e-06 + 5.4000 1.6463e-06 + 5.4050 1.6463e-06 + 5.4100 1.6463e-06 + 5.4150 1.6463e-06 + 5.4200 1.6463e-06 + 5.4250 1.6463e-06 + 5.4300 1.6463e-06 + 5.4350 1.6463e-06 + 5.4400 1.6463e-06 + 5.4450 1.6463e-06 + 5.4500 1.6463e-06 + 5.4550 1.6463e-06 + 5.4600 1.6463e-06 + 5.4650 1.6463e-06 + 5.4700 1.6463e-06 + 5.4750 1.6463e-06 + 5.4800 1.6463e-06 + 5.4850 1.6463e-06 + 5.4900 1.6463e-06 + 5.4950 1.6463e-06 + 5.5000 1.6463e-06 + 5.5050 1.6463e-06 + 5.5100 1.6463e-06 + 5.5150 1.6463e-06 + 5.5200 1.6463e-06 + 5.5250 1.6463e-06 + 5.5300 1.6463e-06 + 5.5350 1.6463e-06 + 5.5400 1.6463e-06 + 5.5450 1.6463e-06 + 5.5500 1.6463e-06 + 5.5550 1.6463e-06 + 5.5600 1.6463e-06 + 5.5650 1.6463e-06 + 5.5700 1.6463e-06 + 5.5750 1.6463e-06 + 5.5800 1.6463e-06 + 5.5850 1.6463e-06 + 5.5900 1.6463e-06 + 5.5950 1.6463e-06 + 5.6000 1.6463e-06 + 5.6050 1.6463e-06 + 5.6100 1.6463e-06 + 5.6150 1.6463e-06 + 5.6200 1.6463e-06 + 5.6250 1.6463e-06 + 5.6300 1.6463e-06 + 5.6350 1.6463e-06 + 5.6400 1.6463e-06 + 5.6450 1.6463e-06 + 5.6500 1.6463e-06 + 5.6550 1.6463e-06 + 5.6600 1.6463e-06 + 5.6650 1.6463e-06 + 5.6700 1.6463e-06 + 5.6750 1.6463e-06 + 5.6800 1.6463e-06 + 5.6850 1.6463e-06 + 5.6900 1.6463e-06 + 5.6950 1.6463e-06 + 5.7000 1.6463e-06 + 5.7050 1.6463e-06 + 5.7100 1.6463e-06 + 5.7150 1.6463e-06 + 5.7200 1.6463e-06 + 5.7250 1.6463e-06 + 5.7300 1.6463e-06 + 5.7350 1.6463e-06 + 5.7400 1.6463e-06 + 5.7450 1.6463e-06 + 5.7500 1.6463e-06 + 5.7550 1.6463e-06 + 5.7600 1.6463e-06 + 5.7650 1.6463e-06 + 5.7700 1.6463e-06 + 5.7750 1.6463e-06 + 5.7800 1.6463e-06 + 5.7850 1.6463e-06 + 5.7900 1.6463e-06 + 5.7950 1.6463e-06 + 5.8000 1.6463e-06 + 5.8050 1.6463e-06 + 5.8100 1.6463e-06 + 5.8150 1.6463e-06 + 5.8200 1.6463e-06 + 5.8250 1.6463e-06 + 5.8300 1.6463e-06 + 5.8350 1.6463e-06 + 5.8400 1.6463e-06 + 5.8450 1.6463e-06 + 5.8500 1.6463e-06 + 5.8550 1.6463e-06 + 5.8600 1.6463e-06 + 5.8650 1.6463e-06 + 5.8700 1.6463e-06 + 5.8750 1.6463e-06 + 5.8800 1.6463e-06 + 5.8850 1.6463e-06 + 5.8900 1.6463e-06 + 5.8950 1.6463e-06 + 5.9000 1.6463e-06 + 5.9050 1.6463e-06 + 5.9100 1.6463e-06 + 5.9150 1.6463e-06 + 5.9200 1.6463e-06 + 5.9250 1.6463e-06 + 5.9300 1.6463e-06 + 5.9350 1.6463e-06 + 5.9400 1.6463e-06 + 5.9450 1.6463e-06 + 5.9500 1.6463e-06 + 5.9550 1.6463e-06 + 5.9600 1.6463e-06 + 5.9650 1.6463e-06 + 5.9700 1.6463e-06 + 5.9750 1.6463e-06 + 5.9800 1.6463e-06 + 5.9850 1.6463e-06 + 5.9900 1.6463e-06 + 5.9950 1.6463e-06 + 6.0000 1.6463e-06 + 6.0050 1.6463e-06 + 6.0100 1.6463e-06 + 6.0150 1.6463e-06 + 6.0200 1.6463e-06 + 6.0250 1.6463e-06 + 6.0300 1.6463e-06 + 6.0350 1.6463e-06 + 6.0400 1.6463e-06 + 6.0450 1.6463e-06 + 6.0500 1.6463e-06 + 6.0550 1.6463e-06 + 6.0600 1.6463e-06 + 6.0650 1.6463e-06 + 6.0700 1.6463e-06 + 6.0750 1.6463e-06 + 6.0800 1.6463e-06 + 6.0850 1.6463e-06 + 6.0900 1.6463e-06 + 6.0950 1.6463e-06 + 6.1000 1.6463e-06 + 6.1050 1.6463e-06 + 6.1100 1.6463e-06 + 6.1150 1.6463e-06 + 6.1200 1.6463e-06 + 6.1250 1.6463e-06 + 6.1300 1.6463e-06 + 6.1350 1.6463e-06 + 6.1400 1.6463e-06 + 6.1450 1.6463e-06 + 6.1500 1.6463e-06 + 6.1550 1.6463e-06 + 6.1600 1.6463e-06 + 6.1650 1.6463e-06 + 6.1700 1.6463e-06 + 6.1750 1.6463e-06 + 6.1800 1.6463e-06 + 6.1850 1.6463e-06 + 6.1900 1.6463e-06 + 6.1950 1.6463e-06 + 6.2000 1.6463e-06 + 6.2050 1.6463e-06 + 6.2100 1.6463e-06 + 6.2150 1.6463e-06 + 6.2200 1.6463e-06 + 6.2250 1.6463e-06 + 6.2300 1.6462e-06 + 6.2350 1.6462e-06 + 6.2400 1.6461e-06 + 6.2450 1.6461e-06 + 6.2500 1.6460e-06 + 6.2550 1.6459e-06 + 6.2600 1.6458e-06 + 6.2650 1.6457e-06 + 6.2700 1.6455e-06 + 6.2750 1.6453e-06 + 6.2800 1.6450e-06 + 6.2850 1.6447e-06 + 6.2900 1.6443e-06 + 6.2950 1.6438e-06 + 6.3000 1.6432e-06 + 6.3050 1.6426e-06 + 6.3100 1.6418e-06 + 6.3150 1.6408e-06 + 6.3200 1.6397e-06 + 6.3250 1.6384e-06 + 6.3300 1.6370e-06 + 6.3350 1.6353e-06 + 6.3400 1.6333e-06 + 6.3450 1.6312e-06 + 6.3500 1.6287e-06 + 6.3550 1.6260e-06 + 6.3600 1.6230e-06 + 6.3650 1.6196e-06 + 6.3700 1.6160e-06 + 6.3750 1.6120e-06 + 6.3800 1.6077e-06 + 6.3850 1.6030e-06 + 6.3900 1.5981e-06 + 6.3950 1.5928e-06 + 6.4000 1.5872e-06 + 6.4050 1.5814e-06 + 6.4100 1.5753e-06 + 6.4150 1.5691e-06 + 6.4200 1.5626e-06 + 6.4250 1.5560e-06 + 6.4300 1.5493e-06 + 6.4350 1.5425e-06 + 6.4400 1.5357e-06 + 6.4450 1.5289e-06 + 6.4500 1.5222e-06 + 6.4550 1.5156e-06 + 6.4600 1.5091e-06 + 6.4650 1.5028e-06 + 6.4700 1.4967e-06 + 6.4750 1.4909e-06 + 6.4800 1.4854e-06 + 6.4850 1.4801e-06 + 6.4900 1.4752e-06 + 6.4950 1.4705e-06 + 6.5000 1.4663e-06 + 6.5050 1.4623e-06 + 6.5100 1.4587e-06 + 6.5150 1.4555e-06 + 6.5200 1.4526e-06 + 6.5250 1.4500e-06 + 6.5300 1.4478e-06 + 6.5350 1.4460e-06 + 6.5400 1.4446e-06 + 6.5450 1.4436e-06 + 6.5500 1.4430e-06 + 6.5550 1.4430e-06 + 6.5600 1.4437e-06 + 6.5650 1.4450e-06 + 6.5700 1.4473e-06 + 6.5750 1.4508e-06 + 6.5800 1.4556e-06 + 6.5850 1.4621e-06 + 6.5900 1.4708e-06 + 6.5950 1.4822e-06 + 6.6000 1.4968e-06 + 6.6050 1.5155e-06 + 6.6100 1.5390e-06 + 6.6150 1.5686e-06 + 6.6200 1.6052e-06 + 6.6250 1.6503e-06 + 6.6300 1.7054e-06 + 6.6350 1.7723e-06 + 6.6400 1.8527e-06 + 6.6450 1.9487e-06 + 6.6500 2.0624e-06 + 6.6550 2.1961e-06 + 6.6600 2.3521e-06 + 6.6650 2.5326e-06 + 6.6700 2.7399e-06 + 6.6750 2.9761e-06 + 6.6800 3.2429e-06 + 6.6850 3.5418e-06 + 6.6900 3.8741e-06 + 6.6950 4.2402e-06 + 6.7000 4.6401e-06 + 6.7050 5.0731e-06 + 6.7100 5.5376e-06 + 6.7150 6.0312e-06 + 6.7200 6.5507e-06 + 6.7250 7.0920e-06 + 6.7300 7.6499e-06 + 6.7350 8.2186e-06 + 6.7400 8.7914e-06 + 6.7450 9.3610e-06 + 6.7500 9.9197e-06 + 6.7550 1.0459e-05 + 6.7600 1.0971e-05 + 6.7650 1.1448e-05 + 6.7700 1.1881e-05 + 6.7750 1.2263e-05 + 6.7800 1.2588e-05 + 6.7850 1.2849e-05 + 6.7900 1.3042e-05 + 6.7950 1.3164e-05 + 6.8000 1.3213e-05 + 6.8050 1.3188e-05 + 6.8100 1.3089e-05 + 6.8150 1.2920e-05 + 6.8200 1.2684e-05 + 6.8250 1.2385e-05 + 6.8300 1.2031e-05 + 6.8350 1.1626e-05 + 6.8400 1.1179e-05 + 6.8450 1.0698e-05 + 6.8500 1.0191e-05 + 6.8550 9.6658e-06 + 6.8600 9.1308e-06 + 6.8650 8.5934e-06 + 6.8700 8.0607e-06 + 6.8750 7.5392e-06 + 6.8800 7.0344e-06 + 6.8850 6.5510e-06 + 6.8900 6.0929e-06 + 6.8950 5.6632e-06 + 6.9000 5.2638e-06 + 6.9050 4.8962e-06 + 6.9100 4.5608e-06 + 6.9150 4.2576e-06 + 6.9200 3.9858e-06 + 6.9250 3.7442e-06 + 6.9300 3.5313e-06 + 6.9350 3.3452e-06 + 6.9400 3.1839e-06 + 6.9450 3.0452e-06 + 6.9500 2.9268e-06 + 6.9550 2.8267e-06 + 6.9600 2.7426e-06 + 6.9650 2.6725e-06 + 6.9700 2.6145e-06 + 6.9750 2.5670e-06 + 6.9800 2.5283e-06 + 6.9850 2.4970e-06 + 6.9900 2.4720e-06 + 6.9950 2.4520e-06 + 7.0000 2.4362e-06 + 7.0050 2.4239e-06 + 7.0100 2.4143e-06 + 7.0150 2.4069e-06 + 7.0200 2.4013e-06 + 7.0250 2.3970e-06 + 7.0300 2.3938e-06 + 7.0350 2.3914e-06 + 7.0400 2.3897e-06 + 7.0450 2.3885e-06 + 7.0500 2.3878e-06 + 7.0550 2.3874e-06 + 7.0600 2.3873e-06 + 7.0650 2.3876e-06 + 7.0700 2.3881e-06 + 7.0750 2.3891e-06 + 7.0800 2.3904e-06 + 7.0850 2.3923e-06 + 7.0900 2.3948e-06 + 7.0950 2.3981e-06 + 7.1000 2.4025e-06 + 7.1050 2.4082e-06 + 7.1100 2.4155e-06 + 7.1150 2.4248e-06 + 7.1200 2.4367e-06 + 7.1250 2.4516e-06 + 7.1300 2.4703e-06 + 7.1350 2.4935e-06 + 7.1400 2.5222e-06 + 7.1450 2.5575e-06 + 7.1500 2.6006e-06 + 7.1550 2.6528e-06 + 7.1600 2.7157e-06 + 7.1650 2.7911e-06 + 7.1700 2.8808e-06 + 7.1750 2.9869e-06 + 7.1800 3.1116e-06 + 7.1850 3.2572e-06 + 7.1900 3.4262e-06 + 7.1950 3.6210e-06 + 7.2000 3.8443e-06 + 7.2050 4.0985e-06 + 7.2100 4.3861e-06 + 7.2150 4.7097e-06 + 7.2200 5.0712e-06 + 7.2250 5.4727e-06 + 7.2300 5.9159e-06 + 7.2350 6.4020e-06 + 7.2400 6.9319e-06 + 7.2450 7.5060e-06 + 7.2500 8.1242e-06 + 7.2550 8.7858e-06 + 7.2600 9.4895e-06 + 7.2650 1.0233e-05 + 7.2700 1.1015e-05 + 7.2750 1.1832e-05 + 7.2800 1.2680e-05 + 7.2850 1.3555e-05 + 7.2900 1.4454e-05 + 7.2950 1.5370e-05 + 7.3000 1.6300e-05 + 7.3050 1.7238e-05 + 7.3100 1.8179e-05 + 7.3150 1.9117e-05 + 7.3200 2.0049e-05 + 7.3250 2.0968e-05 + 7.3300 2.1871e-05 + 7.3350 2.2753e-05 + 7.3400 2.3611e-05 + 7.3450 2.4442e-05 + 7.3500 2.5244e-05 + 7.3550 2.6013e-05 + 7.3600 2.6750e-05 + 7.3650 2.7452e-05 + 7.3700 2.8120e-05 + 7.3750 2.8754e-05 + 7.3800 2.9353e-05 + 7.3850 2.9921e-05 + 7.3900 3.0456e-05 + 7.3950 3.0962e-05 + 7.4000 3.1439e-05 + 7.4050 3.1891e-05 + 7.4100 3.2319e-05 + 7.4150 3.2724e-05 + 7.4200 3.3110e-05 + 7.4250 3.3479e-05 + 7.4300 3.3832e-05 + 7.4350 3.4171e-05 + 7.4400 3.4499e-05 + 7.4450 3.4817e-05 + 7.4500 3.5127e-05 + 7.4550 3.5430e-05 + 7.4600 3.5727e-05 + 7.4650 3.6020e-05 + 7.4700 3.6309e-05 + 7.4750 3.6597e-05 + 7.4800 3.6882e-05 + 7.4850 3.7166e-05 + 7.4900 3.7450e-05 + 7.4950 3.7735e-05 + 7.5000 3.8019e-05 + 7.5050 3.8305e-05 + 7.5100 3.8591e-05 + 7.5150 3.8879e-05 + 7.5200 3.9169e-05 + 7.5250 3.9460e-05 + 7.5300 3.9753e-05 + 7.5350 4.0048e-05 + 7.5400 4.0345e-05 + 7.5450 4.0644e-05 + 7.5500 4.0945e-05 + 7.5550 4.1248e-05 + 7.5600 4.1554e-05 + 7.5650 4.1862e-05 + 7.5700 4.2172e-05 + 7.5750 4.2485e-05 + 7.5800 4.2800e-05 + 7.5850 4.3118e-05 + 7.5900 4.3438e-05 + 7.5950 4.3760e-05 + 7.6000 4.4085e-05 + 7.6050 4.4413e-05 + 7.6100 4.4743e-05 + 7.6150 4.5076e-05 + 7.6200 4.5412e-05 + 7.6250 4.5750e-05 + 7.6300 4.6092e-05 + 7.6350 4.6437e-05 + 7.6400 4.6785e-05 + 7.6450 4.7137e-05 + 7.6500 4.7493e-05 + 7.6550 4.7854e-05 + 7.6600 4.8220e-05 + 7.6650 4.8593e-05 + 7.6700 4.8974e-05 + 7.6750 4.9365e-05 + 7.6800 4.9770e-05 + 7.6850 5.0192e-05 + 7.6900 5.0638e-05 + 7.6950 5.1115e-05 + 7.7000 5.1634e-05 + 7.7050 5.2211e-05 + 7.7100 5.2867e-05 + 7.7150 5.3631e-05 + 7.7200 5.4540e-05 + 7.7250 5.5649e-05 + 7.7300 5.7025e-05 + 7.7350 5.8762e-05 + 7.7400 6.0980e-05 + 7.7450 6.3841e-05 + 7.7500 6.7548e-05 + 7.7550 7.2370e-05 + 7.7600 7.8645e-05 + 7.7650 8.6804e-05 + 7.7700 9.7388e-05 + 7.7750 0.00011107 + 7.7800 0.00012869 + 7.7850 0.00015127 + 7.7900 0.00018005 + 7.7950 0.00021651 + 7.8000 0.00026246 + 7.8050 0.00031998 + 7.8100 0.00039154 + 7.8150 0.00047997 + 7.8200 0.00058855 + 7.8250 0.00072093 + 7.8300 0.00088125 + 7.8350 0.0010741 + 7.8400 0.0013043 + 7.8450 0.0015772 + 7.8500 0.0018985 + 7.8550 0.0022739 + 7.8600 0.0027093 + 7.8650 0.0032105 + 7.8700 0.0037832 + 7.8750 0.0044325 + 7.8800 0.0051628 + 7.8850 0.0059778 + 7.8900 0.0068799 + 7.8950 0.0078703 + 7.9000 0.0089485 + 7.9050 0.010112 + 7.9100 0.011356 + 7.9150 0.012675 + 7.9200 0.014059 + 7.9250 0.015497 + 7.9300 0.016976 + 7.9350 0.018480 + 7.9400 0.019992 + 7.9450 0.021492 + 7.9500 0.022960 + 7.9550 0.024374 + 7.9600 0.025714 + 7.9650 0.026956 + 7.9700 0.028082 + 7.9750 0.029070 + 7.9800 0.029905 + 7.9850 0.030569 + 7.9900 0.031053 + 7.9950 0.031345 + 8.0000 0.031441 + 8.0050 0.031339 + 8.0100 0.031041 + 8.0150 0.030553 + 8.0200 0.029882 + 8.0250 0.029043 + 8.0300 0.028049 + 8.0350 0.026919 + 8.0400 0.025672 + 8.0450 0.024328 + 8.0500 0.022910 + 8.0550 0.021439 + 8.0600 0.019935 + 8.0650 0.018421 + 8.0700 0.016914 + 8.0750 0.015433 + 8.0800 0.013993 + 8.0850 0.012607 + 8.0900 0.011287 + 8.0950 0.010041 + 8.1000 0.0088772 + 8.1050 0.0077985 + 8.1100 0.0068077 + 8.1150 0.0059054 + 8.1200 0.0050904 + 8.1250 0.0043603 + 8.1300 0.0037113 + 8.1350 0.0031391 + 8.1400 0.0026384 + 8.1450 0.0022035 + 8.1500 0.0018288 + 8.1550 0.0015082 + 8.1600 0.0012360 + 8.1650 0.0010065 + 8.1700 0.00081449 + 8.1750 0.00065495 + 8.1800 0.00052334 + 8.1850 0.00041554 + 8.1900 0.00032787 + 8.1950 0.00025707 + 8.2000 0.00020029 + 8.2050 0.00015506 + 8.2100 0.00011930 + 8.2150 9.1200e-05 + 8.2200 6.9282e-05 + 8.2250 5.2300e-05 + 8.2300 3.9232e-05 + 8.2350 2.9244e-05 + 8.2400 2.1661e-05 + 8.2450 1.5943e-05 + 8.2500 1.1661e-05 + 8.2550 8.4754e-06 + 8.2600 6.1212e-06 + 8.2650 4.3930e-06 + 8.2700 3.1329e-06 + 8.2750 2.2202e-06 + 8.2800 1.5634e-06 + 8.2850 1.0940e-06 + 8.2900 7.6075e-07 + 8.2950 5.2566e-07 + 8.3000 3.6093e-07 + 8.3050 2.4626e-07 + 8.3100 1.6697e-07 + 8.3150 1.1249e-07 + 8.3200 7.5312e-08 + 8.3250 5.0103e-08 + 8.3300 3.3122e-08 + 8.3350 2.1758e-08 + 8.3400 1.4203e-08 + 8.3450 9.2133e-09 + 8.3500 5.9387e-09 + 8.3550 3.8039e-09 + 8.3600 2.4211e-09 + 8.3650 1.5313e-09 + 8.3700 9.6242e-10 + 8.3750 6.0107e-10 + 8.3800 3.7302e-10 + 8.3850 2.3004e-10 + 8.3900 1.4097e-10 + 8.3950 8.5844e-11 + 8.4000 5.1946e-11 + 8.4050 3.1235e-11 + 8.4100 1.8663e-11 + 8.4150 1.1081e-11 + 8.4200 6.5381e-12 + 8.4250 3.8332e-12 + 8.4300 2.2332e-12 + 8.4350 1.2929e-12 + 8.4400 7.4376e-13 + 8.4450 0.00000 + 8.4500 0.00000 + 8.4550 0.00000 + 8.4600 0.00000 + 8.4650 0.00000 + 8.4700 0.00000 + 8.4750 0.00000 + 8.4800 0.00000 + 8.4850 0.00000 + 8.4900 0.00000 + 8.4950 0.00000 + 8.5000 0.00000 + 8.5050 0.00000 + 8.5100 0.00000 + 8.5150 0.00000 + 8.5200 0.00000 + 8.5250 0.00000 + 8.5300 0.00000 + 8.5350 0.00000 + 8.5400 0.00000 + 8.5450 0.00000 + 8.5500 0.00000 + 8.5550 0.00000 + 8.5600 0.00000 + 8.5650 0.00000 + 8.5700 0.00000 + 8.5750 0.00000 + 8.5800 0.00000 + 8.5850 0.00000 + 8.5900 0.00000 + 8.5950 0.00000 + 8.6000 0.00000 + 8.6050 0.00000 + 8.6100 0.00000 + 8.6150 0.00000 + 8.6200 0.00000 + 8.6250 0.00000 + 8.6300 0.00000 + 8.6350 0.00000 + 8.6400 0.00000 + 8.6450 0.00000 + 8.6500 0.00000 + 8.6550 0.00000 + 8.6600 0.00000 + 8.6650 0.00000 + 8.6700 0.00000 + 8.6750 0.00000 + 8.6800 0.00000 + 8.6850 0.00000 + 8.6900 0.00000 + 8.6950 0.00000 + 8.7000 0.00000 + 8.7050 0.00000 + 8.7100 0.00000 + 8.7150 0.00000 + 8.7200 0.00000 + 8.7250 0.00000 + 8.7300 0.00000 + 8.7350 0.00000 + 8.7400 0.00000 + 8.7450 0.00000 + 8.7500 0.00000 + 8.7550 0.00000 + 8.7600 0.00000 + 8.7650 0.00000 + 8.7700 0.00000 + 8.7750 0.00000 + 8.7800 0.00000 + 8.7850 0.00000 + 8.7900 0.00000 + 8.7950 0.00000 + 8.8000 0.00000 + 8.8050 0.00000 + 8.8100 0.00000 + 8.8150 0.00000 + 8.8200 0.00000 + 8.8250 0.00000 + 8.8300 0.00000 + 8.8350 0.00000 + 8.8400 0.00000 + 8.8450 0.00000 + 8.8500 0.00000 + 8.8550 0.00000 + 8.8600 0.00000 + 8.8650 0.00000 + 8.8700 0.00000 + 8.8750 0.00000 + 8.8800 0.00000 + 8.8850 0.00000 + 8.8900 0.00000 + 8.8950 0.00000 + 8.9000 0.00000 + 8.9050 0.00000 + 8.9100 0.00000 + 8.9150 0.00000 + 8.9200 0.00000 + 8.9250 0.00000 + 8.9300 0.00000 + 8.9350 0.00000 + 8.9400 0.00000 + 8.9450 0.00000 + 8.9500 0.00000 + 8.9550 0.00000 + 8.9600 0.00000 + 8.9650 0.00000 + 8.9700 0.00000 + 8.9750 0.00000 + 8.9800 0.00000 + 8.9850 0.00000 + 8.9900 0.00000 + 8.9950 0.00000 + 9.0000 0.00000 + 9.0050 0.00000 + 9.0100 0.00000 + 9.0150 0.00000 + 9.0200 0.00000 + 9.0250 0.00000 + 9.0300 0.00000 + 9.0350 0.00000 + 9.0400 0.00000 + 9.0450 0.00000 + 9.0500 0.00000 + 9.0550 0.00000 + 9.0600 0.00000 + 9.0650 0.00000 + 9.0700 0.00000 + 9.0750 0.00000 + 9.0800 0.00000 + 9.0850 0.00000 + 9.0900 0.00000 + 9.0950 0.00000 + 9.1000 0.00000 + 9.1050 0.00000 + 9.1100 0.00000 + 9.1150 0.00000 + 9.1200 0.00000 + 9.1250 0.00000 + 9.1300 0.00000 + 9.1350 0.00000 + 9.1400 0.00000 + 9.1450 0.00000 + 9.1500 0.00000 + 9.1550 0.00000 + 9.1600 0.00000 + 9.1650 0.00000 + 9.1700 0.00000 + 9.1750 0.00000 + 9.1800 0.00000 + 9.1850 0.00000 + 9.1900 0.00000 + 9.1950 0.00000 + 9.2000 0.00000 + 9.2050 0.00000 + 9.2100 0.00000 + 9.2150 0.00000 + 9.2200 0.00000 + 9.2250 0.00000 + 9.2300 0.00000 + 9.2350 0.00000 + 9.2400 0.00000 + 9.2450 0.00000 + 9.2500 0.00000 + 9.2550 0.00000 + 9.2600 0.00000 + 9.2650 0.00000 + 9.2700 0.00000 + 9.2750 0.00000 + 9.2800 0.00000 + 9.2850 0.00000 + 9.2900 0.00000 + 9.2950 0.00000 + 9.3000 0.00000 + 9.3050 0.00000 + 9.3100 0.00000 + 9.3150 0.00000 + 9.3200 0.00000 + 9.3250 0.00000 + 9.3300 0.00000 + 9.3350 0.00000 + 9.3400 0.00000 + 9.3450 0.00000 + 9.3500 0.00000 + 9.3550 0.00000 + 9.3600 0.00000 + 9.3650 0.00000 + 9.3700 0.00000 + 9.3750 0.00000 + 9.3800 0.00000 + 9.3850 0.00000 + 9.3900 0.00000 + 9.3950 0.00000 + 9.4000 0.00000 + 9.4050 0.00000 + 9.4100 0.00000 + 9.4150 0.00000 + 9.4200 0.00000 + 9.4250 0.00000 + 9.4300 0.00000 + 9.4350 0.00000 + 9.4400 0.00000 + 9.4450 0.00000 + 9.4500 0.00000 + 9.4550 0.00000 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 4.4050e-07 + 0.20500 4.6488e-07 + 0.21000 4.8890e-07 + 0.21500 5.1244e-07 + 0.22000 5.3537e-07 + 0.22500 5.5757e-07 + 0.23000 5.7895e-07 + 0.23500 5.9940e-07 + 0.24000 6.1887e-07 + 0.24500 6.3728e-07 + 0.25000 6.5460e-07 + 0.25500 6.7079e-07 + 0.26000 6.8584e-07 + 0.26500 6.9974e-07 + 0.27000 7.1252e-07 + 0.27500 7.2418e-07 + 0.28000 7.3478e-07 + 0.28500 7.4434e-07 + 0.29000 7.5292e-07 + 0.29500 7.6057e-07 + 0.30000 7.6736e-07 + 0.30500 7.7335e-07 + 0.31000 7.7860e-07 + 0.31500 7.8317e-07 + 0.32000 7.8713e-07 + 0.32500 7.9054e-07 + 0.33000 7.9347e-07 + 0.33500 7.9596e-07 + 0.34000 7.9806e-07 + 0.34500 7.9983e-07 + 0.35000 8.0131e-07 + 0.35500 8.0255e-07 + 0.36000 8.0357e-07 + 0.36500 8.0440e-07 + 0.37000 8.0509e-07 + 0.37500 8.0564e-07 + 0.38000 8.0609e-07 + 0.38500 8.0645e-07 + 0.39000 8.0674e-07 + 0.39500 8.0697e-07 + 0.40000 8.0715e-07 + 0.40500 8.0729e-07 + 0.41000 8.0740e-07 + 0.41500 8.0749e-07 + 0.42000 8.0755e-07 + 0.42500 8.0760e-07 + 0.43000 8.0764e-07 + 0.43500 8.0767e-07 + 0.44000 8.0769e-07 + 0.44500 8.0771e-07 + 0.45000 8.0772e-07 + 0.45500 8.0773e-07 + 0.46000 8.0774e-07 + 0.46500 8.0774e-07 + 0.47000 8.0774e-07 + 0.47500 8.0775e-07 + 0.48000 8.0775e-07 + 0.48500 8.0775e-07 + 0.49000 8.0775e-07 + 0.49500 8.0775e-07 + 0.50000 8.0775e-07 + 0.50500 8.0775e-07 + 0.51000 8.0775e-07 + 0.51500 8.0775e-07 + 0.52000 8.0775e-07 + 0.52500 8.0775e-07 + 0.53000 8.0775e-07 + 0.53500 8.0775e-07 + 0.54000 8.0775e-07 + 0.54500 8.0775e-07 + 0.55000 8.0775e-07 + 0.55500 8.0775e-07 + 0.56000 8.0775e-07 + 0.56500 8.0775e-07 + 0.57000 8.0775e-07 + 0.57500 8.0775e-07 + 0.58000 8.0775e-07 + 0.58500 8.0775e-07 + 0.59000 8.0775e-07 + 0.59500 8.0775e-07 + 0.60000 8.0775e-07 + 0.60500 8.0775e-07 + 0.61000 8.0775e-07 + 0.61500 8.0775e-07 + 0.62000 8.0775e-07 + 0.62500 8.0775e-07 + 0.63000 8.0775e-07 + 0.63500 8.0775e-07 + 0.64000 8.0775e-07 + 0.64500 8.0775e-07 + 0.65000 8.0775e-07 + 0.65500 8.0775e-07 + 0.66000 8.0775e-07 + 0.66500 8.0775e-07 + 0.67000 8.0775e-07 + 0.67500 8.0775e-07 + 0.68000 8.0775e-07 + 0.68500 8.0775e-07 + 0.69000 8.0775e-07 + 0.69500 8.0775e-07 + 0.70000 8.0775e-07 + 0.70500 8.0775e-07 + 0.71000 8.0775e-07 + 0.71500 8.0775e-07 + 0.72000 8.0775e-07 + 0.72500 8.0775e-07 + 0.73000 8.0775e-07 + 0.73500 8.0775e-07 + 0.74000 8.0775e-07 + 0.74500 8.0775e-07 + 0.75000 8.0775e-07 + 0.75500 8.0775e-07 + 0.76000 8.0775e-07 + 0.76500 8.0775e-07 + 0.77000 8.0775e-07 + 0.77500 8.0775e-07 + 0.78000 8.0775e-07 + 0.78500 8.0775e-07 + 0.79000 8.0775e-07 + 0.79500 8.0775e-07 + 0.80000 8.0775e-07 + 0.80500 8.0775e-07 + 0.81000 8.0775e-07 + 0.81500 8.0775e-07 + 0.82000 8.0775e-07 + 0.82500 8.0775e-07 + 0.83000 8.0775e-07 + 0.83500 8.0775e-07 + 0.84000 8.0775e-07 + 0.84500 8.0775e-07 + 0.85000 8.0775e-07 + 0.85500 8.0775e-07 + 0.86000 8.0775e-07 + 0.86500 8.0775e-07 + 0.87000 8.0775e-07 + 0.87500 8.0775e-07 + 0.88000 8.0775e-07 + 0.88500 8.0775e-07 + 0.89000 8.0775e-07 + 0.89500 8.0775e-07 + 0.90000 8.0775e-07 + 0.90500 8.0775e-07 + 0.91000 8.0775e-07 + 0.91500 8.0775e-07 + 0.92000 8.0776e-07 + 0.92500 8.0776e-07 + 0.93000 8.0776e-07 + 0.93500 8.0776e-07 + 0.94000 8.0776e-07 + 0.94500 8.0777e-07 + 0.95000 8.0777e-07 + 0.95500 8.0778e-07 + 0.96000 8.0779e-07 + 0.96500 8.0781e-07 + 0.97000 8.0783e-07 + 0.97500 8.0786e-07 + 0.98000 8.0789e-07 + 0.98500 8.0794e-07 + 0.99000 8.0800e-07 + 0.99500 8.0808e-07 + 1.0000 8.0818e-07 + 1.0050 8.0830e-07 + 1.0100 8.0847e-07 + 1.0150 8.0867e-07 + 1.0200 8.0893e-07 + 1.0250 8.0925e-07 + 1.0300 8.0966e-07 + 1.0350 8.1015e-07 + 1.0400 8.1076e-07 + 1.0450 8.1151e-07 + 1.0500 8.1241e-07 + 1.0550 8.1351e-07 + 1.0600 8.1483e-07 + 1.0650 8.1640e-07 + 1.0700 8.1826e-07 + 1.0750 8.2047e-07 + 1.0800 8.2305e-07 + 1.0850 8.2607e-07 + 1.0900 8.2958e-07 + 1.0950 8.3362e-07 + 1.1000 8.3826e-07 + 1.1050 8.4356e-07 + 1.1100 8.4958e-07 + 1.1150 8.5636e-07 + 1.1200 8.6397e-07 + 1.1250 8.7246e-07 + 1.1300 8.8187e-07 + 1.1350 8.9226e-07 + 1.1400 9.0365e-07 + 1.1450 9.1607e-07 + 1.1500 9.2955e-07 + 1.1550 9.4407e-07 + 1.1600 9.5965e-07 + 1.1650 9.7625e-07 + 1.1700 9.9386e-07 + 1.1750 1.0124e-06 + 1.1800 1.0319e-06 + 1.1850 1.0521e-06 + 1.1900 1.0732e-06 + 1.1950 1.0948e-06 + 1.2000 1.1170e-06 + 1.2050 1.1396e-06 + 1.2100 1.1625e-06 + 1.2150 1.1855e-06 + 1.2200 1.2086e-06 + 1.2250 1.2316e-06 + 1.2300 1.2543e-06 + 1.2350 1.2766e-06 + 1.2400 1.2984e-06 + 1.2450 1.3196e-06 + 1.2500 1.3400e-06 + 1.2550 1.3595e-06 + 1.2600 1.3781e-06 + 1.2650 1.3956e-06 + 1.2700 1.4119e-06 + 1.2750 1.4271e-06 + 1.2800 1.4410e-06 + 1.2850 1.4536e-06 + 1.2900 1.4648e-06 + 1.2950 1.4747e-06 + 1.3000 1.4832e-06 + 1.3050 1.4903e-06 + 1.3100 1.4961e-06 + 1.3150 1.5005e-06 + 1.3200 1.5036e-06 + 1.3250 1.5053e-06 + 1.3300 1.5058e-06 + 1.3350 1.5051e-06 + 1.3400 1.5031e-06 + 1.3450 1.5001e-06 + 1.3500 1.4959e-06 + 1.3550 1.4908e-06 + 1.3600 1.4847e-06 + 1.3650 1.4777e-06 + 1.3700 1.4699e-06 + 1.3750 1.4613e-06 + 1.3800 1.4522e-06 + 1.3850 1.4424e-06 + 1.3900 1.4322e-06 + 1.3950 1.4216e-06 + 1.4000 1.4107e-06 + 1.4050 1.3995e-06 + 1.4100 1.3883e-06 + 1.4150 1.3769e-06 + 1.4200 1.3657e-06 + 1.4250 1.3545e-06 + 1.4300 1.3435e-06 + 1.4350 1.3328e-06 + 1.4400 1.3224e-06 + 1.4450 1.3124e-06 + 1.4500 1.3027e-06 + 1.4550 1.2936e-06 + 1.4600 1.2849e-06 + 1.4650 1.2767e-06 + 1.4700 1.2691e-06 + 1.4750 1.2620e-06 + 1.4800 1.2554e-06 + 1.4850 1.2494e-06 + 1.4900 1.2439e-06 + 1.4950 1.2389e-06 + 1.5000 1.2344e-06 + 1.5050 1.2303e-06 + 1.5100 1.2267e-06 + 1.5150 1.2235e-06 + 1.5200 1.2206e-06 + 1.5250 1.2182e-06 + 1.5300 1.2160e-06 + 1.5350 1.2141e-06 + 1.5400 1.2125e-06 + 1.5450 1.2111e-06 + 1.5500 1.2100e-06 + 1.5550 1.2090e-06 + 1.5600 1.2081e-06 + 1.5650 1.2074e-06 + 1.5700 1.2068e-06 + 1.5750 1.2064e-06 + 1.5800 1.2060e-06 + 1.5850 1.2056e-06 + 1.5900 1.2054e-06 + 1.5950 1.2052e-06 + 1.6000 1.2050e-06 + 1.6050 1.2049e-06 + 1.6100 1.2048e-06 + 1.6150 1.2047e-06 + 1.6200 1.2046e-06 + 1.6250 1.2045e-06 + 1.6300 1.2045e-06 + 1.6350 1.2045e-06 + 1.6400 1.2045e-06 + 1.6450 1.2044e-06 + 1.6500 1.2044e-06 + 1.6550 1.2044e-06 + 1.6600 1.2044e-06 + 1.6650 1.2044e-06 + 1.6700 1.2044e-06 + 1.6750 1.2044e-06 + 1.6800 1.2044e-06 + 1.6850 1.2044e-06 + 1.6900 1.2044e-06 + 1.6950 1.2044e-06 + 1.7000 1.2044e-06 + 1.7050 1.2044e-06 + 1.7100 1.2044e-06 + 1.7150 1.2044e-06 + 1.7200 1.2044e-06 + 1.7250 1.2044e-06 + 1.7300 1.2044e-06 + 1.7350 1.2044e-06 + 1.7400 1.2044e-06 + 1.7450 1.2044e-06 + 1.7500 1.2044e-06 + 1.7550 1.2044e-06 + 1.7600 1.2044e-06 + 1.7650 1.2044e-06 + 1.7700 1.2044e-06 + 1.7750 1.2044e-06 + 1.7800 1.2044e-06 + 1.7850 1.2044e-06 + 1.7900 1.2044e-06 + 1.7950 1.2044e-06 + 1.8000 1.2044e-06 + 1.8050 1.2044e-06 + 1.8100 1.2044e-06 + 1.8150 1.2044e-06 + 1.8200 1.2044e-06 + 1.8250 1.2044e-06 + 1.8300 1.2044e-06 + 1.8350 1.2044e-06 + 1.8400 1.2044e-06 + 1.8450 1.2044e-06 + 1.8500 1.2044e-06 + 1.8550 1.2044e-06 + 1.8600 1.2044e-06 + 1.8650 1.2044e-06 + 1.8700 1.2044e-06 + 1.8750 1.2044e-06 + 1.8800 1.2044e-06 + 1.8850 1.2044e-06 + 1.8900 1.2044e-06 + 1.8950 1.2044e-06 + 1.9000 1.2044e-06 + 1.9050 1.2044e-06 + 1.9100 1.2044e-06 + 1.9150 1.2044e-06 + 1.9200 1.2044e-06 + 1.9250 1.2044e-06 + 1.9300 1.2044e-06 + 1.9350 1.2044e-06 + 1.9400 1.2044e-06 + 1.9450 1.2044e-06 + 1.9500 1.2044e-06 + 1.9550 1.2044e-06 + 1.9600 1.2044e-06 + 1.9650 1.2044e-06 + 1.9700 1.2044e-06 + 1.9750 1.2044e-06 + 1.9800 1.2044e-06 + 1.9850 1.2044e-06 + 1.9900 1.2044e-06 + 1.9950 1.2044e-06 + 2.0000 1.2044e-06 + 2.0050 1.2044e-06 + 2.0100 1.2044e-06 + 2.0150 1.2044e-06 + 2.0200 1.2044e-06 + 2.0250 1.2044e-06 + 2.0300 1.2044e-06 + 2.0350 1.2044e-06 + 2.0400 1.2044e-06 + 2.0450 1.2044e-06 + 2.0500 1.2044e-06 + 2.0550 1.2044e-06 + 2.0600 1.2044e-06 + 2.0650 1.2044e-06 + 2.0700 1.2044e-06 + 2.0750 1.2044e-06 + 2.0800 1.2044e-06 + 2.0850 1.2044e-06 + 2.0900 1.2044e-06 + 2.0950 1.2044e-06 + 2.1000 1.2044e-06 + 2.1050 1.2044e-06 + 2.1100 1.2044e-06 + 2.1150 1.2044e-06 + 2.1200 1.2044e-06 + 2.1250 1.2044e-06 + 2.1300 1.2044e-06 + 2.1350 1.2044e-06 + 2.1400 1.2044e-06 + 2.1450 1.2044e-06 + 2.1500 1.2044e-06 + 2.1550 1.2044e-06 + 2.1600 1.2044e-06 + 2.1650 1.2044e-06 + 2.1700 1.2044e-06 + 2.1750 1.2044e-06 + 2.1800 1.2044e-06 + 2.1850 1.2044e-06 + 2.1900 1.2044e-06 + 2.1950 1.2044e-06 + 2.2000 1.2044e-06 + 2.2050 1.2044e-06 + 2.2100 1.2044e-06 + 2.2150 1.2044e-06 + 2.2200 1.2044e-06 + 2.2250 1.2044e-06 + 2.2300 1.2044e-06 + 2.2350 1.2044e-06 + 2.2400 1.2044e-06 + 2.2450 1.2044e-06 + 2.2500 1.2044e-06 + 2.2550 1.2044e-06 + 2.2600 1.2044e-06 + 2.2650 1.2044e-06 + 2.2700 1.2044e-06 + 2.2750 1.2044e-06 + 2.2800 1.2044e-06 + 2.2850 1.2044e-06 + 2.2900 1.2044e-06 + 2.2950 1.2044e-06 + 2.3000 1.2044e-06 + 2.3050 1.2044e-06 + 2.3100 1.2044e-06 + 2.3150 1.2044e-06 + 2.3200 1.2044e-06 + 2.3250 1.2044e-06 + 2.3300 1.2044e-06 + 2.3350 1.2044e-06 + 2.3400 1.2044e-06 + 2.3450 1.2044e-06 + 2.3500 1.2044e-06 + 2.3550 1.2044e-06 + 2.3600 1.2044e-06 + 2.3650 1.2044e-06 + 2.3700 1.2044e-06 + 2.3750 1.2044e-06 + 2.3800 1.2044e-06 + 2.3850 1.2044e-06 + 2.3900 1.2044e-06 + 2.3950 1.2044e-06 + 2.4000 1.2044e-06 + 2.4050 1.2044e-06 + 2.4100 1.2044e-06 + 2.4150 1.2044e-06 + 2.4200 1.2044e-06 + 2.4250 1.2044e-06 + 2.4300 1.2044e-06 + 2.4350 1.2044e-06 + 2.4400 1.2044e-06 + 2.4450 1.2044e-06 + 2.4500 1.2044e-06 + 2.4550 1.2044e-06 + 2.4600 1.2044e-06 + 2.4650 1.2044e-06 + 2.4700 1.2044e-06 + 2.4750 1.2044e-06 + 2.4800 1.2044e-06 + 2.4850 1.2044e-06 + 2.4900 1.2044e-06 + 2.4950 1.2044e-06 + 2.5000 1.2044e-06 + 2.5050 1.2044e-06 + 2.5100 1.2044e-06 + 2.5150 1.2044e-06 + 2.5200 1.2044e-06 + 2.5250 1.2044e-06 + 2.5300 1.2044e-06 + 2.5350 1.2044e-06 + 2.5400 1.2044e-06 + 2.5450 1.2044e-06 + 2.5500 1.2044e-06 + 2.5550 1.2044e-06 + 2.5600 1.2044e-06 + 2.5650 1.2044e-06 + 2.5700 1.2044e-06 + 2.5750 1.2044e-06 + 2.5800 1.2044e-06 + 2.5850 1.2044e-06 + 2.5900 1.2044e-06 + 2.5950 1.2044e-06 + 2.6000 1.2044e-06 + 2.6050 1.2044e-06 + 2.6100 1.2044e-06 + 2.6150 1.2044e-06 + 2.6200 1.2044e-06 + 2.6250 1.2044e-06 + 2.6300 1.2044e-06 + 2.6350 1.2044e-06 + 2.6400 1.2044e-06 + 2.6450 1.2044e-06 + 2.6500 1.2044e-06 + 2.6550 1.2044e-06 + 2.6600 1.2044e-06 + 2.6650 1.2044e-06 + 2.6700 1.2044e-06 + 2.6750 1.2044e-06 + 2.6800 1.2044e-06 + 2.6850 1.2044e-06 + 2.6900 1.2044e-06 + 2.6950 1.2044e-06 + 2.7000 1.2044e-06 + 2.7050 1.2044e-06 + 2.7100 1.2044e-06 + 2.7150 1.2044e-06 + 2.7200 1.2044e-06 + 2.7250 1.2044e-06 + 2.7300 1.2044e-06 + 2.7350 1.2044e-06 + 2.7400 1.2044e-06 + 2.7450 1.2044e-06 + 2.7500 1.2044e-06 + 2.7550 1.2044e-06 + 2.7600 1.2044e-06 + 2.7650 1.2044e-06 + 2.7700 1.2044e-06 + 2.7750 1.2044e-06 + 2.7800 1.2044e-06 + 2.7850 1.2044e-06 + 2.7900 1.2044e-06 + 2.7950 1.2044e-06 + 2.8000 1.2044e-06 + 2.8050 1.2044e-06 + 2.8100 1.2044e-06 + 2.8150 1.2044e-06 + 2.8200 1.2044e-06 + 2.8250 1.2044e-06 + 2.8300 1.2044e-06 + 2.8350 1.2044e-06 + 2.8400 1.2044e-06 + 2.8450 1.2044e-06 + 2.8500 1.2044e-06 + 2.8550 1.2044e-06 + 2.8600 1.2044e-06 + 2.8650 1.2044e-06 + 2.8700 1.2044e-06 + 2.8750 1.2044e-06 + 2.8800 1.2044e-06 + 2.8850 1.2044e-06 + 2.8900 1.2044e-06 + 2.8950 1.2044e-06 + 2.9000 1.2044e-06 + 2.9050 1.2044e-06 + 2.9100 1.2044e-06 + 2.9150 1.2044e-06 + 2.9200 1.2044e-06 + 2.9250 1.2044e-06 + 2.9300 1.2044e-06 + 2.9350 1.2044e-06 + 2.9400 1.2044e-06 + 2.9450 1.2044e-06 + 2.9500 1.2044e-06 + 2.9550 1.2044e-06 + 2.9600 1.2044e-06 + 2.9650 1.2044e-06 + 2.9700 1.2044e-06 + 2.9750 1.2044e-06 + 2.9800 1.2044e-06 + 2.9850 1.2044e-06 + 2.9900 1.2044e-06 + 2.9950 1.2044e-06 + 3.0000 1.2044e-06 + 3.0050 1.2044e-06 + 3.0100 1.2044e-06 + 3.0150 1.2044e-06 + 3.0200 1.2044e-06 + 3.0250 1.2044e-06 + 3.0300 1.2044e-06 + 3.0350 1.2044e-06 + 3.0400 1.2044e-06 + 3.0450 1.2044e-06 + 3.0500 1.2044e-06 + 3.0550 1.2044e-06 + 3.0600 1.2044e-06 + 3.0650 1.2044e-06 + 3.0700 1.2044e-06 + 3.0750 1.2044e-06 + 3.0800 1.2044e-06 + 3.0850 1.2044e-06 + 3.0900 1.2044e-06 + 3.0950 1.2044e-06 + 3.1000 1.2044e-06 + 3.1050 1.2044e-06 + 3.1100 1.2044e-06 + 3.1150 1.2044e-06 + 3.1200 1.2044e-06 + 3.1250 1.2044e-06 + 3.1300 1.2044e-06 + 3.1350 1.2044e-06 + 3.1400 1.2044e-06 + 3.1450 1.2044e-06 + 3.1500 1.2044e-06 + 3.1550 1.2044e-06 + 3.1600 1.2044e-06 + 3.1650 1.2044e-06 + 3.1700 1.2044e-06 + 3.1750 1.2044e-06 + 3.1800 1.2044e-06 + 3.1850 1.2044e-06 + 3.1900 1.2044e-06 + 3.1950 1.2044e-06 + 3.2000 1.2044e-06 + 3.2050 1.2044e-06 + 3.2100 1.2044e-06 + 3.2150 1.2044e-06 + 3.2200 1.2044e-06 + 3.2250 1.2044e-06 + 3.2300 1.2044e-06 + 3.2350 1.2044e-06 + 3.2400 1.2044e-06 + 3.2450 1.2044e-06 + 3.2500 1.2044e-06 + 3.2550 1.2044e-06 + 3.2600 1.2044e-06 + 3.2650 1.2044e-06 + 3.2700 1.2044e-06 + 3.2750 1.2044e-06 + 3.2800 1.2044e-06 + 3.2850 1.2044e-06 + 3.2900 1.2044e-06 + 3.2950 1.2044e-06 + 3.3000 1.2044e-06 + 3.3050 1.2044e-06 + 3.3100 1.2044e-06 + 3.3150 1.2044e-06 + 3.3200 1.2044e-06 + 3.3250 1.2044e-06 + 3.3300 1.2044e-06 + 3.3350 1.2044e-06 + 3.3400 1.2044e-06 + 3.3450 1.2044e-06 + 3.3500 1.2044e-06 + 3.3550 1.2044e-06 + 3.3600 1.2044e-06 + 3.3650 1.2044e-06 + 3.3700 1.2044e-06 + 3.3750 1.2044e-06 + 3.3800 1.2044e-06 + 3.3850 1.2044e-06 + 3.3900 1.2044e-06 + 3.3950 1.2044e-06 + 3.4000 1.2044e-06 + 3.4050 1.2044e-06 + 3.4100 1.2044e-06 + 3.4150 1.2044e-06 + 3.4200 1.2044e-06 + 3.4250 1.2044e-06 + 3.4300 1.2044e-06 + 3.4350 1.2044e-06 + 3.4400 1.2044e-06 + 3.4450 1.2044e-06 + 3.4500 1.2044e-06 + 3.4550 1.2044e-06 + 3.4600 1.2044e-06 + 3.4650 1.2044e-06 + 3.4700 1.2044e-06 + 3.4750 1.2044e-06 + 3.4800 1.2044e-06 + 3.4850 1.2044e-06 + 3.4900 1.2044e-06 + 3.4950 1.2044e-06 + 3.5000 1.2044e-06 + 3.5050 1.2044e-06 + 3.5100 1.2044e-06 + 3.5150 1.2044e-06 + 3.5200 1.2044e-06 + 3.5250 1.2044e-06 + 3.5300 1.2044e-06 + 3.5350 1.2044e-06 + 3.5400 1.2044e-06 + 3.5450 1.2044e-06 + 3.5500 1.2044e-06 + 3.5550 1.2044e-06 + 3.5600 1.2044e-06 + 3.5650 1.2044e-06 + 3.5700 1.2044e-06 + 3.5750 1.2044e-06 + 3.5800 1.2044e-06 + 3.5850 1.2044e-06 + 3.5900 1.2044e-06 + 3.5950 1.2044e-06 + 3.6000 1.2044e-06 + 3.6050 1.2044e-06 + 3.6100 1.2044e-06 + 3.6150 1.2044e-06 + 3.6200 1.2044e-06 + 3.6250 1.2044e-06 + 3.6300 1.2044e-06 + 3.6350 1.2044e-06 + 3.6400 1.2044e-06 + 3.6450 1.2044e-06 + 3.6500 1.2044e-06 + 3.6550 1.2044e-06 + 3.6600 1.2044e-06 + 3.6650 1.2044e-06 + 3.6700 1.2044e-06 + 3.6750 1.2044e-06 + 3.6800 1.2044e-06 + 3.6850 1.2044e-06 + 3.6900 1.2044e-06 + 3.6950 1.2044e-06 + 3.7000 1.2044e-06 + 3.7050 1.2044e-06 + 3.7100 1.2044e-06 + 3.7150 1.2044e-06 + 3.7200 1.2044e-06 + 3.7250 1.2044e-06 + 3.7300 1.2044e-06 + 3.7350 1.2044e-06 + 3.7400 1.2044e-06 + 3.7450 1.2044e-06 + 3.7500 1.2044e-06 + 3.7550 1.2044e-06 + 3.7600 1.2044e-06 + 3.7650 1.2044e-06 + 3.7700 1.2044e-06 + 3.7750 1.2044e-06 + 3.7800 1.2044e-06 + 3.7850 1.2044e-06 + 3.7900 1.2044e-06 + 3.7950 1.2044e-06 + 3.8000 1.2044e-06 + 3.8050 1.2044e-06 + 3.8100 1.2044e-06 + 3.8150 1.2044e-06 + 3.8200 1.2044e-06 + 3.8250 1.2044e-06 + 3.8300 1.2044e-06 + 3.8350 1.2044e-06 + 3.8400 1.2044e-06 + 3.8450 1.2044e-06 + 3.8500 1.2044e-06 + 3.8550 1.2044e-06 + 3.8600 1.2044e-06 + 3.8650 1.2044e-06 + 3.8700 1.2044e-06 + 3.8750 1.2044e-06 + 3.8800 1.2044e-06 + 3.8850 1.2044e-06 + 3.8900 1.2044e-06 + 3.8950 1.2044e-06 + 3.9000 1.2044e-06 + 3.9050 1.2044e-06 + 3.9100 1.2044e-06 + 3.9150 1.2044e-06 + 3.9200 1.2044e-06 + 3.9250 1.2044e-06 + 3.9300 1.2044e-06 + 3.9350 1.2044e-06 + 3.9400 1.2044e-06 + 3.9450 1.2044e-06 + 3.9500 1.2044e-06 + 3.9550 1.2044e-06 + 3.9600 1.2044e-06 + 3.9650 1.2044e-06 + 3.9700 1.2044e-06 + 3.9750 1.2044e-06 + 3.9800 1.2044e-06 + 3.9850 1.2044e-06 + 3.9900 1.2044e-06 + 3.9950 1.2044e-06 + 4.0000 1.2044e-06 + 4.0050 1.2044e-06 + 4.0100 1.2044e-06 + 4.0150 1.2044e-06 + 4.0200 1.2044e-06 + 4.0250 1.2044e-06 + 4.0300 1.2044e-06 + 4.0350 1.2044e-06 + 4.0400 1.2044e-06 + 4.0450 1.2044e-06 + 4.0500 1.2044e-06 + 4.0550 1.2044e-06 + 4.0600 1.2044e-06 + 4.0650 1.2044e-06 + 4.0700 1.2044e-06 + 4.0750 1.2044e-06 + 4.0800 1.2044e-06 + 4.0850 1.2044e-06 + 4.0900 1.2044e-06 + 4.0950 1.2044e-06 + 4.1000 1.2044e-06 + 4.1050 1.2044e-06 + 4.1100 1.2044e-06 + 4.1150 1.2044e-06 + 4.1200 1.2044e-06 + 4.1250 1.2044e-06 + 4.1300 1.2044e-06 + 4.1350 1.2044e-06 + 4.1400 1.2044e-06 + 4.1450 1.2044e-06 + 4.1500 1.2044e-06 + 4.1550 1.2044e-06 + 4.1600 1.2044e-06 + 4.1650 1.2044e-06 + 4.1700 1.2044e-06 + 4.1750 1.2044e-06 + 4.1800 1.2044e-06 + 4.1850 1.2044e-06 + 4.1900 1.2044e-06 + 4.1950 1.2044e-06 + 4.2000 1.2044e-06 + 4.2050 1.2044e-06 + 4.2100 1.2044e-06 + 4.2150 1.2044e-06 + 4.2200 1.2044e-06 + 4.2250 1.2044e-06 + 4.2300 1.2044e-06 + 4.2350 1.2044e-06 + 4.2400 1.2044e-06 + 4.2450 1.2044e-06 + 4.2500 1.2044e-06 + 4.2550 1.2044e-06 + 4.2600 1.2044e-06 + 4.2650 1.2044e-06 + 4.2700 1.2044e-06 + 4.2750 1.2044e-06 + 4.2800 1.2044e-06 + 4.2850 1.2044e-06 + 4.2900 1.2044e-06 + 4.2950 1.2044e-06 + 4.3000 1.2044e-06 + 4.3050 1.2044e-06 + 4.3100 1.2044e-06 + 4.3150 1.2044e-06 + 4.3200 1.2044e-06 + 4.3250 1.2044e-06 + 4.3300 1.2044e-06 + 4.3350 1.2044e-06 + 4.3400 1.2044e-06 + 4.3450 1.2044e-06 + 4.3500 1.2044e-06 + 4.3550 1.2044e-06 + 4.3600 1.2044e-06 + 4.3650 1.2044e-06 + 4.3700 1.2044e-06 + 4.3750 1.2044e-06 + 4.3800 1.2044e-06 + 4.3850 1.2044e-06 + 4.3900 1.2044e-06 + 4.3950 1.2044e-06 + 4.4000 1.2044e-06 + 4.4050 1.2044e-06 + 4.4100 1.2044e-06 + 4.4150 1.2044e-06 + 4.4200 1.2044e-06 + 4.4250 1.2044e-06 + 4.4300 1.2044e-06 + 4.4350 1.2044e-06 + 4.4400 1.2044e-06 + 4.4450 1.2044e-06 + 4.4500 1.2044e-06 + 4.4550 1.2044e-06 + 4.4600 1.2044e-06 + 4.4650 1.2044e-06 + 4.4700 1.2044e-06 + 4.4750 1.2044e-06 + 4.4800 1.2044e-06 + 4.4850 1.2044e-06 + 4.4900 1.2044e-06 + 4.4950 1.2044e-06 + 4.5000 1.2044e-06 + 4.5050 1.2044e-06 + 4.5100 1.2044e-06 + 4.5150 1.2044e-06 + 4.5200 1.2044e-06 + 4.5250 1.2044e-06 + 4.5300 1.2044e-06 + 4.5350 1.2044e-06 + 4.5400 1.2044e-06 + 4.5450 1.2044e-06 + 4.5500 1.2044e-06 + 4.5550 1.2044e-06 + 4.5600 1.2044e-06 + 4.5650 1.2044e-06 + 4.5700 1.2044e-06 + 4.5750 1.2044e-06 + 4.5800 1.2044e-06 + 4.5850 1.2044e-06 + 4.5900 1.2044e-06 + 4.5950 1.2044e-06 + 4.6000 1.2044e-06 + 4.6050 1.2044e-06 + 4.6100 1.2044e-06 + 4.6150 1.2044e-06 + 4.6200 1.2044e-06 + 4.6250 1.2044e-06 + 4.6300 1.2044e-06 + 4.6350 1.2044e-06 + 4.6400 1.2044e-06 + 4.6450 1.2044e-06 + 4.6500 1.2044e-06 + 4.6550 1.2044e-06 + 4.6600 1.2044e-06 + 4.6650 1.2044e-06 + 4.6700 1.2044e-06 + 4.6750 1.2044e-06 + 4.6800 1.2044e-06 + 4.6850 1.2044e-06 + 4.6900 1.2044e-06 + 4.6950 1.2044e-06 + 4.7000 1.2044e-06 + 4.7050 1.2044e-06 + 4.7100 1.2044e-06 + 4.7150 1.2044e-06 + 4.7200 1.2044e-06 + 4.7250 1.2044e-06 + 4.7300 1.2044e-06 + 4.7350 1.2044e-06 + 4.7400 1.2044e-06 + 4.7450 1.2044e-06 + 4.7500 1.2044e-06 + 4.7550 1.2044e-06 + 4.7600 1.2044e-06 + 4.7650 1.2044e-06 + 4.7700 1.2044e-06 + 4.7750 1.2044e-06 + 4.7800 1.2044e-06 + 4.7850 1.2044e-06 + 4.7900 1.2044e-06 + 4.7950 1.2044e-06 + 4.8000 1.2044e-06 + 4.8050 1.2044e-06 + 4.8100 1.2044e-06 + 4.8150 1.2044e-06 + 4.8200 1.2044e-06 + 4.8250 1.2044e-06 + 4.8300 1.2044e-06 + 4.8350 1.2044e-06 + 4.8400 1.2044e-06 + 4.8450 1.2044e-06 + 4.8500 1.2044e-06 + 4.8550 1.2044e-06 + 4.8600 1.2044e-06 + 4.8650 1.2044e-06 + 4.8700 1.2044e-06 + 4.8750 1.2044e-06 + 4.8800 1.2044e-06 + 4.8850 1.2044e-06 + 4.8900 1.2044e-06 + 4.8950 1.2044e-06 + 4.9000 1.2044e-06 + 4.9050 1.2044e-06 + 4.9100 1.2044e-06 + 4.9150 1.2044e-06 + 4.9200 1.2044e-06 + 4.9250 1.2044e-06 + 4.9300 1.2044e-06 + 4.9350 1.2044e-06 + 4.9400 1.2044e-06 + 4.9450 1.2044e-06 + 4.9500 1.2044e-06 + 4.9550 1.2044e-06 + 4.9600 1.2044e-06 + 4.9650 1.2044e-06 + 4.9700 1.2044e-06 + 4.9750 1.2044e-06 + 4.9800 1.2044e-06 + 4.9850 1.2044e-06 + 4.9900 1.2044e-06 + 4.9950 1.2044e-06 + 5.0000 1.2044e-06 + 5.0050 1.2044e-06 + 5.0100 1.2044e-06 + 5.0150 1.2044e-06 + 5.0200 1.2044e-06 + 5.0250 1.2044e-06 + 5.0300 1.2044e-06 + 5.0350 1.2044e-06 + 5.0400 1.2044e-06 + 5.0450 1.2044e-06 + 5.0500 1.2044e-06 + 5.0550 1.2044e-06 + 5.0600 1.2044e-06 + 5.0650 1.2044e-06 + 5.0700 1.2044e-06 + 5.0750 1.2044e-06 + 5.0800 1.2044e-06 + 5.0850 1.2044e-06 + 5.0900 1.2044e-06 + 5.0950 1.2044e-06 + 5.1000 1.2044e-06 + 5.1050 1.2044e-06 + 5.1100 1.2044e-06 + 5.1150 1.2044e-06 + 5.1200 1.2044e-06 + 5.1250 1.2044e-06 + 5.1300 1.2044e-06 + 5.1350 1.2044e-06 + 5.1400 1.2044e-06 + 5.1450 1.2044e-06 + 5.1500 1.2044e-06 + 5.1550 1.2044e-06 + 5.1600 1.2044e-06 + 5.1650 1.2044e-06 + 5.1700 1.2044e-06 + 5.1750 1.2044e-06 + 5.1800 1.2044e-06 + 5.1850 1.2044e-06 + 5.1900 1.2044e-06 + 5.1950 1.2044e-06 + 5.2000 1.2044e-06 + 5.2050 1.2044e-06 + 5.2100 1.2044e-06 + 5.2150 1.2044e-06 + 5.2200 1.2044e-06 + 5.2250 1.2044e-06 + 5.2300 1.2044e-06 + 5.2350 1.2044e-06 + 5.2400 1.2044e-06 + 5.2450 1.2044e-06 + 5.2500 1.2044e-06 + 5.2550 1.2044e-06 + 5.2600 1.2044e-06 + 5.2650 1.2044e-06 + 5.2700 1.2044e-06 + 5.2750 1.2044e-06 + 5.2800 1.2044e-06 + 5.2850 1.2044e-06 + 5.2900 1.2044e-06 + 5.2950 1.2044e-06 + 5.3000 1.2044e-06 + 5.3050 1.2044e-06 + 5.3100 1.2044e-06 + 5.3150 1.2044e-06 + 5.3200 1.2044e-06 + 5.3250 1.2044e-06 + 5.3300 1.2044e-06 + 5.3350 1.2044e-06 + 5.3400 1.2044e-06 + 5.3450 1.2044e-06 + 5.3500 1.2044e-06 + 5.3550 1.2044e-06 + 5.3600 1.2044e-06 + 5.3650 1.2044e-06 + 5.3700 1.2044e-06 + 5.3750 1.2044e-06 + 5.3800 1.2044e-06 + 5.3850 1.2044e-06 + 5.3900 1.2044e-06 + 5.3950 1.2044e-06 + 5.4000 1.2044e-06 + 5.4050 1.2044e-06 + 5.4100 1.2044e-06 + 5.4150 1.2044e-06 + 5.4200 1.2044e-06 + 5.4250 1.2044e-06 + 5.4300 1.2044e-06 + 5.4350 1.2044e-06 + 5.4400 1.2044e-06 + 5.4450 1.2044e-06 + 5.4500 1.2044e-06 + 5.4550 1.2044e-06 + 5.4600 1.2044e-06 + 5.4650 1.2044e-06 + 5.4700 1.2044e-06 + 5.4750 1.2044e-06 + 5.4800 1.2044e-06 + 5.4850 1.2044e-06 + 5.4900 1.2044e-06 + 5.4950 1.2044e-06 + 5.5000 1.2044e-06 + 5.5050 1.2044e-06 + 5.5100 1.2044e-06 + 5.5150 1.2044e-06 + 5.5200 1.2044e-06 + 5.5250 1.2044e-06 + 5.5300 1.2044e-06 + 5.5350 1.2044e-06 + 5.5400 1.2044e-06 + 5.5450 1.2044e-06 + 5.5500 1.2044e-06 + 5.5550 1.2044e-06 + 5.5600 1.2044e-06 + 5.5650 1.2044e-06 + 5.5700 1.2044e-06 + 5.5750 1.2044e-06 + 5.5800 1.2044e-06 + 5.5850 1.2044e-06 + 5.5900 1.2044e-06 + 5.5950 1.2044e-06 + 5.6000 1.2044e-06 + 5.6050 1.2044e-06 + 5.6100 1.2044e-06 + 5.6150 1.2044e-06 + 5.6200 1.2044e-06 + 5.6250 1.2044e-06 + 5.6300 1.2044e-06 + 5.6350 1.2044e-06 + 5.6400 1.2044e-06 + 5.6450 1.2044e-06 + 5.6500 1.2044e-06 + 5.6550 1.2044e-06 + 5.6600 1.2044e-06 + 5.6650 1.2044e-06 + 5.6700 1.2044e-06 + 5.6750 1.2044e-06 + 5.6800 1.2044e-06 + 5.6850 1.2044e-06 + 5.6900 1.2044e-06 + 5.6950 1.2044e-06 + 5.7000 1.2044e-06 + 5.7050 1.2044e-06 + 5.7100 1.2044e-06 + 5.7150 1.2044e-06 + 5.7200 1.2044e-06 + 5.7250 1.2044e-06 + 5.7300 1.2044e-06 + 5.7350 1.2044e-06 + 5.7400 1.2044e-06 + 5.7450 1.2044e-06 + 5.7500 1.2044e-06 + 5.7550 1.2044e-06 + 5.7600 1.2044e-06 + 5.7650 1.2044e-06 + 5.7700 1.2044e-06 + 5.7750 1.2044e-06 + 5.7800 1.2044e-06 + 5.7850 1.2044e-06 + 5.7900 1.2044e-06 + 5.7950 1.2044e-06 + 5.8000 1.2044e-06 + 5.8050 1.2044e-06 + 5.8100 1.2044e-06 + 5.8150 1.2044e-06 + 5.8200 1.2044e-06 + 5.8250 1.2044e-06 + 5.8300 1.2044e-06 + 5.8350 1.2044e-06 + 5.8400 1.2044e-06 + 5.8450 1.2044e-06 + 5.8500 1.2044e-06 + 5.8550 1.2044e-06 + 5.8600 1.2044e-06 + 5.8650 1.2044e-06 + 5.8700 1.2044e-06 + 5.8750 1.2044e-06 + 5.8800 1.2044e-06 + 5.8850 1.2044e-06 + 5.8900 1.2044e-06 + 5.8950 1.2044e-06 + 5.9000 1.2044e-06 + 5.9050 1.2044e-06 + 5.9100 1.2044e-06 + 5.9150 1.2044e-06 + 5.9200 1.2044e-06 + 5.9250 1.2044e-06 + 5.9300 1.2044e-06 + 5.9350 1.2044e-06 + 5.9400 1.2044e-06 + 5.9450 1.2044e-06 + 5.9500 1.2044e-06 + 5.9550 1.2044e-06 + 5.9600 1.2044e-06 + 5.9650 1.2044e-06 + 5.9700 1.2044e-06 + 5.9750 1.2044e-06 + 5.9800 1.2044e-06 + 5.9850 1.2044e-06 + 5.9900 1.2044e-06 + 5.9950 1.2044e-06 + 6.0000 1.2044e-06 + 6.0050 1.2044e-06 + 6.0100 1.2044e-06 + 6.0150 1.2044e-06 + 6.0200 1.2044e-06 + 6.0250 1.2044e-06 + 6.0300 1.2044e-06 + 6.0350 1.2044e-06 + 6.0400 1.2044e-06 + 6.0450 1.2044e-06 + 6.0500 1.2044e-06 + 6.0550 1.2044e-06 + 6.0600 1.2044e-06 + 6.0650 1.2044e-06 + 6.0700 1.2044e-06 + 6.0750 1.2044e-06 + 6.0800 1.2044e-06 + 6.0850 1.2044e-06 + 6.0900 1.2044e-06 + 6.0950 1.2044e-06 + 6.1000 1.2044e-06 + 6.1050 1.2044e-06 + 6.1100 1.2044e-06 + 6.1150 1.2044e-06 + 6.1200 1.2044e-06 + 6.1250 1.2044e-06 + 6.1300 1.2044e-06 + 6.1350 1.2044e-06 + 6.1400 1.2044e-06 + 6.1450 1.2044e-06 + 6.1500 1.2044e-06 + 6.1550 1.2044e-06 + 6.1600 1.2044e-06 + 6.1650 1.2044e-06 + 6.1700 1.2044e-06 + 6.1750 1.2044e-06 + 6.1800 1.2044e-06 + 6.1850 1.2044e-06 + 6.1900 1.2044e-06 + 6.1950 1.2044e-06 + 6.2000 1.2044e-06 + 6.2050 1.2044e-06 + 6.2100 1.2044e-06 + 6.2150 1.2044e-06 + 6.2200 1.2044e-06 + 6.2250 1.2044e-06 + 6.2300 1.2044e-06 + 6.2350 1.2044e-06 + 6.2400 1.2044e-06 + 6.2450 1.2044e-06 + 6.2500 1.2044e-06 + 6.2550 1.2044e-06 + 6.2600 1.2044e-06 + 6.2650 1.2044e-06 + 6.2700 1.2044e-06 + 6.2750 1.2044e-06 + 6.2800 1.2044e-06 + 6.2850 1.2044e-06 + 6.2900 1.2044e-06 + 6.2950 1.2044e-06 + 6.3000 1.2044e-06 + 6.3050 1.2044e-06 + 6.3100 1.2044e-06 + 6.3150 1.2044e-06 + 6.3200 1.2044e-06 + 6.3250 1.2044e-06 + 6.3300 1.2044e-06 + 6.3350 1.2044e-06 + 6.3400 1.2044e-06 + 6.3450 1.2044e-06 + 6.3500 1.2044e-06 + 6.3550 1.2044e-06 + 6.3600 1.2044e-06 + 6.3650 1.2044e-06 + 6.3700 1.2044e-06 + 6.3750 1.2044e-06 + 6.3800 1.2044e-06 + 6.3850 1.2044e-06 + 6.3900 1.2044e-06 + 6.3950 1.2044e-06 + 6.4000 1.2044e-06 + 6.4050 1.2044e-06 + 6.4100 1.2044e-06 + 6.4150 1.2044e-06 + 6.4200 1.2044e-06 + 6.4250 1.2044e-06 + 6.4300 1.2044e-06 + 6.4350 1.2044e-06 + 6.4400 1.2044e-06 + 6.4450 1.2044e-06 + 6.4500 1.2044e-06 + 6.4550 1.2044e-06 + 6.4600 1.2044e-06 + 6.4650 1.2044e-06 + 6.4700 1.2044e-06 + 6.4750 1.2044e-06 + 6.4800 1.2044e-06 + 6.4850 1.2044e-06 + 6.4900 1.2044e-06 + 6.4950 1.2044e-06 + 6.5000 1.2044e-06 + 6.5050 1.2044e-06 + 6.5100 1.2044e-06 + 6.5150 1.2044e-06 + 6.5200 1.2044e-06 + 6.5250 1.2044e-06 + 6.5300 1.2044e-06 + 6.5350 1.2044e-06 + 6.5400 1.2044e-06 + 6.5450 1.2044e-06 + 6.5500 1.2044e-06 + 6.5550 1.2044e-06 + 6.5600 1.2044e-06 + 6.5650 1.2044e-06 + 6.5700 1.2044e-06 + 6.5750 1.2044e-06 + 6.5800 1.2044e-06 + 6.5850 1.2044e-06 + 6.5900 1.2044e-06 + 6.5950 1.2044e-06 + 6.6000 1.2044e-06 + 6.6050 1.2044e-06 + 6.6100 1.2044e-06 + 6.6150 1.2044e-06 + 6.6200 1.2044e-06 + 6.6250 1.2044e-06 + 6.6300 1.2044e-06 + 6.6350 1.2044e-06 + 6.6400 1.2044e-06 + 6.6450 1.2044e-06 + 6.6500 1.2044e-06 + 6.6550 1.2044e-06 + 6.6600 1.2044e-06 + 6.6650 1.2044e-06 + 6.6700 1.2044e-06 + 6.6750 1.2044e-06 + 6.6800 1.2044e-06 + 6.6850 1.2044e-06 + 6.6900 1.2044e-06 + 6.6950 1.2044e-06 + 6.7000 1.2044e-06 + 6.7050 1.2044e-06 + 6.7100 1.2044e-06 + 6.7150 1.2044e-06 + 6.7200 1.2044e-06 + 6.7250 1.2044e-06 + 6.7300 1.2044e-06 + 6.7350 1.2044e-06 + 6.7400 1.2044e-06 + 6.7450 1.2044e-06 + 6.7500 1.2044e-06 + 6.7550 1.2044e-06 + 6.7600 1.2044e-06 + 6.7650 1.2044e-06 + 6.7700 1.2044e-06 + 6.7750 1.2044e-06 + 6.7800 1.2044e-06 + 6.7850 1.2044e-06 + 6.7900 1.2044e-06 + 6.7950 1.2044e-06 + 6.8000 1.2044e-06 + 6.8050 1.2044e-06 + 6.8100 1.2044e-06 + 6.8150 1.2044e-06 + 6.8200 1.2044e-06 + 6.8250 1.2044e-06 + 6.8300 1.2044e-06 + 6.8350 1.2044e-06 + 6.8400 1.2044e-06 + 6.8450 1.2044e-06 + 6.8500 1.2044e-06 + 6.8550 1.2044e-06 + 6.8600 1.2044e-06 + 6.8650 1.2044e-06 + 6.8700 1.2044e-06 + 6.8750 1.2044e-06 + 6.8800 1.2044e-06 + 6.8850 1.2044e-06 + 6.8900 1.2044e-06 + 6.8950 1.2044e-06 + 6.9000 1.2044e-06 + 6.9050 1.2044e-06 + 6.9100 1.2044e-06 + 6.9150 1.2044e-06 + 6.9200 1.2044e-06 + 6.9250 1.2044e-06 + 6.9300 1.2044e-06 + 6.9350 1.2044e-06 + 6.9400 1.2044e-06 + 6.9450 1.2044e-06 + 6.9500 1.2044e-06 + 6.9550 1.2044e-06 + 6.9600 1.2044e-06 + 6.9650 1.2044e-06 + 6.9700 1.2044e-06 + 6.9750 1.2044e-06 + 6.9800 1.2044e-06 + 6.9850 1.2044e-06 + 6.9900 1.2044e-06 + 6.9950 1.2044e-06 + 7.0000 1.2044e-06 + 7.0050 1.2044e-06 + 7.0100 1.2044e-06 + 7.0150 1.2044e-06 + 7.0200 1.2044e-06 + 7.0250 1.2044e-06 + 7.0300 1.2044e-06 + 7.0350 1.2044e-06 + 7.0400 1.2044e-06 + 7.0450 1.2044e-06 + 7.0500 1.2044e-06 + 7.0550 1.2044e-06 + 7.0600 1.2044e-06 + 7.0650 1.2044e-06 + 7.0700 1.2044e-06 + 7.0750 1.2044e-06 + 7.0800 1.2044e-06 + 7.0850 1.2044e-06 + 7.0900 1.2044e-06 + 7.0950 1.2044e-06 + 7.1000 1.2044e-06 + 7.1050 1.2044e-06 + 7.1100 1.2044e-06 + 7.1150 1.2044e-06 + 7.1200 1.2044e-06 + 7.1250 1.2044e-06 + 7.1300 1.2044e-06 + 7.1350 1.2044e-06 + 7.1400 1.2044e-06 + 7.1450 1.2044e-06 + 7.1500 1.2044e-06 + 7.1550 1.2044e-06 + 7.1600 1.2044e-06 + 7.1650 1.2044e-06 + 7.1700 1.2044e-06 + 7.1750 1.2044e-06 + 7.1800 1.2044e-06 + 7.1850 1.2044e-06 + 7.1900 1.2044e-06 + 7.1950 1.2044e-06 + 7.2000 1.2044e-06 + 7.2050 1.2044e-06 + 7.2100 1.2044e-06 + 7.2150 1.2043e-06 + 7.2200 1.2043e-06 + 7.2250 1.2043e-06 + 7.2300 1.2043e-06 + 7.2350 1.2043e-06 + 7.2400 1.2042e-06 + 7.2450 1.2042e-06 + 7.2500 1.2041e-06 + 7.2550 1.2040e-06 + 7.2600 1.2039e-06 + 7.2650 1.2038e-06 + 7.2700 1.2037e-06 + 7.2750 1.2035e-06 + 7.2800 1.2033e-06 + 7.2850 1.2031e-06 + 7.2900 1.2028e-06 + 7.2950 1.2024e-06 + 7.3000 1.2020e-06 + 7.3050 1.2016e-06 + 7.3100 1.2010e-06 + 7.3150 1.2004e-06 + 7.3200 1.1996e-06 + 7.3250 1.1987e-06 + 7.3300 1.1978e-06 + 7.3350 1.1966e-06 + 7.3400 1.1954e-06 + 7.3450 1.1940e-06 + 7.3500 1.1924e-06 + 7.3550 1.1907e-06 + 7.3600 1.1888e-06 + 7.3650 1.1867e-06 + 7.3700 1.1844e-06 + 7.3750 1.1819e-06 + 7.3800 1.1793e-06 + 7.3850 1.1764e-06 + 7.3900 1.1734e-06 + 7.3950 1.1702e-06 + 7.4000 1.1668e-06 + 7.4050 1.1633e-06 + 7.4100 1.1597e-06 + 7.4150 1.1559e-06 + 7.4200 1.1520e-06 + 7.4250 1.1481e-06 + 7.4300 1.1441e-06 + 7.4350 1.1401e-06 + 7.4400 1.1360e-06 + 7.4450 1.1320e-06 + 7.4500 1.1280e-06 + 7.4550 1.1240e-06 + 7.4600 1.1202e-06 + 7.4650 1.1164e-06 + 7.4700 1.1128e-06 + 7.4750 1.1093e-06 + 7.4800 1.1059e-06 + 7.4850 1.1027e-06 + 7.4900 1.0997e-06 + 7.4950 1.0969e-06 + 7.5000 1.0943e-06 + 7.5050 1.0919e-06 + 7.5100 1.0897e-06 + 7.5150 1.0878e-06 + 7.5200 1.0860e-06 + 7.5250 1.0845e-06 + 7.5300 1.0833e-06 + 7.5350 1.0824e-06 + 7.5400 1.0818e-06 + 7.5450 1.0815e-06 + 7.5500 1.0817e-06 + 7.5550 1.0824e-06 + 7.5600 1.0837e-06 + 7.5650 1.0857e-06 + 7.5700 1.0887e-06 + 7.5750 1.0927e-06 + 7.5800 1.0980e-06 + 7.5850 1.1051e-06 + 7.5900 1.1141e-06 + 7.5950 1.1256e-06 + 7.6000 1.1401e-06 + 7.6050 1.1582e-06 + 7.6100 1.1806e-06 + 7.6150 1.2080e-06 + 7.6200 1.2415e-06 + 7.6250 1.2819e-06 + 7.6300 1.3305e-06 + 7.6350 1.3884e-06 + 7.6400 1.4569e-06 + 7.6450 1.5375e-06 + 7.6500 1.6314e-06 + 7.6550 1.7403e-06 + 7.6600 1.8654e-06 + 7.6650 2.0083e-06 + 7.6700 2.1702e-06 + 7.6750 2.3524e-06 + 7.6800 2.5556e-06 + 7.6850 2.7808e-06 + 7.6900 3.0282e-06 + 7.6950 3.2980e-06 + 7.7000 3.5897e-06 + 7.7050 3.9025e-06 + 7.7100 4.2349e-06 + 7.7150 4.5852e-06 + 7.7200 4.9509e-06 + 7.7250 5.3289e-06 + 7.7300 5.7159e-06 + 7.7350 6.1077e-06 + 7.7400 6.4999e-06 + 7.7450 6.8878e-06 + 7.7500 7.2662e-06 + 7.7550 7.6301e-06 + 7.7600 7.9740e-06 + 7.7650 8.2930e-06 + 7.7700 8.5820e-06 + 7.7750 8.8364e-06 + 7.7800 9.0521e-06 + 7.7850 9.2256e-06 + 7.7900 9.3541e-06 + 7.7950 9.4354e-06 + 7.8000 9.4684e-06 + 7.8050 9.4528e-06 + 7.8100 9.3890e-06 + 7.8150 9.2783e-06 + 7.8200 9.1231e-06 + 7.8250 8.9263e-06 + 7.8300 8.6915e-06 + 7.8350 8.4229e-06 + 7.8400 8.1250e-06 + 7.8450 7.8030e-06 + 7.8500 7.4618e-06 + 7.8550 7.1068e-06 + 7.8600 6.7429e-06 + 7.8650 6.3752e-06 + 7.8700 6.0083e-06 + 7.8750 5.6464e-06 + 7.8800 5.2935e-06 + 7.8850 4.9528e-06 + 7.8900 4.6271e-06 + 7.8950 4.3187e-06 + 7.9000 4.0294e-06 + 7.9050 3.7603e-06 + 7.9100 3.5122e-06 + 7.9150 3.2854e-06 + 7.9200 3.0796e-06 + 7.9250 2.8945e-06 + 7.9300 2.7292e-06 + 7.9350 2.5828e-06 + 7.9400 2.4541e-06 + 7.9450 2.3418e-06 + 7.9500 2.2446e-06 + 7.9550 2.1610e-06 + 7.9600 2.0897e-06 + 7.9650 2.0293e-06 + 7.9700 1.9785e-06 + 7.9750 1.9360e-06 + 7.9800 1.9009e-06 + 7.9850 1.8719e-06 + 7.9900 1.8482e-06 + 7.9950 1.8290e-06 + 8.0000 1.8135e-06 + 8.0050 1.8011e-06 + 8.0100 1.7913e-06 + 8.0150 1.7835e-06 + 8.0200 1.7775e-06 + 8.0250 1.7729e-06 + 8.0300 1.7693e-06 + 8.0350 1.7667e-06 + 8.0400 1.7648e-06 + 8.0450 1.7635e-06 + 8.0500 1.7628e-06 + 8.0550 1.7625e-06 + 8.0600 1.7627e-06 + 8.0650 1.7634e-06 + 8.0700 1.7645e-06 + 8.0750 1.7662e-06 + 8.0800 1.7685e-06 + 8.0850 1.7716e-06 + 8.0900 1.7756e-06 + 8.0950 1.7808e-06 + 8.1000 1.7874e-06 + 8.1050 1.7957e-06 + 8.1100 1.8060e-06 + 8.1150 1.8189e-06 + 8.1200 1.8349e-06 + 8.1250 1.8544e-06 + 8.1300 1.8783e-06 + 8.1350 1.9073e-06 + 8.1400 1.9422e-06 + 8.1450 1.9840e-06 + 8.1500 2.0339e-06 + 8.1550 2.0930e-06 + 8.1600 2.1627e-06 + 8.1650 2.2442e-06 + 8.1700 2.3392e-06 + 8.1750 2.4491e-06 + 8.1800 2.5757e-06 + 8.1850 2.7205e-06 + 8.1900 2.8852e-06 + 8.1950 3.0716e-06 + 8.2000 3.2812e-06 + 8.2050 3.5155e-06 + 8.2100 3.7761e-06 + 8.2150 4.0641e-06 + 8.2200 4.3806e-06 + 8.2250 4.7264e-06 + 8.2300 5.1022e-06 + 8.2350 5.5082e-06 + 8.2400 5.9443e-06 + 8.2450 6.4101e-06 + 8.2500 6.9048e-06 + 8.2550 7.4273e-06 + 8.2600 7.9760e-06 + 8.2650 8.5491e-06 + 8.2700 9.1443e-06 + 8.2750 9.7591e-06 + 8.2800 1.0391e-05 + 8.2850 1.1036e-05 + 8.2900 1.1692e-05 + 8.2950 1.2354e-05 + 8.3000 1.3021e-05 + 8.3050 1.3687e-05 + 8.3100 1.4351e-05 + 8.3150 1.5008e-05 + 8.3200 1.5655e-05 + 8.3250 1.6290e-05 + 8.3300 1.6910e-05 + 8.3350 1.7512e-05 + 8.3400 1.8095e-05 + 8.3450 1.8657e-05 + 8.3500 1.9197e-05 + 8.3550 1.9713e-05 + 8.3600 2.0205e-05 + 8.3650 2.0672e-05 + 8.3700 2.1116e-05 + 8.3750 2.1535e-05 + 8.3800 2.1932e-05 + 8.3850 2.2305e-05 + 8.3900 2.2658e-05 + 8.3950 2.2990e-05 + 8.4000 2.3303e-05 + 8.4050 2.3599e-05 + 8.4100 2.3878e-05 + 8.4150 2.4143e-05 + 8.4200 2.4394e-05 + 8.4250 2.4634e-05 + 8.4300 2.4863e-05 + 8.4350 2.5083e-05 + 8.4400 2.5294e-05 + 8.4450 2.5499e-05 + 8.4500 2.5698e-05 + 8.4550 2.5892e-05 + 8.4600 2.6082e-05 + 8.4650 2.6269e-05 + 8.4700 2.6453e-05 + 8.4750 2.6636e-05 + 8.4800 2.6816e-05 + 8.4850 2.6996e-05 + 8.4900 2.7175e-05 + 8.4950 2.7354e-05 + 8.5000 2.7533e-05 + 8.5050 2.7712e-05 + 8.5100 2.7891e-05 + 8.5150 2.8071e-05 + 8.5200 2.8252e-05 + 8.5250 2.8434e-05 + 8.5300 2.8616e-05 + 8.5350 2.8800e-05 + 8.5400 2.8984e-05 + 8.5450 2.9170e-05 + 8.5500 2.9357e-05 + 8.5550 2.9545e-05 + 8.5600 2.9734e-05 + 8.5650 2.9925e-05 + 8.5700 3.0117e-05 + 8.5750 3.0311e-05 + 8.5800 3.0506e-05 + 8.5850 3.0702e-05 + 8.5900 3.0900e-05 + 8.5950 3.1100e-05 + 8.6000 3.1302e-05 + 8.6050 3.1506e-05 + 8.6100 3.1712e-05 + 8.6150 3.1920e-05 + 8.6200 3.2131e-05 + 8.6250 3.2344e-05 + 8.6300 3.2561e-05 + 8.6350 3.2781e-05 + 8.6400 3.3006e-05 + 8.6450 3.3236e-05 + 8.6500 3.3471e-05 + 8.6550 3.3714e-05 + 8.6600 3.3966e-05 + 8.6650 3.4229e-05 + 8.6700 3.4507e-05 + 8.6750 3.4803e-05 + 8.6800 3.5125e-05 + 8.6850 3.5479e-05 + 8.6900 3.5876e-05 + 8.6950 3.6332e-05 + 8.7000 3.6865e-05 + 8.7050 3.7503e-05 + 8.7100 3.8281e-05 + 8.7150 3.9246e-05 + 8.7200 4.0461e-05 + 8.7250 4.2006e-05 + 8.7300 4.3989e-05 + 8.7350 4.6546e-05 + 8.7400 4.9856e-05 + 8.7450 5.4143e-05 + 8.7500 5.9694e-05 + 8.7550 6.6870e-05 + 8.7600 7.6119e-05 + 8.7650 8.7999e-05 + 8.7700 0.00010319 + 8.7750 0.00012253 + 8.7800 0.00014703 + 8.7850 0.00017790 + 8.7900 0.00021656 + 8.7950 0.00026471 + 8.8000 0.00032434 + 8.8050 0.00039771 + 8.8100 0.00048745 + 8.8150 0.00059651 + 8.8200 0.00072822 + 8.8250 0.00088625 + 8.8300 0.0010746 + 8.8350 0.0012977 + 8.8400 0.0015602 + 8.8450 0.0018668 + 8.8500 0.0022227 + 8.8550 0.0026329 + 8.8600 0.0031025 + 8.8650 0.0036361 + 8.8700 0.0042383 + 8.8750 0.0049129 + 8.8800 0.0056631 + 8.8850 0.0064912 + 8.8900 0.0073981 + 8.8950 0.0083838 + 8.9000 0.0094465 + 8.9050 0.010583 + 8.9100 0.011788 + 8.9150 0.013054 + 8.9200 0.014372 + 8.9250 0.015733 + 8.9300 0.017122 + 8.9350 0.018525 + 8.9400 0.019928 + 8.9450 0.021312 + 8.9500 0.022659 + 8.9550 0.023952 + 8.9600 0.025170 + 8.9650 0.026297 + 8.9700 0.027314 + 8.9750 0.028206 + 8.9800 0.028956 + 8.9850 0.029553 + 8.9900 0.029986 + 8.9950 0.030249 + 9.0000 0.030336 + 9.0050 0.030245 + 9.0100 0.029979 + 9.0150 0.029541 + 9.0200 0.028941 + 9.0250 0.028187 + 9.0300 0.027292 + 9.0350 0.026272 + 9.0400 0.025142 + 9.0450 0.023920 + 9.0500 0.022625 + 9.0550 0.021275 + 9.0600 0.019888 + 9.0650 0.018484 + 9.0700 0.017078 + 9.0750 0.015688 + 9.0800 0.014326 + 9.0850 0.013006 + 9.0900 0.011739 + 9.0950 0.010533 + 9.1000 0.0093962 + 9.1050 0.0083330 + 9.1100 0.0073470 + 9.1150 0.0064398 + 9.1200 0.0056117 + 9.1250 0.0048615 + 9.1300 0.0041870 + 9.1350 0.0035850 + 9.1400 0.0030517 + 9.1450 0.0025825 + 9.1500 0.0021727 + 9.1550 0.0018173 + 9.1600 0.0015111 + 9.1650 0.0012492 + 9.1700 0.0010266 + 9.1750 0.00083878 + 9.1800 0.00068131 + 9.1850 0.00055018 + 9.1900 0.00044169 + 9.1950 0.00035252 + 9.2000 0.00027971 + 9.2050 0.00022064 + 9.2100 0.00017303 + 9.2150 0.00013490 + 9.2200 0.00010456 + 9.2250 8.0572e-05 + 9.2300 6.1723e-05 + 9.2350 4.7007e-05 + 9.2400 3.5591e-05 + 9.2450 2.6790e-05 + 9.2500 2.0048e-05 + 9.2550 1.4915e-05 + 9.2600 1.1031e-05 + 9.2650 8.1110e-06 + 9.2700 5.9292e-06 + 9.2750 4.3089e-06 + 9.2800 3.1131e-06 + 9.2850 2.2360e-06 + 9.2900 1.5967e-06 + 9.2950 1.1335e-06 + 9.3000 7.9997e-07 + 9.3050 5.6129e-07 + 9.3100 3.9152e-07 + 9.3150 2.7150e-07 + 9.3200 1.8718e-07 + 9.3250 1.2829e-07 + 9.3300 8.7415e-08 + 9.3350 5.9216e-08 + 9.3400 3.9879e-08 + 9.3450 2.6700e-08 + 9.3500 1.7772e-08 + 9.3550 1.1760e-08 + 9.3600 7.7363e-09 + 9.3650 5.0596e-09 + 9.3700 3.2898e-09 + 9.3750 2.1265e-09 + 9.3800 1.3665e-09 + 9.3850 8.7305e-10 + 9.3900 5.5451e-10 + 9.3950 3.5013e-10 + 9.4000 2.1979e-10 + 9.4050 1.3717e-10 + 9.4100 8.5105e-11 + 9.4150 5.2493e-11 + 9.4200 3.2189e-11 + 9.4250 1.9624e-11 + 9.4300 1.1893e-11 + 9.4350 7.1660e-12 + 9.4400 4.2925e-12 + 9.4450 2.5562e-12 + 9.4500 1.5134e-12 + 9.4550 8.9072e-13 + 9.4600 0.00000 + 9.4650 0.00000 + 9.4700 0.00000 + 9.4750 0.00000 + 9.4800 0.00000 + 9.4850 0.00000 + 9.4900 0.00000 + 9.4950 0.00000 + 9.5000 0.00000 + 9.5050 0.00000 + 9.5100 0.00000 + 9.5150 0.00000 + 9.5200 0.00000 + 9.5250 0.00000 + 9.5300 0.00000 + 9.5350 0.00000 + 9.5400 0.00000 + 9.5450 0.00000 + 9.5500 0.00000 + 9.5550 0.00000 + 9.5600 0.00000 + 9.5650 0.00000 + 9.5700 0.00000 + 9.5750 0.00000 + 9.5800 0.00000 + 9.5850 0.00000 + 9.5900 0.00000 + 9.5950 0.00000 + 9.6000 0.00000 + 9.6050 0.00000 + 9.6100 0.00000 + 9.6150 0.00000 + 9.6200 0.00000 + 9.6250 0.00000 + 9.6300 0.00000 + 9.6350 0.00000 + 9.6400 0.00000 + 9.6450 0.00000 + 9.6500 0.00000 + 9.6550 0.00000 + 9.6600 0.00000 + 9.6650 0.00000 + 9.6700 0.00000 + 9.6750 0.00000 + 9.6800 0.00000 + 9.6850 0.00000 + 9.6900 0.00000 + 9.6950 0.00000 + 9.7000 0.00000 + 9.7050 0.00000 + 9.7100 0.00000 + 9.7150 0.00000 + 9.7200 0.00000 + 9.7250 0.00000 + 9.7300 0.00000 + 9.7350 0.00000 + 9.7400 0.00000 + 9.7450 0.00000 + 9.7500 0.00000 + 9.7550 0.00000 + 9.7600 0.00000 + 9.7650 0.00000 + 9.7700 0.00000 + 9.7750 0.00000 + 9.7800 0.00000 + 9.7850 0.00000 + 9.7900 0.00000 + 9.7950 0.00000 + 9.8000 0.00000 + 9.8050 0.00000 + 9.8100 0.00000 + 9.8150 0.00000 + 9.8200 0.00000 + 9.8250 0.00000 + 9.8300 0.00000 + 9.8350 0.00000 + 9.8400 0.00000 + 9.8450 0.00000 + 9.8500 0.00000 + 9.8550 0.00000 + 9.8600 0.00000 + 9.8650 0.00000 + 9.8700 0.00000 + 9.8750 0.00000 + 9.8800 0.00000 + 9.8850 0.00000 + 9.8900 0.00000 + 9.8950 0.00000 + 9.9000 0.00000 + 9.9050 0.00000 + 9.9100 0.00000 + 9.9150 0.00000 + 9.9200 0.00000 + 9.9250 0.00000 + 9.9300 0.00000 + 9.9350 0.00000 + 9.9400 0.00000 + 9.9450 0.00000 + 9.9500 0.00000 + 9.9550 0.00000 + 9.9600 0.00000 + 9.9650 0.00000 + 9.9700 0.00000 + 9.9750 0.00000 + 9.9800 0.00000 + 9.9850 0.00000 + 9.9900 0.00000 + 9.9950 0.00000 + 10.000 0.00000 + 10.005 0.00000 + 10.010 0.00000 + 10.015 0.00000 + 10.020 0.00000 + 10.025 0.00000 + 10.030 0.00000 + 10.035 0.00000 + 10.040 0.00000 + 10.045 0.00000 + 10.050 0.00000 + 10.055 0.00000 + 10.060 0.00000 + 10.065 0.00000 + 10.070 0.00000 + 10.075 0.00000 + 10.080 0.00000 + 10.085 0.00000 + 10.090 0.00000 + 10.095 0.00000 + 10.100 0.00000 + 10.105 0.00000 + 10.110 0.00000 + 10.115 0.00000 + 10.120 0.00000 + 10.125 0.00000 + 10.130 0.00000 + 10.135 0.00000 + 10.140 0.00000 + 10.145 0.00000 + 10.150 0.00000 + 10.155 0.00000 + 10.160 0.00000 + 10.165 0.00000 + 10.170 0.00000 + 10.175 0.00000 + 10.180 0.00000 + 10.185 0.00000 + 10.190 0.00000 + 10.195 0.00000 + 10.200 0.00000 + 10.205 0.00000 + 10.210 0.00000 + 10.215 0.00000 + 10.220 0.00000 + 10.225 0.00000 + 10.230 0.00000 + 10.235 0.00000 + 10.240 0.00000 + 10.245 0.00000 + 10.250 0.00000 + 10.255 0.00000 + 10.260 0.00000 + 10.265 0.00000 + 10.270 0.00000 + 10.275 0.00000 + 10.280 0.00000 + 10.285 0.00000 + 10.290 0.00000 + 10.295 0.00000 + 10.300 0.00000 + 10.305 0.00000 + 10.310 0.00000 + 10.315 0.00000 + 10.320 0.00000 + 10.325 0.00000 + 10.330 0.00000 + 10.335 0.00000 + 10.340 0.00000 + 10.345 0.00000 + 10.350 0.00000 + 10.355 0.00000 + 10.360 0.00000 + 10.365 0.00000 + 10.370 0.00000 + 10.375 0.00000 + 10.380 0.00000 + 10.385 0.00000 + 10.390 0.00000 + 10.395 0.00000 + 10.400 0.00000 + 10.405 0.00000 + 10.410 0.00000 + 10.415 0.00000 + 10.420 0.00000 + 10.425 0.00000 + 10.430 0.00000 + 10.435 0.00000 + 10.440 0.00000 + 10.445 0.00000 + 10.450 0.00000 + 10.455 0.00000 + 10.460 0.00000 + 10.465 0.00000 + 10.470 0.00000 + 10.475 0.00000 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + 0.20000 3.1747e-07 + 0.20500 3.3450e-07 + 0.21000 3.5129e-07 + 0.21500 3.6776e-07 + 0.22000 3.8384e-07 + 0.22500 3.9944e-07 + 0.23000 4.1451e-07 + 0.23500 4.2896e-07 + 0.24000 4.4277e-07 + 0.24500 4.5587e-07 + 0.25000 4.6825e-07 + 0.25500 4.7987e-07 + 0.26000 4.9073e-07 + 0.26500 5.0082e-07 + 0.27000 5.1014e-07 + 0.27500 5.1871e-07 + 0.28000 5.2654e-07 + 0.28500 5.3365e-07 + 0.29000 5.4009e-07 + 0.29500 5.4587e-07 + 0.30000 5.5104e-07 + 0.30500 5.5564e-07 + 0.31000 5.5971e-07 + 0.31500 5.6329e-07 + 0.32000 5.6642e-07 + 0.32500 5.6915e-07 + 0.33000 5.7150e-07 + 0.33500 5.7353e-07 + 0.34000 5.7527e-07 + 0.34500 5.7675e-07 + 0.35000 5.7800e-07 + 0.35500 5.7906e-07 + 0.36000 5.7994e-07 + 0.36500 5.8068e-07 + 0.37000 5.8129e-07 + 0.37500 5.8179e-07 + 0.38000 5.8220e-07 + 0.38500 5.8254e-07 + 0.39000 5.8281e-07 + 0.39500 5.8303e-07 + 0.40000 5.8320e-07 + 0.40500 5.8334e-07 + 0.41000 5.8345e-07 + 0.41500 5.8354e-07 + 0.42000 5.8361e-07 + 0.42500 5.8366e-07 + 0.43000 5.8370e-07 + 0.43500 5.8374e-07 + 0.44000 5.8376e-07 + 0.44500 5.8378e-07 + 0.45000 5.8379e-07 + 0.45500 5.8381e-07 + 0.46000 5.8381e-07 + 0.46500 5.8382e-07 + 0.47000 5.8382e-07 + 0.47500 5.8383e-07 + 0.48000 5.8383e-07 + 0.48500 5.8383e-07 + 0.49000 5.8383e-07 + 0.49500 5.8383e-07 + 0.50000 5.8383e-07 + 0.50500 5.8383e-07 + 0.51000 5.8384e-07 + 0.51500 5.8384e-07 + 0.52000 5.8384e-07 + 0.52500 5.8384e-07 + 0.53000 5.8384e-07 + 0.53500 5.8384e-07 + 0.54000 5.8384e-07 + 0.54500 5.8384e-07 + 0.55000 5.8384e-07 + 0.55500 5.8384e-07 + 0.56000 5.8384e-07 + 0.56500 5.8384e-07 + 0.57000 5.8384e-07 + 0.57500 5.8384e-07 + 0.58000 5.8384e-07 + 0.58500 5.8384e-07 + 0.59000 5.8384e-07 + 0.59500 5.8384e-07 + 0.60000 5.8384e-07 + 0.60500 5.8384e-07 + 0.61000 5.8384e-07 + 0.61500 5.8384e-07 + 0.62000 5.8384e-07 + 0.62500 5.8384e-07 + 0.63000 5.8384e-07 + 0.63500 5.8384e-07 + 0.64000 5.8384e-07 + 0.64500 5.8384e-07 + 0.65000 5.8384e-07 + 0.65500 5.8384e-07 + 0.66000 5.8384e-07 + 0.66500 5.8384e-07 + 0.67000 5.8384e-07 + 0.67500 5.8384e-07 + 0.68000 5.8384e-07 + 0.68500 5.8384e-07 + 0.69000 5.8384e-07 + 0.69500 5.8384e-07 + 0.70000 5.8384e-07 + 0.70500 5.8384e-07 + 0.71000 5.8384e-07 + 0.71500 5.8384e-07 + 0.72000 5.8384e-07 + 0.72500 5.8384e-07 + 0.73000 5.8384e-07 + 0.73500 5.8384e-07 + 0.74000 5.8384e-07 + 0.74500 5.8384e-07 + 0.75000 5.8384e-07 + 0.75500 5.8384e-07 + 0.76000 5.8384e-07 + 0.76500 5.8384e-07 + 0.77000 5.8384e-07 + 0.77500 5.8384e-07 + 0.78000 5.8384e-07 + 0.78500 5.8384e-07 + 0.79000 5.8384e-07 + 0.79500 5.8384e-07 + 0.80000 5.8384e-07 + 0.80500 5.8384e-07 + 0.81000 5.8384e-07 + 0.81500 5.8384e-07 + 0.82000 5.8384e-07 + 0.82500 5.8384e-07 + 0.83000 5.8384e-07 + 0.83500 5.8384e-07 + 0.84000 5.8384e-07 + 0.84500 5.8384e-07 + 0.85000 5.8384e-07 + 0.85500 5.8384e-07 + 0.86000 5.8384e-07 + 0.86500 5.8384e-07 + 0.87000 5.8384e-07 + 0.87500 5.8384e-07 + 0.88000 5.8384e-07 + 0.88500 5.8384e-07 + 0.89000 5.8384e-07 + 0.89500 5.8384e-07 + 0.90000 5.8384e-07 + 0.90500 5.8384e-07 + 0.91000 5.8384e-07 + 0.91500 5.8384e-07 + 0.92000 5.8384e-07 + 0.92500 5.8384e-07 + 0.93000 5.8384e-07 + 0.93500 5.8385e-07 + 0.94000 5.8385e-07 + 0.94500 5.8386e-07 + 0.95000 5.8387e-07 + 0.95500 5.8388e-07 + 0.96000 5.8389e-07 + 0.96500 5.8391e-07 + 0.97000 5.8393e-07 + 0.97500 5.8396e-07 + 0.98000 5.8400e-07 + 0.98500 5.8405e-07 + 0.99000 5.8412e-07 + 0.99500 5.8420e-07 + 1.0000 5.8431e-07 + 1.0050 5.8444e-07 + 1.0100 5.8461e-07 + 1.0150 5.8482e-07 + 1.0200 5.8507e-07 + 1.0250 5.8539e-07 + 1.0300 5.8578e-07 + 1.0350 5.8625e-07 + 1.0400 5.8682e-07 + 1.0450 5.8751e-07 + 1.0500 5.8834e-07 + 1.0550 5.8933e-07 + 1.0600 5.9050e-07 + 1.0650 5.9189e-07 + 1.0700 5.9351e-07 + 1.0750 5.9541e-07 + 1.0800 5.9761e-07 + 1.0850 6.0016e-07 + 1.0900 6.0309e-07 + 1.0950 6.0643e-07 + 1.1000 6.1024e-07 + 1.1050 6.1455e-07 + 1.1100 6.1939e-07 + 1.1150 6.2482e-07 + 1.1200 6.3086e-07 + 1.1250 6.3755e-07 + 1.1300 6.4491e-07 + 1.1350 6.5299e-07 + 1.1400 6.6179e-07 + 1.1450 6.7134e-07 + 1.1500 6.8163e-07 + 1.1550 6.9268e-07 + 1.1600 7.0447e-07 + 1.1650 7.1699e-07 + 1.1700 7.3021e-07 + 1.1750 7.4410e-07 + 1.1800 7.5861e-07 + 1.1850 7.7369e-07 + 1.1900 7.8928e-07 + 1.1950 8.0531e-07 + 1.2000 8.2171e-07 + 1.2050 8.3839e-07 + 1.2100 8.5526e-07 + 1.2150 8.7225e-07 + 1.2200 8.8924e-07 + 1.2250 9.0614e-07 + 1.2300 9.2287e-07 + 1.2350 9.3932e-07 + 1.2400 9.5541e-07 + 1.2450 9.7104e-07 + 1.2500 9.8613e-07 + 1.2550 1.0006e-06 + 1.2600 1.0144e-06 + 1.2650 1.0274e-06 + 1.2700 1.0397e-06 + 1.2750 1.0510e-06 + 1.2800 1.0615e-06 + 1.2850 1.0710e-06 + 1.2900 1.0796e-06 + 1.2950 1.0872e-06 + 1.3000 1.0938e-06 + 1.3050 1.0994e-06 + 1.3100 1.1040e-06 + 1.3150 1.1076e-06 + 1.3200 1.1103e-06 + 1.3250 1.1120e-06 + 1.3300 1.1128e-06 + 1.3350 1.1127e-06 + 1.3400 1.1117e-06 + 1.3450 1.1100e-06 + 1.3500 1.1074e-06 + 1.3550 1.1041e-06 + 1.3600 1.1001e-06 + 1.3650 1.0955e-06 + 1.3700 1.0903e-06 + 1.3750 1.0846e-06 + 1.3800 1.0784e-06 + 1.3850 1.0718e-06 + 1.3900 1.0649e-06 + 1.3950 1.0577e-06 + 1.4000 1.0502e-06 + 1.4050 1.0426e-06 + 1.4100 1.0349e-06 + 1.4150 1.0271e-06 + 1.4200 1.0193e-06 + 1.4250 1.0116e-06 + 1.4300 1.0040e-06 + 1.4350 9.9651e-07 + 1.4400 9.8925e-07 + 1.4450 9.8222e-07 + 1.4500 9.7546e-07 + 1.4550 9.6900e-07 + 1.4600 9.6285e-07 + 1.4650 9.5704e-07 + 1.4700 9.5158e-07 + 1.4750 9.4647e-07 + 1.4800 9.4172e-07 + 1.4850 9.3733e-07 + 1.4900 9.3330e-07 + 1.4950 9.2961e-07 + 1.5000 9.2625e-07 + 1.5050 9.2322e-07 + 1.5100 9.2050e-07 + 1.5150 9.1806e-07 + 1.5200 9.1589e-07 + 1.5250 9.1397e-07 + 1.5300 9.1228e-07 + 1.5350 9.1081e-07 + 1.5400 9.0952e-07 + 1.5450 9.0841e-07 + 1.5500 9.0745e-07 + 1.5550 9.0663e-07 + 1.5600 9.0594e-07 + 1.5650 9.0535e-07 + 1.5700 9.0485e-07 + 1.5750 9.0443e-07 + 1.5800 9.0409e-07 + 1.5850 9.0380e-07 + 1.5900 9.0356e-07 + 1.5950 9.0337e-07 + 1.6000 9.0321e-07 + 1.6050 9.0308e-07 + 1.6100 9.0298e-07 + 1.6150 9.0290e-07 + 1.6200 9.0283e-07 + 1.6250 9.0278e-07 + 1.6300 9.0274e-07 + 1.6350 9.0270e-07 + 1.6400 9.0268e-07 + 1.6450 9.0266e-07 + 1.6500 9.0264e-07 + 1.6550 9.0263e-07 + 1.6600 9.0262e-07 + 1.6650 9.0262e-07 + 1.6700 9.0261e-07 + 1.6750 9.0261e-07 + 1.6800 9.0260e-07 + 1.6850 9.0260e-07 + 1.6900 9.0260e-07 + 1.6950 9.0260e-07 + 1.7000 9.0260e-07 + 1.7050 9.0260e-07 + 1.7100 9.0260e-07 + 1.7150 9.0260e-07 + 1.7200 9.0260e-07 + 1.7250 9.0260e-07 + 1.7300 9.0260e-07 + 1.7350 9.0260e-07 + 1.7400 9.0260e-07 + 1.7450 9.0260e-07 + 1.7500 9.0260e-07 + 1.7550 9.0260e-07 + 1.7600 9.0260e-07 + 1.7650 9.0260e-07 + 1.7700 9.0260e-07 + 1.7750 9.0260e-07 + 1.7800 9.0260e-07 + 1.7850 9.0260e-07 + 1.7900 9.0260e-07 + 1.7950 9.0260e-07 + 1.8000 9.0260e-07 + 1.8050 9.0260e-07 + 1.8100 9.0260e-07 + 1.8150 9.0260e-07 + 1.8200 9.0260e-07 + 1.8250 9.0260e-07 + 1.8300 9.0260e-07 + 1.8350 9.0260e-07 + 1.8400 9.0260e-07 + 1.8450 9.0260e-07 + 1.8500 9.0260e-07 + 1.8550 9.0260e-07 + 1.8600 9.0260e-07 + 1.8650 9.0260e-07 + 1.8700 9.0260e-07 + 1.8750 9.0260e-07 + 1.8800 9.0260e-07 + 1.8850 9.0260e-07 + 1.8900 9.0260e-07 + 1.8950 9.0260e-07 + 1.9000 9.0260e-07 + 1.9050 9.0260e-07 + 1.9100 9.0260e-07 + 1.9150 9.0260e-07 + 1.9200 9.0260e-07 + 1.9250 9.0260e-07 + 1.9300 9.0260e-07 + 1.9350 9.0260e-07 + 1.9400 9.0260e-07 + 1.9450 9.0260e-07 + 1.9500 9.0260e-07 + 1.9550 9.0260e-07 + 1.9600 9.0260e-07 + 1.9650 9.0260e-07 + 1.9700 9.0260e-07 + 1.9750 9.0260e-07 + 1.9800 9.0260e-07 + 1.9850 9.0260e-07 + 1.9900 9.0260e-07 + 1.9950 9.0260e-07 + 2.0000 9.0260e-07 + 2.0050 9.0260e-07 + 2.0100 9.0260e-07 + 2.0150 9.0260e-07 + 2.0200 9.0260e-07 + 2.0250 9.0260e-07 + 2.0300 9.0260e-07 + 2.0350 9.0260e-07 + 2.0400 9.0260e-07 + 2.0450 9.0260e-07 + 2.0500 9.0260e-07 + 2.0550 9.0260e-07 + 2.0600 9.0260e-07 + 2.0650 9.0260e-07 + 2.0700 9.0260e-07 + 2.0750 9.0260e-07 + 2.0800 9.0260e-07 + 2.0850 9.0260e-07 + 2.0900 9.0260e-07 + 2.0950 9.0260e-07 + 2.1000 9.0260e-07 + 2.1050 9.0260e-07 + 2.1100 9.0260e-07 + 2.1150 9.0260e-07 + 2.1200 9.0260e-07 + 2.1250 9.0260e-07 + 2.1300 9.0260e-07 + 2.1350 9.0260e-07 + 2.1400 9.0260e-07 + 2.1450 9.0260e-07 + 2.1500 9.0260e-07 + 2.1550 9.0260e-07 + 2.1600 9.0260e-07 + 2.1650 9.0260e-07 + 2.1700 9.0260e-07 + 2.1750 9.0260e-07 + 2.1800 9.0260e-07 + 2.1850 9.0260e-07 + 2.1900 9.0260e-07 + 2.1950 9.0260e-07 + 2.2000 9.0260e-07 + 2.2050 9.0260e-07 + 2.2100 9.0260e-07 + 2.2150 9.0260e-07 + 2.2200 9.0260e-07 + 2.2250 9.0260e-07 + 2.2300 9.0260e-07 + 2.2350 9.0260e-07 + 2.2400 9.0260e-07 + 2.2450 9.0260e-07 + 2.2500 9.0260e-07 + 2.2550 9.0260e-07 + 2.2600 9.0260e-07 + 2.2650 9.0260e-07 + 2.2700 9.0260e-07 + 2.2750 9.0260e-07 + 2.2800 9.0260e-07 + 2.2850 9.0260e-07 + 2.2900 9.0260e-07 + 2.2950 9.0260e-07 + 2.3000 9.0260e-07 + 2.3050 9.0260e-07 + 2.3100 9.0260e-07 + 2.3150 9.0260e-07 + 2.3200 9.0260e-07 + 2.3250 9.0260e-07 + 2.3300 9.0260e-07 + 2.3350 9.0260e-07 + 2.3400 9.0260e-07 + 2.3450 9.0260e-07 + 2.3500 9.0260e-07 + 2.3550 9.0260e-07 + 2.3600 9.0260e-07 + 2.3650 9.0260e-07 + 2.3700 9.0260e-07 + 2.3750 9.0260e-07 + 2.3800 9.0260e-07 + 2.3850 9.0260e-07 + 2.3900 9.0260e-07 + 2.3950 9.0260e-07 + 2.4000 9.0260e-07 + 2.4050 9.0260e-07 + 2.4100 9.0260e-07 + 2.4150 9.0260e-07 + 2.4200 9.0260e-07 + 2.4250 9.0260e-07 + 2.4300 9.0260e-07 + 2.4350 9.0260e-07 + 2.4400 9.0260e-07 + 2.4450 9.0260e-07 + 2.4500 9.0260e-07 + 2.4550 9.0260e-07 + 2.4600 9.0260e-07 + 2.4650 9.0260e-07 + 2.4700 9.0260e-07 + 2.4750 9.0260e-07 + 2.4800 9.0260e-07 + 2.4850 9.0260e-07 + 2.4900 9.0260e-07 + 2.4950 9.0260e-07 + 2.5000 9.0260e-07 + 2.5050 9.0260e-07 + 2.5100 9.0260e-07 + 2.5150 9.0260e-07 + 2.5200 9.0260e-07 + 2.5250 9.0260e-07 + 2.5300 9.0260e-07 + 2.5350 9.0260e-07 + 2.5400 9.0260e-07 + 2.5450 9.0260e-07 + 2.5500 9.0260e-07 + 2.5550 9.0260e-07 + 2.5600 9.0260e-07 + 2.5650 9.0260e-07 + 2.5700 9.0260e-07 + 2.5750 9.0260e-07 + 2.5800 9.0260e-07 + 2.5850 9.0260e-07 + 2.5900 9.0260e-07 + 2.5950 9.0260e-07 + 2.6000 9.0260e-07 + 2.6050 9.0260e-07 + 2.6100 9.0260e-07 + 2.6150 9.0260e-07 + 2.6200 9.0260e-07 + 2.6250 9.0260e-07 + 2.6300 9.0260e-07 + 2.6350 9.0260e-07 + 2.6400 9.0260e-07 + 2.6450 9.0260e-07 + 2.6500 9.0260e-07 + 2.6550 9.0260e-07 + 2.6600 9.0260e-07 + 2.6650 9.0260e-07 + 2.6700 9.0260e-07 + 2.6750 9.0260e-07 + 2.6800 9.0260e-07 + 2.6850 9.0260e-07 + 2.6900 9.0260e-07 + 2.6950 9.0260e-07 + 2.7000 9.0260e-07 + 2.7050 9.0260e-07 + 2.7100 9.0260e-07 + 2.7150 9.0260e-07 + 2.7200 9.0260e-07 + 2.7250 9.0260e-07 + 2.7300 9.0260e-07 + 2.7350 9.0260e-07 + 2.7400 9.0260e-07 + 2.7450 9.0260e-07 + 2.7500 9.0260e-07 + 2.7550 9.0260e-07 + 2.7600 9.0260e-07 + 2.7650 9.0260e-07 + 2.7700 9.0260e-07 + 2.7750 9.0260e-07 + 2.7800 9.0260e-07 + 2.7850 9.0260e-07 + 2.7900 9.0260e-07 + 2.7950 9.0260e-07 + 2.8000 9.0260e-07 + 2.8050 9.0260e-07 + 2.8100 9.0260e-07 + 2.8150 9.0260e-07 + 2.8200 9.0260e-07 + 2.8250 9.0260e-07 + 2.8300 9.0260e-07 + 2.8350 9.0260e-07 + 2.8400 9.0260e-07 + 2.8450 9.0260e-07 + 2.8500 9.0260e-07 + 2.8550 9.0260e-07 + 2.8600 9.0260e-07 + 2.8650 9.0260e-07 + 2.8700 9.0260e-07 + 2.8750 9.0260e-07 + 2.8800 9.0260e-07 + 2.8850 9.0260e-07 + 2.8900 9.0260e-07 + 2.8950 9.0260e-07 + 2.9000 9.0260e-07 + 2.9050 9.0260e-07 + 2.9100 9.0260e-07 + 2.9150 9.0260e-07 + 2.9200 9.0260e-07 + 2.9250 9.0260e-07 + 2.9300 9.0260e-07 + 2.9350 9.0260e-07 + 2.9400 9.0260e-07 + 2.9450 9.0260e-07 + 2.9500 9.0260e-07 + 2.9550 9.0260e-07 + 2.9600 9.0260e-07 + 2.9650 9.0260e-07 + 2.9700 9.0260e-07 + 2.9750 9.0260e-07 + 2.9800 9.0260e-07 + 2.9850 9.0260e-07 + 2.9900 9.0260e-07 + 2.9950 9.0260e-07 + 3.0000 9.0260e-07 + 3.0050 9.0260e-07 + 3.0100 9.0260e-07 + 3.0150 9.0260e-07 + 3.0200 9.0260e-07 + 3.0250 9.0260e-07 + 3.0300 9.0260e-07 + 3.0350 9.0260e-07 + 3.0400 9.0260e-07 + 3.0450 9.0260e-07 + 3.0500 9.0260e-07 + 3.0550 9.0260e-07 + 3.0600 9.0260e-07 + 3.0650 9.0260e-07 + 3.0700 9.0260e-07 + 3.0750 9.0260e-07 + 3.0800 9.0260e-07 + 3.0850 9.0260e-07 + 3.0900 9.0260e-07 + 3.0950 9.0260e-07 + 3.1000 9.0260e-07 + 3.1050 9.0260e-07 + 3.1100 9.0260e-07 + 3.1150 9.0260e-07 + 3.1200 9.0260e-07 + 3.1250 9.0260e-07 + 3.1300 9.0260e-07 + 3.1350 9.0260e-07 + 3.1400 9.0260e-07 + 3.1450 9.0260e-07 + 3.1500 9.0260e-07 + 3.1550 9.0260e-07 + 3.1600 9.0260e-07 + 3.1650 9.0260e-07 + 3.1700 9.0260e-07 + 3.1750 9.0260e-07 + 3.1800 9.0260e-07 + 3.1850 9.0260e-07 + 3.1900 9.0260e-07 + 3.1950 9.0260e-07 + 3.2000 9.0260e-07 + 3.2050 9.0260e-07 + 3.2100 9.0260e-07 + 3.2150 9.0260e-07 + 3.2200 9.0260e-07 + 3.2250 9.0260e-07 + 3.2300 9.0260e-07 + 3.2350 9.0260e-07 + 3.2400 9.0260e-07 + 3.2450 9.0260e-07 + 3.2500 9.0260e-07 + 3.2550 9.0260e-07 + 3.2600 9.0260e-07 + 3.2650 9.0260e-07 + 3.2700 9.0260e-07 + 3.2750 9.0260e-07 + 3.2800 9.0260e-07 + 3.2850 9.0260e-07 + 3.2900 9.0260e-07 + 3.2950 9.0260e-07 + 3.3000 9.0260e-07 + 3.3050 9.0260e-07 + 3.3100 9.0260e-07 + 3.3150 9.0260e-07 + 3.3200 9.0260e-07 + 3.3250 9.0260e-07 + 3.3300 9.0260e-07 + 3.3350 9.0260e-07 + 3.3400 9.0260e-07 + 3.3450 9.0260e-07 + 3.3500 9.0260e-07 + 3.3550 9.0260e-07 + 3.3600 9.0260e-07 + 3.3650 9.0260e-07 + 3.3700 9.0260e-07 + 3.3750 9.0260e-07 + 3.3800 9.0260e-07 + 3.3850 9.0260e-07 + 3.3900 9.0260e-07 + 3.3950 9.0260e-07 + 3.4000 9.0260e-07 + 3.4050 9.0260e-07 + 3.4100 9.0260e-07 + 3.4150 9.0260e-07 + 3.4200 9.0260e-07 + 3.4250 9.0260e-07 + 3.4300 9.0260e-07 + 3.4350 9.0260e-07 + 3.4400 9.0260e-07 + 3.4450 9.0260e-07 + 3.4500 9.0260e-07 + 3.4550 9.0260e-07 + 3.4600 9.0260e-07 + 3.4650 9.0260e-07 + 3.4700 9.0260e-07 + 3.4750 9.0260e-07 + 3.4800 9.0260e-07 + 3.4850 9.0260e-07 + 3.4900 9.0260e-07 + 3.4950 9.0260e-07 + 3.5000 9.0260e-07 + 3.5050 9.0260e-07 + 3.5100 9.0260e-07 + 3.5150 9.0260e-07 + 3.5200 9.0260e-07 + 3.5250 9.0260e-07 + 3.5300 9.0260e-07 + 3.5350 9.0260e-07 + 3.5400 9.0260e-07 + 3.5450 9.0260e-07 + 3.5500 9.0260e-07 + 3.5550 9.0260e-07 + 3.5600 9.0260e-07 + 3.5650 9.0260e-07 + 3.5700 9.0260e-07 + 3.5750 9.0260e-07 + 3.5800 9.0260e-07 + 3.5850 9.0260e-07 + 3.5900 9.0260e-07 + 3.5950 9.0260e-07 + 3.6000 9.0260e-07 + 3.6050 9.0260e-07 + 3.6100 9.0260e-07 + 3.6150 9.0260e-07 + 3.6200 9.0260e-07 + 3.6250 9.0260e-07 + 3.6300 9.0260e-07 + 3.6350 9.0260e-07 + 3.6400 9.0260e-07 + 3.6450 9.0260e-07 + 3.6500 9.0260e-07 + 3.6550 9.0260e-07 + 3.6600 9.0260e-07 + 3.6650 9.0260e-07 + 3.6700 9.0260e-07 + 3.6750 9.0260e-07 + 3.6800 9.0260e-07 + 3.6850 9.0260e-07 + 3.6900 9.0260e-07 + 3.6950 9.0260e-07 + 3.7000 9.0260e-07 + 3.7050 9.0260e-07 + 3.7100 9.0260e-07 + 3.7150 9.0260e-07 + 3.7200 9.0260e-07 + 3.7250 9.0260e-07 + 3.7300 9.0260e-07 + 3.7350 9.0260e-07 + 3.7400 9.0260e-07 + 3.7450 9.0260e-07 + 3.7500 9.0260e-07 + 3.7550 9.0260e-07 + 3.7600 9.0260e-07 + 3.7650 9.0260e-07 + 3.7700 9.0260e-07 + 3.7750 9.0260e-07 + 3.7800 9.0260e-07 + 3.7850 9.0260e-07 + 3.7900 9.0260e-07 + 3.7950 9.0260e-07 + 3.8000 9.0260e-07 + 3.8050 9.0260e-07 + 3.8100 9.0260e-07 + 3.8150 9.0260e-07 + 3.8200 9.0260e-07 + 3.8250 9.0260e-07 + 3.8300 9.0260e-07 + 3.8350 9.0260e-07 + 3.8400 9.0260e-07 + 3.8450 9.0260e-07 + 3.8500 9.0260e-07 + 3.8550 9.0260e-07 + 3.8600 9.0260e-07 + 3.8650 9.0260e-07 + 3.8700 9.0260e-07 + 3.8750 9.0260e-07 + 3.8800 9.0260e-07 + 3.8850 9.0260e-07 + 3.8900 9.0260e-07 + 3.8950 9.0260e-07 + 3.9000 9.0260e-07 + 3.9050 9.0260e-07 + 3.9100 9.0260e-07 + 3.9150 9.0260e-07 + 3.9200 9.0260e-07 + 3.9250 9.0260e-07 + 3.9300 9.0260e-07 + 3.9350 9.0260e-07 + 3.9400 9.0260e-07 + 3.9450 9.0260e-07 + 3.9500 9.0260e-07 + 3.9550 9.0260e-07 + 3.9600 9.0260e-07 + 3.9650 9.0260e-07 + 3.9700 9.0260e-07 + 3.9750 9.0260e-07 + 3.9800 9.0260e-07 + 3.9850 9.0260e-07 + 3.9900 9.0260e-07 + 3.9950 9.0260e-07 + 4.0000 9.0260e-07 + 4.0050 9.0260e-07 + 4.0100 9.0260e-07 + 4.0150 9.0260e-07 + 4.0200 9.0260e-07 + 4.0250 9.0260e-07 + 4.0300 9.0260e-07 + 4.0350 9.0260e-07 + 4.0400 9.0260e-07 + 4.0450 9.0260e-07 + 4.0500 9.0260e-07 + 4.0550 9.0260e-07 + 4.0600 9.0260e-07 + 4.0650 9.0260e-07 + 4.0700 9.0260e-07 + 4.0750 9.0260e-07 + 4.0800 9.0260e-07 + 4.0850 9.0260e-07 + 4.0900 9.0260e-07 + 4.0950 9.0260e-07 + 4.1000 9.0260e-07 + 4.1050 9.0260e-07 + 4.1100 9.0260e-07 + 4.1150 9.0260e-07 + 4.1200 9.0260e-07 + 4.1250 9.0260e-07 + 4.1300 9.0260e-07 + 4.1350 9.0260e-07 + 4.1400 9.0260e-07 + 4.1450 9.0260e-07 + 4.1500 9.0260e-07 + 4.1550 9.0260e-07 + 4.1600 9.0260e-07 + 4.1650 9.0260e-07 + 4.1700 9.0260e-07 + 4.1750 9.0260e-07 + 4.1800 9.0260e-07 + 4.1850 9.0260e-07 + 4.1900 9.0260e-07 + 4.1950 9.0260e-07 + 4.2000 9.0260e-07 + 4.2050 9.0260e-07 + 4.2100 9.0260e-07 + 4.2150 9.0260e-07 + 4.2200 9.0260e-07 + 4.2250 9.0260e-07 + 4.2300 9.0260e-07 + 4.2350 9.0260e-07 + 4.2400 9.0260e-07 + 4.2450 9.0260e-07 + 4.2500 9.0260e-07 + 4.2550 9.0260e-07 + 4.2600 9.0260e-07 + 4.2650 9.0260e-07 + 4.2700 9.0260e-07 + 4.2750 9.0260e-07 + 4.2800 9.0260e-07 + 4.2850 9.0260e-07 + 4.2900 9.0260e-07 + 4.2950 9.0260e-07 + 4.3000 9.0260e-07 + 4.3050 9.0260e-07 + 4.3100 9.0260e-07 + 4.3150 9.0260e-07 + 4.3200 9.0260e-07 + 4.3250 9.0260e-07 + 4.3300 9.0260e-07 + 4.3350 9.0260e-07 + 4.3400 9.0260e-07 + 4.3450 9.0260e-07 + 4.3500 9.0260e-07 + 4.3550 9.0260e-07 + 4.3600 9.0260e-07 + 4.3650 9.0260e-07 + 4.3700 9.0260e-07 + 4.3750 9.0260e-07 + 4.3800 9.0260e-07 + 4.3850 9.0260e-07 + 4.3900 9.0260e-07 + 4.3950 9.0260e-07 + 4.4000 9.0260e-07 + 4.4050 9.0260e-07 + 4.4100 9.0260e-07 + 4.4150 9.0260e-07 + 4.4200 9.0260e-07 + 4.4250 9.0260e-07 + 4.4300 9.0260e-07 + 4.4350 9.0260e-07 + 4.4400 9.0260e-07 + 4.4450 9.0260e-07 + 4.4500 9.0260e-07 + 4.4550 9.0260e-07 + 4.4600 9.0260e-07 + 4.4650 9.0260e-07 + 4.4700 9.0260e-07 + 4.4750 9.0260e-07 + 4.4800 9.0260e-07 + 4.4850 9.0260e-07 + 4.4900 9.0260e-07 + 4.4950 9.0260e-07 + 4.5000 9.0260e-07 + 4.5050 9.0260e-07 + 4.5100 9.0260e-07 + 4.5150 9.0260e-07 + 4.5200 9.0260e-07 + 4.5250 9.0260e-07 + 4.5300 9.0260e-07 + 4.5350 9.0260e-07 + 4.5400 9.0260e-07 + 4.5450 9.0260e-07 + 4.5500 9.0260e-07 + 4.5550 9.0260e-07 + 4.5600 9.0260e-07 + 4.5650 9.0260e-07 + 4.5700 9.0260e-07 + 4.5750 9.0260e-07 + 4.5800 9.0260e-07 + 4.5850 9.0260e-07 + 4.5900 9.0260e-07 + 4.5950 9.0260e-07 + 4.6000 9.0260e-07 + 4.6050 9.0260e-07 + 4.6100 9.0260e-07 + 4.6150 9.0260e-07 + 4.6200 9.0260e-07 + 4.6250 9.0260e-07 + 4.6300 9.0260e-07 + 4.6350 9.0260e-07 + 4.6400 9.0260e-07 + 4.6450 9.0260e-07 + 4.6500 9.0260e-07 + 4.6550 9.0260e-07 + 4.6600 9.0260e-07 + 4.6650 9.0260e-07 + 4.6700 9.0260e-07 + 4.6750 9.0260e-07 + 4.6800 9.0260e-07 + 4.6850 9.0260e-07 + 4.6900 9.0260e-07 + 4.6950 9.0260e-07 + 4.7000 9.0260e-07 + 4.7050 9.0260e-07 + 4.7100 9.0260e-07 + 4.7150 9.0260e-07 + 4.7200 9.0260e-07 + 4.7250 9.0260e-07 + 4.7300 9.0260e-07 + 4.7350 9.0260e-07 + 4.7400 9.0260e-07 + 4.7450 9.0260e-07 + 4.7500 9.0260e-07 + 4.7550 9.0260e-07 + 4.7600 9.0260e-07 + 4.7650 9.0260e-07 + 4.7700 9.0260e-07 + 4.7750 9.0260e-07 + 4.7800 9.0260e-07 + 4.7850 9.0260e-07 + 4.7900 9.0260e-07 + 4.7950 9.0260e-07 + 4.8000 9.0260e-07 + 4.8050 9.0260e-07 + 4.8100 9.0260e-07 + 4.8150 9.0260e-07 + 4.8200 9.0260e-07 + 4.8250 9.0260e-07 + 4.8300 9.0260e-07 + 4.8350 9.0260e-07 + 4.8400 9.0260e-07 + 4.8450 9.0260e-07 + 4.8500 9.0260e-07 + 4.8550 9.0260e-07 + 4.8600 9.0260e-07 + 4.8650 9.0260e-07 + 4.8700 9.0260e-07 + 4.8750 9.0260e-07 + 4.8800 9.0260e-07 + 4.8850 9.0260e-07 + 4.8900 9.0260e-07 + 4.8950 9.0260e-07 + 4.9000 9.0260e-07 + 4.9050 9.0260e-07 + 4.9100 9.0260e-07 + 4.9150 9.0260e-07 + 4.9200 9.0260e-07 + 4.9250 9.0260e-07 + 4.9300 9.0260e-07 + 4.9350 9.0260e-07 + 4.9400 9.0260e-07 + 4.9450 9.0260e-07 + 4.9500 9.0260e-07 + 4.9550 9.0260e-07 + 4.9600 9.0260e-07 + 4.9650 9.0260e-07 + 4.9700 9.0260e-07 + 4.9750 9.0260e-07 + 4.9800 9.0260e-07 + 4.9850 9.0260e-07 + 4.9900 9.0260e-07 + 4.9950 9.0260e-07 + 5.0000 9.0260e-07 + 5.0050 9.0260e-07 + 5.0100 9.0260e-07 + 5.0150 9.0260e-07 + 5.0200 9.0260e-07 + 5.0250 9.0260e-07 + 5.0300 9.0260e-07 + 5.0350 9.0260e-07 + 5.0400 9.0260e-07 + 5.0450 9.0260e-07 + 5.0500 9.0260e-07 + 5.0550 9.0260e-07 + 5.0600 9.0260e-07 + 5.0650 9.0260e-07 + 5.0700 9.0260e-07 + 5.0750 9.0260e-07 + 5.0800 9.0260e-07 + 5.0850 9.0260e-07 + 5.0900 9.0260e-07 + 5.0950 9.0260e-07 + 5.1000 9.0260e-07 + 5.1050 9.0260e-07 + 5.1100 9.0260e-07 + 5.1150 9.0260e-07 + 5.1200 9.0260e-07 + 5.1250 9.0260e-07 + 5.1300 9.0260e-07 + 5.1350 9.0260e-07 + 5.1400 9.0260e-07 + 5.1450 9.0260e-07 + 5.1500 9.0260e-07 + 5.1550 9.0260e-07 + 5.1600 9.0260e-07 + 5.1650 9.0260e-07 + 5.1700 9.0260e-07 + 5.1750 9.0260e-07 + 5.1800 9.0260e-07 + 5.1850 9.0260e-07 + 5.1900 9.0260e-07 + 5.1950 9.0260e-07 + 5.2000 9.0260e-07 + 5.2050 9.0260e-07 + 5.2100 9.0260e-07 + 5.2150 9.0260e-07 + 5.2200 9.0260e-07 + 5.2250 9.0260e-07 + 5.2300 9.0260e-07 + 5.2350 9.0260e-07 + 5.2400 9.0260e-07 + 5.2450 9.0260e-07 + 5.2500 9.0260e-07 + 5.2550 9.0260e-07 + 5.2600 9.0260e-07 + 5.2650 9.0260e-07 + 5.2700 9.0260e-07 + 5.2750 9.0260e-07 + 5.2800 9.0260e-07 + 5.2850 9.0260e-07 + 5.2900 9.0260e-07 + 5.2950 9.0260e-07 + 5.3000 9.0260e-07 + 5.3050 9.0260e-07 + 5.3100 9.0260e-07 + 5.3150 9.0260e-07 + 5.3200 9.0260e-07 + 5.3250 9.0260e-07 + 5.3300 9.0260e-07 + 5.3350 9.0260e-07 + 5.3400 9.0260e-07 + 5.3450 9.0260e-07 + 5.3500 9.0260e-07 + 5.3550 9.0260e-07 + 5.3600 9.0260e-07 + 5.3650 9.0260e-07 + 5.3700 9.0260e-07 + 5.3750 9.0260e-07 + 5.3800 9.0260e-07 + 5.3850 9.0260e-07 + 5.3900 9.0260e-07 + 5.3950 9.0260e-07 + 5.4000 9.0260e-07 + 5.4050 9.0260e-07 + 5.4100 9.0260e-07 + 5.4150 9.0260e-07 + 5.4200 9.0260e-07 + 5.4250 9.0260e-07 + 5.4300 9.0260e-07 + 5.4350 9.0260e-07 + 5.4400 9.0260e-07 + 5.4450 9.0260e-07 + 5.4500 9.0260e-07 + 5.4550 9.0260e-07 + 5.4600 9.0260e-07 + 5.4650 9.0260e-07 + 5.4700 9.0260e-07 + 5.4750 9.0260e-07 + 5.4800 9.0260e-07 + 5.4850 9.0260e-07 + 5.4900 9.0260e-07 + 5.4950 9.0260e-07 + 5.5000 9.0260e-07 + 5.5050 9.0260e-07 + 5.5100 9.0260e-07 + 5.5150 9.0260e-07 + 5.5200 9.0260e-07 + 5.5250 9.0260e-07 + 5.5300 9.0260e-07 + 5.5350 9.0260e-07 + 5.5400 9.0260e-07 + 5.5450 9.0260e-07 + 5.5500 9.0260e-07 + 5.5550 9.0260e-07 + 5.5600 9.0260e-07 + 5.5650 9.0260e-07 + 5.5700 9.0260e-07 + 5.5750 9.0260e-07 + 5.5800 9.0260e-07 + 5.5850 9.0260e-07 + 5.5900 9.0260e-07 + 5.5950 9.0260e-07 + 5.6000 9.0260e-07 + 5.6050 9.0260e-07 + 5.6100 9.0260e-07 + 5.6150 9.0260e-07 + 5.6200 9.0260e-07 + 5.6250 9.0260e-07 + 5.6300 9.0260e-07 + 5.6350 9.0260e-07 + 5.6400 9.0260e-07 + 5.6450 9.0260e-07 + 5.6500 9.0260e-07 + 5.6550 9.0260e-07 + 5.6600 9.0260e-07 + 5.6650 9.0260e-07 + 5.6700 9.0260e-07 + 5.6750 9.0260e-07 + 5.6800 9.0260e-07 + 5.6850 9.0260e-07 + 5.6900 9.0260e-07 + 5.6950 9.0260e-07 + 5.7000 9.0260e-07 + 5.7050 9.0260e-07 + 5.7100 9.0260e-07 + 5.7150 9.0260e-07 + 5.7200 9.0260e-07 + 5.7250 9.0260e-07 + 5.7300 9.0260e-07 + 5.7350 9.0260e-07 + 5.7400 9.0260e-07 + 5.7450 9.0260e-07 + 5.7500 9.0260e-07 + 5.7550 9.0260e-07 + 5.7600 9.0260e-07 + 5.7650 9.0260e-07 + 5.7700 9.0260e-07 + 5.7750 9.0260e-07 + 5.7800 9.0260e-07 + 5.7850 9.0260e-07 + 5.7900 9.0260e-07 + 5.7950 9.0260e-07 + 5.8000 9.0260e-07 + 5.8050 9.0260e-07 + 5.8100 9.0260e-07 + 5.8150 9.0260e-07 + 5.8200 9.0260e-07 + 5.8250 9.0260e-07 + 5.8300 9.0260e-07 + 5.8350 9.0260e-07 + 5.8400 9.0260e-07 + 5.8450 9.0260e-07 + 5.8500 9.0260e-07 + 5.8550 9.0260e-07 + 5.8600 9.0260e-07 + 5.8650 9.0260e-07 + 5.8700 9.0260e-07 + 5.8750 9.0260e-07 + 5.8800 9.0260e-07 + 5.8850 9.0260e-07 + 5.8900 9.0260e-07 + 5.8950 9.0260e-07 + 5.9000 9.0260e-07 + 5.9050 9.0260e-07 + 5.9100 9.0260e-07 + 5.9150 9.0260e-07 + 5.9200 9.0260e-07 + 5.9250 9.0260e-07 + 5.9300 9.0260e-07 + 5.9350 9.0260e-07 + 5.9400 9.0260e-07 + 5.9450 9.0260e-07 + 5.9500 9.0260e-07 + 5.9550 9.0260e-07 + 5.9600 9.0260e-07 + 5.9650 9.0260e-07 + 5.9700 9.0260e-07 + 5.9750 9.0260e-07 + 5.9800 9.0260e-07 + 5.9850 9.0260e-07 + 5.9900 9.0260e-07 + 5.9950 9.0260e-07 + 6.0000 9.0260e-07 + 6.0050 9.0260e-07 + 6.0100 9.0260e-07 + 6.0150 9.0260e-07 + 6.0200 9.0260e-07 + 6.0250 9.0260e-07 + 6.0300 9.0260e-07 + 6.0350 9.0260e-07 + 6.0400 9.0260e-07 + 6.0450 9.0260e-07 + 6.0500 9.0260e-07 + 6.0550 9.0260e-07 + 6.0600 9.0260e-07 + 6.0650 9.0260e-07 + 6.0700 9.0260e-07 + 6.0750 9.0260e-07 + 6.0800 9.0260e-07 + 6.0850 9.0260e-07 + 6.0900 9.0260e-07 + 6.0950 9.0260e-07 + 6.1000 9.0260e-07 + 6.1050 9.0260e-07 + 6.1100 9.0260e-07 + 6.1150 9.0260e-07 + 6.1200 9.0260e-07 + 6.1250 9.0260e-07 + 6.1300 9.0260e-07 + 6.1350 9.0260e-07 + 6.1400 9.0260e-07 + 6.1450 9.0260e-07 + 6.1500 9.0260e-07 + 6.1550 9.0260e-07 + 6.1600 9.0260e-07 + 6.1650 9.0260e-07 + 6.1700 9.0260e-07 + 6.1750 9.0260e-07 + 6.1800 9.0260e-07 + 6.1850 9.0260e-07 + 6.1900 9.0260e-07 + 6.1950 9.0260e-07 + 6.2000 9.0260e-07 + 6.2050 9.0260e-07 + 6.2100 9.0260e-07 + 6.2150 9.0260e-07 + 6.2200 9.0260e-07 + 6.2250 9.0260e-07 + 6.2300 9.0260e-07 + 6.2350 9.0260e-07 + 6.2400 9.0260e-07 + 6.2450 9.0260e-07 + 6.2500 9.0260e-07 + 6.2550 9.0260e-07 + 6.2600 9.0260e-07 + 6.2650 9.0260e-07 + 6.2700 9.0260e-07 + 6.2750 9.0260e-07 + 6.2800 9.0260e-07 + 6.2850 9.0260e-07 + 6.2900 9.0260e-07 + 6.2950 9.0260e-07 + 6.3000 9.0260e-07 + 6.3050 9.0260e-07 + 6.3100 9.0260e-07 + 6.3150 9.0260e-07 + 6.3200 9.0260e-07 + 6.3250 9.0260e-07 + 6.3300 9.0260e-07 + 6.3350 9.0260e-07 + 6.3400 9.0260e-07 + 6.3450 9.0260e-07 + 6.3500 9.0260e-07 + 6.3550 9.0260e-07 + 6.3600 9.0260e-07 + 6.3650 9.0260e-07 + 6.3700 9.0260e-07 + 6.3750 9.0260e-07 + 6.3800 9.0260e-07 + 6.3850 9.0260e-07 + 6.3900 9.0260e-07 + 6.3950 9.0260e-07 + 6.4000 9.0260e-07 + 6.4050 9.0260e-07 + 6.4100 9.0260e-07 + 6.4150 9.0260e-07 + 6.4200 9.0260e-07 + 6.4250 9.0260e-07 + 6.4300 9.0260e-07 + 6.4350 9.0260e-07 + 6.4400 9.0260e-07 + 6.4450 9.0260e-07 + 6.4500 9.0260e-07 + 6.4550 9.0260e-07 + 6.4600 9.0260e-07 + 6.4650 9.0260e-07 + 6.4700 9.0260e-07 + 6.4750 9.0260e-07 + 6.4800 9.0260e-07 + 6.4850 9.0260e-07 + 6.4900 9.0260e-07 + 6.4950 9.0260e-07 + 6.5000 9.0260e-07 + 6.5050 9.0260e-07 + 6.5100 9.0260e-07 + 6.5150 9.0260e-07 + 6.5200 9.0260e-07 + 6.5250 9.0260e-07 + 6.5300 9.0260e-07 + 6.5350 9.0260e-07 + 6.5400 9.0260e-07 + 6.5450 9.0260e-07 + 6.5500 9.0260e-07 + 6.5550 9.0260e-07 + 6.5600 9.0260e-07 + 6.5650 9.0260e-07 + 6.5700 9.0260e-07 + 6.5750 9.0260e-07 + 6.5800 9.0260e-07 + 6.5850 9.0260e-07 + 6.5900 9.0260e-07 + 6.5950 9.0260e-07 + 6.6000 9.0260e-07 + 6.6050 9.0260e-07 + 6.6100 9.0260e-07 + 6.6150 9.0260e-07 + 6.6200 9.0260e-07 + 6.6250 9.0260e-07 + 6.6300 9.0260e-07 + 6.6350 9.0260e-07 + 6.6400 9.0260e-07 + 6.6450 9.0260e-07 + 6.6500 9.0260e-07 + 6.6550 9.0260e-07 + 6.6600 9.0260e-07 + 6.6650 9.0260e-07 + 6.6700 9.0260e-07 + 6.6750 9.0260e-07 + 6.6800 9.0260e-07 + 6.6850 9.0260e-07 + 6.6900 9.0260e-07 + 6.6950 9.0260e-07 + 6.7000 9.0260e-07 + 6.7050 9.0260e-07 + 6.7100 9.0260e-07 + 6.7150 9.0260e-07 + 6.7200 9.0260e-07 + 6.7250 9.0260e-07 + 6.7300 9.0260e-07 + 6.7350 9.0260e-07 + 6.7400 9.0260e-07 + 6.7450 9.0260e-07 + 6.7500 9.0260e-07 + 6.7550 9.0260e-07 + 6.7600 9.0260e-07 + 6.7650 9.0260e-07 + 6.7700 9.0260e-07 + 6.7750 9.0260e-07 + 6.7800 9.0260e-07 + 6.7850 9.0260e-07 + 6.7900 9.0260e-07 + 6.7950 9.0260e-07 + 6.8000 9.0260e-07 + 6.8050 9.0260e-07 + 6.8100 9.0260e-07 + 6.8150 9.0260e-07 + 6.8200 9.0260e-07 + 6.8250 9.0260e-07 + 6.8300 9.0260e-07 + 6.8350 9.0260e-07 + 6.8400 9.0260e-07 + 6.8450 9.0260e-07 + 6.8500 9.0260e-07 + 6.8550 9.0260e-07 + 6.8600 9.0260e-07 + 6.8650 9.0260e-07 + 6.8700 9.0260e-07 + 6.8750 9.0260e-07 + 6.8800 9.0260e-07 + 6.8850 9.0260e-07 + 6.8900 9.0260e-07 + 6.8950 9.0260e-07 + 6.9000 9.0260e-07 + 6.9050 9.0260e-07 + 6.9100 9.0260e-07 + 6.9150 9.0260e-07 + 6.9200 9.0260e-07 + 6.9250 9.0260e-07 + 6.9300 9.0260e-07 + 6.9350 9.0260e-07 + 6.9400 9.0260e-07 + 6.9450 9.0260e-07 + 6.9500 9.0260e-07 + 6.9550 9.0260e-07 + 6.9600 9.0260e-07 + 6.9650 9.0260e-07 + 6.9700 9.0260e-07 + 6.9750 9.0260e-07 + 6.9800 9.0260e-07 + 6.9850 9.0260e-07 + 6.9900 9.0260e-07 + 6.9950 9.0260e-07 + 7.0000 9.0260e-07 + 7.0050 9.0260e-07 + 7.0100 9.0260e-07 + 7.0150 9.0260e-07 + 7.0200 9.0260e-07 + 7.0250 9.0260e-07 + 7.0300 9.0260e-07 + 7.0350 9.0260e-07 + 7.0400 9.0260e-07 + 7.0450 9.0260e-07 + 7.0500 9.0260e-07 + 7.0550 9.0260e-07 + 7.0600 9.0260e-07 + 7.0650 9.0260e-07 + 7.0700 9.0260e-07 + 7.0750 9.0260e-07 + 7.0800 9.0260e-07 + 7.0850 9.0260e-07 + 7.0900 9.0260e-07 + 7.0950 9.0260e-07 + 7.1000 9.0260e-07 + 7.1050 9.0260e-07 + 7.1100 9.0260e-07 + 7.1150 9.0260e-07 + 7.1200 9.0260e-07 + 7.1250 9.0260e-07 + 7.1300 9.0260e-07 + 7.1350 9.0260e-07 + 7.1400 9.0260e-07 + 7.1450 9.0260e-07 + 7.1500 9.0260e-07 + 7.1550 9.0260e-07 + 7.1600 9.0260e-07 + 7.1650 9.0260e-07 + 7.1700 9.0260e-07 + 7.1750 9.0260e-07 + 7.1800 9.0260e-07 + 7.1850 9.0260e-07 + 7.1900 9.0260e-07 + 7.1950 9.0260e-07 + 7.2000 9.0260e-07 + 7.2050 9.0260e-07 + 7.2100 9.0260e-07 + 7.2150 9.0260e-07 + 7.2200 9.0260e-07 + 7.2250 9.0260e-07 + 7.2300 9.0260e-07 + 7.2350 9.0260e-07 + 7.2400 9.0260e-07 + 7.2450 9.0260e-07 + 7.2500 9.0260e-07 + 7.2550 9.0260e-07 + 7.2600 9.0260e-07 + 7.2650 9.0260e-07 + 7.2700 9.0260e-07 + 7.2750 9.0260e-07 + 7.2800 9.0260e-07 + 7.2850 9.0260e-07 + 7.2900 9.0260e-07 + 7.2950 9.0260e-07 + 7.3000 9.0260e-07 + 7.3050 9.0260e-07 + 7.3100 9.0260e-07 + 7.3150 9.0260e-07 + 7.3200 9.0260e-07 + 7.3250 9.0260e-07 + 7.3300 9.0260e-07 + 7.3350 9.0260e-07 + 7.3400 9.0260e-07 + 7.3450 9.0260e-07 + 7.3500 9.0260e-07 + 7.3550 9.0260e-07 + 7.3600 9.0260e-07 + 7.3650 9.0260e-07 + 7.3700 9.0260e-07 + 7.3750 9.0260e-07 + 7.3800 9.0260e-07 + 7.3850 9.0260e-07 + 7.3900 9.0260e-07 + 7.3950 9.0260e-07 + 7.4000 9.0260e-07 + 7.4050 9.0260e-07 + 7.4100 9.0260e-07 + 7.4150 9.0260e-07 + 7.4200 9.0260e-07 + 7.4250 9.0260e-07 + 7.4300 9.0260e-07 + 7.4350 9.0260e-07 + 7.4400 9.0260e-07 + 7.4450 9.0260e-07 + 7.4500 9.0260e-07 + 7.4550 9.0260e-07 + 7.4600 9.0260e-07 + 7.4650 9.0260e-07 + 7.4700 9.0260e-07 + 7.4750 9.0260e-07 + 7.4800 9.0260e-07 + 7.4850 9.0260e-07 + 7.4900 9.0260e-07 + 7.4950 9.0260e-07 + 7.5000 9.0260e-07 + 7.5050 9.0260e-07 + 7.5100 9.0260e-07 + 7.5150 9.0260e-07 + 7.5200 9.0260e-07 + 7.5250 9.0260e-07 + 7.5300 9.0260e-07 + 7.5350 9.0260e-07 + 7.5400 9.0260e-07 + 7.5450 9.0260e-07 + 7.5500 9.0260e-07 + 7.5550 9.0260e-07 + 7.5600 9.0260e-07 + 7.5650 9.0260e-07 + 7.5700 9.0260e-07 + 7.5750 9.0260e-07 + 7.5800 9.0260e-07 + 7.5850 9.0260e-07 + 7.5900 9.0260e-07 + 7.5950 9.0260e-07 + 7.6000 9.0260e-07 + 7.6050 9.0260e-07 + 7.6100 9.0260e-07 + 7.6150 9.0260e-07 + 7.6200 9.0260e-07 + 7.6250 9.0260e-07 + 7.6300 9.0260e-07 + 7.6350 9.0260e-07 + 7.6400 9.0260e-07 + 7.6450 9.0260e-07 + 7.6500 9.0260e-07 + 7.6550 9.0260e-07 + 7.6600 9.0260e-07 + 7.6650 9.0260e-07 + 7.6700 9.0260e-07 + 7.6750 9.0260e-07 + 7.6800 9.0260e-07 + 7.6850 9.0260e-07 + 7.6900 9.0260e-07 + 7.6950 9.0260e-07 + 7.7000 9.0260e-07 + 7.7050 9.0260e-07 + 7.7100 9.0260e-07 + 7.7150 9.0260e-07 + 7.7200 9.0260e-07 + 7.7250 9.0260e-07 + 7.7300 9.0260e-07 + 7.7350 9.0260e-07 + 7.7400 9.0260e-07 + 7.7450 9.0260e-07 + 7.7500 9.0260e-07 + 7.7550 9.0260e-07 + 7.7600 9.0260e-07 + 7.7650 9.0260e-07 + 7.7700 9.0260e-07 + 7.7750 9.0260e-07 + 7.7800 9.0260e-07 + 7.7850 9.0260e-07 + 7.7900 9.0260e-07 + 7.7950 9.0260e-07 + 7.8000 9.0260e-07 + 7.8050 9.0260e-07 + 7.8100 9.0260e-07 + 7.8150 9.0260e-07 + 7.8200 9.0260e-07 + 7.8250 9.0260e-07 + 7.8300 9.0260e-07 + 7.8350 9.0260e-07 + 7.8400 9.0260e-07 + 7.8450 9.0260e-07 + 7.8500 9.0260e-07 + 7.8550 9.0260e-07 + 7.8600 9.0260e-07 + 7.8650 9.0260e-07 + 7.8700 9.0260e-07 + 7.8750 9.0260e-07 + 7.8800 9.0260e-07 + 7.8850 9.0260e-07 + 7.8900 9.0260e-07 + 7.8950 9.0260e-07 + 7.9000 9.0260e-07 + 7.9050 9.0260e-07 + 7.9100 9.0260e-07 + 7.9150 9.0260e-07 + 7.9200 9.0260e-07 + 7.9250 9.0260e-07 + 7.9300 9.0260e-07 + 7.9350 9.0260e-07 + 7.9400 9.0260e-07 + 7.9450 9.0260e-07 + 7.9500 9.0260e-07 + 7.9550 9.0260e-07 + 7.9600 9.0260e-07 + 7.9650 9.0260e-07 + 7.9700 9.0260e-07 + 7.9750 9.0260e-07 + 7.9800 9.0260e-07 + 7.9850 9.0260e-07 + 7.9900 9.0260e-07 + 7.9950 9.0260e-07 + 8.0000 9.0260e-07 + 8.0050 9.0260e-07 + 8.0100 9.0260e-07 + 8.0150 9.0260e-07 + 8.0200 9.0260e-07 + 8.0250 9.0260e-07 + 8.0300 9.0260e-07 + 8.0350 9.0260e-07 + 8.0400 9.0260e-07 + 8.0450 9.0260e-07 + 8.0500 9.0260e-07 + 8.0550 9.0260e-07 + 8.0600 9.0260e-07 + 8.0650 9.0260e-07 + 8.0700 9.0260e-07 + 8.0750 9.0260e-07 + 8.0800 9.0260e-07 + 8.0850 9.0260e-07 + 8.0900 9.0260e-07 + 8.0950 9.0260e-07 + 8.1000 9.0260e-07 + 8.1050 9.0260e-07 + 8.1100 9.0260e-07 + 8.1150 9.0260e-07 + 8.1200 9.0260e-07 + 8.1250 9.0260e-07 + 8.1300 9.0260e-07 + 8.1350 9.0260e-07 + 8.1400 9.0260e-07 + 8.1450 9.0260e-07 + 8.1500 9.0260e-07 + 8.1550 9.0260e-07 + 8.1600 9.0259e-07 + 8.1650 9.0259e-07 + 8.1700 9.0259e-07 + 8.1750 9.0259e-07 + 8.1800 9.0259e-07 + 8.1850 9.0259e-07 + 8.1900 9.0259e-07 + 8.1950 9.0258e-07 + 8.2000 9.0258e-07 + 8.2050 9.0257e-07 + 8.2100 9.0256e-07 + 8.2150 9.0255e-07 + 8.2200 9.0254e-07 + 8.2250 9.0252e-07 + 8.2300 9.0250e-07 + 8.2350 9.0248e-07 + 8.2400 9.0244e-07 + 8.2450 9.0240e-07 + 8.2500 9.0236e-07 + 8.2550 9.0229e-07 + 8.2600 9.0222e-07 + 8.2650 9.0213e-07 + 8.2700 9.0202e-07 + 8.2750 9.0189e-07 + 8.2800 9.0174e-07 + 8.2850 9.0155e-07 + 8.2900 9.0133e-07 + 8.2950 9.0108e-07 + 8.3000 9.0078e-07 + 8.3050 9.0043e-07 + 8.3100 9.0003e-07 + 8.3150 8.9957e-07 + 8.3200 8.9904e-07 + 8.3250 8.9844e-07 + 8.3300 8.9776e-07 + 8.3350 8.9699e-07 + 8.3400 8.9614e-07 + 8.3450 8.9519e-07 + 8.3500 8.9414e-07 + 8.3550 8.9298e-07 + 8.3600 8.9172e-07 + 8.3650 8.9034e-07 + 8.3700 8.8885e-07 + 8.3750 8.8725e-07 + 8.3800 8.8553e-07 + 8.3850 8.8370e-07 + 8.3900 8.8177e-07 + 8.3950 8.7973e-07 + 8.4000 8.7759e-07 + 8.4050 8.7537e-07 + 8.4100 8.7306e-07 + 8.4150 8.7068e-07 + 8.4200 8.6825e-07 + 8.4250 8.6577e-07 + 8.4300 8.6325e-07 + 8.4350 8.6071e-07 + 8.4400 8.5817e-07 + 8.4450 8.5563e-07 + 8.4500 8.5312e-07 + 8.4550 8.5064e-07 + 8.4600 8.4821e-07 + 8.4650 8.4584e-07 + 8.4700 8.4354e-07 + 8.4750 8.4133e-07 + 8.4800 8.3921e-07 + 8.4850 8.3720e-07 + 8.4900 8.3530e-07 + 8.4950 8.3352e-07 + 8.5000 8.3188e-07 + 8.5050 8.3037e-07 + 8.5100 8.2902e-07 + 8.5150 8.2782e-07 + 8.5200 8.2680e-07 + 8.5250 8.2598e-07 + 8.5300 8.2537e-07 + 8.5350 8.2502e-07 + 8.5400 8.2495e-07 + 8.5450 8.2522e-07 + 8.5500 8.2589e-07 + 8.5550 8.2704e-07 + 8.5600 8.2878e-07 + 8.5650 8.3122e-07 + 8.5700 8.3453e-07 + 8.5750 8.3888e-07 + 8.5800 8.4449e-07 + 8.5850 8.5164e-07 + 8.5900 8.6063e-07 + 8.5950 8.7183e-07 + 8.6000 8.8565e-07 + 8.6050 9.0259e-07 + 8.6100 9.2319e-07 + 8.6150 9.4805e-07 + 8.6200 9.7785e-07 + 8.6250 1.0133e-06 + 8.6300 1.0553e-06 + 8.6350 1.1046e-06 + 8.6400 1.1622e-06 + 8.6450 1.2289e-06 + 8.6500 1.3058e-06 + 8.6550 1.3937e-06 + 8.6600 1.4936e-06 + 8.6650 1.6062e-06 + 8.6700 1.7325e-06 + 8.6750 1.8729e-06 + 8.6800 2.0281e-06 + 8.6850 2.1982e-06 + 8.6900 2.3834e-06 + 8.6950 2.5834e-06 + 8.7000 2.7978e-06 + 8.7050 3.0258e-06 + 8.7100 3.2663e-06 + 8.7150 3.5178e-06 + 8.7200 3.7785e-06 + 8.7250 4.0462e-06 + 8.7300 4.3186e-06 + 8.7350 4.5928e-06 + 8.7400 4.8660e-06 + 8.7450 5.1347e-06 + 8.7500 5.3958e-06 + 8.7550 5.6459e-06 + 8.7600 5.8815e-06 + 8.7650 6.0993e-06 + 8.7700 6.2961e-06 + 8.7750 6.4691e-06 + 8.7800 6.6156e-06 + 8.7850 6.7334e-06 + 8.7900 6.8207e-06 + 8.7950 6.8763e-06 + 8.8000 6.8993e-06 + 8.8050 6.8895e-06 + 8.8100 6.8472e-06 + 8.8150 6.7733e-06 + 8.8200 6.6693e-06 + 8.8250 6.5368e-06 + 8.8300 6.3783e-06 + 8.8350 6.1964e-06 + 8.8400 5.9940e-06 + 8.8450 5.7743e-06 + 8.8500 5.5406e-06 + 8.8550 5.2962e-06 + 8.8600 5.0446e-06 + 8.8650 4.7889e-06 + 8.8700 4.5323e-06 + 8.8750 4.2777e-06 + 8.8800 4.0277e-06 + 8.8850 3.7846e-06 + 8.8900 3.5506e-06 + 8.8950 3.3272e-06 + 8.9000 3.1159e-06 + 8.9050 2.9177e-06 + 8.9100 2.7332e-06 + 8.9150 2.5628e-06 + 8.9200 2.4068e-06 + 8.9250 2.2649e-06 + 8.9300 2.1368e-06 + 8.9350 2.0221e-06 + 8.9400 1.9200e-06 + 8.9450 1.8299e-06 + 8.9500 1.7508e-06 + 8.9550 1.6819e-06 + 8.9600 1.6223e-06 + 8.9650 1.5711e-06 + 8.9700 1.5274e-06 + 8.9750 1.4904e-06 + 8.9800 1.4592e-06 + 8.9850 1.4331e-06 + 8.9900 1.4114e-06 + 8.9950 1.3935e-06 + 9.0000 1.3789e-06 + 9.0050 1.3669e-06 + 9.0100 1.3573e-06 + 9.0150 1.3496e-06 + 9.0200 1.3436e-06 + 9.0250 1.3388e-06 + 9.0300 1.3352e-06 + 9.0350 1.3325e-06 + 9.0400 1.3306e-06 + 9.0450 1.3295e-06 + 9.0500 1.3289e-06 + 9.0550 1.3290e-06 + 9.0600 1.3296e-06 + 9.0650 1.3309e-06 + 9.0700 1.3329e-06 + 9.0750 1.3356e-06 + 9.0800 1.3392e-06 + 9.0850 1.3438e-06 + 9.0900 1.3497e-06 + 9.0950 1.3571e-06 + 9.1000 1.3662e-06 + 9.1050 1.3775e-06 + 9.1100 1.3912e-06 + 9.1150 1.4079e-06 + 9.1200 1.4280e-06 + 9.1250 1.4522e-06 + 9.1300 1.4810e-06 + 9.1350 1.5152e-06 + 9.1400 1.5555e-06 + 9.1450 1.6029e-06 + 9.1500 1.6582e-06 + 9.1550 1.7224e-06 + 9.1600 1.7966e-06 + 9.1650 1.8817e-06 + 9.1700 1.9790e-06 + 9.1750 2.0894e-06 + 9.1800 2.2142e-06 + 9.1850 2.3545e-06 + 9.1900 2.5112e-06 + 9.1950 2.6854e-06 + 9.2000 2.8781e-06 + 9.2050 3.0899e-06 + 9.2100 3.3217e-06 + 9.2150 3.5738e-06 + 9.2200 3.8466e-06 + 9.2250 4.1403e-06 + 9.2300 4.4547e-06 + 9.2350 4.7896e-06 + 9.2400 5.1443e-06 + 9.2450 5.5180e-06 + 9.2500 5.9098e-06 + 9.2550 6.3184e-06 + 9.2600 6.7422e-06 + 9.2650 7.1795e-06 + 9.2700 7.6285e-06 + 9.2750 8.0871e-06 + 9.2800 8.5531e-06 + 9.2850 9.0244e-06 + 9.2900 9.4985e-06 + 9.2950 9.9732e-06 + 9.3000 1.0446e-05 + 9.3050 1.0915e-05 + 9.3100 1.1378e-05 + 9.3150 1.1833e-05 + 9.3200 1.2277e-05 + 9.3250 1.2710e-05 + 9.3300 1.3130e-05 + 9.3350 1.3536e-05 + 9.3400 1.3926e-05 + 9.3450 1.4300e-05 + 9.3500 1.4657e-05 + 9.3550 1.4997e-05 + 9.3600 1.5320e-05 + 9.3650 1.5626e-05 + 9.3700 1.5916e-05 + 9.3750 1.6188e-05 + 9.3800 1.6445e-05 + 9.3850 1.6687e-05 + 9.3900 1.6915e-05 + 9.3950 1.7129e-05 + 9.4000 1.7331e-05 + 9.4050 1.7521e-05 + 9.4100 1.7701e-05 + 9.4150 1.7871e-05 + 9.4200 1.8033e-05 + 9.4250 1.8187e-05 + 9.4300 1.8334e-05 + 9.4350 1.8476e-05 + 9.4400 1.8612e-05 + 9.4450 1.8743e-05 + 9.4500 1.8871e-05 + 9.4550 1.8996e-05 + 9.4600 1.9118e-05 + 9.4650 1.9238e-05 + 9.4700 1.9356e-05 + 9.4750 1.9473e-05 + 9.4800 1.9589e-05 + 9.4850 1.9704e-05 + 9.4900 1.9818e-05 + 9.4950 1.9933e-05 + 9.5000 2.0047e-05 + 9.5050 2.0162e-05 + 9.5100 2.0276e-05 + 9.5150 2.0391e-05 + 9.5200 2.0507e-05 + 9.5250 2.0623e-05 + 9.5300 2.0740e-05 + 9.5350 2.0857e-05 + 9.5400 2.0976e-05 + 9.5450 2.1095e-05 + 9.5500 2.1215e-05 + 9.5550 2.1337e-05 + 9.5600 2.1460e-05 + 9.5650 2.1584e-05 + 9.5700 2.1710e-05 + 9.5750 2.1837e-05 + 9.5800 2.1966e-05 + 9.5850 2.2097e-05 + 9.5900 2.2231e-05 + 9.5950 2.2366e-05 + 9.6000 2.2505e-05 + 9.6050 2.2646e-05 + 9.6100 2.2791e-05 + 9.6150 2.2939e-05 + 9.6200 2.3091e-05 + 9.6250 2.3248e-05 + 9.6300 2.3410e-05 + 9.6350 2.3578e-05 + 9.6400 2.3753e-05 + 9.6450 2.3936e-05 + 9.6500 2.4129e-05 + 9.6550 2.4335e-05 + 9.6600 2.4556e-05 + 9.6650 2.4796e-05 + 9.6700 2.5061e-05 + 9.6750 2.5359e-05 + 9.6800 2.5699e-05 + 9.6850 2.6095e-05 + 9.6900 2.6565e-05 + 9.6950 2.7132e-05 + 9.7000 2.7829e-05 + 9.7050 2.8697e-05 + 9.7100 2.9792e-05 + 9.7150 3.1183e-05 + 9.7200 3.2963e-05 + 9.7250 3.5250e-05 + 9.7300 3.8195e-05 + 9.7350 4.1988e-05 + 9.7400 4.6871e-05 + 9.7450 5.3142e-05 + 9.7500 6.1175e-05 + 9.7550 7.1429e-05 + 9.7600 8.4465e-05 + 9.7650 0.00010096 + 9.7700 0.00012175 + 9.7750 0.00014779 + 9.7800 0.00018027 + 9.7850 0.00022053 + 9.7900 0.00027019 + 9.7950 0.00033107 + 9.8000 0.00040529 + 9.8050 0.00049525 + 9.8100 0.00060363 + 9.8150 0.00073343 + 9.8200 0.00088794 + 9.8250 0.0010707 + 9.8300 0.0012857 + 9.8350 0.0015369 + 9.8400 0.0018286 + 9.8450 0.0021651 + 9.8500 0.0025510 + 9.8550 0.0029904 + 9.8600 0.0034877 + 9.8650 0.0040466 + 9.8700 0.0046707 + 9.8750 0.0053626 + 9.8800 0.0061245 + 9.8850 0.0069574 + 9.8900 0.0078614 + 9.8950 0.0088354 + 9.9000 0.0098767 + 9.9050 0.010981 + 9.9100 0.012144 + 9.9150 0.013357 + 9.9200 0.014611 + 9.9250 0.015897 + 9.9300 0.017203 + 9.9350 0.018515 + 9.9400 0.019819 + 9.9450 0.021100 + 9.9500 0.022341 + 9.9550 0.023527 + 9.9600 0.024642 + 9.9650 0.025669 + 9.9700 0.026594 + 9.9750 0.027402 + 9.9800 0.028082 + 9.9850 0.028621 + 9.9900 0.029013 + 9.9950 0.029250 + 10.000 0.029328 + 10.005 0.029247 + 10.010 0.029007 + 10.015 0.028613 + 10.020 0.028071 + 10.025 0.027389 + 10.030 0.026578 + 10.035 0.025651 + 10.040 0.024622 + 10.045 0.023505 + 10.050 0.022317 + 10.055 0.021073 + 10.060 0.019791 + 10.065 0.018485 + 10.070 0.017172 + 10.075 0.015865 + 10.080 0.014578 + 10.085 0.013322 + 10.090 0.012109 + 10.095 0.010946 + 10.100 0.0098404 + 10.105 0.0087986 + 10.110 0.0078243 + 10.115 0.0069201 + 10.120 0.0060870 + 10.125 0.0053251 + 10.130 0.0046332 + 10.135 0.0040092 + 10.140 0.0034504 + 10.145 0.0029533 + 10.150 0.0025141 + 10.155 0.0021286 + 10.160 0.0017923 + 10.165 0.0015010 + 10.170 0.0012502 + 10.175 0.0010356 + 10.180 0.00085318 + 10.185 0.00069907 + 10.190 0.00056968 + 10.195 0.00046171 + 10.200 0.00037217 + 10.205 0.00029836 + 10.210 0.00023789 + 10.215 0.00018864 + 10.220 0.00014877 + 10.225 0.00011669 + 10.230 9.1030e-05 + 10.235 7.0625e-05 + 10.240 5.4496e-05 + 10.245 4.1822e-05 + 10.250 3.1921e-05 + 10.255 2.4231e-05 + 10.260 1.8293e-05 + 10.265 1.3736e-05 + 10.270 1.0257e-05 + 10.275 7.6182e-06 + 10.280 5.6272e-06 + 10.285 4.1340e-06 + 10.290 3.0205e-06 + 10.295 2.1949e-06 + 10.300 1.5863e-06 + 10.305 1.1402e-06 + 10.310 8.1506e-07 + 10.315 5.7948e-07 + 10.320 4.0975e-07 + 10.325 2.8816e-07 + 10.330 2.0155e-07 + 10.335 1.4020e-07 + 10.340 9.6995e-08 + 10.345 6.6739e-08 + 10.350 4.5671e-08 + 10.355 3.1084e-08 + 10.360 2.1040e-08 + 10.365 1.4164e-08 + 10.370 9.4838e-09 + 10.375 6.3152e-09 + 10.380 4.1824e-09 + 10.385 2.7548e-09 + 10.390 1.8047e-09 + 10.395 1.1758e-09 + 10.400 7.6187e-10 + 10.405 4.9098e-10 + 10.410 3.1469e-10 + 10.415 2.0060e-10 + 10.420 1.2718e-10 + 10.425 8.0188e-11 + 10.430 5.0286e-11 + 10.435 3.1362e-11 + 10.440 1.9454e-11 + 10.445 1.2001e-11 + 10.450 7.3635e-12 + 10.455 4.4933e-12 + 10.460 2.7270e-12 + 10.465 1.6460e-12 + 10.470 9.8807e-13 + 10.475 5.8991e-13 + 10.480 0.00000 + 10.485 0.00000 + 10.490 0.00000 + 10.495 0.00000 + 10.500 0.00000 + 10.505 0.00000 + 10.510 0.00000 + 10.515 0.00000 + 10.520 0.00000 + 10.525 0.00000 + 10.530 0.00000 + 10.535 0.00000 + 10.540 0.00000 + 10.545 0.00000 + 10.550 0.00000 + 10.555 0.00000 + 10.560 0.00000 + 10.565 0.00000 + 10.570 0.00000 + 10.575 0.00000 + 10.580 0.00000 + 10.585 0.00000 + 10.590 0.00000 + 10.595 0.00000 + 10.600 0.00000 + 10.605 0.00000 + 10.610 0.00000 + 10.615 0.00000 + 10.620 0.00000 + 10.625 0.00000 + 10.630 0.00000 + 10.635 0.00000 + 10.640 0.00000 + 10.645 0.00000 + 10.650 0.00000 + 10.655 0.00000 + 10.660 0.00000 + 10.665 0.00000 + 10.670 0.00000 + 10.675 0.00000 + 10.680 0.00000 + 10.685 0.00000 + 10.690 0.00000 + 10.695 0.00000 + -1 -1 + -2 -2 \ No newline at end of file diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc-AIDA b/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc-AIDA new file mode 100644 index 0000000000..c2221a012d --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc-AIDA @@ -0,0 +1,323 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoAnalysisManager.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 06 Dec 2001 A.Pfeiffer updated for singleton +// 30 Nov 2001 Guy Barrand : migrate to AIDA-2.2. +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifdef G4ANALYSIS_USE +#include +#include +#include +#include +#include +#include +#include +#endif + +#include "XrayFluoAnalysisManager.hh" +#include "XrayFluoAnalysisMessenger.hh" +#include "G4Step.hh" + +XrayFluoAnalysisManager* XrayFluoAnalysisManager::instance = 0; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoAnalysisManager::XrayFluoAnalysisManager() +:analysisMessenger(0) +,analysisFactory(0) +,histo_1(0) +,histo_2(0) +,histo_3(0) +,histo_4(0) +,histo_5(0) +,histo_6(0) +,histo_7(0) +,histo_8(0) +,histo_9(0) +,tuple(0) +{ + analysisMessenger = new XrayFluoAnalysisMessenger(this); + +#ifdef G4ANALYSIS_USE + // Hooking an AIDA compliant analysis system. + analysisFactory = AIDA_createAnalysisFactory(); + if(analysisFactory) { + + ITreeFactory* treeFactory = analysisFactory->createTreeFactory(); + if(treeFactory) { + // tree = treeFactory->create(); // Tree in memory. + tree = treeFactory->create("XrayFluo.root",false,false,"ROOT"); + + delete treeFactory; // Will not delete the ITree. + } + + /* + // Create and a the plotter : + IPlotterFactory* plotterFactory = + analysisFactory->createPlotterFactory(argc,argv); + if(plotterFactory) { + plotter = plotterFactory->create(); + if(plotter) { + // Map the plotter on screen : + plotter->show(); + // Set the page title : + plotter->setParameter("pageTitle","XrayFluo"); + // Have two plotting regions (one column, two rows). + } + delete plotterFactory; + } + */ + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoAnalysisManager::~XrayFluoAnalysisManager() +{ + + delete analysisMessenger; + analysisMessenger = 0; + +#ifdef G4ANALYSIS_USE + delete analysisFactory; + analysisFactory = 0; +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoAnalysisManager* XrayFluoAnalysisManager::getInstance() +{ + if (instance == 0) instance = new XrayFluoAnalysisManager; + return instance; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::book() +{ + IHistogramFactory* histogramFactory = + analysisFactory->createHistogramFactory(*tree); + + if(histogramFactory) { + + // Book histograms + histo_1 = histogramFactory->create1D + ("1","Energy Deposit", 100,0.,10.); + histo_2 = histogramFactory->create1D + ("2","Gamma born in the sample", 100,0.,10.); + histo_3 = histogramFactory->create1D + ("3","Electrons born in the sample", 100,0.,10.); + histo_4 = histogramFactory->create1D + ("4","Gammas leaving the sample", 100,0.,10.); + histo_5 = histogramFactory->create1D + ("5","Electrons leaving the sample ", 100,0.,10.); + histo_6 = histogramFactory->create1D + ("6","Gammas reaching the detector", 100,0.,10.); + histo_7 = histogramFactory->create1D + ("7","Spectrum of the incident particles", 100,0.,10.); + histo_8 = histogramFactory->create1D + ("8","Protons reaching the detector", 100,0.,10.); + histo_9 = histogramFactory->create1D + ("9","Protons leaving the sample", 100,0.,10.); + + delete histogramFactory; + } + + + // Get a tuple factory : + ITupleFactory* tupleFactory = analysisFactory->createTupleFactory(*tree); + if(tupleFactory) { + + // Create a tuple : + tuple = tupleFactory->create + ("XrayFluo","XrayFluo","energy counts"); + + delete tupleFactory; + } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::finish() +{ +#ifdef G4ANALYSIS_USE + if(tree) tree->commit(); // Write histos and tuple in file. +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::analyseStepping(const G4Step* aStep) +{ +#ifdef G4ANALYSIS_USE + G4double gammaAtTheDetPre=0; + G4double protonsAtTheDetPre=0; + G4double gammaLeavingSample=0; + G4double eleLeavingSample=0; + G4double protonsLeavSam=0; + G4double gammaBornInSample=0; + G4double eleBornInSample=0; + if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Sample"){ + + if(aStep->GetTrack()->GetNextVolume()->GetName() == "World" ) + { + if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "gamma" ) + { + gammaLeavingSample = + (aStep->GetPreStepPoint()->GetKineticEnergy()); + if(histo_4) { + histo_4->fill(gammaLeavingSample/keV); + } + } + } + } + if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Sample"){ + + if(aStep->GetTrack()->GetNextVolume()->GetName() == "World" ) + { + if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "e-" ) + { + eleLeavingSample = (aStep->GetPreStepPoint()->GetKineticEnergy()); + if(histo_5) { + histo_5->fill(eleLeavingSample/keV); + } + } + else if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "proton" ) + { + protonsLeavSam = (aStep->GetPreStepPoint()->GetKineticEnergy()); + if(histo_3) { + histo_3->fill(protonsLeavSam/keV); + } + } + + } + } + + + if((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "gamma" ) + + {if(1== (aStep->GetTrack()->GetCurrentStepNumber())) + + {if(0 != aStep->GetTrack()->GetParentID()) + + {if(aStep->GetTrack()->GetVolume()->GetName() == "Sample") + { + gammaBornInSample = (aStep->GetPreStepPoint()->GetKineticEnergy()); + if(histo_2) { + histo_2->fill(gammaBornInSample); + } + } + } + } + } + if((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "e-" ) + + {if(1== (aStep->GetTrack()->GetCurrentStepNumber())) + + {if(0 != aStep->GetTrack()->GetParentID()) + + {if(aStep->GetTrack()->GetVolume()->GetName() == "Sample") + { + eleBornInSample = (aStep->GetPreStepPoint()->GetKineticEnergy()); + if(histo_3) { + histo_3->fill(eleBornInSample); + } + } + } + } + } + + if(aStep->GetTrack()->GetNextVolume()){ + + if(aStep->GetTrack()->GetVolume()->GetName() == "World"){ + + if(aStep->GetTrack()->GetNextVolume()->GetName() == "HPGeDetector") + + { + if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "gamma" ) + { + gammaAtTheDetPre = + (aStep->GetPreStepPoint()->GetKineticEnergy()); + if(histo_6) { + histo_6->fill( gammaAtTheDetPre); + } + } + else if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "proton" ) + { + protonsAtTheDetPre = + (aStep->GetPreStepPoint()->GetKineticEnergy()); + if(histo_8) { + histo_8->fill( protonsAtTheDetPre); + } + } + } + } + } +#endif +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::analyseEnergyDep(G4double energyDep) +{ +#ifdef G4ANALYSIS_USE + if(histo_1) { + histo_1->fill(energyDep/keV); + } + if(tuple) { + tuple->fill(0,energyDep); + tuple->fill(1,1); + tuple->addRow(); + } +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::analysePrimaryGenerator(G4double energy) +{ +#ifdef G4ANALYSIS_USE + if(histo_7) histo_7->fill(energy/keV); +#endif +} + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc-Anaphe b/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc-Anaphe new file mode 100644 index 0000000000..f6436b80c2 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisManager.cc-Anaphe @@ -0,0 +1,257 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoAnalysisManager.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- +#ifdef G4ANALYSIS_USE + +#include "XrayFluoAnalysisManager.hh" +#include "XrayFluoAnalysisMessenger.hh" +#include "G4Step.hh" + +XrayFluoAnalysisManager* XrayFluoAnalysisManager::instance = 0; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoAnalysisManager::XrayFluoAnalysisManager() +{ + analysisMessenger = new XrayFluoAnalysisMessenger(this); + histoManager = createIHistoManager(); + factory = Lizard::createNTupleFactory(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoAnalysisManager::~XrayFluoAnalysisManager() +{ + + delete analysisMessenger; + analysisMessenger = 0; + delete histoManager; + histoManager = 0; + delete factory; + factory = 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoAnalysisManager* XrayFluoAnalysisManager::getInstance() +{ + if (instance == 0) instance = new XrayFluoAnalysisManager; + return instance; +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +void XrayFluoAnalysisManager::book() + +{ + histoManager->selectStore("XrayFluo.his"); + + // Book histograms + histoManager->create1D("1","Energy Deposit", 100,0.,10.); + histoManager->create1D("2","Gamma born in the sample", 100,0.,10.); + histoManager->create1D("3","Electrons born in the sample", 100,0.,10.); + histoManager->create1D("4","Gammas leaving the sample", 100,0.,10.); + histoManager->create1D("5","Electrons leaving the sample ", 100,0.,10.); + histoManager->create1D("6","Gammas reaching the detector", 100,0.,10.); + histoManager->create1D("7","Spectrum of the incident particles", 100,0.,10.); + histoManager->create1D("8","Protons reaching the detector", 100,0.,10.); + histoManager->create1D("9","Protons leaving the sample", 100,0.,10.); + + // Book ntuples + ntuple = factory->createC("XrayFluo.his::1"); + + // Add and bind the attributes to the ntuple + if ( !( ntuple->addAndBind( "energy", eDep) && + ntuple->addAndBind( "counts" , counts ) ) ) + + { + delete ntuple; + G4Exception("XrayFluoAnalysisManager::book - Could not addAndBind ntuple"); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::finish() +{ + + histoManager->store("1"); + histoManager->store("3"); + histoManager->store("2"); + histoManager->store("4"); + histoManager->store("5"); + histoManager->store("6"); + histoManager->store("7"); + histoManager->store("8"); + histoManager->store("9"); + + + delete ntuple; + ntuple = 0; + G4cout << "Deleted ntuple" << G4endl; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::analyseStepping(const G4Step* aStep) +{ + G4double gammaAtTheDetPre=0; + G4double protonsAtTheDetPre=0; + G4double gammaLeavingSample=0; + G4double eleLeavingSample=0; + G4double protonsLeavSam=0; + G4double gammaBornInSample=0; + G4double eleBornInSample=0; + if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Sample"){ + + if(aStep->GetTrack()->GetNextVolume()->GetName() == "World" ) + { + if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "gamma" ) + { + gammaLeavingSample = (aStep->GetPreStepPoint()->GetKineticEnergy()); + IHistogram1D* h1 = histoManager->retrieveHisto1D("4"); + h1->fill(gammaLeavingSample/keV); + } + } + } + if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Sample"){ + + if(aStep->GetTrack()->GetNextVolume()->GetName() == "World" ) + { + if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "e-" ) + { + eleLeavingSample = (aStep->GetPreStepPoint()->GetKineticEnergy()); + + IHistogram1D* h2 = histoManager->retrieveHisto1D("5"); + h2->fill(eleLeavingSample/keV); + } + else if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "proton" ) + { + protonsLeavSam = (aStep->GetPreStepPoint()->GetKineticEnergy()); + IHistogram1D* h3 = histoManager->retrieveHisto1D("9"); + h3->fill(protonsLeavSam/keV); + } + + } + } + + + if((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "gamma" ) + + {if(1== (aStep->GetTrack()->GetCurrentStepNumber())) + + {if(0 != aStep->GetTrack()->GetParentID()) + + {if(aStep->GetTrack()->GetVolume()->GetName() == "Sample") + { + gammaBornInSample = (aStep->GetPreStepPoint()->GetKineticEnergy()); + IHistogram1D* h4 = histoManager->retrieveHisto1D("2"); + h4->fill(gammaBornInSample); + + } + } + } + } + if((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "e-" ) + + {if(1== (aStep->GetTrack()->GetCurrentStepNumber())) + + {if(0 != aStep->GetTrack()->GetParentID()) + + {if(aStep->GetTrack()->GetVolume()->GetName() == "Sample") + { + eleBornInSample = (aStep->GetPreStepPoint()->GetKineticEnergy()); + IHistogram1D* h5 = histoManager->retrieveHisto1D("3"); + h5->fill(eleBornInSample); + } + } + } + } + + if(aStep->GetTrack()->GetNextVolume()){ + + if(aStep->GetTrack()->GetVolume()->GetName() == "World"){ + + if(aStep->GetTrack()->GetNextVolume()->GetName() == "HPGeDetector") + + { + if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "gamma" ) + { + gammaAtTheDetPre = (aStep->GetPreStepPoint()->GetKineticEnergy()); + IHistogram1D* h6 = histoManager->retrieveHisto1D("6"); + h6->fill( gammaAtTheDetPre); + } + else if ((aStep->GetTrack()->GetDynamicParticle() + ->GetDefinition()-> GetParticleName()) == "proton" ) + { + protonsAtTheDetPre = (aStep->GetPreStepPoint()->GetKineticEnergy()); + IHistogram1D* h7 = histoManager->retrieveHisto1D("8"); + h7->fill( protonsAtTheDetPre); + } + } + } + } +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::analyseEnergyDep(G4double energyDep) +{ + IHistogram1D* h8 = histoManager->retrieveHisto1D("1"); + h8->fill(energyDep/keV); + counts = 1.; + ntuple->addRow(); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisManager::analysePrimaryGenerator(G4double energy) +{ + IHistogram1D* h9 = histoManager->retrieveHisto1D("7"); + h9->fill(energy/keV); + +} +#endif + + + + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisMessenger.cc b/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisMessenger.cc new file mode 100644 index 0000000000..c7e6055e2f --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoAnalysisMessenger.cc @@ -0,0 +1,84 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoAnalysisMessenger.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifdef G4ANALYSIS_USE +#include "XrayFluoAnalysisMessenger.hh" + +#include "XrayFluoAnalysisManager.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoAnalysisMessenger::XrayFluoAnalysisMessenger(XrayFluoAnalysisManager* analysisManager) + :XrayFluoAnalysis(analysisManager) + +{ + XrayFluoAnalysisDir = new G4UIdirectory("/analysis/"); + XrayFluoAnalysisDir->SetGuidance("esperimento analysis control."); + +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoAnalysisMessenger::~XrayFluoAnalysisMessenger() +{ + + delete XrayFluoAnalysisDir; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoAnalysisMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#endif + + + + + + + + + + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoDataSet.cc b/examples/advanced/xray_fluorescence/src/XrayFluoDataSet.cc new file mode 100644 index 0000000000..d4d43f79b5 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoDataSet.cc @@ -0,0 +1,205 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoDAtaSet.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoDataSet.hh" +#include "g4std/fstream" +#include "g4std/strstream" +#include "G4VDataSetAlgorithm.hh" + +XrayFluoDataSet::XrayFluoDataSet(G4int Z, + G4DataVector* points, + G4DataVector* values, + const G4VDataSetAlgorithm* interpolation, + G4double unitE, G4double unitData) + :z(Z), energies(points), data(values), algorithm(interpolation) +{ + numberOfBins = energies->size(); + unit1 = unitE; + unit2 = unitData; +} + +XrayFluoDataSet:: XrayFluoDataSet(G4int Z, + const G4String& dataFile, + const G4VDataSetAlgorithm* interpolation, + G4double unitE, G4double unitData) + :z(Z), algorithm(interpolation) +{ + energies = new G4DataVector; + data = new G4DataVector; + unit1 = unitE; + unit2 = unitData; + LoadData(dataFile); + numberOfBins = energies->size(); +} + + +// Destructor + +XrayFluoDataSet::~XrayFluoDataSet() +{ + delete energies; + delete data; +} + + +G4double XrayFluoDataSet::FindValue(G4double e, G4int id) const +{ + G4double value; + G4double e0 = (*energies)[0]; + // Protections + size_t bin = FindBinLocation(e); + if (bin == numberOfBins) + { + + value = (*data)[bin]; + } + else if (e <= e0) + { + + value = (*data)[0]; + } + else + { + value = algorithm->Calculate(e,bin,*energies,*data); + } + + return value; +} + +G4int XrayFluoDataSet::FindBinLocation(G4double energy) const +{ + // Protection against call outside allowed range + G4double e0 = (*energies)[0]; + if (energy < e0) + { + + energy = e0; + } + + size_t lowerBound = 0; + size_t upperBound = numberOfBins - 1; + + // Binary search + while (lowerBound <= upperBound) + { + size_t midBin = (lowerBound + upperBound)/2; + if ( energy < (*energies)[midBin] ) upperBound = midBin-1; + else lowerBound = midBin+1; + } + + return upperBound; +} + + +void XrayFluoDataSet::LoadData(const G4String& fileName) +{ + // Build the complete string identifying the file with the data set + + char nameChar[100] = {""}; + G4std::ostrstream ost(nameChar, 100, G4std::ios::out); + + ost << fileName <<".dat"; + + G4String name(nameChar); + + char* path = getenv("G4INSTALL"); + + G4String pathString(path); + G4String dirFile = pathString + "/" + name; + G4std::ifstream file(dirFile); + G4std::filebuf* lsdp = file.rdbuf(); + + if (! (lsdp->is_open()) ) + { + G4String excep = "XrayFluoDataSet - data file: " + dirFile + " not found"; + G4Exception(excep); + } + G4double a = 0; + G4int k = 1; + + do + { + file >> a; + G4int nColumns = 2; + // The file is organized into two columns: + // 1st column is the energy + // 2nd column is the corresponding value + // The file terminates with the pattern: -1 -1 + // -2 -2 + if (a == -1 || a == -2) + { + + } + else + { + if (k%nColumns != 0) + { + G4double e = a * unit1; + energies->push_back(e); + + k++; + + } + else if (k%nColumns == 0) + { + G4double value = a * unit2; + data->push_back(value); + + k = 1; + } + } + + } while (a != -2); // end of file + + file.close(); +} +void XrayFluoDataSet::PrintData() const +{ + size_t size = numberOfBins; + for (size_t i=0; iAddElement(Fe,natoms=1); + + density = 5.32 * g/cm3; + G4Material * HPGe = new G4Material(name="HPGe",density,ncomponents=1); + HPGe ->AddElement(Ge,natoms=1); + //define gallium arsenide + + density = 5.32 * g/cm3; + G4Material * GaAs = new G4Material(name ="gallium arsenide",density,ncomponents=2); + GaAs->AddElement(Ga,natoms=1); + GaAs->AddElement(As,natoms=1); + + //define silicon + + density = 2.333*g/cm3; + a = 28.09*g/mole; + G4Material* Si = new G4Material(name="Silicon",z=14., a,density); + + //define copper + + density = 8.960*g/cm3; + a = 63.55*g/mole; + G4Material* Cu = new G4Material(name="Copper" , z=29., a, density); + + + //define carbon + + a = 12.01*g/mole; + G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a); + + + //define scintillator + + density = 1.032*g/cm3; + G4Material* Sci = new G4Material(name="Scintillator", density, ncomponents=2); + Sci->AddElement(C, natoms=9); + Sci->AddElement(H, natoms=10); + + //define aluminium + + density = 2.700*g/cm3; + a = 26.98*g/mole; + G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); + + //define titanium + density = 4.54 *g/cm3; + a = 47.867*g/mole; + G4Material* Ti = new G4Material(name="Titanium",z=22.,a,density); + + + +//define lead + + density = 11.35*g/cm3; + a=207.19*g/mole; + G4Material* Pb = new G4Material(name="Lead",z=82.,a,density); + + //define air + + a = 14.01*g/mole; + G4Element* N = new G4Element(name="Nitrogen",symbol="N" , z= 7., a); + + a = 16.00*g/mole; + G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); + + G4double fractionmass; + density = 1.290*mg/cm3; + G4Material* Air = new G4Material(name="Air" , density, ncomponents=2); + Air->AddElement(N, fractionmass=0.7); + Air->AddElement(O, fractionmass=0.3); + + //define vacuum + + density = universe_mean_density; //from PhysicalConstants.h + pressure = 3.e-18*pascal; + temperature = 2.73*kelvin; + G4Material * Vacuum = new G4Material(name="Galactic", z=1., a=1.01*g/mole, density, + kStateGas,temperature,pressure); + + G4cout << *(G4Material::GetMaterialTable()) << G4endl; + + //default materials of the apparate + + sampleMaterial = Ti; + Dia1Material = Pb; + Dia3Material = Pb; + pixelMaterial = HPGe; + OhmicPosMaterial = Cu; + OhmicNegMaterial = Pb; + defaultMaterial = Vacuum; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4VPhysicalVolume* XrayFluoDetectorConstruction::ConstructApparate() +{ + // complete the apparate parameters definition + + ComputeApparateParameters(); + + //world + + solidWorld = new G4Box("World", //its name + WorldSizeXY/2,WorldSizeXY/2,WorldSizeZ/2); //its size + + logicWorld = new G4LogicalVolume(solidWorld, //its solid + defaultMaterial, //its material + "World"); //its name + physiWorld = new G4PVPlacement(0, //no rotation + G4ThreeVector(), //at (0,0,0) + "World", //its name + logicWorld, //its logical volume + 0, //its mother volume + false, //no boolean operation + 0); //copy number + + //HPGeDetector + + solidHPGe = 0; physiHPGe = 0; logicHPGe=0; + solidPixel=0; logicPixel=0; physiPixel=0; + + if (DeviceThickness > 0.) + { + solidHPGe = new G4Box("HPGeDetector", //its name + DeviceSizeX/2,DeviceSizeY/2,DeviceThickness/2);//size + + + logicHPGe = new G4LogicalVolume(solidHPGe, //its solid + defaultMaterial, //its material + "HPGeDetector"); //its name + + zRotPhiHPGe.rotateX(PhiHPGe); + G4double x,y,z; + z = DistDe * cos(ThetaHPGe); + y =DistDe * sin(ThetaHPGe); + x = 0.*cm; + physiHPGe = new G4PVPlacement(G4Transform3D(zRotPhiHPGe,G4ThreeVector(x,y,z)), "HPGeDetector", //its name + logicHPGe, //its logical volume + physiWorld, //its mother volume + false, //no boolean operation + 0); //copy number + } + // Pixel + + for ( G4int j=0; j < NbOfPixelColumns ; j++ ) + { for ( G4int i=0; i < NbOfPixelRows ; i++ ) + { + solidPixel=0; logicPixel=0; physiPixel=0; + if (PixelThickness > 0.) + solidPixel = new G4Box("Pixel", + PixelSizeXY/2,PixelSizeXY/2, PixelThickness/2); + + logicPixel = new G4LogicalVolume(solidPixel, + pixelMaterial, //its material + "Pixel"); //its name + zRotPhiHPGe.rotateX(PhiHPGe); + G4double x,y,z; + z = DistDe * cos(ThetaHPGe); + y =DistDe * sin(ThetaHPGe); + x = 0.*cm; + + physiPixel = new G4PVPlacement(0, + G4ThreeVector(0, + i*PixelSizeXY, + j*PixelSizeXY ), + "Pixel", + logicPixel, //its logical volume + physiHPGe, //its mother volume + false, //no boolean operation + PixelCopyNb);//copy number + + // OhmicNeg + + solidOhmicNeg=0; logicOhmicNeg=0; physiOhmicNeg=0; + + if (OhmicNegThickness > 0.) + { solidOhmicNeg = new G4Box("OhmicNeg", //its name + PixelSizeXY/2,PixelSizeXY/2,OhmicNegThickness/2); + + logicOhmicNeg = new G4LogicalVolume(solidOhmicNeg, //its solid + OhmicNegMaterial, //its material + "OhmicNeg"); //its name + + physiOhmicNeg = new G4PVPlacement(0, + G4ThreeVector + (0., + 0., + (PixelThickness+OhmicNegThickness)/2), + "OhmicNeg", //its name + logicOhmicNeg, //its logical volume + physiHPGe, //its mother + false, //no boulean operat + PixelCopyNb); //copy number + + } + // OhmicPos + solidOhmicPos=0; logicOhmicPos=0; physiOhmicPos=0; + + if (OhmicPosThickness > 0.) + { solidOhmicPos = new G4Box("OhmicPos", //its name + ContactSizeXY/2,ContactSizeXY/2,OhmicPosThickness/2); + + logicOhmicPos = new G4LogicalVolume(solidOhmicPos, //its solid + OhmicPosMaterial, //its material + "OhmicPos"); //its name + + physiOhmicPos = new G4PVPlacement(0, + G4ThreeVector(0., + 0., + (-PixelThickness-OhmicPosThickness)/2), + "OhmicPos", + logicOhmicPos, + physiHPGe, + false, + PixelCopyNb); + + } + PixelCopyNb += PixelCopyNb; + } + } + + //Sample + + solidSample=0; logicSample=0; physiSample=0; + + if (SampleThickness > 0.) + { + solidSample = new G4Box("Sample", //its name + SampleSizeXY/2,SampleSizeXY/2,SampleThickness/2);//size + + logicSample= new G4LogicalVolume(solidSample, //its solid + sampleMaterial, //its material + "Sample"); //its name + + physiSample = new G4PVPlacement(0, //no rotation + G4ThreeVector(), //at (0,0,0) + "Sample", //its name + logicSample, //its logical volume + physiWorld, //its mother volume + false, //no boolean operation + 0); //copy number + + } + + //Diaphragm1 + + solidDia1 = 0; physiDia1 = 0; logicDia1=0; + + if (Dia1Thickness > 0.) + { + solidDia1 = new G4Tubs("Diaphragm1", //its name + DiaInnerSize/2, + Dia1SizeXY/2, + Dia1Thickness/2, + 0, + 360);//size + + + logicDia1 = new G4LogicalVolume(solidDia1, //its solid + Dia1Material, //its material + "Diaphragm1"); //its name + + zRotPhiDia1.rotateX(AlphaDia1); + G4double x,y,z; + z = DistDia * cos(ThetaDia1); + y =DistDia * sin(ThetaDia1); + x = 0.*cm; + physiDia1 = new G4PVPlacement(G4Transform3D(zRotPhiDia1,G4ThreeVector(x,y,z)), "Diaphragm1", //its name + logicDia1, //its logical volume + physiWorld, //its mother volume + false, //no boolean operation + 0); //copy number + } + + //Diaphragm3 + + solidDia3 = 0; physiDia3 = 0; logicDia3 =0; + + if (Dia3Thickness > 0.) + { + solidDia3 = new G4Tubs("Diaphragm3", + Dia3InnerSize/2, + Dia3SizeXY/2, + Dia3Thickness/2, + 0, + 360); + + + logicDia3 = new G4LogicalVolume(solidDia3, //its solid + Dia3Material, //its material + "Diaphragm3"); //its name + + zRotPhiDia3.rotateX(AlphaDia3); + G4double x,y,z; + z = Dia3Dist * cos(ThetaDia3); + y =Dia3Dist * sin(ThetaDia3); + x = 0.*cm; + physiDia3 = new G4PVPlacement(G4Transform3D(zRotPhiDia3,G4ThreeVector(x,y,z)), "Diaphragm3", //its name + logicDia3, //its logical volume + physiWorld, //its mother volume + false, //no boolean operation + 0); //copy number + } + + G4SDManager* SDman = G4SDManager::GetSDMpointer(); + + if(!HPGeSD) + { + HPGeSD = new XrayFluoHPGeSD ("HPGeSD",this); + SDman->AddNewDetector(HPGeSD); + } + + + if (logicPixel) + { + logicPixel->SetSensitiveDetector(HPGeSD); + } + + // Visualization attributes + + logicWorld->SetVisAttributes (G4VisAttributes::Invisible); + G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0)); + G4VisAttributes * yellow= new G4VisAttributes( G4Colour(255/255. ,255/255. ,51/255. )); + yellow->SetVisibility(true); + yellow->SetForceSolid(true); + simpleBoxVisAtt->SetVisibility(true); + + logicPixel->SetVisAttributes(simpleBoxVisAtt); + logicHPGe->SetVisAttributes(G4VisAttributes::Invisible ); + logicSample->SetVisAttributes(simpleBoxVisAtt); + + logicDia1->SetVisAttributes(simpleBoxVisAtt); + logicDia3->SetVisAttributes(simpleBoxVisAtt); + + logicOhmicNeg->SetVisAttributes(yellow); + logicOhmicPos->SetVisAttributes(yellow); + //always return the physical World + + + PrintApparateParameters(); + return physiWorld; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoDetectorConstruction::PrintApparateParameters() +{ + G4cout << "-----------------------------------------------------------------------" + << G4endl + << "The sample is a box whose size is: " + << G4endl + << SampleThickness/cm + << " cm * " + << SampleSizeXY/cm + << " cm * " + << SampleSizeXY/cm + << " cm" + << G4endl + <<" Material: " << sampleMaterial->GetName() + <DefineWorldVolume(ConstructApparate()); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoDetectorMessenger.cc b/examples/advanced/xray_fluorescence/src/XrayFluoDetectorMessenger.cc new file mode 100644 index 0000000000..96e29a9995 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoDetectorMessenger.cc @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoDetectorMessenger.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoDetectorMessenger.hh" +#include "XrayFluoDetectorConstruction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoDetectorMessenger::XrayFluoDetectorMessenger(XrayFluoDetectorConstruction * Det) +:Detector(Det) +{ + detDir = new G4UIdirectory("/apparate/"); + detDir->SetGuidance("detector control."); + + UpdateCmd = new G4UIcmdWithoutParameter("/apparate/update",this); + UpdateCmd->SetGuidance("Update apparate geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(Idle); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + XrayFluoDetectorMessenger::~XrayFluoDetectorMessenger() +{ + delete UpdateCmd; + delete detDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoDetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == UpdateCmd ) + { Detector->UpdateGeometry(); } + } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoEventAction.cc b/examples/advanced/xray_fluorescence/src/XrayFluoEventAction.cc new file mode 100644 index 0000000000..b8f247b77c --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoEventAction.cc @@ -0,0 +1,244 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoEventAction.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoEventAction.hh" +#include "XrayFluoSensorHit.hh" +#include "XrayFluoEventActionMessenger.hh" +#include "XrayFluoRunAction.hh" +#include "XrayFluoDataSet.hh" +#ifdef G4ANALYSIS_USE +#include "XrayFluoAnalysisManager.hh" +#endif + +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4HCofThisEvent.hh" +#include "G4VHitsCollection.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Trajectory.hh" +#include "G4VVisManager.hh" +#include "G4SDManager.hh" +#include "G4UImanager.hh" +#include "G4ios.hh" +#include "G4UnitsTable.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoEventAction::XrayFluoEventAction() + :drawFlag("all"), + HPGeCollID(-1), + eventMessenger(0), + printModulo(1) + +{ + eventMessenger = new XrayFluoEventActionMessenger(this); + runManager = new XrayFluoRunAction(); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +XrayFluoEventAction::~XrayFluoEventAction() +{ + delete eventMessenger; + eventMessenger = 0; + delete runManager; + runManager = 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoEventAction::BeginOfEventAction(const G4Event* evt) +{ + + if (HPGeCollID==-1) + { + G4SDManager * SDman = G4SDManager::GetSDMpointer(); + HPGeCollID = SDman->GetCollectionID("HPGeCollection"); + //the pointer points to the ID number of the sensitive detector + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoEventAction::EndOfEventAction(const G4Event* evt) +{ + // extracted from hits, compute the total energy deposit (and total charged + // track length) + G4HCofThisEvent* HCE = evt->GetHCofThisEvent(); + + XrayFluoSensorHitsCollection* HPGeHC = 0; + G4int n_hit = 0; + G4double totEnergyDetect=0., totEnergy=0, energyD=0.; + + if (HCE) HPGeHC = (XrayFluoSensorHitsCollection*)(HCE->GetHC(HPGeCollID)); + if(HPGeHC) + { + n_hit = HPGeHC->entries(); + for (G4int i=0;iGetEdepTot(); + + energyD = ResponseFunction(totEnergy); +#ifdef G4ANALYSIS_USE + XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance(); + analysis->analyseEnergyDep(energyD); +#endif + totEnergyDetect += energyD; + + + } + } + + // extract the trajectories and draw them + + if (G4VVisManager::GetConcreteInstance()) + { + + G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer(); + G4int n_trajectories = 0; + if (trajectoryContainer) n_trajectories = trajectoryContainer->size(); + + for (G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") trj->DrawTrajectory(50); + else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) + trj->DrawTrajectory(50); + else if ((drawFlag == "neutral")&&(trj->GetCharge() == 0.)) + trj->DrawTrajectory(50); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + +G4double XrayFluoEventAction::RandomCut(G4double energy) + +{ + G4double efficiency = 1.; + G4double F = 0.15; + G4double epsilon = 2.96 * eV; + G4double deltaE = 220 * eV; + G4double EdepDetect = 0.; + //const XrayFluoDataSet* dataSet = runManager->GetEfficiencySet(); + + //G4double id = 0; + + //efficiency = dataSet->FindValue(energy,id); + + G4double Random = G4UniformRand(); + + if ( RandomGetEfficiencySet(); + G4double id = 0; + + G4double random = G4UniformRand(); + + if (energy>=eMin && energy <=eMax) + { + G4double infEnergy = (G4int)(energy/keV)* keV; + + G4double supEnergy = ((G4int)(energy/keV) + 1)*keV; + + + + G4double infData = runManager->GetInfData(energy, random); + + G4double supData = runManager->GetSupData(energy,random); + + value = (log10(infData)*log10(supEnergy/energy) + + log10(supData)*log10(energy/infEnergy)) / + log10(supEnergy/infEnergy); + value = pow(10,value); + } + else if (energyGetInfData(eMin, random); + G4double supData = runManager->GetSupData(eMin,random); + value = (log10(infData)*log10(supEnergy/eMin) + + log10(supData)*log10(eMin/infEnergy)) / + log10(supEnergy/infEnergy); + value = pow(10,value); + value = value-eMin+ energy; + + + } + else if (energy>eMax) + { + G4double infEnergy = eMax/keV - 1. *keV; + G4double supEnergy = eMax; + + G4double infData = runManager->GetInfData(eMax, random); + G4double supData = runManager->GetSupData(eMax,random); + value = (log10(infData)*log10(supEnergy/eMax) + + log10(supData)*log10(eMax/infEnergy)) / + log10(supEnergy/infEnergy); + value = pow(10,value); + value = value+energy- eMax; + } + G4double RandomNum = G4UniformRand(); + + efficiency = dataSet->FindValue(value,id); + if ( RandomNum>efficiency ) + { + value = 0.; + } + + return value; + +} diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoEventActionMessenger.cc b/examples/advanced/xray_fluorescence/src/XrayFluoEventActionMessenger.cc new file mode 100644 index 0000000000..6bd9b5b815 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoEventActionMessenger.cc @@ -0,0 +1,89 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoEventActionMessenger.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoEventActionMessenger.hh" + +#include "XrayFluoEventAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "globals.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoEventActionMessenger::XrayFluoEventActionMessenger(XrayFluoEventAction* EvAct) +:eventAction(EvAct) +{ + DrawCmd = new G4UIcmdWithAString("/event/drawTracks",this); + DrawCmd->SetGuidance("Draw the tracks in the event"); + DrawCmd->SetGuidance(" Choice : none, charged(default),neutral, all"); + DrawCmd->SetParameterName("choice",true); + DrawCmd->SetDefaultValue("all"); + DrawCmd->SetCandidates("none charged neutral all"); + DrawCmd->AvailableForStates(Idle); + + PrintCmd = new G4UIcmdWithAnInteger("/event/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoEventActionMessenger::~XrayFluoEventActionMessenger() +{ + delete DrawCmd; + delete PrintCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoEventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if(command == DrawCmd) + {eventAction->SetDrawFlag(newValue);} + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoHPGeSD.cc b/examples/advanced/xray_fluorescence/src/XrayFluoHPGeSD.cc new file mode 100644 index 0000000000..adb5c78641 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoHPGeSD.cc @@ -0,0 +1,138 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoHPGeSD.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoHPGeSD.hh" +#include "XrayFluoSensorHit.hh" +#include "XrayFluoDetectorConstruction.hh" +#include "G4VPhysicalVolume.hh" +#include "G4Step.hh" +#include "G4VTouchable.hh" +#include "G4TouchableHistory.hh" +#include "G4SDManager.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoHPGeSD::XrayFluoHPGeSD(G4String name, + XrayFluoDetectorConstruction* det) +:G4VSensitiveDetector(name),Detector(det) +{ + collectionName.insert("HPGeCollection"); + HitHPGeID = new G4int[500]; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoHPGeSD::~XrayFluoHPGeSD() +{ + delete [] HitHPGeID; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoHPGeSD::Initialize(G4HCofThisEvent*HCE) + +//initializes HCE with the hits collection(s) created by this + //sensitive detector +{ + HPGeCollection = new XrayFluoSensorHitsCollection + (SensitiveDetectorName,collectionName[0]); + for (G4int j=0;jGetNbOfPixels();j++) + {HitHPGeID [j]= -1;}; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4bool XrayFluoHPGeSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) +{ + G4double edep = aStep->GetTotalEnergyDeposit(); + if ((edep==0.)) return false; + + G4TouchableHistory* theTouchable + = (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable()); + + G4VPhysicalVolume* physVol = theTouchable->GetVolume(); + theTouchable->MoveUpHistory(); + G4int PixelNumber = 0; + if (Detector->GetNbOfPixels()>1) PixelNumber= physVol->GetCopyNo() ; + if ( HitHPGeID[PixelNumber]==-1) + { + XrayFluoSensorHit* HPGeHit = new XrayFluoSensorHit(); + HPGeHit->AddEnergy(edep); + HitHPGeID[PixelNumber] = HPGeCollection->insert(HPGeHit) - 1; + if (verboseLevel>0) + G4cout << " New Hit on pixel: " << PixelNumber << G4endl; + } + else + { + (*HPGeCollection)[HitHPGeID[PixelNumber]]->AddEnergy(edep); + //G4double ED =(*HPGeCollection)[HitHPGeID[PixelNumber]]->GetEdepTot(); + if (verboseLevel>0) + G4cout << " Energy added to Pixel: " << PixelNumber << G4endl; + } + + return true; +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoHPGeSD::EndOfEvent(G4HCofThisEvent* HCE) +{ + static G4int HCID = -1; + if(HCID<0) + { HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]); } + HCE->AddHitsCollection(HCID,HPGeCollection); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoHPGeSD::clear() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoHPGeSD::DrawAll() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoHPGeSD::PrintAll() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoNormalization.cc b/examples/advanced/xray_fluorescence/src/XrayFluoNormalization.cc new file mode 100644 index 0000000000..48bdbb2b14 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoNormalization.cc @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoAnalysisMessenger.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoNormalization.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4LogLogInterpolation.hh" +#include "XrayFluoDataSet.hh" + +XrayFluoNormalization::XrayFluoNormalization() + +{ } + +XrayFluoNormalization::~XrayFluoNormalization() + +{ } + +const XrayFluoDataSet* XrayFluoNormalization::Normalize(G4double minIntExtreme, G4double maxIntExtreme, G4int nBins, G4String fileName) +{ + + G4VDataSetAlgorithm* interpolation = new G4LogLogInterpolation(); + XrayFluoDataSet* dataSet = + new XrayFluoDataSet(1,fileName,interpolation,keV,1); + + G4double integral = Integrate(minIntExtreme, maxIntExtreme, nBins, dataSet); + + G4VDataSetAlgorithm* interpolation2 = new G4LogLogInterpolation(); + + XrayFluoDataSet* finalDataSet = new XrayFluoDataSet(1,fileName,interpolation2,keV,1/(integral/keV)); + return finalDataSet; +} + +G4double XrayFluoNormalization::Integrate(G4double minIntExtreme, G4double maxIntExtreme, G4int nBins, XrayFluoDataSet* dataSet) +{ + G4double partialHeight = 0; + G4double id = 0; + G4double lenghtOfBins = (maxIntExtreme - minIntExtreme)/nBins; + + for (G4int i = 0; iFindValue(midPoint,id); + + partialHeight += heightOfRectangle; + + } + + G4double integral = lenghtOfBins * partialHeight; + + delete dataSet; + dataSet = 0; + return integral; +} + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoPhysicsList.cc b/examples/advanced/xray_fluorescence/src/XrayFluoPhysicsList.cc new file mode 100644 index 0000000000..a81127e624 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoPhysicsList.cc @@ -0,0 +1,333 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoPhysicsList.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoPhysicsList.hh" +#include "XrayFluoPhysicsListMessenger.hh" +#include "XrayFluoDetectorConstruction.hh" + +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" +#include "G4ios.hh" +#include "XrayFluoDetectorConstruction.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoPhysicsList::XrayFluoPhysicsList(XrayFluoDetectorConstruction* p) +: G4VUserPhysicsList() +{ + pDet = p; + defaultCutValue = 0.00001*mm; + + cutForGamma = defaultCutValue; + cutForElectron = defaultCutValue; + cutForProton = 0.00001*mm; + SetVerboseLevel(1); + physicsListMessenger = new XrayFluoPhysicsListMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoPhysicsList::~XrayFluoPhysicsList() +{ + delete physicsListMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::ConstructParticle() +{ + // In this method, static member functions should be called + // for all particles which you want to use. + // This ensures that objects of these particle types will be + // created in the program. + + ConstructBosons(); + ConstructLeptons(); + ConstructBarions(); + ConstructIons(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::ConstructBosons() +{ + + // gamma + G4Gamma::GammaDefinition(); + +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::ConstructLeptons() +{ + // leptons + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::ConstructBarions() +{ + G4Proton::ProtonDefinition(); +} +void XrayFluoPhysicsList::ConstructIons() +{ +// Ions + G4Alpha::AlphaDefinition(); +} + +void XrayFluoPhysicsList::ConstructProcess() +{ + AddTransportation(); + ConstructEM(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "G4LowEnergyCompton.hh" +#include "G4LowEnergyGammaConversion.hh" +#include "G4LowEnergyPhotoElectric.hh" +#include "G4LowEnergyRayleigh.hh" + +// e+ +#include "G4MultipleScattering.hh" +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4LowEnergyIonisation.hh" +#include "G4LowEnergyBremsstrahlung.hh" +#include "G4hLowEnergyIonisation.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::ConstructEM() +{ + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + + if (particleName == "gamma") { + + // gamma + pmanager->AddDiscreteProcess(new G4LowEnergyCompton); + + LePeprocess = new G4LowEnergyPhotoElectric(); + pmanager->AddDiscreteProcess(LePeprocess); + + pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh); + + } else if (particleName == "e-") { + //electron + pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); + + LeIoprocess = new G4LowEnergyIonisation(); + pmanager->AddProcess(LeIoprocess, -1, 2, 2); + + LeBrprocess = new G4LowEnergyBremsstrahlung(); + pmanager->AddProcess(LeBrprocess, -1, -1, 3); + + } else if (particleName == "e+") { + //positron + pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); + pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3); + pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); + + } + else if (particleName == "proton") { + //proton + pmanager->AddProcess(new G4MultipleScattering,-1,1,1); + pmanager->AddProcess(new G4hLowEnergyIonisation,-1, 2,2); + } + else if ( particleName == "alpha" ) + { + + pmanager->AddProcess(new G4MultipleScattering,-1,1,1); + G4hLowEnergyIonisation* iIon = new G4hLowEnergyIonisation() ; + pmanager->AddProcess(iIon,-1,2,2); + } + + } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::SetGELowLimit(G4double lowcut) +{ + if (verboseLevel >0){ + G4cout << "XrayFluoPhysicsList::SetCuts:"; + G4cout << "Gamma and Electron cut in energy: " << lowcut*MeV << " (MeV)" << G4endl; + } + + G4Gamma::SetEnergyRange(lowcut,1e5); + G4Electron::SetEnergyRange(lowcut,1e5); + G4Positron::SetEnergyRange(lowcut,1e5); + +} + +void XrayFluoPhysicsList::SetGammaLowLimit(G4double lowcut) +{ + if (verboseLevel >0){ + G4cout << "XrayFluoPhysicsList::SetCuts:"; + G4cout << "Gamma cut in energy: " << lowcut*MeV << " (MeV)" << G4endl; + } + + G4Gamma::SetEnergyRange(lowcut,1e5); + +} + +void XrayFluoPhysicsList::SetElectronLowLimit(G4double lowcut) +{ + if (verboseLevel >0){ + + G4cout << "XrayFluoPhysicsList::SetCuts:"; + G4cout << "Electron cut in energy: " << lowcut*MeV << " (MeV)" << G4endl; + + } + + G4Electron::SetEnergyRange(lowcut,1e5); + +} +void XrayFluoPhysicsList::SetGammaCut(G4double val) +{ + ResetCuts(); + cutForGamma = val; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::SetElectronCut(G4double val) +{ + ResetCuts(); + cutForElectron = val; +} + +void XrayFluoPhysicsList::SetCuts(){ + + SetCutValue(cutForGamma,"gamma"); + SetCutValue(cutForElectron,"e-"); + SetCutValue(cutForElectron,"e+"); + SetCutValue(cutForProton, "proton"); + SetCutValueForOthers(cutForProton); + if (verboseLevel>0) DumpCutValuesTable(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::SetLowEnSecPhotCut(G4double cut){ + + G4cout<<"Low energy secondary photons cut is now set to: "<SetCutForLowEnSecPhotons(cut); + LePeprocess->SetCutForLowEnSecPhotons(cut); + LeIoprocess->SetCutForLowEnSecPhotons(cut); +} + +void XrayFluoPhysicsList::SetLowEnSecElecCut(G4double cut){ + + G4cout<<"Low energy secondary electrons cut is now set to: "<SetCutForLowEnSecElectrons(cut); +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsList::SetProtonCut(G4double val) +{ + // ResetCuts(); + cutForProton = val; +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +void XrayFluoPhysicsList::SetCutsByEnergy(G4double val) +{ + G4ParticleTable* theXrayFluoParticleTable = G4ParticleTable::GetParticleTable(); + G4Material* currMat = pDet->GetSampleMaterial(); + G4ParticleDefinition* part; + G4double cut; + + part = theXrayFluoParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e-"); + + part = theXrayFluoParticleTable->FindParticle("proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "proton"); + +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoPhysicsListMessenger.cc b/examples/advanced/xray_fluorescence/src/XrayFluoPhysicsListMessenger.cc new file mode 100644 index 0000000000..a8324e1b1a --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoPhysicsListMessenger.cc @@ -0,0 +1,173 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoPhysicsListMessenger.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoPhysicsListMessenger.hh" +#include "XrayFluoPhysicsList.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoPhysicsListMessenger::XrayFluoPhysicsListMessenger(XrayFluoPhysicsList * List) +:XrayFluoList(List) +{ + + lowEnDir = new G4UIdirectory("/lowenergy/"); + lowEnDir->SetGuidance("LowEnergy commands"); + + cutGLowLimCmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/lowlimG",this); + cutGLowLimCmd->SetGuidance("Set ENERGY low limit for Gamma."); + cutGLowLimCmd->SetParameterName("energy",true); + cutGLowLimCmd->SetDefaultValue(1e-3); + cutGLowLimCmd->SetDefaultUnit("MeV"); + cutGLowLimCmd->AvailableForStates(Idle); + + cutELowLimCmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/lowlimE",this); + cutELowLimCmd->SetGuidance("Set ENERGY low limit for e-."); + cutELowLimCmd->SetParameterName("energy",true); + cutELowLimCmd->SetDefaultValue(1e-3); + cutELowLimCmd->SetDefaultUnit("MeV"); + cutELowLimCmd->AvailableForStates(Idle); + + cutGELowLimCmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/lowlimGE",this); + cutGELowLimCmd->SetGuidance("Set ENERGY low limit for e- and Gamma."); + cutGELowLimCmd->SetParameterName("energy",true); + cutGELowLimCmd->SetDefaultValue(1e-3); + cutGELowLimCmd->SetDefaultUnit("MeV"); + cutGELowLimCmd->AvailableForStates(Idle); + + cutSecPhotCmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/secphotcut",this); + cutSecPhotCmd->SetGuidance("Set production threshold for secondary Gamma."); + cutSecPhotCmd->SetParameterName("energy",true); + cutSecPhotCmd->SetDefaultValue(5e-5); + cutSecPhotCmd->SetDefaultUnit("MeV"); + cutSecPhotCmd->AvailableForStates(Idle); + + cutSecElecCmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/seceleccut",this); + cutSecElecCmd->SetGuidance("Set production threshold for secondary e-"); + cutSecElecCmd->SetParameterName("energy",true); + cutSecElecCmd->SetDefaultValue(5e-5); + cutSecElecCmd->SetDefaultUnit("MeV"); + cutSecElecCmd->AvailableForStates(Idle); + + cutGCmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/cutG",this); + cutGCmd->SetGuidance("Set cut values by RANGE for Gamma."); + cutGCmd->SetParameterName("range",true); + cutGCmd->SetDefaultValue(1.); + cutGCmd->SetDefaultUnit("mm"); + cutGCmd->AvailableForStates(Idle); + + cutECmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/cutE",this); + cutECmd->SetGuidance("Set cut values by RANGE for e-."); + cutECmd->SetParameterName("range",true); + cutECmd->SetDefaultValue(1.); + cutECmd->SetDefaultUnit("mm"); + cutECmd->AvailableForStates(Idle); + + cutPCmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/cutP",this); + cutPCmd->SetGuidance("Set cut values by RANGE for proton and others."); + cutPCmd->SetParameterName("cutP",false); + cutPCmd->SetRange("cutP>0."); + cutPCmd->SetUnitCategory("Length"); + cutPCmd->AvailableForStates(Idle); + + eCmd = new G4UIcmdWithADoubleAndUnit("/lowenergy/cutEnergy",this); + eCmd->SetGuidance("Set cut values by ENERGY for charged particles."); + eCmd->SetParameterName("cutenergy",false); + eCmd->SetRange("cutenergy>0."); + eCmd->SetUnitCategory("Energy"); + eCmd->AvailableForStates(Idle); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoPhysicsListMessenger::~XrayFluoPhysicsListMessenger() +{ + + delete cutGLowLimCmd; + delete cutELowLimCmd; + delete cutGELowLimCmd; + delete cutSecElecCmd; + delete cutSecPhotCmd; + delete cutGCmd; + delete cutECmd; + delete cutPCmd; + delete eCmd; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if(command == cutGLowLimCmd) + { XrayFluoList->SetGammaLowLimit(cutGLowLimCmd->GetNewDoubleValue(newValue));} + + if(command == cutELowLimCmd) + { XrayFluoList->SetElectronLowLimit(cutELowLimCmd->GetNewDoubleValue(newValue));} + + if(command == cutGELowLimCmd) + { XrayFluoList->SetGELowLimit(cutGELowLimCmd->GetNewDoubleValue(newValue));} + + if(command == cutSecPhotCmd) + { XrayFluoList->SetLowEnSecPhotCut(cutSecPhotCmd->GetNewDoubleValue(newValue));} + + if(command == cutSecElecCmd) + { XrayFluoList->SetLowEnSecElecCut(cutSecElecCmd->GetNewDoubleValue(newValue));} + + if(command == cutGCmd) + { XrayFluoList->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));} + + if(command == cutECmd) + { XrayFluoList->SetElectronCut(cutECmd->GetNewDoubleValue(newValue));} + + if(command == cutPCmd) + { XrayFluoList->SetProtonCut(cutPCmd->GetNewDoubleValue(newValue));} + + if(command == eCmd) + { XrayFluoList->SetCutsByEnergy(eCmd->GetNewDoubleValue(newValue));} + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoPrimaryGeneratorAction.cc b/examples/advanced/xray_fluorescence/src/XrayFluoPrimaryGeneratorAction.cc new file mode 100644 index 0000000000..9b5958543a --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoPrimaryGeneratorAction.cc @@ -0,0 +1,200 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoPrimaryGeneratorAction.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoPrimaryGeneratorAction.hh" +#include "G4DataVector.hh" +#include "XrayFluoDetectorConstruction.hh" +#include "XrayFluoPrimaryGeneratorMessenger.hh" +#include "XrayFluoRunAction.hh" +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "Randomize.hh" +#include "XrayFluoAnalysisManager.hh" +#include "XrayFluoDataSet.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoPrimaryGeneratorAction::XrayFluoPrimaryGeneratorAction( + XrayFluoDetectorConstruction* XrayFluoDC) + :XrayFluoDetector(XrayFluoDC),rndmFlag("off"), + beam("off"),spectrum("off"),isoVert("off") +{ + G4int n_particle = 1; + particleGun = new G4ParticleGun(n_particle); + + //create a messenger for this class + gunMessenger = new XrayFluoPrimaryGeneratorMessenger(this); + runManager = new XrayFluoRunAction(); + + // default particle kinematic + + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4String particleName; + G4ParticleDefinition* particle + = particleTable->FindParticle(particleName="e-"); + particleGun->SetParticleDefinition(particle); + particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.)); + + particleGun->SetParticleEnergy(50.*MeV); + G4double position = -0.5*(XrayFluoDetector->GetWorldSizeZ()); + particleGun->SetParticlePosition(G4ThreeVector(0.*cm,0.*cm,position)); + +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoPrimaryGeneratorAction::~XrayFluoPrimaryGeneratorAction() +{ + delete particleGun; + delete gunMessenger; + delete runManager; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + //this function is called at the begining of event + // + G4double z0 = -0.5*(XrayFluoDetector->GetWorldSizeZ()); + G4double y0 = 0.*cm, x0 = 0.*cm; + if (rndmFlag == "on") + {y0 = (XrayFluoDetector->GetSampleSizeXY())*(G4UniformRand()-0.5); + x0 = (XrayFluoDetector->GetSampleSizeXY())*(G4UniformRand()-0.5); + } + particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0)); + + //randomize starting point + if (beam == "on") + { + G4double radius = 0.5 * mm; + G4double rho = radius*sqrt(G4UniformRand()); + G4double theta = 2*pi*G4UniformRand()*rad; + G4double position = -0.5*(XrayFluoDetector->GetWorldSizeZ()); + + G4double y = rho * sin(theta); + G4double x = rho * cos(theta); + + particleGun->SetParticlePosition(G4ThreeVector(x,y,position)); + } + //shoot particles according to a certain spectrum + if (spectrum =="on") + { + G4String particle = particleGun->GetParticleDefinition() + ->GetParticleName(); + if(particle == "proton"|| particle == "alpha") + { + G4DataVector* energies = runManager->GetEnergies(); + G4DataVector* data = runManager->GetData(); + + G4double sum = runManager->GetDataSum(); + G4double partSum = 0; + G4int j = 0; + G4double random= sum*G4UniformRand(); + while (partSumSetParticleEnergy((*energies)[j]); + + } + else if (particle == "gamma") + { + const XrayFluoDataSet* dataSet = runManager->GetGammaSet(); + + G4int i = 0; + G4int id = 0; + G4double minEnergy = 0. * keV; + G4double particleEnergy= 0.; + G4double maxEnergy = 10. * keV; + G4double energyRange = maxEnergy - minEnergy; + + while ( i == 0) + { + G4double random = G4UniformRand(); + + G4double randomNum = G4UniformRand()*5.0E6; + + particleEnergy = random * energyRange; + + if ((dataSet->FindValue(particleEnergy,id)) > randomNum) + { + i = 1; + + } + } + particleGun->SetParticleEnergy(particleEnergy); + } + } + + if (isoVert == "on") + { + G4double rho = 1. *m; + //theta in [0;pi/2] + G4double theta = (pi/2)*G4UniformRand(); + //phi in [-pi;pi] + G4double phi = (G4UniformRand()*2*pi)- pi; + G4double x = rho*sin(theta)*sin(phi); + G4double y = rho*sin(theta)*cos(phi); + G4double z = -(rho*cos(theta)); + particleGun->SetParticlePosition(G4ThreeVector(x,y,z)); + + G4double Xdim = XrayFluoDetector->GetSampleSizeXY(); + G4double Ydim = XrayFluoDetector->GetSampleSizeXY(); + + G4double Dx = Xdim*(G4UniformRand()-0.5); + + G4double Dy = Ydim*(G4UniformRand()-0.5); + + particleGun->SetParticleMomentumDirection(G4ThreeVector(-x+Dx,-y+Dy,-z)); + + } +#ifdef G4ANALYSIS_USE + + G4double partEnergy = particleGun->GetParticleEnergy(); + XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance(); + analysis->analysePrimaryGenerator(partEnergy/keV); + +#endif + + particleGun->GeneratePrimaryVertex(anEvent); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoPrimaryGeneratorMessenger.cc b/examples/advanced/xray_fluorescence/src/XrayFluoPrimaryGeneratorMessenger.cc new file mode 100644 index 0000000000..bc2b11ced1 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoPrimaryGeneratorMessenger.cc @@ -0,0 +1,103 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoPrimarygeneratorMessenger.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoPrimaryGeneratorMessenger.hh" +#include "XrayFluoPrimaryGeneratorAction.hh" +#include "G4UIcmdWithAString.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoPrimaryGeneratorMessenger::XrayFluoPrimaryGeneratorMessenger(XrayFluoPrimaryGeneratorAction* XrayFluoGun) +:XrayFluoAction(XrayFluoGun) +{ + RndmCmd = new G4UIcmdWithAString("/gun/random",this); + RndmCmd->SetGuidance("Shoot randomly the incident particle."); + RndmCmd->SetGuidance(" Choice : on(default), off"); + RndmCmd->SetParameterName("choice",true); + RndmCmd->SetDefaultValue("on"); + RndmCmd->SetCandidates("on off"); + RndmCmd->AvailableForStates(PreInit,Idle); + + RndmVert = new G4UIcmdWithAString("/gun/randomVert",this); + RndmVert->SetGuidance("Shoot randomly the incident particle."); + RndmVert->SetGuidance(" Choice : on(default), off"); + RndmVert->SetParameterName("choice",true); + RndmVert->SetDefaultValue("on"); + RndmVert->SetCandidates("on off"); + RndmVert->AvailableForStates(PreInit,Idle); + + spectrum = new G4UIcmdWithAString("/gun/spectrum",this); + spectrum->SetGuidance("Shoot the incident particle with a certain energy spectrum."); + spectrum->SetGuidance(" Choice : on(default), off"); + spectrum->SetParameterName("choice",true); + spectrum->SetDefaultValue("on"); + spectrum->SetCandidates("on off"); + spectrum->AvailableForStates(PreInit,Idle); + + isoVert = new G4UIcmdWithAString("/gun/isoVert",this); + isoVert->SetGuidance("Shoot the incident particle from an isotrofic direction."); + isoVert->SetGuidance(" Choice : on(default), off"); + isoVert->SetParameterName("choice",true); + isoVert->SetDefaultValue("on"); + isoVert->SetCandidates("on off"); + isoVert->AvailableForStates(PreInit,Idle); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoPrimaryGeneratorMessenger::~XrayFluoPrimaryGeneratorMessenger() +{ + delete RndmCmd; + delete RndmVert; + delete spectrum; + delete isoVert; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoPrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if( command == RndmCmd ) + { XrayFluoAction->SetRndmFlag(newValue);} + if( command == RndmVert ) + { XrayFluoAction->SetRndmVert(newValue);} + if( command == spectrum ) + { XrayFluoAction->SetSpectrum(newValue);} + if( command == isoVert ) + { XrayFluoAction->SetIsoVert(newValue);} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoRunAction.cc b/examples/advanced/xray_fluorescence/src/XrayFluoRunAction.cc new file mode 100644 index 0000000000..0b94fcc507 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoRunAction.cc @@ -0,0 +1,413 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoRunAction.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoRunAction.hh" +#include "G4Run.hh" +#include "G4UImanager.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "XrayFluoDataSet.hh" +#include "G4DataVector.hh" +#include "G4LogLogInterpolation.hh" +#include "g4std/fstream" +#include "g4std/strstream" +#include "XrayFluoNormalization.hh" +#include "XrayFluoAnalysisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifdef G4ANALYSIS_USE + +XrayFluoRunAction::XrayFluoRunAction() + :dataSet(0),dataGammaSet(0),dataAlphaSet(0),efficiencySet(0) +{ + XrayFluoNormalization* normalization = new XrayFluoNormalization(); + + energies = new G4DataVector; + data = new G4DataVector; + + + ReadData(MeV, "/examples/advanced/xray_fluorescence/mercury_flx_solmin"); + ReadResponse("/examples/advanced/xray_fluorescence/response"); + + G4double minGamma = 0.*keV; + G4double maxGamma = 10. *keV; + G4int nBinsGamma = 100; + + dataGammaSet = normalization->Normalize(minGamma, maxGamma, nBinsGamma, + "/examples/advanced/xray_fluorescence/B_flare"); + + G4String fileName = "/examples/advanced/xray_fluorescence/efficienza"; + G4VDataSetAlgorithm* interpolation4 = new G4LogLogInterpolation(); + efficiencySet = new XrayFluoDataSet(1,fileName,interpolation4,keV,1); + + +} +#else +XrayFluoRunAction::XrayFluoRunAction() +{ +} +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +#ifdef G4ANALYSIS_USE + +XrayFluoRunAction::~XrayFluoRunAction() +{ + G4std::map >::iterator pos; + + for (pos = energyMap.begin(); pos != energyMap.end(); pos++) + { + G4DataVector* dataSet = (*pos).second; + delete dataSet; + dataSet = 0; + } + for (pos = dataMap.begin(); pos != dataMap.end(); pos++) + { + G4DataVector* dataSet = (*pos).second; + delete dataSet; + dataSet = 0; + } + +} +#else +XrayFluoRunAction::~XrayFluoRunAction() +{ + +} +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoRunAction::BeginOfRunAction(const G4Run* aRun) +{ + + G4cout << "### Run " << aRun << " start." << G4endl; + + if (G4VVisManager::GetConcreteInstance()) + { + G4UImanager* UI = G4UImanager::GetUIpointer(); + UI->ApplyCommand("/vis/scene/notifyHandlers"); + } +#ifdef G4ANALYSIS_USE + + // Book histograms and ntuples + XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance(); + analysis->book(); +#endif +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoRunAction::EndOfRunAction(const G4Run* aRun ) +{ +#ifdef G4ANALYSIS_USE + XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance(); + analysis->finish(); +#endif + // Run ended, update the visualization + if (G4VVisManager::GetConcreteInstance()) { + G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); + } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +const XrayFluoDataSet* XrayFluoRunAction::GetSet() +{ + return dataSet; +} +const XrayFluoDataSet* XrayFluoRunAction::GetGammaSet() +{ + return dataGammaSet; +} +const XrayFluoDataSet* XrayFluoRunAction::GetAlphaSet() +{ + return dataAlphaSet; +} +const XrayFluoDataSet* XrayFluoRunAction::GetEfficiencySet() +{ + return efficiencySet; +} +G4DataVector* XrayFluoRunAction::GetEnergies() +{ + return energies; +} +G4DataVector* XrayFluoRunAction::GetData() +{ + return data; +} +G4double XrayFluoRunAction::GetDataSum() +{ + G4double sum = 0; + size_t size = data->size(); + for (size_t i = 0; i zMax) {Z=zMax;} + + if (Z >= zMin && Z <= zMax) + { + G4std::map >::const_iterator pos; + pos = energyMap.find(Z); + G4std::map >::const_iterator posData; + posData = dataMap.find(Z); + if (pos!= energyMap.end()) + { + G4DataVector energySet = *((*pos).second); + G4DataVector dataSet = *((*posData).second); + G4int nData = energySet.size(); + + G4double partSum = 0; + G4int index = 0; + + while (random> partSum) + { + partSum += dataSet[index]; + index++; + } + + + if (index >= 0 && index < nData) + { + value = energySet[index]; + + } + + } + } + return value; +} + +G4double XrayFluoRunAction::GetSupData(G4double energy, G4double random) +{ + G4double value = 0.; + G4int zMin = 1; + G4int zMax = 10; + G4int Z = ((G4int)(energy/keV)+1); + + if (ZzMax) {Z=zMax;} + if (Z >= zMin && Z <= zMax) + { + G4std::map >::const_iterator pos; + pos = energyMap.find(Z); + G4std::map >::const_iterator posData; + posData = dataMap.find(Z); + if (pos!= energyMap.end()) + { + G4DataVector energySet = *((*pos).second); + G4DataVector dataSet = *((*posData).second); + G4int nData = energySet.size(); + G4double partSum = 0; + G4int index = 0; + + while (random> partSum) + { + partSum += dataSet[index]; + index++; + } + + + if (index >= 0 && index < nData) + { + value = energySet[index]; + } + } + } + return value; +} + + + +void XrayFluoRunAction::ReadData(G4double unitE, G4String fileName) +{ + char nameChar[100] = {""}; + G4std::ostrstream ost(nameChar, 100, G4std::ios::out); + + ost << fileName <<".dat"; + + G4String name(nameChar); + + char* path = getenv("G4INSTALL"); + + G4String pathString(path); + G4String dirFile = pathString + "/" + name; + G4std::ifstream file(dirFile); + G4std::filebuf* lsdp = file.rdbuf(); + + if (! (lsdp->is_open()) ) + { + G4String excep = "XrayFluoRunAction - data file: " + dirFile + " not found"; + G4Exception(excep); + } + G4double a = 0; + G4int k = 1; + + do + { + file >> a; + G4int nColumns = 2; + // The file is organized into two columns: + // 1st column is the energy + // 2nd column is the corresponding value + // The file terminates with the pattern: -1 -1 + // -2 -2 + if (a == -1 || a == -2) + { + + } + else + { + if (k%nColumns != 0) + { + G4double e = a * unitE; + + energies->push_back(e); + + k++; + + } + else if (k%nColumns == 0) + { + G4double value = a; + data->push_back(value); + + k = 1; + } + } + + } while (a != -2); // end of file + + file.close(); +} + +void XrayFluoRunAction::ReadResponse(const G4String& fileName) +{ + char nameChar[100] = {""}; + G4std::ostrstream ost(nameChar, 100, G4std::ios::out); + + + ost << fileName<<".dat"; + + G4String name(nameChar); + + char* path = getenv("G4INSTALL"); + + G4String pathString(path); + G4String dirFile = pathString + "/" + name; + G4std::ifstream file(dirFile); + G4std::filebuf* lsdp = file.rdbuf(); + + if (! (lsdp->is_open()) ) + { + G4String excep = "XrayFluoRunAction - data file: " + dirFile + " not found"; + G4Exception(excep); + } + G4double a = 0; + G4int k = 1; + G4int s = 0; + + G4int Z = 1; + G4DataVector* energies = new G4DataVector; + G4DataVector* data = new G4DataVector; + + do + { + file >> a; + G4int nColumns = 2; + if (a == -1) + { + if (s == 0) + { + // End of a data set + energyMap[Z] = energies; + dataMap[Z] = data; + // Start of new shell data set + energies = new G4DataVector; + data = new G4DataVector; + Z++; + } + s++; + if (s == nColumns) + { + s = 0; + } + } + else if (a == -2) + { + // End of file; delete the empty vectors + //created when encountering the last -1 -1 row + delete energies; + delete data; + + } + else + { + // 1st column is energy + if(k%nColumns != 0) + { + G4double e = a * keV; + energies->push_back(e); + k++; + } + else if (k%nColumns == 0) + { + // 2nd column is data + + data->push_back(a); + k = 1; + } + } + } while (a != -2); // end of file + file.close(); +} + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoSensorHit.cc b/examples/advanced/xray_fluorescence/src/XrayFluoSensorHit.cc new file mode 100644 index 0000000000..3a297c1bb5 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoSensorHit.cc @@ -0,0 +1,101 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoSensorHit.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoSensorHit.hh" + +G4Allocator XrayFluoSensorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoSensorHit::XrayFluoSensorHit() +{ + EdepTot = 0.; + EdepDetect = 0.; + + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoSensorHit::XrayFluoSensorHit(const XrayFluoSensorHit& right) +{ + EdepTot = right.EdepTot ; + EdepDetect = right.EdepDetect; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoSensorHit::~XrayFluoSensorHit() +{ + +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const XrayFluoSensorHit& XrayFluoSensorHit::operator=(const XrayFluoSensorHit& right) +{ + EdepTot = right.EdepTot ; + EdepDetect = right.EdepDetect; + + return *this; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +int XrayFluoSensorHit::operator==(const XrayFluoSensorHit& right) const +{ + return 0; +} + + +void XrayFluoSensorHit::Draw() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoSensorHit::Print() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoSteppingAction.cc b/examples/advanced/xray_fluorescence/src/XrayFluoSteppingAction.cc new file mode 100644 index 0000000000..82ff26d587 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoSteppingAction.cc @@ -0,0 +1,65 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoSteppingAction.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoSteppingAction.hh" +#include "XrayFluoDetectorConstruction.hh" +#include "G4SteppingManager.hh" +#include "G4TrackVector.hh" +#include "G4ios.hh" +#ifdef G4ANALYSIS_USE +#include "XrayFluoAnalysisManager.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoSteppingAction::XrayFluoSteppingAction() +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoSteppingAction::~XrayFluoSteppingAction() +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoSteppingAction::UserSteppingAction(const G4Step* aStep) +{ +#ifdef G4ANALYSIS_USE + XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance(); + analysis->analyseStepping(aStep); +#endif +} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoSteppingVerbose.cc b/examples/advanced/xray_fluorescence/src/XrayFluoSteppingVerbose.cc new file mode 100644 index 0000000000..d4a8cadafc --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoSteppingVerbose.cc @@ -0,0 +1,188 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoSteppingVerbose.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "XrayFluoSteppingVerbose.hh" +#include "G4SteppingManager.hh" + +#include "G4UnitsTable.hh" + +//////////////////////////////////////////////// +XrayFluoSteppingVerbose::XrayFluoSteppingVerbose() +//////////////////////////////////////////////// +{ +} + +////////////////////////////////////////////////// +XrayFluoSteppingVerbose::~XrayFluoSteppingVerbose() +////////////////////////////////////////////////// +{ +} + +///////////////////////////////////////// +void XrayFluoSteppingVerbose::StepInfo() +///////////////////////////////////////// +{ + CopyState(); + + G4int prec = G4cout.precision(3); + + if( verboseLevel >= 1 ){ + if( verboseLevel >= 4 ) VerboseTrack(); + if( verboseLevel >= 3 ){ + G4cout << G4endl; + G4cout << G4std::setw( 5) << "#Step#" << " " + << G4std::setw( 6) << "X" << " " + << G4std::setw( 6) << "Y" << " " + << G4std::setw( 6) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 9) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "NextVolu" + << G4std::setw(10) << "Process" << G4endl; + } + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + // if( fStepStatus != fWorldBoundary){ + if( fTrack->GetNextVolume() != 0 ) { + G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName(); + } else { + G4cout << G4std::setw(10) << "OutOfWorld"; + } + + if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ + G4cout << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName(); + } else { + G4cout << "User Limit"; + } + + G4cout << G4endl; + + if( verboseLevel == 2 ){ + G4int tN2ndariesTot = fN2ndariesAtRestDoIt + + fN2ndariesAlongStepDoIt + + fN2ndariesPostStepDoIt; + if(tN2ndariesTot>0){ + G4cout << " :----- List of 2ndaries - " + << "#SpawnInStep=" << G4std::setw(3) << tN2ndariesTot + << "(Rest=" << G4std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt + << "), " + << "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).size() + << " ---------------" + << G4endl; + + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; + lp1<(*fSecondary).size(); lp1++){ + G4cout << " : " + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") + << G4std::setw(10) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName(); + G4cout << G4endl; + } + + G4cout << " :-----------------------------" + << "----------------------------------" + << "-- EndOf2ndaries Info ---------------" + << G4endl; + } + } + + } + G4cout.precision(prec); +} + +//////////////////////////////////////////////// +void XrayFluoSteppingVerbose::TrackingStarted() +//////////////////////////////////////////////// +{ + + CopyState(); +G4int prec = G4cout.precision(3); + if( verboseLevel > 0 ){ + + G4cout << G4std::setw( 5) << "Step#" << " " + << G4std::setw( 6) << "X" << " " + << G4std::setw( 6) << "Y" << " " + << G4std::setw( 6) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 9) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "NextVolu" + << G4std::setw(10) << "Process" << G4endl; + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if(fTrack->GetNextVolume()){ + G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName() << " "; + } else { + G4cout << G4std::setw(10) << "OutOfWorld" << " "; + } + G4cout << G4std::setw(10) << "initStep" << G4endl; + } + G4cout.precision(prec); +} + + + + + + + + diff --git a/examples/advanced/xray_fluorescence/src/XrayFluoVisManager.cc b/examples/advanced/xray_fluorescence/src/XrayFluoVisManager.cc new file mode 100644 index 0000000000..edac9a4798 --- /dev/null +++ b/examples/advanced/xray_fluorescence/src/XrayFluoVisManager.cc @@ -0,0 +1,162 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayFluoVisManager.cc +// GEANT4 tag $Name: xray_fluo-V03-02-00 +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 28 Nov 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#ifdef G4VIS_USE + +#include "XrayFluoVisManager.hh" + +// Supported drivers... + +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN +#include "G4FukuiRenderer.hh" +#endif + +#ifdef G4VIS_USE_OPACS +#include "G4Wo.hh" +#include "G4Xo.hh" +#endif + +#ifdef G4VIS_USE_OPENGLX +#include "G4OpenGLImmediateX.hh" +#include "G4OpenGLStoredX.hh" +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 +#include "G4OpenGLImmediateWin32.hh" +#include "G4OpenGLStoredWin32.hh" +#endif + +#ifdef G4VIS_USE_OPENGLXM +#include "G4OpenGLImmediateXm.hh" +#include "G4OpenGLStoredXm.hh" +#endif + +#ifdef G4VIS_USE_OIX +#include "G4OpenInventorX.hh" +#endif + +#ifdef G4VIS_USE_OIWIN32 +#include "G4OpenInventorWin32.hh" +#endif + +#ifdef G4VIS_USE_VRML +#include "G4VRML1.hh" +#include "G4VRML2.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +XrayFluoVisManager::XrayFluoVisManager () {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void XrayFluoVisManager::RegisterGraphicsSystems () { + + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN + RegisterGraphicsSystem (new G4FukuiRenderer); +#endif + +#ifdef G4VIS_USE_OPACS + RegisterGraphicsSystem (new G4Wo); + RegisterGraphicsSystem (new G4Xo); +#endif + +#ifdef G4VIS_USE_OPENGLX + RegisterGraphicsSystem (new G4OpenGLImmediateX); + RegisterGraphicsSystem (new G4OpenGLStoredX); +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 + RegisterGraphicsSystem (new G4OpenGLImmediateWin32); + RegisterGraphicsSystem (new G4OpenGLStoredWin32); +#endif + +#ifdef G4VIS_USE_OPENGLXM + RegisterGraphicsSystem (new G4OpenGLImmediateXm); + RegisterGraphicsSystem (new G4OpenGLStoredXm); +#endif + +#ifdef G4VIS_USE_OIX + RegisterGraphicsSystem (new G4OpenInventorX); +#endif + +#ifdef G4VIS_USE_OIWIN32 + RegisterGraphicsSystem (new G4OpenInventorWin32); +#endif + +#ifdef G4VIS_USE_VRML + RegisterGraphicsSystem (new G4VRML1); + RegisterGraphicsSystem (new G4VRML2); +#endif + + if (fVerbose > 0) { + G4cout << + "\nYou have successfully chosen to use the following graphics systems." + << G4endl; + PrintAvailableGraphicsSystems (); + } +} +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + + + diff --git a/examples/advanced/xray_telescope/GNUmakefile b/examples/advanced/xray_telescope/GNUmakefile index 1461b75bde..8a4f653847 100644 --- a/examples/advanced/xray_telescope/GNUmakefile +++ b/examples/advanced/xray_telescope/GNUmakefile @@ -1,5 +1,5 @@ # -------------------------------------------------------------- -# $Id: GNUmakefile,v 1.4 2000/11/16 13:46:04 nartallo Exp $ +# $Id: GNUmakefile,v 1.6 2001/12/10 17:39:27 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -14,6 +14,26 @@ endif G4VIS_USE = 1 +include $(G4INSTALL)/config/architecture.gmk + +# Copy the XrayTelAnalysis files according to which version +# is selected. +# As the dependency is checked before "all" is reached, we need +# to do some tricks here ... + +ifdef G4ANALYSIS_AIDA_CONFIG_CFLAGS +# AIDA (version 2.2 for now) selected + FOO := $(shell cp -p include/XrayTelAnalysis.hh-AIDA include/XrayTelAnalysis.hh ) + FOO := $(shell cp -p src/XrayTelAnalysis.cc-AIDA src/XrayTelAnalysis.cc ) +else +# Anaphe selected + include anaphe.gmk + FOO := $(shell cp -p include/XrayTelAnalysis.hh-Anaphe include/XrayTelAnalysis.hh ) + FOO := $(shell cp -p src/XrayTelAnalysis.cc-Anaphe src/XrayTelAnalysis.cc ) +endif + +# End Analysis. + .PHONY: all all: lib bin diff --git a/examples/advanced/xray_telescope/History b/examples/advanced/xray_telescope/History index 55a67c30cd..d0de0790c3 100644 --- a/examples/advanced/xray_telescope/History +++ b/examples/advanced/xray_telescope/History @@ -1,4 +1,4 @@ -$Id: History,v 1.10 2001/06/18 17:43:03 nartallo Exp $ +$Id: History,v 1.14 2001/12/05 19:10:44 nartallo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,20 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +05.12.2001 - RN, tag xraytel-V03-02-01 + Try again +05.12.2001 - RN, tag xraytel-V03-02-00 + Adopted new analysis design by AP as in LowEnTest + Small design iteration by MGP implemented + +07.11.2001 - RN, tag xraytel-V02-00-13 + Cleaned up code to avoid compilation warnings arising + from "ANSI" and "pedantic" options + Implemented new "/vis" commands in macro files + +07.11.2001 - RN, tag xraytel-V02-00-12 + Error tag, same as 11 + 18.06.2001 - RN, tag xraytel-V02-00-11 tested with latest global tag geant4-03-01-ref-02 diff --git a/examples/advanced/xray_telescope/README b/examples/advanced/xray_telescope/README index 30d0d6b2e0..5aacfc7816 100644 --- a/examples/advanced/xray_telescope/README +++ b/examples/advanced/xray_telescope/README @@ -1,4 +1,4 @@ -$Id: README,v 1.5 2000/12/06 18:34:42 nartallo Exp $ +$Id: README,v 1.8 2001/12/07 19:20:15 pfeiffer Exp $ ------------------------------------------------------------------- ========================================================= @@ -29,9 +29,10 @@ in Geant4: - the generation of particles is done via the new General Particle Source - - histograming facilities are provided for the Linux environment only - with the Lizard system at present, other analysis systems such as - OpenScientist and JAS will be implemented at a later stage + - histograming facilities are presently provided for the Linux environment + either by using the AIDA interfaces, or through the Anaphe/Lizard system. + The AIDA compliant version has not been tested by the developers and is + here as a example of "forward compatibility" on how to use analysis. In order to be able to use any of these packages, prior installation is necessary and a number of environment variables will have to be set. @@ -66,16 +67,28 @@ setenv G4VIS_USE_DAWN 1 setenv G4VIS_USE_DAWNFILE 1 setenv PATH ${PATH}:"/afs/cern.ch/sw/geant4/dev/DAWN/Linux-g++" -#set up Lizard -setenv LIZARDROOT /usr/local/freeLizard/3.2.0 #get correct path -setenv G4ANALYSIS_SYSTEM Lizard +# flag that we want to use analysis: setenv G4ANALYSIS_USE 1 + +# select analysis system: any AIDA 2.2 compliant system or Anaphe 3.6.5 + +# set up for AIDA 2.2 compliancy: +# Compilation and link flags to hook and AIDA compliant system +# are passed to the Geant4 GNUmakefile system by using the "aida-config" tool +# that should come with any AIDA compliant system. Examples are: +# setenv G4ANALYSIS_AIDA_CONFIG_CFLAGS `aida-config --include` +# setenv G4ANALYSIS_AIDA_CONFIG_LIBS `aida-config --libs` + +#set up Anaphe/Lizard for the gcc-2.95 compiler +setenv G4ANALYSIS_SYSTEM Lizard setenv G4ANALYSIS_USE_LIZARD 1 setenv G4ANALYSIS_BUILD 1 setenv G4ANALYSIS_BUILD_LIZARD 1 +setenv PATH ${PATH}:/afs/cern.ch/sw/lhcxx/specific/redhat61/gcc-2.95.2/3.6.5/bin +source /afs/cern.ch/sw/lhcxx/share/LHCXX/3.6.5/install/sharedstart.csh #add to the LD_LIBRARY_PATH -setenv LD_LIBRARY_PATH /usr/local/freeLizard/3.2.0/Linux/lib:$OGLHOME/lib +setenv LD_LIBRARY_PATH $OGLHOME/lib IMPORTANT WARNING! @@ -108,16 +121,20 @@ VRMLview for Linux can be obtained from To execute a sample simulation with visualisation of proton tracks reaching the detector run: -XrayTel opengl.mac for OpenGL display -XrayTel vrml.mac for VRML display and output file -XrayTel dawn.mac for dawn display and PS output file +XrayTel -To execute a run without visualisation +execute command "/control/execute xxxxx.mac" -XrayTel test.mac +visualisation macros provided are + - opengl.mac for OpenGL display + - vrml.mac for VRML display and output file + - dawn.mac for dawn display and PS output file + +To execute a run without visualisation use + - test.mac -If the Lizard analysis options are set, histograming windows will +If the analysis options are set, histograming windows will automatically open and the corresponding files will be created. A 2D histogram (scatter plot) will display in real time every proton hit that reaches the detector. @@ -149,21 +166,27 @@ http://www.space.dera.gov.uk/space_env/gspm.html 6. Analysis -At present the analysis package implemented is Lizard. As this is still -under development only simple histograming is used. The main purpose of -including this facility was to provide the basis for the implementation of -AIDA interfaces between Geant4 and analysis packages, in particular -Lizard, OpenScientist and JAS. More complex analysis features may be -implemented in future releases. +At present there are two options for analysis packages: either +explicitely the Anaphe 3.6.5 (or compatible) version is selected, +or any AIDA-2.2 compliant analysis system is chosen. This dual +approach will be removed in the next release when only the AIDA +compliant version will be present. Presently, the OpenScientist +package (version 8) provides an implementation of AIDA 2.2, +other packages as Anaphe and JAS will follow soon. The AIDA +compliant version has not been tested by the developers and is +here as a example of "forward compatibility" on how to use analysis. + +To build and execute the example on platforms where there is no +implementation of the analysis system, the environment variables +must not be set, except for G4ANALYSIS_BUILD which is required for +building the executable. + + + + + + -The current implementation of the analysis class is very preliminary -and new tags of this example are anticipated to be released soon after -the general release - -Lizard is not currently implemented on platforms other than Linux. -To build and execute the example on other platforms the analysis -environment variables must not be set, except for G4ANALYSIS_BUILD -which is required for building the executable. diff --git a/examples/advanced/xray_telescope/XrayTel.cc b/examples/advanced/xray_telescope/XrayTel.cc index 9740774bb3..444fee8957 100644 --- a/examples/advanced/xray_telescope/XrayTel.cc +++ b/examples/advanced/xray_telescope/XrayTel.cc @@ -49,6 +49,13 @@ // CHANGE HISTORY // -------------- // +// 05.12.2001 R. Nartallo +// -Removed XM vis option +// +// 07.11.2001 M.G. Pia +// - Modified the analysis management +// - Small design iteration +// // 30.11.2000 R. Nartallo, A. Pfeiffer // - Implementation of analysis manager code for histograming // @@ -67,9 +74,8 @@ #include "G4RunManager.hh" #include "G4UImanager.hh" -//#include "G4UIGAG.hh" +#include "G4UIGAG.hh" #include "G4UIterminal.hh" -#include "G4UIXm.hh" #include "XrayTelDetectorConstruction.hh" #include "XrayTelPhysicsList.hh" #include "XrayTelVisManager.hh" @@ -80,8 +86,6 @@ #include #include "g4std/vector" -#include "XrayTelAnalysisManager.hh" - int main( int argc, char** argv ) { // Construct the default run manager @@ -91,22 +95,11 @@ int main( int argc, char** argv ) runManager->SetUserInitialization(new XrayTelDetectorConstruction ) ; runManager->SetUserInitialization(new XrayTelPhysicsList); - // setup some of the common variables - G4bool drawEvent; - G4std::vector EnteringEnergy; - G4std::vector EnteringDirection; - - // create manager for analysis. - char* s = getenv("G4ANALYSIS_SYSTEM"); - XrayTelAnalysisManager* analysisManager = new XrayTelAnalysisManager(s?s:""); - // set mandatory user action class runManager->SetUserAction(new XrayTelPrimaryGeneratorAction); - runManager->SetUserAction(new XrayTelRunAction(&EnteringEnergy, - &EnteringDirection, &drawEvent, analysisManager)); - runManager->SetUserAction(new XrayTelEventAction(&drawEvent)); - runManager->SetUserAction(new XrayTelSteppingAction( - &EnteringEnergy, &EnteringDirection, &drawEvent, analysisManager)); + runManager->SetUserAction(new XrayTelRunAction); + runManager->SetUserAction(new XrayTelEventAction); + runManager->SetUserAction(new XrayTelSteppingAction); // visualization manager G4VisManager* visManager = new XrayTelVisManager; @@ -118,8 +111,8 @@ int main( int argc, char** argv ) // get the pointer to the User Interface manager G4UImanager *UI = G4UImanager::GetUIpointer(); if ( argc==1 ){ - // G4UIsession * session = new G4UIGAG; - G4UIsession * session = new G4UIterminal; + G4UIsession * session = new G4UIGAG; + //G4UIsession * session = new G4UIterminal; session->SessionStart(); delete session; } @@ -134,7 +127,6 @@ int main( int argc, char** argv ) // job termination delete visManager; - delete analysisManager; delete runManager; return 0; } diff --git a/examples/advanced/xray_telescope/anaphe.gmk b/examples/advanced/xray_telescope/anaphe.gmk new file mode 100644 index 0000000000..497fd7a5c4 --- /dev/null +++ b/examples/advanced/xray_telescope/anaphe.gmk @@ -0,0 +1,33 @@ + +# Some pieces to include if Anaphe is selected as analysis environment +# be aware that this will be obsolete as soon as Anaphe is implementing +# the AIDA 2.2 interfaces. + +# +# This requires the env-var LHCXX_REL_DIR to be set up correctly, +# see the first lines in G4ComptonTest.cc +# + +CPPFLAGS += -I$(LHCXX_REL_DIR)/include + +ifdef G4ANALYSIS_USE_NTUPLE + CPPFLAGS += -DG4ANALYSIS_USE_NTUPLE +endif + +# C_FLAGS += -I$(LHCXX_REL_DIR)/include + LDFLAGS += -L$(LHCXX_REL_DIR)/lib +# general stuff: + LOADLIBS += -lHepUtilities -lAIDA_Annotation +# add for Histograms: + LOADLIBS += -lAIDA_HBook +# add for Vectors: + LOADLIBS += -lVector +# add for Plotter: + LOADLIBS += -lAIDA_Plotter -lqp -lqpview -lqt-mt -lqutil -lqt +# add for Ntuples: + LOADLIBS += -lAIDA_Ntuple -lNtupleTag -lNtupleTag_HBook +# ... and finally system stuff and to deal with the "Fortran legacy": + LOADLIBS += -lCHBook -ldl -lg2c +# Xm Xt + LDFLAGS += -L$/usr/local/lib -lXm -L/usr/X11R6/lib -lXt + diff --git a/examples/advanced/xray_telescope/dawn.mac b/examples/advanced/xray_telescope/dawn.mac index 436212b5c0..516ddde78c 100644 --- a/examples/advanced/xray_telescope/dawn.mac +++ b/examples/advanced/xray_telescope/dawn.mac @@ -94,7 +94,7 @@ # Visualize one event added to the current scene # * Command "/vis/scene/notifyHandlers" is written in # XrayTelRunAction::BeginOfRunAction() -# * Command "/vis/show/view" is written in +# * Command "/vis/viwer/update" is written in # XrayTelRunAction::EndOfRunAction() # Store particle trajactories for visualization @@ -113,14 +113,12 @@ /gps/radius0 30.5 cm /gps/centre 780.1 0. 0. cm /gps/angtype cos -/gps/angrot1 0. 0. 1. -/gps/angrot2 0. 1. 0. /gps/maxtheta 1. deg /gps/energytype Mono /gps/monoenergy 0.5 MeV # Set number of particles and start -/run/beamOn 10000 +/run/beamOn 30000 diff --git a/examples/advanced/xray_telescope/include/XrayTelAnalysisManager.hh b/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh-AIDA similarity index 78% rename from examples/advanced/xray_telescope/include/XrayTelAnalysisManager.hh rename to examples/advanced/xray_telescope/include/XrayTelAnalysis.hh-AIDA index 18cb7a5f36..f89d4406c1 100644 --- a/examples/advanced/xray_telescope/include/XrayTelAnalysisManager.hh +++ b/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh-AIDA @@ -38,6 +38,9 @@ // CHANGE HISTORY // -------------- // +// 07.12.2001 A.Pfeiffer +// - merged with Guy Barrand's AIDA 2.2 port +// // 30.11.2000 M.G. Pia, R. Nartallo // - Simplification of code // - Inheritance directly from the base class G4VAnalysisManager instead @@ -49,59 +52,44 @@ // // ********************************************************************** -#ifndef XrayTelAnalysisManager_h -#define XrayTelAnalysisManager_h 1 - -#include "G4VAnalysisManager.hh" +#ifndef XrayTelAnalysis_h +#define XrayTelAnalysis_h 1 #include "globals.hh" #include "g4std/vector" #include "G4ThreeVector.hh" -class G4SteppingManager; -class G4VAnalysisSystem; -#ifdef G4ANALYSIS_USE -class IHistogramFactory; +class G4Track; + +class IAnalysisFactory; +class ITree; class IHistogram1D; class IHistogram2D; -#endif +class IPlotter; -#ifdef G4ANALYSIS_USE -class XrayTelAnalysisManager: public G4VAnalysisManager { -#endif -#ifndef G4ANALYSIS_USE -class XrayTelAnalysisManager { -#endif +class XrayTelAnalysis { public: - XrayTelAnalysisManager(const G4String&); - ~XrayTelAnalysisManager(); - G4bool RegisterAnalysisSystem(G4VAnalysisSystem*); + virtual ~XrayTelAnalysis(); -#ifdef G4ANALYSIS_USE - IHistogramFactory* GetHistogramFactory(const G4String&); + void book(); + void finish(); + void analyseStepping(const G4Track& track, G4bool entering); - virtual void Store(IHistogram* = 0,const G4String& = ""); - virtual void Plot(IHistogram*); -#endif - - void BeginOfRun(); - void EndOfRun(); - void Step(const G4SteppingManager*); + static XrayTelAnalysis* getInstance(int = 0, char** = 0); private: - G4VAnalysisSystem* analysisSystem; -#ifdef G4ANALYSIS_USE - IHistogramFactory* hFactory; + XrayTelAnalysis(int,char**); + + static XrayTelAnalysis* instance; + + IAnalysisFactory* analysisFactory; + ITree* tree; IHistogram1D* enteringEnergyHistogram; IHistogram2D* yzHistogram; -#endif + IPlotter* plotter; }; #endif - - - - diff --git a/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh-Anaphe b/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh-Anaphe new file mode 100644 index 0000000000..e3bd07a673 --- /dev/null +++ b/examples/advanced/xray_telescope/include/XrayTelAnalysis.hh-Anaphe @@ -0,0 +1,126 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayTelAnalysis.hh-Anaphe,v 1.1 2001/12/10 16:06:37 pfeiffer Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: A. Pfeiffer (Andreas.Pfeiffer@cern.ch) +// (copy of his UserAnalyser class) +// +// History: +// ----------- +// 7 Nov 2001 MGP Implemented according to A. Pfeiffer's instructions +// +// ------------------------------------------------------------------- +// Class description: +// Example of analysis in a simulation application (histograms, ntuples etc.) +// This class follows the singleton design pattern; +// it is responsible for the analysis management and algorithms +// Histograms are compliant with AIDA 1.0 (the header files are +// copies from the Anaphe Interfaces directory), except for the usage of +// IHistoManager which is Anaphe/Lizard-specific +// For ntuples, for which the AIDA interfaces and compliant implementations +// are still in progress at the time of the current Geant4 release, +// an implementation with Anaphe/Lizard is shown +// Other implementations specific to an analysis system are possible too +// (see, for instance, JAS and OpenScientist documentation from the links +// in http://aida.freehep.org/) +// The implementation of the usage of ntuples shown in this example +// is expected to change in future Geant4 releases, when AIDA interfaces +// and related implementations would be available +// Further documentation is available from: http://www.ge.infn.it/geant4/lowE/ +// http://aida.freehep.org/ +// http://cern.ch/anaphe/ + +// ------------------------------------------------------------------- + +#ifndef G4PROCESSTESTANALYSIS_HH +#define G4PROCESSTESTANALYSIS_HH + +#include "globals.hh" + +// Histogramming from AIDA (through their copy in Anaphe) +#include "Interfaces/IHistogram1D.h" +#include "Interfaces/IHistogram2D.h" + +// Histogramming from Anaphe +#include "Interfaces/IHistoManager.h" + +// Ntuples from Anaphe +#include "NtupleTag/LizardNTupleFactory.h" +#include "NtupleTag/LizardQuantity.h" + +// Vectors from Anaphe +#include "Interfaces/IVector.h" +#include "Interfaces/IVectorFactory.h" + +// Plotting from Anaphe +#include "Interfaces/IPlotter.h" + +class G4Track; +class NTuple; + +class XrayTelAnalysis +{ +public: + + ~XrayTelAnalysis(); + + void book(); + + void finish(); + + void analyseStepping(const G4Track& track, G4bool entering); + + static XrayTelAnalysis* getInstance(); + +private: + + XrayTelAnalysis(); + + void plot1D(IHistogram1D* histo); + void plot2D(IHistogram2D* histo); + + static XrayTelAnalysis* instance; + + IHistoManager* histoManager; + IVectorFactory* vectorFactory; + IPlotter* plotter; + + // ---- NOTE ---- + // Histograms are compliant to AIDA interfaces, ntuples are Lizard specific + + Lizard::NTuple* ntuple; + Lizard::NTupleFactory* ntFactory; + + // Quantities for the ntuple + Lizard::Quantity eKin; + Lizard::Quantity y; + Lizard::Quantity z; + Lizard::Quantity dirX; + Lizard::Quantity dirY; + Lizard::Quantity dirZ; + +}; + +#endif diff --git a/examples/advanced/xray_telescope/include/XrayTelEventAction.hh b/examples/advanced/xray_telescope/include/XrayTelEventAction.hh index 5677b5af04..22eee30291 100644 --- a/examples/advanced/xray_telescope/include/XrayTelEventAction.hh +++ b/examples/advanced/xray_telescope/include/XrayTelEventAction.hh @@ -28,8 +28,8 @@ // * MODULE: XrayTelEventAction.hh * // * ------- * // * * -// * Version: 0.4 * -// * Date: 06/11/00 * +// * Version: 0.5 * +// * Date: 16/10/01 * // * Author: R Nartallo * // * Organisation: ESA/ESTEC, Noordwijk, THe Netherlands * // * * @@ -38,6 +38,12 @@ // CHANGE HISTORY // -------------- // +// 05.12.2001 R.Nartallo +// - Add "Update" function as in LowEnTest +// +// 16.10.2001 R.Nartallo +// - Clean up code to avoid 'pedantic' and 'ANSI' compiler warnings +// // 06.11.2000 R.Nartallo // - First implementation of X-ray Telescope advanced example. // - Based on Chandra and XMM models @@ -53,24 +59,25 @@ class XrayTelEventActionMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - class XrayTelEventAction : public G4UserEventAction { public: - XrayTelEventAction(G4bool* dEvent); + + XrayTelEventAction(); ~XrayTelEventAction(); -public: void BeginOfEventAction(const G4Event* anEvent); void EndOfEventAction(const G4Event* anEvent); void SetDrawFlag(G4String val) {drawFlag = val;}; - + + void Update(); + private: - G4bool* drawEvent; + G4String drawFlag; // control the drawing of event XrayTelEventActionMessenger* eventMessenger; + G4bool drawEvent; }; #endif diff --git a/examples/advanced/xray_telescope/include/XrayTelRunAction.hh b/examples/advanced/xray_telescope/include/XrayTelRunAction.hh index 214a2d41c4..6ac24ddc3f 100644 --- a/examples/advanced/xray_telescope/include/XrayTelRunAction.hh +++ b/examples/advanced/xray_telescope/include/XrayTelRunAction.hh @@ -28,8 +28,8 @@ // * MODULE: XrayTelRunAction.hh * // * ------- * // * * -// * Version: 0.4 * -// * Date: 06/11/00 * +// * Version: 0.5 * +// * Date: 16/10/01 * // * Author: R Nartallo * // * Organisation: ESA/ESTEC, Noordwijk, THe Netherlands * // * * @@ -38,6 +38,12 @@ // CHANGE HISTORY // -------------- // +// 07.11.2001 M.G. Pia +// - Modified the analysis management +// +// 16.10.2001 R.Nartallo +// - Clean up code to avoid 'pedantic' and 'ANSI' compiler warnings +// // 06.11.2000 R.Nartallo // - First implementation of X-ray Telescope advanced example. // - Based on Chandra and XMM models @@ -49,34 +55,28 @@ #define XrayTelRunAction_h 1 #include "G4UserRunAction.hh" -#include "G4ThreeVector.hh" #include "globals.hh" -#include "g4std/vector" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... class G4Run; -class XrayTelAnalysisManager; class XrayTelRunAction : public G4UserRunAction { public: - XrayTelRunAction(G4std::vector *enEnergy, - G4std::vector *enDirect, - G4bool* dEvent, - XrayTelAnalysisManager* = 0); + XrayTelRunAction(); + ~XrayTelRunAction(); -public: void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); -private: - G4bool* drawEvent; - G4std::vector* enteringEnergy; - G4std::vector* enteringDirection; + void Update(G4double energy); + +private: + + G4int nEnteringTracks; + G4double totEnteringEnergy; - XrayTelAnalysisManager* fAnalysisManager; }; #endif diff --git a/examples/advanced/xray_telescope/include/XrayTelSteppingAction.hh b/examples/advanced/xray_telescope/include/XrayTelSteppingAction.hh index 284694d267..396a06f7c0 100644 --- a/examples/advanced/xray_telescope/include/XrayTelSteppingAction.hh +++ b/examples/advanced/xray_telescope/include/XrayTelSteppingAction.hh @@ -28,8 +28,8 @@ // * MODULE: XrayTelSteppingAction.hh * // * ------- * // * * -// * Version: 0.4 * -// * Date: 06/11/00 * +// * Version: 0.5 * +// * Date: 16/10/01 * // * Author: R Nartallo * // * Organisation: ESA/ESTEC, Noordwijk, THe Netherlands * // * * @@ -38,6 +38,12 @@ // CHANGE HISTORY // -------------- // +// 07.11.2001 M.G. Pia +// - Modified the analysis management +// +// 16.10.2001 R.Nartallo +// - Clean up code to avoid 'pedantic' and 'ANSI' compiler warnings +// // 06.11.2000 R.Nartallo // - First implementation of X-ray Telescope advanced example. // - Based on Chandra and XMM models @@ -48,32 +54,22 @@ #ifndef XrayTelSteppingAction_h #define XrayTelSteppingAction_h 1 -class XrayTelAnalysisManager; - #include "G4UserSteppingAction.hh" -#include "G4ThreeVector.hh" -#include "g4std/vector" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +class G4Step; class XrayTelSteppingAction : public G4UserSteppingAction { public: - XrayTelSteppingAction( - G4std::vector *enEnergy, - G4std::vector *enDirect, - G4bool* dEvent, - XrayTelAnalysisManager* = 0); + + XrayTelSteppingAction(); + virtual ~XrayTelSteppingAction(); - virtual void UserSteppingAction(const G4Step*); + virtual void UserSteppingAction(const G4Step* step); private: - G4bool* drawEvent; - G4std::vector* enteringEnergy; - G4std::vector* enteringDirection; - XrayTelAnalysisManager* fAnalysisManager; }; #endif diff --git a/examples/advanced/xray_telescope/opengl.mac b/examples/advanced/xray_telescope/opengl.mac index 41a614b0e6..1bc15cf252 100644 --- a/examples/advanced/xray_telescope/opengl.mac +++ b/examples/advanced/xray_telescope/opengl.mac @@ -14,8 +14,8 @@ # * MACRO: opengl.mac * # # * ------ demostrates the OGLIX DRIVER * # # * * # -# * Version: 0.6 * # -# * Date: 15/11/00 * # +# * Version: 1.0 * # +# * Date: 16/10/01 * # # * Author: R Nartallo * # # * Organisation: ESA/ESTEC, Noordwijk, THe Netherlands * # # * * # @@ -42,6 +42,9 @@ # CHANGE HISTORY # # -------------- # # # +# 16.10.2001 R. Nartallo # +# - New implementation with new "/vis" commands # +# # # 15.11.2000 R. Nartallo # # - Replaced standard particle gun by GPS set options # # # @@ -55,26 +58,10 @@ # Invoke the OGLIX driver /vis/open OGLIX - -# Create a new scene -/vis/scene/create - -# Attach the current scene handler to the current scene -/vis/sceneHandler/attach - -# Add the world volume to the current scene -/vis/scene/add/volume - -# Add all trajectories to the current scene -#/vis/scene/add/trajectories - -# Set drawing style -/vis/viewer/set/style surface - -# Set camera -/vis/camera/reset -/vis/camera/viewpoint 25 0 -#/vis/camera/spin 360 1 +/vis/viewer/set/style wireframe +/vis/drawVolume +/vis/viewer/viewpointThetaPhi 60 -75 deg +/vis/scene/endOfEventAction accumulate # Visualize one event added to the current scene # * Command "/vis/scene/notifyHandlers" is written in @@ -86,7 +73,7 @@ /tracking/storeTrajectory 1 # Set to draw tracks of positively charged particles -# /event/drawTracks charged +/event/drawTracks charged # Set General Particle Source options /gps/particle proton @@ -98,14 +85,15 @@ /gps/radius0 30.5 cm /gps/centre 780.1 0. 0. cm /gps/angtype cos -/gps/angrot1 0. 0. 1. -/gps/angrot2 0. 1. 0. /gps/maxtheta 1. deg /gps/energytype Mono /gps/monoenergy 0.5 MeV # Set number of particles and start -/run/beamOn 10000 +/run/beamOn 30000 + + + diff --git a/examples/advanced/xray_telescope/src/XrayTelAnalysisManager.cc b/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc-AIDA similarity index 51% rename from examples/advanced/xray_telescope/src/XrayTelAnalysisManager.cc rename to examples/advanced/xray_telescope/src/XrayTelAnalysis.cc-AIDA index 7da718b0c3..c89f87b597 100644 --- a/examples/advanced/xray_telescope/src/XrayTelAnalysisManager.cc +++ b/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc-AIDA @@ -38,6 +38,12 @@ // CHANGE HISTORY // -------------- // +// 07.12.2001 A.Pfeiffer +// - merged with Guy Barrand's AIDA 2.2 port +// +// 22.11.2001 G.Barrand +// - Adaptation to AIDA +// // 30.11.2000 M.G. Pia, R. Nartallo // - Simplification of code: removal of non-Lizard specific code // - Inheritance directly from the base class G4VAnalysisManager instead @@ -62,116 +68,143 @@ #include "G4VVisManager.hh" #include "G4TrajectoryContainer.hh" #include "G4Trajectory.hh" -#include "G4SteppingManager.hh" -#include "G4VAnalysisSystem.hh" #ifdef G4ANALYSIS_USE -#include +#include +#include +#include +#include +#include +#include +#include +#include #endif -#ifdef G4ANALYSIS_USE_LIZARD -#include -#include -#include "G4LizardSystem.hh" -#endif +#include "XrayTelAnalysis.hh" -#include "XrayTelAnalysisManager.hh" +XrayTelAnalysis* XrayTelAnalysis::instance = 0; -#ifndef G4ANALYSIS_USE -XrayTelAnalysisManager::XrayTelAnalysisManager(G4String const& aSystem) +XrayTelAnalysis::XrayTelAnalysis(int argc,char** argv) +:analysisFactory(0) +,tree(0) +,enteringEnergyHistogram(0) +,yzHistogram(0) { -} -XrayTelAnalysisManager::~XrayTelAnalysisManager() -{ -} -#endif - #ifdef G4ANALYSIS_USE -XrayTelAnalysisManager::XrayTelAnalysisManager(G4String const& aSystem) - : - enteringEnergyHistogram(0), - yzHistogram(0) -{ - // The Lizard analysis system is provided here as default - // other analysis systems will be implemented at a later stage - analysisSystem = new G4LizardSystem; - IHistogramFactory* hFactory = analysisSystem->GetHistogramFactory(); + // Hooking an AIDA compliant analysis system. + analysisFactory = AIDA_createAnalysisFactory(); + if(analysisFactory) { - if(hFactory) { - // Histogram creation : - enteringEnergyHistogram = hFactory->create1D("Entering energy",100,0,0.5); - // Book the histogram for the 2D position. - // Instead of using a scatter plot, just book enough bins ... - yzHistogram = hFactory->create2D("YZ",200, -50, 50, 200, -50, 50); + ITreeFactory* treeFactory = analysisFactory->createTreeFactory(); + if(treeFactory) { + // tree = treeFactory->create(); // Tree in memory. + tree = treeFactory->create("XrayTel.root",false,false,"ROOT"); + if(tree) { + IHistogramFactory* hFactory = + analysisFactory->createHistogramFactory(*tree); + if(hFactory) { + // Histogram creation (the below has a name and a label) : + enteringEnergyHistogram = + hFactory->create1D("ekin.vop","Entering energy",100,0,0.5); + // Book the histogram for the 2D position. + // Instead of using a scatter plot, just book enough bins ... + yzHistogram = + hFactory->create2D("position.vop","YZ",200, -50, 50, 200, -50, 50); + delete hFactory; + } + } + delete treeFactory; // Will not delete the ITree. + } + + + /* + The following lines set the plotter that is + needed in this example for a multiple histograms + visualization. Please see the README for more information + */ + IPlotterFactory* plotterFactory = + analysisFactory->createPlotterFactory(argc,argv); + if(plotterFactory) { + plotter = plotterFactory->create(); + if(plotter) { + // Map the plotter on screen : + plotter->show(); + // Set the page title : + plotter->setParameter("pageTitle","XrayTel"); + // Have two plotting regions (one column, two rows). + plotter->createRegions(1,2); + // Attach histograms to plotter regions : + if(enteringEnergyHistogram) { + plotter->plot(*enteringEnergyHistogram); + plotter->next(); + } + if(yzHistogram) { + plotter->plot(*yzHistogram); + } + } + delete plotterFactory; + } } + +#endif } -XrayTelAnalysisManager::~XrayTelAnalysisManager() +XrayTelAnalysis::~XrayTelAnalysis() { - // delete hFactory; +#ifdef G4ANALYSIS_USE + delete plotter; delete enteringEnergyHistogram; delete yzHistogram; - delete analysisSystem; + delete analysisFactory; +#endif } -G4bool XrayTelAnalysisManager::RegisterAnalysisSystem( -G4VAnalysisSystem* ) +XrayTelAnalysis* XrayTelAnalysis::getInstance(G4int argc, char** argv) { - return true; + if (instance == 0) instance = new XrayTelAnalysis(argc, argv); + return instance; } -IHistogramFactory* XrayTelAnalysisManager::GetHistogramFactory( - const G4String& aSystem) -{ - return hFactory; + +void XrayTelAnalysis::book(){ +#ifdef G4ANALYSIS_USE + if(enteringEnergyHistogram) enteringEnergyHistogram->reset(); + if(yzHistogram) yzHistogram->reset(); +#endif } -void XrayTelAnalysisManager::Store(IHistogram* aHistogram,const G4String& aSID) -{ - analysisSystem->Store(aHistogram,aSID); -} -void XrayTelAnalysisManager::Plot(IHistogram* aHistogram) -{ - analysisSystem->Plot(aHistogram); -} - -void XrayTelAnalysisManager::BeginOfRun(){ - if(enteringEnergyHistogram) - enteringEnergyHistogram->reset(); - if(yzHistogram) - yzHistogram->reset(); -} -void XrayTelAnalysisManager::EndOfRun(){ +void XrayTelAnalysis::finish(){ +#ifdef G4ANALYSIS_USE // the following things cannot be done in Run::EndOfRun() // only now plot the energy of the particles - if(enteringEnergyHistogram) { - Plot(enteringEnergyHistogram); - } - // and store the histograms - if(enteringEnergyHistogram) { - Store(enteringEnergyHistogram,"ekin.vop"); - } - if(yzHistogram) { - Store(yzHistogram,"position.vop"); - } + + if(tree) tree->commit(); // Write histos in file. + + // Give control to the GUI so that someone + // can play with the plotter. The plotter + // should be equipped with an "escape" (button) + // to return of the "interact" method. + G4cout << "Click the escape button to continue..." << G4endl; + if(plotter) plotter->interact(); +#endif } -void XrayTelAnalysisManager::Step(const G4SteppingManager* aSteppingManager) { - if(!aSteppingManager) return; +void XrayTelAnalysis::analyseStepping(const G4Track& track, G4bool entering) { +#ifdef G4ANALYSIS_USE - G4Track* track = aSteppingManager->GetTrack(); - G4ThreeVector pos = track->GetPosition(); + G4ThreeVector pos = track.GetPosition(); if(enteringEnergyHistogram) { - enteringEnergyHistogram->fill(track->GetKineticEnergy()); + enteringEnergyHistogram->fill(track.GetKineticEnergy()); } if(yzHistogram) { yzHistogram->fill(pos.y(), pos.z()); - Plot(yzHistogram); } + if(plotter) plotter->refresh(); +#endif } -#endif + diff --git a/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc-Anaphe b/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc-Anaphe new file mode 100644 index 0000000000..24b1018dda --- /dev/null +++ b/examples/advanced/xray_telescope/src/XrayTelAnalysis.cc-Anaphe @@ -0,0 +1,169 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: XrayTelAnalysis.cc-Anaphe,v 1.1 2001/12/10 16:06:37 pfeiffer Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: A. Pfeiffer (Andreas.Pfeiffer@cern.ch) +// (copied from his UserAnalyser class) +// +// History: +// ----------- +// 7 Nov 2001 MGP Implementation +// +// ------------------------------------------------------------------- + +#include "XrayTelAnalysis.hh" +#include "globals.hh" +#include "G4Track.hh" +#include "G4SteppingManager.hh" +#include "G4ThreeVector.hh" + +XrayTelAnalysis* XrayTelAnalysis::instance = 0; + +XrayTelAnalysis::XrayTelAnalysis() +{ + histoManager = createIHistoManager(); + ntFactory = Lizard::createNTupleFactory(); + vectorFactory = createIVectorFactory(); + plotter = createIPlotter(); +} + +XrayTelAnalysis::~XrayTelAnalysis() +{ + delete ntFactory; + ntFactory = 0; + + delete histoManager; + histoManager = 0; + + delete vectorFactory; + vectorFactory = 0; + + delete plotter; + plotter = 0; +} + +XrayTelAnalysis* XrayTelAnalysis::getInstance() +{ + if (instance == 0) instance = new XrayTelAnalysis; + return instance; +} + + +void XrayTelAnalysis::book() +{ + histoManager->selectStore("XrayTel.his"); + + // Book histograms + histoManager->create1D("1","Energy, all", 20,0.,10.); + histoManager->create2D("2","y-z, all", 100,-500.,500.,100,-500.,500.); + histoManager->create1D("3","Energy, entering detector", 10,0.,1.); + histoManager->create2D("4","y-z, entering detector", 200,-50.,50.,200,-50.,50.); + + // Divide the plot into 4 zones to show the 4 histograms during execution + plotter->zone(2,2,0,0); + + // Book ntuples + ntuple = ntFactory->createC("XrayTel.his::1"); + + // Add and bind the attributes to the ntuple + if ( !( ntuple->addAndBind( "energy", eKin) && + ntuple->addAndBind( "y" , y ) && + ntuple->addAndBind( "z" , z ) && + ntuple->addAndBind( "dirx" , dirX) && + ntuple->addAndBind( "diry" , dirY) && + ntuple->addAndBind( "dirz" , dirZ) ) ) + { + delete ntuple; + G4Exception(" XrayTelAnalysis::book - Could not addAndBind ntuple"); + } +} + +void XrayTelAnalysis::finish() +{ + // Store histograms + + // Because of a Lizard feature, ntuples must be deleted at this stage, + // not in the destructor (otherwise the ntuples are not stored) + + histoManager->store("1"); + histoManager->store("3"); + histoManager->store("2"); + histoManager->store("4"); + + delete ntuple; + ntuple = 0; + G4cout << "Deleted ntuple" << G4endl; +} + +void XrayTelAnalysis::analyseStepping(const G4Track& track, G4bool entering) +{ + eKin = track.GetKineticEnergy(); + G4ThreeVector pos = track.GetPosition(); + y = pos.y(); + z = pos.z(); + G4ThreeVector dir = track.GetMomentumDirection(); + dirX = dir.x(); + dirY = dir.y(); + dirZ = dir.z(); + + // Fill histograms, all tracks + IHistogram1D* h1 = histoManager->retrieveHisto1D("1"); + h1->fill(eKin); + IHistogram2D* h2 = histoManager->retrieveHisto2D("2"); + h2->fill(y,z); + + // Fill histograms and ntuple, tracks entering the detector + if (entering) + { + // Fill and plot histograms + IHistogram1D* h3 = histoManager->retrieveHisto1D("3"); + h3->fill(eKin); + plot1D(h1); + plot1D(h3); + IHistogram2D* h4 = histoManager->retrieveHisto2D("4"); + h4->fill(y,z); + plot2D(h2); + plot2D(h4); + + // Fill ntuple + ntuple->addRow(); + } +} + +void XrayTelAnalysis::plot1D(IHistogram1D* histo) +{ + IVector* v = vectorFactory->from1D(histo); + plotter->plot(v,0); + plotter->refresh(); + delete v; +} + +void XrayTelAnalysis::plot2D(IHistogram2D* histo) +{ + IVector* v = vectorFactory->from2D(histo); + plotter->plot(v,0); + plotter->refresh(); + delete v; +} diff --git a/examples/advanced/xray_telescope/src/XrayTelEventAction.cc b/examples/advanced/xray_telescope/src/XrayTelEventAction.cc index 9c7f57fb9a..cbcf22a354 100644 --- a/examples/advanced/xray_telescope/src/XrayTelEventAction.cc +++ b/examples/advanced/xray_telescope/src/XrayTelEventAction.cc @@ -38,6 +38,9 @@ // CHANGE HISTORY // -------------- // +// 05.12.2001 R.Nartallo +// - Implement "Update" function as in LowEnTest +// // 06.11.2000 R.Nartallo // - First implementation of xray_telescope event action // - Based on Chandra and XMM models @@ -58,33 +61,29 @@ #include "XrayTelEventAction.hh" #include "XrayTelEventActionMessenger.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -XrayTelEventAction::XrayTelEventAction(G4bool* dEvent) - : drawFlag("all"),eventMessenger(NULL), drawEvent(dEvent) +XrayTelEventAction::XrayTelEventAction() + : drawFlag("all"),eventMessenger(0),drawEvent(false) { eventMessenger = new XrayTelEventActionMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... XrayTelEventAction::~XrayTelEventAction() { delete eventMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void XrayTelEventAction::BeginOfEventAction(const G4Event* Ev) { - *drawEvent=false; + drawEvent = false; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void XrayTelEventAction::EndOfEventAction(const G4Event* Ev) { - if (*drawEvent){ + if (drawEvent){ const G4Event* evt = fpEventManager->GetConstCurrentEvent(); G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer(); @@ -106,7 +105,11 @@ void XrayTelEventAction::EndOfEventAction(const G4Event* Ev) } - +void XrayTelEventAction::Update() +{ + // Update the flag identifying the event to be visualised + drawEvent = true; +} diff --git a/examples/advanced/xray_telescope/src/XrayTelRunAction.cc b/examples/advanced/xray_telescope/src/XrayTelRunAction.cc index c1dbb007e1..31ed39c5dc 100644 --- a/examples/advanced/xray_telescope/src/XrayTelRunAction.cc +++ b/examples/advanced/xray_telescope/src/XrayTelRunAction.cc @@ -28,8 +28,8 @@ // * MODULE: XrayTelRunAction.cc * // * ------- * // * * -// * Version: 0.4 * -// * Date: 06/11/00 * +// * Version: 0.5 * +// * Date: 16/10/01 * // * Author: R Nartallo * // * Organisation: ESA/ESTEC, Noordwijk, THe Netherlands * // * * @@ -38,6 +38,14 @@ // CHANGE HISTORY // -------------- // +// 07.11.2001 M.G. Pia +// - Modified the analysis management +// - Small design iteration +// +// 16.10.2001 R. Nartallo +// - Updated "/vis" commands to new versions +// - Clean up code to avoid 'pedantic' and 'ANSI' compiler warnings +// // 30.11.2000 R. Nartallo // - Add pre-processor directives to compile without analysis option // @@ -54,89 +62,62 @@ #include "G4Run.hh" #include "G4UImanager.hh" #include "G4VVisManager.hh" -#include "G4ios.hh" - -#include "g4std/fstream" -#include "g4std/vector" - #include "XrayTelRunAction.hh" -#include "XrayTelAnalysisManager.hh" +#include "XrayTelAnalysis.hh" +#include "SystemOfUnits.h" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -XrayTelRunAction::XrayTelRunAction(G4std::vector *enEnergy, - G4std::vector *enDirect, - G4bool* dEvent, - XrayTelAnalysisManager* aAnalysisManager) - :enteringEnergy(enEnergy), - enteringDirection(enDirect),drawEvent(dEvent), - fAnalysisManager(aAnalysisManager) -{;} +XrayTelRunAction::XrayTelRunAction() + :nEnteringTracks(0), totEnteringEnergy(0.) +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... XrayTelRunAction::~XrayTelRunAction() -{;} +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void XrayTelRunAction::BeginOfRunAction(const G4Run* aRun) { - G4int RunN = aRun->GetRunID(); - if ( RunN % 1000 == 0 ) - G4cout << "### Run : " << RunN << G4endl; + G4int runN = aRun->GetRunID(); + if ( runN % 1000 == 0 ) + G4cout << "### Run : " << runN << G4endl; if (G4VVisManager::GetConcreteInstance()) { G4UImanager* UI = G4UImanager::GetUIpointer(); - UI->ApplyCommand("/vis/clear/view"); - UI->ApplyCommand("/vis/draw/current"); + UI->ApplyCommand("/vis/scene/notifyHandlers"); } - enteringEnergy->clear(); - enteringDirection->clear(); + nEnteringTracks = 0; + totEnteringEnergy = 0.; -#ifdef G4ANALYSIS_USE - if(fAnalysisManager) fAnalysisManager->BeginOfRun(); -#endif + // Book histograms and ntuples + XrayTelAnalysis* analysis = XrayTelAnalysis::getInstance(); + analysis->book(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void XrayTelRunAction::EndOfRunAction(const G4Run* ) { - - G4int i; + XrayTelAnalysis* analysis = XrayTelAnalysis::getInstance(); + analysis->finish(); if (G4VVisManager::GetConcreteInstance()) - G4UImanager::GetUIpointer()->ApplyCommand("/vis/show/view"); - - G4std::ofstream outscat("detector.hist", ios::app); + G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); G4cout << "End of Run summary" << G4endl << G4endl; - G4double totEnteringEnergy = 0.0; + G4cout << "Total Entering Detector : " << nEnteringTracks << G4endl; + G4cout << "Total Entering Detector Energy : " + << totEnteringEnergy/MeV + << " MeV" + << G4endl; +} - for (i=0;i< enteringEnergy->size();i++) - totEnteringEnergy += *(*enteringEnergy)[i]; - G4cout << "Total Entering Detector : " << enteringEnergy->size() << G4endl; - G4cout << "Total Entering Detector Energy : " << totEnteringEnergy << G4endl; - for (i=0;isize();i++) { - outscat << " " - << *(*enteringEnergy)[i] - << " " - << (*enteringDirection)[i]->x() - << " " - << (*enteringDirection)[i]->y() - << " " - << (*enteringDirection)[i]->z() - << G4endl; - } - outscat.close(); - -#ifdef G4ANALYSIS_USE - if(fAnalysisManager) fAnalysisManager->EndOfRun(); -#endif +void XrayTelRunAction::Update(G4double energy) +{ + nEnteringTracks++; + totEnteringEnergy += energy; } @@ -158,9 +139,6 @@ void XrayTelRunAction::EndOfRunAction(const G4Run* ) - - - diff --git a/examples/advanced/xray_telescope/src/XrayTelSteppingAction.cc b/examples/advanced/xray_telescope/src/XrayTelSteppingAction.cc index 1ad5239d44..60816320e4 100644 --- a/examples/advanced/xray_telescope/src/XrayTelSteppingAction.cc +++ b/examples/advanced/xray_telescope/src/XrayTelSteppingAction.cc @@ -38,6 +38,14 @@ // CHANGE HISTORY // -------------- // +// 05.12.2001 R. Nartallo +// - Return condition for entering detector (cf LowEnTest) +// - Remove line to kill track if too many steps +// +// 07.11.2001 M.G. Pia +// - Modified the analysis management +// - Small design iteration +// // 30.11.2000 R. Nartallo // - Add pre-processor directives to compile without analysis option // @@ -48,84 +56,61 @@ // - First implementation of xray_telescope Physics list // - Based on Chandra and XMM models // -// // ********************************************************************** -#include "G4ios.hh" -#include "G4Track.hh" -#include "G4SteppingManager.hh" - -#include "globals.hh" - -#include -#include "g4std/fstream" -#include "g4std/iomanip" -#include "g4std/iostream" -#include "g4std/vector" - #include "XrayTelSteppingAction.hh" -#include "XrayTelAnalysisManager.hh" +#include "globals.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4RunManager.hh" +#include "XrayTelEventAction.hh" +#include "XrayTelRunAction.hh" +#include "XrayTelAnalysis.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +#include "Randomize.hh" -XrayTelSteppingAction::XrayTelSteppingAction( - G4std::vector* enEnergy, - G4std::vector* enDirect, - G4bool* dEvent, - XrayTelAnalysisManager* aAnalysisManager) - : enteringEnergy(enEnergy), - enteringDirection(enDirect),drawEvent(dEvent), - fAnalysisManager(aAnalysisManager) -{;} +XrayTelSteppingAction::XrayTelSteppingAction() +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... XrayTelSteppingAction::~XrayTelSteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void XrayTelSteppingAction::UserSteppingAction(const G4Step*) +void XrayTelSteppingAction::UserSteppingAction(const G4Step* step) { - const G4SteppingManager* pSM = fpSteppingManager; - G4Track* fTrack = pSM->GetTrack(); - G4Step* fStep = pSM->GetStep(); - G4int TrackID = fTrack->GetTrackID(); - G4int StepNo = fTrack->GetCurrentStepNumber(); + G4bool entering = false; + G4Track* track = step->GetTrack(); - if(StepNo >= 10000) fTrack->SetTrackStatus(fStopAndKill); + G4int stepNo = track->GetCurrentStepNumber(); G4String volName; - if ( fTrack->GetVolume() ) - volName = fTrack->GetVolume()->GetName(); + if (track->GetVolume()) volName = track->GetVolume()->GetName(); G4String nextVolName; - if ( fTrack->GetNextVolume() ) - nextVolName = fTrack->GetNextVolume()->GetName(); - - G4ThreeVector pos = fTrack->GetPosition(); + if (track->GetNextVolume()) nextVolName = track->GetNextVolume()->GetName(); - //--- Entering Detector - if(volName != "Detector_P" && nextVolName == "Detector_P") { + // Entering Detector + if (volName != "Detector_P" && nextVolName == "Detector_P") + { + entering = true; - enteringEnergy->push_back ( new G4double (fTrack->GetKineticEnergy()) ); - enteringDirection->push_back (new G4ThreeVector (pos)); + // Notify the corresponding UserAction that the event must be visualised + G4RunManager* runManager = G4RunManager::GetRunManager(); + // Casting is safe here: one knows the RTTI of the UserActions + // in the current application (otherwise one could dynamic_cast) + XrayTelEventAction* eventAction = (XrayTelEventAction*) runManager->GetUserEventAction(); + eventAction->Update(); - // now we want to do some analysis at this step ... - // call back to the analysis-manger to do the analysis ... + // Notify the corresponding UserAction to update the run counters + XrayTelRunAction* runAction = (XrayTelRunAction*) runManager->GetUserRunAction(); + runAction->Update(track->GetKineticEnergy()); + } -#ifdef G4ANALYSIS_USE - if(fAnalysisManager) fAnalysisManager->Step(fpSteppingManager); -#endif - - *drawEvent = true; - } + // Do the analysis related to this step + XrayTelAnalysis* analysis = XrayTelAnalysis::getInstance(); + analysis->analyseStepping(*track,entering); } - - - - - diff --git a/examples/advanced/xray_telescope/src/XrayTelVisManager.cc b/examples/advanced/xray_telescope/src/XrayTelVisManager.cc index 0c68387dd5..a177067de7 100644 --- a/examples/advanced/xray_telescope/src/XrayTelVisManager.cc +++ b/examples/advanced/xray_telescope/src/XrayTelVisManager.cc @@ -51,18 +51,21 @@ // Supported drivers... -#ifdef G4VIS_USE_ASCIITREE +// Not needing external packages or libraries... #include "G4ASCIITree.hh" -#endif +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -91,20 +94,11 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYTRACER -#include "G4RayTracer.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... XrayTelVisManager::XrayTelVisManager () {} @@ -113,18 +107,21 @@ XrayTelVisManager::XrayTelVisManager () {} void XrayTelVisManager::RegisterGraphicsSystems () { -#ifdef G4VIS_USE_ASCIITREE + // Graphics Systems not needing external packages or libraries... RegisterGraphicsSystem (new G4ASCIITree); -#endif + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -153,20 +150,11 @@ void XrayTelVisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYTRACER - RegisterGraphicsSystem (new G4RayTracer); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." diff --git a/examples/advanced/xray_telescope/vrml.mac b/examples/advanced/xray_telescope/vrml.mac index 816da1de7d..9f87807da6 100644 --- a/examples/advanced/xray_telescope/vrml.mac +++ b/examples/advanced/xray_telescope/vrml.mac @@ -14,8 +14,8 @@ # * MACRO: vrml.mac * # # * ------ demostrates the VRML DRIVER * # # * * # -# * Version: 0.6 * # -# * Date: 15/11/00 * # +# * Version: 1.0 * # +# * Date: 16/10/01 * # # * Author: R Nartallo * # # * Organisation: ESA/ESTEC, Noordwijk, THe Netherlands * # # * * # @@ -50,6 +50,9 @@ # CHANGE HISTORY # # -------------- # # # +# 16.10.2001 R. Nartallo # +# - New implementation with new "/vis" commands # +# # # 15.11.2000 R. Nartallo # # - Replaced standard particle gun by GPS set options # # # @@ -85,26 +88,30 @@ # Invoke the VRML2FILE driver /vis/open VRML2FILE +# Set viewer rendering style +# "wireframe" means "half-transparent" in VRML2FILE driver +#/vis/viewer/set/style surface +/vis/viewer/set/style wireframe + +# Compund command: creates scene, adds volume, attaches scene handler +# and refreshes viewer +/vis/drawVolume + # Create a new scene /vis/scene/create -# Add the world volume to the current scene -/vis/scene/add/volume - # Attach the current scene handler to the current scene /vis/sceneHandler/attach +# Add the world volume to the current scene +/vis/scene/add/volume + # Visualize one event added to the current scene # * Command "/vis/scene/notifyHandlers" is written in # XrayTelRunAction::BeginOfRunAction() # * Command "/vis/viewer/update" is written in # XrayTelRunAction::EndOfRunAction() -# Set viewer rendering style -# "wireframe" means "half-transparent" in VRML2FILE driver -#/vis/viewer/set/style surface -/vis/viewer/set/style wireframe - # Store particle trajactories for visualization /tracking/storeTrajectory 1 diff --git a/examples/extended/analysis/AnaEx01/AnaEx01.cc b/examples/extended/analysis/AnaEx01/AnaEx01.cc index 005fe40c48..14e9d733d1 100644 --- a/examples/extended/analysis/AnaEx01/AnaEx01.cc +++ b/examples/extended/analysis/AnaEx01/AnaEx01.cc @@ -21,16 +21,20 @@ // ******************************************************************** // // -// $Id: AnaEx01.cc,v 1.6.4.2 2001/06/28 20:18:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01.cc,v 1.8 2001/11/16 14:35:10 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- -// GEANT 4 - exampleN03 +// GEANT 4 - AnaEx01 // // -------------------------------------------------------------- // Comments -// +// Example of histogram and tuple manipulations using an AIDA compliant +// system. All analysis manipulations (hooking an AIDA implementation, +// histo booking, filling, etc...) are concentrated in one +// class : AnaEx01AnalysisManager. +// See the README file within the same directory to have more infos. // -------------------------------------------------------------- #include "G4RunManager.hh" @@ -39,9 +43,7 @@ #include "Randomize.hh" -#ifdef G4ANALYSIS_USE #include "AnaEx01AnalysisManager.hh" -#endif #include "AnaEx01DetectorConstruction.hh" #include "AnaEx01PhysicsList.hh" @@ -66,16 +68,15 @@ int main(int argc,char** argv) { AnaEx01DetectorConstruction* detector = new AnaEx01DetectorConstruction; runManager->SetUserInitialization(detector); runManager->SetUserInitialization(new AnaEx01PhysicsList); - -#ifdef G4ANALYSIS_USE - AnaEx01AnalysisManager* analysisManager = - new AnaEx01AnalysisManager(argc==1?"Lab":argv[1]); + runManager->SetUserAction(new AnaEx01PrimaryGeneratorAction(detector)); + +#ifdef G4ANALYSIS_USE + AnaEx01AnalysisManager* analysisManager = new AnaEx01AnalysisManager(); runManager->SetUserAction(new AnaEx01RunAction(analysisManager)); runManager->SetUserAction(new AnaEx01EventAction(analysisManager)); runManager->SetUserAction(new AnaEx01SteppingAction(analysisManager)); #else - runManager->SetUserAction(new AnaEx01PrimaryGeneratorAction(detector)); runManager->SetUserAction(new AnaEx01RunAction()); runManager->SetUserAction(new AnaEx01EventAction()); runManager->SetUserAction(new AnaEx01SteppingAction()); diff --git a/examples/extended/analysis/AnaEx01/History b/examples/extended/analysis/AnaEx01/History index a36cf50014..0f83f23482 100644 --- a/examples/extended/analysis/AnaEx01/History +++ b/examples/extended/analysis/AnaEx01/History @@ -1,4 +1,4 @@ -$Id: History,v 1.2 2001/06/20 06:49:05 barrand Exp $ +$Id: History,v 1.5 2001/12/03 08:22:31 barrand Exp $ -------------------------------------------------- ========================================================= @@ -15,6 +15,15 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +03th December 2001 Guy Barrand (AnaEx01-V03-02-01) +- Change README : Explain CMTSITE setup for Lab usage. + +19th November 2001 Guy Barrand +- Change README : G4ANALYSIS_USE_AIDA -> G4ANALYSIS_USE. + +16rd November 2001 Guy Barrand +- * : AIDA 2.2 compliant code. Usage of tuple. + 20 June 2001, Guy Barrand : - AnaEx01SteppingVerbose.cc : replace "entries" to "size" in order to compile with 03-00-ref-03 kernel. diff --git a/examples/extended/analysis/AnaEx01/README b/examples/extended/analysis/AnaEx01/README index 1d7c6146ca..8daf1d3a0e 100644 --- a/examples/extended/analysis/AnaEx01/README +++ b/examples/extended/analysis/AnaEx01/README @@ -1,4 +1,4 @@ -$Id: README,v 1.6 2000/12/06 13:08:13 barrand Exp $ +$Id: README,v 1.11 2001/12/03 07:49:17 barrand Exp $ ------------------------------------------------------------------- ========================================================= @@ -8,61 +8,104 @@ $Id: README,v 1.6 2000/12/06 13:08:13 barrand Exp $ AnaEx01 ------- - This example shows the usage of histogramming with the - analysis category. - - To use the G4AnalysisManager the source/analysis category - must have been reconstructed with one of the environment - variable setted : - G4ANALYSIS_BUILD_JAS - G4ANALYSIS_BUILD_LAB - G4ANALYSIS_BUILD_LIZARD + This example shows the usage of histogram and tuple manipulations using + an AIDA compliant system. In this example, all analysis manipulations + (hooking an AIDA implementation, histo booking, filling, etc...) are + concentrated in one class : AnaEx01AnalysisManager. - To use an analysis system with this example, the coresponding - environment variable must be setted : - G4ANALYSIS_USE_JAS - G4ANALYSIS_USE_LAB - G4ANALYSIS_USE_LIZARD + To use an AIDA compliant analysis system with this example, the environment + variables : + G4ANALYSIS_USE + G4ANALYSIS_AIDA_CONFIG_CFLAGS + G4ANALYSIS_AIDA_CONFIG_LIBS + must be properly set. - Then to cosntruct this example : + The first one permits to validate/devalidate the AIDA analysis code + in the example code. The two others permit to give the compilation + and link flags of the AIDA compliant system used. + An AIDA compliant system should define the command 'aida-config' that + permits to retrieve the correct values. For example under some + UNIX csh flavour : + csh> source .csh + csh> source .csh (or some equivalent) + csh> setenv G4ANALYSIS_USE 1 + csh> setenv G4ANALYSIS_AIDA_CONFIG_CFLAGS `aida-config --cflags` + csh> setenv G4ANALYSIS_AIDA_CONFIG_LIBS `aida-config --libs` csh> cd $G4INSTALL/examples/extended/analysis/AnaEx01 - csh> setenv G4ANALYSIS_USE_JAS 1 - csh> setenv G4ANALYSIS_USE_LAB 1 - csh> setenv G4ANALYSIS_USE_LIZARD 1 csh> gmake - - Working with the Lab package : - ---------------------------- - If working with the Lab package run the program - from the analysis/Lab directory : - csh> cd analyis/Lab - csh> $G4WORKDIR/bin/$G4SYSTEM/AnaEx01 Lab - It must produce a g4osc.root file that contains - some histograms. You can visualize them with : - csh> source /Lab//cmt/setup.csh - csh> oxm - and click in File/session to execute the session.tcl - file. - Working with jas : - -------------------------- - If working with jas : + For info, the CPP macros G4ANALYSIS_*_AIDA_* are used in the + config/analysis.gmk file of the Geant4 GNUmakefile system. + + Working with the Falsetto package : + --------------------------------- + Falsetto is a little package containing a dummy + AIDA analysis factory. It permits to check compilation + and link of some user AIDA code without embarquing a + full analysis system. + + To reconstruct this example by using the Falsetto + package (assuming that it is installed !), do : + csh> source .csh + csh> source /Falsetto//cmt/setup.csh + csh> setenv G4ANALYSIS_USE 1 + csh> setenv G4ANALYSIS_AIDA_CONFIG_CFLAGS `aida-config --cflags` + csh> setenv G4ANALYSIS_AIDA_CONFIG_LIBS `aida-config --libs` csh> cd $G4INSTALL/examples/extended/analysis/AnaEx01 - csh> $G4WORKDIR/bin/$G4SYSTEM/AnaEx01 jas - The program will pend for a connection toward jas, then - spawn jas : - csh> /jas + csh> gmake - From jas panel, open a connection toward the AnaEx01 job : - - File/Reconnect - - Give no server name if running on same machine. - - Next to end the connect panel. + To run : + csh> cd analyis/Falsetto + csh> $G4WORKDIR/bin/$G4SYSTEM/AnaEx01 + At the beginning of output ;should appear : + AIDA analysis factory not found. - When connection is established, the tree widget - on the left of jas panel must display "G4Job". - Click on the tree items to access an histogram. - Double click on the histogram name to visualize it. - - The histogram will update itself according time. + The Falsetto URL is : http://www.lal.in2p3.fr/SI/Falsetto + Falsetto is installed at CERN under /afs/cern.ch/sw/contrib. + + Working with the OpenScientist/Lab package : + ------------------------------------------ + To reconstruct this example by using the OpenScientist/Lab + package (assuming that OpenScientist is installed ! ) you have + first to "setup" the environment of the Lab package and Geant4. + The Lab package (and all OpenScientist packages) being handled + by the CMT tools, you may have to setup the environment + variable "CMTSITE" to execute site specific things in the chain + of setup files of the OpenScientist packages. Then for example at CERN : + csh> setenv CMTSITE CERN + (DOS> set CMTSITE=CERN_WIN32 (for Windows)) + When done then do : + csh> source /Lab//cmt/setup.csh + csh> source .csh + csh> setenv G4ANALYSIS_USE 1 + csh> setenv G4ANALYSIS_AIDA_CONFIG_CFLAGS `aida-config --cflags` + csh> setenv G4ANALYSIS_AIDA_CONFIG_LIBS `aida-config --libs` + csh> cd $G4INSTALL/examples/extended/analysis/AnaEx01 + csh> gmake + + To run : + csh> cd analyis/Lab + csh> $G4WORKDIR/bin/$G4SYSTEM/AnaEx01 + + It must produce an AnaEx01.root file that contains + some HCL histograms and a Lab tuple (stored as a ROOT/TTree). + + To plot some histograms, spawn the Lab interactive tool with : + csh> onx + (DOS> onx (for Windows)) + click in File/Python to map a file chooser, choose AnaEx01.py + to execute the AnaEx01.py that contains a Python script that + do some analysis over the AnaEx01.root file (it gets an histo, plots it + in a first drawing region, gets the tuple, books and fills another histo + from the tuple colum and plots it in another drawing region). + + The AnaEx01.C file could also be used, within the ROOT tool, + to see a projection of the first column of the tuple contained + in the AnaEx01.root file. For example : + csh> root + root[0] .X AnaEx01.C + + The OpenScientist URL is : http://www.lal.in2p3.fr/OpenScientist + OpenScientist is installed at CERN under /afs/cern.ch/sw/contrib. diff --git a/examples/extended/analysis/AnaEx01/analysis/Falsetto/run.mac b/examples/extended/analysis/AnaEx01/analysis/Falsetto/run.mac new file mode 100644 index 0000000000..14c8a2c1e6 --- /dev/null +++ b/examples/extended/analysis/AnaEx01/analysis/Falsetto/run.mac @@ -0,0 +1,19 @@ +# +# Macro file for "AnEx01.cc" +# +# (can be run in batch, without graphic) +# +#/control/verbose 2 +#/control/saveHistory +# +#/run/verbose 2 +#/event/verbose 0 +#/tracking/verbose 1 +# +# muon 300 MeV to the direction (1.,0.,0.) +# 3 events +# +#/gun/particle mu+ +/gun/particle e+ +/gun/energy 300 MeV +/run/beamOn 100 diff --git a/examples/extended/analysis/AnaEx01/analysis/Lab/AnaEx01.C b/examples/extended/analysis/AnaEx01/analysis/Lab/AnaEx01.C new file mode 100644 index 0000000000..e1c9586f1e --- /dev/null +++ b/examples/extended/analysis/AnaEx01/analysis/Lab/AnaEx01.C @@ -0,0 +1,20 @@ +// +// To do some analysis over the AnaEx01.root file with the ROOT tool. +// Usage : +// UNIX> root +// root[0] .X AnaEx01.C +// + +{ + TFile* file = new TFile("AnaEx01.root"); + file->ls(); + + TTree* tree = (TTree*)file->Get("/tuples/AnaEx01"); + tree->Print(); + + TCanvas* canvas = new TCanvas("canvas","EAbs",10,10,800,600); + + tree->Draw("EAbs","",""); + + canvas->Update(); +} diff --git a/examples/extended/analysis/AnaEx01/analysis/Lab/session.tcl b/examples/extended/analysis/AnaEx01/analysis/Lab/AnaEx01.py similarity index 53% rename from examples/extended/analysis/AnaEx01/analysis/Lab/session.tcl rename to examples/extended/analysis/AnaEx01/analysis/Lab/AnaEx01.py index 1aea75637c..faef745b83 100644 --- a/examples/extended/analysis/AnaEx01/analysis/Lab/session.tcl +++ b/examples/extended/analysis/AnaEx01/analysis/Lab/AnaEx01.py @@ -24,48 +24,60 @@ #///////////////////////////////////////////////////////////////////////////// #///////////////////////////////////////////////////////////////////////////// # -# Example of tcl script using a root file. +# Example of a Python script using the AnaEx01.root file. # #///////////////////////////////////////////////////////////////////////////// -# If reexecuted : -delete storage -delete v -# -# Get a SWIG handler over the current viewer : -IViewer v -this [ui getCurrentViewer] -v reset page -# -# 2x2 regions : -#v set page "2 2" -v set pageTitle "G4 analysis with Open Scientist" -# -RioStorage storage g4osc.root READ -storage ls -# -delete EAbs -# -#storage cd histograms -#storage ls -# + +# Hook the current plotter : +plotter = Plotter('') + +plotter.createRegions(1,2) +plotter.setParameter('pageTitle','AnaEx01 analysis') + +rootTree = RootTree('AnaEx01.root','READ') +rootTree.ls() + +#///////////////////////////////////////////////////////////////////////////// +# In first region, get and plot the EAbs histo : +#///////////////////////////////////////////////////////////////////////////// + +rootTree.cd('histograms') +rootTree.ls() + # Get some histograms with the H1Get -# builtin procedure defined in Lab/user/init.tcl : -# In the below the first "EAbs" is a variable and -# the second is the name of the object in the storage -# (the SID, storage identifier) : -# H1DGet -H1DGet EAbs storage EAbs -# +# builtin Python procedure (defined in Lab/scripts/Python/Lab_init.py). + +EAbs = H1D_get(rootTree,'EAbs') + # Plot the histo : -EAbs vis -# -v set textContext "color black fontName TTF/couri" -v set histogramContext "color red modeling solid" -# -# Fit : -#delete fitExp -# -#Exponential fitExp 0. 1. -#fitExp fit [& EAbs] -# -#fitExp vis -# +plotter.plot(EAbs) + +#///////////////////////////////////////////////////////////////////////////// +# In second region plot the EAbs histo built from the tuple : +#///////////////////////////////////////////////////////////////////////////// + +rootTree.cd('..') +rootTree.cd('tuples') +rootTree.ls() + +tuple = Tuple("AnaEx01","AnaEx01","",rootTree) + +# Create an histo in the default memory tree : +tuple_EAbs = H1D('tuple_EAbs','AnaEx01/EAbs',100,0,100) + +# Create an Evaluator and a Filter object : +evaluator = Evaluator(tuple,'EAbs') +filter = Filter(tuple,'') + +# Project tuple AnaEx01/EAbs column on the tuple_EAbs histo : +tuple.project(tuple_EAbs,evaluator,filter) + +plotter.next() +plotter.plot(tuple_EAbs) +plotter.setParameter('histogramContext','color red modeling solid') + +# Evaluators and Filters are not managed, delete them explicitly : +delete_IEvaluator(evaluator) +delete_IFilter(filter) + +echo('The two histos must give the same information !') diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01AnalysisManager.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01AnalysisManager.hh index 46fff1c36a..116e5845c7 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01AnalysisManager.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01AnalysisManager.hh @@ -21,36 +21,29 @@ // ******************************************************************** // // -// $Id: AnaEx01AnalysisManager.hh,v 1.3.4.1 2001/06/28 19:06:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01AnalysisManager.hh,v 1.5 2001/11/16 14:30:50 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// Example Analysis Manager implementing virtual function -// RegisterAnalysisSystems. Exploits C-pre-processor variables -// G4ANALYSIS_USE_JAS, etc., which are set by the GNUmakefiles if -// environment variables of the same name are set. - -// So all you have to do is set environment variables and compile and -// instantiate this in your main(). - #ifndef AnaEx01AnalysisManager_h #define AnaEx01AnalysisManager_h 1 #ifdef G4ANALYSIS_USE -#include "G4AnalysisManager.hh" - class G4Run; class G4Event; class G4Step; +class IAnalysisFactory; +class ITree; class IHistogram1D; -//class ITuple; +class ITuple; -class AnaEx01AnalysisManager: public G4AnalysisManager { +class AnaEx01AnalysisManager { public: - AnaEx01AnalysisManager(const G4String&); + AnaEx01AnalysisManager(); + virtual ~AnaEx01AnalysisManager(); public: virtual void BeginOfRun(const G4Run*); virtual void EndOfRun(const G4Run*); @@ -58,12 +51,14 @@ public: virtual void EndOfEvent(const G4Event*); virtual void Step(const G4Step*); private: - G4int fCalorimeterCollID; + int fCalorimeterCollID; + IAnalysisFactory* fAnalysisFactory; + ITree* fTree; IHistogram1D* fEAbs; IHistogram1D* fLAbs; IHistogram1D* fEGap; IHistogram1D* fLGap; - //ITuple* fTuple; + ITuple* fTuple; }; #endif diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01CalorHit.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01CalorHit.hh index 7ffb092550..d058c18640 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01CalorHit.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01CalorHit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01CalorHit.hh,v 1.1.1.1.4.1 2001/06/28 19:06:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01CalorHit.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01CalorimeterSD.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01CalorimeterSD.hh index 2bcb697370..0b31d5e63d 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01CalorimeterSD.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01CalorimeterSD.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01CalorimeterSD.hh,v 1.1.1.1.4.1 2001/06/28 19:06:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01CalorimeterSD.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorConstruction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorConstruction.hh index b41d430503..45b8009e20 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorConstruction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01DetectorConstruction.hh,v 1.1.1.1.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01DetectorConstruction.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorMessenger.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorMessenger.hh index ae162fe697..a64cb5ec84 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorMessenger.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01DetectorMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01DetectorMessenger.hh,v 1.1.1.1.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01DetectorMessenger.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01EventAction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01EventAction.hh index 1ed437c94d..1db5b3a1ac 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01EventAction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01EventAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01EventAction.hh,v 1.3.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01EventAction.hh,v 1.4 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01PhysicsList.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01PhysicsList.hh index 254dd563ef..cc4aadaf49 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01PhysicsList.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01PhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01PhysicsList.hh,v 1.1.1.1.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01PhysicsList.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorAction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorAction.hh index f5c76787f2..1aefdf6b96 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorAction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01PrimaryGeneratorAction.hh,v 1.1.1.1.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01PrimaryGeneratorAction.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorMessenger.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorMessenger.hh index 858bb9fe0a..6f5ac18973 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorMessenger.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01PrimaryGeneratorMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01PrimaryGeneratorMessenger.hh,v 1.1.1.1.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01PrimaryGeneratorMessenger.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01RunAction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01RunAction.hh index 5b94eb91b2..a540ddcc21 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01RunAction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01RunAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01RunAction.hh,v 1.3.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01RunAction.hh,v 1.4 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingAction.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingAction.hh index 2281889c64..c96d114c44 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingAction.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01SteppingAction.hh,v 1.3.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01SteppingAction.hh,v 1.4 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingVerbose.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingVerbose.hh index e25c6c0c22..62cf141663 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingVerbose.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01SteppingVerbose.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01SteppingVerbose.hh,v 1.1.1.1.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01SteppingVerbose.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/analysis/AnaEx01/include/AnaEx01VisManager.hh b/examples/extended/analysis/AnaEx01/include/AnaEx01VisManager.hh index 1a89c7ef3e..0cc49ac175 100644 --- a/examples/extended/analysis/AnaEx01/include/AnaEx01VisManager.hh +++ b/examples/extended/analysis/AnaEx01/include/AnaEx01VisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01VisManager.hh,v 1.1.1.1.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01VisManager.hh,v 1.2 2001/07/11 09:57:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc index db6f2d8901..7b91ed4bfc 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01AnalysisManager.cc,v 1.9.4.1 2001/06/28 19:06:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01AnalysisManager.cc,v 1.11 2001/11/16 14:31:11 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 14th Septembre 2000. @@ -35,54 +35,102 @@ #include "G4Event.hh" #include "G4HCofThisEvent.hh" -#include - -#ifdef G4ANALYSIS_USE_JAS -#include "G4JasSystem.hh" -#endif -#ifdef G4ANALYSIS_USE_LAB -#include "G4LabSystem.hh" -#endif -#ifdef G4ANALYSIS_USE_LIZARD -#include "G4LizardSystem.hh" -#endif +#include +#include +#include +#include +#include +#include +#include #include "AnaEx01CalorHit.hh" #include "AnaEx01AnalysisManager.hh" -AnaEx01AnalysisManager::AnaEx01AnalysisManager( - const G4String& aSystem -) +AnaEx01AnalysisManager::AnaEx01AnalysisManager() :fCalorimeterCollID(-1) +,fAnalysisFactory(0) +,fTree(0) ,fEAbs(0) ,fLAbs(0) ,fEGap(0) ,fLGap(0) +,fTuple(0) { -#ifdef G4ANALYSIS_USE_JAS - RegisterAnalysisSystem(new G4JasSystem); -#endif -#ifdef G4ANALYSIS_USE_LAB - RegisterAnalysisSystem(new G4LabSystem); -#endif -#ifdef G4ANALYSIS_USE_LIZARD - RegisterAnalysisSystem(new G4LizardSystem); -#endif - // The factory and histograms will be deleted by the analysis manager. - IHistogramFactory* hfactory = GetHistogramFactory(aSystem); - if(!hfactory) return; - fEAbs = hfactory->create1D("EAbs",100,0,100); - fLAbs = hfactory->create1D("LAbs",100,0,100); - fEGap = hfactory->create1D("EGap",100,0,10); - fLGap = hfactory->create1D("LGap",100,0,100); + fAnalysisFactory = AIDA_createAnalysisFactory(); + + // Could fail if no AIDA implementation found : + if(!fAnalysisFactory) { + G4cout << "AIDA analysis factory not found." << G4endl; + return; + } + + ITreeFactory* treeFactory = fAnalysisFactory->createTreeFactory(); + if(!treeFactory) { + delete fAnalysisFactory; + fAnalysisFactory = 0; + return; + } + + // Create a "tree" to handle histograms. + // This tree is associated to a ROOT "store" (in RECREATE mode). + fTree = treeFactory->create("AnaEx01.root",false,false,"ROOT"); + + // Factories are not "managed" by an AIDA analysis system. + // They must be deleted by the AIDA user code. + delete treeFactory; + + if(!fTree) { + delete fAnalysisFactory; + fAnalysisFactory = 0; + return; + } + + fTree->mkdir("histograms"); + fTree->cd("histograms"); + + // Create an histo factory that will create histo in the tree : + IHistogramFactory* histoFactory = + fAnalysisFactory->createHistogramFactory(*fTree); + if(histoFactory) { + fEAbs = histoFactory->create1D("EAbs",100,0,100); + fLAbs = histoFactory->create1D("LAbs",100,0,100); + fEGap = histoFactory->create1D("EGap",100,0,10); + fLGap = histoFactory->create1D("LGap",100,0,100); + delete histoFactory; + } + + fTree->cd(".."); + fTree->mkdir("tuples"); + fTree->cd("tuples"); + + // Get a tuple factory : + ITupleFactory* tupleFactory = + fAnalysisFactory->createTupleFactory(*fTree); + if(tupleFactory) { + + // Create a tuple : + fTuple = tupleFactory->create("AnaEx01","AnaEx01","EAbs LAbs EGap LGap"); + + delete tupleFactory; + } + } +AnaEx01AnalysisManager::~AnaEx01AnalysisManager() { + delete fAnalysisFactory; +} + void AnaEx01AnalysisManager::BeginOfRun(const G4Run* aRun){ G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; } void AnaEx01AnalysisManager::EndOfRun(const G4Run*){ - Store(); - //if(fEAbs) Plot(fEAbs); + if(fTree) fTree->commit(); + if(fEAbs) { + G4cout << "Histo : EAbs : mean " << fEAbs->mean() << " rms : " << fEAbs->rms() << G4endl; + G4cout << "Histo : LAbs : mean " << fLAbs->mean() << " rms : " << fLAbs->rms() << G4endl; + G4cout << "Histo : EGap : mean " << fEGap->mean() << " rms : " << fEGap->rms() << G4endl; + G4cout << "Histo : LGap : mean " << fLGap->mean() << " rms : " << fLGap->rms() << G4endl; + } } void AnaEx01AnalysisManager::BeginOfEvent(const G4Event*){ @@ -94,9 +142,9 @@ void AnaEx01AnalysisManager::BeginOfEvent(const G4Event*){ void AnaEx01AnalysisManager::EndOfEvent(const G4Event* aEvent){ if(!fEAbs) return; // No histo booked ! - //if(!fTuple) return; // No tuple booked ! + if(!fTuple) return; // No tuple booked ! - G4int evtNb = aEvent->GetEventID(); + //G4int evtNb = aEvent->GetEventID(); G4HCofThisEvent* HCE = aEvent->GetHCofThisEvent(); AnaEx01CalorHitsCollection* CHC = @@ -104,16 +152,21 @@ void AnaEx01AnalysisManager::EndOfEvent(const G4Event* aEvent){ if(CHC) { G4int n_hit = CHC->entries(); - //G4double totEAbs=0, totLAbs=0, totEGap=0, totLGap=0; for (G4int i=0;iGetEdepAbs(); - //totLAbs += (*CHC)[i]->GetTrakAbs(); - //totEGap += (*CHC)[i]->GetEdepGap(); - //totLGap += (*CHC)[i]->GetTrakGap(); - fEAbs->fill((*CHC)[i]->GetEdepAbs()); - fLAbs->fill((*CHC)[i]->GetTrakAbs()); - fEGap->fill((*CHC)[i]->GetEdepGap()); - fLGap->fill((*CHC)[i]->GetTrakGap()); + G4double EAbs = (*CHC)[i]->GetEdepAbs(); + G4double LAbs = (*CHC)[i]->GetTrakAbs(); + G4double EGap = (*CHC)[i]->GetEdepGap(); + G4double LGap = (*CHC)[i]->GetTrakGap(); + fEAbs->fill(EAbs); + fLAbs->fill(LAbs); + fEGap->fill(EGap); + fLGap->fill(LGap); + + fTuple->fill(0,EAbs); + fTuple->fill(1,LAbs); + fTuple->fill(2,EGap); + fTuple->fill(3,LGap); + fTuple->addRow(); } } diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01CalorHit.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01CalorHit.cc index 0d8377c487..3a5b6f1747 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01CalorHit.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01CalorHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01CalorHit.cc,v 1.1.1.1.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01CalorHit.cc,v 1.3 2001/11/16 14:31:11 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01CalorimeterSD.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01CalorimeterSD.cc index 7d62a0c62e..500a3b6510 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01CalorimeterSD.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01CalorimeterSD.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01CalorimeterSD.cc,v 1.1.1.1.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01CalorimeterSD.cc,v 1.3 2001/11/16 14:31:12 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorConstruction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorConstruction.cc index dffcaf7f18..b579b40ec6 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorConstruction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorConstruction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01DetectorConstruction.cc,v 1.1.1.1.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01DetectorConstruction.cc,v 1.3 2001/11/16 14:31:12 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorMessenger.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorMessenger.cc index 01053fe8b8..99d8854e62 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorMessenger.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01DetectorMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01DetectorMessenger.cc,v 1.1.1.1.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01DetectorMessenger.cc,v 1.3 2001/11/16 14:31:12 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01EventAction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01EventAction.cc index 0919d1f8ba..e0a2833ac5 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01EventAction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01EventAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01EventAction.cc,v 1.3.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01EventAction.cc,v 1.5 2001/11/16 14:31:12 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01PhysicsList.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01PhysicsList.cc index b1f7bd342b..cac87754de 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01PhysicsList.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01PhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01PhysicsList.cc,v 1.1.1.1.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01PhysicsList.cc,v 1.3 2001/11/16 14:31:13 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorAction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorAction.cc index 8cab144223..1cac0eb516 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorAction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01PrimaryGeneratorAction.cc,v 1.1.1.1.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01PrimaryGeneratorAction.cc,v 1.3 2001/11/16 14:31:13 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorMessenger.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorMessenger.cc index 4d2de16a59..c6223cb34d 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorMessenger.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01PrimaryGeneratorMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01PrimaryGeneratorMessenger.cc,v 1.1.1.1.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01PrimaryGeneratorMessenger.cc,v 1.3 2001/11/16 14:31:13 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01RunAction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01RunAction.cc index 9d03456ae5..bbf6ffd370 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01RunAction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01RunAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01RunAction.cc,v 1.3.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01RunAction.cc,v 1.5 2001/11/16 14:31:13 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingAction.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingAction.cc index 41cbc5b978..0f4ff84e5a 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingAction.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01SteppingAction.cc,v 1.3.4.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01SteppingAction.cc,v 1.5 2001/11/16 14:31:13 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingVerbose.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingVerbose.cc index 4a9b8efbdd..b03d9aaddf 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingVerbose.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01SteppingVerbose.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01SteppingVerbose.cc,v 1.2.2.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01SteppingVerbose.cc,v 1.4 2001/11/16 14:31:13 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01VisManager.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01VisManager.cc index 4261fc7f2b..2f8059b112 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01VisManager.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01VisManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: AnaEx01VisManager.cc,v 1.2.2.1 2001/06/28 19:06:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: AnaEx01VisManager.cc,v 1.4 2001/11/15 13:09:52 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. @@ -36,18 +36,21 @@ // Supported drivers... -#ifdef G4VIS_USE_ASCIITREE +// Not needing external packages or libraries... #include "G4ASCIITree.hh" -#endif +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -76,20 +79,11 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYTRACER -#include "G4RayTracer.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... AnaEx01VisManager::AnaEx01VisManager () {} @@ -98,18 +92,21 @@ AnaEx01VisManager::AnaEx01VisManager () {} void AnaEx01VisManager::RegisterGraphicsSystems () { -#ifdef G4VIS_USE_ASCIITREE + // Graphics Systems not needing external packages or libraries... RegisterGraphicsSystem (new G4ASCIITree); -#endif + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -138,20 +135,11 @@ void AnaEx01VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYTRACER - RegisterGraphicsSystem (new G4RayTracer); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." diff --git a/examples/extended/electromagnetic/TestEm1/GNUmakefile b/examples/extended/electromagnetic/TestEm1/GNUmakefile index 0ec28464bd..8bd0b5eadb 100644 --- a/examples/extended/electromagnetic/TestEm1/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm1/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.5 2001/02/21 14:00:33 maire Exp $ +# $Id: GNUmakefile,v 1.6 2001/11/29 11:28:06 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -25,3 +25,7 @@ else endif include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* diff --git a/examples/extended/electromagnetic/TestEm1/History b/examples/extended/electromagnetic/TestEm1/History index 426ce1a234..5512515889 100644 --- a/examples/extended/electromagnetic/TestEm1/History +++ b/examples/extended/electromagnetic/TestEm1/History @@ -1,4 +1,4 @@ -$Id: History,v 1.11 2001/03/27 08:34:07 maire Exp $ +$Id: History,v 1.15 2001/11/29 11:28:06 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,64 +15,82 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- -27-03-01 mma (testem1-V03-00-05) - - set cppflag G4NOHIST = true in gnumakefile +29-11-01 mma (testem1-V03-02-02) +- EventAction: DrawTrack "none" +- small change in vis.mac +- suppression of the rndm commands, now managed by G4RunManager: + --> RunAction, EventAction. suppression of RunActionMessenger + +31-10-01 mma (testem1-V03-02-01) +- PhysicsListMessenger: commands CutE, CutG, CutP avaiblable in PreInit +- in all macros: set cuts before run/initialize + +26-10-01 mma (testem1-V03-02-00) +- mods in TestEm1.cc: the initialisation and vis initialisation are + not done gy default. --> inserted /run/initialize in all macros. +- To get visualisation: > /control/execute vis.mac (new vis commands) +- 80 columns everywhere + +19-10-01 Steve O'Neale (examples-V03-02-00) +- Update reference output + +27-03-01 mma (testem1-V03-00-05) +- set cppflag G4NOHIST = true in gnumakefile -08-03-01 Hisaya (testem1-V03-00-04) - - adapted ProcessesCount to STL +08-03-01 Hisaya (testem1-V03-00-04) +- adapted ProcessesCount to STL -21-02-01 mma (testem1-V03-00-03) - - hbook histograms restored +21-02-01 mma (testem1-V03-00-03) +- hbook histograms restored -20-02-01 mma (testem1-V03-00-02) - - verbose stepping adapted for STL - - save rndm at begin of event +20-02-01 mma (testem1-V03-00-02) +- verbose stepping adapted for STL +- save rndm at begin of event -07-12-00 mma (testem1-V02-00-03 & testem-noHist) - remove hbook histograms: GNUmakefile,runAction,trackingAction, - steppingAction +07-12-00 mma (testem1-V02-00-03 & testem-noHist) +- remove hbook histograms: GNUmakefile,runAction,trackingAction,steppingAction -06-12-00 mma (testem1-V02-00-02 & testem-withHist) - update of init.mac for new vis commands. - G4UItcsh in the main() +06-12-00 mma (testem1-V02-00-02 & testem-withHist) +- update of init.mac for new vis commands. +- G4UItcsh in the main() -24-11-00 Steve O'Neale (tagset210) (testem1-V02-00-01) - Update test output Change in processes below ~ 5 per cent - eIoni and hIoni min.delta energy(keV) and energy cut table +24-11-00 Steve O'Neale (tagset210) (testem1-V02-00-01) +- Update test output Change in processes below ~ 5 per cent + eIoni and hIoni min.delta energy(keV) and energy cut table -13-11-00 G.Cosmo (testem1-V02-00-00) - Fixed memory leak in Em1RunAction: added call to clearAndDestroy() - in EndOfRunAction() to clean ProcCounter vector. +13-11-00 G.Cosmo (testem1-V02-00-00) +- Fixed memory leak in Em1RunAction: added call to clearAndDestroy() + in EndOfRunAction() to clean ProcCounter vector. -17-06-00 J.Allison (testem1-V01-00-00) - Updated TestEm1.out for geant4-01-01-ref-06. +17-06-00 J.Allison (testem1-V01-00-00) +- Updated TestEm1.out for geant4-01-01-ref-06. -21-01-00 cppflag G4NOHIST to protect hbook histograms. +21-01-00 cppflag G4NOHIST to protect hbook histograms. -11-10-99 moved from: source/processes/electromagnetic/test - to: examples/extended/electromagnetic +11-10-99 moved from: source/processes/electromagnetic/test + to: examples/extended/electromagnetic -09-08-99 Commands for save/read Rndm status +09-08-99 Commands for save/read Rndm status -17-06-99 added histogramming facility +17-06-99 added histogramming facility -10-05-99 user's actions adapted to geant4-00-ref-04 +10-05-99 user's actions adapted to geant4-00-ref-04 -03-12-98 subdirectory geant3 which contains the geant3 equivalent - example. +03-12-98 subdirectory geant3 which contains the geant3 equivalent + example. -24.11.98 due to new computation of SetCut for electron, the cut in range - for e-/+ has been modified in init.mac and run10.mac (beta03-00) +24.11.98 due to new computation of SetCut for electron, the cut in range + for e-/+ has been modified in init.mac and run10.mac (beta03-00) -27.10.98 interactive command for setting StepFunction: deemax + stmin. - modifs in setxxCut functions (Hisaya). - Count occurence of processes. - Now TestEm1 is equivalent to g3-testem1 - Both can be run in batch with reference files: - run1.mac (g4), run1.dat (g3). +27.10.98 interactive command for setting StepFunction: deemax + stmin. + modifs in setxxCut functions (Hisaya). + Count occurence of processes. + Now TestEm1 is equivalent to g3-testem1 + Both can be run in batch with reference files: + run1.mac (g4), run1.dat (g3). -19.10.98 Moved in subdirectory electromagnetic/test/TestEm1. - Interactive commands in PhysicsList for setting cuts. +19.10.98 Moved in subdirectory electromagnetic/test/TestEm1. + Interactive commands in PhysicsList for setting cuts. -14.09.98 Created, Michel Maire +14.09.98 Created, Michel Maire diff --git a/examples/extended/electromagnetic/TestEm1/README b/examples/extended/electromagnetic/TestEm1/README index c3da6e8653..1eaf0b0835 100644 --- a/examples/extended/electromagnetic/TestEm1/README +++ b/examples/extended/electromagnetic/TestEm1/README @@ -1,4 +1,4 @@ -$Id: README,v 1.3 2001/03/30 12:41:27 gcosmo Exp $ +$Id: README,v 1.4 2001/10/26 12:51:21 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -49,9 +49,9 @@ $Id: README,v 1.3 2001/03/30 12:41:27 gcosmo Exp $ 4- VISUALIZATION The Visualization Manager is set in the main(). - The initialisation of the drawing is done via the command - /vis~/create_view in the macro init.mac. This macro is - automatically read from the main in case of interactive running mode. + The initialisation of the drawing is done via the commands + /vis/... in the macro vis.mac. To get visualisation: + > /control/execute vis.mac The detector has a default view which is a longitudinal view of the box. diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.cc b/examples/extended/electromagnetic/TestEm1/TestEm1.cc index 3b3bcca7bc..19859f7abe 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.cc +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: TestEm1.cc,v 1.4.4.1 2001/06/28 19:06:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: TestEm1.cc,v 1.7 2001/11/29 11:28:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #define Em1NoOptimize 1 @@ -51,7 +51,7 @@ #endif #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int main(int argc,char** argv) { @@ -82,14 +82,11 @@ int main(int argc,char** argv) { Em1EventAction* EvtAct; runManager->SetUserAction(RunAct = new Em1RunAction); - runManager->SetUserAction(EvtAct = new Em1EventAction(RunAct)); + runManager->SetUserAction(EvtAct = new Em1EventAction); runManager->SetUserAction(new Em1TrackingAction(RunAct)); runManager->SetUserAction(new Em1SteppingAction(RunAct,EvtAct)); #endif - - //Initialize G4 kernel - runManager->Initialize(); - + // get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); @@ -101,7 +98,6 @@ int main(int argc,char** argv) { #else session = new G4UIterminal(); #endif - UI->ApplyCommand("/control/execute init.mac"); session->SessionStart(); delete session; } @@ -124,4 +120,4 @@ int main(int argc,char** argv) { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.in b/examples/extended/electromagnetic/TestEm1/TestEm1.in index c9921e26ec..9cdb332463 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.in +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.in @@ -1,4 +1,4 @@ -# $Id: TestEm1.in,v 1.1 2000/01/21 14:58:58 maire Exp $ +# $Id: TestEm1.in,v 1.3 2001/10/31 15:49:30 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,13 +7,14 @@ # /control/verbose 2 # -/process/eLoss/StepFunction 0.183 170 micrometer /calor/cutG 2.20 mm -/calor/cutE 6.05 mum +/calor/cutE 6.05 mum +# /run/initialize # +/process/eLoss/StepFunction 0.183 170 micrometer +# /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 100 MeV diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.out b/examples/extended/electromagnetic/TestEm1/TestEm1.out index 013c284ea3..0044a82884 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.out +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.out @@ -1,8 +1,26 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) +# +/calor/cutG 2.20 mm +/calor/cutE 6.05 mum +# +/run/initialize ***** Table : Nb of materials = 9 ***** @@ -45,148 +63,71 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. Good description from 1 KeV to 100 GeV. log scale extrapolation above 100 GeV Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. hIoni: Knock-on electron cross sections . Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. - -MuBrems: theoretical cross section - Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. - -MuPairProd: theoretical cross sections - Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. -============= The cut Energy ============================== - gamma e- -Cut in range 1 mm 1 mm -Cut in energy - Air 990 eV 990 eV - H2liquid 990 eV 108 keV - Water 2.9 keV 347 keV - liquidArgon 6.18 keV 343 keV - Aluminium 6.89 keV 597 keV - Silicon 6.89 keV 541 keV - Iron 20.8 keV 1.28 MeV - Lead 101 keV 1.38 MeV - Uranium 110 keV 1.92 MeV -=================================================== -# $Id: TestEm1.out,v 1.15 2001/04/26 12:33:03 stesting Exp $ -# -# Macro file for "TestEm1.cc" -# (can be run in batch, without graphic) -# -# electron 100 MeV; all processes -# -# -/process/eLoss/StepFunction 0.183 170 micrometer -/calor/cutG 2.20 mm -/calor/cutE 6.05 mum -/run/initialize -Em1PhysicsList::SetCuts:CutLength : 1 (mm) - -phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z - Sandia crossSection below 50 KeV - PhysicsTables from 50 keV to 50 MeV in 100 bins. - -compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. - -conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. - e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. - -eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. - Good description from 1 KeV to 100 GeV. - log scale extrapolation above 100 GeV - Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. - -annihil: Total cross section from Heilter formula (annihilation into 2 photons). - gamma energies sampled according Heitler - PhysicsTables from 10 keV to 10 TeV in 100 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -hIoni: Knock-on electron cross sections . +MuIoni: Knock-on electron cross sections . Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuPairProd: theoretical cross sections Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- -Cut in range 2.2 mm 6.05 mum +Cut in range + Air 2.2 mm 6.05 mum + H2liquid 2.2 mm 6.05 mum + Water 2.2 mm 6.05 mum + liquidArgon 2.2 mm 6.05 mum + Aluminium 2.2 mm 6.05 mum + Silicon 2.2 mm 6.05 mum + Iron 2.2 mm 6.05 mum + Lead 2.2 mm 6.05 mum + Uranium 2.2 mm 6.05 mum Cut in energy Air 990 eV 990 eV H2liquid 990 eV 990 eV @@ -199,8 +140,9 @@ Cut in energy Uranium 143 keV 53.4 keV =================================================== # +/process/eLoss/StepFunction 0.183 170 micrometer +# /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 100 MeV @@ -212,25 +154,31 @@ Cut in energy Current couple of seeds = 9876, 54321 ---------------------------------------- Start closing geometry. +G4GeometryManager::ReportVoxelStats -- Voxel Statistics + + Total memory consumed for geometry optimisation: 0 kByte + Total CPU time elapsed for geometry optimisation: 0 seconds Start Run processing. ---> Begin of Event: 0 Run terminated. Run Summary Number of events processed : 100 - User=53s Real=58s Sys=5.3s + User=16s Real=19s Sys=2.6s - nb tracks/event neutral: 28.25 charged: 664.76 - nb steps/event neutral: 148.67 charged: 2195.14 + nb tracks/event neutral: 27.29 charged: 692.97 + nb steps/event neutral: 145.49 charged: 1331.63 nb of process calls per event: eIoni eBrem compt phot conv annihil - 2168.25 25.46 120.42 26.82 1.43 1.43 + 1305.51 24.92 118.20 26.09 1.20 1.20 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1296175024, 1662236208 + Current couple of seeds = 640041358, 1353064269 ---------------------------------------- +Graphics systems deleted. +Visualization Manager deleting... G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1DetectorConstruction.hh index be221e8ed5..004abc208a 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1DetectorConstruction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1DetectorConstruction.hh,v 1.2.4.1 2001/06/28 19:06:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1DetectorConstruction.hh,v 1.4 2001/10/26 12:51:23 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1DetectorConstruction_h #define Em1DetectorConstruction_h 1 @@ -40,7 +40,7 @@ class G4Material; class G4UniformMagField; class Em1DetectorMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1DetectorConstruction : public G4VUserDetectorConstruction { @@ -86,7 +86,7 @@ class Em1DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* ConstructVolumes(); }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/Em1DetectorMessenger.hh index cd5bc9adeb..052f588cd8 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1DetectorMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1DetectorMessenger.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1DetectorMessenger.hh,v 1.4 2001/10/26 12:51:23 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1DetectorMessenger_h #define Em1DetectorMessenger_h 1 @@ -41,7 +41,7 @@ class G4UIcmdWithAString; class G4UIcmdWithADoubleAndUnit; class G4UIcmdWithoutParameter; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1DetectorMessenger: public G4UImessenger { @@ -63,5 +63,7 @@ class Em1DetectorMessenger: public G4UImessenger G4UIcmdWithoutParameter* UpdateCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1EventAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1EventAction.hh index 97266d7934..a17fe7b16d 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1EventAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1EventAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1EventAction.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1EventAction.hh,v 1.5 2001/11/29 11:28:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1EventAction_h #define Em1EventAction_h 1 @@ -35,15 +35,14 @@ #include "G4UserEventAction.hh" #include "globals.hh" -class Em1RunAction; class Em1EventActionMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1EventAction : public G4UserEventAction { public: - Em1EventAction(Em1RunAction*); + Em1EventAction(); ~Em1EventAction(); public: @@ -57,13 +56,14 @@ class Em1EventAction : public G4UserEventAction private: - Em1RunAction* Em1Run; G4double TotalEnergyDeposit; G4String drawFlag; G4int printModulo; Em1EventActionMessenger* eventMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/Em1EventActionMessenger.hh index 0a32424ff1..9db219d117 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1EventActionMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1EventActionMessenger.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1EventActionMessenger.hh,v 1.4 2001/10/26 12:51:23 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1EventActionMessenger_h #define Em1EventActionMessenger_h 1 @@ -39,7 +39,7 @@ class Em1EventAction; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1EventActionMessenger: public G4UImessenger { @@ -55,4 +55,6 @@ class Em1EventActionMessenger: public G4UImessenger G4UIcmdWithAnInteger* PrintCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsList.hh b/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsList.hh index cafb46dd52..83b60ae25d 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsList.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1PhysicsList.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1PhysicsList.hh,v 1.4 2001/10/26 12:51:23 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1PhysicsList_h #define Em1PhysicsList_h 1 @@ -38,7 +38,7 @@ class Em1DetectorConstruction; class Em1PhysicsListMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1PhysicsList: public G4VUserPhysicsList { @@ -78,5 +78,7 @@ class Em1PhysicsList: public G4VUserPhysicsList }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsListMessenger.hh index 7c442564c3..cd3097131a 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1PhysicsListMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1PhysicsListMessenger.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1PhysicsListMessenger.hh,v 1.4 2001/10/26 12:51:23 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1PhysicsListMessenger_h #define Em1PhysicsListMessenger_h 1 @@ -38,7 +38,7 @@ class Em1PhysicsList; class G4UIcmdWithADoubleAndUnit; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1PhysicsListMessenger: public G4UImessenger { @@ -57,4 +57,6 @@ class Em1PhysicsListMessenger: public G4UImessenger G4UIcmdWithADoubleAndUnit* eCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1PrimaryGeneratorAction.hh index 31adb99769..618c987901 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1PrimaryGeneratorAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1PrimaryGeneratorAction.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1PrimaryGeneratorAction.hh,v 1.4 2001/10/26 12:51:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1PrimaryGeneratorAction_h #define Em1PrimaryGeneratorAction_h 1 @@ -38,8 +38,7 @@ class G4ParticleGun; class G4Event; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { @@ -54,6 +53,8 @@ class Em1PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction G4ParticleGun* particleGun; //pointer a to G4 service class }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1RunAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1RunAction.hh index 90a35d6f8a..16d03502df 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1RunAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1RunAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1RunAction.hh,v 1.5.2.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1RunAction.hh,v 1.8 2001/11/29 11:28:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1RunAction_h #define Em1RunAction_h 1 @@ -36,10 +36,9 @@ #include "ProcessesCount.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4Run; -class Em1RunActionMessenger; #ifndef G4NOHIST class HepTupleManager; @@ -61,11 +60,7 @@ class Em1RunAction : public G4UserRunAction void CountSteps0(G4int ns) { NbOfSteps0 += ns;} void CountSteps1(G4int ns) { NbOfSteps1 += ns;} void CountProcesses(G4String); - - public: - void SetRndmFreq(G4int val) {saveRndm = val;} - G4int GetRndmFreq() {return saveRndm;} - + #ifndef G4NOHIST HepHistogram* GetHisto(G4int id) {return histo[id];} #endif @@ -77,16 +72,15 @@ class Em1RunAction : public G4UserRunAction private: G4int NbOfTraks0, NbOfTraks1; G4int NbOfSteps0, NbOfSteps1; - ProcessesCount* ProcCounter; + ProcessesCount* ProcCounter; - Em1RunActionMessenger* runMessenger; - G4int saveRndm; - #ifndef G4NOHIST HepTupleManager* hbookManager; HepHistogram* histo[3]; #endif }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1SteppingAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1SteppingAction.hh index b6be8a8f73..7cd425974f 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1SteppingAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1SteppingAction.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1SteppingAction.hh,v 1.4 2001/10/26 12:51:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1SteppingAction_h #define Em1SteppingAction_h 1 @@ -37,7 +37,7 @@ class Em1RunAction; class Em1EventAction; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1SteppingAction : public G4UserSteppingAction { @@ -52,4 +52,6 @@ class Em1SteppingAction : public G4UserSteppingAction Em1EventAction* eventAction; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm1/include/Em1SteppingVerbose.hh index ca245b24e1..9f37b32c3d 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1SteppingVerbose.hh @@ -21,22 +21,22 @@ // ******************************************************************** // // -// $Id: Em1SteppingVerbose.hh,v 1.5.2.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1SteppingVerbose.hh,v 1.7 2001/10/26 12:51:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. // It shows how to extract informations during the tracking of a particle. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1SteppingVerbose_h #define Em1SteppingVerbose_h 1 #include "G4SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1SteppingVerbose : public G4SteppingVerbose { @@ -50,4 +50,6 @@ public: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1TrackingAction.hh b/examples/extended/electromagnetic/TestEm1/include/Em1TrackingAction.hh index eca10d9a15..b05fc1f88d 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1TrackingAction.hh @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: Em1TrackingAction.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1TrackingAction.hh,v 1.4 2001/10/26 12:51:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // - +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1TrackingAction_h #define Em1TrackingAction_h 1 @@ -33,7 +34,7 @@ class Em1RunAction; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1TrackingAction : public G4UserTrackingAction { @@ -47,4 +48,6 @@ class Em1TrackingAction : public G4UserTrackingAction { Em1RunAction* runAction; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1VisManager.hh b/examples/extended/electromagnetic/TestEm1/include/Em1VisManager.hh index e12ad97564..32e51e227e 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1VisManager.hh +++ b/examples/extended/electromagnetic/TestEm1/include/Em1VisManager.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1VisManager.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1VisManager.hh,v 1.4 2001/10/26 12:51:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Example Visualization Manager implementing virtual function // RegisterGraphicsSystems. Exploits C-pre-processor variables @@ -42,14 +42,14 @@ // G4VisManager* myVisManager = new MyVisManager; // myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em1VisManager_h #define Em1VisManager_h 1 #include "G4VisManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em1VisManager: public G4VisManager { @@ -63,4 +63,6 @@ private: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh b/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh index bf893fc58e..430bd341ba 100644 --- a/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh +++ b/examples/extended/electromagnetic/TestEm1/include/ProcessesCount.hh @@ -21,16 +21,16 @@ // ******************************************************************** // // -// $Id: ProcessesCount.hh,v 1.5.2.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ProcessesCount.hh,v 1.7 2001/10/26 12:51:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 08.03.01 Hisaya: adapted for STL // 26.10.98 mma : first version -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ProcessesCount_HH #define ProcessesCount_HH @@ -38,7 +38,7 @@ #include "globals.hh" #include "g4std/vector" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class OneProcessCount { @@ -56,8 +56,7 @@ private: G4int Counter; // process counter }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... typedef G4std::vector ProcessesCount; diff --git a/examples/extended/electromagnetic/TestEm1/init.mac b/examples/extended/electromagnetic/TestEm1/init.mac deleted file mode 100644 index 77d115cd7e..0000000000 --- a/examples/extended/electromagnetic/TestEm1/init.mac +++ /dev/null @@ -1,36 +0,0 @@ -# -# Macro file for the initialization phase of "TestEm1.cc" -# -# Sets some default verbose -# and initializes the graphic. -# -/control/verbose 2 -/run/verbose 2 -# -####/run/initialize -# -####/process/eLoss/StepFunction 0.183 170 micrometer -####/calor/cutG 2.2 mm -####/calor/cutE 1.4 micrometer #before beta03-00 (17.11.98) -####/calor/cutE 6.05 micrometer #from beta03-00 (17.11.98) -####/run/initialize -####/run/particle/dumpCutValues -# -# Create empty scene ("world" is default) -/vis/scene/create -# -# Create a scene handler for a specific graphics system -# Edit the next line(s) to choose another graphic system -# -#/vis/open DAWNFILE -/vis/open OGLIX -# -# Draw scene -/vis/camera/zoom 1.4 -/vis/drawVolume -# -# for drawing the tracks -# if too many tracks cause core dump => storeTrajectory 0 -/tracking/storeTrajectory 1 -/event/drawTracks all - diff --git a/examples/extended/electromagnetic/TestEm1/run00.mac b/examples/extended/electromagnetic/TestEm1/run00.mac index 9cea2ae3dc..af20beec93 100644 --- a/examples/extended/electromagnetic/TestEm1/run00.mac +++ b/examples/extended/electromagnetic/TestEm1/run00.mac @@ -1,4 +1,4 @@ -# $Id: run00.mac,v 1.1 1999/10/11 13:07:25 maire Exp $ +# $Id: run00.mac,v 1.2 2001/10/26 12:51:21 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -10,7 +10,6 @@ /run/initialize # /run/verbose 2 -/event/drawTracks none # /gun/particle geantino /gun/energy 1 GeV diff --git a/examples/extended/electromagnetic/TestEm1/run01.mac b/examples/extended/electromagnetic/TestEm1/run01.mac index 1861a07280..616c4a2587 100644 --- a/examples/extended/electromagnetic/TestEm1/run01.mac +++ b/examples/extended/electromagnetic/TestEm1/run01.mac @@ -1,4 +1,4 @@ -# $Id: run01.mac,v 1.1 1999/10/11 13:07:26 maire Exp $ +# $Id: run01.mac,v 1.3 2001/10/31 15:36:43 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,22 +7,20 @@ # /control/verbose 2 # -/run/initialize -# -/process/eLoss/StepFunction 0.183 170 micrometer /calor/cutG 95 cm /calor/cutE 95 cm +# /run/initialize -/run/particle/dumpCutValues # /process/inactivate phot /process/inactivate compt /process/inactivate conv /process/inactivate msc +# +/process/eLoss/StepFunction 0.183 170 micrometer /process/eLoss/fluct 0 # /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 1 GeV diff --git a/examples/extended/electromagnetic/TestEm1/run02.mac b/examples/extended/electromagnetic/TestEm1/run02.mac index 9e9e684a08..302551df33 100644 --- a/examples/extended/electromagnetic/TestEm1/run02.mac +++ b/examples/extended/electromagnetic/TestEm1/run02.mac @@ -1,4 +1,4 @@ -# $Id: run02.mac,v 1.1 1999/10/11 13:07:26 maire Exp $ +# $Id: run02.mac,v 1.3 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,22 +7,20 @@ # /control/verbose 2 # -/run/initialize -# -/process/eLoss/StepFunction 0.183 170 micrometer /calor/cutG 95 cm /calor/cutE 95 cm +# /run/initialize -/run/particle/dumpCutValues # /process/inactivate phot /process/inactivate compt /process/inactivate conv /process/inactivate msc +# +/process/eLoss/StepFunction 0.183 170 micrometer /process/eLoss/fluct 1 # /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 1 GeV diff --git a/examples/extended/electromagnetic/TestEm1/run03.mac b/examples/extended/electromagnetic/TestEm1/run03.mac index 263de3bdfa..efa3180062 100644 --- a/examples/extended/electromagnetic/TestEm1/run03.mac +++ b/examples/extended/electromagnetic/TestEm1/run03.mac @@ -1,4 +1,4 @@ -# $Id: run03.mac,v 1.1 1999/10/11 13:07:26 maire Exp $ +# $Id: run03.mac,v 1.3 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,21 +7,19 @@ # /control/verbose 2 # -/run/initialize -# -/process/eLoss/StepFunction 0.183 170 micrometer /calor/cutG 95 cm /calor/cutE 95 cm +# /run/initialize -/run/particle/dumpCutValues # /process/inactivate phot /process/inactivate compt /process/inactivate conv +# +/process/eLoss/StepFunction 0.183 170 micrometer /process/eLoss/fluct 0 # /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 10 MeV diff --git a/examples/extended/electromagnetic/TestEm1/run04.mac b/examples/extended/electromagnetic/TestEm1/run04.mac index 4709c21c1a..46ffef6cf1 100644 --- a/examples/extended/electromagnetic/TestEm1/run04.mac +++ b/examples/extended/electromagnetic/TestEm1/run04.mac @@ -1,4 +1,4 @@ -# $Id: run04.mac,v 1.2 2000/12/06 13:21:49 maire Exp $ +# $Id: run04.mac,v 1.4 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,12 +7,9 @@ # /control/verbose 2 # -/run/initialize -# -/process/eLoss/StepFunction 0.183 170 micrometer /calor/cutG 95 cm -#/calor/cutE 6.05 micrometer /calor/cutE 100. micrometer +# /run/initialize # /process/inactivate phot @@ -20,8 +17,9 @@ /process/inactivate conv /process/inactivate msc # +/process/eLoss/StepFunction 0.183 170 micrometer +# /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 100 MeV diff --git a/examples/extended/electromagnetic/TestEm1/run05.mac b/examples/extended/electromagnetic/TestEm1/run05.mac index 0cf2968c83..0cd9181f2e 100644 --- a/examples/extended/electromagnetic/TestEm1/run05.mac +++ b/examples/extended/electromagnetic/TestEm1/run05.mac @@ -1,4 +1,4 @@ -# $Id: run05.mac,v 1.1 1999/10/11 13:07:27 maire Exp $ +# $Id: run05.mac,v 1.3 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,21 +7,19 @@ # /control/verbose 2 # -/run/initialize -# -/process/eLoss/StepFunction 0.183 170 micrometer /calor/cutG 2.2 mm /calor/cutE 95 cm +# /run/initialize -/run/particle/dumpCutValues # /process/inactivate phot /process/inactivate compt /process/inactivate conv /process/inactivate msc # +/process/eLoss/StepFunction 0.183 170 micrometer +# /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 1 GeV diff --git a/examples/extended/electromagnetic/TestEm1/run06.mac b/examples/extended/electromagnetic/TestEm1/run06.mac index 0911d2c92b..3ad33fe0dd 100644 --- a/examples/extended/electromagnetic/TestEm1/run06.mac +++ b/examples/extended/electromagnetic/TestEm1/run06.mac @@ -1,4 +1,4 @@ -# $Id: run06.mac,v 1.1 1999/10/11 13:07:27 maire Exp $ +# $Id: run06.mac,v 1.3 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,19 +7,17 @@ # /control/verbose 2 # -/run/initialize -# -/process/eLoss/StepFunction 0.183 170 micrometer /calor/cutG 95 cm /calor/cutE 95 cm +# /run/initialize -/run/particle/dumpCutValues # /process/inactivate conv /process/inactivate msc # +/process/eLoss/StepFunction 0.183 170 micrometer +# /run/verbose 2 -/event/drawTracks none # /gun/particle gamma /gun/energy 10 MeV diff --git a/examples/extended/electromagnetic/TestEm1/run07.mac b/examples/extended/electromagnetic/TestEm1/run07.mac index 1ecabc6e5e..251728ab48 100644 --- a/examples/extended/electromagnetic/TestEm1/run07.mac +++ b/examples/extended/electromagnetic/TestEm1/run07.mac @@ -1,4 +1,4 @@ -# $Id: run07.mac,v 1.1 1999/10/11 13:07:27 maire Exp $ +# $Id: run07.mac,v 1.3 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,20 +7,18 @@ # /control/verbose 2 # -/run/initialize -# -/process/eLoss/StepFunction 0.183 170 micrometer /calor/cutG 95 cm /calor/cutE 30 mm +# /run/initialize -/run/particle/dumpCutValues # /process/inactivate phot /process/inactivate compt /process/inactivate msc # +/process/eLoss/StepFunction 0.183 170 micrometer +# /run/verbose 2 -/event/drawTracks none # /gun/particle gamma /gun/energy 100 MeV diff --git a/examples/extended/electromagnetic/TestEm1/run08.mac b/examples/extended/electromagnetic/TestEm1/run08.mac index be4f2d6319..0a714db4c0 100644 --- a/examples/extended/electromagnetic/TestEm1/run08.mac +++ b/examples/extended/electromagnetic/TestEm1/run08.mac @@ -1,4 +1,4 @@ -# $Id: run08.mac,v 1.1 1999/10/11 13:07:28 maire Exp $ +# $Id: run08.mac,v 1.3 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,17 +7,14 @@ # /control/verbose 2 # -/run/initialize +/calor/cutG 2.2 mm +/calor/cutE 6.05 micrometer +# +/run/initialize # /process/eLoss/StepFunction 0.183 170 micrometer -/calor/cutG 2.2 mm -####/calor/cutE 1.4 micrometer #before beta03-00 (17.11.98) -/calor/cutE 6.05 micrometer #from beta03-00 (17.11.98) -/run/initialize -/run/particle/dumpCutValues # /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 100 MeV diff --git a/examples/extended/electromagnetic/TestEm1/run09.mac b/examples/extended/electromagnetic/TestEm1/run09.mac index cb1cdab909..d1444ee31d 100644 --- a/examples/extended/electromagnetic/TestEm1/run09.mac +++ b/examples/extended/electromagnetic/TestEm1/run09.mac @@ -1,4 +1,4 @@ -# $Id: run09.mac,v 1.1 1999/10/11 13:07:28 maire Exp $ +# $Id: run09.mac,v 1.3 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -7,17 +7,14 @@ # /control/verbose 2 # +/calor/cutG 2.2 mm +/calor/cutE 6.05 micrometer +# /run/initialize # -/process/eLoss/StepFunction 0.183 170 micrometer -/calor/cutG 2.2 mm -####/calor/cutE 1.4 micrometer #before beta03-00 (17.11.98) -/calor/cutE 6.05 micrometer #from beta03-00 (17.11.98) -/run/initialize -/run/particle/dumpCutValues +/process/eLoss/StepFunction 0.183 170 micrometer # /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 1 GeV diff --git a/examples/extended/electromagnetic/TestEm1/run11.mac b/examples/extended/electromagnetic/TestEm1/run11.mac index c94a985a0c..73af9a7fcf 100644 --- a/examples/extended/electromagnetic/TestEm1/run11.mac +++ b/examples/extended/electromagnetic/TestEm1/run11.mac @@ -1,4 +1,4 @@ -# $Id: run11.mac,v 1.1 1999/10/11 13:07:29 maire Exp $ +# $Id: run11.mac,v 1.3 2001/10/31 15:36:44 maire Exp $ # # Macro file for "TestEm1.cc" # (can be run in batch, without graphic) @@ -9,10 +9,10 @@ # /calor/cutG 95 cm /calor/cutE 17 cm +# /run/initialize # /run/verbose 2 -/event/drawTracks none # /gun/particle e- /gun/energy 1 GeV diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1DetectorConstruction.cc index b2706a6b43..ceedc7795c 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1DetectorConstruction.cc @@ -22,13 +22,13 @@ // // -// $Id: Em1DetectorConstruction.cc,v 1.4.4.1 2001/06/28 19:06:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1DetectorConstruction.cc,v 1.7 2001/11/29 11:28:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1DetectorConstruction.hh" #include "Em1DetectorMessenger.hh" @@ -49,23 +49,23 @@ #include "G4UnitsTable.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1DetectorConstruction::Em1DetectorConstruction() -:pBox (NULL), lBox (NULL), - aMaterial(NULL), - magField (NULL) +:pBox (0), lBox (0), + aMaterial(0), + magField (0) { // create commands for interactive definition of the detector detectorMessenger = new Em1DetectorMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1DetectorConstruction::~Em1DetectorConstruction() { delete detectorMessenger;} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em1DetectorConstruction::Construct() { @@ -74,7 +74,7 @@ G4VPhysicalVolume* Em1DetectorConstruction::Construct() return ConstructVolumes(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1DetectorConstruction::DefineMaterials() { @@ -148,7 +148,7 @@ G4cout << *(G4Material::GetMaterialTable()) << G4endl; aMaterial = Al; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em1DetectorConstruction::ConstructVolumes() { @@ -164,7 +164,7 @@ G4VPhysicalVolume* Em1DetectorConstruction::ConstructVolumes() G4ThreeVector(), //at (0,0,0) "Container", //its name lBox, //its logical volume - NULL, //its mother volume + 0, //its mother volume false, //no boolean operation 0); //copy number @@ -184,7 +184,7 @@ G4VPhysicalVolume* Em1DetectorConstruction::ConstructVolumes() return pBox; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1DetectorConstruction::PrintParameters() { @@ -192,7 +192,7 @@ void Em1DetectorConstruction::PrintParameters() << " of " << aMaterial->GetName() << G4endl; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1DetectorConstruction::SetMaterial(G4String materialChoice) { @@ -204,14 +204,14 @@ void Em1DetectorConstruction::SetMaterial(G4String materialChoice) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1DetectorConstruction::SetSize(G4double value) { BoxSize = value; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1DetectorConstruction::SetMagField(G4double fieldValue) { @@ -229,16 +229,16 @@ void Em1DetectorConstruction::SetMagField(G4double fieldValue) } else { - magField = NULL; + magField = 0; fieldMgr->SetDetectorField(magField); } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1DetectorConstruction::UpdateGeometry() { G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes()); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/Em1DetectorMessenger.cc index 18cedc7ec3..9914735265 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1DetectorMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1DetectorMessenger.cc,v 1.2.4.1 2001/06/28 19:06:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1DetectorMessenger.cc,v 1.4 2001/10/26 12:51:25 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1DetectorMessenger.hh" @@ -37,7 +37,7 @@ #include "G4UIcmdWithADoubleAndUnit.hh" #include "G4UIcmdWithoutParameter.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1DetectorMessenger::Em1DetectorMessenger(Em1DetectorConstruction * Em1Det) :Em1Detector(Em1Det) @@ -48,21 +48,21 @@ Em1DetectorMessenger::Em1DetectorMessenger(Em1DetectorConstruction * Em1Det) MaterCmd = new G4UIcmdWithAString("/calor/setMat",this); MaterCmd->SetGuidance("Select material of the box."); MaterCmd->SetParameterName("choice",false); - MaterCmd->AvailableForStates(Idle); + MaterCmd->AvailableForStates(PreInit,Idle); SizeCmd = new G4UIcmdWithADoubleAndUnit("/calor/setSize",this); SizeCmd->SetGuidance("Set size of the box"); SizeCmd->SetParameterName("Size",false); SizeCmd->SetRange("Size>0."); SizeCmd->SetUnitCategory("Length"); - SizeCmd->AvailableForStates(Idle); + SizeCmd->AvailableForStates(PreInit,Idle); MagFieldCmd = new G4UIcmdWithADoubleAndUnit("/calor/setField",this); MagFieldCmd->SetGuidance("Define magnetic field."); MagFieldCmd->SetGuidance("Magnetic field will be in Z direction."); MagFieldCmd->SetParameterName("Bz",false); MagFieldCmd->SetUnitCategory("Magnetic flux density"); - MagFieldCmd->AvailableForStates(Idle); + MagFieldCmd->AvailableForStates(PreInit,Idle); UpdateCmd = new G4UIcmdWithoutParameter("/calor/update",this); UpdateCmd->SetGuidance("Update calorimeter geometry."); @@ -71,7 +71,7 @@ Em1DetectorMessenger::Em1DetectorMessenger(Em1DetectorConstruction * Em1Det) UpdateCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1DetectorMessenger::~Em1DetectorMessenger() { @@ -82,7 +82,7 @@ Em1DetectorMessenger::~Em1DetectorMessenger() delete Em1detDir; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { @@ -99,4 +99,4 @@ void Em1DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { Em1Detector->UpdateGeometry(); } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1EventAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1EventAction.cc index 517616480e..300e8f87ff 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1EventAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1EventAction.cc @@ -21,17 +21,16 @@ // ******************************************************************** // // -// $Id: Em1EventAction.cc,v 1.3.2.1 2001/06/28 19:06:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1EventAction.cc,v 1.6 2001/11/29 11:28:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1EventAction.hh" -#include "Em1RunAction.hh" #include "Em1EventActionMessenger.hh" #include "G4Event.hh" @@ -41,24 +40,23 @@ #include "G4VVisManager.hh" #include "G4ios.hh" #include "G4UnitsTable.hh" -#include "Randomize.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -Em1EventAction::Em1EventAction(Em1RunAction* run) -:Em1Run(run),drawFlag("all"),printModulo(10000),eventMessenger(NULL) +Em1EventAction::Em1EventAction() +:drawFlag("none"),printModulo(10000),eventMessenger(0) { eventMessenger = new Em1EventActionMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1EventAction::~Em1EventAction() { delete eventMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1EventAction::BeginOfEventAction(const G4Event* evt) { @@ -67,19 +65,12 @@ void Em1EventAction::BeginOfEventAction(const G4Event* evt) //printing survey if (evtNb%printModulo == 0) G4cout << "\n---> Begin of Event: " << evtNb << G4endl; - - //save rndm status - if (Em1Run->GetRndmFreq() == 2) - { - HepRandom::saveEngineStatus("beginOfEvent.rndm"); - if (evtNb%printModulo == 0) HepRandom::showEngineStatus(); - } //additional initializations TotalEnergyDeposit = 0.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1EventAction::EndOfEventAction(const G4Event* evt) { @@ -94,7 +85,8 @@ void Em1EventAction::EndOfEventAction(const G4Event* evt) G4int n_trajectories = 0; if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); for(G4int i=0; iGetTrajectoryContainer()))[i]); + { G4Trajectory* trj = (G4Trajectory*) + ((*(evt->GetTrajectoryContainer()))[i]); if (drawFlag == "all") trj->DrawTrajectory(50); else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) trj->DrawTrajectory(50); @@ -102,6 +94,6 @@ void Em1EventAction::EndOfEventAction(const G4Event* evt) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/Em1EventActionMessenger.cc index 4d295fbe68..a92b969b58 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1EventActionMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1EventActionMessenger.cc,v 1.2.4.1 2001/06/28 19:06:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1EventActionMessenger.cc,v 1.4 2001/10/26 12:51:25 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1EventActionMessenger.hh" @@ -36,7 +36,7 @@ #include "G4UIcmdWithAnInteger.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1EventActionMessenger::Em1EventActionMessenger(Em1EventAction* EvAct) :eventAction(EvAct) @@ -56,7 +56,7 @@ Em1EventActionMessenger::Em1EventActionMessenger(Em1EventAction* EvAct) PrintCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1EventActionMessenger::~Em1EventActionMessenger() { @@ -64,9 +64,10 @@ Em1EventActionMessenger::~Em1EventActionMessenger() delete PrintCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em1EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void Em1EventActionMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if(command == DrawCmd) {eventAction->SetDrawFlag(newValue);} @@ -76,4 +77,4 @@ void Em1EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValu } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsList.cc b/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsList.cc index 200638ae92..86ca833eaa 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsList.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1PhysicsList.cc,v 1.3.4.1 2001/06/28 19:06:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1PhysicsList.cc,v 1.5 2001/10/26 12:51:25 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1PhysicsList.hh" @@ -47,7 +47,7 @@ #include "G4UImanager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1PhysicsList::Em1PhysicsList(Em1DetectorConstruction* p) : G4VUserPhysicsList() @@ -63,12 +63,12 @@ Em1PhysicsList::Em1PhysicsList(Em1DetectorConstruction* p) pMes = new Em1PhysicsListMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1PhysicsList::~Em1PhysicsList() { delete pMes; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::ConstructParticle() { @@ -83,7 +83,7 @@ void Em1PhysicsList::ConstructParticle() ConstructBarions(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::ConstructBosons() { @@ -97,7 +97,8 @@ void Em1PhysicsList::ConstructBosons() // optical photon G4OpticalPhoton::OpticalPhotonDefinition(); } - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::ConstructLeptons() { @@ -112,7 +113,7 @@ void Em1PhysicsList::ConstructLeptons() G4NeutrinoMu::NeutrinoMuDefinition(); G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::ConstructMesons() { @@ -130,7 +131,7 @@ void Em1PhysicsList::ConstructMesons() G4KaonZeroShort::KaonZeroShortDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::ConstructBarions() { @@ -142,7 +143,7 @@ void Em1PhysicsList::ConstructBarions() } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::ConstructProcess() { @@ -151,7 +152,7 @@ void Em1PhysicsList::ConstructProcess() ConstructGeneral(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" @@ -169,7 +170,7 @@ void Em1PhysicsList::ConstructProcess() #include "G4hIonisation.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::ConstructEM() { @@ -216,7 +217,7 @@ void Em1PhysicsList::ConstructEM() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4Decay.hh" @@ -236,7 +237,7 @@ void Em1PhysicsList::ConstructGeneral() } } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::SetCuts() { @@ -261,7 +262,7 @@ void Em1PhysicsList::SetCuts() if (verboseLevel>0) DumpCutValuesTable(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::SetGammaCut(G4double val) { @@ -269,7 +270,7 @@ void Em1PhysicsList::SetGammaCut(G4double val) cutForGamma = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::SetElectronCut(G4double val) { @@ -277,7 +278,7 @@ void Em1PhysicsList::SetElectronCut(G4double val) cutForElectron = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::SetProtonCut(G4double val) { @@ -285,7 +286,7 @@ void Em1PhysicsList::SetProtonCut(G4double val) cutForProton = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::SetCutsByEnergy(G4double val) { @@ -318,7 +319,7 @@ void Em1PhysicsList::SetCutsByEnergy(G4double val) SetCutValueForOthers(cut); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PhysicsList::GetRange(G4double val) { @@ -335,6 +336,6 @@ void Em1PhysicsList::GetRange(G4double val) G4cout << "range : " << cut / mm << " (mm)" << G4endl; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsListMessenger.cc index 632baa270a..289a321d04 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1PhysicsListMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1PhysicsListMessenger.cc,v 1.2.4.1 2001/06/28 19:06:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1PhysicsListMessenger.cc,v 1.5 2001/10/31 15:36:45 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1PhysicsListMessenger.hh" @@ -35,7 +35,7 @@ #include "G4UIcmdWithADoubleAndUnit.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1PhysicsListMessenger::Em1PhysicsListMessenger(Em1PhysicsList* EvAct) :physList(EvAct) @@ -45,21 +45,21 @@ Em1PhysicsListMessenger::Em1PhysicsListMessenger(Em1PhysicsList* EvAct) cutGCmd->SetParameterName("range",false); cutGCmd->SetRange("range>0."); cutGCmd->SetUnitCategory("Length"); - cutGCmd->AvailableForStates(Idle); + cutGCmd->AvailableForStates(PreInit,Idle); cutECmd = new G4UIcmdWithADoubleAndUnit("/calor/cutE",this); cutECmd->SetGuidance("Set cut values by RANGE for e- e+."); cutECmd->SetParameterName("range",false); cutECmd->SetRange("range>0."); cutECmd->SetUnitCategory("Length"); - cutECmd->AvailableForStates(Idle); + cutECmd->AvailableForStates(PreInit,Idle); cutPCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutP",this); cutPCmd->SetGuidance("Set cut values by RANGE for proton and others."); cutPCmd->SetParameterName("range",false); cutPCmd->SetRange("range>0."); cutPCmd->SetUnitCategory("Length"); - cutPCmd->AvailableForStates(Idle); + cutPCmd->AvailableForStates(PreInit,Idle); eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this); eCmd->SetGuidance("Set cut values by ENERGY for charged particles."); @@ -76,7 +76,7 @@ Em1PhysicsListMessenger::Em1PhysicsListMessenger(Em1PhysicsList* EvAct) rCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1PhysicsListMessenger::~Em1PhysicsListMessenger() { @@ -87,9 +87,10 @@ Em1PhysicsListMessenger::~Em1PhysicsListMessenger() delete eCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em1PhysicsListMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void Em1PhysicsListMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if(command == cutGCmd) {physList->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));} @@ -104,4 +105,4 @@ void Em1PhysicsListMessenger::SetNewValue(G4UIcommand * command,G4String newValu } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1PrimaryGeneratorAction.cc index effe426b47..e4fb26d466 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1PrimaryGeneratorAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1PrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:06:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1PrimaryGeneratorAction.cc,v 1.4 2001/10/26 12:51:25 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1PrimaryGeneratorAction.hh" @@ -36,7 +36,7 @@ #include "G4ParticleTable.hh" #include "G4ParticleDefinition.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1PrimaryGeneratorAction::Em1PrimaryGeneratorAction() { @@ -53,19 +53,19 @@ Em1PrimaryGeneratorAction::Em1PrimaryGeneratorAction() particleGun->SetParticlePosition(G4ThreeVector(0.*cm,0.*cm,0.*cm)); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1PrimaryGeneratorAction::~Em1PrimaryGeneratorAction() { delete particleGun; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { particleGun->GeneratePrimaryVertex(anEvent); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1RunAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1RunAction.cc index 87b5d98e22..9fbd8f72fc 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1RunAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1RunAction.cc @@ -21,20 +21,20 @@ // ******************************************************************** // // -// $Id: Em1RunAction.cc,v 1.10.2.1 2001/06/28 19:06:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1RunAction.cc,v 1.13 2001/11/29 11:28:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 08.03.01 Hisaya: adapted for STL -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1RunAction.hh" -#include "Em1RunActionMessenger.hh" #include "G4Run.hh" +#include "G4RunManager.hh" #include "G4UImanager.hh" #include "G4VVisManager.hh" #include "G4ios.hh" @@ -46,26 +46,24 @@ #include "CLHEP/Hist/HBookFile.h" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1RunAction::Em1RunAction() - : ProcCounter(0), saveRndm (1), - runMessenger(new Em1RunActionMessenger(this)) + : ProcCounter(0) { #ifndef G4NOHIST - hbookManager = NULL; + hbookManager = 0; #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1RunAction::~Em1RunAction() { cleanHisto(); - delete runMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1RunAction::bookHisto() { @@ -73,13 +71,16 @@ void Em1RunAction::bookHisto() hbookManager = new HBookFile("testem1.paw", 68); // booking histograms - histo[0] = hbookManager->histogram("track length (mm) of a charged particle",100,0.,50*cm); - histo[1] = hbookManager->histogram("Nb of steps per track (charged particle)",100,0.,100.); - histo[2] = hbookManager->histogram("step length (mm) charged particle",100,0.,10*mm); + histo[0] = hbookManager->histogram + ("track length (mm) of a charged particle",100,0.,50*cm); + histo[1] = hbookManager->histogram + ("Nb of steps per track (charged particle)",100,0.,100.); + histo[2] = hbookManager->histogram + ("step length (mm) charged particle",100,0.,10*mm); #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1RunAction::cleanHisto() { @@ -91,18 +92,16 @@ void Em1RunAction::cleanHisto() #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1RunAction::BeginOfRunAction(const G4Run* aRun) { G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("beginOfRun.rndm"); - } - + G4RunManager::GetRunManager()->SetRandomNumberStore(true); + HepRandom::showEngineStatus(); + NbOfTraks0 = 0; NbOfTraks1 = 0; NbOfSteps0 = 0; NbOfSteps1 = 0; ProcCounter = new ProcessesCount; @@ -111,13 +110,10 @@ void Em1RunAction::BeginOfRunAction(const G4Run* aRun) if (aRun->GetRunID() == 0) bookHisto(); if (G4VVisManager::GetConcreteInstance()) - { - G4UImanager* UI = G4UImanager::GetUIpointer(); - UI->ApplyCommand("/vis/scene/notifyHandlers"); - } + G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers"); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1RunAction::CountProcesses(G4String procName) { @@ -130,7 +126,7 @@ void Em1RunAction::CountProcesses(G4String procName) (*ProcCounter)[i]->Count(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1RunAction::EndOfRunAction(const G4Run* aRun) { @@ -143,21 +139,22 @@ void Em1RunAction::EndOfRunAction(const G4Run* aRun) G4int oldprec = G4cout.precision(2); G4cout << "\n nb tracks/event" - << " neutral: " << G4std::setw(7) << NbOfTraks0/dNbOfEvents - << " charged: " << G4std::setw(7) << NbOfTraks1/dNbOfEvents + << " neutral: " << G4std::setw(7) << NbOfTraks0/dNbOfEvents + << " charged: " << G4std::setw(7) << NbOfTraks1/dNbOfEvents << "\n nb steps/event" - << " neutral: " << G4std::setw(7) << NbOfSteps0/dNbOfEvents - << " charged: " << G4std::setw(7) << NbOfSteps1/dNbOfEvents + << " neutral: " << G4std::setw(7) << NbOfSteps0/dNbOfEvents + << " charged: " << G4std::setw(7) << NbOfSteps1/dNbOfEvents << G4endl; //frequency of processes call G4cout << "\n nb of process calls per event: \n "; - for (G4int i=0; i< ProcCounter->size();i++) + for (size_t i=0; i< ProcCounter->size();i++) G4cout << G4std::setw(9) << (*ProcCounter)[i]->GetName(); G4cout << "\n "; - for (G4int j=0; j< ProcCounter->size();j++) - G4cout << G4std::setw(9) << ((*ProcCounter)[j]->GetCounter())/dNbOfEvents; + for (size_t j=0; j< ProcCounter->size();j++) + G4cout << G4std::setw(9) << ((*ProcCounter)[j]->GetCounter()) + /dNbOfEvents; G4cout << G4endl; G4cout.setf(oldform,G4std::ios::floatfield); @@ -176,11 +173,8 @@ void Em1RunAction::EndOfRunAction(const G4Run* aRun) if (G4VVisManager::GetConcreteInstance()) G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); - // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("endOfRun.rndm"); - } + // show Rndm status + HepRandom::showEngineStatus(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1SteppingAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1SteppingAction.cc index 630a8dc487..1c660ac63f 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1SteppingAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em1SteppingAction.cc,v 1.5.2.1 2001/06/28 19:06:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1SteppingAction.cc,v 1.7 2001/10/26 12:51:26 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1SteppingAction.hh" #include "Em1RunAction.hh" @@ -39,18 +39,18 @@ #include "CLHEP/Hist/HBookFile.h" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1SteppingAction::Em1SteppingAction(Em1RunAction* RuAct, Em1EventAction* EvAct) :runAction(RuAct),eventAction(EvAct) { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1SteppingAction::~Em1SteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1SteppingAction::UserSteppingAction(const G4Step* aStep) { @@ -68,6 +68,6 @@ void Em1SteppingAction::UserSteppingAction(const G4Step* aStep) #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm1/src/Em1SteppingVerbose.cc index 8213d095c7..b535bd2713 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1SteppingVerbose.cc @@ -21,28 +21,28 @@ // ******************************************************************** // // -// $Id: Em1SteppingVerbose.cc,v 1.6.2.1 2001/06/28 19:06:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1SteppingVerbose.cc,v 1.8 2001/10/26 12:51:26 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1SteppingVerbose.hh" #include "G4SteppingManager.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1SteppingVerbose::Em1SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1SteppingVerbose::~Em1SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1SteppingVerbose::StepInfo() { @@ -66,14 +66,14 @@ void Em1SteppingVerbose::StepInfo() << G4std::setw(10) << "Process" << G4endl; } - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); // if( fStepStatus != fWorldBoundary){ if( fTrack->GetNextVolume() != 0 ) { @@ -84,8 +84,8 @@ void Em1SteppingVerbose::StepInfo() if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ G4cout << " " - << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + << G4std::setw(10) << fStep->GetPostStepPoint() + ->GetProcessDefinedStep()->GetProcessName(); } else { G4cout << " UserLimit"; } @@ -107,7 +107,7 @@ void Em1SteppingVerbose::StepInfo() << " ---------------" << G4endl; - for(G4int lp1=(*fSecondary).size()-tN2ndariesTot; + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; lp1<(*fSecondary).size(); lp1++){ G4cout << " : " << G4std::setw(6) @@ -134,7 +134,7 @@ void Em1SteppingVerbose::StepInfo() G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1SteppingVerbose::TrackingStarted() { @@ -154,14 +154,14 @@ G4int prec = G4cout.precision(3); << G4std::setw(10) << "Volume" << " " << G4std::setw(10) << "Process" << G4endl; - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); if(fTrack->GetNextVolume()){ G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); @@ -173,4 +173,4 @@ G4int prec = G4cout.precision(3); G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1TrackingAction.cc b/examples/extended/electromagnetic/TestEm1/src/Em1TrackingAction.cc index d431422c3d..df2e7d377f 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1TrackingAction.cc @@ -22,13 +22,13 @@ // // -// $Id: Em1TrackingAction.cc,v 1.5.2.1 2001/06/28 19:06:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1TrackingAction.cc,v 1.7 2001/10/26 12:51:26 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em1TrackingAction.hh" #include "Em1RunAction.hh" @@ -39,13 +39,13 @@ #include "CLHEP/Hist/HBookFile.h" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1TrackingAction::Em1TrackingAction(Em1RunAction* RunAct) :runAction(RunAct) { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1TrackingAction::PostUserTrackingAction(const G4Track* aTrack) { @@ -65,4 +65,5 @@ void Em1TrackingAction::PostUserTrackingAction(const G4Track* aTrack) } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1VisManager.cc b/examples/extended/electromagnetic/TestEm1/src/Em1VisManager.cc index 930e8d4799..b12acf90c2 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1VisManager.cc +++ b/examples/extended/electromagnetic/TestEm1/src/Em1VisManager.cc @@ -21,14 +21,14 @@ // ******************************************************************** // // -// $Id: Em1VisManager.cc,v 1.2.4.1 2001/06/28 19:06:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em1VisManager.cc,v 1.6 2001/11/15 13:09:44 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifdef G4VIS_USE @@ -36,14 +36,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -72,36 +79,34 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYX -#include "G4RayX.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" -// #include "G4VRML2.hh" +#include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -//#include "G4VRML2File.hh" -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em1VisManager::Em1VisManager () {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em1VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -130,18 +135,9 @@ void Em1VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYX - RegisterGraphicsSystem (new G4RayX); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); -// RegisterGraphicsSystem (new G4VRML2); -#endif - -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); -// RegisterGraphicsSystem (new G4VRML2File); + RegisterGraphicsSystem (new G4VRML2); #endif if (fVerbose > 0) { @@ -154,4 +150,4 @@ void Em1VisManager::RegisterGraphicsSystems () { #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/init.mac b/examples/extended/electromagnetic/TestEm1/vis.mac similarity index 71% rename from examples/extended/electromagnetic/TestEm3/init.mac rename to examples/extended/electromagnetic/TestEm1/vis.mac index 2bef307ee0..84ef03ebb5 100644 --- a/examples/extended/electromagnetic/TestEm3/init.mac +++ b/examples/extended/electromagnetic/TestEm1/vis.mac @@ -1,5 +1,5 @@ # -# Macro file for the initialization phase of "exampleN03.cc" +# Macro file for the initialization phase of "TestEm1.cc" # # Sets some default verbose # and initializes the graphic. @@ -7,20 +7,26 @@ /control/verbose 2 /run/verbose 2 # +/run/initialize +# # Create empty scene ("world" is default) /vis/scene/create # # Create a scene handler for a specific graphics system # Edit the next line(s) to choose another graphic system # -#/vis/open DAWNFILE /vis/open OGLIX # +#/vis/open DAWNFILE +# # Draw scene -/vis/camera/zoom 1.4 -/vis/drawVolume +/vis/viewer/zoom 1.4 +/vis/viewer/flush # # for drawing the tracks # if too many tracks cause core dump => storeTrajectory 0 /tracking/storeTrajectory 1 -/event/drawTracks all +/vis/scene/endOfEventAction accumulate +# +/event/drawTracks + diff --git a/examples/extended/electromagnetic/TestEm10/GNUmakefile b/examples/extended/electromagnetic/TestEm10/GNUmakefile new file mode 100644 index 0000000000..2fe8844b6c --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/GNUmakefile @@ -0,0 +1,27 @@ +# $Id: GNUmakefile,v 1.2 2001/11/27 16:58:37 gcosmo Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := TestEm10 +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../../../.. +endif + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/architecture.gmk + +G4NOHIST := true +ifdef G4NOHIST + CPPFLAGS += -DG4NOHIST +else + LDFLAGS += -L/cern/pro/lib + LOADLIBS += -lpacklib $(FCLIBS) +endif + +include $(G4INSTALL)/config/binmake.gmk diff --git a/examples/extended/electromagnetic/TestEm10/History b/examples/extended/electromagnetic/TestEm10/History new file mode 100644 index 0000000000..719cc42c83 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/History @@ -0,0 +1,35 @@ +$Id: History,v 1.4 2001/11/27 17:01:17 gcosmo Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + TestEm10 History file + --------------------- +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +27 Nov. 2001 Gabriele Cosmo (TestEm10-V03-02-01) +- Corrected README. +- Set G4NOHIST as default in GNUmakefile. +- More models in run11.mac (V.Grichine). + +21 Nov. 2001 Marc Verderi (TestEm10-V03-02-00) +- Define a new TestEm10.in (and .out) which tests + all XTR models, shooting 10 particles for each run. + Required some modification in the detector construction + and messenger. +- Define a new TestEm10.large_N.in (and .out) + shooting 1000 particles/run. + +21 Nov. 2001 Marc Verderi +- Taken for the HEAD and made compliant with + geant4-04-00-cand-01 +- clear many warnings + diff --git a/examples/extended/electromagnetic/TestEm10/README b/examples/extended/electromagnetic/TestEm10/README new file mode 100644 index 0000000000..8c4cebfc66 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/README @@ -0,0 +1,132 @@ +$Id: README,v 1.3 2001/11/27 16:58:18 gcosmo Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + TestEm10 + -------- + + Test for investigation of ionisation in thin absorbers, transition + and synchrotron radiations. + + + 0- INTRODUCTION + + The parameterisations models can be changed simply with: + + Idle> /XTRdetector/setModel i (i = 1 to 10) + + It is NOT needed (and not recommended) to issue the command + /XTRdetector/update if just the model is changed. + + See macro file "TestEm10.in" for an example. + + + 1- GEOMETRY DEFINITION + + The "absorber" is a tube made of a given material. + + Three parameters define the absorber : + - the material of the absorber, + - the thickness of an absorber, + - the transverse size of the absorber (the input face is a square). + + The volume "World" contains the "absorber". + In this test the parameters of the "World" can be changed , too. + + In addition a transverse uniform magnetic field can be applied. + + The default geometry is constructed in DetectorConstruction class, + but all the parameters can be changed via + the commands defined in the DetectorMessenger class. + + 2- AN EVENT : THE PRIMARY GENERATOR + + The primary kinematic consists of a single particle which hits the + absorber perpendicular to the input face. The type of the particle + and its energy are set in the PrimaryGeneratorAction class, and can + be changed via the G4 build-in commands of ParticleGun class (see + the macros provided with this example). + + A RUN is a set of events. + + 3- DETECTOR RESPONSE + + Here we test G4PAIionisation , G4IonisationByLogicalVolume and + transition radiation processes + + A HIT is a record, event per event , of all the + informations needed to simulate and analyse the detector response. + + In this example a CalorHit is defined as a set of 2 informations: + - the total energy deposit in the absorber, + - the total tracklength of all charged particles in the absorber, + + Therefore the absorber is declared + 'sensitive detector' (SD), which means they can contribute to the hit. + + At the end of a run, from the histogram(s), one can study + different physics quantities such as : + - angle distribution, + - energy deposit, + - transmission/backscattering, + - ... + + The test contains 10 built-in histograms, which can be activated by + interactive commands (see the macros runxx.mac for details). + + The histogram files can be viewed using PAW e.g with the commands + + paw> h/file 1 geant4.plot01 or g4.p11 + paw> option stat + paw> h/pl 1 + + + + 4- PHYSICS DEMO + + The particle's type and the physic processes which will be available + in this example are set in PhysicsList class. + + The messenger classes introduce interactive commands . Using these + commands the geometry of the detector, the data of the primary + particle, the limits of the histograms , etc. can be changed. + + + 5- HOW TO START ? + + - compile and link to generate an executable + % cd TestEm10 + % gmake + + - execute TestEm10 in 'batch' mode from macro files e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/TestEm10 run11.mac + + - execute TestEm10 in 'interactive' mode with visualization e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/TestEm10 + .... + Idle> type your commands + .... + + List of the built-in histograms + ------------------------------- + + 1. number of (tracking) steps/event + 2. energy deposit distribution in the absorber (in MeV) + 3. angle distribution of the primary particle at the exit + of the absorber (deg) + 4. distribution of the lateral displacement at exit(mm) + 5. kinetic energy of the transmitted primaries (MeV) + 6. angle distribution of the backscattered primaries (deg) + 7. kinetic energy of the backscattered primary particles (MeV) + 8. kinetic energy of the charged secondary particles (MeV) + 9. z distribution of the secondary charged vertices (mm) + 10. kinetic energy of the photons escaping the absorber (MeV) + + Note that, histograms are disabled via the flag G4NOHIST in the GNUmakefile. + Currently, histograms in this example are implemented through the obsolete + CLHEP/Hist package, which is no longer supported. The implementation will + be replaced by direct call to the AIDA abstract interfaces in a near future. + diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.cc b/examples/extended/electromagnetic/TestEm10/TestEm10.cc new file mode 100644 index 0000000000..86c7eda015 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.cc @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: TestEm10.cc,v 1.2 2001/07/11 09:57:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 - TestEm10 +// +// -------------------------------------------------------------- +// Comments +// +// +// -------------------------------------------------------------- + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "Randomize.hh" + +#ifdef G4VIS_USE +#include "Em10VisManager.hh" +#endif + +#include "Em10DetectorConstruction.hh" +#include "Em10PhysicsList.hh" +#include "Em10PrimaryGeneratorAction.hh" +#include "Em10RunAction.hh" +#include "Em10EventAction.hh" +#include "Em10SteppingAction.hh" +#include "Em10SteppingVerbose.hh" + +int main(int argc,char** argv) +{ + + //choose the Random engine + + HepRandom::setTheEngine(new RanecuEngine); + + //my Verbose output class + + G4VSteppingVerbose::SetInstance(new Em10SteppingVerbose); + + // Construct the default run manager + + G4RunManager * runManager = new G4RunManager; + + // set mandatory initialization classes + + Em10DetectorConstruction* detector; + detector = new Em10DetectorConstruction; + runManager->SetUserInitialization(detector); + runManager->SetUserInitialization(new Em10PhysicsList(detector)); + +#ifdef G4VIS_USE + + // visualization manager + + G4VisManager* visManager = new Em10VisManager; + visManager->Initialize(); + +#endif + + // set user action classes + + runManager->SetUserAction(new Em10PrimaryGeneratorAction(detector)); + + Em10RunAction* runAction = new Em10RunAction; + + runManager->SetUserAction(runAction); + + Em10EventAction* eventAction = new Em10EventAction(runAction); + + runManager->SetUserAction(eventAction); + + Em10SteppingAction* steppingAction = new Em10SteppingAction(detector, + eventAction, + runAction); + runManager->SetUserAction(steppingAction); + + //Initialize G4 kernel, physics tables ... + + runManager->Initialize(); + + // get the pointer to the User Interface manager + + G4UImanager* UI = G4UImanager::GetUIpointer(); + + if (argc==1) // Define UI terminal for interactive mode + { + G4UIsession * session = new G4UIterminal; + UI->ApplyCommand("/control/execute init.mac"); + session->SessionStart(); + delete session; + } + else // Batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + // job termination + +#ifdef G4VIS_USE + delete visManager; +#endif + delete runManager; + + return 0; +} + diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.in b/examples/extended/electromagnetic/TestEm10/TestEm10.in new file mode 100644 index 0000000000..635c4ad915 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.in @@ -0,0 +1,46 @@ +# +# Macro file 'TestEm10.in' for testing "TestEm10" +# +# +/run/initialize +/run/particle/dumpCutValues +/gun/particle e- +/gun/energy 9000.0 MeV + +# Test G4FoamXrayTRmodel +/XTRdetector/setModel 1 +/run/beamOn 1000 +# Test G4FoamXTRdEdx +/XTRdetector/setModel 2 +/run/beamOn 10 +# Test G4GamDistrXrayTRmodel +/XTRdetector/setModel 3 +/run/beamOn 10 +# Test G4GamDistrXTRdEdx +/XTRdetector/setModel 4 +/run/beamOn 10 +# Test G4IrregularXrayTRmodel +/XTRdetector/setModel 5 +/run/beamOn 10 +# Test G4IrregularXTRdEdx +/XTRdetector/setModel 6 +/run/beamOn 10 +# Test G4PlateIrrGasXrayTRmodel +/XTRdetector/setModel 7 +/run/beamOn 10 +# Test G4PlateIrrGasXTRdEdx +/XTRdetector/setModel 8 +/run/beamOn 10 +# Test G4RegularXrayTRmodel +/XTRdetector/setModel 9 +/run/beamOn 10 +# Test G4RegularXTRdEdx +/XTRdetector/setModel 10 +/run/beamOn 10 + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.in b/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.in new file mode 100644 index 0000000000..4d640b8468 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.in @@ -0,0 +1,46 @@ +# +# Macro file 'TestEm10.large_N.in' for testing "TestEm10" +# +# +/run/initialize +/run/particle/dumpCutValues +/gun/particle e- +/gun/energy 9000.0 MeV + +# Test G4FoamXrayTRmodel +/XTRdetector/setModel 1 +/run/beamOn 1000 +# Test G4FoamXTRdEdx +/XTRdetector/setModel 2 +/run/beamOn 1000 +# Test G4GamDistrXrayTRmodel +/XTRdetector/setModel 3 +/run/beamOn 1000 +# Test G4GamDistrXTRdEdx +/XTRdetector/setModel 4 +/run/beamOn 1000 +# Test G4IrregularXrayTRmodel +/XTRdetector/setModel 5 +/run/beamOn 1000 +# Test G4IrregularXTRdEdx +/XTRdetector/setModel 6 +/run/beamOn 1000 +# Test G4PlateIrrGasXrayTRmodel +/XTRdetector/setModel 7 +/run/beamOn 1000 +# Test G4PlateIrrGasXTRdEdx +/XTRdetector/setModel 8 +/run/beamOn 1000 +# Test G4RegularXrayTRmodel +/XTRdetector/setModel 9 +/run/beamOn 1000 +# Test G4RegularXTRdEdx +/XTRdetector/setModel 10 +/run/beamOn 1000 + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.out b/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.out new file mode 100644 index 0000000000..8a08817201 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.large_N.out @@ -0,0 +1,1138 @@ +********************************************** + Geant4 version $Name: geant4-04-00 $ + (29-Jun-2001) + Copyright : Geant4 Collaboration +********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + DAWNFILE (DAWNFILE) + VRML1FILE (VRML1FILE) + +***** Table : Nb of materials = 28 ***** + + Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + ---> Element: Aluminium Z = 13.0 N = 27.0 A = 26.98 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: TRT_CH2 density: 935.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 27.414 cm + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + + Material: Radiator density: 59.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 4.344 m + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + + Material: CarbonFiber density: 145.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.473 m + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Li density: 534.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.550 m + ---> Element: LithiumLi Z = 3.0 N = 6.9 A = 6.94 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Be density: 1.848 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 35.267 cm + ---> Element: BerilliumBe Z = 4.0 N = 9.0 A = 9.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Mylar density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 19.770 cm + ---> Element: OxygenO Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 48.42 % Abundance 18.18 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 45.47 % Abundance 45.45 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 6.11 % Abundance 36.36 % + + Material: Kapton density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 19.770 cm + ---> Element: OxygenO Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 48.42 % Abundance 18.18 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 45.47 % Abundance 45.45 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 6.11 % Abundance 36.36 % + + Material: Polypropelene density: 910.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.167 cm + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + + Material: He density: 0.178 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.299 km + ---> Element: He Z = 2.0 N = 4.0 A = 4.00 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Ne density: 0.900 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 321.456 m + ---> Element: Ne Z = 10.0 N = 20.2 A = 20.18 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Argon density: 1.784 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 109.604 m + ---> Element: ArgonAr Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Kr density: 3.700 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 30.736 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Xenon density: 5.858 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.478 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: CH4 density: 0.717 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 405.758 m + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 59.80 % Abundance 20.00 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 40.20 % Abundance 80.00 % + + Material: C3H8 density: 2.005 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 134.002 m + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 69.05 % Abundance 27.27 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 30.95 % Abundance 72.73 % + + Material: isoC4H10 density: 2.670 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 99.499 m + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 70.42 % Abundance 28.57 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 29.58 % Abundance 71.43 % + + Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 158.123 m + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 15.81 % Abundance 33.33 % + ---> Element: OxygenO Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 84.19 % Abundance 66.67 % + + Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 158.123 m + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 15.81 % Abundance 33.33 % + ---> Element: OxygenO Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 84.19 % Abundance 66.67 % + + Material: N2 density: 1.251 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.846 m + ---> Element: NitrogenN Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: O2 density: 1.429 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 239.621 m + ---> Element: OxygenO Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Air density: 1.293 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 283.293 m + ---> Element: NitrogenN Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 75.57 % Abundance 78.48 % + ---> Element: OxygenO Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 23.15 % Abundance 21.05 % + ---> Element: ArgonAr Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 1.28 % Abundance 0.47 % + + Material: Xe20CO2 density: 5.082 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.695 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 92.20 % Abundance 53.29 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.23 % Abundance 15.57 % + ---> Element: OxygenO Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 6.57 % Abundance 31.14 % + + Material: Kr20CO2 density: 3.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 33.957 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 89.00 % Abundance 55.02 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.74 % Abundance 14.99 % + ---> Element: OxygenO Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 9.26 % Abundance 29.99 % + + Material: Xe55He15CH4 density: 1.963 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 47.193 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 89.50 % Abundance 14.61 % + ---> Element: He Z = 2.0 N = 4.0 A = 4.00 g/mole fractionMass: 5.00 % Abundance 26.77 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 3.29 % Abundance 11.73 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 2.21 % Abundance 46.90 % + + Material: Xe10CH4 density: 5.344 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 16.018 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 98.70 % Abundance 53.75 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 0.78 % Abundance 9.25 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 0.52 % Abundance 37.00 % + + Material: Xe5CH4 density: 5.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 15.207 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 99.40 % Abundance 71.72 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 0.36 % Abundance 5.66 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 0.24 % Abundance 22.62 % + + Material: Xe20CH4 density: 4.830 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.941 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 97.00 % Abundance 33.11 % + ---> Element: CarbonC Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.79 % Abundance 13.38 % + ---> Element: HydrogenH Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 1.21 % Abundance 53.51 % + + + + The WORLD is made of 800mm of He, the transverse size (R) of the world is 200 mm. + The ABSORBER is made of 30mm of Xe10CH4, the transverse size (R) is 100 mm. + Z position of the (middle of the) absorber 360 mm. + +zRad = 75.4 mm +radThick = 60.96 mm +fFoilNumber = 300 +fRadiatorMat = Li +WorldMaterial = He +zModule = 50.04 mm +50.04 mm 50.206 mm 50.372 mm 50.538 mm 50.704 mm 50.87 mm 51.036 mm 51.202 mm 51.368 mm 51.534 mm 51.7 mm 51.866 mm 52.032 mm 52.198 mm 52.364 mm 52.53 mm 52.696 mm 52.862 mm 53.028 mm 53.194 mm 53.36 mm 53.526 mm 53.692 mm 53.858 mm 54.024 mm 54.19 mm 54.356 mm 54.522 mm 54.688 mm 54.854 mm 55.02 mm 55.186 mm 55.352 mm 55.518 mm 55.684 mm 55.85 mm 56.016 mm 56.182 mm 56.348 mm 56.514 mm 56.68 mm 56.846 mm 57.012 mm 57.178 mm 57.344 mm 57.51 mm 57.676 mm 57.842 mm 58.008 mm 58.174 mm 58.34 mm 58.506 mm 58.672 mm 58.838 mm 59.004 mm 59.17 mm 59.336 mm 59.502 mm 59.668 mm 59.834 mm 60 mm 60.166 mm 60.332 mm 60.498 mm 60.664 mm 60.83 mm 60.996 mm 61.162 mm 61.328 mm 61.494 mm 61.66 mm 61.826 mm 61.992 mm 62.158 mm 62.324 mm 62.49 mm 62.656 mm 62.822 mm 62.988 mm 63.154 mm 63.32 mm 63.486 mm 63.652 mm 63.818 mm 63.984 mm 64.15 mm 64.316 mm 64.482 mm 64.648 mm 64.814 mm 64.98 mm 65.146 mm 65.312 mm 65.478 mm 65.644 mm 65.81 mm 65.976 mm 66.142 mm 66.308 mm 66.474 mm 66.64 mm 66.806 mm 66.972 mm 67.138 mm 67.304 mm 67.47 mm 67.636 mm 67.802 mm 67.968 mm 68.134 mm 68.3 mm 68.466 mm 68.632 mm 68.798 mm 68.964 mm 69.13 mm 69.296 mm 69.462 mm 69.628 mm 69.794 mm 69.96 mm 70.126 mm 70.292 mm 70.458 mm 70.624 mm 70.79 mm 70.956 mm 71.122 mm 71.288 mm 71.454 mm 71.62 mm 71.786 mm 71.952 mm 72.118 mm 72.284 mm 72.45 mm 72.616 mm 72.782 mm 72.948 mm 73.114 mm 73.28 mm 73.446 mm 73.612 mm 73.778 mm 73.944 mm 74.11 mm 74.276 mm 74.442 mm 74.608 mm 74.774 mm 74.94 mm 75.106 mm 75.272 mm 75.438 mm 75.604 mm 75.77 mm 75.936 mm 76.102 mm 76.268 mm 76.434 mm 76.6 mm 76.766 mm 76.932 mm 77.098 mm 77.264 mm 77.43 mm 77.596 mm 77.762 mm 77.928 mm 78.094 mm 78.26 mm 78.426 mm 78.592 mm 78.758 mm 78.924 mm 79.09 mm 79.256 mm 79.422 mm 79.588 mm 79.754 mm 79.92 mm 80.086 mm 80.252 mm 80.418 mm 80.584 mm 80.75 mm 80.916 mm 81.082 mm 81.248 mm 81.414 mm 81.58 mm 81.746 mm 81.912 mm 82.078 mm 82.244 mm 82.41 mm 82.576 mm 82.742 mm 82.908 mm 83.074 mm 83.24 mm 83.406 mm 83.572 mm 83.738 mm 83.904 mm 84.07 mm 84.236 mm 84.402 mm 84.568 mm 84.734 mm 84.9 mm 85.066 mm 85.232 mm 85.398 mm 85.564 mm 85.73 mm 85.896 mm 86.062 mm 86.228 mm 86.394 mm 86.56 mm 86.726 mm 86.892 mm 87.058 mm 87.224 mm 87.39 mm 87.556 mm 87.722 mm 87.888 mm 88.054 mm 88.22 mm 88.386 mm 88.552 mm 88.718 mm 88.884 mm 89.05 mm 89.216 mm 89.382 mm 89.548 mm 89.714 mm 89.88 mm 90.046 mm 90.212 mm 90.378 mm 90.544 mm 90.71 mm 90.876 mm 91.042 mm 91.208 mm 91.374 mm 91.54 mm 91.706 mm 91.872 mm 92.038 mm 92.204 mm 92.37 mm 92.536 mm 92.702 mm 92.868 mm 93.034 mm 93.2 mm 93.366 mm 93.532 mm 93.698 mm 93.864 mm 94.03 mm 94.196 mm 94.362 mm 94.528 mm 94.694 mm 94.86 mm 95.026 mm 95.192 mm 95.358 mm 95.524 mm 95.69 mm 95.856 mm 96.022 mm 96.188 mm 96.354 mm 96.52 mm 96.686 mm 96.852 mm 97.018 mm 97.184 mm 97.35 mm 97.516 mm 97.682 mm 97.848 mm 98.014 mm 98.18 mm 98.346 mm 98.512 mm 98.678 mm 98.844 mm 99.01 mm 99.176 mm 99.342 mm 99.508 mm 99.674 mm +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 0 +Warning: No parametrisation model was defined? +Em10PhysicsList::SetCuts:CutLength : 1 mm + +phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z + Sandia crossSection below 50 KeV + PhysicsTables from 50 keV to 50 MeV in 100 bins. + +compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. + +conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. + e+e- energies according Bethe-Heitler + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. + +eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. + Good description from 1 KeV to 100 GeV. + log scale extrapolation above 100 GeV + Gamma energy sampled from a parametrised formula. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +hIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +total time(SetCuts)=13.15 s +============= The cut Energy ============================== + gamma e- +Cut in range + Aluminium 1 mm 1 mm + TRT_CH2 1 mm 1 mm + Radiator 1 mm 1 mm + CarbonFiber 1 mm 1 mm + Li 1 mm 1 mm + Be 1 mm 1 mm + Mylar 1 mm 1 mm + Kapton 1 mm 1 mm + Polypropelene 1 mm 1 mm + He 1 mm 1 mm + Ne 1 mm 1 mm + Argon 1 mm 1 mm + Kr 1 mm 1 mm + Xenon 1 mm 1 mm + CH4 1 mm 1 mm + C3H8 1 mm 1 mm + isoC4H10 1 mm 1 mm + CO2 1 mm 1 mm + CO2 1 mm 1 mm + N2 1 mm 1 mm + O2 1 mm 1 mm + Air 1 mm 1 mm + Xe20CO2 1 mm 1 mm + Kr20CO2 1 mm 1 mm + Xe55He15CH4 1 mm 1 mm + Xe10CH4 1 mm 1 mm + Xe5CH4 1 mm 1 mm + Xe20CH4 1 mm 1 mm +Cut in energy + Aluminium 6.89 keV 597 keV + TRT_CH2 2.78 keV 515 keV + Radiator 990 eV 89.6 keV + CarbonFiber 1.52 keV 147 keV + Li 1.16 keV 207 keV + Be 1.99 keV 466 keV + Mylar 3.48 keV 541 keV + Kapton 3.48 keV 541 keV + Polypropelene 2.75 keV 502 keV + He 990 eV 990 eV + Ne 990 eV 990 eV + Argon 990 eV 990 eV + Kr 990 eV 1.07 keV + Xenon 990 eV 1.95 keV + CH4 990 eV 990 eV + C3H8 990 eV 990 eV + isoC4H10 990 eV 1.45 keV + CO2 990 eV 990 eV + CO2 990 eV 990 eV + N2 990 eV 990 eV + O2 990 eV 990 eV + Air 990 eV 990 eV + Xe20CO2 990 eV 1.67 keV + Kr20CO2 990 eV 1.09 keV + Xe55He15CH4 990 eV 990 eV + Xe10CH4 990 eV 1.74 keV + Xe5CH4 990 eV 1.83 keV + Xe20CH4 990 eV 1.54 keV +=================================================== +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 1 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Foam X-ray TR radiator model is called +0 fGamma = 107.6 sumE = 0.004254 +1 fGamma = 123.4 sumE = 0.006653 +2 fGamma = 141.5 sumE = 0.01023 +3 fGamma = 162.3 sumE = 0.01548 +4 fGamma = 186.2 sumE = 0.02297 +5 fGamma = 213.7 sumE = 0.0336 +6 fGamma = 245.2 sumE = 0.04841 +7 fGamma = 281.3 sumE = 0.06867 +8 fGamma = 322.9 sumE = 0.09587 +9 fGamma = 370.5 sumE = 0.1317 +10 fGamma = 425.3 sumE = 0.1778 +11 fGamma = 488.2 sumE = 0.2359 +12 fGamma = 560.3 sumE = 0.3073 +13 fGamma = 643.2 sumE = 0.393 +14 fGamma = 738.3 sumE = 0.4929 +15 fGamma = 847.6 sumE = 0.6058 +16 fGamma = 973 sumE = 0.7292 +17 fGamma = 1117 sumE = 0.859 +18 fGamma = 1282 sumE = 0.9897 +19 fGamma = 1472 sumE = 1.115 +20 fGamma = 1690 sumE = 1.227 +21 fGamma = 1940 sumE = 1.319 +22 fGamma = 2228 sumE = 1.386 +23 fGamma = 2558 sumE = 1.422 +24 fGamma = 2936 sumE = 1.424 +25 fGamma = 3371 sumE = 1.393 +26 fGamma = 3871 sumE = 1.329 +27 fGamma = 4444 sumE = 1.237 +28 fGamma = 5102 sumE = 1.15 +29 fGamma = 5858 sumE = 1.208 +30 fGamma = 6726 sumE = 1.257 +31 fGamma = 7722 sumE = 1.298 +32 fGamma = 8866 sumE = 1.333 +33 fGamma = 1.018e+04 sumE = 1.362 +34 fGamma = 1.169e+04 sumE = 1.385 +35 fGamma = 1.342e+04 sumE = 1.405 +36 fGamma = 1.541e+04 sumE = 1.421 +37 fGamma = 1.769e+04 sumE = 1.434 +38 fGamma = 2.031e+04 sumE = 1.445 +39 fGamma = 2.332e+04 sumE = 1.454 +40 fGamma = 2.677e+04 sumE = 1.461 +41 fGamma = 3.074e+04 sumE = 1.468 +42 fGamma = 3.529e+04 sumE = 1.473 +43 fGamma = 4.052e+04 sumE = 1.477 +44 fGamma = 4.652e+04 sumE = 1.481 +45 fGamma = 5.342e+04 sumE = 1.485 +46 fGamma = 6.133e+04 sumE = 1.488 +47 fGamma = 7.042e+04 sumE = 1.49 +48 fGamma = 8.085e+04 sumE = 1.493 +49 fGamma = 9.283e+04 sumE = 1.495 + +total time for build X-ray TR tables = 17.12 s +### Run 0 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 9876, 54321 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=52.0113 +- 0.778531 mm + + mean energy deposit in absorber=0.0359449 +- 0.000581355 MeV + + mean number of steps in absorber (charged) =1.982 +- 0.0323987 + mean number of steps in absorber (neutral) =1.454 +- 0.0388057 + + mean number of charged secondaries = 0.982 +- 0.0323987 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.982 and e+s =0 + +(number) transmission coeff=0.592 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 845049818, 1399553993 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 2 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Foam XTR dE/dx model is called +0 fGamma = 107.6 sumE = 0.1086 +1 fGamma = 123.4 sumE = 0.158 +2 fGamma = 141.5 sumE = 0.224 +3 fGamma = 162.3 sumE = 0.3095 +4 fGamma = 186.2 sumE = 0.4155 +5 fGamma = 213.7 sumE = 0.546 +6 fGamma = 245.2 sumE = 0.7026 +7 fGamma = 281.3 sumE = 0.8863 +8 fGamma = 322.9 sumE = 1.096 +9 fGamma = 370.5 sumE = 1.331 +10 fGamma = 425.3 sumE = 1.587 +11 fGamma = 488.2 sumE = 1.857 +12 fGamma = 560.3 sumE = 2.133 +13 fGamma = 643.2 sumE = 2.406 +14 fGamma = 738.3 sumE = 2.664 +15 fGamma = 847.6 sumE = 2.895 +16 fGamma = 973 sumE = 3.087 +17 fGamma = 1117 sumE = 3.23 +18 fGamma = 1282 sumE = 3.315 +19 fGamma = 1472 sumE = 3.338 +20 fGamma = 1690 sumE = 3.296 +21 fGamma = 1940 sumE = 3.191 +22 fGamma = 2228 sumE = 3.028 +23 fGamma = 2558 sumE = 2.816 +24 fGamma = 2936 sumE = 2.567 +25 fGamma = 3371 sumE = 2.297 +26 fGamma = 3871 sumE = 2.018 +27 fGamma = 4444 sumE = 1.745 +28 fGamma = 5102 sumE = 1.532 +29 fGamma = 5858 sumE = 1.594 +30 fGamma = 6726 sumE = 1.647 +31 fGamma = 7722 sumE = 1.691 +32 fGamma = 8866 sumE = 1.728 +33 fGamma = 1.018e+04 sumE = 1.759 +34 fGamma = 1.169e+04 sumE = 1.784 +35 fGamma = 1.342e+04 sumE = 1.805 +36 fGamma = 1.541e+04 sumE = 1.822 +37 fGamma = 1.769e+04 sumE = 1.836 +38 fGamma = 2.031e+04 sumE = 1.847 +39 fGamma = 2.332e+04 sumE = 1.856 +40 fGamma = 2.677e+04 sumE = 1.864 +41 fGamma = 3.074e+04 sumE = 1.871 +42 fGamma = 3.529e+04 sumE = 1.876 +43 fGamma = 4.052e+04 sumE = 1.881 +44 fGamma = 4.652e+04 sumE = 1.885 +45 fGamma = 5.342e+04 sumE = 1.889 +46 fGamma = 6.133e+04 sumE = 1.892 +47 fGamma = 7.042e+04 sumE = 1.895 +48 fGamma = 8.085e+04 sumE = 1.897 +49 fGamma = 9.283e+04 sumE = 1.899 + +total time for build X-ray TR dE/dx tables = 34.53 s +### Run 1 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 845049818, 1399553993 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=52.2291 +- 0.729517 mm + + mean energy deposit in absorber=0.0349823 +- 0.000556839 MeV + + mean number of steps in absorber (charged) =1.99 +- 0.0308853 + mean number of steps in absorber (neutral) =1.457 +- 0.0372847 + + mean number of charged secondaries = 0.977 +- 0.0305691 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.977 and e+s =0 + +(number) transmission coeff=0.607 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1230741481, 297774442 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 3 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Gammma distributed X-ray TR radiator model is called +fAlphaPlate = 160 ; fAlphaGas = 160 +0 fGamma = 107.6 sumE = 0.004089 +1 fGamma = 123.4 sumE = 0.006404 +2 fGamma = 141.5 sumE = 0.009919 +3 fGamma = 162.3 sumE = 0.01502 +4 fGamma = 186.2 sumE = 0.02226 +5 fGamma = 213.7 sumE = 0.03343 +6 fGamma = 245.2 sumE = 0.04775 +7 fGamma = 281.3 sumE = 0.06558 +8 fGamma = 322.9 sumE = 0.09347 +9 fGamma = 370.5 sumE = 0.1394 +10 fGamma = 425.3 sumE = 0.1904 +11 fGamma = 488.2 sumE = 0.2455 +12 fGamma = 560.3 sumE = 0.3134 +13 fGamma = 643.2 sumE = 0.3836 +14 fGamma = 738.3 sumE = 0.4518 +15 fGamma = 847.6 sumE = 0.5229 +16 fGamma = 973 sumE = 0.7238 +17 fGamma = 1117 sumE = 1.225 +18 fGamma = 1282 sumE = 1.713 +19 fGamma = 1472 sumE = 2.101 +20 fGamma = 1690 sumE = 2.378 +21 fGamma = 1940 sumE = 2.628 +22 fGamma = 2228 sumE = 2.736 +23 fGamma = 2558 sumE = 2.798 +24 fGamma = 2936 sumE = 2.385 +25 fGamma = 3371 sumE = 2.242 +26 fGamma = 3871 sumE = 3.371 +27 fGamma = 4444 sumE = 2.766 +28 fGamma = 5102 sumE = 1.331 +29 fGamma = 5858 sumE = 1.311 +30 fGamma = 6726 sumE = 1.298 +31 fGamma = 7722 sumE = 1.289 +32 fGamma = 8866 sumE = 1.282 +33 fGamma = 1.018e+04 sumE = 1.278 +34 fGamma = 1.169e+04 sumE = 1.275 +35 fGamma = 1.342e+04 sumE = 1.274 +36 fGamma = 1.541e+04 sumE = 1.274 +37 fGamma = 1.769e+04 sumE = 1.274 +38 fGamma = 2.031e+04 sumE = 1.275 +39 fGamma = 2.332e+04 sumE = 1.276 +40 fGamma = 2.677e+04 sumE = 1.278 +41 fGamma = 3.074e+04 sumE = 1.28 +42 fGamma = 3.529e+04 sumE = 1.282 +43 fGamma = 4.052e+04 sumE = 1.284 +44 fGamma = 4.652e+04 sumE = 1.285 +45 fGamma = 5.342e+04 sumE = 1.287 +46 fGamma = 6.133e+04 sumE = 1.289 +47 fGamma = 7.042e+04 sumE = 1.291 +48 fGamma = 8.085e+04 sumE = 1.293 +49 fGamma = 9.283e+04 sumE = 1.294 + +total time for build X-ray TR tables = 27.5 s +### Run 2 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1230741481, 297774442 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=48.5237 +- 0.66559 mm + + mean energy deposit in absorber=0.033151 +- 0.00050788 MeV + + mean number of steps in absorber (charged) =1.862 +- 0.0287568 + mean number of steps in absorber (neutral) =1.325 +- 0.0360468 + + mean number of charged secondaries = 0.862 +- 0.0287568 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.862 and e+s =0 + +(number) transmission coeff=0.57 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 741368305, 1780992267 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 4 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Gammma distributed X-ray TR radiator model is called +fAlphaPlate = 160 ; fAlphaGas = 160 +0 fGamma = 107.6 sumE = 0.1089 +1 fGamma = 123.4 sumE = 0.158 +2 fGamma = 141.5 sumE = 0.2245 +3 fGamma = 162.3 sumE = 0.3112 +4 fGamma = 186.2 sumE = 0.4152 +5 fGamma = 213.7 sumE = 0.5535 +6 fGamma = 245.2 sumE = 0.7168 +7 fGamma = 281.3 sumE = 0.8888 +8 fGamma = 322.9 sumE = 1.081 +9 fGamma = 370.5 sumE = 1.349 +10 fGamma = 425.3 sumE = 1.649 +11 fGamma = 488.2 sumE = 1.992 +12 fGamma = 560.3 sumE = 2.431 +13 fGamma = 643.2 sumE = 2.862 +14 fGamma = 738.3 sumE = 3.207 +15 fGamma = 847.6 sumE = 3.475 +16 fGamma = 973 sumE = 3.784 +17 fGamma = 1117 sumE = 4.407 +18 fGamma = 1282 sumE = 4.976 +19 fGamma = 1472 sumE = 5.448 +20 fGamma = 1690 sumE = 5.494 +21 fGamma = 1940 sumE = 5.421 +22 fGamma = 2228 sumE = 5.358 +23 fGamma = 2558 sumE = 4.689 +24 fGamma = 2936 sumE = 4.244 +25 fGamma = 3371 sumE = 4.003 +26 fGamma = 3871 sumE = 3.865 +27 fGamma = 4444 sumE = 3.706 +28 fGamma = 5102 sumE = 1.794 +29 fGamma = 5858 sumE = 1.771 +30 fGamma = 6726 sumE = 1.755 +31 fGamma = 7722 sumE = 1.744 +32 fGamma = 8866 sumE = 1.737 +33 fGamma = 1.018e+04 sumE = 1.732 +34 fGamma = 1.169e+04 sumE = 1.729 +35 fGamma = 1.342e+04 sumE = 1.728 +36 fGamma = 1.541e+04 sumE = 1.727 +37 fGamma = 1.769e+04 sumE = 1.728 +38 fGamma = 2.031e+04 sumE = 1.728 +39 fGamma = 2.332e+04 sumE = 1.73 +40 fGamma = 2.677e+04 sumE = 1.731 +41 fGamma = 3.074e+04 sumE = 1.733 +42 fGamma = 3.529e+04 sumE = 1.735 +43 fGamma = 4.052e+04 sumE = 1.737 +44 fGamma = 4.652e+04 sumE = 1.739 +45 fGamma = 5.342e+04 sumE = 1.741 +46 fGamma = 6.133e+04 sumE = 1.743 +47 fGamma = 7.042e+04 sumE = 1.744 +48 fGamma = 8.085e+04 sumE = 1.746 +49 fGamma = 9.283e+04 sumE = 1.748 + +total time for build X-ray TR dE/dx tables = 44.21 s +### Run 3 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 741368305, 1780992267 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=49.423 +- 0.681815 mm + + mean energy deposit in absorber=0.0344118 +- 0.000577043 MeV + + mean number of steps in absorber (charged) =1.895 +- 0.0296981 + mean number of steps in absorber (neutral) =1.277 +- 0.0362804 + + mean number of charged secondaries = 0.888 +- 0.0296219 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.888 and e+s =0 + +(number) transmission coeff=0.568 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 218123915, 605024314 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 5 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Irregular X-ray TR model is called +0 fGamma = 107.6 sumE = 0.004258 +1 fGamma = 123.4 sumE = 0.006661 +2 fGamma = 141.5 sumE = 0.01025 +3 fGamma = 162.3 sumE = 0.01552 +4 fGamma = 186.2 sumE = 0.02305 +5 fGamma = 213.7 sumE = 0.03376 +6 fGamma = 245.2 sumE = 0.04873 +7 fGamma = 281.3 sumE = 0.0693 +8 fGamma = 322.9 sumE = 0.09709 +9 fGamma = 370.5 sumE = 0.1339 +10 fGamma = 425.3 sumE = 0.182 +11 fGamma = 488.2 sumE = 0.2435 +12 fGamma = 560.3 sumE = 0.3207 +13 fGamma = 643.2 sumE = 0.4161 +14 fGamma = 738.3 sumE = 0.5318 +15 fGamma = 847.6 sumE = 0.6697 +16 fGamma = 973 sumE = 0.8314 +17 fGamma = 1117 sumE = 1.018 +18 fGamma = 1282 sumE = 1.229 +19 fGamma = 1472 sumE = 1.466 +20 fGamma = 1690 sumE = 1.727 +21 fGamma = 1940 sumE = 2.011 +22 fGamma = 2228 sumE = 2.316 +23 fGamma = 2558 sumE = 2.64 +24 fGamma = 2936 sumE = 2.98 +25 fGamma = 3371 sumE = 3.332 +26 fGamma = 3871 sumE = 3.695 +27 fGamma = 4444 sumE = 4.064 +28 fGamma = 5102 sumE = 4.478 +29 fGamma = 5858 sumE = 5.169 +30 fGamma = 6726 sumE = 5.901 +31 fGamma = 7722 sumE = 6.671 +32 fGamma = 8866 sumE = 7.473 +33 fGamma = 1.018e+04 sumE = 8.302 +34 fGamma = 1.169e+04 sumE = 9.152 +35 fGamma = 1.342e+04 sumE = 10.02 +36 fGamma = 1.541e+04 sumE = 10.89 +37 fGamma = 1.769e+04 sumE = 11.76 +38 fGamma = 2.031e+04 sumE = 12.63 +39 fGamma = 2.332e+04 sumE = 13.49 +40 fGamma = 2.677e+04 sumE = 14.33 +41 fGamma = 3.074e+04 sumE = 15.14 +42 fGamma = 3.529e+04 sumE = 15.93 +43 fGamma = 4.052e+04 sumE = 16.69 +44 fGamma = 4.652e+04 sumE = 17.41 +45 fGamma = 5.342e+04 sumE = 18.1 +46 fGamma = 6.133e+04 sumE = 18.74 +47 fGamma = 7.042e+04 sumE = 19.34 +48 fGamma = 8.085e+04 sumE = 19.9 +49 fGamma = 9.283e+04 sumE = 20.41 + +total time for build X-ray TR tables = 5.89 s +### Run 4 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 218123915, 605024314 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=208.682 +- 2.05095 mm + + mean energy deposit in absorber=0.0988536 +- 0.0011919 MeV + + mean number of steps in absorber (charged) =8.751 +- 0.0844452 + mean number of steps in absorber (neutral) =11.428 +- 0.104033 + + mean number of charged secondaries = 7.751 +- 0.0844452 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =7.751 and e+s =0 + +(number) transmission coeff=0.998 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 512746418, 1616290115 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 6 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Irregular X-ray TR dE/dx model is called +0 fGamma = 107.6 sumE = 0.1088 +1 fGamma = 123.4 sumE = 0.1582 +2 fGamma = 141.5 sumE = 0.2245 +3 fGamma = 162.3 sumE = 0.3105 +4 fGamma = 186.2 sumE = 0.4174 +5 fGamma = 213.7 sumE = 0.5494 +6 fGamma = 245.2 sumE = 0.7086 +7 fGamma = 281.3 sumE = 0.8967 +8 fGamma = 322.9 sumE = 1.114 +9 fGamma = 370.5 sumE = 1.361 +10 fGamma = 425.3 sumE = 1.636 +11 fGamma = 488.2 sumE = 1.936 +12 fGamma = 560.3 sumE = 2.26 +13 fGamma = 643.2 sumE = 2.605 +14 fGamma = 738.3 sumE = 2.966 +15 fGamma = 847.6 sumE = 3.34 +16 fGamma = 973 sumE = 3.725 +17 fGamma = 1117 sumE = 4.117 +18 fGamma = 1282 sumE = 4.513 +19 fGamma = 1472 sumE = 4.91 +20 fGamma = 1690 sumE = 5.305 +21 fGamma = 1940 sumE = 5.696 +22 fGamma = 2228 sumE = 6.079 +23 fGamma = 2558 sumE = 6.452 +24 fGamma = 2936 sumE = 6.811 +25 fGamma = 3371 sumE = 7.152 +26 fGamma = 3871 sumE = 7.472 +27 fGamma = 4444 sumE = 7.768 +28 fGamma = 5102 sumE = 8.144 +29 fGamma = 5858 sumE = 9.149 +30 fGamma = 6726 sumE = 10.17 +31 fGamma = 7722 sumE = 11.21 +32 fGamma = 8866 sumE = 12.26 +33 fGamma = 1.018e+04 sumE = 13.31 +34 fGamma = 1.169e+04 sumE = 14.35 +35 fGamma = 1.342e+04 sumE = 15.38 +36 fGamma = 1.541e+04 sumE = 16.4 +37 fGamma = 1.769e+04 sumE = 17.4 +38 fGamma = 2.031e+04 sumE = 18.37 +39 fGamma = 2.332e+04 sumE = 19.31 +40 fGamma = 2.677e+04 sumE = 20.22 +41 fGamma = 3.074e+04 sumE = 21.09 +42 fGamma = 3.529e+04 sumE = 21.93 +43 fGamma = 4.052e+04 sumE = 22.72 +44 fGamma = 4.652e+04 sumE = 23.47 +45 fGamma = 5.342e+04 sumE = 24.18 +46 fGamma = 6.133e+04 sumE = 24.84 +47 fGamma = 7.042e+04 sumE = 25.46 +48 fGamma = 8.085e+04 sumE = 26.03 +49 fGamma = 9.283e+04 sumE = 26.55 + +total time for build X-ray TR dE/dx tables = 11.96 s +### Run 5 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 512746418, 1616290115 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=208.703 +- 2.14486 mm + + mean energy deposit in absorber=0.0990678 +- 0.00115941 MeV + + mean number of steps in absorber (charged) =8.714 +- 0.0872823 + mean number of steps in absorber (neutral) =11.258 +- 0.108173 + + mean number of charged secondaries = 7.612 +- 0.0868646 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =7.612 and e+s =0 + +(number) transmission coeff=0.999 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 812561195, 1346040706 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 7 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +PlateIrrGas X-ray TR radiator model is called +0 fGamma = 107.6 sumE = 0.004086 +1 fGamma = 123.4 sumE = 0.006405 +2 fGamma = 141.5 sumE = 0.00993 +3 fGamma = 162.3 sumE = 0.01502 +4 fGamma = 186.2 sumE = 0.02208 +5 fGamma = 213.7 sumE = 0.0339 +6 fGamma = 245.2 sumE = 0.0481 +7 fGamma = 281.3 sumE = 0.06463 +8 fGamma = 322.9 sumE = 0.09286 +9 fGamma = 370.5 sumE = 0.1389 +10 fGamma = 425.3 sumE = 0.1959 +11 fGamma = 488.2 sumE = 0.2531 +12 fGamma = 560.3 sumE = 0.306 +13 fGamma = 643.2 sumE = 0.365 +14 fGamma = 738.3 sumE = 0.4427 +15 fGamma = 847.6 sumE = 0.5631 +16 fGamma = 973 sumE = 0.7273 +17 fGamma = 1117 sumE = 0.9532 +18 fGamma = 1282 sumE = 1.258 +19 fGamma = 1472 sumE = 1.602 +20 fGamma = 1690 sumE = 1.962 +21 fGamma = 1940 sumE = 2.373 +22 fGamma = 2228 sumE = 2.865 +23 fGamma = 2558 sumE = 3.425 +24 fGamma = 2936 sumE = 4.001 +25 fGamma = 3371 sumE = 4.542 +26 fGamma = 3871 sumE = 5.012 +27 fGamma = 4444 sumE = 5.397 +28 fGamma = 5102 sumE = 5.758 +29 fGamma = 5858 sumE = 6.464 +30 fGamma = 6726 sumE = 7.176 +31 fGamma = 7722 sumE = 7.888 +32 fGamma = 8866 sumE = 8.596 +33 fGamma = 1.018e+04 sumE = 9.293 +34 fGamma = 1.169e+04 sumE = 9.974 +35 fGamma = 1.342e+04 sumE = 10.63 +36 fGamma = 1.541e+04 sumE = 11.27 +37 fGamma = 1.769e+04 sumE = 11.87 +38 fGamma = 2.031e+04 sumE = 12.44 +39 fGamma = 2.332e+04 sumE = 12.97 +40 fGamma = 2.677e+04 sumE = 13.46 +41 fGamma = 3.074e+04 sumE = 13.9 +42 fGamma = 3.529e+04 sumE = 14.3 +43 fGamma = 4.052e+04 sumE = 14.66 +44 fGamma = 4.652e+04 sumE = 14.97 +45 fGamma = 5.342e+04 sumE = 15.25 +46 fGamma = 6.133e+04 sumE = 15.48 +47 fGamma = 7.042e+04 sumE = 15.68 +48 fGamma = 8.085e+04 sumE = 15.86 +49 fGamma = 9.283e+04 sumE = 16 + +total time for build X-ray TR tables = 10.29 s +### Run 6 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 812561195, 1346040706 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=255.831 +- 2.44406 mm + + mean energy deposit in absorber=0.104919 +- 0.00104361 MeV + + mean number of steps in absorber (charged) =10.672 +- 0.101096 + mean number of steps in absorber (neutral) =11.731 +- 0.110493 + + mean number of charged secondaries = 9.671 +- 0.101118 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =9.671 and e+s =0 + +(number) transmission coeff=1 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 156064026, 1431891920 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 8 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +PlateIrrGas X-ray TR radiator model is called +0 fGamma = 107.6 sumE = 0.1092 +1 fGamma = 123.4 sumE = 0.1581 +2 fGamma = 141.5 sumE = 0.2232 +3 fGamma = 162.3 sumE = 0.3109 +4 fGamma = 186.2 sumE = 0.4159 +5 fGamma = 213.7 sumE = 0.5576 +6 fGamma = 245.2 sumE = 0.7202 +7 fGamma = 281.3 sumE = 0.8948 +8 fGamma = 322.9 sumE = 1.101 +9 fGamma = 370.5 sumE = 1.353 +10 fGamma = 425.3 sumE = 1.639 +11 fGamma = 488.2 sumE = 1.952 +12 fGamma = 560.3 sumE = 2.222 +13 fGamma = 643.2 sumE = 2.552 +14 fGamma = 738.3 sumE = 2.825 +15 fGamma = 847.6 sumE = 3.185 +16 fGamma = 973 sumE = 3.515 +17 fGamma = 1117 sumE = 3.902 +18 fGamma = 1282 sumE = 4.418 +19 fGamma = 1472 sumE = 4.931 +20 fGamma = 1690 sumE = 5.387 +21 fGamma = 1940 sumE = 5.857 +22 fGamma = 2228 sumE = 6.401 +23 fGamma = 2558 sumE = 7.008 +24 fGamma = 2936 sumE = 7.62 +25 fGamma = 3371 sumE = 8.174 +26 fGamma = 3871 sumE = 8.629 +27 fGamma = 4444 sumE = 8.965 +28 fGamma = 5102 sumE = 9.306 +29 fGamma = 5858 sumE = 10.32 +30 fGamma = 6726 sumE = 11.32 +31 fGamma = 7722 sumE = 12.3 +32 fGamma = 8866 sumE = 13.25 +33 fGamma = 1.018e+04 sumE = 14.17 +34 fGamma = 1.169e+04 sumE = 15.04 +35 fGamma = 1.342e+04 sumE = 15.87 +36 fGamma = 1.541e+04 sumE = 16.66 +37 fGamma = 1.769e+04 sumE = 17.39 +38 fGamma = 2.031e+04 sumE = 18.06 +39 fGamma = 2.332e+04 sumE = 18.69 +40 fGamma = 2.677e+04 sumE = 19.25 +41 fGamma = 3.074e+04 sumE = 19.76 +42 fGamma = 3.529e+04 sumE = 20.21 +43 fGamma = 4.052e+04 sumE = 20.61 +44 fGamma = 4.652e+04 sumE = 20.95 +45 fGamma = 5.342e+04 sumE = 21.25 +46 fGamma = 6.133e+04 sumE = 21.51 +47 fGamma = 7.042e+04 sumE = 21.73 +48 fGamma = 8.085e+04 sumE = 21.91 +49 fGamma = 9.283e+04 sumE = 22.07 + +total time for build X-ray TR dE/dx tables = 23.22 s +### Run 7 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 156064026, 1431891920 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=265.366 +- 2.48283 mm + + mean energy deposit in absorber=0.105211 +- 0.00101336 MeV + + mean number of steps in absorber (charged) =10.905 +- 0.10023 + mean number of steps in absorber (neutral) =11.678 +- 0.107305 + + mean number of charged secondaries = 9.798 +- 0.0995249 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =9.798 and e+s =0 + +(number) transmission coeff=0.999 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1316583305, 1951149088 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 9 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Regular X-ray TR radiator model is called +0 fGamma = 107.6 sumE = 0.004757 +1 fGamma = 123.4 sumE = 0.006213 +2 fGamma = 141.5 sumE = 0.008651 +3 fGamma = 162.3 sumE = 0.01573 +4 fGamma = 186.2 sumE = 0.02543 +5 fGamma = 213.7 sumE = 0.03201 +6 fGamma = 245.2 sumE = 0.05278 +7 fGamma = 281.3 sumE = 0.05867 +8 fGamma = 322.9 sumE = 0.1018 +9 fGamma = 370.5 sumE = 0.1469 +10 fGamma = 425.3 sumE = 0.1786 +11 fGamma = 488.2 sumE = 0.2919 +12 fGamma = 560.3 sumE = 0.3108 +13 fGamma = 643.2 sumE = 0.2985 +14 fGamma = 738.3 sumE = 0.4656 +15 fGamma = 847.6 sumE = 0.5473 +16 fGamma = 973 sumE = 0.911 +17 fGamma = 1117 sumE = 1.469 +18 fGamma = 1282 sumE = 1.626 +19 fGamma = 1472 sumE = 2.145 +20 fGamma = 1690 sumE = 2.212 +21 fGamma = 1940 sumE = 2.643 +22 fGamma = 2228 sumE = 2.875 +23 fGamma = 2558 sumE = 2.505 +24 fGamma = 2936 sumE = 2.271 +25 fGamma = 3371 sumE = 1.625 +26 fGamma = 3871 sumE = 3.543 +27 fGamma = 4444 sumE = 2.547 +28 fGamma = 5102 sumE = 1.326 +29 fGamma = 5858 sumE = 1.079 +30 fGamma = 6726 sumE = 1.166 +31 fGamma = 7722 sumE = 1.652 +32 fGamma = 8866 sumE = 0.8713 +33 fGamma = 1.018e+04 sumE = 1.478 +34 fGamma = 1.169e+04 sumE = 1.245 +35 fGamma = 1.342e+04 sumE = 1.203 +36 fGamma = 1.541e+04 sumE = 1.272 +37 fGamma = 1.769e+04 sumE = 0.8468 +38 fGamma = 2.031e+04 sumE = 0.7525 +39 fGamma = 2.332e+04 sumE = 0.9297 +40 fGamma = 2.677e+04 sumE = 1.099 +41 fGamma = 3.074e+04 sumE = 1.196 +42 fGamma = 3.529e+04 sumE = 1.23 +43 fGamma = 4.052e+04 sumE = 1.232 +44 fGamma = 4.652e+04 sumE = 1.226 +45 fGamma = 5.342e+04 sumE = 1.222 +46 fGamma = 6.133e+04 sumE = 1.223 +47 fGamma = 7.042e+04 sumE = 1.226 +48 fGamma = 8.085e+04 sumE = 1.231 +49 fGamma = 9.283e+04 sumE = 1.235 + +total time for build X-ray TR tables = 30.54 s +### Run 8 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1316583305, 1951149088 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=40.0234 +- 0.50338 mm + + mean energy deposit in absorber=0.0313219 +- 0.000513749 MeV + + mean number of steps in absorber (charged) =1.473 +- 0.0217548 + mean number of steps in absorber (neutral) =0.849 +- 0.0297355 + + mean number of charged secondaries = 0.473 +- 0.0217548 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.473 and e+s =0 + +(number) transmission coeff=0.34 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1257652858, 1424164160 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 10 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Regular X-ray TR dE/dx radiator model is called +0 fGamma = 107.6 sumE = 0.1102 +1 fGamma = 123.4 sumE = 0.1591 +2 fGamma = 141.5 sumE = 0.2276 +3 fGamma = 162.3 sumE = 0.3018 +4 fGamma = 186.2 sumE = 0.4444 +5 fGamma = 213.7 sumE = 0.5486 +6 fGamma = 245.2 sumE = 0.6789 +7 fGamma = 281.3 sumE = 0.8374 +8 fGamma = 322.9 sumE = 1.005 +9 fGamma = 370.5 sumE = 1.384 +10 fGamma = 425.3 sumE = 1.644 +11 fGamma = 488.2 sumE = 2.001 +12 fGamma = 560.3 sumE = 2.464 +13 fGamma = 643.2 sumE = 2.98 +14 fGamma = 738.3 sumE = 3.457 +15 fGamma = 847.6 sumE = 3.391 +16 fGamma = 973 sumE = 3.782 +17 fGamma = 1117 sumE = 4.33 +18 fGamma = 1282 sumE = 5.624 +19 fGamma = 1472 sumE = 5.355 +20 fGamma = 1690 sumE = 5.291 +21 fGamma = 1940 sumE = 4.926 +22 fGamma = 2228 sumE = 5.24 +23 fGamma = 2558 sumE = 4.833 +24 fGamma = 2936 sumE = 4.372 +25 fGamma = 3371 sumE = 3.614 +26 fGamma = 3871 sumE = 3.926 +27 fGamma = 4444 sumE = 3.907 +28 fGamma = 5102 sumE = 1.839 +29 fGamma = 5858 sumE = 1.708 +30 fGamma = 6726 sumE = 1.732 +31 fGamma = 7722 sumE = 1.743 +32 fGamma = 8866 sumE = 1.779 +33 fGamma = 1.018e+04 sumE = 1.613 +34 fGamma = 1.169e+04 sumE = 1.79 +35 fGamma = 1.342e+04 sumE = 1.682 +36 fGamma = 1.541e+04 sumE = 1.668 +37 fGamma = 1.769e+04 sumE = 1.68 +38 fGamma = 2.031e+04 sumE = 1.724 +39 fGamma = 2.332e+04 sumE = 1.726 +40 fGamma = 2.677e+04 sumE = 1.705 +41 fGamma = 3.074e+04 sumE = 1.672 +42 fGamma = 3.529e+04 sumE = 1.647 +43 fGamma = 4.052e+04 sumE = 1.637 +44 fGamma = 4.652e+04 sumE = 1.632 +45 fGamma = 5.342e+04 sumE = 1.631 +46 fGamma = 6.133e+04 sumE = 1.631 +47 fGamma = 7.042e+04 sumE = 1.632 +48 fGamma = 8.085e+04 sumE = 1.633 +49 fGamma = 9.283e+04 sumE = 1.634 + +total time for build X-ray TR dE/dx tables = 45.95 s +### Run 9 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1257652858, 1424164160 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=47.5595 +- 0.655577 mm + + mean energy deposit in absorber=0.0339646 +- 0.000553672 MeV + + mean number of steps in absorber (charged) =1.812 +- 0.0282959 + mean number of steps in absorber (neutral) =1.206 +- 0.0349223 + + mean number of charged secondaries = 0.805 +- 0.0282307 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.805 and e+s =0 + +(number) transmission coeff=0.536 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1542312066, 1872262965 +---------------------------------------- +Graphics systems deleted. +Visualization Manager deleting... diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.out b/examples/extended/electromagnetic/TestEm10/TestEm10.out new file mode 100644 index 0000000000..645a3a82f0 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.out @@ -0,0 +1,1148 @@ +********************************************** + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) + Copyright : Geant4 Collaboration +********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) + FukuiRenderer (DAWN) + OpenGLImmediateX (OGLIX) + OpenGLStoredX (OGLSX) + OpenGLImmediateXm (OGLIXm) + OpenGLStoredXm (OGLSXm) + +***** Table : Nb of materials = 28 ***** + + Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm + ---> Element: Aluminium Z = 13.0 N = 27.0 A = 26.98 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: TRT_CH2 density: 935.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 27.414 cm + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + + Material: Radiator density: 59.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 4.344 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + + Material: CarbonFiber density: 145.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.473 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Li density: 534.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.550 m + ---> Element: Lithium Li Z = 3.0 N = 6.9 A = 6.94 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Be density: 1.848 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 35.267 cm + ---> Element: Berillium Be Z = 4.0 N = 9.0 A = 9.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Mylar density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 19.770 cm + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 48.42 % Abundance 18.18 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 45.47 % Abundance 45.45 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 6.11 % Abundance 36.36 % + + Material: Kapton density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 19.770 cm + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 48.42 % Abundance 18.18 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 45.47 % Abundance 45.45 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 6.11 % Abundance 36.36 % + + Material: Polypropelene density: 910.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.167 cm + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + + Material: He density: 0.178 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.299 km + ---> Element: He Z = 2.0 N = 4.0 A = 4.00 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Ne density: 0.900 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 321.456 m + ---> Element: Ne Z = 10.0 N = 20.2 A = 20.18 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Argon density: 1.784 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 109.604 m + ---> Element: Argon Ar Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Kr density: 3.700 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 30.736 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Xenon density: 5.858 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.478 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: CH4 density: 0.717 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 405.758 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 59.80 % Abundance 20.00 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 40.20 % Abundance 80.00 % + + Material: C3H8 density: 2.005 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 134.002 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 69.05 % Abundance 27.27 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 30.95 % Abundance 72.73 % + + Material: isoC4H10 density: 2.670 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 99.499 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 70.42 % Abundance 28.57 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 29.58 % Abundance 71.43 % + + Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 158.123 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 15.81 % Abundance 33.33 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 84.19 % Abundance 66.67 % + + Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 158.123 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 15.81 % Abundance 33.33 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 84.19 % Abundance 66.67 % + + Material: N2 density: 1.251 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.846 m + ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: O2 density: 1.429 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 239.621 m + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Air density: 1.293 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 283.293 m + ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 75.57 % Abundance 78.48 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 23.15 % Abundance 21.05 % + ---> Element: Argon Ar Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 1.28 % Abundance 0.47 % + + Material: Xe20CO2 density: 5.082 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.695 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 92.20 % Abundance 53.29 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.23 % Abundance 15.57 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 6.57 % Abundance 31.14 % + + Material: Kr20CO2 density: 3.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 33.957 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 89.00 % Abundance 55.02 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.74 % Abundance 14.99 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 9.26 % Abundance 29.99 % + + Material: Xe55He15CH4 density: 1.963 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 47.193 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 89.50 % Abundance 14.61 % + ---> Element: He Z = 2.0 N = 4.0 A = 4.00 g/mole fractionMass: 5.00 % Abundance 26.77 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 3.29 % Abundance 11.73 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 2.21 % Abundance 46.90 % + + Material: Xe10CH4 density: 5.344 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 16.018 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 98.70 % Abundance 53.75 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 0.78 % Abundance 9.25 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 0.52 % Abundance 37.00 % + + Material: Xe5CH4 density: 5.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 15.207 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 99.40 % Abundance 71.72 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 0.36 % Abundance 5.66 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 0.24 % Abundance 22.62 % + + Material: Xe20CH4 density: 4.830 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.941 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 97.00 % Abundance 33.11 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.79 % Abundance 13.38 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 1.21 % Abundance 53.51 % + + + + The WORLD is made of 800mm of He, the transverse size (R) of the world is 200 mm. + The ABSORBER is made of 30mm of Xe10CH4, the transverse size (R) is 100 mm. + Z position of the (middle of the) absorber 360 mm. + +zRad = 75.4 mm +radThick = 60.96 mm +fFoilNumber = 300 +fRadiatorMat = Li +WorldMaterial = He +zModule = 50.04 mm +50.04 mm 50.206 mm 50.372 mm 50.538 mm 50.704 mm 50.87 mm 51.036 mm 51.202 mm 51.368 mm 51.534 mm 51.7 mm 51.866 mm 52.032 mm 52.198 mm 52.364 mm 52.53 mm 52.696 mm 52.862 mm 53.028 mm 53.194 mm 53.36 mm 53.526 mm 53.692 mm 53.858 mm 54.024 mm 54.19 mm 54.356 mm 54.522 mm 54.688 mm 54.854 mm 55.02 mm 55.186 mm 55.352 mm 55.518 mm 55.684 mm 55.85 mm 56.016 mm 56.182 mm 56.348 mm 56.514 mm 56.68 mm 56.846 mm 57.012 mm 57.178 mm 57.344 mm 57.51 mm 57.676 mm 57.842 mm 58.008 mm 58.174 mm 58.34 mm 58.506 mm 58.672 mm 58.838 mm 59.004 mm 59.17 mm 59.336 mm 59.502 mm 59.668 mm 59.834 mm 60 mm 60.166 mm 60.332 mm 60.498 mm 60.664 mm 60.83 mm 60.996 mm 61.162 mm 61.328 mm 61.494 mm 61.66 mm 61.826 mm 61.992 mm 62.158 mm 62.324 mm 62.49 mm 62.656 mm 62.822 mm 62.988 mm 63.154 mm 63.32 mm 63.486 mm 63.652 mm 63.818 mm 63.984 mm 64.15 mm 64.316 mm 64.482 mm 64.648 mm 64.814 mm 64.98 mm 65.146 mm 65.312 mm 65.478 mm 65.644 mm 65.81 mm 65.976 mm 66.142 mm 66.308 mm 66.474 mm 66.64 mm 66.806 mm 66.972 mm 67.138 mm 67.304 mm 67.47 mm 67.636 mm 67.802 mm 67.968 mm 68.134 mm 68.3 mm 68.466 mm 68.632 mm 68.798 mm 68.964 mm 69.13 mm 69.296 mm 69.462 mm 69.628 mm 69.794 mm 69.96 mm 70.126 mm 70.292 mm 70.458 mm 70.624 mm 70.79 mm 70.956 mm 71.122 mm 71.288 mm 71.454 mm 71.62 mm 71.786 mm 71.952 mm 72.118 mm 72.284 mm 72.45 mm 72.616 mm 72.782 mm 72.948 mm 73.114 mm 73.28 mm 73.446 mm 73.612 mm 73.778 mm 73.944 mm 74.11 mm 74.276 mm 74.442 mm 74.608 mm 74.774 mm 74.94 mm 75.106 mm 75.272 mm 75.438 mm 75.604 mm 75.77 mm 75.936 mm 76.102 mm 76.268 mm 76.434 mm 76.6 mm 76.766 mm 76.932 mm 77.098 mm 77.264 mm 77.43 mm 77.596 mm 77.762 mm 77.928 mm 78.094 mm 78.26 mm 78.426 mm 78.592 mm 78.758 mm 78.924 mm 79.09 mm 79.256 mm 79.422 mm 79.588 mm 79.754 mm 79.92 mm 80.086 mm 80.252 mm 80.418 mm 80.584 mm 80.75 mm 80.916 mm 81.082 mm 81.248 mm 81.414 mm 81.58 mm 81.746 mm 81.912 mm 82.078 mm 82.244 mm 82.41 mm 82.576 mm 82.742 mm 82.908 mm 83.074 mm 83.24 mm 83.406 mm 83.572 mm 83.738 mm 83.904 mm 84.07 mm 84.236 mm 84.402 mm 84.568 mm 84.734 mm 84.9 mm 85.066 mm 85.232 mm 85.398 mm 85.564 mm 85.73 mm 85.896 mm 86.062 mm 86.228 mm 86.394 mm 86.56 mm 86.726 mm 86.892 mm 87.058 mm 87.224 mm 87.39 mm 87.556 mm 87.722 mm 87.888 mm 88.054 mm 88.22 mm 88.386 mm 88.552 mm 88.718 mm 88.884 mm 89.05 mm 89.216 mm 89.382 mm 89.548 mm 89.714 mm 89.88 mm 90.046 mm 90.212 mm 90.378 mm 90.544 mm 90.71 mm 90.876 mm 91.042 mm 91.208 mm 91.374 mm 91.54 mm 91.706 mm 91.872 mm 92.038 mm 92.204 mm 92.37 mm 92.536 mm 92.702 mm 92.868 mm 93.034 mm 93.2 mm 93.366 mm 93.532 mm 93.698 mm 93.864 mm 94.03 mm 94.196 mm 94.362 mm 94.528 mm 94.694 mm 94.86 mm 95.026 mm 95.192 mm 95.358 mm 95.524 mm 95.69 mm 95.856 mm 96.022 mm 96.188 mm 96.354 mm 96.52 mm 96.686 mm 96.852 mm 97.018 mm 97.184 mm 97.35 mm 97.516 mm 97.682 mm 97.848 mm 98.014 mm 98.18 mm 98.346 mm 98.512 mm 98.678 mm 98.844 mm 99.01 mm 99.176 mm 99.342 mm 99.508 mm 99.674 mm +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 0 +Warning: No parametrisation model was defined? +Em10PhysicsList::SetCuts:CutLength : 1 mm + +phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z + Sandia crossSection below 50 KeV + PhysicsTables from 50 keV to 50 MeV in 100 bins. + +compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. + +conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. + e+e- energies according Bethe-Heitler + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. + +eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. + Good description from 1 KeV to 100 GeV. + log scale extrapolation above 100 GeV + Gamma energy sampled from a parametrised formula. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +hIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +total time(SetCuts)=14.35 s +============= The cut Energy ============================== + gamma e- +Cut in range + Aluminium 1 mm 1 mm + TRT_CH2 1 mm 1 mm + Radiator 1 mm 1 mm + CarbonFiber 1 mm 1 mm + Li 1 mm 1 mm + Be 1 mm 1 mm + Mylar 1 mm 1 mm + Kapton 1 mm 1 mm + Polypropelene 1 mm 1 mm + He 1 mm 1 mm + Ne 1 mm 1 mm + Argon 1 mm 1 mm + Kr 1 mm 1 mm + Xenon 1 mm 1 mm + CH4 1 mm 1 mm + C3H8 1 mm 1 mm + isoC4H10 1 mm 1 mm + CO2 1 mm 1 mm + CO2 1 mm 1 mm + N2 1 mm 1 mm + O2 1 mm 1 mm + Air 1 mm 1 mm + Xe20CO2 1 mm 1 mm + Kr20CO2 1 mm 1 mm + Xe55He15CH4 1 mm 1 mm + Xe10CH4 1 mm 1 mm + Xe5CH4 1 mm 1 mm + Xe20CH4 1 mm 1 mm +Cut in energy + Aluminium 6.89 keV 597 keV + TRT_CH2 2.78 keV 515 keV + Radiator 990 eV 89.6 keV + CarbonFiber 1.52 keV 147 keV + Li 1.16 keV 207 keV + Be 1.99 keV 466 keV + Mylar 3.48 keV 541 keV + Kapton 3.48 keV 541 keV + Polypropelene 2.75 keV 502 keV + He 990 eV 990 eV + Ne 990 eV 990 eV + Argon 990 eV 990 eV + Kr 990 eV 1.07 keV + Xenon 990 eV 1.95 keV + CH4 990 eV 990 eV + C3H8 990 eV 990 eV + isoC4H10 990 eV 1.45 keV + CO2 990 eV 990 eV + CO2 990 eV 990 eV + N2 990 eV 990 eV + O2 990 eV 990 eV + Air 990 eV 990 eV + Xe20CO2 990 eV 1.67 keV + Kr20CO2 990 eV 1.09 keV + Xe55He15CH4 990 eV 990 eV + Xe10CH4 990 eV 1.74 keV + Xe5CH4 990 eV 1.83 keV + Xe20CH4 990 eV 1.54 keV +=================================================== +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 1 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Foam X-ray TR radiator model is called +0 fGamma = 107.6 sumE = 0.004254 +1 fGamma = 123.4 sumE = 0.006653 +2 fGamma = 141.5 sumE = 0.01023 +3 fGamma = 162.3 sumE = 0.01548 +4 fGamma = 186.2 sumE = 0.02297 +5 fGamma = 213.7 sumE = 0.0336 +6 fGamma = 245.2 sumE = 0.04841 +7 fGamma = 281.3 sumE = 0.06867 +8 fGamma = 322.9 sumE = 0.09587 +9 fGamma = 370.5 sumE = 0.1317 +10 fGamma = 425.3 sumE = 0.1778 +11 fGamma = 488.2 sumE = 0.2359 +12 fGamma = 560.3 sumE = 0.3073 +13 fGamma = 643.2 sumE = 0.393 +14 fGamma = 738.3 sumE = 0.4929 +15 fGamma = 847.6 sumE = 0.6058 +16 fGamma = 973 sumE = 0.7292 +17 fGamma = 1117 sumE = 0.859 +18 fGamma = 1282 sumE = 0.9897 +19 fGamma = 1472 sumE = 1.115 +20 fGamma = 1690 sumE = 1.227 +21 fGamma = 1940 sumE = 1.319 +22 fGamma = 2228 sumE = 1.386 +23 fGamma = 2558 sumE = 1.422 +24 fGamma = 2936 sumE = 1.424 +25 fGamma = 3371 sumE = 1.393 +26 fGamma = 3871 sumE = 1.329 +27 fGamma = 4444 sumE = 1.237 +28 fGamma = 5102 sumE = 1.15 +29 fGamma = 5858 sumE = 1.208 +30 fGamma = 6726 sumE = 1.257 +31 fGamma = 7722 sumE = 1.298 +32 fGamma = 8866 sumE = 1.333 +33 fGamma = 1.018e+04 sumE = 1.362 +34 fGamma = 1.169e+04 sumE = 1.385 +35 fGamma = 1.342e+04 sumE = 1.405 +36 fGamma = 1.541e+04 sumE = 1.421 +37 fGamma = 1.769e+04 sumE = 1.434 +38 fGamma = 2.031e+04 sumE = 1.445 +39 fGamma = 2.332e+04 sumE = 1.454 +40 fGamma = 2.677e+04 sumE = 1.461 +41 fGamma = 3.074e+04 sumE = 1.468 +42 fGamma = 3.529e+04 sumE = 1.473 +43 fGamma = 4.052e+04 sumE = 1.477 +44 fGamma = 4.652e+04 sumE = 1.481 +45 fGamma = 5.342e+04 sumE = 1.485 +46 fGamma = 6.133e+04 sumE = 1.488 +47 fGamma = 7.042e+04 sumE = 1.49 +48 fGamma = 8.085e+04 sumE = 1.493 +49 fGamma = 9.283e+04 sumE = 1.495 + +total time for build X-ray TR tables = 26.38 s +### Run 0 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 9876, 54321 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 1000 + mean charged track length in absorber=50.6091 +- 0.713142 mm + + mean energy deposit in absorber=NaN +- 0 MeV + + mean number of steps in absorber (charged) =1.945 +- 0.0304627 + mean number of steps in absorber (neutral) =1.394 +- 0.0379047 + + mean number of charged secondaries = 0.944 +- 0.0304773 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.944 and e+s =0 + +(number) transmission coeff=0.584 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 9378578, 64175451 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 2 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Foam XTR dE/dx model is called +0 fGamma = 107.6 sumE = 0.1086 +1 fGamma = 123.4 sumE = 0.158 +2 fGamma = 141.5 sumE = 0.224 +3 fGamma = 162.3 sumE = 0.3095 +4 fGamma = 186.2 sumE = 0.4155 +5 fGamma = 213.7 sumE = 0.546 +6 fGamma = 245.2 sumE = 0.7026 +7 fGamma = 281.3 sumE = 0.8863 +8 fGamma = 322.9 sumE = 1.096 +9 fGamma = 370.5 sumE = 1.331 +10 fGamma = 425.3 sumE = 1.587 +11 fGamma = 488.2 sumE = 1.857 +12 fGamma = 560.3 sumE = 2.133 +13 fGamma = 643.2 sumE = 2.406 +14 fGamma = 738.3 sumE = 2.664 +15 fGamma = 847.6 sumE = 2.895 +16 fGamma = 973 sumE = 3.087 +17 fGamma = 1117 sumE = 3.23 +18 fGamma = 1282 sumE = 3.315 +19 fGamma = 1472 sumE = 3.338 +20 fGamma = 1690 sumE = 3.296 +21 fGamma = 1940 sumE = 3.191 +22 fGamma = 2228 sumE = 3.028 +23 fGamma = 2558 sumE = 2.816 +24 fGamma = 2936 sumE = 2.567 +25 fGamma = 3371 sumE = 2.297 +26 fGamma = 3871 sumE = 2.018 +27 fGamma = 4444 sumE = 1.745 +28 fGamma = 5102 sumE = 1.532 +29 fGamma = 5858 sumE = 1.594 +30 fGamma = 6726 sumE = 1.647 +31 fGamma = 7722 sumE = 1.691 +32 fGamma = 8866 sumE = 1.728 +33 fGamma = 1.018e+04 sumE = 1.759 +34 fGamma = 1.169e+04 sumE = 1.784 +35 fGamma = 1.342e+04 sumE = 1.805 +36 fGamma = 1.541e+04 sumE = 1.822 +37 fGamma = 1.769e+04 sumE = 1.836 +38 fGamma = 2.031e+04 sumE = 1.847 +39 fGamma = 2.332e+04 sumE = 1.856 +40 fGamma = 2.677e+04 sumE = 1.864 +41 fGamma = 3.074e+04 sumE = 1.871 +42 fGamma = 3.529e+04 sumE = 1.876 +43 fGamma = 4.052e+04 sumE = 1.881 +44 fGamma = 4.652e+04 sumE = 1.885 +45 fGamma = 5.342e+04 sumE = 1.889 +46 fGamma = 6.133e+04 sumE = 1.892 +47 fGamma = 7.042e+04 sumE = 1.895 +48 fGamma = 8.085e+04 sumE = 1.897 +49 fGamma = 9.283e+04 sumE = 1.899 + +total time for build X-ray TR dE/dx tables = 58.94 s +### Run 1 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 9378578, 64175451 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=71.2799 +- 12.9164 mm + + mean energy deposit in absorber=0.0384702 +- 0.0076507 MeV + + mean number of steps in absorber (charged) =2.6 +- 0.473286 + mean number of steps in absorber (neutral) =1.7 +- 0.548635 + + mean number of charged secondaries = 1.6 +- 0.473286 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =1.6 and e+s =0 + +(number) transmission coeff=0.7 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1116992281, 882134091 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 3 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Gammma distributed X-ray TR radiator model is called +fAlphaPlate = 160 ; fAlphaGas = 160 +0 fGamma = 107.6 sumE = 0.004089 +1 fGamma = 123.4 sumE = 0.006404 +2 fGamma = 141.5 sumE = 0.009919 +3 fGamma = 162.3 sumE = 0.01502 +4 fGamma = 186.2 sumE = 0.02226 +5 fGamma = 213.7 sumE = 0.03343 +6 fGamma = 245.2 sumE = 0.04775 +7 fGamma = 281.3 sumE = 0.06558 +8 fGamma = 322.9 sumE = 0.09347 +9 fGamma = 370.5 sumE = 0.1394 +10 fGamma = 425.3 sumE = 0.1904 +11 fGamma = 488.2 sumE = 0.2455 +12 fGamma = 560.3 sumE = 0.3134 +13 fGamma = 643.2 sumE = 0.3836 +14 fGamma = 738.3 sumE = 0.4518 +15 fGamma = 847.6 sumE = 0.5229 +16 fGamma = 973 sumE = 0.7238 +17 fGamma = 1117 sumE = 1.225 +18 fGamma = 1282 sumE = 1.713 +19 fGamma = 1472 sumE = 2.101 +20 fGamma = 1690 sumE = 2.378 +21 fGamma = 1940 sumE = 2.628 +22 fGamma = 2228 sumE = 2.736 +23 fGamma = 2558 sumE = 2.798 +24 fGamma = 2936 sumE = 2.385 +25 fGamma = 3371 sumE = 2.242 +26 fGamma = 3871 sumE = 3.371 +27 fGamma = 4444 sumE = 2.766 +28 fGamma = 5102 sumE = 1.331 +29 fGamma = 5858 sumE = 1.311 +30 fGamma = 6726 sumE = 1.298 +31 fGamma = 7722 sumE = 1.289 +32 fGamma = 8866 sumE = 1.282 +33 fGamma = 1.018e+04 sumE = 1.278 +34 fGamma = 1.169e+04 sumE = 1.275 +35 fGamma = 1.342e+04 sumE = 1.274 +36 fGamma = 1.541e+04 sumE = 1.274 +37 fGamma = 1.769e+04 sumE = 1.274 +38 fGamma = 2.031e+04 sumE = 1.275 +39 fGamma = 2.332e+04 sumE = 1.276 +40 fGamma = 2.677e+04 sumE = 1.278 +41 fGamma = 3.074e+04 sumE = 1.28 +42 fGamma = 3.529e+04 sumE = 1.282 +43 fGamma = 4.052e+04 sumE = 1.284 +44 fGamma = 4.652e+04 sumE = 1.285 +45 fGamma = 5.342e+04 sumE = 1.287 +46 fGamma = 6.133e+04 sumE = 1.289 +47 fGamma = 7.042e+04 sumE = 1.291 +48 fGamma = 8.085e+04 sumE = 1.293 +49 fGamma = 9.283e+04 sumE = 1.294 + +total time for build X-ray TR tables = 43.84 s +### Run 2 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1116992281, 882134091 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=50.5929 +- 7.71991 mm + + mean energy deposit in absorber=0.0357231 +- 0.00517527 MeV + + mean number of steps in absorber (charged) =1.9 +- 0.330151 + mean number of steps in absorber (neutral) =1.7 +- 0.317805 + + mean number of charged secondaries = 0.9 +- 0.330151 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.9 and e+s =0 + +(number) transmission coeff=0.5 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 2105126488, 636122787 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 4 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Gammma distributed X-ray TR radiator model is called +fAlphaPlate = 160 ; fAlphaGas = 160 +0 fGamma = 107.6 sumE = 0.1089 +1 fGamma = 123.4 sumE = 0.158 +2 fGamma = 141.5 sumE = 0.2245 +3 fGamma = 162.3 sumE = 0.3112 +4 fGamma = 186.2 sumE = 0.4152 +5 fGamma = 213.7 sumE = 0.5535 +6 fGamma = 245.2 sumE = 0.7168 +7 fGamma = 281.3 sumE = 0.8888 +8 fGamma = 322.9 sumE = 1.081 +9 fGamma = 370.5 sumE = 1.349 +10 fGamma = 425.3 sumE = 1.649 +11 fGamma = 488.2 sumE = 1.992 +12 fGamma = 560.3 sumE = 2.431 +13 fGamma = 643.2 sumE = 2.862 +14 fGamma = 738.3 sumE = 3.207 +15 fGamma = 847.6 sumE = 3.475 +16 fGamma = 973 sumE = 3.784 +17 fGamma = 1117 sumE = 4.407 +18 fGamma = 1282 sumE = 4.976 +19 fGamma = 1472 sumE = 5.448 +20 fGamma = 1690 sumE = 5.494 +21 fGamma = 1940 sumE = 5.421 +22 fGamma = 2228 sumE = 5.358 +23 fGamma = 2558 sumE = 4.689 +24 fGamma = 2936 sumE = 4.244 +25 fGamma = 3371 sumE = 4.003 +26 fGamma = 3871 sumE = 3.865 +27 fGamma = 4444 sumE = 3.706 +28 fGamma = 5102 sumE = 1.794 +29 fGamma = 5858 sumE = 1.771 +30 fGamma = 6726 sumE = 1.755 +31 fGamma = 7722 sumE = 1.744 +32 fGamma = 8866 sumE = 1.737 +33 fGamma = 1.018e+04 sumE = 1.732 +34 fGamma = 1.169e+04 sumE = 1.729 +35 fGamma = 1.342e+04 sumE = 1.728 +36 fGamma = 1.541e+04 sumE = 1.727 +37 fGamma = 1.769e+04 sumE = 1.728 +38 fGamma = 2.031e+04 sumE = 1.728 +39 fGamma = 2.332e+04 sumE = 1.73 +40 fGamma = 2.677e+04 sumE = 1.731 +41 fGamma = 3.074e+04 sumE = 1.733 +42 fGamma = 3.529e+04 sumE = 1.735 +43 fGamma = 4.052e+04 sumE = 1.737 +44 fGamma = 4.652e+04 sumE = 1.739 +45 fGamma = 5.342e+04 sumE = 1.741 +46 fGamma = 6.133e+04 sumE = 1.743 +47 fGamma = 7.042e+04 sumE = 1.744 +48 fGamma = 8.085e+04 sumE = 1.746 +49 fGamma = 9.283e+04 sumE = 1.748 + +total time for build X-ray TR dE/dx tables = 84.27 s +### Run 3 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 2105126488, 636122787 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=52.8517 +- 4.39136 mm + + mean energy deposit in absorber=0.0339345 +- 0.00583443 MeV + + mean number of steps in absorber (charged) =2 +- 0.2 + mean number of steps in absorber (neutral) =1.3 +- 0.317805 + + mean number of charged secondaries = 1 +- 0.2 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =1 and e+s =0 + +(number) transmission coeff=0.8 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 758223803, 2021217626 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 5 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Irregular X-ray TR model is called +0 fGamma = 107.6 sumE = 0.004258 +1 fGamma = 123.4 sumE = 0.006661 +2 fGamma = 141.5 sumE = 0.01025 +3 fGamma = 162.3 sumE = 0.01552 +4 fGamma = 186.2 sumE = 0.02305 +5 fGamma = 213.7 sumE = 0.03376 +6 fGamma = 245.2 sumE = 0.04873 +7 fGamma = 281.3 sumE = 0.0693 +8 fGamma = 322.9 sumE = 0.09709 +9 fGamma = 370.5 sumE = 0.1339 +10 fGamma = 425.3 sumE = 0.182 +11 fGamma = 488.2 sumE = 0.2435 +12 fGamma = 560.3 sumE = 0.3207 +13 fGamma = 643.2 sumE = 0.4161 +14 fGamma = 738.3 sumE = 0.5318 +15 fGamma = 847.6 sumE = 0.6697 +16 fGamma = 973 sumE = 0.8314 +17 fGamma = 1117 sumE = 1.018 +18 fGamma = 1282 sumE = 1.229 +19 fGamma = 1472 sumE = 1.466 +20 fGamma = 1690 sumE = 1.727 +21 fGamma = 1940 sumE = 2.011 +22 fGamma = 2228 sumE = 2.316 +23 fGamma = 2558 sumE = 2.64 +24 fGamma = 2936 sumE = 2.98 +25 fGamma = 3371 sumE = 3.332 +26 fGamma = 3871 sumE = 3.695 +27 fGamma = 4444 sumE = 4.064 +28 fGamma = 5102 sumE = 4.478 +29 fGamma = 5858 sumE = 5.169 +30 fGamma = 6726 sumE = 5.901 +31 fGamma = 7722 sumE = 6.671 +32 fGamma = 8866 sumE = 7.473 +33 fGamma = 1.018e+04 sumE = 8.302 +34 fGamma = 1.169e+04 sumE = 9.152 +35 fGamma = 1.342e+04 sumE = 10.02 +36 fGamma = 1.541e+04 sumE = 10.89 +37 fGamma = 1.769e+04 sumE = 11.76 +38 fGamma = 2.031e+04 sumE = 12.63 +39 fGamma = 2.332e+04 sumE = 13.49 +40 fGamma = 2.677e+04 sumE = 14.33 +41 fGamma = 3.074e+04 sumE = 15.14 +42 fGamma = 3.529e+04 sumE = 15.93 +43 fGamma = 4.052e+04 sumE = 16.69 +44 fGamma = 4.652e+04 sumE = 17.41 +45 fGamma = 5.342e+04 sumE = 18.1 +46 fGamma = 6.133e+04 sumE = 18.74 +47 fGamma = 7.042e+04 sumE = 19.34 +48 fGamma = 8.085e+04 sumE = 19.9 +49 fGamma = 9.283e+04 sumE = 20.41 + +total time for build X-ray TR tables = 5.52 s +### Run 4 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 758223803, 2021217626 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=166.358 +- 15.4814 mm + + mean energy deposit in absorber=0.0991313 +- 0.0185813 MeV + + mean number of steps in absorber (charged) =7.3 +- 0.707814 + mean number of steps in absorber (neutral) =9.9 +- 1.13534 + + mean number of charged secondaries = 6.3 +- 0.707814 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =6.3 and e+s =0 + +(number) transmission coeff=1 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1500585225, 2092176073 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 6 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Irregular X-ray TR dE/dx model is called +0 fGamma = 107.6 sumE = 0.1088 +1 fGamma = 123.4 sumE = 0.1582 +2 fGamma = 141.5 sumE = 0.2245 +3 fGamma = 162.3 sumE = 0.3105 +4 fGamma = 186.2 sumE = 0.4174 +5 fGamma = 213.7 sumE = 0.5494 +6 fGamma = 245.2 sumE = 0.7086 +7 fGamma = 281.3 sumE = 0.8967 +8 fGamma = 322.9 sumE = 1.114 +9 fGamma = 370.5 sumE = 1.361 +10 fGamma = 425.3 sumE = 1.636 +11 fGamma = 488.2 sumE = 1.936 +12 fGamma = 560.3 sumE = 2.26 +13 fGamma = 643.2 sumE = 2.605 +14 fGamma = 738.3 sumE = 2.966 +15 fGamma = 847.6 sumE = 3.34 +16 fGamma = 973 sumE = 3.725 +17 fGamma = 1117 sumE = 4.117 +18 fGamma = 1282 sumE = 4.513 +19 fGamma = 1472 sumE = 4.91 +20 fGamma = 1690 sumE = 5.305 +21 fGamma = 1940 sumE = 5.696 +22 fGamma = 2228 sumE = 6.079 +23 fGamma = 2558 sumE = 6.452 +24 fGamma = 2936 sumE = 6.811 +25 fGamma = 3371 sumE = 7.152 +26 fGamma = 3871 sumE = 7.472 +27 fGamma = 4444 sumE = 7.768 +28 fGamma = 5102 sumE = 8.144 +29 fGamma = 5858 sumE = 9.149 +30 fGamma = 6726 sumE = 10.17 +31 fGamma = 7722 sumE = 11.21 +32 fGamma = 8866 sumE = 12.26 +33 fGamma = 1.018e+04 sumE = 13.31 +34 fGamma = 1.169e+04 sumE = 14.35 +35 fGamma = 1.342e+04 sumE = 15.38 +36 fGamma = 1.541e+04 sumE = 16.4 +37 fGamma = 1.769e+04 sumE = 17.4 +38 fGamma = 2.031e+04 sumE = 18.37 +39 fGamma = 2.332e+04 sumE = 19.31 +40 fGamma = 2.677e+04 sumE = 20.22 +41 fGamma = 3.074e+04 sumE = 21.09 +42 fGamma = 3.529e+04 sumE = 21.93 +43 fGamma = 4.052e+04 sumE = 22.72 +44 fGamma = 4.652e+04 sumE = 23.47 +45 fGamma = 5.342e+04 sumE = 24.18 +46 fGamma = 6.133e+04 sumE = 24.84 +47 fGamma = 7.042e+04 sumE = 25.46 +48 fGamma = 8.085e+04 sumE = 26.03 +49 fGamma = 9.283e+04 sumE = 26.55 + +total time for build X-ray TR dE/dx tables = 11.22 s +### Run 5 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1500585225, 2092176073 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=233.298 +- 26.513 mm + + mean energy deposit in absorber=NaN +- 0 MeV + + mean number of steps in absorber (charged) =10.3 +- 1.08674 + mean number of steps in absorber (neutral) =12.3 +- 1.29653 + + mean number of charged secondaries = 9.1 +- 1.0812 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =9.1 and e+s =0 + +(number) transmission coeff=1 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 2116519781, 67896379 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 7 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +PlateIrrGas X-ray TR radiator model is called +0 fGamma = 107.6 sumE = 0.004086 +1 fGamma = 123.4 sumE = 0.006405 +2 fGamma = 141.5 sumE = 0.00993 +3 fGamma = 162.3 sumE = 0.01502 +4 fGamma = 186.2 sumE = 0.02208 +5 fGamma = 213.7 sumE = 0.0339 +6 fGamma = 245.2 sumE = 0.0481 +7 fGamma = 281.3 sumE = 0.06463 +8 fGamma = 322.9 sumE = 0.09286 +9 fGamma = 370.5 sumE = 0.1389 +10 fGamma = 425.3 sumE = 0.1959 +11 fGamma = 488.2 sumE = 0.2531 +12 fGamma = 560.3 sumE = 0.306 +13 fGamma = 643.2 sumE = 0.365 +14 fGamma = 738.3 sumE = 0.4427 +15 fGamma = 847.6 sumE = 0.5631 +16 fGamma = 973 sumE = 0.7273 +17 fGamma = 1117 sumE = 0.9532 +18 fGamma = 1282 sumE = 1.258 +19 fGamma = 1472 sumE = 1.602 +20 fGamma = 1690 sumE = 1.962 +21 fGamma = 1940 sumE = 2.373 +22 fGamma = 2228 sumE = 2.865 +23 fGamma = 2558 sumE = 3.425 +24 fGamma = 2936 sumE = 4.001 +25 fGamma = 3371 sumE = 4.542 +26 fGamma = 3871 sumE = 5.012 +27 fGamma = 4444 sumE = 5.397 +28 fGamma = 5102 sumE = 5.758 +29 fGamma = 5858 sumE = 6.464 +30 fGamma = 6726 sumE = 7.176 +31 fGamma = 7722 sumE = 7.888 +32 fGamma = 8866 sumE = 8.596 +33 fGamma = 1.018e+04 sumE = 9.293 +34 fGamma = 1.169e+04 sumE = 9.974 +35 fGamma = 1.342e+04 sumE = 10.63 +36 fGamma = 1.541e+04 sumE = 11.27 +37 fGamma = 1.769e+04 sumE = 11.87 +38 fGamma = 2.031e+04 sumE = 12.44 +39 fGamma = 2.332e+04 sumE = 12.97 +40 fGamma = 2.677e+04 sumE = 13.46 +41 fGamma = 3.074e+04 sumE = 13.9 +42 fGamma = 3.529e+04 sumE = 14.3 +43 fGamma = 4.052e+04 sumE = 14.66 +44 fGamma = 4.652e+04 sumE = 14.97 +45 fGamma = 5.342e+04 sumE = 15.25 +46 fGamma = 6.133e+04 sumE = 15.48 +47 fGamma = 7.042e+04 sumE = 15.68 +48 fGamma = 8.085e+04 sumE = 15.86 +49 fGamma = 9.283e+04 sumE = 16 + +total time for build X-ray TR tables = 8.63 s +### Run 6 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 2116519781, 67896379 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=298.397 +- 20.3467 mm + + mean energy deposit in absorber=NaN +- 0 MeV + + mean number of steps in absorber (charged) =12.3 +- 0.825227 + mean number of steps in absorber (neutral) =12.5 +- 0.724569 + + mean number of charged secondaries = 11.3 +- 0.825227 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =11.3 and e+s =0 + +(number) transmission coeff=1 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1543401644, 36094137 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 8 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +PlateIrrGas X-ray TR radiator model is called +0 fGamma = 107.6 sumE = 0.1092 +1 fGamma = 123.4 sumE = 0.1581 +2 fGamma = 141.5 sumE = 0.2232 +3 fGamma = 162.3 sumE = 0.3109 +4 fGamma = 186.2 sumE = 0.4159 +5 fGamma = 213.7 sumE = 0.5576 +6 fGamma = 245.2 sumE = 0.7202 +7 fGamma = 281.3 sumE = 0.8948 +8 fGamma = 322.9 sumE = 1.101 +9 fGamma = 370.5 sumE = 1.353 +10 fGamma = 425.3 sumE = 1.639 +11 fGamma = 488.2 sumE = 1.952 +12 fGamma = 560.3 sumE = 2.222 +13 fGamma = 643.2 sumE = 2.552 +14 fGamma = 738.3 sumE = 2.825 +15 fGamma = 847.6 sumE = 3.185 +16 fGamma = 973 sumE = 3.515 +17 fGamma = 1117 sumE = 3.902 +18 fGamma = 1282 sumE = 4.418 +19 fGamma = 1472 sumE = 4.931 +20 fGamma = 1690 sumE = 5.387 +21 fGamma = 1940 sumE = 5.857 +22 fGamma = 2228 sumE = 6.401 +23 fGamma = 2558 sumE = 7.008 +24 fGamma = 2936 sumE = 7.62 +25 fGamma = 3371 sumE = 8.174 +26 fGamma = 3871 sumE = 8.629 +27 fGamma = 4444 sumE = 8.965 +28 fGamma = 5102 sumE = 9.306 +29 fGamma = 5858 sumE = 10.32 +30 fGamma = 6726 sumE = 11.32 +31 fGamma = 7722 sumE = 12.3 +32 fGamma = 8866 sumE = 13.25 +33 fGamma = 1.018e+04 sumE = 14.17 +34 fGamma = 1.169e+04 sumE = 15.04 +35 fGamma = 1.342e+04 sumE = 15.87 +36 fGamma = 1.541e+04 sumE = 16.66 +37 fGamma = 1.769e+04 sumE = 17.39 +38 fGamma = 2.031e+04 sumE = 18.06 +39 fGamma = 2.332e+04 sumE = 18.69 +40 fGamma = 2.677e+04 sumE = 19.25 +41 fGamma = 3.074e+04 sumE = 19.76 +42 fGamma = 3.529e+04 sumE = 20.21 +43 fGamma = 4.052e+04 sumE = 20.61 +44 fGamma = 4.652e+04 sumE = 20.95 +45 fGamma = 5.342e+04 sumE = 21.25 +46 fGamma = 6.133e+04 sumE = 21.51 +47 fGamma = 7.042e+04 sumE = 21.73 +48 fGamma = 8.085e+04 sumE = 21.91 +49 fGamma = 9.283e+04 sumE = 22.07 + +total time for build X-ray TR dE/dx tables = 29.01 s +### Run 7 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1543401644, 36094137 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=262.695 +- 28.3515 mm + + mean energy deposit in absorber=NaN +- 0 MeV + + mean number of steps in absorber (charged) =11.1 +- 1.15282 + mean number of steps in absorber (neutral) =11.4 +- 1.32061 + + mean number of charged secondaries = 10.1 +- 1.15282 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =10.1 and e+s =0 + +(number) transmission coeff=1 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 460240760, 1756416216 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 9 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Regular X-ray TR radiator model is called +0 fGamma = 107.6 sumE = 0.004757 +1 fGamma = 123.4 sumE = 0.006213 +2 fGamma = 141.5 sumE = 0.008651 +3 fGamma = 162.3 sumE = 0.01573 +4 fGamma = 186.2 sumE = 0.02543 +5 fGamma = 213.7 sumE = 0.03201 +6 fGamma = 245.2 sumE = 0.05278 +7 fGamma = 281.3 sumE = 0.05867 +8 fGamma = 322.9 sumE = 0.1018 +9 fGamma = 370.5 sumE = 0.1469 +10 fGamma = 425.3 sumE = 0.1786 +11 fGamma = 488.2 sumE = 0.2919 +12 fGamma = 560.3 sumE = 0.3108 +13 fGamma = 643.2 sumE = 0.2985 +14 fGamma = 738.3 sumE = 0.4656 +15 fGamma = 847.6 sumE = 0.5473 +16 fGamma = 973 sumE = 0.911 +17 fGamma = 1117 sumE = 1.469 +18 fGamma = 1282 sumE = 1.626 +19 fGamma = 1472 sumE = 2.145 +20 fGamma = 1690 sumE = 2.212 +21 fGamma = 1940 sumE = 2.643 +22 fGamma = 2228 sumE = 2.875 +23 fGamma = 2558 sumE = 2.505 +24 fGamma = 2936 sumE = 2.271 +25 fGamma = 3371 sumE = 1.625 +26 fGamma = 3871 sumE = 3.543 +27 fGamma = 4444 sumE = 2.547 +28 fGamma = 5102 sumE = 1.326 +29 fGamma = 5858 sumE = 1.079 +30 fGamma = 6726 sumE = 1.166 +31 fGamma = 7722 sumE = 1.652 +32 fGamma = 8866 sumE = 0.8713 +33 fGamma = 1.018e+04 sumE = 1.478 +34 fGamma = 1.169e+04 sumE = 1.245 +35 fGamma = 1.342e+04 sumE = 1.203 +36 fGamma = 1.541e+04 sumE = 1.272 +37 fGamma = 1.769e+04 sumE = 0.8468 +38 fGamma = 2.031e+04 sumE = 0.7525 +39 fGamma = 2.332e+04 sumE = 0.9297 +40 fGamma = 2.677e+04 sumE = 1.099 +41 fGamma = 3.074e+04 sumE = 1.196 +42 fGamma = 3.529e+04 sumE = 1.23 +43 fGamma = 4.052e+04 sumE = 1.232 +44 fGamma = 4.652e+04 sumE = 1.226 +45 fGamma = 5.342e+04 sumE = 1.222 +46 fGamma = 6.133e+04 sumE = 1.223 +47 fGamma = 7.042e+04 sumE = 1.226 +48 fGamma = 8.085e+04 sumE = 1.231 +49 fGamma = 9.283e+04 sumE = 1.235 + +total time for build X-ray TR tables = 41.4 s +### Run 8 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 460240760, 1756416216 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=36.4878 +- 3.27466 mm + + mean energy deposit in absorber=0.0281158 +- 0.00461324 MeV + + mean number of steps in absorber (charged) =1.3 +- 0.144914 + mean number of steps in absorber (neutral) =1 +- 0.374166 + + mean number of charged secondaries = 0.3 +- 0.144914 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =0.3 and e+s =0 + +(number) transmission coeff=0.3 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 525126593, 1884497148 +---------------------------------------- +Em10DetectorConstruction::ParametrisationModel() is called +fModelNumber = 10 +the number of TR radiator plates = 300 +plate material = Li +gas material = He +plate plasma energy = 13.8447 eV +gas plasma energy = 0.271761 eV +Regular X-ray TR dE/dx radiator model is called +0 fGamma = 107.6 sumE = 0.1102 +1 fGamma = 123.4 sumE = 0.1591 +2 fGamma = 141.5 sumE = 0.2276 +3 fGamma = 162.3 sumE = 0.3018 +4 fGamma = 186.2 sumE = 0.4444 +5 fGamma = 213.7 sumE = 0.5486 +6 fGamma = 245.2 sumE = 0.6789 +7 fGamma = 281.3 sumE = 0.8374 +8 fGamma = 322.9 sumE = 1.005 +9 fGamma = 370.5 sumE = 1.384 +10 fGamma = 425.3 sumE = 1.644 +11 fGamma = 488.2 sumE = 2.001 +12 fGamma = 560.3 sumE = 2.464 +13 fGamma = 643.2 sumE = 2.98 +14 fGamma = 738.3 sumE = 3.457 +15 fGamma = 847.6 sumE = 3.391 +16 fGamma = 973 sumE = 3.782 +17 fGamma = 1117 sumE = 4.33 +18 fGamma = 1282 sumE = 5.624 +19 fGamma = 1472 sumE = 5.355 +20 fGamma = 1690 sumE = 5.291 +21 fGamma = 1940 sumE = 4.926 +22 fGamma = 2228 sumE = 5.24 +23 fGamma = 2558 sumE = 4.833 +24 fGamma = 2936 sumE = 4.372 +25 fGamma = 3371 sumE = 3.614 +26 fGamma = 3871 sumE = 3.926 +27 fGamma = 4444 sumE = 3.907 +28 fGamma = 5102 sumE = 1.839 +29 fGamma = 5858 sumE = 1.708 +30 fGamma = 6726 sumE = 1.732 +31 fGamma = 7722 sumE = 1.743 +32 fGamma = 8866 sumE = 1.779 +33 fGamma = 1.018e+04 sumE = 1.613 +34 fGamma = 1.169e+04 sumE = 1.79 +35 fGamma = 1.342e+04 sumE = 1.682 +36 fGamma = 1.541e+04 sumE = 1.668 +37 fGamma = 1.769e+04 sumE = 1.68 +38 fGamma = 2.031e+04 sumE = 1.724 +39 fGamma = 2.332e+04 sumE = 1.726 +40 fGamma = 2.677e+04 sumE = 1.705 +41 fGamma = 3.074e+04 sumE = 1.672 +42 fGamma = 3.529e+04 sumE = 1.647 +43 fGamma = 4.052e+04 sumE = 1.637 +44 fGamma = 4.652e+04 sumE = 1.632 +45 fGamma = 5.342e+04 sumE = 1.631 +46 fGamma = 6.133e+04 sumE = 1.631 +47 fGamma = 7.042e+04 sumE = 1.632 +48 fGamma = 8.085e+04 sumE = 1.633 +49 fGamma = 9.283e+04 sumE = 1.634 + +total time for build X-ray TR dE/dx tables = 72.68 s +### Run 9 start. + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 525126593, 1884497148 +---------------------------------------- + +---> Begin of Event: 0 + ================== run summary ===================== + end of Run TotNbofEvents = 10 + mean charged track length in absorber=48.8854 +- 6.36796 mm + + mean energy deposit in absorber=0.0401224 +- 0.00346123 MeV + + mean number of steps in absorber (charged) =2.1 +- 0.298329 + mean number of steps in absorber (neutral) =1.5 +- 0.430116 + + mean number of charged secondaries = 1.1 +- 0.298329 + + mean number of neutral secondaries = 0 +- 0 + + mean number of e-s =1.1 and e+s =0 + +(number) transmission coeff=0.7 reflection coeff=0 + + +--------- Ranecu engine status --------- + Initial seed (index) = 0 + Current couple of seeds = 1212028514, 1027227261 +---------------------------------------- +Graphics systems deleted. +Visualization Manager deleting... diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10CalorHit.hh b/examples/extended/electromagnetic/TestEm10/include/Em10CalorHit.hh new file mode 100644 index 0000000000..0f6cf6f9aa --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10CalorHit.hh @@ -0,0 +1,97 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10CalorHit.hh,v 1.2 2001/07/11 09:57:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10CalorHit_h +#define Em10CalorHit_h 1 + +#include "G4VHit.hh" +#include "G4THitsCollection.hh" +#include "G4Allocator.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10CalorHit : public G4VHit +{ + public: + + Em10CalorHit(); + ~Em10CalorHit(); + Em10CalorHit(const Em10CalorHit&); + const Em10CalorHit& operator=(const Em10CalorHit&); + int operator==(const Em10CalorHit&) const; + + inline void* operator new(size_t); + inline void operator delete(void*); + + void Print(); + + public: + + void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;}; + void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;}; + + G4double GetEdepAbs() { return EdepAbs; }; + G4double GetTrakAbs() { return TrackLengthAbs; }; + G4double GetEdepGap() { return EdepGap; }; + G4double GetTrakGap() { return TrackLengthGap; }; + + private: + + G4double EdepAbs, TrackLengthAbs; + G4double EdepGap, TrackLengthGap; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +typedef G4THitsCollection Em10CalorHitsCollection; + +extern G4Allocator Em10CalorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void* Em10CalorHit::operator new(size_t) +{ + void* aHit; + aHit = (void*) Em10CalorHitAllocator.MallocSingle(); + return aHit; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void Em10CalorHit::operator delete(void* aHit) +{ + Em10CalorHitAllocator.FreeSingle((Em10CalorHit*) aHit); +} + +#endif + + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm10/include/Em10CalorimeterSD.hh new file mode 100644 index 0000000000..bb74c503ae --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10CalorimeterSD.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10CalorimeterSD.hh,v 1.2 2001/07/11 09:57:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10CalorimeterSD_h +#define Em10CalorimeterSD_h 1 + +#include "G4VSensitiveDetector.hh" +#include "globals.hh" + +class Em10DetectorConstruction; +class G4HCofThisEvent; +class G4Step; +#include "Em10CalorHit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10CalorimeterSD : public G4VSensitiveDetector +{ + public: + + Em10CalorimeterSD(G4String, Em10DetectorConstruction* ); + ~Em10CalorimeterSD(); + + void Initialize(G4HCofThisEvent*); + G4bool ProcessHits(G4Step*,G4TouchableHistory*); + void EndOfEvent(G4HCofThisEvent*); + void clear(); + void PrintAll(); + + private: + + Em10CalorHitsCollection* CalCollection; + Em10DetectorConstruction* Detector; + G4int* HitID; +}; + +#endif + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10DetectorConstruction.hh new file mode 100644 index 0000000000..6376c769d5 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10DetectorConstruction.hh @@ -0,0 +1,199 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10DetectorConstruction.hh,v 1.4 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef Em10DetectorConstruction_h +#define Em10DetectorConstruction_h 1 + +#include "G4VUserDetectorConstruction.hh" +#include "globals.hh" +#include "G4ios.hh" + +class G4Box; +class G4Tubs; +class G4LogicalVolume; +class G4VPhysicalVolume; +class G4Material; +class G4UniformMagField; +class Em10DetectorMessenger; +class Em10CalorimeterSD; +class G4VXrayTRmodel; + + +class Em10DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + + Em10DetectorConstruction(); + ~Em10DetectorConstruction(); + + public: + void SetParametrisationModel (G4int i){fModelNumber=i;}; + void ParametrisationModel (); + + void SetAbsorberMaterial (G4String); + void SetAbsorberThickness(G4double); + void SetAbsorberRadius(G4double); + void SetAbsorberZpos(G4double); + + void SetRadiatorMaterial (G4String); + void SetRadiatorThickness(G4double); + + void SetGasGapThickness(G4double); + + void SetFoilNumber (G4int i){fFoilNumber=i;}; + + void SetWorldMaterial(G4String); + void SetWorldSizeZ(G4double); + void SetWorldSizeR(G4double); + + void SetMagField(G4double); + + G4VPhysicalVolume* Construct(); + + void UpdateGeometry(); + + public: + + void PrintCalorParameters(); + + G4Material* GetWorldMaterial() {return WorldMaterial;}; + G4double GetWorldSizeZ() {return WorldSizeZ;}; + G4double GetWorldSizeR() {return WorldSizeR;}; + + G4double GetAbsorberZpos() {return zAbsorber;}; + G4double GetzstartAbs() {return zstartAbs;}; + G4double GetzendAbs() {return zendAbs;}; + + G4Material* GetAbsorberMaterial() {return AbsorberMaterial;}; + G4double GetAbsorberThickness() {return AbsorberThickness;}; + G4double GetAbsorberRadius() {return AbsorberRadius;}; + + const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; + const G4VPhysicalVolume* GetAbsorber() {return physiAbsorber;}; + G4LogicalVolume* GetLogicalAbsorber() {return logicAbsorber;}; + + private: + + G4bool worldchanged; + G4Material* AbsorberMaterial; + G4double AbsorberThickness; + G4double AbsorberRadius; + + G4Material* fWindowMat ; + G4double fWindowThick ; + + G4Material* fElectrodeMat ; + G4double fElectrodeThick ; + + G4Material* fGapMat ; + G4double fGapThick ; + + + G4double zAbsorber ; + G4double zstartAbs , zendAbs ; + + G4Material* WorldMaterial; + G4double WorldSizeR; + G4double WorldSizeZ; + + G4Box* solidWorld; //pointer to the solid World + G4LogicalVolume* logicWorld; //pointer to the logical World + G4VPhysicalVolume* physiWorld; //pointer to the physical World + + // TR radiator volumes and dimensions + + G4Box* fSolidRadSlice; // pointer to the solid z-slice + G4LogicalVolume* fLogicRadSlice; // pointer to the logical z-slide + G4VPhysicalVolume* fPhysicRadSlice; // pointer to the physical z-slide + + G4Box* fSolidRadRing; // pointer to the solid R-slice + G4LogicalVolume* fLogicRadRing; // pointer to the logical R-slide + G4VPhysicalVolume* fPhysicRadRing; // pointer to the physical R-slide + + G4Box* solidRadiator; + G4LogicalVolume* logicRadiator; + G4VPhysicalVolume* physiRadiator; + + G4Material* fRadiatorMat; //pointer to the TR radiator material + + G4double fRadThickness ; + G4double fGasGap ; + + G4int fFoilNumber ; + G4int fModelNumber ; // selection of parametrisation model1-10 + + G4double fDetThickness ; + G4double fDetLength ; + G4double fDetGap ; + + G4double fStartR ; + G4double fStartZ ; + + G4int fModuleNumber ; // the number of Rad-Det modules + + G4Box* solidAbsorber; //pointer to the solid Absorber + G4LogicalVolume* logicAbsorber; //pointer to the logical Absorber + G4VPhysicalVolume* physiAbsorber; //pointer to the physical Absorber + + G4UniformMagField* magField; //pointer to the magnetic field + + Em10DetectorMessenger* detectorMessenger; //pointer to the Messenger + Em10CalorimeterSD* calorimeterSD; //pointer to the sensitive detector + G4VXrayTRmodel* fXTRModel ; + + private: + + void DefineMaterials(); + void ComputeCalorParameters(); + G4VPhysicalVolume* ConstructCalorimeter(); +}; + +//////////////////////////////////////////////////////////////////////// + +inline void Em10DetectorConstruction::ComputeCalorParameters() +{ + // Compute derived parameters of the calorimeter + if(!worldchanged) + { + // WorldSizeR=2.*AbsorberRadius ; + // WorldSizeZ=2.*AbsorberThickness ; + } + + zstartAbs = zAbsorber-0.5*AbsorberThickness; + zendAbs = zAbsorber+0.5*AbsorberThickness; + +} + +#endif + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10DetectorMessenger.hh new file mode 100644 index 0000000000..0b3fe05116 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10DetectorMessenger.hh @@ -0,0 +1,84 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10DetectorMessenger.hh,v 1.3 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10DetectorMessenger_h +#define Em10DetectorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class Em10DetectorConstruction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + + +class Em10DetectorMessenger: public G4UImessenger +{ + public: + Em10DetectorMessenger(Em10DetectorConstruction* ); + ~Em10DetectorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + void SetNewValue(G4UIcommand*, G4int); + + private: + Em10DetectorConstruction* Em10Detector; + + G4UIdirectory* Em10detDir; + + G4UIcmdWithAnInteger* ModelCmd; + G4UIcmdWithAnInteger* FoilNumCmd; + + G4UIcmdWithAString* AbsMaterCmd; + G4UIcmdWithADoubleAndUnit* AbsThickCmd; + G4UIcmdWithADoubleAndUnit* AbsRadCmd; + + G4UIcmdWithAString* RadiatorMaterCmd; + G4UIcmdWithADoubleAndUnit* RadiatorThickCmd; + + G4UIcmdWithADoubleAndUnit* GasGapThickCmd; + + G4UIcmdWithADoubleAndUnit* AbsZposCmd; + + G4UIcmdWithAString* WorldMaterCmd; + G4UIcmdWithADoubleAndUnit* WorldZCmd; + G4UIcmdWithADoubleAndUnit* WorldRCmd; + + G4UIcmdWithADoubleAndUnit* MagFieldCmd; + G4UIcmdWithoutParameter* UpdateCmd; + +}; + +#endif + diff --git a/source/analysis/management/include/G4VAnalysisManager.hh b/examples/extended/electromagnetic/TestEm10/include/Em10EventAction.hh similarity index 51% rename from source/analysis/management/include/G4VAnalysisManager.hh rename to examples/extended/electromagnetic/TestEm10/include/Em10EventAction.hh index a9fec8eddf..8a3250b08c 100644 --- a/source/analysis/management/include/G4VAnalysisManager.hh +++ b/examples/extended/electromagnetic/TestEm10/include/Em10EventAction.hh @@ -21,53 +21,63 @@ // ******************************************************************** // // -// $Id: G4VAnalysisManager.hh,v 1.5.4.1 2001/06/28 19:07:47 gunter Exp $ -// GEANT4 tag $Name: $ -// -// Guy Barrand 20th Mai 2000 -// -// Class description -// -// Abstract base class for the analysis manager proxy mechanism. +// $Id: Em10EventAction.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // +// -#ifndef G4VANALYSIS_HH -#define G4VANALYSIS_HH +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#if defined(G4ANALYSIS_BUILD) || defined(G4ANALYSIS_USE) +#ifndef Em10EventAction_h +#define Em10EventAction_h 1 +#include "G4UserEventAction.hh" #include "globals.hh" -class IHistogram; -class IHistogramFactory; +class Em10RunAction; +class Em10EventActionMessenger; -#ifdef G4ANALYSIS_NON_AIDA -class ICloudFactory; -class ICloud; -class ITuple; -#endif +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class G4VAnalysisSystem; +class Em10EventAction : public G4UserEventAction +{ + public: + Em10EventAction(Em10RunAction* Em10RA); + ~Em10EventAction(); -class G4VAnalysisManager { -public: - virtual ~G4VAnalysisManager() {} - virtual G4bool RegisterAnalysisSystem(G4VAnalysisSystem*) = 0; - // - // Get the factories : - virtual IHistogramFactory* GetHistogramFactory(const G4String&) = 0; - // - // Access to facilites methods : - virtual void Store(IHistogram* = 0,const G4String& = "") = 0; - virtual void Plot(IHistogram*) = 0; - // -#ifdef G4ANALYSIS_NON_AIDA - virtual ICloudFactory* GetCloudFactory(const G4String&) = 0; - virtual ITuple* CreateTuple(const G4String&,const G4String&,const G4String&) = 0; - virtual void Plot(ICloud*) = 0; -#endif + public: + void BeginOfEventAction(const G4Event*); + void EndOfEventAction(const G4Event*); + G4int GetEventno(); + void setEventVerbose(G4int level); + + void CountStepsCharged() ; + void CountStepsNeutral() ; + void AddCharged() ; + void AddNeutral() ; + void AddE(); + void AddP(); + void SetTr(); + void SetRef(); + + void SetDrawFlag(G4String val) {drawFlag = val;}; + void SetPrintModulo(G4int val) {printModulo = val;}; + + private: + G4int calorimeterCollID; + Em10EventActionMessenger* eventMessenger; + Em10RunAction* runaction; + G4int verboselevel; + G4double nstep,nstepCharged,nstepNeutral; + G4double Nch,Nne; + G4double NE,NP; + G4double Transmitted,Reflected ; + + G4String drawFlag; + G4int printModulo; }; #endif -#endif + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10EventActionMessenger.hh new file mode 100644 index 0000000000..65f0bd381c --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10EventActionMessenger.hh @@ -0,0 +1,60 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10EventActionMessenger.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10EventActionMessenger_h +#define Em10EventActionMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class Em10EventAction; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10EventActionMessenger: public G4UImessenger +{ + public: + Em10EventActionMessenger(Em10EventAction*); + ~Em10EventActionMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + Em10EventAction* eventAction; + G4UIcmdWithAnInteger* setVerboseCmd; + G4UIcmdWithAString* DrawCmd; + G4UIcmdWithAnInteger* PrintCmd; +}; + +#endif diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10Materials.hh b/examples/extended/electromagnetic/TestEm10/include/Em10Materials.hh new file mode 100644 index 0000000000..772f686060 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10Materials.hh @@ -0,0 +1,402 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// File for definition of materials used in X-ray TR experiments + +#ifndef Em10Materials_h +#define Em10Materials_h 1 + +#include "G4Material.hh" + + +G4String name, symbol ; //a=mass of a mole; +G4double a, z, density ; //z=mean number of protons; +G4int iz, n, nel ; //iz=number of protons in an isotope; + // n=number of nucleons in an isotope; + +G4int ncomponents, natoms; +G4double abundance, fractionmass; +G4double temperature, pressure; + +// +// define Elements +// + + a = 1.01*g/mole; + G4Element* elH = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); + + a = 6.94*g/mole; + G4Element* elLi = new G4Element(name="Lithium",symbol="Li" , z= 3., a); + + a = 9.01*g/mole; + G4Element* elBe = new G4Element(name="Beryllium",symbol="Be" , z= 4., a); + + a = 6.01*g/mole; + G4Element* elC = new G4Element(name="Carbon", symbol="C", z=6., a); + + a = 14.01*g/mole; + G4Element* elN = new G4Element(name="Nitrogen",symbol="N" , z= 7., a); + + a = 16.00*g/mole; + G4Element* elO = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); + + a = 39.948*g/mole; + G4Element* elAr = new G4Element(name="Argon", symbol="Ar", z=18., a); + + a = 131.29*g/mole; + G4Element* elXe = new G4Element(name="Xenon", symbol="Xe", z=54., a); + + a = 19.00*g/mole; + G4Element* elF = new G4Element(name="Fluorine", symbol="F", z=9., a); + + +// +// define simple materials +// + + + + density = 1.848*g/cm3; + a = 9.01*g/mole; + G4Material* Be = new G4Material(name="Beryllium", z=4., a, density); + + + density = 1.390*g/cm3; + a = 39.95*g/mole; + G4Material* lAr = new G4Material(name="liquidArgon", z=18., a, density); + + density = 7.870*g/cm3; + a = 55.85*g/mole; + G4Material* Fe = new G4Material(name="Iron" , z=26., a, density); + + density = 8.960*g/cm3; + a = 63.55*g/mole; + G4Material* Cu = new G4Material(name="Copper" , z=29., a, density); + + density = 19.32*g/cm3; + a =196.97*g/mole; + G4Material* Au = new G4Material(name="Gold" , z=79., a, density); + + density = 11.35*g/cm3; + a = 207.19*g/mole; + G4Material* Pb = new G4Material(name="Lead" , z=82., a, density); + +// +// define a material from elements. case 1: chemical molecule +// + + density = 1.000*g/cm3; + G4Material* H2O = new G4Material(name="Water", density, ncomponents=2); + H2O->AddElement(elH, natoms=2); + H2O->AddElement(elO, natoms=1); + + + // Silicon as detector material + + density = 2.330*g/cm3; + a = 28.09*g/mole; + G4Material* Si = new G4Material(name="Silicon", z=14., a, density); + +///////////////////////////////////////////////////////////////// +// +// Detector windows, electrodes + + // Al for electrodes + + density = 2.700*g/cm3; + a = 26.98*g/mole; + G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); + + + +//////////////////////////////////////////////////////////////////////////// +// +// Materials for popular X-ray TR radiators +// + + // TRT_CH2 + + density = 0.935*g/cm3; + G4Material* TRT_CH2 = new G4Material(name="TRT_CH2",density, nel=2); + TRT_CH2->AddElement(elC,1); + TRT_CH2->AddElement(elH,2); + + // Radiator + + density = 0.059*g/cm3; + G4Material* Radiator = new G4Material(name="Radiator",density, nel=2); + Radiator->AddElement(elC,1); + Radiator->AddElement(elH,2); + + // Carbon Fiber + + density = 0.145*g/cm3; + G4Material* CarbonFiber = new G4Material(name="CarbonFiber",density, nel=1); + CarbonFiber->AddElement(elC,1); + + // Lithium + + density = 0.534*g/cm3; + G4Material* Li = new G4Material(name="Li",density, nel=1); + Li->AddElement(elLi,1); + + // Beryllium + + density = 1.848*g/cm3; + G4Material* Be = new G4Material(name="Be",density, nel=1); + Be->AddElement(elBe,1); + + // Mylar + + density = 1.39*g/cm3; + G4Material* Mylar = new G4Material(name="Mylar", density, nel=3); + Mylar->AddElement(elO,2); + Mylar->AddElement(elC,5); + Mylar->AddElement(elH,4); + + // Kapton (polyimide) ??? since = Mylar C5H4O2 + + density = 1.39*g/cm3; + G4Material* Kapton = new G4Material(name="Kapton", density, nel=3); + Kapton->AddElement(elO,2); + Kapton->AddElement(elC,5); + Kapton->AddElement(elH,4); + + // Polypropelene + + G4Material* CH2 = new G4Material ("Polypropelene" , 0.91*g/cm3, 2); + CH2->AddElement(elH,2); + CH2->AddElement(elC,1); + + + density = 1.290*mg/cm3; // old air from elements + G4Material* air = new G4Material(name="air" , density, ncomponents=2); + Air->AddElement(elN, fractionmass=0.7); + Air->AddElement(elO, fractionmass=0.3); + + + density = 1.25053*mg/cm3 ; // STP + a = 14.01*g/mole ; // get atomic weight !!! + // a = 28.016*g/mole; + G4Material* N2 = new G4Material(name="Nitrogen", z= 7.,a,density) ; + + density = 1.25053*mg/cm3 ; // STP + G4Material* anotherN2 = new G4Material(name="anotherN2", density,ncomponents=2); + anotherN2->AddElement(elN, 1); + anotherN2->AddElement(elN, 1); + + + +////////////////////////////////////////////////////////////////////////// +// +// Noble gases , STP conditions + + // Helium as detector gas, STP + + density = 0.178*mg/cm3 ; + a = 4.0026*g/mole ; + G4Material* He = new G4Material(name="He",z=2., a, density ); + + // Neon as detector gas, STP + + density = 0.900*mg/cm3 ; + a = 20.179*g/mole ; + G4Material* Ne = new G4Material(name="Ne",z=10., a, density ); + + // Argon as detector gas, STP + + density = 1.7836*mg/cm3 ; // STP + G4Material* Argon = new G4Material(name="Argon" , density, ncomponents=1); + Argon->AddElement(elAr, 1); + + // Krypton as detector gas, STP + + density = 3.700*mg/cm3 ; + a = 83.80*g/mole ; + G4Material* Kr = new G4Material(name="Kr",z=36., a, density ); + + // Xenon as detector gas, STP + + density = 5.858*mg/cm3 ; + a = 131.29*g/mole ; + G4Material* Xe = new G4Material(name="Xenon",z=54., a, density ); + +///////////////////////////////////////////////////////////////////////////// +// +// Hydrocarbones, metane and others + + // Metane, STP + + density = 0.7174*mg/cm3 ; + G4Material* metane = new G4Material(name="CH4",density,nel=2) ; + metane->AddElement(elC,1) ; + metane->AddElement(elH,4) ; + + // Propane, STP + + density = 2.005*mg/cm3 ; + G4Material* propane = new G4Material(name="C3H8",density,nel=2) ; + propane->AddElement(elC,3) ; + propane->AddElement(elH,8) ; + + // iso-Butane (methylpropane), STP + + density = 2.67*mg/cm3 ; + G4Material* isobutane = new G4Material(name="isoC4H10",density,nel=2) ; + isobutane->AddElement(elC,4) ; + isobutane->AddElement(elH,10) ; + +/////////////////////////////////////////////////////////////////////////// +// +// Molecular gases + + // Carbon dioxide + + density = 1.977*mg/cm3; + G4Material* CO2 = new G4Material(name="CO2", density, nel=2, + kStateGas,273.15*kelvin,1.*atmosphere); + CO2->AddElement(elC,1); + CO2->AddElement(elO,2); + + // Carbon dioxide, STP + + density = 1.977*mg/cm3; + G4Material* CarbonDioxide = new G4Material(name="CO2", density, nel=2); + CarbonDioxide->AddElement(elC,1); + CarbonDioxide->AddElement(elO,2); + + + // Nitrogen, STP + + density = 1.25053*mg/cm3 ; // STP + G4Material* Nitrogen = new G4Material(name="N2" , density, ncomponents=1); + Nitrogen->AddElement(elN, 2); + + // Oxygen, STP + + density = 1.4289*mg/cm3 ; // STP + G4Material* Oxygen = new G4Material(name="O2" , density, ncomponents=1); + Oxygen->AddElement(elO, 2); + + // Dry air (average composition), STP + + density = 1.2928*mg/cm3 ; // STP + G4Material* Air = new G4Material(name="Air" , density, ncomponents=3); + Air->AddMaterial( Nitrogen, fractionmass = 0.7557 ) ; + Air->AddMaterial( Oxygen, fractionmass = 0.2315 ) ; + Air->AddMaterial( Argon, fractionmass = 0.0128 ) ; + +//////////////////////////////////////////////////////////////////////////// +// +// MWPC mixtures + + // 93% Ar + 7% CH4, STP + + density = 1.709*mg/cm3 ; + G4Material* Ar7CH4 = new G4Material(name="Ar7CH4" , density, + ncomponents=2); + Ar7CH4->AddMaterial( Argon, fractionmass = 0.971 ) ; + Ar7CH4->AddMaterial( metane, fractionmass = 0.029 ) ; + + // 93% Kr + 7% CH4, STP + + density = 3.491*mg/cm3 ; + G4Material* Kr7CH4 = new G4Material(name="Kr7CH4" , density, + ncomponents=2); + Kr7CH4->AddMaterial( Kr, fractionmass = 0.986 ) ; + Kr7CH4->AddMaterial( metane, fractionmass = 0.014 ) ; + + // ATLAS TRT gas mixture + + G4double TRT_Xe_density = 5.485*mg/cm3; + G4Material* TRT_Xe = new G4Material(name="TRT_Xe", TRT_Xe_density, nel=1, + kStateGas,293.15*kelvin,1.*atmosphere); + TRT_Xe->AddElement(elXe,1); + + G4double TRT_CO2_density = 1.842*mg/cm3; + G4Material* TRT_CO2 = new G4Material(name="TRT_CO2", TRT_CO2_density, nel=2, + kStateGas,293.15*kelvin,1.*atmosphere); + TRT_CO2->AddElement(elC,1); + TRT_CO2->AddElement(elO,2); + + G4double TRT_CF4_density = 3.9*mg/cm3; + G4Material* TRT_CF4 = new G4Material(name="TRT_CF4", TRT_CF4_density, nel=2, + kStateGas,293.15*kelvin,1.*atmosphere); + TRT_CF4->AddElement(elC,1); + TRT_CF4->AddElement(elF,4); + + // ATLAS TRT straw tube gas mixture (20 C, 1 atm) + + G4double XeCO2CF4_density = 4.76*mg/cm3; + G4Material* XeCO2CF4 = new G4Material(name="XeCO2CF4", XeCO2CF4_density, + ncomponents=3, + kStateGas,293.15*kelvin,1.*atmosphere); + XeCO2CF4->AddMaterial(TRT_Xe,0.807); + XeCO2CF4->AddMaterial(TRT_CO2,0.039); + XeCO2CF4->AddMaterial(TRT_CF4,0.154); + + // 80% Ar + 20% CO2, STP + + density = 1.8223*mg/cm3 ; + G4Material* Ar_80CO2_20 = new G4Material(name="ArCO2" , density, + ncomponents=2); + Ar_80CO2_20->AddMaterial( Argon, fractionmass = 0.783 ) ; + Ar_80CO2_20->AddMaterial( CarbonDioxide, fractionmass = 0.217 ) ; + + // 80% Xe + 20% CO2, STP + + density = 5.0818*mg/cm3 ; + G4Material* Xe20CO2 = new G4Material(name="Xe20CO2" , density, ncomponents=2); + Xe20CO2->AddMaterial( Xe, fractionmass = 0.922 ) ; + Xe20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ; + + // 80% Kr + 20% CO2, STP + + density = 3.601*mg/cm3 ; + G4Material* Kr20CO2 = new G4Material(name="Kr20CO2", density, + ncomponents=2); + Kr20CO2->AddMaterial( Kr, fractionmass = 0.89 ) ; + Kr20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.11 ) ; + + // Xe + 55% He + 15% CH4 ; NIM A294 (1990) 465-472; STP + + density = 1.963*mg/cm3; + G4Material* Xe55He15CH4 = new G4Material(name="Xe55He15CH4",density, + ncomponents=3); + Xe55He15CH4->AddMaterial(Xe, 0.895); + Xe55He15CH4->AddMaterial(He, 0.050); + Xe55He15CH4->AddMaterial(metane,0.055); + + // 90% Xe + 10% CH4, STP ; NIM A248 (1986) 379-388 + + density = 5.344*mg/cm3 ; + G4Material* Xe10CH4 = new G4Material(name="Xe10CH4" , density, + ncomponents=2); + Xe10CH4->AddMaterial( Xe, fractionmass = 0.987 ) ; + Xe10CH4->AddMaterial( metane, fractionmass = 0.013 ) ; + + +#endif + +// +// +////////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsList.hh b/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsList.hh new file mode 100644 index 0000000000..9c2d0262da --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsList.hh @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10PhysicsList.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#ifndef Em10PhysicsList_h +#define Em10PhysicsList_h 1 + +#include "G4VUserPhysicsList.hh" +#include "globals.hh" + +class G4PhotoElectricEffect; +class G4ComptonScattering; +class G4GammaConversion; + +class G4MultipleScattering; + +class G4PAIonisation ; +class G4ForwardXrayTR ; +class G4eIonisation; +class G4eBremsstrahlung; +class G4eplusAnnihilation; + +class G4MuIonisation; +class G4MuBremsstrahlung; +class G4MuPairProduction; + +class G4hIonisation; +class G4hIonisationPlus; + +class Em10StepCut; + +class Em10DetectorConstruction; +class Em10PhysicsListMessenger; + + +class Em10PhysicsList: public G4VUserPhysicsList +{ + public: + Em10PhysicsList( Em10DetectorConstruction*); + ~Em10PhysicsList(); + + protected: + // Construct particle and physics + void ConstructParticle(); + void ConstructProcess(); + + void SetCuts(); + + protected: + // these methods Construct particles + void ConstructBosons(); + void ConstructLeptons(); + void ConstructMesons(); + void ConstructBarions(); + + protected: + + // these methods Construct physics processes and register them + + void AddParameterisation(); + void ConstructGeneral(); + void ConstructEM(); + + public: + + void SetGammaCut(G4double); + void SetElectronCut(G4double); + void SetProtonCut(G4double); + void SetCutsByEnergy(G4double); + void GetRange(G4double); + + void SetMaxStep(G4double); + + public: + + G4double MaxChargedStep; + + private: + + G4PhotoElectricEffect* thePhotoElectricEffect; + G4ComptonScattering* theComptonScattering; + G4GammaConversion* theGammaConversion; + + G4MultipleScattering* theeminusMultipleScattering; + G4eIonisation* theeminusIonisation; + G4eBremsstrahlung* theeminusBremsstrahlung; + + G4PAIonisation* fPAIonisation ; + G4ForwardXrayTR* fForwardXrayTR ; + + G4MultipleScattering* theeplusMultipleScattering; + G4eIonisation* theeplusIonisation; + G4eBremsstrahlung* theeplusBremsstrahlung; + G4eplusAnnihilation* theeplusAnnihilation; + + Em10StepCut* theeminusStepCut ; + Em10StepCut* theeplusStepCut ; + + G4double cutForGamma; + G4double cutForElectron; + G4double cutForProton; + + Em10DetectorConstruction* pDet; + Em10PhysicsListMessenger* physicsListMessenger; +}; + +#endif + + + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsListMessenger.hh new file mode 100644 index 0000000000..2d14d812ef --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10PhysicsListMessenger.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10PhysicsListMessenger.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10PhysicsListMessenger_h +#define Em10PhysicsListMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class Em10PhysicsList; +class G4UIcmdWithoutParameter; +class G4UIcmdWithADouble; +class G4UIcmdWithADoubleAndUnit; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10PhysicsListMessenger: public G4UImessenger +{ + public: + Em10PhysicsListMessenger(Em10PhysicsList*); + ~Em10PhysicsListMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + Em10PhysicsList* Em10List; + + G4UIcmdWithADoubleAndUnit* setMaxStepCmd; + + G4UIcmdWithADoubleAndUnit* cutGCmd; + G4UIcmdWithADoubleAndUnit* cutECmd; + G4UIcmdWithADoubleAndUnit* cutPCmd; + G4UIcmdWithADoubleAndUnit* rCmd; + G4UIcmdWithADoubleAndUnit* eCmd; + +}; + +#endif + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..2b83562c8c --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorAction.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10PrimaryGeneratorAction.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10PrimaryGeneratorAction_h +#define Em10PrimaryGeneratorAction_h 1 + +#include "G4VUserPrimaryGeneratorAction.hh" +#include "globals.hh" + +class G4ParticleGun; +class G4Event; +class Em10DetectorConstruction; +class Em10PrimaryGeneratorMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + Em10PrimaryGeneratorAction(Em10DetectorConstruction*); + ~Em10PrimaryGeneratorAction(); + + public: + void GeneratePrimaries(G4Event*); + void SetRndmFlag(G4String val) { rndmFlag = val;} + void Setxvertex(G4double x) ; + void Setyvertex(G4double y) ; + void Setzvertex(G4double z) ; + + static G4String GetPrimaryName() ; + + private: + G4ParticleGun* particleGun; //pointer a to G4 service class + Em10DetectorConstruction* Em10Detector; //pointer to the geometry + + Em10PrimaryGeneratorMessenger* gunMessenger; //messenger of this class + G4String rndmFlag; //flag for a random impact point + + static G4String thePrimaryParticleName ; + G4double xvertex,yvertex,zvertex; + G4bool vertexdefined ; + +}; + +#endif + + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorMessenger.hh new file mode 100644 index 0000000000..4ba0a69ff9 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10PrimaryGeneratorMessenger.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10PrimaryGeneratorMessenger.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10PrimaryGeneratorMessenger_h +#define Em10PrimaryGeneratorMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class Em10PrimaryGeneratorAction; +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10PrimaryGeneratorMessenger: public G4UImessenger +{ + public: + Em10PrimaryGeneratorMessenger(Em10PrimaryGeneratorAction*); + ~Em10PrimaryGeneratorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + Em10PrimaryGeneratorAction* Em10Action; + G4UIcmdWithAString* RndmCmd; + G4UIcmdWithADoubleAndUnit* setxvertexCmd; + G4UIcmdWithADoubleAndUnit* setyvertexCmd; + G4UIcmdWithADoubleAndUnit* setzvertexCmd; +}; + +#endif + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10RunAction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10RunAction.hh new file mode 100644 index 0000000000..ae5db9ff57 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10RunAction.hh @@ -0,0 +1,190 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10RunAction.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10RunAction_h +#define Em10RunAction_h 1 + +#include "G4UserRunAction.hh" +#include "globals.hh" +#include "g4std/iostream" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10RunMessenger; +class G4Run; + +#ifndef G4NOHIST + class HepTupleManager; + class HepHistogram; +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10RunAction : public G4UserRunAction +{ + public: + Em10RunAction(); + ~Em10RunAction(); + + public: + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + void CountEvent(); + void CountParticles(G4double,G4double); + void AddEP(G4double,G4double); + void AddEdeps(G4double Eabs); + void AddTrackLength(G4double tlabs); + void AddnStepsCharged(G4double ns); + void AddnStepsNeutral(G4double ns); + + void AddTrRef(G4double tr,G4double ref); + + void FillEn(G4double En); + void FillTh(G4double Th); + void FillThBack(G4double Th); + void FillR(G4double R); + void FillTt(G4double Tt); + void FillTb(G4double Tt); + void FillTsec(G4double T); + void FillGammaSpectrum(G4double E); + void FillNbOfSteps(G4double nstep); + void Fillvertexz(G4double z); + + void SethistName(G4String name) ; + + void SetnbinStep(G4int nbin); + void SetSteplow(G4double Slow); + void SetStephigh(G4double Shigh); + + void SetnbinEn(G4int nbin); + void SetEnlow(G4double Elow); + void SetEnhigh(G4double Enhigh); + + void SetnbinTt(G4int nbin); + void SetTtlow(G4double Ttlow); + void SetTthigh(G4double Tthigh); + + void SetnbinTb(G4int nbin); + void SetTblow(G4double Tblow); + void SetTbhigh(G4double Tbhigh); + + void SetnbinTsec(G4int nbin); + void SetTseclow(G4double Tlow); + void SetTsechigh(G4double Thigh); + + void SetnbinTh(G4int nbin); + void SetThlow(G4double Thlow); + void SetThhigh(G4double Thhigh); + + void SetnbinThBack(G4int nbin); + void SetThlowBack(G4double Thlow); + void SetThhighBack(G4double Thhigh); + + void SetnbinR(G4int nbin); + void SetRlow(G4double Rlow); + void SetRhigh(G4double Rhigh); + + void SetnbinGamma(G4int nbin); + void SetElowGamma(G4double Elow); + void SetEhighGamma(G4double Ehigh); + + void Setnbinzvertex(G4int nbin); + void Setzlow(G4double z); + void Setzhigh(G4double z); + + void SetRndmFreq(G4int val) {saveRndm = val;} + G4int GetRndmFreq() {return saveRndm;} + + private: + + void bookHisto(); + + private: + + G4String histName ; + +#ifndef G4NOHIST + HepTupleManager* hbookManager; + HepHistogram *histo1, *histo2, *histo3, *histo4, *histo5 ; + HepHistogram *histo6, *histo7, *histo8, *histo9, *histo10; +#endif + + G4double EnergySumAbs,EnergySquareSumAbs; + G4double tlSumAbs,tlsquareSumAbs; + G4double nStepSumCharged,nStepSum2Charged ; + G4double nStepSumNeutral,nStepSum2Neutral ; + G4double TotNbofEvents; + G4double SumCharged,Sum2Charged,SumNeutral,Sum2Neutral; + G4double Selectron,Spositron; + + G4double Transmitted,Reflected ; + + G4double entryStep,underStep,overStep,distStep[200]; + G4double Steplow,Stephigh,dStep; + G4int nbinStep; + G4double entryEn,underEn,overEn,distEn[200]; + G4double Enlow,Enhigh,dEn; + G4int nbinEn; + G4double entryTt,underTt,overTt,distTt[200]; + G4double Ttlow,Tthigh,dTt; + G4int nbinTt; + G4double Ttmean,Tt2mean; + G4double entryTb,underTb,overTb,distTb[200]; + G4double Tblow,Tbhigh,dTb; + G4int nbinTb; + G4double Tbmean,Tb2mean; + G4double entryTsec,underTsec,overTsec,distTsec[200]; + G4double Tseclow,Tsechigh,dTsec; + G4int nbinTsec; + G4double entryTh,underTh,overTh,distTh[200]; + G4double Thlow,Thhigh,dTh; + G4int nbinTh; + G4double entryThback,underThback,overThback,distThback[200]; + G4double Thlowback,Thhighback,dThback; + G4int nbinThback; + G4double entryR ,underR ,overR ,distR[200]; + G4double Rlow,Rhigh,dR; + G4int nbinR; + G4double Rmean,R2mean; + G4double entryGamma,underGamma,overGamma,distGamma[200]; + G4double ElowGamma,EhighGamma,dEGamma; + G4int nbinGamma ; + G4double entryvertexz,undervertexz,oververtexz,distvertexz[200]; + G4double zlow,zhigh,dz; + G4int nbinvertexz; + + Em10RunMessenger* runMessenger; + G4int saveRndm; +}; + +#endif + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10RunMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10RunMessenger.hh new file mode 100644 index 0000000000..5aae71fef0 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10RunMessenger.hh @@ -0,0 +1,115 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// + +// +// $Id: Em10RunMessenger.hh,v 1.2 2001/07/11 09:57:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10RunMessenger_h +#define Em10RunMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10RunAction; +class G4UIdirectory; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithADouble; +class G4UIcmdWithAString; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10RunMessenger: public G4UImessenger +{ + public: + + Em10RunMessenger(Em10RunAction* ); + ~Em10RunMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + Em10RunAction* runAction; + + G4UIdirectory* plotDir; + + G4UIcmdWithAString* sethistNameCmd; + + G4UIcmdWithAnInteger* setnbinStepCmd; + G4UIcmdWithADouble* setSteplowCmd; + G4UIcmdWithADouble* setStephighCmd; + + G4UIcmdWithAnInteger* setnbinEnCmd; + G4UIcmdWithADoubleAndUnit* setEnlowCmd; + G4UIcmdWithADoubleAndUnit* setEnhighCmd; + + G4UIcmdWithAnInteger* setnbinGammaCmd; + G4UIcmdWithADoubleAndUnit* setElowGammaCmd; + G4UIcmdWithADoubleAndUnit* setEhighGammaCmd; + + G4UIcmdWithAnInteger* setnbinTtCmd; + G4UIcmdWithADoubleAndUnit* setTtlowCmd; + G4UIcmdWithADoubleAndUnit* setTthighCmd; + + G4UIcmdWithAnInteger* setnbinTbCmd; + G4UIcmdWithADoubleAndUnit* setTblowCmd; + G4UIcmdWithADoubleAndUnit* setTbhighCmd; + + G4UIcmdWithAnInteger* setnbinTsecCmd; + G4UIcmdWithADoubleAndUnit* setTseclowCmd; + G4UIcmdWithADoubleAndUnit* setTsechighCmd; + + G4UIcmdWithAnInteger* setnbinRCmd; + G4UIcmdWithADoubleAndUnit* setRlowCmd; + G4UIcmdWithADoubleAndUnit* setRhighCmd; + + G4UIcmdWithAnInteger* setnbinThCmd; + G4UIcmdWithADoubleAndUnit* setThlowCmd; + G4UIcmdWithADoubleAndUnit* setThhighCmd; + + G4UIcmdWithAnInteger* setnbinThbackCmd; + G4UIcmdWithADoubleAndUnit* setThlowbackCmd; + G4UIcmdWithADoubleAndUnit* setThhighbackCmd; + + G4UIcmdWithAnInteger* setnbinzvertexCmd; + G4UIcmdWithADoubleAndUnit* setzlowCmd; + G4UIcmdWithADoubleAndUnit* setzhighCmd; + + G4UIdirectory* RndmDir; + G4UIcmdWithAnInteger* RndmSaveCmd; + G4UIcmdWithAString* RndmReadCmd; + +}; + +#endif + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10StepCut.hh b/examples/extended/electromagnetic/TestEm10/include/Em10StepCut.hh new file mode 100644 index 0000000000..30f2877b1d --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10StepCut.hh @@ -0,0 +1,125 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10StepCut.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef Em10StepCut_h +#define Em10StepCut_h 1 + +#include "G4ios.hh" +#include "globals.hh" +#include "G4VDiscreteProcess.hh" +#include "G4Step.hh" + +class Em10StepCut : public G4VDiscreteProcess +{ + public: + + Em10StepCut(const G4String& processName ="UserStepCut" ); + Em10StepCut(Em10StepCut &); + + ~Em10StepCut(); + + G4double PostStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition + ); + + G4VParticleChange* PostStepDoIt( + const G4Track& , + const G4Step& + ); + + void SetMaxStep(G4double); + + protected: + + // it is not needed here ! + G4double GetMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ); + + + private: + + // hide assignment operator as private + Em10StepCut & operator=(const Em10StepCut &right); + + private: + + G4double MaxChargedStep ; +}; + +// inlined function members implementation + +#include "G4Step.hh" +#include "G4Track.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + +inline G4double Em10StepCut::PostStepGetPhysicalInteractionLength( + const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + // condition is set to "Not Forced" + *condition = NotForced; + + G4double ProposedStep = DBL_MAX; + + if((MaxChargedStep > 0.) && + (aTrack.GetVolume() != NULL) && + (aTrack.GetVolume()->GetName() == "Absorber") && + (aTrack.GetDynamicParticle()->GetDefinition()->GetPDGCharge() != 0.)) + ProposedStep = MaxChargedStep ; + + return ProposedStep; +} + +inline G4VParticleChange* Em10StepCut::PostStepDoIt( + const G4Track& aTrack, + const G4Step& + ) +{ + // do nothing + aParticleChange.Initialize(aTrack); + return &aParticleChange; +} + +inline G4double Em10StepCut::GetMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + return 0.; +} + +#endif + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingAction.hh b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingAction.hh new file mode 100644 index 0000000000..a3cc562548 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingAction.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10SteppingAction.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10SteppingAction_h +#define Em10SteppingAction_h 1 + +#include "G4UserSteppingAction.hh" +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4ios.hh" +#include "globals.hh" + +class Em10DetectorConstruction; +class Em10RunAction; +class Em10EventAction; +class Em10SteppingMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10SteppingAction : public G4UserSteppingAction +{ + public: + Em10SteppingAction(Em10DetectorConstruction*, Em10EventAction*, + Em10RunAction* ); + ~Em10SteppingAction(); + + void UserSteppingAction(const G4Step*); + + private: + Em10DetectorConstruction* detector; + Em10EventAction* eventaction; + Em10RunAction* runaction; + Em10SteppingMessenger* steppingMessenger; + + G4int IDnow,IDold; + G4int evnoold ; + +}; + +#endif diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingMessenger.hh b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingMessenger.hh new file mode 100644 index 0000000000..5d4f1abebf --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingMessenger.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10SteppingMessenger.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10SteppingMessenger_h +#define Em10SteppingMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10SteppingAction; +class G4UIdirectory; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10SteppingMessenger: public G4UImessenger +{ + public: + + Em10SteppingMessenger(Em10SteppingAction* ); + ~Em10SteppingMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + Em10SteppingAction* steppingAction; + + G4UIdirectory* steppingDir; + +}; + +#endif + diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingVerbose.hh new file mode 100644 index 0000000000..02f3512f36 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10SteppingVerbose.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10SteppingVerbose.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +//--------------------------------------------------------------- +// +// Em10SteppingVerbose.hh +// +// Description: +// This class manages the vervose outputs in G4SteppingManager. +// +// +// Contact: +// Questions and comments to this code should be sent to +// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) +// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) +// +//--------------------------------------------------------------- + +class Em10SteppingVerbose; + +#ifndef Em10SteppingVerbose_h +#define Em10SteppingVerbose_h 1 + +#include "G4SteppingVerbose.hh" + +class Em10SteppingVerbose : public G4SteppingVerbose +{ + public: + // Constructor/Destructor + + Em10SteppingVerbose(); + ~Em10SteppingVerbose(); + + void StepInfo(); + void TrackingStarted(); + +}; + +#endif diff --git a/examples/extended/electromagnetic/TestEm10/include/Em10VisManager.hh b/examples/extended/electromagnetic/TestEm10/include/Em10VisManager.hh new file mode 100644 index 0000000000..b5892d83fb --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/Em10VisManager.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10VisManager.hh,v 1.2 2001/07/11 09:57:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// Example Visualization Manager implementing virtual function +// RegisterGraphicsSystems. Exploits C-pre-processor variables +// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if +// environment variables of the same name are set. + +// So all you have to do is set environment variables and compile and +// instantiate this in your main(). + +// Alternatively, you can implement an empty function here and just +// register the systems you want in your main(), e.g.: +// G4VisManager* myVisManager = new MyVisManager; +// myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef Em10VisManager_h +#define Em10VisManager_h 1 + +#include "G4VisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class Em10VisManager: public G4VisManager +{ + public: + + Em10VisManager (); + + private: + + void RegisterGraphicsSystems (); + +}; + +#endif diff --git a/examples/extended/electromagnetic/TestEm10/include/TRTDetectorConstruction.hh b/examples/extended/electromagnetic/TestEm10/include/TRTDetectorConstruction.hh new file mode 100644 index 0000000000..8efe7a05bd --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/TRTDetectorConstruction.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: TRTDetectorConstruction.hh,v 1.2 2001/07/11 09:57:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef TRTDetectorConstruction_h +#define TRTDetectorConstruction_h 1 + +#include "G4VUserDetectorConstruction.hh" +#include "Randomize.hh" + +class TRTTrackerSD; +class SCTTrackerSD; +class HepJamesRandom; + +class TRTDetectorConstruction : public G4VUserDetectorConstruction +{ + public: + TRTDetectorConstruction(); + ~TRTDetectorConstruction(); + + public: + G4VPhysicalVolume* Construct(); + + private: + TRTTrackerSD *TRTStrawSD; + SCTTrackerSD *SCTStripSD; + HepJamesRandom theJamesEngine; +}; + +#endif diff --git a/examples/extended/electromagnetic/TestEm10/include/TRTMaterials.hh b/examples/extended/electromagnetic/TestEm10/include/TRTMaterials.hh new file mode 100644 index 0000000000..1004f018a5 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/include/TRTMaterials.hh @@ -0,0 +1,121 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: TRTMaterials.hh,v 1.2 2001/07/11 09:57:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef TRT_MATERIALS_HH +#define TRT_MATERIALS_HH + +//--------- Material definition --------- + + G4double a, iz, z, density; + G4String name, symbol; + G4int nel, nComponents; + + a = 14.01*g/mole; + G4Element* elN = new G4Element(name="Nitrogen", symbol="N", iz=7., a); + a = 16.00*g/mole; + G4Element* elO = new G4Element(name="Oxygen", symbol="O", iz=8., a); + a = 12.01*g/mole; + G4Element* elC = new G4Element(name="Carbon", symbol="C", iz=6., a); + a = 1.01*g/mole; + G4Element* elH = new G4Element(name="Hydrogen", symbol="H", iz=1., a); + a = 131.29*g/mole; + G4Element* elXe = new G4Element(name="Xenon", symbol="Xe", iz=54., a); + a = 19.00*g/mole; + G4Element* elF = new G4Element(name="Fluorine", symbol="F", iz=9., a); + + density = 1.205*mg/cm3; + G4Material* Air = new G4Material(name="Air", density, nel=2, + kStateGas,293.15*kelvin,1.*atmosphere); + Air->AddElement(elN, .7); + Air->AddElement(elO, .3); + + density = 1.39*g/cm3; + G4Material* Kapton = new G4Material(name="Kapton", density, nel=3); + Kapton->AddElement(elO,2); + Kapton->AddElement(elC,5); + Kapton->AddElement(elH,4); + + a = 63.55*g/mole; + density = 8.96*g/cm3; + G4Material* Copper = new G4Material(name="Copper", z=29.,a, density); + + a = 26.98*g/mole; + density = 2.7*g/cm3; + G4Material* Al = new G4Material(name="Aluminum", z=13., a, density); + + a = 28.09*g/mole; + density = 2.33*g/cm3; + G4Material* Si = new G4Material(name="Silicon", z=14., a, density); + + density = 1.977*mg/cm3; + G4Material* CO2 = new G4Material(name="CO2", density, nel=2, + kStateGas,273.15*kelvin,1.*atmosphere); + CO2->AddElement(elC,1); + CO2->AddElement(elO,2); + + G4double TRT_Xe_density = 5.485*mg/cm3; + G4Material* TRT_Xe = new G4Material(name="TRT_Xe", TRT_Xe_density, nel=1, + kStateGas,293.15*kelvin,1.*atmosphere); + TRT_Xe->AddElement(elXe,1); + + G4double TRT_CO2_density = 1.842*mg/cm3; + G4Material* TRT_CO2 = new G4Material(name="TRT_CO2", TRT_CO2_density, nel=2, + kStateGas,293.15*kelvin,1.*atmosphere); + TRT_CO2->AddElement(elC,1); + TRT_CO2->AddElement(elO,2); + + G4double TRT_CF4_density = 3.9*mg/cm3; + G4Material* TRT_CF4 = new G4Material(name="TRT_CF4", TRT_CF4_density, nel=2, + kStateGas,293.15*kelvin,1.*atmosphere); + TRT_CF4->AddElement(elC,1); + TRT_CF4->AddElement(elF,4); + + G4double XeCO2CF4_density = 4.76*mg/cm3; + G4Material* XeCO2CF4 = new G4Material(name="XeCO2CF4", XeCO2CF4_density, + nComponents=3, + kStateGas,293.15*kelvin,1.*atmosphere); + XeCO2CF4->AddMaterial(TRT_Xe,0.807); + XeCO2CF4->AddMaterial(TRT_CO2,0.039); + XeCO2CF4->AddMaterial(TRT_CF4,0.154); + + density = 0.935*g/cm3; + G4Material* TRT_CH2 = new G4Material(name="TRT_CH2",density, nel=2); + TRT_CH2->AddElement(elC,1); + TRT_CH2->AddElement(elH,2); + + density = 0.059*g/cm3; + G4Material* Radiator = new G4Material(name="Radiator",density, nel=2); + Radiator->AddElement(elC,1); + Radiator->AddElement(elH,2); + + density = 0.145*g/cm3; + G4Material* CarbonFiber = new G4Material(name="CarbonFiber",density, nel=1); + CarbonFiber->AddElement(elC,1); + +#endif + diff --git a/examples/extended/electromagnetic/TestEm10/init.mac b/examples/extended/electromagnetic/TestEm10/init.mac new file mode 100644 index 0000000000..68c1650277 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/init.mac @@ -0,0 +1,10 @@ +# +# Macro file for the initialization phase of "TestEm10.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +/run/verbose 2 +# +# + diff --git a/examples/extended/electromagnetic/TestEm10/run01.mac b/examples/extended/electromagnetic/TestEm10/run01.mac new file mode 100644 index 0000000000..704b0462b7 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run01.mac @@ -0,0 +1,37 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Gold +/calor/setAbsThick 9.658e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot01 +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 100 +/plots/setThlow 0.0 deg +/plots/setThhigh 10.0 deg +# +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle e- +/gun/energy 15.7 MeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run01a.mac b/examples/extended/electromagnetic/TestEm10/run01a.mac new file mode 100644 index 0000000000..49dfbc5f49 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run01a.mac @@ -0,0 +1,39 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Gold +/calor/setAbsThick 9.658e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot01a +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 60 +/plots/setThlow 0.0 deg +/plots/setThhigh 30.0 deg +# +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle e- +/gun/energy 15.7 MeV +# +/run/beamOn 4186 +/tracking/verbose 1 +/run/beamOn 1 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run01b.mac b/examples/extended/electromagnetic/TestEm10/run01b.mac new file mode 100644 index 0000000000..6b6adc5727 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run01b.mac @@ -0,0 +1,38 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Gold +/calor/setAbsThick 9.658e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot01 +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 100 +/plots/setThlow 0.0 deg +/plots/setThhigh 10.0 deg +# +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle e- +/gun/energy 15.7 MeV +# +/event/verbose 1 +/run/beamOn 100000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run02.mac b/examples/extended/electromagnetic/TestEm10/run02.mac new file mode 100644 index 0000000000..ce699b924b --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run02.mac @@ -0,0 +1,37 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Gold +/calor/setAbsThick 19.296e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot02 +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 100 +/plots/setThlow 0.0 deg +/plots/setThhigh 10.0 deg +# +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle e- +/gun/energy 15.7 MeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run02a.mac b/examples/extended/electromagnetic/TestEm10/run02a.mac new file mode 100644 index 0000000000..2364009386 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run02a.mac @@ -0,0 +1,37 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Gold +/calor/setAbsThick 19.296e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot02a +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 60 +/plots/setThlow 0.0 deg +/plots/setThhigh 30.0 deg +# +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle e- +/gun/energy 15.7 MeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run03.mac b/examples/extended/electromagnetic/TestEm10/run03.mac new file mode 100644 index 0000000000..51416ba5cc --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run03.mac @@ -0,0 +1,36 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Silicon +/calor/setAbsThick 50.000e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot03 +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 60 +/plots/setThlow 0.0 deg +/plots/setThhigh 6.0 deg +# +/calor/cutG 2130.0 micrometer +/calor/cutE 7.000 micrometer +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle proton +/gun/energy 6.56 MeV +# +/run/beamOn 100000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run04.mac b/examples/extended/electromagnetic/TestEm10/run04.mac new file mode 100644 index 0000000000..beee74f869 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run04.mac @@ -0,0 +1,36 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Silicon +/calor/setAbsThick 92.600e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot04 +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 60 +/plots/setThlow 0.0 deg +/plots/setThhigh 6.0 deg +# +/calor/cutG 2130.0 micrometer +/calor/cutE 7.000 micrometer +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle proton +/gun/energy 6.56 MeV +# +/run/beamOn 100000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run05.mac b/examples/extended/electromagnetic/TestEm10/run05.mac new file mode 100644 index 0000000000..a648f53b53 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run05.mac @@ -0,0 +1,39 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Aluminium +/calor/setAbsThick 4.005 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# +# hist file name +/plots/sethistName geant4.plot05 +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 100 +/plots/setThlow 0.0 deg +/plots/setThhigh 0.01 deg +# +/calor/cutG 2250.0 micrometer +/calor/cutE 6.050 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle proton +# momentum 70 GeV/c .... +/gun/energy 69068. MeV +# +/run/beamOn 100000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run1.mac b/examples/extended/electromagnetic/TestEm10/run1.mac new file mode 100644 index 0000000000..a822392e01 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run1.mac @@ -0,0 +1,95 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +# /run/setdefault +# /run/setintegral +# /run/setcontonly +# /run/setionplus +/run/setdefault +/run/setminDeltaEnergy 1. keV +# /run/setdRoverR 0.001 +# /run/setfinalR 0.001 mm +# +# PLOT: nb of steps .................................................... +/plots/setnbinStep 100 +/plots/setSteplow 0. +/plots/setStephigh 2000. +# PLOT: sum of tracklength of charged particles ......................... +/plots/setnbinTl 0 +/plots/setTllow 0.0 mm +/plots/setTlhigh 3.0 mm +# PLOT: energy deposit distribution in absorber............................ +/plots/setnbinEn 0 +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.50 MeV +# PLOT: energy of transmitted particles (with quantum numbers of the primary) +/plots/setnbinTt 0 +/plots/setTtlow 0.0 MeV +/plots/setTthigh 1.0 MeV +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 0 +/plots/setThlow 0.0 deg +/plots/setThhigh 90. deg +# PLOT: lateral displacement for transmitted particles at exit +/plots/setnbinR 0 +/plots/setRlow 0.0 mm +/plots/setRhigh 2.0 mm +# PLOT: energy of backscattered particles (with quantum numbers of the primary) +/plots/setnbinTb 0 +/plots/setTblow 0.0 MeV +/plots/setTbhigh 1.0 MeV +# PLOT: angle distr. of backscattered particles +/plots/setnbinThback 0 +/plots/setThlowback 0.0 deg +/plots/setThhighback 90.0 deg +# PLOT: energy spectrum of charged secondaries +/plots/setnbinTsec 0 +/plots/setTseclow 0.00 MeV +/plots/setTsechigh 0.50 MeV +# PLOT: z coord. of e+/e- production +/plots/setnbinzvertex 0 +/plots/setzlow -0.500 mm +/plots/setzhigh 0.500 mm +# PLOT: energy spectrum of photons escaping the absorber (forward) +/plots/setnbinGamma 0 +/plots/setElowGamma 1.0 keV +/plots/setEhighGamma 1000.0 keV +# +/run/initialize +/calor/setAbsMat Aluminium +# +/calor/setAbsThick 20.0 m +/calor/setAbsRad 10.00 m +/calor/update +# +# /event/setsignoise 3.8 keV +# /event/setcutlow 0.0 keV +# +/calor/cutG 2.2 mm +/calor/cutE 6.05 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle e- +/gun/energy 100. MeV +/gun/xvertex 0.000 mm +/gun/yvertex 0.000 mm +/gun/zvertex -5.000 m +# +/tracking/verbose 0 +/stepping/setprintlimit 1000 +/event/setverbose 0 +/stepping/setverbose 0 +/stepping/setnbofevents 0 +/stepping/seteventno 99 +# +/run/beamOn 10 +# + diff --git a/examples/extended/electromagnetic/TestEm10/run11.mac b/examples/extended/electromagnetic/TestEm10/run11.mac new file mode 100644 index 0000000000..448e15465a --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run11.mac @@ -0,0 +1,71 @@ +# +# Macro file 'run11.mac' for the initialization phase of "TestEm10.cc" +# +/control/verbose 2 +# +#control/saveHistory +# +/run/verbose 2 +# +#/run/initialize +# +# Parameters of MWPC detector: material and its thickness +# Xe55He15CH4, Xe10CH4, Xe20CH4, Xe5CH4, Xe20CO2, Kr20CO2 +# Kr7CH4, Ar7CH4, XeArCH4 +# +/XTRdetector/setAbsMat Xe20CO2 +/XTRdetector/setAbsThick 3.0 mm +/XTRdetector/setWorldZ 4000.0 mm +# +# Parameters of Radiator (default mm) +# TRT_CH2, Radiator, CarbonFiber, Li, Be, Mylar, Kapton ?, CH2 +# Air, CO2, He, Ne, Kr, Ar, Xe, +# +/XTRdetector/setRadMat CH2 +/XTRdetector/setWorldMat Air +/XTRdetector/setRadThick 0.02 mm +/XTRdetector/setGasGapThick 0.2 mm +/XTRdetector/setFoilNum 200 +# +# Selection of XTR parametrisation model: 1-10 +# TRmodel/XTRdEdx: Foam 1/2, GamDistr 3/4, Irr 5/6, Plate 7/8, Reg 9/10 +# +/XTRdetector/setModel 10 +# +# Update geometry after changing its parametrs +# +#/XTRdetector/update +# window: Myalr 51 micron +# PLOT: energy deposit distribution in absorber (g4.11) +# +/plots/sethistName g4.p11 +/plots/setnbinEn 40 +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 0.02 MeV +# +# +/run/initialize +/run/particle/dumpCutValues +# +# Particle and its energy +# +/gun/particle e- +# +/gun/energy 40000.0 MeV +# +#/tracking/verbose 2 +# +/event/printModulo 100 +/run/beamOn 1000 +# +# + + + + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm10/run12.mac b/examples/extended/electromagnetic/TestEm10/run12.mac new file mode 100644 index 0000000000..40644b1b2a --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run12.mac @@ -0,0 +1,36 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Silicon +/calor/setAbsThick 105.0e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot12 +# PLOT: energy deposit distribution in absorber............................ +/plots/setnbinEn 55 +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.1 MeV +# +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle e- +/gun/energy 1.00 MeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run13.mac b/examples/extended/electromagnetic/TestEm10/run13.mac new file mode 100644 index 0000000000..f8f79673e0 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run13.mac @@ -0,0 +1,36 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Silicon +/calor/setAbsThick 191.0e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot13 +# PLOT: energy deposit distribution in absorber............................ +/plots/setnbinEn 55 +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.1 MeV +# +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle e- +/gun/energy 1.00 MeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run14.mac b/examples/extended/electromagnetic/TestEm10/run14.mac new file mode 100644 index 0000000000..e845b4468d --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run14.mac @@ -0,0 +1,36 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Silicon +/calor/setAbsThick 530.0e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot14 +# PLOT: energy deposit distribution in absorber............................ +/plots/setnbinEn 55 +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.1 MeV +# +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle e- +/gun/energy 1.00 MeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run15.mac b/examples/extended/electromagnetic/TestEm10/run15.mac new file mode 100644 index 0000000000..ec6cedd942 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run15.mac @@ -0,0 +1,36 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Silicon +/calor/setAbsThick 1000.0e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot15 +# PLOT: energy deposit distribution in absorber............................ +/plots/setnbinEn 55 +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.1 MeV +# +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle e- +/gun/energy 1.00 MeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run16.mac b/examples/extended/electromagnetic/TestEm10/run16.mac new file mode 100644 index 0000000000..7c7f9d7f7e --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run16.mac @@ -0,0 +1,36 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +/run/initialize +# +/calor/setAbsMat Silicon +/calor/setAbsThick 3000.0e-3 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +# hist file name +/plots/sethistName geant4.plot16 +# PLOT: energy deposit distribution in absorber............................ +/plots/setnbinEn 55 +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.1 MeV +# +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle e- +/gun/energy 1.00 MeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run2.mac b/examples/extended/electromagnetic/TestEm10/run2.mac new file mode 100644 index 0000000000..e45c79971b --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run2.mac @@ -0,0 +1,93 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +# /run/setdefault +# /run/setintegral +# /run/setcontonly +# /run/setionplus +/run/setdefault +/run/setminDeltaEnergy 1. keV +/run/setdRoverR 0.050 +/run/setfinalR 0.001 mm +# +# PLOT: nb of steps .................................................... +/plots/setnbinStep 100 +/plots/setSteplow 0. +/plots/setStephigh 100. +# PLOT: sum of tracklength of charged particles ......................... +/plots/setnbinTl 50 +/plots/setTllow 0.0 mm +/plots/setTlhigh 1.0 mm +# PLOT: energy deposit distribution in absorber............................ +/plots/setnbinEn 60 +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.20 MeV +# PLOT: energy of transmitted particles (with quantum numbers of the primary) +/plots/setnbinTt 50 +/plots/setTtlow 0.0 MeV +/plots/setTthigh 1.0 MeV +# PLOT: angle distr. of transmitted particles +/plots/setnbinTh 30 +/plots/setThlow 0.0 deg +/plots/setThhigh 90. deg +# PLOT: lateral displacement for transmitted particles at exit +/plots/setnbinR 50 +/plots/setRlow 0.0 mm +/plots/setRhigh 0.25 mm +# PLOT: energy of backscattered particles (with quantum numbers of the primary) +/plots/setnbinTb 50 +/plots/setTblow 0.0 MeV +/plots/setTbhigh 1.0 MeV +# PLOT: andle distr. of backscattered particles +/plots/setnbinThback 30 +/plots/setThlowback 0.0 deg +/plots/setThhighback 90.0 deg +# PLOT: energy spectrum of charged secondaries +/plots/setnbinTsec 100 +/plots/setTseclow 0.00 MeV +/plots/setTsechigh 0.50 MeV +# PLOT: z coord. of e+/e- production +/plots/setnbinzvertex 100 +/plots/setzlow -0.0500 mm +/plots/setzhigh 0.0500 mm +# PLOT: energy spectrum of photons escaping the absorber (forward) +/plots/setnbinGamma 100 +/plots/setElowGamma 1.0 keV +/plots/setEhighGamma 1000.0 keV +# +/run/initialize +/calor/setAbsMat Gold +# +/calor/setAbsThick 0.10 mm +/calor/setAbsRad 10.00 mm +/calor/update +# +# /event/setsignoise 3.8 keV +# /event/setcutlow 0.0 keV +# +/run/particle/setCut 0.0001000 mm +/run/initialize +/run/particle/dumpCutValues +# +/gun/particle e- +/gun/energy 1. MeV +/gun/xvertex 0.000 mm +/gun/yvertex 0.000 mm +/gun/zvertex -0.0500 mm +# +/tracking/verbose 0 +/stepping/setprintlimit 1000 +/event/setverbose 0 +/stepping/setverbose 0 +/stepping/setnbofevents 0 +/stepping/seteventno 99 +# +/run/beamOn 10000 +# + diff --git a/examples/extended/electromagnetic/TestEm10/run21.mac b/examples/extended/electromagnetic/TestEm10/run21.mac new file mode 100644 index 0000000000..6643769ac7 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run21.mac @@ -0,0 +1,37 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +# hist file name +/plots/sethistName geant4.plot21 +# PLOT: gamma energy at exit +/plots/setnbinGamma 80 +/plots/setElowGamma 0.1 MeV +/plots/setEhighGamma 1. GeV +# +/run/initialize +# +/calor/setAbsMat Aluminium +/calor/setAbsThick 5.30 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +/calor/cutG 1.00 mm +/calor/cutE 5.0 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle e- +/gun/energy 25. GeV +# +/run/beamOn 100000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/run22.mac b/examples/extended/electromagnetic/TestEm10/run22.mac new file mode 100644 index 0000000000..64f1b7d0ed --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/run22.mac @@ -0,0 +1,37 @@ +# +# Macro file for the initialization phase of "TestEm5.cc" +# +# It creates the default geometry (simple absorber cylinder ) +# +/control/verbose 2 +#control/saveHistory +/run/verbose 2 +# +# hist file name +/plots/sethistName geant4.plot22 +# PLOT: gamma energy at exit +/plots/setnbinGamma 80 +/plots/setElowGamma 0.1 MeV +/plots/setEhighGamma 1. GeV +# +/run/initialize +# +/calor/setAbsMat Lead +/calor/setAbsThick 0.15 mm +/calor/setAbsRad 100.0 mm +/calor/update +# +/calor/cutG 1.00 mm +/calor/cutE 5.0 micrometer +/run/initialize +/run/particle/dumpCutValues +# +# +/gun/particle e- +/gun/energy 25. GeV +# +/run/beamOn 1000000 +# +# + + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10CalorHit.cc b/examples/extended/electromagnetic/TestEm10/src/Em10CalorHit.cc new file mode 100644 index 0000000000..eff82d1a47 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10CalorHit.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10CalorHit.cc,v 1.2 2001/07/11 09:57:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10CalorHit.hh" + +G4Allocator Em10CalorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10CalorHit::Em10CalorHit() +{ + EdepAbs = 0.; TrackLengthAbs = 0.; + EdepGap = 0.; TrackLengthGap = 0.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10CalorHit::~Em10CalorHit() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10CalorHit::Em10CalorHit(const Em10CalorHit& right) +{ + EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; + EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const Em10CalorHit& Em10CalorHit::operator=(const Em10CalorHit& right) +{ + EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; + EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; + return *this; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +int Em10CalorHit::operator==(const Em10CalorHit& right) const +{ + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10CalorHit::Print() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm10/src/Em10CalorimeterSD.cc new file mode 100644 index 0000000000..1ff706d7ba --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10CalorimeterSD.cc @@ -0,0 +1,131 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10CalorimeterSD.cc,v 1.2 2001/07/11 09:57:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10CalorimeterSD.hh" + +#include "Em10CalorHit.hh" +#include "Em10DetectorConstruction.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4Step.hh" +#include "G4VTouchable.hh" +#include "G4TouchableHistory.hh" +#include "G4SDManager.hh" + +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10CalorimeterSD::Em10CalorimeterSD(G4String name, + Em10DetectorConstruction* det) +:G4VSensitiveDetector(name),Detector(det) +{ + collectionName.insert("CalCollection"); + HitID = new G4int[500]; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10CalorimeterSD::~Em10CalorimeterSD() +{ + delete [] HitID; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10CalorimeterSD::Initialize(G4HCofThisEvent*HCE) +{ + CalCollection = new Em10CalorHitsCollection + (SensitiveDetectorName,collectionName[0]); + for (G4int j=0;j<1; j++) {HitID[j] = -1;}; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4bool Em10CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) +{ + G4double edep = aStep->GetTotalEnergyDeposit(); + + G4double stepl = 0.; + if (aStep->GetTrack()->GetDefinition()->GetPDGCharge() != 0.) + stepl = aStep->GetStepLength(); + + if ((edep==0.)&&(stepl==0.)) return false; + + G4TouchableHistory* theTouchable + = (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable()); + + G4VPhysicalVolume* physVol = theTouchable->GetVolume(); + //theTouchable->MoveUpHistory(); + G4int Em10Number = 0 ; + + if (HitID[Em10Number]==-1) + { + Em10CalorHit* calHit = new Em10CalorHit(); + if (physVol == Detector->GetAbsorber()) calHit->AddAbs(edep,stepl); + HitID[Em10Number] = CalCollection->insert(calHit) - 1; + if (verboseLevel>0) + G4cout << " New Calorimeter Hit on Em10: " << Em10Number << G4endl; + } + else + { + if (physVol == Detector->GetAbsorber()) + (*CalCollection)[HitID[Em10Number]]->AddAbs(edep,stepl); + if (verboseLevel>0) + G4cout << " Energy added to Em10: " << Em10Number << G4endl; + } + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) +{ + static G4int HCID = -1; + if(HCID<0) + { HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]); } + HCE->AddHitsCollection(HCID,CalCollection); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10CalorimeterSD::clear() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +void Em10CalorimeterSD::PrintAll() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10DetectorConstruction.cc new file mode 100644 index 0000000000..c79d370dd9 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10DetectorConstruction.cc @@ -0,0 +1,908 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10DetectorConstruction.cc,v 1.7 2001/11/21 18:48:56 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "Em10DetectorConstruction.hh" +#include "Em10DetectorMessenger.hh" +#include "Em10CalorimeterSD.hh" + +#include "G4VXrayTRmodel.hh" +#include "G4VXrayTRadModel.hh" +#include "G4IrregularXrayTRmodel.hh" +#include "G4FoamXrayTRmodel.hh" +#include "G4RegularXrayTRmodel.hh" +#include "G4GamDistrXrayTRmodel.hh" +#include "G4PlateIrrGasXrayTRmodel.hh" + +#include "G4VXTRdEdx.hh" +#include "G4IrregularXTRdEdx.hh" +#include "G4FoamXTRdEdx.hh" +#include "G4RegularXTRdEdx.hh" +#include "G4GamDistrXTRdEdx.hh" +#include "G4PlateIrrGasXTRdEdx.hh" + +#include "G4Material.hh" +#include "G4Box.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4UniformMagField.hh" +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" +#include "G4SDManager.hh" +#include "G4RunManager.hh" +#include "G4FastSimulationManager.hh" + +#include "G4ios.hh" + +///////////////////////////////////////////////////////////////////////////// +// +// + +Em10DetectorConstruction::Em10DetectorConstruction() + :worldchanged(false), AbsorberMaterial(0), fGapMat(0), + WorldMaterial(0), solidWorld(0), logicWorld(0), physiWorld(0), + fSolidRadSlice(0), fLogicRadSlice(0), fPhysicRadSlice(0), + solidRadiator(0), logicRadiator(0), physiRadiator(0), + fRadiatorMat(0), + solidAbsorber(0), logicAbsorber(0), physiAbsorber(0), + magField(0), calorimeterSD(0), fXTRModel(0) +{ + // default parameter values of the calorimeter + + WorldSizeZ = 80.*cm; + WorldSizeR = 20.*cm; + + // Radiator and detector parameters + + fRadThickness = 40.0*micrometer ; // 25*micrometer ; + fGasGap = 0.126*mm ; // 1500*micrometer ; + fFoilNumber = 300 ; // 188 ; + + AbsorberThickness = 3.0*cm ; // 40.0*mm ; + + AbsorberRadius = 10.*cm; + zAbsorber = 36.*cm ; + + fWindowThick = 51.0*micrometer ; + fElectrodeThick = 10.0*micrometer ; + fGapThick = 1.0*mm ; + + + fDetThickness = 40.0*mm ; + fDetLength = 200.0*cm ; + fDetGap = 1.0*mm ; + + fStartR = 40.0*cm ; + fStartZ = 50.0*mm ; + + fModuleNumber = 1 ; + + // create commands for interactive definition of the calorimeter + + detectorMessenger = new Em10DetectorMessenger(this); +} + +////////////////////////////////////////////////////////////////////////// +// +// + +Em10DetectorConstruction::~Em10DetectorConstruction() +{ + delete detectorMessenger; + if(fXTRModel) delete fXTRModel; +} + +////////////////////////////////////////////////////////////////////////// +// +// + +G4VPhysicalVolume* Em10DetectorConstruction::Construct() +{ + DefineMaterials(); + return ConstructCalorimeter(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::DefineMaterials() +{ + //This function illustrates the possible ways to define materials + + G4String name, symbol ; //a =mass of a mole; + G4double a, z, density ; //z =mean number of protons; + //G4int iz, n, nel ; //iz=number of protons in an isotope; + //n =number of nucleons in an isotope; + G4int nel ; + + //G4int ncomponents, natoms; + G4int ncomponents; + //G4double abundance, fractionmass; + G4double fractionmass; + //G4double temperature, pressure; + + // + // define Elements + // + + a = 1.01*g/mole; + G4Element* elH = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); + + a = 6.94*g/mole; + G4Element* elLi = new G4Element(name="Lithium",symbol="Li" , z= 3., a); + + a = 9.01*g/mole; + G4Element* elBe = new G4Element(name="Berillium",symbol="Be" , z= 4., a); + + a = 6.01*g/mole; + G4Element* elC = new G4Element(name="Carbon", symbol="C", z=6., a); + + a = 14.01*g/mole; + G4Element* elN = new G4Element(name="Nitrogen",symbol="N" , z= 7., a); + + a = 16.00*g/mole; + G4Element* elO = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); + + a = 39.948*g/mole; + G4Element* elAr = new G4Element(name="Argon", symbol="Ar", z=18., a); + + a = 131.29*g/mole; + G4Element* elXe = new G4Element(name="Xenon", symbol="Xe", z=54., a); + + a = 19.00*g/mole; + G4Element* elF = new G4Element(name="Fluorine", symbol="F", z=9., a); + + ///////////////////////////////////////////////////////////////// + // + // Detector windows, electrodes + // Al for electrodes + + density = 2.700*g/cm3; + a = 26.98*g/mole; + G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); + + + //////////////////////////////////////////////////////////////////////////// + // + // Materials for popular X-ray TR radiators + // + + // TRT_CH2 + + density = 0.935*g/cm3; + G4Material* TRT_CH2 = new G4Material(name="TRT_CH2",density, nel=2); + TRT_CH2->AddElement(elC,1); + TRT_CH2->AddElement(elH,2); + + // Radiator + + density = 0.059*g/cm3; + G4Material* Radiator = new G4Material(name="Radiator",density, nel=2); + Radiator->AddElement(elC,1); + Radiator->AddElement(elH,2); + + // Carbon Fiber + + density = 0.145*g/cm3; + G4Material* CarbonFiber = new G4Material(name="CarbonFiber",density, nel=1); + CarbonFiber->AddElement(elC,1); + + // Lithium + + density = 0.534*g/cm3; + G4Material* Li = new G4Material(name="Li",density, nel=1); + Li->AddElement(elLi,1); + + // Beryllium + + density = 1.848*g/cm3; + G4Material* Be = new G4Material(name="Be",density, nel=1); + Be->AddElement(elBe,1); + + // Mylar + + density = 1.39*g/cm3; + G4Material* Mylar = new G4Material(name="Mylar", density, nel=3); + Mylar->AddElement(elO,2); + Mylar->AddElement(elC,5); + Mylar->AddElement(elH,4); + + // Kapton (polyimide) ??? since = Mylar C5H4O2 + + density = 1.39*g/cm3; + G4Material* Kapton = new G4Material(name="Kapton", density, nel=3); + Kapton->AddElement(elO,2); + Kapton->AddElement(elC,5); + Kapton->AddElement(elH,4); + + // Polypropelene + + G4Material* CH2 = new G4Material ("Polypropelene" , 0.91*g/cm3, 2); + CH2->AddElement(elH,2); + CH2->AddElement(elC,1); + + ////////////////////////////////////////////////////////////////////////// + // + // Noble gases , STP conditions + + // Helium as detector gas, STP + + density = 0.178*mg/cm3 ; + a = 4.0026*g/mole ; + G4Material* He = new G4Material(name="He",z=2., a, density ); + + // Neon as detector gas, STP + + density = 0.900*mg/cm3 ; + a = 20.179*g/mole ; + G4Material* Ne = new G4Material(name="Ne",z=10., a, density ); + + // Argon as detector gas, STP + + density = 1.7836*mg/cm3 ; // STP + G4Material* Argon = new G4Material(name="Argon" , density, ncomponents=1); + Argon->AddElement(elAr, 1); + + // Krypton as detector gas, STP + + density = 3.700*mg/cm3 ; + a = 83.80*g/mole ; + G4Material* Kr = new G4Material(name="Kr",z=36., a, density ); + + // Xenon as detector gas, STP + + density = 5.858*mg/cm3 ; + a = 131.29*g/mole ; + G4Material* Xe = new G4Material(name="Xenon",z=54., a, density ); + + ///////////////////////////////////////////////////////////////////////////// + // + // Hydrocarbones, metane and others + + // Metane, STP + + density = 0.7174*mg/cm3 ; + G4Material* metane = new G4Material(name="CH4",density,nel=2) ; + metane->AddElement(elC,1) ; + metane->AddElement(elH,4) ; + + // Propane, STP + + density = 2.005*mg/cm3 ; + G4Material* propane = new G4Material(name="C3H8",density,nel=2) ; + propane->AddElement(elC,3) ; + propane->AddElement(elH,8) ; + + // iso-Butane (methylpropane), STP + + density = 2.67*mg/cm3 ; + G4Material* isobutane = new G4Material(name="isoC4H10",density,nel=2) ; + isobutane->AddElement(elC,4) ; + isobutane->AddElement(elH,10) ; + + /////////////////////////////////////////////////////////////////////////// + // + // Molecular gases + + // Carbon dioxide + + density = 1.977*mg/cm3; + G4Material* CO2 = new G4Material(name="CO2", density, nel=2, + kStateGas,273.15*kelvin,1.*atmosphere); + CO2->AddElement(elC,1); + CO2->AddElement(elO,2); + + // Carbon dioxide, STP + + density = 1.977*mg/cm3; + G4Material* CarbonDioxide = new G4Material(name="CO2", density, nel=2); + CarbonDioxide->AddElement(elC,1); + CarbonDioxide->AddElement(elO,2); + + + // Nitrogen, STP + + density = 1.25053*mg/cm3 ; // STP + G4Material* Nitrogen = new G4Material(name="N2" , density, ncomponents=1); + Nitrogen->AddElement(elN, 2); + + // Oxygen, STP + + density = 1.4289*mg/cm3 ; // STP + G4Material* Oxygen = new G4Material(name="O2" , density, ncomponents=1); + Oxygen->AddElement(elO, 2); + + /* ***************************** + density = 1.25053*mg/cm3 ; // STP + a = 14.01*g/mole ; // get atomic weight !!! + // a = 28.016*g/mole; + G4Material* N2 = new G4Material(name="Nitrogen", z= 7.,a,density) ; + + density = 1.25053*mg/cm3 ; // STP + G4Material* anotherN2 = new G4Material(name="anotherN2", density,ncomponents=2); + anotherN2->AddElement(elN, 1); + anotherN2->AddElement(elN, 1); + + // air made from oxigen and nitrogen only + + density = 1.290*mg/cm3; // old air from elements + G4Material* air = new G4Material(name="air" , density, ncomponents=2); + air->AddElement(elN, fractionmass=0.7); + air->AddElement(elO, fractionmass=0.3); + ******************************************** */ + + // Dry Air (average composition), STP + + density = 1.2928*mg/cm3 ; // STP + G4Material* Air = new G4Material(name="Air" , density, ncomponents=3); + Air->AddMaterial( Nitrogen, fractionmass = 0.7557 ) ; + Air->AddMaterial( Oxygen, fractionmass = 0.2315 ) ; + Air->AddMaterial( Argon, fractionmass = 0.0128 ) ; + + //////////////////////////////////////////////////////////////////////////// + // + // MWPC mixtures + + // 80% Xe + 20% CO2, STP + + density = 5.0818*mg/cm3 ; + G4Material* Xe20CO2 = new G4Material(name="Xe20CO2" , density, ncomponents=2); + Xe20CO2->AddMaterial( Xe, fractionmass = 0.922 ) ; + Xe20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ; + + // 80% Kr + 20% CO2, STP + + density = 3.601*mg/cm3 ; + G4Material* Kr20CO2 = new G4Material(name="Kr20CO2", density, + ncomponents=2); + Kr20CO2->AddMaterial( Kr, fractionmass = 0.89 ) ; + Kr20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.11 ) ; + + // Xe + 55% He + 15% CH4 ; NIM A294 (1990) 465-472; STP + + density = 1.963*mg/cm3; + G4Material* Xe55He15CH4 = new G4Material(name="Xe55He15CH4",density, + ncomponents=3); + Xe55He15CH4->AddMaterial(Xe, 0.895); + Xe55He15CH4->AddMaterial(He, 0.050); + Xe55He15CH4->AddMaterial(metane,0.055); + + // 90% Xe + 10% CH4, STP ; NIM A248 (1986) 379-388 + + density = 5.344*mg/cm3 ; + G4Material* Xe10CH4 = new G4Material(name="Xe10CH4" , density, + ncomponents=2); + Xe10CH4->AddMaterial( Xe, fractionmass = 0.987 ) ; + Xe10CH4->AddMaterial( metane, fractionmass = 0.013 ) ; + + // 95% Xe + 5% CH4, STP ; NIM A214 (1983) 261-268 + + density = 5.601*mg/cm3 ; + G4Material* Xe5CH4 = new G4Material(name="Xe5CH4" , density, + ncomponents=2); + Xe5CH4->AddMaterial( Xe, fractionmass = 0.994 ) ; + Xe5CH4->AddMaterial( metane, fractionmass = 0.006 ) ; + + // 80% Xe + 20% CH4, STP ; NIM A253 (1987) 235-244 + + density = 4.83*mg/cm3 ; + G4Material* Xe20CH4 = new G4Material(name="Xe20CH4" , density, + ncomponents=2); + Xe20CH4->AddMaterial( Xe, fractionmass = 0.97 ) ; + Xe20CH4->AddMaterial( metane, fractionmass = 0.03 ) ; + + + G4cout << *(G4Material::GetMaterialTable()) << G4endl; + + // default materials of the calorimeter and TR radiator + + fRadiatorMat = Li ; // CH2 Mylar ; + + fWindowMat = Mylar ; + fElectrodeMat = Al ; + + AbsorberMaterial = Xe10CH4 ; + fGapMat = Xe10CH4 ; + + WorldMaterial = He ; +} + +///////////////////////////////////////////////////////////////////////// +// +// + +G4VPhysicalVolume* Em10DetectorConstruction::ConstructCalorimeter() +{ + // G4int i, j ; + G4int j ; + // G4double zModule, zRadiator, rModule, rRadiator ; + G4double zModule, zRadiator ; + + // complete the Calor parameters definition and Print + + ComputeCalorParameters(); + PrintCalorParameters(); + + // World + + if(solidWorld) delete solidWorld ; + if(logicWorld) delete logicWorld ; + if(physiWorld) delete physiWorld ; + + solidWorld = new G4Box("World", //its name + WorldSizeR,WorldSizeR,WorldSizeZ/2.) ;//its size + + logicWorld = new G4LogicalVolume(solidWorld, //its solid + WorldMaterial, //its material + "World"); //its name + + physiWorld = new G4PVPlacement(0, //no rotation + G4ThreeVector(), //at (0,0,0) + "World", //its name + logicWorld, //its logical volume + 0, //its mother volume + false, //no boolean operation + 0); //copy number + + // TR radiator envelope + + G4double radThick = fFoilNumber*(fRadThickness + fGasGap) + fDetGap ; + + G4double zRad = fStartZ + 0.5*radThick ; + G4cout<<"zRad = "< 0.) + { + if(solidAbsorber) delete solidAbsorber ; + if(logicAbsorber) delete logicAbsorber ; + if(physiAbsorber) delete physiAbsorber ; + + solidAbsorber = new G4Box("Absorber",AbsorberRadius, + AbsorberRadius, + AbsorberThickness/2. ); + + logicAbsorber = new G4LogicalVolume(solidAbsorber, + AbsorberMaterial, + "Absorber"); + + physiAbsorber = new G4PVPlacement(0, + G4ThreeVector(0.,0.,zAbsorber), + "Absorber", + logicAbsorber, + physiWorld, + false, + 0); + + } + + // Sensitive Detectors: Absorber + + G4SDManager* SDman = G4SDManager::GetSDMpointer(); + + if(!calorimeterSD) + { + calorimeterSD = new Em10CalorimeterSD("CalorSD",this); + SDman->AddNewDetector( calorimeterSD ); + } + if (logicAbsorber) logicAbsorber->SetSensitiveDetector(calorimeterSD); + + // Parameterisation + + ParametrisationModel(); + + // always return physics world + + return physiWorld; +} + +//////////////////////////////////////////////////////////////////////////// +// +// Construct parametrisation model depending on the current value of fModelNumber + +void Em10DetectorConstruction::ParametrisationModel() +{ + G4cout<<"Em10DetectorConstruction::ParametrisationModel() is called"<GetPlateZmuProduct() ; + // fXTRModel->GetGasZmuProduct() ; + + // fXTRModel->GetNumberOfPhotons() ; + return; +} +//////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::PrintCalorParameters() +{ + G4cout << "\n The WORLD is made of " + << WorldSizeZ/mm << "mm of " << WorldMaterial->GetName() ; + G4cout << ", the transverse size (R) of the world is " << WorldSizeR/mm << " mm. " << G4endl; + G4cout << " The ABSORBER is made of " + << AbsorberThickness/mm << "mm of " << AbsorberMaterial->GetName() ; + G4cout << ", the transverse size (R) is " << AbsorberRadius/mm << " mm. " << G4endl; + G4cout << " Z position of the (middle of the) absorber " << zAbsorber/mm << " mm." << G4endl; + G4cout << G4endl; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) +{ + // get the pointer to the material table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + G4Material* pttoMaterial; + + for (size_t J=0 ; Jsize() ; J++) + { + pttoMaterial = (*theMaterialTable)[J]; + + if(pttoMaterial->GetName() == materialChoice) + { + AbsorberMaterial = pttoMaterial; + logicAbsorber->SetMaterial(pttoMaterial); + // PrintCalorParameters(); + } + } +} +/////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetRadiatorMaterial(G4String materialChoice) +{ + // get the pointer to the material table + + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + + G4Material* pttoMaterial; + for (size_t J=0 ; Jsize() ; J++) + { + pttoMaterial = (*theMaterialTable)[J]; + + if(pttoMaterial->GetName() == materialChoice) + { + fRadiatorMat = pttoMaterial; + fLogicRadSlice->SetMaterial(pttoMaterial); + // PrintCalorParameters(); + } + } +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetWorldMaterial(G4String materialChoice) +{ + // get the pointer to the material table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + G4Material* pttoMaterial; + + for (size_t J=0 ; Jsize() ; J++) + { + pttoMaterial = (*theMaterialTable)[J]; + + if(pttoMaterial->GetName() == materialChoice) + { + WorldMaterial = pttoMaterial; + logicWorld->SetMaterial(pttoMaterial); + // PrintCalorParameters(); + } + } +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetAbsorberThickness(G4double val) +{ + // change Absorber thickness and recompute the calorimeter parameters + AbsorberThickness = val; + ComputeCalorParameters(); +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetRadiatorThickness(G4double val) +{ + // change XTR radiator thickness and recompute the calorimeter parameters + fRadThickness = val; + // ComputeCalorParameters(); +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetGasGapThickness(G4double val) +{ + // change XTR gas gap thickness and recompute the calorimeter parameters + fGasGap = val; + // ComputeCalorParameters(); +} + +///////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetAbsorberRadius(G4double val) +{ + // change the transverse size and recompute the calorimeter parameters + AbsorberRadius = val; + ComputeCalorParameters(); +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetWorldSizeZ(G4double val) +{ + worldchanged=true; + WorldSizeZ = val; + ComputeCalorParameters(); +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetWorldSizeR(G4double val) +{ + worldchanged=true; + WorldSizeR = val; + ComputeCalorParameters(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetAbsorberZpos(G4double val) +{ + zAbsorber = val; + ComputeCalorParameters(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::SetMagField(G4double fieldValue) +{ + //apply a global uniform magnetic field along X axis + + /* ********************************************************* + + G4FieldManager* fieldMgr + = G4TransportationManager::GetTransportationManager()->GetFieldManager(); + + if(magField) delete magField; //delete the existing magn field + + if(fieldValue!=0.) // create a new one if non nul + { + magField = new G4UniformMagField(G4ThreeVector(fieldValue,0.,0.)); + fieldMgr->SetDetectorField(magField); + fieldMgr->CreateChordFinder(magField); + } + else + { + magField = 0; + fieldMgr->SetDetectorField(magField); + } + + *************************************************************** */ + +} + +/////////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorConstruction::UpdateGeometry() +{ + G4RunManager::GetRunManager()->DefineWorldVolume(ConstructCalorimeter()); +} + +// +// +//////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10DetectorMessenger.cc new file mode 100644 index 0000000000..4abd4b1d9a --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10DetectorMessenger.cc @@ -0,0 +1,226 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10DetectorMessenger.cc,v 1.5 2001/11/21 18:48:56 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "Em10DetectorMessenger.hh" + +#include "Em10DetectorConstruction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +////////////////////////////////////////////////////////////////////////////// + +Em10DetectorMessenger::Em10DetectorMessenger(Em10DetectorConstruction * Em10Det) +:Em10Detector(Em10Det) +{ + Em10detDir = new G4UIdirectory("/XTRdetector/"); + Em10detDir->SetGuidance("Em10 detector control."); + + AbsMaterCmd = new G4UIcmdWithAString("/XTRdetector/setAbsMat",this); + AbsMaterCmd->SetGuidance("Select Material of the Absorber."); + AbsMaterCmd->SetParameterName("choice",true); + AbsMaterCmd->SetDefaultValue("Xe"); + AbsMaterCmd->AvailableForStates(Idle); + + RadiatorMaterCmd = new G4UIcmdWithAString("/XTRdetector/setRadMat",this); + RadiatorMaterCmd->SetGuidance("Select Material of the XTR radiator."); + RadiatorMaterCmd->SetParameterName("choice",true); + RadiatorMaterCmd->SetDefaultValue("CH2"); + RadiatorMaterCmd->AvailableForStates(Idle); + + ModelCmd = new G4UIcmdWithAnInteger("/XTRdetector/setModel",this); + ModelCmd->SetGuidance("Select Model for XTR"); + ModelCmd->SetParameterName("choice",true); + ModelCmd->SetDefaultValue(0); + // ModelCmd->AvailableForStates(PreInit,Idle); + ModelCmd->AvailableForStates(Idle); + + FoilNumCmd = new G4UIcmdWithAnInteger("/XTRdetector/setFoilNum",this); + FoilNumCmd->SetGuidance("Select foil number for XTR"); + FoilNumCmd->SetParameterName("choice",true); + FoilNumCmd->SetDefaultValue(0); + FoilNumCmd->AvailableForStates(PreInit,Idle); + + WorldMaterCmd = new G4UIcmdWithAString("/XTRdetector/setWorldMat",this); + WorldMaterCmd->SetGuidance("Select Material of the World."); + WorldMaterCmd->SetParameterName("wchoice",true); + WorldMaterCmd->SetDefaultValue("Air"); + WorldMaterCmd->AvailableForStates(Idle); + + AbsThickCmd = new G4UIcmdWithADoubleAndUnit("/XTRdetector/setAbsThick",this); + AbsThickCmd->SetGuidance("Set Thickness of the Absorber"); + AbsThickCmd->SetParameterName("SizeZ",false,false); + AbsThickCmd->SetDefaultUnit("mm"); + AbsThickCmd->SetRange("SizeZ>0."); + AbsThickCmd->AvailableForStates(Idle); + + RadiatorThickCmd = new G4UIcmdWithADoubleAndUnit("/XTRdetector/setRadThick",this); + RadiatorThickCmd->SetGuidance("Set Thickness of XTR radiator"); + RadiatorThickCmd->SetParameterName("SizeZ",false,false); + RadiatorThickCmd->SetDefaultUnit("mm"); + RadiatorThickCmd->SetRange("SizeZ>0."); + RadiatorThickCmd->AvailableForStates(Idle); + + GasGapThickCmd = new G4UIcmdWithADoubleAndUnit("/XTRdetector/setGasGapThick",this); + GasGapThickCmd->SetGuidance("Set Thickness of XTR gas gaps"); + GasGapThickCmd->SetParameterName("SizeZ",false,false); + GasGapThickCmd->SetDefaultUnit("mm"); + GasGapThickCmd->SetRange("SizeZ>0."); + GasGapThickCmd->AvailableForStates(Idle); + + AbsRadCmd = new G4UIcmdWithADoubleAndUnit("/XTRdetector/setAbsRad",this); + AbsRadCmd->SetGuidance("Set radius of the Absorber"); + AbsRadCmd->SetParameterName("SizeR",false,false); + AbsRadCmd->SetDefaultUnit("mm"); + AbsRadCmd->SetRange("SizeR>0."); + AbsRadCmd->AvailableForStates(Idle); + + AbsZposCmd = new G4UIcmdWithADoubleAndUnit("/XTRdetector/setAbsZpos",this); + AbsZposCmd->SetGuidance("Set Z pos. of the Absorber"); + AbsZposCmd->SetParameterName("Zpos",false,false); + AbsZposCmd->SetDefaultUnit("mm"); + AbsZposCmd->AvailableForStates(Idle); + + WorldZCmd = new G4UIcmdWithADoubleAndUnit("/XTRdetector/setWorldZ",this); + WorldZCmd->SetGuidance("Set Z size of the World"); + WorldZCmd->SetParameterName("WSizeZ",false,false); + WorldZCmd->SetDefaultUnit("mm"); + WorldZCmd->SetRange("WSizeZ>0."); + WorldZCmd->AvailableForStates(Idle); + + WorldRCmd = new G4UIcmdWithADoubleAndUnit("/XTRdetector/setWorldR",this); + WorldRCmd->SetGuidance("Set R size of the World"); + WorldRCmd->SetParameterName("WSizeR",false,false); + WorldRCmd->SetDefaultUnit("mm"); + WorldRCmd->SetRange("WSizeR>0."); + WorldRCmd->AvailableForStates(Idle); + + UpdateCmd = new G4UIcmdWithoutParameter("/XTRdetector/update",this); + UpdateCmd->SetGuidance("Update calorimeter geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(Idle); + + MagFieldCmd = new G4UIcmdWithADoubleAndUnit("/XTRdetector/setField",this); + MagFieldCmd->SetGuidance("Define magnetic field."); + MagFieldCmd->SetGuidance("Magnetic field will be in Z direction."); + MagFieldCmd->SetParameterName("Bz",false,false); + MagFieldCmd->SetDefaultUnit("tesla"); + MagFieldCmd->AvailableForStates(Idle); + +} + +/////////////////////////////////////////////////////////////////////////////// + +Em10DetectorMessenger::~Em10DetectorMessenger() +{ + delete AbsMaterCmd; + delete ModelCmd; + delete FoilNumCmd; + delete AbsThickCmd; + delete RadiatorThickCmd; + delete GasGapThickCmd; + delete AbsRadCmd; + delete AbsZposCmd; + delete WorldMaterCmd; + delete RadiatorMaterCmd; + delete WorldZCmd; + delete WorldRCmd; + delete UpdateCmd; + delete MagFieldCmd; + delete Em10detDir; +} + +///////////////////////////////////////////////////////////////////////////// + +void Em10DetectorMessenger::SetNewValue(G4UIcommand* command,G4int newValue) +{ + if( command == ModelCmd ) + { + Em10Detector->SetParametrisationModel(newValue); + Em10Detector->Construct(); + } +} +//////////////////////////////////////////////////////////////////////////// +// +// + +void Em10DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == ModelCmd ) + { + Em10Detector->SetParametrisationModel(ModelCmd->GetNewIntValue(newValue)); + Em10Detector->ParametrisationModel(); + } + if( command == FoilNumCmd ) + { + Em10Detector->SetFoilNumber(FoilNumCmd->GetNewIntValue(newValue)); + } + if( command == AbsMaterCmd ) + { Em10Detector->SetAbsorberMaterial(newValue);} + + if( command == RadiatorMaterCmd ) + { Em10Detector->SetRadiatorMaterial(newValue);} + + if( command == WorldMaterCmd ) + { Em10Detector->SetWorldMaterial(newValue);} + + if( command == AbsThickCmd ) + { Em10Detector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} + + if( command == RadiatorThickCmd ) + { Em10Detector->SetRadiatorThickness(RadiatorThickCmd-> + GetNewDoubleValue(newValue));} + + if( command == GasGapThickCmd ) + { Em10Detector->SetGasGapThickness(GasGapThickCmd-> + GetNewDoubleValue(newValue));} + + if( command == AbsRadCmd ) + { Em10Detector->SetAbsorberRadius(AbsRadCmd->GetNewDoubleValue(newValue));} + + if( command == AbsZposCmd ) + { Em10Detector->SetAbsorberZpos(AbsZposCmd->GetNewDoubleValue(newValue));} + + if( command == WorldZCmd ) + { Em10Detector->SetWorldSizeZ(WorldZCmd->GetNewDoubleValue(newValue));} + + if( command == WorldRCmd ) + { Em10Detector->SetWorldSizeR(WorldRCmd->GetNewDoubleValue(newValue));} + + if( command == UpdateCmd ) + { Em10Detector->UpdateGeometry(); } + + if( command == MagFieldCmd ) + { Em10Detector->SetMagField(MagFieldCmd->GetNewDoubleValue(newValue));} + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10EventAction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10EventAction.cc new file mode 100644 index 0000000000..789664174b --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10EventAction.cc @@ -0,0 +1,248 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10EventAction.cc,v 1.3 2001/11/21 11:57:14 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10EventAction.hh" + +#include "Em10RunAction.hh" + +#include "Em10CalorHit.hh" +#include "Em10EventActionMessenger.hh" + +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4HCofThisEvent.hh" +#include "G4VHitsCollection.hh" +#include "G4SDManager.hh" +#include "G4UImanager.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Trajectory.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "G4UnitsTable.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10EventAction::Em10EventAction(Em10RunAction* Em10RA) +:calorimeterCollID(-1),eventMessenger(0), + runaction(Em10RA),verboselevel(0),drawFlag("all"),printModulo(10000) +{ + eventMessenger = new Em10EventActionMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10EventAction::~Em10EventAction() +{ + delete eventMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::BeginOfEventAction(const G4Event* evt) +{ + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + G4cout << "\n---> Begin of Event: " << evtNb << G4endl; + + if(verboselevel>1) + G4cout << "<<< Event " << evtNb << " started." << G4endl; + + if (calorimeterCollID==-1) + { + G4SDManager * SDman = G4SDManager::GetSDMpointer(); + calorimeterCollID = SDman->GetCollectionID("CalCollection"); + } + + nstep = 0. ; + nstepCharged = 0. ; + nstepNeutral = 0. ; + Nch = 0. ; + Nne = 0. ; + NE=0.; + NP=0.; + Transmitted=0.; + Reflected =0.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::EndOfEventAction(const G4Event* evt) +{ + G4HCofThisEvent* HCE = evt->GetHCofThisEvent(); + Em10CalorHitsCollection* CHC = 0; + if (HCE) + CHC = (Em10CalorHitsCollection*)(HCE->GetHC(calorimeterCollID)); + + if (CHC) + { + int n_hit = CHC->entries(); + // if(verboselevel==2) + // G4cout << " " << n_hit + // << " hits are stored in Em10CalorHitsCollection." << G4endl; + + G4double totEAbs=0, totLAbs=0; + for (int i=0;iGetEdepAbs(); + totLAbs += (*CHC)[i]->GetTrakAbs(); + } + if(verboselevel==2) + G4cout + << " Absorber: total energy: " << G4std::setw(7) << + G4BestUnit(totEAbs,"Energy") + << " total track length: " << G4std::setw(7) << + G4BestUnit(totLAbs,"Length") + << G4endl; + + // count event, add deposits to the sum ... + runaction->CountEvent() ; + runaction->AddTrackLength(totLAbs) ; + runaction->AddnStepsCharged(nstepCharged) ; + runaction->AddnStepsNeutral(nstepNeutral) ; + if(verboselevel==2) + G4cout << " Ncharged=" << Nch << " , Nneutral=" << Nne << G4endl; + runaction->CountParticles(Nch,Nne); + runaction->AddEP(NE,NP); + runaction->AddTrRef(Transmitted,Reflected) ; + runaction->AddEdeps(totEAbs) ; + runaction->FillEn(totEAbs) ; + + nstep=nstepCharged+nstepNeutral ; + runaction->FillNbOfSteps(nstep); + } + + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) + { + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); + G4int n_trajectories = 0; + if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); + for(G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") trj->DrawTrajectory(50); + else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) + trj->DrawTrajectory(50); + } + } + + if(verboselevel>0) + G4cout << "<<< Event " << evt->GetEventID() << " ended." << G4endl; + + + //save rndm status + if (runaction->GetRndmFreq() == 2) + { + HepRandom::saveEngineStatus("endOfEvent.rndm"); + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + { + G4cout << "\n---> End of Event: " << evtNb << G4endl; + HepRandom::showEngineStatus(); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4int Em10EventAction::GetEventno() +{ + G4int evno = fpEventManager->GetConstCurrentEvent()->GetEventID() ; + return evno ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::setEventVerbose(G4int level) +{ + verboselevel = level ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::CountStepsCharged() +{ + nstepCharged += 1. ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::CountStepsNeutral() +{ + nstepNeutral += 1. ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::AddCharged() +{ + Nch += 1.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::AddNeutral() +{ + Nne += 1.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::AddE() +{ + NE += 1.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::AddP() +{ + NP += 1.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::SetTr() +{ + Transmitted = 1.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventAction::SetRef() +{ + Reflected = 1.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10EventActionMessenger.cc new file mode 100644 index 0000000000..7cb3279ec1 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10EventActionMessenger.cc @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10EventActionMessenger.cc,v 1.2 2001/07/11 09:57:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10EventActionMessenger.hh" + +#include "Em10EventAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10EventActionMessenger::Em10EventActionMessenger(Em10EventAction* EvAct) +:eventAction(EvAct) +{ + setVerboseCmd = new G4UIcmdWithAnInteger("/event/setverbose",this); + setVerboseCmd->SetGuidance("Set verbose level ." ); + setVerboseCmd->SetParameterName("level",true); + setVerboseCmd->SetDefaultValue(0); + + DrawCmd = new G4UIcmdWithAString("/event/drawTracks",this); + DrawCmd->SetGuidance("Draw the tracks in the event"); + DrawCmd->SetGuidance(" Choice : none,charged, all"); + DrawCmd->SetParameterName("choice",true); + DrawCmd->SetDefaultValue("all"); + DrawCmd->SetCandidates("none charged all"); + DrawCmd->AvailableForStates(Idle); + + PrintCmd = new G4UIcmdWithAnInteger("/event/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10EventActionMessenger::~Em10EventActionMessenger() +{ + delete setVerboseCmd; + delete DrawCmd; + delete PrintCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if(command == setVerboseCmd) + {eventAction->setEventVerbose(setVerboseCmd->GetNewIntValue(newValue));} + + if(command == DrawCmd) + {eventAction->SetDrawFlag(newValue);} + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsList.cc b/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsList.cc new file mode 100644 index 0000000000..0f79ebb34a --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsList.cc @@ -0,0 +1,494 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10PhysicsList.cc,v 1.3 2001/11/21 11:57:14 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "G4Timer.hh" + +#include "Em10PhysicsList.hh" +#include "Em10DetectorConstruction.hh" +#include "Em10PhysicsListMessenger.hh" + +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" +#include "G4Material.hh" +#include "G4EnergyLossTables.hh" +#include "G4UnitsTable.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "G4FastSimulationManagerProcess.hh" + + +///////////////////////////////////////////////////////////// +// +// + +Em10PhysicsList::Em10PhysicsList(Em10DetectorConstruction* p) + : G4VUserPhysicsList(), + MaxChargedStep(DBL_MAX), + thePhotoElectricEffect(0), theComptonScattering(0), + theGammaConversion(0), + theeminusMultipleScattering(0), theeminusIonisation(0), + theeminusBremsstrahlung(0), + theeplusMultipleScattering(0), theeplusIonisation(0), + theeplusBremsstrahlung(0), + theeplusAnnihilation(0), + theeminusStepCut(0), theeplusStepCut(0) +{ + pDet = p; + + defaultCutValue = 1.000*mm ; + + cutForGamma = defaultCutValue ; + cutForElectron = defaultCutValue ; + cutForProton = defaultCutValue ; + + SetVerboseLevel(1); + physicsListMessenger = new Em10PhysicsListMessenger(this); +} + +///////////////////////////////////////////////////////////////////////// +// +// + +Em10PhysicsList::~Em10PhysicsList() +{ + delete physicsListMessenger; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void Em10PhysicsList::ConstructParticle() +{ + // In this method, static member functions should be called + // for all particles which you want to use. + // This ensures that objects of these particle types will be + // created in the program. + + ConstructBosons(); + ConstructLeptons(); + ConstructMesons(); + ConstructBarions(); +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void Em10PhysicsList::ConstructBosons() +{ + // gamma + G4Gamma::GammaDefinition(); +} + +void Em10PhysicsList::ConstructLeptons() +{ + // leptons + + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); + G4MuonPlus::MuonPlusDefinition(); + G4MuonMinus::MuonMinusDefinition(); + + G4NeutrinoE::NeutrinoEDefinition(); + G4AntiNeutrinoE::AntiNeutrinoEDefinition(); + G4NeutrinoMu::NeutrinoMuDefinition(); + G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); +} + +void Em10PhysicsList::ConstructMesons() +{ + // mesons + + G4PionPlus::PionPlusDefinition(); + G4PionMinus::PionMinusDefinition(); + G4PionZero::PionZeroDefinition(); + G4KaonPlus::KaonPlusDefinition(); + G4KaonMinus::KaonMinusDefinition(); +} + + +void Em10PhysicsList::ConstructBarions() +{ +// barions + + G4Proton::ProtonDefinition(); + G4AntiProton::AntiProtonDefinition(); +} + + +/////////////////////////////////////////////////////////////////////// +// +// + +void Em10PhysicsList::ConstructProcess() +{ + AddTransportation(); + AddParameterisation(); + + ConstructEM(); + ConstructGeneral(); +} + +///////////////////////////////////////////////////////////////////////////// +// +// + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" +#include "G4PAIonisation.hh" +#include "G4ForwardXrayTR.hh" + +#include "Em10StepCut.hh" + +#include "G4IonisationByLogicalVolume.hh" + +void Em10PhysicsList::ConstructEM() +{ + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + + if (particleName == "gamma") + { + // Construct processes for gamma + + thePhotoElectricEffect = new G4PhotoElectricEffect(); + theComptonScattering = new G4ComptonScattering(); + theGammaConversion = new G4GammaConversion(); + + pmanager->AddDiscreteProcess(thePhotoElectricEffect); + pmanager->AddDiscreteProcess(theComptonScattering); + + pmanager->AddDiscreteProcess(theGammaConversion); + + } + else if (particleName == "e-") + { + // Construct processes for electron + + // theeminusMultipleScattering = new G4MultipleScattering(); + // theeminusIonisation = new G4eIonisation(); + theeminusBremsstrahlung = new G4eBremsstrahlung(); + + // fPAIonisation = new G4PAIonisation("Xenon") ; + // fForwardXrayTR = new G4ForwardXrayTR("Air","Polypropelene","XrayTR") ; + + theeminusStepCut = new Em10StepCut(); + + // pmanager->AddProcess(theeminusMultipleScattering,-1,1,1); + + // pmanager->AddProcess(theeminusIonisation,-1,2,2); + + pmanager->AddProcess(new G4IonisationByLogicalVolume(particleName, + pDet->GetLogicalAbsorber(), + "IonisationByLogVol"),-1,1,-1); + + pmanager->AddProcess(theeminusBremsstrahlung,-1,-1,-1); + + // pmanager->AddProcess(fPAIonisation,-1,2,2); + + // pmanager->AddProcess(fForwardXrayTR,-1,-1,2); + + pmanager->AddProcess(theeminusStepCut,-1,-1,4); + theeminusStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if (particleName == "e+") + { + // Construct processes for positron + + // theeplusMultipleScattering = new G4MultipleScattering(); + theeplusIonisation = new G4eIonisation(); + theeplusBremsstrahlung = new G4eBremsstrahlung(); + // theeplusAnnihilation = new G4eplusAnnihilation(); + + // fPAIonisation = new G4PAIonisation("Xenon") ; + // fForwardXrayTR = new G4ForwardXrayTR("Air","Polypropelene","XrayTR") ; + + theeplusStepCut = new Em10StepCut(); + + // pmanager->AddProcess(theeplusMultipleScattering,-1,1,1); + pmanager->AddProcess(theeplusIonisation,-1,2,2); + pmanager->AddProcess(theeplusBremsstrahlung,-1,-1,3); + // pmanager->AddProcess(theeplusAnnihilation,0,-1,4); + + // pmanager->AddProcess(fPAIonisation,-1,2,2); + + + // pmanager->AddProcess(fForwardXrayTR,-1,-1,2); + + pmanager->AddProcess(theeplusStepCut,-1,-1,5); + theeplusStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if( particleName == "mu+" || + particleName == "mu-" ) + { + // Construct processes for muon+ + + // Em10StepCut* muonStepCut = new Em10StepCut(); + + // G4MuIonisation* themuIonisation = new G4MuIonisation() ; + // pmanager->AddProcess(new G4MultipleScattering(),-1,1,1); + // pmanager->AddProcess(themuIonisation,-1,2,2); + // pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3); + // pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4); + + // pmanager->AddProcess(new G4PAIonisation("Xenon"),-1,2,2) ; + // pmanager->AddProcess( muonStepCut,-1,-1,3); + // muonStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if ( + particleName == "proton" + || particleName == "antiproton" + || particleName == "pi+" + || particleName == "pi-" + || particleName == "kaon+" + || particleName == "kaon-" + ) + { + Em10StepCut* thehadronStepCut = new Em10StepCut(); + + // G4hIonisation* thehIonisation = new G4hIonisation() ; + // G4MultipleScattering* thehMultipleScattering = + // new G4MultipleScattering() ; + + pmanager->AddProcess(new G4IonisationByLogicalVolume(particleName, + pDet->GetLogicalAbsorber(), + "IonisationByLogVolHadr"),-1,2,2); + + // pmanager->AddProcess(thehMultipleScattering,-1,1,1); + // pmanager->AddProcess(thehIonisation,-1,2,2); + + // pmanager->AddProcess(new G4PAIonisation("Xenon"),-1,2,2) ; + // pmanager->AddProcess(new G4PAIonisation("Argon"),-1,2,2) ; + + pmanager->AddProcess( thehadronStepCut,-1,-1,3); + thehadronStepCut->SetMaxStep(MaxChargedStep) ; + // thehadronStepCut->SetMaxStep(10*mm) ; + + } + } +} + + +#include "G4Decay.hh" + +void Em10PhysicsList::ConstructGeneral() +{ + // Add Decay Process + + G4Decay* theDecayProcess = new G4Decay(); + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + + if (theDecayProcess->IsApplicable(*particle)) + { + pmanager ->AddProcess(theDecayProcess); + + // set ordering for PostStepDoIt and AtRestDoIt + + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + } + } +} + +///////////////////////////////////////////////////////////////////////////// + +void Em10PhysicsList::AddParameterisation() +{ + G4FastSimulationManagerProcess* theFastSimulationManagerProcess = + new G4FastSimulationManagerProcess() ; + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value() ; + G4ProcessManager* pmanager = particle->GetProcessManager() ; + + // both postStep and alongStep action are required: because + // of the use of ghost volumes. If no ghost, the postStep is sufficient. + + pmanager->AddProcess(theFastSimulationManagerProcess, -1, 1, 1); + } +} + + + +///////////////////////////////////////////////////////////////////////////// + +void Em10PhysicsList::SetCuts() +{ + G4Timer theTimer ; + theTimer.Start() ; + if (verboseLevel >0) + { + G4cout << "Em10PhysicsList::SetCuts:"; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; + } + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + + SetCutValue(cutForGamma,"gamma"); + + SetCutValue(cutForElectron,"e-"); + SetCutValue(cutForElectron,"e+"); + + SetCutValue(defaultCutValue,"mu-"); + SetCutValue(defaultCutValue,"mu+"); + + // set cut values for proton and anti_proton before all other hadrons + // because some processes for hadrons need cut values for proton/anti_proton + + SetCutValue(defaultCutValue, "proton"); + SetCutValue(defaultCutValue, "anti_proton"); + + SetCutValueForOthers(defaultCutValue); + + if (verboseLevel>1) DumpCutValuesTable(); + + theTimer.Stop(); + G4cout.precision(6); + G4cout << G4endl ; + G4cout << "total time(SetCuts)=" << theTimer.GetUserElapsed() << " s " <GetAbsorberMaterial(); + + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + + G4ParticleDefinition* part; + G4double cut; + + part = theParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e-"); + + part = theParticleTable->FindParticle("e+"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e+"); + + // set cut values for proton and anti_proton before all other hadrons + // because some processes for hadrons need cut values for proton/anti_proton + + part = theParticleTable->FindParticle("proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "proton"); + + part = theParticleTable->FindParticle("anti_proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "anti_proton"); + + SetCutValueForOthers(cut); +} + +////////////////////////////////////////////////////////////////////////////// + +void Em10PhysicsList::GetRange(G4double val) +{ + G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable(); + G4Material* currMat = pDet->GetAbsorberMaterial(); + + G4ParticleDefinition* part; + G4double cut; + part = theParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + G4cout << "material : " << currMat->GetName() << G4endl; + G4cout << "particle : " << part->GetParticleName() << G4endl; + G4cout << "energy : " << val / keV << " (keV)" << G4endl; + G4cout << "range : " << cut / mm << " (mm)" << G4endl; +} + +//////////////////////////////////////////////////////////////////////////// + +void Em10PhysicsList::SetMaxStep(G4double step) +{ + MaxChargedStep = step ; + G4cout << " MaxChargedStep=" << MaxChargedStep << G4endl; + G4cout << G4endl; +} + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc new file mode 100644 index 0000000000..56abaea8aa --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10PhysicsListMessenger.cc @@ -0,0 +1,120 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10PhysicsListMessenger.cc,v 1.2 2001/07/11 09:57:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10PhysicsListMessenger.hh" + +#include "Em10PhysicsList.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10PhysicsListMessenger::Em10PhysicsListMessenger(Em10PhysicsList * List) +:Em10List(List) +{ + cutGCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutG",this); + cutGCmd->SetGuidance("Set cut values by RANGE for Gamma."); + cutGCmd->SetParameterName("range",true); + cutGCmd->SetDefaultValue(1.); + cutGCmd->SetDefaultUnit("mm"); + cutGCmd->AvailableForStates(Idle); + + cutECmd = new G4UIcmdWithADoubleAndUnit("/calor/cutE",this); + cutECmd->SetGuidance("Set cut values by RANGE for e- e+."); + cutECmd->SetParameterName("range",true); + cutECmd->SetDefaultValue(1.); + cutECmd->SetDefaultUnit("mm"); + cutECmd->AvailableForStates(Idle); + + cutPCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutP",this); + cutPCmd->SetGuidance("Set cut values by RANGE for proton and others."); + cutPCmd->SetParameterName("range",true); + cutPCmd->SetDefaultValue(1.); + cutPCmd->SetDefaultUnit("mm"); + cutPCmd->AvailableForStates(Idle); + + eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this); + eCmd->SetGuidance("Set cut values by ENERGY for charged particles."); + eCmd->SetParameterName("energy",true); + eCmd->SetDefaultValue(10.); + eCmd->SetDefaultUnit("keV"); + eCmd->AvailableForStates(Idle); + + rCmd = new G4UIcmdWithADoubleAndUnit("/calor/range",this); + rCmd->SetGuidance("Display the RANGE of Electron for the current material."); + rCmd->SetParameterName("energy",true); + rCmd->SetDefaultValue(10.); + rCmd->SetDefaultUnit("keV"); + rCmd->AvailableForStates(Idle); + + setMaxStepCmd = new G4UIcmdWithADoubleAndUnit("/step/setMaxStep",this); + setMaxStepCmd->SetGuidance("Set max. step length in the detector"); + setMaxStepCmd->SetParameterName("mxStep",true); + setMaxStepCmd->SetDefaultUnit("mm"); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10PhysicsListMessenger::~Em10PhysicsListMessenger() +{ + + delete setMaxStepCmd; + + delete cutGCmd; + delete cutECmd; + delete cutPCmd; + delete rCmd; + delete eCmd; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if(command == cutGCmd) + { Em10List->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));} + if(command == cutECmd) + { Em10List->SetElectronCut(eCmd->GetNewDoubleValue(newValue));} + if(command == cutPCmd) + { Em10List->SetProtonCut(eCmd->GetNewDoubleValue(newValue));} + if(command == eCmd) + { Em10List->SetCutsByEnergy(cutECmd->GetNewDoubleValue(newValue));} + if(command == rCmd) + { Em10List->GetRange(rCmd->GetNewDoubleValue(newValue));} + if(command == setMaxStepCmd) + { Em10List->SetMaxStep(setMaxStepCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..42f8a70e23 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorAction.cc @@ -0,0 +1,152 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10PrimaryGeneratorAction.cc,v 1.3 2001/11/21 11:57:14 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10PrimaryGeneratorAction.hh" + +#include "Em10DetectorConstruction.hh" +#include "Em10PrimaryGeneratorMessenger.hh" + +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "Randomize.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + G4String Em10PrimaryGeneratorAction::thePrimaryParticleName="proton" ; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10PrimaryGeneratorAction::Em10PrimaryGeneratorAction( + Em10DetectorConstruction* Em10DC) +:Em10Detector(Em10DC),rndmFlag("off"),xvertex(0.),yvertex(0.),zvertex(0.), + vertexdefined(false) +{ + G4int n_particle = 1; + particleGun = new G4ParticleGun(n_particle); + + //create a messenger for this class + gunMessenger = new Em10PrimaryGeneratorMessenger(this); + + // default particle kinematic + + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4String particleName; + G4ParticleDefinition* particle + = particleTable->FindParticle(particleName="proton"); + particleGun->SetParticleDefinition(particle); + + thePrimaryParticleName = particle->GetParticleName() ; + + particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.)); + particleGun->SetParticleEnergy(100.*GeV); + + zvertex = 0.0 ; // -0.5*(Em10Detector->GetAbsorberThickness()); + particleGun->SetParticlePosition(G4ThreeVector(xvertex,yvertex,zvertex)); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10PrimaryGeneratorAction::~Em10PrimaryGeneratorAction() +{ + delete particleGun; + delete gunMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + //this function is called at the begining of event + // + thePrimaryParticleName = particleGun->GetParticleDefinition()-> + GetParticleName() ; + G4double x0,y0,z0 ; + if(vertexdefined) + { + x0 = xvertex ; + y0 = yvertex ; + z0 = zvertex ; + } + else + { + x0 = 0. ; + y0 = 0. ; + z0 = 0. ; // -0.5*(Em10Detector->GetWorldSizeZ()) ; + } + /* **************************************************** + G4double r0,phi0 ; + if (rndmFlag == "on") + { + r0 = (Em10Detector->GetAbsorberRadius())*sqrt(G4UniformRand()); + phi0 = twopi*G4UniformRand(); + x0 = r0*cos(phi0); + y0 = r0*sin(phi0); + } + ********************************************* */ + particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0)); + particleGun->GeneratePrimaryVertex(anEvent); +} + +/////////////////////////////////////////////////////////////////////// +// +// + +G4String Em10PrimaryGeneratorAction::GetPrimaryName() +{ + return thePrimaryParticleName ; +} + +void Em10PrimaryGeneratorAction::Setzvertex(G4double z) +{ + vertexdefined = true ; + zvertex = z ; + G4cout << " Z coordinate of the primary vertex = " << zvertex/mm << + " mm." << G4endl; +} +void Em10PrimaryGeneratorAction::Setxvertex(G4double x) +{ + vertexdefined = true ; + xvertex = x ; + G4cout << " X coordinate of the primary vertex = " << xvertex/mm << + " mm." << G4endl; +} + +void Em10PrimaryGeneratorAction::Setyvertex(G4double y) +{ + vertexdefined = true ; + yvertex = y ; + G4cout << " Y coordinate of the primary vertex = " << yvertex/mm << + " mm." << G4endl; +} diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc new file mode 100644 index 0000000000..e71abb17e0 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10PrimaryGeneratorMessenger.cc @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10PrimaryGeneratorMessenger.cc,v 1.2 2001/07/11 09:57:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10PrimaryGeneratorMessenger.hh" + +#include "Em10PrimaryGeneratorAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10PrimaryGeneratorMessenger::Em10PrimaryGeneratorMessenger(Em10PrimaryGeneratorAction* Em10Gun) +:Em10Action(Em10Gun) +{ + RndmCmd = new G4UIcmdWithAString("/gun/random",this); + RndmCmd->SetGuidance("Shoot randomly the incident particle."); + RndmCmd->SetGuidance(" Choice : on, off(default)"); + RndmCmd->SetParameterName("choice",true); + RndmCmd->SetDefaultValue("off"); + RndmCmd->SetCandidates("on off"); + RndmCmd->AvailableForStates(PreInit,Idle); + + setxvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/xvertex",this); + setxvertexCmd->SetGuidance(" Set x coord. of the primary vertex."); + setxvertexCmd->SetParameterName("xv",true); + setxvertexCmd->SetDefaultValue(0.0*mm) ; + + setyvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/yvertex",this); + setyvertexCmd->SetGuidance(" Set y coord. of the primary vertex."); + setyvertexCmd->SetParameterName("yv",true); + setyvertexCmd->SetDefaultValue(0.0*mm) ; + + setzvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/zvertex",this); + setzvertexCmd->SetGuidance(" Set z coord. of the primary vertex."); + setzvertexCmd->SetParameterName("zv",true); + setzvertexCmd->SetDefaultValue(0.0*mm) ; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10PrimaryGeneratorMessenger::~Em10PrimaryGeneratorMessenger() +{ + delete RndmCmd; + delete setxvertexCmd; + delete setyvertexCmd; + delete setzvertexCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10PrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if( command == RndmCmd ) + { Em10Action->SetRndmFlag(newValue);} + if( command == setxvertexCmd) + { Em10Action->Setxvertex(setxvertexCmd->GetNewDoubleValue(newValue));} + if( command == setyvertexCmd) + { Em10Action->Setyvertex(setyvertexCmd->GetNewDoubleValue(newValue));} + if( command == setzvertexCmd) + { Em10Action->Setzvertex(setzvertexCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10RunAction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10RunAction.cc new file mode 100644 index 0000000000..5c17d28cf0 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10RunAction.cc @@ -0,0 +1,1355 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10RunAction.cc,v 1.3 2001/11/21 11:57:14 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + + +#include "Em10RunAction.hh" +#include "Em10RunMessenger.hh" + +#include "G4Run.hh" +#include "G4UImanager.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "Randomize.hh" +#ifndef G4NOHIST + #include "CLHEP/Hist/HBookFile.h" +#endif +#include + +////////////////////////////////////////////////////////////////////////////// + +Em10RunAction::Em10RunAction() + :histName("histfile"),nbinStep(0),nbinEn(0),nbinTt(0),nbinTb(0), + nbinTsec(0),nbinTh(0),nbinThback(0),nbinR(0),nbinGamma(0), + nbinvertexz(0) +{ + runMessenger = new Em10RunMessenger(this); + saveRndm = 1; +#ifndef G4NOHIST + histo1=0; histo2=0; histo3=0; histo4=0; histo5=0; + histo6=0; histo7=0; histo8=0; histo9=0; histo10=0; +#endif +} + +//////////////////////////////////////////////////////////////////////////// + +Em10RunAction::~Em10RunAction() +{ + delete runMessenger; +#ifndef G4NOHIST + if(histo1) delete histo1 ; + if(histo2) delete histo2 ; + if(histo3) delete histo3 ; + if(histo4) delete histo4 ; + if(histo5) delete histo5 ; + if(histo6) delete histo6 ; + if(histo7) delete histo7 ; + if(histo8) delete histo8 ; + if(histo9) delete histo9 ; + if(histo10) delete histo10 ; + delete hbookManager; +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::bookHisto() +{ +#ifndef G4NOHIST + // init hbook + + hbookManager = new HBookFile(histName, 68); + assert (hbookManager != 0); + + // book histograms + + if(nbinStep>0) + { + histo1 = hbookManager->histogram("number of steps/event" + ,nbinStep,Steplow,Stephigh) ; + assert (histo1 != 0); + } + if(nbinEn>0) + { + histo2 = hbookManager->histogram("Energy Loss (keV)" + ,nbinEn,Enlow/keV,Enhigh/keV) ; + assert (histo2 != 0); + } + if(nbinTh>0) + { + histo3 = hbookManager->histogram("angle distribution at exit(deg)" + ,nbinTh,Thlow/deg,Thhigh/deg) ; + assert (histo3 != 0); + } + if(nbinR>0) + { + histo4 = hbookManager->histogram("lateral distribution at exit(mm)" + ,nbinR ,Rlow,Rhigh) ; + assert (histo4 != 0); + } + if(nbinTt>0) + { + histo5 = hbookManager->histogram("kinetic energy of the primary at exit(MeV)" + ,nbinTt,Ttlow,Tthigh) ; + assert (histo5 != 0); + } + if(nbinThback>0) + { + histo6 = hbookManager->histogram("angle distribution of backscattered primaries(deg)" + ,nbinThback,Thlowback/deg,Thhighback/deg) ; + assert (histo6 != 0); + } + if(nbinTb>0) + { + histo7 = hbookManager->histogram("kinetic energy of the backscattered primaries (MeV)" + ,nbinTb,Tblow,Tbhigh) ; + assert (histo7 != 0); + } + if(nbinTsec>0) + { + histo8 = hbookManager->histogram("kinetic energy of the charged secondaries (MeV)" + ,nbinTsec,Tseclow,Tsechigh) ; + assert (histo8 != 0); + } + if(nbinvertexz>0) + { + histo9 = hbookManager->histogram("z of secondary charged vertices(mm)" + ,nbinvertexz ,zlow,zhigh) ; + assert (histo9 != 0); + } + if(nbinGamma>0) + { + histo10= hbookManager->histogram("kinetic energy of gammas escaping the absorber (MeV)" + // ,nbinGamma,ElowGamma,EhighGamma) ; + ,nbinGamma,log10(ElowGamma),log10(EhighGamma)) ; + assert (histo10 != 0); + } +#endif +} + +///////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::BeginOfRunAction(const G4Run* aRun) +{ + G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; + + // save Rndm status + if (saveRndm > 0) + { + HepRandom::showEngineStatus(); + HepRandom::saveEngineStatus("beginOfRun.rndm"); + } + G4UImanager* UI = G4UImanager::GetUIpointer(); + + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) UI->ApplyCommand("/vis/scene/notifyHandlers"); + + + EnergySumAbs = 0. ; + EnergySquareSumAbs = 0.; + tlSumAbs = 0. ; + tlsquareSumAbs = 0. ; + nStepSumCharged = 0. ; + nStepSum2Charged= 0. ; + nStepSumNeutral = 0. ; + nStepSum2Neutral= 0. ; + TotNbofEvents = 0. ; + SumCharged=0.; + SumNeutral=0.; + Sum2Charged=0.; + Sum2Neutral=0.; + Selectron=0.; + Spositron=0.; + + Transmitted=0.; + Reflected =0.; + +// plot definitions + + if(nbinStep>0) + { + dStep=(Stephigh-Steplow)/nbinStep; + entryStep=0.; + underStep=0.; + overStep=0.; + for(G4int ist=0; ist0) + { + dEn = (Enhigh-Enlow)/nbinEn ; + entryEn=0.; + underEn=0.; + overEn=0.; + + for (G4int ien=0; ien0) + { + dTt = (Tthigh-Ttlow)/nbinTt ; + entryTt=0.; + underTt=0.; + overTt=0.; + + for (G4int itt=0; itt0) + { + dTb = (Tbhigh-Tblow)/nbinTb ; + entryTb=0.; + underTb=0.; + overTb=0.; + for (G4int itt=0; itt0) + { + dTsec = (Tsechigh-Tseclow)/nbinTsec ; + entryTsec=0.; + underTsec=0.; + overTsec=0.; + for (G4int its=0; its0) + { + dTh = (Thhigh-Thlow)/nbinTh ; + entryTh=0.; + underTh=0.; + overTh=0.; + for (G4int ith=0; ith0) + { + dThback = (Thhighback-Thlowback)/nbinThback ; + entryThback=0.; + underThback=0.; + overThback=0.; + for (G4int ithback=0; ithback0) + { + dR = (Rhigh-Rlow)/nbinR ; + entryR =0.; + underR =0.; + overR =0.; + for (G4int ir =0; ir 0) + { + dEGamma = log(EhighGamma/ElowGamma)/nbinGamma ; + entryGamma = 0.; + underGamma=0.; + overGamma=0.; + for (G4int ig=0; ig0) + { + dz=(zhigh-zlow)/nbinvertexz; + entryvertexz=0.; + undervertexz=0.; + oververtexz=0.; + for(G4int iz=0; iz0.) + sAbs = sqrt(sAbs/TotNbofEvents) ; + else + sAbs = 0. ; + + EnergySumAbs /= TotNbofEvents ; + sigAbs = EnergySquareSumAbs/TotNbofEvents-EnergySumAbs*EnergySumAbs; + if(sigAbs>0.) + sigAbs = sqrt(sigAbs/TotNbofEvents); + else + sigAbs = 0.; + + nStepSumCharged /= TotNbofEvents ; + sigstep = nStepSum2Charged/TotNbofEvents-nStepSumCharged*nStepSumCharged; + if(sigstep>0.) + sigstep = sqrt(sigstep/TotNbofEvents); + else + sigstep = 0.; + G4double sigch=sigstep ; + + nStepSumNeutral /= TotNbofEvents ; + sigstep = nStepSum2Neutral/TotNbofEvents-nStepSumNeutral*nStepSumNeutral; + if(sigstep>0.) + sigstep = sqrt(sigstep/TotNbofEvents); + else + sigstep = 0.; + G4double signe=sigstep ; + + SumCharged /= TotNbofEvents; + sigcharged = Sum2Charged/TotNbofEvents-SumCharged*SumCharged; + if(sigcharged>0.) + sigcharged = sqrt(sigcharged/TotNbofEvents); + else + sigcharged = 0. ; + + SumNeutral /= TotNbofEvents; + signeutral = Sum2Neutral/TotNbofEvents-SumNeutral*SumNeutral; + if(signeutral>0.) + signeutral = sqrt(signeutral/TotNbofEvents); + else + signeutral = 0. ; + + Selectron /= TotNbofEvents ; + Spositron /= TotNbofEvents ; + + Transmitted /=TotNbofEvents ; + Reflected /=TotNbofEvents ; + G4cout << " ================== run summary =====================" << G4endl; + G4int prec = G4cout.precision(6); + G4cout << " end of Run TotNbofEvents = " << + TotNbofEvents << G4endl ; + G4cout << " mean charged track length in absorber=" << + tlSumAbs/mm << " +- " << sAbs/mm << + " mm " << G4endl; + G4cout << G4endl; + G4cout << " mean energy deposit in absorber=" << + EnergySumAbs/MeV << " +- " << sigAbs/MeV << + " MeV " << G4endl ; + G4cout << G4endl ; + G4cout << " mean number of steps in absorber (charged) =" << + nStepSumCharged << " +- " << sigch << + " " << G4endl ; + G4cout << " mean number of steps in absorber (neutral) =" << + nStepSumNeutral << " +- " << signe << + " " << G4endl ; + G4cout << G4endl ; + G4cout << " mean number of charged secondaries = " << + SumCharged << " +- " << sigcharged << G4endl; + G4cout << G4endl ; + G4cout << " mean number of neutral secondaries = " << + SumNeutral << " +- " << signeutral << G4endl; + G4cout << G4endl ; + + G4cout << " mean number of e-s =" << Selectron << + " and e+s =" << Spositron << G4endl; + G4cout << G4endl; + + G4cout << "(number) transmission coeff=" << Transmitted << + " reflection coeff=" << Reflected << G4endl; + G4cout << G4endl; + + if(nbinStep>0) + {G4double E , dnorm, norm ; + G4cout << " step number/event distribution " << G4endl ; + G4cout << "#entries=" << entryStep << " #underflows=" << underStep << + " #overflows=" << overStep << G4endl ; + if( entryStep>0.) + { + E = Steplow - dStep ; + norm = TotNbofEvents ; + G4cout << " bin nb nsteplow entries normalized " << G4endl ; + for(G4int iss=0; iss 0) + { + G4std::ofstream fileOut("distribution.out", G4std::ios::out ) ; + fileOut.setf( G4std::ios::scientific, G4std::ios::floatfield ); + + G4std::ofstream normOut("normDist.out", G4std::ios::out ) ; + normOut.setf( G4std::ios::scientific, G4std::ios::floatfield ); + + G4double E , dnorm, norm,fmax,Emp ; + Emp=-999.999 ; + G4cout << " energy deposit distribution " << G4endl ; + G4cout << "#entries=" << entryEn << " #underflows=" << underEn << + " #overflows=" << overEn << G4endl ; + if( entryEn>0.) + { + E = Enlow - dEn ; + norm = TotNbofEvents*1.0 ; // *dEn ; + G4cout << " bin nb Elow entries normalized " << G4endl ; + fmax = 0. ; + + for(G4int ien=0; ienfmax) + { + fmax = distEn[ien] ; + Emp = E ; // most probable roughly + } + dnorm = distEn[ien]/norm; + + G4cout << G4std::setw(5) << ien << G4std::setw(10) << E/keV << + G4std::setw(12) << distEn[ien] << + G4std::setw(12) << dnorm << G4endl ; + + fileOut << E/keV << "\t"<< distEn[ien] << G4endl ; + normOut << E/keV << "\t"<< dnorm << G4endl ; + } + G4cout << G4endl; + G4int ii ; + G4double E1,E2 ; + E1=-1.e6 ; + E2=+1.e6 ; + E = Enlow -dEn ; + ii = -1; + + for(G4int i1=0; i1= 0.5*fmax) + { + E1=E ; + ii=i1 ; + } + } + } + E = Enlow -dEn ; + + for(G4int i2=0; i2= 0.5*fmax) E2=E ; + } + G4cout << " Emp = " << G4std::setw(15) << Emp/MeV << " width=" + << G4std::setw(15) << (E2-E1)/MeV << " MeV " << G4endl; + G4cout << G4endl ; + } + } + if(nbinTt>0) + { + G4double E , dnorm, norm ,sig; + G4cout << " transmitted energy distribution " << G4endl ; + G4cout << "#entries=" << entryTt << " #underflows=" << underTt << + " #overflows=" << overTt << G4endl ; + if( entryTt>0.) + { + Ttmean /= entryTt; + sig=Tt2mean/entryTt-Ttmean*Ttmean ; + if(sig<=0.) + sig=0.; + else + sig=sqrt(sig/entryTt) ; + G4cout << " mean energy of transmitted particles=" << Ttmean/keV << + " +- " << sig/keV << " keV." << G4endl; + E = Ttlow - dTt ; + norm = TotNbofEvents*dTt ; + G4cout << " bin nb Elow entries normalized " << G4endl ; + for(G4int itt=0; itt0) + { + G4double E , dnorm, norm ,sig; + G4cout << " backscattered energy distribution " << G4endl ; + G4cout << "#entries=" << entryTb << " #underflows=" << underTb << + " #overflows=" << overTb << G4endl ; + if( entryTb>0.) + { + Tbmean /= entryTb; + sig=Tb2mean/entryTb-Tbmean*Tbmean ; + if(sig<=0.) + sig=0.; + else + sig=sqrt(sig/entryTb) ; + G4cout << " mean energy of backscattered particles=" << Tbmean/keV << + " +- " << sig/keV << " keV." << G4endl; + E = Tblow - dTb ; + norm = TotNbofEvents*dTb ; + G4cout << " bin nb Elow entries normalized " << G4endl ; + for(G4int itt=0; itt0) + {G4double E , dnorm, norm ; + G4cout << " energy distribution of charged secondaries " << G4endl ; + G4cout << "#entries=" << entryTsec << " #underflows=" << underTsec << + " #overflows=" << overTsec << G4endl ; + if( entryTsec>0.) + { + E = Tseclow - dTsec ; + norm = TotNbofEvents*dTsec ; + G4cout << " bin nb Elow entries normalized " << G4endl ; + for(G4int itt=0; itt0) + {G4double R , dnorm, norm,sig ; + G4cout << " R distribution " << G4endl ; + G4cout << "#entries=" << entryR << " #underflows=" << underR << + " #overflows=" << overR << G4endl ; + if( entryR >0.) + { + Rmean /= entryR; + sig = R2mean/entryR - Rmean*Rmean; + if(sig<=0.) sig=0. ; + else sig = sqrt(sig/entryR) ; + G4cout << " mean lateral displacement at exit=" << Rmean/mm << " +- " + << sig/mm << " mm." << G4endl ; + R = Rlow - dR ; + norm = TotNbofEvents*dR ; + G4cout << " bin nb Rlow entries normalized " << G4endl ; + for(G4int ier=0; ier0) + {G4double Th,Thdeg, dnorm, norm,fac0,fnorm,pere,Thpere,Thmean,sum; + G4cout << " angle distribution " << G4endl ; + G4cout << "#entries=" << entryTh << " #underflows=" << underTh << + " #overflows=" << overTh << G4endl ; + if( entryTh>0.) + { + Th= Thlow - dTh ; + norm = TotNbofEvents ; + if(distTh[0] == 0.) + fac0 = 1. ; + else + fac0 = 1./distTh[0] ; + pere = 1./exp(1.) ; + + G4cout << " bin nb Thlowdeg Thlowrad " << + " entries normalized " << G4endl ; + Thpere = 0. ; + sum = 0. ; + Thmean = 0. ; + for(G4int ien=0; ien pere) + Thpere = Th ; + G4cout << G4std::setw(5) << ien << G4std::setw(10) << Thdeg << " " << + G4std::setw(10) << Th << " " << + G4std::setw(12) << distTh[ien] << " " << + G4std::setw(12) << dnorm << " " << G4std::setw(12) << fnorm <0) + {G4double Thb,Thdegb, dnormb, normb,fac0b,fnormb,pereb,Thpereb,Thmeanb,sumb; + G4cout << " backscattering angle distribution " << G4endl ; + G4cout << "#entries=" << entryThback << " #underflows=" << underThback << + " #overflows=" << overThback << G4endl ; + if( entryThback>0.) + { + Thb= Thlowback - dThback ; + normb = TotNbofEvents ; + if(distThback[0] == 0.) + fac0b = 1. ; + else + fac0b = 1./distThback[0] ; + pereb = 1./exp(1.) ; + + G4cout << " bin nb Thlowdeg Thlowrad " << + " entries normalized " << G4endl ; + Thpereb = 0. ; + sumb = 0. ; + Thmeanb = 0. ; + for(G4int ien=0; ien pereb) + Thpereb = Thb ; + G4cout << G4std::setw(5) << ien << G4std::setw(10) << Thdegb << " " << + G4std::setw(10) << Thb << " " << + G4std::setw(12) << distThback[ien] << " " << + G4std::setw(12) << dnormb << " " << G4std::setw(12) << fnormb <0) + {G4double E , fact,dnorm, norm ; + G4cout << " gamma energy distribution " << G4endl ; + G4cout << "#entries=" << entryGamma << " #underflows=" << underGamma << + " #overflows=" << overGamma << G4endl ; + if( entryGamma>0.) + { + fact=exp(dEGamma) ; + E = ElowGamma/fact ; + norm = TotNbofEvents*dEGamma; + G4cout << " bin nb Elow entries normalized " << G4endl ; + for(G4int itt=0; itt0) + {G4double z , dnorm, norm ; + G4cout << " vertex Z distribution " << G4endl ; + G4cout << "#entries=" << entryvertexz << " #underflows=" << undervertexz << + " #overflows=" << oververtexz << G4endl ; + if( entryvertexz >0.) + { + z =zlow - dz ; + norm = TotNbofEvents*dz ; + G4cout << " bin nb zlow entries normalized " << G4endl ; + for(G4int iez=0; iezApplyCommand("/vis/viewer/update"); + } + // Write histogram file + +#ifndef G4NOHIST + hbookManager->write(); +#endif + + // save Rndm status + + if (saveRndm == 1) + { + HepRandom::showEngineStatus(); + HepRandom::saveEngineStatus("endOfRun.rndm"); + } +} + +/////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::CountEvent() +{ + TotNbofEvents += 1. ; +} + +///////////////////////////////////////////////////////////////////////// + +void Em10RunAction::AddnStepsCharged(G4double ns) +{ + nStepSumCharged += ns; + nStepSum2Charged += ns*ns; +} + +//////////////////////////////////////////////////////////////////////// + +void Em10RunAction::AddnStepsNeutral(G4double ns) +{ + nStepSumNeutral += ns; + nStepSum2Neutral += ns*ns; +} + +//////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::AddEdeps(G4double Eabs) +{ + EnergySumAbs += Eabs; + EnergySquareSumAbs += Eabs*Eabs; +} + +///////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::AddTrackLength(G4double tlabs) +{ + tlSumAbs += tlabs; + tlsquareSumAbs += tlabs*tlabs ; +} + +///////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::AddTrRef(G4double tr,G4double ref) +{ + Transmitted += tr ; + Reflected += ref; +} + +///////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillNbOfSteps(G4double ns) +{ +#ifndef G4NOHIST + const G4double eps = 1.e-10 ; + G4double n,bin ; + G4int ibin; + + if(histo1) + { + entryStep += 1. ; + + if(ns=Stephigh) + overStep += 1. ; + else + { + n = ns+eps ; + bin = (n-Steplow)/dStep ; + ibin= (G4int)bin ; + distStep[ibin] += 1. ; + } + histo1->accumulate(ns) ; + } +#endif +} + +////////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillEn(G4double En) +{ +#ifndef G4NOHIST + G4double bin ; + G4int ibin; + + if(histo2) + { + entryEn += 1. ; + + if(En < Enlow) underEn += 1. ; + else if( En >= Enhigh) overEn += 1. ; + else + { + bin = (En-Enlow)/dEn ; + ibin= (G4int)bin ; + distEn[ibin] += 1. ; + } + histo2->accumulate(En/keV) ; // was /MeV + } +#endif +} + +//////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillTt(G4double En) +{ +#ifndef G4NOHIST + G4double bin ; + G4int ibin; + + if(histo5) + { + entryTt += 1. ; + Ttmean += En ; + Tt2mean += En*En ; + + if(En=Tthigh) + overTt += 1. ; + else + { + bin = (En-Ttlow)/dTt ; + ibin= (G4int)bin ; + distTt[ibin] += 1. ; + } + histo5->accumulate(En/MeV) ; + } +#endif +} + +////////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillTb(G4double En) +{ +#ifndef G4NOHIST + G4double bin ; + G4int ibin; + + if(histo7) + { + entryTb += 1. ; + Tbmean += En ; + Tb2mean += En*En ; + + if(En=Tbhigh) + overTb += 1. ; + else + { + bin = (En-Tblow)/dTb ; + ibin= (G4int)bin ; + distTb[ibin] += 1. ; + } + histo7->accumulate(En/MeV) ; + } +#endif +} + +/////////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillTsec(G4double En) +{ +#ifndef G4NOHIST + G4double bin ; + G4int ibin; + + if(histo8) + { + entryTsec += 1. ; + + if(En=Tsechigh) + overTsec += 1. ; + else + { + bin = (En-Tseclow)/dTsec ; + ibin= (G4int)bin ; + distTsec[ibin] += 1. ; + } + histo8->accumulate(En/MeV) ; + } +#endif +} + +///////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillGammaSpectrum(G4double En) +{ +#ifndef G4NOHIST + G4double bin ; + G4int ibin; + + if(histo10) + { + entryGamma += 1. ; + + if(En=EhighGamma) + overGamma += 1. ; + else + { + bin = log(En/ElowGamma)/dEGamma; + ibin= (G4int)bin ; + distGamma[ibin] += 1. ; + } + histo10->accumulate(log10(En/MeV)) ; + } +#endif +} + +//////////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillTh(G4double Th) +{ +#ifndef G4NOHIST + static const G4double cn=pi/(64800.*dTh) ; + static const G4double cs=pi/ + (64800.*(cos(Thlow)-cos(Thlow+dTh))); + G4double bin,Thbin ,wg; + G4int ibin; + + if(histo3) + { + entryTh += 1. ; + + wg = 0.; + + if(Th=Thhigh) + overTh += 1. ; + else + { + bin = (Th-Thlow)/dTh ; + ibin= (G4int)bin ; + Thbin = Thlow+ibin*dTh ; + if(Th > 0.001*dTh) + wg=cn/sin(Th) ; + else + { + G4double thdeg=Th*180./pi; + G4cout << "theta < 0.001*dth (from plot excluded) theta=" + << G4std::setw(12) << G4std::setprecision(4) << thdeg << G4endl; + wg=0. ; + } + distTh[ibin] += wg ; + } + + histo3->accumulate(Th/deg, wg) ; + } +#endif +} + +////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillThBack(G4double Th) +{ +#ifndef G4NOHIST + static const G4double cn=pi/(64800.*dThback) ; + static const G4double cs=pi/ + (64800.*(cos(Thlowback)-cos(Thlowback+dThback))); + G4double bin,Thbin,wg ; + G4int ibin; + + if(histo6) + { + entryThback += 1. ; + + if(Th=Thhighback) + overThback += 1. ; + else + { + bin = (Th-Thlowback)/dThback ; + ibin= (G4int)bin ; + Thbin = Thlowback+ibin*dThback ; + if(Th > 0.001*dThback) + wg=cn/sin(Th) ; + else + { + G4double thdeg=Th*180./pi; + G4cout << "theta < 0.001*dth (from plot excluded) theta=" + << G4std::setw(12) << G4std::setprecision(4) << thdeg << G4endl; + wg=0. ; + } + distThback[ibin] += wg ; + } + histo6->accumulate(Th/deg, wg) ; + } +#endif +} + +////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::FillR(G4double R ) +{ +#ifndef G4NOHIST + G4double bin ; + G4int ibin; + + if(histo4) + { + entryR += 1. ; + Rmean += R ; + R2mean += R*R ; + + if(R =Rhigh) + overR += 1. ; + else + { + bin = (R -Rlow)/dR ; + ibin= (G4int)bin ; + distR[ibin] += 1. ; + } + histo4->accumulate(R/mm) ; + } +#endif +} + +///////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::Fillvertexz(G4double z ) +{ +#ifndef G4NOHIST + G4double bin ; + G4int ibin; + + if(histo9) + { + entryvertexz += 1. ; + + if(z =zhigh) + oververtexz += 1. ; + else + { + bin = (z -zlow)/dz ; + ibin = (G4int)bin ; + distvertexz[ibin] += 1. ; + } + histo9->accumulate(z/mm) ; + } +#endif +} + +////////////////////////////////////////////////////////////////////////////// + +void Em10RunAction::SethistName(G4String name) +{ + histName = name ; + G4cout << " hist file = " << histName << G4endl; +} + +void Em10RunAction::SetnbinStep(G4int nbin) +{ + nbinStep = nbin ; + if(nbinStep>0) + G4cout << " Nb of bins in #step plot = " << nbinStep << G4endl ; +} + +void Em10RunAction::SetSteplow(G4double low) +{ + Steplow = low ; + if(nbinStep>0) + G4cout << " low in the #step plot = " << Steplow << G4endl ; +} +void Em10RunAction::SetStephigh(G4double high) +{ + Stephigh = high ; + if(nbinStep>0) + G4cout << " high in the #step plot = " << Stephigh << G4endl ; +} + +//////////////////////////////////////////////////////////////////////// + +void Em10RunAction::SetnbinEn(G4int nbin) +{ + nbinEn = nbin ; + + if(nbinEn > 0) G4cout << " Nb of bins in Edep plot = " << nbinEn << G4endl ; +} + +void Em10RunAction::SetEnlow(G4double Elow) +{ + Enlow = Elow ; + if(nbinEn>0) G4cout << " Elow in the Edep plot = " << Enlow << G4endl ; +} + +void Em10RunAction::SetEnhigh(G4double Ehigh) +{ + Enhigh = Ehigh ; + + if(nbinEn>0) G4cout << " Ehigh in the Edep plot = " << Enhigh << G4endl ; +} + +///////////////////////////////////////////////////////////////////////// + +void Em10RunAction::SetnbinGamma(G4int nbin) +{ + nbinGamma = nbin ; + if(nbinGamma>0) + G4cout << " Nb of bins in gamma spectrum plot = " << nbinGamma << G4endl ; +} + +void Em10RunAction::SetElowGamma(G4double Elow) +{ + ElowGamma = Elow ; + if(nbinGamma>0) + G4cout << " Elow in the gamma spectrum plot = " << ElowGamma << G4endl ; +} + +void Em10RunAction::SetEhighGamma(G4double Ehigh) +{ + EhighGamma = Ehigh ; + if(nbinGamma>0) + G4cout << " Ehigh in the gamma spectrum plot = " << EhighGamma << G4endl ; +} + +void Em10RunAction::SetnbinTt(G4int nbin) +{ + nbinTt = nbin ; + if(nbinTt>0) + G4cout << " Nb of bins in Etransmisssion plot = " << nbinTt << G4endl ; +} + +void Em10RunAction::SetTtlow(G4double Elow) +{ + Ttlow = Elow ; + if(nbinTt>0) + G4cout << " Elow in the Etransmission plot = " << Ttlow << G4endl ; +} + +void Em10RunAction::SetTthigh(G4double Ehigh) +{ + Tthigh = Ehigh ; + if(nbinTt>0) + G4cout << " Ehigh in the Etransmission plot = " << Tthigh << G4endl ; +} + +void Em10RunAction::SetnbinTb(G4int nbin) +{ + nbinTb = nbin ; + if(nbinTb>0) + G4cout << " Nb of bins in Ebackscattered plot = " << nbinTb << G4endl ; +} + +void Em10RunAction::SetTblow(G4double Elow) +{ + Tblow = Elow ; + if(nbinTb>0) + G4cout << " Elow in the Ebackscattered plot = " << Tblow << G4endl ; +} + +void Em10RunAction::SetTbhigh(G4double Ehigh) +{ + Tbhigh = Ehigh ; + if(nbinTb>0) + G4cout << " Ehigh in the Ebackscattered plot = " << Tbhigh << G4endl ; +} + +void Em10RunAction::SetnbinTsec(G4int nbin) +{ + nbinTsec = nbin ; + if(nbinTsec>0) + G4cout << " Nb of bins in Tsecondary plot = " << nbinTsec << G4endl ; +} + +void Em10RunAction::SetTseclow(G4double Elow) +{ + Tseclow = Elow ; + if(nbinTsec>0) + G4cout << " Elow in the Tsecondary plot = " << Tseclow << G4endl ; +} + +void Em10RunAction::SetTsechigh(G4double Ehigh) +{ + Tsechigh = Ehigh ; + if(nbinTsec>0) + G4cout << " Ehigh in the Tsecondary plot = " << Tsechigh << G4endl ; +} + +void Em10RunAction::SetnbinR(G4int nbin) +{ + nbinR = nbin ; + if(nbinR>0) + G4cout << " Nb of bins in R plot = " << nbinR << G4endl ; +} + +void Em10RunAction::SetRlow(G4double rlow) +{ + Rlow = rlow ; + if(nbinR>0) + G4cout << " Rlow in the R plot = " << Rlow << G4endl ; +} + +void Em10RunAction::SetRhigh(G4double rhigh) +{ + Rhigh = rhigh ; + if(nbinR>0) + G4cout << " Rhigh in the R plot = " << Rhigh << G4endl ; +} + +void Em10RunAction::Setnbinzvertex(G4int nbin) +{ + nbinvertexz = nbin ; + if(nbinvertexz>0) + G4cout << " Nb of bins in Z plot = " << nbinvertexz << G4endl ; +} + +void Em10RunAction::Setzlow(G4double z) +{ + zlow = z ; + if(nbinvertexz>0) + G4cout << " zlow in the Z plot = " << zlow << G4endl ; +} + +void Em10RunAction::Setzhigh(G4double z) +{ + zhigh = z ; + if(nbinvertexz>0) + G4cout << " zhigh in the Z plot = " << zhigh << G4endl ; +} + +void Em10RunAction::SetnbinTh(G4int nbin) +{ + nbinTh = nbin ; + if(nbinTh>0) + G4cout << " Nb of bins in Theta plot = " << nbinTh << G4endl ; +} + +void Em10RunAction::SetThlow(G4double Tlow) +{ + Thlow = Tlow ; + if(nbinTh>0) + G4cout << " Tlow in the Theta plot = " << Thlow << G4endl ; +} + +void Em10RunAction::SetThhigh(G4double Thigh) +{ + Thhigh = Thigh ; + if(nbinTh>0) + G4cout << " Thigh in the Theta plot = " << Thhigh << G4endl ; +} + +void Em10RunAction::SetnbinThBack(G4int nbin) +{ + nbinThback = nbin ; + if(nbinThback>0) + G4cout << " Nb of bins in Theta plot = " << nbinThback << G4endl ; +} + +void Em10RunAction::SetThlowBack(G4double Tlow) +{ + Thlowback = Tlow ; + if(nbinThback>0) + G4cout << " Tlow in the Theta plot = " << Thlowback << G4endl ; +} + +void Em10RunAction::SetThhighBack(G4double Thigh) +{ + Thhighback = Thigh ; + if(nbinThback>0) + G4cout << " Thigh in the Theta plot = " << Thhighback << G4endl ; +} + +void Em10RunAction::CountParticles(G4double nch,G4double nne) +{ + SumCharged += nch ; + SumNeutral += nne ; + Sum2Charged += nch*nch ; + Sum2Neutral += nne*nne ; +} + +void Em10RunAction::AddEP(G4double nele,G4double npos) +{ + Selectron += nele; + Spositron += npos; +} + +// +// +//////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10RunMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10RunMessenger.cc new file mode 100644 index 0000000000..4185cc5606 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10RunMessenger.cc @@ -0,0 +1,390 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10RunMessenger.cc,v 1.2 2001/07/11 09:57:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10RunMessenger.hh" + +#include "Em10RunAction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcmdWithAString.hh" +#include "G4ios.hh" +#include "globals.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10RunMessenger::Em10RunMessenger(Em10RunAction* RA) +:runAction (RA) +{ + plotDir = new G4UIdirectory("/plots/"); + plotDir->SetGuidance("plot control"); + + sethistNameCmd = new G4UIcmdWithAString("/plots/sethistName",this); + sethistNameCmd->SetGuidance("set name for the histogram file"); + + setnbinStepCmd = new G4UIcmdWithAnInteger("/plots/setnbinStep",this); + setnbinStepCmd->SetGuidance("set nb of bins in #step plot"); + setnbinStepCmd->SetParameterName("nbinStep",false); + + setSteplowCmd = new G4UIcmdWithADouble("/plots/setSteplow",this); + setSteplowCmd->SetGuidance("set lower limit for #step plot "); + setSteplowCmd->SetParameterName("Steplow",false); + + setStephighCmd = new G4UIcmdWithADouble("/plots/setStephigh",this); + setStephighCmd->SetGuidance("set upper limit for #step plot "); + setStephighCmd->SetParameterName("Stephigh",false); + + setnbinEnCmd = new G4UIcmdWithAnInteger("/plots/setnbinEn",this); + setnbinEnCmd->SetGuidance("set nb of bins in Edep plot"); + setnbinEnCmd->SetParameterName("nbinE",false); + + setEnlowCmd = new G4UIcmdWithADoubleAndUnit("/plots/setEnlow",this); + setEnlowCmd->SetGuidance("set lower limit for Edep plot "); + setEnlowCmd->SetParameterName("Elow",false); + setEnlowCmd->SetUnitCategory("Energy"); + + setEnhighCmd = new G4UIcmdWithADoubleAndUnit("/plots/setEnhigh",this); + setEnhighCmd->SetGuidance("set upper limit for Edep plot "); + setEnhighCmd->SetParameterName("Ehigh",false); + setEnhighCmd->SetUnitCategory("Energy"); + + setnbinGammaCmd = new G4UIcmdWithAnInteger("/plots/setnbinGamma",this); + setnbinGammaCmd->SetGuidance("set nb of bins in gamma spectrum plot"); + setnbinGammaCmd->SetParameterName("nbinGamma",false); + + setElowGammaCmd = new G4UIcmdWithADoubleAndUnit("/plots/setElowGamma",this); + setElowGammaCmd->SetGuidance("set lower limit for gamma spectrum plot "); + setElowGammaCmd->SetParameterName("ElowGamma",false); + setElowGammaCmd->SetUnitCategory("Energy"); + + setEhighGammaCmd = new G4UIcmdWithADoubleAndUnit("/plots/setEhighGamma",this); + setEhighGammaCmd->SetGuidance("set upper limit for gamma spectrum plot "); + setEhighGammaCmd->SetParameterName("EhighGamma",false); + setEhighGammaCmd->SetUnitCategory("Energy"); + + setnbinTtCmd = new G4UIcmdWithAnInteger("/plots/setnbinTt",this); + setnbinTtCmd->SetGuidance("set nb of bins in Etransmitted plot"); + setnbinTtCmd->SetParameterName("nbinTt",false); + + setTtlowCmd = new G4UIcmdWithADoubleAndUnit("/plots/setTtlow",this); + setTtlowCmd->SetGuidance("set lower limit for Etransmitted plot "); + setTtlowCmd->SetParameterName("Ttlow",false); + + setTthighCmd = new G4UIcmdWithADoubleAndUnit("/plots/setTthigh",this); + setTthighCmd->SetGuidance("set upper limit for Etransmitted plot "); + setTthighCmd->SetParameterName("Tthigh",false); + + setnbinTbCmd = new G4UIcmdWithAnInteger("/plots/setnbinTb",this); + setnbinTbCmd->SetGuidance("set nb of bins in Ebackscattering plot"); + setnbinTbCmd->SetParameterName("nbinTb",false); + + setTblowCmd = new G4UIcmdWithADoubleAndUnit("/plots/setTblow",this); + setTblowCmd->SetGuidance("set lower limit for Ebackscattered plot "); + setTblowCmd->SetParameterName("Tblow",false); + + setTbhighCmd = new G4UIcmdWithADoubleAndUnit("/plots/setTbhigh",this); + setTbhighCmd->SetGuidance("set upper limit for Ebackscattered plot "); + setTbhighCmd->SetParameterName("Tbhigh",false); + + setnbinTsecCmd = new G4UIcmdWithAnInteger("/plots/setnbinTsec",this); + setnbinTsecCmd->SetGuidance("set nb of bins in charged Tsecondary plot"); + setnbinTsecCmd->SetParameterName("nbinTsec",false); + + setTseclowCmd = new G4UIcmdWithADoubleAndUnit("/plots/setTseclow",this); + setTseclowCmd->SetGuidance("set lower limit for charged Tsecondary plot "); + setTseclowCmd->SetParameterName("Tseclow",false); + + setTsechighCmd = new G4UIcmdWithADoubleAndUnit("/plots/setTsechigh",this); + setTsechighCmd->SetGuidance("set upper limit for charged Tsecondary plot "); + setTsechighCmd->SetParameterName("Tsechigh",false); + + setnbinRCmd = new G4UIcmdWithAnInteger("/plots/setnbinR",this); + setnbinRCmd->SetGuidance("set nb of bins in R plot"); + setnbinRCmd->SetParameterName("nbinR",false); + + setRlowCmd = new G4UIcmdWithADoubleAndUnit("/plots/setRlow",this); + setRlowCmd->SetGuidance("set lower limit for R plot "); + setRlowCmd->SetParameterName("Rlow",false); + + setRhighCmd = new G4UIcmdWithADoubleAndUnit("/plots/setRhigh",this); + setRhighCmd->SetGuidance("set upper limit for R plot "); + setRhighCmd->SetParameterName("Rhigh",false); + + setnbinzvertexCmd = new G4UIcmdWithAnInteger("/plots/setnbinzvertex",this); + setnbinzvertexCmd->SetGuidance("set nb of bins in Z vertex plot"); + setnbinzvertexCmd->SetParameterName("nbinZ",false); + + setzlowCmd = new G4UIcmdWithADoubleAndUnit("/plots/setzlow",this); + setzlowCmd->SetGuidance("set lower limit for Z vertex plot "); + setzlowCmd->SetParameterName("zlow",false); + + setzhighCmd = new G4UIcmdWithADoubleAndUnit("/plots/setzhigh",this); + setzhighCmd->SetGuidance("set upper limit for Z vertex plot "); + setzhighCmd->SetParameterName("zhigh",false); + + setnbinThCmd = new G4UIcmdWithAnInteger("/plots/setnbinTh",this); + setnbinThCmd->SetGuidance("set nb of bins in Theta transmitted plot"); + setnbinThCmd->SetParameterName("nbinTh",false); + + setThlowCmd = new G4UIcmdWithADoubleAndUnit("/plots/setThlow",this); + setThlowCmd->SetGuidance("set lower limit for Theta transmitted plot "); + setThlowCmd->SetParameterName("Thlow",false); + + setThhighCmd = new G4UIcmdWithADoubleAndUnit("/plots/setThhigh",this); + setThhighCmd->SetGuidance("set upper limit for Theta transmitted plot "); + setThhighCmd->SetParameterName("Thhigh",false); + + setnbinThbackCmd = new G4UIcmdWithAnInteger("/plots/setnbinThback",this); + setnbinThbackCmd->SetGuidance("set nb of bins in backscattering Theta plot"); + setnbinThbackCmd->SetParameterName("nbinThback",false); + + setThlowbackCmd = new G4UIcmdWithADoubleAndUnit("/plots/setThlowback",this); + setThlowbackCmd->SetGuidance("set lower limit for backscattering Theta plot "); + setThlowbackCmd->SetParameterName("Thlowback",false); + + setThhighbackCmd = new G4UIcmdWithADoubleAndUnit("/plots/setThhighback",this); + setThhighbackCmd->SetGuidance("set upper limit for backscattering Theta plot "); + setThhighbackCmd->SetParameterName("Thhighback",false); + + RndmDir = new G4UIdirectory("/rndm/"); + RndmDir->SetGuidance("Rndm status control."); + + RndmSaveCmd = new G4UIcmdWithAnInteger("/rndm/save",this); + RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files."); + RndmSaveCmd->SetGuidance("freq = 0 not saved"); + RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm"); + RndmSaveCmd->SetGuidance("freq = 1 saved on: endOfRun.rndm"); + RndmSaveCmd->SetGuidance("freq = 2 saved on: endOfEvent.rndm"); + RndmSaveCmd->SetParameterName("frequency",false); + RndmSaveCmd->SetRange("frequency>=0 && frequency<=2"); + RndmSaveCmd->AvailableForStates(PreInit,Idle); + + RndmReadCmd = new G4UIcmdWithAString("/rndm/read",this); + RndmReadCmd->SetGuidance("get rndm status from an external file."); + RndmReadCmd->SetParameterName("fileName",true); + RndmReadCmd->SetDefaultValue ("beginOfRun.rndm"); + RndmReadCmd->AvailableForStates(PreInit,Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10RunMessenger::~Em10RunMessenger() +{ + delete sethistNameCmd; + + delete setnbinStepCmd; + delete setSteplowCmd; + delete setStephighCmd; + + delete setnbinEnCmd; + delete setEnlowCmd; + delete setEnhighCmd; + + delete setnbinGammaCmd; + delete setElowGammaCmd; + delete setEhighGammaCmd; + + delete setnbinTtCmd; + delete setTtlowCmd; + delete setTthighCmd; + + delete setnbinTbCmd; + delete setTblowCmd; + delete setTbhighCmd; + + delete setnbinTsecCmd; + delete setTseclowCmd; + delete setTsechighCmd; + + delete setnbinRCmd; + delete setRlowCmd; + delete setRhighCmd; + + delete setnbinzvertexCmd; + delete setzlowCmd; + delete setzhighCmd; + + delete setnbinThCmd; + delete setThlowCmd; + delete setThhighCmd; + + delete setnbinThbackCmd; + delete setThlowbackCmd; + delete setThhighbackCmd; + + delete plotDir; + + delete RndmSaveCmd; delete RndmReadCmd; delete RndmDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10RunMessenger::SetNewValue(G4UIcommand* command,G4String newValues) +{ + if( command == sethistNameCmd) + runAction + ->SethistName(newValues) ; + + if( command == setnbinStepCmd) + runAction + ->SetnbinStep(setnbinStepCmd->GetNewIntValue(newValues)); + + if( command == setSteplowCmd) + runAction + ->SetSteplow( setSteplowCmd->GetNewDoubleValue(newValues)); + + if( command == setStephighCmd) + runAction + ->SetStephigh( setStephighCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinEnCmd) + runAction + ->SetnbinEn(setnbinEnCmd->GetNewIntValue(newValues)); + + if( command == setEnlowCmd) + runAction + ->SetEnlow( setEnlowCmd->GetNewDoubleValue(newValues)); + + if( command == setEnhighCmd) + runAction + ->SetEnhigh( setEnhighCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinGammaCmd) + runAction + ->SetnbinGamma(setnbinGammaCmd->GetNewIntValue(newValues)); + + if( command == setElowGammaCmd) + runAction + ->SetElowGamma( setElowGammaCmd->GetNewDoubleValue(newValues)); + + if( command == setEhighGammaCmd) + runAction + ->SetEhighGamma( setEhighGammaCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinTtCmd) + runAction + ->SetnbinTt(setnbinTtCmd->GetNewIntValue(newValues)); + + if( command == setTtlowCmd) + runAction + ->SetTtlow( setTtlowCmd->GetNewDoubleValue(newValues)); + + if( command == setTthighCmd) + runAction + ->SetTthigh( setTthighCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinTbCmd) + runAction + ->SetnbinTb(setnbinTbCmd->GetNewIntValue(newValues)); + + if( command == setTblowCmd) + runAction + ->SetTblow( setTblowCmd->GetNewDoubleValue(newValues)); + + if( command == setTbhighCmd) + runAction + ->SetTbhigh( setTbhighCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinTsecCmd) + runAction + ->SetnbinTsec(setnbinTsecCmd->GetNewIntValue(newValues)); + + if( command == setTseclowCmd) + runAction + ->SetTseclow( setTseclowCmd->GetNewDoubleValue(newValues)); + + if( command == setTsechighCmd) + runAction + ->SetTsechigh( setTsechighCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinRCmd) + runAction + ->SetnbinR(setnbinRCmd->GetNewIntValue(newValues)); + + if( command == setRlowCmd) + runAction + ->SetRlow( setRlowCmd->GetNewDoubleValue(newValues)); + + if( command == setRhighCmd) + runAction + ->SetRhigh( setRhighCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinzvertexCmd) + runAction + ->Setnbinzvertex(setnbinzvertexCmd->GetNewIntValue(newValues)); + + if( command == setzlowCmd) + runAction + ->Setzlow( setzlowCmd->GetNewDoubleValue(newValues)); + + if( command == setzhighCmd) + runAction + ->Setzhigh( setzhighCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinThCmd) + runAction + ->SetnbinTh(setnbinThCmd->GetNewIntValue(newValues)); + + if( command == setThlowCmd) + runAction + ->SetThlow( setThlowCmd->GetNewDoubleValue(newValues)); + + if( command == setThhighCmd) + runAction + ->SetThhigh( setThhighCmd->GetNewDoubleValue(newValues)); + + if( command == setnbinThbackCmd) + runAction + ->SetnbinThBack(setnbinThbackCmd->GetNewIntValue(newValues)); + + if( command == setThlowbackCmd) + runAction + ->SetThlowBack( setThlowbackCmd->GetNewDoubleValue(newValues)); + + if( command == setThhighbackCmd) + runAction + ->SetThhighBack( setThhighbackCmd->GetNewDoubleValue(newValues)); + + if (command == RndmSaveCmd) + runAction->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValues)); + + if (command == RndmReadCmd) + { G4cout << "\n---> rndm status restored from file: " << newValues << G4endl; + HepRandom::restoreEngineStatus(newValues); + HepRandom::showEngineStatus(); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10StepCut.cc b/examples/extended/electromagnetic/TestEm10/src/Em10StepCut.cc new file mode 100644 index 0000000000..35759c0546 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10StepCut.cc @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10StepCut.cc,v 1.2 2001/07/11 09:57:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "Em10StepCut.hh" + +#include "G4Step.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + +Em10StepCut::Em10StepCut(const G4String& aName) + : G4VDiscreteProcess(aName),MaxChargedStep(DBL_MAX) +{ + if (verboseLevel>0) { + G4cout << GetProcessName() << " is created "<< G4endl; + } +} + +Em10StepCut::~Em10StepCut() +{ +} + +Em10StepCut::Em10StepCut(Em10StepCut& right) + :G4VDiscreteProcess(right) +{} + +void Em10StepCut::SetMaxStep(G4double step) +{ + MaxChargedStep = step ; +} + + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingAction.cc b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingAction.cc new file mode 100644 index 0000000000..cc28baa853 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingAction.cc @@ -0,0 +1,207 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10SteppingAction.cc,v 1.3 2001/11/21 11:57:15 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10DetectorConstruction.hh" +#include "G4EnergyLossTables.hh" +#include "G4SteppingManager.hh" +#include "G4TrackVector.hh" +#include "Em10SteppingAction.hh" +#include "Em10PrimaryGeneratorAction.hh" +#include "Em10EventAction.hh" +#include "Em10RunAction.hh" +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "Em10SteppingMessenger.hh" +#include "G4ios.hh" +#include "g4std/iomanip" +#include "G4UImanager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10SteppingAction::Em10SteppingAction(Em10DetectorConstruction* DET, + Em10EventAction* EA, + Em10RunAction* RA) +:detector (DET),eventaction (EA),runaction (RA),steppingMessenger(0), + IDold(-1) ,evnoold(-1) +{ + steppingMessenger = new Em10SteppingMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10SteppingAction::~Em10SteppingAction() +{ + delete steppingMessenger ; + } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10SteppingAction::UserSteppingAction(const G4Step* aStep) +{ + + G4double Theta,Thetaback,Ttrans,Tback,Tsec,Egamma,yend,zend,rend ; + G4int evno = eventaction->GetEventno() ; + + IDnow = evno+10000*(aStep->GetTrack()->GetTrackID())+ + 100000000*(aStep->GetTrack()->GetParentID()); + if(IDnow != IDold) + { + IDold=IDnow ; + if( + (((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName()) == "e-") && + ((aStep->GetTrack()->GetTrackID() != 1) || + (aStep->GetTrack()->GetParentID() != 0)) ) + || + (((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName()) == "e+") && + ((aStep->GetTrack()->GetTrackID() != 1) || + (aStep->GetTrack()->GetParentID() != 0)) ) + ) + runaction->Fillvertexz(aStep->GetTrack()->GetVertexPosition().x()); + + if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") + { + if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName()) == "e-") && + ((aStep->GetTrack()->GetTrackID() != 1) || + (aStep->GetTrack()->GetParentID() != 0)) ) + { + eventaction->AddCharged() ; + eventaction->AddE() ; + Tsec = aStep->GetTrack()->GetKineticEnergy() ; // !!!!!!!!!!!! + Tsec += aStep->GetTotalEnergyDeposit() ; // !!!!!!!!!!!! + runaction->FillTsec(Tsec) ; + } + else + if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName()) == "e+") && + ((aStep->GetTrack()->GetTrackID() != 1) || + (aStep->GetTrack()->GetParentID() != 0)) ) + { + eventaction->AddCharged() ; + eventaction->AddP() ; + Tsec = aStep->GetTrack()->GetKineticEnergy() ; // !!!!!!!!!!!! + Tsec += aStep->GetTotalEnergyDeposit() ; // !!!!!!!!!!!! + runaction->FillTsec(Tsec) ; + } + else + if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName()) == "gamma") && + ((aStep->GetTrack()->GetTrackID() != 1) || + (aStep->GetTrack()->GetParentID() != 0)) ) + { + eventaction->AddNeutral() ; + } + } + } + + if(aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") + { + if(((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName()) == "e-") + || + ((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName()) == "e+")) + eventaction->CountStepsCharged() ; + + if ((aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName()) == "gamma") + eventaction->CountStepsNeutral() ; + } + + if ( + (((aStep->GetTrack()->GetTrackID() == 1) && + (aStep->GetTrack()->GetParentID()== 0)) || + (aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName() == + Em10PrimaryGeneratorAction::GetPrimaryName())) + && + (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") + && + (aStep->GetTrack()->GetNextVolume()->GetName()=="World") && + (aStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName() == "Transportation") && + (aStep->GetTrack()->GetMomentumDirection().x()>0.) + ) + { + eventaction->SetTr(); + Theta = acos(aStep->GetTrack()->GetMomentumDirection().x()) ; + runaction->FillTh(Theta) ; + Ttrans = aStep->GetTrack()->GetKineticEnergy() ; + runaction->FillTt(Ttrans) ; + yend= aStep->GetTrack()->GetPosition().y() ; + zend= aStep->GetTrack()->GetPosition().z() ; + rend = sqrt(yend*yend+zend*zend) ; + runaction->FillR(rend); + } + + if ( + (((aStep->GetTrack()->GetTrackID() == 1) && + (aStep->GetTrack()->GetParentID()== 0)) || + (aStep->GetTrack()->GetDynamicParticle()->GetDefinition()-> + GetParticleName() == + Em10PrimaryGeneratorAction::GetPrimaryName())) + && + (aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") && + (aStep->GetTrack()->GetNextVolume()->GetName()=="World") && + (aStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName() == "Transportation") && + (aStep->GetTrack()->GetMomentumDirection().z()<0.) + ) + { + eventaction->SetRef(); + Thetaback = acos(aStep->GetTrack()->GetMomentumDirection().x()) ; + Thetaback -= 0.5*pi ; + runaction->FillThBack(Thetaback) ; + Tback = aStep->GetTrack()->GetKineticEnergy() ; + runaction->FillTb(Tback) ; + } + + + if ( + ((aStep->GetPreStepPoint()->GetPhysicalVolume()->GetName()=="Absorber") && + (aStep->GetTrack()->GetNextVolume()->GetName()=="World") && + (aStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName() == "Transportation") && + (aStep->GetTrack()->GetMomentumDirection().x()>0.) && + (aStep->GetTrack()->GetDynamicParticle()->GetDefinition() + ->GetParticleName() == "gamma")) + ) + { + Egamma = aStep->GetTrack()->GetKineticEnergy() ; + runaction->FillGammaSpectrum(Egamma) ; + } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingMessenger.cc b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingMessenger.cc new file mode 100644 index 0000000000..f13ce11f6b --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingMessenger.cc @@ -0,0 +1,60 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10SteppingMessenger.cc,v 1.2 2001/07/11 09:57:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "Em10SteppingMessenger.hh" + +#include "Em10SteppingAction.hh" +#include "G4UIdirectory.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10SteppingMessenger::Em10SteppingMessenger(Em10SteppingAction* SA) +:steppingAction (SA) +{ + steppingDir = new G4UIdirectory("/stepping/"); + steppingDir->SetGuidance("stepping control"); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10SteppingMessenger::~Em10SteppingMessenger() +{ + delete steppingDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10SteppingMessenger::SetNewValue(G4UIcommand* command,G4String newValues) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingVerbose.cc new file mode 100644 index 0000000000..1ee5389802 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10SteppingVerbose.cc @@ -0,0 +1,186 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10SteppingVerbose.cc,v 1.3 2001/11/21 11:57:15 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +//--------------------------------------------------------------- +// +// Em10SteppingVerbose.cc +// +// Description: +// Implementation of the Em10SteppingVerbose class +// Contact: +// Questions and comments to this code should be sent to +// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) +// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) +// +//--------------------------------------------------------------- + +#include "Em10SteppingVerbose.hh" +#include "G4SteppingManager.hh" + +#include "G4UnitsTable.hh" + +//////////////////////////////////////////////// +Em10SteppingVerbose::Em10SteppingVerbose() +//////////////////////////////////////////////// +{ +} + +////////////////////////////////////////////////// +Em10SteppingVerbose::~Em10SteppingVerbose() +////////////////////////////////////////////////// +{ +} + +///////////////////////////////////////// +void Em10SteppingVerbose::StepInfo() +///////////////////////////////////////// +{ + CopyState(); + + G4int prec = G4cout.precision(3); + + if( verboseLevel >= 1 ){ + if( verboseLevel >= 4 ) VerboseTrack(); + if( verboseLevel >= 3 ){ + G4cout << G4endl; + G4cout << G4std::setw( 5) << "#Step#" << " " + << G4std::setw( 6) << "X" << " " + << G4std::setw( 6) << "Y" << " " + << G4std::setw( 6) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 9) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "NextVolu" + << G4std::setw(10) << "Process" << G4endl; + } + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + // if( fStepStatus != fWorldBoundary){ + if( fTrack->GetNextVolume() != 0 ) { + G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName(); + } else { + G4cout << G4std::setw(10) << "OutOfWorld"; + } + + if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ + G4cout << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName(); + } else { + G4cout << "User Limit"; + } + + G4cout << G4endl; + + if( verboseLevel == 2 ){ + G4int tN2ndariesTot = fN2ndariesAtRestDoIt + + fN2ndariesAlongStepDoIt + + fN2ndariesPostStepDoIt; + if(tN2ndariesTot>0){ + G4cout << " :----- List of 2ndaries - " + << "#SpawnInStep=" << G4std::setw(3) << tN2ndariesTot + << "(Rest=" << G4std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt + << "), " + << "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).size() + << " ---------------" + << G4endl; + + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; + lp1<(*fSecondary).size(); lp1++){ + G4cout << " : " + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") + << G4std::setw(10) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName(); + G4cout << G4endl; + } + + G4cout << " :-----------------------------" + << "----------------------------------" + << "-- EndOf2ndaries Info ---------------" + << G4endl; + } + } + + } + G4cout.precision(prec); +} + +//////////////////////////////////////////////// +void Em10SteppingVerbose::TrackingStarted() +//////////////////////////////////////////////// +{ + + CopyState(); +G4int prec = G4cout.precision(3); + if( verboseLevel > 0 ){ + + G4cout << G4std::setw( 5) << "Step#" << " " + << G4std::setw( 6) << "X" << " " + << G4std::setw( 6) << "Y" << " " + << G4std::setw( 6) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 9) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "NextVolu" + << G4std::setw(10) << "Process" << G4endl; + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if(fTrack->GetNextVolume()){ + G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName() << " "; + } else { + G4cout << G4std::setw(10) << "OutOfWorld" << " "; + } + G4cout << G4std::setw(10) << "initStep" << G4endl; + } + G4cout.precision(prec); +} diff --git a/examples/extended/electromagnetic/TestEm10/src/Em10VisManager.cc b/examples/extended/electromagnetic/TestEm10/src/Em10VisManager.cc new file mode 100644 index 0000000000..e4d8bd3ef1 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm10/src/Em10VisManager.cc @@ -0,0 +1,153 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: Em10VisManager.cc,v 1.3 2001/12/12 15:22:30 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 24th January 1998. + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifdef G4VIS_USE + +#include "Em10VisManager.hh" + +// Supported drivers... + +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN +#include "G4FukuiRenderer.hh" +#endif + +#ifdef G4VIS_USE_OPACS +#include "G4Wo.hh" +#include "G4Xo.hh" +#endif + +#ifdef G4VIS_USE_OPENGLX +#include "G4OpenGLImmediateX.hh" +#include "G4OpenGLStoredX.hh" +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 +#include "G4OpenGLImmediateWin32.hh" +#include "G4OpenGLStoredWin32.hh" +#endif + +#ifdef G4VIS_USE_OPENGLXM +#include "G4OpenGLImmediateXm.hh" +#include "G4OpenGLStoredXm.hh" +#endif + +#ifdef G4VIS_USE_OIX +#include "G4OpenInventorX.hh" +#endif + +#ifdef G4VIS_USE_OIWIN32 +#include "G4OpenInventorWin32.hh" +#endif + +#ifdef G4VIS_USE_VRML +#include "G4VRML1.hh" +#include "G4VRML2.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +Em10VisManager::Em10VisManager () {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void Em10VisManager::RegisterGraphicsSystems () { + + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN + RegisterGraphicsSystem (new G4FukuiRenderer); +#endif + +#ifdef G4VIS_USE_OPACS + RegisterGraphicsSystem (new G4Wo); + RegisterGraphicsSystem (new G4Xo); +#endif + +#ifdef G4VIS_USE_OPENGLX + RegisterGraphicsSystem (new G4OpenGLImmediateX); + RegisterGraphicsSystem (new G4OpenGLStoredX); +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 + RegisterGraphicsSystem (new G4OpenGLImmediateWin32); + RegisterGraphicsSystem (new G4OpenGLStoredWin32); +#endif + +#ifdef G4VIS_USE_OPENGLXM + RegisterGraphicsSystem (new G4OpenGLImmediateXm); + RegisterGraphicsSystem (new G4OpenGLStoredXm); +#endif + +#ifdef G4VIS_USE_OIX + RegisterGraphicsSystem (new G4OpenInventorX); +#endif + +#ifdef G4VIS_USE_OIWIN32 + RegisterGraphicsSystem (new G4OpenInventorWin32); +#endif + +#ifdef G4VIS_USE_VRML + RegisterGraphicsSystem (new G4VRML1); + RegisterGraphicsSystem (new G4VRML2); +#endif + + if (fVerbose > 0) { + G4cout << + "\nYou have successfully chosen to use the following graphics systems." + << G4endl; + PrintAvailableGraphicsSystems (); + } +} + +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm2/GNUmakefile b/examples/extended/electromagnetic/TestEm2/GNUmakefile index 44da9c381c..0b95e4316f 100644 --- a/examples/extended/electromagnetic/TestEm2/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm2/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.5 2001/02/21 12:15:45 maire Exp $ +# $Id: GNUmakefile,v 1.6 2001/10/25 15:12:05 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -25,3 +25,7 @@ else endif include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* diff --git a/examples/extended/electromagnetic/TestEm2/History b/examples/extended/electromagnetic/TestEm2/History index 7b3bfc6896..d47a440974 100644 --- a/examples/extended/electromagnetic/TestEm2/History +++ b/examples/extended/electromagnetic/TestEm2/History @@ -1,4 +1,4 @@ -$Id: History,v 1.11 2001/03/27 08:58:14 maire Exp $ +$Id: History,v 1.17 2001/12/11 17:42:24 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,26 +14,51 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +11-12-01 gcosmo (testem2-V03-02-04) +- SteppingAction: added check on history depth also for rings! + +06-12-01 gcosmo (testem2-V03-02-03) +- SteppingAction: correctly determine replica number. +- Set run verbosity to 1 in input script. +28-11-01 mma (testem2-V03-02-02) +- EventAction: DrawTrack "none" +- small change in vis.mac and DetectorConstruction.cc +- suppression of the rndm commands, now managed by G4RunManager: + --> RunAction, EventAction. suppression of RunActionMessenger + +31-10-01 mma (testem2-V03-02-01) +- invert run/initialize and calor/update in all runXX.mac (and TestEm2.in) + +25-10-01 mma (testem2-V03-02-00) +- mods in TestEm2.cc: the initialisation and vis initialisation are + not done by default. --> inserted /run/initialize in all macros. +- To get visualisation: > /control/execute vis.mac +- 80 columns everywhere. + +19-10-01 Steve O'Neale (examples-V03-02-00) +- Update reference output + 27-03-01 mma (testem2-V03-00-05) - - set cppflag G4NOHIST = true in gnumakefile +- set cppflag G4NOHIST = true in gnumakefile 08-03-01 Hisaya (testem2-V03-00-04) - - RunAction adapted for STL +- RunAction adapted for STL 21-02-01 mma (testem2-V03-00-03) - - hbook histograms restored +- hbook histograms restored 20-02-01 mma (testem2-V03-00-02) - - verbose stepping adapted for STL - - save rndm at begin of event +- verbose stepping adapted for STL +- save rndm at begin of event 07-12-00 mma (testem2-V02-00-03 & testem-noHist) - remove hbook histograms: GNUmakefile,runAction +- remove hbook histograms: GNUmakefile,runAction 06-12-00 mma (testem2-V02-00-02 & testem-withHist) - update of init.mac for new vis commands. - G4UItcsh in the main() +- update of init.mac for new vis commands. +- G4UItcsh in the main() 25th November 2000 Steve O'Neale (tagset210) - Update test outputs for min.delta energy cut and cut tabulation diff --git a/examples/extended/electromagnetic/TestEm2/README b/examples/extended/electromagnetic/TestEm2/README index 751b913bc8..7bbfc31c81 100644 --- a/examples/extended/electromagnetic/TestEm2/README +++ b/examples/extended/electromagnetic/TestEm2/README @@ -1,4 +1,4 @@ -$Id: README,v 1.4 2001/03/30 12:40:42 gcosmo Exp $ +$Id: README,v 1.5 2001/10/25 15:12:05 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -45,9 +45,9 @@ $Id: README,v 1.4 2001/03/30 12:40:42 gcosmo Exp $ 3- VISUALIZATION The Visualization Manager is set in the main(). - The initialisation of the drawing is done via the command - /vis~/create_view in the macro init.mac. This macro is - automatically read from the main in case of interactive running mode. + The initialisation of the drawing is done via the commands + /vis/.. in the macro vis.mac. In interactive session: + PreInit or Idle > /control/execute vis.mac The detector has a default view which is a longitudinal view of the cylinder. diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.cc b/examples/extended/electromagnetic/TestEm2/TestEm2.cc index 0bae1315dc..188d7072e0 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.cc +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: TestEm2.cc,v 1.4.4.1 2001/06/28 19:06:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: TestEm2.cc,v 1.6 2001/10/25 15:12:05 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4RunManager.hh" #include "G4UImanager.hh" @@ -46,7 +46,7 @@ #include "Em2SteppingAction.hh" #include "Em2SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int main(int argc,char** argv) { @@ -78,11 +78,8 @@ int main(int argc,char** argv) { runManager->SetUserAction(RunAct); runManager->SetUserAction(new Em2EventAction (RunAct)); runManager->SetUserAction(new Em2TrackingAction(RunAct)); - runManager->SetUserAction(new Em2SteppingAction(detector,RunAct)); + runManager->SetUserAction(new Em2SteppingAction(detector,RunAct)); - //Initialize G4 kernel - runManager->Initialize(); - // get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); @@ -94,7 +91,6 @@ int main(int argc,char** argv) { #else session = new G4UIterminal(); #endif - UI->ApplyCommand("/control/execute init.mac"); session->SessionStart(); delete session; } @@ -114,5 +110,5 @@ int main(int argc,char** argv) { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.in b/examples/extended/electromagnetic/TestEm2/TestEm2.in index be7eee4662..c2746a6688 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.in +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.in @@ -1,4 +1,4 @@ -# $Id: TestEm2.in,v 1.2 2000/06/20 12:58:06 maire Exp $ +# $Id: TestEm2.in,v 1.4 2001/12/06 18:19:25 gcosmo Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -10,16 +10,15 @@ # /control/verbose 2 # +/run/particle/setCut 5.0 mm +/run/initialize +# /calor/setMat Water /calor/setLbin 9 1.11 /calor/setRbin 6 0.111 /calor/update # -/run/particle/setCut 5.0 mm -/run/initialize -# -/run/verbose 2 -/event/drawTracks none +/run/verbose 1 /event/printModulo 20 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.out b/examples/extended/electromagnetic/TestEm2/TestEm2.out index 91fb3f0bb3..ad28a0b25c 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.out +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.out @@ -1,8 +1,24 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) +# +/run/particle/setCut 5.0 mm +/run/initialize ***** Table : Nb of materials = 9 ***** @@ -40,100 +56,7 @@ ---> Element: Lead Pb Z = 82.0 N = 207.2 A = 207.19 g/mole fractionMass: 100.00 % Abundance 100.00 % -Absorber is 18 cm of PbWO4 -Em2PhysicsList::SetCuts:CutLength : 1 mm - -phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z - Sandia crossSection below 50 KeV - PhysicsTables from 50 keV to 50 MeV in 100 bins. - -compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. - -conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. - e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. - -eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. - Good description from 1 KeV to 100 GeV. - log scale extrapolation above 100 GeV - Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. - -annihil: Total cross section from Heilter formula (annihilation into 2 photons). - gamma energies sampled according Heitler - PhysicsTables from 10 keV to 10 TeV in 100 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -hIoni: Knock-on electron cross sections . - Good description above the mean excitation energy. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. - -MuBrems: theoretical cross section - Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. - -MuPairProd: theoretical cross sections - Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. -============= The cut Energy ============================== - gamma e- -Cut in range 1 mm 1 mm -Cut in energy - Air 990 eV 990 eV - Water 2.9 keV 347 keV - lAr 6.18 keV 343 keV - Al 6.89 keV 597 keV - Fe 20.8 keV 1.28 MeV - BGO 77.7 keV 1.03 MeV - PbWO4 84.8 keV 1.13 MeV - Tungsten 105 keV 2.31 MeV - Lead 101 keV 1.38 MeV -=================================================== -# $Id: TestEm2.out,v 1.17 2001/04/26 12:33:31 stesting Exp $ -# -# Macro file for "TestEm2.cc" -# (can be run in batch, without graphic) -# -# H2O L = 9.97 radl R = 0.665 radl; electron 1 GeV -# -# Experimental results: Electron-induced cascade showers -# J&H Crannel - Phys. Rev. 184-2 - August69 -# -# -/calor/setMat Water -/calor/setLbin 9 1.11 -/calor/setRbin 6 0.111 -/calor/update -Absorber is 3.6 m of Water -# -/run/particle/setCut 5.0 mm -/run/initialize +Absorber is 17.848 cm of PbWO4 Em2PhysicsList::SetCuts:CutLength : 5 mm phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z @@ -141,62 +64,71 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. Good description from 1 KeV to 100 GeV. log scale extrapolation above 100 GeV Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. hIoni: Knock-on electron cross sections . Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuPairProd: theoretical cross sections Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- -Cut in range 5 mm 5 mm +Cut in range + Air 5 mm 5 mm + Water 5 mm 5 mm + lAr 5 mm 5 mm + Al 5 mm 5 mm + Fe 5 mm 5 mm + BGO 5 mm 5 mm + PbWO4 5 mm 5 mm + Tungsten 5 mm 5 mm + Lead 5 mm 5 mm Cut in energy Air 990 eV 3.24 keV Water 5.78 keV 1.16 MeV @@ -209,8 +141,13 @@ Cut in energy Lead 204 keV 6.83 MeV =================================================== # -/run/verbose 2 -/event/drawTracks none +/calor/setMat Water +/calor/setLbin 9 1.11 +/calor/setRbin 6 0.111 +/calor/update +Absorber is 3.60564 m of Water +# +/run/verbose 1 /event/printModulo 20 # /gun/particle e- @@ -222,7 +159,6 @@ Cut in energy Initial seed (index) = 0 Current couple of seeds = 9876, 54321 ---------------------------------------- -Start closing geometry. Start Run processing. ---> Begin of Event: 0 @@ -237,20 +173,20 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=62s Real=67s Sys=5.2s + User=37.72s Real=47.63s Sys=8.41s LATERAL PROFILE CUMULATIVE LATERAL PROFILE bin Mean rms bin Mean rms - 0.00-> 1.11 radl: 12.89% 4.71% 0-> 1.11 radl: 12.89% 4.71% - 1.11-> 2.22 radl: 22.83% 9.74% 0-> 2.22 radl: 35.73% 11.99% - 2.22-> 3.33 radl: 22.34% 10.32% 0-> 3.33 radl: 58.06% 17.37% - 3.33-> 4.44 radl: 15.76% 8.11% 0-> 4.44 radl: 73.82% 15.23% - 4.44-> 5.55 radl: 10.06% 7.82% 0-> 5.55 radl: 83.88% 12.67% - 5.55-> 6.66 radl: 4.37% 4.93% 0-> 6.66 radl: 88.25% 10.48% - 6.66-> 7.77 radl: 2.99% 4.84% 0-> 7.77 radl: 91.24% 8.60% - 7.77-> 8.88 radl: 1.38% 2.29% 0-> 8.88 radl: 92.62% 8.13% - 8.88-> 9.99 radl: 0.96% 2.13% 0-> 9.99 radl: 93.58% 7.14% + 0.00-> 1.11 radl: 18.73% 6.89% 0-> 1.11 radl: 18.73% 6.89% + 1.11-> 2.22 radl: 25.86% 10.89% 0-> 2.22 radl: 44.59% 14.75% + 2.22-> 3.33 radl: 21.63% 8.64% 0-> 3.33 radl: 66.22% 15.88% + 3.33-> 4.44 radl: 13.21% 8.38% 0-> 4.44 radl: 79.43% 12.32% + 4.44-> 5.55 radl: 8.11% 6.45% 0-> 5.55 radl: 87.55% 9.59% + 5.55-> 6.66 radl: 3.81% 4.04% 0-> 6.66 radl: 91.36% 8.37% + 6.66-> 7.77 radl: 2.14% 3.05% 0-> 7.77 radl: 93.49% 7.34% + 7.77-> 8.88 radl: 0.82% 1.67% 0-> 8.88 radl: 94.32% 6.46% + 8.88-> 9.99 radl: 0.60% 1.51% 0-> 9.99 radl: 94.92% 5.76% @@ -258,31 +194,22 @@ Run Summary bin Mean rms bin Mean rms - 0.00-> 0.11 radl: 64.16% 10.45% 0-> 0.11 radl: 64.16% 10.45% - 0.11-> 0.22 radl: 16.51% 6.50% 0-> 0.22 radl: 80.67% 9.46% - 0.22-> 0.33 radl: 6.57% 5.05% 0-> 0.33 radl: 87.24% 8.33% - 0.33-> 0.44 radl: 3.22% 2.65% 0-> 0.44 radl: 90.46% 7.47% - 0.44-> 0.56 radl: 1.91% 1.62% 0-> 0.56 radl: 92.36% 7.25% - 0.56-> 0.67 radl: 1.22% 1.38% 0-> 0.67 radl: 93.58% 7.14% + 0.00-> 0.11 radl: 69.85% 10.68% 0-> 0.11 radl: 69.85% 10.68% + 0.11-> 0.22 radl: 15.02% 6.67% 0-> 0.22 radl: 84.87% 8.03% + 0.22-> 0.33 radl: 5.39% 4.26% 0-> 0.33 radl: 90.26% 6.67% + 0.33-> 0.44 radl: 2.44% 1.97% 0-> 0.44 radl: 92.70% 5.97% + 0.44-> 0.56 radl: 1.34% 1.20% 0-> 0.56 radl: 94.04% 5.85% + 0.56-> 0.67 radl: 0.87% 0.76% 0-> 0.67 radl: 94.92% 5.76% SUMMARY - energy deposit : 93.58 % E0 +- 7.14 % E0 - charged traklen: 13.38 radl +- 1.03 radl - neutral traklen: 197.32 radl +- 21.81 radl + energy deposit : 94.92 % E0 +- 5.76 % E0 + charged traklen: 13.88 radl +- 0.85 radl + neutral traklen: 201.27 radl +- 19.31 radl --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1440604435, 866484929 + Current couple of seeds = 1086208127, 994034357 ---------------------------------------- - - +Graphics systems deleted. +Visualization Manager deleting... G4 kernel has come to Quit state. -Deletion of G4 kernel class start. -UserDetectorConstruction deleted. -UserPhysicsList deleted. -UserRunAction deleted. -UserPrimaryGenerator deleted. -EventManager deleted. -UImanager deleted. -StateManager deleted. -RunManager is deleting. diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2DetectorConstruction.hh index eb7c4611d7..5da50c2dde 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2DetectorConstruction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2DetectorConstruction.hh,v 1.2.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2DetectorConstruction.hh,v 1.4 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2DetectorConstruction_h #define Em2DetectorConstruction_h 1 @@ -43,7 +43,7 @@ class G4LogicalVolume; class G4UniformMagField; class Em2DetectorMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2DetectorConstruction : public G4VUserDetectorConstruction { @@ -99,7 +99,7 @@ class Em2DetectorConstruction : public G4VUserDetectorConstruction G4LogicalVolume* logicRing; //pointer to the logical R-slide G4VPhysicalVolume* physiRing; //pointer to the physical R-slide - Em2DetectorMessenger* detectorMessenger; //pointer to the Messenger object + Em2DetectorMessenger* detectorMessenger; //pointer to the Messenger private: @@ -107,7 +107,7 @@ class Em2DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* ConstructVolumes(); }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/Em2DetectorMessenger.hh index 856b80d3c7..9a53b3cb13 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2DetectorMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2DetectorMessenger.hh,v 1.2.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2DetectorMessenger.hh,v 1.4 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2DetectorMessenger_h #define Em2DetectorMessenger_h 1 @@ -42,7 +42,7 @@ class G4UIcmdWith3Vector; class G4UIcmdWithADoubleAndUnit; class G4UIcmdWithoutParameter; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2DetectorMessenger: public G4UImessenger { @@ -63,5 +63,7 @@ class Em2DetectorMessenger: public G4UImessenger G4UIcmdWithoutParameter* UpdateCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2EventAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2EventAction.hh index d299fb92b3..2cf5777671 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2EventAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2EventAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2EventAction.hh,v 1.2.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2EventAction.hh,v 1.4 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2EventAction_h #define Em2EventAction_h 1 @@ -40,7 +40,7 @@ class Em2EventActionMessenger; class G4Event; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2EventAction : public G4UserEventAction { @@ -63,6 +63,8 @@ class Em2EventAction : public G4UserEventAction Em2EventActionMessenger* eventMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/Em2EventActionMessenger.hh index 0caf54d3d8..fed168ccfc 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2EventActionMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2EventActionMessenger.hh,v 1.2.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2EventActionMessenger.hh,v 1.4 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2EventActionMessenger_h #define Em2EventActionMessenger_h 1 @@ -39,7 +39,7 @@ class Em2EventAction; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2EventActionMessenger: public G4UImessenger { @@ -55,4 +55,6 @@ class Em2EventActionMessenger: public G4UImessenger G4UIcmdWithAnInteger* PrintCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsList.hh b/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsList.hh index f5ecdcf776..5247e86ce2 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsList.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2PhysicsList.hh,v 1.3.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2PhysicsList.hh,v 1.5 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2PhysicsList_h #define Em2PhysicsList_h 1 @@ -37,7 +37,7 @@ class Em2PhysicsListMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2PhysicsList: public G4VUserPhysicsList { @@ -74,5 +74,7 @@ class Em2PhysicsList: public G4VUserPhysicsList Em2PhysicsListMessenger* pMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsListMessenger.hh index a679dcd3ae..0ff8b99f9a 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2PhysicsListMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2PhysicsListMessenger.hh,v 1.1.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2PhysicsListMessenger.hh,v 1.3 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2PhysicsListMessenger_h #define Em2PhysicsListMessenger_h 1 @@ -38,7 +38,7 @@ class Em2PhysicsList; class G4UIcmdWithADoubleAndUnit; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2PhysicsListMessenger: public G4UImessenger { @@ -58,5 +58,7 @@ class Em2PhysicsListMessenger: public G4UImessenger G4UIcmdWithADoubleAndUnit* protoCutCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2PrimaryGeneratorAction.hh index b498952908..3d6b4fa0f8 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2PrimaryGeneratorAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2PrimaryGeneratorAction.hh,v 1.2.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2PrimaryGeneratorAction.hh,v 1.4 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2PrimaryGeneratorAction_h #define Em2PrimaryGeneratorAction_h 1 @@ -39,8 +39,7 @@ class G4Event; class Em2DetectorConstruction; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { @@ -57,6 +56,8 @@ class Em2PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction Em2DetectorConstruction* Em2Detector; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2RunAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2RunAction.hh index e34f946ce1..598f785a68 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2RunAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2RunAction.hh @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: Em2RunAction.hh,v 1.7.2.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2RunAction.hh,v 1.10 2001/11/28 18:57:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 08.03.01 Hisaya: Adapted MyVector for STL -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2RunAction_h #define Em2RunAction_h 1 @@ -46,11 +46,10 @@ typedef G4std::vector MyVector; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2DetectorConstruction; class Em2PrimaryGeneratorAction; -class Em2RunActionMessenger; class G4Run; @@ -74,10 +73,7 @@ class Em2RunAction : public G4UserRunAction inline void fillPerTrack(G4double,G4double); inline void fillPerStep (G4double,G4int,G4int); inline void particleFlux(G4ParticleDefinition*,G4int); - - void SetRndmFreq(G4int val) {saveRndm = val;} - G4int GetRndmFreq() {return saveRndm;} - + private: void bookHisto(); @@ -113,9 +109,6 @@ class Em2RunAction : public G4UserRunAction G4double NeutrTrLength; G4double sumNeutrTrLength; G4double sum2NeutrTrLength; - - Em2RunActionMessenger* runMessenger; - G4int saveRndm; #ifndef G4NOHIST HepTupleManager* hbookManager; @@ -127,7 +120,7 @@ class Em2RunAction : public G4UserRunAction }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em2RunAction::initializePerEvent() @@ -143,7 +136,7 @@ void Em2RunAction::initializePerEvent() ChargTrLength = NeutrTrLength = 0.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em2RunAction::fillPerTrack(G4double charge, G4double trkLength) @@ -152,7 +145,7 @@ void Em2RunAction::fillPerTrack(G4double charge, G4double trkLength) else NeutrTrLength += trkLength; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em2RunAction::fillPerStep(G4double dEstep, G4int Lbin, G4int Rbin) @@ -160,7 +153,7 @@ void Em2RunAction::fillPerStep(G4double dEstep, G4int Lbin, G4int Rbin) dEdL[Lbin] += dEstep; dEdR[Rbin] += dEstep; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em2RunAction::particleFlux(G4ParticleDefinition* particle, G4int Lplan) @@ -170,6 +163,6 @@ void Em2RunAction::particleFlux(G4ParticleDefinition* particle, G4int Lplan) else if (particle == G4Positron::Positron()) positronFlux[Lplan]++; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2SteppingAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2SteppingAction.hh index da09332f85..89ddf36ebb 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2SteppingAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2SteppingAction.hh,v 1.2.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2SteppingAction.hh,v 1.4 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2SteppingAction_h #define Em2SteppingAction_h 1 @@ -37,7 +37,7 @@ class Em2DetectorConstruction; class Em2RunAction; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2SteppingAction : public G4UserSteppingAction { @@ -52,4 +52,6 @@ class Em2SteppingAction : public G4UserSteppingAction Em2RunAction* Em2Run; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm2/include/Em2SteppingVerbose.hh index f58a83b5b9..759dc2da61 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2SteppingVerbose.hh @@ -21,22 +21,22 @@ // ******************************************************************** // // -// $Id: Em2SteppingVerbose.hh,v 1.5.2.1 2001/06/28 19:06:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2SteppingVerbose.hh,v 1.7 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. // It shows how to extract informations during the tracking of a particle. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2SteppingVerbose_h #define Em2SteppingVerbose_h 1 #include "G4SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2SteppingVerbose : public G4SteppingVerbose { @@ -50,4 +50,6 @@ public: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2TrackingAction.hh b/examples/extended/electromagnetic/TestEm2/include/Em2TrackingAction.hh index 33d4e5e330..dcdeb1ee55 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2TrackingAction.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2TrackingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em2TrackingAction.hh,v 1.2.4.1 2001/06/28 19:06:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2TrackingAction.hh,v 1.4 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -33,7 +33,7 @@ class Em2RunAction; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2TrackingAction : public G4UserTrackingAction { @@ -47,4 +47,6 @@ class Em2TrackingAction : public G4UserTrackingAction { Em2RunAction* Em2Run; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2VisManager.hh b/examples/extended/electromagnetic/TestEm2/include/Em2VisManager.hh index 891478eb00..16a30a5962 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2VisManager.hh +++ b/examples/extended/electromagnetic/TestEm2/include/Em2VisManager.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2VisManager.hh,v 1.2.4.1 2001/06/28 19:06:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2VisManager.hh,v 1.4 2001/10/25 15:12:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Example Visualization Manager implementing virtual function // RegisterGraphicsSystems. Exploits C-pre-processor variables @@ -42,14 +42,14 @@ // G4VisManager* myVisManager = new MyVisManager; // myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em2VisManager_h #define Em2VisManager_h 1 #include "G4VisManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em2VisManager: public G4VisManager { @@ -63,4 +63,6 @@ private: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm2/run01.mac b/examples/extended/electromagnetic/TestEm2/run01.mac index 09bc2a19ba..42df996e26 100644 --- a/examples/extended/electromagnetic/TestEm2/run01.mac +++ b/examples/extended/electromagnetic/TestEm2/run01.mac @@ -1,4 +1,4 @@ -# $Id: run01.mac,v 1.3 2000/06/20 12:58:06 maire Exp $ +# $Id: run01.mac,v 1.5 2001/10/31 17:34:12 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -8,10 +8,10 @@ /control/verbose 2 # #/run/particle/setCut 1.0 mm -#/run/initialize +#/run/particle/applyCuts +/run/initialize # /run/verbose 2 -/event/drawTracks none /event/printModulo 10 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm2/run02.mac b/examples/extended/electromagnetic/TestEm2/run02.mac index 2cbc101ba3..838c1fc7c5 100644 --- a/examples/extended/electromagnetic/TestEm2/run02.mac +++ b/examples/extended/electromagnetic/TestEm2/run02.mac @@ -1,4 +1,4 @@ -# $Id: run02.mac,v 1.3 2000/06/20 12:58:06 maire Exp $ +# $Id: run02.mac,v 1.4 2001/10/31 17:34:12 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -10,16 +10,15 @@ # /control/verbose 2 # +/run/particle/setCut 2.0 mm +/run/initialize +# /calor/setMat Al /calor/setLbin 12 1.1245 /calor/setRbin 12 0.11245 /calor/update # -/run/particle/setCut 2.0 mm -/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 10 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm2/run03.mac b/examples/extended/electromagnetic/TestEm2/run03.mac index 51fdf94664..132f494aba 100644 --- a/examples/extended/electromagnetic/TestEm2/run03.mac +++ b/examples/extended/electromagnetic/TestEm2/run03.mac @@ -1,4 +1,4 @@ -# $Id: run03.mac,v 1.3 2000/06/20 12:58:06 maire Exp $ +# $Id: run03.mac,v 1.5 2001/10/31 17:34:12 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -10,16 +10,15 @@ # /control/verbose 2 # +/run/particle/setCut 5.0 mm +/run/initialize +# /calor/setMat Water /calor/setLbin 9 1.11 /calor/setRbin 6 0.111 /calor/update # -/run/particle/setCut 5.0 mm -/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 10 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm2/run04.mac b/examples/extended/electromagnetic/TestEm2/run04.mac index 323db3c2e8..e27df86f48 100644 --- a/examples/extended/electromagnetic/TestEm2/run04.mac +++ b/examples/extended/electromagnetic/TestEm2/run04.mac @@ -1,4 +1,4 @@ -# $Id: run04.mac,v 1.3 2000/06/20 12:58:06 maire Exp $ +# $Id: run04.mac,v 1.4 2001/10/31 17:34:12 maire Exp $ # # Macro file for "TestEm2.cc" # (can be run in batch, without graphic) @@ -9,16 +9,15 @@ # /control/verbose 2 # +/run/particle/setCut 0.8 mm +/run/initialize +# /calor/setMat Fe /calor/setLbin 40 0.5 /calor/setRbin 20 0.25 /calor/update # -/run/particle/setCut 0.8 mm -/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 10 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc index 62f293a874..815f720906 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2DetectorConstruction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2DetectorConstruction.cc,v 1.4.4.1 2001/06/28 19:06:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2DetectorConstruction.cc,v 1.7 2001/11/28 18:57:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2DetectorConstruction.hh" #include "Em2DetectorMessenger.hh" @@ -48,25 +48,25 @@ #include "G4UnitsTable.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2DetectorConstruction::Em2DetectorConstruction() -:solidEcal(NULL) ,logicEcal(NULL) ,physiEcal(NULL), - solidSlice(NULL),logicSlice(NULL),physiSlice(NULL), - solidRing(NULL) ,logicRing(NULL) ,physiRing(NULL), - myMaterial(NULL),magField(NULL) , - nLtot(20),dLradl(1.),nRtot(20),dRradl(0.25), - EcalLength(0.),EcalRadius(0.) +:nLtot(20),nRtot(20),dLradl(1.),dRradl(0.25), + myMaterial(0),magField(0) , + EcalLength(0.),EcalRadius(0.) , + solidEcal(0) ,logicEcal(0) ,physiEcal(0), + solidSlice(0),logicSlice(0),physiSlice(0), + solidRing(0) ,logicRing(0) ,physiRing(0) { detectorMessenger = new Em2DetectorMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2DetectorConstruction::~Em2DetectorConstruction() { delete detectorMessenger;} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em2DetectorConstruction::Construct() { @@ -74,7 +74,7 @@ G4VPhysicalVolume* Em2DetectorConstruction::Construct() return ConstructVolumes(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2DetectorConstruction::DefineMaterials() { @@ -169,7 +169,7 @@ void Em2DetectorConstruction::DefineMaterials() myMaterial = PbWO; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em2DetectorConstruction::ConstructVolumes() { @@ -198,6 +198,7 @@ G4VPhysicalVolume* Em2DetectorConstruction::ConstructVolumes() // Slice solidSlice = new G4Tubs("Slice",i*dR,(i+1)*dR,0.5*dL,0.,360*deg); logicSlice = new G4LogicalVolume(solidSlice,myMaterial,"Slice",0,0,0); + logicSlice-> SetVisAttributes(G4VisAttributes::Invisible); if (nLtot >1) physiSlice = new G4PVReplica("Slice",logicSlice,physiRing, kZAxis,nLtot,dL); @@ -221,7 +222,7 @@ G4VPhysicalVolume* Em2DetectorConstruction::ConstructVolumes() return physiEcal; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2DetectorConstruction::SetMaterial(G4String materialChoice) { @@ -233,21 +234,21 @@ void Em2DetectorConstruction::SetMaterial(G4String materialChoice) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2DetectorConstruction::SetLBining(G4ThreeVector Value) { nLtot = (G4int)Value(0); dLradl = Value(1); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2DetectorConstruction::SetRBining(G4ThreeVector Value) { nRtot = (G4int)Value(0); dRradl = Value(1); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2DetectorConstruction::SetMagField(G4double fieldValue) { @@ -262,16 +263,16 @@ void Em2DetectorConstruction::SetMagField(G4double fieldValue) fieldMgr->SetDetectorField(magField); fieldMgr->CreateChordFinder(magField); } else { - magField = NULL; + magField = 0; fieldMgr->SetDetectorField(magField); } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2DetectorConstruction::UpdateGeometry() { G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes()); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/Em2DetectorMessenger.cc index b0c07ab0bc..8428660438 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2DetectorMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2DetectorMessenger.cc,v 1.2.4.1 2001/06/28 19:06:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2DetectorMessenger.cc,v 1.5 2001/10/31 17:34:13 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2DetectorMessenger.hh" @@ -38,7 +38,7 @@ #include "G4UIcmdWithADoubleAndUnit.hh" #include "G4UIcmdWithoutParameter.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2DetectorMessenger::Em2DetectorMessenger(Em2DetectorConstruction * Det) :Em2Detector(Det) @@ -49,7 +49,7 @@ Em2DetectorMessenger::Em2DetectorMessenger(Em2DetectorConstruction * Det) MaterCmd = new G4UIcmdWithAString("/calor/setMat",this); MaterCmd->SetGuidance("Select Material."); MaterCmd->SetParameterName("material",false); - MaterCmd->AvailableForStates(PreInit,Idle); + MaterCmd->AvailableForStates(Idle); LBinCmd = new G4UIcmdWith3Vector("/calor/setLbin",this); LBinCmd->SetGuidance("set longitudinal bining"); @@ -70,7 +70,7 @@ Em2DetectorMessenger::Em2DetectorMessenger(Em2DetectorConstruction * Det) FieldCmd->SetGuidance("Magnetic field will be in Z direction."); FieldCmd->SetParameterName("Bz",false); FieldCmd->SetUnitCategory("Magnetic flux density"); - FieldCmd->AvailableForStates(PreInit,Idle); + FieldCmd->AvailableForStates(Idle); UpdateCmd = new G4UIcmdWithoutParameter("/calor/update",this); UpdateCmd->SetGuidance("Update geometry."); @@ -79,7 +79,7 @@ Em2DetectorMessenger::Em2DetectorMessenger(Em2DetectorConstruction * Det) UpdateCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2DetectorMessenger::~Em2DetectorMessenger() { @@ -91,7 +91,7 @@ Em2DetectorMessenger::~Em2DetectorMessenger() delete Em2detDir; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { @@ -111,4 +111,4 @@ void Em2DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { Em2Detector->UpdateGeometry();} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2EventAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2EventAction.cc index 07dc683462..426baa4448 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2EventAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2EventAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2EventAction.cc,v 1.3.2.1 2001/06/28 19:06:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2EventAction.cc,v 1.6 2001/11/28 18:57:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2EventAction.hh" @@ -40,24 +40,23 @@ #include "G4VVisManager.hh" #include "G4ios.hh" #include "G4UnitsTable.hh" -#include "Randomize.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2EventAction::Em2EventAction(Em2RunAction* run) -:Em2Run(run),drawFlag("charged"),printModulo(10000) +:Em2Run(run),drawFlag("none"),printModulo(10000) { eventMessenger = new Em2EventActionMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2EventAction::~Em2EventAction() { delete eventMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2EventAction::BeginOfEventAction(const G4Event* evt) { @@ -66,19 +65,12 @@ void Em2EventAction::BeginOfEventAction(const G4Event* evt) //printing survey if (evtNb%printModulo == 0) G4cout << "\n---> Begin of Event: " << evtNb << G4endl; - - //save rndm status - if (Em2Run->GetRndmFreq() == 2) - { - HepRandom::saveEngineStatus("beginOfEvent.rndm"); - if (evtNb%printModulo == 0) HepRandom::showEngineStatus(); - } - + //additional initializations Em2Run->initializePerEvent(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2EventAction::EndOfEventAction(const G4Event* evt) { @@ -86,11 +78,12 @@ void Em2EventAction::EndOfEventAction(const G4Event* evt) if (G4VVisManager::GetConcreteInstance()) { - G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer(); + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); G4int n_trajectories = 0; if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); for (G4int i=0; iGetTrajectoryContainer()))[i]); + { G4Trajectory* trj = (G4Trajectory *) + ((*(evt->GetTrajectoryContainer()))[i]); if (drawFlag == "all") trj->DrawTrajectory(50); else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) trj->DrawTrajectory(50); @@ -98,6 +91,6 @@ void Em2EventAction::EndOfEventAction(const G4Event* evt) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/Em2EventActionMessenger.cc index 049f001454..73c0ce8698 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2EventActionMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2EventActionMessenger.cc,v 1.2.4.1 2001/06/28 19:06:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2EventActionMessenger.cc,v 1.5 2001/11/28 18:57:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2EventActionMessenger.hh" @@ -36,7 +36,7 @@ #include "G4UIcmdWithAnInteger.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2EventActionMessenger::Em2EventActionMessenger(Em2EventAction* EvAct) :eventAction(EvAct) @@ -45,7 +45,7 @@ Em2EventActionMessenger::Em2EventActionMessenger(Em2EventAction* EvAct) DrawCmd->SetGuidance("Draw the tracks in the event"); DrawCmd->SetGuidance(" Choice : none, charged, all"); DrawCmd->SetParameterName("choice",true); - DrawCmd->SetDefaultValue("charged"); + DrawCmd->SetDefaultValue("all"); DrawCmd->SetCandidates("none charged all"); DrawCmd->AvailableForStates(Idle); @@ -56,7 +56,7 @@ Em2EventActionMessenger::Em2EventActionMessenger(Em2EventAction* EvAct) PrintCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2EventActionMessenger::~Em2EventActionMessenger() { @@ -64,9 +64,10 @@ Em2EventActionMessenger::~Em2EventActionMessenger() delete PrintCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em2EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void Em2EventActionMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if(command == DrawCmd) {eventAction->SetDrawFlag(newValue);} @@ -76,4 +77,4 @@ void Em2EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValu } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsList.cc b/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsList.cc index 4b0266c7b8..98d188d7a7 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsList.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2PhysicsList.cc,v 1.5.4.1 2001/06/28 19:06:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2PhysicsList.cc,v 1.7 2001/10/25 15:12:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2PhysicsList.hh" #include "Em2PhysicsListMessenger.hh" @@ -40,7 +40,7 @@ #include "G4Material.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2PhysicsList::Em2PhysicsList() : G4VUserPhysicsList() @@ -55,12 +55,12 @@ Em2PhysicsList::Em2PhysicsList() SetVerboseLevel(1); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2PhysicsList::~Em2PhysicsList() {delete pMessenger;} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::ConstructParticle() { @@ -75,7 +75,7 @@ void Em2PhysicsList::ConstructParticle() ConstructBarions(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::ConstructBosons() { @@ -89,7 +89,7 @@ void Em2PhysicsList::ConstructBosons() // optical photon G4OpticalPhoton::OpticalPhotonDefinition(); } - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::ConstructLeptons() { @@ -104,7 +104,7 @@ void Em2PhysicsList::ConstructLeptons() G4NeutrinoMu::NeutrinoMuDefinition(); G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::ConstructMesons() { @@ -122,7 +122,7 @@ void Em2PhysicsList::ConstructMesons() G4KaonZeroShort::KaonZeroShortDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::ConstructBarions() { @@ -134,7 +134,7 @@ void Em2PhysicsList::ConstructBarions() } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::ConstructProcess() { @@ -143,7 +143,7 @@ void Em2PhysicsList::ConstructProcess() ConstructGeneral(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" @@ -161,7 +161,7 @@ void Em2PhysicsList::ConstructProcess() #include "G4hIonisation.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::ConstructEM() { @@ -208,7 +208,7 @@ void Em2PhysicsList::ConstructEM() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4Decay.hh" @@ -228,7 +228,7 @@ void Em2PhysicsList::ConstructGeneral() } } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::SetCuts() { @@ -262,7 +262,7 @@ void Em2PhysicsList::SetCuts() if (verboseLevel>0) DumpCutValuesTable(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PhysicsList::SetCutForGamma(G4double cut) { @@ -282,5 +282,5 @@ void Em2PhysicsList::SetCutForProton(G4double cut) cutForProton = cut; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsListMessenger.cc index 92f17918a4..143ac77e8b 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2PhysicsListMessenger.cc @@ -21,20 +21,20 @@ // ******************************************************************** // // -// $Id: Em2PhysicsListMessenger.cc,v 1.1.4.1 2001/06/28 19:06:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2PhysicsListMessenger.cc,v 1.3 2001/10/25 15:12:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2PhysicsListMessenger.hh" #include "Em2PhysicsList.hh" #include "G4UIcmdWithADoubleAndUnit.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2PhysicsListMessenger::Em2PhysicsListMessenger(Em2PhysicsList* pPhys) :pPhysicsList(pPhys) @@ -61,7 +61,7 @@ Em2PhysicsListMessenger::Em2PhysicsListMessenger(Em2PhysicsList* pPhys) protoCutCmd->AvailableForStates(PreInit,Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2PhysicsListMessenger::~Em2PhysicsListMessenger() { @@ -70,9 +70,10 @@ Em2PhysicsListMessenger::~Em2PhysicsListMessenger() delete protoCutCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em2PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +void Em2PhysicsListMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if( command == gammaCutCmd ) { pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));} @@ -81,7 +82,7 @@ void Em2PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue { pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));} if( command == protoCutCmd ) - { pPhysicsList->SetCutForProton(protoCutCmd->GetNewDoubleValue(newValue));} + { pPhysicsList->SetCutForProton(protoCutCmd->GetNewDoubleValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2PrimaryGeneratorAction.cc index 7e74ccd88b..4f5ed408ed 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2PrimaryGeneratorAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2PrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:06:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2PrimaryGeneratorAction.cc,v 1.4 2001/10/25 15:12:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2PrimaryGeneratorAction.hh" @@ -36,7 +36,7 @@ #include "G4ParticleTable.hh" #include "G4ParticleDefinition.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2PrimaryGeneratorAction::Em2PrimaryGeneratorAction( Em2DetectorConstruction* det) @@ -54,14 +54,14 @@ Em2PrimaryGeneratorAction::Em2PrimaryGeneratorAction( particleGun->SetParticlePosition(G4ThreeVector(0.*cm,0.*cm,position)); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2PrimaryGeneratorAction::~Em2PrimaryGeneratorAction() { delete particleGun; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { @@ -72,5 +72,5 @@ void Em2PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) particleGun->GeneratePrimaryVertex(anEvent); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2RunAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2RunAction.cc index cc6f7eaa33..09db692b0c 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2RunAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2RunAction.cc @@ -21,23 +21,23 @@ // ******************************************************************** // // -// $Id: Em2RunAction.cc,v 1.10.2.1 2001/06/28 19:06:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2RunAction.cc,v 1.13 2001/11/28 18:57:24 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 08.03.01 Hisaya: Adapted MyVector for STL -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2RunAction.hh" #include "Em2DetectorConstruction.hh" #include "Em2PrimaryGeneratorAction.hh" -#include "Em2RunActionMessenger.hh" #include "G4Run.hh" +#include "G4RunManager.hh" #include "G4UImanager.hh" #include "G4VVisManager.hh" #include "G4ios.hh" @@ -52,7 +52,7 @@ #include "CLHEP/Hist/HBookFile.h" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2RunAction::Em2RunAction(Em2DetectorConstruction* det, Em2PrimaryGeneratorAction* kin) @@ -75,9 +75,6 @@ Em2RunAction::Em2RunAction(Em2DetectorConstruction* det, sumERadialCumul.resize(nRbin, 0.0); sumE2Radial.resize(nRbin, 0.0); sumE2RadialCumul.resize(nRbin, 0.0); - - runMessenger = new Em2RunActionMessenger(this); - saveRndm = 1; #ifndef G4NOHIST hbookManager = NULL; @@ -85,15 +82,14 @@ Em2RunAction::Em2RunAction(Em2DetectorConstruction* det, } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2RunAction::~Em2RunAction() { cleanHisto(); - delete runMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2RunAction::bookHisto() { @@ -117,7 +113,7 @@ void Em2RunAction::bookHisto() histo4 = hbookManager->histogram("longit energy profile (% of E inc)", nLbin,0.,nLbin*dLradl); - G4double Zmin=0.5*dLradl, Zmax=Zmin+nLbin*dLradl; + G4double Zmin=0.5*dLradl, Zmax=Zmin+nLbin*dLradl; histo5 = hbookManager->histogram("cumul longit energy dep (% of E inc)", nLbin,Zmin,Zmax); @@ -136,15 +132,15 @@ void Em2RunAction::bookHisto() hist10 = hbookManager->histogram("radial energy profile (% of E inc)", nRbin,0.,nRbin*dRradl); - G4double Rmin=0.5*dRradl, Rmax=Rmin+nRbin*dRradl; + G4double Rmin=0.5*dRradl, Rmax=Rmin+nRbin*dRradl; hist11 = hbookManager->histogram("cumul radial energy dep (% of E inc)", nRbin,Rmin,Rmax); hist12 = hbookManager->histogram("rms on cumul radial Edep (% of E inc)", nRbin,Rmin,Rmax); -#endif +#endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2RunAction::cleanHisto() { @@ -160,18 +156,16 @@ void Em2RunAction::cleanHisto() #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2RunAction::BeginOfRunAction(const G4Run* aRun) { G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("beginOfRun.rndm"); - } - + G4RunManager::GetRunManager()->SetRandomNumberStore(true); + HepRandom::showEngineStatus(); + //reshape arrays if needed // G4bool rebin(false); @@ -218,13 +212,10 @@ void Em2RunAction::BeginOfRunAction(const G4Run* aRun) //drawing // if (G4VVisManager::GetConcreteInstance()) - { - G4UImanager* UI = G4UImanager::GetUIpointer(); - UI->ApplyCommand("/vis/scene/notifyHandlers"); - } + G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers"); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2RunAction::fillPerEvent() { @@ -268,7 +259,7 @@ void Em2RunAction::fillPerEvent() #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2RunAction::EndOfRunAction(const G4Run* aRun) { @@ -281,7 +272,7 @@ void Em2RunAction::EndOfRunAction(const G4Run* aRun) G4double kinEnergy = Em2Kin->GetParticleGun()->GetParticleEnergy(); assert(NbOfEvents*kinEnergy > 0); - G4double mass=Em2Kin->GetParticleGun()->GetParticleDefinition()->GetPDGMass(); + G4double mass=Em2Kin->GetParticleGun()->GetParticleDefinition()->GetPDGMass(); G4double norme = 100./(NbOfEvents*(kinEnergy+mass)); //longitudinal @@ -354,7 +345,7 @@ void Em2RunAction::EndOfRunAction(const G4Run* aRun) G4double MeanNeutrTrLength = norme*sumNeutrTrLength; G4double rmsNeutrTrLength = norme*sqrt(abs(NbOfEvents*sum2NeutrTrLength - - sumNeutrTrLength*sumNeutrTrLength)); + - sumNeutrTrLength*sumNeutrTrLength)); //print // @@ -372,12 +363,13 @@ void Em2RunAction::EndOfRunAction(const G4Run* aRun) { G4double inf=i*dLradl, sup=inf+dLradl; - G4cout << G4std::setw(8) << inf << "->" << G4std::setw(5) << sup << " radl: " - << G4std::setw(7) << MeanELongit[i] << "% " - << G4std::setw(9) << rmsELongit[i] << "% " - << " 0->" << G4std::setw(5) << sup << " radl: " - << G4std::setw(7) << MeanELongitCumul[i] << "% " - << G4std::setw(7) << rmsELongitCumul[i] << "% " + G4cout << G4std::setw(8) << inf << "->" + << G4std::setw(5) << sup << " radl: " + << G4std::setw(7) << MeanELongit[i] << "% " + << G4std::setw(9) << rmsELongit[i] << "% " + << " 0->" << G4std::setw(5) << sup << " radl: " + << G4std::setw(7) << MeanELongitCumul[i] << "% " + << G4std::setw(7) << rmsELongitCumul[i] << "% " <" << G4std::setw(5) << sup << " radl: " - << G4std::setw(7) << MeanERadial[i] << "% " - << G4std::setw(9) << rmsERadial[i] << "% " - << " 0->" << G4std::setw(5) << sup << " radl: " - << G4std::setw(7) << MeanERadialCumul[i] << "% " - << G4std::setw(7) << rmsERadialCumul[i] << "% " + G4cout << G4std::setw(8) << inf << "->" + << G4std::setw(5) << sup << " radl: " + << G4std::setw(7) << MeanERadial[i] << "% " + << G4std::setw(9) << rmsERadial[i] << "% " + << " 0->" << G4std::setw(5) << sup << " radl: " + << G4std::setw(7) << MeanERadialCumul[i] << "% " + << G4std::setw(7) << rmsERadialCumul[i] << "% " < 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("endOfRun.rndm"); - } + // show Rndm status + HepRandom::showEngineStatus(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2SteppingAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2SteppingAction.cc index 4c353ee1ba..37b15dc40e 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2SteppingAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em2SteppingAction.cc,v 1.2.4.1 2001/06/28 19:06:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2SteppingAction.cc,v 1.6 2001/12/11 17:44:07 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2SteppingAction.hh" #include "Em2DetectorConstruction.hh" @@ -35,46 +35,52 @@ #include "G4SteppingManager.hh" #include "G4VTouchable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2SteppingAction::Em2SteppingAction(Em2DetectorConstruction* det, Em2RunAction* run) :Em2Det(det),Em2Run(run) { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2SteppingAction::~Em2SteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2SteppingAction::UserSteppingAction(const G4Step* aStep) { G4Track* aTrack = aStep->GetTrack(); + const G4VTouchable* preStepTouchable= aStep->GetPreStepPoint()->GetTouchable(); + const G4VTouchable* postStepTouchable= aStep->GetPostStepPoint()->GetTouchable(); // energy deposit // G4int SlideNb(0), RingNb(0); - if (Em2Det->GetnRtot()>1) - RingNb = aStep->GetPreStepPoint()->GetTouchable()->GetReplicaNumber(1); - if (Em2Det->GetnLtot()>1) - SlideNb = aStep->GetPreStepPoint()->GetTouchable()->GetReplicaNumber(); - + if (preStepTouchable->GetHistoryDepth()>0) + { + if (Em2Det->GetnRtot()>1) + RingNb = preStepTouchable->GetReplicaNumber(1); + if (Em2Det->GetnLtot()>1) + SlideNb = preStepTouchable->GetReplicaNumber(); + } + G4double dEStep = aStep->GetTotalEnergyDeposit(); - if (dEStep > 0.) Em2Run->fillPerStep(dEStep,SlideNb,RingNb); + if (dEStep > 0.) + Em2Run->fillPerStep(dEStep,SlideNb,RingNb); // particle flux // if ((Em2Det->GetnLtot()>1)&& - (aStep->GetPostStepPoint()->GetTouchable()->GetVolume())) + (postStepTouchable->GetVolume())) { - G4int next = aStep->GetPostStepPoint()->GetTouchable()->GetReplicaNumber(); + G4int next = postStepTouchable->GetReplicaNumber(); if (next != SlideNb) Em2Run->particleFlux(aTrack->GetDefinition(), (SlideNb+next)/2); } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm2/src/Em2SteppingVerbose.cc index eb3c54d2fb..8a036457d2 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2SteppingVerbose.cc @@ -21,28 +21,28 @@ // ******************************************************************** // // -// $Id: Em2SteppingVerbose.cc,v 1.6.2.1 2001/06/28 19:06:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2SteppingVerbose.cc,v 1.8 2001/10/25 15:12:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2SteppingVerbose.hh" #include "G4SteppingManager.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2SteppingVerbose::Em2SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2SteppingVerbose::~Em2SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2SteppingVerbose::StepInfo() { @@ -66,14 +66,14 @@ void Em2SteppingVerbose::StepInfo() << G4std::setw(10) << "Process" << G4endl; } - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); // if( fStepStatus != fWorldBoundary){ if( fTrack->GetNextVolume() != 0 ) { @@ -84,8 +84,8 @@ void Em2SteppingVerbose::StepInfo() if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ G4cout << " " - << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + << G4std::setw(10) << fStep->GetPostStepPoint() + ->GetProcessDefinedStep()->GetProcessName(); } else { G4cout << " UserLimit"; } @@ -107,7 +107,7 @@ void Em2SteppingVerbose::StepInfo() << " ---------------" << G4endl; - for(G4int lp1=(*fSecondary).size()-tN2ndariesTot; + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; lp1<(*fSecondary).size(); lp1++){ G4cout << " : " << G4std::setw(6) @@ -134,7 +134,7 @@ void Em2SteppingVerbose::StepInfo() G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2SteppingVerbose::TrackingStarted() { @@ -154,14 +154,14 @@ G4int prec = G4cout.precision(3); << G4std::setw(10) << "Volume" << " " << G4std::setw(10) << "Process" << G4endl; - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); if(fTrack->GetNextVolume()){ G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); @@ -173,4 +173,4 @@ G4int prec = G4cout.precision(3); G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2TrackingAction.cc b/examples/extended/electromagnetic/TestEm2/src/Em2TrackingAction.cc index b8863105da..5b117248ac 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2TrackingAction.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2TrackingAction.cc @@ -20,15 +20,14 @@ // * statement, and all its terms. * // ******************************************************************** // - // -// $Id: Em2TrackingAction.cc,v 1.2.4.1 2001/06/28 19:06:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2TrackingAction.cc,v 1.4 2001/10/25 15:12:07 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em2TrackingAction.hh" #include "Em2RunAction.hh" @@ -36,13 +35,13 @@ #include "G4TrackingManager.hh" #include "G4Track.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2TrackingAction::Em2TrackingAction(Em2RunAction* run) :Em2Run(run) { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2TrackingAction::PostUserTrackingAction(const G4Track* aTrack) { @@ -53,4 +52,6 @@ void Em2TrackingAction::PostUserTrackingAction(const G4Track* aTrack) Em2Run->fillPerTrack(charge,TrLeng); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2VisManager.cc b/examples/extended/electromagnetic/TestEm2/src/Em2VisManager.cc index d900bb56dc..e1790abd0d 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2VisManager.cc +++ b/examples/extended/electromagnetic/TestEm2/src/Em2VisManager.cc @@ -21,14 +21,14 @@ // ******************************************************************** // // -// $Id: Em2VisManager.cc,v 1.2.4.1 2001/06/28 19:06:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em2VisManager.cc,v 1.6 2001/11/15 13:09:46 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifdef G4VIS_USE @@ -36,14 +36,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -72,36 +79,34 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYX -#include "G4RayX.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em2VisManager::Em2VisManager () {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em2VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -130,20 +135,11 @@ void Em2VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYX - RegisterGraphicsSystem (new G4RayX); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." @@ -154,4 +150,4 @@ void Em2VisManager::RegisterGraphicsSystems () { #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm2/init.mac b/examples/extended/electromagnetic/TestEm2/vis.mac similarity index 76% rename from examples/extended/electromagnetic/TestEm2/init.mac rename to examples/extended/electromagnetic/TestEm2/vis.mac index d824df3b22..568f2ec287 100644 --- a/examples/extended/electromagnetic/TestEm2/init.mac +++ b/examples/extended/electromagnetic/TestEm2/vis.mac @@ -6,6 +6,7 @@ # /control/verbose 2 /run/verbose 2 +/run/initialize # # Create empty scene ("world" is default) # @@ -14,17 +15,19 @@ # Create a scene handler for a specific graphics system # Edit the next line(s) to choose another graphic system # -#/vis/open DAWNFILE +/vis/open DAWNFILE /vis/open OGLIX # # Draw scene # -/vis/camera/zoom 1.1 -/vis/camera/viewpoint 90 180 -/vis/drawVolume +/vis/viewer/set/viewpointThetaPhi 90 180 deg +/vis/viewer/zoom 1.1 +/vis/viewer/flush # # for drawing the tracks # if too many tracks cause core dump => storeTrajectory 0 /tracking/storeTrajectory 1 +/vis/scene/endOfEventAction accumulate +# /event/drawTracks charged diff --git a/examples/extended/electromagnetic/TestEm3/GNUmakefile b/examples/extended/electromagnetic/TestEm3/GNUmakefile index 8b572ca8bc..059b8fc252 100644 --- a/examples/extended/electromagnetic/TestEm3/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm3/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.5 2001/02/21 11:17:02 maire Exp $ +# $Id: GNUmakefile,v 1.6 2001/10/22 10:58:39 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -25,3 +25,7 @@ else endif include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* diff --git a/examples/extended/electromagnetic/TestEm3/History b/examples/extended/electromagnetic/TestEm3/History index fc16e98e10..55f71b677b 100644 --- a/examples/extended/electromagnetic/TestEm3/History +++ b/examples/extended/electromagnetic/TestEm3/History @@ -1,4 +1,4 @@ -$Id: History,v 1.11 2001/05/31 15:49:34 maire Exp $ +$Id: History,v 1.16 2001/11/28 17:54:45 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,28 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +28-11-01 mma (testem3-V03-02-03) +- EventAction: DrawTrack "none" +- small change in vis.mac +- suppression of the rndm commands, now managed by G4RunManager: + --> RunAction, RunActionMessenger, EventAction. + +39-10-01 mma (testem3-V03-02-02) +-invert initialize and update in all macros (and TestEm3.in) + +25-10-01 mma (testem3-V03-02-01) +- GetEnergyCuts() in PrintdEdx() + +22-10-01 mma (testem3-V03-02-00) +- mods in TestEm3.cc: the initialisation and vis initialisation are + not done by default. --> inserted /run/initialize in all macros. +- To get visualisation: > /control/execute vis.mac +- 80 columns everywhere. + +19-10-01 Steve O'Neale (examples-V03-02-00) +- Update reference output + 31-05-01 mma (testem3-V03-01-01) - VisManager diff --git a/examples/extended/electromagnetic/TestEm3/README b/examples/extended/electromagnetic/TestEm3/README index 4ee048f5d8..009abd894a 100644 --- a/examples/extended/electromagnetic/TestEm3/README +++ b/examples/extended/electromagnetic/TestEm3/README @@ -1,4 +1,4 @@ -$Id: README,v 1.5 2001/04/13 13:17:29 maire Exp $ +$Id: README,v 1.6 2001/10/22 10:58:40 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -70,9 +70,9 @@ $Id: README,v 1.5 2001/04/13 13:17:29 maire Exp $ 4- VISUALIZATION The Visualization Manager is set in the main(). - The initialisation of the drawing is done via commands - /vis/... in the macro init.mac. This macro is - automatically read from the main in case of interactive running mode. + The initialisation of the drawing is done via the commands + /vis/... in the macro vis.mac. In interactive session: + PreInit or Idle > /control/execute vis.mac The detector has a default view which is a longitudinal view of the calorimeter. @@ -111,7 +111,7 @@ $Id: README,v 1.5 2001/04/13 13:17:29 maire Exp $ % TestEm3 .... Idle> type your commands. For instance: - Idle> /control/execute newgeom.mac + Idle> /control/execute run01.mac .... Idle> exit diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.cc b/examples/extended/electromagnetic/TestEm3/TestEm3.cc index 36921fb7f5..eb98e158e6 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.cc +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: TestEm3.cc,v 1.5.2.1 2001/06/28 19:06:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: TestEm3.cc,v 1.7 2001/10/22 10:58:40 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4RunManager.hh" #include "G4UImanager.hh" @@ -45,7 +45,7 @@ #include "Em3SteppingAction.hh" #include "Em3SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int main(int argc,char** argv) { @@ -77,10 +77,7 @@ int main(int argc,char** argv) { runManager->SetUserAction(RunAct); runManager->SetUserAction(new Em3EventAction(RunAct,KinAct,detector)); runManager->SetUserAction(new Em3SteppingAction); - - //Initialize G4 kernel - runManager->Initialize(); - + // get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); @@ -93,7 +90,6 @@ int main(int argc,char** argv) { #else session = new G4UIterminal(); #endif - UI->ApplyCommand("/control/execute init.mac"); session->SessionStart(); delete session; } @@ -113,5 +109,5 @@ int main(int argc,char** argv) { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.in b/examples/extended/electromagnetic/TestEm3/TestEm3.in index 343034664d..a23112cd2b 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.in +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.in @@ -1,4 +1,4 @@ -# $Id: TestEm3.in,v 1.1 2000/01/21 14:28:44 maire Exp $ +# $Id: TestEm3.in,v 1.4 2001/11/28 17:54:46 maire Exp $ # # Macro file for "exampleN03.cc" # (can be run in batch, without graphic) @@ -7,11 +7,9 @@ # /control/verbose 2 # -#/run/particle/setCut 0.5 mm -#/run/initialize +/run/initialize # /run/verbose 2 -/event/drawTracks none /event/printModulo 50 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.out b/examples/extended/electromagnetic/TestEm3/TestEm3.out index 579925c303..d0bd6079d6 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.out +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.out @@ -1,10 +1,28 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... -***** Table : Nb of materials = 18 ***** +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) +# +/run/initialize + +***** Table : Nb of materials = 20 ***** + + Material: liquidH2 density: 70.800 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.905 m + ---> Element: liquidH2 Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 100.00 % Abundance 100.00 % Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm ---> Element: Aluminium Z = 13.0 N = 27.0 A = 26.98 g/mole fractionMass: 100.00 % Abundance 100.00 % @@ -12,7 +30,7 @@ Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm ---> Element: liquidArgon Z = 18.0 N = 40.0 A = 39.95 g/mole fractionMass: 100.00 % Abundance 100.00 % - Material: Iron density: 7.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.797 cm + Material: Iron density: 7.870 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.759 cm ---> Element: Iron Z = 26.0 N = 55.9 A = 55.85 g/mole fractionMass: 100.00 % Abundance 100.00 % Material: Copper density: 8.960 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.436 cm @@ -21,19 +39,22 @@ Material: Tungsten density: 19.300 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.504 mm ---> Element: Tungsten Z = 74.0 N = 183.8 A = 183.85 g/mole fractionMass: 100.00 % Abundance 100.00 % + Material: Gold density: 19.320 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.344 mm + ---> Element: Gold Z = 79.0 N = 197.0 A = 196.97 g/mole fractionMass: 100.00 % Abundance 100.00 % + Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm ---> Element: Lead Z = 82.0 N = 207.2 A = 207.19 g/mole fractionMass: 100.00 % Abundance 100.00 % Material: Uranium density: 18.950 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 3.166 mm ---> Element: Uranium Z = 92.0 N = 238.0 A = 238.03 g/mole fractionMass: 100.00 % Abundance 100.00 % - Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.092 cm - ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 11.21 % Abundance 66.67 % - ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 88.79 % Abundance 33.33 % + Material: Water density: 1.000 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 36.084 cm + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 11.19 % Abundance 66.67 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 88.81 % Abundance 33.33 % - Material: Scintillator density: 1.032 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 42.549 cm - ---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.01 g/mole fractionMass: 91.45 % Abundance 47.37 % - ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 8.55 % Abundance 52.63 % + Material: Scintillator density: 1.032 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 42.542 cm + ---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.01 g/mole fractionMass: 91.47 % Abundance 47.37 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 8.53 % Abundance 52.63 % Material: Silicium density: 2.330 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 9.368 cm ---> Element: Silicon Si Z = 14.0 N = 28.1 A = 28.09 g/mole fractionMass: 100.00 % Abundance 100.00 % @@ -42,11 +63,11 @@ ---> Element: Silicon Si Z = 14.0 N = 28.1 A = 28.09 g/mole fractionMass: 46.75 % Abundance 33.33 % ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 53.25 % Abundance 66.67 % - Material: NemaG10 density: 1.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.733 cm + Material: NemaG10 density: 1.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 18.732 cm ---> Element: Silicon Si Z = 14.0 N = 28.1 A = 28.09 g/mole fractionMass: 28.33 % Abundance 11.11 % - ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 32.27 % Abundance 22.22 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 32.28 % Abundance 22.22 % ---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.01 g/mole fractionMass: 36.34 % Abundance 33.33 % - ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 3.06 % Abundance 33.33 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 3.05 % Abundance 33.33 % Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 70.00 % Abundance 72.71 % @@ -54,7 +75,7 @@ Material: Aerogel density: 200.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.493 m ---> Element: Silicon Si Z = 14.0 N = 28.1 A = 28.09 g/mole fractionMass: 29.22 % Abundance 11.12 % - ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 66.49 % Abundance 44.42 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 66.50 % Abundance 44.42 % ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 4.19 % Abundance 44.37 % ---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.01 g/mole fractionMass: 0.10 % Abundance 0.09 % @@ -63,10 +84,10 @@ ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 72.71 % Abundance 66.67 % Material: WaterSteam density: 0.300 mg/cm3 temperature: 500.00 K pressure: 2.00 atm RadLength: 1.203 km - ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 11.21 % Abundance 66.67 % - ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 88.79 % Abundance 33.33 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 11.19 % Abundance 66.67 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 88.81 % Abundance 33.33 % - Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204727576.737 pc + Material: Galactic density: 0.000 mg/cm3 temperature: 2.73 K pressure: 0.00 atm RadLength: 204322175.595 pc ---> Element: Galactic Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 100.00 % Abundance 100.00 % Material: Beam density: 0.010 mg/cm3 temperature: 273.15 K pressure: 0.02 atm RadLength: 36.786 km @@ -80,75 +101,97 @@ Lead: 2.3 mm liquidArgon: 5.7 mm ------------------------------------------------------------- -Em3PhysicsList::SetCuts:CutLength : 5e+02 mum +Em3PhysicsList::SetCuts:CutLength : 500 mum phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z Sandia crossSection below 50 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. Good description from 1 KeV to 100 GeV. log scale extrapolation above 100 GeV Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. hIoni: Knock-on electron cross sections . Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuPairProd: theoretical cross sections Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- -Cut in range 500 mum 500 mum +Cut in range + liquidH2 500 mum 500 mum + Aluminium 500 mum 500 mum + liquidArgon 500 mum 500 mum + Iron 500 mum 500 mum + Copper 500 mum 500 mum + Tungsten 500 mum 500 mum + Gold 500 mum 500 mum + Lead 500 mum 500 mum + Uranium 500 mum 500 mum + Water 500 mum 500 mum + Scintillator 500 mum 500 mum + Silicium 500 mum 500 mum + quartz 500 mum 500 mum + NemaG10 500 mum 500 mum + Air 500 mum 500 mum + Aerogel 500 mum 500 mum + CarbonicGas 500 mum 500 mum + WaterSteam 500 mum 500 mum + Galactic 500 mum 500 mum + Beam 500 mum 500 mum Cut in energy + liquidH2 990 eV 72.7 keV Aluminium 4.96 keV 365 keV liquidArgon 4.4 keV 217 keV - Iron 14.2 keV 709 keV + Iron 14.3 keV 727 keV Copper 17.1 keV 782 keV Tungsten 87.5 keV 1.22 MeV + Gold 95.7 keV 1.2 MeV Lead 81.5 keV 763 keV Uranium 105 keV 1.13 MeV Water 2.18 keV 223 keV @@ -163,19 +206,8 @@ Cut in energy Galactic 990 eV 990 eV Beam 990 eV 990 eV =================================================== -# $Id: TestEm3.out,v 1.16 2001/04/26 12:33:36 stesting Exp $ -# -# Macro file for "exampleN03.cc" -# (can be run in batch, without graphic) -# -# Lead-liquidArgon 50 layers; electron 1 GeV -# -# -#/run/particle/setCut 0.5 mm -#/run/initialize # /run/verbose 2 -/event/drawTracks none /event/printModulo 50 # /gun/particle e- @@ -188,6 +220,22 @@ Cut in energy Current couple of seeds = 9876, 54321 ---------------------------------------- Start closing geometry. +G4GeometryManager::ReportVoxelStats -- Voxel Statistics + + Total memory consumed for geometry optimisation: 1 kByte + Total CPU time elapsed for geometry optimisation: 0 seconds + + Voxelisation: top CPU users: + Percent Total CPU System CPU Memory Volume + ------- ---------- ---------- -------- ---------- + 0.00 0.00 0.00 2k Calorimeter + 0.00 0.00 0.00 0k Layer + + Voxelisation: top memory users: + Percent Memory Heads Nodes Pointers Total CPU Volume + ------- -------- ------ ------ -------- ---------- ---------- + 91.70 1k 1 50 50 0.00 Calorimeter + 8.30 0k 1 3 4 0.00 Layer Start Run processing. ---> Begin Of Event: 0 @@ -196,20 +244,22 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=1.2e+02s Real=1.3e+02s Sys=9.9s + User=68.54s Real=86.85s Sys=14.82s ------------------------------------------------------------- total energy dep total tracklen - Absorber0 ( Lead) : 815.55 MeV +- 13.54 MeV 52.15 cm +- 1.14 cm - Absorber1 ( liquidArgon) : 173.85 MeV +- 12.77 MeV 86.85 cm +- 6.62 cm + Absorber0 ( Lead) : 799.29 MeV +- 14.74 MeV 56.53 cm +- 1.13 cm + Absorber1 ( liquidArgon) : 189.35 MeV +- 13.64 MeV 95.42 cm +- 7.01 cm ------------------------------------------------------------- --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 273622358, 263061346 + Current couple of seeds = 2004252829, 470324736 ---------------------------------------- +Graphics systems deleted. +Visualization Manager deleting... G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/include/ggvalues.inc b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/include/ggvalues.inc index 1629d95560..91273d3b6a 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/include/ggvalues.inc +++ b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/include/ggvalues.inc @@ -1,25 +1,3 @@ -* -* ******************************************************************** -* * DISCLAIMER * -* * * -* * The following disclaimer summarizes all the specific disclaimers * -* * of contributors to this software. The specific disclaimers,which * -* * govern, are listed with their locations in: * -* * http://cern.ch/geant4/license * -* * * -* * Neither the authors of this software system, nor their employing * -* * institutes,nor the agencies providing financial support for this * -* * work make any representation or warranty, express or implied, * -* * regarding this software system or assume any liability for its * -* * use. * -* * * -* * This code implementation is the intellectual property of the * -* * GEANT4 collaboration. * -* * By copying, distributing or modifying the Program (or any work * -* * based on the Program) you indicate your acceptance of this * -* * statement, and all its terms. * -* ******************************************************************** -* COMMON/G4VAL/g4value(200) * diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/include/ugmate.inc b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/include/ugmate.inc index 7117a39416..e20fa72ff6 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/include/ugmate.inc +++ b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/include/ugmate.inc @@ -1,24 +1,2 @@ -* -* ******************************************************************** -* * DISCLAIMER * -* * * -* * The following disclaimer summarizes all the specific disclaimers * -* * of contributors to this software. The specific disclaimers,which * -* * govern, are listed with their locations in: * -* * http://cern.ch/geant4/license * -* * * -* * Neither the authors of this software system, nor their employing * -* * institutes,nor the agencies providing financial support for this * -* * work make any representation or warranty, express or implied, * -* * regarding this software system or assume any liability for its * -* * use. * -* * * -* * This code implementation is the intellectual property of the * -* * GEANT4 collaboration. * -* * By copying, distributing or modifying the Program (or any work * -* * based on the Program) you indicate your acceptance of this * -* * statement, and all its terms. * -* ******************************************************************** -* COMMON/UGMATE/Imat diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/iron.dat b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/iron.dat deleted file mode 100644 index 74c2abad89..0000000000 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/iron.dat +++ /dev/null @@ -1,28 +0,0 @@ -LIST -C -C dE/dx (MeV/cm) for mu+ in Iron -C -KINE 5 (mu+) -MATE 7 (Iron) -ERAN 1.00e-05 (ekmin) 1.00e+04 (ekmax) 90 (nekbin) -CUTS 1.00e-05 (cutgam) 5.82e-05 (cutele) -G4VAL - 3.554835e+03 3.569445e+03 3.477310e+03 3.237305e+03 2.796011e+03 - 2.084330e+03 1.712979e+03 1.526694e+03 1.360668e+03 1.212696e+03 - 1.080817e+03 9.632790e+02 8.585233e+02 7.651597e+02 6.693284e+02 - 5.732342e+02 4.884958e+02 4.145149e+02 3.504588e+02 2.953827e+02 - 2.488385e+02 2.095821e+02 1.761759e+02 1.478571e+02 1.239422e+02 - 1.033223e+02 8.482754e+01 6.977993e+01 5.755184e+01 4.762822e+01 - 3.958668e+01 3.308135e+01 2.782940e+01 2.359997e+01 2.020495e+01 - 1.749131e+01 1.533473e+01 1.363429e+01 1.230805e+01 1.128936e+01 - 1.050600e+01 9.895461e+00 9.451831e+00 9.142193e+00 8.938586e+00 - 8.817268e+00 8.758231e+00 8.744866e+00 8.763660e+00 8.803896e+00 - 8.857303e+00 8.917685e+00 8.980540e+00 9.042708e+00 9.102056e+00 - 9.157219e+00 9.207395e+00 9.252183e+00 9.291466e+00 9.325326e+00 - 9.353986e+00 9.377759e+00 9.397027e+00 9.412214e+00 9.423776e+00 - 9.432188e+00 9.437939e+00 9.441529e+00 9.443463e+00 9.444251e+00 - 9.444406e+00 9.444403e+00 9.444400e+00 9.444399e+00 9.444398e+00 - 9.444397e+00 9.444397e+00 9.444396e+00 9.444396e+00 9.444396e+00 - 9.444396e+00 9.444396e+00 9.444396e+00 9.444396e+00 9.444396e+00 - 9.444396e+00 9.444396e+00 9.444396e+00 9.444396e+00 9.444396e+00 - diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/scin.dat b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/scin.dat deleted file mode 100644 index 3b97d3eaaf..0000000000 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/scin.dat +++ /dev/null @@ -1,27 +0,0 @@ -LIST -C -C dE/dx (MeV/cm) for mu+ in Scintillator -C -KINE 5 (mu+) -MATE 14 (Scintillator) -ERAN 1.00e-05 (ekmin) 1.00e+04 (ekmax) 90 (nekbin) -CUTS 1.00e-05 (cutgam) 1.00e-05 (cutele) -G4VAL - 1.047889e+03 9.385819e+02 8.058813e+02 6.050599e+02 5.216658e+02 - 4.649352e+02 4.143739e+02 3.693111e+02 3.291489e+02 2.933542e+02 - 2.614523e+02 2.330196e+02 2.076789e+02 1.850940e+02 1.599710e+02 - 1.336974e+02 1.099616e+02 8.949809e+01 7.283014e+01 5.926274e+01 - 4.824740e+01 3.931473e+01 3.205061e+01 2.614325e+01 2.134208e+01 - 1.744311e+01 1.427961e+01 1.171519e+01 9.638382e+00 7.958212e+00 - 6.600522e+00 5.504944e+00 4.622398e+00 3.913033e+00 3.344527e+00 - 2.890696e+00 2.530349e+00 2.246338e+00 2.024783e+00 1.854421e+00 - 1.722869e+00 1.619162e+00 1.542631e+00 1.487783e+00 1.449954e+00 - 1.425193e+00 1.410187e+00 1.402208e+00 1.399063e+00 1.399041e+00 - 1.400851e+00 1.403560e+00 1.406524e+00 1.409325e+00 1.411720e+00 - 1.413592e+00 1.414917e+00 1.415740e+00 1.416146e+00 1.416257e+00 - 1.416212e+00 1.416152e+00 1.416114e+00 1.416090e+00 1.416074e+00 - 1.416065e+00 1.416058e+00 1.416055e+00 1.416052e+00 1.416051e+00 - 1.416050e+00 1.416049e+00 1.416049e+00 1.416048e+00 1.416048e+00 - 1.416048e+00 1.416048e+00 1.416048e+00 1.416048e+00 1.416048e+00 - 1.416048e+00 1.416048e+00 1.416048e+00 1.416048e+00 1.416048e+00 - 1.416048e+00 1.416048e+00 1.416048e+00 1.416048e+00 1.416048e+00 diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/main.F b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/main.F index 08b840833b..989a701d25 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/main.F +++ b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/main.F @@ -1,25 +1,3 @@ -* -* ******************************************************************** -* * DISCLAIMER * -* * * -* * The following disclaimer summarizes all the specific disclaimers * -* * of contributors to this software. The specific disclaimers,which * -* * govern, are listed with their locations in: * -* * http://cern.ch/geant4/license * -* * * -* * Neither the authors of this software system, nor their employing * -* * institutes,nor the agencies providing financial support for this * -* * work make any representation or warranty, express or implied, * -* * regarding this software system or assume any liability for its * -* * use. * -* * * -* * This code implementation is the intellectual property of the * -* * GEANT4 collaboration. * -* * By copying, distributing or modifying the Program (or any work * -* * based on the Program) you indicate your acceptance of this * -* * statement, and all its terms. * -* ******************************************************************** -* #ifdef batch PROGRAM main diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/ug3g4.F b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/ug3g4.F index 54845e1880..62e55bce9d 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/ug3g4.F +++ b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/ug3g4.F @@ -1,25 +1,3 @@ -* -* ******************************************************************** -* * DISCLAIMER * -* * * -* * The following disclaimer summarizes all the specific disclaimers * -* * of contributors to this software. The specific disclaimers,which * -* * govern, are listed with their locations in: * -* * http://cern.ch/geant4/license * -* * * -* * Neither the authors of this software system, nor their employing * -* * institutes,nor the agencies providing financial support for this * -* * work make any representation or warranty, express or implied, * -* * regarding this software system or assume any liability for its * -* * use. * -* * * -* * This code implementation is the intellectual property of the * -* * GEANT4 collaboration. * -* * By copying, distributing or modifying the Program (or any work * -* * based on the Program) you indicate your acceptance of this * -* * statement, and all its terms. * -* ******************************************************************** -* SUBROUTINE UG3G4 * diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/ugimat.F b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/ugimat.F index 1c49214021..d0c1d125ca 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/ugimat.F +++ b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/ugimat.F @@ -1,25 +1,3 @@ -* -* ******************************************************************** -* * DISCLAIMER * -* * * -* * The following disclaimer summarizes all the specific disclaimers * -* * of contributors to this software. The specific disclaimers,which * -* * govern, are listed with their locations in: * -* * http://cern.ch/geant4/license * -* * * -* * Neither the authors of this software system, nor their employing * -* * institutes,nor the agencies providing financial support for this * -* * work make any representation or warranty, express or implied, * -* * regarding this software system or assume any liability for its * -* * use. * -* * * -* * This code implementation is the intellectual property of the * -* * GEANT4 collaboration. * -* * By copying, distributing or modifying the Program (or any work * -* * based on the Program) you indicate your acceptance of this * -* * statement, and all its terms. * -* ******************************************************************** -* SUBROUTINE UGIMAT * @@ -62,7 +40,7 @@ * *** Defines materials CALL GSMIXT( 1,'Air' , Aair ,Zair, 1.29E-3, 2 , Wair) CALL GSMIXT( 2,'CO2 gas' , ACO2 ,ZCO2, 27.0E-3,-2 , WCO2) - CALL GSMATE( 3,'H2 Liquid', 1.01, 1., 0.0708 , 865., 790., 0,0) + CALL GSMATE( 3,'H2 Liquid', 1.008, 1., 0.0708 , 865., 790., 0,0) CALL GSMIXT( 4,'Water' , AH2O ,ZH2O, 1.0 ,-2 , WH2O) CALL GSMATE( 5,'Liquid Ar', 39.95, 18., 1.39 , 14.0, 84.0, 0,0) CALL GSMATE( 6,'Aluminium', 26.98, 13., 2.7 , 8.9, 37.2, 0,0) diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/uginit.F b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/uginit.F index b5c724da1b..8ce88d0e3e 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/uginit.F +++ b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/uginit.F @@ -1,25 +1,3 @@ -* -* ******************************************************************** -* * DISCLAIMER * -* * * -* * The following disclaimer summarizes all the specific disclaimers * -* * of contributors to this software. The specific disclaimers,which * -* * govern, are listed with their locations in: * -* * http://cern.ch/geant4/license * -* * * -* * Neither the authors of this software system, nor their employing * -* * institutes,nor the agencies providing financial support for this * -* * work make any representation or warranty, express or implied, * -* * regarding this software system or assume any liability for its * -* * use. * -* * * -* * This code implementation is the intellectual property of the * -* * GEANT4 collaboration. * -* * By copying, distributing or modifying the Program (or any work * -* * based on the Program) you indicate your acceptance of this * -* * statement, and all its terms. * -* ******************************************************************** -* SUBROUTINE UGINIT * diff --git a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/uglast.F b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/uglast.F index 0e216e82f0..29341658e8 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/uglast.F +++ b/examples/extended/electromagnetic/TestEm3/geant3/g4mat/src/uglast.F @@ -1,25 +1,3 @@ -* -* ******************************************************************** -* * DISCLAIMER * -* * * -* * The following disclaimer summarizes all the specific disclaimers * -* * of contributors to this software. The specific disclaimers,which * -* * govern, are listed with their locations in: * -* * http://cern.ch/geant4/license * -* * * -* * Neither the authors of this software system, nor their employing * -* * institutes,nor the agencies providing financial support for this * -* * work make any representation or warranty, express or implied, * -* * regarding this software system or assume any liability for its * -* * use. * -* * * -* * This code implementation is the intellectual property of the * -* * GEANT4 collaboration. * -* * By copying, distributing or modifying the Program (or any work * -* * based on the Program) you indicate your acceptance of this * -* * statement, and all its terms. * -* ******************************************************************** -* SUBROUTINE UGLAST * diff --git a/examples/extended/electromagnetic/TestEm3/geant3/run07.dat b/examples/extended/electromagnetic/TestEm3/geant3/run07.dat index d50f04a46d..e6b6dfd230 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/run07.dat +++ b/examples/extended/electromagnetic/TestEm3/geant3/run07.dat @@ -5,7 +5,7 @@ C CALOR 2 (nbAbs) 2 (nbLay) 1.6 (calorYZ) 0. (field) MATE 5 (larg) 8 (lead) THICK 0.4(cm) 0.4 (cm) -TRIG 1000 +TRIG 100 KINE 14 (Itype) 0.5 (Ekine) 1000. (x0) 0. (y0) 0. (z0) 1. (ux) 0. (uy) 0. (uz) DEBUG 10 5 100 SWIT 0 (draw) 1 (save) @@ -13,5 +13,6 @@ CUTS 10.0e-6 (cutgam) 10.0e-6 (cutele) 3*10.e-3 (cutneu/had/muo) 2*10.0e-6 (bcute/m) 2*455.0e-6 (dcute/m) ABAN 0 LOSS 1 +MULS 0 HADR 0 TIME 2=1. diff --git a/examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F b/examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F index ec8cc7b642..f75043987a 100644 --- a/examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F +++ b/examples/extended/electromagnetic/TestEm3/geant3/src/ugeom.F @@ -46,7 +46,7 @@ * *** Defines USER perticular materials CALL GSMIXT( 1,'Air' , Aair ,Zair, 1.29E-3, 2 , Wair) CALL GSMIXT( 2,'CO2 gas' , ACO2 ,ZCO2, 27.0E-3,-2 , WCO2) - CALL GSMATE( 3,'H2 Liquid', 1.01, 1., 0.0708 , 865., 790., 0,0) + CALL GSMATE( 3,'H2 Liquid', 1.008, 1., 0.0708 , 865., 790., 0,0) CALL GSMIXT( 4,'Water' , AH2O ,ZH2O, 1.0 ,-2 , WH2O) CALL GSMATE( 5,'Liquid Ar', 39.95, 18., 1.39 , 14.0, 84.0, 0,0) CALL GSMATE( 6,'Aluminium', 26.98, 13., 2.7 , 8.9, 37.2, 0,0) diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3CalorHit.hh b/examples/extended/electromagnetic/TestEm3/include/Em3CalorHit.hh index 6d1b17c9a4..1a8bc47f1c 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3CalorHit.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3CalorHit.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3CalorHit.hh,v 1.2.4.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3CalorHit.hh,v 1.4 2001/10/22 10:58:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3CalorHit_h #define Em3CalorHit_h 1 @@ -37,7 +37,7 @@ #include "G4THitsCollection.hh" #include "G4Allocator.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3CalorHit : public G4VHit { @@ -70,13 +70,13 @@ class Em3CalorHit : public G4VHit G4double TrackLengthAbs[MaxAbsor]; }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... typedef G4THitsCollection Em3CalorHitsCollection; extern G4Allocator Em3CalorHitAllocator; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void* Em3CalorHit::operator new(size_t) { @@ -85,13 +85,15 @@ inline void* Em3CalorHit::operator new(size_t) return aHit; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em3CalorHit::operator delete(void* aHit) { Em3CalorHitAllocator.FreeSingle((Em3CalorHit*) aHit); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm3/include/Em3CalorimeterSD.hh index e168891508..2679376c1d 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3CalorimeterSD.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3CalorimeterSD.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3CalorimeterSD.hh,v 1.2.4.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3CalorimeterSD.hh,v 1.4 2001/10/22 10:58:47 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3CalorimeterSD_h #define Em3CalorimeterSD_h 1 @@ -40,7 +40,7 @@ class G4HCofThisEvent; class G4Step; #include "Em3CalorHit.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3CalorimeterSD : public G4VSensitiveDetector { @@ -63,5 +63,7 @@ class Em3CalorimeterSD : public G4VSensitiveDetector G4int* HitID; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3DetectorConstruction.hh index d42b1e3f32..7c2ad2df34 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3DetectorConstruction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3DetectorConstruction.hh,v 1.3.2.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3DetectorConstruction.hh,v 1.5 2001/10/22 10:58:47 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3DetectorConstruction_h #define Em3DetectorConstruction_h 1 @@ -47,7 +47,7 @@ class Em3CalorimeterSD; const G4int MaxAbsor = 10; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3DetectorConstruction : public G4VUserDetectorConstruction { @@ -88,7 +88,7 @@ class Em3DetectorConstruction : public G4VUserDetectorConstruction G4Material* GetAbsorMaterial(G4int i) {return AbsorMaterial[i];}; G4double GetAbsorThickness(G4int i) {return AbsorThickness[i];}; - const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; + const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; const G4VPhysicalVolume* GetAbsorber(G4int i) {return physiAbsor[i];}; private: @@ -119,12 +119,12 @@ class Em3DetectorConstruction : public G4VUserDetectorConstruction G4LogicalVolume* logicLayer; //pointer to the logical Layer G4VPhysicalVolume* physiLayer; //pointer to the physical Layer - G4Box* solidAbsor[MaxAbsor]; //pointer to the solid Absorbers - G4LogicalVolume* logicAbsor[MaxAbsor]; //pointer to the logical Absorbers - G4VPhysicalVolume* physiAbsor[MaxAbsor]; //pointer to the physical Absorbers + G4Box* solidAbsor[MaxAbsor]; //pointer to solid Absorbers + G4LogicalVolume* logicAbsor[MaxAbsor]; //pointer to logical Absorbers + G4VPhysicalVolume* physiAbsor[MaxAbsor]; //pointer to physical Absorbers G4UniformMagField* magField; //pointer to the magnetic field - G4UserLimits* userLimits; //pointer to the userLimits class + G4UserLimits* userLimits; //pointer to the userLimits class Em3DetectorMessenger* detectorMessenger; //pointer to the Messenger Em3CalorimeterSD* calorimeterSD; //pointer to the sensitive detector @@ -136,7 +136,7 @@ class Em3DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* ConstructCalorimeter(); }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em3DetectorConstruction::ComputeCalorParameters() { @@ -149,5 +149,7 @@ inline void Em3DetectorConstruction::ComputeCalorParameters() WorldSizeX = 1.2*CalorThickness; WorldSizeYZ = 1.2*CalorSizeYZ; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3DetectorMessenger.hh index 19f3f77cfe..969c2706d2 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3DetectorMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3DetectorMessenger.hh,v 1.3.2.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3DetectorMessenger.hh,v 1.5 2001/10/22 10:58:48 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3DetectorMessenger_h #define Em3DetectorMessenger_h 1 @@ -42,7 +42,7 @@ class G4UIcmdWithAnInteger; class G4UIcmdWithADoubleAndUnit; class G4UIcmdWithoutParameter; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3DetectorMessenger: public G4UImessenger { @@ -66,5 +66,7 @@ class Em3DetectorMessenger: public G4UImessenger G4UIcmdWithoutParameter* UpdateCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3EventAction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3EventAction.hh index a93729b509..f54d9d4c8f 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3EventAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3EventAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3EventAction.hh,v 1.3.2.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3EventAction.hh,v 1.5 2001/10/22 10:58:48 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3EventAction_h #define Em3EventAction_h 1 @@ -40,7 +40,7 @@ class Em3PrimaryGeneratorAction; class Em3DetectorConstruction; class Em3EventActionMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3EventAction : public G4UserEventAction { @@ -67,6 +67,8 @@ class Em3EventAction : public G4UserEventAction Em3EventActionMessenger* eventMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3EventActionMessenger.hh index b848e09876..ef4d8c74c7 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3EventActionMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3EventActionMessenger.hh,v 1.2.4.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3EventActionMessenger.hh,v 1.4 2001/10/22 10:58:48 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3EventActionMessenger_h #define Em3EventActionMessenger_h 1 @@ -39,7 +39,7 @@ class Em3EventAction; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3EventActionMessenger: public G4UImessenger { @@ -55,4 +55,6 @@ class Em3EventActionMessenger: public G4UImessenger G4UIcmdWithAnInteger* PrintCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsList.hh b/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsList.hh index 61fb37eef4..cec1879a85 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsList.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3PhysicsList.hh,v 1.3.4.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3PhysicsList.hh,v 1.5 2001/10/22 10:58:49 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3PhysicsList_h #define Em3PhysicsList_h 1 @@ -37,7 +37,7 @@ class Em3PhysicsListMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3PhysicsList: public G4VUserPhysicsList { @@ -74,6 +74,8 @@ class Em3PhysicsList: public G4VUserPhysicsList Em3PhysicsListMessenger* pMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsListMessenger.hh index 2f6c179d93..a1e0537426 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3PhysicsListMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3PhysicsListMessenger.hh,v 1.1.4.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3PhysicsListMessenger.hh,v 1.3 2001/10/22 10:58:49 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3PhysicsListMessenger_h #define Em3PhysicsListMessenger_h 1 @@ -38,7 +38,7 @@ class Em3PhysicsList; class G4UIcmdWithADoubleAndUnit; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3PhysicsListMessenger: public G4UImessenger { @@ -58,5 +58,7 @@ class Em3PhysicsListMessenger: public G4UImessenger G4UIcmdWithADoubleAndUnit* protoCutCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorAction.hh index 77adac3260..125f0fbbb0 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3PrimaryGeneratorAction.hh,v 1.4.2.1 2001/06/28 19:06:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3PrimaryGeneratorAction.hh,v 1.6 2001/10/22 10:58:50 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3PrimaryGeneratorAction_h #define Em3PrimaryGeneratorAction_h 1 @@ -40,7 +40,7 @@ class G4Event; class Em3DetectorConstruction; class Em3PrimaryGeneratorMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { @@ -63,6 +63,8 @@ class Em3PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction Em3PrimaryGeneratorMessenger* gunMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorMessenger.hh index aa3b40c92b..be3ae02cb8 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3PrimaryGeneratorMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3PrimaryGeneratorMessenger.hh,v 1.3.2.1 2001/06/28 19:06:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3PrimaryGeneratorMessenger.hh,v 1.5 2001/10/22 10:58:50 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3PrimaryGeneratorMessenger_h #define Em3PrimaryGeneratorMessenger_h 1 @@ -39,7 +39,7 @@ class Em3PrimaryGeneratorAction; class G4UIcmdWithoutParameter; class G4UIcmdWithADouble; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3PrimaryGeneratorMessenger: public G4UImessenger { @@ -55,5 +55,7 @@ class Em3PrimaryGeneratorMessenger: public G4UImessenger G4UIcmdWithADouble* RndmCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3RunAction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3RunAction.hh index 2769d243bd..586264fd24 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3RunAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3RunAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3RunAction.hh,v 1.7.2.1 2001/06/28 19:06:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3RunAction.hh,v 1.9 2001/11/28 17:54:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3RunAction_h #define Em3RunAction_h 1 @@ -37,7 +37,7 @@ #include "G4UserRunAction.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4Run; class Em3RunActionMessenger; @@ -59,9 +59,6 @@ class Em3RunAction : public G4UserRunAction void fillPerEvent(G4int,G4double,G4double); - void SetRndmFreq(G4int val) {saveRndm = val;} - G4int GetRndmFreq() {return saveRndm;} - #ifndef G4NOHIST HepHistogram* GetHisto(G4int id) {return histo[id];} #endif @@ -80,7 +77,6 @@ class Em3RunAction : public G4UserRunAction Em3DetectorConstruction* Detector; Em3RunActionMessenger* runMessenger; - G4int saveRndm; #ifndef G4NOHIST HepTupleManager* hbookManager; @@ -88,7 +84,7 @@ class Em3RunAction : public G4UserRunAction #endif }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em3RunAction::fillPerEvent(G4int kAbs, G4double EAbs, G4double LAbs) @@ -99,7 +95,7 @@ void Em3RunAction::fillPerEvent(G4int kAbs, G4double EAbs, G4double LAbs) sumLAbs[kAbs] += LAbs; sum2LAbs[kAbs] += LAbs*LAbs; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3RunActionMessenger.hh b/examples/extended/electromagnetic/TestEm3/include/Em3RunActionMessenger.hh index 4be679c792..dcbd46a6d9 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3RunActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3RunActionMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3RunActionMessenger.hh,v 1.4.2.1 2001/06/28 19:06:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3RunActionMessenger.hh,v 1.7 2001/11/28 17:54:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3RunActionMessenger_h #define Em3RunActionMessenger_h 1 @@ -36,13 +36,9 @@ #include "G4UImessenger.hh" class Em3RunAction; -class G4UIdirectory; class G4UIcommand; -class G4UIcmdWithAString; -class G4UIcmdWithAnInteger; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3RunActionMessenger: public G4UImessenger { @@ -53,13 +49,11 @@ class Em3RunActionMessenger: public G4UImessenger void SetNewValue(G4UIcommand*, G4String); private: - Em3RunAction* Em3Run; - G4UIdirectory* RndmDir; - G4UIcmdWithAnInteger* RndmSaveCmd; - G4UIcmdWithAString* RndmReadCmd; - - G4UIcommand* HistoCmd; + Em3RunAction* Em3Run; + G4UIcommand* HistoCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3SteppingAction.hh b/examples/extended/electromagnetic/TestEm3/include/Em3SteppingAction.hh index 013731db49..3e3a36079c 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3SteppingAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3SteppingAction.hh,v 1.3.2.1 2001/06/28 19:06:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3SteppingAction.hh,v 1.5 2001/10/22 10:58:51 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3SteppingAction_h #define Em3SteppingAction_h 1 @@ -35,7 +35,7 @@ #include "G4UserSteppingAction.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3SteppingAction : public G4UserSteppingAction { @@ -48,4 +48,6 @@ class Em3SteppingAction : public G4UserSteppingAction G4double BirkAttenuation(const G4Step*); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm3/include/Em3SteppingVerbose.hh index ab4347f657..57939e3994 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3SteppingVerbose.hh @@ -21,33 +21,34 @@ // ******************************************************************** // // -// $Id: Em3SteppingVerbose.hh,v 1.5.2.1 2001/06/28 19:06:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3SteppingVerbose.hh,v 1.7 2001/10/22 10:58:52 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. // It shows how to extract informations during the tracking of a particle. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3SteppingVerbose_h #define Em3SteppingVerbose_h 1 #include "G4SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -class Em3SteppingVerbose : public G4SteppingVerbose { +class Em3SteppingVerbose : public G4SteppingVerbose +{ + public: -public: - - Em3SteppingVerbose(); - ~Em3SteppingVerbose(); - - void StepInfo(); - void TrackingStarted(); + Em3SteppingVerbose(); + ~Em3SteppingVerbose(); + void StepInfo(); + void TrackingStarted(); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/include/Em3VisManager.hh b/examples/extended/electromagnetic/TestEm3/include/Em3VisManager.hh index 193351dc67..2353494f68 100644 --- a/examples/extended/electromagnetic/TestEm3/include/Em3VisManager.hh +++ b/examples/extended/electromagnetic/TestEm3/include/Em3VisManager.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3VisManager.hh,v 1.2.4.1 2001/06/28 19:06:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3VisManager.hh,v 1.4 2001/10/22 10:58:53 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Example Visualization Manager implementing virtual function // RegisterGraphicsSystems. Exploits C-pre-processor variables @@ -42,14 +42,14 @@ // G4VisManager* myVisManager = new MyVisManager; // myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em3VisManager_h #define Em3VisManager_h 1 #include "G4VisManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em3VisManager: public G4VisManager { @@ -63,4 +63,6 @@ private: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm3/retrieveTables.mac b/examples/extended/electromagnetic/TestEm3/retrieveTables.mac new file mode 100644 index 0000000000..0bba8d5e63 --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/retrieveTables.mac @@ -0,0 +1,17 @@ +# $Id: retrieveTables.mac,v 1.1 2001/10/23 10:30:12 maire Exp $ +# +# Macro file for "exampleN03.cc" +# +# can be run in batch, without graphic +# or interactively: Idle> /control/execute run1.mac +# +/control/verbose 2 +# +/run/particle/retrievePhysicsTable physdata +/run/initialize +# +/gun/particle e- +/gun/energy 1 GeV +# +/run/beamOn 3 +# diff --git a/examples/extended/electromagnetic/TestEm3/run01.mac b/examples/extended/electromagnetic/TestEm3/run01.mac index 3bde31499e..a5cdb26cfb 100644 --- a/examples/extended/electromagnetic/TestEm3/run01.mac +++ b/examples/extended/electromagnetic/TestEm3/run01.mac @@ -1,4 +1,4 @@ -# $Id: run01.mac,v 1.3 2000/12/06 16:43:38 maire Exp $ +# $Id: run01.mac,v 1.5 2001/11/05 15:28:39 maire Exp $ # # Macro file for "exampleN03.cc" # (can be run in batch, without graphic) @@ -8,10 +8,9 @@ /control/verbose 2 # #/run/particle/setCut 0.5 mm -#/run/initialize +/run/initialize # /run/verbose 2 -/event/drawTracks none /event/printModulo 50 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm3/run02.mac b/examples/extended/electromagnetic/TestEm3/run02.mac index d269c6654c..ef973a37d9 100644 --- a/examples/extended/electromagnetic/TestEm3/run02.mac +++ b/examples/extended/electromagnetic/TestEm3/run02.mac @@ -1,4 +1,4 @@ -# $Id: run02.mac,v 1.2 2000/01/21 09:11:04 maire Exp $ +# $Id: run02.mac,v 1.4 2001/11/05 15:28:39 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -7,18 +7,18 @@ # /control/verbose 2 # +/run/particle/setCut 100 mum +/run/initialize +# /calor/setNbOfLayers 50 /calor/setNbOfAbsor 2 /calor/setAbsor 0 Tungsten 2 mm /calor/setAbsor 1 Silicium 0.3 mm /calor/update +# /gun/setDefault # -/run/particle/setCut 100 mum -/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 100 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm3/run03.mac b/examples/extended/electromagnetic/TestEm3/run03.mac index d69bc9d922..485e64945f 100644 --- a/examples/extended/electromagnetic/TestEm3/run03.mac +++ b/examples/extended/electromagnetic/TestEm3/run03.mac @@ -1,4 +1,4 @@ -# $Id: run03.mac,v 1.2 2000/01/21 09:11:04 maire Exp $ +# $Id: run03.mac,v 1.4 2001/11/05 15:28:39 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -10,19 +10,19 @@ # /control/verbose 2 # +/run/particle/setCut 1 mm +/run/initialize +# /calor/setNbOfLayers 15 /calor/setNbOfAbsor 2 /calor/setAbsor 0 Iron 23.08 mm /calor/setAbsor 1 Silicium 0.4 mm /calor/setSizeYZ 40. cm /calor/update +# /gun/setDefault # -/run/particle/setCut 1 mm -/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 10 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm3/run04.mac b/examples/extended/electromagnetic/TestEm3/run04.mac index 1f5d529367..44f936ad97 100644 --- a/examples/extended/electromagnetic/TestEm3/run04.mac +++ b/examples/extended/electromagnetic/TestEm3/run04.mac @@ -1,4 +1,4 @@ -# $Id: run04.mac,v 1.2 2000/01/21 09:11:05 maire Exp $ +# $Id: run04.mac,v 1.4 2001/11/05 15:28:39 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -10,6 +10,9 @@ # /control/verbose 2 # +/run/particle/setCut 1 mm +/run/initialize +# /calor/setNbOfLayers 15 /calor/setNbOfAbsor 3 /calor/setAbsor 0 Lead 13.00 mm @@ -17,13 +20,10 @@ /calor/setAbsor 2 Silicium 0.4 mm /calor/setSizeYZ 40. cm /calor/update +# /gun/setDefault # -/run/particle/setCut 1 mm -/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 10 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm3/run05.mac b/examples/extended/electromagnetic/TestEm3/run05.mac index 7af432ccde..23c220ae9f 100644 --- a/examples/extended/electromagnetic/TestEm3/run05.mac +++ b/examples/extended/electromagnetic/TestEm3/run05.mac @@ -1,4 +1,4 @@ -# $Id: run05.mac,v 1.2 2000/01/21 09:11:05 maire Exp $ +# $Id: run05.mac,v 1.4 2001/11/05 15:28:39 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -9,6 +9,9 @@ # /control/verbose 2 # +/run/particle/setCut 1 mm +/run/initialize +# /calor/setNbOfLayers 10 /calor/setNbOfAbsor 4 /calor/setAbsor 0 Lead 19.0 mm @@ -17,13 +20,10 @@ /calor/setAbsor 3 NemaG10 1.0 mm /calor/setSizeYZ 16. cm /calor/update +# /gun/setDefault # -/run/particle/setCut 1 mm -/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 10 # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm3/run06.mac b/examples/extended/electromagnetic/TestEm3/run06.mac index 0ec1150c3f..6813e4a65b 100644 --- a/examples/extended/electromagnetic/TestEm3/run06.mac +++ b/examples/extended/electromagnetic/TestEm3/run06.mac @@ -1,4 +1,4 @@ -# $Id: run06.mac,v 1.2 2000/01/21 09:11:05 maire Exp $ +# $Id: run06.mac,v 1.4 2001/11/05 15:28:39 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -9,6 +9,9 @@ # /control/verbose 2 # +/run/particle/setCut 1 mm +/run/initialize +# /calor/setNbOfLayers 10 /calor/setNbOfAbsor 4 /calor/setAbsor 0 Iron 35.7 mm @@ -17,10 +20,8 @@ /calor/setAbsor 3 NemaG10 1.0 mm /calor/setSizeYZ 16. cm /calor/update -/gun/setDefault # -/run/particle/setCut 1 mm -/run/initialize +/gun/setDefault # /run/verbose 2 /event/drawTracks none diff --git a/examples/extended/electromagnetic/TestEm3/run07.mac b/examples/extended/electromagnetic/TestEm3/run07.mac index 99238d5dbe..3d91ba0044 100644 --- a/examples/extended/electromagnetic/TestEm3/run07.mac +++ b/examples/extended/electromagnetic/TestEm3/run07.mac @@ -1,4 +1,4 @@ -# $Id: run07.mac,v 1.2 2000/01/21 09:11:05 maire Exp $ +# $Id: run07.mac,v 1.4 2001/11/05 15:28:39 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -7,19 +7,21 @@ # /control/verbose 2 # +/run/particle/setCut 1.5 mm +/run/initialize +# /calor/setNbOfLayers 2 /calor/setNbOfAbsor 2 /calor/setAbsor 0 liquidArgon 4 mm /calor/setAbsor 1 Lead 4 mm /calor/setSizeYZ 16 mm /calor/update +# +/process/inactivate msc +# /gun/setDefault # -/run/particle/setCut 0.15 mm -/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 100 # /gun/particle proton diff --git a/examples/extended/electromagnetic/TestEm3/run12.draw b/examples/extended/electromagnetic/TestEm3/run12.draw index 80424df05b..9050a4e1b4 100644 --- a/examples/extended/electromagnetic/TestEm3/run12.draw +++ b/examples/extended/electromagnetic/TestEm3/run12.draw @@ -1,4 +1,4 @@ -# $Id: run12.draw,v 1.1 2001/02/20 12:34:41 maire Exp $ +# $Id: run12.draw,v 1.3 2001/11/05 15:28:39 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -8,20 +8,18 @@ # /control/verbose 2 # +/run/particle/setCut 1 mm +/run/initialize +# /calor/setNbOfLayers 1 /calor/setNbOfAbsor 2 /calor/setAbsor 0 Iron 1 cm /calor/setAbsor 1 Scintillator 1 cm /calor/setSizeYZ 2 cm /calor/update +# /gun/setDefault # -/vis/camera/zoom 1.5 -/vis/drawVolume -# -/run/particle/setCut 1 mm -/run/initialize -# /run/verbose 2 /tracking/verbose 1 # diff --git a/examples/extended/electromagnetic/TestEm3/run15.mac b/examples/extended/electromagnetic/TestEm3/run15.mac index 22b6f70dac..b29df3ef12 100644 --- a/examples/extended/electromagnetic/TestEm3/run15.mac +++ b/examples/extended/electromagnetic/TestEm3/run15.mac @@ -1,4 +1,4 @@ -# $Id: run15.mac,v 1.2 2001/04/13 13:17:30 maire Exp $ +# $Id: run15.mac,v 1.4 2001/11/05 15:28:39 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -7,28 +7,25 @@ # /control/verbose 2 # +/run/particle/setCut 10 mum +/run/initialize +# /calor/setNbOfLayers 20 /calor/setNbOfAbsor 2 /calor/setAbsor 0 Iron 14 mm /calor/setAbsor 1 Scintillator 3 mm /calor/setSizeYZ 30 cm /calor/update +# /gun/setDefault # -/vis/camera/zoom 1.2 -/vis/drawVolume -# -/run/particle/setCut 1 cm -/run/initialize -# /run/verbose 2 /event/printModulo 1000 -/event/drawTracks charged # /gun/particle mu+ -/gun/energy 180 GeV +/gun/energy 20 GeV # -/run/setHisto 0 100 0. 1.e-2 -/run/setHisto 1 100 0. 5.e-4 +/run/setHisto 0 100 0. 1.e-1 +/run/setHisto 1 100 0. 5.e-3 # /run/beamOn 20000 diff --git a/examples/extended/electromagnetic/TestEm3/run16.mac b/examples/extended/electromagnetic/TestEm3/run16.mac index e4311a1fd4..af1dc3abb6 100644 --- a/examples/extended/electromagnetic/TestEm3/run16.mac +++ b/examples/extended/electromagnetic/TestEm3/run16.mac @@ -1,4 +1,4 @@ -# $Id: run16.mac,v 1.2 2001/04/13 14:22:27 maire Exp $ +# $Id: run16.mac,v 1.4 2001/11/05 15:28:40 maire Exp $ # # Macro file for "TestEm3.cc" # (can be run in batch, without graphic) @@ -9,6 +9,9 @@ # /control/verbose 2 # +/run/particle/setCut 1 mum +/run/initialize +# /calor/setNbOfLayers 1 /calor/setNbOfAbsor 3 /calor/setAbsor 0 Aluminium 170 mum @@ -16,17 +19,11 @@ /calor/setAbsor 2 Aluminium 850 mum /calor/setSizeYZ 1050 mum /calor/update +# /gun/setDefault # -/vis/camera/zoom 1.4 -/vis/drawVolume -# -/run/particle/setCut 1 mum -/run/initialize -# /run/verbose 2 /event/printModulo 1000 -/event/drawTracks all # /gun/particle e- /gun/energy 1 MeV diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3CalorHit.cc b/examples/extended/electromagnetic/TestEm3/src/Em3CalorHit.cc index ac237ec50d..e07e45e383 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3CalorHit.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3CalorHit.cc @@ -21,19 +21,19 @@ // ******************************************************************** // // -// $Id: Em3CalorHit.cc,v 1.2.4.1 2001/06/28 19:06:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3CalorHit.cc,v 1.4 2001/10/22 10:58:54 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3CalorHit.hh" G4Allocator Em3CalorHitAllocator; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3CalorHit::Em3CalorHit() { @@ -41,12 +41,12 @@ Em3CalorHit::Em3CalorHit() { EdepAbs[i] = TrackLengthAbs[i] = 0.;} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3CalorHit::~Em3CalorHit() -{;} +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3CalorHit::Em3CalorHit(const Em3CalorHit& right) { @@ -55,7 +55,7 @@ Em3CalorHit::Em3CalorHit(const Em3CalorHit& right) TrackLengthAbs[i] = right.TrackLengthAbs[i];} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... const Em3CalorHit& Em3CalorHit::operator=(const Em3CalorHit& right) { @@ -65,22 +65,22 @@ const Em3CalorHit& Em3CalorHit::operator=(const Em3CalorHit& right) return *this; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int Em3CalorHit::operator==(const Em3CalorHit& right) const { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3CalorHit::Draw() -{;} +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3CalorHit::Print() -{;} +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm3/src/Em3CalorimeterSD.cc index 2e51797849..0e53463946 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3CalorimeterSD.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3CalorimeterSD.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3CalorimeterSD.cc,v 1.2.4.1 2001/06/28 19:06:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3CalorimeterSD.cc,v 1.4 2001/10/22 10:58:54 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3CalorimeterSD.hh" @@ -39,10 +39,9 @@ #include "G4VTouchable.hh" #include "G4TouchableHistory.hh" #include "G4SDManager.hh" - #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3CalorimeterSD::Em3CalorimeterSD(G4String name, Em3DetectorConstruction* det) @@ -52,14 +51,14 @@ Em3CalorimeterSD::Em3CalorimeterSD(G4String name, HitID = new G4int[500]; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3CalorimeterSD::~Em3CalorimeterSD() { delete [] HitID; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3CalorimeterSD::Initialize(G4HCofThisEvent*HCE) { @@ -68,7 +67,7 @@ void Em3CalorimeterSD::Initialize(G4HCofThisEvent*HCE) for (G4int j=0;jGetNbOfLayers();j++) {HitID[j] = -1;}; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4bool Em3CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) { @@ -86,7 +85,7 @@ G4bool Em3CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) G4VPhysicalVolume* physVol = theTouchable->GetVolume(); //theTouchable->MoveUpHistory(); G4int LayerNumber = 0; - if (Detector->GetNbOfLayers()>1) LayerNumber=theTouchable->GetReplicaNumber(1); + if(Detector->GetNbOfLayers()>1) LayerNumber=theTouchable->GetReplicaNumber(1); G4int AbsorNo = physVol->GetCopyNo(); if (HitID[LayerNumber]==-1) @@ -107,7 +106,7 @@ G4bool Em3CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) return true; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) { @@ -117,20 +116,20 @@ void Em3CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) HCE->AddHitsCollection(HCID,CalCollection); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3CalorimeterSD::clear() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3CalorimeterSD::DrawAll() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3CalorimeterSD::PrintAll() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3DetectorConstruction.cc index 8ef555222e..90afdba46a 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3DetectorConstruction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3DetectorConstruction.cc,v 1.3.2.1 2001/06/28 19:06:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3DetectorConstruction.cc,v 1.5 2001/10/22 10:58:55 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3DetectorConstruction.hh" #include "Em3DetectorMessenger.hh" @@ -52,7 +52,7 @@ #include "G4UnitsTable.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3DetectorConstruction::Em3DetectorConstruction() :solidWorld(NULL),logicWorld(NULL),physiWorld(NULL), @@ -82,12 +82,12 @@ Em3DetectorConstruction::Em3DetectorConstruction() detectorMessenger = new Em3DetectorMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3DetectorConstruction::~Em3DetectorConstruction() { delete userLimits; delete detectorMessenger;} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em3DetectorConstruction::Construct() { @@ -95,7 +95,7 @@ G4VPhysicalVolume* Em3DetectorConstruction::Construct() return ConstructCalorimeter(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::DefineMaterials() { @@ -114,7 +114,7 @@ G4double temperature, pressure; // define Elements // -a = 1.01*g/mole; +a = 1.008*g/mole; G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); a = 12.01*g/mole; @@ -136,7 +136,7 @@ G4Element* Si = new G4Element(name="Silicon",symbol="Si" , z= 14., a); G4Isotope* U5 = new G4Isotope(name="U235", iz=92, n=235, a=235.01*g/mole); G4Isotope* U8 = new G4Isotope(name="U238", iz=92, n=238, a=238.03*g/mole); -G4Element* U = new G4Element(name="enriched Uranium", symbol="U", ncomponents=2); +G4Element* U = new G4Element(name="enriched Uranium",symbol="U",ncomponents=2); U->AddIsotope(U5, abundance= 90.*perCent); U->AddIsotope(U8, abundance= 10.*perCent); @@ -144,6 +144,10 @@ U->AddIsotope(U8, abundance= 10.*perCent); // define simple materials // +density = 70.8*mg/cm3; +a = 1.008*g/mole; +G4Material* lH2 = new G4Material(name="liquidH2", z=1., a, density); + density = 2.700*g/cm3; a = 26.98*g/mole; G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); @@ -252,8 +256,8 @@ steam->AddMaterial(H2O, fractionmass=1.); density = universe_mean_density; //from PhysicalConstants.h pressure = 3.e-18*pascal; temperature = 2.73*kelvin; -G4Material* vacuum = new G4Material(name="Galactic", z=1., a=1.01*g/mole, density, - kStateGas,temperature,pressure); +G4Material* vacuum = new G4Material(name="Galactic",z=1.,a=1.008*g/mole,density, + kStateGas,temperature,pressure); density = 1.e-5*g/cm3; pressure = 2.e-2*bar; @@ -270,7 +274,7 @@ G4cout << *(G4Material::GetMaterialTable()) << G4endl; defaultMaterial = vacuum; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em3DetectorConstruction::ConstructCalorimeter() { @@ -340,7 +344,7 @@ G4VPhysicalVolume* Em3DetectorConstruction::ConstructCalorimeter() logicLayer, //its logical volume physiCalor, //its mother volume false, //no boolean operation - 0); //copy number + 0); //copy number // // Absorbers @@ -357,7 +361,7 @@ G4VPhysicalVolume* Em3DetectorConstruction::ConstructCalorimeter() AbsorMaterial[k], //its material "Absorber"); //its name - logicAbsor[k]->SetUserLimits(userLimits); + logicAbsor[k]->SetUserLimits(userLimits); G4double xcenter = xfront+0.5*AbsorThickness[k]; xfront += AbsorThickness[k]; @@ -399,7 +403,7 @@ G4VPhysicalVolume* Em3DetectorConstruction::ConstructCalorimeter() return physiWorld; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::PrintCalorParameters() { @@ -407,13 +411,13 @@ void Em3DetectorConstruction::PrintCalorParameters() << "\n ---> The calorimeter is " << NbOfLayers << " layers of:"; for (G4int i=0; iGetName() <<": " + G4cout << "\n \t" << G4std::setw(12) << AbsorMaterial[i]->GetName() <<": " << G4std::setw(6) << G4BestUnit(AbsorThickness[i],"Length"); } G4cout << "\n-------------------------------------------------------------\n"; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::SetNbOfAbsor(G4int ival) { @@ -427,7 +431,7 @@ void Em3DetectorConstruction::SetNbOfAbsor(G4int ival) } NbOfAbsor = ival; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::SetAbsorMaterial(G4int ival,G4String material) { @@ -443,7 +447,7 @@ void Em3DetectorConstruction::SetAbsorMaterial(G4int ival,G4String material) if (pttoMaterial) AbsorMaterial[ival] = pttoMaterial; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::SetAbsorThickness(G4int ival,G4double val) { @@ -462,7 +466,7 @@ void Em3DetectorConstruction::SetAbsorThickness(G4int ival,G4double val) AbsorThickness[ival] = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::SetCalorSizeYZ(G4double val) { @@ -476,7 +480,7 @@ void Em3DetectorConstruction::SetCalorSizeYZ(G4double val) CalorSizeYZ = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::SetNbOfLayers(G4int ival) { @@ -490,7 +494,7 @@ void Em3DetectorConstruction::SetNbOfLayers(G4int ival) NbOfLayers = ival; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::SetMagField(G4double fieldValue) { @@ -511,7 +515,7 @@ void Em3DetectorConstruction::SetMagField(G4double fieldValue) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::SetMaxStepSize(G4double val) { @@ -525,11 +529,11 @@ void Em3DetectorConstruction::SetMaxStepSize(G4double val) userLimits->SetMaxAllowedStep(val); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorConstruction::UpdateGeometry() { G4RunManager::GetRunManager()->DefineWorldVolume(ConstructCalorimeter()); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3DetectorMessenger.cc index 959c64b58c..effaa86715 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3DetectorMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3DetectorMessenger.cc,v 1.3.2.1 2001/06/28 19:06:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3DetectorMessenger.cc,v 1.6 2001/11/05 15:28:40 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3DetectorMessenger.hh" @@ -39,7 +39,7 @@ #include "G4UIcmdWithADoubleAndUnit.hh" #include "G4UIcmdWithoutParameter.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3DetectorMessenger::Em3DetectorMessenger(Em3DetectorConstruction * Em3Det) :Em3Detector(Em3Det) @@ -52,19 +52,19 @@ Em3DetectorMessenger::Em3DetectorMessenger(Em3DetectorConstruction * Em3Det) SizeYZCmd->SetParameterName("Size",false); SizeYZCmd->SetRange("Size>0."); SizeYZCmd->SetUnitCategory("Length"); - SizeYZCmd->AvailableForStates(Idle); + SizeYZCmd->AvailableForStates(PreInit,Idle); NbLayersCmd = new G4UIcmdWithAnInteger("/calor/setNbOfLayers",this); NbLayersCmd->SetGuidance("Set number of layers."); NbLayersCmd->SetParameterName("NbLayers",false); NbLayersCmd->SetRange("NbLayers>0 && NbLayers<500"); - NbLayersCmd->AvailableForStates(Idle); + NbLayersCmd->AvailableForStates(PreInit,Idle); NbAbsorCmd = new G4UIcmdWithAnInteger("/calor/setNbOfAbsor",this); NbAbsorCmd->SetGuidance("Set number of Absorbers."); NbAbsorCmd->SetParameterName("NbAbsor",false); NbAbsorCmd->SetRange("NbAbsor>0"); - NbAbsorCmd->AvailableForStates(Idle); + NbAbsorCmd->AvailableForStates(PreInit,Idle); AbsorCmd = new G4UIcommand("/calor/setAbsor",this); AbsorCmd->SetGuidance("Set the absor nb, the material, the thickness."); @@ -88,8 +88,8 @@ Em3DetectorMessenger::Em3DetectorMessenger(Em3DetectorConstruction * Em3Det) // G4UIparameter* unitPrm = new G4UIparameter("unit",'s',false); unitPrm->SetGuidance("unit of thickness"); - G4String unitCandidates = G4UIcommand::UnitsList(G4UIcommand::CategoryOf("mm")); - unitPrm->SetParameterCandidates(unitCandidates); + G4String unitList = G4UIcommand::UnitsList(G4UIcommand::CategoryOf("mm")); + unitPrm->SetParameterCandidates(unitList); AbsorCmd->SetParameter(unitPrm); // AbsorCmd->AvailableForStates(Idle); @@ -115,7 +115,7 @@ Em3DetectorMessenger::Em3DetectorMessenger(Em3DetectorConstruction * Em3Det) MaxStepCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3DetectorMessenger::~Em3DetectorMessenger() { @@ -129,7 +129,7 @@ Em3DetectorMessenger::~Em3DetectorMessenger() delete Em3detDir; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { @@ -165,4 +165,4 @@ void Em3DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { Em3Detector->SetMaxStepSize(MaxStepCmd->GetNewDoubleValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3EventAction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3EventAction.cc index 4502325156..ad3fd683aa 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3EventAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3EventAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3EventAction.cc,v 1.9.2.1 2001/06/28 19:06:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3EventAction.cc,v 1.12 2001/11/28 17:54:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3EventAction.hh" @@ -47,30 +47,29 @@ #include "G4UImanager.hh" #include "G4ios.hh" #include "G4UnitsTable.hh" -#include "Randomize.hh" #ifndef G4NOHIST #include "CLHEP/Hist/HBookFile.h" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3EventAction::Em3EventAction(Em3RunAction* run,Em3PrimaryGeneratorAction* kin, Em3DetectorConstruction* det) -:Em3Run(run),Em3Kin(kin),Detector(det),calorimeterCollID(-1),drawFlag("all"), - eventMessenger(NULL),printModulo(10000) +:Em3Run(run),Em3Kin(kin),Detector(det),calorimeterCollID(-1),drawFlag("none"), + printModulo(10000),eventMessenger(0) { eventMessenger = new Em3EventActionMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3EventAction::~Em3EventAction() { delete eventMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3EventAction::BeginOfEventAction(const G4Event* evt) { @@ -79,13 +78,6 @@ void Em3EventAction::BeginOfEventAction(const G4Event* evt) //survey printing if (evtNb%printModulo == 0) G4cout << "\n---> Begin Of Event: " << evtNb << G4endl; - - //save rndm status - if (Em3Run->GetRndmFreq() == 2) - { - HepRandom::saveEngineStatus("beginOfEvent.rndm"); - if (evtNb%printModulo == 0) HepRandom::showEngineStatus(); - } // initialize Hits collection if (calorimeterCollID==-1) @@ -95,7 +87,7 @@ void Em3EventAction::BeginOfEventAction(const G4Event* evt) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3EventAction::EndOfEventAction(const G4Event* evt) { @@ -130,12 +122,13 @@ void Em3EventAction::EndOfEventAction(const G4Event* evt) if (G4VVisManager::GetConcreteInstance()) { - G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer(); + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); G4int n_trajectories = 0; if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); for (G4int i=0; iGetTrajectoryContainer()))[i]); + { G4Trajectory* trj = (G4Trajectory*) + ((*(evt->GetTrajectoryContainer()))[i]); if (drawFlag == "all") trj->DrawTrajectory(50); else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) trj->DrawTrajectory(50); @@ -143,6 +136,6 @@ void Em3EventAction::EndOfEventAction(const G4Event* evt) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3EventActionMessenger.cc index 5e15d97a7e..33477f0e28 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3EventActionMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3EventActionMessenger.cc,v 1.2.4.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3EventActionMessenger.cc,v 1.5 2001/11/28 17:54:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3EventActionMessenger.hh" @@ -36,7 +36,7 @@ #include "G4UIcmdWithAnInteger.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3EventActionMessenger::Em3EventActionMessenger(Em3EventAction* EvAct) :eventAction(EvAct) @@ -45,7 +45,7 @@ Em3EventActionMessenger::Em3EventActionMessenger(Em3EventAction* EvAct) DrawCmd->SetGuidance("Draw the tracks in the event"); DrawCmd->SetGuidance(" Choice : none, charged(default), all"); DrawCmd->SetParameterName("choice",true); - DrawCmd->SetDefaultValue("charged"); + DrawCmd->SetDefaultValue("all"); DrawCmd->SetCandidates("none charged all"); DrawCmd->AvailableForStates(Idle); @@ -56,7 +56,7 @@ Em3EventActionMessenger::Em3EventActionMessenger(Em3EventAction* EvAct) PrintCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3EventActionMessenger::~Em3EventActionMessenger() { @@ -64,9 +64,10 @@ Em3EventActionMessenger::~Em3EventActionMessenger() delete PrintCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em3EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void Em3EventActionMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if(command == DrawCmd) {eventAction->SetDrawFlag(newValue);} @@ -75,4 +76,4 @@ void Em3EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValu {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsList.cc b/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsList.cc index 74f0e880d2..2c30a9619a 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsList.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3PhysicsList.cc,v 1.5.4.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3PhysicsList.cc,v 1.7 2001/10/22 10:58:57 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3PhysicsList.hh" #include "Em3PhysicsListMessenger.hh" @@ -41,7 +41,7 @@ #include "G4UnitsTable.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3PhysicsList::Em3PhysicsList(): G4VUserPhysicsList() { @@ -55,12 +55,12 @@ Em3PhysicsList::Em3PhysicsList(): G4VUserPhysicsList() SetVerboseLevel(1); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3PhysicsList::~Em3PhysicsList() {delete pMessenger;} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PhysicsList::ConstructParticle() { @@ -75,7 +75,7 @@ void Em3PhysicsList::ConstructParticle() ConstructBarions(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PhysicsList::ConstructBosons() { @@ -89,8 +89,9 @@ void Em3PhysicsList::ConstructBosons() // optical photon G4OpticalPhoton::OpticalPhotonDefinition(); } - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void Em3PhysicsList::ConstructLeptons() { // leptons @@ -105,7 +106,7 @@ void Em3PhysicsList::ConstructLeptons() G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PhysicsList::ConstructMesons() { @@ -123,7 +124,7 @@ void Em3PhysicsList::ConstructMesons() G4KaonZeroShort::KaonZeroShortDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PhysicsList::ConstructBarions() { @@ -135,7 +136,7 @@ void Em3PhysicsList::ConstructBarions() } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PhysicsList::ConstructProcess() { @@ -144,7 +145,7 @@ void Em3PhysicsList::ConstructProcess() ConstructGeneral(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" @@ -162,7 +163,7 @@ void Em3PhysicsList::ConstructProcess() #include "G4hIonisation.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PhysicsList::ConstructEM() { @@ -210,6 +211,8 @@ void Em3PhysicsList::ConstructEM() } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4Decay.hh" void Em3PhysicsList::ConstructGeneral() @@ -229,7 +232,7 @@ void Em3PhysicsList::ConstructGeneral() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PhysicsList::SetCuts() { @@ -263,7 +266,7 @@ void Em3PhysicsList::SetCuts() if (verboseLevel>0) DumpCutValuesTable(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PhysicsList::SetCutForGamma(G4double cut) { @@ -283,7 +286,7 @@ void Em3PhysicsList::SetCutForProton(G4double cut) cutForProton = cut; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsListMessenger.cc index e47272f3a0..7b055094b0 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3PhysicsListMessenger.cc @@ -21,20 +21,20 @@ // ******************************************************************** // // -// $Id: Em3PhysicsListMessenger.cc,v 1.1.4.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3PhysicsListMessenger.cc,v 1.3 2001/10/22 10:58:57 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3PhysicsListMessenger.hh" #include "Em3PhysicsList.hh" #include "G4UIcmdWithADoubleAndUnit.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3PhysicsListMessenger::Em3PhysicsListMessenger(Em3PhysicsList* pPhys) :pPhysicsList(pPhys) @@ -61,7 +61,7 @@ Em3PhysicsListMessenger::Em3PhysicsListMessenger(Em3PhysicsList* pPhys) protoCutCmd->AvailableForStates(PreInit,Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3PhysicsListMessenger::~Em3PhysicsListMessenger() { @@ -70,9 +70,10 @@ Em3PhysicsListMessenger::~Em3PhysicsListMessenger() delete protoCutCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em3PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +void Em3PhysicsListMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if( command == gammaCutCmd ) { pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));} @@ -81,7 +82,7 @@ void Em3PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue { pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));} if( command == protoCutCmd ) - { pPhysicsList->SetCutForProton(protoCutCmd->GetNewDoubleValue(newValue));} + { pPhysicsList->SetCutForProton(protoCutCmd->GetNewDoubleValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorAction.cc index 93eaf9e989..ec852af6dd 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3PrimaryGeneratorAction.cc,v 1.3.2.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3PrimaryGeneratorAction.cc,v 1.5 2001/10/22 10:58:57 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3PrimaryGeneratorAction.hh" @@ -40,7 +40,7 @@ #include "G4ParticleDefinition.hh" #include "Randomize.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3PrimaryGeneratorAction::Em3PrimaryGeneratorAction( Em3DetectorConstruction* Em3DC) @@ -55,7 +55,7 @@ Em3PrimaryGeneratorAction::Em3PrimaryGeneratorAction( gunMessenger = new Em3PrimaryGeneratorMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3PrimaryGeneratorAction::~Em3PrimaryGeneratorAction() { @@ -63,7 +63,7 @@ Em3PrimaryGeneratorAction::~Em3PrimaryGeneratorAction() delete gunMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PrimaryGeneratorAction::SetDefaultKinematic() { @@ -78,7 +78,7 @@ void Em3PrimaryGeneratorAction::SetDefaultKinematic() particleGun->SetParticlePosition(G4ThreeVector(position,0.*cm,0.*cm)); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { @@ -99,5 +99,5 @@ void Em3PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) else particleGun->GeneratePrimaryVertex(anEvent); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorMessenger.cc index f9b1de339a..03bd286964 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3PrimaryGeneratorMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em3PrimaryGeneratorMessenger.cc,v 1.3.2.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3PrimaryGeneratorMessenger.cc,v 1.5 2001/10/22 10:58:57 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3PrimaryGeneratorMessenger.hh" @@ -35,13 +35,14 @@ #include "G4UIcmdWithoutParameter.hh" #include "G4UIcmdWithADouble.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -Em3PrimaryGeneratorMessenger::Em3PrimaryGeneratorMessenger(Em3PrimaryGeneratorAction* Em3Gun) +Em3PrimaryGeneratorMessenger::Em3PrimaryGeneratorMessenger( + Em3PrimaryGeneratorAction* Em3Gun) :Em3Action(Em3Gun) { DefaultCmd = new G4UIcmdWithoutParameter("/gun/setDefault",this); - DefaultCmd->SetGuidance("set/reset the kinematic defined in PrimaryGenerator"); + DefaultCmd->SetGuidance("set/reset kinematic defined in PrimaryGenerator"); DefaultCmd->AvailableForStates(PreInit,Idle); RndmCmd = new G4UIcmdWithADouble("/gun/rndm",this); @@ -52,7 +53,7 @@ Em3PrimaryGeneratorMessenger::Em3PrimaryGeneratorMessenger(Em3PrimaryGeneratorAc RndmCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3PrimaryGeneratorMessenger::~Em3PrimaryGeneratorMessenger() { @@ -60,9 +61,10 @@ Em3PrimaryGeneratorMessenger::~Em3PrimaryGeneratorMessenger() delete RndmCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em3PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +void Em3PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if( command == DefaultCmd ) { Em3Action->SetDefaultKinematic();} @@ -71,5 +73,5 @@ void Em3PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command,G4String new { Em3Action->SetRndmBeam(RndmCmd->GetNewDoubleValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3RunAction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3RunAction.cc index fc372e7d9a..db89cd2752 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3RunAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3RunAction.cc @@ -21,19 +21,20 @@ // ******************************************************************** // // -// $Id: Em3RunAction.cc,v 1.11.2.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3RunAction.cc,v 1.15 2001/11/28 17:54:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3RunAction.hh" #include "Em3RunActionMessenger.hh" #include "G4Run.hh" #include "G4Material.hh" +#include "G4RunManager.hh" #include "G4UImanager.hh" #include "G4VVisManager.hh" #include "G4ios.hh" @@ -46,13 +47,13 @@ #include "CLHEP/Hist/HBookFile.h" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3RunAction::Em3RunAction(Em3DetectorConstruction* det) :Detector(det) { runMessenger = new Em3RunActionMessenger(this); - saveRndm = 1; + #ifndef G4NOHIST // init hbook hbookManager = new HBookFile("TestEm3.paw", 68); @@ -60,7 +61,7 @@ Em3RunAction::Em3RunAction(Em3DetectorConstruction* det) #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3RunAction::~Em3RunAction() { @@ -75,17 +76,16 @@ Em3RunAction::~Em3RunAction() #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3RunAction::BeginOfRunAction(const G4Run* aRun) { G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("beginOfRun.rndm"); - } + // + G4RunManager::GetRunManager()->SetRandomNumberStore(true); + HepRandom::showEngineStatus(); //initialize cumulative quantities // @@ -95,11 +95,8 @@ void Em3RunAction::BeginOfRunAction(const G4Run* aRun) //drawing // if (G4VVisManager::GetConcreteInstance()) - { - G4UImanager* UI = G4UImanager::GetUIpointer(); - UI->ApplyCommand("/vis/scene/notifyHandlers"); - } - + G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers"); + //histograms // bookHisto(); @@ -109,7 +106,7 @@ void Em3RunAction::BeginOfRunAction(const G4Run* aRun) ////PrintDedxTables(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3RunAction::bookHisto() { @@ -130,9 +127,9 @@ void Em3RunAction::bookHisto() #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em3RunAction::SetHisto(G4int idh, G4int nbins, G4double vmin, G4double vmax) +void Em3RunAction::SetHisto(G4int idh,G4int nbins,G4double vmin,G4double vmax) { #ifndef G4NOHIST // (re)book histograms @@ -145,7 +142,7 @@ void Em3RunAction::SetHisto(G4int idh, G4int nbins, G4double vmin, G4double vmax #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3RunAction::EndOfRunAction(const G4Run* aRun) @@ -164,7 +161,8 @@ void Em3RunAction::EndOfRunAction(const G4Run* aRun) G4int oldprec = G4cout.precision(2); G4cout << "\n-------------------------------------------------------------\n" - << G4std::setw(51) << "total energy dep" << G4std::setw(30) << "total tracklen \n \n"; + << G4std::setw(51) << "total energy dep" + << G4std::setw(30) << "total tracklen \n \n"; for (G4int k=0; kGetNbOfAbsor(); k++) { @@ -178,7 +176,8 @@ void Em3RunAction::EndOfRunAction(const G4Run* aRun) // G4cout << " Absorber" << k - << " (" << G4std::setw(12) << Detector->GetAbsorMaterial(k)->GetName() << ") :" + << " (" << G4std::setw(12) << Detector->GetAbsorMaterial(k)->GetName() + << ") :" << G4std::setw( 7) << G4BestUnit(MeanEAbs,"Energy") << " +- " << G4std::setw( 5) << G4BestUnit( rmsEAbs,"Energy") << G4std::setw(12) << G4BestUnit(MeanLAbs,"Length") << " +- " @@ -191,14 +190,11 @@ void Em3RunAction::EndOfRunAction(const G4Run* aRun) G4cout.setf(oldform,G4std::ios::floatfield); G4cout.precision(oldprec); - // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("endOfRun.rndm"); - } + // show Rndm status + HepRandom::showEngineStatus(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4ParticleTable.hh" #include "G4ParticleDefinition.hh" @@ -206,19 +202,19 @@ void Em3RunAction::EndOfRunAction(const G4Run* aRun) #include "G4Electron.hh" #include "G4EnergyLossTables.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3RunAction::PrintDedxTables() { //Print dE/dx tables with binning identical to the Geant3 JMATE bank. - //The printout is readable as Geant3 ffread data cards (by the Geant3 program g4mat). + //The printout is readable as Geant3 ffread data cards (by the program g4mat). // const G4double tkmin=10*keV, tkmax=10*TeV; const G4int nbin=90; G4double tk[nbin]; const G4int ncolumn = 5; - + //compute the kinetic energies // const G4double dp = log10(tkmax/tkmin)/nbin; @@ -249,19 +245,21 @@ void Em3RunAction::PrintDedxTables() { G4Material* mat = Detector->GetAbsorMaterial(iab); G4cout << "\nLIST"; - G4cout << "\nC \nC dE/dx (MeV/cm) for " << part->GetParticleName() << " in " - << mat ->GetName() << "\nC"; + G4cout << "\nC \nC dE/dx (MeV/cm) for " << part->GetParticleName() + << " in " << mat ->GetName() << "\nC"; G4cout << "\nKINE (" << part->GetParticleName() << ")"; G4cout << "\nMATE (" << mat ->GetName() << ")"; G4cout.precision(2); G4cout << "\nERAN " << tkmin/GeV << " (ekmin)\t" << tkmax/GeV << " (ekmax)\t" << nbin << " (nekbin)"; - G4double cutgam = (G4Gamma::Gamma()->GetCutsInEnergy())[mat->GetIndex()]; + G4double cutgam = (G4Gamma::Gamma()->GetEnergyCuts())[mat->GetIndex()]; if (cutgam < tkmin) cutgam = tkmin; if (cutgam > tkmax) cutgam = tkmax; - G4double cutele = (G4Electron::Electron()->GetCutsInEnergy())[mat->GetIndex()]; - if (cutele < tkmin) cutele = tkmin; if (cutele > tkmax) cutele = tkmax; - G4cout << "\nCUTS " << cutgam/GeV << " (cutgam)\t" << cutele/GeV << " (cutele)"; + G4double cutele = (G4Electron::Electron() + ->GetEnergyCuts())[mat->GetIndex()]; + if (cutele < tkmin) cutele = tkmin; if (cutele > tkmax) cutele = tkmax; + G4cout << "\nCUTS " << cutgam/GeV << " (cutgam)\t" + << cutele/GeV << " (cutele)"; G4cout.precision(6); G4cout << "\nG4VAL \n "; @@ -278,4 +276,4 @@ void Em3RunAction::PrintDedxTables() G4cout.setf(oldform,G4std::ios::floatfield); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3RunActionMessenger.cc b/examples/extended/electromagnetic/TestEm3/src/Em3RunActionMessenger.cc index 07ccd580f6..73b2d2361d 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3RunActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3RunActionMessenger.cc @@ -21,50 +21,27 @@ // ******************************************************************** // // -// $Id: Em3RunActionMessenger.cc,v 1.5.2.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3RunActionMessenger.cc,v 1.8 2001/11/28 17:54:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3RunActionMessenger.hh" #include "Em3RunAction.hh" -#include "G4UIdirectory.hh" -#include "G4UIcmdWithAString.hh" -#include "G4UIcmdWithAnInteger.hh" #include "G4UIcommand.hh" #include "G4UIparameter.hh" #include "G4ios.hh" #include "globals.hh" -#include "Randomize.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3RunActionMessenger::Em3RunActionMessenger(Em3RunAction* run) :Em3Run(run) { - RndmDir = new G4UIdirectory("/rndm/"); - RndmDir->SetGuidance("Rndm status control."); - - RndmSaveCmd = new G4UIcmdWithAnInteger("/rndm/save",this); - RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files."); - RndmSaveCmd->SetGuidance("freq = 0 not saved"); - RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq > 0 saved on: endOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq = 2 saved on: beginOfEvent.rndm"); - RndmSaveCmd->SetParameterName("frequency",false); - RndmSaveCmd->SetRange("frequency>=0 && frequency<=2"); - RndmSaveCmd->AvailableForStates(PreInit,Idle); - - RndmReadCmd = new G4UIcmdWithAString("/rndm/read",this); - RndmReadCmd->SetGuidance("get rndm status from an external file."); - RndmReadCmd->SetParameterName("fileName",true); - RndmReadCmd->SetDefaultValue ("beginOfRun.rndm"); - RndmReadCmd->AvailableForStates(PreInit,Idle); - HistoCmd = new G4UIcommand("/run/setHisto",this); HistoCmd->SetGuidance("Set histo Edep/Ebeam in absorber k"); HistoCmd->SetGuidance(" histo=absor number : from 0 to NbOfAbsor-1"); @@ -93,27 +70,17 @@ Em3RunActionMessenger::Em3RunActionMessenger(Em3RunAction* run) HistoCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3RunActionMessenger::~Em3RunActionMessenger() { - delete RndmSaveCmd; delete RndmReadCmd; delete RndmDir; delete HistoCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em3RunActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void Em3RunActionMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { - if (command == RndmSaveCmd) - Em3Run->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValue)); - - if (command == RndmReadCmd) - { G4cout << "\n---> rndm status restored from file: " << newValue << G4endl; - HepRandom::restoreEngineStatus(newValue); - HepRandom::showEngineStatus(); - } - if (command == HistoCmd) { G4int idh,nbins; G4double vmin,vmax; const char* t = newValue; @@ -123,4 +90,4 @@ void Em3RunActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3SteppingAction.cc b/examples/extended/electromagnetic/TestEm3/src/Em3SteppingAction.cc index 4f50b9f300..001057631e 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3SteppingAction.cc @@ -21,28 +21,28 @@ // ******************************************************************** // // -// $Id: Em3SteppingAction.cc,v 1.3.2.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3SteppingAction.cc,v 1.5 2001/10/22 10:58:59 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3SteppingAction.hh" #include "G4Step.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3SteppingAction::Em3SteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3SteppingAction::~Em3SteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3SteppingAction::UserSteppingAction(const G4Step* aStep) { @@ -52,7 +52,7 @@ void Em3SteppingAction::UserSteppingAction(const G4Step* aStep) //// << " response after Birk: " << response/keV << " keV" << G4endl; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double Em3SteppingAction::BirkAttenuation(const G4Step* aStep) { @@ -76,5 +76,5 @@ G4double Em3SteppingAction::BirkAttenuation(const G4Step* aStep) return response; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm3/src/Em3SteppingVerbose.cc index a78259a635..a8390ad1c3 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3SteppingVerbose.cc @@ -21,28 +21,28 @@ // ******************************************************************** // // -// $Id: Em3SteppingVerbose.cc,v 1.6.2.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3SteppingVerbose.cc,v 1.8 2001/10/22 10:58:59 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em3SteppingVerbose.hh" #include "G4SteppingManager.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3SteppingVerbose::Em3SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3SteppingVerbose::~Em3SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3SteppingVerbose::StepInfo() { @@ -66,14 +66,14 @@ void Em3SteppingVerbose::StepInfo() << G4std::setw(10) << "Process" << G4endl; } - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); // if( fStepStatus != fWorldBoundary){ if( fTrack->GetNextVolume() != 0 ) { @@ -84,8 +84,8 @@ void Em3SteppingVerbose::StepInfo() if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ G4cout << " " - << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + << G4std::setw(10) << fStep->GetPostStepPoint() + ->GetProcessDefinedStep()->GetProcessName(); } else { G4cout << " UserLimit"; } @@ -107,7 +107,7 @@ void Em3SteppingVerbose::StepInfo() << " ---------------" << G4endl; - for(G4int lp1=(*fSecondary).size()-tN2ndariesTot; + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; lp1<(*fSecondary).size(); lp1++){ G4cout << " : " << G4std::setw(6) @@ -134,7 +134,7 @@ void Em3SteppingVerbose::StepInfo() G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3SteppingVerbose::TrackingStarted() { @@ -154,14 +154,14 @@ G4int prec = G4cout.precision(3); << G4std::setw(10) << "Volume" << " " << G4std::setw(10) << "Process" << G4endl; - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); if(fTrack->GetNextVolume()){ G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); @@ -173,4 +173,4 @@ G4int prec = G4cout.precision(3); G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/src/Em3VisManager.cc b/examples/extended/electromagnetic/TestEm3/src/Em3VisManager.cc index 88b8efda8e..82437a353c 100644 --- a/examples/extended/electromagnetic/TestEm3/src/Em3VisManager.cc +++ b/examples/extended/electromagnetic/TestEm3/src/Em3VisManager.cc @@ -21,14 +21,14 @@ // ******************************************************************** // // -// $Id: Em3VisManager.cc,v 1.3.2.1 2001/06/28 19:06:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em3VisManager.cc,v 1.6 2001/11/15 13:09:47 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifdef G4VIS_USE @@ -36,18 +36,21 @@ // Supported drivers... -#ifdef G4VIS_USE_ASCIITREE +// Not needing external packages or libraries... #include "G4ASCIITree.hh" -#endif +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -76,40 +79,34 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYTRACER -#include "G4RayTracer.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em3VisManager::Em3VisManager () {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em3VisManager::RegisterGraphicsSystems () { -#ifdef G4VIS_USE_ASCIITREE + // Graphics Systems not needing external packages or libraries... RegisterGraphicsSystem (new G4ASCIITree); -#endif + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -138,20 +135,11 @@ void Em3VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYTRACER - RegisterGraphicsSystem (new G4RayTracer); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." @@ -162,4 +150,4 @@ void Em3VisManager::RegisterGraphicsSystems () { #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm3/storeTables.mac b/examples/extended/electromagnetic/TestEm3/storeTables.mac new file mode 100644 index 0000000000..41556e72cb --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/storeTables.mac @@ -0,0 +1,22 @@ +# $Id: storeTables.mac,v 1.2 2001/11/28 17:54:46 maire Exp $ +# +# Macro file for "testEm3.cc" +# +# can be run in batch, without graphic +# or interactively: Idle> /control/execute run1.mac +# +/control/verbose 2 +# +/run/initialize +/run/particle/storePhysicsTable physdata +# +/gun/particle e- +/gun/energy 1 GeV +# +/run/beamOn 3 +# +/run/particle/retrievePhysicsTable physdata +# +/random/resetEngineFrom currentRun.rndm +/run/beamOn 3 +# diff --git a/examples/extended/electromagnetic/TestEm3/vis.mac b/examples/extended/electromagnetic/TestEm3/vis.mac new file mode 100644 index 0000000000..bc4bf9c08e --- /dev/null +++ b/examples/extended/electromagnetic/TestEm3/vis.mac @@ -0,0 +1,29 @@ +# +# Macro file for the initialization phase of "TestEm3.cc" +# +# Sets some default verbose +# and initializes the graphic. +# +/control/verbose 2 +/run/verbose 2 +/run/initialize +# +# Create empty scene ("world" is default) +/vis/scene/create +# +# Create a scene handler for a specific graphics system +# Edit the next line(s) to choose another graphic system +# +/vis/open DAWNFILE +/vis/open OGLIX +# +# Draw scene +/vis/viewer/zoom 1.4 +/vis/viewer/flush +# +# for drawing the tracks +# if too many tracks cause core dump => storeTrajectory 0 +/tracking/storeTrajectory 1 +/vis/scene/endOfEventAction accumulate +# +/event/drawTracks diff --git a/examples/extended/electromagnetic/TestEm4/History b/examples/extended/electromagnetic/TestEm4/History index 2fc98bebf9..0fe83a992c 100644 --- a/examples/extended/electromagnetic/TestEm4/History +++ b/examples/extended/electromagnetic/TestEm4/History @@ -1,4 +1,4 @@ -$Id: History,v 1.9 2001/03/26 17:34:22 maire Exp $ +$Id: History,v 1.14 2001/11/28 15:07:21 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,23 +14,41 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +28-11-01 mma (testem4-V03-02-02) +- EventAction: DrawTrack "none" +- small change in vis.mac +- suppression of the rndm commands, now managed by G4RunManager: + --> RunAction, EventAction. suppression of RunActionMessenger + +26-10-01 mma (testem4-V03-02-01) +- init.mac renamed vis.mac + +19-10-01 Steve O'Neale (examples-V03-02-00) +- Update reference output + +17-10-01 mma (testem4-V03-02-00) +- new vis commands +- 80 columns everywhere + 21-02-01 mma (testem4-V03-00-03) - - hbook histograms restored - - set cppflag G4NOHIST = true in gnumakefile +- hbook histograms restored +- set cppflag G4NOHIST = true in gnumakefile 20-02-01 mma (testem4-V03-00-02) - - verbose stepping adapted for STL - - save rndm at begin of event +- verbose stepping adapted for STL +- save rndm at begin of event 07-12-00 mma (testem4-V02-00-03 & testem-noHist) - remove hbook histograms: GNUmakefile,runAction,eventAction +- remove hbook histograms: GNUmakefile,runAction,eventAction 06-12-00 mma (testem4-V02-00-02 & testem-withHist) - update of init.mac for new vis commands. - G4UItcsh in the main() +- update of init.mac for new vis commands. +- G4UItcsh in the main() 25th November 2000 Steve O'Neale (tagset210) -- Update test outputs for Change in energy cut table printout (cuts not calculated) +- Update test outputs for Change in energy cut table printout + (cuts not calculated) - After 50000 events the seeds are not the same as for Aug 28th. June 17, 2000 John Allison (testem4-V01-00-00) diff --git a/examples/extended/electromagnetic/TestEm4/README b/examples/extended/electromagnetic/TestEm4/README index 9beaafb09d..c73d87e781 100644 --- a/examples/extended/electromagnetic/TestEm4/README +++ b/examples/extended/electromagnetic/TestEm4/README @@ -1,4 +1,4 @@ -$Id: README,v 1.4 2001/03/30 12:39:05 gcosmo Exp $ +$Id: README,v 1.5 2001/10/25 14:04:22 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -27,8 +27,8 @@ $Id: README,v 1.4 2001/03/30 12:39:05 gcosmo Exp $ 4- VISUALIZATION The Visualization Manager is set in the main(). - The initialisation of the drawing is done via the command - /vis~/create_view in the macro init.mac. This macro is + The initialisation of the drawing is done via the commands + /vis/.. in the macro vis.mac. This macro is automatically read from the main in case of interactive running mode. The detector has a default view which is a transversal view of the diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.cc b/examples/extended/electromagnetic/TestEm4/TestEm4.cc index 065e1596eb..aa89fe9cae 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.cc +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: TestEm4.cc,v 1.5.4.1 2001/06/28 19:07:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: TestEm4.cc,v 1.7 2001/10/25 14:04:22 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... @@ -90,7 +90,7 @@ int main(int argc,char** argv) { #else session = new G4UIterminal(); #endif - UI->ApplyCommand("/control/execute init.mac"); + UI->ApplyCommand("/control/execute vis.mac"); session->SessionStart(); delete session; } diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.in b/examples/extended/electromagnetic/TestEm4/TestEm4.in index 91eba45c03..46a0820bb2 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.in +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.in @@ -1,4 +1,4 @@ -# $Id: TestEm4.in,v 1.1 2000/01/21 13:53:25 maire Exp $ +# $Id: TestEm4.in,v 1.2 2001/11/28 15:07:21 maire Exp $ # # Macro file for "TestEm4.cc" # @@ -6,11 +6,7 @@ # /control/verbose 2 # -#/run/particle/setCut 1.0 mm -#/run/initialize -# /run/verbose 2 -/event/drawTracks none /event/printModulo 10000 # /run/beamOn 50000 diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.out b/examples/extended/electromagnetic/TestEm4/TestEm4.out index 47faa0d030..166ff8e8b2 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.out +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.out @@ -1,8 +1,21 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) Material: FluorCarbonate density: 1.610 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 22.435 cm ---> Element: Carbon C Z = 6.0 N = 12.0 A = 12.01 g/mole fractionMass: 38.74 % Abundance 50.00 % ---> Element: Fluorine N Z = 9.0 N = 19.0 A = 18.99 g/mole fractionMass: 61.26 % Abundance 50.00 % @@ -13,49 +26,40 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. Good description from 1 KeV to 100 GeV. log scale extrapolation above 100 GeV Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. ============= The cut Energy ============================== gamma e- -Cut in range 1 mm 1 mm +Cut in range + FluorCarbonate 1 mm 1 mm Cut in energy FluorCarbonate 3.61 keV 429 keV =================================================== -# $Id: TestEm4.out,v 1.14 2001/04/26 12:33:41 stesting Exp $ -# -# Macro file for "TestEm4.cc" -# -# (can be run in batch, without graphic) -# -# -#/run/particle/setCut 1.0 mm -#/run/initialize # /run/verbose 2 -/event/drawTracks none /event/printModulo 10000 # /run/beamOn 50000 @@ -66,6 +70,10 @@ Cut in energy Current couple of seeds = 9876, 54321 ---------------------------------------- Start closing geometry. +G4GeometryManager::ReportVoxelStats -- Voxel Statistics + + Total memory consumed for geometry optimisation: 0 kByte + Total CPU time elapsed for geometry optimisation: 0 seconds Start Run processing. ---> Begin of Event: 0 @@ -80,12 +88,14 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 50000 - User=44s Real=49s Sys=4.5s + User=30s Real=6e+02s Sys=51s --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 566407188, 1038419059 + Current couple of seeds = 396267069, 1477813938 ---------------------------------------- +Graphics systems deleted. +Visualization Manager deleting... G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4DetectorConstruction.hh index a655faf220..81b02a3cbe 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4DetectorConstruction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4DetectorConstruction.hh,v 1.2.4.1 2001/06/28 19:07:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4DetectorConstruction.hh,v 1.4 2001/10/17 14:04:13 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em4DetectorConstruction_h #define Em4DetectorConstruction_h 1 @@ -35,8 +35,7 @@ #include "G4VUserDetectorConstruction.hh" #include "globals.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em4DetectorConstruction : public G4VUserDetectorConstruction { @@ -48,5 +47,7 @@ class Em4DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* Construct(); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4EventAction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4EventAction.hh index ae7c6a1afb..d3e35a5ee9 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4EventAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4EventAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4EventAction.hh,v 1.2.4.1 2001/06/28 19:07:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4EventAction.hh,v 1.4 2001/10/17 14:04:14 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em4EventAction_h #define Em4EventAction_h 1 @@ -38,7 +38,7 @@ class Em4RunAction; class Em4EventActionMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em4EventAction : public G4UserEventAction { @@ -63,6 +63,8 @@ class Em4EventAction : public G4UserEventAction Em4EventActionMessenger* eventMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm4/include/Em4EventActionMessenger.hh index 53c69df7a2..091c422748 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4EventActionMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4EventActionMessenger.hh,v 1.2.4.1 2001/06/28 19:07:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4EventActionMessenger.hh,v 1.4 2001/10/17 14:04:14 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em4EventActionMessenger_h #define Em4EventActionMessenger_h 1 @@ -39,7 +39,7 @@ class Em4EventAction; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em4EventActionMessenger: public G4UImessenger { @@ -55,4 +55,6 @@ class Em4EventActionMessenger: public G4UImessenger G4UIcmdWithAnInteger* PrintCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4PhysicsList.hh b/examples/extended/electromagnetic/TestEm4/include/Em4PhysicsList.hh index 08bb1fe461..17569fb881 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4PhysicsList.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4PhysicsList.hh,v 1.2.4.1 2001/06/28 19:07:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4PhysicsList.hh,v 1.4 2001/10/17 14:04:14 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em4PhysicsList_h #define Em4PhysicsList_h 1 @@ -35,7 +35,7 @@ #include "G4VUserPhysicsList.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em4PhysicsList: public G4VUserPhysicsList { @@ -62,6 +62,8 @@ class Em4PhysicsList: public G4VUserPhysicsList }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4PrimaryGeneratorAction.hh index 2825ecd0c7..a3715dfa00 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4PrimaryGeneratorAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4PrimaryGeneratorAction.hh,v 1.2.4.1 2001/06/28 19:07:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4PrimaryGeneratorAction.hh,v 1.4 2001/10/17 14:04:14 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em4PrimaryGeneratorAction_h #define Em4PrimaryGeneratorAction_h 1 @@ -38,8 +38,7 @@ class G4ParticleGun; class G4Event; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em4PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { @@ -54,6 +53,8 @@ class Em4PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction G4ParticleGun* particleGun; //pointer a to G4 service class }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4RunAction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4RunAction.hh index 2c02c250c1..84c57a388e 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4RunAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4RunAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4RunAction.hh,v 1.5.2.1 2001/06/28 19:07:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4RunAction.hh,v 1.8 2001/11/28 15:07:22 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em4RunAction_h #define Em4RunAction_h 1 @@ -35,10 +35,9 @@ #include "G4UserRunAction.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4Run; -class Em4RunActionMessenger; #ifndef G4NOHIST class HepTupleManager; @@ -55,9 +54,6 @@ class Em4RunAction : public G4UserRunAction void BeginOfRunAction(const G4Run*); void EndOfRunAction(const G4Run*); - void SetRndmFreq(G4int val) {saveRndm = val;} - G4int GetRndmFreq() {return saveRndm;} - #ifndef G4NOHIST HepHistogram* GetHisto(G4int id) {return histo[id];} #endif @@ -66,8 +62,6 @@ class Em4RunAction : public G4UserRunAction void bookHisto(); private: - Em4RunActionMessenger* runMessenger; - G4int saveRndm; #ifndef G4NOHIST HepTupleManager* hbookManager; @@ -75,5 +69,7 @@ class Em4RunAction : public G4UserRunAction #endif }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4SteppingAction.hh b/examples/extended/electromagnetic/TestEm4/include/Em4SteppingAction.hh index df98c502ab..008ad754d8 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4SteppingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em4SteppingAction.hh,v 1.2.4.1 2001/06/28 19:07:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4SteppingAction.hh,v 1.3 2001/07/11 09:57:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm4/include/Em4SteppingVerbose.hh index 68324a1de8..5579ee3346 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4SteppingVerbose.hh @@ -21,22 +21,22 @@ // ******************************************************************** // // -// $Id: Em4SteppingVerbose.hh,v 1.5.2.1 2001/06/28 19:07:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4SteppingVerbose.hh,v 1.7 2001/10/17 14:04:14 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. // It shows how to extract informations during the tracking of a particle. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em4SteppingVerbose_h #define Em4SteppingVerbose_h 1 #include "G4SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em4SteppingVerbose : public G4SteppingVerbose { @@ -50,4 +50,6 @@ public: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4VisManager.hh b/examples/extended/electromagnetic/TestEm4/include/Em4VisManager.hh index 78ff5844a2..efe27ae460 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4VisManager.hh +++ b/examples/extended/electromagnetic/TestEm4/include/Em4VisManager.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4VisManager.hh,v 1.2.4.1 2001/06/28 19:07:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4VisManager.hh,v 1.4 2001/10/17 14:04:15 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Example Visualization Manager implementing virtual function // RegisterGraphicsSystems. Exploits C-pre-processor variables @@ -42,14 +42,14 @@ // G4VisManager* myVisManager = new MyVisManager; // myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em4VisManager_h #define Em4VisManager_h 1 #include "G4VisManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em4VisManager: public G4VisManager { @@ -63,4 +63,6 @@ private: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm4/run01.mac b/examples/extended/electromagnetic/TestEm4/run01.mac index 56630beb41..b0600c5ccc 100644 --- a/examples/extended/electromagnetic/TestEm4/run01.mac +++ b/examples/extended/electromagnetic/TestEm4/run01.mac @@ -1,4 +1,4 @@ -# $Id: run01.mac,v 1.2 2000/01/20 17:27:55 maire Exp $ +# $Id: run01.mac,v 1.4 2001/11/28 15:07:22 maire Exp $ # # Macro file for "TestEm4.cc" # @@ -10,7 +10,6 @@ #/run/initialize # /run/verbose 2 -/event/drawTracks none -/event/printModulo 1000 +/event/printModulo 10000 # /run/beamOn 100000 diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4DetectorConstruction.cc index 1a2ea983c9..ccc2410325 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4DetectorConstruction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4DetectorConstruction.cc,v 1.2.4.1 2001/06/28 19:07:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4DetectorConstruction.cc,v 1.4 2001/10/17 14:04:15 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em4DetectorConstruction.hh" @@ -41,17 +41,17 @@ #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4DetectorConstruction::Em4DetectorConstruction() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4DetectorConstruction::~Em4DetectorConstruction() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em4DetectorConstruction::Construct() { @@ -70,7 +70,7 @@ G4VPhysicalVolume* Em4DetectorConstruction::Construct() G4Element* elF = new G4Element(name="Fluorine",symbol="N" , z= 9., a); G4double density = 1.61*g/cm3; - G4Material* matC6F6 = new G4Material(name="FluorCarbonate",density,ncomponents=2); + G4Material* matC6F6 = new G4Material("FluorCarbonate",density,ncomponents=2); matC6F6->AddElement(elC, natoms=6); matC6F6->AddElement(elF, natoms=6); @@ -113,3 +113,5 @@ G4VPhysicalVolume* Em4DetectorConstruction::Construct() return physiWorld; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4EventAction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4EventAction.cc index a34c270573..d5f1f666d8 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4EventAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4EventAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4EventAction.cc,v 1.6.2.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4EventAction.cc,v 1.9 2001/11/28 15:07:22 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em4EventAction.hh" @@ -47,22 +47,22 @@ #include "CLHEP/Hist/HBookFile.h" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4EventAction::Em4EventAction(Em4RunAction* run) -:Em4Run(run),drawFlag("all"),printModulo(10000),eventMessenger(NULL) +:Em4Run(run),drawFlag("none"),printModulo(10000),eventMessenger(NULL) { eventMessenger = new Em4EventActionMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4EventAction::~Em4EventAction() { delete eventMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4EventAction::BeginOfEventAction( const G4Event* evt) { @@ -70,20 +70,13 @@ void Em4EventAction::BeginOfEventAction( const G4Event* evt) //printing survey if (evtNb%printModulo == 0) - G4cout << "\n---> Begin of Event: " << evtNb << G4endl; - - //save rndm status - if (Em4Run->GetRndmFreq() == 2) - { - HepRandom::saveEngineStatus("beginOfEvent.rndm"); - if (evtNb%printModulo == 0) HepRandom::showEngineStatus(); - } - + G4cout << "\n---> Begin of Event: " << evtNb << G4endl; + //additional initializations TotalEnergyDeposit = 0.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4EventAction::EndOfEventAction( const G4Event* evt) { @@ -94,16 +87,15 @@ void Em4EventAction::EndOfEventAction( const G4Event* evt) #ifndef G4NOHIST Em4Run->GetHisto(0)->accumulate(TotalEnergyDeposit/MeV); #endif - - G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); - if(pVVisManager) + if(G4VVisManager::GetConcreteInstance()) { G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); G4int n_trajectories = 0; if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); for(G4int i=0; iGetTrajectoryContainer()))[i]); + { G4Trajectory* trj = (G4Trajectory *) + ((*(evt->GetTrajectoryContainer()))[i]); if (drawFlag == "all") trj->DrawTrajectory(50); else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) trj->DrawTrajectory(50); @@ -111,6 +103,6 @@ void Em4EventAction::EndOfEventAction( const G4Event* evt) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm4/src/Em4EventActionMessenger.cc index 722a88ed7f..680cb97af3 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4EventActionMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4EventActionMessenger.cc,v 1.2.4.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4EventActionMessenger.cc,v 1.4 2001/10/17 14:04:15 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em4EventActionMessenger.hh" @@ -36,7 +36,7 @@ #include "G4UIcmdWithAnInteger.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4EventActionMessenger::Em4EventActionMessenger(Em4EventAction* EvAct) :eventAction(EvAct) @@ -56,7 +56,7 @@ Em4EventActionMessenger::Em4EventActionMessenger(Em4EventAction* EvAct) PrintCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4EventActionMessenger::~Em4EventActionMessenger() { @@ -64,9 +64,10 @@ Em4EventActionMessenger::~Em4EventActionMessenger() delete PrintCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em4EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void Em4EventActionMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if(command == DrawCmd) {eventAction->SetDrawFlag(newValue);} @@ -75,4 +76,4 @@ void Em4EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValu {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4PhysicsList.cc b/examples/extended/electromagnetic/TestEm4/src/Em4PhysicsList.cc index f5e75ff1b5..af65222773 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4PhysicsList.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4PhysicsList.cc,v 1.3.4.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4PhysicsList.cc,v 1.5 2001/10/17 14:04:15 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em4PhysicsList.hh" @@ -38,7 +38,7 @@ #include "G4ParticleTable.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4PhysicsList::Em4PhysicsList() : G4VUserPhysicsList() @@ -47,12 +47,12 @@ Em4PhysicsList::Em4PhysicsList() SetVerboseLevel(1); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4PhysicsList::~Em4PhysicsList() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4PhysicsList::ConstructParticle() { @@ -65,7 +65,7 @@ void Em4PhysicsList::ConstructParticle() ConstructLeptons(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4PhysicsList::ConstructBosons() { @@ -73,7 +73,8 @@ void Em4PhysicsList::ConstructBosons() G4Gamma::GammaDefinition(); } - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4PhysicsList::ConstructLeptons() { @@ -82,7 +83,7 @@ void Em4PhysicsList::ConstructLeptons() G4Positron::PositronDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4PhysicsList::ConstructProcess() { @@ -90,7 +91,7 @@ void Em4PhysicsList::ConstructProcess() ConstructEM(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" @@ -103,7 +104,7 @@ void Em4PhysicsList::ConstructProcess() #include "G4eplusAnnihilation.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4PhysicsList::ConstructEM() { @@ -123,22 +124,22 @@ void Em4PhysicsList::ConstructEM() } else if (particleName == "e-") { //electron - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - pmanager->AddProcess(new G4eIonisation, -1,2,2); + pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3); } else if (particleName == "e+") { //positron - pmanager->AddProcess(new G4MultipleScattering,-1,1,1); - pmanager->AddProcess(new G4eIonisation, -1,2,2); + pmanager->AddProcess(new G4MultipleScattering,-1, 1,1); + pmanager->AddProcess(new G4eIonisation, -1, 2,2); pmanager->AddProcess(new G4eBremsstrahlung, -1,-1,3); pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4); } } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4PhysicsList::SetCuts() { @@ -163,7 +164,7 @@ void Em4PhysicsList::SetCuts() if (verboseLevel>0) DumpCutValuesTable(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4PrimaryGeneratorAction.cc index 508537a56f..ef6673f3b3 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4PrimaryGeneratorAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em4PrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4PrimaryGeneratorAction.cc,v 1.4 2001/10/17 14:04:16 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em4PrimaryGeneratorAction.hh" @@ -37,7 +37,7 @@ #include "G4ParticleDefinition.hh" #include "Randomize.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4PrimaryGeneratorAction::Em4PrimaryGeneratorAction() { @@ -55,14 +55,14 @@ Em4PrimaryGeneratorAction::Em4PrimaryGeneratorAction() } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4PrimaryGeneratorAction::~Em4PrimaryGeneratorAction() { delete particleGun; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { @@ -78,5 +78,5 @@ void Em4PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) particleGun->GeneratePrimaryVertex(anEvent); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4RunAction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4RunAction.cc index 658c3e7930..c086589a18 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4RunAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4RunAction.cc @@ -21,18 +21,18 @@ // ******************************************************************** // // -// $Id: Em4RunAction.cc,v 1.8.2.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4RunAction.cc,v 1.11 2001/11/28 15:07:22 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em4RunAction.hh" -#include "Em4RunActionMessenger.hh" #include "G4Run.hh" +#include "G4RunManager.hh" #include "G4UImanager.hh" #include "G4VVisManager.hh" #include "G4ios.hh" @@ -43,22 +43,17 @@ #include "CLHEP/Hist/HBookFile.h" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4RunAction::Em4RunAction() { bookHisto(); - - runMessenger = new Em4RunActionMessenger(this); - saveRndm = 1; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4RunAction::~Em4RunAction() { - delete runMessenger; - #ifndef G4NOHIST // Write histogram file hbookManager->write(); @@ -69,7 +64,7 @@ Em4RunAction::~Em4RunAction() } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4RunAction::bookHisto() { @@ -83,40 +78,29 @@ void Em4RunAction::bookHisto() #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4RunAction::BeginOfRunAction(const G4Run* aRun) { G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("beginOfRun.rndm"); - } + G4RunManager::GetRunManager()->SetRandomNumberStore(true); + HepRandom::showEngineStatus(); - G4UImanager* UI = G4UImanager::GetUIpointer(); - - G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); - - if(pVVisManager) - { - UI->ApplyCommand("/vis/scene/notifyHandlers"); - } + if (G4VVisManager::GetConcreteInstance()) + G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers"); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4RunAction::EndOfRunAction(const G4Run* aRun) { if (G4VVisManager::GetConcreteInstance()) G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); - // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("endOfRun.rndm"); - } + // show Rndm status + HepRandom::showEngineStatus(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4SteppingAction.cc b/examples/extended/electromagnetic/TestEm4/src/Em4SteppingAction.cc index 75b728d5de..724a9ca8c5 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4SteppingAction.cc @@ -21,30 +21,30 @@ // ******************************************************************** // // -// $Id: Em4SteppingAction.cc,v 1.2.4.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4SteppingAction.cc,v 1.4 2001/10/17 14:04:16 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em4SteppingAction.hh" #include "Em4EventAction.hh" #include "G4SteppingManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4SteppingAction::Em4SteppingAction(Em4EventAction* EvAct) :eventAction(EvAct),myVerbose(NULL) { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4SteppingAction::~Em4SteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4SteppingAction::UserSteppingAction(const G4Step* aStep) { @@ -52,6 +52,6 @@ void Em4SteppingAction::UserSteppingAction(const G4Step* aStep) if (EdepStep > 0.) eventAction->addEdep(EdepStep); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm4/src/Em4SteppingVerbose.cc index dcdf34adda..bbff262e1f 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4SteppingVerbose.cc @@ -21,28 +21,28 @@ // ******************************************************************** // // -// $Id: Em4SteppingVerbose.cc,v 1.6.2.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4SteppingVerbose.cc,v 1.8 2001/10/17 14:04:16 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em4SteppingVerbose.hh" #include "G4SteppingManager.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4SteppingVerbose::Em4SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4SteppingVerbose::~Em4SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4SteppingVerbose::StepInfo() { @@ -67,13 +67,13 @@ void Em4SteppingVerbose::StepInfo() } G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); // if( fStepStatus != fWorldBoundary){ if( fTrack->GetNextVolume() != 0 ) { @@ -84,8 +84,8 @@ void Em4SteppingVerbose::StepInfo() if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ G4cout << " " - << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + << G4std::setw(10) << fStep->GetPostStepPoint() + ->GetProcessDefinedStep()->GetProcessName(); } else { G4cout << " UserLimit"; } @@ -107,7 +107,7 @@ void Em4SteppingVerbose::StepInfo() << " ---------------" << G4endl; - for(G4int lp1=(*fSecondary).size()-tN2ndariesTot; + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; lp1<(*fSecondary).size(); lp1++){ G4cout << " : " << G4std::setw(6) @@ -134,7 +134,7 @@ void Em4SteppingVerbose::StepInfo() G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4SteppingVerbose::TrackingStarted() { @@ -154,14 +154,14 @@ G4int prec = G4cout.precision(3); << G4std::setw(10) << "Volume" << " " << G4std::setw(10) << "Process" << G4endl; - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); if(fTrack->GetNextVolume()){ G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); @@ -173,4 +173,4 @@ G4int prec = G4cout.precision(3); G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4VisManager.cc b/examples/extended/electromagnetic/TestEm4/src/Em4VisManager.cc index 4f9623da33..689613b262 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4VisManager.cc +++ b/examples/extended/electromagnetic/TestEm4/src/Em4VisManager.cc @@ -21,14 +21,14 @@ // ******************************************************************** // // -// $Id: Em4VisManager.cc,v 1.2.4.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em4VisManager.cc,v 1.6 2001/11/15 13:09:48 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifdef G4VIS_USE @@ -36,14 +36,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -72,36 +79,34 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYX -#include "G4RayX.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" -// #include "G4VRML2.hh" +#include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -//#include "G4VRML2File.hh" -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em4VisManager::Em4VisManager () {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em4VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -130,18 +135,9 @@ void Em4VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYX - RegisterGraphicsSystem (new G4RayX); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); -// RegisterGraphicsSystem (new G4VRML2); -#endif - -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); -// RegisterGraphicsSystem (new G4VRML2File); + RegisterGraphicsSystem (new G4VRML2); #endif if (fVerbose > 0) { @@ -154,4 +150,4 @@ void Em4VisManager::RegisterGraphicsSystems () { #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm4/init.mac b/examples/extended/electromagnetic/TestEm4/vis.mac similarity index 83% rename from examples/extended/electromagnetic/TestEm4/init.mac rename to examples/extended/electromagnetic/TestEm4/vis.mac index e963d4e216..f722a9c2f9 100644 --- a/examples/extended/electromagnetic/TestEm4/init.mac +++ b/examples/extended/electromagnetic/TestEm4/vis.mac @@ -14,13 +14,16 @@ # Edit the next line(s) to choose another graphic system # #/vis/open DAWNFILE +# /vis/open OGLIX # # Draw scene -/vis/camera/zoom 1.5 -/vis/drawVolume +/vis/viewer/zoom 1.5 +/vis/viewer/flush # # for drawing the tracks # if too many tracks cause core dump => storeTrajectory 0 /tracking/storeTrajectory 1 -/event/drawTracks all +/vis/scene/endOfEventAction accumulate +# +/event/drawTracks diff --git a/examples/extended/electromagnetic/TestEm5/GNUmakefile b/examples/extended/electromagnetic/TestEm5/GNUmakefile index bb3635fba2..6978980566 100644 --- a/examples/extended/electromagnetic/TestEm5/GNUmakefile +++ b/examples/extended/electromagnetic/TestEm5/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.5 2001/02/21 14:44:32 maire Exp $ +# $Id: GNUmakefile,v 1.6 2001/11/05 17:57:58 maire Exp $ # -------------------------------------------------------------- # GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. # -------------------------------------------------------------- @@ -25,3 +25,7 @@ else endif include $(G4INSTALL)/config/binmake.gmk + +visclean: + rm -f g4*.prim g4*.eps g4*.wrl + rm -f .DAWN_* diff --git a/examples/extended/electromagnetic/TestEm5/History b/examples/extended/electromagnetic/TestEm5/History index 317cb589de..f270256f88 100644 --- a/examples/extended/electromagnetic/TestEm5/History +++ b/examples/extended/electromagnetic/TestEm5/History @@ -1,4 +1,4 @@ -$Id: History,v 1.9 2001/03/27 09:23:59 maire Exp $ +$Id: History,v 1.13 2001/11/28 16:08:18 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,25 +15,46 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- -27-03-01 mma (testem5-V03-00-04) - - set cppflag G4NOHIST = true in gnumakefile +28-11-01 mma (testem5-V03-02-02) +- EventAction: DrawTrack "none" +- small change in vis.mac +- suppression of the rndm commands, now managed by G4RunManager: + --> RunAction, RunActionMessenger, EventAction. + +05-11-01 mma (testem5-V03-02-01) +- mods in TestEm3.cc: the initialisation and vis initialisation are + not done by default. --> inserted /run/initialize in all macros. +- To get visualisation: > /control/execute vis.mac + + +19-10-01 Steve O'Neale (examples-V03-02-00) +- Update reference output + +16-10-01 mma (testem5-V03-02-00) +- removal of G4RW header (EventAction.cc) +- new vis commands (init.mac) +- 80 columns everywhere + +27-03-01 mma (testem5-V03-00-04) +- set cppflag G4NOHIST = true in gnumakefile -21-02-01 mma (testem5-V03-00-03) - - hbook histograms restored +21-02-01 mma (testem5-V03-00-03) +- hbook histograms restored 20-02-01 mma (testem5-V03-00-02) - - verbose stepping adapted for STL - - save rndm at begin of event +- verbose stepping adapted for STL +- save rndm at begin of event -09-01-01 mma modified Em5PhysicsList and Em5StepCut in order to make the - command /step/setMaxStep working +09-01-01 mma +- modified Em5PhysicsList and Em5StepCut in order to make the + command /step/setMaxStep working 07-12-00 mma (testem5-V02-00-03 & testem-noHist) - remove hbook histograms: GNUmakefile,runAction +- remove hbook histograms: GNUmakefile,runAction 06-12-00 mma (testem5-V02-00-02 & testem-withHist) - update of init.mac for new vis commands. - G4UItcsh in the main() +- update of init.mac for new vis commands. +- G4UItcsh in the main() 25th November 2000 Steve O'Neale (tagset210) - update test outputs for min.delta energy cut and cut table @@ -43,8 +64,8 @@ June 17, 2000 John Allison (testem5-V01-00-00) - Updated TestEm5.out for geant4-01-01-ref-06. 17-01-00 cppflag G4NOHIST to protect hbook histograms. - new histo: normalizsed distribution of energy deposit. - new materials (mainly gas) +- new histo: normalizsed distribution of energy deposit. +- new materials (mainly gas) 12-10-99 moved to examples/extended/electromagnetic/TestEm5 diff --git a/examples/extended/electromagnetic/TestEm5/README b/examples/extended/electromagnetic/TestEm5/README index c680aa187d..689899f5f6 100644 --- a/examples/extended/electromagnetic/TestEm5/README +++ b/examples/extended/electromagnetic/TestEm5/README @@ -1,4 +1,4 @@ -$Id: README,v 1.3 2001/03/30 12:38:03 gcosmo Exp $ +$Id: README,v 1.4 2001/11/05 17:57:58 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -19,7 +19,7 @@ $Id: README,v 1.3 2001/03/30 12:38:03 gcosmo Exp $ - the transverse size of the absorber (the input face is a square). The volume "World" contains the "absorber". - In this test the parameters of the "World" can be changed , too. + In this test the parameters of the "World" can be changed, too. In addition a transverse uniform magnetic field can be applied. @@ -67,10 +67,22 @@ $Id: README,v 1.3 2001/03/30 12:38:03 gcosmo Exp $ paw> h/file 1 geant4.plot01 paw> option stat paw> h/pl 1 - - - 4- PHYSICS DEMO + 4- VISUALIZATION + + The Visualization Manager is set in the main(). + The initialisation of the drawing is done via the commands + /vis/... in the macro vis.mac. In interactive session: + PreInit or Idle > /control/execute vis.mac + + The detector has a default view which is a longitudinal view of the + calorimeter. + + The tracks are drawn at the end of event, and erased at the end of run. + Optionaly one can choose to draw all particles, only the charged one, + or none. This command is defined in EventActionMessenger class. + + 5- PHYSICS DEMO The particle's type and the physic processes which will be available in this example are set in PhysicsList class. @@ -79,8 +91,7 @@ $Id: README,v 1.3 2001/03/30 12:38:03 gcosmo Exp $ commands the geometry of the detector, the data of the primary particle, the limits of the histograms , etc. can be changed. - - 5- HOW TO START ? + 6- HOW TO START ? - compile and link to generate an executable % cd TestEm5 @@ -95,7 +106,7 @@ $Id: README,v 1.3 2001/03/30 12:38:03 gcosmo Exp $ Idle> type your commands .... - 6- GEANT4/GEANT3/exp.data comparison + 7- GEANT4/GEANT3/exp.data comparison A GEANT4/GEANT3/exp. data comparison is given here for a few cases. diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.cc b/examples/extended/electromagnetic/TestEm5/TestEm5.cc index 97309532cf..efc4cce966 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.cc +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: TestEm5.cc,v 1.4.4.1 2001/06/28 19:07:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: TestEm5.cc,v 1.7 2001/11/05 17:57:58 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4RunManager.hh" #include "G4UImanager.hh" @@ -45,7 +45,7 @@ #include "Em5SteppingAction.hh" #include "Em5SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int main(int argc,char** argv) { @@ -57,7 +57,7 @@ int main(int argc,char** argv) { // Construct the default run manager G4RunManager * runManager = new G4RunManager; - + // set mandatory initialization classes Em5DetectorConstruction* detector; detector = new Em5DetectorConstruction; @@ -80,11 +80,8 @@ int main(int argc,char** argv) { Em5SteppingAction* steppingaction = new Em5SteppingAction(detector, eventaction, runaction); - runManager->SetUserAction(steppingaction); - - //Initialize G4 kernel - runManager->Initialize(); - + runManager->SetUserAction(steppingaction); + // get the pointer to the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); @@ -96,7 +93,6 @@ int main(int argc,char** argv) { #else session = new G4UIterminal(); #endif - UI->ApplyCommand("/control/execute init.mac"); session->SessionStart(); delete session; } @@ -116,5 +112,5 @@ int main(int argc,char** argv) { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.in b/examples/extended/electromagnetic/TestEm5/TestEm5.in index ebb78bfbf4..61711948c8 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.in +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.in @@ -6,12 +6,16 @@ /control/verbose 2 /run/verbose 2 # +/calor/cutG 2.13 mm +/calor/cutE 7.0 mum +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 20.5 mum /calor/setAbsYZ 10 cm /calor/update -/gun/setDefault # +/gun/setDefault # # hist file name /plots/sethistName run19.paw @@ -20,10 +24,6 @@ /plots/setEnlow 0. keV /plots/setEnhigh 13. keV # -/calor/cutG 2.13 mm -/calor/cutE 7.0 mum -/run/initialize -# /gun/particle pi+ /gun/energy 5. GeV diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.out b/examples/extended/electromagnetic/TestEm5/TestEm5.out index affe3a307f..b61b889633 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.out +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.out @@ -1,8 +1,27 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) +/run/verbose 2 +# +/calor/cutG 2.13 mm +/calor/cutE 7.0 mum +/run/initialize +userDetector->Construct() start. ***** Table : Nb of materials = 18 ***** @@ -76,125 +95,7 @@ The WORLD is made of 1.5 cm of Galactic. The transverse size (YZ) of the world is 2.4 cm The ABSORBER is made of 1 cm of Silicon. The transverse size (YZ) is 2 cm X position of the middle of the absorber 0 fm -Em5PhysicsList::SetCuts:CutLength : 1 mm - -phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z - Sandia crossSection below 50 KeV - PhysicsTables from 50 keV to 50 MeV in 100 bins. - -compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. - -conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. - e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. - -eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. - Good description from 1 KeV to 100 GeV. - log scale extrapolation above 100 GeV - Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. - -annihil: Total cross section from Heilter formula (annihilation into 2 photons). - gamma energies sampled according Heitler - PhysicsTables from 10 keV to 10 TeV in 100 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. - -MuBrems: theoretical cross section - Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. - -MuPairProd: theoretical cross sections - Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. - -msc: Tables of transport mean free paths. - New model of MSC , computes the lateral - displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. - -hIoni: Knock-on electron cross sections . - Good description above the mean excitation energy. - delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. -============= The cut Energy ============================== - gamma e- -Cut in range 1 mm 1 mm -Cut in energy - Beryllium 1.99 keV 468 keV - Aluminium 6.91 keV 595 keV - Silicon 6.88 keV 546 keV - liquidArgon 6.15 keV 347 keV - Iron 20.7 keV 1.29 MeV - Copper 24.8 keV 1.39 MeV - Tungsten 106 keV 2.29 MeV - Gold 112 keV 2.29 MeV - Lead 101 keV 1.36 MeV - Water 2.93 keV 351 keV - Air 250 eV 275 eV - XenonGas 250 eV 1.75 keV - CarbonicGas 250 eV 542 eV - ArgonCO2 250 eV 419 eV - NewArgonCO2 250 eV 419 eV - ArgonCH4 250 eV 369 eV - XenonMethanePropane 250 eV 1.55 keV - Galactic 250 eV 250 eV -=================================================== -# -# Macro file for the initialization phase of "TestEm5.cc" -# -# It creates the default geometry (simple absorber box ) -# -/run/verbose 2 -# -/calor/setAbsMat Silicon - - The WORLD is made of 1.5 cm of Galactic. The transverse size (YZ) of the world is 2.4 cm - The ABSORBER is made of 1 cm of Silicon. The transverse size (YZ) is 2 cm - X position of the middle of the absorber 0 fm -/calor/setAbsThick 20.5 mum -/calor/setAbsYZ 10 cm -/calor/update - - The WORLD is made of 31 mum of Galactic. The transverse size (YZ) of the world is 12 cm - The ABSORBER is made of 20 mum of Silicon. The transverse size (YZ) is 10 cm - X position of the middle of the absorber 0 fm -/gun/setDefault -# -# -# hist file name -/plots/sethistName run19.paw - hist file = run19.paw -# PLOT: energy deposit distribution in absorber -/plots/setnbinEn 65 - Nb of bins in Edep plot = 65 -/plots/setEnlow 0. keV - Elow in the Edep plot = 0 -/plots/setEnhigh 13. keV - Ehigh in the Edep plot = 0.013 -# -/calor/cutG 2.13 mm -/calor/cutE 7.0 mum -/run/initialize +physicsList->Construct() start. physicsList->setCut() start. Em5PhysicsList::SetCuts:CutLength : 1 mm @@ -203,62 +104,80 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. Good description from 1 KeV to 100 GeV. log scale extrapolation above 100 GeV Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuPairProd: theoretical cross sections Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. hIoni: Knock-on electron cross sections . Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. ============= The cut Energy ============================== gamma e- -Cut in range 2.13 mm 7 mum +Cut in range + Beryllium 2.13 mm 7 mum + Aluminium 2.13 mm 7 mum + Silicon 2.13 mm 7 mum + liquidArgon 2.13 mm 7 mum + Iron 2.13 mm 7 mum + Copper 2.13 mm 7 mum + Tungsten 2.13 mm 7 mum + Gold 2.13 mm 7 mum + Lead 2.13 mm 7 mum + Water 2.13 mm 7 mum + Air 2.13 mm 7 mum + XenonGas 2.13 mm 7 mum + CarbonicGas 2.13 mm 7 mum + ArgonCO2 2.13 mm 7 mum + NewArgonCO2 2.13 mm 7 mum + ArgonCH4 2.13 mm 7 mum + XenonMethanePropane 2.13 mm 7 mum + Galactic 2.13 mm 7 mum Cut in energy Beryllium 2.47 keV 8.08 keV Aluminium 9.83 keV 11.9 keV @@ -280,9 +199,34 @@ Cut in energy Galactic 250 eV 250 eV =================================================== # +/calor/setAbsMat Silicon + + The WORLD is made of 1.5 cm of Galactic. The transverse size (YZ) of the world is 2.4 cm + The ABSORBER is made of 1 cm of Silicon. The transverse size (YZ) is 2 cm + X position of the middle of the absorber 0 fm +/calor/setAbsThick 20.5 mum +/calor/setAbsYZ 10 cm +/calor/update + + The WORLD is made of 30.75 mum of Galactic. The transverse size (YZ) of the world is 12 cm + The ABSORBER is made of 20.5 mum of Silicon. The transverse size (YZ) is 10 cm + X position of the middle of the absorber 0 fm +# +/gun/setDefault +# +# hist file name +/plots/sethistName run19.paw + hist file = run19.paw +# PLOT: energy deposit distribution in absorber +/plots/setnbinEn 65 + Nb of bins in Edep plot = 65 +/plots/setEnlow 0. keV + Elow in the Edep plot = 0 +/plots/setEnhigh 13. keV + Ehigh in the Edep plot = 0.013 +# /gun/particle pi+ /gun/energy 5. GeV - /event/printModulo 10000 # /run/beamOn 100000 @@ -293,6 +237,10 @@ Cut in energy Current couple of seeds = 9876, 54321 ---------------------------------------- Start closing geometry. +G4GeometryManager::ReportVoxelStats -- Voxel Statistics + + Total memory consumed for geometry optimisation: 0 kByte + Total CPU time elapsed for geometry optimisation: 0 seconds Start Run processing. ---> Begin of Event: 0 @@ -317,102 +265,103 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=1.1e+02s Real=1.1e+02s Sys=7.7s + User=69s Real=3.4e+03s Sys=5e+02s ================== run summary ===================== end of Run TotNbofEvents = 100000 - mean charged track length in absorber=0.0209499 +- 1.40951e-05 mm + mean charged track length in absorber=0.0209662 +- 1.5147e-05 mm - mean energy deposit in absorber=0.0066794 +- 2.04118e-05 MeV + mean energy deposit in absorber=0.00668476 +- 2.09e-05 MeV - mean number of steps in absorber (charged) =0.05601 +- 0.00112913 - mean number of steps in absorber (neutral) =5e-05 +- 2.23601e-05 + mean number of steps in absorber (charged) =0.10345 +- 0.00245985 + mean number of steps in absorber (neutral) =3e-05 +- 1.73202e-05 - mean number of charged secondaries = 0.03743 +- 0.000629674 + mean number of charged secondaries = 0.01866 +- 0.000447569 - mean number of neutral secondaries = 5e-05 +- 2.23601e-05 + mean number of neutral secondaries = 3e-05 +- 1.73202e-05 - mean number of e-s =0.03743 and e+s =0 + mean number of e-s =0.01866 and e+s =0 -(number) transmission coeff=0.99999 reflection coeff=0.49967 +(number) transmission coeff=1 reflection coeff=0 energy deposit distribution -#entries=100000 #underflows=0 #overflows=5748 +#entries=100000 #underflows=0 #overflows=5729 bin nb Elow entries normalized 0 0 0 0 1 0.0002 0 0 2 0.0004 0 0 3 0.0006 0 0 - 4 0.0008 1 0.05 + 4 0.0008 0 0 5 0.001 2 0.1 - 6 0.0012 5 0.25 - 7 0.0014 9 0.45 - 8 0.0016 39 1.95 - 9 0.0018 74 3.7 - 10 0.002 229 11.45 - 11 0.0022 401 20.05 - 12 0.0024 783 39.15 - 13 0.0026 1202 60.1 - 14 0.0028 1762 88.1 - 15 0.003 2571 128.55 - 16 0.0032 3372 168.6 - 17 0.0034 3992 199.6 - 18 0.0036 4598 229.9 - 19 0.0038 4723 236.15 - 20 0.004 5070 253.5 - 21 0.0042 4878 243.9 - 22 0.0044 4688 234.4 - 23 0.0046 4477 223.85 - 24 0.0048 4170 208.5 - 25 0.005 3674 183.7 - 26 0.0052 3501 175.05 - 27 0.0054 3191 159.55 - 28 0.0056 2842 142.1 - 29 0.0058 2686 134.3 - 30 0.006 2486 124.3 - 31 0.0062 2293 114.65 - 32 0.0064 2113 105.65 - 33 0.0066 1994 99.7 - 34 0.0068 1869 93.45 - 35 0.007 1695 84.75 - 36 0.0072 1610 80.5 - 37 0.0074 1412 70.6 - 38 0.0076 1389 69.45 - 39 0.0078 1257 62.85 - 40 0.008 1154 57.7 - 41 0.0082 1060 53 - 42 0.0084 988 49.4 - 43 0.0086 919 45.95 - 44 0.0088 816 40.8 - 45 0.009 724 36.2 - 46 0.0092 726 36.3 - 47 0.0094 598 29.9 - 48 0.0096 601 30.05 - 49 0.0098 536 26.8 - 50 0.01 545 27.25 - 51 0.0102 462 23.1 - 52 0.0104 451 22.55 - 53 0.0106 436 21.8 - 54 0.0108 393 19.65 - 55 0.011 380 19 - 56 0.0112 352 17.6 - 57 0.0114 330 16.5 - 58 0.0116 291 14.55 - 59 0.0118 253 12.65 - 60 0.012 240 12 - 61 0.0122 269 13.45 - 62 0.0124 237 11.85 - 63 0.0126 239 11.95 - 64 0.0128 194 9.7 + 6 0.0012 2 0.1 + 7 0.0014 11 0.55 + 8 0.0016 33 1.65 + 9 0.0018 93 4.65 + 10 0.002 217 10.85 + 11 0.0022 440 22 + 12 0.0024 772 38.6 + 13 0.0026 1255 62.75 + 14 0.0028 1830 91.5 + 15 0.003 2621 131.05 + 16 0.0032 3371 168.55 + 17 0.0034 4058 202.9 + 18 0.0036 4589 229.45 + 19 0.0038 4737 236.85 + 20 0.004 4838 241.9 + 21 0.0042 4969 248.45 + 22 0.0044 4696 234.8 + 23 0.0046 4452 222.6 + 24 0.0048 4103 205.15 + 25 0.005 3751 187.55 + 26 0.0052 3468 173.4 + 27 0.0054 3172 158.6 + 28 0.0056 2838 141.9 + 29 0.0058 2723 136.15 + 30 0.006 2422 121.1 + 31 0.0062 2208 110.4 + 32 0.0064 2011 100.55 + 33 0.0066 1965 98.25 + 34 0.0068 1891 94.55 + 35 0.007 1722 86.1 + 36 0.0072 1607 80.35 + 37 0.0074 1518 75.9 + 38 0.0076 1334 66.7 + 39 0.0078 1245 62.25 + 40 0.008 1227 61.35 + 41 0.0082 1100 55 + 42 0.0084 967 48.35 + 43 0.0086 910 45.5 + 44 0.0088 826 41.3 + 45 0.009 798 39.9 + 46 0.0092 716 35.8 + 47 0.0094 660 33 + 48 0.0096 619 30.95 + 49 0.0098 558 27.9 + 50 0.01 518 25.9 + 51 0.0102 474 23.7 + 52 0.0104 450 22.5 + 53 0.0106 395 19.75 + 54 0.0108 395 19.75 + 55 0.011 347 17.35 + 56 0.0112 321 16.05 + 57 0.0114 288 14.4 + 58 0.0116 280 14 + 59 0.0118 267 13.35 + 60 0.012 253 12.65 + 61 0.0122 276 13.8 + 62 0.0124 260 13 + 63 0.0126 184 9.2 + 64 0.0128 218 10.9 - Emp = 0.004 width= 0.0028 MeV + Emp = 0.0042 width= 0.0028 MeV --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 301564722, 909059154 + Current couple of seeds = 115961453, 1292148745 ---------------------------------------- # - +Graphics systems deleted. +Visualization Manager deleting... G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5CalorHit.hh b/examples/extended/electromagnetic/TestEm5/include/Em5CalorHit.hh index 5795374bc8..44a6570774 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5CalorHit.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5CalorHit.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5CalorHit.hh,v 1.2.4.1 2001/06/28 19:07:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5CalorHit.hh,v 1.4 2001/10/16 11:56:27 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5CalorHit_h #define Em5CalorHit_h 1 @@ -36,47 +36,47 @@ #include "G4THitsCollection.hh" #include "G4Allocator.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5CalorHit : public G4VHit { - public: + public: - Em5CalorHit(); - ~Em5CalorHit(); - Em5CalorHit(const Em5CalorHit&); - const Em5CalorHit& operator=(const Em5CalorHit&); - int operator==(const Em5CalorHit&) const; + Em5CalorHit(); + ~Em5CalorHit(); + Em5CalorHit(const Em5CalorHit&); + const Em5CalorHit& operator=(const Em5CalorHit&); + int operator==(const Em5CalorHit&) const; - inline void* operator new(size_t); - inline void operator delete(void*); + inline void* operator new(size_t); + inline void operator delete(void*); - void Print(); + void Print(); - public: + public: - void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;}; - void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;}; + void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;}; + void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;}; - G4double GetEdepAbs() { return EdepAbs; }; - G4double GetTrakAbs() { return TrackLengthAbs; }; - G4double GetEdepGap() { return EdepGap; }; - G4double GetTrakGap() { return TrackLengthGap; }; + G4double GetEdepAbs() {return EdepAbs;}; + G4double GetTrakAbs() {return TrackLengthAbs;}; + G4double GetEdepGap() {return EdepGap; }; + G4double GetTrakGap() {return TrackLengthGap;}; - private: + private: - G4double EdepAbs, TrackLengthAbs; - G4double EdepGap, TrackLengthGap; + G4double EdepAbs, TrackLengthAbs; + G4double EdepGap, TrackLengthGap; }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... typedef G4THitsCollection Em5CalorHitsCollection; extern G4Allocator Em5CalorHitAllocator; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void* Em5CalorHit::operator new(size_t) { @@ -85,13 +85,15 @@ inline void* Em5CalorHit::operator new(size_t) return aHit; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em5CalorHit::operator delete(void* aHit) { Em5CalorHitAllocator.FreeSingle((Em5CalorHit*) aHit); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm5/include/Em5CalorimeterSD.hh index 66aab8f1c1..07fb745371 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5CalorimeterSD.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5CalorimeterSD.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5CalorimeterSD.hh,v 1.2.4.1 2001/06/28 19:07:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5CalorimeterSD.hh,v 1.4 2001/10/16 11:56:27 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5CalorimeterSD_h #define Em5CalorimeterSD_h 1 @@ -40,7 +40,7 @@ class G4HCofThisEvent; class G4Step; #include "Em5CalorHit.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5CalorimeterSD : public G4VSensitiveDetector { @@ -61,6 +61,7 @@ class Em5CalorimeterSD : public G4VSensitiveDetector Em5DetectorConstruction* Detector; G4int* HitID; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5DetectorConstruction.hh index 2ef442bc84..a44ce94c5b 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5DetectorConstruction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5DetectorConstruction.hh,v 1.2.4.1 2001/06/28 19:07:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5DetectorConstruction.hh,v 1.4 2001/10/16 11:56:27 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5DetectorConstruction_h #define Em5DetectorConstruction_h 1 @@ -45,7 +45,7 @@ class G4UniformMagField; class Em5DetectorMessenger; class Em5CalorimeterSD; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5DetectorConstruction : public G4VUserDetectorConstruction { @@ -126,7 +126,7 @@ class Em5DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* ConstructCalorimeter(); }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void Em5DetectorConstruction::ComputeCalorParameters() { @@ -141,5 +141,7 @@ inline void Em5DetectorConstruction::ComputeCalorParameters() } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5DetectorMessenger.hh index 2a6b5b591b..d062e1bf16 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5DetectorMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5DetectorMessenger.hh,v 1.2.4.1 2001/06/28 19:07:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5DetectorMessenger.hh,v 1.4 2001/10/16 11:56:27 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5DetectorMessenger_h #define Em5DetectorMessenger_h 1 @@ -42,7 +42,7 @@ class G4UIcmdWithAnInteger; class G4UIcmdWithADoubleAndUnit; class G4UIcmdWithoutParameter; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5DetectorMessenger: public G4UImessenger { @@ -72,5 +72,7 @@ class Em5DetectorMessenger: public G4UImessenger }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5EventAction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5EventAction.hh index 92bfceb3fb..a1ee3b1888 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5EventAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5EventAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5EventAction.hh,v 1.2.4.1 2001/06/28 19:07:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5EventAction.hh,v 1.4 2001/10/16 11:56:27 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5EventAction_h #define Em5EventAction_h 1 @@ -38,7 +38,7 @@ class Em5RunAction; class Em5EventActionMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5EventAction : public G4UserEventAction { @@ -78,6 +78,8 @@ class Em5EventAction : public G4UserEventAction G4int printModulo; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5EventActionMessenger.hh index edaade7107..d3cf957b85 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5EventActionMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5EventActionMessenger.hh,v 1.2.4.1 2001/06/28 19:07:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5EventActionMessenger.hh,v 1.4 2001/10/16 11:56:27 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5EventActionMessenger_h #define Em5EventActionMessenger_h 1 @@ -40,7 +40,7 @@ class G4UIcmdWithAString; class G4UIcmdWithAnInteger; class G4UIcmdWithADoubleAndUnit; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5EventActionMessenger: public G4UImessenger { @@ -57,4 +57,6 @@ class Em5EventActionMessenger: public G4UImessenger G4UIcmdWithAnInteger* PrintCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsList.hh b/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsList.hh index 37f451bde0..14fb9c092d 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsList.hh @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: Em5PhysicsList.hh,v 1.3.2.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5PhysicsList.hh,v 1.5 2001/10/16 11:56:27 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5PhysicsList_h #define Em5PhysicsList_h 1 @@ -38,7 +38,7 @@ class Em5DetectorConstruction; class Em5PhysicsListMessenger; class Em5StepCut; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5PhysicsList: public G4VUserPhysicsList { @@ -87,6 +87,8 @@ class Em5PhysicsList: public G4VUserPhysicsList Em5StepCut* pStepCut; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsListMessenger.hh index 99f23fa233..20bfc50721 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5PhysicsListMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5PhysicsListMessenger.hh,v 1.2.4.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5PhysicsListMessenger.hh,v 1.4 2001/10/16 11:56:27 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5PhysicsListMessenger_h #define Em5PhysicsListMessenger_h 1 @@ -38,7 +38,7 @@ class Em5PhysicsList; class G4UIcmdWithADoubleAndUnit; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5PhysicsListMessenger: public G4UImessenger { @@ -61,5 +61,7 @@ class Em5PhysicsListMessenger: public G4UImessenger G4UIcmdWithADoubleAndUnit* setMaxStepCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorAction.hh index c65fac3e04..ab3e307b17 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5PrimaryGeneratorAction.hh,v 1.2.4.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5PrimaryGeneratorAction.hh,v 1.4 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5PrimaryGeneratorAction_h #define Em5PrimaryGeneratorAction_h 1 @@ -40,7 +40,7 @@ class G4Event; class Em5DetectorConstruction; class Em5PrimaryGeneratorMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { @@ -62,6 +62,8 @@ class Em5PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction Em5PrimaryGeneratorMessenger* gunMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorMessenger.hh index 89af98dec5..ffa8b3034a 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5PrimaryGeneratorMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5PrimaryGeneratorMessenger.hh,v 1.2.4.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5PrimaryGeneratorMessenger.hh,v 1.4 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5PrimaryGeneratorMessenger_h #define Em5PrimaryGeneratorMessenger_h 1 @@ -38,7 +38,7 @@ class Em5PrimaryGeneratorAction; class G4UIcmdWithoutParameter; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5PrimaryGeneratorMessenger: public G4UImessenger { @@ -53,5 +53,7 @@ class Em5PrimaryGeneratorMessenger: public G4UImessenger G4UIcmdWithoutParameter* DefaultCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5RunAction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5RunAction.hh index c2b4cde542..9535521373 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5RunAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5RunAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5RunAction.hh,v 1.5.2.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5RunAction.hh,v 1.8 2001/11/28 16:08:18 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5RunAction_h #define Em5RunAction_h 1 @@ -36,7 +36,7 @@ #include "globals.hh" #include "g4std/iostream" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5RunMessenger; class G4Run; @@ -46,7 +46,7 @@ class G4Run; class HepHistogram; #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5RunAction : public G4UserRunAction { @@ -120,10 +120,7 @@ class Em5RunAction : public G4UserRunAction void Setnbinzvertex(G4int nbin); void Setzlow(G4double z); void Setzhigh(G4double z); - - void SetRndmFreq(G4int val) {saveRndm = val;} - G4int GetRndmFreq() {return saveRndm;} - + private: void bookHisto(); @@ -184,8 +181,9 @@ class Em5RunAction : public G4UserRunAction G4int nbinvertexz; Em5RunMessenger* runMessenger; - G4int saveRndm; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5RunMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5RunMessenger.hh index 424c5e3bb5..b977399a7e 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5RunMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5RunMessenger.hh @@ -22,13 +22,13 @@ // // -// $Id: Em5RunMessenger.hh,v 1.2.4.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5RunMessenger.hh,v 1.5 2001/11/28 16:08:18 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5RunMessenger_h #define Em5RunMessenger_h 1 @@ -37,7 +37,7 @@ #include "G4UImessenger.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5RunAction; class G4UIdirectory; @@ -46,7 +46,7 @@ class G4UIcmdWithADoubleAndUnit; class G4UIcmdWithADouble; class G4UIcmdWithAString; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5RunMessenger: public G4UImessenger { @@ -104,12 +104,9 @@ class Em5RunMessenger: public G4UImessenger G4UIcmdWithAnInteger* setnbinzvertexCmd; G4UIcmdWithADoubleAndUnit* setzlowCmd; G4UIcmdWithADoubleAndUnit* setzhighCmd; - - G4UIdirectory* RndmDir; - G4UIcmdWithAnInteger* RndmSaveCmd; - G4UIcmdWithAString* RndmReadCmd; - }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5StepCut.hh b/examples/extended/electromagnetic/TestEm5/include/Em5StepCut.hh index 4643103393..f28fb550d5 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5StepCut.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5StepCut.hh @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: Em5StepCut.hh,v 1.3.2.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5StepCut.hh,v 1.5 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5StepCut_h #define Em5StepCut_h 1 @@ -35,7 +35,7 @@ #include "G4VDiscreteProcess.hh" #include "G4Step.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5StepCut : public G4VDiscreteProcess { @@ -66,7 +66,7 @@ class Em5StepCut : public G4VDiscreteProcess G4double MaxChargedStep; }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // // inlined function members implementation @@ -89,7 +89,7 @@ inline G4double Em5StepCut::PostStepGetPhysicalInteractionLength( return ProposedStep; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4VParticleChange* Em5StepCut::PostStepDoIt(const G4Track& aTrack, const G4Step& ) @@ -99,7 +99,7 @@ inline G4VParticleChange* Em5StepCut::PostStepDoIt(const G4Track& aTrack, return &aParticleChange; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingAction.hh b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingAction.hh index 3aefc34d64..7a933612ae 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5SteppingAction.hh,v 1.2.4.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5SteppingAction.hh,v 1.4 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5SteppingAction_h #define Em5SteppingAction_h 1 @@ -43,7 +43,7 @@ class Em5RunAction; class Em5EventAction; class Em5SteppingMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5SteppingAction : public G4UserSteppingAction { @@ -65,4 +65,6 @@ class Em5SteppingAction : public G4UserSteppingAction }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingMessenger.hh b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingMessenger.hh index 6161eb7170..1f587458a6 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingMessenger.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em5SteppingMessenger.hh,v 1.2.4.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5SteppingMessenger.hh,v 1.3 2001/07/11 09:57:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingVerbose.hh index bdfa6bf480..6a1408b384 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5SteppingVerbose.hh @@ -21,22 +21,22 @@ // ******************************************************************** // // -// $Id: Em5SteppingVerbose.hh,v 1.5.2.1 2001/06/28 19:07:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5SteppingVerbose.hh,v 1.7 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. // It shows how to extract informations during the tracking of a particle. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5SteppingVerbose_h #define Em5SteppingVerbose_h 1 #include "G4SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5SteppingVerbose : public G4SteppingVerbose { @@ -50,4 +50,6 @@ public: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/include/Em5VisManager.hh b/examples/extended/electromagnetic/TestEm5/include/Em5VisManager.hh index f7f7831864..02d8713197 100644 --- a/examples/extended/electromagnetic/TestEm5/include/Em5VisManager.hh +++ b/examples/extended/electromagnetic/TestEm5/include/Em5VisManager.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5VisManager.hh,v 1.2.4.1 2001/06/28 19:07:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5VisManager.hh,v 1.4 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Example Visualization Manager implementing virtual function // RegisterGraphicsSystems. Exploits C-pre-processor variables @@ -42,14 +42,14 @@ // G4VisManager* myVisManager = new MyVisManager; // myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef Em5VisManager_h #define Em5VisManager_h 1 #include "G4VisManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class Em5VisManager: public G4VisManager { @@ -63,4 +63,6 @@ private: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/extended/electromagnetic/TestEm5/run01.mac b/examples/extended/electromagnetic/TestEm5/run01.mac index 65cd918a08..93f0c8acf4 100644 --- a/examples/extended/electromagnetic/TestEm5/run01.mac +++ b/examples/extended/electromagnetic/TestEm5/run01.mac @@ -7,10 +7,15 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +# /calor/setAbsMat Gold /calor/setAbsThick 9.658 mum /calor/setAbsYZ 10. cm /calor/update +# /gun/setDefault # # hist file name @@ -20,15 +25,11 @@ /plots/setThlow 0.0 deg /plots/setThhigh 10.0 deg # -/calor/cutG 13.0 micrometer -/calor/cutE 1.12 micrometer -/run/initialize -# # /gun/particle e- /gun/energy 15.7 MeV # -/run/beamOn 10000 +/run/beamOn 1000000 # diff --git a/examples/extended/electromagnetic/TestEm5/run01a.mac b/examples/extended/electromagnetic/TestEm5/run01a.mac index da7b67ba15..198344298c 100644 --- a/examples/extended/electromagnetic/TestEm5/run01a.mac +++ b/examples/extended/electromagnetic/TestEm5/run01a.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +# /calor/setAbsMat Gold /calor/setAbsThick 9.658 mum /calor/setAbsYZ 10. cm @@ -20,11 +24,6 @@ /plots/setThlow 0.0 deg /plots/setThhigh 30.0 deg # -/calor/cutG 13.0 micrometer -/calor/cutE 1.12 micrometer -/run/initialize -# -# /gun/particle e- /gun/energy 15.7 MeV # diff --git a/examples/extended/electromagnetic/TestEm5/run02.mac b/examples/extended/electromagnetic/TestEm5/run02.mac index ec48a4d4be..f10d47bbb6 100644 --- a/examples/extended/electromagnetic/TestEm5/run02.mac +++ b/examples/extended/electromagnetic/TestEm5/run02.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +# /calor/setAbsMat Gold /calor/setAbsThick 19.296 mum /calor/setAbsYZ 10. cm @@ -20,10 +24,6 @@ /plots/setThlow 0.0 deg /plots/setThhigh 10.0 deg # -/calor/cutG 13.0 micrometer -/calor/cutE 1.12 micrometer -/run/initialize -# # /gun/particle e- /gun/energy 15.7 MeV diff --git a/examples/extended/electromagnetic/TestEm5/run02a.mac b/examples/extended/electromagnetic/TestEm5/run02a.mac index 8ee527deef..3dae98ed6d 100644 --- a/examples/extended/electromagnetic/TestEm5/run02a.mac +++ b/examples/extended/electromagnetic/TestEm5/run02a.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 13.0 micrometer +/calor/cutE 1.12 micrometer +/run/initialize +# /calor/setAbsMat Gold /calor/setAbsThick 19.296 mum /calor/setAbsYZ 10. cm @@ -20,11 +24,6 @@ /plots/setThlow 0.0 deg /plots/setThhigh 30.0 deg # -/calor/cutG 13.0 micrometer -/calor/cutE 1.12 micrometer -/run/initialize -# -# /gun/particle e- /gun/energy 15.7 MeV # diff --git a/examples/extended/electromagnetic/TestEm5/run03.mac b/examples/extended/electromagnetic/TestEm5/run03.mac index d060bba1a1..9e791904bf 100644 --- a/examples/extended/electromagnetic/TestEm5/run03.mac +++ b/examples/extended/electromagnetic/TestEm5/run03.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2130.0 micrometer +/calor/cutE 7.000 micrometer +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 50. mum /calor/setAbsYZ 10. cm @@ -20,10 +24,6 @@ /plots/setThlow 0.0 deg /plots/setThhigh 6.0 deg # -/calor/cutG 2130.0 micrometer -/calor/cutE 7.000 micrometer -/run/initialize -# /gun/particle proton /gun/energy 6.56 MeV # diff --git a/examples/extended/electromagnetic/TestEm5/run04.mac b/examples/extended/electromagnetic/TestEm5/run04.mac index 975d7b8641..cbf05d8799 100644 --- a/examples/extended/electromagnetic/TestEm5/run04.mac +++ b/examples/extended/electromagnetic/TestEm5/run04.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2130.0 micrometer +/calor/cutE 7.000 micrometer +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 92.6 mum /calor/setAbsYZ 10. cm @@ -20,10 +24,6 @@ /plots/setThlow 0.0 deg /plots/setThhigh 6.0 deg # -/calor/cutG 2130.0 micrometer -/calor/cutE 7.000 micrometer -/run/initialize -# /gun/particle proton /gun/energy 6.56 MeV # diff --git a/examples/extended/electromagnetic/TestEm5/run05.mac b/examples/extended/electromagnetic/TestEm5/run05.mac index 8fe519d549..6bf220a384 100644 --- a/examples/extended/electromagnetic/TestEm5/run05.mac +++ b/examples/extended/electromagnetic/TestEm5/run05.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2250.0 micrometer +/calor/cutE 6.050 micrometer +/run/initialize +# /calor/setAbsMat Aluminium /calor/setAbsThick 4.005 mm /calor/setAbsYZ 10. cm @@ -21,10 +25,6 @@ /plots/setThlow 0.0 deg /plots/setThhigh 0.01 deg # -/calor/cutG 2250.0 micrometer -/calor/cutE 6.050 micrometer -/run/initialize -# # /gun/particle proton # momentum 70 GeV/c .... diff --git a/examples/extended/electromagnetic/TestEm5/run11.mac b/examples/extended/electromagnetic/TestEm5/run11.mac index b7e4d58d68..b999107ea1 100644 --- a/examples/extended/electromagnetic/TestEm5/run11.mac +++ b/examples/extended/electromagnetic/TestEm5/run11.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 61.0 mum /calor/setAbsYZ 10. cm @@ -20,10 +24,6 @@ /plots/setEnlow 0.0 MeV /plots/setEnhigh 1.1 MeV # -/calor/cutG 2.13 mm -/calor/cutE 7.00 micrometer -/run/initialize -# /gun/particle e- /gun/energy 1.00 MeV # diff --git a/examples/extended/electromagnetic/TestEm5/run12.mac b/examples/extended/electromagnetic/TestEm5/run12.mac index 1189136fe7..9a8409f476 100644 --- a/examples/extended/electromagnetic/TestEm5/run12.mac +++ b/examples/extended/electromagnetic/TestEm5/run12.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 105.0 mum /calor/setAbsYZ 10. cm @@ -17,12 +21,8 @@ /plots/sethistName geant4.plot12 # PLOT: energy deposit distribution in absorber /plots/setnbinEn 55 -/plots/setEnlow 0.0 MeV -/plots/setEnhigh 1.1 MeV -# -/calor/cutG 2.13 mm -/calor/cutE 7.00 micrometer -/run/initialize +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.1 MeV # /gun/particle e- /gun/energy 1.00 MeV diff --git a/examples/extended/electromagnetic/TestEm5/run13.mac b/examples/extended/electromagnetic/TestEm5/run13.mac index bec7cfb74c..d1c7189fc8 100644 --- a/examples/extended/electromagnetic/TestEm5/run13.mac +++ b/examples/extended/electromagnetic/TestEm5/run13.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 191.0 mum /calor/setAbsYZ 10. cm @@ -20,10 +24,6 @@ /plots/setEnlow 0.0 MeV /plots/setEnhigh 1.1 MeV # -/calor/cutG 2.13 mm -/calor/cutE 7.00 micrometer -/run/initialize -# /gun/particle e- /gun/energy 1.00 MeV # diff --git a/examples/extended/electromagnetic/TestEm5/run14.mac b/examples/extended/electromagnetic/TestEm5/run14.mac index f25ef61e9d..b40f01494e 100644 --- a/examples/extended/electromagnetic/TestEm5/run14.mac +++ b/examples/extended/electromagnetic/TestEm5/run14.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 530.0 mum /calor/setAbsYZ 10. cm @@ -17,12 +21,8 @@ /plots/sethistName geant4.plot14 # PLOT: energy deposit distribution in absorber /plots/setnbinEn 55 -/plots/setEnlow 0.0 MeV -/plots/setEnhigh 1.1 MeV -# -/calor/cutG 2.13 mm -/calor/cutE 7.00 micrometer -/run/initialize +/plots/setEnlow 0.0 MeV +/plots/setEnhigh 1.1 MeV # /gun/particle e- /gun/energy 1.00 MeV diff --git a/examples/extended/electromagnetic/TestEm5/run15.mac b/examples/extended/electromagnetic/TestEm5/run15.mac index 0e6eba7d39..f91e75340d 100644 --- a/examples/extended/electromagnetic/TestEm5/run15.mac +++ b/examples/extended/electromagnetic/TestEm5/run15.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 1. mm /calor/setAbsYZ 10. cm @@ -20,10 +24,6 @@ /plots/setEnlow 0.0 MeV /plots/setEnhigh 1.1 MeV # -/calor/cutG 2.13 mm -/calor/cutE 7.00 micrometer -/run/initialize -# /gun/particle e- /gun/energy 1.00 MeV # diff --git a/examples/extended/electromagnetic/TestEm5/run16.mac b/examples/extended/electromagnetic/TestEm5/run16.mac index 685f1c8014..94cb4d14ef 100644 --- a/examples/extended/electromagnetic/TestEm5/run16.mac +++ b/examples/extended/electromagnetic/TestEm5/run16.mac @@ -7,6 +7,10 @@ #control/saveHistory /run/verbose 2 # +/calor/cutG 2.13 mm +/calor/cutE 7.00 micrometer +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 3. mm /calor/setAbsYZ 10. cm @@ -20,10 +24,6 @@ /plots/setEnlow 0.0 MeV /plots/setEnhigh 1.1 MeV # -/calor/cutG 2.13 mm -/calor/cutE 7.00 micrometer -/run/initialize -# /gun/particle e- /gun/energy 1.00 MeV # diff --git a/examples/extended/electromagnetic/TestEm5/run17.mac b/examples/extended/electromagnetic/TestEm5/run17.mac index 13dba0ec60..cf2f618a47 100644 --- a/examples/extended/electromagnetic/TestEm5/run17.mac +++ b/examples/extended/electromagnetic/TestEm5/run17.mac @@ -6,6 +6,10 @@ /control/verbose 2 /run/verbose 2 # +/calor/cutG 100. mm +/calor/cutE 100. mm +/run/initialize +# /calor/setAbsMat NewArgonCO2 /calor/setAbsThick 15 mm /calor/setAbsYZ 60 mm @@ -20,10 +24,6 @@ /plots/setEnlow 0. keV /plots/setEnhigh 6. keV # -/calor/cutG 100. mm -/calor/cutE 100. mm -/run/initialize -# #/gun/particle proton #/gun/energy 24 GeV /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm5/run18.mac b/examples/extended/electromagnetic/TestEm5/run18.mac index 25183ef8e2..02993d9927 100644 --- a/examples/extended/electromagnetic/TestEm5/run18.mac +++ b/examples/extended/electromagnetic/TestEm5/run18.mac @@ -6,6 +6,10 @@ /control/verbose 2 /run/verbose 2 # +/calor/cutG 1. mm +/calor/cutE 1. mm +/run/initialize +# /calor/setAbsMat XenonMethanePropane /calor/setAbsThick 23 mm /calor/setAbsYZ 60 mm @@ -20,10 +24,6 @@ /plots/setEnlow 0. keV /plots/setEnhigh 20. keV # -/calor/cutG 1. mm -/calor/cutE 1. mm -/run/initialize -# /gun/particle proton /gun/energy 2.20 GeV diff --git a/examples/extended/electromagnetic/TestEm5/run19.mac b/examples/extended/electromagnetic/TestEm5/run19.mac index dcaa476253..c1457d7489 100644 --- a/examples/extended/electromagnetic/TestEm5/run19.mac +++ b/examples/extended/electromagnetic/TestEm5/run19.mac @@ -6,6 +6,10 @@ /control/verbose 2 /run/verbose 2 # +/calor/cutG 2.13 mm +/calor/cutE 7.0 mum +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 20.5 mum /calor/setAbsYZ 10 cm @@ -20,10 +24,6 @@ /plots/setEnlow 0. keV /plots/setEnhigh 13. keV # -/calor/cutG 2.13 mm -/calor/cutE 7.0 mum -/run/initialize -# /gun/particle pi+ /gun/energy 5. GeV diff --git a/examples/extended/electromagnetic/TestEm5/run20.mac b/examples/extended/electromagnetic/TestEm5/run20.mac index bc0b449980..e1790b9120 100644 --- a/examples/extended/electromagnetic/TestEm5/run20.mac +++ b/examples/extended/electromagnetic/TestEm5/run20.mac @@ -6,6 +6,10 @@ /control/verbose 2 /run/verbose 2 # +/calor/cutG 1. mm +/calor/cutE 1. mm +/run/initialize +# /calor/setAbsMat ArgonCH4 /calor/setAbsThick 15 mm /calor/setAbsYZ 60 mm @@ -20,10 +24,6 @@ /plots/setEnlow 0. keV /plots/setEnhigh 8. keV # -/calor/cutG 1. mm -/calor/cutE 1. mm -/run/initialize -# /gun/particle pi+ /gun/energy 2.864 GeV diff --git a/examples/extended/electromagnetic/TestEm5/run21.mac b/examples/extended/electromagnetic/TestEm5/run21.mac index 5ab0ca6290..8353d0294d 100644 --- a/examples/extended/electromagnetic/TestEm5/run21.mac +++ b/examples/extended/electromagnetic/TestEm5/run21.mac @@ -7,12 +7,9 @@ #control/saveHistory /run/verbose 2 # -# hist file name -/plots/sethistName geant4.plot21 -# PLOT: gamma energy at exit -/plots/setnbinGamma 80 -/plots/setElowGamma 0.1 MeV -/plots/setEhighGamma 1. GeV +/calor/cutG 1.00 mm +/calor/cutE 5.0 mum +/run/initialize # /calor/setAbsMat Aluminium /calor/setAbsThick 5.30 mm @@ -20,10 +17,12 @@ /calor/update /gun/setDefault # -/calor/cutG 1.00 mm -/calor/cutE 5.0 mum -/run/initialize -# +# hist file name +/plots/sethistName geant4.plot21 +# PLOT: gamma energy at exit +/plots/setnbinGamma 80 +/plots/setElowGamma 0.1 MeV +/plots/setEhighGamma 1.0 GeV # /gun/particle e- /gun/energy 25. GeV diff --git a/examples/extended/electromagnetic/TestEm5/run22.mac b/examples/extended/electromagnetic/TestEm5/run22.mac index bed467bf7c..74447f231b 100644 --- a/examples/extended/electromagnetic/TestEm5/run22.mac +++ b/examples/extended/electromagnetic/TestEm5/run22.mac @@ -7,12 +7,9 @@ #control/saveHistory /run/verbose 2 # -# hist file name -/plots/sethistName geant4.plot22 -# PLOT: gamma energy at exit -/plots/setnbinGamma 80 -/plots/setElowGamma 0.1 MeV -/plots/setEhighGamma 1. GeV +/calor/cutG 1.00 mm +/calor/cutE 5.0 mum +/run/initialize # /calor/setAbsMat Lead /calor/setAbsThick 0.15 mm @@ -20,9 +17,12 @@ /calor/update /gun/setDefault # -/calor/cutG 1.00 mm -/calor/cutE 5.0 mum -/run/initialize +# hist file name +/plots/sethistName geant4.plot22 +# PLOT: gamma energy at exit +/plots/setnbinGamma 80 +/plots/setElowGamma 0.1 MeV +/plots/setEhighGamma 1. GeV # # /gun/particle e- diff --git a/examples/extended/electromagnetic/TestEm5/run44.draw b/examples/extended/electromagnetic/TestEm5/run44.draw index b0bc682fbb..5afd3d8e49 100644 --- a/examples/extended/electromagnetic/TestEm5/run44.draw +++ b/examples/extended/electromagnetic/TestEm5/run44.draw @@ -6,21 +6,20 @@ /control/verbose 2 /run/verbose 2 # +/run/initialize +# /calor/setAbsMat Silicon /calor/setAbsThick 10 mum /calor/setAbsYZ 20 mum /calor/update /gun/setDefault # -/vis/camera/zoom 1.4 -/vis/drawVolume -# /gun/particle e- /gun/energy 500 keV /tracking/verbose 1 # -/step/setMaxStep 1 mm -/run/beamOn 20 +#/step/setMaxStep 1 mm +#/run/beamOn 20 # #/step/setMaxStep 2 mum #/run/beamOn 20 diff --git a/examples/extended/electromagnetic/TestEm5/run55.mac b/examples/extended/electromagnetic/TestEm5/run55.mac index f7c1678065..b2d8210e99 100644 --- a/examples/extended/electromagnetic/TestEm5/run55.mac +++ b/examples/extended/electromagnetic/TestEm5/run55.mac @@ -6,6 +6,10 @@ /control/verbose 2 /run/verbose 2 # +/calor/cutG 1 mm +/calor/cutE 1 mm +/run/initialize +# /calor/setAbsMat Iron /calor/setAbsThick 2 m /calor/setAbsYZ 2 m @@ -24,10 +28,6 @@ /plots/setTtlow 950. GeV /plots/setTthigh 1000. GeV # -/calor/cutG 1 mm -/calor/cutE 1 mm -/run/initialize -# /gun/particle mu+ /gun/energy 1000 GeV diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5CalorHit.cc b/examples/extended/electromagnetic/TestEm5/src/Em5CalorHit.cc index 4a93db770f..cb80aa330e 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5CalorHit.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5CalorHit.cc @@ -21,19 +21,19 @@ // ******************************************************************** // // -// $Id: Em5CalorHit.cc,v 1.2.4.1 2001/06/28 19:07:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5CalorHit.cc,v 1.4 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5CalorHit.hh" G4Allocator Em5CalorHitAllocator; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5CalorHit::Em5CalorHit() { @@ -41,12 +41,12 @@ Em5CalorHit::Em5CalorHit() EdepGap = 0.; TrackLengthGap = 0.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5CalorHit::~Em5CalorHit() -{;} +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5CalorHit::Em5CalorHit(const Em5CalorHit& right) { @@ -54,7 +54,7 @@ Em5CalorHit::Em5CalorHit(const Em5CalorHit& right) EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... const Em5CalorHit& Em5CalorHit::operator=(const Em5CalorHit& right) { @@ -63,17 +63,17 @@ const Em5CalorHit& Em5CalorHit::operator=(const Em5CalorHit& right) return *this; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int Em5CalorHit::operator==(const Em5CalorHit& right) const { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5CalorHit::Print() -{;} +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm5/src/Em5CalorimeterSD.cc index 442f231072..ed535aea7a 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5CalorimeterSD.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5CalorimeterSD.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5CalorimeterSD.cc,v 1.2.4.1 2001/06/28 19:07:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5CalorimeterSD.cc,v 1.4 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5CalorimeterSD.hh" @@ -42,7 +42,7 @@ #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5CalorimeterSD::Em5CalorimeterSD(G4String name, Em5DetectorConstruction* det) @@ -52,14 +52,14 @@ Em5CalorimeterSD::Em5CalorimeterSD(G4String name, HitID = new G4int[500]; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5CalorimeterSD::~Em5CalorimeterSD() { delete [] HitID; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5CalorimeterSD::Initialize(G4HCofThisEvent*HCE) { @@ -68,7 +68,7 @@ void Em5CalorimeterSD::Initialize(G4HCofThisEvent*HCE) for (G4int j=0;j<1; j++) {HitID[j] = -1;}; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4bool Em5CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) { @@ -106,7 +106,7 @@ G4bool Em5CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) return true; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) { @@ -116,16 +116,16 @@ void Em5CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) HCE->AddHitsCollection(HCID,CalCollection); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5CalorimeterSD::clear() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5CalorimeterSD::PrintAll() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5DetectorConstruction.cc index 9a0dbb6759..43aeb84b72 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5DetectorConstruction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5DetectorConstruction.cc,v 1.5.2.1 2001/06/28 19:07:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5DetectorConstruction.cc,v 1.7 2001/10/16 11:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5DetectorConstruction.hh" #include "Em5DetectorMessenger.hh" @@ -49,13 +49,13 @@ #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5DetectorConstruction::Em5DetectorConstruction() -:solidWorld(NULL),logicWorld(NULL),physiWorld(NULL), +:AbsorberMaterial(NULL),WorldMaterial(NULL),defaultWorld(true), + solidWorld(NULL),logicWorld(NULL),physiWorld(NULL), solidAbsorber(NULL),logicAbsorber(NULL),physiAbsorber(NULL), - AbsorberMaterial(NULL),WorldMaterial(NULL), - magField(NULL),calorimeterSD(NULL),defaultWorld(true) + magField(NULL),calorimeterSD(NULL) { // default parameter values of the calorimeter AbsorberThickness = 1.*cm; @@ -67,14 +67,14 @@ Em5DetectorConstruction::Em5DetectorConstruction() detectorMessenger = new Em5DetectorMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5DetectorConstruction::~Em5DetectorConstruction() { delete detectorMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em5DetectorConstruction::Construct() { @@ -82,7 +82,7 @@ G4VPhysicalVolume* Em5DetectorConstruction::Construct() return ConstructCalorimeter(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::DefineMaterials() { @@ -90,11 +90,9 @@ void Em5DetectorConstruction::DefineMaterials() G4String name, symbol; //a=mass of a mole; G4double a, z, density; //z=mean number of protons; -G4int iz, n; //iz=number of protons in an isotope; - // n=number of nucleons in an isotope; G4int ncomponents, natoms; -G4double abundance, fractionmass; +G4double fractionmass; G4double temperature, pressure; // @@ -197,7 +195,7 @@ ArCO2->AddMaterial(CO2, fractionmass=0.2156); //another way to define mixture of gas per volume density = 1.8223*mg/cm3; -G4Material* NewArCO2 = new G4Material(name="NewArgonCO2", density, ncomponents=3); +G4Material* NewArCO2 = new G4Material(name="NewArgonCO2",density,ncomponents=3); NewArCO2->AddElement (elAr, natoms=8); NewArCO2->AddElement (elC, natoms=2); NewArCO2->AddElement (elO, natoms=4); @@ -211,7 +209,7 @@ ArCH4->AddElement (elH, natoms=28); //Xenon-methane-propane density = 4.9196*mg/cm3; -G4Material* XeCH = new G4Material(name="XenonMethanePropane", density, ncomponents=3, +G4Material* XeCH = new G4Material("XenonMethanePropane", density, ncomponents=3, kStateGas,temperature=293.15*kelvin, pressure=1*atmosphere); XeCH->AddElement (elXe, natoms=875); XeCH->AddElement (elC, natoms=225); @@ -224,7 +222,7 @@ XeCH->AddElement (elH, natoms=700); density = universe_mean_density; //from PhysicalConstants.h pressure = 3.e-18*pascal; temperature = 2.73*kelvin; -G4Material* Vacuum = new G4Material(name="Galactic", z=1., a=1.01*g/mole, density, +G4Material* Vacuum = new G4Material("Galactic", z=1., a=1.01*g/mole,density, kStateGas,temperature,pressure); G4cout << *(G4Material::GetMaterialTable()) << G4endl; @@ -234,7 +232,7 @@ G4cout << *(G4Material::GetMaterialTable()) << G4endl; WorldMaterial = Vacuum; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* Em5DetectorConstruction::ConstructCalorimeter() { @@ -305,23 +303,25 @@ G4VPhysicalVolume* Em5DetectorConstruction::ConstructCalorimeter() return physiWorld; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::PrintCalorParameters() { - G4cout << "\n The WORLD is made of " - << G4BestUnit(WorldSizeX,"Length") << " of " << WorldMaterial->GetName(); + G4cout << "\n The WORLD is made of " << G4BestUnit(WorldSizeX,"Length") + << " of " << WorldMaterial->GetName(); G4cout << ". The transverse size (YZ) of the world is " << G4BestUnit(WorldSizeYZ,"Length") << G4endl; G4cout << " The ABSORBER is made of " - <GetName(); + <GetName(); G4cout << ". The transverse size (YZ) is " << G4BestUnit(AbsorberSizeYZ,"Length") << G4endl; - G4cout << " X position of the middle of the absorber " << G4BestUnit(XposAbs,"Length"); + G4cout << " X position of the middle of the absorber " + << G4BestUnit(XposAbs,"Length"); G4cout << G4endl; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) { @@ -334,7 +334,7 @@ void Em5DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::SetWorldMaterial(G4String materialChoice) { @@ -347,7 +347,7 @@ void Em5DetectorConstruction::SetWorldMaterial(G4String materialChoice) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::SetAbsorberThickness(G4double val) { @@ -355,7 +355,7 @@ void Em5DetectorConstruction::SetAbsorberThickness(G4double val) AbsorberThickness = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::SetAbsorberSizeYZ(G4double val) { @@ -363,7 +363,7 @@ void Em5DetectorConstruction::SetAbsorberSizeYZ(G4double val) AbsorberSizeYZ = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::SetWorldSizeX(G4double val) { @@ -371,7 +371,7 @@ void Em5DetectorConstruction::SetWorldSizeX(G4double val) defaultWorld = false; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::SetWorldSizeYZ(G4double val) { @@ -379,14 +379,14 @@ void Em5DetectorConstruction::SetWorldSizeYZ(G4double val) defaultWorld = false; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::SetAbsorberXpos(G4double val) { XposAbs = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::SetMagField(G4double fieldValue) { @@ -406,12 +406,12 @@ void Em5DetectorConstruction::SetMagField(G4double fieldValue) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorConstruction::UpdateGeometry() { G4RunManager::GetRunManager()->DefineWorldVolume(ConstructCalorimeter()); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5DetectorMessenger.cc index 17be8a44cb..b0bf404f4e 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5DetectorMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5DetectorMessenger.cc,v 1.2.4.1 2001/06/28 19:07:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5DetectorMessenger.cc,v 1.5 2001/11/05 17:58:02 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5DetectorMessenger.hh" @@ -38,7 +38,7 @@ #include "G4UIcmdWithADoubleAndUnit.hh" #include "G4UIcmdWithoutParameter.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5DetectorMessenger::Em5DetectorMessenger(Em5DetectorConstruction * Em5Det) :Em5Detector(Em5Det) @@ -49,46 +49,46 @@ Em5DetectorMessenger::Em5DetectorMessenger(Em5DetectorConstruction * Em5Det) AbsMaterCmd = new G4UIcmdWithAString("/calor/setAbsMat",this); AbsMaterCmd->SetGuidance("Select Material of the Absorber."); AbsMaterCmd->SetParameterName("choice",false); - AbsMaterCmd->AvailableForStates(Idle); + AbsMaterCmd->AvailableForStates(PreInit,Idle); WorldMaterCmd = new G4UIcmdWithAString("/calor/setWorldMat",this); WorldMaterCmd->SetGuidance("Select Material of the World."); WorldMaterCmd->SetParameterName("wchoice",false); - WorldMaterCmd->AvailableForStates(Idle); + WorldMaterCmd->AvailableForStates(PreInit,Idle); AbsThickCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsThick",this); AbsThickCmd->SetGuidance("Set Thickness of the Absorber"); AbsThickCmd->SetParameterName("SizeZ",false); AbsThickCmd->SetRange("SizeZ>0."); AbsThickCmd->SetUnitCategory("Length"); - AbsThickCmd->AvailableForStates(Idle); + AbsThickCmd->AvailableForStates(PreInit,Idle); AbsSizYZCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsYZ",this); AbsSizYZCmd->SetGuidance("Set sizeYZ of the Absorber"); AbsSizYZCmd->SetParameterName("SizeYZ",false); AbsSizYZCmd->SetRange("SizeYZ>0."); AbsSizYZCmd->SetUnitCategory("Length"); - AbsSizYZCmd->AvailableForStates(Idle); + AbsSizYZCmd->AvailableForStates(PreInit,Idle); AbsXposCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsXpos",this); AbsXposCmd->SetGuidance("Set X pos. of the Absorber"); AbsXposCmd->SetParameterName("Xpos",false); AbsXposCmd->SetUnitCategory("Length"); - AbsXposCmd->AvailableForStates(Idle); + AbsXposCmd->AvailableForStates(PreInit,Idle); WorldXCmd = new G4UIcmdWithADoubleAndUnit("/calor/setWorldX",this); WorldXCmd->SetGuidance("Set X size of the World"); WorldXCmd->SetParameterName("WSizeX",false); WorldXCmd->SetRange("WSizeX>0."); WorldXCmd->SetUnitCategory("Length"); - WorldXCmd->AvailableForStates(Idle); + WorldXCmd->AvailableForStates(PreInit,Idle); WorldYZCmd = new G4UIcmdWithADoubleAndUnit("/calor/setWorldYZ",this); WorldYZCmd->SetGuidance("Set sizeYZ of the World"); WorldYZCmd->SetParameterName("WSizeYZ",false); WorldYZCmd->SetRange("WSizeYZ>0."); WorldYZCmd->SetUnitCategory("Length"); - WorldYZCmd->AvailableForStates(Idle); + WorldYZCmd->AvailableForStates(PreInit,Idle); UpdateCmd = new G4UIcmdWithoutParameter("/calor/update",this); UpdateCmd->SetGuidance("Update calorimeter geometry."); @@ -101,11 +101,11 @@ Em5DetectorMessenger::Em5DetectorMessenger(Em5DetectorConstruction * Em5Det) MagFieldCmd->SetGuidance("Magnetic field will be in Z direction."); MagFieldCmd->SetParameterName("Bz",false); MagFieldCmd->SetUnitCategory("Magnetic flux density"); - MagFieldCmd->AvailableForStates(Idle); + MagFieldCmd->AvailableForStates(PreInit,Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5DetectorMessenger::~Em5DetectorMessenger() { @@ -121,36 +121,36 @@ Em5DetectorMessenger::~Em5DetectorMessenger() delete Em5detDir; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { - if( command == AbsMaterCmd ) - { Em5Detector->SetAbsorberMaterial(newValue);} + if ( command == AbsMaterCmd ) + {Em5Detector->SetAbsorberMaterial(newValue);} - if( command == WorldMaterCmd ) - { Em5Detector->SetWorldMaterial(newValue);} + if ( command == WorldMaterCmd ) + {Em5Detector->SetWorldMaterial(newValue);} - if( command == AbsThickCmd ) - { Em5Detector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} + if ( command == AbsThickCmd ) + {Em5Detector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} - if( command == AbsSizYZCmd ) - { Em5Detector->SetAbsorberSizeYZ(AbsSizYZCmd->GetNewDoubleValue(newValue));} + if ( command == AbsSizYZCmd ) + {Em5Detector->SetAbsorberSizeYZ(AbsSizYZCmd->GetNewDoubleValue(newValue));} - if( command == AbsXposCmd ) - { Em5Detector->SetAbsorberXpos(AbsXposCmd->GetNewDoubleValue(newValue));} + if ( command == AbsXposCmd ) + {Em5Detector->SetAbsorberXpos(AbsXposCmd->GetNewDoubleValue(newValue));} - if( command == WorldXCmd ) - { Em5Detector->SetWorldSizeX(WorldXCmd->GetNewDoubleValue(newValue));} + if ( command == WorldXCmd ) + {Em5Detector->SetWorldSizeX(WorldXCmd->GetNewDoubleValue(newValue));} - if( command == WorldYZCmd ) - { Em5Detector->SetWorldSizeYZ(WorldYZCmd->GetNewDoubleValue(newValue));} + if ( command == WorldYZCmd ) + {Em5Detector->SetWorldSizeYZ(WorldYZCmd->GetNewDoubleValue(newValue));} - if( command == UpdateCmd ) - { Em5Detector->UpdateGeometry(); } + if ( command == UpdateCmd ) + {Em5Detector->UpdateGeometry(); } if( command == MagFieldCmd ) - { Em5Detector->SetMagField(MagFieldCmd->GetNewDoubleValue(newValue));} + {Em5Detector->SetMagField(MagFieldCmd->GetNewDoubleValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5EventAction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5EventAction.cc index e46a9894d3..abc812468e 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5EventAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5EventAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5EventAction.cc,v 1.4.2.1 2001/06/28 19:07:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5EventAction.cc,v 1.7 2001/11/28 16:08:18 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5EventAction.hh" @@ -35,9 +35,6 @@ #include "Em5CalorHit.hh" #include "Em5EventActionMessenger.hh" - -#include "g4rw/tvordvec.h" - #include "G4Event.hh" #include "G4EventManager.hh" #include "G4HCofThisEvent.hh" @@ -49,25 +46,24 @@ #include "G4VVisManager.hh" #include "G4ios.hh" #include "G4UnitsTable.hh" -#include "Randomize.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5EventAction::Em5EventAction(Em5RunAction* Em5RA) -:calorimeterCollID(-1),eventMessenger(NULL), - verboselevel(0),runaction(Em5RA),drawFlag("all"),printModulo(10000) +:calorimeterCollID(-1),eventMessenger(NULL),runaction(Em5RA), + verboselevel(0),drawFlag("none"),printModulo(10000) { eventMessenger = new Em5EventActionMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5EventAction::~Em5EventAction() { delete eventMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::BeginOfEventAction(const G4Event* evt) { @@ -76,13 +72,6 @@ void Em5EventAction::BeginOfEventAction(const G4Event* evt) //printing survey if (evtNb%printModulo == 0) G4cout << "\n---> Begin of Event: " << evtNb << G4endl; - - //save rndm status - if (runaction->GetRndmFreq() == 2) - { - HepRandom::saveEngineStatus("beginOfEvent.rndm"); - if (evtNb%printModulo == 0) HepRandom::showEngineStatus(); - } if (calorimeterCollID==-1) { @@ -101,7 +90,7 @@ void Em5EventAction::BeginOfEventAction(const G4Event* evt) Reflected =0.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::EndOfEventAction(const G4Event* evt) { @@ -155,7 +144,8 @@ void Em5EventAction::EndOfEventAction(const G4Event* evt) G4int n_trajectories = 0; if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); for(G4int i=0; iGetTrajectoryContainer()))[i]); + { G4Trajectory* trj = (G4Trajectory *) + ((*(evt->GetTrajectoryContainer()))[i]); if (drawFlag == "all") trj->DrawTrajectory(50); else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) trj->DrawTrajectory(50); @@ -163,7 +153,7 @@ void Em5EventAction::EndOfEventAction(const G4Event* evt) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4int Em5EventAction::GetEventno() { @@ -171,69 +161,69 @@ G4int Em5EventAction::GetEventno() return evno ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::setEventVerbose(G4int level) { verboselevel = level ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::CountStepsCharged() { nstepCharged += 1. ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::CountStepsNeutral() { nstepNeutral += 1. ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::AddCharged() { Nch += 1.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::AddNeutral() { Nne += 1.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::AddE() { NE += 1.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::AddP() { NP += 1.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::SetTr() { Transmitted = 1.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5EventAction::SetRef() { Reflected = 1.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5EventActionMessenger.cc index 853bd7644c..47ca95ab09 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5EventActionMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5EventActionMessenger.cc,v 1.2.4.1 2001/06/28 19:07:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5EventActionMessenger.cc,v 1.4 2001/10/16 11:56:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5EventActionMessenger.hh" @@ -37,7 +37,7 @@ #include "G4UIcmdWithADoubleAndUnit.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5EventActionMessenger::Em5EventActionMessenger(Em5EventAction* EvAct) :eventAction(EvAct) @@ -62,7 +62,7 @@ Em5EventActionMessenger::Em5EventActionMessenger(Em5EventAction* EvAct) PrintCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5EventActionMessenger::~Em5EventActionMessenger() { @@ -71,9 +71,10 @@ Em5EventActionMessenger::~Em5EventActionMessenger() delete PrintCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em5EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void Em5EventActionMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if(command == setVerboseCmd) {eventAction->setEventVerbose(setVerboseCmd->GetNewIntValue(newValue));} @@ -85,4 +86,4 @@ void Em5EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValu {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsList.cc b/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsList.cc index 352c203870..b8c5a633c9 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5PhysicsList.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: Em5PhysicsList.cc,v 1.7.2.1 2001/06/28 19:07:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5PhysicsList.cc,v 1.9 2001/10/16 11:56:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Always place it in front! // @@ -46,7 +46,7 @@ #include "G4ios.hh" #include "g4std/iomanip" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5PhysicsList::Em5PhysicsList(Em5DetectorConstruction* p) :G4VUserPhysicsList() @@ -62,14 +62,14 @@ Em5PhysicsList::Em5PhysicsList(Em5DetectorConstruction* p) physicsListMessenger = new Em5PhysicsListMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5PhysicsList::~Em5PhysicsList() { delete physicsListMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PhysicsList::ConstructParticle() { @@ -84,7 +84,7 @@ void Em5PhysicsList::ConstructParticle() ConstructBarions(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PhysicsList::ConstructBosons() { @@ -95,7 +95,8 @@ void Em5PhysicsList::ConstructBosons() // gamma G4Gamma::GammaDefinition(); } - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PhysicsList::ConstructLeptons() { @@ -111,7 +112,7 @@ void Em5PhysicsList::ConstructLeptons() G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PhysicsList::ConstructMesons() { @@ -123,7 +124,7 @@ void Em5PhysicsList::ConstructMesons() G4KaonMinus::KaonMinusDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PhysicsList::ConstructBarions() { @@ -132,7 +133,7 @@ void Em5PhysicsList::ConstructBarions() G4AntiProton::AntiProtonDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PhysicsList::ConstructProcess() { @@ -141,7 +142,7 @@ void Em5PhysicsList::ConstructProcess() ConstructGeneral(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" @@ -159,7 +160,7 @@ void Em5PhysicsList::ConstructProcess() #include "G4hIonisation.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PhysicsList::ConstructEM() { @@ -211,7 +212,7 @@ void Em5PhysicsList::ConstructEM() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4Decay.hh" #include "Em5StepCut.hh" @@ -239,7 +240,7 @@ void Em5PhysicsList::ConstructGeneral() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PhysicsList::SetCuts() { @@ -289,11 +290,12 @@ void Em5PhysicsList::SetCuts() ////theTimer.Stop(); ////G4cout.precision(6); ////G4cout << G4endl ; - ////G4cout << "total time(SetCuts)=" << theTimer.GetUserElapsed() << " s " <SetParameterName("range",false); cutGCmd->SetRange("range>0."); cutGCmd->SetUnitCategory("Length"); - cutGCmd->AvailableForStates(Idle); + cutGCmd->AvailableForStates(PreInit,Idle); cutECmd = new G4UIcmdWithADoubleAndUnit("/calor/cutE",this); cutECmd->SetGuidance("Set cut values by RANGE for e- e+."); cutECmd->SetParameterName("range",false); cutECmd->SetRange("range>0."); cutECmd->SetUnitCategory("Length"); - cutECmd->AvailableForStates(Idle); + cutECmd->AvailableForStates(PreInit,Idle); cutPCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutP",this); cutPCmd->SetGuidance("Set cut values by RANGE for proton and others."); cutPCmd->SetParameterName("range",false); cutPCmd->SetRange("range>0."); cutPCmd->SetUnitCategory("Length"); - cutPCmd->AvailableForStates(Idle); + cutPCmd->AvailableForStates(PreInit,Idle); eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this); eCmd->SetGuidance("Set cut values by ENERGY for charged particles."); eCmd->SetParameterName("energy",false); eCmd->SetRange("energy>0."); eCmd->SetUnitCategory("Energy"); - eCmd->AvailableForStates(Idle); + eCmd->AvailableForStates(PreInit,Idle); rCmd = new G4UIcmdWithADoubleAndUnit("/calor/range",this); rCmd->SetGuidance("Display the RANGE of Electron for the current material."); rCmd->SetParameterName("energy",false); rCmd->SetRange("energy>0."); rCmd->SetUnitCategory("Energy"); - rCmd->AvailableForStates(Idle); + rCmd->AvailableForStates(PreInit,Idle); setMaxStepCmd = new G4UIcmdWithADoubleAndUnit("/step/setMaxStep",this); setMaxStepCmd->SetGuidance("Set max. step length in the detector"); @@ -81,7 +81,7 @@ Em5PhysicsListMessenger::Em5PhysicsListMessenger(Em5PhysicsList * List) setMaxStepCmd->SetUnitCategory("Length"); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5PhysicsListMessenger::~Em5PhysicsListMessenger() { @@ -93,9 +93,10 @@ Em5PhysicsListMessenger::~Em5PhysicsListMessenger() delete setMaxStepCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em5PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +void Em5PhysicsListMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { if(command == cutGCmd) { Em5List->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));} @@ -111,5 +112,5 @@ void Em5PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue { Em5List->SetMaxStep(setMaxStepCmd->GetNewDoubleValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorAction.cc index 3a95a4bc83..3dd036d76d 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5PrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:07:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5PrimaryGeneratorAction.cc,v 1.4 2001/10/16 11:56:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5PrimaryGeneratorAction.hh" @@ -40,11 +40,11 @@ #include "G4ParticleDefinition.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4String Em5PrimaryGeneratorAction::thePrimaryParticleName="e-" ; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5PrimaryGeneratorAction::Em5PrimaryGeneratorAction( Em5DetectorConstruction* Em5DC) @@ -58,7 +58,7 @@ Em5PrimaryGeneratorAction::Em5PrimaryGeneratorAction( gunMessenger = new Em5PrimaryGeneratorMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5PrimaryGeneratorAction::~Em5PrimaryGeneratorAction() { @@ -66,7 +66,7 @@ Em5PrimaryGeneratorAction::~Em5PrimaryGeneratorAction() delete gunMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PrimaryGeneratorAction::SetDefaultKinematic() { @@ -86,7 +86,7 @@ void Em5PrimaryGeneratorAction::SetDefaultKinematic() particleGun->SetParticlePosition(G4ThreeVector(x0, 0*cm, 0*cm)); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { @@ -98,12 +98,12 @@ void Em5PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) particleGun->GeneratePrimaryVertex(anEvent); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4String Em5PrimaryGeneratorAction::GetPrimaryName() { return thePrimaryParticleName; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorMessenger.cc index e92c1c8b38..ae0f77f1ad 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5PrimaryGeneratorMessenger.cc @@ -21,43 +21,45 @@ // ******************************************************************** // // -// $Id: Em5PrimaryGeneratorMessenger.cc,v 1.2.4.1 2001/06/28 19:07:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5PrimaryGeneratorMessenger.cc,v 1.5 2001/11/05 17:58:02 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5PrimaryGeneratorMessenger.hh" #include "Em5PrimaryGeneratorAction.hh" #include "G4UIcmdWithoutParameter.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -Em5PrimaryGeneratorMessenger::Em5PrimaryGeneratorMessenger(Em5PrimaryGeneratorAction* Em5Gun) +Em5PrimaryGeneratorMessenger::Em5PrimaryGeneratorMessenger( + Em5PrimaryGeneratorAction* Em5Gun) :Em5Action(Em5Gun) { - DefaultCmd = new G4UIcmdWithoutParameter("/gun/setDefault",this); - DefaultCmd->SetGuidance("set/reset the kinematic defined in PrimaryGenerator"); - DefaultCmd->AvailableForStates(PreInit,Idle); + DefaultCmd = new G4UIcmdWithoutParameter("/gun/setDefault",this); + DefaultCmd->SetGuidance("set/reset the kinematic defined in PrimaryGenerator"); + DefaultCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5PrimaryGeneratorMessenger::~Em5PrimaryGeneratorMessenger() { delete DefaultCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void Em5PrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void Em5PrimaryGeneratorMessenger::SetNewValue(G4UIcommand* command, + G4String newValue) { - if( command == DefaultCmd ) - { Em5Action->SetDefaultKinematic();} + if (command == DefaultCmd) + {Em5Action->SetDefaultKinematic();} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5RunAction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5RunAction.cc index 3b1e79036b..46c96f322d 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5RunAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5RunAction.cc @@ -21,17 +21,18 @@ // ******************************************************************** // // -// $Id: Em5RunAction.cc,v 1.8.2.1 2001/06/28 19:07:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5RunAction.cc,v 1.11 2001/11/28 16:08:18 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5RunAction.hh" #include "Em5RunMessenger.hh" #include "G4Run.hh" +#include "G4RunManager.hh" #include "G4UImanager.hh" #include "G4VVisManager.hh" #include "G4ios.hh" @@ -44,14 +45,13 @@ #include #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5RunAction::Em5RunAction() :histName("histfile"),nbinStep(0),nbinEn(0),nbinTt(0),nbinTb(0), nbinTsec(0),nbinTh(0),nbinThback(0),nbinR(0),nbinGamma(0),nbinvertexz(0) { runMessenger = new Em5RunMessenger(this); - saveRndm = 1; #ifndef G4NOHIST histo1=0; histo2=0; histo3=0; histo4=0; histo5=0; histo6=0; histo7=0; @@ -59,7 +59,7 @@ Em5RunAction::Em5RunAction() #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5RunAction::~Em5RunAction() { @@ -82,7 +82,7 @@ Em5RunAction::~Em5RunAction() #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::bookHisto() { @@ -105,7 +105,7 @@ void Em5RunAction::bookHisto() assert (histo2 != 0); hi2bis = hbookManager->histogram("energy deposit: normalized distribution" - ,nbinEn,Enlow,Enhigh) ; + ,nbinEn,Enlow,Enhigh) ; assert (hi2bis != 0); } if(nbinTh>0) @@ -122,64 +122,62 @@ void Em5RunAction::bookHisto() } if(nbinTt>0) { - histo5 = hbookManager->histogram("kinetic energy of the primary at exit(MeV)" - ,nbinTt,Ttlow,Tthigh) ; + histo5 = hbookManager->histogram( + "kinetic energy of the primary at exit(MeV)" + ,nbinTt,Ttlow,Tthigh); assert (histo5 != 0); } if(nbinThback>0) { - histo6 = hbookManager->histogram("angle distribution of backscattered primaries(deg)" - ,nbinThback,Thlowback/deg,Thhighback/deg) ; + histo6 = hbookManager->histogram( + "angle distribution of backscattered primaries(deg)" + ,nbinThback,Thlowback/deg,Thhighback/deg); assert (histo6 != 0); } if(nbinTb>0) { - histo7 = hbookManager->histogram("kinetic energy of the backscattered primaries (MeV)" - ,nbinTb,Tblow,Tbhigh) ; + histo7 = hbookManager->histogram( + "kinetic energy of the backscattered primaries (MeV)" + ,nbinTb,Tblow,Tbhigh); assert (histo7 != 0); } if(nbinTsec>0) { - histo8 = hbookManager->histogram("kinetic energy of the charged secondaries (MeV)" - ,nbinTsec,Tseclow,Tsechigh) ; + histo8 = hbookManager->histogram( + "kinetic energy of the charged secondaries (MeV)" + ,nbinTsec,Tseclow,Tsechigh); assert (histo8 != 0); } if(nbinvertexz>0) { - histo9 = hbookManager->histogram("z of secondary charged vertices(mm)" - ,nbinvertexz ,zlow,zhigh) ; + histo9 = hbookManager->histogram( + "z of secondary charged vertices(mm)" + ,nbinvertexz ,zlow,zhigh); assert (histo9 != 0); } if(nbinGamma>0) { - histo10= hbookManager->histogram("kinetic energy of gammas escaping the absorber (MeV)" - // ,nbinGamma,ElowGamma,EhighGamma) ; - ,nbinGamma,log10(ElowGamma),log10(EhighGamma)) ; + histo10= hbookManager->histogram( + "kinetic energy of gammas escaping the absorber (MeV)" + // ,nbinGamma,ElowGamma,EhighGamma); + ,nbinGamma,log10(ElowGamma),log10(EhighGamma)); assert (histo10 != 0); } #endif } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::BeginOfRunAction(const G4Run* aRun) { G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("beginOfRun.rndm"); - } + G4RunManager::GetRunManager()->SetRandomNumberStore(true); + HepRandom::showEngineStatus(); - G4UImanager* UI = G4UImanager::GetUIpointer(); - - G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); - - if(pVVisManager) - { - UI->ApplyCommand("/vis/scene/notifyHandlers"); - } + if (G4VVisManager::GetConcreteInstance()) + G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers"); EnergySumAbs = 0. ; EnergySquareSumAbs = 0.; @@ -325,7 +323,7 @@ void Em5RunAction::BeginOfRunAction(const G4Run* aRun) bookHisto(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::EndOfRunAction(const G4Run* aRun) { @@ -436,7 +434,7 @@ void Em5RunAction::EndOfRunAction(const G4Run* aRun) } } if(nbinEn>0) - {G4double E , dnorm, norm,fmax,Emp,width ; + {G4double E , dnorm, norm,fmax,Emp; Emp=-999.999 ; G4cout << " energy deposit distribution " << G4endl ; G4cout << "#entries=" << entryEn << " #underflows=" << underEn << @@ -633,10 +631,11 @@ void Em5RunAction::EndOfRunAction(const G4Run* aRun) fnorm = fac0*distTh[ien] ; if( fnorm > pere) Thpere = Th ; - G4cout << G4std::setw(5) << ien << G4std::setw(10) << Thdeg << " " << - G4std::setw(10) << Th << " " << - G4std::setw(12) << distTh[ien] << " " << - G4std::setw(12) << dnorm << " " << G4std::setw(12) << fnorm < pereb) Thpereb = Thb ; - G4cout << G4std::setw(5) << ien << G4std::setw(10) << Thdegb << " " << - G4std::setw(10) << Thb << " " << - G4std::setw(12) << distThback[ien] << " " << - G4std::setw(12) << dnormb << " " << G4std::setw(12) << fnormb <0) {G4double z , dnorm, norm ; G4cout << " vertex Z distribution " << G4endl ; - G4cout << "#entries=" << entryvertexz << " #underflows=" << undervertexz << - " #overflows=" << oververtexz << G4endl ; + G4cout << "#entries=" << entryvertexz + << " #underflows=" << undervertexz + << " #overflows=" << oververtexz << G4endl; if( entryvertexz >0.) { z =zlow - dz ; @@ -746,21 +747,18 @@ void Em5RunAction::EndOfRunAction(const G4Run* aRun) if (G4VVisManager::GetConcreteInstance()) G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); - // save Rndm status - if (saveRndm > 0) - { HepRandom::showEngineStatus(); - HepRandom::saveEngineStatus("endOfRun.rndm"); - } + // show Rndm status + HepRandom::showEngineStatus(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::CountEvent() { TotNbofEvents += 1. ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::AddnStepsCharged(G4double ns) { @@ -768,7 +766,7 @@ void Em5RunAction::AddnStepsCharged(G4double ns) nStepSum2Charged += ns*ns; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::AddnStepsNeutral(G4double ns) { @@ -776,7 +774,7 @@ void Em5RunAction::AddnStepsNeutral(G4double ns) nStepSum2Neutral += ns*ns; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::AddEdeps(G4double Eabs) { @@ -784,7 +782,7 @@ void Em5RunAction::AddEdeps(G4double Eabs) EnergySquareSumAbs += Eabs*Eabs; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::AddTrackLength(G4double tlabs) { @@ -792,7 +790,7 @@ void Em5RunAction::AddTrackLength(G4double tlabs) tlsquareSumAbs += tlabs*tlabs ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::AddTrRef(G4double tr,G4double ref) { @@ -800,7 +798,7 @@ void Em5RunAction::AddTrRef(G4double tr,G4double ref) Reflected += ref; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillNbOfSteps(G4double ns) { @@ -820,7 +818,7 @@ void Em5RunAction::FillNbOfSteps(G4double ns) { n = ns+eps ; bin = (n-Steplow)/dStep ; - ibin= bin ; + ibin= (G4int)bin ; distStep[ibin] += 1. ; } #ifndef G4NOHIST @@ -829,7 +827,7 @@ void Em5RunAction::FillNbOfSteps(G4double ns) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillEn(G4double En) { @@ -847,7 +845,7 @@ void Em5RunAction::FillEn(G4double En) else { bin = (En-Enlow)/dEn ; - ibin= bin ; + ibin= (G4int)bin ; distEn[ibin] += 1. ; } #ifndef G4NOHIST @@ -856,7 +854,7 @@ void Em5RunAction::FillEn(G4double En) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillTt(G4double En) { @@ -876,7 +874,7 @@ void Em5RunAction::FillTt(G4double En) else { bin = (En-Ttlow)/dTt ; - ibin= bin ; + ibin= (G4int)bin ; distTt[ibin] += 1. ; } #ifndef G4NOHIST @@ -885,7 +883,7 @@ void Em5RunAction::FillTt(G4double En) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillTb(G4double En) { @@ -905,7 +903,7 @@ void Em5RunAction::FillTb(G4double En) else { bin = (En-Tblow)/dTb ; - ibin= bin ; + ibin= (G4int)bin ; distTb[ibin] += 1. ; } #ifndef G4NOHIST @@ -914,7 +912,7 @@ void Em5RunAction::FillTb(G4double En) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillTsec(G4double En) { @@ -932,7 +930,7 @@ void Em5RunAction::FillTsec(G4double En) else { bin = (En-Tseclow)/dTsec ; - ibin= bin ; + ibin= (G4int)bin ; distTsec[ibin] += 1. ; } #ifndef G4NOHIST @@ -941,7 +939,7 @@ void Em5RunAction::FillTsec(G4double En) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillGammaSpectrum(G4double En) { @@ -959,7 +957,7 @@ void Em5RunAction::FillGammaSpectrum(G4double En) else { bin = log(En/ElowGamma)/dEGamma; - ibin= bin ; + ibin= (G4int)bin ; distGamma[ibin] += 1. ; } #ifndef G4NOHIST @@ -968,7 +966,7 @@ void Em5RunAction::FillGammaSpectrum(G4double En) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillTh(G4double Th) { @@ -991,7 +989,7 @@ void Em5RunAction::FillTh(G4double Th) else { bin = (Th-Thlow)/dTh ; - ibin= bin ; + ibin= (G4int)bin ; Thbin = Thlow+ibin*dTh ; if(Th > 0.001*dTh) wg=cn/sin(Th) ; @@ -1010,7 +1008,7 @@ void Em5RunAction::FillTh(G4double Th) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillThBack(G4double Th) { @@ -1031,7 +1029,7 @@ void Em5RunAction::FillThBack(G4double Th) else { bin = (Th-Thlowback)/dThback ; - ibin= bin ; + ibin= (G4int)bin ; Thbin = Thlowback+ibin*dThback ; if(Th > 0.001*dThback) wg=cn/sin(Th) ; @@ -1051,7 +1049,7 @@ void Em5RunAction::FillThBack(G4double Th) } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::FillR(G4double R ) { @@ -1071,7 +1069,7 @@ void Em5RunAction::FillR(G4double R ) else { bin = (R -Rlow)/dR ; - ibin= bin ; + ibin= (G4int) bin ; distR[ibin] += 1. ; } #ifndef G4NOHIST @@ -1080,7 +1078,7 @@ void Em5RunAction::FillR(G4double R ) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::Fillvertexz(G4double z ) { @@ -1098,7 +1096,7 @@ void Em5RunAction::Fillvertexz(G4double z ) else { bin = (z -zlow)/dz ; - ibin= bin ; + ibin= (G4int)bin ; distvertexz[ibin] += 1. ; } #ifndef G4NOHIST @@ -1107,7 +1105,7 @@ void Em5RunAction::Fillvertexz(G4double z ) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunAction::SethistName(G4String name) { @@ -1315,4 +1313,4 @@ void Em5RunAction::AddEP(G4double nele,G4double npos) Spositron += npos; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5RunMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5RunMessenger.cc index e516b0716c..0c9e0b1175 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5RunMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5RunMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5RunMessenger.cc,v 1.3.2.1 2001/06/28 19:07:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5RunMessenger.cc,v 1.6 2001/11/28 16:08:19 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5RunMessenger.hh" @@ -39,9 +39,8 @@ #include "G4UIcmdWithAString.hh" #include "G4ios.hh" #include "globals.hh" -#include "Randomize.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5RunMessenger::Em5RunMessenger(Em5RunAction* RA) :runAction (RA) @@ -169,34 +168,15 @@ Em5RunMessenger::Em5RunMessenger(Em5RunAction* RA) setnbinThbackCmd->SetParameterName("nbinThback",false); setThlowbackCmd = new G4UIcmdWithADoubleAndUnit("/plots/setThlowback",this); - setThlowbackCmd->SetGuidance("set lower limit for backscattering Theta plot "); + setThlowbackCmd->SetGuidance("set lower limit for backscattering Theta plot"); setThlowbackCmd->SetParameterName("Thlowback",false); setThhighbackCmd = new G4UIcmdWithADoubleAndUnit("/plots/setThhighback",this); - setThhighbackCmd->SetGuidance("set upper limit for backscattering Theta plot "); + setThhighbackCmd->SetGuidance("set upper limit for backscattering Teta plot"); setThhighbackCmd->SetParameterName("Thhighback",false); - - RndmDir = new G4UIdirectory("/rndm/"); - RndmDir->SetGuidance("Rndm status control."); - - RndmSaveCmd = new G4UIcmdWithAnInteger("/rndm/save",this); - RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files."); - RndmSaveCmd->SetGuidance("freq = 0 not saved"); - RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq > 0 saved on: endOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq = 2 saved on: beginOfEvent.rndm"); - RndmSaveCmd->SetParameterName("frequency",false); - RndmSaveCmd->SetRange("frequency>=0 && frequency<=2"); - RndmSaveCmd->AvailableForStates(PreInit,Idle); - - RndmReadCmd = new G4UIcmdWithAString("/rndm/read",this); - RndmReadCmd->SetGuidance("get rndm status from an external file."); - RndmReadCmd->SetParameterName("fileName",true); - RndmReadCmd->SetDefaultValue ("beginOfRun.rndm"); - RndmReadCmd->AvailableForStates(PreInit,Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5RunMessenger::~Em5RunMessenger() { @@ -242,12 +222,10 @@ Em5RunMessenger::~Em5RunMessenger() delete setThlowbackCmd; delete setThhighbackCmd; - delete plotDir; - - delete RndmSaveCmd; delete RndmReadCmd; delete RndmDir; + delete plotDir; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5RunMessenger::SetNewValue(G4UIcommand* command,G4String newValues) { @@ -374,17 +352,8 @@ void Em5RunMessenger::SetNewValue(G4UIcommand* command,G4String newValues) if( command == setThhighbackCmd) runAction ->SetThhighBack( setThhighbackCmd->GetNewDoubleValue(newValues)); - - if (command == RndmSaveCmd) - runAction->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValues)); - - if (command == RndmReadCmd) - { G4cout << "\n---> rndm status restored from file: " << newValues << G4endl; - HepRandom::restoreEngineStatus(newValues); - HepRandom::showEngineStatus(); - } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingAction.cc b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingAction.cc index 1de66c6c4c..22832ffe0b 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: Em5SteppingAction.cc,v 1.2.4.1 2001/06/28 19:07:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5SteppingAction.cc,v 1.5 2001/10/16 11:56:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5DetectorConstruction.hh" #include "G4EnergyLossTables.hh" @@ -44,7 +44,7 @@ #include "g4std/iomanip" #include "G4UImanager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5SteppingAction::Em5SteppingAction(Em5DetectorConstruction* DET, Em5EventAction* EA, @@ -55,21 +55,20 @@ Em5SteppingAction::Em5SteppingAction(Em5DetectorConstruction* DET, steppingMessenger = new Em5SteppingMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5SteppingAction::~Em5SteppingAction() { delete steppingMessenger ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5SteppingAction::UserSteppingAction(const G4Step* aStep) { - G4double Edep,Theta,Thetaback,Ttrans,Tback,Tsec,Egamma,xend,yend,zend,rend ; - G4double Tkin ; - G4int evno = eventaction->GetEventno() ; + G4double Theta,Thetaback,Ttrans,Tback,Tsec,Egamma,yend,zend,rend; + G4int evno = eventaction->GetEventno(); IDnow = evno+10000*(aStep->GetTrack()->GetTrackID())+ 100000000*(aStep->GetTrack()->GetParentID()); @@ -176,7 +175,7 @@ void Em5SteppingAction::UserSteppingAction(const G4Step* aStep) (aStep->GetTrack()->GetNextVolume()->GetName()=="World") && (aStep->GetPostStepPoint()->GetProcessDefinedStep() ->GetProcessName() == "Transportation") && - (aStep->GetTrack()->GetMomentumDirection().z()<0.) + (aStep->GetTrack()->GetMomentumDirection().x()<0.) ) { eventaction->SetRef(); @@ -204,5 +203,5 @@ void Em5SteppingAction::UserSteppingAction(const G4Step* aStep) } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingMessenger.cc b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingMessenger.cc index de7e256b65..5a1379890b 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingMessenger.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingMessenger.cc @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: Em5SteppingMessenger.cc,v 1.2.4.1 2001/06/28 19:07:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5SteppingMessenger.cc,v 1.4 2001/10/16 11:56:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5SteppingMessenger.hh" @@ -34,7 +34,7 @@ #include "G4UIdirectory.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5SteppingMessenger::Em5SteppingMessenger(Em5SteppingAction* SA) :steppingAction (SA) @@ -43,18 +43,18 @@ Em5SteppingMessenger::Em5SteppingMessenger(Em5SteppingAction* SA) steppingDir->SetGuidance("stepping control"); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5SteppingMessenger::~Em5SteppingMessenger() { delete steppingDir; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5SteppingMessenger::SetNewValue(G4UIcommand* command,G4String newValues) -{} +{ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingVerbose.cc index e2616489ec..2b57d4f57e 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5SteppingVerbose.cc @@ -21,28 +21,28 @@ // ******************************************************************** // // -// $Id: Em5SteppingVerbose.cc,v 1.6.2.1 2001/06/28 19:07:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5SteppingVerbose.cc,v 1.8 2001/10/16 11:56:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Em5SteppingVerbose.hh" #include "G4SteppingManager.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5SteppingVerbose::Em5SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5SteppingVerbose::~Em5SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5SteppingVerbose::StepInfo() { @@ -66,14 +66,14 @@ void Em5SteppingVerbose::StepInfo() << G4std::setw(10) << "Process" << G4endl; } - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); // if( fStepStatus != fWorldBoundary){ if( fTrack->GetNextVolume() != 0 ) { @@ -84,8 +84,8 @@ void Em5SteppingVerbose::StepInfo() if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ G4cout << " " - << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + << G4std::setw(10) << fStep->GetPostStepPoint() + ->GetProcessDefinedStep()->GetProcessName(); } else { G4cout << " UserLimit"; } @@ -107,7 +107,7 @@ void Em5SteppingVerbose::StepInfo() << " ---------------" << G4endl; - for(G4int lp1=(*fSecondary).size()-tN2ndariesTot; + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; lp1<(*fSecondary).size(); lp1++){ G4cout << " : " << G4std::setw(6) @@ -134,7 +134,7 @@ void Em5SteppingVerbose::StepInfo() G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5SteppingVerbose::TrackingStarted() { @@ -154,14 +154,14 @@ G4int prec = G4cout.precision(3); << G4std::setw(10) << "Volume" << " " << G4std::setw(10) << "Process" << G4endl; - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); if(fTrack->GetNextVolume()){ G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); @@ -173,4 +173,4 @@ G4int prec = G4cout.precision(3); G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/src/Em5VisManager.cc b/examples/extended/electromagnetic/TestEm5/src/Em5VisManager.cc index 60634f3f05..e400eadf45 100644 --- a/examples/extended/electromagnetic/TestEm5/src/Em5VisManager.cc +++ b/examples/extended/electromagnetic/TestEm5/src/Em5VisManager.cc @@ -21,14 +21,14 @@ // ******************************************************************** // // -// $Id: Em5VisManager.cc,v 1.2.4.1 2001/06/28 19:07:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em5VisManager.cc,v 1.6 2001/11/15 13:09:49 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifdef G4VIS_USE @@ -36,14 +36,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -72,36 +79,34 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYX -#include "G4RayX.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" -// #include "G4VRML2.hh" +#include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -//#include "G4VRML2File.hh" -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... Em5VisManager::Em5VisManager () {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void Em5VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -130,18 +135,9 @@ void Em5VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYX - RegisterGraphicsSystem (new G4RayX); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); -// RegisterGraphicsSystem (new G4VRML2); -#endif - -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); -// RegisterGraphicsSystem (new G4VRML2File); + RegisterGraphicsSystem (new G4VRML2); #endif if (fVerbose > 0) { @@ -154,4 +150,4 @@ void Em5VisManager::RegisterGraphicsSystems () { #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/extended/electromagnetic/TestEm5/init.mac b/examples/extended/electromagnetic/TestEm5/vis.mac similarity index 78% rename from examples/extended/electromagnetic/TestEm5/init.mac rename to examples/extended/electromagnetic/TestEm5/vis.mac index 5a13364a31..974030579c 100644 --- a/examples/extended/electromagnetic/TestEm5/init.mac +++ b/examples/extended/electromagnetic/TestEm5/vis.mac @@ -5,6 +5,7 @@ # /control/verbose 2 /run/verbose 2 +/run/initialize # # Create empty scene ("world" is default) /vis/scene/create @@ -12,15 +13,16 @@ # Create a scene handler for a specific graphics system # Edit the next line(s) to choose another graphic system # -#/vis/open DAWNFILE +/vis/open DAWNFILE /vis/open OGLIX # # Draw scene -/vis/camera/zoom 1.4 -/vis/drawVolume -/vis/viewer/update +/vis/viewer/zoom 1.4 +/vis/viewer/flush # # for drawing the tracks # if too many tracks cause core dump => storeTrajectory 0 /tracking/storeTrajectory 1 -/event/drawTracks all +/vis/scene/endOfEventAction accumulate +# +/event/drawTracks diff --git a/examples/extended/electromagnetic/TestEm8/History b/examples/extended/electromagnetic/TestEm8/History index 4c1e560fcf..34920af7bd 100644 --- a/examples/extended/electromagnetic/TestEm8/History +++ b/examples/extended/electromagnetic/TestEm8/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 2000/11/24 11:41:28 stesting Exp $ +$Id: History,v 1.4 2001/10/19 05:47:43 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,9 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Oct 19, 2001 Steve O'Neale (examples-V03-02-00) +- Update reference output + 25th November 2000 Steve O'Neale (tagset210) - Update test output Change in energy cut table printout (cuts are the same) - Change in results below 20 per cent diff --git a/examples/extended/electromagnetic/TestEm8/README b/examples/extended/electromagnetic/TestEm8/README index c239db61f9..1dca36a12f 100644 --- a/examples/extended/electromagnetic/TestEm8/README +++ b/examples/extended/electromagnetic/TestEm8/README @@ -1,12 +1,12 @@ -$Id: README,v 1.2 2001/03/30 12:35:46 gcosmo Exp $ +$Id: README,v 1.3 2001/11/27 17:06:05 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= Geant4 - an Object-Oriented Toolkit for Simulation in HEP ========================================================= - TestEm8 (based on TestEm5) - ------------------------- + TestEm8 + ------- Test for investigation of ionisation in thin absorbers, transition and synchrotron radiations. @@ -64,9 +64,6 @@ $Id: README,v 1.2 2001/03/30 12:35:46 gcosmo Exp $ The test contains 10 built-in histograms, which can be activated by interactive commands (see the macros runxx.mac for details). - The histograms/plots are in printed form in the corresponding - resultxx (for GEANT4) and outxx (for GEANT3) files, and they are - saved as geant4.plotxx and geant3.plotxx histogram files, too. The histogram files can be viewed using PAW e.g with the commands @@ -101,25 +98,6 @@ $Id: README,v 1.2 2001/03/30 12:35:46 gcosmo Exp $ Idle> type your commands .... - 6- GEANT4/GEANT3/exp.data comparison - - A GEANT4/GEANT3/exp. data comparison is given here for a few cases. - - The GEANT4 results can be found in the results/ directory, the resultxx - output was obtained with the runxx.mac macro. - - The relevant part of the GEANT3 code is in the geant3/ directory - together with the runxx.dat input files. The outputs of the GEANT3 runs - geant3/results subdirectory. - - In order to make an executable of GEANT3 the gmakeB command should be - used in the geant3/ subdirectory.To run this executable with a given - input file the input file name should be given when it is being asked - by the program.(see geant3/README) - - The expdata/ directory contains some information - on the experimental data. - List of the built-in histograms ------------------------------- @@ -139,5 +117,5 @@ $Id: README,v 1.2 2001/03/30 12:35:46 gcosmo Exp $ Note that, histograms are disabled via the flag G4NOHIST in the GNUmakefile. Currently, histograms in this example are implemented through the obsolete CLHEP/Hist package, which is no longer supported. The implementation will - be replaced by direct call to the "analysis" module in a near future. + be replaced by direct call to the AIDA abstract interfaces in a near future. diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.cc b/examples/extended/electromagnetic/TestEm8/TestEm8.cc index 7ff528b3dd..85d551d74e 100644 --- a/examples/extended/electromagnetic/TestEm8/TestEm8.cc +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: TestEm8.cc,v 1.1.4.2 2001/06/28 20:18:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: TestEm8.cc,v 1.2 2001/07/11 09:57:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.out b/examples/extended/electromagnetic/TestEm8/TestEm8.out index 44eaee28f3..296f9457df 100644 --- a/examples/extended/electromagnetic/TestEm8/TestEm8.out +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.out @@ -1,8 +1,21 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) ***** Table : Nb of materials = 12 ***** @@ -54,18 +67,20 @@ - The WORLD is made of 8e+02mm of Air, the transverse size (R) of the world is 2e+02 mm. - The ABSORBER is made of 40mm of Kr20CO2, the transverse size (R) is 1e+02 mm. - Z position of the (middle of the) absorber 3.6e+02 mm. + The WORLD is made of 800mm of Air, the transverse size (R) of the world is 200 mm. + The ABSORBER is made of 40mm of Kr20CO2, the transverse size (R) is 100 mm. + Z position of the (middle of the) absorber 360 mm. -zRad = 1.5e+02 mm -radThick = 3.5e+02 mm -zModule = 10 mm +zRad = 153.85 mm +radThick = 345.24 mm +zModule = 10.025 mm i = 0 -10 mm 12 mm 13 mm 15 mm 16 mm 18 mm 19 mm 21 mm 22 mm 24 mm 25 mm 27 mm 28 mm 30 mm 31 mm 33 mm 34 mm 36 mm 37 mm 39 mm 41 mm 42 mm 44 mm 45 mm 47 mm 48 mm 50 mm 51 mm 53 mm 54 mm 56 mm 57 mm 59 mm 60 mm 62 mm 63 mm 65 mm 66 mm 68 mm 70 mm 71 mm 73 mm 74 mm 76 mm 77 mm 79 mm 80 mm 82 mm 83 mm 85 mm 86 mm 88 mm 89 mm 91 mm 92 mm 94 mm 95 mm 97 mm 98 mm 1e+02 mm 1e+02 mm 1e+02 mm 1e+02 mm 1.1e+02 mm 1.1e+02 mm 1.1e+02 mm 1.1e+02 mm 1.1e+02 mm 1.1e+02 mm 1.2e+02 mm 1.2e+02 mm 1.2e+02 mm 1.2e+02 mm 1.2e+02 mm 1.2e+02 mm 1.2e+02 mm 1.3e+02 mm 1.3e+02 mm 1.3e+02 mm 1.3e+02 mm 1.3e+02 mm 1.3e+02 mm 1.4e+02 mm 1.4e+02 mm 1.4e+02 mm 1.4e+02 mm 1.4e+02 mm 1.4e+02 mm 1.4e+02 mm 1.5e+02 mm 1.5e+02 mm 1.5e+02 mm 1.5e+02 mm 1.5e+02 mm 1.5e+02 mm 1.5e+02 mm 1.6e+02 mm 1.6e+02 mm 1.6e+02 mm 1.6e+02 mm 1.6e+02 mm 1.6e+02 mm 1.7e+02 mm 1.7e+02 mm 1.7e+02 mm 1.7e+02 mm 1.7e+02 mm 1.7e+02 mm 1.7e+02 mm 1.8e+02 mm 1.8e+02 mm 1.8e+02 mm 1.8e+02 mm 1.8e+02 mm 1.8e+02 mm 1.9e+02 mm 1.9e+02 mm 1.9e+02 mm 1.9e+02 mm 1.9e+02 mm 1.9e+02 mm 1.9e+02 mm 2e+02 mm 2e+02 mm 2e+02 mm 2e+02 mm 2e+02 mm 2e+02 mm 2.1e+02 mm 2.1e+02 mm 2.1e+02 mm 2.1e+02 mm 2.1e+02 mm 2.1e+02 mm 2.1e+02 mm 2.2e+02 mm 2.2e+02 mm 2.2e+02 mm 2.2e+02 mm 2.2e+02 mm 2.2e+02 mm 2.3e+02 mm 2.3e+02 mm 2.3e+02 mm 2.3e+02 mm 2.3e+02 mm 2.3e+02 mm 2.3e+02 mm 2.4e+02 mm 2.4e+02 mm 2.4e+02 mm 2.4e+02 mm 2.4e+02 mm 2.4e+02 mm 2.4e+02 mm 2.5e+02 mm 2.5e+02 mm 2.5e+02 mm 2.5e+02 mm 2.5e+02 mm 2.5e+02 mm 2.6e+02 mm 2.6e+02 mm 2.6e+02 mm 2.6e+02 mm 2.6e+02 mm 2.6e+02 mm 2.6e+02 mm 2.7e+02 mm 2.7e+02 mm 2.7e+02 mm 2.7e+02 mm 2.7e+02 mm 2.7e+02 mm 2.8e+02 mm 2.8e+02 mm 2.8e+02 mm 2.8e+02 mm 2.8e+02 mm 2.8e+02 mm 2.8e+02 mm 2.9e+02 mm 2.9e+02 mm 2.9e+02 mm 2.9e+02 mm 2.9e+02 mm 2.9e+02 mm 3e+02 mm +10.025 mm 11.55 mm 13.075 mm 14.6 mm 16.125 mm 17.65 mm 19.175 mm 20.7 mm 22.225 mm 23.75 mm 25.275 mm 26.8 mm 28.325 mm 29.85 mm 31.375 mm 32.9 mm 34.425 mm 35.95 mm 37.475 mm 39 mm 40.525 mm 42.05 mm 43.575 mm 45.1 mm 46.625 mm 48.15 mm 49.675 mm 51.2 mm 52.725 mm 54.25 mm 55.775 mm 57.3 mm 58.825 mm 60.35 mm 61.875 mm 63.4 mm 64.925 mm 66.45 mm 67.975 mm 69.5 mm 71.025 mm 72.55 mm 74.075 mm 75.6 mm 77.125 mm 78.65 mm 80.175 mm 81.7 mm 83.225 mm 84.75 mm 86.275 mm 87.8 mm 89.325 mm 90.85 mm 92.375 mm 93.9 mm 95.425 mm 96.95 mm 98.475 mm 100 mm 101.525 mm 103.05 mm 104.575 mm 106.1 mm 107.625 mm 109.15 mm 110.675 mm 112.2 mm 113.725 mm 115.25 mm 116.775 mm 118.3 mm 119.825 mm 121.35 mm 122.875 mm 124.4 mm 125.925 mm 127.45 mm 128.975 mm 130.5 mm 132.025 mm 133.55 mm 135.075 mm 136.6 mm 138.125 mm 139.65 mm 141.175 mm 142.7 mm 144.225 mm 145.75 mm 147.275 mm 148.8 mm 150.325 mm 151.85 mm 153.375 mm 154.9 mm 156.425 mm 157.95 mm 159.475 mm 161 mm 162.525 mm 164.05 mm 165.575 mm 167.1 mm 168.625 mm 170.15 mm 171.675 mm 173.2 mm 174.725 mm 176.25 mm 177.775 mm 179.3 mm 180.825 mm 182.35 mm 183.875 mm 185.4 mm 186.925 mm 188.45 mm 189.975 mm 191.5 mm 193.025 mm 194.55 mm 196.075 mm 197.6 mm 199.125 mm 200.65 mm 202.175 mm 203.7 mm 205.225 mm 206.75 mm 208.275 mm 209.8 mm 211.325 mm 212.85 mm 214.375 mm 215.9 mm 217.425 mm 218.95 mm 220.475 mm 222 mm 223.525 mm 225.05 mm 226.575 mm 228.1 mm 229.625 mm 231.15 mm 232.675 mm 234.2 mm 235.725 mm 237.25 mm 238.775 mm 240.3 mm 241.825 mm 243.35 mm 244.875 mm 246.4 mm 247.925 mm 249.45 mm 250.975 mm 252.5 mm 254.025 mm 255.55 mm 257.075 mm 258.6 mm 260.125 mm 261.65 mm 263.175 mm 264.7 mm 266.225 mm 267.75 mm 269.275 mm 270.8 mm 272.325 mm 273.85 mm 275.375 mm 276.9 mm 278.425 mm 279.95 mm 281.475 mm 283 mm 284.525 mm 286.05 mm 287.575 mm 289.1 mm 290.625 mm 292.15 mm 293.675 mm 295.2 mm the number of TR radiator plates = 188 -plate plasma energy = 30 eV -gas plasma energy = 0.73 eV +plate material = Mylar +gas material = Air +plate plasma energy = 29.55 eV +gas plasma energy = 0.731967 eV Irregular X-ray TR model is called 0 fGamma = 107.6 sumE = 0.002585 1 fGamma = 123.4 sumE = 0.00372 @@ -118,7 +133,7 @@ Irregular X-ray TR model is called 48 fGamma = 8.085e+04 sumE = 8.377 49 fGamma = 9.283e+04 sumE = 8.504 -total time for build X-ray TR tables = 12.42 s +total time for build X-ray TR tables = 6.36 s Em8PhysicsList::SetCuts:CutLength : 1 mm phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z @@ -126,7 +141,7 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. + Scattered gamma energy according Klein-Nishina. PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. @@ -148,12 +163,7 @@ hIoni: Knock-on electron cross sections . delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 100 TeV in 100 bins. -total time(SetCuts)=18.24 s -# -# Macro file 'run11.mac' for the initialization phase of "TestEm8.cc" -# -# It creates the default geometry (simple absorber cylinder ) -# +total time(SetCuts)=6.63 s # #control/saveHistory # @@ -187,7 +197,19 @@ total time(SetCuts)=18.24 s /run/particle/dumpCutValues ============= The cut Energy ============================== gamma e- -Cut in range 1 mm 1 mm +Cut in range + Aluminium 1 mm 1 mm + Mylar 1 mm 1 mm + Polypropelene 1 mm 1 mm + Kr 1 mm 1 mm + Argon 1 mm 1 mm + N2 1 mm 1 mm + O2 1 mm 1 mm + Air 1 mm 1 mm + Xenon 1 mm 1 mm + CO2 1 mm 1 mm + Xe20CO2 1 mm 1 mm + Kr20CO2 1 mm 1 mm Cut in energy Aluminium 6.89 keV 597 keV Mylar 3.48 keV 541 keV @@ -219,45 +241,55 @@ Cut in energy Current couple of seeds = 9876, 54321 ---------------------------------------- Start closing geometry. +G4GeometryManager::ReportVoxelStats -- Voxel Statistics + + Total memory consumed for geometry optimisation: 11 kByte + Total CPU time elapsed for geometry optimisation: 0.01 seconds + + Voxelisation: top CPU users: + Percent Total CPU System CPU Memory Volume + ------- ---------- ---------- -------- ---------- +427218800.00 42721.88 0.57 11k Radiator +427218700.00 42721.87 0.57 0k World + + Voxelisation: top memory users: + Percent Memory Heads Nodes Pointers Total CPU Volume + ------- -------- ------ ------ -------- ---------- ---------- + 96.00 11k 1 305 376 42721.88 Radiator + 4.00 0k 3 7 20 42721.87 World Start Run processing. ---> Begin of Event: 0 Run terminated. Run Summary Number of events processed : 1000 - User=193.73s Real=194.91s Sys=1.17s + User=89.43s Real=91.56s Sys=1.14s ================== run summary ===================== - end of Run TotNbofEvents = 1000 - mean charged track length in absorber=71.241 +- 0.985414 mm + end of Run TotNbofEvents = 1000.000000 + mean charged track length in absorber=71.821217 +- 1.034940 mm - mean energy deposit in absorber=0.0887952 +- 0.000833776 MeV + mean energy deposit in absorber=0.098855 +- 0.001018 MeV - mean number of steps in absorber (charged) =430.968 +- 2.02252 - mean number of steps in absorber (neutral) =5.182 +- 0.072958 + mean number of steps in absorber (charged) =429.514000 +- 1.262516 + mean number of steps in absorber (neutral) =4.755000 +- 0.077518 - mean number of charged secondaries = 1.352 +- 0.0381588 + mean number of charged secondaries = 1.349000 +- 0.038252 - mean number of neutral secondaries = 0.051 +- 0.00709923 + mean number of neutral secondaries = 0.024000 +- 0.005042 - mean number of e-s =1.352 and e+s =0 + mean number of e-s =1.349000 and e+s =0.000000 -(number) transmission coeff=0.51 reflection coeff=0.004 +(number) transmission coeff=0.843000 reflection coeff=0.001000 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 927669596, 1366032175 + Current couple of seeds = 1872357293, 1413261945 ---------------------------------------- # # - - - - - - - - +Graphics systems deleted. +Visualization Manager deleting... G4 kernel has come to Quit state. Deletion of G4 kernel class start. UserDetectorConstruction deleted. diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh b/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh index d68c8c3d8a..301b47199e 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8CalorHit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8CalorHit.hh,v 1.2.4.1 2001/06/28 19:07:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8CalorHit.hh,v 1.3 2001/07/11 09:57:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh b/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh index 87a5d1fcc2..398adc3212 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8CalorimeterSD.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8CalorimeterSD.hh,v 1.2.4.1 2001/06/28 19:07:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8CalorimeterSD.hh,v 1.3 2001/07/11 09:57:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh index 20ae8b25aa..f398e24348 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8DetectorConstruction.hh,v 1.3.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8DetectorConstruction.hh,v 1.4 2001/07/11 09:57:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh index bfcdf75cb2..9542127e87 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8DetectorMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8DetectorMessenger.hh,v 1.2.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8DetectorMessenger.hh,v 1.3 2001/07/11 09:57:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh index 96d63b86d1..7f7722d814 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8EventAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8EventAction.hh,v 1.2.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8EventAction.hh,v 1.3 2001/07/11 09:57:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh index 080e35c49c..ac69ba2f02 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8EventActionMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8EventActionMessenger.hh,v 1.2.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8EventActionMessenger.hh,v 1.3 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsList.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsList.hh index 3d94d64f42..3804bc6ad1 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsList.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8PhysicsList.hh,v 1.3.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8PhysicsList.hh,v 1.4 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef Em8PhysicsList_h diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsListMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsListMessenger.hh index 08f0129956..01b5a69d61 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsListMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PhysicsListMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8PhysicsListMessenger.hh,v 1.2.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8PhysicsListMessenger.hh,v 1.3 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh index d4a00441d9..8ce1228974 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8PrimaryGeneratorAction.hh,v 1.2.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8PrimaryGeneratorAction.hh,v 1.3 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh index 37472da167..c67ffdc20b 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8PrimaryGeneratorMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8PrimaryGeneratorMessenger.hh,v 1.2.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8PrimaryGeneratorMessenger.hh,v 1.3 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh index bcc4705464..97d89a0a6c 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8RunAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8RunAction.hh,v 1.3.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8RunAction.hh,v 1.4 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh index bb2722e8bf..a2c59e10dc 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8RunMessenger.hh @@ -22,8 +22,8 @@ // // -// $Id: Em8RunMessenger.hh,v 1.2.4.1 2001/06/28 19:07:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8RunMessenger.hh,v 1.3 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8StepCut.hh b/examples/extended/electromagnetic/TestEm8/include/Em8StepCut.hh index 285ef22cc4..d7cda9aa0b 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8StepCut.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8StepCut.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8StepCut.hh,v 1.2.4.1 2001/06/28 19:07:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8StepCut.hh,v 1.3 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh index aef974597f..33351f7e05 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8SteppingAction.hh,v 1.2.4.1 2001/06/28 19:07:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8SteppingAction.hh,v 1.3 2001/07/11 09:57:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingMessenger.hh b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingMessenger.hh index 4b23a93a55..d6c41ff894 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingMessenger.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8SteppingMessenger.hh,v 1.2.4.1 2001/06/28 19:07:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8SteppingMessenger.hh,v 1.3 2001/07/11 09:57:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh index 78adaa171b..c078b2d0a1 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8SteppingVerbose.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8SteppingVerbose.hh,v 1.2.4.1 2001/06/28 19:07:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8SteppingVerbose.hh,v 1.3 2001/07/11 09:57:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm8/include/Em8VisManager.hh b/examples/extended/electromagnetic/TestEm8/include/Em8VisManager.hh index 70c0af54b1..1948fd9cbd 100644 --- a/examples/extended/electromagnetic/TestEm8/include/Em8VisManager.hh +++ b/examples/extended/electromagnetic/TestEm8/include/Em8VisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8VisManager.hh,v 1.2.4.1 2001/06/28 19:07:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8VisManager.hh,v 1.3 2001/07/11 09:57:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh b/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh index 6212927d3d..8899e2808a 100644 --- a/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh +++ b/examples/extended/electromagnetic/TestEm8/include/TRTDetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: TRTDetectorConstruction.hh,v 1.2.4.1 2001/06/28 19:07:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: TRTDetectorConstruction.hh,v 1.3 2001/07/11 09:57:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh b/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh index 9cecf4061b..5ebdf97e11 100644 --- a/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh +++ b/examples/extended/electromagnetic/TestEm8/include/TRTMaterials.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: TRTMaterials.hh,v 1.2.4.1 2001/06/28 19:07:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: TRTMaterials.hh,v 1.3 2001/07/11 09:57:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc b/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc index 932f36f636..0c81cf150d 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8CalorHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8CalorHit.cc,v 1.2.4.1 2001/06/28 19:07:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8CalorHit.cc,v 1.3 2001/07/11 09:57:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc b/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc index 40f6e42354..e4c36f314e 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8CalorimeterSD.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8CalorimeterSD.cc,v 1.3.4.1 2001/06/28 19:07:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8CalorimeterSD.cc,v 1.4 2001/07/11 09:57:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc index 71b75b12fe..33a3e8446c 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorConstruction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8DetectorConstruction.cc,v 1.5.4.1 2001/06/28 19:07:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8DetectorConstruction.cc,v 1.7 2001/10/24 21:30:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -661,8 +661,8 @@ void Em8DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) // search the material by its name G4Material* pttoMaterial; - for (G4int J=0 ; Jlength() ; J++) - { pttoMaterial = (*theMaterialTable)(J); + for (size_t J=0 ; Jsize() ; J++) + { pttoMaterial = (*theMaterialTable)[J]; if(pttoMaterial->GetName() == materialChoice) {AbsorberMaterial = pttoMaterial; logicAbsorber->SetMaterial(pttoMaterial); @@ -682,8 +682,8 @@ void Em8DetectorConstruction::SetWorldMaterial(G4String materialChoice) // search the material by its name G4Material* pttoMaterial; - for (G4int J=0 ; Jlength() ; J++) - { pttoMaterial = (*theMaterialTable)(J); + for (size_t J=0 ; Jsize() ; J++) + { pttoMaterial = (*theMaterialTable)[J]; if(pttoMaterial->GetName() == materialChoice) {WorldMaterial = pttoMaterial; logicWorld->SetMaterial(pttoMaterial); diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc index 5543d6475e..f8ff5455b9 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8DetectorMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8DetectorMessenger.cc,v 1.2.4.1 2001/06/28 19:07:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8DetectorMessenger.cc,v 1.3 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc index 535c330368..5f87102aea 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8EventAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8EventAction.cc,v 1.3.4.1 2001/06/28 19:07:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8EventAction.cc,v 1.5 2001/10/16 12:22:23 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -35,9 +35,6 @@ #include "Em8CalorHit.hh" #include "Em8EventActionMessenger.hh" - -#include "g4rw/tvordvec.h" - #include "G4Event.hh" #include "G4EventManager.hh" #include "G4HCofThisEvent.hh" diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc index a2cbf40a5e..e5d3a260d0 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8EventActionMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8EventActionMessenger.cc,v 1.2.4.1 2001/06/28 19:07:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8EventActionMessenger.cc,v 1.3 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsList.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsList.cc index 4c1ff1a6d8..a7af25d572 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsList.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8PhysicsList.cc,v 1.4.4.1 2001/06/28 19:07:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8PhysicsList.cc,v 1.5 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4Timer.hh" diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsListMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsListMessenger.cc index 23bc57f9b7..547a1ea19b 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsListMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PhysicsListMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8PhysicsListMessenger.cc,v 1.2.4.1 2001/06/28 19:07:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8PhysicsListMessenger.cc,v 1.3 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc index a001420de3..0eb373e875 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8PrimaryGeneratorAction.cc,v 1.3.4.1 2001/06/28 19:07:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8PrimaryGeneratorAction.cc,v 1.4 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc index 4d4a5a02f9..757dc7cce8 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8PrimaryGeneratorMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8PrimaryGeneratorMessenger.cc,v 1.2.4.1 2001/06/28 19:07:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8PrimaryGeneratorMessenger.cc,v 1.3 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc index 0b23d34c74..4c9a1c68c7 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8RunAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8RunAction.cc,v 1.5.4.1 2001/06/28 19:07:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8RunAction.cc,v 1.6 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc index 0aaa9dcf1b..7bd2485f6a 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8RunMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8RunMessenger.cc,v 1.3.4.1 2001/06/28 19:07:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8RunMessenger.cc,v 1.4 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8StepCut.cc b/examples/extended/electromagnetic/TestEm8/src/Em8StepCut.cc index 754cdfa5a4..012e00ec2a 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8StepCut.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8StepCut.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8StepCut.cc,v 1.3.4.1 2001/06/28 19:07:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8StepCut.cc,v 1.4 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "Em8StepCut.hh" diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc index 86bf79749b..87d57d10e5 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8SteppingAction.cc,v 1.3.4.1 2001/06/28 19:07:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8SteppingAction.cc,v 1.4 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingMessenger.cc b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingMessenger.cc index 0d842e3de8..294eee5569 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingMessenger.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8SteppingMessenger.cc,v 1.2.4.1 2001/06/28 19:07:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8SteppingMessenger.cc,v 1.3 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc index 03296e20c0..33dd00d987 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8SteppingVerbose.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8SteppingVerbose.cc,v 1.4.2.1 2001/06/28 19:07:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8SteppingVerbose.cc,v 1.5 2001/07/11 09:57:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/examples/extended/electromagnetic/TestEm8/src/Em8VisManager.cc b/examples/extended/electromagnetic/TestEm8/src/Em8VisManager.cc index dc055cac29..a29350fee3 100644 --- a/examples/extended/electromagnetic/TestEm8/src/Em8VisManager.cc +++ b/examples/extended/electromagnetic/TestEm8/src/Em8VisManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Em8VisManager.cc,v 1.2.4.1 2001/06/28 19:07:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Em8VisManager.cc,v 1.5 2001/11/15 13:09:50 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. @@ -36,14 +36,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -72,18 +79,9 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYX -#include "G4RayX.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" -// #include "G4VRML2.hh" -#endif - -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -//#include "G4VRML2File.hh" +#include "G4VRML2.hh" #endif //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -94,14 +92,21 @@ Em8VisManager::Em8VisManager () {} void Em8VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -130,18 +135,9 @@ void Em8VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYX - RegisterGraphicsSystem (new G4RayX); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); -// RegisterGraphicsSystem (new G4VRML2); -#endif - -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); -// RegisterGraphicsSystem (new G4VRML2File); + RegisterGraphicsSystem (new G4VRML2); #endif if (fVerbose > 0) { diff --git a/examples/extended/field/field01/GNUmakefile b/examples/extended/field/field01/GNUmakefile new file mode 100644 index 0000000000..2f7ada5592 --- /dev/null +++ b/examples/extended/field/field01/GNUmakefile @@ -0,0 +1,19 @@ +# $Id: GNUmakefile,v 1.3 2001/10/15 17:20:32 gcosmo Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := field01 +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../../.. +endif + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/architecture.gmk + +include $(G4INSTALL)/config/binmake.gmk diff --git a/examples/extended/field/field01/History b/examples/extended/field/field01/History new file mode 100644 index 0000000000..a41bc9f38b --- /dev/null +++ b/examples/extended/field/field01/History @@ -0,0 +1,24 @@ +$Id: History,v 1.3 2001/11/07 16:36:30 gcosmo Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + field01 History file + ------------------------ +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +Nov 7th, 2001 - G.Cosmo +----------------------- +- More cleanup and fixes to primary generator gun (V.Grichine). + +Oct 15th, 2001 - G.Cosmo +------------------------ +- Cleaned from test code. diff --git a/examples/extended/field/field01/README b/examples/extended/field/field01/README new file mode 100644 index 0000000000..0099f5c488 --- /dev/null +++ b/examples/extended/field/field01/README @@ -0,0 +1,84 @@ +$Id: README,v 1.3 2001/10/25 08:10:19 grichine Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + field01 + ------- + + Test for investigation of tracking using magnetic field + and field dependent electromagnetic processes. + + + 1- GEOMETRY DEFINITION + + The "absorber" is a solid made of a given material. + + Three parameters define the absorber : + - the material of the absorber, + - the thickness of an absorber, + - the transverse size of the absorber (the input face is a square). + + The volume "World" contains the "absorber". + In this test the parameters of the "World" can be changed , too. + + In addition a transverse uniform magnetic field can be applied. + + The default geometry is constructed in DetectorConstruction class, + but all the parameters can be changed via + the commands defined in the DetectorMessenger class. + + 2- AN EVENT : THE PRIMARY GENERATOR + + The primary kinematic consists of a single particle (proton, Ekin = 1 GeV) + which hits the + absorber perpendicular to the input face. The type of the particle + and its energy are set in the PrimaryGeneratorAction class, and can + be changed via the G4 build-in commands of ParticleGun class (see + the macros provided with this example). + + A RUN is a set of events. + + 3- DETECTOR RESPONSE + + The spatial distribution of charged particles transported in magnetic + field is envistigated. + A HIT is a record, event per event , of all the + informations needed to simulate and analyse the detector response. + + In this example a CalorHit is defined as a set of 2 informations: + - the total energy deposit in the absorber, + - the total tracklength of all charged particles in the absorber, + + Therefore the absorber is declared + 'sensitive detector' (SD), which means they can contribute to the hit. + + 4- PHYSICS DEMO + + The particle's type and the physic processes which will be available + in this example are set in PhysicsList class. + + The messenger classes introduce interactive commands . Using these + commands the geometry of the detector, the data of the primary + particle, etc. can be changed. + + + 5- HOW TO START ? + + - compile and link to generate an executable + % cd $G4INSTALL/example/extended/field/field01 + % gmake + + - execute field01 in 'batch' mode from macro file e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/field01 field01.in + + - execute field01 in 'interactive' mode with visualization e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/field01 + .... + Idle> type your commands + .... + + + diff --git a/examples/extended/field/field01/field01.cc b/examples/extended/field/field01/field01.cc new file mode 100644 index 0000000000..bd35b26ca3 --- /dev/null +++ b/examples/extended/field/field01/field01.cc @@ -0,0 +1,136 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: field01.cc,v 1.4 2001/11/07 16:36:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 - TestF01 +// +// -------------------------------------------------------------- +// Comments +// +// +// -------------------------------------------------------------- + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "Randomize.hh" + +#ifdef G4VIS_USE +#include "F01VisManager.hh" +#endif + +#include "F01DetectorConstruction.hh" +#include "F01ElectroMagneticField.hh" +#include "F01PhysicsList.hh" +#include "F01PrimaryGeneratorAction.hh" +#include "F01RunAction.hh" +#include "F01EventAction.hh" +#include "F01SteppingAction.hh" +#include "F01SteppingVerbose.hh" + +int main(int argc,char** argv) +{ + + //choose the Random engine + + HepRandom::setTheEngine(new RanecuEngine); + + //my Verbose output class + + G4VSteppingVerbose::SetInstance(new F01SteppingVerbose); + + // Construct the default run manager + + G4RunManager * runManager = new G4RunManager; + + // Costruct electromagnetic field + + F01ElectroMagneticField* field = new F01ElectroMagneticField() ; + + // Set mandatory initialization classes + + F01DetectorConstruction* detector; + detector = new F01DetectorConstruction; + runManager->SetUserInitialization(detector); + runManager->SetUserInitialization(new F01PhysicsList(detector)); + +#ifdef G4VIS_USE + + // visualization manager + + G4VisManager* visManager = new F01VisManager; + visManager->Initialize(); + +#endif + + // Set user action classes + + runManager->SetUserAction(new F01PrimaryGeneratorAction(detector)); + + F01RunAction* runAction = new F01RunAction; + + runManager->SetUserAction(runAction); + + F01EventAction* eventAction = new F01EventAction(runAction); + + runManager->SetUserAction(eventAction); + + F01SteppingAction* steppingAction = new F01SteppingAction(); + runManager->SetUserAction(steppingAction); + + // Initialize G4 kernel, physics tables ... + + runManager->Initialize(); + + // Get the pointer to the User Interface manager + + G4UImanager* UI = G4UImanager::GetUIpointer(); + + if (argc==1) // Define UI terminal for interactive mode + { + G4UIsession * session = new G4UIterminal; + session->SessionStart(); + delete session; + } + else // Batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + // job termination + +#ifdef G4VIS_USE + delete visManager; +#endif + delete field; + delete runManager; + + return 0; +} + diff --git a/examples/extended/field/field01/field01.in b/examples/extended/field/field01/field01.in new file mode 100644 index 0000000000..a7529675d5 --- /dev/null +++ b/examples/extended/field/field01/field01.in @@ -0,0 +1,33 @@ +# +# Macro file for the initialization phase of field01 +# +# It creates the default geometry (simple absorber cylinder ) +# +/tracking/verbose 1 +/run/verbose 1 +# +# +# +/field/setStepperType 4 +# +#/field/setMinStep 10 mm +# +/field/setMinStep 1 mm +# +/field/update +# +/run/initialize +# +/run/particle/dumpCutValues +# +/gun/particle e- +# +#/gun/particle proton +# +#/gun/particle chargedgeantino +# +/gun/energy 500.0 MeV +# +#/event/printModulo 1 +/run/beamOn 100 +# diff --git a/examples/extended/field/field01/field01.out b/examples/extended/field/field01/field01.out new file mode 100644 index 0000000000..0b0144d9a4 --- /dev/null +++ b/examples/extended/field/field01/field01.out @@ -0,0 +1,1160 @@ +********************************************** + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) + Copyright : Geant4 Collaboration +********************************************** +G4ClassicalRK4 (default) is called +The minimal step is equal to 1 mm +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + DAWNFILE (DAWNFILE) + VRML1FILE (VRML1FILE) + +***** Table : Nb of materials = 11 ***** + + Material: Mylar density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 19.770 cm + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 48.42 % Abundance 18.18 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 45.47 % Abundance 45.45 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 6.11 % Abundance 36.36 % + + Material: Polypropelene density: 910.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.167 cm + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + + Material: Kr density: 3.700 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 30.736 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Argon density: 1.784 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 109.604 m + ---> Element: Argon Ar Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: N2 density: 1.251 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.846 m + ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: O2 density: 1.429 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 239.621 m + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Air density: 0.000 mg/cm3 temperature: 273.15 K pressure: 0.00 atm RadLength: 28329272.015 km + ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 75.57 % Abundance 78.48 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 23.15 % Abundance 21.05 % + ---> Element: Argon Ar Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 1.28 % Abundance 0.47 % + + Material: Xenon density: 5.858 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.478 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 158.123 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 15.81 % Abundance 33.33 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 84.19 % Abundance 66.67 % + + Material: Xe20CO2 density: 5.082 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.695 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 92.20 % Abundance 53.29 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.23 % Abundance 15.57 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 6.57 % Abundance 31.14 % + + Material: Kr20CO2 density: 3.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 33.957 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 89.00 % Abundance 55.02 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.74 % Abundance 14.99 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 9.26 % Abundance 29.99 % + + + + The WORLD is made of 44000mm of Air, the transverse size (R) of the world is 22000 mm. + The ABSORBER is made of 1mm of Air, the transverse size (R) is 20000 mm. + Z position of the (middle of the) absorber 21990 mm. + +F01PhysicsList::SetCuts:CutLength : 1 mm + +phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z + Sandia crossSection below 50 KeV + PhysicsTables from 50 keV to 50 MeV in 100 bins. + +compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. + +conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. + e+e- energies according Bethe-Heitler + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. + +eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. + Good description from 1 KeV to 100 GeV. + log scale extrapolation above 100 GeV + Gamma energy sampled from a parametrised formula. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +msc: Tables of transport mean free paths. + New model of MSC , computes the lateral + displacement of the particle , too. + PhysicsTables from 100 eV to 100 TeV in 100 bins. + +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +MuBrems: theoretical cross section + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +MuPairProd: theoretical cross sections + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +msc: Tables of transport mean free paths. + New model of MSC , computes the lateral + displacement of the particle , too. + PhysicsTables from 100 eV to 100 TeV in 100 bins. + +hIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +total time(SetCuts)=18.34 s +G4ClassicalRK4 (default) is called +The minimal step is equal to 1 mm +============= The cut Energy ============================== + gamma e- +Cut in range + Mylar 1 mm 1 mm + Polypropelene 1 mm 1 mm + Kr 1 mm 1 mm + Argon 1 mm 1 mm + N2 1 mm 1 mm + O2 1 mm 1 mm + Air 1 mm 1 mm + Xenon 1 mm 1 mm + CO2 1 mm 1 mm + Xe20CO2 1 mm 1 mm + Kr20CO2 1 mm 1 mm +Cut in energy + Mylar 3.48 keV 541 keV + Polypropelene 2.75 keV 502 keV + Kr 990 eV 1.07 keV + Argon 990 eV 990 eV + N2 990 eV 990 eV + O2 990 eV 990 eV + Air 990 eV 990 eV + Xenon 990 eV 1.95 keV + CO2 990 eV 990 eV + Xe20CO2 990 eV 1.67 keV + Kr20CO2 990 eV 1.09 keV +=================================================== +### Run 0 start. +Start Run processing. + +---> Begin of Event: 0 + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 1.0118317 m 21.9895 m 500 MeV0.0077449158 eV 1.5893832 m 1.5893832 m World Transportation 0 fm 70845.381 fm 1000 mum + 2 0 fm 1.0118307 m 21.9905 m 500 MeV4.888534e-06 eV 1.0000007 mm 1.5903832 m Absorber Transportation 0 fm -1.9765403 mum 999.99805 mum + 3 0 fm 1.011722 m 22 m 500 MeV4.6270543e-05 eV 9.5007638 mm 1.599884 m OutOfWorld Transportation 0 fm -20.754367 mum 999.7846 mum +Run terminated. +Run Summary + Number of events processed : 100 + User=0.3s Real=0.46s Sys=0.16s +Graphics systems deleted. +Visualization Manager deleting... +G4 kernel has come to Quit state. diff --git a/examples/extended/field/field01/include/F01CalorHit.hh b/examples/extended/field/field01/include/F01CalorHit.hh new file mode 100644 index 0000000000..d8a015d758 --- /dev/null +++ b/examples/extended/field/field01/include/F01CalorHit.hh @@ -0,0 +1,97 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01CalorHit.hh,v 1.2 2001/07/11 09:57:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01CalorHit_h +#define F01CalorHit_h 1 + +#include "G4VHit.hh" +#include "G4THitsCollection.hh" +#include "G4Allocator.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01CalorHit : public G4VHit +{ + public: + + F01CalorHit(); + ~F01CalorHit(); + F01CalorHit(const F01CalorHit&); + const F01CalorHit& operator=(const F01CalorHit&); + int operator==(const F01CalorHit&) const; + + inline void* operator new(size_t); + inline void operator delete(void*); + + void Print(); + + public: + + void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;}; + void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;}; + + G4double GetEdepAbs() { return EdepAbs; }; + G4double GetTrakAbs() { return TrackLengthAbs; }; + G4double GetEdepGap() { return EdepGap; }; + G4double GetTrakGap() { return TrackLengthGap; }; + + private: + + G4double EdepAbs, TrackLengthAbs; + G4double EdepGap, TrackLengthGap; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +typedef G4THitsCollection F01CalorHitsCollection; + +extern G4Allocator F01CalorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void* F01CalorHit::operator new(size_t) +{ + void* aHit; + aHit = (void*) F01CalorHitAllocator.MallocSingle(); + return aHit; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void F01CalorHit::operator delete(void* aHit) +{ + F01CalorHitAllocator.FreeSingle((F01CalorHit*) aHit); +} + +#endif + + diff --git a/examples/extended/field/field01/include/F01CalorimeterSD.hh b/examples/extended/field/field01/include/F01CalorimeterSD.hh new file mode 100644 index 0000000000..06ee1cee52 --- /dev/null +++ b/examples/extended/field/field01/include/F01CalorimeterSD.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01CalorimeterSD.hh,v 1.3 2001/10/15 17:20:34 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01CalorimeterSD_h +#define F01CalorimeterSD_h 1 + +#include "globals.hh" +#include "G4VSensitiveDetector.hh" +#include "F01CalorHit.hh" + +class F01DetectorConstruction; +class G4HCofThisEvent; +class G4Step; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01CalorimeterSD : public G4VSensitiveDetector +{ + public: + + F01CalorimeterSD(G4String, F01DetectorConstruction* ); + ~F01CalorimeterSD(); + + void Initialize(G4HCofThisEvent*); + G4bool ProcessHits(G4Step*,G4TouchableHistory*); + void EndOfEvent(G4HCofThisEvent*); + void clear(); + void PrintAll(); + + private: + + F01CalorHitsCollection* CalCollection; + F01DetectorConstruction* Detector; + G4int* HitID; +}; + +#endif + diff --git a/examples/extended/field/field01/include/F01DetectorConstruction.hh b/examples/extended/field/field01/include/F01DetectorConstruction.hh new file mode 100644 index 0000000000..470a8ce7b1 --- /dev/null +++ b/examples/extended/field/field01/include/F01DetectorConstruction.hh @@ -0,0 +1,135 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01DetectorConstruction.hh,v 1.5 2001/10/25 08:10:20 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef F01DetectorConstruction_h +#define F01DetectorConstruction_h 1 + +#include "G4VUserDetectorConstruction.hh" +#include "globals.hh" +#include "G4ios.hh" + +class G4Box; +class G4Tubs; +class G4LogicalVolume; +class G4VPhysicalVolume; +class G4Material; +class G4UniformMagField; +class F01DetectorMessenger; +class F01CalorimeterSD; +class F01ElectroMagneticField; + + +class F01DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + + F01DetectorConstruction(); + ~F01DetectorConstruction(); + + public: + + void SetAbsorberMaterial (G4String); + void SetAbsorberThickness(G4double); + void SetAbsorberRadius(G4double); + + void SetAbsorberZpos(G4double); + + void SetWorldMaterial(G4String); + void SetWorldSizeZ(G4double); + void SetWorldSizeR(G4double); + + G4VPhysicalVolume* Construct(); + + void UpdateGeometry(); + + public: + + void PrintCalorParameters(); + + G4Material* GetWorldMaterial() {return WorldMaterial;}; + G4double GetWorldSizeZ() {return WorldSizeZ;}; + G4double GetWorldSizeR() {return WorldSizeR;}; + + G4double GetAbsorberZpos() {return zAbsorber;}; + G4double GetzstartAbs() {return zstartAbs;}; + G4double GetzendAbs() {return zendAbs;}; + + G4Material* GetAbsorberMaterial() {return AbsorberMaterial;}; + G4double GetAbsorberThickness() {return AbsorberThickness;}; + G4double GetAbsorberRadius() {return AbsorberRadius;}; + + const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; + const G4VPhysicalVolume* GetAbsorber() {return physiAbsorber;}; + G4LogicalVolume* GetLogicalAbsorber() {return logicAbsorber;}; + + private: + + G4Tubs* solidWorld; // pointer to the solid World + G4LogicalVolume* logicWorld; // pointer to the logical World + G4VPhysicalVolume* physiWorld; // pointer to the physical World + + G4Tubs* solidAbsorber; // pointer to the solid Absorber + G4LogicalVolume* logicAbsorber; // pointer to the logical Absorber + G4VPhysicalVolume* physiAbsorber; // pointer to the physical Absorber + + G4UniformMagField* magField; // pointer to the magnetic field + F01ElectroMagneticField* fEmField; + F01DetectorMessenger* detectorMessenger; // pointer to the Messenger + F01CalorimeterSD* calorimeterSD; // pointer to the sensitive detector + + G4Material* AbsorberMaterial; + G4double AbsorberThickness; + G4double AbsorberRadius; + G4bool worldchanged; + + G4double zAbsorber ; + G4double zstartAbs , zendAbs ; + + G4Material* WorldMaterial; + G4double WorldSizeR; + G4double WorldSizeZ; + + private: + + void DefineMaterials(); + void ComputeCalorParameters(); + G4VPhysicalVolume* ConstructCalorimeter(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void F01DetectorConstruction::ComputeCalorParameters() +{ + // Compute derived parameters of the calorimeter + + zstartAbs = zAbsorber-0.5*AbsorberThickness; + zendAbs = zAbsorber+0.5*AbsorberThickness; + +} + +#endif diff --git a/examples/extended/field/field01/include/F01DetectorMessenger.hh b/examples/extended/field/field01/include/F01DetectorMessenger.hh new file mode 100644 index 0000000000..bf705af352 --- /dev/null +++ b/examples/extended/field/field01/include/F01DetectorMessenger.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01DetectorMessenger.hh,v 1.3 2001/10/25 08:10:20 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01DetectorMessenger_h +#define F01DetectorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F01DetectorConstruction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01DetectorMessenger: public G4UImessenger +{ + public: + F01DetectorMessenger(F01DetectorConstruction* ); + ~F01DetectorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + F01DetectorConstruction* F01Detector; + + G4UIdirectory* F01detDir; + + G4UIcmdWithAString* AbsMaterCmd; + G4UIcmdWithADoubleAndUnit* AbsThickCmd; + G4UIcmdWithADoubleAndUnit* AbsRadCmd; + + G4UIcmdWithADoubleAndUnit* AbsZposCmd; + + G4UIcmdWithAString* WorldMaterCmd; + G4UIcmdWithADoubleAndUnit* WorldZCmd; + G4UIcmdWithADoubleAndUnit* WorldRCmd; + + G4UIcmdWithoutParameter* UpdateCmd; + +}; + +#endif + diff --git a/examples/extended/field/field01/include/F01ElectroMagneticField.hh b/examples/extended/field/field01/include/F01ElectroMagneticField.hh new file mode 100644 index 0000000000..6a1ef67e5e --- /dev/null +++ b/examples/extended/field/field01/include/F01ElectroMagneticField.hh @@ -0,0 +1,96 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01ElectroMagneticField.hh,v 1.4 2001/07/11 09:57:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// A class for control of the Magnetic Field of the detector. +// The field is assumed to be uniform. +// +// $ Id: $ + +// Should this be a: +// i) messenger +// ii) user class that creates the field ? +// iii) simply a derived class of Uniform field ? <== I have chosen this now. +// iv) a field manager that creates/updates field (Prefered?) +// + + +#ifndef F01ElectroMagneticField_H +#define F01ElectroMagneticField_H + +#include "G4MagneticField.hh" +#include "G4UniformMagField.hh" + +class G4FieldManager; +class G4ChordFinder; +class G4Mag_UsualEqRhs; +class G4MagIntegratorStepper; +class F01FieldMessenger; + +class F01ElectroMagneticField: public G4MagneticField +{ +public: + F01ElectroMagneticField(G4ThreeVector) ; // The value of the field + F01ElectroMagneticField() ; // A zero field + + ~F01ElectroMagneticField() ; + + void GetFieldValue( const G4double Point[3], + G4double *Bfield ) const {;} ; + + void SetStepperType( G4int i) { fStepperType = i ; } ; + + void SetStepper(); + + void SetMinStep(G4double s) { fMinStep = s ; } ; + + void UpdateField(); + + void SetFieldValue(G4ThreeVector fieldVector) ; + void SetFieldValue(G4double fieldValue) ; + G4ThreeVector GetConstantFieldValue(); + +protected: + + // Find the global Field Manager + + G4FieldManager* GetGlobalFieldManager() ; // static + + G4FieldManager* fFieldManager ; + G4ChordFinder* fChordFinder ; + G4Mag_UsualEqRhs* fEquation ; + G4MagneticField* fMagneticField ; + + G4MagIntegratorStepper* fStepper ; + G4int fStepperType ; + + G4double fMinStep ; + + F01FieldMessenger* fFieldMessenger; + +}; + +#endif diff --git a/examples/extended/field/field01/include/F01EventAction.hh b/examples/extended/field/field01/include/F01EventAction.hh new file mode 100644 index 0000000000..e0bc195ed0 --- /dev/null +++ b/examples/extended/field/field01/include/F01EventAction.hh @@ -0,0 +1,69 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01EventAction.hh,v 1.4 2001/11/07 16:36:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01EventAction_h +#define F01EventAction_h 1 + +#include "G4UserEventAction.hh" +#include "globals.hh" + +class F01RunAction; +class F01EventActionMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01EventAction : public G4UserEventAction +{ + public: + F01EventAction(F01RunAction* F01RA); + ~F01EventAction(); + + public: + void BeginOfEventAction(const G4Event*); + void EndOfEventAction(const G4Event*); + + G4int GetEventno(); + void setEventVerbose(G4int level); + + void SetDrawFlag(G4String val) {drawFlag = val;}; + void SetPrintModulo(G4int val) {printModulo = val;}; + + private: + G4int calorimeterCollID; + F01EventActionMessenger* eventMessenger; + F01RunAction* runaction; + G4int verboselevel; + + G4String drawFlag; + G4int printModulo; +}; + +#endif diff --git a/examples/extended/electromagnetic/TestEm4/include/Em4RunActionMessenger.hh b/examples/extended/field/field01/include/F01EventActionMessenger.hh similarity index 78% rename from examples/extended/electromagnetic/TestEm4/include/Em4RunActionMessenger.hh rename to examples/extended/field/field01/include/F01EventActionMessenger.hh index 8c765739ec..269374a0d6 100644 --- a/examples/extended/electromagnetic/TestEm4/include/Em4RunActionMessenger.hh +++ b/examples/extended/field/field01/include/F01EventActionMessenger.hh @@ -21,41 +21,40 @@ // ******************************************************************** // // -// $Id: Em4RunActionMessenger.hh,v 1.3.4.1 2001/06/28 19:07:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: F01EventActionMessenger.hh,v 1.2 2001/07/11 09:57:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#ifndef Em4RunActionMessenger_h -#define Em4RunActionMessenger_h 1 +#ifndef F01EventActionMessenger_h +#define F01EventActionMessenger_h 1 #include "globals.hh" #include "G4UImessenger.hh" -class Em4RunAction; -class G4UIdirectory; +class F01EventAction; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class Em4RunActionMessenger: public G4UImessenger +class F01EventActionMessenger: public G4UImessenger { public: - Em4RunActionMessenger(Em4RunAction*); - ~Em4RunActionMessenger(); + F01EventActionMessenger(F01EventAction*); + ~F01EventActionMessenger(); void SetNewValue(G4UIcommand*, G4String); private: - Em4RunAction* Em4Run; - G4UIdirectory* RndmDir; - G4UIcmdWithAnInteger* RndmSaveCmd; - G4UIcmdWithAString* RndmReadCmd; - + F01EventAction* eventAction; + G4UIcmdWithAnInteger* setVerboseCmd; + G4UIcmdWithAString* DrawCmd; + G4UIcmdWithAnInteger* PrintCmd; }; #endif diff --git a/source/visualization/management/include/G4VisCommandsCamera.hh b/examples/extended/field/field01/include/F01FieldMessenger.hh similarity index 59% rename from source/visualization/management/include/G4VisCommandsCamera.hh rename to examples/extended/field/field01/include/F01FieldMessenger.hh index 4c82aaad05..5bc8126267 100644 --- a/source/visualization/management/include/G4VisCommandsCamera.hh +++ b/examples/extended/field/field01/include/F01FieldMessenger.hh @@ -21,43 +21,50 @@ // ******************************************************************** // // -// $Id: G4VisCommandsCamera.hh,v 1.3.4.1 2001/06/28 19:16:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: F01FieldMessenger.hh,v 1.5 2001/10/15 17:20:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// /vis~/camera/ commands -// John Allison 7th September 1997 -#ifndef G4VISCOMMANDSCAMERA_HH -#define G4VISCOMMANDSCAMERA_HH +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01FieldMessenger_h +#define F01FieldMessenger_h 1 #include "globals.hh" -#include "G4VisManager.hh" -#include "G4ViewParameters.hh" +#include "G4UImessenger.hh" -//////////////////////////////////////////////////// /vis~/camera/... //// -//vis \hline -//vis /vis~/camera/ && -//vis ...menu of camera commands. \\% -class G4VisCommandCamera { -public: - G4String GetCommandName () const {return "/vis~/camera/";} - G4String GetGuidance () const { - return "...menu of camera commands."; - } -}; +class F01ElectroMagneticField; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + + +class F01FieldMessenger: public G4UImessenger +{ + public: + F01FieldMessenger(F01ElectroMagneticField* ); + ~F01FieldMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + void SetNewValue(G4UIcommand*, G4int); + + private: + + F01ElectroMagneticField* fEMfield; + + G4UIdirectory* F01detDir; + + G4UIcmdWithAnInteger* StepperCmd; + G4UIcmdWithADoubleAndUnit* MagFieldCmd; + G4UIcmdWithADoubleAndUnit* MinStepCmd; + G4UIcmdWithoutParameter* UpdateCmd; + + G4UIcmdWithAString* AbsMaterCmd; -///////////////////////////////////// /vis~/camera/reset //// -//camera \hline -//camera /vis~/camera/reset && -//camera Resets dolly, pan and zoom. Regains ``Standard View''. \\% -class G4VisCommandCameraReset { -public: - G4String GetCommandName () const {return "/vis~/camera/reset";} - G4String GetGuidance () const { - return "Resets dolly, pan and zoom. Regains \"Standard View\"."; - } - void SetValue (); }; #endif diff --git a/examples/extended/field/field01/include/F01PhysicsList.hh b/examples/extended/field/field01/include/F01PhysicsList.hh new file mode 100644 index 0000000000..1582e23b0c --- /dev/null +++ b/examples/extended/field/field01/include/F01PhysicsList.hh @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01PhysicsList.hh,v 1.2 2001/07/11 09:57:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#ifndef F01PhysicsList_h +#define F01PhysicsList_h 1 + +#include "G4VUserPhysicsList.hh" +#include "globals.hh" + +class G4PhotoElectricEffect; +class G4ComptonScattering; +class G4GammaConversion; + +class G4MultipleScattering; + +class G4PAIonisation ; +class G4ForwardXrayTR ; +class G4eIonisation; +class G4eBremsstrahlung; +class G4eplusAnnihilation; + +class G4MuIonisation; +class G4MuBremsstrahlung; +class G4MuPairProduction; + +class G4hIonisation; +class G4hIonisationPlus; + +class F01StepCut; + +class F01DetectorConstruction; +class F01PhysicsListMessenger; + + +class F01PhysicsList: public G4VUserPhysicsList +{ + public: + F01PhysicsList( F01DetectorConstruction*); + ~F01PhysicsList(); + + protected: + // Construct particle and physics + void ConstructParticle(); + void ConstructProcess(); + + void SetCuts(); + + protected: + // these methods Construct particles + void ConstructBosons(); + void ConstructLeptons(); + void ConstructMesons(); + void ConstructBarions(); + + protected: + + // these methods Construct physics processes and register them + + void AddParameterisation(); + void ConstructGeneral(); + void ConstructEM(); + + public: + + void SetGammaCut(G4double); + void SetElectronCut(G4double); + void SetProtonCut(G4double); + void SetCutsByEnergy(G4double); + void GetRange(G4double); + + void SetMaxStep(G4double); + + public: + + G4double MaxChargedStep; + + private: + + G4PhotoElectricEffect* thePhotoElectricEffect; + G4ComptonScattering* theComptonScattering; + G4GammaConversion* theGammaConversion; + + G4MultipleScattering* theeminusMultipleScattering; + G4eIonisation* theeminusIonisation; + G4eBremsstrahlung* theeminusBremsstrahlung; + + G4PAIonisation* fPAIonisation ; + G4ForwardXrayTR* fForwardXrayTR ; + + G4MultipleScattering* theeplusMultipleScattering; + G4eIonisation* theeplusIonisation; + G4eBremsstrahlung* theeplusBremsstrahlung; + G4eplusAnnihilation* theeplusAnnihilation; + + F01StepCut* theeminusStepCut ; + F01StepCut* theeplusStepCut ; + + G4double cutForGamma; + G4double cutForElectron; + G4double cutForProton; + + F01DetectorConstruction* pDet; + F01PhysicsListMessenger* physicsListMessenger; +}; + +#endif + + + diff --git a/examples/extended/field/field01/include/F01PhysicsListMessenger.hh b/examples/extended/field/field01/include/F01PhysicsListMessenger.hh new file mode 100644 index 0000000000..0e09c3b7be --- /dev/null +++ b/examples/extended/field/field01/include/F01PhysicsListMessenger.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01PhysicsListMessenger.hh,v 1.3 2001/10/15 17:20:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01PhysicsListMessenger_h +#define F01PhysicsListMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F01PhysicsList; +class G4UIcmdWithoutParameter; +class G4UIcmdWithADouble; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01PhysicsListMessenger: public G4UImessenger +{ + public: + F01PhysicsListMessenger(F01PhysicsList*); + ~F01PhysicsListMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + F01PhysicsList* F01List; + + G4UIcmdWithADoubleAndUnit* setMaxStepCmd; + + G4UIcmdWithADoubleAndUnit* cutGCmd; + G4UIcmdWithADoubleAndUnit* cutECmd; + G4UIcmdWithADoubleAndUnit* cutPCmd; + G4UIcmdWithADoubleAndUnit* rCmd; + G4UIcmdWithADoubleAndUnit* eCmd; + +}; + +#endif diff --git a/examples/extended/field/field01/include/F01PrimaryGeneratorAction.hh b/examples/extended/field/field01/include/F01PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..ad61f73fe1 --- /dev/null +++ b/examples/extended/field/field01/include/F01PrimaryGeneratorAction.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01PrimaryGeneratorAction.hh,v 1.2 2001/07/11 09:57:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01PrimaryGeneratorAction_h +#define F01PrimaryGeneratorAction_h 1 + +#include "G4VUserPrimaryGeneratorAction.hh" +#include "globals.hh" + +class G4ParticleGun; +class G4Event; +class F01DetectorConstruction; +class F01PrimaryGeneratorMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + F01PrimaryGeneratorAction(F01DetectorConstruction*); + ~F01PrimaryGeneratorAction(); + + public: + void GeneratePrimaries(G4Event*); + void SetRndmFlag(G4String val) { rndmFlag = val;} + void Setxvertex(G4double x) ; + void Setyvertex(G4double y) ; + void Setzvertex(G4double z) ; + + static G4String GetPrimaryName() ; + + private: + G4ParticleGun* particleGun; //pointer a to G4 service class + F01DetectorConstruction* F01Detector; //pointer to the geometry + + F01PrimaryGeneratorMessenger* gunMessenger; //messenger of this class + G4String rndmFlag; //flag for a random impact point + + static G4String thePrimaryParticleName ; + G4double xvertex,yvertex,zvertex; + G4bool vertexdefined ; + +}; + +#endif + + diff --git a/examples/extended/field/field01/include/F01PrimaryGeneratorMessenger.hh b/examples/extended/field/field01/include/F01PrimaryGeneratorMessenger.hh new file mode 100644 index 0000000000..bbe6cec841 --- /dev/null +++ b/examples/extended/field/field01/include/F01PrimaryGeneratorMessenger.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01PrimaryGeneratorMessenger.hh,v 1.2 2001/07/11 09:57:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01PrimaryGeneratorMessenger_h +#define F01PrimaryGeneratorMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class F01PrimaryGeneratorAction; +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01PrimaryGeneratorMessenger: public G4UImessenger +{ + public: + F01PrimaryGeneratorMessenger(F01PrimaryGeneratorAction*); + ~F01PrimaryGeneratorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + F01PrimaryGeneratorAction* F01Action; + G4UIcmdWithAString* RndmCmd; + G4UIcmdWithADoubleAndUnit* setxvertexCmd; + G4UIcmdWithADoubleAndUnit* setyvertexCmd; + G4UIcmdWithADoubleAndUnit* setzvertexCmd; +}; + +#endif + diff --git a/examples/extended/field/field01/include/F01RunAction.hh b/examples/extended/field/field01/include/F01RunAction.hh new file mode 100644 index 0000000000..54874a5b52 --- /dev/null +++ b/examples/extended/field/field01/include/F01RunAction.hh @@ -0,0 +1,65 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01RunAction.hh,v 1.4 2001/11/07 16:36:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01RunAction_h +#define F01RunAction_h 1 + +#include "G4UserRunAction.hh" +#include "globals.hh" +#include "g4std/iostream" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01RunMessenger; +class G4Run; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01RunAction : public G4UserRunAction +{ + public: + F01RunAction(); + ~F01RunAction(); + + public: + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + void SetRndmFreq(G4int val) {saveRndm = val;} + G4int GetRndmFreq() {return saveRndm;} + + private: + + F01RunMessenger* runMessenger; + G4int saveRndm; +}; + +#endif diff --git a/examples/extended/field/field01/include/F01RunMessenger.hh b/examples/extended/field/field01/include/F01RunMessenger.hh new file mode 100644 index 0000000000..8270fa741a --- /dev/null +++ b/examples/extended/field/field01/include/F01RunMessenger.hh @@ -0,0 +1,69 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// + +// +// $Id: F01RunMessenger.hh,v 1.3 2001/10/15 17:20:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01RunMessenger_h +#define F01RunMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01RunAction; +class G4UIdirectory; +class G4UIcmdWithAnInteger; +class G4UIcmdWithAString; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01RunMessenger: public G4UImessenger +{ + public: + + F01RunMessenger(F01RunAction* ); + ~F01RunMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + F01RunAction* runAction; + + G4UIdirectory* RndmDir; + G4UIcmdWithAnInteger* RndmSaveCmd; + G4UIcmdWithAString* RndmReadCmd; + +}; + +#endif + diff --git a/examples/extended/field/field01/include/F01StepCut.hh b/examples/extended/field/field01/include/F01StepCut.hh new file mode 100644 index 0000000000..21774ee0c2 --- /dev/null +++ b/examples/extended/field/field01/include/F01StepCut.hh @@ -0,0 +1,125 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01StepCut.hh,v 1.3 2001/10/15 17:20:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef F01StepCut_h +#define F01StepCut_h 1 + +#include "G4ios.hh" +#include "globals.hh" +#include "G4VDiscreteProcess.hh" +#include "G4Step.hh" + +class F01StepCut : public G4VDiscreteProcess +{ + public: + + F01StepCut(const G4String& processName ="UserStepCut" ); + F01StepCut(F01StepCut &); + + ~F01StepCut(); + + G4double PostStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition + ); + + G4VParticleChange* PostStepDoIt( + const G4Track& , + const G4Step& + ); + + void SetMaxStep(G4double); + + protected: + + // it is not needed here ! + G4double GetMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ); + + + private: + + // hide assignment operator as private + F01StepCut & operator=(const F01StepCut &right); + + private: + + G4double MaxChargedStep ; +}; + +// inlined function members implementation + +#include "G4Step.hh" +#include "G4Track.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + +inline G4double F01StepCut::PostStepGetPhysicalInteractionLength( + const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + // condition is set to "Not Forced" + *condition = NotForced; + + G4double ProposedStep = DBL_MAX; + + if((MaxChargedStep > 0.) && + (aTrack.GetVolume() != 0) && + (aTrack.GetVolume()->GetName() == "Absorber") && + (aTrack.GetDynamicParticle()->GetDefinition()->GetPDGCharge() != 0.)) + ProposedStep = MaxChargedStep ; + + return ProposedStep; +} + +inline G4VParticleChange* F01StepCut::PostStepDoIt( + const G4Track& aTrack, + const G4Step& + ) +{ + // do nothing + aParticleChange.Initialize(aTrack); + return &aParticleChange; +} + +inline G4double F01StepCut::GetMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + return 0.; +} + +#endif + diff --git a/examples/extended/field/field01/include/F01SteppingAction.hh b/examples/extended/field/field01/include/F01SteppingAction.hh new file mode 100644 index 0000000000..9b27d9c3c0 --- /dev/null +++ b/examples/extended/field/field01/include/F01SteppingAction.hh @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01SteppingAction.hh,v 1.3 2001/11/07 16:36:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01SteppingAction_h +#define F01SteppingAction_h 1 + +#include "G4UserSteppingAction.hh" +#include "G4ios.hh" +#include "globals.hh" + +class F01SteppingMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01SteppingAction : public G4UserSteppingAction +{ + public: + F01SteppingAction(); + ~F01SteppingAction(); + + void UserSteppingAction(const G4Step*); + + private: + + F01SteppingMessenger* steppingMessenger; +}; + +#endif diff --git a/examples/extended/field/field01/include/F01SteppingMessenger.hh b/examples/extended/field/field01/include/F01SteppingMessenger.hh new file mode 100644 index 0000000000..8d44ffd9cc --- /dev/null +++ b/examples/extended/field/field01/include/F01SteppingMessenger.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01SteppingMessenger.hh,v 1.2 2001/07/11 09:57:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01SteppingMessenger_h +#define F01SteppingMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01SteppingAction; +class G4UIdirectory; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01SteppingMessenger: public G4UImessenger +{ + public: + + F01SteppingMessenger(F01SteppingAction* ); + ~F01SteppingMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + F01SteppingAction* steppingAction; + + G4UIdirectory* steppingDir; + +}; + +#endif + diff --git a/examples/extended/field/field01/include/F01SteppingVerbose.hh b/examples/extended/field/field01/include/F01SteppingVerbose.hh new file mode 100644 index 0000000000..44dea049e9 --- /dev/null +++ b/examples/extended/field/field01/include/F01SteppingVerbose.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01SteppingVerbose.hh,v 1.3 2001/10/15 17:20:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +//--------------------------------------------------------------- +// +// F01SteppingVerbose.hh +// +// Description: +// This class manages the vervose outputs in G4SteppingManager. +// +// +// Contact: +// Questions and comments to this code should be sent to +// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) +// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) +// +//--------------------------------------------------------------- + +#ifndef F01SteppingVerbose_h +#define F01SteppingVerbose_h 1 + +#include "G4SteppingVerbose.hh" + +class F01SteppingVerbose : public G4SteppingVerbose +{ + public: + + F01SteppingVerbose(); + ~F01SteppingVerbose(); + // Constructor/Destructor + + void StepInfo(); + void TrackingStarted(); + +}; + +#endif diff --git a/examples/extended/field/field01/include/F01VisManager.hh b/examples/extended/field/field01/include/F01VisManager.hh new file mode 100644 index 0000000000..6d09f43b9c --- /dev/null +++ b/examples/extended/field/field01/include/F01VisManager.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01VisManager.hh,v 1.2 2001/07/11 09:57:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// Example Visualization Manager implementing virtual function +// RegisterGraphicsSystems. Exploits C-pre-processor variables +// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if +// environment variables of the same name are set. + +// So all you have to do is set environment variables and compile and +// instantiate this in your main(). + +// Alternatively, you can implement an empty function here and just +// register the systems you want in your main(), e.g.: +// G4VisManager* myVisManager = new MyVisManager; +// myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F01VisManager_h +#define F01VisManager_h 1 + +#include "G4VisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F01VisManager: public G4VisManager +{ + public: + + F01VisManager (); + + private: + + void RegisterGraphicsSystems (); + +}; + +#endif diff --git a/examples/extended/field/field01/src/F01CalorHit.cc b/examples/extended/field/field01/src/F01CalorHit.cc new file mode 100644 index 0000000000..8951e61ffb --- /dev/null +++ b/examples/extended/field/field01/src/F01CalorHit.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01CalorHit.cc,v 1.2 2001/07/11 09:57:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01CalorHit.hh" + +G4Allocator F01CalorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01CalorHit::F01CalorHit() +{ + EdepAbs = 0.; TrackLengthAbs = 0.; + EdepGap = 0.; TrackLengthGap = 0.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01CalorHit::~F01CalorHit() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01CalorHit::F01CalorHit(const F01CalorHit& right) +{ + EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; + EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const F01CalorHit& F01CalorHit::operator=(const F01CalorHit& right) +{ + EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; + EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; + return *this; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +int F01CalorHit::operator==(const F01CalorHit& right) const +{ + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01CalorHit::Print() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field01/src/F01CalorimeterSD.cc b/examples/extended/field/field01/src/F01CalorimeterSD.cc new file mode 100644 index 0000000000..d9891d8c48 --- /dev/null +++ b/examples/extended/field/field01/src/F01CalorimeterSD.cc @@ -0,0 +1,127 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01CalorimeterSD.cc,v 1.4 2001/11/07 16:36:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01CalorimeterSD.hh" + +#include "F01CalorHit.hh" +#include "F01DetectorConstruction.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4Step.hh" +#include "G4VTouchable.hh" +#include "G4TouchableHistory.hh" +#include "G4SDManager.hh" + +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01CalorimeterSD::F01CalorimeterSD(G4String name, + F01DetectorConstruction* det) +:G4VSensitiveDetector(name),Detector(det) +{ + collectionName.insert("CalCollection"); + HitID = new G4int[500]; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01CalorimeterSD::~F01CalorimeterSD() +{ + delete [] HitID; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01CalorimeterSD::Initialize(G4HCofThisEvent*HCE) +{ + CalCollection = new F01CalorHitsCollection + (SensitiveDetectorName,collectionName[0]); + for (G4int j=0;j<1; j++) {HitID[j] = -1;}; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4bool F01CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) +{ + G4double edep = aStep->GetTotalEnergyDeposit(); + G4double stepl = 0.; + + stepl = aStep->GetStepLength(); + + if ((edep == 0.) && (stepl == 0.) ) return false; + + G4TouchableHistory* theTouchable + = (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable()); + + G4VPhysicalVolume* physVol = theTouchable->GetVolume(); + + G4int F01Number = 0 ; + if (HitID[F01Number]==-1) + { + F01CalorHit* calHit = new F01CalorHit(); + if (physVol == Detector->GetAbsorber()) calHit->AddAbs(edep,stepl); + HitID[F01Number] = CalCollection->insert(calHit) - 1; + if (verboseLevel>0) + G4cout << " New Calorimeter Hit on F01: " << F01Number << G4endl; + } + else + { + if (physVol == Detector->GetAbsorber()) + (*CalCollection)[HitID[F01Number]]->AddAbs(edep,stepl); + if (verboseLevel>0) + G4cout << " Energy added to F01: " << F01Number << G4endl; + } + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) +{ + static G4int HCID = -1; + if(HCID<0) + { HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]); } + HCE->AddHitsCollection(HCID,CalCollection); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01CalorimeterSD::clear() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +void F01CalorimeterSD::PrintAll() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field01/src/F01DetectorConstruction.cc b/examples/extended/field/field01/src/F01DetectorConstruction.cc new file mode 100644 index 0000000000..cd209adaae --- /dev/null +++ b/examples/extended/field/field01/src/F01DetectorConstruction.cc @@ -0,0 +1,414 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01DetectorConstruction.cc,v 1.8 2001/10/26 13:42:44 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "F01DetectorConstruction.hh" +#include "F01DetectorMessenger.hh" + +#include "F01CalorimeterSD.hh" +#include "F01ElectroMagneticField.hh" + +#include "G4VClusterModel.hh" +#include "G4PAIclusterModel.hh" + +#include "G4Material.hh" +#include "G4Tubs.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4UniformMagField.hh" +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" +#include "G4SDManager.hh" +#include "G4RunManager.hh" + +#include "G4ios.hh" + +///////////////////////////////////////////////////////////////////////////// +// +// + +F01DetectorConstruction::F01DetectorConstruction() + : solidWorld(0), logicWorld(0), physiWorld(0), + solidAbsorber(0),logicAbsorber(0), physiAbsorber(0), + magField(0), fEmField(0), calorimeterSD(0), + AbsorberMaterial(0), worldchanged(false), WorldMaterial(0) +{ + // default parameter values of the calorimeter + + WorldSizeZ = 44000.*mm; + WorldSizeR = 22000.*mm; + + AbsorberThickness = 1.0*mm; + + AbsorberRadius = 20000.*mm; + + zAbsorber = 21990.0*mm ; + + // create commands for interactive definition of the calorimeter + + detectorMessenger = new F01DetectorMessenger(this); + +} + +////////////////////////////////////////////////////////////////////////// +// +// + +F01DetectorConstruction::~F01DetectorConstruction() +{ + delete detectorMessenger; + if (fEmField) delete fEmField ; +} + +////////////////////////////////////////////////////////////////////////// +// +// + +G4VPhysicalVolume* F01DetectorConstruction::Construct() +{ + DefineMaterials(); + return ConstructCalorimeter(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::DefineMaterials() +{ + //This function illustrates the possible ways to define materials + + G4String name, symbol ; // a=mass of a mole; + G4double a, z, density ; // z=mean number of protons; + G4int nel ; + G4int ncomponents; + G4double fractionmass, pressure, temperature; + + // + // define Elements + // + + a = 1.01*g/mole; + G4Element* elH = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); + + a = 6.01*g/mole; + G4Element* elC = new G4Element(name="Carbon", symbol="C", z=6., a); + + a = 14.01*g/mole; + G4Element* elN = new G4Element(name="Nitrogen",symbol="N" , z= 7., a); + + a = 16.00*g/mole; + G4Element* elO = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); + + a = 39.948*g/mole; + G4Element* elAr = new G4Element(name="Argon", symbol="Ar", z=18., a); + + // + // define simple materials + // + + // Mylar + + density = 1.39*g/cm3; + G4Material* Mylar = new G4Material(name="Mylar", density, nel=3); + Mylar->AddElement(elO,2); + Mylar->AddElement(elC,5); + Mylar->AddElement(elH,4); + + // Polypropelene + + G4Material* CH2 = new G4Material ("Polypropelene" , 0.91*g/cm3, 2); + CH2->AddElement(elH,2); + CH2->AddElement(elC,1); + + // Krypton as detector gas, STP + + density = 3.700*mg/cm3 ; + a = 83.80*g/mole ; + G4Material* Kr = new G4Material(name="Kr",z=36., a, density ); + + // Dry air (average composition) + + density = 1.7836*mg/cm3 ; // STP + G4Material* Argon = new G4Material(name="Argon" , density, ncomponents=1); + Argon->AddElement(elAr, 1); + + density = 1.25053*mg/cm3 ; // STP + G4Material* Nitrogen = new G4Material(name="N2" , density, ncomponents=1); + Nitrogen->AddElement(elN, 2); + + density = 1.4289*mg/cm3 ; // STP + G4Material* Oxygen = new G4Material(name="O2" , density, ncomponents=1); + Oxygen->AddElement(elO, 2); + + density = 1.2928*mg/cm3 ; // STP + density *= 1.0e-8 ; // pumped vacuum + + temperature = STP_Temperature; + pressure = 1.0e-8*STP_Pressure; + + G4Material* Air = new G4Material(name="Air" , density, ncomponents=3, + kStateGas,temperature,pressure); + Air->AddMaterial( Nitrogen, fractionmass = 0.7557 ) ; + Air->AddMaterial( Oxygen, fractionmass = 0.2315 ) ; + Air->AddMaterial( Argon, fractionmass = 0.0128 ) ; + + // Xenon as detector gas, STP + + density = 5.858*mg/cm3 ; + a = 131.29*g/mole ; + G4Material* Xe = new G4Material(name="Xenon",z=54., a, density ); + + // Carbon dioxide, STP + + density = 1.977*mg/cm3; + G4Material* CarbonDioxide = new G4Material(name="CO2", density, nel=2); + CarbonDioxide->AddElement(elC,1); + CarbonDioxide->AddElement(elO,2); + + // 80% Xe + 20% CO2, STP + + density = 5.0818*mg/cm3 ; + G4Material* Xe20CO2 = new G4Material(name="Xe20CO2", density, ncomponents=2); + Xe20CO2->AddMaterial( Xe, fractionmass = 0.922 ) ; + Xe20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ; + + // 80% Kr + 20% CO2, STP + + density = 3.601*mg/cm3 ; + G4Material* Kr20CO2 = new G4Material(name="Kr20CO2", density, ncomponents=2); + Kr20CO2->AddMaterial( Kr, fractionmass = 0.89 ) ; + Kr20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.11 ) ; + + + G4cout << *(G4Material::GetMaterialTable()) << G4endl; + + // default materials of the calorimeter + + AbsorberMaterial = Air ; // Kr20CO2 ; // XeCO2CF4 ; + + WorldMaterial = Air ; +} + +///////////////////////////////////////////////////////////////////////// +// +// + +G4VPhysicalVolume* F01DetectorConstruction::ConstructCalorimeter() +{ + // complete the Calor parameters definition and Print + + ComputeCalorParameters(); + PrintCalorParameters(); + + // World + + if(solidWorld) delete solidWorld ; + if(logicWorld) delete logicWorld ; + if(physiWorld) delete physiWorld ; + + solidWorld = new G4Tubs("World", // its name + 0.,WorldSizeR,WorldSizeZ/2.,0.,twopi); // its size + + logicWorld = new G4LogicalVolume(solidWorld, // its solid + WorldMaterial, // its material + "World"); // its name + + physiWorld = new G4PVPlacement(0, // no rotation + G4ThreeVector(), // at (0,0,0) + "World", // its name + logicWorld, // its logical volume + 0, // its mother volume + false, // no boolean operation + 0); // copy number + + // Absorber + + if (AbsorberThickness > 0.) + { + if(solidAbsorber) delete solidAbsorber ; + if(logicAbsorber) delete logicAbsorber ; + if(physiAbsorber) delete physiAbsorber ; + + solidAbsorber = new G4Tubs("Absorber", 1.0*mm, + AbsorberRadius, + AbsorberThickness/2., + 0.0,twopi); + + logicAbsorber = new G4LogicalVolume(solidAbsorber, + AbsorberMaterial, + "Absorber"); + + physiAbsorber = new G4PVPlacement(0, + G4ThreeVector(0.,0.,zAbsorber), + "Absorber", + logicAbsorber, + physiWorld, + false, + 0); + + } + + // Sensitive Detectors: Absorber + + G4SDManager* SDman = G4SDManager::GetSDMpointer(); + + if(!calorimeterSD) + { + calorimeterSD = new F01CalorimeterSD("CalorSD",this); + SDman->AddNewDetector( calorimeterSD ); + } + if (logicAbsorber) logicAbsorber->SetSensitiveDetector(calorimeterSD); + + return physiWorld; +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::PrintCalorParameters() +{ + G4cout << "\n The WORLD is made of " + << WorldSizeZ/mm << "mm of " << WorldMaterial->GetName() ; + G4cout << ", the transverse size (R) of the world is " << WorldSizeR/mm << " mm. " << G4endl; + G4cout << " The ABSORBER is made of " + << AbsorberThickness/mm << "mm of " << AbsorberMaterial->GetName() ; + G4cout << ", the transverse size (R) is " << AbsorberRadius/mm << " mm. " << G4endl; + G4cout << " Z position of the (middle of the) absorber " << zAbsorber/mm << " mm." << G4endl; + G4cout << G4endl; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) +{ + // get the pointer to the material table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + G4Material* pttoMaterial; + for (size_t J=0 ; Jsize() ; J++) + { pttoMaterial = (*theMaterialTable)[J]; + if(pttoMaterial->GetName() == materialChoice) + { + AbsorberMaterial = pttoMaterial; + logicAbsorber->SetMaterial(pttoMaterial); + } + } +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::SetWorldMaterial(G4String materialChoice) +{ + // get the pointer to the material table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + G4Material* pttoMaterial; + for (size_t J=0 ; Jsize() ; J++) + { pttoMaterial = (*theMaterialTable)[J]; + if(pttoMaterial->GetName() == materialChoice) + { + WorldMaterial = pttoMaterial; + logicWorld->SetMaterial(pttoMaterial); + } + } +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::SetAbsorberThickness(G4double val) +{ + // change Absorber thickness and recompute the calorimeter parameters + AbsorberThickness = val; + ComputeCalorParameters(); +} + +///////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::SetAbsorberRadius(G4double val) +{ + // change the transverse size and recompute the calorimeter parameters + AbsorberRadius = val; + ComputeCalorParameters(); +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::SetWorldSizeZ(G4double val) +{ + worldchanged=true; + WorldSizeZ = val; + ComputeCalorParameters(); +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::SetWorldSizeR(G4double val) +{ + worldchanged=true; + WorldSizeR = val; + ComputeCalorParameters(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::SetAbsorberZpos(G4double val) +{ + zAbsorber = val; + ComputeCalorParameters(); +} + + +/////////////////////////////////////////////////////////////////////////////// +// +// + +void F01DetectorConstruction::UpdateGeometry() +{ + G4RunManager::GetRunManager()->DefineWorldVolume(ConstructCalorimeter()); +} + +// +// +//////////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/field/field01/src/F01DetectorMessenger.cc b/examples/extended/field/field01/src/F01DetectorMessenger.cc new file mode 100644 index 0000000000..f7b69159b7 --- /dev/null +++ b/examples/extended/field/field01/src/F01DetectorMessenger.cc @@ -0,0 +1,148 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01DetectorMessenger.cc,v 1.3 2001/10/25 08:10:20 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01DetectorMessenger.hh" + +#include "F01DetectorConstruction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01DetectorMessenger::F01DetectorMessenger(F01DetectorConstruction * F01Det) +:F01Detector(F01Det) +{ + F01detDir = new G4UIdirectory("/calor/"); + F01detDir->SetGuidance("F01 detector control."); + + AbsMaterCmd = new G4UIcmdWithAString("/calor/setAbsMat",this); + AbsMaterCmd->SetGuidance("Select Material of the Absorber."); + AbsMaterCmd->SetParameterName("choice",true); + AbsMaterCmd->SetDefaultValue("Lead"); + AbsMaterCmd->AvailableForStates(Idle); + + WorldMaterCmd = new G4UIcmdWithAString("/calor/setWorldMat",this); + WorldMaterCmd->SetGuidance("Select Material of the World."); + WorldMaterCmd->SetParameterName("wchoice",true); + WorldMaterCmd->SetDefaultValue("Air"); + WorldMaterCmd->AvailableForStates(Idle); + + AbsThickCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsThick",this); + AbsThickCmd->SetGuidance("Set Thickness of the Absorber"); + AbsThickCmd->SetParameterName("SizeZ",false,false); + AbsThickCmd->SetDefaultUnit("mm"); + AbsThickCmd->SetRange("SizeZ>0."); + AbsThickCmd->AvailableForStates(Idle); + + AbsRadCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsRad",this); + AbsRadCmd->SetGuidance("Set radius of the Absorber"); + AbsRadCmd->SetParameterName("SizeR",false,false); + AbsRadCmd->SetDefaultUnit("mm"); + AbsRadCmd->SetRange("SizeR>0."); + AbsRadCmd->AvailableForStates(Idle); + + AbsZposCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsZpos",this); + AbsZposCmd->SetGuidance("Set Z pos. of the Absorber"); + AbsZposCmd->SetParameterName("Zpos",false,false); + AbsZposCmd->SetDefaultUnit("mm"); + AbsZposCmd->AvailableForStates(Idle); + + WorldZCmd = new G4UIcmdWithADoubleAndUnit("/calor/setWorldZ",this); + WorldZCmd->SetGuidance("Set Z size of the World"); + WorldZCmd->SetParameterName("WSizeZ",false,false); + WorldZCmd->SetDefaultUnit("mm"); + WorldZCmd->SetRange("WSizeZ>0."); + WorldZCmd->AvailableForStates(Idle); + + WorldRCmd = new G4UIcmdWithADoubleAndUnit("/calor/setWorldR",this); + WorldRCmd->SetGuidance("Set R size of the World"); + WorldRCmd->SetParameterName("WSizeR",false,false); + WorldRCmd->SetDefaultUnit("mm"); + WorldRCmd->SetRange("WSizeR>0."); + WorldRCmd->AvailableForStates(Idle); + + UpdateCmd = new G4UIcmdWithoutParameter("/calor/update",this); + UpdateCmd->SetGuidance("Update calorimeter geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(Idle); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01DetectorMessenger::~F01DetectorMessenger() +{ + delete AbsMaterCmd; + delete AbsThickCmd; + delete AbsRadCmd; + delete AbsZposCmd; + delete WorldMaterCmd; + delete WorldZCmd; + delete WorldRCmd; + delete UpdateCmd; + delete F01detDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == AbsMaterCmd ) + { F01Detector->SetAbsorberMaterial(newValue);} + + if( command == WorldMaterCmd ) + { F01Detector->SetWorldMaterial(newValue);} + + if( command == AbsThickCmd ) + { F01Detector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} + + if( command == AbsRadCmd ) + { F01Detector->SetAbsorberRadius(AbsRadCmd->GetNewDoubleValue(newValue));} + + if( command == AbsZposCmd ) + { F01Detector->SetAbsorberZpos(AbsZposCmd->GetNewDoubleValue(newValue));} + + if( command == WorldZCmd ) + { F01Detector->SetWorldSizeZ(WorldZCmd->GetNewDoubleValue(newValue));} + + if( command == WorldRCmd ) + { F01Detector->SetWorldSizeR(WorldRCmd->GetNewDoubleValue(newValue));} + + if( command == UpdateCmd ) + { F01Detector->UpdateGeometry(); } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field01/src/F01ElectroMagneticField.cc b/examples/extended/field/field01/src/F01ElectroMagneticField.cc new file mode 100644 index 0000000000..745550187b --- /dev/null +++ b/examples/extended/field/field01/src/F01ElectroMagneticField.cc @@ -0,0 +1,226 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01ElectroMagneticField.cc,v 1.8 2001/10/15 17:20:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// User Field class implementation. +// + + +#include "F01ElectroMagneticField.hh" +#include "F01FieldMessenger.hh" + +#include "G4UniformMagField.hh" +#include "G4MagneticField.hh" +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" +#include "G4Mag_UsualEqRhs.hh" +#include "G4MagIntegratorStepper.hh" +#include "G4ChordFinder.hh" + +#include "G4ExplicitEuler.hh" +#include "G4ImplicitEuler.hh" +#include "G4SimpleRunge.hh" +#include "G4SimpleHeum.hh" +#include "G4ClassicalRK4.hh" +#include "G4HelixExplicitEuler.hh" +#include "G4HelixImplicitEuler.hh" +#include "G4HelixSimpleRunge.hh" +#include "G4CashKarpRKF45.hh" +#include "G4RKG3_Stepper.hh" + +////////////////////////////////////////////////////////////////////////// +// +// Constructors: + +F01ElectroMagneticField::F01ElectroMagneticField() + : fChordFinder(0), fStepper(0) +{ + fMagneticField = new G4UniformMagField( + G4ThreeVector(3.3*tesla, + 0.0, // 0.5*tesla, + 0.0 )); + + fFieldMessenger = new F01FieldMessenger(this) ; + + fEquation = new G4Mag_UsualEqRhs(fMagneticField); + + fMinStep = 1.0*mm ; // minimal step of 1 mm is default + + fStepperType = 4 ; // ClassicalRK4 is default stepper + + fFieldManager = G4TransportationManager::GetTransportationManager() + ->GetFieldManager(); + + UpdateField(); + +} + +///////////////////////////////////////////////////////////////////////////////// + +F01ElectroMagneticField::F01ElectroMagneticField(G4ThreeVector fieldVector) +{ + fMagneticField = new G4UniformMagField(fieldVector); + GetGlobalFieldManager()->CreateChordFinder(this); +} + +//////////////////////////////////////////////////////////////////////////////// + +F01ElectroMagneticField::~F01ElectroMagneticField() +{ + // GetGlobalFieldManager()->SetDetectorField(0); + + if(fMagneticField) delete fMagneticField; + if(fChordFinder) delete fChordFinder; + if(fStepper) delete fStepper; +} + +///////////////////////////////////////////////////////////////////////////// +// +// Update field +// + +void F01ElectroMagneticField::UpdateField() +{ + SetStepper(); + G4cout<<"The minimal step is equal to "<SetDetectorField(fMagneticField ); + + if(fChordFinder) delete fChordFinder; + + fChordFinder = new G4ChordFinder( fMagneticField, fMinStep,fStepper); + + fFieldManager->SetChordFinder( fChordFinder ); + + return; +} + +///////////////////////////////////////////////////////////////////////////// +// +// Set stepper according to the stepper type +// + +void F01ElectroMagneticField::SetStepper() +{ + if(fStepper) delete fStepper; + + switch ( fStepperType ) + { + case 0: + fStepper = new G4ExplicitEuler( fEquation ); + G4cout<<"G4ExplicitEuler is calledS"<SetDetectorField(this); + } + else + { + // If the new field's value is Zero, then it is best to + // insure that it is not used for propagation. + + G4MagneticField* fMagneticField = 0; + fieldMgr->SetDetectorField(fMagneticField); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Utility method + +G4FieldManager* F01ElectroMagneticField::GetGlobalFieldManager() +{ + return G4TransportationManager::GetTransportationManager() + ->GetFieldManager(); +} diff --git a/examples/extended/field/field01/src/F01EventAction.cc b/examples/extended/field/field01/src/F01EventAction.cc new file mode 100644 index 0000000000..3befc191c4 --- /dev/null +++ b/examples/extended/field/field01/src/F01EventAction.cc @@ -0,0 +1,138 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01EventAction.cc,v 1.4 2001/11/07 16:36:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01EventAction.hh" + +#include "F01RunAction.hh" + +#include "F01CalorHit.hh" +#include "F01EventActionMessenger.hh" + +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4HCofThisEvent.hh" +#include "G4VHitsCollection.hh" +#include "G4SDManager.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Trajectory.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "G4UnitsTable.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01EventAction::F01EventAction(F01RunAction* F01RA) + : calorimeterCollID(-1), eventMessenger(0), + runaction(F01RA), verboselevel(0), + drawFlag("all"), printModulo(10000) +{ + eventMessenger = new F01EventActionMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01EventAction::~F01EventAction() +{ + delete eventMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01EventAction::BeginOfEventAction(const G4Event* evt) +{ + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + G4cout << "\n---> Begin of Event: " << evtNb << G4endl; + + if(verboselevel>1) + G4cout << "<<< Event " << evtNb << " started." << G4endl; + + if (calorimeterCollID==-1) + { + G4SDManager * SDman = G4SDManager::GetSDMpointer(); + calorimeterCollID = SDman->GetCollectionID("CalCollection"); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01EventAction::EndOfEventAction(const G4Event* evt) +{ + + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) + { + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); + G4int n_trajectories = 0; + if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); + for(G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") trj->DrawTrajectory(50); + else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) + trj->DrawTrajectory(50); + } + } + + if(verboselevel>0) + G4cout << "<<< Event " << evt->GetEventID() << " ended." << G4endl; + + + //save rndm status + if (runaction->GetRndmFreq() == 2) + { + HepRandom::saveEngineStatus("endOfEvent.rndm"); + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + { + G4cout << "\n---> End of Event: " << evtNb << G4endl; + HepRandom::showEngineStatus(); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4int F01EventAction::GetEventno() +{ + G4int evno = fpEventManager->GetConstCurrentEvent()->GetEventID() ; + return evno ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01EventAction::setEventVerbose(G4int level) +{ + verboselevel = level ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field01/src/F01EventActionMessenger.cc b/examples/extended/field/field01/src/F01EventActionMessenger.cc new file mode 100644 index 0000000000..786bc5a868 --- /dev/null +++ b/examples/extended/field/field01/src/F01EventActionMessenger.cc @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01EventActionMessenger.cc,v 1.2 2001/07/11 09:58:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01EventActionMessenger.hh" + +#include "F01EventAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01EventActionMessenger::F01EventActionMessenger(F01EventAction* EvAct) +:eventAction(EvAct) +{ + setVerboseCmd = new G4UIcmdWithAnInteger("/event/setverbose",this); + setVerboseCmd->SetGuidance("Set verbose level ." ); + setVerboseCmd->SetParameterName("level",true); + setVerboseCmd->SetDefaultValue(0); + + DrawCmd = new G4UIcmdWithAString("/event/drawTracks",this); + DrawCmd->SetGuidance("Draw the tracks in the event"); + DrawCmd->SetGuidance(" Choice : none,charged, all"); + DrawCmd->SetParameterName("choice",true); + DrawCmd->SetDefaultValue("all"); + DrawCmd->SetCandidates("none charged all"); + DrawCmd->AvailableForStates(Idle); + + PrintCmd = new G4UIcmdWithAnInteger("/event/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01EventActionMessenger::~F01EventActionMessenger() +{ + delete setVerboseCmd; + delete DrawCmd; + delete PrintCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if(command == setVerboseCmd) + {eventAction->setEventVerbose(setVerboseCmd->GetNewIntValue(newValue));} + + if(command == DrawCmd) + {eventAction->SetDrawFlag(newValue);} + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field01/src/F01FieldMessenger.cc b/examples/extended/field/field01/src/F01FieldMessenger.cc new file mode 100644 index 0000000000..baa85c9c56 --- /dev/null +++ b/examples/extended/field/field01/src/F01FieldMessenger.cc @@ -0,0 +1,119 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01FieldMessenger.cc,v 1.5 2001/10/15 17:20:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "F01FieldMessenger.hh" + +#include "F01ElectroMagneticField.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +////////////////////////////////////////////////////////////////////////////// + +F01FieldMessenger::F01FieldMessenger(F01ElectroMagneticField* pEMfield) + :fEMfield(pEMfield) +{ + F01detDir = new G4UIdirectory("/field/"); + F01detDir->SetGuidance("F01 field tracking control."); + + StepperCmd = new G4UIcmdWithAnInteger("/field/setStepperType",this); + StepperCmd->SetGuidance("Select stepper type for magnetic field"); + StepperCmd->SetParameterName("choice",true); + StepperCmd->SetDefaultValue(4); + StepperCmd->AvailableForStates(PreInit,Idle); + + + UpdateCmd = new G4UIcmdWithoutParameter("/field/update",this); + UpdateCmd->SetGuidance("Update calorimeter geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(Idle); + + MagFieldCmd = new G4UIcmdWithADoubleAndUnit("/field/setFieldZ",this); + MagFieldCmd->SetGuidance("Define magnetic field."); + MagFieldCmd->SetGuidance("Magnetic field will be in Z direction."); + MagFieldCmd->SetParameterName("Bz",false,false); + MagFieldCmd->SetDefaultUnit("tesla"); + MagFieldCmd->AvailableForStates(Idle); + + MinStepCmd = new G4UIcmdWithADoubleAndUnit("/field/setMinStep",this); + MinStepCmd->SetGuidance("Define minimal step"); + MinStepCmd->SetGuidance("Magnetic field will be in Z direction."); + MinStepCmd->SetParameterName("min step",false,false); + MinStepCmd->SetDefaultUnit("mm"); + MinStepCmd->AvailableForStates(Idle); + + AbsMaterCmd = new G4UIcmdWithAString("/field/setAbsMat",this); + AbsMaterCmd->SetGuidance("Select Material of the Absorber."); + AbsMaterCmd->SetParameterName("choice",true); + AbsMaterCmd->SetDefaultValue("Xe"); + AbsMaterCmd->AvailableForStates(Idle); +} + +/////////////////////////////////////////////////////////////////////////////// + +F01FieldMessenger::~F01FieldMessenger() +{ + delete StepperCmd; + delete MagFieldCmd; + delete MinStepCmd; + delete F01detDir; + delete UpdateCmd; + + delete AbsMaterCmd; +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F01FieldMessenger::SetNewValue( G4UIcommand* command, G4String newValue) +{ + if( command == StepperCmd ) + { + fEMfield->SetStepperType(StepperCmd->GetNewIntValue(newValue)); + } + if( command == UpdateCmd ) + { + fEMfield->UpdateField(); + } + if( command == MagFieldCmd ) + { + fEMfield->SetFieldValue(MagFieldCmd->GetNewDoubleValue(newValue)); + } + if( command == MinStepCmd ) + { + fEMfield->SetMinStep(MinStepCmd->GetNewDoubleValue(newValue)); + } +} + +// +// +///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/field/field01/src/F01PhysicsList.cc b/examples/extended/field/field01/src/F01PhysicsList.cc new file mode 100644 index 0000000000..047c58cce0 --- /dev/null +++ b/examples/extended/field/field01/src/F01PhysicsList.cc @@ -0,0 +1,477 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01PhysicsList.cc,v 1.5 2001/11/07 14:33:21 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "G4Timer.hh" + +#include "F01PhysicsList.hh" +#include "F01DetectorConstruction.hh" +#include "F01PhysicsListMessenger.hh" + +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" +#include "G4Material.hh" +#include "G4EnergyLossTables.hh" +#include "G4UnitsTable.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "G4FastSimulationManagerProcess.hh" + + +///////////////////////////////////////////////////////////// +// +// + +F01PhysicsList::F01PhysicsList(F01DetectorConstruction* p) +: G4VUserPhysicsList(), MaxChargedStep(DBL_MAX), + thePhotoElectricEffect(0), theComptonScattering(0), theGammaConversion(0), + theeminusMultipleScattering(0), theeminusIonisation(0), + theeminusBremsstrahlung(0), + theeplusMultipleScattering(0),theeplusIonisation(0), + theeplusBremsstrahlung(0), theeplusAnnihilation(0), + theeminusStepCut(0),theeplusStepCut(0) +{ + pDet = p; + + defaultCutValue = 1.000*mm ; + + cutForGamma = defaultCutValue ; + cutForElectron = defaultCutValue ; + cutForProton = defaultCutValue ; + + SetVerboseLevel(1); + physicsListMessenger = new F01PhysicsListMessenger(this); +} + +///////////////////////////////////////////////////////////////////////// +// +// + +F01PhysicsList::~F01PhysicsList() +{ + delete physicsListMessenger; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F01PhysicsList::ConstructParticle() +{ + // In this method, static member functions should be called + // for all particles which you want to use. + // This ensures that objects of these particle types will be + // created in the program. + + ConstructBosons(); + ConstructLeptons(); + ConstructMesons(); + ConstructBarions(); +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F01PhysicsList::ConstructBosons() +{ + // gamma + + G4Gamma::GammaDefinition(); + + // charged geantino + + G4ChargedGeantino::ChargedGeantinoDefinition(); + + +} + +void F01PhysicsList::ConstructLeptons() +{ + // leptons + + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); + G4MuonPlus::MuonPlusDefinition(); + G4MuonMinus::MuonMinusDefinition(); + + G4NeutrinoE::NeutrinoEDefinition(); + G4AntiNeutrinoE::AntiNeutrinoEDefinition(); + G4NeutrinoMu::NeutrinoMuDefinition(); + G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); +} + +void F01PhysicsList::ConstructMesons() +{ + // mesons + + G4PionPlus::PionPlusDefinition(); + G4PionMinus::PionMinusDefinition(); + G4PionZero::PionZeroDefinition(); + G4KaonPlus::KaonPlusDefinition(); + G4KaonMinus::KaonMinusDefinition(); +} + + +void F01PhysicsList::ConstructBarions() +{ +// barions + + G4Proton::ProtonDefinition(); + G4AntiProton::AntiProtonDefinition(); +} + + +/////////////////////////////////////////////////////////////////////// +// +// + +void F01PhysicsList::ConstructProcess() +{ + AddTransportation(); + AddParameterisation(); + + ConstructEM(); + ConstructGeneral(); +} + +///////////////////////////////////////////////////////////////////////////// +// +// + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" +#include "G4PAIonisation.hh" +#include "G4ForwardXrayTR.hh" + +#include "F01StepCut.hh" + +#include "G4IonisationByLogicalVolume.hh" + +void F01PhysicsList::ConstructEM() +{ + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + + if (particleName == "gamma") + { + // Construct processes for gamma + + thePhotoElectricEffect = new G4PhotoElectricEffect(); + theComptonScattering = new G4ComptonScattering(); + theGammaConversion = new G4GammaConversion(); + + pmanager->AddDiscreteProcess(thePhotoElectricEffect); + pmanager->AddDiscreteProcess(theComptonScattering); + + pmanager->AddDiscreteProcess(theGammaConversion); + + } + else if (particleName == "e-") + { + // Construct processes for electron + + // theeminusMultipleScattering = new G4MultipleScattering(); + theeminusIonisation = new G4eIonisation(); + theeminusBremsstrahlung = new G4eBremsstrahlung(); + + + theeminusStepCut = new F01StepCut(); + + // pmanager->AddProcess(theeminusMultipleScattering,-1,1,1); + + pmanager->AddProcess(theeminusIonisation,-1,2,2); + + + pmanager->AddProcess(theeminusBremsstrahlung,-1,1,1); + + + pmanager->AddProcess(theeminusStepCut,-1,-1,4); + theeminusStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if (particleName == "e+") + { + // Construct processes for positron + + // theeplusMultipleScattering = new G4MultipleScattering(); + theeplusIonisation = new G4eIonisation(); + theeplusBremsstrahlung = new G4eBremsstrahlung(); + // theeplusAnnihilation = new G4eplusAnnihilation(); + + + theeplusStepCut = new F01StepCut(); + + // pmanager->AddProcess(theeplusMultipleScattering,-1,1,1); + pmanager->AddProcess(theeplusIonisation,-1,2,2); + pmanager->AddProcess(theeplusBremsstrahlung,-1,-1,3); + // pmanager->AddProcess(theeplusAnnihilation,0,-1,4); + + + pmanager->AddProcess(theeplusStepCut,-1,-1,5); + theeplusStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if( particleName == "mu+" || + particleName == "mu-" ) + { + // Construct processes for muon+ + + F01StepCut* muonStepCut = new F01StepCut(); + + G4MuIonisation* themuIonisation = new G4MuIonisation() ; + pmanager->AddProcess(new G4MultipleScattering(),-1,1,1); + pmanager->AddProcess(themuIonisation,-1,2,2); + pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3); + pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4); + + pmanager->AddProcess( muonStepCut,-1,-1,3); + muonStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if ( + particleName == "proton" + || particleName == "antiproton" + || particleName == "pi+" + || particleName == "pi-" + || particleName == "kaon+" + || particleName == "kaon-" + ) + { + F01StepCut* thehadronStepCut = new F01StepCut(); + + G4hIonisation* thehIonisation = new G4hIonisation() ; + G4MultipleScattering* thehMultipleScattering = + new G4MultipleScattering() ; + + + pmanager->AddProcess(thehMultipleScattering,-1,1,1); + pmanager->AddProcess(thehIonisation,-1,2,2); + + + pmanager->AddProcess( thehadronStepCut,-1,-1,3); + thehadronStepCut->SetMaxStep(MaxChargedStep) ; + thehadronStepCut->SetMaxStep(10*mm) ; + + } + } +} + + +#include "G4Decay.hh" + +void F01PhysicsList::ConstructGeneral() +{ + // Add Decay Process + + G4Decay* theDecayProcess = new G4Decay(); + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + + if (theDecayProcess->IsApplicable(*particle)) + { + pmanager ->AddProcess(theDecayProcess); + + // set ordering for PostStepDoIt and AtRestDoIt + + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + } + } +} + +///////////////////////////////////////////////////////////////////////////// + +void F01PhysicsList::AddParameterisation() +{ + G4FastSimulationManagerProcess* theFastSimulationManagerProcess = + new G4FastSimulationManagerProcess() ; + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value() ; + G4ProcessManager* pmanager = particle->GetProcessManager() ; + + // both postStep and alongStep action are required: because + // of the use of ghost volumes. If no ghost, the postStep is sufficient. + + pmanager->AddProcess(theFastSimulationManagerProcess, -1, 1, 1); + } +} + + + +///////////////////////////////////////////////////////////////////////////// + +void F01PhysicsList::SetCuts() +{ + G4Timer theTimer ; + theTimer.Start() ; + if (verboseLevel >0) + { + G4cout << "F01PhysicsList::SetCuts:"; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; + } + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + + SetCutValue(cutForGamma,"gamma"); + + SetCutValue(cutForElectron,"e-"); + SetCutValue(cutForElectron,"e+"); + + SetCutValue(defaultCutValue,"mu-"); + SetCutValue(defaultCutValue,"mu+"); + + // set cut values for proton and anti_proton before all other hadrons + // because some processes for hadrons need cut values for proton/anti_proton + + SetCutValue(defaultCutValue, "proton"); + SetCutValue(defaultCutValue, "anti_proton"); + + SetCutValueForOthers(defaultCutValue); + + if (verboseLevel>1) DumpCutValuesTable(); + + theTimer.Stop(); + G4cout.precision(6); + G4cout << G4endl ; + G4cout << "total time(SetCuts)=" << theTimer.GetUserElapsed() << " s " <GetAbsorberMaterial(); + + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + + G4ParticleDefinition* part; + G4double cut; + + part = theParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e-"); + + part = theParticleTable->FindParticle("e+"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e+"); + + // set cut values for proton and anti_proton before all other hadrons + // because some processes for hadrons need cut values for proton/anti_proton + + part = theParticleTable->FindParticle("proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "proton"); + + part = theParticleTable->FindParticle("anti_proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "anti_proton"); + + SetCutValueForOthers(cut); +} + +////////////////////////////////////////////////////////////////////////////// + +void F01PhysicsList::GetRange(G4double val) +{ + G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable(); + G4Material* currMat = pDet->GetAbsorberMaterial(); + + G4ParticleDefinition* part; + G4double cut; + part = theParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + G4cout << "material : " << currMat->GetName() << G4endl; + G4cout << "particle : " << part->GetParticleName() << G4endl; + G4cout << "energy : " << val / keV << " (keV)" << G4endl; + G4cout << "range : " << cut / mm << " (mm)" << G4endl; +} + +//////////////////////////////////////////////////////////////////////////// + +void F01PhysicsList::SetMaxStep(G4double step) +{ + MaxChargedStep = step ; + G4cout << " MaxChargedStep=" << MaxChargedStep << G4endl; + G4cout << G4endl; +} diff --git a/examples/extended/field/field01/src/F01PhysicsListMessenger.cc b/examples/extended/field/field01/src/F01PhysicsListMessenger.cc new file mode 100644 index 0000000000..e98b866cb0 --- /dev/null +++ b/examples/extended/field/field01/src/F01PhysicsListMessenger.cc @@ -0,0 +1,120 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01PhysicsListMessenger.cc,v 1.3 2001/10/15 17:20:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01PhysicsListMessenger.hh" + +#include "F01PhysicsList.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01PhysicsListMessenger::F01PhysicsListMessenger(F01PhysicsList * List) + : F01List(List) +{ + cutGCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutG",this); + cutGCmd->SetGuidance("Set cut values by RANGE for Gamma."); + cutGCmd->SetParameterName("range",true); + cutGCmd->SetDefaultValue(1.); + cutGCmd->SetDefaultUnit("mm"); + cutGCmd->AvailableForStates(Idle); + + cutECmd = new G4UIcmdWithADoubleAndUnit("/calor/cutE",this); + cutECmd->SetGuidance("Set cut values by RANGE for e- e+."); + cutECmd->SetParameterName("range",true); + cutECmd->SetDefaultValue(1.); + cutECmd->SetDefaultUnit("mm"); + cutECmd->AvailableForStates(Idle); + + cutPCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutP",this); + cutPCmd->SetGuidance("Set cut values by RANGE for proton and others."); + cutPCmd->SetParameterName("range",true); + cutPCmd->SetDefaultValue(1.); + cutPCmd->SetDefaultUnit("mm"); + cutPCmd->AvailableForStates(Idle); + + eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this); + eCmd->SetGuidance("Set cut values by ENERGY for charged particles."); + eCmd->SetParameterName("energy",true); + eCmd->SetDefaultValue(10.); + eCmd->SetDefaultUnit("keV"); + eCmd->AvailableForStates(Idle); + + rCmd = new G4UIcmdWithADoubleAndUnit("/calor/range",this); + rCmd->SetGuidance("Display the RANGE of Electron for the current material."); + rCmd->SetParameterName("energy",true); + rCmd->SetDefaultValue(10.); + rCmd->SetDefaultUnit("keV"); + rCmd->AvailableForStates(Idle); + + setMaxStepCmd = new G4UIcmdWithADoubleAndUnit("/step/setMaxStep",this); + setMaxStepCmd->SetGuidance("Set max. step length in the detector"); + setMaxStepCmd->SetParameterName("mxStep",true); + setMaxStepCmd->SetDefaultUnit("mm"); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01PhysicsListMessenger::~F01PhysicsListMessenger() +{ + + delete setMaxStepCmd; + + delete cutGCmd; + delete cutECmd; + delete cutPCmd; + delete rCmd; + delete eCmd; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if(command == cutGCmd) + { F01List->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));} + if(command == cutECmd) + { F01List->SetElectronCut(eCmd->GetNewDoubleValue(newValue));} + if(command == cutPCmd) + { F01List->SetProtonCut(eCmd->GetNewDoubleValue(newValue));} + if(command == eCmd) + { F01List->SetCutsByEnergy(cutECmd->GetNewDoubleValue(newValue));} + if(command == rCmd) + { F01List->GetRange(rCmd->GetNewDoubleValue(newValue));} + if(command == setMaxStepCmd) + { F01List->SetMaxStep(setMaxStepCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field01/src/F01PrimaryGeneratorAction.cc b/examples/extended/field/field01/src/F01PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..017330ce1e --- /dev/null +++ b/examples/extended/field/field01/src/F01PrimaryGeneratorAction.cc @@ -0,0 +1,164 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01PrimaryGeneratorAction.cc,v 1.6 2001/11/07 14:33:21 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01PrimaryGeneratorAction.hh" + +#include "F01DetectorConstruction.hh" +#include "F01PrimaryGeneratorMessenger.hh" + +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "Randomize.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + G4String F01PrimaryGeneratorAction::thePrimaryParticleName = "e-" ; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01PrimaryGeneratorAction::F01PrimaryGeneratorAction( + F01DetectorConstruction* F01DC) + : F01Detector(F01DC), rndmFlag("off"), + xvertex(0.), yvertex(0.), zvertex(0.), + vertexdefined(false) +{ + G4int n_particle = 1; + particleGun = new G4ParticleGun(n_particle); + + // create a messenger for this class + gunMessenger = new F01PrimaryGeneratorMessenger(this); + + // default particle kinematic + + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4String particleName; + G4ParticleDefinition* particle + = particleTable->FindParticle(particleName="e-"); + particleGun->SetParticleDefinition(particle); + + thePrimaryParticleName = particle->GetParticleName() ; + + particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,-1.)); + particleGun->SetParticleEnergy(0.5*GeV); + + zvertex = F01Detector->GetAbsorberZpos() -0.5*(F01Detector->GetAbsorberThickness()); + particleGun->SetParticlePosition(G4ThreeVector(xvertex,yvertex,zvertex)); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01PrimaryGeneratorAction::~F01PrimaryGeneratorAction() +{ + delete particleGun; + delete gunMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + // this function is called at the begining of event + // + thePrimaryParticleName = particleGun->GetParticleDefinition()-> + GetParticleName() ; + G4double x0,y0,z0 ; + if(vertexdefined) + { + x0 = xvertex ; + y0 = yvertex ; + z0 = zvertex ; + } + else + { + x0 = 0. ; + y0 = 0. ; + z0 = F01Detector->GetAbsorberZpos()-0.5*(F01Detector->GetAbsorberThickness()); + } + G4double r0,phi0 ; + + if (rndmFlag == "on") + { + r0 = (F01Detector->GetAbsorberRadius())*sqrt(G4UniformRand()); + phi0 = twopi*G4UniformRand(); + x0 = r0*cos(phi0); + y0 = r0*sin(phi0); + } + + particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0)); + particleGun->GeneratePrimaryVertex(anEvent); +} + +/////////////////////////////////////////////////////////////////////// +// +// + +G4String F01PrimaryGeneratorAction::GetPrimaryName() +{ + return thePrimaryParticleName ; +} + +void F01PrimaryGeneratorAction::Setzvertex(G4double z) +{ + vertexdefined = true ; + zvertex = z ; + G4cout << " Z coordinate of the primary vertex = " << zvertex/mm << + " mm." << G4endl; +} +void F01PrimaryGeneratorAction::Setxvertex(G4double x) +{ + vertexdefined = true ; + xvertex = x ; + G4cout << " X coordinate of the primary vertex = " << xvertex/mm << + " mm." << G4endl; +} + +void F01PrimaryGeneratorAction::Setyvertex(G4double y) +{ + vertexdefined = true ; + yvertex = y ; + G4cout << " Y coordinate of the primary vertex = " << yvertex/mm << + " mm." << G4endl; +} + + + + + + + + + + + diff --git a/examples/extended/field/field01/src/F01PrimaryGeneratorMessenger.cc b/examples/extended/field/field01/src/F01PrimaryGeneratorMessenger.cc new file mode 100644 index 0000000000..4f385bcc56 --- /dev/null +++ b/examples/extended/field/field01/src/F01PrimaryGeneratorMessenger.cc @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01PrimaryGeneratorMessenger.cc,v 1.3 2001/10/15 17:20:38 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01PrimaryGeneratorMessenger.hh" + +#include "F01PrimaryGeneratorAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01PrimaryGeneratorMessenger::F01PrimaryGeneratorMessenger(F01PrimaryGeneratorAction* F01Gun) + : F01Action(F01Gun) +{ + RndmCmd = new G4UIcmdWithAString("/gun/random",this); + RndmCmd->SetGuidance("Shoot randomly the incident particle."); + RndmCmd->SetGuidance(" Choice : on, off(default)"); + RndmCmd->SetParameterName("choice",true); + RndmCmd->SetDefaultValue("off"); + RndmCmd->SetCandidates("on off"); + RndmCmd->AvailableForStates(PreInit,Idle); + + setxvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/xvertex",this); + setxvertexCmd->SetGuidance(" Set x coord. of the primary vertex."); + setxvertexCmd->SetParameterName("xv",true); + setxvertexCmd->SetDefaultValue(0.0*mm) ; + + setyvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/yvertex",this); + setyvertexCmd->SetGuidance(" Set y coord. of the primary vertex."); + setyvertexCmd->SetParameterName("yv",true); + setyvertexCmd->SetDefaultValue(0.0*mm) ; + + setzvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/zvertex",this); + setzvertexCmd->SetGuidance(" Set z coord. of the primary vertex."); + setzvertexCmd->SetParameterName("zv",true); + setzvertexCmd->SetDefaultValue(0.0*mm) ; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01PrimaryGeneratorMessenger::~F01PrimaryGeneratorMessenger() +{ + delete RndmCmd; + delete setxvertexCmd; + delete setyvertexCmd; + delete setzvertexCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01PrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if( command == RndmCmd ) + { F01Action->SetRndmFlag(newValue);} + if( command == setxvertexCmd) + { F01Action->Setxvertex(setxvertexCmd->GetNewDoubleValue(newValue));} + if( command == setyvertexCmd) + { F01Action->Setyvertex(setyvertexCmd->GetNewDoubleValue(newValue));} + if( command == setzvertexCmd) + { F01Action->Setzvertex(setzvertexCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field01/src/F01RunAction.cc b/examples/extended/field/field01/src/F01RunAction.cc new file mode 100644 index 0000000000..b67e5e4254 --- /dev/null +++ b/examples/extended/field/field01/src/F01RunAction.cc @@ -0,0 +1,95 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01RunAction.cc,v 1.6 2001/11/07 16:36:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + + +#include "F01RunAction.hh" +#include "F01RunMessenger.hh" + +#include "G4Run.hh" +#include "G4UImanager.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "Randomize.hh" + +////////////////////////////////////////////////////////////////////////////// + +F01RunAction::F01RunAction() + : saveRndm(0) +{ + runMessenger = new F01RunMessenger(this); +} + +//////////////////////////////////////////////////////////////////////////// + +F01RunAction::~F01RunAction() +{ + delete runMessenger; +} + +///////////////////////////////////////////////////////////////////////////// + +void F01RunAction::BeginOfRunAction(const G4Run* aRun) +{ + G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; + + // save Rndm status + if (saveRndm > 0) + { + HepRandom::showEngineStatus(); + HepRandom::saveEngineStatus("beginOfRun.rndm"); + } + G4UImanager* UI = G4UImanager::GetUIpointer(); + + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) UI->ApplyCommand("/vis/scene/notifyHandlers"); +} + +///////////////////////////////////////////////////////////////////////////// + +void F01RunAction::EndOfRunAction(const G4Run* aRun) +{ + if (G4VVisManager::GetConcreteInstance()) + { + G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); + } + + // save Rndm status + + if (saveRndm == 1) + { + HepRandom::showEngineStatus(); + HepRandom::saveEngineStatus("endOfRun.rndm"); + } +} + +// +// +//////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm1/src/Em1RunActionMessenger.cc b/examples/extended/field/field01/src/F01RunMessenger.cc similarity index 81% rename from examples/extended/electromagnetic/TestEm1/src/Em1RunActionMessenger.cc rename to examples/extended/field/field01/src/F01RunMessenger.cc index 4728c67fa6..3513931f53 100644 --- a/examples/extended/electromagnetic/TestEm1/src/Em1RunActionMessenger.cc +++ b/examples/extended/field/field01/src/F01RunMessenger.cc @@ -21,29 +21,29 @@ // ******************************************************************** // // -// $Id: Em1RunActionMessenger.cc,v 1.3.2.1 2001/06/28 19:06:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: F01RunMessenger.cc,v 1.3 2001/10/15 17:20:38 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#include "Em1RunActionMessenger.hh" -#include "Em1RunAction.hh" +#include "F01RunMessenger.hh" +#include "F01RunAction.hh" #include "G4UIdirectory.hh" -#include "G4UIcmdWithAString.hh" #include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -Em1RunActionMessenger::Em1RunActionMessenger(Em1RunAction* run) -:Em1Run(run) -{ +F01RunMessenger::F01RunMessenger(F01RunAction* RA) + : runAction (RA) +{ RndmDir = new G4UIdirectory("/rndm/"); RndmDir->SetGuidance("Rndm status control."); @@ -51,8 +51,8 @@ Em1RunActionMessenger::Em1RunActionMessenger(Em1RunAction* run) RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files."); RndmSaveCmd->SetGuidance("freq = 0 not saved"); RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq > 0 saved on: endOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq = 2 saved on: beginOfEvent.rndm"); + RndmSaveCmd->SetGuidance("freq = 1 saved on: endOfRun.rndm"); + RndmSaveCmd->SetGuidance("freq = 2 saved on: endOfEvent.rndm"); RndmSaveCmd->SetParameterName("frequency",false); RndmSaveCmd->SetRange("frequency>=0 && frequency<=2"); RndmSaveCmd->AvailableForStates(PreInit,Idle); @@ -61,26 +61,26 @@ Em1RunActionMessenger::Em1RunActionMessenger(Em1RunAction* run) RndmReadCmd->SetGuidance("get rndm status from an external file."); RndmReadCmd->SetParameterName("fileName",true); RndmReadCmd->SetDefaultValue ("beginOfRun.rndm"); - RndmReadCmd->AvailableForStates(PreInit,Idle); + RndmReadCmd->AvailableForStates(PreInit,Idle); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -Em1RunActionMessenger::~Em1RunActionMessenger() -{ +F01RunMessenger::~F01RunMessenger() +{ delete RndmSaveCmd; delete RndmReadCmd; delete RndmDir; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void Em1RunActionMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +void F01RunMessenger::SetNewValue(G4UIcommand* command,G4String newValues) { if (command == RndmSaveCmd) - Em1Run->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValue)); + runAction->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValues)); if (command == RndmReadCmd) - { G4cout << "\n---> rndm status restored from file: " << newValue << G4endl; - HepRandom::restoreEngineStatus(newValue); + { G4cout << "\n---> rndm status restored from file: " << newValues << G4endl; + HepRandom::restoreEngineStatus(newValues); HepRandom::showEngineStatus(); } } diff --git a/examples/extended/field/field01/src/F01StepCut.cc b/examples/extended/field/field01/src/F01StepCut.cc new file mode 100644 index 0000000000..f51ed506e8 --- /dev/null +++ b/examples/extended/field/field01/src/F01StepCut.cc @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01StepCut.cc,v 1.2 2001/07/11 09:58:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "F01StepCut.hh" + +#include "G4Step.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + +F01StepCut::F01StepCut(const G4String& aName) + : G4VDiscreteProcess(aName),MaxChargedStep(DBL_MAX) +{ + if (verboseLevel>0) { + G4cout << GetProcessName() << " is created "<< G4endl; + } +} + +F01StepCut::~F01StepCut() +{ +} + +F01StepCut::F01StepCut(F01StepCut& right) + :G4VDiscreteProcess(right) +{} + +void F01StepCut::SetMaxStep(G4double step) +{ + MaxChargedStep = step ; +} + + diff --git a/examples/extended/field/field01/src/F01SteppingAction.cc b/examples/extended/field/field01/src/F01SteppingAction.cc new file mode 100644 index 0000000000..d5a09a3228 --- /dev/null +++ b/examples/extended/field/field01/src/F01SteppingAction.cc @@ -0,0 +1,58 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01SteppingAction.cc,v 1.5 2001/11/07 16:36:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01SteppingAction.hh" +#include "F01SteppingMessenger.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01SteppingAction::F01SteppingAction() + : steppingMessenger(0) +{ + steppingMessenger = new F01SteppingMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01SteppingAction::~F01SteppingAction() +{ + delete steppingMessenger ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01SteppingAction::UserSteppingAction(const G4Step*) +{ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field01/src/F01SteppingMessenger.cc b/examples/extended/field/field01/src/F01SteppingMessenger.cc new file mode 100644 index 0000000000..4426c813de --- /dev/null +++ b/examples/extended/field/field01/src/F01SteppingMessenger.cc @@ -0,0 +1,60 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01SteppingMessenger.cc,v 1.2 2001/07/11 09:58:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F01SteppingMessenger.hh" + +#include "F01SteppingAction.hh" +#include "G4UIdirectory.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01SteppingMessenger::F01SteppingMessenger(F01SteppingAction* SA) +:steppingAction (SA) +{ + steppingDir = new G4UIdirectory("/stepping/"); + steppingDir->SetGuidance("stepping control"); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01SteppingMessenger::~F01SteppingMessenger() +{ + delete steppingDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01SteppingMessenger::SetNewValue(G4UIcommand* command,G4String newValues) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/examples/extended/field/field01/src/F01SteppingVerbose.cc b/examples/extended/field/field01/src/F01SteppingVerbose.cc new file mode 100644 index 0000000000..4e19fb40a3 --- /dev/null +++ b/examples/extended/field/field01/src/F01SteppingVerbose.cc @@ -0,0 +1,184 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01SteppingVerbose.cc,v 1.4 2001/10/15 17:20:38 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +#include "F01SteppingVerbose.hh" + +#include "G4SteppingManager.hh" +#include "G4UnitsTable.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +F01SteppingVerbose::F01SteppingVerbose() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +F01SteppingVerbose::~F01SteppingVerbose() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void F01SteppingVerbose::StepInfo() +{ + CopyState(); + + G4int prec = G4cout.precision(8); + + if( verboseLevel >= 1 ){ + if( verboseLevel >= 4 ) VerboseTrack(); + if( verboseLevel >= 3 ){ + G4cout << G4endl; + G4cout << G4std::setw( 5) << "#Step#" << " " + << G4std::setw(10) << "X" << " " + << G4std::setw(10) << "Y" << " " + << G4std::setw(10) << "Z" << " " + << G4std::setw(10) << "KineE" << " " + << G4std::setw(10) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "NextVolu" + << G4std::setw(10) << "Process" + << G4std::setw(10) << "Dir_x" << " " + << G4std::setw(10) << "Dir_y" << " " + << G4std::setw(10) << "Dir_z" << " " + << G4endl; + } + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(10) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if( fTrack->GetNextVolume() != 0 ) { + G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); + } else { + G4cout << G4std::setw(10) << "OutOfWorld"; + } + + if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){ + G4cout << " " + << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName(); + } else { + G4cout << " UserLimit"; + } + + G4cout << G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().x(),"Length") + << G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().y(),"Length") + << G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().z(),"Length"); + + G4cout << G4endl; + + if( verboseLevel == 2 ){ + G4int tN2ndariesTot = fN2ndariesAtRestDoIt + + fN2ndariesAlongStepDoIt + + fN2ndariesPostStepDoIt; + if(tN2ndariesTot>0){ + G4cout << " :----- List of 2ndaries - " + << "#SpawnInStep=" << G4std::setw(3) << tN2ndariesTot + << "(Rest=" << G4std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt + << "), " + << "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).size() + << " ---------------" + << G4endl; + + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; + lp1<(*fSecondary).size(); lp1++) + { + G4cout << " : " + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") + << G4std::setw(10) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName(); + G4cout << G4endl; + } + + G4cout << " :-----------------------------" + << "----------------------------------" + << "-- EndOf2ndaries Info ---------------" + << G4endl; + } + } + + } + G4cout.precision(prec); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void F01SteppingVerbose::TrackingStarted() +{ + + CopyState(); +G4int prec = G4cout.precision(3); + if( verboseLevel > 0 ){ + + G4cout << G4std::setw( 5) << "Step#" << " " + << G4std::setw( 6) << "X" << " " + << G4std::setw( 6) << "Y" << " " + << G4std::setw( 6) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 9) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "Volume" << " " + << G4std::setw(10) << "Process" << G4endl; + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if(fTrack->GetNextVolume()){ + G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); + } else { + G4cout << G4std::setw(10) << "OutOfWorld"; + } + G4cout << " initStep" << G4endl; + } + G4cout.precision(prec); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... diff --git a/examples/extended/field/field01/src/F01VisManager.cc b/examples/extended/field/field01/src/F01VisManager.cc new file mode 100644 index 0000000000..7319e68406 --- /dev/null +++ b/examples/extended/field/field01/src/F01VisManager.cc @@ -0,0 +1,153 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F01VisManager.cc,v 1.3 2001/12/12 15:22:30 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 24th January 1998. + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifdef G4VIS_USE + +#include "F01VisManager.hh" + +// Supported drivers... + +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN +#include "G4FukuiRenderer.hh" +#endif + +#ifdef G4VIS_USE_OPACS +#include "G4Wo.hh" +#include "G4Xo.hh" +#endif + +#ifdef G4VIS_USE_OPENGLX +#include "G4OpenGLImmediateX.hh" +#include "G4OpenGLStoredX.hh" +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 +#include "G4OpenGLImmediateWin32.hh" +#include "G4OpenGLStoredWin32.hh" +#endif + +#ifdef G4VIS_USE_OPENGLXM +#include "G4OpenGLImmediateXm.hh" +#include "G4OpenGLStoredXm.hh" +#endif + +#ifdef G4VIS_USE_OIX +#include "G4OpenInventorX.hh" +#endif + +#ifdef G4VIS_USE_OIWIN32 +#include "G4OpenInventorWin32.hh" +#endif + +#ifdef G4VIS_USE_VRML +#include "G4VRML1.hh" +#include "G4VRML2.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F01VisManager::F01VisManager () {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F01VisManager::RegisterGraphicsSystems () { + + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN + RegisterGraphicsSystem (new G4FukuiRenderer); +#endif + +#ifdef G4VIS_USE_OPACS + RegisterGraphicsSystem (new G4Wo); + RegisterGraphicsSystem (new G4Xo); +#endif + +#ifdef G4VIS_USE_OPENGLX + RegisterGraphicsSystem (new G4OpenGLImmediateX); + RegisterGraphicsSystem (new G4OpenGLStoredX); +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 + RegisterGraphicsSystem (new G4OpenGLImmediateWin32); + RegisterGraphicsSystem (new G4OpenGLStoredWin32); +#endif + +#ifdef G4VIS_USE_OPENGLXM + RegisterGraphicsSystem (new G4OpenGLImmediateXm); + RegisterGraphicsSystem (new G4OpenGLStoredXm); +#endif + +#ifdef G4VIS_USE_OIX + RegisterGraphicsSystem (new G4OpenInventorX); +#endif + +#ifdef G4VIS_USE_OIWIN32 + RegisterGraphicsSystem (new G4OpenInventorWin32); +#endif + +#ifdef G4VIS_USE_VRML + RegisterGraphicsSystem (new G4VRML1); + RegisterGraphicsSystem (new G4VRML2); +#endif + + if (fVerbose > 0) { + G4cout << + "\nYou have successfully chosen to use the following graphics systems." + << G4endl; + PrintAvailableGraphicsSystems (); + } +} + +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field02/GNUmakefile b/examples/extended/field/field02/GNUmakefile new file mode 100644 index 0000000000..5d8b17a8d7 --- /dev/null +++ b/examples/extended/field/field02/GNUmakefile @@ -0,0 +1,19 @@ +# $Id: GNUmakefile,v 1.3 2001/10/15 17:20:39 gcosmo Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := field02 +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../../.. +endif + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/architecture.gmk + +include $(G4INSTALL)/config/binmake.gmk diff --git a/examples/extended/field/field02/History b/examples/extended/field/field02/History new file mode 100644 index 0000000000..fb0d9f81c4 --- /dev/null +++ b/examples/extended/field/field02/History @@ -0,0 +1,33 @@ +$Id: History,v 1.6 2001/12/04 18:43:41 gcosmo Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + field02 History file + ------------------------ +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +Dec 4th, 2001 - G.Cosmo (field02-V03-02-01) +----------------------- +- Fix in F02ElectroMagneticField.hh for compilation on Win/VC++. + +Nov 13th, 2001 - V.Grichine (field02-V03-02-00) +--------------------------- +- Added number of variables to steppers in F02ElectroMagneticField.cc. + Coworks with tag "field-V03-02-03" of geometry/magneticfield. + +Nov 7th, 2001 - G.Cosmo +----------------------- +- More cleanup and fixes to primary generator gun (V.Grichine). + +Oct 15th, 2001 - G.Cosmo +------------------------ +- Cleaned from test code. diff --git a/examples/extended/field/field02/README b/examples/extended/field/field02/README new file mode 100644 index 0000000000..44940420fb --- /dev/null +++ b/examples/extended/field/field02/README @@ -0,0 +1,79 @@ +$Id: README,v 1.3 2001/10/25 09:30:12 grichine Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + field02 + ------- + + Test for investigation of tracking in electric field + and field dependent electromagnetic processes. + + + 1- GEOMETRY DEFINITION + + The "absorber" is a solid made of a given material. + + Three parameters define the absorber : + - the material of the absorber, + - the thickness of an absorber, + - the transverse size of the absorber (the input face is a square). + + The volume "World" contains the "absorber". + In this test the parameters of the "World" can be changed , too. + + In addition a transverse uniform magnetic field can be applied. + + The default geometry is constructed in DetectorConstruction class, + but all the parameters can be changed via + the commands defined in the DetectorMessenger class. + + 2- AN EVENT : THE PRIMARY GENERATOR + + The primary kinematic consists of a single particle which hits the + absorber perpendicular to the input face. The type of the particle + and its energy are set in the PrimaryGeneratorAction class, and can + be changed via the G4 build-in commands of ParticleGun class (see + the macros provided with this example). + + A RUN is a set of events. + + 3- DETECTOR RESPONSE + + + A HIT is a record, event per event , of all the + informations needed to simulate and analyse the detector response. + + In this example a CalorHit is defined as a set of 2 informations: + - the total energy deposit in the absorber, + - the total tracklength of all charged particles in the absorber, + + Therefore the absorber is declared + 'sensitive detector' (SD), which means they can contribute to the hit. + + 4- PHYSICS DEMO + + The particle's type and the physic processes which will be available + in this example are set in PhysicsList class. + + The messenger classes introduce interactive commands . Using these + commands the geometry of the detector, the data of the primary + particle, etc. can be changed. + + + 5- HOW TO START ? + + - compile and link to generate an executable + % cd $G4INSTALL/example/extended/field/field02 + % gmake + + - execute field01 in 'batch' mode from macro file e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/field02 field02.in + + - execute field01 in 'interactive' mode with visualization e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/field02 + .... + Idle> type your commands + .... diff --git a/examples/extended/field/field02/field02.cc b/examples/extended/field/field02/field02.cc new file mode 100644 index 0000000000..69b852fbed --- /dev/null +++ b/examples/extended/field/field02/field02.cc @@ -0,0 +1,136 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: field02.cc,v 1.4 2001/11/07 16:36:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 - TestF02 +// +// -------------------------------------------------------------- +// Comments +// +// +// -------------------------------------------------------------- + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "Randomize.hh" + +#ifdef G4VIS_USE +#include "F02VisManager.hh" +#endif + +#include "F02DetectorConstruction.hh" +#include "F02ElectroMagneticField.hh" +#include "F02PhysicsList.hh" +#include "F02PrimaryGeneratorAction.hh" +#include "F02RunAction.hh" +#include "F02EventAction.hh" +#include "F02SteppingAction.hh" +#include "F02SteppingVerbose.hh" + +int main(int argc,char** argv) +{ + + //choose the Random engine + + HepRandom::setTheEngine(new RanecuEngine); + + //my Verbose output class + + G4VSteppingVerbose::SetInstance(new F02SteppingVerbose); + + // Construct the default run manager + + G4RunManager * runManager = new G4RunManager; + + // Construct the electro magnetic field + + F02ElectroMagneticField* field = new F02ElectroMagneticField() ; + + // Set mandatory initialization classes + + F02DetectorConstruction* detector; + detector = new F02DetectorConstruction; + runManager->SetUserInitialization(detector); + runManager->SetUserInitialization(new F02PhysicsList(detector)); + +#ifdef G4VIS_USE + + // visualization manager + + G4VisManager* visManager = new F02VisManager; + visManager->Initialize(); + +#endif + + // Set user action classes + + runManager->SetUserAction(new F02PrimaryGeneratorAction(detector)); + + F02RunAction* runAction = new F02RunAction; + + runManager->SetUserAction(runAction); + + F02EventAction* eventAction = new F02EventAction(runAction); + + runManager->SetUserAction(eventAction); + + F02SteppingAction* steppingAction = new F02SteppingAction(); + runManager->SetUserAction(steppingAction); + + // Initialize G4 kernel, physics tables ... + + runManager->Initialize(); + + // get the pointer to the User Interface manager + + G4UImanager* UI = G4UImanager::GetUIpointer(); + + if (argc==1) // Define UI terminal for interactive mode + { + G4UIsession * session = new G4UIterminal; + session->SessionStart(); + delete session; + } + else // Batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + // job termination + +#ifdef G4VIS_USE + delete visManager; +#endif + delete field; + delete runManager; + + return 0; +} + diff --git a/examples/extended/field/field02/field02.in b/examples/extended/field/field02/field02.in new file mode 100644 index 0000000000..84da3e96b0 --- /dev/null +++ b/examples/extended/field/field02/field02.in @@ -0,0 +1,25 @@ +# +# Macro file for the initialization phase of field02. +# +# It creates the default geometry (simple absorber cylinder ) +# +/tracking/verbose 1 +/run/verbose 1 +# +# +# +/field/setStepperType 4 +/field/setMinStep 10 mm +# +/field/update +# +/run/initialize +# +/run/particle/dumpCutValues +# +/gun/particle e- +/gun/energy 50.0 MeV +# +/event/printModulo 50 +/run/beamOn 100 +# diff --git a/examples/extended/field/field02/field02.out b/examples/extended/field/field02/field02.out new file mode 100644 index 0000000000..8b99e9a45f --- /dev/null +++ b/examples/extended/field/field02/field02.out @@ -0,0 +1,3352 @@ +********************************************** + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) + Copyright : Geant4 Collaboration +********************************************** +G4ClassicalRK4 (default) is called +The minimal step is equal to 1 mm +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + DAWNFILE (DAWNFILE) + VRML1FILE (VRML1FILE) + +***** Table : Nb of materials = 11 ***** + + Material: Mylar density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 19.770 cm + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 48.42 % Abundance 18.18 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 45.47 % Abundance 45.45 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 6.11 % Abundance 36.36 % + + Material: Polypropelene density: 910.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.167 cm + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + + Material: Kr density: 3.700 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 30.736 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Argon density: 1.784 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 109.604 m + ---> Element: Argon Ar Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: N2 density: 1.251 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.846 m + ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: O2 density: 1.429 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 239.621 m + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Air density: 1.293 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 283.293 m + ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 75.57 % Abundance 78.48 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 23.15 % Abundance 21.05 % + ---> Element: Argon Ar Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 1.28 % Abundance 0.47 % + + Material: Xenon density: 5.858 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.478 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 158.123 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 15.81 % Abundance 33.33 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 84.19 % Abundance 66.67 % + + Material: Xe20CO2 density: 5.082 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.695 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 92.20 % Abundance 53.29 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.23 % Abundance 15.57 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 6.57 % Abundance 31.14 % + + Material: Kr20CO2 density: 3.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 33.957 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 89.00 % Abundance 55.02 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.74 % Abundance 14.99 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 9.26 % Abundance 29.99 % + + + + The WORLD is made of 800mm of Air, the transverse size (R) of the world is 200 mm. + The ABSORBER is made of 40mm of Kr20CO2, the transverse size (R) is 100 mm. + Z position of the (middle of the) absorber 360 mm. + +F02PhysicsList::SetCuts:CutLength : 1 mm + +phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z + Sandia crossSection below 50 KeV + PhysicsTables from 50 keV to 50 MeV in 100 bins. + +compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. + +conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. + e+e- energies according Bethe-Heitler + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. + +eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. + Good description from 1 KeV to 100 GeV. + log scale extrapolation above 100 GeV + Gamma energy sampled from a parametrised formula. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +msc: Tables of transport mean free paths. + New model of MSC , computes the lateral + displacement of the particle , too. + PhysicsTables from 100 eV to 100 TeV in 100 bins. + +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +MuBrems: theoretical cross section + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +MuPairProd: theoretical cross sections + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +msc: Tables of transport mean free paths. + New model of MSC , computes the lateral + displacement of the particle , too. + PhysicsTables from 100 eV to 100 TeV in 100 bins. + +hIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +total time(SetCuts)=18.52 s +G4ClassicalRK4 (default) is called +The minimal step is equal to 10 mm +============= The cut Energy ============================== + gamma e- +Cut in range + Mylar 1 mm 1 mm + Polypropelene 1 mm 1 mm + Kr 1 mm 1 mm + Argon 1 mm 1 mm + N2 1 mm 1 mm + O2 1 mm 1 mm + Air 1 mm 1 mm + Xenon 1 mm 1 mm + CO2 1 mm 1 mm + Xe20CO2 1 mm 1 mm + Kr20CO2 1 mm 1 mm +Cut in energy + Mylar 3.48 keV 541 keV + Polypropelene 2.75 keV 502 keV + Kr 990 eV 1.07 keV + Argon 990 eV 990 eV + N2 990 eV 990 eV + O2 990 eV 990 eV + Air 990 eV 990 eV + Xenon 990 eV 1.95 keV + CO2 990 eV 990 eV + Xe20CO2 990 eV 1.67 keV + Kr20CO2 990 eV 1.09 keV +=================================================== +### Run 0 start. +Start Run processing. + +---> Begin of Event: 0 + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -14.8 cm 2.07 cm 1.53 GeV 75.6 keV 18.6 cm 18.6 cm World eIoni + 2 -899 nm -17.9 cm 2.17 cm 1.84 GeV 14.4 keV 3.05 cm 21.7 cm World eIoni + 3 -1.23 mum -20 cm 2.22 cm 2.05 GeV 10.4 keV 2.13 cm 23.8 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -899 nm -17.9 cm 2.17 cm 1.02 keV 0 eV 0 fm 0 fm World initStep + 1 -899 nm -17.9 cm 2.17 cm 0 eV 2.04 keV 59.9 mum 59.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -14.8 cm 2.07 cm 3.32 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -14.8 cm 2.07 cm 0 eV 5.12 keV 300 mum 300 mum World eIoni + 2 0 fm -14.8 cm 2.07 cm 0 eV 0 eV 0 fm 300 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -18.2 cm 2.18 cm 1.87 GeV 91.8 keV 22.2 cm 22.2 cm World eIoni + 2 -378 nm -20 cm 2.22 cm 2.05 GeV 5.14 keV 1.77 cm 24 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -18.2 cm 2.18 cm 1.81 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -18.2 cm 2.18 cm 0 eV 3.63 keV 135 mum 135 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -4.16 cm 1.47 cm 466 MeV 30.2 keV 7.32 cm 7.32 cm World eIoni + 2 4.55 mum -20 cm 2.22 cm 2.05 GeV 60.2 keV 15.9 cm 23.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -4.16 cm 1.47 cm 1.03 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -4.16 cm 1.47 cm 0 eV 2.05 keV 60.4 mum 60.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.76 cm 1.82 cm 926 MeV 41.4 keV 11.4 cm 11.4 cm World eIoni + 2 1.11 mum -12.6 cm 1.99 cm 1.31 GeV 17.8 keV 3.82 cm 15.3 cm World eIoni + 3 51 nm -20 cm 2.22 cm 2.05 GeV 29.4 keV 7.42 cm 22.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 1.11 mum -12.6 cm 1.99 cm 4.9 keV 0 eV 0 fm 0 fm World initStep + 1 1.11 mum -12.6 cm 1.99 cm 835 eV 4.06 keV 412 mum 412 mum World eIoni + 2 1.11 mum -12.6 cm 1.99 cm 0 eV 1.67 keV 46.6 mum 459 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.76 cm 1.82 cm 12.3 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.76 cm 1.82 cm 8.74 keV 3.55 keV 1.04 mm 1.04 mm World eIoni + 2 0 fm -8.76 cm 1.82 cm 5.68 keV 3.06 keV 695 mum 1.73 mm World eIoni + 3 0 fm -8.76 cm 1.82 cm 3.6 keV 1.09 keV 146 mum 1.88 mm World eIoni + 4 0 fm -8.76 cm 1.82 cm 0 eV 4.26 keV 323 mum 2.2 mm World eIoni + 5 0 fm -8.76 cm 1.82 cm 0 eV 0 eV 0 fm 2.2 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.76 cm 1.82 cm 992 eV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.76 cm 1.82 cm 0 eV 1.98 keV 57.8 mum 57.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.8 mm 8.41 mm 138 MeV 5.96 keV 1.29 cm 1.29 cm World eIoni + 2 7.03 mum -18.2 cm 2.17 cm 1.87 GeV 70.1 keV 17.4 cm 18.7 cm World eIoni + 3 7.12 mum -20 cm 2.22 cm 2.05 GeV 7.42 keV 1.82 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 7.03 mum -18.2 cm 2.17 cm 2.2 keV 0 eV 0 fm 0 fm World initStep + 1 7.03 mum -18.2 cm 2.17 cm 0 eV 4.41 keV 182 mum 182 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.8 mm 8.41 mm 1.78 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.8 mm 8.41 mm 0 eV 3.55 keV 131 mum 131 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.01 cm 1.83 cm 951 MeV 47.9 keV 13.4 cm 13.4 cm World eIoni + 2 2.16 mum -20 cm 2.22 cm 2.05 GeV 50.9 keV 11 cm 24.4 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -9.01 cm 1.83 cm 1.07 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.01 cm 1.83 cm 0 eV 2.13 keV 63.4 mum 63.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 99.2 keV 24.5 cm 24.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.6 cm 1.26 cm 310 MeV 14.4 keV 4.66 cm 4.66 cm World eIoni + 2 -3.14 mum -20 cm 2.22 cm 2.05 GeV 73.4 keV 17.4 cm 22.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -2.6 cm 1.26 cm 1.56 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.6 cm 1.26 cm 0 eV 3.12 keV 108 mum 108 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.6 cm 1.26 cm 310 MeV 21.9 keV 4.66 cm 4.66 cm World eIoni + 2 632 nm -20 cm 2.22 cm 2.05 GeV 67.9 keV 17.4 cm 22.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -2.6 cm 1.26 cm 1.48 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.6 cm 1.26 cm 0 eV 2.96 keV 99.8 mum 99.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 91.2 keV 24.5 cm 24.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -490 mum 2.21 mm 54.9 MeV 885 eV 2.28 mm 2.28 mm World eIoni + 2 -8.97 mum -3.6 cm 1.41 cm 410 MeV 13.7 keV 3.85 cm 4.08 cm World eIoni + 3 -20.5 mum -15 cm 2.08 cm 1.55 GeV 45.9 keV 11.4 cm 15.5 cm World eIoni + 4 -22.1 mum -16.9 cm 2.14 cm 1.74 GeV 7.85 keV 1.91 cm 17.4 cm World eIoni + 5 -24.1 mum -20 cm 2.22 cm 2.05 GeV 14.5 keV 3.11 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -22.1 mum -16.9 cm 2.14 cm 2.83 keV 0 eV 0 fm 0 fm World initStep + 1 -22.1 mum -16.9 cm 2.14 cm 0 eV 3 keV 141 mum 141 mum World eIoni + 2 -22.1 mum -16.9 cm 2.14 cm 0 eV 0 eV 0 fm 141 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -20.5 mum -15 cm 2.08 cm 3.42 keV 0 eV 0 fm 0 fm World initStep + 1 -20.5 mum -15 cm 2.08 cm 0 eV 5.03 keV 309 mum 309 mum World eIoni + 2 -20.5 mum -15 cm 2.08 cm 0 eV 0 eV 0 fm 309 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -8.97 mum -3.6 cm 1.41 cm 2.51 keV 0 eV 0 fm 0 fm World initStep + 1 -8.97 mum -3.6 cm 1.41 cm 0 eV 4.22 keV 222 mum 222 mum World eIoni + 2 -8.97 mum -3.6 cm 1.41 cm 0 eV 0 eV 0 fm 222 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -490 mum 2.21 mm 3.04 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -490 mum 2.21 mm 0 eV 4.57 keV 277 mum 277 mum World eIoni + 2 0 fm -490 mum 2.21 mm 0 eV 0 eV 0 fm 277 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -14.1 mum 377 mum 50.1 MeV 56.4 eV 378 mum 378 mum World eIoni + 2 995 nm -9.27 mm 8.6 mm 143 MeV 6.35 keV 1.3 cm 1.34 cm World eIoni + 3 2.96 mum -2.4 cm 1.23 cm 289 MeV 6.97 keV 1.52 cm 2.86 cm World eIoni + 4 -1.8 mum -20 cm 2.22 cm 2.05 GeV 81.2 keV 17.6 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.96 mum -2.4 cm 1.23 cm 5.26 keV 0 eV 0 fm 0 fm World initStep + 1 2.96 mum -2.4 cm 1.23 cm 817 eV 4.45 keV 438 mum 438 mum World eIoni + 2 2.96 mum -2.4 cm 1.23 cm 0 eV 1.63 keV 45.3 mum 483 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 995 nm -9.27 mm 8.6 mm 1.11 keV 0 eV 0 fm 0 fm World initStep + 1 995 nm -9.27 mm 8.6 mm 0 eV 2.23 keV 67.1 mum 67.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -14.1 mum 377 mum 3.23 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -14.1 mum 377 mum 0 eV 5.62 keV 293 mum 293 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.04 mm 7.67 mm 120 MeV 10.2 keV 2.05 cm 2.05 cm World eIoni + 2 1.34 mum -4.46 cm 1.5 cm 496 MeV 13.3 keV 3.84 cm 5.89 cm World eIoni + 3 686 nm -6.22 cm 1.66 cm 672 MeV 7.44 keV 1.76 cm 7.65 cm World eIoni + 4 -1.14 mum -20 cm 2.21 cm 2.05 GeV 66 keV 13.8 cm 21.4 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 686 nm -6.22 cm 1.66 cm 1.85 keV 0 eV 0 fm 0 fm World initStep + 1 686 nm -6.22 cm 1.66 cm 0 eV 3.71 keV 139 mum 139 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 1.34 mum -4.46 cm 1.5 cm 1.6 keV 0 eV 0 fm 0 fm World initStep + 1 1.34 mum -4.46 cm 1.5 cm 0 eV 3.21 keV 112 mum 112 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -7.04 mm 7.67 mm 1.09 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.04 mm 7.67 mm 0 eV 2.18 keV 65.1 mum 65.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -11.6 cm 1.95 cm 1.21 GeV 57.8 keV 15.7 cm 15.7 cm World eIoni + 2 -2.85 mum -19 cm 2.19 cm 1.95 GeV 31.8 keV 7.42 cm 23.1 cm World eIoni + 3 -3 mum -20 cm 2.22 cm 2.05 GeV 3.72 keV 1.03 cm 24.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.85 mum -19 cm 2.19 cm 2.28 keV 0 eV 0 fm 0 fm World initStep + 1 -2.85 mum -19 cm 2.19 cm 0 eV 4.57 keV 192 mum 192 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -11.6 cm 1.95 cm 4.32 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -11.6 cm 1.95 cm 0 eV 4.92 keV 375 mum 375 mum World eIoni + 2 0 fm -11.6 cm 1.95 cm 0 eV 0 eV 0 fm 375 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.75 cm 1.43 cm 425 MeV 26.2 keV 6.75 cm 6.75 cm World eIoni + 2 -1.99 mum -9 cm 1.83 cm 950 MeV 22.6 keV 5.27 cm 12 cm World eIoni + 3 -1.87 mum -9.84 cm 1.87 cm 1.03 GeV 4.82 keV 8.38 mm 12.9 cm World eIoni + 4 -1.83 mum -10 cm 1.88 cm 1.05 GeV 1.08 keV 1.6 mm 13 cm World eIoni + 5 704 nm -16.4 cm 2.12 cm 1.69 GeV 29.8 keV 6.44 cm 19.5 cm World eIoni + 6 -411 nm -20 cm 2.22 cm 2.05 GeV 16.9 keV 3.57 cm 23 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 704 nm -16.4 cm 2.12 cm 12.2 keV 0 eV 0 fm 0 fm World initStep + 1 704 nm -16.4 cm 2.12 cm 7.74 keV 4.45 keV 1.03 mm 1.03 mm World eIoni + 2 704 nm -16.4 cm 2.12 cm 4.04 keV 2.46 keV 404 mum 1.43 mm World eIoni + 3 704 nm -16.4 cm 2.12 cm 0 eV 4.45 keV 355 mum 1.78 mm World eIoni + 4 704 nm -16.4 cm 2.12 cm 0 eV 0 eV 0 fm 1.78 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 6 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 704 nm -16.4 cm 2.12 cm 1.24 keV 0 eV 0 fm 0 fm World initStep + 1 704 nm -16.4 cm 2.12 cm 0 eV 2.48 keV 77.8 mum 77.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.83 mum -10 cm 1.88 cm 1.21 keV 0 eV 0 fm 0 fm World initStep + 1 -1.83 mum -10 cm 1.88 cm 0 eV 2.41 keV 75 mum 75 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.87 mum -9.84 cm 1.87 cm 1.26 keV 0 eV 0 fm 0 fm World initStep + 1 -1.87 mum -9.84 cm 1.87 cm 0 eV 2.52 keV 79.4 mum 79.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.99 mum -9 cm 1.83 cm 4.43 keV 0 eV 0 fm 0 fm World initStep + 1 -1.99 mum -9 cm 1.83 cm 760 eV 3.67 keV 382 mum 382 mum World eIoni + 2 -1.99 mum -9 cm 1.83 cm 0 eV 1.52 keV 41.5 mum 424 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -3.75 cm 1.43 cm 1.23 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.75 cm 1.43 cm 0 eV 2.47 keV 77.4 mum 77.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.57 mm 7.45 mm 116 MeV 13.6 keV 2.48 cm 2.48 cm World eIoni + 2 19 mum -20 cm 2.22 cm 2.05 GeV 81.2 keV 20.4 cm 22.9 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -6.57 mm 7.45 mm 6.17 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.57 mm 7.45 mm 3.2 keV 2.97 keV 499 mum 499 mum World eIoni + 2 0 fm -6.57 mm 7.45 mm 0 eV 5.73 keV 290 mum 789 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -13.8 cm 2.04 cm 1.43 GeV 59.6 keV 17.5 cm 17.5 cm World eIoni + 2 -1.53 mum -20 cm 2.21 cm 2.05 GeV 26 keV 6.23 cm 23.8 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -13.8 cm 2.04 cm 2.1 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -13.8 cm 2.04 cm 0 eV 4.2 keV 169 mum 169 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.32 mm 8.22 mm 133 MeV 5.83 keV 1.77 cm 1.77 cm World eIoni + 2 5.93 mum -3.54 cm 1.4 cm 404 MeV 13.6 keV 2.78 cm 4.55 cm World eIoni + 3 17.6 mum -20 cm 2.22 cm 2.05 GeV 70.6 keV 16.5 cm 21 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 5.93 mum -3.54 cm 1.4 cm 1.34 keV 0 eV 0 fm 0 fm World initStep + 1 5.93 mum -3.54 cm 1.4 cm 0 eV 2.68 keV 86.7 mum 86.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.32 mm 8.22 mm 3.95 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.32 mm 8.22 mm 1.61 keV 1.11 keV 142 mum 142 mum World eIoni + 2 0 fm -8.32 mm 8.22 mm 0 eV 3.23 keV 113 mum 256 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.32 mm 8.22 mm 1.22 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.32 mm 8.22 mm 0 eV 2.44 keV 76.1 mum 76.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.34 mm 8.23 mm 133 MeV 6.32 keV 1.66 cm 1.66 cm World eIoni + 2 10.9 mum -20.1 cm 2.22 cm 2.06 GeV 79.1 keV 19.4 cm 21.1 cm World eIoni + 3 10.9 mum -20.1 cm 2.22 cm 2.06 GeV 0 eV 0 fm 21.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 10.9 mum -20.1 cm 2.22 cm 1.59 keV 0 eV 0 fm 0 fm World initStep + 1 10.9 mum -20.1 cm 2.22 cm 0 eV 1.98 keV 55.2 mum 55.2 mumOutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.34 mm 8.23 mm 52.6 keV 0 eV 0 fm 0 fm World initStep + 1 -4.53 mum -8.38 mm 8.25 mm 401 keV 13 keV 1.01 cm 1.01 cm World eIoni + 2 -53.1 mum -6.63 cm 8.39 mm 580 MeV 35.7 keV 10.5 cm 11.5 cm World eIoni + 3 -53.6 mum -7.68 cm 8.4 mm 685 MeV 6.3 keV 1.05 cm 12.5 cm World eIoni + 4 -53.6 mum -9.27 cm 8.4 mm 843 MeV 5.07 keV 1.58 cm 14.1 cm World eIoni + 5 -54.2 mum -11 cm 8.41 mm 1.02 GeV 7.16 keV 1.76 cm 15.9 cm World eIoni + 6 -55.7 mum -20 cm 8.42 mm 1.92 GeV 32.8 keV 8.98 cm 24.9 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -54.2 mum -11 cm 8.41 mm 1.01 keV 0 eV 0 fm 0 fm World initStep + 1 -54.2 mum -11 cm 8.41 mm 0 eV 2.03 keV 59.4 mum 59.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -53.6 mum -9.27 cm 8.4 mm 1.14 keV 0 eV 0 fm 0 fm World initStep + 1 -53.6 mum -9.27 cm 8.4 mm 0 eV 2.28 keV 69.5 mum 69.5 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -53.6 mum -7.68 cm 8.4 mm 5.53 keV 0 eV 0 fm 0 fm World initStep + 1 -53.6 mum -7.68 cm 8.4 mm 3.58 keV 1.95 keV 455 mum 455 mum World eIoni + 2 -53.6 mum -7.68 cm 8.4 mm 0 eV 4.25 keV 322 mum 776 mum World eIoni + 3 -53.6 mum -7.68 cm 8.4 mm 0 eV 0 eV 0 fm 776 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -53.1 mum -6.63 cm 8.39 mm 1.24 keV 0 eV 0 fm 0 fm World initStep + 1 -53.1 mum -6.63 cm 8.39 mm 0 eV 2.49 keV 78.2 mum 78.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.53 mum -8.38 mm 8.25 mm 1.62 keV 0 eV 0 fm 0 fm World initStep + 1 -4.53 mum -8.38 mm 8.25 mm 0 eV 3.24 keV 114 mum 114 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.18 mm 5.4 mm 81.8 MeV 2.09 keV 6.5 mm 6.5 mm World eIoni + 2 -11.2 mum -2.19 cm 1.19 cm 269 MeV 6.73 keV 2 cm 2.65 cm World eIoni + 3 -19.8 mum -20 cm 2.22 cm 2.05 GeV 71.3 keV 18.4 cm 21.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -11.2 mum -2.19 cm 1.19 cm 1.91 keV 0 eV 0 fm 0 fm World initStep + 1 -11.2 mum -2.19 cm 1.19 cm 0 eV 3.83 keV 146 mum 146 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -3.18 mm 5.4 mm 16.7 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.18 mm 5.4 mm 10.9 keV 5.81 keV 1.58 mm 1.58 mm World eIoni + 2 0 fm -3.18 mm 5.4 mm 6.3 keV 4.56 keV 891 mum 2.48 mm World eIoni + 3 0 fm -3.18 mm 5.4 mm 2.99 keV 3.31 keV 508 mum 2.98 mm World eIoni + 4 0 fm -3.18 mm 5.4 mm 0 eV 3.04 keV 273 mum 3.26 mm World eIoni + 5 0 fm -3.18 mm 5.4 mm 0 eV 0 eV 0 fm 3.26 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.65 cm 1.08 cm 215 MeV 7.52 keV 2.11 cm 2.11 cm World eIoni + 2 2.62 mum -20 cm 2.22 cm 2.05 GeV 73.6 keV 18.4 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.65 cm 1.08 cm 1.12 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.65 cm 1.08 cm 0 eV 2.24 keV 67.9 mum 67.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 105 keV 25.2 cm 25.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.66 cm 1.27 cm 316 MeV 16.6 keV 4.75 cm 4.75 cm World eIoni + 2 -698 nm -14.1 cm 2.05 cm 1.46 GeV 48.2 keV 11.5 cm 16.2 cm World eIoni + 3 -273 nm -20 cm 2.22 cm 2.05 GeV 27.3 keV 5.92 cm 22.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -698 nm -14.1 cm 2.05 cm 1.59 keV 0 eV 0 fm 0 fm World initStep + 1 -698 nm -14.1 cm 2.05 cm 0 eV 3.19 keV 111 mum 111 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -2.66 cm 1.27 cm 1.46 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.66 cm 1.27 cm 0 eV 2.92 keV 98.1 mum 98.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.92 cm 1.83 cm 942 MeV 41 keV 11.6 cm 11.6 cm World eIoni + 2 -2.83 mum -11.6 cm 1.95 cm 1.21 GeV 9.78 keV 2.65 cm 14.3 cm World eIoni + 3 -3.38 mum -12.3 cm 1.98 cm 1.28 GeV 4.22 keV 7.78 mm 15.1 cm World eIoni + 4 -5.6 mum -14.7 cm 2.07 cm 1.52 GeV 10.7 keV 2.32 cm 17.4 cm World eIoni + 5 -7.08 mum -17.4 cm 2.15 cm 1.79 GeV 10.8 keV 2.76 cm 20.1 cm World eIoni + 6 -7.41 mum -20 cm 2.22 cm 2.05 GeV 9.83 keV 2.57 cm 22.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.08 mum -17.4 cm 2.15 cm 6.32 keV 0 eV 0 fm 0 fm World initStep + 1 -7.08 mum -17.4 cm 2.15 cm 4.61 keV 174 eV 59.8 mum 59.8 mum World eIoni + 2 -7.08 mum -17.4 cm 2.15 cm 0 eV 5.19 keV 394 mum 454 mum World eIoni + 3 -7.08 mum -17.4 cm 2.15 cm 0 eV 0 eV 0 fm 454 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 6 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.08 mum -17.4 cm 2.15 cm 1.53 keV 0 eV 0 fm 0 fm World initStep + 1 -7.08 mum -17.4 cm 2.15 cm 0 eV 3.07 keV 105 mum 105 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.6 mum -14.7 cm 2.07 cm 2.12 keV 0 eV 0 fm 0 fm World initStep + 1 -5.6 mum -14.7 cm 2.07 cm 0 eV 4.24 keV 171 mum 171 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.38 mum -12.3 cm 1.98 cm 11.1 keV 0 eV 0 fm 0 fm World initStep + 1 -3.38 mum -12.3 cm 1.98 cm 3.98 keV 3.61 keV 881 mum 881 mum World eIoni + 2 -3.38 mum -12.3 cm 1.98 cm 0 eV 5.64 keV 350 mum 1.23 mm World eIoni + 3 -3.38 mum -12.3 cm 1.98 cm 0 eV 0 eV 0 fm 1.23 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 4 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.38 mum -12.3 cm 1.98 cm 3.51 keV 0 eV 0 fm 0 fm World initStep + 1 -3.38 mum -12.3 cm 1.98 cm 0 eV 4.24 keV 316 mum 316 mum World eIoni + 2 -3.38 mum -12.3 cm 1.98 cm 0 eV 0 eV 0 fm 316 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.83 mum -11.6 cm 1.95 cm 1.15 keV 0 eV 0 fm 0 fm World initStep + 1 -2.83 mum -11.6 cm 1.95 cm 0 eV 2.3 keV 70.2 mum 70.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.92 cm 1.83 cm 12.7 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.92 cm 1.83 cm 10.3 keV 2.48 keV 1.09 mm 1.09 mm World eIoni + 2 0 fm -8.92 cm 1.83 cm 3.82 keV 6.44 keV 830 mum 1.92 mm World eIoni + 3 0 fm -8.92 cm 1.83 cm 2.22 keV 273 eV 48.5 mum 1.97 mm World eIoni + 4 0 fm -8.92 cm 1.83 cm 0 eV 4.45 keV 184 mum 2.15 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.92 cm 1.83 cm 1.32 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.92 cm 1.83 cm 0 eV 2.64 keV 84.8 mum 84.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.77 mm 7.54 mm 118 MeV 8.97 keV 2.28 cm 2.28 cm World eIoni + 2 -7.73 mum -13.5 cm 2.03 cm 1.4 GeV 55.1 keV 13.3 cm 15.5 cm World eIoni + 3 -7.61 mum -14 cm 2.05 cm 1.45 GeV 1.41 keV 5.01 mm 16.1 cm World eIoni + 4 -6.16 mum -17.5 cm 2.16 cm 1.8 GeV 15.9 keV 3.53 cm 19.6 cm World eIoni + 5 -6.31 mum -20 cm 2.22 cm 2.05 GeV 10.1 keV 2.49 cm 22.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -6.16 mum -17.5 cm 2.16 cm 6.08 keV 0 eV 0 fm 0 fm World initStep + 1 -6.16 mum -17.5 cm 2.16 cm 1.54 keV 4.54 keV 492 mum 492 mum World eIoni + 2 -6.16 mum -17.5 cm 2.16 cm 0 eV 3.07 keV 106 mum 598 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.61 mum -14 cm 2.05 cm 1.39 keV 0 eV 0 fm 0 fm World initStep + 1 -7.61 mum -14 cm 2.05 cm 0 eV 2.77 keV 91 mum 91 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.73 mum -13.5 cm 2.03 cm 12.2 keV 0 eV 0 fm 0 fm World initStep + 1 -7.73 mum -13.5 cm 2.03 cm 7.39 keV 4.78 keV 1.02 mm 1.02 mm World eIoni + 2 -7.73 mum -13.5 cm 2.03 cm 4.29 keV 3.1 keV 587 mum 1.61 mm World eIoni + 3 -7.73 mum -13.5 cm 2.03 cm 0 eV 4.71 keV 373 mum 1.98 mm World eIoni + 4 -7.73 mum -13.5 cm 2.03 cm 0 eV 0 eV 0 fm 1.98 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -6.77 mm 7.54 mm 1.33 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.77 mm 7.54 mm 0 eV 2.66 keV 85.7 mum 85.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.66 cm 1.81 cm 916 MeV 40.4 keV 11.1 cm 11.1 cm World eIoni + 2 -100 nm -9.32 cm 1.85 cm 982 MeV 2.39 keV 6.65 mm 11.7 cm World eIoni + 3 -644 nm -20 cm 2.22 cm 2.05 GeV 40.6 keV 10.7 cm 22.4 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -100 nm -9.32 cm 1.85 cm 5.38 keV 0 eV 0 fm 0 fm World initStep + 1 -100 nm -9.32 cm 1.85 cm 824 eV 4.56 keV 445 mum 445 mum World eIoni + 2 -100 nm -9.32 cm 1.85 cm 0 eV 1.65 keV 45.8 mum 491 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.66 cm 1.81 cm 1.17 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.66 cm 1.81 cm 0 eV 2.33 keV 71.7 mum 71.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.59 cm 1.41 cm 409 MeV 28.8 keV 6.49 cm 6.49 cm World eIoni + 2 -5.28 mum -5.87 cm 1.63 cm 637 MeV 8.84 keV 2.29 cm 8.78 cm World eIoni + 3 -17.6 mum -18.6 cm 2.18 cm 1.91 GeV 49.5 keV 12.7 cm 21.5 cm World eIoni + 4 -18.2 mum -20 cm 2.22 cm 2.05 GeV 4.83 keV 1.4 cm 22.9 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -17.6 mum -18.6 cm 2.18 cm 1.03 keV 0 eV 0 fm 0 fm World initStep + 1 -17.6 mum -18.6 cm 2.18 cm 0 eV 2.06 keV 60.7 mum 60.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.28 mum -5.87 cm 1.63 cm 1.04 keV 0 eV 0 fm 0 fm World initStep + 1 -5.28 mum -5.87 cm 1.63 cm 0 eV 2.09 keV 61.8 mum 61.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -3.59 cm 1.41 cm 46 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.59 cm 1.41 cm 33.9 keV 10.5 keV 6.93 mm 6.93 mm World eIoni + 2 0 fm -3.59 cm 1.41 cm 27.1 keV 6.74 keV 4.98 mm 1.19 cm World eIoni + 3 0 fm -3.59 cm 1.41 cm 20.5 keV 6.6 keV 3.42 mm 1.53 cm World eIoni + 4 0 fm -3.59 cm 1.41 cm 15.9 keV 4.65 keV 2.17 mm 1.75 cm World eIoni + 5 0 fm -3.59 cm 1.41 cm 11.7 keV 4.17 keV 1.48 mm 1.9 cm World eIoni + 6 0 fm -3.59 cm 1.41 cm 7.87 keV 3.83 keV 973 mum 2 cm World eIoni + 7 0 fm -3.59 cm 1.41 cm 5.03 keV 2.84 keV 624 mum 2.06 cm World eIoni + 8 0 fm -3.59 cm 1.41 cm 2.52 keV 2.51 keV 422 mum 2.1 cm World eIoni + 9 0 fm -3.59 cm 1.41 cm 0 eV 5.03 keV 223 mum 2.12 cm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -3.59 cm 1.41 cm 1.66 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.59 cm 1.41 cm 0 eV 3.31 keV 118 mum 118 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -18.7 cm 2.19 cm 1.92 GeV 86.4 keV 22.7 cm 22.7 cm World eIoni + 2 164 nm -20 cm 2.22 cm 2.05 GeV 3.96 keV 1.31 cm 24 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -18.7 cm 2.19 cm 1.11 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -18.7 cm 2.19 cm 0 eV 2.22 keV 66.7 mum 66.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -580 mum 2.4 mm 55.8 MeV 2.23 keV 2.49 mm 2.49 mm World eIoni + 2 18.7 mum -19.9 cm 2.22 cm 2.04 GeV 79.1 keV 21.2 cm 21.4 cm World eIoni + 3 24.2 mum -59 cm 2.76 cm 5.95 GeV 171 keV 39.1 cm 60.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 18.7 mum -19.9 cm 2.22 cm 1.76 keV 0 eV 0 fm 0 fm World initStep + 1 18.7 mum -19.9 cm 2.22 cm 0 eV 3.52 keV 129 mum 129 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -580 mum 2.4 mm 2.26 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -580 mum 2.4 mm 0 eV 4.52 keV 188 mum 188 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.28 mm 7.78 mm 123 MeV 4.03 keV 1.12 cm 1.12 cm World eIoni + 2 -978 nm -2.13 cm 1.18 cm 263 MeV 7.38 keV 1.47 cm 2.59 cm World eIoni + 3 688 nm -20 cm 2.22 cm 2.05 GeV 76.9 keV 17.9 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -978 nm -2.13 cm 1.18 cm 1.31 keV 0 eV 0 fm 0 fm World initStep + 1 -978 nm -2.13 cm 1.18 cm 0 eV 2.61 keV 83.5 mum 83.5 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -7.28 mm 7.78 mm 2.21 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.28 mm 7.78 mm 0 eV 4.42 keV 183 mum 183 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 102 keV 24.1 cm 24.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.96 cm 1.15 cm 246 MeV 15.8 keV 4.07 cm 4.07 cm World eIoni + 2 -18.7 mum -14.9 cm 2.08 cm 1.54 GeV 52.8 keV 12.9 cm 17 cm World eIoni + 3 -20.5 mum -16.6 cm 2.13 cm 1.71 GeV 8.03 keV 1.73 cm 18.7 cm World eIoni + 4 -24.2 mum -20 cm 2.22 cm 2.05 GeV 12.9 keV 3.41 cm 22.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -20.5 mum -16.6 cm 2.13 cm 1.55 keV 0 eV 0 fm 0 fm World initStep + 1 -20.5 mum -16.6 cm 2.13 cm 0 eV 3.09 keV 106 mum 106 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -18.7 mum -14.9 cm 2.08 cm 18.4 keV 0 eV 0 fm 0 fm World initStep + 1 -18.7 mum -14.9 cm 2.08 cm 12.9 keV 5.41 keV 1.83 mm 1.83 mm World eIoni + 2 -18.7 mum -14.9 cm 2.08 cm 9.62 keV 3.32 keV 1.11 mm 2.94 mm World eIoni + 3 -18.7 mum -14.9 cm 2.08 cm 7.29 keV 2.33 keV 771 mum 3.72 mm World eIoni + 4 -18.7 mum -14.9 cm 2.08 cm 3.91 keV 3.38 keV 579 mum 4.29 mm World eIoni + 5 -18.7 mum -14.9 cm 2.08 cm 1.07 keV 1.85 keV 150 mum 4.44 mm World eIoni + 6 -18.7 mum -14.9 cm 2.08 cm 0 eV 2.14 keV 63.8 mum 4.51 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 3 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -18.7 mum -14.9 cm 2.08 cm 992 eV 0 eV 0 fm 0 fm World initStep + 1 -18.7 mum -14.9 cm 2.08 cm 0 eV 1.98 keV 57.9 mum 57.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.96 cm 1.15 cm 12.1 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.96 cm 1.15 cm 8.72 keV 3.36 keV 1.01 mm 1.01 mm World eIoni + 2 0 fm -1.96 cm 1.15 cm 7.24 keV 168 eV 77.2 mum 1.09 mm World eIoni + 3 0 fm -1.96 cm 1.15 cm 495 eV 6.74 keV 575 mum 1.67 mm World eIoni + 4 0 fm -1.96 cm 1.15 cm 0 eV 991 eV 26.2 mum 1.69 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.96 cm 1.15 cm 1.32 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.96 cm 1.15 cm 0 eV 2.63 keV 84.3 mum 84.3 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.62 mm 8.35 mm 136 MeV 10.8 keV 2.77 cm 2.77 cm World eIoni + 2 -5.59 mum -3.39 cm 1.38 cm 389 MeV 9.47 keV 2.59 cm 5.36 cm World eIoni + 3 -8.91 mum -20 cm 2.22 cm 2.05 GeV 70.4 keV 16.6 cm 22 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.59 mum -3.39 cm 1.38 cm 1.06 keV 0 eV 0 fm 0 fm World initStep + 1 -5.59 mum -3.39 cm 1.38 cm 0 eV 2.13 keV 63.3 mum 63.3 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.62 mm 8.35 mm 2.85 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.62 mm 8.35 mm 0 eV 4.64 keV 258 mum 258 mum World eIoni + 2 0 fm -8.62 mm 8.35 mm 0 eV 0 eV 0 fm 258 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.91 cm 1.31 cm 341 MeV 22.3 keV 5.59 cm 5.59 cm World eIoni + 2 -1.77 mum -4.25 cm 1.48 cm 475 MeV 7.21 keV 1.35 cm 6.94 cm World eIoni + 3 -11.1 mum -15.2 cm 2.09 cm 1.57 GeV 47.2 keV 11 cm 18 cm World eIoni + 4 -13.7 mum -20 cm 2.21 cm 2.05 GeV 22.9 keV 4.75 cm 22.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -11.1 mum -15.2 cm 2.09 cm 1.17 keV 0 eV 0 fm 0 fm World initStep + 1 -11.1 mum -15.2 cm 2.09 cm 0 eV 2.35 keV 72.2 mum 72.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.77 mum -4.25 cm 1.48 cm 4.1 keV 0 eV 0 fm 0 fm World initStep + 1 -1.77 mum -4.25 cm 1.48 cm 986 eV 3.11 keV 359 mum 359 mum World eIoni + 2 -1.77 mum -4.25 cm 1.48 cm 0 eV 1.97 keV 57.4 mum 416 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -2.91 cm 1.31 cm 3.34 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.91 cm 1.31 cm 244 eV 3.1 keV 302 mum 302 mum World eIoni + 2 0 fm -2.91 cm 1.31 cm 0 eV 488 eV 15.1 mum 318 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.13 mm 7.71 mm 121 MeV 7.75 keV 1.98 cm 1.98 cm World eIoni + 2 18.1 mum -3.31 cm 1.37 cm 381 MeV 12.9 keV 2.67 cm 4.65 cm World eIoni + 3 21.3 mum -10.2 cm 1.89 cm 1.06 GeV 26.4 keV 6.87 cm 11.5 cm World eIoni + 4 22.9 mum -17.2 cm 2.15 cm 1.77 GeV 30.5 keV 7.1 cm 18.6 cm World eIoni + 5 22.9 mum -19.4 cm 2.2 cm 1.99 GeV 9.13 keV 2.17 cm 20.8 cm World eIoni + 6 20.9 mum -30.6 cm 2.43 cm 3.11 GeV 42.4 keV 11.2 cm 32 cm World eIoni + 7 20.9 mum -30.6 cm 2.43 cm 3.11 GeV 0 eV 0 fm 32 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 20.9 mum -30.6 cm 2.43 cm 1.47 keV 0 eV 0 fm 0 fm World initStep + 1 20.9 mum -30.6 cm 2.43 cm 0 eV 1.54 keV 49.3 mum 49.3 mumOutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 22.9 mum -19.4 cm 2.2 cm 1.96 keV 0 eV 0 fm 0 fm World initStep + 1 22.9 mum -19.4 cm 2.2 cm 0 eV 3.93 keV 152 mum 152 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 22.9 mum -17.2 cm 2.15 cm 1.12 keV 0 eV 0 fm 0 fm World initStep + 1 22.9 mum -17.2 cm 2.15 cm 0 eV 2.24 keV 67.8 mum 67.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 21.3 mum -10.2 cm 1.89 cm 1.12 keV 0 eV 0 fm 0 fm World initStep + 1 21.3 mum -10.2 cm 1.89 cm 0 eV 2.24 keV 67.8 mum 67.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 18.1 mum -3.31 cm 1.37 cm 25.1 keV 0 eV 0 fm 0 fm World initStep + 1 18.1 mum -3.31 cm 1.37 cm 19.4 keV 5.64 keV 2.99 mm 2.99 mm World eIoni + 2 18.1 mum -3.31 cm 1.37 cm 13.6 keV 5.82 keV 2 mm 4.99 mm World eIoni + 3 18.1 mum -3.31 cm 1.37 cm 9.42 keV 4.19 keV 1.19 mm 6.18 mm World eIoni + 4 18.1 mum -3.31 cm 1.37 cm 5.32 keV 4.1 keV 754 mum 6.93 mm World eIoni + 5 18.1 mum -3.31 cm 1.37 cm 665 eV 4.65 keV 441 mum 7.37 mm World eIoni + 6 18.1 mum -3.31 cm 1.37 cm 0 eV 1.33 keV 35.7 mum 7.41 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -7.13 mm 7.71 mm 47 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.13 mm 7.71 mm 38.8 keV 7 keV 6.77 mm 6.77 mm World eIoni + 2 0 fm -7.13 mm 7.71 mm 31.1 keV 7.67 keV 6.3 mm 1.31 cm World eIoni + 3 0 fm -7.13 mm 7.71 mm 23.2 keV 7.92 keV 4.31 mm 1.74 cm World eIoni + 4 0 fm -7.13 mm 7.71 mm 18.6 keV 4.62 keV 2.66 mm 2 cm World eIoni + 5 0 fm -7.13 mm 7.71 mm 14.2 keV 4.38 keV 1.87 mm 2.19 cm World eIoni + 6 0 fm -7.13 mm 7.71 mm 11.5 keV 590 eV 179 mum 2.21 cm World eIoni + 7 0 fm -7.13 mm 7.71 mm 8.44 keV 3.1 keV 958 mum 2.3 cm World eIoni + 8 0 fm -7.13 mm 7.71 mm 4.9 keV 3.55 keV 669 mum 2.37 cm World eIoni + 9 0 fm -7.13 mm 7.71 mm 753 eV 4.14 keV 410 mum 2.41 cm World eIoni + 10 0 fm -7.13 mm 7.71 mm 0 eV 1.51 keV 41.1 mum 2.42 cm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 9, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -7.13 mm 7.71 mm 2.09 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.13 mm 7.71 mm 0 eV 4.18 keV 168 mum 168 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -7.13 mm 7.71 mm 1.17 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.13 mm 7.71 mm 0 eV 2.34 keV 71.9 mum 71.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.98 cm 1.45 cm 448 MeV 30.7 keV 7.11 cm 7.11 cm World eIoni + 2 -1.87 mum -6.05 cm 1.64 cm 655 MeV 10.1 keV 2.08 cm 9.19 cm World eIoni + 3 2.25 mum -8.93 cm 1.83 cm 943 MeV 12.7 keV 2.88 cm 12.1 cm World eIoni + 4 13.3 mum -20 cm 2.22 cm 2.05 GeV 48.7 keV 11.1 cm 23.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.25 mum -8.93 cm 1.83 cm 2.43 keV 0 eV 0 fm 0 fm World initStep + 1 2.25 mum -8.93 cm 1.83 cm 0 eV 4.86 keV 212 mum 212 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.87 mum -6.05 cm 1.64 cm 28 keV 0 eV 0 fm 0 fm World initStep + 1 -1.87 mum -6.05 cm 1.64 cm 20.7 keV 7.32 keV 3.62 mm 3.62 mm World eIoni + 2 -1.87 mum -6.05 cm 1.64 cm 15 keV 5.75 keV 2.2 mm 5.82 mm World eIoni + 3 -1.87 mum -6.05 cm 1.64 cm 11.1 keV 764 eV 385 mum 6.2 mm World eIoni + 4 -1.87 mum -6.05 cm 1.64 cm 8.06 keV 1.77 keV 614 mum 6.82 mm World eIoni + 5 -1.87 mum -6.05 cm 1.64 cm 5.25 keV 2.81 keV 639 mum 7.46 mm World eIoni + 6 -1.87 mum -6.05 cm 1.64 cm 1.3 keV 3.95 keV 436 mum 7.89 mm World eIoni + 7 -1.87 mum -6.05 cm 1.64 cm 0 eV 2.6 keV 83.1 mum 7.98 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 3 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.87 mum -6.05 cm 1.64 cm 1.3 keV 0 eV 0 fm 0 fm World initStep + 1 -1.87 mum -6.05 cm 1.64 cm 0 eV 2.59 keV 82.6 mum 82.6 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 3 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.87 mum -6.05 cm 1.64 cm 3.07 keV 0 eV 0 fm 0 fm World initStep + 1 -1.87 mum -6.05 cm 1.64 cm 0 eV 6.15 keV 280 mum 280 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -3.98 cm 1.45 cm 5.67 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.98 cm 1.45 cm 594 eV 5.08 keV 464 mum 464 mum World eIoni + 2 0 fm -3.98 cm 1.45 cm 0 eV 1.19 keV 31.6 mum 496 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 92.9 keV 24.1 cm 24.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.3 mm 8.6 mm 143 MeV 5.09 keV 1.52 cm 1.52 cm World eIoni + 2 -4.09 mum -8.53 cm 1.81 cm 902 MeV 29.3 keV 7.67 cm 9.2 cm World eIoni + 3 -5.61 mum -20 cm 2.22 cm 2.05 GeV 47.9 keV 11.5 cm 20.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.09 mum -8.53 cm 1.81 cm 1.24 keV 0 eV 0 fm 0 fm World initStep + 1 -4.09 mum -8.53 cm 1.81 cm 0 eV 2.47 keV 77.5 mum 77.5 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -9.3 mm 8.6 mm 1.15 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.3 mm 8.6 mm 0 eV 2.29 keV 69.9 mum 69.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.68 cm 1.61 cm 618 MeV 32.1 keV 8.83 cm 8.83 cm World eIoni + 2 2.23 mum -12.3 cm 1.98 cm 1.28 GeV 29.3 keV 6.61 cm 15.4 cm World eIoni + 3 1.73 mum -20 cm 2.22 cm 2.05 GeV 32.5 keV 7.72 cm 23.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.23 mum -12.3 cm 1.98 cm 2.24 keV 0 eV 0 fm 0 fm World initStep + 1 2.23 mum -12.3 cm 1.98 cm 0 eV 4.47 keV 186 mum 186 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.68 cm 1.61 cm 1.02 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.68 cm 1.61 cm 0 eV 2.03 keV 59.7 mum 59.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.43 cm 1.02 cm 193 MeV 13.9 keV 3.47 cm 3.47 cm World eIoni + 2 2.09 mum -5.67 cm 1.61 cm 617 MeV 19.4 keV 4.28 cm 7.75 cm World eIoni + 3 3.69 mum -8.76 cm 1.82 cm 926 MeV 15.8 keV 3.1 cm 10.9 cm World eIoni + 4 3.64 mum -15.6 cm 2.1 cm 1.61 GeV 31.5 keV 6.8 cm 17.7 cm World eIoni + 5 3.9 mum -20 cm 2.22 cm 2.05 GeV 15.6 keV 4.45 cm 22.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 3.64 mum -15.6 cm 2.1 cm 1.08 keV 0 eV 0 fm 0 fm World initStep + 1 3.64 mum -15.6 cm 2.1 cm 0 eV 2.15 keV 64.3 mum 64.3 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 3.69 mum -8.76 cm 1.82 cm 2.09 keV 0 eV 0 fm 0 fm World initStep + 1 3.69 mum -8.76 cm 1.82 cm 0 eV 4.18 keV 167 mum 167 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.09 mum -5.67 cm 1.61 cm 1.04 keV 0 eV 0 fm 0 fm World initStep + 1 2.09 mum -5.67 cm 1.61 cm 0 eV 2.08 keV 61.4 mum 61.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.43 cm 1.02 cm 997 eV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.43 cm 1.02 cm 0 eV 1.99 keV 58.2 mum 58.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.62 cm 1.61 cm 612 MeV 31 keV 8.76 cm 8.76 cm World eIoni + 2 -1.84 mum -20 cm 2.22 cm 2.05 GeV 55.7 keV 14.4 cm 23.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.62 cm 1.61 cm 5.79 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.62 cm 1.61 cm 1.67 keV 4.13 keV 472 mum 472 mum World eIoni + 2 0 fm -5.62 cm 1.61 cm 0 eV 3.34 keV 119 mum 591 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.09 cm 1.78 cm 859 MeV 38.3 keV 10.4 cm 10.4 cm World eIoni + 2 -2.57 mum -9.74 cm 1.87 cm 1.02 GeV 4.99 keV 1.66 cm 12 cm World eIoni + 3 -3.82 mum -10.6 cm 1.91 cm 1.11 GeV 3.88 keV 9.07 mm 13 cm World eIoni + 4 -12.6 mum -20 cm 2.22 cm 2.05 GeV 40.3 keV 9.36 cm 22.3 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.82 mum -10.6 cm 1.91 cm 2.45 keV 0 eV 0 fm 0 fm World initStep + 1 -3.82 mum -10.6 cm 1.91 cm 0 eV 4.9 keV 215 mum 215 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.57 mum -9.74 cm 1.87 cm 1.58 keV 0 eV 0 fm 0 fm World initStep + 1 -2.57 mum -9.74 cm 1.87 cm 0 eV 3.15 keV 109 mum 109 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.09 cm 1.78 cm 38.8 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.09 cm 1.78 cm 28.8 keV 9.97 keV 6.29 mm 6.29 mm World eIoni + 2 0 fm -8.09 cm 1.78 cm 22.8 keV 5.99 keV 3.78 mm 1.01 cm World eIoni + 3 0 fm -8.09 cm 1.78 cm 13.9 keV 7.17 keV 2.52 mm 1.26 cm World eIoni + 4 0 fm -8.09 cm 1.78 cm 10.3 keV 3.59 keV 1.22 mm 1.38 cm World eIoni + 5 0 fm -8.09 cm 1.78 cm 5.11 keV 5.16 keV 832 mum 1.46 cm World eIoni + 6 0 fm -8.09 cm 1.78 cm 1.12 keV 3.99 keV 428 mum 1.51 cm World eIoni + 7 0 fm -8.09 cm 1.78 cm 0 eV 2.25 keV 68 mum 1.51 cm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.09 cm 1.78 cm 1.78 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.09 cm 1.78 cm 0 eV 3.57 keV 132 mum 132 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 95.2 keV 24.2 cm 24.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.15 cm 1.84 cm 965 MeV 46.9 keV 11.9 cm 11.9 cm World eIoni + 2 -979 nm -18.9 cm 2.19 cm 1.94 GeV 40 keV 9.71 cm 21.6 cm World eIoni + 3 -796 nm -20 cm 2.22 cm 2.05 GeV 4.22 keV 1.15 cm 22.8 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -979 nm -18.9 cm 2.19 cm 2.48 keV 0 eV 0 fm 0 fm World initStep + 1 -979 nm -18.9 cm 2.19 cm 0 eV 4.65 keV 218 mum 218 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -9.15 cm 1.84 cm 1.31 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.15 cm 1.84 cm 0 eV 2.61 keV 83.5 mum 83.5 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.89 cm 1.63 cm 639 MeV 30 keV 8.28 cm 8.28 cm World eIoni + 2 -1.43 mum -8.49 cm 1.8 cm 899 MeV 8.58 keV 2.61 cm 10.9 cm World eIoni + 3 -3.93 mum -18 cm 2.17 cm 1.85 GeV 38.6 keV 9.52 cm 20.4 cm World eIoni + 4 -4.24 mum -20 cm 2.22 cm 2.05 GeV 7.33 keV 1.99 cm 22.4 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.93 mum -18 cm 2.17 cm 1.37 keV 0 eV 0 fm 0 fm World initStep + 1 -3.93 mum -18 cm 2.17 cm 0 eV 2.73 keV 89.1 mum 89.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.43 mum -8.49 cm 1.8 cm 1.03 keV 0 eV 0 fm 0 fm World initStep + 1 -1.43 mum -8.49 cm 1.8 cm 0 eV 2.07 keV 61 mum 61 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.89 cm 1.63 cm 1.7 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.89 cm 1.63 cm 0 eV 3.41 keV 123 mum 123 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -11.4 cm 1.95 cm 1.19 GeV 64.9 keV 15.5 cm 15.5 cm World eIoni + 2 -66.3 nm -16.6 cm 2.13 cm 1.71 GeV 20.5 keV 5.23 cm 20.8 cm World eIoni + 3 663 nm -20 cm 2.21 cm 2.05 GeV 13.1 keV 3.37 cm 24.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -66.3 nm -16.6 cm 2.13 cm 2.23 keV 0 eV 0 fm 0 fm World initStep + 1 -66.3 nm -16.6 cm 2.13 cm 0 eV 4.46 keV 185 mum 185 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -11.4 cm 1.95 cm 1.56 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -11.4 cm 1.95 cm 0 eV 3.12 keV 108 mum 108 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.55 mm 7.44 mm 115 MeV 11.2 keV 2.5 cm 2.5 cm World eIoni + 2 -6.89 mum -4.4 cm 1.5 cm 490 MeV 16.1 keV 3.83 cm 6.33 cm World eIoni + 3 -9.72 mum -9.78 cm 1.87 cm 1.03 GeV 22.9 keV 5.4 cm 11.7 cm World eIoni + 4 -7.74 mum -20 cm 2.21 cm 2.05 GeV 37.8 keV 10.2 cm 22 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -9.72 mum -9.78 cm 1.87 cm 4.56 keV 0 eV 0 fm 0 fm World initStep + 1 -9.72 mum -9.78 cm 1.87 cm 1.32 keV 3.25 keV 390 mum 390 mum World eIoni + 2 -9.72 mum -9.78 cm 1.87 cm 0 eV 2.63 keV 84.3 mum 475 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -6.89 mum -4.4 cm 1.5 cm 3.47 keV 0 eV 0 fm 0 fm World initStep + 1 -6.89 mum -4.4 cm 1.5 cm 0 eV 4.4 keV 313 mum 313 mum World eIoni + 2 -6.89 mum -4.4 cm 1.5 cm 0 eV 0 eV 0 fm 313 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -6.55 mm 7.44 mm 3.18 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.55 mm 7.44 mm 0 eV 5.32 keV 289 mum 289 mum World eIoni + 2 0 fm -6.55 mm 7.44 mm 0 eV 0 eV 0 fm 289 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.84 cm 1.12 cm 234 MeV 16 keV 3.88 cm 3.88 cm World eIoni + 2 557 nm -2.36 cm 1.22 cm 286 MeV 1.65 keV 5.26 mm 4.4 cm World eIoni + 3 8.98 mum -18.3 cm 2.18 cm 1.88 GeV 68.4 keV 16 cm 20.4 cm World eIoni + 4 9.37 mum -20 cm 2.22 cm 2.05 GeV 9.45 keV 1.72 cm 22.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 8.98 mum -18.3 cm 2.18 cm 1.26 keV 0 eV 0 fm 0 fm World initStep + 1 8.98 mum -18.3 cm 2.18 cm 0 eV 2.53 keV 79.9 mum 79.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 557 nm -2.36 cm 1.22 cm 1.71 keV 0 eV 0 fm 0 fm World initStep + 1 557 nm -2.36 cm 1.22 cm 0 eV 3.42 keV 124 mum 124 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.84 cm 1.12 cm 1.18 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.84 cm 1.12 cm 0 eV 2.37 keV 73 mum 73 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.14 mm 7.71 mm 121 MeV 6.11 keV 1.11 cm 1.11 cm World eIoni + 2 3.59 mum -4.01 cm 1.45 cm 451 MeV 13.6 keV 3.38 cm 4.48 cm World eIoni + 3 1.92 mum -7.35 cm 1.73 cm 785 MeV 12.5 keV 3.35 cm 7.83 cm World eIoni + 4 1.54 mum -18.5 cm 2.18 cm 1.9 GeV 44.5 keV 11.2 cm 19 cm World eIoni + 5 1.49 mum -20 cm 2.22 cm 2.05 GeV 7.47 keV 1.49 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 1.54 mum -18.5 cm 2.18 cm 2.14 keV 0 eV 0 fm 0 fm World initStep + 1 1.54 mum -18.5 cm 2.18 cm 0 eV 4.28 keV 173 mum 173 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 1.92 mum -7.35 cm 1.73 cm 1.94 keV 0 eV 0 fm 0 fm World initStep + 1 1.92 mum -7.35 cm 1.73 cm 0 eV 3.88 keV 149 mum 149 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 3.59 mum -4.01 cm 1.45 cm 3.85 keV 0 eV 0 fm 0 fm World initStep + 1 3.59 mum -4.01 cm 1.45 cm 0 eV 5.95 keV 341 mum 341 mum World eIoni + 2 3.59 mum -4.01 cm 1.45 cm 0 eV 0 eV 0 fm 341 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -7.14 mm 7.71 mm 2.97 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.14 mm 7.71 mm 0 eV 5.94 keV 270 mum 270 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.71 mm 4.05 mm 67.1 MeV 1.32 keV 4.49 mm 4.49 mm World eIoni + 2 2.39 mum -2.36 cm 1.22 cm 286 MeV 10.4 keV 2.37 cm 2.82 cm World eIoni + 3 10.3 mum -8.01 cm 1.78 cm 851 MeV 24.2 keV 5.68 cm 8.5 cm World eIoni + 4 18.9 mum -20 cm 2.22 cm 2.05 GeV 52.6 keV 12 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 10.3 mum -8.01 cm 1.78 cm 1.65 keV 0 eV 0 fm 0 fm World initStep + 1 10.3 mum -8.01 cm 1.78 cm 0 eV 3.3 keV 117 mum 117 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.39 mum -2.36 cm 1.22 cm 6.44 keV 0 eV 0 fm 0 fm World initStep + 1 2.39 mum -2.36 cm 1.22 cm 2.67 keV 3.77 keV 518 mum 518 mum World eIoni + 2 2.39 mum -2.36 cm 1.22 cm 0 eV 4.51 keV 239 mum 757 mum World eIoni + 3 2.39 mum -2.36 cm 1.22 cm 0 eV 0 eV 0 fm 757 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.71 mm 4.05 mm 7.17 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.71 mm 4.05 mm 4.69 keV 2.48 keV 570 mum 570 mum World eIoni + 2 0 fm -1.71 mm 4.05 mm 815 eV 3.88 keV 399 mum 969 mum World eIoni + 3 0 fm -1.71 mm 4.05 mm 0 eV 1.63 keV 45.2 mum 1.01 mm World eIoni + +---> Begin of Event: 50 + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.24 cm 1.73 cm 774 MeV 38.1 keV 9.48 cm 9.48 cm World eIoni + 2 4.8 mum -14.3 cm 2.05 cm 1.48 GeV 27.3 keV 7.02 cm 16.5 cm World eIoni + 3 4.97 mum -14.9 cm 2.08 cm 1.54 GeV 2.03 keV 6.59 mm 17.2 cm World eIoni + 4 6.98 mum -20 cm 2.22 cm 2.05 GeV 25.4 keV 5.08 cm 22.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4.97 mum -14.9 cm 2.08 cm 1.11 keV 0 eV 0 fm 0 fm World initStep + 1 4.97 mum -14.9 cm 2.08 cm 0 eV 2.23 keV 67.3 mum 67.3 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4.8 mum -14.3 cm 2.05 cm 8.16 keV 0 eV 0 fm 0 fm World initStep + 1 4.8 mum -14.3 cm 2.05 cm 3.36 keV 4.8 keV 646 mum 646 mum World eIoni + 2 4.8 mum -14.3 cm 2.05 cm 0 eV 5.83 keV 303 mum 949 mum World eIoni + 3 4.8 mum -14.3 cm 2.05 cm 0 eV 0 eV 0 fm 949 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -7.24 cm 1.73 cm 7.34 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.24 cm 1.73 cm 2.77 keV 4.57 keV 583 mum 583 mum World eIoni + 2 0 fm -7.24 cm 1.73 cm 0 eV 4.31 keV 250 mum 834 mum World eIoni + 3 0 fm -7.24 cm 1.73 cm 0 eV 0 eV 0 fm 834 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.99 cm 1.71 cm 749 MeV 34.7 keV 9.21 cm 9.21 cm World eIoni + 2 -485 nm -7.99 cm 1.78 cm 849 MeV 2.22 keV 1.01 cm 10.2 cm World eIoni + 3 -5.26 mum -20 cm 2.22 cm 2.05 GeV 47.7 keV 12 cm 22.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -485 nm -7.99 cm 1.78 cm 4.12 keV 0 eV 0 fm 0 fm World initStep + 1 -485 nm -7.99 cm 1.78 cm 0 eV 4.48 keV 361 mum 361 mum World eIoni + 2 -485 nm -7.99 cm 1.78 cm 0 eV 0 eV 0 fm 361 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -6.99 cm 1.71 cm 1.54 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.99 cm 1.71 cm 0 eV 3.09 keV 106 mum 106 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 93 keV 25.1 cm 25.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.62 cm 1.75 cm 812 MeV 35.5 keV 9.89 cm 9.89 cm World eIoni + 2 2.34 mum -17.9 cm 2.17 cm 1.84 GeV 47.5 keV 10.3 cm 20.2 cm World eIoni + 3 2.32 mum -19.4 cm 2.21 cm 1.99 GeV 6.08 keV 1.54 cm 21.7 cm World eIoni + 4 -145 nm -39.8 cm 2.56 cm 4.03 GeV 95.6 keV 20.3 cm 42 cm World eIoni + 5 -145 nm -39.8 cm 2.56 cm 4.03 GeV 0 eV 0 fm 42 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -145 nm -39.8 cm 2.56 cm 2.87 keV 0 eV 0 fm 0 fm World initStep + 1 -145 nm -39.8 cm 2.56 cm 1.88 keV 990 eV 130 mum 130 mumOutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.32 mum -19.4 cm 2.21 cm 2.05 keV 0 eV 0 fm 0 fm World initStep + 1 2.32 mum -19.4 cm 2.21 cm 0 eV 4.09 keV 162 mum 162 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.34 mum -17.9 cm 2.17 cm 1.01 keV 0 eV 0 fm 0 fm World initStep + 1 2.34 mum -17.9 cm 2.17 cm 0 eV 2.03 keV 59.6 mum 59.6 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -7.62 cm 1.75 cm 1.48 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -7.62 cm 1.75 cm 0 eV 2.97 keV 100 mum 100 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.67 cm 1.41 cm 417 MeV 26.1 keV 6.61 cm 6.61 cm World eIoni + 2 -3.74 mum -10.2 cm 1.89 cm 1.07 GeV 24.5 keV 6.51 cm 13.1 cm World eIoni + 3 -3.48 mum -20 cm 2.22 cm 2.05 GeV 38.9 keV 9.8 cm 22.9 cm World eIoni + 4 -3.9 mum -31.3 cm 2.44 cm 3.18 GeV 49 keV 11.3 cm 34.2 cm World eIoni + 5 -3.9 mum -31.3 cm 2.44 cm 3.18 GeV 0 eV 0 fm 34.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.9 mum -31.3 cm 2.44 cm 1.48 keV 0 eV 0 fm 0 fm World initStep + 1 -3.9 mum -31.3 cm 2.44 cm 440 eV 1.04 keV 50 mum 50 mumOutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.48 mum -20 cm 2.22 cm 1.53 keV 0 eV 0 fm 0 fm World initStep + 1 -3.48 mum -20 cm 2.22 cm 0 eV 3.06 keV 105 mum 105 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.74 mum -10.2 cm 1.89 cm 1.87 keV 0 eV 0 fm 0 fm World initStep + 1 -3.74 mum -10.2 cm 1.89 cm 0 eV 3.73 keV 140 mum 140 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -3.67 cm 1.41 cm 1.58 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.67 cm 1.41 cm 0 eV 3.16 keV 109 mum 109 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12.6 cm 2 cm 1.31 GeV 64.1 keV 17.4 cm 17.4 cm World eIoni + 2 -55.8 nm -14.2 cm 2.05 cm 1.47 GeV 6.23 keV 1.6 cm 19 cm World eIoni + 3 882 nm -20 cm 2.22 cm 2.05 GeV 20.6 keV 5.77 cm 24.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -55.8 nm -14.2 cm 2.05 cm 1.12 keV 0 eV 0 fm 0 fm World initStep + 1 -55.8 nm -14.2 cm 2.05 cm 0 eV 2.25 keV 68.1 mum 68.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -12.6 cm 2 cm 1 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12.6 cm 2 cm 0 eV 2.01 keV 58.7 mum 58.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.8 mm 5.1 mm 78 MeV 3.3 keV 6.01 mm 6.01 mm World eIoni + 2 7.34 mum -3.82 cm 1.43 cm 432 MeV 15 keV 3.7 cm 4.3 cm World eIoni + 3 11.2 mum -20 cm 2.22 cm 2.05 GeV 62.2 keV 16.2 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 7.34 mum -3.82 cm 1.43 cm 2.46 keV 0 eV 0 fm 0 fm World initStep + 1 7.34 mum -3.82 cm 1.43 cm 0 eV 3.78 keV 216 mum 216 mum World eIoni + 2 7.34 mum -3.82 cm 1.43 cm 0 eV 0 eV 0 fm 216 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -2.8 mm 5.1 mm 2.22 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.8 mm 5.1 mm 0 eV 4.44 keV 184 mum 184 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -17.3 cm 2.15 cm 1.78 GeV 77.9 keV 21.3 cm 21.3 cm World eIoni + 2 -162 nm -20 cm 2.22 cm 2.05 GeV 9.55 keV 2.7 cm 24 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -17.3 cm 2.15 cm 1.01 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -17.3 cm 2.15 cm 0 eV 2.02 keV 59.2 mum 59.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.58 cm 1.26 cm 308 MeV 19.1 keV 5.05 cm 5.05 cm World eIoni + 2 2.33 mum -5.73 cm 1.62 cm 623 MeV 13.3 keV 3.18 cm 8.23 cm World eIoni + 3 -4.81 mum -17.4 cm 2.15 cm 1.79 GeV 48.2 keV 11.6 cm 19.9 cm World eIoni + 4 -6.02 mum -20 cm 2.22 cm 2.05 GeV 7.42 keV 2.64 cm 22.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.81 mum -17.4 cm 2.15 cm 1.53 keV 0 eV 0 fm 0 fm World initStep + 1 -4.81 mum -17.4 cm 2.15 cm 0 eV 3.07 keV 105 mum 105 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.33 mum -5.73 cm 1.62 cm 10.5 keV 0 eV 0 fm 0 fm World initStep + 1 2.33 mum -5.73 cm 1.62 cm 5.99 keV 4.53 keV 856 mum 856 mum World eIoni + 2 2.33 mum -5.73 cm 1.62 cm 2.98 keV 3.01 keV 486 mum 1.34 mm World eIoni + 3 2.33 mum -5.73 cm 1.62 cm 0 eV 4.74 keV 272 mum 1.61 mm World eIoni + 4 2.33 mum -5.73 cm 1.62 cm 0 eV 0 eV 0 fm 1.61 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -2.58 cm 1.26 cm 1.09 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.58 cm 1.26 cm 0 eV 2.19 keV 65.5 mum 65.5 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.29 mm 8.21 mm 133 MeV 8.19 keV 1.91 cm 1.91 cm World eIoni + 2 -12.4 mum -20 cm 2.22 cm 2.05 GeV 77.1 keV 19.6 cm 21.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.29 mm 8.21 mm 2.02 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.29 mm 8.21 mm 0 eV 4.04 keV 159 mum 159 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 94.3 keV 24.1 cm 24.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.89 cm 1.31 cm 339 MeV 28.7 keV 5.56 cm 5.56 cm World eIoni + 2 -3.36 mum -8.62 cm 1.81 cm 912 MeV 23.6 keV 5.76 cm 11.3 cm World eIoni + 3 -2.27 mum -11.2 cm 1.94 cm 1.17 GeV 13.1 keV 2.58 cm 13.9 cm World eIoni + 4 -2.09 mum -11.5 cm 1.95 cm 1.2 GeV 539 eV 2.55 mm 14.1 cm World eIoni + 5 -2.05 mum -11.5 cm 1.95 cm 1.2 GeV 96.1 eV 688 mum 14.2 cm World eIoni + 6 4.81 mum -20 cm 2.22 cm 2.05 GeV 30.2 keV 8.48 cm 22.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.05 mum -11.5 cm 1.95 cm 4.29 keV 0 eV 0 fm 0 fm World initStep + 1 -2.05 mum -11.5 cm 1.95 cm 540 eV 3.75 keV 372 mum 372 mum World eIoni + 2 -2.05 mum -11.5 cm 1.95 cm 0 eV 1.08 keV 28.6 mum 401 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.09 mum -11.5 cm 1.95 cm 1.02 keV 0 eV 0 fm 0 fm World initStep + 1 -2.09 mum -11.5 cm 1.95 cm 0 eV 2.03 keV 59.7 mum 59.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -2.27 mum -11.2 cm 1.94 cm 1.78 keV 0 eV 0 fm 0 fm World initStep + 1 -2.27 mum -11.2 cm 1.94 cm 0 eV 3.55 keV 131 mum 131 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.36 mum -8.62 cm 1.81 cm 5.91 keV 0 eV 0 fm 0 fm World initStep + 1 -3.36 mum -8.62 cm 1.81 cm 2.52 keV 1.6 keV 286 mum 286 mum World eIoni + 2 -3.36 mum -8.62 cm 1.81 cm 0 eV 4.81 keV 223 mum 508 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 3 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.36 mum -8.62 cm 1.81 cm 1.79 keV 0 eV 0 fm 0 fm World initStep + 1 -3.36 mum -8.62 cm 1.81 cm 0 eV 3.58 keV 132 mum 132 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -2.89 cm 1.31 cm 1.53 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.89 cm 1.31 cm 0 eV 3.06 keV 105 mum 105 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.67 cm 1.61 cm 617 MeV 35.7 keV 8.82 cm 8.82 cm World eIoni + 2 -10.4 mum -13.7 cm 2.04 cm 1.42 GeV 35.1 keV 8.08 cm 16.9 cm World eIoni + 3 -19.4 mum -20 cm 2.22 cm 2.05 GeV 25.1 keV 6.26 cm 23.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -10.4 mum -13.7 cm 2.04 cm 14.9 keV 0 eV 0 fm 0 fm World initStep + 1 -10.4 mum -13.7 cm 2.04 cm 8.37 keV 6.5 keV 1.34 mm 1.34 mm World eIoni + 2 -10.4 mum -13.7 cm 2.04 cm 1.79 keV 6.58 keV 662 mum 2 mm World eIoni + 3 -10.4 mum -13.7 cm 2.04 cm 0 eV 3.58 keV 132 mum 2.14 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.67 cm 1.61 cm 26.2 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.67 cm 1.61 cm 18.9 keV 7.4 keV 3.24 mm 3.24 mm World eIoni + 2 0 fm -5.67 cm 1.61 cm 12.9 keV 5.98 keV 1.91 mm 5.15 mm World eIoni + 3 0 fm -5.67 cm 1.61 cm 10.7 keV 2.16 keV 1.1 mm 6.25 mm World eIoni + 4 0 fm -5.67 cm 1.61 cm 6.67 keV 4.04 keV 875 mum 7.13 mm World eIoni + 5 0 fm -5.67 cm 1.61 cm 5.21 keV 410 eV 45.5 mum 7.17 mm World eIoni + 6 0 fm -5.67 cm 1.61 cm 0 eV 5.94 keV 434 mum 7.61 mm World eIoni + 7 0 fm -5.67 cm 1.61 cm 0 eV 0 eV 0 fm 7.61 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.67 cm 1.61 cm 1.06 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.67 cm 1.61 cm 0 eV 2.11 keV 62.6 mum 62.6 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -15.1 cm 2.08 cm 1.56 GeV 81.2 keV 18.9 cm 18.9 cm World eIoni + 2 149 nm -17.2 cm 2.15 cm 1.77 GeV 8.13 keV 2.05 cm 21 cm World eIoni + 3 1.51 mum -20 cm 2.22 cm 2.05 GeV 9.33 keV 2.85 cm 23.8 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 149 nm -17.2 cm 2.15 cm 6.8 keV 0 eV 0 fm 0 fm World initStep + 1 149 nm -17.2 cm 2.15 cm 2.1 keV 4.7 keV 543 mum 543 mum World eIoni + 2 149 nm -17.2 cm 2.15 cm 0 eV 4.2 keV 169 mum 712 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -15.1 cm 2.08 cm 3.73 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -15.1 cm 2.08 cm 509 eV 3.22 keV 333 mum 333 mum World eIoni + 2 0 fm -15.1 cm 2.08 cm 0 eV 1.02 keV 26.9 mum 360 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -15.4 cm 2.09 cm 1.59 GeV 77.6 keV 19.3 cm 19.3 cm World eIoni + 2 -797 nm -19.1 cm 2.2 cm 1.96 GeV 18 keV 3.71 cm 23 cm World eIoni + 3 -1.36 mum -57.7 cm 2.75 cm 5.82 GeV 170 keV 38.6 cm 61.6 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -797 nm -19.1 cm 2.2 cm 1.2 keV 0 eV 0 fm 0 fm World initStep + 1 -797 nm -19.1 cm 2.2 cm 0 eV 2.41 keV 74.9 mum 74.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -15.4 cm 2.09 cm 2.44 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -15.4 cm 2.09 cm 0 eV 4.88 keV 213 mum 213 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -237 mum 1.54 mm 52.4 MeV 282 eV 1.57 mm 1.57 mm World eIoni + 2 4.64 mum -4.94 cm 1.55 cm 544 MeV 22.3 keV 5.45 cm 5.61 cm World eIoni + 3 1.06 mum -18.9 cm 2.19 cm 1.94 GeV 55.1 keV 13.9 cm 19.6 cm World eIoni + 4 1.1 mum -20 cm 2.22 cm 2.05 GeV 4.92 keV 1.14 cm 20.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 1.06 mum -18.9 cm 2.19 cm 2.47 keV 0 eV 0 fm 0 fm World initStep + 1 1.06 mum -18.9 cm 2.19 cm 0 eV 4.61 keV 218 mum 218 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4.64 mum -4.94 cm 1.55 cm 1.99 keV 0 eV 0 fm 0 fm World initStep + 1 4.64 mum -4.94 cm 1.55 cm 0 eV 3.98 keV 155 mum 155 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -237 mum 1.54 mm 1.08 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -237 mum 1.54 mm 0 eV 2.16 keV 64.4 mum 64.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -770 mum 2.75 mm 57.7 MeV 865 eV 2.89 mm 2.89 mm World eIoni + 2 37.7 mum -20 cm 2.21 cm 2.05 GeV 82.8 keV 21.4 cm 21.6 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -770 mum 2.75 mm 18.6 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -770 mum 2.75 mm 14 keV 4.55 keV 1.87 mm 1.87 mm World eIoni + 2 0 fm -770 mum 2.75 mm 10.2 keV 3.85 keV 1.24 mm 3.11 mm World eIoni + 3 0 fm -770 mum 2.75 mm 7.23 keV 2.95 keV 823 mum 3.93 mm World eIoni + 4 0 fm -770 mum 2.75 mm 5.56 keV 665 eV 104 mum 4.04 mm World eIoni + 5 0 fm -770 mum 2.75 mm 2.22 keV 3.34 keV 457 mum 4.49 mm World eIoni + 6 0 fm -770 mum 2.75 mm 0 eV 4.45 keV 184 mum 4.68 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -770 mum 2.75 mm 1.01 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -770 mum 2.75 mm 0 eV 2.02 keV 59 mum 59 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.51 mm 7.42 mm 115 MeV 8.91 keV 2.54 cm 2.54 cm World eIoni + 2 -3.85 mum -13.8 cm 2.04 cm 1.43 GeV 55.3 keV 13.9 cm 16.5 cm World eIoni + 3 -5.64 mum -20 cm 2.22 cm 2.05 GeV 25 keV 6.24 cm 22.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.85 mum -13.8 cm 2.04 cm 1.63 keV 0 eV 0 fm 0 fm World initStep + 1 -3.85 mum -13.8 cm 2.04 cm 0 eV 3.26 keV 115 mum 115 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -6.51 mm 7.42 mm 2.26 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.51 mm 7.42 mm 0 eV 4.52 keV 189 mum 189 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.41 cm 1.59 cm 591 MeV 30.8 keV 8.48 cm 8.48 cm World eIoni + 2 4.12 mum -14.7 cm 2.07 cm 1.52 GeV 38.6 keV 9.35 cm 17.8 cm World eIoni + 3 7.27 mum -17.2 cm 2.15 cm 1.77 GeV 13.2 keV 2.48 cm 20.3 cm World eIoni + 4 8.59 mum -18.3 cm 2.18 cm 1.88 GeV 3.31 keV 1.1 cm 21.4 cm World eIoni + 5 10.3 mum -20 cm 2.21 cm 2.05 GeV 8.99 keV 1.67 cm 23.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 8.59 mum -18.3 cm 2.18 cm 1.04 keV 0 eV 0 fm 0 fm World initStep + 1 8.59 mum -18.3 cm 2.18 cm 0 eV 2.09 keV 61.7 mum 61.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 7.27 mum -17.2 cm 2.15 cm 1.19 keV 0 eV 0 fm 0 fm World initStep + 1 7.27 mum -17.2 cm 2.15 cm 0 eV 2.37 keV 73.4 mum 73.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4.12 mum -14.7 cm 2.07 cm 45.4 keV 0 eV 0 fm 0 fm World initStep + 1 4.12 mum -14.7 cm 2.07 cm 33.8 keV 11.6 keV 8.26 mm 8.26 mm World eIoni + 2 4.12 mum -14.7 cm 2.07 cm 25.4 keV 8.42 keV 4.96 mm 1.32 cm World eIoni + 3 4.12 mum -14.7 cm 2.07 cm 15.7 keV 6.33 keV 2.57 mm 1.58 cm World eIoni + 4 4.12 mum -14.7 cm 2.07 cm 11.4 keV 4.28 keV 1.45 mm 1.72 cm World eIoni + 5 4.12 mum -14.7 cm 2.07 cm 7.25 keV 4.14 keV 943 mum 1.82 cm World eIoni + 6 4.12 mum -14.7 cm 2.07 cm 5.02 keV 928 eV 330 mum 1.85 cm World eIoni + 7 4.12 mum -14.7 cm 2.07 cm 1.15 keV 3.87 keV 421 mum 1.89 cm World eIoni + 8 4.12 mum -14.7 cm 2.07 cm 0 eV 2.3 keV 70.1 mum 1.9 cm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 3 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4.12 mum -14.7 cm 2.07 cm 1.3 keV 0 eV 0 fm 0 fm World initStep + 1 4.12 mum -14.7 cm 2.07 cm 0 eV 2.6 keV 83.1 mum 83.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 3 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4.12 mum -14.7 cm 2.07 cm 3.38 keV 0 eV 0 fm 0 fm World initStep + 1 4.12 mum -14.7 cm 2.07 cm 190 eV 3.19 keV 306 mum 306 mum World eIoni + 2 4.12 mum -14.7 cm 2.07 cm 0 eV 380 eV 13.2 mum 319 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.41 cm 1.59 cm 1.98 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.41 cm 1.59 cm 0 eV 3.96 keV 154 mum 154 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.01 cm 1.83 cm 951 MeV 48.6 keV 13.4 cm 13.4 cm World eIoni + 2 534 nm -12.9 cm 2.01 cm 1.34 GeV 18.1 keV 3.88 cm 17.2 cm World eIoni + 3 2.16 mum -20 cm 2.22 cm 2.05 GeV 30.4 keV 7.12 cm 24.4 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 534 nm -12.9 cm 2.01 cm 1.43 keV 0 eV 0 fm 0 fm World initStep + 1 534 nm -12.9 cm 2.01 cm 0 eV 2.85 keV 95 mum 95 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -9.01 cm 1.83 cm 2.45 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.01 cm 1.83 cm 0 eV 4.89 keV 214 mum 214 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.09 cm 9.19 mm 159 MeV 7.88 keV 2.96 cm 2.96 cm World eIoni + 2 1.82 mum -11.6 cm 1.96 cm 1.21 GeV 41.4 keV 10.6 cm 13.6 cm World eIoni + 3 3.94 mum -19.2 cm 2.2 cm 1.97 GeV 29 keV 7.6 cm 21.2 cm World eIoni + 4 4.25 mum -24.6 cm 2.32 cm 2.51 GeV 26.4 keV 5.39 cm 26.6 cm World eIoni + 5 4.25 mum -24.6 cm 2.32 cm 2.51 GeV 0 eV 0 fm 26.6 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 4.25 mum -24.6 cm 2.32 cm 2.23 keV 0 eV 0 fm 0 fm World initStep + 1 4.25 mum -24.6 cm 2.32 cm 1 keV 1.23 keV 92.2 mum 92.2 mumOutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 3.94 mum -19.2 cm 2.2 cm 1.06 keV 0 eV 0 fm 0 fm World initStep + 1 3.94 mum -19.2 cm 2.2 cm 0 eV 2.11 keV 62.6 mum 62.6 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 1.82 mum -11.6 cm 1.96 cm 1.28 keV 0 eV 0 fm 0 fm World initStep + 1 1.82 mum -11.6 cm 1.96 cm 0 eV 2.56 keV 81.4 mum 81.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.09 cm 9.19 mm 3.4 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.09 cm 9.19 mm 0 eV 3.58 keV 307 mum 307 mum World eIoni + 2 0 fm -1.09 cm 9.19 mm 0 eV 0 eV 0 fm 307 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.8 cm 1.11 cm 230 MeV 15.1 keV 3.79 cm 3.79 cm World eIoni + 2 5.21 mum -12.2 cm 1.98 cm 1.27 GeV 39.4 keV 10.4 cm 14.2 cm WorldTransportation + 3 5.21 mum -12.2 cm 1.98 cm 1.27 GeV 0 eV 0 fm 14.2 cm World eIoni + 4 8.3 mum -20 cm 2.22 cm 2.05 GeV 30.3 keV 7.83 cm 22 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 5.21 mum -12.2 cm 1.98 cm 1.71 keV 0 eV 0 fm 0 fm World initStep + 1 5.21 mum -12.2 cm 1.98 cm 0 eV 3.43 keV 124 mum 124 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.8 cm 1.11 cm 6.5 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.8 cm 1.11 cm 2.86 keV 3.64 keV 522 mum 522 mum World eIoni + 2 0 fm -1.8 cm 1.11 cm 0 eV 3.33 keV 260 mum 782 mum World eIoni + 3 0 fm -1.8 cm 1.11 cm 0 eV 0 eV 0 fm 782 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.38 cm 1.01 cm 188 MeV 13 keV 3.38 cm 3.38 cm World eIoni + 2 -3.8 mum -5.03 cm 1.56 cm 553 MeV 14.3 keV 3.69 cm 7.07 cm World eIoni + 3 -4.26 mum -5.71 cm 1.62 cm 621 MeV 5.47 keV 6.89 mm 7.76 cm World eIoni + 4 -4.71 mum -6.23 cm 1.66 cm 673 MeV 2.28 keV 5.18 mm 8.28 cm World eIoni + 5 -4.65 mum -10.4 cm 1.9 cm 1.09 GeV 17.5 keV 4.14 cm 12.4 cm World eIoni + 6 -4.63 mum -10.6 cm 1.91 cm 1.11 GeV 1.14 keV 2.77 mm 12.7 cm World eIoni + 7 -7.52 mum -17 cm 2.14 cm 1.75 GeV 27.7 keV 6.37 cm 19.1 cm World eIoni + 8 -7.99 mum -20 cm 2.22 cm 2.05 GeV 15.3 keV 3 cm 22.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 8, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.52 mum -17 cm 2.14 cm 1.32 keV 0 eV 0 fm 0 fm World initStep + 1 -7.52 mum -17 cm 2.14 cm 0 eV 2.65 keV 85.1 mum 85.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.63 mum -10.6 cm 1.91 cm 5.86 keV 0 eV 0 fm 0 fm World initStep + 1 -4.63 mum -10.6 cm 1.91 cm 2.21 keV 3.65 keV 477 mum 477 mum World eIoni + 2 -4.63 mum -10.6 cm 1.91 cm 0 eV 4.43 keV 183 mum 660 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.65 mum -10.4 cm 1.9 cm 1.1 keV 0 eV 0 fm 0 fm World initStep + 1 -4.65 mum -10.4 cm 1.9 cm 0 eV 2.2 keV 66.1 mum 66.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.71 mum -6.23 cm 1.66 cm 3.49 keV 0 eV 0 fm 0 fm World initStep + 1 -4.71 mum -6.23 cm 1.66 cm 0 eV 4.27 keV 315 mum 315 mum World eIoni + 2 -4.71 mum -6.23 cm 1.66 cm 0 eV 0 eV 0 fm 315 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -4.26 mum -5.71 cm 1.62 cm 6.37 keV 0 eV 0 fm 0 fm World initStep + 1 -4.26 mum -5.71 cm 1.62 cm 2 keV 4.37 keV 513 mum 513 mum World eIoni + 2 -4.26 mum -5.71 cm 1.62 cm 0 eV 3.99 keV 156 mum 669 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -3.8 mum -5.03 cm 1.56 cm 1.61 keV 0 eV 0 fm 0 fm World initStep + 1 -3.8 mum -5.03 cm 1.56 cm 0 eV 3.22 keV 113 mum 113 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.38 cm 1.01 cm 1.32 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.38 cm 1.01 cm 0 eV 2.65 keV 85.2 mum 85.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -91.3 mum 959 mum 50.9 MeV 116 eV 965 mum 965 mum World eIoni + 2 -10.3 mum -16.7 cm 2.13 cm 1.72 GeV 70.8 keV 18.3 cm 18.4 cm World eIoni + 3 -10.2 mum -20 cm 2.22 cm 2.05 GeV 15.5 keV 3.3 cm 21.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -10.3 mum -16.7 cm 2.13 cm 1.13 keV 0 eV 0 fm 0 fm World initStep + 1 -10.3 mum -16.7 cm 2.13 cm 0 eV 2.25 keV 68.2 mum 68.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -91.3 mum 959 mum 1.02 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -91.3 mum 959 mum 0 eV 2.04 keV 60 mum 60 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 85.3 keV 24.1 cm 24.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.76 cm 1.62 cm 626 MeV 33.1 keV 8.13 cm 8.13 cm World eIoni + 2 -7.25 mum -16.7 cm 2.13 cm 1.72 GeV 43.5 keV 10.9 cm 19.1 cm World eIoni + 3 -8.93 mum -20 cm 2.22 cm 2.05 GeV 11.8 keV 3.31 cm 22.4 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.25 mum -16.7 cm 2.13 cm 2.02 keV 0 eV 0 fm 0 fm World initStep + 1 -7.25 mum -16.7 cm 2.13 cm 0 eV 4.05 keV 159 mum 159 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.76 cm 1.62 cm 6.68 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.76 cm 1.62 cm 3.96 keV 523 eV 67.5 mum 67.5 mum World eIoni + 2 0 fm -5.76 cm 1.62 cm 0 eV 5.48 keV 348 mum 416 mum World eIoni + 3 0 fm -5.76 cm 1.62 cm 0 eV 0 eV 0 fm 416 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.76 cm 1.62 cm 2.2 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.76 cm 1.62 cm 0 eV 4.4 keV 181 mum 181 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.67 cm 1.28 cm 317 MeV 19.8 keV 4.76 cm 4.76 cm World eIoni + 2 6.44 mum -8.18 cm 1.79 cm 868 MeV 24.2 keV 5.54 cm 10.3 cm World eIoni + 3 8.16 mum -9.17 cm 1.84 cm 967 MeV 4.3 keV 9.89 mm 11.3 cm World eIoni + 4 22 mum -20 cm 2.22 cm 2.05 GeV 49.3 keV 10.8 cm 22.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 8.16 mum -9.17 cm 1.84 cm 1 keV 0 eV 0 fm 0 fm World initStep + 1 8.16 mum -9.17 cm 1.84 cm 0 eV 2.01 keV 58.8 mum 58.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 6.44 mum -8.18 cm 1.79 cm 15.3 keV 0 eV 0 fm 0 fm World initStep + 1 6.44 mum -8.18 cm 1.79 cm 11.2 keV 4.11 keV 1.4 mm 1.4 mm World eIoni + 2 6.44 mum -8.18 cm 1.79 cm 6.86 keV 4.32 keV 923 mum 2.32 mm World eIoni + 3 6.44 mum -8.18 cm 1.79 cm 3.22 keV 3.64 keV 547 mum 2.87 mm World eIoni + 4 6.44 mum -8.18 cm 1.79 cm 0 eV 4.8 keV 293 mum 3.16 mm World eIoni + 5 6.44 mum -8.18 cm 1.79 cm 0 eV 0 eV 0 fm 3.16 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -2.67 cm 1.28 cm 4.18 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -2.67 cm 1.28 cm 0 eV 6.18 keV 365 mum 365 mum World eIoni + 2 0 fm -2.67 cm 1.28 cm 0 eV 0 eV 0 fm 365 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -85 mum 925 mum 50.8 MeV 119 eV 931 mum 931 mum World eIoni + 2 -10.2 mum -5.7 cm 1.62 cm 620 MeV 20.8 keV 6.36 cm 6.45 cm World eIoni + 3 -19.2 mum -12 cm 1.97 cm 1.25 GeV 25.3 keV 6.36 cm 12.8 cm World eIoni + 4 -19.9 mum -12.5 cm 1.99 cm 1.3 GeV 3 keV 4.59 mm 13.3 cm World eIoni + 5 -26.6 mum -20 cm 2.22 cm 2.05 GeV 32.8 keV 7.5 cm 20.8 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -19.9 mum -12.5 cm 1.99 cm 3.37 keV 0 eV 0 fm 0 fm World initStep + 1 -19.9 mum -12.5 cm 1.99 cm 0 eV 4.64 keV 305 mum 305 mum World eIoni + 2 -19.9 mum -12.5 cm 1.99 cm 0 eV 0 eV 0 fm 305 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -19.2 mum -12 cm 1.97 cm 6.97 keV 0 eV 0 fm 0 fm World initStep + 1 -19.2 mum -12 cm 1.97 cm 3.49 keV 3.48 keV 554 mum 554 mum World eIoni + 2 -19.2 mum -12 cm 1.97 cm 0 eV 4.35 keV 315 mum 869 mum World eIoni + 3 -19.2 mum -12 cm 1.97 cm 0 eV 0 eV 0 fm 869 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -10.2 mum -5.7 cm 1.62 cm 11.3 keV 0 eV 0 fm 0 fm World initStep + 1 -10.2 mum -5.7 cm 1.62 cm 7.77 keV 3.51 keV 932 mum 932 mum World eIoni + 2 -10.2 mum -5.7 cm 1.62 cm 4.04 keV 3.73 keV 616 mum 1.55 mm World eIoni + 3 -10.2 mum -5.7 cm 1.62 cm 0 eV 4.33 keV 354 mum 1.9 mm World eIoni + 4 -10.2 mum -5.7 cm 1.62 cm 0 eV 0 eV 0 fm 1.9 mm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -85 mum 925 mum 1.41 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -85 mum 925 mum 0 eV 2.83 keV 93.8 mum 93.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -11.5 cm 1.95 cm 1.2 GeV 59.7 keV 15.6 cm 15.6 cm World eIoni + 2 -894 nm -16 cm 2.11 cm 1.65 GeV 24 keV 4.53 cm 20.2 cm World eIoni + 3 -979 nm -16.3 cm 2.12 cm 1.67 GeV 2.21 keV 2.47 mm 20.4 cm World eBrem + 4 -2.03 mum -20 cm 2.21 cm 2.05 GeV 17 keV 3.74 cm 24.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -979 nm -16.3 cm 2.12 cm 1.14 MeV 0 eV 0 fm 0 fm World initStep + 1 -19.1 mum -20 cm 2.23 cm 1.14 MeV 0 eV 3.74 cm 3.74 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -894 nm -16 cm 2.11 cm 1.18 keV 0 eV 0 fm 0 fm World initStep + 1 -894 nm -16 cm 2.11 cm 0 eV 2.35 keV 72.5 mum 72.5 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -11.5 cm 1.95 cm 1.24 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -11.5 cm 1.95 cm 0 eV 2.49 keV 78.3 mum 78.3 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.6 mm 8.34 mm 136 MeV 9.61 keV 2.59 cm 2.59 cm World eIoni + 2 6.56 mum -6.65 cm 1.69 cm 715 MeV 21.6 keV 5.87 cm 8.46 cm World eIoni + 3 13 mum -20 cm 2.22 cm 2.05 GeV 58.2 keV 13.4 cm 21.8 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 6.56 mum -6.65 cm 1.69 cm 2.19 keV 0 eV 0 fm 0 fm World initStep + 1 6.56 mum -6.65 cm 1.69 cm 0 eV 4.38 keV 180 mum 180 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.6 mm 8.34 mm 6.56 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.6 mm 8.34 mm 2.36 keV 4.2 keV 526 mum 526 mum World eIoni + 2 0 fm -8.6 mm 8.34 mm 0 eV 4.72 keV 202 mum 728 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -913 mum 2.99 mm 59.1 MeV 1.43 keV 3.17 mm 3.17 mm World eIoni + 2 22.7 mum -11.5 cm 1.95 cm 1.2 GeV 46.2 keV 11.9 cm 12.2 cm World eIoni + 3 24.8 mum -14.2 cm 2.05 cm 1.47 GeV 11.3 keV 2.72 cm 15 cm World eIoni + 4 28.4 mum -19.7 cm 2.21 cm 2.02 GeV 23 keV 5.53 cm 20.5 cm World eIoni + 5 32.5 mum -27.3 cm 2.38 cm 2.78 GeV 35.5 keV 7.64 cm 28.1 cm World eIoni + 6 32.5 mum -27.3 cm 2.38 cm 2.78 GeV 0 eV 0 fm 28.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 32.5 mum -27.3 cm 2.38 cm 1.25 keV 0 eV 0 fm 0 fm World initStep + 1 32.5 mum -27.3 cm 2.38 cm 473 eV 778 eV 39.4 mum 39.4 mumOutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 28.4 mum -19.7 cm 2.21 cm 1.13 keV 0 eV 0 fm 0 fm World initStep + 1 28.4 mum -19.7 cm 2.21 cm 0 eV 2.25 keV 68.2 mum 68.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 24.8 mum -14.2 cm 2.05 cm 1.08 keV 0 eV 0 fm 0 fm World initStep + 1 24.8 mum -14.2 cm 2.05 cm 0 eV 2.15 keV 64.3 mum 64.3 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 22.7 mum -11.5 cm 1.95 cm 1.13 keV 0 eV 0 fm 0 fm World initStep + 1 22.7 mum -11.5 cm 1.95 cm 0 eV 2.27 keV 68.9 mum 68.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -913 mum 2.99 mm 5.22 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -913 mum 2.99 mm 825 eV 4.4 keV 435 mum 435 mum World eIoni + 2 0 fm -913 mum 2.99 mm 0 eV 1.65 keV 45.9 mum 481 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.97 cm 1.15 cm 247 MeV 19.5 keV 4.09 cm 4.09 cm World eIoni + 2 2.45 mum -4.04 cm 1.46 cm 454 MeV 9.36 keV 2.09 cm 6.17 cm World eIoni + 3 13.1 mum -13.2 cm 2.02 cm 1.37 GeV 35.7 keV 9.13 cm 15.3 cm World eIoni + 4 15.6 mum -20 cm 2.22 cm 2.05 GeV 30.5 keV 6.85 cm 22.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 13.1 mum -13.2 cm 2.02 cm 1.23 keV 0 eV 0 fm 0 fm World initStep + 1 13.1 mum -13.2 cm 2.02 cm 0 eV 2.47 keV 77.4 mum 77.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.45 mum -4.04 cm 1.46 cm 3.1 keV 0 eV 0 fm 0 fm World initStep + 1 2.45 mum -4.04 cm 1.46 cm 0 eV 4.07 keV 283 mum 283 mum World eIoni + 2 2.45 mum -4.04 cm 1.46 cm 0 eV 0 eV 0 fm 283 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.97 cm 1.15 cm 1.91 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.97 cm 1.15 cm 0 eV 3.83 keV 146 mum 146 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.41 cm 1.85 cm 991 MeV 55.9 keV 13.9 cm 13.9 cm World eIoni + 2 422 nm -18.5 cm 2.18 cm 1.9 GeV 36.4 keV 9.07 cm 23 cm World eIoni + 3 257 nm -20 cm 2.22 cm 2.05 GeV 7.56 keV 1.52 cm 24.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 422 nm -18.5 cm 2.18 cm 3.81 keV 0 eV 0 fm 0 fm World initStep + 1 422 nm -18.5 cm 2.18 cm 0 eV 4.26 keV 338 mum 338 mum World eIoni + 2 422 nm -18.5 cm 2.18 cm 0 eV 0 eV 0 fm 338 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -9.41 cm 1.85 cm 1.55 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -9.41 cm 1.85 cm 0 eV 3.1 keV 107 mum 107 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.58 mm 3.89 mm 65.7 MeV 1.26 keV 4.29 mm 4.29 mm World eIoni + 2 -6.13 mum -5.18 cm 1.57 cm 568 MeV 21.9 keV 5.23 cm 5.66 cm World eIoni + 3 -19.4 mum -20 cm 2.22 cm 2.05 GeV 68.3 keV 14.8 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -6.13 mum -5.18 cm 1.57 cm 5.98 keV 0 eV 0 fm 0 fm World initStep + 1 -6.13 mum -5.18 cm 1.57 cm 3.73 keV 731 eV 126 mum 126 mum World eIoni + 2 -6.13 mum -5.18 cm 1.57 cm 565 eV 3.17 keV 333 mum 460 mum World eIoni + 3 -6.13 mum -5.18 cm 1.57 cm 0 eV 1.13 keV 29.9 mum 490 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 3 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -6.13 mum -5.18 cm 1.57 cm 1.52 keV 0 eV 0 fm 0 fm World initStep + 1 -6.13 mum -5.18 cm 1.57 cm 0 eV 3.03 keV 103 mum 103 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.58 mm 3.89 mm 1.49 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.58 mm 3.89 mm 0 eV 2.98 keV 101 mum 101 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -4.33 cm 1.49 cm 483 MeV 27.8 keV 7.55 cm 7.55 cm World eIoni + 2 -132 nm -10.7 cm 1.92 cm 1.12 GeV 27 keV 6.38 cm 13.9 cm World eIoni + 3 -2.09 mum -20 cm 2.22 cm 2.05 GeV 44.1 keV 9.31 cm 23.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -132 nm -10.7 cm 1.92 cm 1.04 keV 0 eV 0 fm 0 fm World initStep + 1 -132 nm -10.7 cm 1.92 cm 0 eV 2.08 keV 61.5 mum 61.5 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -4.33 cm 1.49 cm 1.35 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -4.33 cm 1.49 cm 0 eV 2.7 keV 87.4 mum 87.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 89.5 keV 24.2 cm 24.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -16.1 cm 2.11 cm 1.66 GeV 75.8 keV 20 cm 20 cm World eIoni + 2 -847 nm -20 cm 2.22 cm 2.05 GeV 16.6 keV 3.95 cm 23.9 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -16.1 cm 2.11 cm 2.32 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -16.1 cm 2.11 cm 0 eV 4.64 keV 197 mum 197 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12 cm 1.97 cm 1.25 GeV 62.4 keV 16.3 cm 16.3 cm World eIoni + 2 963 nm -20 cm 2.21 cm 2.05 GeV 31.2 keV 7.99 cm 24.3 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -12 cm 1.97 cm 1.69 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12 cm 1.97 cm 0 eV 3.38 keV 122 mum 122 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -20 cm 2.22 cm 2.05 GeV 95.1 keV 25.3 cm 25.3 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.69 mm 7.51 mm 117 MeV 10.8 keV 2.36 cm 2.36 cm World eIoni + 2 -1.64 mum -1.67 cm 1.08 cm 217 MeV 3.31 keV 1.06 cm 3.42 cm World eIoni + 3 -5.82 mum -14.2 cm 2.05 cm 1.47 GeV 56.4 keV 12.6 cm 16 cm World eIoni + 4 -6.72 mum -20 cm 2.22 cm 2.05 GeV 22.6 keV 5.81 cm 21.8 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -5.82 mum -14.2 cm 2.05 cm 1.48 keV 0 eV 0 fm 0 fm World initStep + 1 -5.82 mum -14.2 cm 2.05 cm 0 eV 2.95 keV 99.7 mum 99.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.64 mum -1.67 cm 1.08 cm 1.5 keV 0 eV 0 fm 0 fm World initStep + 1 -1.64 mum -1.67 cm 1.08 cm 0 eV 3.01 keV 102 mum 102 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -6.69 mm 7.51 mm 4.45 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -6.69 mm 7.51 mm 614 eV 3.83 keV 383 mum 383 mum World eIoni + 2 0 fm -6.69 mm 7.51 mm 0 eV 1.23 keV 32.6 mum 416 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -16 cm 2.11 cm 1.65 GeV 80.1 keV 19.9 cm 19.9 cm World eIoni + 2 681 nm -20 cm 2.22 cm 2.05 GeV 16.5 keV 3.97 cm 23.9 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -16 cm 2.11 cm 1.1 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -16 cm 2.11 cm 0 eV 2.2 keV 66.1 mum 66.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -11.9 cm 1.97 cm 1.24 GeV 60.7 keV 16.1 cm 16.1 cm World eIoni + 2 1.86 mum -20 cm 2.22 cm 2.05 GeV 35.2 keV 8.13 cm 24.2 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -11.9 cm 1.97 cm 2.58 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -11.9 cm 1.97 cm 0 eV 5.16 keV 230 mum 230 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.43 cm 1.59 cm 593 MeV 34.1 keV 8.51 cm 8.51 cm World eIoni + 2 5.17 mum -20 cm 2.21 cm 2.05 GeV 66.9 keV 14.6 cm 23.1 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -5.43 cm 1.59 cm 1.73 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -5.43 cm 1.59 cm 0 eV 3.47 keV 126 mum 126 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.25 cm 1.79 cm 875 MeV 41.2 keV 10.6 cm 10.6 cm World eIoni + 2 -619 nm -20 cm 2.22 cm 2.05 GeV 53.4 keV 11.8 cm 22.3 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -8.25 cm 1.79 cm 1.12 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -8.25 cm 1.79 cm 0 eV 2.25 keV 68 mum 68 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -4.03 mm 6.02 mm 90.3 MeV 2.39 keV 7.55 mm 7.55 mm World eIoni + 2 2.06 mum -3.73 cm 1.42 cm 423 MeV 14.3 keV 3.45 cm 4.21 cm World eIoni + 3 3.1 mum -4.67 cm 1.53 cm 517 MeV 4.73 keV 9.44 mm 5.15 cm World eIoni + 4 3.16 mum -4.72 cm 1.53 cm 522 MeV 94.8 eV 443 mum 5.2 cm World eIoni + 5 3.3 mum -4.8 cm 1.54 cm 530 MeV 368 eV 832 mum 5.28 cm World eIoni + 6 12.2 mum -10.3 cm 1.9 cm 1.08 GeV 24.9 keV 5.48 cm 10.8 cm World eIoni + 7 22.9 mum -20 cm 2.22 cm 2.05 GeV 40.6 keV 9.74 cm 20.5 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 12.2 mum -10.3 cm 1.9 cm 2.28 keV 0 eV 0 fm 0 fm World initStep + 1 12.2 mum -10.3 cm 1.9 cm 0 eV 4.55 keV 191 mum 191 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 3.3 mum -4.8 cm 1.54 cm 1.35 keV 0 eV 0 fm 0 fm World initStep + 1 3.3 mum -4.8 cm 1.54 cm 0 eV 2.7 keV 87.4 mum 87.4 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 3.16 mum -4.72 cm 1.53 cm 1.69 keV 0 eV 0 fm 0 fm World initStep + 1 3.16 mum -4.72 cm 1.53 cm 0 eV 3.38 keV 121 mum 121 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 3.1 mum -4.67 cm 1.53 cm 3.38 keV 0 eV 0 fm 0 fm World initStep + 1 3.1 mum -4.67 cm 1.53 cm 0 eV 4.61 keV 306 mum 306 mum World eIoni + 2 3.1 mum -4.67 cm 1.53 cm 0 eV 0 eV 0 fm 306 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 2.06 mum -3.73 cm 1.42 cm 1.53 keV 0 eV 0 fm 0 fm World initStep + 1 2.06 mum -3.73 cm 1.42 cm 0 eV 3.05 keV 104 mum 104 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -4.03 mm 6.02 mm 1.2 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -4.03 mm 6.02 mm 0 eV 2.41 keV 74.8 mum 74.8 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12.4 cm 1.99 cm 1.29 GeV 67 keV 17 cm 17 cm World eIoni + 2 -8.46 mum -19.9 cm 2.22 cm 2.04 GeV 31.4 keV 7.52 cm 24.6 cm World eIoni + 3 -17.7 mum -32.9 cm 2.47 cm 3.34 GeV 53.9 keV 13 cm 37.6 cm World eIoni + 4 -17.7 mum -32.9 cm 2.47 cm 3.34 GeV 0 eV 0 fm 37.6 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -17.7 mum -32.9 cm 2.47 cm 1.61 keV 0 eV 0 fm 0 fm World initStep + 1 -17.7 mum -32.9 cm 2.47 cm 81.2 eV 1.53 keV 56.4 mum 56.4 mumOutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -8.46 mum -19.9 cm 2.22 cm 3.24 keV 0 eV 0 fm 0 fm World initStep + 1 -8.46 mum -19.9 cm 2.22 cm 0 eV 6.16 keV 294 mum 294 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -12.4 cm 1.99 cm 36.6 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12.4 cm 1.99 cm 32.4 keV 3.16 keV 1.22 mm 1.22 mm World eIoni + 2 0 fm -12.4 cm 1.99 cm 23.3 keV 9.02 keV 4.61 mm 5.82 mm World eIoni + 3 0 fm -12.4 cm 1.99 cm 19.4 keV 3.9 keV 2.67 mm 8.5 mm World eIoni + 4 0 fm -12.4 cm 1.99 cm 16.6 keV 2.81 keV 2 mm 1.05 cm World eIoni + 5 0 fm -12.4 cm 1.99 cm 12.6 keV 3.99 keV 1.58 mm 1.21 cm World eIoni + 6 0 fm -12.4 cm 1.99 cm 7.65 keV 1.63 keV 501 mum 1.26 cm World eIoni + 7 0 fm -12.4 cm 1.99 cm 5.3 keV 452 eV 199 mum 1.28 cm World eIoni + 8 0 fm -12.4 cm 1.99 cm 1.8 keV 3.5 keV 440 mum 1.32 cm World eIoni + 9 0 fm -12.4 cm 1.99 cm 0 eV 3.61 keV 134 mum 1.33 cm World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 7, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -12.4 cm 1.99 cm 1.9 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12.4 cm 1.99 cm 0 eV 3.79 keV 144 mum 144 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 6, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -12.4 cm 1.99 cm 3.36 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12.4 cm 1.99 cm 0 eV 4.05 keV 303 mum 303 mum World eIoni + 2 0 fm -12.4 cm 1.99 cm 0 eV 0 eV 0 fm 303 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -12.4 cm 1.99 cm 1.05 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -12.4 cm 1.99 cm 0 eV 2.09 keV 61.9 mum 61.9 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.28 cm 1.37 cm 378 MeV 22.7 keV 5.67 cm 5.67 cm World eIoni + 2 6.56 mum -20 cm 2.22 cm 2.05 GeV 71.1 keV 17.6 cm 23.3 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -3.28 cm 1.37 cm 3.73 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -3.28 cm 1.37 cm 0 eV 4.64 keV 333 mum 333 mum World eIoni + 2 0 fm -3.28 cm 1.37 cm 0 eV 0 eV 0 fm 333 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.08 cm 9.15 mm 158 MeV 12.2 keV 2.84 cm 2.84 cm World eIoni + 2 -8.55 mum -20 cm 2.22 cm 2.05 GeV 76.8 keV 19.5 cm 22.3 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -1.08 cm 9.15 mm 1.07 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -1.08 cm 9.15 mm 0 eV 2.14 keV 63.7 mum 63.7 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -130 mum 1.14 mm 51.3 MeV 313 eV 1.15 mm 1.15 mm World eIoni + 2 -7.9 mum -5.77 cm 1.62 cm 627 MeV 27.2 keV 6.39 cm 6.5 cm World eIoni + 3 -6.7 mum -20 cm 2.22 cm 2.05 GeV 68.1 keV 14.2 cm 20.7 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -7.9 mum -5.77 cm 1.62 cm 1.95 keV 0 eV 0 fm 0 fm World initStep + 1 -7.9 mum -5.77 cm 1.62 cm 0 eV 3.91 keV 151 mum 151 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -130 mum 1.14 mm 995 eV 0 eV 0 fm 0 fm World initStep + 1 0 fm -130 mum 1.14 mm 0 eV 1.99 keV 58.1 mum 58.1 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm 0 fm 0 fm 50 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm -17.5 cm 2.16 cm 1.8 GeV 86.2 keV 21.5 cm 21.5 cm World eIoni + 2 -506 nm -19.4 cm 2.21 cm 1.99 GeV 12.1 keV 1.88 cm 23.4 cm World eIoni + 3 -579 nm -19.7 cm 2.21 cm 2.02 GeV 1.97 keV 2.97 mm 23.7 cm World eIoni + 4 -1.11 mum -23 cm 2.29 cm 2.35 GeV 12.1 keV 3.32 cm 27 cm World eIoni + 5 -1.11 mum -23 cm 2.29 cm 2.35 GeV 0 eV 0 fm 27 cm OutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -1.11 mum -23 cm 2.29 cm 2.76 keV 0 eV 0 fm 0 fm World initStep + 1 -1.11 mum -23 cm 2.29 cm 568 eV 2.19 keV 124 mum 124 mumOutOfWorldTransportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -579 nm -19.7 cm 2.21 cm 1.17 keV 0 eV 0 fm 0 fm World initStep + 1 -579 nm -19.7 cm 2.21 cm 0 eV 2.34 keV 72.2 mum 72.2 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 -506 nm -19.4 cm 2.21 cm 1.21 keV 0 eV 0 fm 0 fm World initStep + 1 -506 nm -19.4 cm 2.21 cm 0 eV 2.41 keV 75 mum 75 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng NextVolu Process + 0 0 fm -17.5 cm 2.16 cm 2.59 keV 0 eV 0 fm 0 fm World initStep + 1 0 fm -17.5 cm 2.16 cm 0 eV 4.25 keV 231 mum 231 mum World eIoni +Run terminated. +Run Summary + Number of events processed : 100 + User=0.62s Real=1.29s Sys=0.67s +Graphics systems deleted. +Visualization Manager deleting... +G4 kernel has come to Quit state. diff --git a/examples/extended/field/field02/include/F02CalorHit.hh b/examples/extended/field/field02/include/F02CalorHit.hh new file mode 100644 index 0000000000..2bb735cca6 --- /dev/null +++ b/examples/extended/field/field02/include/F02CalorHit.hh @@ -0,0 +1,97 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02CalorHit.hh,v 1.2 2001/07/11 09:58:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02CalorHit_h +#define F02CalorHit_h 1 + +#include "G4VHit.hh" +#include "G4THitsCollection.hh" +#include "G4Allocator.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02CalorHit : public G4VHit +{ + public: + + F02CalorHit(); + ~F02CalorHit(); + F02CalorHit(const F02CalorHit&); + const F02CalorHit& operator=(const F02CalorHit&); + int operator==(const F02CalorHit&) const; + + inline void* operator new(size_t); + inline void operator delete(void*); + + void Print(); + + public: + + void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;}; + void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;}; + + G4double GetEdepAbs() { return EdepAbs; }; + G4double GetTrakAbs() { return TrackLengthAbs; }; + G4double GetEdepGap() { return EdepGap; }; + G4double GetTrakGap() { return TrackLengthGap; }; + + private: + + G4double EdepAbs, TrackLengthAbs; + G4double EdepGap, TrackLengthGap; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +typedef G4THitsCollection F02CalorHitsCollection; + +extern G4Allocator F02CalorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void* F02CalorHit::operator new(size_t) +{ + void* aHit; + aHit = (void*) F02CalorHitAllocator.MallocSingle(); + return aHit; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void F02CalorHit::operator delete(void* aHit) +{ + F02CalorHitAllocator.FreeSingle((F02CalorHit*) aHit); +} + +#endif + + diff --git a/examples/extended/field/field02/include/F02CalorimeterSD.hh b/examples/extended/field/field02/include/F02CalorimeterSD.hh new file mode 100644 index 0000000000..9de138482c --- /dev/null +++ b/examples/extended/field/field02/include/F02CalorimeterSD.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02CalorimeterSD.hh,v 1.3 2001/10/15 17:20:40 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02CalorimeterSD_h +#define F02CalorimeterSD_h 1 + +#include "globals.hh" +#include "G4VSensitiveDetector.hh" +#include "F02CalorHit.hh" + +class F02DetectorConstruction; +class G4HCofThisEvent; +class G4Step; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02CalorimeterSD : public G4VSensitiveDetector +{ + public: + + F02CalorimeterSD(G4String, F02DetectorConstruction* ); + ~F02CalorimeterSD(); + + void Initialize(G4HCofThisEvent*); + G4bool ProcessHits(G4Step*,G4TouchableHistory*); + void EndOfEvent(G4HCofThisEvent*); + void clear(); + void PrintAll(); + + private: + + F02CalorHitsCollection* CalCollection; + F02DetectorConstruction* Detector; + G4int* HitID; +}; + +#endif + diff --git a/examples/extended/field/field02/include/F02DetectorConstruction.hh b/examples/extended/field/field02/include/F02DetectorConstruction.hh new file mode 100644 index 0000000000..926d862d7c --- /dev/null +++ b/examples/extended/field/field02/include/F02DetectorConstruction.hh @@ -0,0 +1,135 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02DetectorConstruction.hh,v 1.4 2001/10/25 09:30:13 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef F02DetectorConstruction_h +#define F02DetectorConstruction_h 1 + +#include "G4VUserDetectorConstruction.hh" +#include "globals.hh" +#include "G4ios.hh" + +class G4Box; +class G4Tubs; +class G4LogicalVolume; +class G4VPhysicalVolume; +class G4Material; +class G4UniformMagField; +class F02DetectorMessenger; +class F02CalorimeterSD; +class F02ElectroMagneticField; + + +class F02DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + + F02DetectorConstruction(); + ~F02DetectorConstruction(); + + public: + + void SetAbsorberMaterial (G4String); + void SetAbsorberThickness(G4double); + void SetAbsorberRadius(G4double); + + void SetAbsorberZpos(G4double); + + void SetWorldMaterial(G4String); + void SetWorldSizeZ(G4double); + void SetWorldSizeR(G4double); + + G4VPhysicalVolume* Construct(); + + void UpdateGeometry(); + + public: + + void PrintCalorParameters(); + + G4Material* GetWorldMaterial() {return WorldMaterial;}; + G4double GetWorldSizeZ() {return WorldSizeZ;}; + G4double GetWorldSizeR() {return WorldSizeR;}; + + G4double GetAbsorberZpos() {return zAbsorber;}; + G4double GetzstartAbs() {return zstartAbs;}; + G4double GetzendAbs() {return zendAbs;}; + + G4Material* GetAbsorberMaterial() {return AbsorberMaterial;}; + G4double GetAbsorberThickness() {return AbsorberThickness;}; + G4double GetAbsorberRadius() {return AbsorberRadius;}; + + const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; + const G4VPhysicalVolume* GetAbsorber() {return physiAbsorber;}; + G4LogicalVolume* GetLogicalAbsorber() {return logicAbsorber;}; + + private: + + G4Tubs* solidWorld; // pointer to the solid World + G4LogicalVolume* logicWorld; // pointer to the logical World + G4VPhysicalVolume* physiWorld; // pointer to the physical World + + G4Tubs* solidAbsorber; // pointer to the solid Absorber + G4LogicalVolume* logicAbsorber; // pointer to the logical Absorber + G4VPhysicalVolume* physiAbsorber; // pointer to the physical Absorber + + G4UniformMagField* magField; // pointer to the magnetic field + F02ElectroMagneticField* fEmField; + F02DetectorMessenger* detectorMessenger; // pointer to the Messenger + F02CalorimeterSD* calorimeterSD; // pointer to the sensitive detector + + G4Material* AbsorberMaterial; + G4double AbsorberThickness; + G4double AbsorberRadius; + G4bool worldchanged; + + G4double zAbsorber ; + G4double zstartAbs , zendAbs ; + + G4Material* WorldMaterial; + G4double WorldSizeR; + G4double WorldSizeZ; + + private: + + void DefineMaterials(); + void ComputeCalorParameters(); + G4VPhysicalVolume* ConstructCalorimeter(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void F02DetectorConstruction::ComputeCalorParameters() +{ + // Compute derived parameters of the calorimeter + + zstartAbs = zAbsorber-0.5*AbsorberThickness; + zendAbs = zAbsorber+0.5*AbsorberThickness; + +} + +#endif diff --git a/examples/extended/field/field02/include/F02DetectorMessenger.hh b/examples/extended/field/field02/include/F02DetectorMessenger.hh new file mode 100644 index 0000000000..a728f01ebb --- /dev/null +++ b/examples/extended/field/field02/include/F02DetectorMessenger.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02DetectorMessenger.hh,v 1.3 2001/10/25 09:30:13 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02DetectorMessenger_h +#define F02DetectorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F02DetectorConstruction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02DetectorMessenger: public G4UImessenger +{ + public: + F02DetectorMessenger(F02DetectorConstruction* ); + ~F02DetectorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + F02DetectorConstruction* F02Detector; + + G4UIdirectory* F02detDir; + + G4UIcmdWithAString* AbsMaterCmd; + G4UIcmdWithADoubleAndUnit* AbsThickCmd; + G4UIcmdWithADoubleAndUnit* AbsRadCmd; + + G4UIcmdWithADoubleAndUnit* AbsZposCmd; + + G4UIcmdWithAString* WorldMaterCmd; + G4UIcmdWithADoubleAndUnit* WorldZCmd; + G4UIcmdWithADoubleAndUnit* WorldRCmd; + + G4UIcmdWithoutParameter* UpdateCmd; + +}; + +#endif + diff --git a/examples/extended/field/field02/include/F02ElectroMagneticField.hh b/examples/extended/field/field02/include/F02ElectroMagneticField.hh new file mode 100644 index 0000000000..ad00ee3fd9 --- /dev/null +++ b/examples/extended/field/field02/include/F02ElectroMagneticField.hh @@ -0,0 +1,103 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02ElectroMagneticField.hh,v 1.6 2001/12/04 17:53:53 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// A class for control of the Magnetic Field of the detector. +// The field is assumed to be uniform. +// +// $ Id: $ + +// Should this be a: +// i) messenger +// ii) user class that creates the field ? +// iii) simply a derived class of Uniform field ? <== I have chosen this now. +// iv) a field manager that creates/updates field (Prefered?) +// + + +#ifndef F02ElectroMagneticField_H +#define F02ElectroMagneticField_H + +#include "G4MagneticField.hh" +// #include "G4ElectroMagneticField.hh" +#include "G4UniformElectricField.hh" + +class G4FieldManager; +class G4ChordFinder; +class G4EquationOfMotion; +class G4Mag_EqRhs; +class G4EqMagElectricField; +class G4MagIntegratorStepper; +class F02FieldMessenger; + +class F02ElectroMagneticField : public G4UniformElectricField +{ +public: + + F02ElectroMagneticField(G4ThreeVector) ; // The value of the field + F02ElectroMagneticField() ; // A zero field + + ~F02ElectroMagneticField() ; + + void GetFieldValue( const G4double [4], G4double * ) const {;} + + void SetStepperType( G4int i) { fStepperType = i ; } + + void SetStepper(); + + void SetMinStep(G4double s) { fMinStep = s ; } + + void UpdateField(); + + void SetFieldValue(G4ThreeVector fieldVector); + void SetFieldValue(G4double fieldValue); + G4ThreeVector GetConstantFieldValue(); + +protected: + + // Find the global Field Manager + + G4FieldManager* GetGlobalFieldManager() ; + + G4FieldManager* fFieldManager ; + + G4ChordFinder* fChordFinder ; + + G4EqMagElectricField* fEquation ; + + G4UniformElectricField* fEMfield ; + + G4MagIntegratorStepper* fStepper ; + + G4int fStepperType ; + + G4double fMinStep ; + + F02FieldMessenger* fFieldMessenger; + +}; + +#endif diff --git a/examples/extended/field/field02/include/F02EventAction.hh b/examples/extended/field/field02/include/F02EventAction.hh new file mode 100644 index 0000000000..7c5cab61d7 --- /dev/null +++ b/examples/extended/field/field02/include/F02EventAction.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02EventAction.hh,v 1.3 2001/11/07 16:36:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02EventAction_h +#define F02EventAction_h 1 + +#include "G4UserEventAction.hh" +#include "globals.hh" + +class F02RunAction; +class F02EventActionMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02EventAction : public G4UserEventAction +{ + public: + F02EventAction(F02RunAction* F02RA); + ~F02EventAction(); + + public: + void BeginOfEventAction(const G4Event*); + void EndOfEventAction(const G4Event*); + G4int GetEventno(); + void setEventVerbose(G4int level); + + void SetDrawFlag(G4String val) {drawFlag = val;}; + void SetPrintModulo(G4int val) {printModulo = val;}; + + private: + G4int calorimeterCollID; + F02EventActionMessenger* eventMessenger; + F02RunAction* runaction; + G4int verboselevel; + + G4String drawFlag; + G4int printModulo; +}; + +#endif diff --git a/examples/extended/electromagnetic/TestEm1/include/Em1RunActionMessenger.hh b/examples/extended/field/field02/include/F02EventActionMessenger.hh similarity index 78% rename from examples/extended/electromagnetic/TestEm1/include/Em1RunActionMessenger.hh rename to examples/extended/field/field02/include/F02EventActionMessenger.hh index af31bdb838..433dac48a2 100644 --- a/examples/extended/electromagnetic/TestEm1/include/Em1RunActionMessenger.hh +++ b/examples/extended/field/field02/include/F02EventActionMessenger.hh @@ -21,41 +21,40 @@ // ******************************************************************** // // -// $Id: Em1RunActionMessenger.hh,v 1.2.4.1 2001/06/28 19:06:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: F02EventActionMessenger.hh,v 1.2 2001/07/11 09:58:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#ifndef Em1RunActionMessenger_h -#define Em1RunActionMessenger_h 1 +#ifndef F02EventActionMessenger_h +#define F02EventActionMessenger_h 1 #include "globals.hh" #include "G4UImessenger.hh" -class Em1RunAction; -class G4UIdirectory; +class F02EventAction; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class Em1RunActionMessenger: public G4UImessenger +class F02EventActionMessenger: public G4UImessenger { public: - Em1RunActionMessenger(Em1RunAction*); - ~Em1RunActionMessenger(); + F02EventActionMessenger(F02EventAction*); + ~F02EventActionMessenger(); void SetNewValue(G4UIcommand*, G4String); private: - Em1RunAction* Em1Run; - G4UIdirectory* RndmDir; - G4UIcmdWithAnInteger* RndmSaveCmd; - G4UIcmdWithAString* RndmReadCmd; - + F02EventAction* eventAction; + G4UIcmdWithAnInteger* setVerboseCmd; + G4UIcmdWithAString* DrawCmd; + G4UIcmdWithAnInteger* PrintCmd; }; #endif diff --git a/examples/extended/field/field02/include/F02FieldMessenger.hh b/examples/extended/field/field02/include/F02FieldMessenger.hh new file mode 100644 index 0000000000..e208669394 --- /dev/null +++ b/examples/extended/field/field02/include/F02FieldMessenger.hh @@ -0,0 +1,72 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02FieldMessenger.hh,v 1.2 2001/07/11 09:58:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02FieldMessenger_h +#define F02FieldMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F02ElectroMagneticField; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + + +class F02FieldMessenger: public G4UImessenger +{ + public: + F02FieldMessenger(F02ElectroMagneticField* ); + ~F02FieldMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + void SetNewValue(G4UIcommand*, G4int); + + private: + + F02ElectroMagneticField* fEMfield; + + G4UIdirectory* F02detDir; + + G4UIcmdWithAnInteger* StepperCmd; + G4UIcmdWithADoubleAndUnit* MagFieldCmd; + G4UIcmdWithADoubleAndUnit* MinStepCmd; + G4UIcmdWithoutParameter* UpdateCmd; + + G4UIcmdWithAString* AbsMaterCmd; + + +}; + +#endif + diff --git a/examples/extended/field/field02/include/F02PhysicsList.hh b/examples/extended/field/field02/include/F02PhysicsList.hh new file mode 100644 index 0000000000..a835050c22 --- /dev/null +++ b/examples/extended/field/field02/include/F02PhysicsList.hh @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02PhysicsList.hh,v 1.2 2001/07/11 09:58:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#ifndef F02PhysicsList_h +#define F02PhysicsList_h 1 + +#include "G4VUserPhysicsList.hh" +#include "globals.hh" + +class G4PhotoElectricEffect; +class G4ComptonScattering; +class G4GammaConversion; + +class G4MultipleScattering; + +class G4PAIonisation ; +class G4ForwardXrayTR ; +class G4eIonisation; +class G4eBremsstrahlung; +class G4eplusAnnihilation; + +class G4MuIonisation; +class G4MuBremsstrahlung; +class G4MuPairProduction; + +class G4hIonisation; +class G4hIonisationPlus; + +class F02StepCut; + +class F02DetectorConstruction; +class F02PhysicsListMessenger; + + +class F02PhysicsList: public G4VUserPhysicsList +{ + public: + F02PhysicsList( F02DetectorConstruction*); + ~F02PhysicsList(); + + protected: + // Construct particle and physics + void ConstructParticle(); + void ConstructProcess(); + + void SetCuts(); + + protected: + // these methods Construct particles + void ConstructBosons(); + void ConstructLeptons(); + void ConstructMesons(); + void ConstructBarions(); + + protected: + + // these methods Construct physics processes and register them + + void AddParameterisation(); + void ConstructGeneral(); + void ConstructEM(); + + public: + + void SetGammaCut(G4double); + void SetElectronCut(G4double); + void SetProtonCut(G4double); + void SetCutsByEnergy(G4double); + void GetRange(G4double); + + void SetMaxStep(G4double); + + public: + + G4double MaxChargedStep; + + private: + + G4PhotoElectricEffect* thePhotoElectricEffect; + G4ComptonScattering* theComptonScattering; + G4GammaConversion* theGammaConversion; + + G4MultipleScattering* theeminusMultipleScattering; + G4eIonisation* theeminusIonisation; + G4eBremsstrahlung* theeminusBremsstrahlung; + + G4PAIonisation* fPAIonisation ; + G4ForwardXrayTR* fForwardXrayTR ; + + G4MultipleScattering* theeplusMultipleScattering; + G4eIonisation* theeplusIonisation; + G4eBremsstrahlung* theeplusBremsstrahlung; + G4eplusAnnihilation* theeplusAnnihilation; + + F02StepCut* theeminusStepCut ; + F02StepCut* theeplusStepCut ; + + G4double cutForGamma; + G4double cutForElectron; + G4double cutForProton; + + F02DetectorConstruction* pDet; + F02PhysicsListMessenger* physicsListMessenger; +}; + +#endif + + + diff --git a/examples/extended/field/field02/include/F02PhysicsListMessenger.hh b/examples/extended/field/field02/include/F02PhysicsListMessenger.hh new file mode 100644 index 0000000000..6029177798 --- /dev/null +++ b/examples/extended/field/field02/include/F02PhysicsListMessenger.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02PhysicsListMessenger.hh,v 1.3 2001/10/15 17:20:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02PhysicsListMessenger_h +#define F02PhysicsListMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F02PhysicsList; +class G4UIcmdWithoutParameter; +class G4UIcmdWithADouble; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02PhysicsListMessenger: public G4UImessenger +{ + public: + F02PhysicsListMessenger(F02PhysicsList*); + ~F02PhysicsListMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + F02PhysicsList* F02List; + + G4UIcmdWithADoubleAndUnit* setMaxStepCmd; + + G4UIcmdWithADoubleAndUnit* cutGCmd; + G4UIcmdWithADoubleAndUnit* cutECmd; + G4UIcmdWithADoubleAndUnit* cutPCmd; + G4UIcmdWithADoubleAndUnit* rCmd; + G4UIcmdWithADoubleAndUnit* eCmd; + +}; + +#endif diff --git a/examples/extended/field/field02/include/F02PrimaryGeneratorAction.hh b/examples/extended/field/field02/include/F02PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..c62e1806ae --- /dev/null +++ b/examples/extended/field/field02/include/F02PrimaryGeneratorAction.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02PrimaryGeneratorAction.hh,v 1.3 2001/10/15 17:20:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02PrimaryGeneratorAction_h +#define F02PrimaryGeneratorAction_h 1 + +#include "G4VUserPrimaryGeneratorAction.hh" +#include "globals.hh" + +class G4ParticleGun; +class G4Event; +class F02DetectorConstruction; +class F02PrimaryGeneratorMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + F02PrimaryGeneratorAction(F02DetectorConstruction*); + ~F02PrimaryGeneratorAction(); + + public: + void GeneratePrimaries(G4Event*); + void SetRndmFlag(G4String val) { rndmFlag = val;} + void Setxvertex(G4double x) ; + void Setyvertex(G4double y) ; + void Setzvertex(G4double z) ; + + static G4String GetPrimaryName() ; + + private: + G4ParticleGun* particleGun; // pointer a to G4 service class + F02DetectorConstruction* F02Detector; // pointer to the geometry + + F02PrimaryGeneratorMessenger* gunMessenger; // messenger of this class + G4String rndmFlag; // flag for a random impact point + + static G4String thePrimaryParticleName ; + G4double xvertex,yvertex,zvertex; + G4bool vertexdefined ; + +}; + +#endif diff --git a/examples/extended/field/field02/include/F02PrimaryGeneratorMessenger.hh b/examples/extended/field/field02/include/F02PrimaryGeneratorMessenger.hh new file mode 100644 index 0000000000..02a0056e14 --- /dev/null +++ b/examples/extended/field/field02/include/F02PrimaryGeneratorMessenger.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02PrimaryGeneratorMessenger.hh,v 1.2 2001/07/11 09:58:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02PrimaryGeneratorMessenger_h +#define F02PrimaryGeneratorMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class F02PrimaryGeneratorAction; +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02PrimaryGeneratorMessenger: public G4UImessenger +{ + public: + F02PrimaryGeneratorMessenger(F02PrimaryGeneratorAction*); + ~F02PrimaryGeneratorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + F02PrimaryGeneratorAction* F02Action; + G4UIcmdWithAString* RndmCmd; + G4UIcmdWithADoubleAndUnit* setxvertexCmd; + G4UIcmdWithADoubleAndUnit* setyvertexCmd; + G4UIcmdWithADoubleAndUnit* setzvertexCmd; +}; + +#endif + diff --git a/examples/extended/field/field02/include/F02RunAction.hh b/examples/extended/field/field02/include/F02RunAction.hh new file mode 100644 index 0000000000..7299af4301 --- /dev/null +++ b/examples/extended/field/field02/include/F02RunAction.hh @@ -0,0 +1,65 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02RunAction.hh,v 1.4 2001/11/07 16:36:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02RunAction_h +#define F02RunAction_h 1 + +#include "G4UserRunAction.hh" +#include "globals.hh" +#include "g4std/iostream" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02RunMessenger; +class G4Run; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02RunAction : public G4UserRunAction +{ + public: + F02RunAction(); + ~F02RunAction(); + + public: + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + void SetRndmFreq(G4int val) {saveRndm = val;} + G4int GetRndmFreq() {return saveRndm;} + + private: + + F02RunMessenger* runMessenger; + G4int saveRndm; +}; + +#endif diff --git a/examples/extended/field/field02/include/F02RunMessenger.hh b/examples/extended/field/field02/include/F02RunMessenger.hh new file mode 100644 index 0000000000..1587359b3f --- /dev/null +++ b/examples/extended/field/field02/include/F02RunMessenger.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// + +// +// $Id: F02RunMessenger.hh,v 1.3 2001/10/15 17:20:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02RunMessenger_h +#define F02RunMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02RunAction; +class G4UIdirectory; +class G4UIcmdWithAnInteger; +class G4UIcmdWithAString; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02RunMessenger: public G4UImessenger +{ + public: + + F02RunMessenger(F02RunAction* ); + ~F02RunMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + F02RunAction* runAction; + G4UIdirectory* RndmDir; + G4UIcmdWithAnInteger* RndmSaveCmd; + G4UIcmdWithAString* RndmReadCmd; + +}; + +#endif + diff --git a/examples/extended/field/field02/include/F02StepCut.hh b/examples/extended/field/field02/include/F02StepCut.hh new file mode 100644 index 0000000000..fb6167e1be --- /dev/null +++ b/examples/extended/field/field02/include/F02StepCut.hh @@ -0,0 +1,125 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02StepCut.hh,v 1.3 2001/10/15 17:20:42 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef F02StepCut_h +#define F02StepCut_h 1 + +#include "G4ios.hh" +#include "globals.hh" +#include "G4VDiscreteProcess.hh" +#include "G4Step.hh" + +class F02StepCut : public G4VDiscreteProcess +{ + public: + + F02StepCut(const G4String& processName ="UserStepCut" ); + F02StepCut(F02StepCut &); + + ~F02StepCut(); + + G4double PostStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition + ); + + G4VParticleChange* PostStepDoIt( + const G4Track& , + const G4Step& + ); + + void SetMaxStep(G4double); + + protected: + + // it is not needed here ! + G4double GetMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ); + + + private: + + // hide assignment operator as private + F02StepCut & operator=(const F02StepCut &right); + + private: + + G4double MaxChargedStep ; +}; + +// inlined function members implementation + +#include "G4Step.hh" +#include "G4Track.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + +inline G4double F02StepCut::PostStepGetPhysicalInteractionLength( + const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + // condition is set to "Not Forced" + *condition = NotForced; + + G4double ProposedStep = DBL_MAX; + + if((MaxChargedStep > 0.) && + (aTrack.GetVolume() != 0) && + (aTrack.GetVolume()->GetName() == "Absorber") && + (aTrack.GetDynamicParticle()->GetDefinition()->GetPDGCharge() != 0.)) + ProposedStep = MaxChargedStep ; + + return ProposedStep; +} + +inline G4VParticleChange* F02StepCut::PostStepDoIt( + const G4Track& aTrack, + const G4Step& + ) +{ + // do nothing + aParticleChange.Initialize(aTrack); + return &aParticleChange; +} + +inline G4double F02StepCut::GetMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + return 0.; +} + +#endif + diff --git a/examples/extended/field/field02/include/F02SteppingAction.hh b/examples/extended/field/field02/include/F02SteppingAction.hh new file mode 100644 index 0000000000..cdfc42edf6 --- /dev/null +++ b/examples/extended/field/field02/include/F02SteppingAction.hh @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02SteppingAction.hh,v 1.4 2001/11/07 16:36:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02SteppingAction_h +#define F02SteppingAction_h 1 + +#include "G4UserSteppingAction.hh" +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4ios.hh" +#include "globals.hh" + +class F02SteppingMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02SteppingAction : public G4UserSteppingAction +{ + public: + F02SteppingAction(); + ~F02SteppingAction(); + + void UserSteppingAction(const G4Step*); + + private: + F02SteppingMessenger* steppingMessenger; +}; + +#endif diff --git a/examples/extended/field/field02/include/F02SteppingMessenger.hh b/examples/extended/field/field02/include/F02SteppingMessenger.hh new file mode 100644 index 0000000000..feaa5261c5 --- /dev/null +++ b/examples/extended/field/field02/include/F02SteppingMessenger.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02SteppingMessenger.hh,v 1.2 2001/07/11 09:58:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02SteppingMessenger_h +#define F02SteppingMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02SteppingAction; +class G4UIdirectory; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02SteppingMessenger: public G4UImessenger +{ + public: + + F02SteppingMessenger(F02SteppingAction* ); + ~F02SteppingMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + F02SteppingAction* steppingAction; + + G4UIdirectory* steppingDir; + +}; + +#endif + diff --git a/examples/extended/field/field02/include/F02SteppingVerbose.hh b/examples/extended/field/field02/include/F02SteppingVerbose.hh new file mode 100644 index 0000000000..1f3d7a68a2 --- /dev/null +++ b/examples/extended/field/field02/include/F02SteppingVerbose.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02SteppingVerbose.hh,v 1.3 2001/10/15 17:20:42 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +//--------------------------------------------------------------- +// +// F02SteppingVerbose.hh +// +// Description: +// This class manages the vervose outputs in G4SteppingManager. +// +// +// Contact: +// Questions and comments to this code should be sent to +// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) +// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) +// +//--------------------------------------------------------------- + +#ifndef F02SteppingVerbose_h +#define F02SteppingVerbose_h 1 + +#include "G4SteppingVerbose.hh" + +class F02SteppingVerbose : public G4SteppingVerbose +{ + public: + + F02SteppingVerbose(); + ~F02SteppingVerbose(); + // Constructor/Destructor + + void StepInfo(); + void TrackingStarted(); + +}; + +#endif diff --git a/examples/extended/field/field02/include/F02VisManager.hh b/examples/extended/field/field02/include/F02VisManager.hh new file mode 100644 index 0000000000..dbd43c8dd3 --- /dev/null +++ b/examples/extended/field/field02/include/F02VisManager.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02VisManager.hh,v 1.2 2001/07/11 09:58:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// Example Visualization Manager implementing virtual function +// RegisterGraphicsSystems. Exploits C-pre-processor variables +// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if +// environment variables of the same name are set. + +// So all you have to do is set environment variables and compile and +// instantiate this in your main(). + +// Alternatively, you can implement an empty function here and just +// register the systems you want in your main(), e.g.: +// G4VisManager* myVisManager = new MyVisManager; +// myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F02VisManager_h +#define F02VisManager_h 1 + +#include "G4VisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F02VisManager: public G4VisManager +{ + public: + + F02VisManager (); + + private: + + void RegisterGraphicsSystems (); + +}; + +#endif diff --git a/examples/extended/field/field02/src/F02CalorHit.cc b/examples/extended/field/field02/src/F02CalorHit.cc new file mode 100644 index 0000000000..c93b7b0791 --- /dev/null +++ b/examples/extended/field/field02/src/F02CalorHit.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02CalorHit.cc,v 1.2 2001/07/11 09:58:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02CalorHit.hh" + +G4Allocator F02CalorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02CalorHit::F02CalorHit() +{ + EdepAbs = 0.; TrackLengthAbs = 0.; + EdepGap = 0.; TrackLengthGap = 0.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02CalorHit::~F02CalorHit() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02CalorHit::F02CalorHit(const F02CalorHit& right) +{ + EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; + EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const F02CalorHit& F02CalorHit::operator=(const F02CalorHit& right) +{ + EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; + EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; + return *this; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +int F02CalorHit::operator==(const F02CalorHit& right) const +{ + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02CalorHit::Print() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field02/src/F02CalorimeterSD.cc b/examples/extended/field/field02/src/F02CalorimeterSD.cc new file mode 100644 index 0000000000..93814e0b8f --- /dev/null +++ b/examples/extended/field/field02/src/F02CalorimeterSD.cc @@ -0,0 +1,134 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02CalorimeterSD.cc,v 1.4 2001/11/07 16:36:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02CalorimeterSD.hh" + +#include "F02CalorHit.hh" +#include "F02DetectorConstruction.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4Step.hh" +#include "G4VTouchable.hh" +#include "G4TouchableHistory.hh" +#include "G4SDManager.hh" + +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02CalorimeterSD::F02CalorimeterSD(G4String name, + F02DetectorConstruction* det) + : G4VSensitiveDetector(name), Detector(det) +{ + collectionName.insert("CalCollection"); + HitID = new G4int[500]; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02CalorimeterSD::~F02CalorimeterSD() +{ + delete [] HitID; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02CalorimeterSD::Initialize(G4HCofThisEvent*HCE) +{ + CalCollection = new F02CalorHitsCollection(SensitiveDetectorName, + collectionName[0]); + for (G4int j=0;j<1; j++) + { + HitID[j] = -1; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4bool F02CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) +{ + G4double edep = aStep->GetTotalEnergyDeposit(); + G4double stepl = 0.; + + stepl = aStep->GetStepLength(); + + if ((edep == 0.) && (stepl == 0.) ) return false; + + G4TouchableHistory* theTouchable + = (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable()); + + G4VPhysicalVolume* physVol = theTouchable->GetVolume(); + + G4int F02Number = 0 ; + if (HitID[F02Number]==-1) + { + F02CalorHit* calHit = new F02CalorHit(); + if (physVol == Detector->GetAbsorber()) calHit->AddAbs(edep,stepl); + HitID[F02Number] = CalCollection->insert(calHit) - 1; + if (verboseLevel>0) + G4cout << " New Calorimeter Hit on F02: " << F02Number << G4endl; + } + else + { + if (physVol == Detector->GetAbsorber()) + (*CalCollection)[HitID[F02Number]]->AddAbs(edep,stepl); + if (verboseLevel>0) + G4cout << " Energy added to F02: " << F02Number << G4endl; + } + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) +{ + static G4int HCID = -1; + if(HCID<0) + { + HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]); + } + HCE->AddHitsCollection(HCID,CalCollection); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02CalorimeterSD::clear() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +void F02CalorimeterSD::PrintAll() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field02/src/F02DetectorConstruction.cc b/examples/extended/field/field02/src/F02DetectorConstruction.cc new file mode 100644 index 0000000000..e1d0ff9292 --- /dev/null +++ b/examples/extended/field/field02/src/F02DetectorConstruction.cc @@ -0,0 +1,410 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02DetectorConstruction.cc,v 1.5 2001/10/26 13:42:45 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "F02DetectorConstruction.hh" +#include "F02DetectorMessenger.hh" + +#include "F02CalorimeterSD.hh" +#include "F02ElectroMagneticField.hh" + +#include "G4VClusterModel.hh" +#include "G4PAIclusterModel.hh" + +#include "G4Material.hh" +#include "G4Tubs.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4UniformMagField.hh" +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" +#include "G4SDManager.hh" +#include "G4RunManager.hh" + +#include "G4ios.hh" + +///////////////////////////////////////////////////////////////////////////// +// +// + +F02DetectorConstruction::F02DetectorConstruction() + : solidWorld(0), logicWorld(0), physiWorld(0), + solidAbsorber(0),logicAbsorber(0), physiAbsorber(0), + magField(0), fEmField(0), calorimeterSD(0), + AbsorberMaterial(0), worldchanged(false), WorldMaterial(0) +{ + // default parameter values of the calorimeter + + WorldSizeZ = 80.*cm; + WorldSizeR = 20.*cm; + + AbsorberThickness = 40.0*mm; + + AbsorberRadius = 10.*cm; + zAbsorber = 36.*cm ; + + // create commands for interactive definition of the calorimeter + + detectorMessenger = new F02DetectorMessenger(this); + + // fEmField = new F02ElectroMagneticField() ; +} + +////////////////////////////////////////////////////////////////////////// +// +// + +F02DetectorConstruction::~F02DetectorConstruction() +{ + delete detectorMessenger; + if (fEmField) delete fEmField ; +} + +////////////////////////////////////////////////////////////////////////// +// +// + +G4VPhysicalVolume* F02DetectorConstruction::Construct() +{ + DefineMaterials(); + return ConstructCalorimeter(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::DefineMaterials() +{ + //This function illustrates the possible ways to define materials + + G4String name, symbol ; // a=mass of a mole; + G4double a, z, density ; // z=mean number of protons; + G4int nel; + G4int ncomponents; + G4double fractionmass, pressure, temperature; + +// +// define Elements +// + + a = 1.01*g/mole; + G4Element* elH = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); + + a = 6.01*g/mole; + G4Element* elC = new G4Element(name="Carbon", symbol="C", z=6., a); + + a = 14.01*g/mole; + G4Element* elN = new G4Element(name="Nitrogen",symbol="N" , z= 7., a); + + a = 16.00*g/mole; + G4Element* elO = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); + + a = 39.948*g/mole; + G4Element* elAr = new G4Element(name="Argon", symbol="Ar", z=18., a); + +// +// define simple materials +// + + // Mylar + + density = 1.39*g/cm3; + G4Material* Mylar = new G4Material(name="Mylar", density, nel=3); + Mylar->AddElement(elO,2); + Mylar->AddElement(elC,5); + Mylar->AddElement(elH,4); + + // Polypropelene + + G4Material* CH2 = new G4Material ("Polypropelene" , 0.91*g/cm3, 2); + CH2->AddElement(elH,2); + CH2->AddElement(elC,1); + + // Krypton as detector gas, STP + + density = 3.700*mg/cm3 ; + a = 83.80*g/mole ; + G4Material* Kr = new G4Material(name="Kr",z=36., a, density ); + + // Dry air (average composition) + + density = 1.7836*mg/cm3 ; // STP + G4Material* Argon = new G4Material(name="Argon" , density, ncomponents=1); + Argon->AddElement(elAr, 1); + + density = 1.25053*mg/cm3 ; // STP + G4Material* Nitrogen = new G4Material(name="N2" , density, ncomponents=1); + Nitrogen->AddElement(elN, 2); + + density = 1.4289*mg/cm3 ; // STP + G4Material* Oxygen = new G4Material(name="O2" , density, ncomponents=1); + Oxygen->AddElement(elO, 2); + + + density = 1.2928*mg/cm3 ; // STP + + temperature = STP_Temperature; + pressure = 1.0e-0*STP_Pressure; + + G4Material* Air = new G4Material(name="Air" , density, ncomponents=3, + kStateGas,temperature,pressure); + Air->AddMaterial( Nitrogen, fractionmass = 0.7557 ) ; + Air->AddMaterial( Oxygen, fractionmass = 0.2315 ) ; + Air->AddMaterial( Argon, fractionmass = 0.0128 ) ; + + // Xenon as detector gas, STP + + density = 5.858*mg/cm3 ; + a = 131.29*g/mole ; + G4Material* Xe = new G4Material(name="Xenon",z=54., a, density ); + + // Carbon dioxide, STP + + density = 1.977*mg/cm3; + G4Material* CarbonDioxide = new G4Material(name="CO2", density, nel=2); + CarbonDioxide->AddElement(elC,1); + CarbonDioxide->AddElement(elO,2); + + // 80% Xe + 20% CO2, STP + + density = 5.0818*mg/cm3 ; + G4Material* Xe20CO2 = new G4Material(name="Xe20CO2" , density, ncomponents=2); + Xe20CO2->AddMaterial( Xe, fractionmass = 0.922 ) ; + Xe20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ; + + // 80% Kr + 20% CO2, STP + + density = 3.601*mg/cm3 ; + G4Material* Kr20CO2 = new G4Material(name="Kr20CO2" , density, + ncomponents=2); + Kr20CO2->AddMaterial( Kr, fractionmass = 0.89 ) ; + Kr20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.11 ) ; + + + G4cout << *(G4Material::GetMaterialTable()) << G4endl; + + AbsorberMaterial = Kr20CO2 ; // XeCO2CF4 ; + + WorldMaterial = Air ; +} + +///////////////////////////////////////////////////////////////////////// +// +// + +G4VPhysicalVolume* F02DetectorConstruction::ConstructCalorimeter() +{ + // complete the Calor parameters definition and Print + + ComputeCalorParameters(); + PrintCalorParameters(); + + // World + + if(solidWorld) delete solidWorld ; + if(logicWorld) delete logicWorld ; + if(physiWorld) delete physiWorld ; + + solidWorld = new G4Tubs("World", //its name + 0.,WorldSizeR,WorldSizeZ/2.,0.,twopi) ;//its size + + logicWorld = new G4LogicalVolume(solidWorld, //its solid + WorldMaterial, //its material + "World"); //its name + + physiWorld = new G4PVPlacement(0, //no rotation + G4ThreeVector(), //at (0,0,0) + "World", //its name + logicWorld, //its logical volume + 0, //its mother volume + false, //no boolean operation + 0); //copy number + // Absorber + + if (AbsorberThickness > 0.) + { + if(solidAbsorber) delete solidAbsorber ; + if(logicAbsorber) delete logicAbsorber ; + if(physiAbsorber) delete physiAbsorber ; + + solidAbsorber = new G4Tubs("Absorber", + 0.,AbsorberRadius,AbsorberThickness/2.,0.,twopi); + + logicAbsorber = new G4LogicalVolume(solidAbsorber, + AbsorberMaterial, + "Absorber"); + + physiAbsorber = new G4PVPlacement(0, + G4ThreeVector(0.,0.,zAbsorber), + "Absorber", + logicAbsorber, + physiWorld, + false, + 0); + + } + + // Sensitive Detectors: Absorber + + G4SDManager* SDman = G4SDManager::GetSDMpointer(); + + if(!calorimeterSD) + { + calorimeterSD = new F02CalorimeterSD("CalorSD",this); + SDman->AddNewDetector( calorimeterSD ); + } + if (logicAbsorber) logicAbsorber->SetSensitiveDetector(calorimeterSD); + + return physiWorld; +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::PrintCalorParameters() +{ + G4cout << "\n The WORLD is made of " + << WorldSizeZ/mm << "mm of " << WorldMaterial->GetName() ; + G4cout << ", the transverse size (R) of the world is " << WorldSizeR/mm << " mm. " << G4endl; + G4cout << " The ABSORBER is made of " + << AbsorberThickness/mm << "mm of " << AbsorberMaterial->GetName() ; + G4cout << ", the transverse size (R) is " << AbsorberRadius/mm << " mm. " << G4endl; + G4cout << " Z position of the (middle of the) absorber " << zAbsorber/mm << " mm." << G4endl; + G4cout << G4endl; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) +{ + // get the pointer to the material table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + G4Material* pttoMaterial; + for (size_t J=0 ; Jsize() ; J++) + { pttoMaterial = (*theMaterialTable)[J]; + if(pttoMaterial->GetName() == materialChoice) + { + AbsorberMaterial = pttoMaterial; + logicAbsorber->SetMaterial(pttoMaterial); + } + } +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::SetWorldMaterial(G4String materialChoice) +{ + // get the pointer to the material table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + G4Material* pttoMaterial; + for (size_t J=0 ; Jsize() ; J++) + { pttoMaterial = (*theMaterialTable)[J]; + if(pttoMaterial->GetName() == materialChoice) + { + WorldMaterial = pttoMaterial; + logicWorld->SetMaterial(pttoMaterial); + } + } +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::SetAbsorberThickness(G4double val) +{ + // change Absorber thickness and recompute the calorimeter parameters + AbsorberThickness = val; + ComputeCalorParameters(); +} + +///////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::SetAbsorberRadius(G4double val) +{ + // change the transverse size and recompute the calorimeter parameters + AbsorberRadius = val; + ComputeCalorParameters(); +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::SetWorldSizeZ(G4double val) +{ + worldchanged=true; + WorldSizeZ = val; + ComputeCalorParameters(); +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::SetWorldSizeR(G4double val) +{ + worldchanged=true; + WorldSizeR = val; + ComputeCalorParameters(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::SetAbsorberZpos(G4double val) +{ + zAbsorber = val; + ComputeCalorParameters(); +} + + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F02DetectorConstruction::UpdateGeometry() +{ + G4RunManager::GetRunManager()->DefineWorldVolume(ConstructCalorimeter()); +} + +// +// +//////////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/field/field02/src/F02DetectorMessenger.cc b/examples/extended/field/field02/src/F02DetectorMessenger.cc new file mode 100644 index 0000000000..119c53989e --- /dev/null +++ b/examples/extended/field/field02/src/F02DetectorMessenger.cc @@ -0,0 +1,160 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02DetectorMessenger.cc,v 1.3 2001/10/25 09:30:39 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02DetectorMessenger.hh" + +#include "F02DetectorConstruction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02DetectorMessenger::F02DetectorMessenger(F02DetectorConstruction * F02Det) +:F02Detector(F02Det) +{ + F02detDir = new G4UIdirectory("/calor/"); + F02detDir->SetGuidance("F02 detector control."); + + AbsMaterCmd = new G4UIcmdWithAString("/calor/setAbsMat",this); + AbsMaterCmd->SetGuidance("Select Material of the Absorber."); + AbsMaterCmd->SetParameterName("choice",true); + AbsMaterCmd->SetDefaultValue("Lead"); + AbsMaterCmd->AvailableForStates(Idle); + + WorldMaterCmd = new G4UIcmdWithAString("/calor/setWorldMat",this); + WorldMaterCmd->SetGuidance("Select Material of the World."); + WorldMaterCmd->SetParameterName("wchoice",true); + WorldMaterCmd->SetDefaultValue("Air"); + WorldMaterCmd->AvailableForStates(Idle); + + AbsThickCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsThick",this); + AbsThickCmd->SetGuidance("Set Thickness of the Absorber"); + AbsThickCmd->SetParameterName("SizeZ",false,false); + AbsThickCmd->SetDefaultUnit("mm"); + AbsThickCmd->SetRange("SizeZ>0."); + AbsThickCmd->AvailableForStates(Idle); + + AbsRadCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsRad",this); + AbsRadCmd->SetGuidance("Set radius of the Absorber"); + AbsRadCmd->SetParameterName("SizeR",false,false); + AbsRadCmd->SetDefaultUnit("mm"); + AbsRadCmd->SetRange("SizeR>0."); + AbsRadCmd->AvailableForStates(Idle); + + AbsZposCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsZpos",this); + AbsZposCmd->SetGuidance("Set Z pos. of the Absorber"); + AbsZposCmd->SetParameterName("Zpos",false,false); + AbsZposCmd->SetDefaultUnit("mm"); + AbsZposCmd->AvailableForStates(Idle); + + WorldZCmd = new G4UIcmdWithADoubleAndUnit("/calor/setWorldZ",this); + WorldZCmd->SetGuidance("Set Z size of the World"); + WorldZCmd->SetParameterName("WSizeZ",false,false); + WorldZCmd->SetDefaultUnit("mm"); + WorldZCmd->SetRange("WSizeZ>0."); + WorldZCmd->AvailableForStates(Idle); + + WorldRCmd = new G4UIcmdWithADoubleAndUnit("/calor/setWorldR",this); + WorldRCmd->SetGuidance("Set R size of the World"); + WorldRCmd->SetParameterName("WSizeR",false,false); + WorldRCmd->SetDefaultUnit("mm"); + WorldRCmd->SetRange("WSizeR>0."); + WorldRCmd->AvailableForStates(Idle); + + UpdateCmd = new G4UIcmdWithoutParameter("/calor/update",this); + UpdateCmd->SetGuidance("Update calorimeter geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(Idle); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02DetectorMessenger::~F02DetectorMessenger() +{ + delete AbsMaterCmd; + delete AbsThickCmd; + delete AbsRadCmd; + delete AbsZposCmd; + delete WorldMaterCmd; + delete WorldZCmd; + delete WorldRCmd; + delete UpdateCmd; + delete F02detDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == AbsMaterCmd ) + { F02Detector->SetAbsorberMaterial(newValue);} + + if( command == WorldMaterCmd ) + { F02Detector->SetWorldMaterial(newValue);} + + if( command == AbsThickCmd ) + { F02Detector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} + + if( command == AbsRadCmd ) + { F02Detector->SetAbsorberRadius(AbsRadCmd->GetNewDoubleValue(newValue));} + + if( command == AbsZposCmd ) + { F02Detector->SetAbsorberZpos(AbsZposCmd->GetNewDoubleValue(newValue));} + + if( command == WorldZCmd ) + { F02Detector->SetWorldSizeZ(WorldZCmd->GetNewDoubleValue(newValue));} + + if( command == WorldRCmd ) + { F02Detector->SetWorldSizeR(WorldRCmd->GetNewDoubleValue(newValue));} + + if( command == UpdateCmd ) + { F02Detector->UpdateGeometry(); } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + + + + + + + + + + + diff --git a/examples/extended/field/field02/src/F02ElectroMagneticField.cc b/examples/extended/field/field02/src/F02ElectroMagneticField.cc new file mode 100644 index 0000000000..e9c834bb87 --- /dev/null +++ b/examples/extended/field/field02/src/F02ElectroMagneticField.cc @@ -0,0 +1,219 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02ElectroMagneticField.cc,v 1.5 2001/11/12 09:41:26 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// User Field class implementation. +// + + +#include "F02ElectroMagneticField.hh" +#include "F02FieldMessenger.hh" + +#include "G4UniformElectricField.hh" +#include "G4UniformMagField.hh" +#include "G4MagneticField.hh" +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" +#include "G4EquationOfMotion.hh" +#include "G4EqMagElectricField.hh" +#include "G4Mag_UsualEqRhs.hh" +#include "G4MagIntegratorStepper.hh" +#include "G4ChordFinder.hh" + +#include "G4ExplicitEuler.hh" +#include "G4ImplicitEuler.hh" +#include "G4SimpleRunge.hh" +#include "G4SimpleHeum.hh" +#include "G4ClassicalRK4.hh" +#include "G4HelixExplicitEuler.hh" +#include "G4HelixImplicitEuler.hh" +#include "G4HelixSimpleRunge.hh" +#include "G4CashKarpRKF45.hh" +#include "G4RKG3_Stepper.hh" + +////////////////////////////////////////////////////////////////////////// +// +// Constructors: + +F02ElectroMagneticField::F02ElectroMagneticField() + : G4UniformElectricField(G4ThreeVector(0.0,100000.0*kilovolt/cm,0.0)), + fChordFinder(0), fStepper(0) +{ + fEMfield = new G4UniformElectricField( + G4ThreeVector(0.0,100000.0*kilovolt/cm,0.0)); + fFieldMessenger = new F02FieldMessenger(this) ; + fEquation = new G4EqMagElectricField(fEMfield); + fMinStep = 1.0*mm ; // minimal step of 1 mm is default + fStepperType = 4 ; // ClassicalRK4 is default stepper + + fFieldManager = GetGlobalFieldManager(); + UpdateField(); + +} + +///////////////////////////////////////////////////////////////////////////////// + +F02ElectroMagneticField::F02ElectroMagneticField(G4ThreeVector pFV) + : G4UniformElectricField(pFV) +{ + fEMfield = new G4UniformElectricField(pFV); + GetGlobalFieldManager()->CreateChordFinder(this); +} + +//////////////////////////////////////////////////////////////////////////////// + +F02ElectroMagneticField::~F02ElectroMagneticField() +{ + if(fEMfield) delete fEMfield; + if(fChordFinder) delete fChordFinder; + if(fStepper) delete fStepper; +} + +///////////////////////////////////////////////////////////////////////////// +// +// Update field +// + +void F02ElectroMagneticField::UpdateField() +{ + SetStepper(); + G4cout<<"The minimal step is equal to "<SetDetectorField(fEMfield ); + if(fChordFinder) delete fChordFinder; + fChordFinder = new G4ChordFinder( fEMfield, fMinStep,fStepper); + fFieldManager->SetChordFinder( fChordFinder ); +} + +///////////////////////////////////////////////////////////////////////////// +// +// Set stepper according to the stepper type +// + +void F02ElectroMagneticField::SetStepper() +{ + G4int nvar = 8; + + if(fStepper) delete fStepper; + + switch ( fStepperType ) + { + case 0: + fStepper = new G4ExplicitEuler( fEquation, nvar ); + G4cout<<"G4ExplicitEuler is calledS"<SetDetectorField(this); + } + else + { + // If the new field's value is Zero, then it is best to + // insure that it is not used for propagation. + + G4MagneticField* fEMfield = 0; + fieldMgr->SetDetectorField(fEMfield); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Utility method + +G4FieldManager* F02ElectroMagneticField::GetGlobalFieldManager() +{ + return G4TransportationManager::GetTransportationManager() + ->GetFieldManager(); +} diff --git a/examples/extended/field/field02/src/F02EventAction.cc b/examples/extended/field/field02/src/F02EventAction.cc new file mode 100644 index 0000000000..542d27fb74 --- /dev/null +++ b/examples/extended/field/field02/src/F02EventAction.cc @@ -0,0 +1,136 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02EventAction.cc,v 1.4 2001/11/07 16:36:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02EventAction.hh" + +#include "F02RunAction.hh" + +#include "F02CalorHit.hh" +#include "F02EventActionMessenger.hh" + +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4HCofThisEvent.hh" +#include "G4VHitsCollection.hh" +#include "G4SDManager.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Trajectory.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "G4UnitsTable.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02EventAction::F02EventAction(F02RunAction* F02RA) + : calorimeterCollID(-1), eventMessenger(0), + runaction(F02RA), verboselevel(0), + drawFlag("all"), printModulo(10000) +{ + eventMessenger = new F02EventActionMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02EventAction::~F02EventAction() +{ + delete eventMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02EventAction::BeginOfEventAction(const G4Event* evt) +{ + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + G4cout << "\n---> Begin of Event: " << evtNb << G4endl; + + if(verboselevel>1) + G4cout << "<<< Event " << evtNb << " started." << G4endl; + + if (calorimeterCollID==-1) + { + G4SDManager * SDman = G4SDManager::GetSDMpointer(); + calorimeterCollID = SDman->GetCollectionID("CalCollection"); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02EventAction::EndOfEventAction(const G4Event* evt) +{ + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) + { + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); + G4int n_trajectories = 0; + if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); + for(G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") trj->DrawTrajectory(50); + else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) + trj->DrawTrajectory(50); + } + } + + if(verboselevel>0) + G4cout << "<<< Event " << evt->GetEventID() << " ended." << G4endl; + + // save rndm status + if (runaction->GetRndmFreq() == 2) + { + HepRandom::saveEngineStatus("endOfEvent.rndm"); + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + { + G4cout << "\n---> End of Event: " << evtNb << G4endl; + HepRandom::showEngineStatus(); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4int F02EventAction::GetEventno() +{ + G4int evno = fpEventManager->GetConstCurrentEvent()->GetEventID() ; + return evno ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02EventAction::setEventVerbose(G4int level) +{ + verboselevel = level ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field02/src/F02EventActionMessenger.cc b/examples/extended/field/field02/src/F02EventActionMessenger.cc new file mode 100644 index 0000000000..942c9a3c30 --- /dev/null +++ b/examples/extended/field/field02/src/F02EventActionMessenger.cc @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02EventActionMessenger.cc,v 1.3 2001/10/15 17:20:43 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "globals.hh" +#include "F02EventActionMessenger.hh" + +#include "F02EventAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02EventActionMessenger::F02EventActionMessenger(F02EventAction* EvAct) +:eventAction(EvAct) +{ + setVerboseCmd = new G4UIcmdWithAnInteger("/event/setverbose",this); + setVerboseCmd->SetGuidance("Set verbose level ." ); + setVerboseCmd->SetParameterName("level",true); + setVerboseCmd->SetDefaultValue(0); + + DrawCmd = new G4UIcmdWithAString("/event/drawTracks",this); + DrawCmd->SetGuidance("Draw the tracks in the event"); + DrawCmd->SetGuidance(" Choice : none,charged, all"); + DrawCmd->SetParameterName("choice",true); + DrawCmd->SetDefaultValue("all"); + DrawCmd->SetCandidates("none charged all"); + DrawCmd->AvailableForStates(Idle); + + PrintCmd = new G4UIcmdWithAnInteger("/event/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02EventActionMessenger::~F02EventActionMessenger() +{ + delete setVerboseCmd; + delete DrawCmd; + delete PrintCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if(command == setVerboseCmd) + {eventAction->setEventVerbose(setVerboseCmd->GetNewIntValue(newValue));} + + if(command == DrawCmd) + {eventAction->SetDrawFlag(newValue);} + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field02/src/F02FieldMessenger.cc b/examples/extended/field/field02/src/F02FieldMessenger.cc new file mode 100644 index 0000000000..8a2c764252 --- /dev/null +++ b/examples/extended/field/field02/src/F02FieldMessenger.cc @@ -0,0 +1,121 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02FieldMessenger.cc,v 1.3 2001/10/15 17:20:43 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "F02FieldMessenger.hh" + +#include "F02ElectroMagneticField.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +////////////////////////////////////////////////////////////////////////////// + +F02FieldMessenger::F02FieldMessenger(F02ElectroMagneticField* pEMfield) + :fEMfield(pEMfield) +{ + F02detDir = new G4UIdirectory("/field/"); + F02detDir->SetGuidance("F02 field tracking control."); + + StepperCmd = new G4UIcmdWithAnInteger("/field/setStepperType",this); + StepperCmd->SetGuidance("Select stepper type for electric field"); + StepperCmd->SetParameterName("choice",true); + StepperCmd->SetDefaultValue(4); + StepperCmd->AvailableForStates(PreInit,Idle); + + + UpdateCmd = new G4UIcmdWithoutParameter("/field/update",this); + UpdateCmd->SetGuidance("Update calorimeter geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(Idle); + + MagFieldCmd = new G4UIcmdWithADoubleAndUnit("/field/setFieldZ",this); + MagFieldCmd->SetGuidance("Define magnetic field."); + MagFieldCmd->SetGuidance("Magnetic field will be in Z direction."); + MagFieldCmd->SetParameterName("Bz",false,false); + MagFieldCmd->SetDefaultUnit("tesla"); + MagFieldCmd->AvailableForStates(Idle); + + MinStepCmd = new G4UIcmdWithADoubleAndUnit("/field/setMinStep",this); + MinStepCmd->SetGuidance("Define minimal step"); + MinStepCmd->SetGuidance("Magnetic field will be in Z direction."); + MinStepCmd->SetParameterName("min step",false,false); + MinStepCmd->SetDefaultUnit("mm"); + MinStepCmd->AvailableForStates(Idle); + + AbsMaterCmd = new G4UIcmdWithAString("/field/setAbsMat",this); + AbsMaterCmd->SetGuidance("Select Material of the Absorber."); + AbsMaterCmd->SetParameterName("choice",true); + AbsMaterCmd->SetDefaultValue("Xe"); + AbsMaterCmd->AvailableForStates(Idle); + + +} + +/////////////////////////////////////////////////////////////////////////////// + +F02FieldMessenger::~F02FieldMessenger() +{ + delete StepperCmd; + delete MagFieldCmd; + delete MinStepCmd; + delete F02detDir; + delete UpdateCmd; + + delete AbsMaterCmd; +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F02FieldMessenger::SetNewValue( G4UIcommand* command, G4String newValue) +{ + if( command == StepperCmd ) + { + fEMfield->SetStepperType(StepperCmd->GetNewIntValue(newValue)); + } + if( command == UpdateCmd ) + { + fEMfield->UpdateField(); + } + if( command == MagFieldCmd ) + { + fEMfield->SetFieldValue(MagFieldCmd->GetNewDoubleValue(newValue)); + } + if( command == MinStepCmd ) + { + fEMfield->SetMinStep(MinStepCmd->GetNewDoubleValue(newValue)); + } +} + +// +// +///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/field/field02/src/F02PhysicsList.cc b/examples/extended/field/field02/src/F02PhysicsList.cc new file mode 100644 index 0000000000..429ee80750 --- /dev/null +++ b/examples/extended/field/field02/src/F02PhysicsList.cc @@ -0,0 +1,457 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02PhysicsList.cc,v 1.4 2001/10/25 09:30:53 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "G4Timer.hh" + +#include "F02PhysicsList.hh" +#include "F02DetectorConstruction.hh" +#include "F02PhysicsListMessenger.hh" + +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" +#include "G4Material.hh" +#include "G4EnergyLossTables.hh" +#include "G4UnitsTable.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "G4FastSimulationManagerProcess.hh" + + +///////////////////////////////////////////////////////////// +// +// + +F02PhysicsList::F02PhysicsList(F02DetectorConstruction* p) +: G4VUserPhysicsList(), MaxChargedStep(DBL_MAX), + thePhotoElectricEffect(0), theComptonScattering(0), theGammaConversion(0), + theeminusMultipleScattering(0), theeminusIonisation(0), + theeminusBremsstrahlung(0), + theeplusMultipleScattering(0), theeplusIonisation(0), + theeplusBremsstrahlung(0), theeplusAnnihilation(0), + theeminusStepCut(0), theeplusStepCut(0) +{ + pDet = p; + + defaultCutValue = 1.000*mm ; + + cutForGamma = defaultCutValue ; + cutForElectron = defaultCutValue ; + cutForProton = defaultCutValue ; + + SetVerboseLevel(1); + physicsListMessenger = new F02PhysicsListMessenger(this); +} + +///////////////////////////////////////////////////////////////////////// +// +// + +F02PhysicsList::~F02PhysicsList() +{ + delete physicsListMessenger; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F02PhysicsList::ConstructParticle() +{ + // In this method, static member functions should be called + // for all particles which you want to use. + // This ensures that objects of these particle types will be + // created in the program. + + ConstructBosons(); + ConstructLeptons(); + ConstructMesons(); + ConstructBarions(); +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F02PhysicsList::ConstructBosons() +{ + // gamma + + G4Gamma::GammaDefinition(); + + // charged geantino + + G4ChargedGeantino::ChargedGeantinoDefinition(); + + +} + +void F02PhysicsList::ConstructLeptons() +{ + // leptons + + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); + G4MuonPlus::MuonPlusDefinition(); + G4MuonMinus::MuonMinusDefinition(); + + G4NeutrinoE::NeutrinoEDefinition(); + G4AntiNeutrinoE::AntiNeutrinoEDefinition(); + G4NeutrinoMu::NeutrinoMuDefinition(); + G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); +} + +void F02PhysicsList::ConstructMesons() +{ + // mesons + + G4PionPlus::PionPlusDefinition(); + G4PionMinus::PionMinusDefinition(); + G4PionZero::PionZeroDefinition(); + G4KaonPlus::KaonPlusDefinition(); + G4KaonMinus::KaonMinusDefinition(); +} + + +void F02PhysicsList::ConstructBarions() +{ +// barions + + G4Proton::ProtonDefinition(); + G4AntiProton::AntiProtonDefinition(); +} + + +/////////////////////////////////////////////////////////////////////// +// +// + +void F02PhysicsList::ConstructProcess() +{ + AddTransportation(); + AddParameterisation(); + + ConstructEM(); + ConstructGeneral(); +} + +///////////////////////////////////////////////////////////////////////////// +// +// + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" +#include "G4PAIonisation.hh" +#include "G4ForwardXrayTR.hh" + +#include "F02StepCut.hh" + +#include "G4IonisationByLogicalVolume.hh" + +void F02PhysicsList::ConstructEM() +{ + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + + if (particleName == "gamma") + { + // Construct processes for gamma + + thePhotoElectricEffect = new G4PhotoElectricEffect(); + theComptonScattering = new G4ComptonScattering(); + theGammaConversion = new G4GammaConversion(); + + pmanager->AddDiscreteProcess(thePhotoElectricEffect); + pmanager->AddDiscreteProcess(theComptonScattering); + + pmanager->AddDiscreteProcess(theGammaConversion); + + } + else if (particleName == "e-") + { + // Construct processes for electron + + theeminusIonisation = new G4eIonisation(); + theeminusBremsstrahlung = new G4eBremsstrahlung(); + theeminusStepCut = new F02StepCut(); + + pmanager->AddProcess(theeminusIonisation,-1,2,2); + pmanager->AddProcess(theeminusBremsstrahlung,-1,1,1); + pmanager->AddProcess(theeminusStepCut,-1,-1,4); + theeminusStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if (particleName == "e+") + { + // Construct processes for positron + + theeplusIonisation = new G4eIonisation(); + theeplusBremsstrahlung = new G4eBremsstrahlung(); + theeplusStepCut = new F02StepCut(); + + pmanager->AddProcess(theeplusIonisation,-1,2,2); + pmanager->AddProcess(theeplusBremsstrahlung,-1,-1,3); + pmanager->AddProcess(theeplusStepCut,-1,-1,5); + theeplusStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if( particleName == "mu+" || + particleName == "mu-" ) + { + // Construct processes for muon+ + + F02StepCut* muonStepCut = new F02StepCut(); + + G4MuIonisation* themuIonisation = new G4MuIonisation() ; + pmanager->AddProcess(new G4MultipleScattering(),-1,1,1); + pmanager->AddProcess(themuIonisation,-1,2,2); + pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3); + pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4); + + pmanager->AddProcess( muonStepCut,-1,-1,3); + muonStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if ( + particleName == "proton" + || particleName == "antiproton" + || particleName == "pi+" + || particleName == "pi-" + || particleName == "kaon+" + || particleName == "kaon-" + ) + { + F02StepCut* thehadronStepCut = new F02StepCut(); + + G4hIonisation* thehIonisation = new G4hIonisation() ; + G4MultipleScattering* thehMultipleScattering = + new G4MultipleScattering() ; + + + pmanager->AddProcess(thehMultipleScattering,-1,1,1); + pmanager->AddProcess(thehIonisation,-1,2,2); + + pmanager->AddProcess( thehadronStepCut,-1,-1,3); + thehadronStepCut->SetMaxStep(MaxChargedStep) ; + } + } +} + +#include "G4Decay.hh" + +void F02PhysicsList::ConstructGeneral() +{ + // Add Decay Process + + G4Decay* theDecayProcess = new G4Decay(); + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + + if (theDecayProcess->IsApplicable(*particle)) + { + pmanager ->AddProcess(theDecayProcess); + + // set ordering for PostStepDoIt and AtRestDoIt + + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + } + } +} + +///////////////////////////////////////////////////////////////////////////// + +void F02PhysicsList::AddParameterisation() +{ + G4FastSimulationManagerProcess* theFastSimulationManagerProcess = + new G4FastSimulationManagerProcess() ; + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value() ; + G4ProcessManager* pmanager = particle->GetProcessManager() ; + + // both postStep and alongStep action are required: because + // of the use of ghost volumes. If no ghost, the postStep is sufficient. + + pmanager->AddProcess(theFastSimulationManagerProcess, -1, 1, 1); + } +} + + + +///////////////////////////////////////////////////////////////////////////// + +void F02PhysicsList::SetCuts() +{ + G4Timer theTimer ; + theTimer.Start() ; + if (verboseLevel >0) + { + G4cout << "F02PhysicsList::SetCuts:"; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; + } + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + + SetCutValue(cutForGamma,"gamma"); + + SetCutValue(cutForElectron,"e-"); + SetCutValue(cutForElectron,"e+"); + + SetCutValue(defaultCutValue,"mu-"); + SetCutValue(defaultCutValue,"mu+"); + + // set cut values for proton and anti_proton before all other hadrons + // because some processes for hadrons need cut values for proton/anti_proton + + SetCutValue(defaultCutValue, "proton"); + SetCutValue(defaultCutValue, "anti_proton"); + + SetCutValueForOthers(defaultCutValue); + + if (verboseLevel>1) DumpCutValuesTable(); + + theTimer.Stop(); + G4cout.precision(6); + G4cout << G4endl ; + G4cout << "total time(SetCuts)=" << theTimer.GetUserElapsed() << " s " <GetAbsorberMaterial(); + + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + + G4ParticleDefinition* part; + G4double cut; + + part = theParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e-"); + + part = theParticleTable->FindParticle("e+"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e+"); + + // set cut values for proton and anti_proton before all other hadrons + // because some processes for hadrons need cut values for proton/anti_proton + + part = theParticleTable->FindParticle("proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "proton"); + + part = theParticleTable->FindParticle("anti_proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "anti_proton"); + + SetCutValueForOthers(cut); +} + +////////////////////////////////////////////////////////////////////////////// + +void F02PhysicsList::GetRange(G4double val) +{ + G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable(); + G4Material* currMat = pDet->GetAbsorberMaterial(); + + G4ParticleDefinition* part; + G4double cut; + part = theParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + G4cout << "material : " << currMat->GetName() << G4endl; + G4cout << "particle : " << part->GetParticleName() << G4endl; + G4cout << "energy : " << val / keV << " (keV)" << G4endl; + G4cout << "range : " << cut / mm << " (mm)" << G4endl; +} + +//////////////////////////////////////////////////////////////////////////// + +void F02PhysicsList::SetMaxStep(G4double step) +{ + MaxChargedStep = step ; + G4cout << " MaxChargedStep=" << MaxChargedStep << G4endl; + G4cout << G4endl; +} + diff --git a/examples/extended/field/field02/src/F02PhysicsListMessenger.cc b/examples/extended/field/field02/src/F02PhysicsListMessenger.cc new file mode 100644 index 0000000000..458be5a10e --- /dev/null +++ b/examples/extended/field/field02/src/F02PhysicsListMessenger.cc @@ -0,0 +1,120 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02PhysicsListMessenger.cc,v 1.3 2001/10/15 17:20:44 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02PhysicsListMessenger.hh" + +#include "F02PhysicsList.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02PhysicsListMessenger::F02PhysicsListMessenger(F02PhysicsList * List) + : F02List(List) +{ + cutGCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutG",this); + cutGCmd->SetGuidance("Set cut values by RANGE for Gamma."); + cutGCmd->SetParameterName("range",true); + cutGCmd->SetDefaultValue(1.); + cutGCmd->SetDefaultUnit("mm"); + cutGCmd->AvailableForStates(Idle); + + cutECmd = new G4UIcmdWithADoubleAndUnit("/calor/cutE",this); + cutECmd->SetGuidance("Set cut values by RANGE for e- e+."); + cutECmd->SetParameterName("range",true); + cutECmd->SetDefaultValue(1.); + cutECmd->SetDefaultUnit("mm"); + cutECmd->AvailableForStates(Idle); + + cutPCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutP",this); + cutPCmd->SetGuidance("Set cut values by RANGE for proton and others."); + cutPCmd->SetParameterName("range",true); + cutPCmd->SetDefaultValue(1.); + cutPCmd->SetDefaultUnit("mm"); + cutPCmd->AvailableForStates(Idle); + + eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this); + eCmd->SetGuidance("Set cut values by ENERGY for charged particles."); + eCmd->SetParameterName("energy",true); + eCmd->SetDefaultValue(10.); + eCmd->SetDefaultUnit("keV"); + eCmd->AvailableForStates(Idle); + + rCmd = new G4UIcmdWithADoubleAndUnit("/calor/range",this); + rCmd->SetGuidance("Display the RANGE of Electron for the current material."); + rCmd->SetParameterName("energy",true); + rCmd->SetDefaultValue(10.); + rCmd->SetDefaultUnit("keV"); + rCmd->AvailableForStates(Idle); + + setMaxStepCmd = new G4UIcmdWithADoubleAndUnit("/step/setMaxStep",this); + setMaxStepCmd->SetGuidance("Set max. step length in the detector"); + setMaxStepCmd->SetParameterName("mxStep",true); + setMaxStepCmd->SetDefaultUnit("mm"); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02PhysicsListMessenger::~F02PhysicsListMessenger() +{ + + delete setMaxStepCmd; + + delete cutGCmd; + delete cutECmd; + delete cutPCmd; + delete rCmd; + delete eCmd; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if(command == cutGCmd) + { F02List->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));} + if(command == cutECmd) + { F02List->SetElectronCut(eCmd->GetNewDoubleValue(newValue));} + if(command == cutPCmd) + { F02List->SetProtonCut(eCmd->GetNewDoubleValue(newValue));} + if(command == eCmd) + { F02List->SetCutsByEnergy(cutECmd->GetNewDoubleValue(newValue));} + if(command == rCmd) + { F02List->GetRange(rCmd->GetNewDoubleValue(newValue));} + if(command == setMaxStepCmd) + { F02List->SetMaxStep(setMaxStepCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field02/src/F02PrimaryGeneratorAction.cc b/examples/extended/field/field02/src/F02PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..99b5b7a4ca --- /dev/null +++ b/examples/extended/field/field02/src/F02PrimaryGeneratorAction.cc @@ -0,0 +1,154 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02PrimaryGeneratorAction.cc,v 1.3 2001/10/15 17:20:44 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02PrimaryGeneratorAction.hh" + +#include "F02DetectorConstruction.hh" +#include "F02PrimaryGeneratorMessenger.hh" + +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "Randomize.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4String F02PrimaryGeneratorAction::thePrimaryParticleName = "proton" ; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02PrimaryGeneratorAction::F02PrimaryGeneratorAction( + F02DetectorConstruction* F02DC) + : F02Detector(F02DC), rndmFlag("off"), + xvertex(0.),yvertex(0.),zvertex(0.), + vertexdefined(false) +{ + G4int n_particle = 1; + particleGun = new G4ParticleGun(n_particle); + + // create a messenger for this class + // + gunMessenger = new F02PrimaryGeneratorMessenger(this); + + // default particle kinematic + + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4String particleName; + G4ParticleDefinition* particle + = particleTable->FindParticle(particleName="proton"); + particleGun->SetParticleDefinition(particle); + + thePrimaryParticleName = particle->GetParticleName() ; + + particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,1.)); + particleGun->SetParticleEnergy(100.*GeV); + + zvertex = 0. ; // -0.5*(F02Detector->GetAbsorberThickness()); + particleGun->SetParticlePosition(G4ThreeVector(xvertex,yvertex,zvertex)); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02PrimaryGeneratorAction::~F02PrimaryGeneratorAction() +{ + delete particleGun; + delete gunMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + // this function is called at the begining of event + // + thePrimaryParticleName = particleGun->GetParticleDefinition()-> + GetParticleName() ; + G4double x0,y0,z0 ; + if(vertexdefined) + { + x0 = xvertex ; + y0 = yvertex ; + z0 = zvertex ; + } + else + { + x0 = 0. ; + y0 = 0. ; + z0 = 0. ; // -0.5*(F02Detector->GetWorldSizeZ()) ; + } + G4double r0,phi0 ; + + if (rndmFlag == "on") + { + r0 = (F02Detector->GetAbsorberRadius())*sqrt(G4UniformRand()); + phi0 = twopi*G4UniformRand(); + x0 = r0*cos(phi0); + y0 = r0*sin(phi0); + } + + particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0)); + particleGun->GeneratePrimaryVertex(anEvent); +} + +/////////////////////////////////////////////////////////////////////// +// +// + +G4String F02PrimaryGeneratorAction::GetPrimaryName() +{ + return thePrimaryParticleName ; +} + +void F02PrimaryGeneratorAction::Setzvertex(G4double z) +{ + vertexdefined = true ; + zvertex = z ; + G4cout << " Z coordinate of the primary vertex = " << zvertex/mm << + " mm." << G4endl; +} +void F02PrimaryGeneratorAction::Setxvertex(G4double x) +{ + vertexdefined = true ; + xvertex = x ; + G4cout << " X coordinate of the primary vertex = " << xvertex/mm << + " mm." << G4endl; +} + +void F02PrimaryGeneratorAction::Setyvertex(G4double y) +{ + vertexdefined = true ; + yvertex = y ; + G4cout << " Y coordinate of the primary vertex = " << yvertex/mm << + " mm." << G4endl; +} diff --git a/examples/extended/field/field02/src/F02PrimaryGeneratorMessenger.cc b/examples/extended/field/field02/src/F02PrimaryGeneratorMessenger.cc new file mode 100644 index 0000000000..43c42727de --- /dev/null +++ b/examples/extended/field/field02/src/F02PrimaryGeneratorMessenger.cc @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02PrimaryGeneratorMessenger.cc,v 1.3 2001/10/15 17:20:44 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02PrimaryGeneratorMessenger.hh" + +#include "F02PrimaryGeneratorAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02PrimaryGeneratorMessenger::F02PrimaryGeneratorMessenger(F02PrimaryGeneratorAction* F02Gun) + : F02Action(F02Gun) +{ + RndmCmd = new G4UIcmdWithAString("/gun/random",this); + RndmCmd->SetGuidance("Shoot randomly the incident particle."); + RndmCmd->SetGuidance(" Choice : on, off(default)"); + RndmCmd->SetParameterName("choice",true); + RndmCmd->SetDefaultValue("off"); + RndmCmd->SetCandidates("on off"); + RndmCmd->AvailableForStates(PreInit,Idle); + + setxvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/xvertex",this); + setxvertexCmd->SetGuidance(" Set x coord. of the primary vertex."); + setxvertexCmd->SetParameterName("xv",true); + setxvertexCmd->SetDefaultValue(0.0*mm) ; + + setyvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/yvertex",this); + setyvertexCmd->SetGuidance(" Set y coord. of the primary vertex."); + setyvertexCmd->SetParameterName("yv",true); + setyvertexCmd->SetDefaultValue(0.0*mm) ; + + setzvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/zvertex",this); + setzvertexCmd->SetGuidance(" Set z coord. of the primary vertex."); + setzvertexCmd->SetParameterName("zv",true); + setzvertexCmd->SetDefaultValue(0.0*mm) ; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02PrimaryGeneratorMessenger::~F02PrimaryGeneratorMessenger() +{ + delete RndmCmd; + delete setxvertexCmd; + delete setyvertexCmd; + delete setzvertexCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02PrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if( command == RndmCmd ) + { F02Action->SetRndmFlag(newValue);} + if( command == setxvertexCmd) + { F02Action->Setxvertex(setxvertexCmd->GetNewDoubleValue(newValue));} + if( command == setyvertexCmd) + { F02Action->Setyvertex(setyvertexCmd->GetNewDoubleValue(newValue));} + if( command == setzvertexCmd) + { F02Action->Setzvertex(setzvertexCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field02/src/F02RunAction.cc b/examples/extended/field/field02/src/F02RunAction.cc new file mode 100644 index 0000000000..91e2445f13 --- /dev/null +++ b/examples/extended/field/field02/src/F02RunAction.cc @@ -0,0 +1,94 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02RunAction.cc,v 1.4 2001/11/07 16:36:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "F02RunAction.hh" +#include "F02RunMessenger.hh" + +#include "G4Run.hh" +#include "G4UImanager.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "Randomize.hh" + +////////////////////////////////////////////////////////////////////////////// + +F02RunAction::F02RunAction() + : saveRndm(0) +{ + runMessenger = new F02RunMessenger(this); +} + +//////////////////////////////////////////////////////////////////////////// + +F02RunAction::~F02RunAction() +{ + delete runMessenger; +} + +///////////////////////////////////////////////////////////////////////////// + +void F02RunAction::BeginOfRunAction(const G4Run* aRun) +{ + G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; + + // save Rndm status + if (saveRndm > 0) + { + HepRandom::showEngineStatus(); + HepRandom::saveEngineStatus("beginOfRun.rndm"); + } + G4UImanager* UI = G4UImanager::GetUIpointer(); + + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) UI->ApplyCommand("/vis/scene/notifyHandlers"); +} + +///////////////////////////////////////////////////////////////////////////// + +void F02RunAction::EndOfRunAction(const G4Run* aRun) +{ + if (G4VVisManager::GetConcreteInstance()) + { + G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); + } + + // save Rndm status + + if (saveRndm == 1) + { + HepRandom::showEngineStatus(); + HepRandom::saveEngineStatus("endOfRun.rndm"); + } +} + +// +// +//////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm2/src/Em2RunActionMessenger.cc b/examples/extended/field/field02/src/F02RunMessenger.cc similarity index 78% rename from examples/extended/electromagnetic/TestEm2/src/Em2RunActionMessenger.cc rename to examples/extended/field/field02/src/F02RunMessenger.cc index e98894f860..6f7fd45770 100644 --- a/examples/extended/electromagnetic/TestEm2/src/Em2RunActionMessenger.cc +++ b/examples/extended/field/field02/src/F02RunMessenger.cc @@ -21,29 +21,29 @@ // ******************************************************************** // // -// $Id: Em2RunActionMessenger.cc,v 1.4.2.1 2001/06/28 19:06:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: F02RunMessenger.cc,v 1.3 2001/10/15 17:20:45 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#include "Em2RunActionMessenger.hh" +#include "F02RunMessenger.hh" -#include "Em2RunAction.hh" +#include "F02RunAction.hh" #include "G4UIdirectory.hh" -#include "G4UIcmdWithAString.hh" #include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -Em2RunActionMessenger::Em2RunActionMessenger(Em2RunAction* run) -:Em2Run(run) -{ +F02RunMessenger::F02RunMessenger(F02RunAction* RA) +:runAction (RA) +{ RndmDir = new G4UIdirectory("/rndm/"); RndmDir->SetGuidance("Rndm status control."); @@ -51,8 +51,8 @@ Em2RunActionMessenger::Em2RunActionMessenger(Em2RunAction* run) RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files."); RndmSaveCmd->SetGuidance("freq = 0 not saved"); RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq > 0 saved on: endOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq = 2 saved on: beginOfEvent.rndm"); + RndmSaveCmd->SetGuidance("freq = 1 saved on: endOfRun.rndm"); + RndmSaveCmd->SetGuidance("freq = 2 saved on: endOfEvent.rndm"); RndmSaveCmd->SetParameterName("frequency",false); RndmSaveCmd->SetRange("frequency>=0 && frequency<=2"); RndmSaveCmd->AvailableForStates(PreInit,Idle); @@ -61,26 +61,27 @@ Em2RunActionMessenger::Em2RunActionMessenger(Em2RunAction* run) RndmReadCmd->SetGuidance("get rndm status from an external file."); RndmReadCmd->SetParameterName("fileName",true); RndmReadCmd->SetDefaultValue ("beginOfRun.rndm"); - RndmReadCmd->AvailableForStates(PreInit,Idle); + RndmReadCmd->AvailableForStates(PreInit,Idle); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -Em2RunActionMessenger::~Em2RunActionMessenger() +F02RunMessenger::~F02RunMessenger() { - delete RndmSaveCmd; delete RndmReadCmd; delete RndmDir; + delete RndmSaveCmd; delete RndmReadCmd; delete RndmDir; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void Em2RunActionMessenger::SetNewValue(G4UIcommand* command,G4String newValue) -{ +void F02RunMessenger::SetNewValue(G4UIcommand* command,G4String newValues) +{ if (command == RndmSaveCmd) - Em2Run->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValue)); + runAction->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValues)); if (command == RndmReadCmd) - { G4cout << "\n---> rndm status restored from file: " << newValue << G4endl; - HepRandom::restoreEngineStatus(newValue); + { G4cout << "\n---> rndm status restored from file: " + << newValues << G4endl; + HepRandom::restoreEngineStatus(newValues); HepRandom::showEngineStatus(); } } diff --git a/examples/extended/field/field02/src/F02StepCut.cc b/examples/extended/field/field02/src/F02StepCut.cc new file mode 100644 index 0000000000..5d45a40c27 --- /dev/null +++ b/examples/extended/field/field02/src/F02StepCut.cc @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02StepCut.cc,v 1.2 2001/07/11 09:58:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "F02StepCut.hh" + +#include "G4Step.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + +F02StepCut::F02StepCut(const G4String& aName) + : G4VDiscreteProcess(aName),MaxChargedStep(DBL_MAX) +{ + if (verboseLevel>0) { + G4cout << GetProcessName() << " is created "<< G4endl; + } +} + +F02StepCut::~F02StepCut() +{ +} + +F02StepCut::F02StepCut(F02StepCut& right) + :G4VDiscreteProcess(right) +{} + +void F02StepCut::SetMaxStep(G4double step) +{ + MaxChargedStep = step ; +} + + diff --git a/examples/extended/field/field02/src/F02SteppingAction.cc b/examples/extended/field/field02/src/F02SteppingAction.cc new file mode 100644 index 0000000000..c5649746ed --- /dev/null +++ b/examples/extended/field/field02/src/F02SteppingAction.cc @@ -0,0 +1,59 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02SteppingAction.cc,v 1.4 2001/11/07 16:36:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02SteppingAction.hh" +#include "F02SteppingMessenger.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02SteppingAction::F02SteppingAction() + : steppingMessenger(0) +{ + steppingMessenger = new F02SteppingMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02SteppingAction::~F02SteppingAction() +{ + delete steppingMessenger ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02SteppingAction::UserSteppingAction(const G4Step*) +{ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field02/src/F02SteppingMessenger.cc b/examples/extended/field/field02/src/F02SteppingMessenger.cc new file mode 100644 index 0000000000..7061fc55c3 --- /dev/null +++ b/examples/extended/field/field02/src/F02SteppingMessenger.cc @@ -0,0 +1,60 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02SteppingMessenger.cc,v 1.2 2001/07/11 09:58:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F02SteppingMessenger.hh" + +#include "F02SteppingAction.hh" +#include "G4UIdirectory.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02SteppingMessenger::F02SteppingMessenger(F02SteppingAction* SA) +:steppingAction (SA) +{ + steppingDir = new G4UIdirectory("/stepping/"); + steppingDir->SetGuidance("stepping control"); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02SteppingMessenger::~F02SteppingMessenger() +{ + delete steppingDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02SteppingMessenger::SetNewValue(G4UIcommand* command,G4String newValues) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/examples/extended/field/field02/src/F02SteppingVerbose.cc b/examples/extended/field/field02/src/F02SteppingVerbose.cc new file mode 100644 index 0000000000..e7de23330c --- /dev/null +++ b/examples/extended/field/field02/src/F02SteppingVerbose.cc @@ -0,0 +1,168 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02SteppingVerbose.cc,v 1.4 2001/10/15 17:20:45 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +//--------------------------------------------------------------- +// +// F02SteppingVerbose.cc +// +// Description: +// Implementation of the F02SteppingVerbose class +// Contact: +// Questions and comments to this code should be sent to +// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) +// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) +// +//--------------------------------------------------------------- + +#include "F02SteppingVerbose.hh" +#include "G4SteppingManager.hh" + +#include "G4UnitsTable.hh" + +//////////////////////////////////////////////// +F02SteppingVerbose::F02SteppingVerbose() +//////////////////////////////////////////////// +{ +} + +////////////////////////////////////////////////// +F02SteppingVerbose::~F02SteppingVerbose() +////////////////////////////////////////////////// +{ +} + +///////////////////////////////////////// +void F02SteppingVerbose::StepInfo() +///////////////////////////////////////// +{ + CopyState(); + + G4int prec = G4cout.precision(3); + + if( verboseLevel >= 1 ){ + if( verboseLevel >= 4 ) VerboseTrack(); + if( verboseLevel >= 3 ){ + G4cout << G4endl; + G4cout << G4std::setw( 5) << "#Step#" << " " + << G4std::setw( 6) << "X" << " " + << G4std::setw( 6) << "Y" << " " + << G4std::setw( 6) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 9) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "NextVolu" + << G4std::setw(10) << "Process" << G4endl; + } + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + // if( fStepStatus != fWorldBoundary){ + if( fTrack->GetNextVolume() != 0 ) { + G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName(); + } else { + G4cout << G4std::setw(10) << "OutOfWorld"; + } + + if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){ + G4cout << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName(); + } else { + G4cout << "User Limit"; + } + + G4cout << G4endl; + + if( verboseLevel == 2 ){ + G4int tN2ndariesTot = fN2ndariesAtRestDoIt + + fN2ndariesAlongStepDoIt + + fN2ndariesPostStepDoIt; + if(tN2ndariesTot>0){ + G4cout << " :----- List of 2ndaries - " + << "#SpawnInStep=" << G4std::setw(3) << tN2ndariesTot + << "(Rest=" << G4std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt + << "), " + << " ---------------" + << G4endl; + G4cout << " :-----------------------------" + << "----------------------------------" + << "-- EndOf2ndaries Info ---------------" + << G4endl; + } + } + + } + G4cout.precision(prec); +} + +//////////////////////////////////////////////// +void F02SteppingVerbose::TrackingStarted() +//////////////////////////////////////////////// +{ + + CopyState(); +G4int prec = G4cout.precision(3); + if( verboseLevel > 0 ){ + + G4cout << G4std::setw( 5) << "Step#" << " " + << G4std::setw( 6) << "X" << " " + << G4std::setw( 6) << "Y" << " " + << G4std::setw( 6) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 9) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "NextVolu" + << G4std::setw(10) << "Process" << G4endl; + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if(fTrack->GetNextVolume()){ + G4cout << G4std::setw(10) << fTrack->GetNextVolume()->GetName() << " "; + } else { + G4cout << G4std::setw(10) << "OutOfWorld" << " "; + } + G4cout << G4std::setw(10) << "initStep" << G4endl; + } + G4cout.precision(prec); +} diff --git a/examples/extended/field/field02/src/F02VisManager.cc b/examples/extended/field/field02/src/F02VisManager.cc new file mode 100644 index 0000000000..eba147c4bf --- /dev/null +++ b/examples/extended/field/field02/src/F02VisManager.cc @@ -0,0 +1,153 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F02VisManager.cc,v 1.3 2001/12/12 15:22:31 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 24th January 1998. + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifdef G4VIS_USE + +#include "F02VisManager.hh" + +// Supported drivers... + +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN +#include "G4FukuiRenderer.hh" +#endif + +#ifdef G4VIS_USE_OPACS +#include "G4Wo.hh" +#include "G4Xo.hh" +#endif + +#ifdef G4VIS_USE_OPENGLX +#include "G4OpenGLImmediateX.hh" +#include "G4OpenGLStoredX.hh" +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 +#include "G4OpenGLImmediateWin32.hh" +#include "G4OpenGLStoredWin32.hh" +#endif + +#ifdef G4VIS_USE_OPENGLXM +#include "G4OpenGLImmediateXm.hh" +#include "G4OpenGLStoredXm.hh" +#endif + +#ifdef G4VIS_USE_OIX +#include "G4OpenInventorX.hh" +#endif + +#ifdef G4VIS_USE_OIWIN32 +#include "G4OpenInventorWin32.hh" +#endif + +#ifdef G4VIS_USE_VRML +#include "G4VRML1.hh" +#include "G4VRML2.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F02VisManager::F02VisManager () {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F02VisManager::RegisterGraphicsSystems () { + + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN + RegisterGraphicsSystem (new G4FukuiRenderer); +#endif + +#ifdef G4VIS_USE_OPACS + RegisterGraphicsSystem (new G4Wo); + RegisterGraphicsSystem (new G4Xo); +#endif + +#ifdef G4VIS_USE_OPENGLX + RegisterGraphicsSystem (new G4OpenGLImmediateX); + RegisterGraphicsSystem (new G4OpenGLStoredX); +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 + RegisterGraphicsSystem (new G4OpenGLImmediateWin32); + RegisterGraphicsSystem (new G4OpenGLStoredWin32); +#endif + +#ifdef G4VIS_USE_OPENGLXM + RegisterGraphicsSystem (new G4OpenGLImmediateXm); + RegisterGraphicsSystem (new G4OpenGLStoredXm); +#endif + +#ifdef G4VIS_USE_OIX + RegisterGraphicsSystem (new G4OpenInventorX); +#endif + +#ifdef G4VIS_USE_OIWIN32 + RegisterGraphicsSystem (new G4OpenInventorWin32); +#endif + +#ifdef G4VIS_USE_VRML + RegisterGraphicsSystem (new G4VRML1); + RegisterGraphicsSystem (new G4VRML2); +#endif + + if (fVerbose > 0) { + G4cout << + "\nYou have successfully chosen to use the following graphics systems." + << G4endl; + PrintAvailableGraphicsSystems (); + } +} + +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field03/GNUmakefile b/examples/extended/field/field03/GNUmakefile new file mode 100644 index 0000000000..65eac4baee --- /dev/null +++ b/examples/extended/field/field03/GNUmakefile @@ -0,0 +1,19 @@ +# $Id: GNUmakefile,v 1.2 2001/10/15 17:20:46 gcosmo Exp $ +# -------------------------------------------------------------- +# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98. +# -------------------------------------------------------------- + +name := field03 +G4TARGET := $(name) +G4EXLIB := true + +ifndef G4INSTALL + G4INSTALL = ../../../.. +endif + +.PHONY: all +all: lib bin + +include $(G4INSTALL)/config/architecture.gmk + +include $(G4INSTALL)/config/binmake.gmk diff --git a/examples/extended/field/field03/History b/examples/extended/field/field03/History new file mode 100644 index 0000000000..1e2c3c80a2 --- /dev/null +++ b/examples/extended/field/field03/History @@ -0,0 +1,24 @@ +$Id: History,v 1.3 2001/11/07 16:36:33 gcosmo Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + field03 History file + -------------------- +This file should be used by the G4 example coordinator to briefly +summarize all major modifications introduced in the code and keep +track of all tags. + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +Nov 7th, 2001 - G.Cosmo +----------------------- +- More cleanup and fixes to primary generator gun (V.Grichine). + +Oct 15th, 2001 - G.Cosmo +------------------------ +- Cleaned from test code. diff --git a/examples/extended/field/field03/README b/examples/extended/field/field03/README new file mode 100644 index 0000000000..3c3865a95a --- /dev/null +++ b/examples/extended/field/field03/README @@ -0,0 +1,80 @@ +$Id: README,v 1.3 2001/10/25 10:03:53 grichine Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + field03 + ------- + + Example of tracking in magnetic field where field associated + to selected logical volumes varies. + + + 1- GEOMETRY DEFINITION + + The "absorber" is a solid made of a given material. + + Three parameters define the absorber : + - the material of the absorber, + - the thickness of an absorber, + - the transverse size of the absorber (the input face is a square). + + The volume "World" contains the "absorber". + In this test the parameters of the "World" can be changed , too. + + In addition a transverse uniform magnetic field can be applied. + + The default geometry is constructed in DetectorConstruction class, + but all the parameters can be changed via + the commands defined in the DetectorMessenger class. + + 2- AN EVENT : THE PRIMARY GENERATOR + + The primary kinematic consists of a single particle which hits the + absorber perpendicular to the input face. The type of the particle + and its energy are set in the PrimaryGeneratorAction class, and can + be changed via the G4 build-in commands of ParticleGun class (see + the macros provided with this example). + + A RUN is a set of events. + + 3- DETECTOR RESPONSE + + + A HIT is a record, event per event , of all the + informations needed to simulate and analyse the detector response. + + In this example a CalorHit is defined as a set of 2 informations: + - the total energy deposit in the absorber, + - the total tracklength of all charged particles in the absorber, + + Therefore the absorber is declared + 'sensitive detector' (SD), which means they can contribute to the hit. + + + 4- PHYSICS DEMO + + The particle's type and the physic processes which will be available + in this example are set in PhysicsList class. + + The messenger classes introduce interactive commands . Using these + commands the geometry of the detector, the data of the primary + particle, etc. can be changed. + + + 5- HOW TO START ? + + - compile and link to generate an executable + % cd $G4INSTALL/example/extended/field/field03 + % gmake + + - execute field01 in 'batch' mode from macro files e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/field03 field03.in + + - execute field01 in 'interactive' mode with visualization e.g. + % $(G4INSTALL)/bin/$(G4SYSTEM)/field03 + .... + Idle> type your commands + .... diff --git a/examples/extended/field/field03/field03.cc b/examples/extended/field/field03/field03.cc new file mode 100644 index 0000000000..b7defa7e78 --- /dev/null +++ b/examples/extended/field/field03/field03.cc @@ -0,0 +1,136 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: field03.cc,v 1.4 2001/11/07 16:36:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 - Example F03 +// +// -------------------------------------------------------------- +// Comments +// +// +// -------------------------------------------------------------- + +#include "G4RunManager.hh" +#include "G4UImanager.hh" +#include "G4UIterminal.hh" +#include "Randomize.hh" + +#ifdef G4VIS_USE +#include "F03VisManager.hh" +#endif + +#include "F03DetectorConstruction.hh" +#include "F03ElectroMagneticField.hh" +#include "F03PhysicsList.hh" +#include "F03PrimaryGeneratorAction.hh" +#include "F03RunAction.hh" +#include "F03EventAction.hh" +#include "F03SteppingAction.hh" +#include "F03SteppingVerbose.hh" + +int main(int argc,char** argv) +{ + + //choose the Random engine + + HepRandom::setTheEngine(new RanecuEngine); + + //my Verbose output class + + G4VSteppingVerbose::SetInstance(new F03SteppingVerbose); + + // Construct the default run manager + + G4RunManager * runManager = new G4RunManager; + + // Construct the electromagnetic field + + F03ElectroMagneticField* field = new F03ElectroMagneticField() ; + + // Set mandatory initialization classes + + F03DetectorConstruction* detector; + detector = new F03DetectorConstruction; + runManager->SetUserInitialization(detector); + runManager->SetUserInitialization(new F03PhysicsList(detector)); + +#ifdef G4VIS_USE + + // visualization manager + + G4VisManager* visManager = new F03VisManager; + visManager->Initialize(); + +#endif + + // Set user action classes + + runManager->SetUserAction(new F03PrimaryGeneratorAction(detector)); + + F03RunAction* runAction = new F03RunAction; + + runManager->SetUserAction(runAction); + + F03EventAction* eventAction = new F03EventAction(runAction); + + runManager->SetUserAction(eventAction); + + F03SteppingAction* steppingAction = new F03SteppingAction(); + runManager->SetUserAction(steppingAction); + + // Initialize G4 kernel, physics tables ... + + runManager->Initialize(); + + // Get the pointer to the User Interface manager + + G4UImanager* UI = G4UImanager::GetUIpointer(); + + if (argc==1) // Define UI terminal for interactive mode + { + G4UIsession * session = new G4UIterminal; + session->SessionStart(); + delete session; + } + else // Batch mode + { + G4String command = "/control/execute "; + G4String fileName = argv[1]; + UI->ApplyCommand(command+fileName); + } + + // job termination + +#ifdef G4VIS_USE + delete visManager; +#endif + delete field; + delete runManager; + + return 0; +} + diff --git a/examples/extended/field/field03/field03.in b/examples/extended/field/field03/field03.in new file mode 100644 index 0000000000..e4b993ad50 --- /dev/null +++ b/examples/extended/field/field03/field03.in @@ -0,0 +1,28 @@ +# +# Macro file for the initialization phase of field03 +# +# It creates the default geometry (simple absorber cylinder ) +# +/tracking/verbose 1 +/run/verbose 1 +# +# +# +/field/setStepperType 4 +/field/setMinStep 10 mm +# +/field/update +# +/run/initialize +# +/run/particle/dumpCutValues +# +/gun/particle e- +/gun/energy 500.0 MeV +# +/event/printModulo 50 +/run/beamOn 100 +# +# + + diff --git a/examples/extended/field/field03/field03.out b/examples/extended/field/field03/field03.out new file mode 100644 index 0000000000..84892667fa --- /dev/null +++ b/examples/extended/field/field03/field03.out @@ -0,0 +1,1271 @@ +********************************************** + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) + Copyright : Geant4 Collaboration +********************************************** +G4ClassicalRK4 (default) is called +The minimal step is equal to 1 mm +G4ClassicalRK4 (default) is called +The minimal step is equal to 1 mm +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + DAWNFILE (DAWNFILE) + VRML1FILE (VRML1FILE) + +***** Table : Nb of materials = 11 ***** + + Material: Mylar density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 19.770 cm + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 48.42 % Abundance 18.18 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 45.47 % Abundance 45.45 % + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 6.11 % Abundance 36.36 % + + Material: Polypropelene density: 910.000 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 28.167 cm + ---> Element: Hydrogen H Z = 1.0 N = 1.0 A = 1.01 g/mole fractionMass: 25.16 % Abundance 66.67 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 74.84 % Abundance 33.33 % + + Material: Kr density: 3.700 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 30.736 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Argon density: 1.784 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 109.604 m + ---> Element: Argon Ar Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: N2 density: 1.251 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 303.846 m + ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: O2 density: 1.429 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 239.621 m + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: Air density: 0.000 mg/cm3 temperature: 273.15 K pressure: 0.00 atm RadLength: 28329272.015 km + ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 75.57 % Abundance 78.48 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 23.15 % Abundance 21.05 % + ---> Element: Argon Ar Z = 18.0 N = 39.9 A = 39.95 g/mole fractionMass: 1.28 % Abundance 0.47 % + + Material: Xenon density: 5.858 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.478 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 100.00 % Abundance 100.00 % + + Material: CO2 density: 1.977 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 158.123 m + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 15.81 % Abundance 33.33 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 84.19 % Abundance 66.67 % + + Material: Xe20CO2 density: 5.082 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 17.695 m + ---> Element: Xenon Z = 54.0 N = 131.3 A = 131.29 g/mole fractionMass: 92.20 % Abundance 53.29 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.23 % Abundance 15.57 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 6.57 % Abundance 31.14 % + + Material: Kr20CO2 density: 3.601 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 33.957 m + ---> Element: Kr Z = 36.0 N = 83.8 A = 83.80 g/mole fractionMass: 89.00 % Abundance 55.02 % + ---> Element: Carbon C Z = 6.0 N = 6.0 A = 6.01 g/mole fractionMass: 1.74 % Abundance 14.99 % + ---> Element: Oxygen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 9.26 % Abundance 29.99 % + + + + The WORLD is made of 44000mm of Air, the transverse size (R) of the world is 22000 mm. + The ABSORBER is made of 1mm of Air, the transverse size (R) is 20000 mm. + Z position of the (middle of the) absorber 21990 mm. + +zRad = 21689.5 mm +radThick = 205.02 mm +fFoilNumber = 1 +fRadiatorMat = Air +WorldMaterial = Air +zModule = 21790 mm +21790 mm +F03PhysicsList::SetCuts:CutLength : 1 mm + +phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z + Sandia crossSection below 50 KeV + PhysicsTables from 50 keV to 50 MeV in 100 bins. + +compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. + +conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. + e+e- energies according Bethe-Heitler + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. + +eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. + Good description from 1 KeV to 100 GeV. + log scale extrapolation above 100 GeV + Gamma energy sampled from a parametrised formula. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +msc: Tables of transport mean free paths. + New model of MSC , computes the lateral + displacement of the particle , too. + PhysicsTables from 100 eV to 100 TeV in 100 bins. + +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +MuBrems: theoretical cross section + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +MuPairProd: theoretical cross sections + Good description up to 1000 PeV. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. + +msc: Tables of transport mean free paths. + New model of MSC , computes the lateral + displacement of the particle , too. + PhysicsTables from 100 eV to 100 TeV in 100 bins. + +hIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. + delta ray energy sampled from differential Xsection. + PhysicsTables from 1 keV to 100 TeV in 100 bins. + +total time(SetCuts)=18.39 s +G4ClassicalRK4 (default) is called +The minimal step is equal to 10 mm +============= The cut Energy ============================== + gamma e- +Cut in range + Mylar 1 mm 1 mm + Polypropelene 1 mm 1 mm + Kr 1 mm 1 mm + Argon 1 mm 1 mm + N2 1 mm 1 mm + O2 1 mm 1 mm + Air 1 mm 1 mm + Xenon 1 mm 1 mm + CO2 1 mm 1 mm + Xe20CO2 1 mm 1 mm + Kr20CO2 1 mm 1 mm +Cut in energy + Mylar 3.48 keV 541 keV + Polypropelene 2.75 keV 502 keV + Kr 990 eV 1.07 keV + Argon 990 eV 990 eV + N2 990 eV 990 eV + O2 990 eV 990 eV + Air 990 eV 990 eV + Xenon 990 eV 1.95 keV + CO2 990 eV 990 eV + Xe20CO2 990 eV 1.67 keV + Kr20CO2 990 eV 1.09 keV +=================================================== +### Run 0 start. +Start Run processing. + +---> Begin of Event: 0 + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +---> Begin of Event: 50 + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 0 fm 0 fm 22 m 500 MeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 4.0143847 cm 21.79201 m 500 MeV0.0010174972 eV 20.879462 cm 20.879462 cm World Transportation 0 fm 390.36418 mum -920.66053 mum + 2 0 fm 8.9373503 cm 21.702379 m 500 MeV0.00053671556 eV 11.013502 cm 31.892965 cm RadSlice Transportation 0 fm 567.53011 mum -823.35264 mum + 3 0 fm 23.618228 cm 21.561492 m 500 MeV0.0010733174 eV 22.027004 cm 53.919969 cm Radiator Transportation 0 fm 846.0089 mum -533.16878 mum + 4 0 fm 1.0095995 m 22.037036 m 500 MeV0.0059035301 eV 1.2114852 m 1.7506849 m OutOfWorld Transportation 0 fm -93.957262 mum 995.57623 mum +Run terminated. +Run Summary + Number of events processed : 100 + User=0.64s Real=0.79s Sys=0.15s +Graphics systems deleted. +Visualization Manager deleting... +G4 kernel has come to Quit state. diff --git a/examples/extended/field/field03/include/F03CalorHit.hh b/examples/extended/field/field03/include/F03CalorHit.hh new file mode 100644 index 0000000000..fa13ac464e --- /dev/null +++ b/examples/extended/field/field03/include/F03CalorHit.hh @@ -0,0 +1,97 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03CalorHit.hh,v 1.2 2001/07/11 09:58:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03CalorHit_h +#define F03CalorHit_h 1 + +#include "G4VHit.hh" +#include "G4THitsCollection.hh" +#include "G4Allocator.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03CalorHit : public G4VHit +{ + public: + + F03CalorHit(); + ~F03CalorHit(); + F03CalorHit(const F03CalorHit&); + const F03CalorHit& operator=(const F03CalorHit&); + int operator==(const F03CalorHit&) const; + + inline void* operator new(size_t); + inline void operator delete(void*); + + void Print(); + + public: + + void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;}; + void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;}; + + G4double GetEdepAbs() { return EdepAbs; }; + G4double GetTrakAbs() { return TrackLengthAbs; }; + G4double GetEdepGap() { return EdepGap; }; + G4double GetTrakGap() { return TrackLengthGap; }; + + private: + + G4double EdepAbs, TrackLengthAbs; + G4double EdepGap, TrackLengthGap; + +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +typedef G4THitsCollection F03CalorHitsCollection; + +extern G4Allocator F03CalorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void* F03CalorHit::operator new(size_t) +{ + void* aHit; + aHit = (void*) F03CalorHitAllocator.MallocSingle(); + return aHit; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void F03CalorHit::operator delete(void* aHit) +{ + F03CalorHitAllocator.FreeSingle((F03CalorHit*) aHit); +} + +#endif + + diff --git a/examples/extended/field/field03/include/F03CalorimeterSD.hh b/examples/extended/field/field03/include/F03CalorimeterSD.hh new file mode 100644 index 0000000000..68cc391699 --- /dev/null +++ b/examples/extended/field/field03/include/F03CalorimeterSD.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03CalorimeterSD.hh,v 1.3 2001/10/15 17:20:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03CalorimeterSD_h +#define F03CalorimeterSD_h 1 + +#include "globals.hh" +#include "G4VSensitiveDetector.hh" +#include "F03CalorHit.hh" + +class F03DetectorConstruction; +class G4HCofThisEvent; +class G4Step; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03CalorimeterSD : public G4VSensitiveDetector +{ + public: + + F03CalorimeterSD(G4String, F03DetectorConstruction* ); + ~F03CalorimeterSD(); + + void Initialize(G4HCofThisEvent*); + G4bool ProcessHits(G4Step*,G4TouchableHistory*); + void EndOfEvent(G4HCofThisEvent*); + void clear(); + void PrintAll(); + + private: + + F03CalorHitsCollection* CalCollection; + F03DetectorConstruction* Detector; + G4int* HitID; +}; + +#endif + diff --git a/examples/extended/field/field03/include/F03DetectorConstruction.hh b/examples/extended/field/field03/include/F03DetectorConstruction.hh new file mode 100644 index 0000000000..f7cfefc8ff --- /dev/null +++ b/examples/extended/field/field03/include/F03DetectorConstruction.hh @@ -0,0 +1,156 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03DetectorConstruction.hh,v 1.4 2001/10/25 10:03:53 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef F03DetectorConstruction_h +#define F03DetectorConstruction_h 1 + +#include "G4VUserDetectorConstruction.hh" +#include "globals.hh" +#include "G4ios.hh" + +class G4Box; +class G4Tubs; +class G4LogicalVolume; +class G4VPhysicalVolume; +class G4Material; +class G4UniformMagField; +class F03DetectorMessenger; +class F03CalorimeterSD; +class F03ElectroMagneticField; + + +class F03DetectorConstruction : public G4VUserDetectorConstruction +{ + public: + + F03DetectorConstruction(); + ~F03DetectorConstruction(); + + public: + + void SetAbsorberMaterial (G4String); + void SetAbsorberThickness(G4double); + void SetAbsorberRadius(G4double); + + void SetAbsorberZpos(G4double); + + void SetWorldMaterial(G4String); + void SetWorldSizeZ(G4double); + void SetWorldSizeR(G4double); + + G4VPhysicalVolume* Construct(); + + void UpdateGeometry(); + + public: + + void PrintCalorParameters(); + + G4Material* GetWorldMaterial() {return WorldMaterial;}; + G4double GetWorldSizeZ() {return WorldSizeZ;}; + G4double GetWorldSizeR() {return WorldSizeR;}; + + G4double GetAbsorberZpos() {return zAbsorber;}; + G4double GetzstartAbs() {return zstartAbs;}; + G4double GetzendAbs() {return zendAbs;}; + + G4Material* GetAbsorberMaterial() {return AbsorberMaterial;}; + G4double GetAbsorberThickness() {return AbsorberThickness;}; + G4double GetAbsorberRadius() {return AbsorberRadius;}; + + const G4VPhysicalVolume* GetphysiWorld() {return physiWorld;}; + const G4VPhysicalVolume* GetAbsorber() {return physiAbsorber;}; + G4LogicalVolume* GetLogicalAbsorber() {return logicAbsorber;}; + + private: + + G4Tubs* solidWorld; // pointer to the solid World + G4LogicalVolume* logicWorld; // pointer to the logical World + G4VPhysicalVolume* physiWorld; // pointer to the physical World + + G4Tubs* solidAbsorber; // pointer to the solid Absorber + G4LogicalVolume* logicAbsorber; // pointer to the logical Absorber + G4VPhysicalVolume* physiAbsorber; // pointer to the physical Absorber + + G4UniformMagField* magField; // pointer to the magnetic field + F03ElectroMagneticField* fEmField; + F03DetectorMessenger* detectorMessenger; // pointer to the Messenger + F03CalorimeterSD* calorimeterSD; // pointer to the sensitive detector + + // TR radiator volumes and dimensions + + G4Tubs* fSolidRadSlice; // pointer to the solid z-slice + G4LogicalVolume* fLogicRadSlice; // pointer to the logical z-slide + G4VPhysicalVolume* fPhysicRadSlice; // pointer to the physical z-slide + + G4Tubs* solidRadiator; + G4LogicalVolume* logicRadiator; + G4VPhysicalVolume* physiRadiator; + + G4Material* AbsorberMaterial; + G4double AbsorberThickness; + G4double AbsorberRadius; + G4Material* fRadiatorMat; // pointer to the TR radiator material + G4bool worldchanged; + + G4double zAbsorber ; + G4double zstartAbs , zendAbs ; + + G4Material* WorldMaterial; + G4double WorldSizeR; + G4double WorldSizeZ; + + G4double fRadThickness ; + G4double fGasGap ; + + G4int fFoilNumber ; + + G4double fDetGap ; + + G4double fStartR ; + G4double fStartZ ; + + private: + + void DefineMaterials(); + void ComputeCalorParameters(); + G4VPhysicalVolume* ConstructCalorimeter(); +}; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline void F03DetectorConstruction::ComputeCalorParameters() +{ + // Compute derived parameters of the calorimeter + + zstartAbs = zAbsorber-0.5*AbsorberThickness; + zendAbs = zAbsorber+0.5*AbsorberThickness; + +} + +#endif diff --git a/examples/extended/field/field03/include/F03DetectorMessenger.hh b/examples/extended/field/field03/include/F03DetectorMessenger.hh new file mode 100644 index 0000000000..fd6641b9d2 --- /dev/null +++ b/examples/extended/field/field03/include/F03DetectorMessenger.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03DetectorMessenger.hh,v 1.3 2001/10/25 10:03:53 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03DetectorMessenger_h +#define F03DetectorMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F03DetectorConstruction; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03DetectorMessenger: public G4UImessenger +{ + public: + F03DetectorMessenger(F03DetectorConstruction* ); + ~F03DetectorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + F03DetectorConstruction* F03Detector; + + G4UIdirectory* F03detDir; + + G4UIcmdWithAString* AbsMaterCmd; + G4UIcmdWithADoubleAndUnit* AbsThickCmd; + G4UIcmdWithADoubleAndUnit* AbsRadCmd; + + G4UIcmdWithADoubleAndUnit* AbsZposCmd; + + G4UIcmdWithAString* WorldMaterCmd; + G4UIcmdWithADoubleAndUnit* WorldZCmd; + G4UIcmdWithADoubleAndUnit* WorldRCmd; + + G4UIcmdWithoutParameter* UpdateCmd; + +}; + +#endif + diff --git a/examples/extended/field/field03/include/F03ElectroMagneticField.hh b/examples/extended/field/field03/include/F03ElectroMagneticField.hh new file mode 100644 index 0000000000..e85ddd7bf4 --- /dev/null +++ b/examples/extended/field/field03/include/F03ElectroMagneticField.hh @@ -0,0 +1,96 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03ElectroMagneticField.hh,v 1.3 2001/10/15 17:20:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// A class for control of the Magnetic Field of the detector. +// The field is assumed to be uniform. +// + +#ifndef F03ElectroMagneticField_H +#define F03ElectroMagneticField_H + +#include "G4MagneticField.hh" +#include "G4UniformMagField.hh" + +class G4FieldManager; +class G4ChordFinder; +class G4Mag_UsualEqRhs; +class G4MagIntegratorStepper; +class F03FieldMessenger; + +class F03ElectroMagneticField : public G4MagneticField +{ + +public: + + F03ElectroMagneticField() ; // A zero field + F03ElectroMagneticField(G4ThreeVector) ; // The value of the field + ~F03ElectroMagneticField() ; + + void GetFieldValue( const G4double Point[3], + G4double *Bfield ) const {;} + + void SetStepperType( G4int i) { fStepperType = i ; } + + void SetStepper(); + + void SetMinStep(G4double s) { fMinStep = s ; } + + void UpdateField(); + + void SetFieldValue(G4ThreeVector fieldVector) ; + void SetFieldValue(G4double fieldValue) ; + G4ThreeVector GetConstantFieldValue(); + G4FieldManager* GetLocalFieldManager() { return fLocalFieldManager ;} + +protected: + + G4FieldManager* GetGlobalFieldManager() ; + // Returns the global Field Manager + + G4FieldManager* fFieldManager ; + G4FieldManager* fLocalFieldManager ; + + G4ChordFinder* fChordFinder ; + G4ChordFinder* fLocalChordFinder ; + + G4Mag_UsualEqRhs* fEquation ; + G4Mag_UsualEqRhs* fLocalEquation ; + + G4MagneticField* fMagneticField ; + G4MagneticField* fLocalMagneticField ; + + G4MagIntegratorStepper* fStepper ; + G4MagIntegratorStepper* fLocalStepper ; + G4int fStepperType ; + + G4double fMinStep ; + + F03FieldMessenger* fFieldMessenger; + +}; + +#endif diff --git a/examples/extended/field/field03/include/F03EventAction.hh b/examples/extended/field/field03/include/F03EventAction.hh new file mode 100644 index 0000000000..1e6b86ad32 --- /dev/null +++ b/examples/extended/field/field03/include/F03EventAction.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03EventAction.hh,v 1.3 2001/11/07 16:36:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03EventAction_h +#define F03EventAction_h 1 + +#include "G4UserEventAction.hh" +#include "globals.hh" + +class F03RunAction; +class F03EventActionMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03EventAction : public G4UserEventAction +{ + public: + F03EventAction(F03RunAction* F03RA); + ~F03EventAction(); + + public: + void BeginOfEventAction(const G4Event*); + void EndOfEventAction(const G4Event*); + G4int GetEventno(); + void setEventVerbose(G4int level); + + void SetDrawFlag(G4String val) {drawFlag = val;}; + void SetPrintModulo(G4int val) {printModulo = val;}; + + private: + G4int calorimeterCollID; + F03EventActionMessenger* eventMessenger; + F03RunAction* runaction; + G4int verboselevel; + + G4String drawFlag; + G4int printModulo; +}; + +#endif diff --git a/examples/extended/electromagnetic/TestEm2/include/Em2RunActionMessenger.hh b/examples/extended/field/field03/include/F03EventActionMessenger.hh similarity index 78% rename from examples/extended/electromagnetic/TestEm2/include/Em2RunActionMessenger.hh rename to examples/extended/field/field03/include/F03EventActionMessenger.hh index 97385244c6..b5fe58890d 100644 --- a/examples/extended/electromagnetic/TestEm2/include/Em2RunActionMessenger.hh +++ b/examples/extended/field/field03/include/F03EventActionMessenger.hh @@ -21,40 +21,40 @@ // ******************************************************************** // // -// $Id: Em2RunActionMessenger.hh,v 1.3.4.1 2001/06/28 19:06:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: F03EventActionMessenger.hh,v 1.2 2001/07/11 09:58:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#ifndef Em2RunActionMessenger_h -#define Em2RunActionMessenger_h 1 +#ifndef F03EventActionMessenger_h +#define F03EventActionMessenger_h 1 #include "globals.hh" #include "G4UImessenger.hh" -class Em2RunAction; -class G4UIdirectory; +class F03EventAction; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class Em2RunActionMessenger: public G4UImessenger +class F03EventActionMessenger: public G4UImessenger { public: - Em2RunActionMessenger(Em2RunAction*); - ~Em2RunActionMessenger(); + F03EventActionMessenger(F03EventAction*); + ~F03EventActionMessenger(); void SetNewValue(G4UIcommand*, G4String); private: - Em2RunAction* Em2Run; - G4UIdirectory* RndmDir; - G4UIcmdWithAnInteger* RndmSaveCmd; - G4UIcmdWithAString* RndmReadCmd; + F03EventAction* eventAction; + G4UIcmdWithAnInteger* setVerboseCmd; + G4UIcmdWithAString* DrawCmd; + G4UIcmdWithAnInteger* PrintCmd; }; #endif diff --git a/examples/extended/field/field03/include/F03FieldMessenger.hh b/examples/extended/field/field03/include/F03FieldMessenger.hh new file mode 100644 index 0000000000..0c2b72b950 --- /dev/null +++ b/examples/extended/field/field03/include/F03FieldMessenger.hh @@ -0,0 +1,72 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03FieldMessenger.hh,v 1.2 2001/07/11 09:58:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03FieldMessenger_h +#define F03FieldMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" + +class F03ElectroMagneticField; +class G4UIdirectory; +class G4UIcmdWithAString; +class G4UIcmdWithAnInteger; +class G4UIcmdWithADoubleAndUnit; +class G4UIcmdWithoutParameter; + + +class F03FieldMessenger: public G4UImessenger +{ + public: + F03FieldMessenger(F03ElectroMagneticField* ); + ~F03FieldMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + void SetNewValue(G4UIcommand*, G4int); + + private: + + F03ElectroMagneticField* fEMfield; + + G4UIdirectory* F03detDir; + + G4UIcmdWithAnInteger* StepperCmd; + G4UIcmdWithADoubleAndUnit* MagFieldCmd; + G4UIcmdWithADoubleAndUnit* MinStepCmd; + G4UIcmdWithoutParameter* UpdateCmd; + + G4UIcmdWithAString* AbsMaterCmd; + + +}; + +#endif + diff --git a/examples/extended/field/field03/include/F03PhysicsList.hh b/examples/extended/field/field03/include/F03PhysicsList.hh new file mode 100644 index 0000000000..d04ef73b4b --- /dev/null +++ b/examples/extended/field/field03/include/F03PhysicsList.hh @@ -0,0 +1,130 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03PhysicsList.hh,v 1.3 2001/10/15 17:20:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#ifndef F03PhysicsList_h +#define F03PhysicsList_h 1 + +#include "globals.hh" +#include "G4VUserPhysicsList.hh" + +class G4PhotoElectricEffect; +class G4ComptonScattering; +class G4GammaConversion; + +class G4MultipleScattering; + +class G4PAIonisation ; +class G4ForwardXrayTR ; +class G4eIonisation; +class G4eBremsstrahlung; +class G4eplusAnnihilation; + +class G4MuIonisation; +class G4MuBremsstrahlung; +class G4MuPairProduction; + +class G4hIonisation; +class G4hIonisationPlus; + +class F03StepCut; + +class F03DetectorConstruction; +class F03PhysicsListMessenger; + + +class F03PhysicsList: public G4VUserPhysicsList +{ + public: + F03PhysicsList( F03DetectorConstruction*); + ~F03PhysicsList(); + + protected: + // Construct particle and physics + void ConstructParticle(); + void ConstructProcess(); + + void SetCuts(); + + protected: + // these methods Construct particles + void ConstructBosons(); + void ConstructLeptons(); + void ConstructMesons(); + void ConstructBarions(); + + protected: + + // these methods Construct physics processes and register them + + void AddParameterisation(); + void ConstructGeneral(); + void ConstructEM(); + + public: + + void SetGammaCut(G4double); + void SetElectronCut(G4double); + void SetProtonCut(G4double); + void SetCutsByEnergy(G4double); + void GetRange(G4double); + + void SetMaxStep(G4double); + + public: + + G4double MaxChargedStep; + + private: + + G4PhotoElectricEffect* thePhotoElectricEffect; + G4ComptonScattering* theComptonScattering; + G4GammaConversion* theGammaConversion; + + G4MultipleScattering* theeminusMultipleScattering; + G4eIonisation* theeminusIonisation; + G4eBremsstrahlung* theeminusBremsstrahlung; + + G4PAIonisation* fPAIonisation ; + G4ForwardXrayTR* fForwardXrayTR ; + + G4MultipleScattering* theeplusMultipleScattering; + G4eIonisation* theeplusIonisation; + G4eBremsstrahlung* theeplusBremsstrahlung; + G4eplusAnnihilation* theeplusAnnihilation; + + F03StepCut* theeminusStepCut ; + F03StepCut* theeplusStepCut ; + + G4double cutForGamma; + G4double cutForElectron; + G4double cutForProton; + + F03DetectorConstruction* pDet; + F03PhysicsListMessenger* physicsListMessenger; +}; + +#endif diff --git a/source/persistency/geometry/management/include/G4VSolidRefArray.hh b/examples/extended/field/field03/include/F03PhysicsListMessenger.hh similarity index 58% rename from source/persistency/geometry/management/include/G4VSolidRefArray.hh rename to examples/extended/field/field03/include/F03PhysicsListMessenger.hh index 64fa1f83fc..b9c9ac7d0c 100644 --- a/source/persistency/geometry/management/include/G4VSolidRefArray.hh +++ b/examples/extended/field/field03/include/F03PhysicsListMessenger.hh @@ -21,56 +21,47 @@ // ******************************************************************** // // -// $Id: G4VSolidRefArray.hh,v 1.1.4.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: F03PhysicsListMessenger.hh,v 1.3 2001/10/15 17:20:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // +// -// class description: -// -// This is a class which implements G4RWTPtrVector with -// G4VSolid. -// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -// History: -// 00.11.17 Y.Morita Initial version +#ifndef F03PhysicsListMessenger_h +#define F03PhysicsListMessenger_h 1 -#ifndef G4VSolidRefArray_hh -#define G4VSolidRefArray_hh 1 - -#include "g4rw/tpvector.h" #include "globals.hh" +#include "G4UImessenger.hh" -#include "G4VSolid.hh" +class F03PhysicsList; +class G4UIcmdWithoutParameter; +class G4UIcmdWithADouble; +class G4UIcmdWithADoubleAndUnit; -typedef G4RWTPtrVector G4VSolidRefVArray; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -class G4VSolidRefArray +class F03PhysicsListMessenger : public G4UImessenger { - public: // with description - G4VSolidRefArray(); - ~G4VSolidRefArray(); - // The constructor and the destructor. + public: + F03PhysicsListMessenger(F03PhysicsList*); + ~F03PhysicsListMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + private: - G4VSolidRefVArray transSolidPtrs; - public: // with description - inline void Insert(G4int i, G4VSolid* aSolid) - { transSolidPtrs[i] = aSolid; } - // Insert aVol as i-th element. - inline G4VSolid* Get(G4int i) - { return transSolidPtrs[i]; } - // return the i-th element. - inline void Resize(size_t n) - { transSolidPtrs.resize(n); } - // Resize the vector with n. + F03PhysicsList* F03List; + G4UIcmdWithADoubleAndUnit* setMaxStepCmd; + G4UIcmdWithADoubleAndUnit* cutGCmd; + G4UIcmdWithADoubleAndUnit* cutECmd; + G4UIcmdWithADoubleAndUnit* cutPCmd; + G4UIcmdWithADoubleAndUnit* rCmd; + G4UIcmdWithADoubleAndUnit* eCmd; + }; -G4VSolidRefArray::G4VSolidRefArray() -{;} - -G4VSolidRefArray::~G4VSolidRefArray() -{;} - #endif diff --git a/examples/extended/field/field03/include/F03PrimaryGeneratorAction.hh b/examples/extended/field/field03/include/F03PrimaryGeneratorAction.hh new file mode 100644 index 0000000000..dcc32c623e --- /dev/null +++ b/examples/extended/field/field03/include/F03PrimaryGeneratorAction.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03PrimaryGeneratorAction.hh,v 1.3 2001/10/15 17:20:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03PrimaryGeneratorAction_h +#define F03PrimaryGeneratorAction_h 1 + +#include "G4VUserPrimaryGeneratorAction.hh" +#include "globals.hh" + +class G4ParticleGun; +class G4Event; +class F03DetectorConstruction; +class F03PrimaryGeneratorMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction +{ + public: + F03PrimaryGeneratorAction(F03DetectorConstruction*); + ~F03PrimaryGeneratorAction(); + + public: + void GeneratePrimaries(G4Event*); + void SetRndmFlag(G4String val) { rndmFlag = val;} + void Setxvertex(G4double x) ; + void Setyvertex(G4double y) ; + void Setzvertex(G4double z) ; + + static G4String GetPrimaryName() ; + + private: + G4ParticleGun* particleGun; // pointer a to G4 service class + F03DetectorConstruction* F03Detector; // pointer to the geometry + + F03PrimaryGeneratorMessenger* gunMessenger; // messenger of this class + G4String rndmFlag; // flag for random impact point + + static G4String thePrimaryParticleName ; + G4double xvertex,yvertex,zvertex; + G4bool vertexdefined ; + +}; + +#endif + + diff --git a/examples/extended/field/field03/include/F03PrimaryGeneratorMessenger.hh b/examples/extended/field/field03/include/F03PrimaryGeneratorMessenger.hh new file mode 100644 index 0000000000..0f246600eb --- /dev/null +++ b/examples/extended/field/field03/include/F03PrimaryGeneratorMessenger.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03PrimaryGeneratorMessenger.hh,v 1.2 2001/07/11 09:58:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03PrimaryGeneratorMessenger_h +#define F03PrimaryGeneratorMessenger_h 1 + +#include "G4UImessenger.hh" +#include "globals.hh" + +class F03PrimaryGeneratorAction; +class G4UIcmdWithAString; +class G4UIcmdWithADoubleAndUnit; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03PrimaryGeneratorMessenger: public G4UImessenger +{ + public: + F03PrimaryGeneratorMessenger(F03PrimaryGeneratorAction*); + ~F03PrimaryGeneratorMessenger(); + + void SetNewValue(G4UIcommand*, G4String); + + private: + F03PrimaryGeneratorAction* F03Action; + G4UIcmdWithAString* RndmCmd; + G4UIcmdWithADoubleAndUnit* setxvertexCmd; + G4UIcmdWithADoubleAndUnit* setyvertexCmd; + G4UIcmdWithADoubleAndUnit* setzvertexCmd; +}; + +#endif + diff --git a/examples/extended/field/field03/include/F03RunAction.hh b/examples/extended/field/field03/include/F03RunAction.hh new file mode 100644 index 0000000000..10dbbe88a8 --- /dev/null +++ b/examples/extended/field/field03/include/F03RunAction.hh @@ -0,0 +1,65 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03RunAction.hh,v 1.4 2001/11/07 16:36:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03RunAction_h +#define F03RunAction_h 1 + +#include "G4UserRunAction.hh" +#include "globals.hh" +#include "g4std/iostream" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03RunMessenger; +class G4Run; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03RunAction : public G4UserRunAction +{ + public: + F03RunAction(); + ~F03RunAction(); + + public: + void BeginOfRunAction(const G4Run*); + void EndOfRunAction(const G4Run*); + + void SetRndmFreq(G4int val) {saveRndm = val;} + G4int GetRndmFreq() {return saveRndm;} + + private: + + F03RunMessenger* runMessenger; + G4int saveRndm; +}; + +#endif diff --git a/examples/extended/field/field03/include/F03RunMessenger.hh b/examples/extended/field/field03/include/F03RunMessenger.hh new file mode 100644 index 0000000000..18d35cfbe3 --- /dev/null +++ b/examples/extended/field/field03/include/F03RunMessenger.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// + +// +// $Id: F03RunMessenger.hh,v 1.3 2001/10/15 17:20:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03RunMessenger_h +#define F03RunMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03RunAction; +class G4UIdirectory; +class G4UIcmdWithAnInteger; +class G4UIcmdWithAString; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03RunMessenger : public G4UImessenger +{ + public: + + F03RunMessenger(F03RunAction* ); + ~F03RunMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + F03RunAction* runAction; + + G4UIdirectory* RndmDir; + G4UIcmdWithAnInteger* RndmSaveCmd; + G4UIcmdWithAString* RndmReadCmd; + +}; + +#endif diff --git a/examples/extended/field/field03/include/F03StepCut.hh b/examples/extended/field/field03/include/F03StepCut.hh new file mode 100644 index 0000000000..b674b06522 --- /dev/null +++ b/examples/extended/field/field03/include/F03StepCut.hh @@ -0,0 +1,125 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03StepCut.hh,v 1.3 2001/10/15 17:20:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#ifndef F03StepCut_h +#define F03StepCut_h 1 + +#include "G4ios.hh" +#include "globals.hh" +#include "G4VDiscreteProcess.hh" +#include "G4Step.hh" + +class F03StepCut : public G4VDiscreteProcess +{ + public: + + F03StepCut(const G4String& processName ="UserStepCut" ); + F03StepCut(F03StepCut &); + + ~F03StepCut(); + + G4double PostStepGetPhysicalInteractionLength( + const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition + ); + + G4VParticleChange* PostStepDoIt( + const G4Track& , + const G4Step& + ); + + void SetMaxStep(G4double); + + protected: + + // it is not needed here ! + G4double GetMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ); + + + private: + + // hide assignment operator as private + F03StepCut & operator=(const F03StepCut &right); + + private: + + G4double MaxChargedStep ; +}; + +// inlined function members implementation + +#include "G4Step.hh" +#include "G4Track.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + +inline G4double F03StepCut::PostStepGetPhysicalInteractionLength( + const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + // condition is set to "Not Forced" + *condition = NotForced; + + G4double ProposedStep = DBL_MAX; + + if((MaxChargedStep > 0.) && + (aTrack.GetVolume() != 0) && + (aTrack.GetVolume()->GetName() == "Absorber") && + (aTrack.GetDynamicParticle()->GetDefinition()->GetPDGCharge() != 0.)) + ProposedStep = MaxChargedStep ; + + return ProposedStep; +} + +inline G4VParticleChange* F03StepCut::PostStepDoIt( + const G4Track& aTrack, + const G4Step& + ) +{ + // do nothing + aParticleChange.Initialize(aTrack); + return &aParticleChange; +} + +inline G4double F03StepCut::GetMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition + ) +{ + return 0.; +} + +#endif + diff --git a/examples/extended/field/field03/include/F03SteppingAction.hh b/examples/extended/field/field03/include/F03SteppingAction.hh new file mode 100644 index 0000000000..9463b02ae7 --- /dev/null +++ b/examples/extended/field/field03/include/F03SteppingAction.hh @@ -0,0 +1,59 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03SteppingAction.hh,v 1.4 2001/11/07 16:36:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03SteppingAction_h +#define F03SteppingAction_h 1 + +#include "G4UserSteppingAction.hh" +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4ios.hh" +#include "globals.hh" + +class F03SteppingMessenger; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03SteppingAction : public G4UserSteppingAction +{ + public: + + F03SteppingAction(); + ~F03SteppingAction(); + + void UserSteppingAction(const G4Step*); + + private: + + F03SteppingMessenger* steppingMessenger; +}; + +#endif diff --git a/examples/extended/field/field03/include/F03SteppingMessenger.hh b/examples/extended/field/field03/include/F03SteppingMessenger.hh new file mode 100644 index 0000000000..1bba5ebc3b --- /dev/null +++ b/examples/extended/field/field03/include/F03SteppingMessenger.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03SteppingMessenger.hh,v 1.2 2001/07/11 09:58:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03SteppingMessenger_h +#define F03SteppingMessenger_h 1 + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03SteppingAction; +class G4UIdirectory; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03SteppingMessenger: public G4UImessenger +{ + public: + + F03SteppingMessenger(F03SteppingAction* ); + ~F03SteppingMessenger(); + + void SetNewValue(G4UIcommand* ,G4String ); + + private: + + F03SteppingAction* steppingAction; + + G4UIdirectory* steppingDir; + +}; + +#endif + diff --git a/examples/extended/field/field03/include/F03SteppingVerbose.hh b/examples/extended/field/field03/include/F03SteppingVerbose.hh new file mode 100644 index 0000000000..d64e706129 --- /dev/null +++ b/examples/extended/field/field03/include/F03SteppingVerbose.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03SteppingVerbose.hh,v 1.3 2001/10/15 17:20:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +//--------------------------------------------------------------- +// +// F03SteppingVerbose.hh +// +// Description: +// This class manages the vervose outputs in G4SteppingManager. +// +// +// Contact: +// Questions and comments to this code should be sent to +// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) +// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) +// +//--------------------------------------------------------------- + +#ifndef F03SteppingVerbose_h +#define F03SteppingVerbose_h 1 + +#include "G4SteppingVerbose.hh" + +class F03SteppingVerbose : public G4SteppingVerbose +{ + public: + + F03SteppingVerbose(); + ~F03SteppingVerbose(); + // Constructor, Destructor + + void StepInfo(); + void TrackingStarted(); + +}; + +#endif diff --git a/examples/extended/field/field03/include/F03VisManager.hh b/examples/extended/field/field03/include/F03VisManager.hh new file mode 100644 index 0000000000..7f76291061 --- /dev/null +++ b/examples/extended/field/field03/include/F03VisManager.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03VisManager.hh,v 1.2 2001/07/11 09:58:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +// Example Visualization Manager implementing virtual function +// RegisterGraphicsSystems. Exploits C-pre-processor variables +// G4VIS_USE_DAWN, etc., which are set by the GNUmakefiles if +// environment variables of the same name are set. + +// So all you have to do is set environment variables and compile and +// instantiate this in your main(). + +// Alternatively, you can implement an empty function here and just +// register the systems you want in your main(), e.g.: +// G4VisManager* myVisManager = new MyVisManager; +// myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifndef F03VisManager_h +#define F03VisManager_h 1 + +#include "G4VisManager.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +class F03VisManager: public G4VisManager +{ + public: + + F03VisManager (); + + private: + + void RegisterGraphicsSystems (); + +}; + +#endif diff --git a/examples/extended/field/field03/src/F03CalorHit.cc b/examples/extended/field/field03/src/F03CalorHit.cc new file mode 100644 index 0000000000..b585a4c6a1 --- /dev/null +++ b/examples/extended/field/field03/src/F03CalorHit.cc @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03CalorHit.cc,v 1.2 2001/07/11 09:58:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03CalorHit.hh" + +G4Allocator F03CalorHitAllocator; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03CalorHit::F03CalorHit() +{ + EdepAbs = 0.; TrackLengthAbs = 0.; + EdepGap = 0.; TrackLengthGap = 0.; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03CalorHit::~F03CalorHit() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03CalorHit::F03CalorHit(const F03CalorHit& right) +{ + EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; + EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +const F03CalorHit& F03CalorHit::operator=(const F03CalorHit& right) +{ + EdepAbs = right.EdepAbs; TrackLengthAbs = right.TrackLengthAbs; + EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; + return *this; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +int F03CalorHit::operator==(const F03CalorHit& right) const +{ + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03CalorHit::Print() +{;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field03/src/F03CalorimeterSD.cc b/examples/extended/field/field03/src/F03CalorimeterSD.cc new file mode 100644 index 0000000000..ce66cd244e --- /dev/null +++ b/examples/extended/field/field03/src/F03CalorimeterSD.cc @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03CalorimeterSD.cc,v 1.4 2001/11/07 16:36:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03CalorimeterSD.hh" + +#include "F03CalorHit.hh" +#include "F03DetectorConstruction.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4Step.hh" +#include "G4VTouchable.hh" +#include "G4TouchableHistory.hh" +#include "G4SDManager.hh" + +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03CalorimeterSD::F03CalorimeterSD(G4String name, + F03DetectorConstruction* det) +:G4VSensitiveDetector(name),Detector(det) +{ + collectionName.insert("CalCollection"); + HitID = new G4int[500]; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03CalorimeterSD::~F03CalorimeterSD() +{ + delete [] HitID; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03CalorimeterSD::Initialize(G4HCofThisEvent*HCE) +{ + CalCollection = new F03CalorHitsCollection(SensitiveDetectorName, + collectionName[0]); + for (G4int j=0;j<1; j++) + { + HitID[j] = -1; + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4bool F03CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) +{ + G4double edep = aStep->GetTotalEnergyDeposit(); + + G4double stepl = 0.; + + stepl = aStep->GetStepLength(); + + if ((edep == 0.) && (stepl == 0.) ) return false; + + G4TouchableHistory* theTouchable + = (G4TouchableHistory*)(aStep->GetPreStepPoint()->GetTouchable()); + + G4VPhysicalVolume* physVol = theTouchable->GetVolume(); + + G4int F03Number = 0 ; + if (HitID[F03Number]==-1) + { + F03CalorHit* calHit = new F03CalorHit(); + if (physVol == Detector->GetAbsorber()) calHit->AddAbs(edep,stepl); + HitID[F03Number] = CalCollection->insert(calHit) - 1; + if (verboseLevel>0) + G4cout << " New Calorimeter Hit on F03: " << F03Number << G4endl; + } + else + { + if (physVol == Detector->GetAbsorber()) + (*CalCollection)[HitID[F03Number]]->AddAbs(edep,stepl); + if (verboseLevel>0) + G4cout << " Energy added to F03: " << F03Number << G4endl; + } + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) +{ + static G4int HCID = -1; + if(HCID<0) + { HCID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName[0]); } + HCE->AddHitsCollection(HCID,CalCollection); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03CalorimeterSD::clear() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + +void F03CalorimeterSD::PrintAll() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field03/src/F03DetectorConstruction.cc b/examples/extended/field/field03/src/F03DetectorConstruction.cc new file mode 100644 index 0000000000..6d1ea594e1 --- /dev/null +++ b/examples/extended/field/field03/src/F03DetectorConstruction.cc @@ -0,0 +1,495 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03DetectorConstruction.cc,v 1.5 2001/10/26 13:42:45 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "F03DetectorConstruction.hh" +#include "F03DetectorMessenger.hh" + +#include "F03CalorimeterSD.hh" +#include "F03ElectroMagneticField.hh" + +#include "G4VClusterModel.hh" +#include "G4PAIclusterModel.hh" + +#include "G4Material.hh" +#include "G4Tubs.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4UniformMagField.hh" +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" +#include "G4SDManager.hh" +#include "G4RunManager.hh" + +#include "G4ios.hh" + +///////////////////////////////////////////////////////////////////////////// +// +// + +F03DetectorConstruction::F03DetectorConstruction() + : solidWorld(0), logicWorld(0), physiWorld(0), + solidAbsorber(0),logicAbsorber(0), physiAbsorber(0), + magField(0), fEmField(0), calorimeterSD(0), + AbsorberMaterial(0), fRadiatorMat(0), worldchanged(false), WorldMaterial(0) +{ + // default parameter values of the calorimeter + + WorldSizeZ = 44000.*mm; + WorldSizeR = 22000.*mm; + + AbsorberThickness = 1.0*mm; + + AbsorberRadius = 20000.*mm; + + zAbsorber = 21990.0*mm ; + + fRadThickness = 100*mm ; + fGasGap = 100*mm ; + fFoilNumber = 1 ; + + fDetGap = 1.0*mm ; + + fStartR = 40*cm ; + fStartZ = 10.0*mm ; + + // create commands for interactive definition of the calorimeter + + detectorMessenger = new F03DetectorMessenger(this); + + fEmField = new F03ElectroMagneticField() ; +} + +////////////////////////////////////////////////////////////////////////// +// +// + +F03DetectorConstruction::~F03DetectorConstruction() +{ + delete detectorMessenger; + if (fEmField) delete fEmField ; +} + +////////////////////////////////////////////////////////////////////////// +// +// + +G4VPhysicalVolume* F03DetectorConstruction::Construct() +{ + DefineMaterials(); + return ConstructCalorimeter(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::DefineMaterials() +{ + // This function illustrates the possible ways to define materials + + G4String name, symbol ; // a=mass of a mole; + G4double a, z, density ; // z=mean number of protons; + G4int nel ; + G4int ncomponents; + G4double fractionmass, pressure, temperature; + + // + // define Elements + // + + a = 1.01*g/mole; + G4Element* elH = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); + + a = 6.01*g/mole; + G4Element* elC = new G4Element(name="Carbon", symbol="C", z=6., a); + + a = 14.01*g/mole; + G4Element* elN = new G4Element(name="Nitrogen",symbol="N" , z= 7., a); + + a = 16.00*g/mole; + G4Element* elO = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); + + a = 39.948*g/mole; + G4Element* elAr = new G4Element(name="Argon", symbol="Ar", z=18., a); + + // + // define simple materials + // + + // Mylar + + density = 1.39*g/cm3; + G4Material* Mylar = new G4Material(name="Mylar", density, nel=3); + Mylar->AddElement(elO,2); + Mylar->AddElement(elC,5); + Mylar->AddElement(elH,4); + + // Polypropelene + + G4Material* CH2 = new G4Material ("Polypropelene" , 0.91*g/cm3, 2); + CH2->AddElement(elH,2); + CH2->AddElement(elC,1); + + // Krypton as detector gas, STP + + density = 3.700*mg/cm3 ; + a = 83.80*g/mole ; + G4Material* Kr = new G4Material(name="Kr",z=36., a, density ); + + // Dry air (average composition) + + density = 1.7836*mg/cm3 ; // STP + G4Material* Argon = new G4Material(name="Argon" , density, ncomponents=1); + Argon->AddElement(elAr, 1); + + density = 1.25053*mg/cm3 ; // STP + G4Material* Nitrogen = new G4Material(name="N2" , density, ncomponents=1); + Nitrogen->AddElement(elN, 2); + + density = 1.4289*mg/cm3 ; // STP + G4Material* Oxygen = new G4Material(name="O2" , density, ncomponents=1); + Oxygen->AddElement(elO, 2); + + density = 1.2928*mg/cm3 ; // STP + density *= 1.0e-8 ; // pumped vacuum + temperature = STP_Temperature; + pressure = 1.0e-8*STP_Pressure; + + G4Material* Air = new G4Material(name="Air" , density, ncomponents=3, + kStateGas,temperature,pressure); + Air->AddMaterial( Nitrogen, fractionmass = 0.7557 ) ; + Air->AddMaterial( Oxygen, fractionmass = 0.2315 ) ; + Air->AddMaterial( Argon, fractionmass = 0.0128 ) ; + + // Xenon as detector gas, STP + + density = 5.858*mg/cm3 ; + a = 131.29*g/mole ; + G4Material* Xe = new G4Material(name="Xenon",z=54., a, density ); + + // Carbon dioxide, STP + + density = 1.977*mg/cm3; + G4Material* CarbonDioxide = new G4Material(name="CO2", density, nel=2); + CarbonDioxide->AddElement(elC,1); + CarbonDioxide->AddElement(elO,2); + + // 80% Xe + 20% CO2, STP + + density = 5.0818*mg/cm3 ; + G4Material* Xe20CO2 = new G4Material(name="Xe20CO2" , density, ncomponents=2); + Xe20CO2->AddMaterial( Xe, fractionmass = 0.922 ) ; + Xe20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ; + + // 80% Kr + 20% CO2, STP + + density = 3.601*mg/cm3 ; + G4Material* Kr20CO2 = new G4Material(name="Kr20CO2" , density, + ncomponents=2); + Kr20CO2->AddMaterial( Kr, fractionmass = 0.89 ) ; + Kr20CO2->AddMaterial( CarbonDioxide, fractionmass = 0.11 ) ; + + + G4cout << *(G4Material::GetMaterialTable()) << G4endl; + + //default materials of the calorimeter and TR radiator + + fRadiatorMat = Air ; // CH2 ; // Mylar ; + + AbsorberMaterial = Air ; // Kr20CO2 ; // XeCO2CF4 ; + + WorldMaterial = Air ; +} + +///////////////////////////////////////////////////////////////////////// +// +// + +G4VPhysicalVolume* F03DetectorConstruction::ConstructCalorimeter() +{ + G4int j ; + G4double zModule, zRadiator; + + // complete the Calor parameters definition and Print + + ComputeCalorParameters(); + PrintCalorParameters(); + + // World + + if(solidWorld) delete solidWorld ; + if(logicWorld) delete logicWorld ; + if(physiWorld) delete physiWorld ; + + solidWorld = new G4Tubs("World", // its name + 0.,WorldSizeR,WorldSizeZ/2.,0.,twopi); // its size + + logicWorld = new G4LogicalVolume(solidWorld, // its solid + WorldMaterial, // its material + "World"); // its name + + physiWorld = new G4PVPlacement(0, // no rotation + G4ThreeVector(), // at (0,0,0) + "World", // its name + logicWorld, // its logical volume + 0, // its mother volume + false, // no boolean operation + 0); // copy number + + // TR radiator envelope + + G4double radThick = fFoilNumber*(fRadThickness + fGasGap) + fDetGap ; + + G4double zRad = zAbsorber - 20*cm - 0.5*radThick ; + G4cout<<"zRad = "<SetFieldManager( fEmField->GetLocalFieldManager(), + allLocal ) ; + + + physiRadiator = new G4PVPlacement(0, + G4ThreeVector(0,0,zRad), + "Radiator", logicRadiator, + physiWorld, false, 0 ); + + if(fSolidRadSlice) delete fSolidRadSlice; + if(fLogicRadSlice) delete fLogicRadSlice; + if(fPhysicRadSlice) delete fPhysicRadSlice; + + fSolidRadSlice = new G4Tubs("RadSlice",0.0, + AbsorberRadius,0.5*fRadThickness,0.0,twopi ) ; + + fLogicRadSlice = new G4LogicalVolume(fSolidRadSlice,fRadiatorMat, + "RadSlice",0,0,0); + + zModule = zRad + 0.5*radThick/1.02 ; + G4cout<<"zModule = "< 0.) + { + if(solidAbsorber) delete solidAbsorber ; + if(logicAbsorber) delete logicAbsorber ; + if(physiAbsorber) delete physiAbsorber ; + + solidAbsorber = new G4Tubs("Absorber", 1.0*mm, + AbsorberRadius, + AbsorberThickness/2., + 0.0,twopi); + + logicAbsorber = new G4LogicalVolume(solidAbsorber, + AbsorberMaterial, + "Absorber"); + + physiAbsorber = new G4PVPlacement(0, + G4ThreeVector(0.,0.,zAbsorber), + "Absorber", + logicAbsorber, + physiWorld, + false, + 0); + + } + + // Sensitive Detectors: Absorber + + G4SDManager* SDman = G4SDManager::GetSDMpointer(); + + if(!calorimeterSD) + { + calorimeterSD = new F03CalorimeterSD("CalorSD",this); + SDman->AddNewDetector( calorimeterSD ); + } + if (logicAbsorber) logicAbsorber->SetSensitiveDetector(calorimeterSD); + + return physiWorld; +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::PrintCalorParameters() +{ + G4cout << "\n The WORLD is made of " + << WorldSizeZ/mm << "mm of " << WorldMaterial->GetName() ; + G4cout << ", the transverse size (R) of the world is " << WorldSizeR/mm << " mm. " << G4endl; + G4cout << " The ABSORBER is made of " + << AbsorberThickness/mm << "mm of " << AbsorberMaterial->GetName() ; + G4cout << ", the transverse size (R) is " << AbsorberRadius/mm << " mm. " << G4endl; + G4cout << " Z position of the (middle of the) absorber " << zAbsorber/mm << " mm." << G4endl; + G4cout << G4endl; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) +{ + // get the pointer to the material table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + G4Material* pttoMaterial; + for (size_t J=0 ; Jsize() ; J++) + { + pttoMaterial = (*theMaterialTable)[J]; + if(pttoMaterial->GetName() == materialChoice) + { + AbsorberMaterial = pttoMaterial; + logicAbsorber->SetMaterial(pttoMaterial); + } + } +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::SetWorldMaterial(G4String materialChoice) +{ + // get the pointer to the material table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // search the material by its name + G4Material* pttoMaterial; + for (size_t J=0 ; Jsize() ; J++) + { + pttoMaterial = (*theMaterialTable)[J]; + if(pttoMaterial->GetName() == materialChoice) + { + WorldMaterial = pttoMaterial; + logicWorld->SetMaterial(pttoMaterial); + } + } +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::SetAbsorberThickness(G4double val) +{ + // change Absorber thickness and recompute the calorimeter parameters + AbsorberThickness = val; + ComputeCalorParameters(); +} + +///////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::SetAbsorberRadius(G4double val) +{ + // change the transverse size and recompute the calorimeter parameters + AbsorberRadius = val; + ComputeCalorParameters(); +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::SetWorldSizeZ(G4double val) +{ + worldchanged=true; + WorldSizeZ = val; + ComputeCalorParameters(); +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::SetWorldSizeR(G4double val) +{ + worldchanged=true; + WorldSizeR = val; + ComputeCalorParameters(); +} + +////////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::SetAbsorberZpos(G4double val) +{ + zAbsorber = val; + ComputeCalorParameters(); +} + + +/////////////////////////////////////////////////////////////////////////////// +// +// + +void F03DetectorConstruction::UpdateGeometry() +{ + G4RunManager::GetRunManager()->DefineWorldVolume(ConstructCalorimeter()); +} + +// +// +//////////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/field/field03/src/F03DetectorMessenger.cc b/examples/extended/field/field03/src/F03DetectorMessenger.cc new file mode 100644 index 0000000000..a515bf50f5 --- /dev/null +++ b/examples/extended/field/field03/src/F03DetectorMessenger.cc @@ -0,0 +1,148 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03DetectorMessenger.cc,v 1.3 2001/10/25 10:03:54 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03DetectorMessenger.hh" + +#include "F03DetectorConstruction.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03DetectorMessenger::F03DetectorMessenger(F03DetectorConstruction * F03Det) +:F03Detector(F03Det) +{ + F03detDir = new G4UIdirectory("/calor/"); + F03detDir->SetGuidance("F03 detector control."); + + AbsMaterCmd = new G4UIcmdWithAString("/calor/setAbsMat",this); + AbsMaterCmd->SetGuidance("Select Material of the Absorber."); + AbsMaterCmd->SetParameterName("choice",true); + AbsMaterCmd->SetDefaultValue("Lead"); + AbsMaterCmd->AvailableForStates(Idle); + + WorldMaterCmd = new G4UIcmdWithAString("/calor/setWorldMat",this); + WorldMaterCmd->SetGuidance("Select Material of the World."); + WorldMaterCmd->SetParameterName("wchoice",true); + WorldMaterCmd->SetDefaultValue("Air"); + WorldMaterCmd->AvailableForStates(Idle); + + AbsThickCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsThick",this); + AbsThickCmd->SetGuidance("Set Thickness of the Absorber"); + AbsThickCmd->SetParameterName("SizeZ",false,false); + AbsThickCmd->SetDefaultUnit("mm"); + AbsThickCmd->SetRange("SizeZ>0."); + AbsThickCmd->AvailableForStates(Idle); + + AbsRadCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsRad",this); + AbsRadCmd->SetGuidance("Set radius of the Absorber"); + AbsRadCmd->SetParameterName("SizeR",false,false); + AbsRadCmd->SetDefaultUnit("mm"); + AbsRadCmd->SetRange("SizeR>0."); + AbsRadCmd->AvailableForStates(Idle); + + AbsZposCmd = new G4UIcmdWithADoubleAndUnit("/calor/setAbsZpos",this); + AbsZposCmd->SetGuidance("Set Z pos. of the Absorber"); + AbsZposCmd->SetParameterName("Zpos",false,false); + AbsZposCmd->SetDefaultUnit("mm"); + AbsZposCmd->AvailableForStates(Idle); + + WorldZCmd = new G4UIcmdWithADoubleAndUnit("/calor/setWorldZ",this); + WorldZCmd->SetGuidance("Set Z size of the World"); + WorldZCmd->SetParameterName("WSizeZ",false,false); + WorldZCmd->SetDefaultUnit("mm"); + WorldZCmd->SetRange("WSizeZ>0."); + WorldZCmd->AvailableForStates(Idle); + + WorldRCmd = new G4UIcmdWithADoubleAndUnit("/calor/setWorldR",this); + WorldRCmd->SetGuidance("Set R size of the World"); + WorldRCmd->SetParameterName("WSizeR",false,false); + WorldRCmd->SetDefaultUnit("mm"); + WorldRCmd->SetRange("WSizeR>0."); + WorldRCmd->AvailableForStates(Idle); + + UpdateCmd = new G4UIcmdWithoutParameter("/calor/update",this); + UpdateCmd->SetGuidance("Update calorimeter geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(Idle); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03DetectorMessenger::~F03DetectorMessenger() +{ + delete AbsMaterCmd; + delete AbsThickCmd; + delete AbsRadCmd; + delete AbsZposCmd; + delete WorldMaterCmd; + delete WorldZCmd; + delete WorldRCmd; + delete UpdateCmd; + delete F03detDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if( command == AbsMaterCmd ) + { F03Detector->SetAbsorberMaterial(newValue);} + + if( command == WorldMaterCmd ) + { F03Detector->SetWorldMaterial(newValue);} + + if( command == AbsThickCmd ) + { F03Detector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} + + if( command == AbsRadCmd ) + { F03Detector->SetAbsorberRadius(AbsRadCmd->GetNewDoubleValue(newValue));} + + if( command == AbsZposCmd ) + { F03Detector->SetAbsorberZpos(AbsZposCmd->GetNewDoubleValue(newValue));} + + if( command == WorldZCmd ) + { F03Detector->SetWorldSizeZ(WorldZCmd->GetNewDoubleValue(newValue));} + + if( command == WorldRCmd ) + { F03Detector->SetWorldSizeR(WorldRCmd->GetNewDoubleValue(newValue));} + + if( command == UpdateCmd ) + { F03Detector->UpdateGeometry(); } + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field03/src/F03ElectroMagneticField.cc b/examples/extended/field/field03/src/F03ElectroMagneticField.cc new file mode 100644 index 0000000000..454f78486f --- /dev/null +++ b/examples/extended/field/field03/src/F03ElectroMagneticField.cc @@ -0,0 +1,238 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03ElectroMagneticField.cc,v 1.3 2001/10/15 17:20:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// User Field class implementation. +// + + +#include "F03ElectroMagneticField.hh" +#include "F03FieldMessenger.hh" + +#include "G4UniformMagField.hh" +#include "G4MagneticField.hh" +#include "G4FieldManager.hh" +#include "G4TransportationManager.hh" +#include "G4Mag_UsualEqRhs.hh" +#include "G4MagIntegratorStepper.hh" +#include "G4ChordFinder.hh" + +#include "G4ExplicitEuler.hh" +#include "G4ImplicitEuler.hh" +#include "G4SimpleRunge.hh" +#include "G4SimpleHeum.hh" +#include "G4ClassicalRK4.hh" +#include "G4HelixExplicitEuler.hh" +#include "G4HelixImplicitEuler.hh" +#include "G4HelixSimpleRunge.hh" +#include "G4CashKarpRKF45.hh" +#include "G4RKG3_Stepper.hh" + +////////////////////////////////////////////////////////////////////////// +// +// Constructors: + +F03ElectroMagneticField::F03ElectroMagneticField() + : fChordFinder(0), fLocalChordFinder(0), fStepper(0) +{ + fMagneticField = new G4UniformMagField( + G4ThreeVector(3.3*tesla, + 0.0, // 0.5*tesla, + 0.0 )); + fLocalMagneticField = new G4UniformMagField( + G4ThreeVector(3.3*tesla, + 0.0, // 0.5*tesla, + 0.0 )); + + fFieldMessenger = new F03FieldMessenger(this) ; + + fEquation = new G4Mag_UsualEqRhs(fMagneticField); + fLocalEquation = new G4Mag_UsualEqRhs(fLocalMagneticField); + + fMinStep = 1.0*mm ; // minimal step of 1 mm is default + fStepperType = 4 ; // ClassicalRK4 is default stepper + + fFieldManager = fLocalFieldManager = GetGlobalFieldManager(); + + UpdateField(); +} + +///////////////////////////////////////////////////////////////////////////////// + +F03ElectroMagneticField::F03ElectroMagneticField(G4ThreeVector fieldVector) +{ + fMagneticField = new G4UniformMagField(fieldVector); + GetGlobalFieldManager()->CreateChordFinder(this); +} + +//////////////////////////////////////////////////////////////////////////////// + +F03ElectroMagneticField::~F03ElectroMagneticField() +{ + if(fMagneticField) delete fMagneticField; + if(fChordFinder) delete fChordFinder; + if(fStepper) delete fStepper; +} + +///////////////////////////////////////////////////////////////////////////// +// +// Update field +// + +void F03ElectroMagneticField::UpdateField() +{ + SetStepper(); + G4cout<<"The minimal step is equal to "<SetDetectorField(fMagneticField ); + fLocalFieldManager->SetDetectorField(fLocalMagneticField ); + + if(fChordFinder) delete fChordFinder; + if(fLocalChordFinder) delete fLocalChordFinder; + + fChordFinder = new G4ChordFinder( fMagneticField, fMinStep,fStepper); + fLocalChordFinder = new G4ChordFinder( fLocalMagneticField, + fMinStep,fLocalStepper); + + fFieldManager->SetChordFinder( fChordFinder ); + fLocalFieldManager->SetChordFinder( fLocalChordFinder ); +} + +///////////////////////////////////////////////////////////////////////////// +// +// Set stepper according to the stepper type +// + +void F03ElectroMagneticField::SetStepper() +{ + if(fStepper) delete fStepper; + + switch ( fStepperType ) + { + case 0: + fStepper = new G4ExplicitEuler( fEquation ); + fLocalStepper = new G4ExplicitEuler( fLocalEquation ); + G4cout<<"G4ExplicitEuler is calledS"<SetDetectorField(this); + } + else + { + // If the new field's value is Zero, then it is best to + // insure that it is not used for propagation. + + G4MagneticField* fMagneticField = 0; + fieldMgr->SetDetectorField(fMagneticField); + } +} + +//////////////////////////////////////////////////////////////////////////////// +// +// Utility method + +G4FieldManager* F03ElectroMagneticField::GetGlobalFieldManager() +{ + return G4TransportationManager::GetTransportationManager() + ->GetFieldManager(); +} diff --git a/examples/extended/field/field03/src/F03EventAction.cc b/examples/extended/field/field03/src/F03EventAction.cc new file mode 100644 index 0000000000..3e7d0cb276 --- /dev/null +++ b/examples/extended/field/field03/src/F03EventAction.cc @@ -0,0 +1,137 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03EventAction.cc,v 1.4 2001/11/07 16:36:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03EventAction.hh" + +#include "F03RunAction.hh" + +#include "F03CalorHit.hh" +#include "F03EventActionMessenger.hh" + +#include "G4Event.hh" +#include "G4EventManager.hh" +#include "G4HCofThisEvent.hh" +#include "G4VHitsCollection.hh" +#include "G4SDManager.hh" +#include "G4TrajectoryContainer.hh" +#include "G4Trajectory.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "G4UnitsTable.hh" +#include "Randomize.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03EventAction::F03EventAction(F03RunAction* F03RA) + : calorimeterCollID(-1), eventMessenger(0), + runaction(F03RA), verboselevel(0), + drawFlag("all"), printModulo(10000) +{ + eventMessenger = new F03EventActionMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03EventAction::~F03EventAction() +{ + delete eventMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03EventAction::BeginOfEventAction(const G4Event* evt) +{ + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + G4cout << "\n---> Begin of Event: " << evtNb << G4endl; + + if(verboselevel>1) + G4cout << "<<< Event " << evtNb << " started." << G4endl; + + if (calorimeterCollID==-1) + { + G4SDManager * SDman = G4SDManager::GetSDMpointer(); + calorimeterCollID = SDman->GetCollectionID("CalCollection"); + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03EventAction::EndOfEventAction(const G4Event* evt) +{ + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) + { + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); + G4int n_trajectories = 0; + if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); + for(G4int i=0; iGetTrajectoryContainer()))[i]); + if (drawFlag == "all") trj->DrawTrajectory(50); + else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) + trj->DrawTrajectory(50); + } + } + + if(verboselevel>0) + G4cout << "<<< Event " << evt->GetEventID() << " ended." << G4endl; + + + //save rndm status + if (runaction->GetRndmFreq() == 2) + { + HepRandom::saveEngineStatus("endOfEvent.rndm"); + G4int evtNb = evt->GetEventID(); + if (evtNb%printModulo == 0) + { + G4cout << "\n---> End of Event: " << evtNb << G4endl; + HepRandom::showEngineStatus(); + } + } +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4int F03EventAction::GetEventno() +{ + G4int evno = fpEventManager->GetConstCurrentEvent()->GetEventID() ; + return evno ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03EventAction::setEventVerbose(G4int level) +{ + verboselevel = level ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field03/src/F03EventActionMessenger.cc b/examples/extended/field/field03/src/F03EventActionMessenger.cc new file mode 100644 index 0000000000..16baa25068 --- /dev/null +++ b/examples/extended/field/field03/src/F03EventActionMessenger.cc @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03EventActionMessenger.cc,v 1.2 2001/07/11 09:58:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03EventActionMessenger.hh" + +#include "F03EventAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03EventActionMessenger::F03EventActionMessenger(F03EventAction* EvAct) +:eventAction(EvAct) +{ + setVerboseCmd = new G4UIcmdWithAnInteger("/event/setverbose",this); + setVerboseCmd->SetGuidance("Set verbose level ." ); + setVerboseCmd->SetParameterName("level",true); + setVerboseCmd->SetDefaultValue(0); + + DrawCmd = new G4UIcmdWithAString("/event/drawTracks",this); + DrawCmd->SetGuidance("Draw the tracks in the event"); + DrawCmd->SetGuidance(" Choice : none,charged, all"); + DrawCmd->SetParameterName("choice",true); + DrawCmd->SetDefaultValue("all"); + DrawCmd->SetCandidates("none charged all"); + DrawCmd->AvailableForStates(Idle); + + PrintCmd = new G4UIcmdWithAnInteger("/event/printModulo",this); + PrintCmd->SetGuidance("Print events modulo n"); + PrintCmd->SetParameterName("EventNb",false); + PrintCmd->SetRange("EventNb>0"); + PrintCmd->AvailableForStates(Idle); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03EventActionMessenger::~F03EventActionMessenger() +{ + delete setVerboseCmd; + delete DrawCmd; + delete PrintCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if(command == setVerboseCmd) + {eventAction->setEventVerbose(setVerboseCmd->GetNewIntValue(newValue));} + + if(command == DrawCmd) + {eventAction->SetDrawFlag(newValue);} + + if(command == PrintCmd) + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field03/src/F03FieldMessenger.cc b/examples/extended/field/field03/src/F03FieldMessenger.cc new file mode 100644 index 0000000000..447a2564b6 --- /dev/null +++ b/examples/extended/field/field03/src/F03FieldMessenger.cc @@ -0,0 +1,121 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03FieldMessenger.cc,v 1.3 2001/10/15 17:20:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +#include "F03FieldMessenger.hh" + +#include "F03ElectroMagneticField.hh" +#include "G4UIdirectory.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" +#include "G4UIcmdWithoutParameter.hh" + +////////////////////////////////////////////////////////////////////////////// + +F03FieldMessenger::F03FieldMessenger(F03ElectroMagneticField* pEMfield) + : fEMfield(pEMfield) +{ + F03detDir = new G4UIdirectory("/field/"); + F03detDir->SetGuidance("F03 field tracking control."); + + StepperCmd = new G4UIcmdWithAnInteger("/field/setStepperType",this); + StepperCmd->SetGuidance("Select stepper type for magnetic field"); + StepperCmd->SetParameterName("choice",true); + StepperCmd->SetDefaultValue(4); + StepperCmd->AvailableForStates(PreInit,Idle); + + + UpdateCmd = new G4UIcmdWithoutParameter("/field/update",this); + UpdateCmd->SetGuidance("Update calorimeter geometry."); + UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" "); + UpdateCmd->SetGuidance("if you changed geometrical value(s)."); + UpdateCmd->AvailableForStates(Idle); + + MagFieldCmd = new G4UIcmdWithADoubleAndUnit("/field/setFieldZ",this); + MagFieldCmd->SetGuidance("Define magnetic field."); + MagFieldCmd->SetGuidance("Magnetic field will be in Z direction."); + MagFieldCmd->SetParameterName("Bz",false,false); + MagFieldCmd->SetDefaultUnit("tesla"); + MagFieldCmd->AvailableForStates(Idle); + + MinStepCmd = new G4UIcmdWithADoubleAndUnit("/field/setMinStep",this); + MinStepCmd->SetGuidance("Define minimal step"); + MinStepCmd->SetGuidance("Magnetic field will be in Z direction."); + MinStepCmd->SetParameterName("min step",false,false); + MinStepCmd->SetDefaultUnit("mm"); + MinStepCmd->AvailableForStates(Idle); + + AbsMaterCmd = new G4UIcmdWithAString("/field/setAbsMat",this); + AbsMaterCmd->SetGuidance("Select Material of the Absorber."); + AbsMaterCmd->SetParameterName("choice",true); + AbsMaterCmd->SetDefaultValue("Xe"); + AbsMaterCmd->AvailableForStates(Idle); + + +} + +/////////////////////////////////////////////////////////////////////////////// + +F03FieldMessenger::~F03FieldMessenger() +{ + delete StepperCmd; + delete MagFieldCmd; + delete MinStepCmd; + delete F03detDir; + delete UpdateCmd; + + delete AbsMaterCmd; +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F03FieldMessenger::SetNewValue( G4UIcommand* command, G4String newValue) +{ + if( command == StepperCmd ) + { + fEMfield->SetStepperType(StepperCmd->GetNewIntValue(newValue)); + } + if( command == UpdateCmd ) + { + fEMfield->UpdateField(); + } + if( command == MagFieldCmd ) + { + fEMfield->SetFieldValue(MagFieldCmd->GetNewDoubleValue(newValue)); + } + if( command == MinStepCmd ) + { + fEMfield->SetMinStep(MinStepCmd->GetNewDoubleValue(newValue)); + } +} + +// +// +///////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/field/field03/src/F03PhysicsList.cc b/examples/extended/field/field03/src/F03PhysicsList.cc new file mode 100644 index 0000000000..f9c36cd223 --- /dev/null +++ b/examples/extended/field/field03/src/F03PhysicsList.cc @@ -0,0 +1,457 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03PhysicsList.cc,v 1.4 2001/10/25 10:03:54 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "G4Timer.hh" + +#include "F03PhysicsList.hh" +#include "F03DetectorConstruction.hh" +#include "F03PhysicsListMessenger.hh" + +#include "G4ParticleDefinition.hh" +#include "G4ParticleWithCuts.hh" +#include "G4ProcessManager.hh" +#include "G4ProcessVector.hh" +#include "G4ParticleTypes.hh" +#include "G4ParticleTable.hh" +#include "G4Material.hh" +#include "G4EnergyLossTables.hh" +#include "G4UnitsTable.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "G4FastSimulationManagerProcess.hh" + + +///////////////////////////////////////////////////////////// +// +// + +F03PhysicsList::F03PhysicsList(F03DetectorConstruction* p) +: G4VUserPhysicsList(), MaxChargedStep(DBL_MAX), + thePhotoElectricEffect(0), theComptonScattering(0), theGammaConversion(0), + theeminusMultipleScattering(0), theeminusIonisation(0), + theeminusBremsstrahlung(0), + theeplusMultipleScattering(0), theeplusIonisation(0), + theeplusBremsstrahlung(0), theeplusAnnihilation(0), + theeminusStepCut(0), theeplusStepCut(0) +{ + pDet = p; + + defaultCutValue = 1.000*mm ; + + cutForGamma = defaultCutValue ; + cutForElectron = defaultCutValue ; + cutForProton = defaultCutValue ; + + SetVerboseLevel(1); + physicsListMessenger = new F03PhysicsListMessenger(this); +} + +///////////////////////////////////////////////////////////////////////// +// +// + +F03PhysicsList::~F03PhysicsList() +{ + delete physicsListMessenger; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +void F03PhysicsList::ConstructParticle() +{ + // In this method, static member functions should be called + // for all particles which you want to use. + // This ensures that objects of these particle types will be + // created in the program. + + ConstructBosons(); + ConstructLeptons(); + ConstructMesons(); + ConstructBarions(); +} + +//////////////////////////////////////////////////////////////////////////// +// +// + +void F03PhysicsList::ConstructBosons() +{ + // gamma + + G4Gamma::GammaDefinition(); + + // charged geantino + + G4ChargedGeantino::ChargedGeantinoDefinition(); + + +} + +void F03PhysicsList::ConstructLeptons() +{ + // leptons + + G4Electron::ElectronDefinition(); + G4Positron::PositronDefinition(); + G4MuonPlus::MuonPlusDefinition(); + G4MuonMinus::MuonMinusDefinition(); + + G4NeutrinoE::NeutrinoEDefinition(); + G4AntiNeutrinoE::AntiNeutrinoEDefinition(); + G4NeutrinoMu::NeutrinoMuDefinition(); + G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); +} + +void F03PhysicsList::ConstructMesons() +{ + // mesons + + G4PionPlus::PionPlusDefinition(); + G4PionMinus::PionMinusDefinition(); + G4PionZero::PionZeroDefinition(); + G4KaonPlus::KaonPlusDefinition(); + G4KaonMinus::KaonMinusDefinition(); +} + + +void F03PhysicsList::ConstructBarions() +{ +// barions + + G4Proton::ProtonDefinition(); + G4AntiProton::AntiProtonDefinition(); +} + + +/////////////////////////////////////////////////////////////////////// +// +// + +void F03PhysicsList::ConstructProcess() +{ + AddTransportation(); + AddParameterisation(); + + ConstructEM(); + ConstructGeneral(); +} + +///////////////////////////////////////////////////////////////////////////// +// +// + +#include "G4ComptonScattering.hh" +#include "G4GammaConversion.hh" +#include "G4PhotoElectricEffect.hh" + +#include "G4MultipleScattering.hh" + +#include "G4eIonisation.hh" +#include "G4eBremsstrahlung.hh" +#include "G4eplusAnnihilation.hh" + +#include "G4MuIonisation.hh" +#include "G4MuBremsstrahlung.hh" +#include "G4MuPairProduction.hh" + +#include "G4hIonisation.hh" +#include "G4PAIonisation.hh" +#include "G4ForwardXrayTR.hh" + +#include "F03StepCut.hh" + +#include "G4IonisationByLogicalVolume.hh" + +void F03PhysicsList::ConstructEM() +{ + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + G4String particleName = particle->GetParticleName(); + + if (particleName == "gamma") + { + // Construct processes for gamma + + thePhotoElectricEffect = new G4PhotoElectricEffect(); + theComptonScattering = new G4ComptonScattering(); + theGammaConversion = new G4GammaConversion(); + + pmanager->AddDiscreteProcess(thePhotoElectricEffect); + pmanager->AddDiscreteProcess(theComptonScattering); + + pmanager->AddDiscreteProcess(theGammaConversion); + + } + else if (particleName == "e-") + { + // Construct processes for electron + + theeminusIonisation = new G4eIonisation(); + theeminusBremsstrahlung = new G4eBremsstrahlung(); + + theeminusStepCut = new F03StepCut(); + + pmanager->AddProcess(theeminusIonisation,-1,2,2); + pmanager->AddProcess(theeminusBremsstrahlung,-1,1,1); + pmanager->AddProcess(theeminusStepCut,-1,-1,4); + theeminusStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if (particleName == "e+") + { + // Construct processes for positron + + theeplusIonisation = new G4eIonisation(); + theeplusBremsstrahlung = new G4eBremsstrahlung(); + theeplusStepCut = new F03StepCut(); + + pmanager->AddProcess(theeplusIonisation,-1,2,2); + pmanager->AddProcess(theeplusBremsstrahlung,-1,-1,3); + pmanager->AddProcess(theeplusStepCut,-1,-1,5); + theeplusStepCut->SetMaxStep(MaxChargedStep) ; + + } + else if( particleName == "mu+" || + particleName == "mu-" ) + { + // Construct processes for muon+ + + F03StepCut* muonStepCut = new F03StepCut(); + + G4MuIonisation* themuIonisation = new G4MuIonisation() ; + pmanager->AddProcess(new G4MultipleScattering(),-1,1,1); + pmanager->AddProcess(themuIonisation,-1,2,2); + pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3); + pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4); + pmanager->AddProcess( muonStepCut,-1,-1,3); + muonStepCut->SetMaxStep(MaxChargedStep) ; + } + else if ( + particleName == "proton" + || particleName == "antiproton" + || particleName == "pi+" + || particleName == "pi-" + || particleName == "kaon+" + || particleName == "kaon-" + ) + { + F03StepCut* thehadronStepCut = new F03StepCut(); + + G4hIonisation* thehIonisation = new G4hIonisation() ; + G4MultipleScattering* thehMultipleScattering = + new G4MultipleScattering() ; + + + pmanager->AddProcess(thehMultipleScattering,-1,1,1); + pmanager->AddProcess(thehIonisation,-1,2,2); + + + pmanager->AddProcess( thehadronStepCut,-1,-1,3); + thehadronStepCut->SetMaxStep(MaxChargedStep) ; + } + } +} + + +#include "G4Decay.hh" + +void F03PhysicsList::ConstructGeneral() +{ + // Add Decay Process + + G4Decay* theDecayProcess = new G4Decay(); + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value(); + G4ProcessManager* pmanager = particle->GetProcessManager(); + + if (theDecayProcess->IsApplicable(*particle)) + { + pmanager ->AddProcess(theDecayProcess); + + // set ordering for PostStepDoIt and AtRestDoIt + + pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep); + pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest); + } + } +} + +///////////////////////////////////////////////////////////////////////////// + +void F03PhysicsList::AddParameterisation() +{ + G4FastSimulationManagerProcess* theFastSimulationManagerProcess = + new G4FastSimulationManagerProcess() ; + theParticleIterator->reset(); + + while( (*theParticleIterator)() ) + { + G4ParticleDefinition* particle = theParticleIterator->value() ; + G4ProcessManager* pmanager = particle->GetProcessManager() ; + + // both postStep and alongStep action are required: because + // of the use of ghost volumes. If no ghost, the postStep is sufficient. + + pmanager->AddProcess(theFastSimulationManagerProcess, -1, 1, 1); + } +} + + + +///////////////////////////////////////////////////////////////////////////// + +void F03PhysicsList::SetCuts() +{ + G4Timer theTimer ; + theTimer.Start() ; + if (verboseLevel >0) + { + G4cout << "F03PhysicsList::SetCuts:"; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; + } + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + + SetCutValue(cutForGamma,"gamma"); + + SetCutValue(cutForElectron,"e-"); + SetCutValue(cutForElectron,"e+"); + + SetCutValue(defaultCutValue,"mu-"); + SetCutValue(defaultCutValue,"mu+"); + + // set cut values for proton and anti_proton before all other hadrons + // because some processes for hadrons need cut values for proton/anti_proton + + SetCutValue(defaultCutValue, "proton"); + SetCutValue(defaultCutValue, "anti_proton"); + + SetCutValueForOthers(defaultCutValue); + + if (verboseLevel>1) DumpCutValuesTable(); + + theTimer.Stop(); + G4cout.precision(6); + G4cout << G4endl ; + G4cout << "total time(SetCuts)=" << theTimer.GetUserElapsed() << " s " <GetAbsorberMaterial(); + + // set cut values for gamma at first and for e- second and next for e+, + // because some processes for e+/e- need cut values for gamma + + G4ParticleDefinition* part; + G4double cut; + + part = theParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e-"); + + part = theParticleTable->FindParticle("e+"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "e+"); + + // set cut values for proton and anti_proton before all other hadrons + // because some processes for hadrons need cut values for proton/anti_proton + + part = theParticleTable->FindParticle("proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "proton"); + + part = theParticleTable->FindParticle("anti_proton"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + SetCutValue(cut, "anti_proton"); + + SetCutValueForOthers(cut); +} + +////////////////////////////////////////////////////////////////////////////// + +void F03PhysicsList::GetRange(G4double val) +{ + G4ParticleTable* theParticleTable = G4ParticleTable::GetParticleTable(); + G4Material* currMat = pDet->GetAbsorberMaterial(); + + G4ParticleDefinition* part; + G4double cut; + part = theParticleTable->FindParticle("e-"); + cut = G4EnergyLossTables::GetRange(part,val,currMat); + G4cout << "material : " << currMat->GetName() << G4endl; + G4cout << "particle : " << part->GetParticleName() << G4endl; + G4cout << "energy : " << val / keV << " (keV)" << G4endl; + G4cout << "range : " << cut / mm << " (mm)" << G4endl; +} + +//////////////////////////////////////////////////////////////////////////// + +void F03PhysicsList::SetMaxStep(G4double step) +{ + MaxChargedStep = step ; + G4cout << " MaxChargedStep=" << MaxChargedStep << G4endl; + G4cout << G4endl; +} diff --git a/examples/extended/field/field03/src/F03PhysicsListMessenger.cc b/examples/extended/field/field03/src/F03PhysicsListMessenger.cc new file mode 100644 index 0000000000..c54da1ec0d --- /dev/null +++ b/examples/extended/field/field03/src/F03PhysicsListMessenger.cc @@ -0,0 +1,120 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03PhysicsListMessenger.cc,v 1.2 2001/07/11 09:58:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03PhysicsListMessenger.hh" + +#include "F03PhysicsList.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithADouble.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03PhysicsListMessenger::F03PhysicsListMessenger(F03PhysicsList * List) +:F03List(List) +{ + cutGCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutG",this); + cutGCmd->SetGuidance("Set cut values by RANGE for Gamma."); + cutGCmd->SetParameterName("range",true); + cutGCmd->SetDefaultValue(1.); + cutGCmd->SetDefaultUnit("mm"); + cutGCmd->AvailableForStates(Idle); + + cutECmd = new G4UIcmdWithADoubleAndUnit("/calor/cutE",this); + cutECmd->SetGuidance("Set cut values by RANGE for e- e+."); + cutECmd->SetParameterName("range",true); + cutECmd->SetDefaultValue(1.); + cutECmd->SetDefaultUnit("mm"); + cutECmd->AvailableForStates(Idle); + + cutPCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutP",this); + cutPCmd->SetGuidance("Set cut values by RANGE for proton and others."); + cutPCmd->SetParameterName("range",true); + cutPCmd->SetDefaultValue(1.); + cutPCmd->SetDefaultUnit("mm"); + cutPCmd->AvailableForStates(Idle); + + eCmd = new G4UIcmdWithADoubleAndUnit("/calor/cutEnergy",this); + eCmd->SetGuidance("Set cut values by ENERGY for charged particles."); + eCmd->SetParameterName("energy",true); + eCmd->SetDefaultValue(10.); + eCmd->SetDefaultUnit("keV"); + eCmd->AvailableForStates(Idle); + + rCmd = new G4UIcmdWithADoubleAndUnit("/calor/range",this); + rCmd->SetGuidance("Display the RANGE of Electron for the current material."); + rCmd->SetParameterName("energy",true); + rCmd->SetDefaultValue(10.); + rCmd->SetDefaultUnit("keV"); + rCmd->AvailableForStates(Idle); + + setMaxStepCmd = new G4UIcmdWithADoubleAndUnit("/step/setMaxStep",this); + setMaxStepCmd->SetGuidance("Set max. step length in the detector"); + setMaxStepCmd->SetParameterName("mxStep",true); + setMaxStepCmd->SetDefaultUnit("mm"); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03PhysicsListMessenger::~F03PhysicsListMessenger() +{ + + delete setMaxStepCmd; + + delete cutGCmd; + delete cutECmd; + delete cutPCmd; + delete rCmd; + delete eCmd; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03PhysicsListMessenger::SetNewValue(G4UIcommand* command,G4String newValue) +{ + if(command == cutGCmd) + { F03List->SetGammaCut(cutGCmd->GetNewDoubleValue(newValue));} + if(command == cutECmd) + { F03List->SetElectronCut(eCmd->GetNewDoubleValue(newValue));} + if(command == cutPCmd) + { F03List->SetProtonCut(eCmd->GetNewDoubleValue(newValue));} + if(command == eCmd) + { F03List->SetCutsByEnergy(cutECmd->GetNewDoubleValue(newValue));} + if(command == rCmd) + { F03List->GetRange(rCmd->GetNewDoubleValue(newValue));} + if(command == setMaxStepCmd) + { F03List->SetMaxStep(setMaxStepCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/examples/extended/field/field03/src/F03PrimaryGeneratorAction.cc b/examples/extended/field/field03/src/F03PrimaryGeneratorAction.cc new file mode 100644 index 0000000000..0fc5d60710 --- /dev/null +++ b/examples/extended/field/field03/src/F03PrimaryGeneratorAction.cc @@ -0,0 +1,153 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03PrimaryGeneratorAction.cc,v 1.4 2001/11/07 14:34:43 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03PrimaryGeneratorAction.hh" + +#include "F03DetectorConstruction.hh" +#include "F03PrimaryGeneratorMessenger.hh" + +#include "G4Event.hh" +#include "G4ParticleGun.hh" +#include "G4ParticleTable.hh" +#include "G4ParticleDefinition.hh" +#include "Randomize.hh" +#include "G4ios.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + G4String F03PrimaryGeneratorAction::thePrimaryParticleName="e-" ; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03PrimaryGeneratorAction::F03PrimaryGeneratorAction( + F03DetectorConstruction* F03DC) + : F03Detector(F03DC), rndmFlag("off"), xvertex(0.), + yvertex(0.), zvertex(0.), vertexdefined(false) +{ + G4int n_particle = 1; + particleGun = new G4ParticleGun(n_particle); + + // create a messenger for this class + // + gunMessenger = new F03PrimaryGeneratorMessenger(this); + + // default particle kinematic + + G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable(); + G4String particleName; + G4ParticleDefinition* particle + = particleTable->FindParticle(particleName="e-"); + particleGun->SetParticleDefinition(particle); + + thePrimaryParticleName = particle->GetParticleName() ; + + particleGun->SetParticleMomentumDirection(G4ThreeVector(0.,0.,-1.)); + particleGun->SetParticleEnergy(1.*GeV); + + zvertex=F03Detector->GetAbsorberZpos()-0.5*(F03Detector->GetAbsorberThickness()); + particleGun->SetParticlePosition(G4ThreeVector(xvertex,yvertex,zvertex)); + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03PrimaryGeneratorAction::~F03PrimaryGeneratorAction() +{ + delete particleGun; + delete gunMessenger; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) +{ + //this function is called at the begining of event + // + thePrimaryParticleName = + particleGun->GetParticleDefinition()->GetParticleName() ; + G4double x0,y0,z0 ; + if(vertexdefined) + { + x0 = xvertex ; + y0 = yvertex ; + z0 = zvertex ; + } + else + { + x0 = 0. ; + y0 = 0. ; + z0 = F03Detector->GetAbsorberZpos()-0.5*(F03Detector->GetAbsorberThickness()); + } + G4double r0,phi0 ; + + if (rndmFlag == "on") + { + r0 = (F03Detector->GetAbsorberRadius())*sqrt(G4UniformRand()); + phi0 = twopi*G4UniformRand(); + x0 = r0*cos(phi0); + y0 = r0*sin(phi0); + } + + particleGun->SetParticlePosition(G4ThreeVector(x0,y0,z0)); + particleGun->GeneratePrimaryVertex(anEvent); +} + +/////////////////////////////////////////////////////////////////////// +// +// + +G4String F03PrimaryGeneratorAction::GetPrimaryName() +{ + return thePrimaryParticleName ; +} + +void F03PrimaryGeneratorAction::Setzvertex(G4double z) +{ + vertexdefined = true ; + zvertex = z ; + G4cout << " Z coordinate of the primary vertex = " << zvertex/mm << + " mm." << G4endl; +} +void F03PrimaryGeneratorAction::Setxvertex(G4double x) +{ + vertexdefined = true ; + xvertex = x ; + G4cout << " X coordinate of the primary vertex = " << xvertex/mm << + " mm." << G4endl; +} + +void F03PrimaryGeneratorAction::Setyvertex(G4double y) +{ + vertexdefined = true ; + yvertex = y ; + G4cout << " Y coordinate of the primary vertex = " << yvertex/mm << + " mm." << G4endl; +} diff --git a/examples/extended/field/field03/src/F03PrimaryGeneratorMessenger.cc b/examples/extended/field/field03/src/F03PrimaryGeneratorMessenger.cc new file mode 100644 index 0000000000..9478b45bb2 --- /dev/null +++ b/examples/extended/field/field03/src/F03PrimaryGeneratorMessenger.cc @@ -0,0 +1,92 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03PrimaryGeneratorMessenger.cc,v 1.3 2001/10/15 17:20:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03PrimaryGeneratorMessenger.hh" + +#include "F03PrimaryGeneratorAction.hh" +#include "G4UIcmdWithAString.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03PrimaryGeneratorMessenger::F03PrimaryGeneratorMessenger(F03PrimaryGeneratorAction* F03Gun) + : F03Action(F03Gun) +{ + RndmCmd = new G4UIcmdWithAString("/gun/random",this); + RndmCmd->SetGuidance("Shoot randomly the incident particle."); + RndmCmd->SetGuidance(" Choice : on, off(default)"); + RndmCmd->SetParameterName("choice",true); + RndmCmd->SetDefaultValue("off"); + RndmCmd->SetCandidates("on off"); + RndmCmd->AvailableForStates(PreInit,Idle); + + setxvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/xvertex",this); + setxvertexCmd->SetGuidance(" Set x coord. of the primary vertex."); + setxvertexCmd->SetParameterName("xv",true); + setxvertexCmd->SetDefaultValue(0.0*mm) ; + + setyvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/yvertex",this); + setyvertexCmd->SetGuidance(" Set y coord. of the primary vertex."); + setyvertexCmd->SetParameterName("yv",true); + setyvertexCmd->SetDefaultValue(0.0*mm) ; + + setzvertexCmd = new G4UIcmdWithADoubleAndUnit("/gun/zvertex",this); + setzvertexCmd->SetGuidance(" Set z coord. of the primary vertex."); + setzvertexCmd->SetParameterName("zv",true); + setzvertexCmd->SetDefaultValue(0.0*mm) ; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03PrimaryGeneratorMessenger::~F03PrimaryGeneratorMessenger() +{ + delete RndmCmd; + delete setxvertexCmd; + delete setyvertexCmd; + delete setzvertexCmd; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03PrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +{ + if( command == RndmCmd ) + { F03Action->SetRndmFlag(newValue);} + if( command == setxvertexCmd) + { F03Action->Setxvertex(setxvertexCmd->GetNewDoubleValue(newValue));} + if( command == setyvertexCmd) + { F03Action->Setyvertex(setyvertexCmd->GetNewDoubleValue(newValue));} + if( command == setzvertexCmd) + { F03Action->Setzvertex(setzvertexCmd->GetNewDoubleValue(newValue));} +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field03/src/F03RunAction.cc b/examples/extended/field/field03/src/F03RunAction.cc new file mode 100644 index 0000000000..b7a9c03b66 --- /dev/null +++ b/examples/extended/field/field03/src/F03RunAction.cc @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03RunAction.cc,v 1.5 2001/11/07 16:36:34 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "F03RunAction.hh" +#include "F03RunMessenger.hh" + +#include "G4Run.hh" +#include "G4UImanager.hh" +#include "G4VVisManager.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +#include "Randomize.hh" + +////////////////////////////////////////////////////////////////////////////// + +F03RunAction::F03RunAction() + : saveRndm(0) +{ + runMessenger = new F03RunMessenger(this); +} + +//////////////////////////////////////////////////////////////////////////// + +F03RunAction::~F03RunAction() +{ + delete runMessenger; +} + +//////////////////////////////////////////////////////////////////////////////// + +void F03RunAction::BeginOfRunAction(const G4Run* aRun) +{ + G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl; + + // save Rndm status + if (saveRndm > 0) + { + HepRandom::showEngineStatus(); + HepRandom::saveEngineStatus("beginOfRun.rndm"); + } + G4UImanager* UI = G4UImanager::GetUIpointer(); + + G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); + + if(pVVisManager) UI->ApplyCommand("/vis/scene/notifyHandlers"); +} + +///////////////////////////////////////////////////////////////////////////// + +void F03RunAction::EndOfRunAction(const G4Run* aRun) +{ + if (G4VVisManager::GetConcreteInstance()) + { + G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); + } + + // save Rndm status + + if (saveRndm == 1) + { + HepRandom::showEngineStatus(); + HepRandom::saveEngineStatus("endOfRun.rndm"); + } +} + +// +// +///////////////////////////////////////////////////////////////////////////// diff --git a/examples/extended/electromagnetic/TestEm4/src/Em4RunActionMessenger.cc b/examples/extended/field/field03/src/F03RunMessenger.cc similarity index 81% rename from examples/extended/electromagnetic/TestEm4/src/Em4RunActionMessenger.cc rename to examples/extended/field/field03/src/F03RunMessenger.cc index 260ee91bf3..00cea99aee 100644 --- a/examples/extended/electromagnetic/TestEm4/src/Em4RunActionMessenger.cc +++ b/examples/extended/field/field03/src/F03RunMessenger.cc @@ -21,29 +21,29 @@ // ******************************************************************** // // -// $Id: Em4RunActionMessenger.cc,v 1.4.2.1 2001/06/28 19:07:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: F03RunMessenger.cc,v 1.3 2001/10/15 17:20:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#include "Em4RunActionMessenger.hh" -#include "Em4RunAction.hh" +#include "F03RunMessenger.hh" +#include "F03RunAction.hh" #include "G4UIdirectory.hh" -#include "G4UIcmdWithAString.hh" #include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -Em4RunActionMessenger::Em4RunActionMessenger(Em4RunAction* run) -:Em4Run(run) -{ +F03RunMessenger::F03RunMessenger(F03RunAction* RA) + : runAction (RA) +{ RndmDir = new G4UIdirectory("/rndm/"); RndmDir->SetGuidance("Rndm status control."); @@ -51,8 +51,8 @@ Em4RunActionMessenger::Em4RunActionMessenger(Em4RunAction* run) RndmSaveCmd->SetGuidance("set frequency to save rndm status on external files."); RndmSaveCmd->SetGuidance("freq = 0 not saved"); RndmSaveCmd->SetGuidance("freq > 0 saved on: beginOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq > 0 saved on: endOfRun.rndm"); - RndmSaveCmd->SetGuidance("freq = 2 saved on: beginOfEvent.rndm"); + RndmSaveCmd->SetGuidance("freq = 1 saved on: endOfRun.rndm"); + RndmSaveCmd->SetGuidance("freq = 2 saved on: endOfEvent.rndm"); RndmSaveCmd->SetParameterName("frequency",false); RndmSaveCmd->SetRange("frequency>=0 && frequency<=2"); RndmSaveCmd->AvailableForStates(PreInit,Idle); @@ -61,26 +61,26 @@ Em4RunActionMessenger::Em4RunActionMessenger(Em4RunAction* run) RndmReadCmd->SetGuidance("get rndm status from an external file."); RndmReadCmd->SetParameterName("fileName",true); RndmReadCmd->SetDefaultValue ("beginOfRun.rndm"); - RndmReadCmd->AvailableForStates(PreInit,Idle); + RndmReadCmd->AvailableForStates(PreInit,Idle); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -Em4RunActionMessenger::~Em4RunActionMessenger() +F03RunMessenger::~F03RunMessenger() { delete RndmSaveCmd; delete RndmReadCmd; delete RndmDir; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void Em4RunActionMessenger::SetNewValue(G4UIcommand* command,G4String newValue) -{ +void F03RunMessenger::SetNewValue(G4UIcommand* command,G4String newValues) +{ if (command == RndmSaveCmd) - Em4Run->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValue)); + runAction->SetRndmFreq(RndmSaveCmd->GetNewIntValue(newValues)); if (command == RndmReadCmd) - { G4cout << "\n---> rndm status restored from file: " << newValue << G4endl; - HepRandom::restoreEngineStatus(newValue); + { G4cout << "\n---> rndm status restored from file: " << newValues << G4endl; + HepRandom::restoreEngineStatus(newValues); HepRandom::showEngineStatus(); } } diff --git a/examples/extended/field/field03/src/F03StepCut.cc b/examples/extended/field/field03/src/F03StepCut.cc new file mode 100644 index 0000000000..ce92b5bd4c --- /dev/null +++ b/examples/extended/field/field03/src/F03StepCut.cc @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03StepCut.cc,v 1.2 2001/07/11 09:58:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "F03StepCut.hh" + +#include "G4Step.hh" +#include "G4UserLimits.hh" +#include "G4VParticleChange.hh" +#include "G4EnergyLossTables.hh" + +F03StepCut::F03StepCut(const G4String& aName) + : G4VDiscreteProcess(aName),MaxChargedStep(DBL_MAX) +{ + if (verboseLevel>0) { + G4cout << GetProcessName() << " is created "<< G4endl; + } +} + +F03StepCut::~F03StepCut() +{ +} + +F03StepCut::F03StepCut(F03StepCut& right) + :G4VDiscreteProcess(right) +{} + +void F03StepCut::SetMaxStep(G4double step) +{ + MaxChargedStep = step ; +} + + diff --git a/examples/extended/field/field03/src/F03SteppingAction.cc b/examples/extended/field/field03/src/F03SteppingAction.cc new file mode 100644 index 0000000000..e2bef5d20b --- /dev/null +++ b/examples/extended/field/field03/src/F03SteppingAction.cc @@ -0,0 +1,58 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03SteppingAction.cc,v 1.4 2001/11/07 16:36:34 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03SteppingAction.hh" +#include "F03SteppingMessenger.hh" +#include "G4ios.hh" +#include "g4std/iomanip" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03SteppingAction::F03SteppingAction() + : steppingMessenger(0) +{ + steppingMessenger = new F03SteppingMessenger(this); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03SteppingAction::~F03SteppingAction() +{ + delete steppingMessenger ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03SteppingAction::UserSteppingAction(const G4Step*) +{ +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/field/field03/src/F03SteppingMessenger.cc b/examples/extended/field/field03/src/F03SteppingMessenger.cc new file mode 100644 index 0000000000..5137ae739d --- /dev/null +++ b/examples/extended/field/field03/src/F03SteppingMessenger.cc @@ -0,0 +1,60 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03SteppingMessenger.cc,v 1.3 2001/10/15 17:20:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#include "F03SteppingMessenger.hh" + +#include "F03SteppingAction.hh" +#include "G4UIdirectory.hh" +#include "globals.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03SteppingMessenger::F03SteppingMessenger(F03SteppingAction* SA) + : steppingAction (SA) +{ + steppingDir = new G4UIdirectory("/stepping/"); + steppingDir->SetGuidance("stepping control"); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03SteppingMessenger::~F03SteppingMessenger() +{ + delete steppingDir; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03SteppingMessenger::SetNewValue(G4UIcommand* command,G4String newValues) +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + + diff --git a/examples/extended/field/field03/src/F03SteppingVerbose.cc b/examples/extended/field/field03/src/F03SteppingVerbose.cc new file mode 100644 index 0000000000..4b60a46482 --- /dev/null +++ b/examples/extended/field/field03/src/F03SteppingVerbose.cc @@ -0,0 +1,183 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03SteppingVerbose.cc,v 1.3 2001/10/15 17:20:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +#include "F03SteppingVerbose.hh" + +#include "G4SteppingManager.hh" +#include "G4UnitsTable.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +F03SteppingVerbose::F03SteppingVerbose() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +F03SteppingVerbose::~F03SteppingVerbose() +{} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void F03SteppingVerbose::StepInfo() +{ + CopyState(); + + G4int prec = G4cout.precision(8); + + if( verboseLevel >= 1 ){ + if( verboseLevel >= 4 ) VerboseTrack(); + if( verboseLevel >= 3 ){ + G4cout << G4endl; + G4cout << G4std::setw( 5) << "#Step#" << " " + << G4std::setw(10) << "X" << " " + << G4std::setw(10) << "Y" << " " + << G4std::setw(10) << "Z" << " " + << G4std::setw(10) << "KineE" << " " + << G4std::setw(10) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "NextVolu" + << G4std::setw(10) << "Process" + << G4std::setw(10) << "Dir_x" << " " + << G4std::setw(10) << "Dir_y" << " " + << G4std::setw(10) << "Dir_z" << " " + << G4endl; + } + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(10) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if( fTrack->GetNextVolume() != 0 ) { + G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); + } else { + G4cout << G4std::setw(10) << "OutOfWorld"; + } + + if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){ + G4cout << " " + << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName(); + } else { + G4cout << " UserLimit"; + } + + G4cout << G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().x(),"Length") + << G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().y(),"Length") + << G4std::setw(12) << G4BestUnit(fTrack->GetMomentumDirection().z(),"Length"); + + G4cout << G4endl; + + if( verboseLevel == 2 ){ + G4int tN2ndariesTot = fN2ndariesAtRestDoIt + + fN2ndariesAlongStepDoIt + + fN2ndariesPostStepDoIt; + if(tN2ndariesTot>0){ + G4cout << " :----- List of 2ndaries - " + << "#SpawnInStep=" << G4std::setw(3) << tN2ndariesTot + << "(Rest=" << G4std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt + << "), " + << "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).size() + << " ---------------" + << G4endl; + + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; + lp1<(*fSecondary).size(); lp1++){ + G4cout << " : " + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") + << G4std::setw(6) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") + << G4std::setw(10) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName(); + G4cout << G4endl; + } + + G4cout << " :-----------------------------" + << "----------------------------------" + << "-- EndOf2ndaries Info ---------------" + << G4endl; + } + } + + } + G4cout.precision(prec); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +void F03SteppingVerbose::TrackingStarted() +{ + + CopyState(); +G4int prec = G4cout.precision(3); + if( verboseLevel > 0 ){ + + G4cout << G4std::setw( 5) << "Step#" << " " + << G4std::setw( 6) << "X" << " " + << G4std::setw( 6) << "Y" << " " + << G4std::setw( 6) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 9) << "dEStep" << " " + << G4std::setw(10) << "StepLeng" + << G4std::setw(10) << "TrakLeng" + << G4std::setw(10) << "Volume" << " " + << G4std::setw(10) << "Process" << G4endl; + + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + + if(fTrack->GetNextVolume()){ + G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); + } else { + G4cout << G4std::setw(10) << "OutOfWorld"; + } + G4cout << " initStep" << G4endl; + } + G4cout.precision(prec); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... diff --git a/examples/extended/field/field03/src/F03VisManager.cc b/examples/extended/field/field03/src/F03VisManager.cc new file mode 100644 index 0000000000..e0a53e2663 --- /dev/null +++ b/examples/extended/field/field03/src/F03VisManager.cc @@ -0,0 +1,153 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: F03VisManager.cc,v 1.3 2001/12/12 15:22:31 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 24th January 1998. + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +#ifdef G4VIS_USE + +#include "F03VisManager.hh" + +// Supported drivers... + +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN +#include "G4FukuiRenderer.hh" +#endif + +#ifdef G4VIS_USE_OPACS +#include "G4Wo.hh" +#include "G4Xo.hh" +#endif + +#ifdef G4VIS_USE_OPENGLX +#include "G4OpenGLImmediateX.hh" +#include "G4OpenGLStoredX.hh" +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 +#include "G4OpenGLImmediateWin32.hh" +#include "G4OpenGLStoredWin32.hh" +#endif + +#ifdef G4VIS_USE_OPENGLXM +#include "G4OpenGLImmediateXm.hh" +#include "G4OpenGLStoredXm.hh" +#endif + +#ifdef G4VIS_USE_OIX +#include "G4OpenInventorX.hh" +#endif + +#ifdef G4VIS_USE_OIWIN32 +#include "G4OpenInventorWin32.hh" +#endif + +#ifdef G4VIS_USE_VRML +#include "G4VRML1.hh" +#include "G4VRML2.hh" +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +F03VisManager::F03VisManager () {} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void F03VisManager::RegisterGraphicsSystems () { + + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + +#ifdef G4VIS_USE_DAWN + RegisterGraphicsSystem (new G4FukuiRenderer); +#endif + +#ifdef G4VIS_USE_OPACS + RegisterGraphicsSystem (new G4Wo); + RegisterGraphicsSystem (new G4Xo); +#endif + +#ifdef G4VIS_USE_OPENGLX + RegisterGraphicsSystem (new G4OpenGLImmediateX); + RegisterGraphicsSystem (new G4OpenGLStoredX); +#endif + +#ifdef G4VIS_USE_OPENGLWIN32 + RegisterGraphicsSystem (new G4OpenGLImmediateWin32); + RegisterGraphicsSystem (new G4OpenGLStoredWin32); +#endif + +#ifdef G4VIS_USE_OPENGLXM + RegisterGraphicsSystem (new G4OpenGLImmediateXm); + RegisterGraphicsSystem (new G4OpenGLStoredXm); +#endif + +#ifdef G4VIS_USE_OIX + RegisterGraphicsSystem (new G4OpenInventorX); +#endif + +#ifdef G4VIS_USE_OIWIN32 + RegisterGraphicsSystem (new G4OpenInventorWin32); +#endif + +#ifdef G4VIS_USE_VRML + RegisterGraphicsSystem (new G4VRML1); + RegisterGraphicsSystem (new G4VRML2); +#endif + + if (fVerbose > 0) { + G4cout << + "\nYou have successfully chosen to use the following graphics systems." + << G4endl; + PrintAvailableGraphicsSystems (); + } +} + +#endif + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/examples/extended/g3tog4/clGeometry/clGeometry.cc b/examples/extended/g3tog4/clGeometry/clGeometry.cc index 2996750ab4..c78a7ccc9b 100644 --- a/examples/extended/g3tog4/clGeometry/clGeometry.cc +++ b/examples/extended/g3tog4/clGeometry/clGeometry.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: clGeometry.cc,v 1.1.4.1 2001/06/28 19:07:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: clGeometry.cc,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/clGeometry/clGeometry.out b/examples/extended/g3tog4/clGeometry/clGeometry.out index e35531d358..072708a5f9 100644 --- a/examples/extended/g3tog4/clGeometry/clGeometry.out +++ b/examples/extended/g3tog4/clGeometry/clGeometry.out @@ -1,16 +1,29 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** -Instantiated G3toG4DetectorConstruction using call list file "/afs/cern.ch/sw/geant4/stt/dev2/src/geant4/examples/extended/g3tog4/data/testmodel.dat" +Instantiated G3toG4DetectorConstruction using call list file "/afs/cern.ch/sw/geant4/stt/dev1/src/geant4/examples/extended/g3tog4/data/testmodel.dat" G4VUserPhysicsList::SetVerboseLevel : Verbose level is set to 2 +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) /run/verbose 1 /tracking/verbose 1 /tracking/storeTrajectory 1 /run/initialize Instantiated unit rotation matrix irot=0 -Reading the call List file /afs/cern.ch/sw/geant4/stt/dev2/src/geant4/examples/extended/g3tog4/data/testmodel.dat... +Reading the call List file /afs/cern.ch/sw/geant4/stt/dev1/src/geant4/examples/extended/g3tog4/data/testmodel.dat... G4ggclos: setting top-level VolTableEntry Dump of VTD - 26 entries: Instantiated 26 volume table entries @@ -53,19 +66,20 @@ G4VUserPhysicsList::Construct() Construct particles Construct processes G3toG4PhysicsList::SetCuts:CutLength : 2 mm +G4VUserPhysicsList::SetCutValue :Set cuts for gamma phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z Sandia crossSection below 50 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. + Scattered gamma energy according Klein-Nishina. PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. e+e- energies according Bethe-Heitler PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. -Set cuts for gamma +G4VUserPhysicsList::SetCutValue :Set cuts for e- msc: Tables of transport mean free paths. New model of MSC , computes the lateral @@ -81,12 +95,12 @@ eBrem: Total cross sections from a NEW parametrisation based on the EEDL data l log scale extrapolation above 100 GeV Gamma energy sampled from a parametrised formula. PhysicsTables from 1 keV to 100 TeV in 100 bins. -Set cuts for e- +G4VUserPhysicsList::SetCutValue :Set cuts for e+ -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. -Set cuts for e+ +G4VUserPhysicsList::SetCutValue :Set cuts for proton msc: Tables of transport mean free paths. New model of MSC , computes the lateral @@ -97,8 +111,7 @@ hIoni: Knock-on electron cross sections . Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. PhysicsTables from 1 keV to 100 TeV in 100 bins. -Set cuts for proton -Set cuts for anti_proton +G4VUserPhysicsList::SetCutValue :Set cuts for anti_proton G4VUserPhysicsList::SetCutValueForOthers :2[mm] Set cuts for anti_kaon0 Set cuts for anti_neutron @@ -119,10 +132,10 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1000 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. @@ -142,7 +155,23 @@ Set cuts for pi- Set cuts for pi0 ============= The cut Energy ============================== gamma e- -Cut in range 2 mm 2 mm +Cut in range + HYDROGEN 2 mm 2 mm + DEUTERIUM 2 mm 2 mm + HELIUM 2 mm 2 mm + LITHIUM 2 mm 2 mm + BERILLIUM 2 mm 2 mm + CARBON 2 mm 2 mm + NITROGEN 2 mm 2 mm + NEON 2 mm 2 mm + ALUMINIUM 2 mm 2 mm + IRON 2 mm 2 mm + COPPER 2 mm 2 mm + TUNGSTEN 2 mm 2 mm + LEAD 2 mm 2 mm + URANIUM 2 mm 2 mm + AIR 2 mm 2 mm + VACUUM 2 mm 2 mm Cut in energy HYDROGEN 990 eV 162 keV DEUTERIUM 990 eV 271 keV @@ -161,10 +190,7 @@ Cut in energy AIR 990 eV 990 eV VACUUM 990 eV 990 eV =================================================== -/control/execute /afs/cern.ch/sw/geant4/stt/dev2/src/geant4/tests/test601/test601.in -# -# Initialize GEANT4 -# +/control/execute /afs/cern.ch/sw/geant4/stt/dev1/src/geant4/tests/test601/test601.in /gun/position 0. -1.5 0. mm /gun/direction 0. 1. 0. /gun/energy 1 GeV @@ -179,15 +205,14 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -1.5 0 1e+03 0 0 0 TBD1 initStep - 1 0 -1.5 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation + 0 0 -1.5 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation >>> Event 0 1 trajectories stored in this event. Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0.07s Sys=0s + User=0.01s Real=0.01s Sys=0s /gun/particle mu+ /run/beamOn 1 ### Run 1 start. @@ -199,9 +224,8 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -1.5 0 1e+03 0 0 0 TBD1 initStep - 1 0 -1.5 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation + 0 0 -1.5 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation >>> Event 0 1 trajectories stored in this event. Run terminated. @@ -219,9 +243,8 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -1.5 0 1e+03 0 0 0 TBD1 initStep - 1 0 -1.5 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation + 0 0 -1.5 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation >>> Event 0 1 trajectories stored in this event. Run terminated. @@ -239,16 +262,14 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -1.5 0 1e+03 0 0 0 TBD1 initStep - 1 0 -1.5 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation + 0 0 -1.5 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation >>> Event 0 1 trajectories stored in this event. Run terminated. Run Summary Number of events processed : 1 - User=0.01s Real=0.01s Sys=0s -# + User=0s Real=0s Sys=0s /gun/position 0. 1.5 0. mm /gun/direction 1. 0. 0. /gun/energy 1 GeV @@ -263,15 +284,14 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 1.5 0 1e+03 0 0 0 TBD1 initStep - 1 1e-09 1.5 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 4e+03 1.5 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation + 0 0 1.5 0 1e+03 0 0 0 HALL initStep + 1 4e+03 1.5 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation >>> Event 0 1 trajectories stored in this event. Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0s Sys=0s + User=0s Real=0.01s Sys=0.01s /gun/particle mu+ /run/beamOn 1 ### Run 5 start. @@ -283,9 +303,8 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 1.5 0 1e+03 0 0 0 TBD1 initStep - 1 1e-09 1.5 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 4e+03 1.5 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation + 0 0 1.5 0 1e+03 0 0 0 HALL initStep + 1 4e+03 1.5 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation >>> Event 0 1 trajectories stored in this event. Run terminated. @@ -303,9 +322,8 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 1.5 0 1e+03 0 0 0 TBD1 initStep - 1 1e-09 1.5 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 4e+03 1.5 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation + 0 0 1.5 0 1e+03 0 0 0 HALL initStep + 1 4e+03 1.5 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation >>> Event 0 1 trajectories stored in this event. Run terminated. @@ -323,18 +341,14 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 1.5 0 1e+03 0 0 0 TBD1 initStep - 1 1e-09 1.5 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 4e+03 1.5 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation + 0 0 1.5 0 1e+03 0 0 0 HALL initStep + 1 4e+03 1.5 0 1e+03 0 4e+03 4e+03 OutOfWorld Transportation >>> Event 0 1 trajectories stored in this event. Run terminated. Run Summary Number of events processed : 1 User=0s Real=0s Sys=0s -# -# Termination -# -exit - +Graphics systems deleted. +Visualization Manager deleting... G4 kernel has come to Quit state. diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4DetectorConstruction.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4DetectorConstruction.hh index d8613e55a6..9dc5424c29 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4DetectorConstruction.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4DetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4DetectorConstruction.hh,v 1.1.4.1 2001/06/28 19:07:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4DetectorConstruction.hh,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G3toG4DetectorConstruction_h #define G3toG4DetectorConstruction_h 1 diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4EventAction.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4EventAction.hh index c1b89d28ed..872f7c35ef 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4EventAction.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4EventAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4EventAction.hh,v 1.1.4.1 2001/06/28 19:07:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4EventAction.hh,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4EventActionMessenger.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4EventActionMessenger.hh index f1b551162a..f6ee4fb410 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4EventActionMessenger.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4EventActionMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4EventActionMessenger.hh,v 1.1.4.1 2001/06/28 19:07:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4EventActionMessenger.hh,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4PhysicsList.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4PhysicsList.hh index a7bab341c8..35a9f5c3f2 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4PhysicsList.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4PhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4PhysicsList.hh,v 1.1.4.1 2001/06/28 19:07:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4PhysicsList.hh,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4PrimaryGeneratorAction.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4PrimaryGeneratorAction.hh index 7f9f2554a7..923bc9949b 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4PrimaryGeneratorAction.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4PrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4PrimaryGeneratorAction.hh,v 1.1.4.1 2001/06/28 19:07:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4PrimaryGeneratorAction.hh,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G3toG4PrimaryGeneratorAction_h diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4RunAction.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4RunAction.hh index 7afd6f4fb3..aa024f2b08 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4RunAction.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4RunAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4RunAction.hh,v 1.1.4.1 2001/06/28 19:07:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4RunAction.hh,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G3toG4RunAction_h diff --git a/examples/extended/g3tog4/clGeometry/include/G3toG4VisManager.hh b/examples/extended/g3tog4/clGeometry/include/G3toG4VisManager.hh index 45c236ce32..142c6f4cca 100644 --- a/examples/extended/g3tog4/clGeometry/include/G3toG4VisManager.hh +++ b/examples/extended/g3tog4/clGeometry/include/G3toG4VisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4VisManager.hh,v 1.1.4.1 2001/06/28 19:07:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4VisManager.hh,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4DetectorConstruction.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4DetectorConstruction.cc index 0339ed9f3c..40f5af993d 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4DetectorConstruction.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4DetectorConstruction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4DetectorConstruction.cc,v 1.1.4.1 2001/06/28 19:07:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4DetectorConstruction.cc,v 1.2 2001/07/11 09:58:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //-------------------------------------------------------------------------- // G3toG4DetectorConstruction. Most the work is Done in diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4EventAction.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4EventAction.cc index 65dbe07407..a451be0181 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4EventAction.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4EventAction.cc @@ -21,15 +21,14 @@ // ******************************************************************** // // -// $Id: G3toG4EventAction.cc,v 1.1.4.1 2001/06/28 19:07:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4EventAction.cc,v 1.3 2001/10/23 13:32:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#include "g4rw/tvordvec.h" #include "G4ios.hh" #include "G3toG4EventAction.hh" #include "G3toG4EventActionMessenger.hh" diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4EventActionMessenger.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4EventActionMessenger.cc index efcd57ed9c..75f313dec4 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4EventActionMessenger.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4EventActionMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4EventActionMessenger.cc,v 1.1.4.1 2001/06/28 19:07:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4EventActionMessenger.cc,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4PhysicsList.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4PhysicsList.cc index 6a5e249b93..ec7536cee1 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4PhysicsList.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4PhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4PhysicsList.cc,v 1.1.4.1 2001/06/28 19:07:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4PhysicsList.cc,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4PrimaryGeneratorAction.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4PrimaryGeneratorAction.cc index 1c3842e341..6c285fcfbd 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4PrimaryGeneratorAction.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4PrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4PrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:07:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4PrimaryGeneratorAction.cc,v 1.3 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "globals.hh" diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4RunAction.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4RunAction.cc index bbab272704..43c435c9e5 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4RunAction.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4RunAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4RunAction.cc,v 1.1.4.1 2001/06/28 19:07:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4RunAction.cc,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4ios.hh" diff --git a/examples/extended/g3tog4/clGeometry/src/G3toG4VisManager.cc b/examples/extended/g3tog4/clGeometry/src/G3toG4VisManager.cc index 68e11a5bf3..c163973ffe 100644 --- a/examples/extended/g3tog4/clGeometry/src/G3toG4VisManager.cc +++ b/examples/extended/g3tog4/clGeometry/src/G3toG4VisManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4VisManager.cc,v 1.1.4.1 2001/06/28 19:07:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4VisManager.cc,v 1.4 2001/11/15 13:09:39 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. @@ -37,14 +37,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -73,20 +80,11 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYX -#include "G4RayX.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G3toG4VisManager::G3toG4VisManager () {} @@ -95,14 +93,21 @@ G3toG4VisManager::G3toG4VisManager () {} void G3toG4VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -131,20 +136,11 @@ void G3toG4VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYX - RegisterGraphicsSystem (new G4RayX); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." diff --git a/examples/extended/g3tog4/cltog4/cltog4.cc b/examples/extended/g3tog4/cltog4/cltog4.cc index 31ffff3baf..8f7331e035 100644 --- a/examples/extended/g3tog4/cltog4/cltog4.cc +++ b/examples/extended/g3tog4/cltog4/cltog4.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: cltog4.cc,v 1.1.4.1 2001/06/28 19:07:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: cltog4.cc,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // #include "G4ios.hh" diff --git a/examples/extended/g3tog4/cltog4/cltog4.out b/examples/extended/g3tog4/cltog4/cltog4.out index 5d848bbfdc..172a8663cf 100644 --- a/examples/extended/g3tog4/cltog4/cltog4.out +++ b/examples/extended/g3tog4/cltog4/cltog4.out @@ -1,15 +1,15 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** -Instantiated G3toG4DetectorConstruction using call list file "/afs/cern.ch/sw/geant4/stt/dev2/src/geant4/examples/extended/g3tog4/data/testmodel.dat" +Instantiated G3toG4DetectorConstruction using call list file "/afs/cern.ch/sw/geant4/stt/dev1/src/geant4/examples/extended/g3tog4/data/testmodel.dat" /run/verbose 1 /tracking/verbose 1 /tracking/storeTrajectory 1 /run/initialize Instantiated unit rotation matrix irot=0 -Reading the call List file /afs/cern.ch/sw/geant4/stt/dev2/src/geant4/examples/extended/g3tog4/data/testmodel.dat... +Reading the call List file /afs/cern.ch/sw/geant4/stt/dev1/src/geant4/examples/extended/g3tog4/data/testmodel.dat... G4ggclos: setting top-level VolTableEntry Dump of VTD - 26 entries: Instantiated 26 volume table entries @@ -55,7 +55,7 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. + Scattered gamma energy according Klein-Nishina. PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. @@ -77,7 +77,7 @@ eBrem: Total cross sections from a NEW parametrisation based on the EEDL data l Gamma energy sampled from a parametrised formula. PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. @@ -96,10 +96,10 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1000 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. @@ -110,7 +110,23 @@ MuPairProd: theoretical cross sections PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- -Cut in range 2 mm 2 mm +Cut in range + HYDROGEN 2 mm 2 mm + DEUTERIUM 2 mm 2 mm + HELIUM 2 mm 2 mm + LITHIUM 2 mm 2 mm + BERILLIUM 2 mm 2 mm + CARBON 2 mm 2 mm + NITROGEN 2 mm 2 mm + NEON 2 mm 2 mm + ALUMINIUM 2 mm 2 mm + IRON 2 mm 2 mm + COPPER 2 mm 2 mm + TUNGSTEN 2 mm 2 mm + LEAD 2 mm 2 mm + URANIUM 2 mm 2 mm + AIR 2 mm 2 mm + VACUUM 2 mm 2 mm Cut in energy HYDROGEN 990 eV 162 keV DEUTERIUM 990 eV 271 keV @@ -129,14 +145,10 @@ Cut in energy AIR 990 eV 990 eV VACUUM 990 eV 990 eV =================================================== -/control/execute /afs/cern.ch/sw/geant4/stt/dev2/src/geant4/tests/test602/test602.in +/control/execute /afs/cern.ch/sw/geant4/stt/dev1/src/geant4/tests/test602/test602.in /control/verbose 1 /tracking/verbose 1 -# -# Initialize GEANT4 -# /run/initialize -# /gun/position 0. -1.5 0. /gun/direction 0. 1. 0. /gun/energy 1 GeV @@ -151,9 +163,8 @@ Start Run processing. ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -161,9 +172,8 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -171,9 +181,8 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -181,9 +190,8 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -191,9 +199,8 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -201,9 +208,8 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -211,9 +217,8 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -221,9 +226,8 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -231,9 +235,8 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation >>>>>>>> Primary direction: (0,1,0) ********************************************************************************************************* @@ -241,16 +244,10 @@ Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolu ********************************************************************************************************* Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 TBD1 initStep - 1 0 -15 0 1e+03 0 1e-09 1e-09 HALL Transportation - 2 0 4e+03 0 1e+03 0 4.01e+03 4.02e+03 OutOfWorld Transportation + 0 0 -15 0 1e+03 0 0 0 HALL initStep + 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation Run terminated. Run Summary Number of events processed : 10 - User=0.02s Real=0.03s Sys=0s -# -# Termination -# -exit - + User=0.01s Real=0.02s Sys=0.01s G4 kernel has come to Quit state. diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4DetectorConstruction.hh b/examples/extended/g3tog4/cltog4/include/G3toG4DetectorConstruction.hh index 44550ad01b..5181fd7c2c 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4DetectorConstruction.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4DetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4DetectorConstruction.hh,v 1.1.4.1 2001/06/28 19:07:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4DetectorConstruction.hh,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G3toG4DetectorConstruction_h #define G3toG4DetectorConstruction_h 1 diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4EventAction.hh b/examples/extended/g3tog4/cltog4/include/G3toG4EventAction.hh index 64cb55a77e..e4f3a5deb7 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4EventAction.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4EventAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4EventAction.hh,v 1.1.4.1 2001/06/28 19:07:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4EventAction.hh,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4EventActionMessenger.hh b/examples/extended/g3tog4/cltog4/include/G3toG4EventActionMessenger.hh index bdacf5a1bb..66caf9b0db 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4EventActionMessenger.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4EventActionMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4EventActionMessenger.hh,v 1.1.4.1 2001/06/28 19:07:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4EventActionMessenger.hh,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4PhysicsList.hh b/examples/extended/g3tog4/cltog4/include/G3toG4PhysicsList.hh index e4450bc83a..21dea7ecdb 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4PhysicsList.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4PhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4PhysicsList.hh,v 1.1.4.1 2001/06/28 19:07:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4PhysicsList.hh,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4PrimaryGeneratorAction.hh b/examples/extended/g3tog4/cltog4/include/G3toG4PrimaryGeneratorAction.hh index 3b800d5ce2..da18c7afb0 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4PrimaryGeneratorAction.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4PrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4PrimaryGeneratorAction.hh,v 1.1.4.1 2001/06/28 19:07:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4PrimaryGeneratorAction.hh,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G3toG4PrimaryGeneratorAction_h diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4RunAction.hh b/examples/extended/g3tog4/cltog4/include/G3toG4RunAction.hh index 53331793f7..3e1263a827 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4RunAction.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4RunAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4RunAction.hh,v 1.1.4.1 2001/06/28 19:07:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4RunAction.hh,v 1.2 2001/07/11 09:58:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G3toG4RunAction_h diff --git a/examples/extended/g3tog4/cltog4/include/G3toG4VisManager.hh b/examples/extended/g3tog4/cltog4/include/G3toG4VisManager.hh index c44c588c27..e4aa2cf0da 100644 --- a/examples/extended/g3tog4/cltog4/include/G3toG4VisManager.hh +++ b/examples/extended/g3tog4/cltog4/include/G3toG4VisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4VisManager.hh,v 1.1.4.1 2001/06/28 19:07:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4VisManager.hh,v 1.2 2001/07/11 09:58:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4DetectorConstruction.cc b/examples/extended/g3tog4/cltog4/src/G3toG4DetectorConstruction.cc index d6e50c68f1..3b5b096463 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4DetectorConstruction.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4DetectorConstruction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4DetectorConstruction.cc,v 1.1.4.1 2001/06/28 19:07:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4DetectorConstruction.cc,v 1.2 2001/07/11 09:58:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //-------------------------------------------------------------------------- // G3toG4DetectorConstruction. Most the work is Done in diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4EventAction.cc b/examples/extended/g3tog4/cltog4/src/G3toG4EventAction.cc index c0e0ef10af..c2b53b6be6 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4EventAction.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4EventAction.cc @@ -21,15 +21,14 @@ // ******************************************************************** // // -// $Id: G3toG4EventAction.cc,v 1.1.4.1 2001/06/28 19:07:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4EventAction.cc,v 1.3 2001/10/23 13:32:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -#include "g4rw/tvordvec.h" #include "G4ios.hh" #include "G3toG4EventAction.hh" #include "G3toG4EventActionMessenger.hh" diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4EventActionMessenger.cc b/examples/extended/g3tog4/cltog4/src/G3toG4EventActionMessenger.cc index 1eb33a23fa..250516e87c 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4EventActionMessenger.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4EventActionMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4EventActionMessenger.cc,v 1.1.4.1 2001/06/28 19:07:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4EventActionMessenger.cc,v 1.2 2001/07/11 09:58:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4PhysicsList.cc b/examples/extended/g3tog4/cltog4/src/G3toG4PhysicsList.cc index c92dc4debe..355a0fb52b 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4PhysicsList.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4PhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4PhysicsList.cc,v 1.1.4.1 2001/06/28 19:07:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4PhysicsList.cc,v 1.2 2001/07/11 09:58:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4PrimaryGeneratorAction.cc b/examples/extended/g3tog4/cltog4/src/G3toG4PrimaryGeneratorAction.cc index 641e0a3a26..95d57d5a79 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4PrimaryGeneratorAction.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4PrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4PrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:07:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4PrimaryGeneratorAction.cc,v 1.3 2001/07/11 09:58:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "globals.hh" diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4RunAction.cc b/examples/extended/g3tog4/cltog4/src/G3toG4RunAction.cc index 9acace5881..81ff55d10a 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4RunAction.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4RunAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4RunAction.cc,v 1.1.4.1 2001/06/28 19:07:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4RunAction.cc,v 1.2 2001/07/11 09:58:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4ios.hh" diff --git a/examples/extended/g3tog4/cltog4/src/G3toG4VisManager.cc b/examples/extended/g3tog4/cltog4/src/G3toG4VisManager.cc index 65f4217355..afb91a1a8a 100644 --- a/examples/extended/g3tog4/cltog4/src/G3toG4VisManager.cc +++ b/examples/extended/g3tog4/cltog4/src/G3toG4VisManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4VisManager.cc,v 1.1.4.1 2001/06/28 19:07:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4VisManager.cc,v 1.4 2001/11/15 13:09:41 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. @@ -37,14 +37,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -73,20 +80,11 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYX -#include "G4RayX.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... G3toG4VisManager::G3toG4VisManager () {} @@ -95,14 +93,21 @@ G3toG4VisManager::G3toG4VisManager () {} void G3toG4VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -131,20 +136,11 @@ void G3toG4VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYX - RegisterGraphicsSystem (new G4RayX); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." diff --git a/examples/extended/persistency/PersistentEx01/PersistentEx01.cc b/examples/extended/persistency/PersistentEx01/PersistentEx01.cc index fb7ce8a44c..fa7ed6bf62 100644 --- a/examples/extended/persistency/PersistentEx01/PersistentEx01.cc +++ b/examples/extended/persistency/PersistentEx01/PersistentEx01.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersistentEx01.cc,v 1.5.4.2 2001/06/28 20:18:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersistentEx01.cc,v 1.6 2001/07/11 09:58:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/persistency/PersistentEx01/PersistentEx01.out b/examples/extended/persistency/PersistentEx01/PersistentEx01.out index 817a307b92..ecdfb77c5b 100644 --- a/examples/extended/persistency/PersistentEx01/PersistentEx01.out +++ b/examples/extended/persistency/PersistentEx01/PersistentEx01.out @@ -14,7 +14,7 @@ OO_FD_BOOT is set to /afs/cern.ch/sw/geant4/stt/dev2/SUN-CC/debug_NONISO/example Opening federated database OO_FD_BOOT. ********************************************** - Geant4 version $Name: PersistentEx01-V03-01-00 $ + Geant4 version $Name: geant4-04-00 $ (06-Apr-2001) Copyright : Geant4 Collaboration ********************************************** diff --git a/examples/extended/persistency/PersistentEx01/g4odbms_setup.csh b/examples/extended/persistency/PersistentEx01/g4odbms_setup.csh index c4eaf51c73..bef72c932d 100644 --- a/examples/extended/persistency/PersistentEx01/g4odbms_setup.csh +++ b/examples/extended/persistency/PersistentEx01/g4odbms_setup.csh @@ -19,17 +19,17 @@ if( ! $?LHCXXTOP ) then endif switch ($G4SYSTEM) - case SUN-CC5: + case SUN-CC: setenv PLATF sol7 setenv CC_COMP CC-5.2 setenv OBJY_VERS 6.1.3 - setenv HEP_ODBMS_VER 0.3.2.10 + setenv HEP_ODBMS_VER 0.3.3.1 breaksw case Linux-g++: setenv PLATF @sys setenv CC_COMP gcc-2.95.2 - setenv OBJY_VERS 6.0 - setenv HEP_ODBMS_VER 0.3.2.3 + setenv OBJY_VERS 6.1.3 + setenv HEP_ODBMS_VER 0.3.3.1 breaksw default: echo "Objectivity and HepODBMS versions not specified for G4SYSTEM = $G4SYSTEM." diff --git a/examples/extended/persistency/PersistentEx01/g4odbms_setup.sh b/examples/extended/persistency/PersistentEx01/g4odbms_setup.sh index f9004fb7db..58039417d7 100644 --- a/examples/extended/persistency/PersistentEx01/g4odbms_setup.sh +++ b/examples/extended/persistency/PersistentEx01/g4odbms_setup.sh @@ -20,17 +20,17 @@ fi export CC_COMP="" case $G4SYSTEM in -SUN-CC5) +SUN-CC) export PLATF=sol7 export CC_COMP=CC-5.2/ export OBJY_VERS=6.1.3 - export HEP_ODBMS_VER=0.3.2.10 + export HEP_ODBMS_VER=0.3.3.1 ;; Linux-g++) export PLATF=@sys export CC_COMP=gcc-2.95.2/ - export OBJY_VERS=6.0 - export HEP_ODBMS_VER=0.3.2.3 + export OBJY_VERS=6.1.3 + export HEP_ODBMS_VER=0.3.3.1 ;; default) echo "Objectivity and HepODBMS versions not specified for G4SYSTEM = $G4SYSTEM." diff --git a/examples/extended/persistency/PersistentEx01/include/PersEx01PhysicsList.hh b/examples/extended/persistency/PersistentEx01/include/PersEx01PhysicsList.hh index 9ddac45f1b..9560567abc 100644 --- a/examples/extended/persistency/PersistentEx01/include/PersEx01PhysicsList.hh +++ b/examples/extended/persistency/PersistentEx01/include/PersEx01PhysicsList.hh @@ -20,7 +20,7 @@ // * statement, and all its terms. * // ******************************************************************** // -// $Id: PersEx01PhysicsList.hh,v 1.2.10.1 2001/06/28 19:07:21 gunter Exp $ +// $Id: PersEx01PhysicsList.hh,v 1.3 2001/07/11 09:58:12 gunter Exp $ // ------------------------------------------------------------ // GEANT 4 class header file // diff --git a/examples/extended/persistency/PersistentEx01/src/PersEx01PhysicsList.cc b/examples/extended/persistency/PersistentEx01/src/PersEx01PhysicsList.cc index 3eaf392b84..a9b7c0a3f3 100644 --- a/examples/extended/persistency/PersistentEx01/src/PersEx01PhysicsList.cc +++ b/examples/extended/persistency/PersistentEx01/src/PersEx01PhysicsList.cc @@ -20,7 +20,7 @@ // * statement, and all its terms. * // ******************************************************************** // -// $Id: PersEx01PhysicsList.cc,v 1.3.4.1 2001/06/28 19:07:22 gunter Exp $ +// $Id: PersEx01PhysicsList.cc,v 1.4 2001/07/11 09:58:13 gunter Exp $ // ------------------------------------------------------------ // GEANT 4 class header file // diff --git a/examples/extended/persistency/PersistentEx02/PersistentEx02.cc b/examples/extended/persistency/PersistentEx02/PersistentEx02.cc index 2f682c0701..b8353cc46f 100644 --- a/examples/extended/persistency/PersistentEx02/PersistentEx02.cc +++ b/examples/extended/persistency/PersistentEx02/PersistentEx02.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersistentEx02.cc,v 1.3.4.2 2001/06/28 20:18:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersistentEx02.cc,v 1.4 2001/07/11 09:58:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/persistency/PersistentEx02/PersistentEx02.out b/examples/extended/persistency/PersistentEx02/PersistentEx02.out index d7476ac354..91c4e4087f 100644 --- a/examples/extended/persistency/PersistentEx02/PersistentEx02.out +++ b/examples/extended/persistency/PersistentEx02/PersistentEx02.out @@ -14,7 +14,7 @@ OO_FD_BOOT is set to /afs/cern.ch/sw/geant4/stt/dev2/SUN-CC/debug_NONISO/example Opening federated database OO_FD_BOOT. ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ + Geant4 version $Name: geant4-04-00 $ (06-Apr-2001) Copyright : Geant4 Collaboration ********************************************** diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02DetectorConstruction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02DetectorConstruction.hh index 1f30606a0d..dd22b0362c 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02DetectorConstruction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02DetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02DetectorConstruction.hh,v 1.3.8.1 2001/06/28 19:07:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02DetectorConstruction.hh,v 1.4 2001/07/11 09:58:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef PersEx02DetectorConstruction_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02EventAction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02EventAction.hh index f2819a8b7b..b9366fc497 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02EventAction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02EventAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02EventAction.hh,v 1.3.8.1 2001/06/28 19:07:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02EventAction.hh,v 1.4 2001/07/11 09:58:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02PhysicsList.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02PhysicsList.hh index 300a34720b..b9846fa259 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02PhysicsList.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02PhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02PhysicsList.hh,v 1.3.8.1 2001/06/28 19:07:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02PhysicsList.hh,v 1.4 2001/07/11 09:58:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef PersEx02PhysicsList_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02PrimaryGeneratorAction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02PrimaryGeneratorAction.hh index 03ea3178a0..9416f86c82 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02PrimaryGeneratorAction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02PrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02PrimaryGeneratorAction.hh,v 1.3.8.1 2001/06/28 19:07:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02PrimaryGeneratorAction.hh,v 1.4 2001/07/11 09:58:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef PersEx02PrimaryGeneratorAction_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02RunAction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02RunAction.hh index c2c328fca2..99b7948cc9 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02RunAction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02RunAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02RunAction.hh,v 1.3.8.1 2001/06/28 19:07:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02RunAction.hh,v 1.4 2001/07/11 09:58:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef PersEx02RunAction_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02StackingAction.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02StackingAction.hh index 3d2e7dadd2..bb76950658 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02StackingAction.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02StackingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02StackingAction.hh,v 1.2.8.1 2001/06/28 19:07:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02StackingAction.hh,v 1.3 2001/07/11 09:58:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef PersEx02StackingAction_H diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHit.ddl b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHit.ddl index 45a974d82e..685d15ef52 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHit.ddl +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHit.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02TrackerHit.ddl,v 1.4.8.1 2001/06/28 19:07:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02TrackerHit.ddl,v 1.5 2001/07/11 09:58:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef PersEx02TrackerHit_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHitsCollection.ddl b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHitsCollection.ddl index 0b8364ace6..afbde1d96b 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHitsCollection.ddl +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerHitsCollection.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02TrackerHitsCollection.ddl,v 1.3.8.1 2001/06/28 19:07:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02TrackerHitsCollection.ddl,v 1.4 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef PersEx02TrackerHitsCollection_h diff --git a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerSD.hh b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerSD.hh index 9657a821ff..ab8eb521fe 100644 --- a/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerSD.hh +++ b/examples/extended/persistency/PersistentEx02/include/PersEx02TrackerSD.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02TrackerSD.hh,v 1.3.8.1 2001/06/28 19:07:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02TrackerSD.hh,v 1.4 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef PersEx02TrackerSD_h diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02DetectorConstruction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02DetectorConstruction.cc index 0d25d23158..6437c4d35e 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02DetectorConstruction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02DetectorConstruction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02DetectorConstruction.cc,v 1.4.4.1 2001/06/28 19:07:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02DetectorConstruction.cc,v 1.5 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "PersEx02DetectorConstruction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02EventAction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02EventAction.cc index bff59518f6..bbcdbd16e1 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02EventAction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02EventAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02EventAction.cc,v 1.5.2.1 2001/06/28 19:07:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02EventAction.cc,v 1.6 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "PersEx02EventAction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02PhysicsList.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02PhysicsList.cc index 53e0a3ec54..d522bfd27a 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02PhysicsList.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02PhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02PhysicsList.cc,v 1.4.4.1 2001/06/28 19:07:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02PhysicsList.cc,v 1.5 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "globals.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02PrimaryGeneratorAction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02PrimaryGeneratorAction.cc index 4f0073648f..e7bf5d7006 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02PrimaryGeneratorAction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02PrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02PrimaryGeneratorAction.cc,v 1.3.8.1 2001/06/28 19:07:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02PrimaryGeneratorAction.cc,v 1.4 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "PersEx02PrimaryGeneratorAction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02RunAction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02RunAction.cc index e8f40c4aee..c1969040df 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02RunAction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02RunAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02RunAction.cc,v 1.3.8.1 2001/06/28 19:07:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02RunAction.cc,v 1.4 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "PersEx02RunAction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02StackingAction.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02StackingAction.cc index 7621e40306..92c9bca7c6 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02StackingAction.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02StackingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02StackingAction.cc,v 1.2.8.1 2001/06/28 19:07:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02StackingAction.cc,v 1.3 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "PersEx02StackingAction.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHit.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHit.cc index 57244e9fea..a97905f42b 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHit.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02TrackerHit.cc,v 1.3.8.1 2001/06/28 19:07:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02TrackerHit.cc,v 1.4 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "PersEx02TrackerHit.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHitsCollection.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHitsCollection.cc index 8e29515d15..5975871605 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHitsCollection.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerHitsCollection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02TrackerHitsCollection.cc,v 1.3.8.1 2001/06/28 19:07:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02TrackerHitsCollection.cc,v 1.4 2001/07/11 09:58:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "PersEx02TrackerHitsCollection.hh" diff --git a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerSD.cc b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerSD.cc index 6ec7f4ad8d..2df6cb1079 100644 --- a/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerSD.cc +++ b/examples/extended/persistency/PersistentEx02/src/PersEx02TrackerSD.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: PersEx02TrackerSD.cc,v 1.5.2.1 2001/06/28 19:07:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: PersEx02TrackerSD.cc,v 1.6 2001/07/11 09:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include diff --git a/examples/novice/N01/exampleN01.cc b/examples/novice/N01/exampleN01.cc index a5b6b02043..3c7a6730ad 100644 --- a/examples/novice/N01/exampleN01.cc +++ b/examples/novice/N01/exampleN01.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: exampleN01.cc,v 1.2.4.2 2001/06/28 20:18:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: exampleN01.cc,v 1.3 2001/07/11 09:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N01/exampleN01.out b/examples/novice/N01/exampleN01.out index 627d319465..0fe926eb01 100644 --- a/examples/novice/N01/exampleN01.out +++ b/examples/novice/N01/exampleN01.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** Start Run processing. @@ -193,5 +193,5 @@ Terminate current event processing. Run terminated. Run Summary Number of events processed : 3 - User=0.04s Real=0.06s Sys=0s + User=0.02s Real=0.06s Sys=0.04s G4 kernel has come to Quit state. diff --git a/examples/novice/N01/include/ExN01DetectorConstruction.hh b/examples/novice/N01/include/ExN01DetectorConstruction.hh index 0e6597aae0..40d3ab9d01 100644 --- a/examples/novice/N01/include/ExN01DetectorConstruction.hh +++ b/examples/novice/N01/include/ExN01DetectorConstruction.hh @@ -21,13 +21,14 @@ // ******************************************************************** // // -// $Id: ExN01DetectorConstruction.hh,v 1.2.4.1 2001/06/28 19:07:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN01DetectorConstruction.hh,v 1.4 2001/11/05 08:24:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN01DetectorConstruction_H #define ExN01DetectorConstruction_H 1 +class G4LogicalVolume; class G4VPhysicalVolume; #include "G4VUserDetectorConstruction.hh" @@ -35,12 +36,27 @@ class G4VPhysicalVolume; class ExN01DetectorConstruction : public G4VUserDetectorConstruction { public: + ExN01DetectorConstruction(); ~ExN01DetectorConstruction(); - public: - G4VPhysicalVolume* Construct(); + G4VPhysicalVolume* Construct(); + private: + + // Logical volumes + // + G4LogicalVolume* experimentalHall_log; + G4LogicalVolume* tracker_log; + G4LogicalVolume* calorimeterBlock_log; + G4LogicalVolume* calorimeterLayer_log; + + // Physical volumes + // + G4VPhysicalVolume* experimentalHall_phys; + G4VPhysicalVolume* calorimeterLayer_phys; + G4VPhysicalVolume* calorimeterBlock_phys; + G4VPhysicalVolume* tracker_phys; }; #endif diff --git a/examples/novice/N01/include/ExN01PhysicsList.hh b/examples/novice/N01/include/ExN01PhysicsList.hh index 06f1cf7e6d..ad55e21fe3 100644 --- a/examples/novice/N01/include/ExN01PhysicsList.hh +++ b/examples/novice/N01/include/ExN01PhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN01PhysicsList.hh,v 1.3.4.1 2001/06/28 19:07:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN01PhysicsList.hh,v 1.4 2001/07/11 09:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh b/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh index c27746c8b1..83833a6c76 100644 --- a/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh +++ b/examples/novice/N01/include/ExN01PrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN01PrimaryGeneratorAction.hh,v 1.2.4.1 2001/06/28 19:07:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN01PrimaryGeneratorAction.hh,v 1.3 2001/07/11 09:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN01PrimaryGeneratorAction_h diff --git a/examples/novice/N01/src/ExN01DetectorConstruction.cc b/examples/novice/N01/src/ExN01DetectorConstruction.cc index 87adbd78c5..0bd45a236d 100644 --- a/examples/novice/N01/src/ExN01DetectorConstruction.cc +++ b/examples/novice/N01/src/ExN01DetectorConstruction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN01DetectorConstruction.cc,v 1.2.4.1 2001/06/28 19:07:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN01DetectorConstruction.cc,v 1.4 2001/11/05 08:24:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN01DetectorConstruction.hh" @@ -36,10 +36,23 @@ #include "globals.hh" ExN01DetectorConstruction::ExN01DetectorConstruction() + : experimentalHall_log(0), tracker_log(0), + calorimeterBlock_log(0), calorimeterLayer_log(0), + experimentalHall_phys(0), calorimeterLayer_phys(0), + calorimeterBlock_phys(0), tracker_phys(0) {;} ExN01DetectorConstruction::~ExN01DetectorConstruction() -{;} +{ + delete calorimeterLayer_log; + delete calorimeterBlock_log; + delete tracker_log; + delete experimentalHall_log; + delete tracker_phys; + delete calorimeterBlock_phys; + delete calorimeterLayer_phys; + delete experimentalHall_phys; +} G4VPhysicalVolume* ExN01DetectorConstruction::Construct() { @@ -73,11 +86,10 @@ G4VPhysicalVolume* ExN01DetectorConstruction::Construct() G4double expHall_z = 1.0*m; G4Box* experimentalHall_box = new G4Box("expHall_box",expHall_x,expHall_y,expHall_z); - G4LogicalVolume* experimentalHall_log - = new G4LogicalVolume(experimentalHall_box,Ar,"expHall_log",0,0,0); - G4VPhysicalVolume* experimentalHall_phys - = new G4PVPlacement(0,G4ThreeVector(),"expHall", - experimentalHall_log,0,false,0); + experimentalHall_log = new G4LogicalVolume(experimentalHall_box, + Ar,"expHall_log",0,0,0); + experimentalHall_phys = new G4PVPlacement(0,G4ThreeVector(),"expHall", + experimentalHall_log,0,false,0); //------------------------------ a tracker tube @@ -86,17 +98,14 @@ G4VPhysicalVolume* ExN01DetectorConstruction::Construct() G4double hightOfTheTube = 50.*cm; G4double startAngleOfTheTube = 0.*deg; G4double spanningAngleOfTheTube = 360.*deg; - G4Tubs* tracker_tube - = new G4Tubs("tracker_tube",innerRadiusOfTheTube, - outerRadiusOfTheTube,hightOfTheTube, - startAngleOfTheTube,spanningAngleOfTheTube); - G4LogicalVolume* tracker_log - = new G4LogicalVolume(tracker_tube,Al,"tracker_log",0,0,0); + G4Tubs* tracker_tube = new G4Tubs("tracker_tube",innerRadiusOfTheTube, + outerRadiusOfTheTube,hightOfTheTube, + startAngleOfTheTube,spanningAngleOfTheTube); + tracker_log = new G4LogicalVolume(tracker_tube,Al,"tracker_log",0,0,0); G4double trackerPos_x = -1.0*m; G4double trackerPos_y = 0.*m; G4double trackerPos_z = 0.*m; - G4VPhysicalVolume* tracker_phys - = new G4PVPlacement(0, + tracker_phys = new G4PVPlacement(0, G4ThreeVector(trackerPos_x,trackerPos_y,trackerPos_z), tracker_log,"tracker",experimentalHall_log,false,0); @@ -105,15 +114,14 @@ G4VPhysicalVolume* ExN01DetectorConstruction::Construct() G4double block_x = 1.0*m; G4double block_y = 50.0*cm; G4double block_z = 50.0*cm; - G4Box* calorimeterBlock_box - = new G4Box("calBlock_box",block_x,block_y,block_z); - G4LogicalVolume* calorimeterBlock_log - = new G4LogicalVolume(calorimeterBlock_box,Pb,"caloBlock_log",0,0,0); + G4Box* calorimeterBlock_box = new G4Box("calBlock_box",block_x, + block_y,block_z); + calorimeterBlock_log = new G4LogicalVolume(calorimeterBlock_box, + Pb,"caloBlock_log",0,0,0); G4double blockPos_x = 1.0*m; G4double blockPos_y = 0.0*m; G4double blockPos_z = 0.0*m; - G4VPhysicalVolume* calorimeterBlock_phys - = new G4PVPlacement(0, + calorimeterBlock_phys = new G4PVPlacement(0, G4ThreeVector(blockPos_x,blockPos_y,blockPos_z), calorimeterBlock_log,"caloBlock",experimentalHall_log,false,0); @@ -122,17 +130,16 @@ G4VPhysicalVolume* ExN01DetectorConstruction::Construct() G4double calo_x = 1.*cm; G4double calo_y = 40.*cm; G4double calo_z = 40.*cm; - G4Box* calorimeterLayer_box - = new G4Box("caloLayer_box",calo_x,calo_y,calo_z); - G4LogicalVolume* calorimeterLayer_log - = new G4LogicalVolume(calorimeterLayer_box,Al,"caloLayer_log",0,0,0); + G4Box* calorimeterLayer_box = new G4Box("caloLayer_box", + calo_x,calo_y,calo_z); + calorimeterLayer_log = new G4LogicalVolume(calorimeterLayer_box, + Al,"caloLayer_log",0,0,0); for(G4int i=0;i<19;i++) // loop for 19 layers { G4double caloPos_x = (i-9)*10.*cm; G4double caloPos_y = 0.0*m; G4double caloPos_z = 0.0*m; - G4VPhysicalVolume* calorimeterLayer_phys - = new G4PVPlacement(0, + calorimeterLayer_phys = new G4PVPlacement(0, G4ThreeVector(caloPos_x,caloPos_y,caloPos_z), calorimeterLayer_log,"caloLayer",calorimeterBlock_log,false,i); } diff --git a/examples/novice/N01/src/ExN01PhysicsList.cc b/examples/novice/N01/src/ExN01PhysicsList.cc index 39c2fe8a56..cdc42918d9 100644 --- a/examples/novice/N01/src/ExN01PhysicsList.cc +++ b/examples/novice/N01/src/ExN01PhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN01PhysicsList.cc,v 1.3.4.1 2001/06/28 19:07:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN01PhysicsList.cc,v 1.4 2001/07/11 09:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc b/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc index 6815f5da6c..d5fc8ccef6 100644 --- a/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc +++ b/examples/novice/N01/src/ExN01PrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN01PrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:07:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN01PrimaryGeneratorAction.cc,v 1.3 2001/07/11 09:58:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN01PrimaryGeneratorAction.hh" diff --git a/examples/novice/N02/History b/examples/novice/N02/History index afec2be05d..636f621488 100644 --- a/examples/novice/N02/History +++ b/examples/novice/N02/History @@ -1,4 +1,4 @@ -$Id: History,v 1.17 2001/02/20 11:57:29 stesting Exp $ +$Id: History,v 1.24 2001/11/27 15:52:53 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,29 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +27-11-01 mma (exampleN02-V03-02-04) +- vis.mac: /vis/viewer/set/viewpointThetaPhi + +19-11-01 John (exampleN02-V03-02-03) +- Updated ExN02VisManager.cc for new graphics systems and defaults. + +07-11-01 Satoshi (exampleN02-V03-02-02) +- vis.mac: /vis/viewer/refresh + /vis/viewer/update is replaced + with their equivalent command /vis/viewer/flush. + +24-10-01 mma (exampleN02-V03-02-01) +- initInter.mac renamed vis.mac + +19-10-01 Steve O'Neale (examples-V03-02-00) +- Update reference output + +11-10-01 mma (exampleN02-V03-02-00) +- adapted to new visualisation commands (initInter and EventAction) +- 80 columns max everywhere + +12-07-01 mma +- DetectorMessenger: setField, help: magnetic field in X dirction 20-02-01 S.O'Neale (exampleN02-V03-00-03) update reference outputs following materials-V03-00-04 (tagset 268) diff --git a/examples/novice/N02/README b/examples/novice/N02/README index 16eff4cc5c..13533467ce 100644 --- a/examples/novice/N02/README +++ b/examples/novice/N02/README @@ -1,4 +1,4 @@ -$Id: README,v 1.4 2000/12/04 16:24:03 maire Exp $ +$Id: README,v 1.5 2001/10/24 12:20:42 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -98,11 +98,11 @@ $Id: README,v 1.4 2000/12/04 16:24:03 maire Exp $ 5- VISUALIZATION The Visualization Manager is set in the main(). - The initialisation of the drawing is done via a set of /vis commands - in the macro initInter.mac. This macro is automatically read from - the main in case of interactive running mode. + The initialisation of the drawing is done via a set of /vis/ commands + in the macro vis.mac. This macro is automatically read from + the main when running in interactive mode. - The tracks are automatically drawn at the end of event, and erased at + The tracks are automatically drawn at the end of event and erased at the beginning of the next run. The visualization (with OpenGL driver) assumes two things: diff --git a/examples/novice/N02/exampleN02.cc b/examples/novice/N02/exampleN02.cc index 494e84306d..a95114a86d 100644 --- a/examples/novice/N02/exampleN02.cc +++ b/examples/novice/N02/exampleN02.cc @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: exampleN02.cc,v 1.4.4.1 2001/06/28 19:07:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: exampleN02.cc,v 1.7 2001/10/24 12:20:42 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02DetectorConstruction.hh" #include "ExN02PhysicsList.hh" @@ -45,7 +45,7 @@ #include "ExN02VisManager.hh" #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int main(int argc,char** argv) { @@ -89,7 +89,7 @@ int main(int argc,char** argv) { session = new G4UIterminal(); #endif - UI->ApplyCommand("/control/execute initInter.mac"); + UI->ApplyCommand("/control/execute vis.mac"); session->SessionStart(); delete session; } @@ -109,5 +109,5 @@ int main(int argc,char** argv) { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/exampleN02.large_N.out b/examples/novice/N02/exampleN02.large_N.out index 64f0c6466b..02585274f4 100644 --- a/examples/novice/N02/exampleN02.large_N.out +++ b/examples/novice/N02/exampleN02.large_N.out @@ -1,5 +1,5 @@ ********************************************** - Geant4 version $Name: geant4-03-00-ref-03 $ + Geant4 version $Name: geant4-04-00 $ (15-Dec-2000) Copyright : Geant4 Collaboration ********************************************** diff --git a/examples/novice/N02/exampleN02.out b/examples/novice/N02/exampleN02.out index 43f9be4103..1b543249aa 100644 --- a/examples/novice/N02/exampleN02.out +++ b/examples/novice/N02/exampleN02.out @@ -1,21 +1,31 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) The materials defined are : -***** Table : Nb of materials = 4 ***** +***** Table : Nb of materials = 3 ***** Material: Air density: 1.290 mg/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 285.161 m ---> Element: Nitrogen N Z = 7.0 N = 14.0 A = 14.01 g/mole fractionMass: 70.00 % Abundance 72.71 % ---> Element: Oxigen O Z = 8.0 N = 16.0 A = 16.00 g/mole fractionMass: 30.00 % Abundance 27.29 % - Material: Al density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm - ---> Element: Al Z = 13.0 N = 27.0 A = 26.98 g/mole fractionMass: 100.00 % Abundance 100.00 % - Material: Pb density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm ---> Element: Pb Z = 82.0 N = 207.2 A = 207.19 g/mole fractionMass: 100.00 % Abundance 100.00 % @@ -24,16 +34,16 @@ The materials defined are : Target is 5 cm of Pb -There are 5 chambers in the tracker region. The chambers are 2e+02 mm of XenonGas +There are 5 chambers in the tracker region. The chambers are 200 mm of XenonGas The distance between chamber is 80 cm conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z Sandia crossSection below 50 KeV @@ -42,55 +52,57 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. Good description from 1 KeV to 100 GeV. log scale extrapolation above 100 GeV Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. hIoni: Knock-on electron cross sections . Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuPairProd: theoretical cross sections Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- -Cut in range 1 cm 1 cm +Cut in range + Air 1 cm 1 cm + Pb 1 cm 1 cm + XenonGas 1 cm 1 cm Cut in energy Air 990 eV 8.07 keV - Al 20.5 keV 4.55 MeV Pb 282 keV 15 MeV XenonGas 2.47 keV 40.3 keV =================================================== @@ -101,1004 +113,2059 @@ Cut in energy ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 0 fm 0 fm -2.91 m 200 MeV 0 eV 0 fm 0 fm WorldPV initStep - 1 -32.2 mum -1.27 mum -2.86 m 200 MeV 7.67 keV 4.79 cm 4.79 cm WorldPV eIoni - 2 -185 mum 115 mum -2.45 m 200 MeV 94.7 keV 41.2 cm 46 cm WorldPV Transportation - 3 -173 mum 108 mum -2.45 m 191 MeV 5.63 MeV 682 mum 46.1 cm TargetPV eBrem - 4 -178 mum 107 mum -2.45 m 190 MeV 539 keV 277 mum 46.1 cm TargetPV eBrem - 5 -204 mum 116 mum -2.45 m 180 MeV 557 keV 363 mum 46.1 cm TargetPV eBrem - 6 -238 mum 116 mum -2.45 m 170 MeV 558 keV 379 mum 46.2 cm TargetPV eBrem - 7 -245 mum 115 mum -2.45 m 162 MeV 81.5 keV 72.9 mum 46.2 cm TargetPV eBrem - 8 -356 mum 35.1 mum -2.45 m 156 MeV 2.86 MeV 2.02 mm 46.4 cm TargetPV eBrem - 9 -389 mum 17.6 mum -2.45 m 155 MeV 378 keV 346 mum 46.4 cm TargetPV eBrem - 10 -461 mum -38.2 mum -2.45 m 153 MeV 1.18 MeV 796 mum 46.5 cm TargetPV eBrem - 11 -481 mum -47.1 mum -2.44 m 72.6 MeV 338 keV 261 mum 46.5 cm TargetPV eBrem - 12 -681 mum 409 nm -2.44 m 66.9 MeV 3.74 MeV 1.34 mm 46.7 cm TargetPV eBrem - 13 -944 mum -136 mum -2.44 m 64.7 MeV 1.21 MeV 1.06 mm 46.8 cm TargetPV eBrem - 14 -1.3 mm -269 mum -2.44 m 39.5 MeV 1.6 MeV 1.26 mm 46.9 cm TargetPV eBrem - 15 -1.63 mm -225 mum -2.44 m 30.4 MeV 1.86 MeV 1.24 mm 47 cm TargetPV eBrem - 16 -1.76 mm -261 mum -2.44 m 27 MeV 327 keV 268 mum 47 cm TargetPV eBrem - 17 -1.95 mm -507 mum -2.44 m 25.1 MeV 717 keV 661 mum 47.1 cm TargetPV eBrem - 18 -2.96 mm -2.38 mm -2.44 m 20.4 MeV 4.21 MeV 3.63 mm 47.5 cm TargetPV eBrem - 19 -3.06 mm -2.46 mm -2.44 m 15.7 MeV 386 keV 198 mum 47.5 cm TargetPV eBrem - 20 -3.98 mm -3.37 mm -2.44 m 11.9 MeV 1.65 MeV 1.49 mm 47.6 cm TargetPV eBrem - 21 -4.09 mm -3.43 mm -2.44 m 10.8 MeV 357 keV 307 mum 47.7 cm TargetPV eBrem - 22 -4.09 mm -3.43 mm -2.44 m 10.3 MeV 1.18 keV 3.07 mum 47.7 cm TargetPV eBrem - 23 -4.38 mm -3.33 mm -2.44 m 4.88 MeV 685 keV 388 mum 47.7 cm TargetPV eBrem - 24 -5.11 mm -3.02 mm -2.43 m 2.5 MeV 2.38 MeV 1.09 mm 47.8 cm TargetPV eIoni - 25 -5.23 mm -3.28 mm -2.43 m 1.85 MeV 654 keV 707 mum 47.9 cm TargetPV eIoni - 26 -5.46 mm -3.23 mm -2.43 m 1.33 MeV 513 keV 591 mum 47.9 cm TargetPV eIoni - 27 -5.31 mm -3.06 mm -2.43 m 932 keV 402 keV 493 mum 48 cm TargetPV eIoni - 28 -5.41 mm -3.18 mm -2.43 m 552 keV 380 keV 407 mum 48 cm TargetPV eIoni - 29 -5.41 mm -3.2 mm -2.43 m 0 eV 552 keV 296 mum 48.1 cm TargetPV eIoni - 30 -5.41 mm -3.2 mm -2.43 m 0 eV 0 eV 0 fm 48.1 cm TargetPV annihil + 0 0 fm 0 fm -2.91 m 200 MeV 0 eV 0 fm 0 fm World initStep + 1 -32.2 mum -1.27 mum -2.86 m 200 MeV 8.09 keV 4.79 cm 4.79 cm World eIoni + 2 -141 mum 113 mum -2.45 m 200 MeV 88.4 keV 41.2 cm 46 cm World Transportation + 3 -146 mum 127 mum -2.45 m 197 MeV 2.14 MeV 682 mum 46.1 cm Target eBrem + 4 -145 mum 125 mum -2.45 m 194 MeV 236 keV 190 mum 46.1 cm Target eBrem + 5 -142 mum 121 mum -2.45 m 190 MeV 201 keV 163 mum 46.1 cm Target eBrem + 6 -141 mum 121 mum -2.45 m 187 MeV 19 keV 16.7 mum 46.1 cm Target eBrem + 7 -144 mum 106 mum -2.45 m 179 MeV 439 keV 419 mum 46.1 cm Target eBrem + 8 -216 mum 86.5 mum -2.45 m 173 MeV 2.23 MeV 1.87 mm 46.3 cm Target eBrem + 9 -235 mum 70.6 mum -2.45 m 143 MeV 600 keV 487 mum 46.4 cm Target eBrem + 10 -374 mum -21.8 mum -2.44 m 125 MeV 1.99 MeV 1.7 mm 46.6 cm Target eBrem + 11 -385 mum -26.8 mum -2.44 m 124 MeV 201 keV 135 mum 46.6 cm Target eBrem + 12 -389 mum -30.1 mum -2.44 m 75.9 MeV 78 keV 54.2 mum 46.6 cm Target eBrem + 13 -469 mum -52 mum -2.44 m 71.5 MeV 830 keV 677 mum 46.6 cm Target eBrem + 14 -531 mum -247 mum -2.44 m 67.4 MeV 2.31 MeV 1.34 mm 46.8 cm Target eBrem + 15 -557 mum -249 mum -2.44 m 60.9 MeV 489 keV 451 mum 46.8 cm Target eBrem + 16 -730 mum -369 mum -2.44 m 57.7 MeV 1.22 MeV 1.11 mm 46.9 cm Target eBrem + 17 -741 mum -374 mum -2.44 m 56.4 MeV 164 keV 162 mum 46.9 cm Target eBrem + 18 -1.01 mm -406 mum -2.44 m 53.5 MeV 2.58 MeV 1.44 mm 47.1 cm Target eBrem + 19 -1.06 mm -431 mum -2.44 m 52.7 MeV 515 keV 451 mum 47.1 cm Target eBrem + 20 -1.07 mm -436 mum -2.44 m 48 MeV 206 keV 198 mum 47.2 cm Target eBrem + 21 -950 mum -393 mum -2.44 m 14.3 MeV 3.18 MeV 2.1 mm 47.4 cm Target eBrem + 22 -990 mum -591 mum -2.44 m 13 MeV 880 keV 903 mum 47.5 cm Target eBrem + 23 -1.98 mm -411 mum -2.43 m 10.6 MeV 2.37 MeV 2.28 mm 47.7 cm Target eIoni + 24 -1.84 mm -617 mum -2.43 m 9.13 MeV 664 keV 551 mum 47.7 cm Target eBrem + 25 -1.77 mm -992 mum -2.43 m 4.66 MeV 411 keV 419 mum 47.8 cm Target eBrem + 26 -1.75 mm -1.06 mm -2.43 m 2.83 MeV 85.8 keV 73.9 mum 47.8 cm Target eBrem + 27 -1.33 mm -1.24 mm -2.43 m 2.04 MeV 491 keV 519 mum 47.8 cm Target eBrem + 28 -1.42 mm -1.44 mm -2.43 m 1.35 MeV 684 keV 626 mum 47.9 cm Target eIoni + 29 -1.22 mm -1.41 mm -2.43 m 823 keV 530 keV 497 mum 48 cm Target eIoni + 30 -1.2 mm -1.42 mm -2.43 m 475 keV 348 keV 380 mum 48 cm Target eIoni + 31 -1.23 mm -1.39 mm -2.43 m 179 keV 296 keV 262 mum 48 cm Target eIoni + 32 -1.23 mm -1.38 mm -2.43 m 0 eV 179 keV 65.5 mum 48 cm Target eIoni + 33 -1.23 mm -1.38 mm -2.43 m 0 eV 0 eV 0 fm 48 cm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 29, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.23 mm -1.38 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 1.52 cm -2.05 cm -2.44 m 308 keV 0 eV 2.53 cm 2.53 cm Target compt + 2 1.55 cm -2.07 cm -2.44 m 0 eV 88 keV 995 mum 2.63 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 31, Parent ID = 29 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.55 cm -2.07 cm -2.44 m 220 keV 0 eV 0 fm 0 fm Target initStep + 1 1.55 cm -2.07 cm -2.44 m 2.78e-11 eV 220 keV 94 mum 94 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 30, Parent ID = 29 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.52 cm -2.05 cm -2.44 m 203 keV 0 eV 0 fm 0 fm Target initStep + 1 1.52 cm -2.05 cm -2.44 m 0 eV 203 keV 83.2 mum 83.2 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 28, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.23 mm -1.38 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.61 mm -946 mum -2.43 m 331 keV 0 eV 578 mum 578 mum Target compt + 2 -2.28 mm -1.04 mm -2.43 m 0 eV 88 keV 740 mum 1.32 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 33, Parent ID = 28 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.28 mm -1.04 mm -2.43 m 243 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.28 mm -1.05 mm -2.43 m 0 eV 243 keV 109 mum 109 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 32, Parent ID = 28 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.61 mm -946 mum -2.43 m 180 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.61 mm -943 mum -2.43 m 0 eV 180 keV 69.3 mum 69.3 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 27, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.33 mm -1.24 mm -2.43 m 305 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.34 mm -3.14 mm -2.43 m 0 eV 88 keV 2.15 mm 2.15 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 34, Parent ID = 27 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.34 mm -3.14 mm -2.43 m 217 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.35 mm -3.14 mm -2.43 m 5.55e-11 eV 217 keV 92.1 mum 92.1 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 26, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.75 mm -1.06 mm -2.43 m 1.74 MeV 0 eV 0 fm 0 fm Target initStep + 1 7.73 mm -1.94 cm -2.44 m 1.6 MeV 0 eV 2.14 cm 2.14 cm Target compt + 2 7.75 mm -1.94 cm -2.44 m 699 keV 0 eV 52.4 mum 2.14 cm Target compt + 3 1.65 cm -1.92 cm -2.44 m 622 keV 0 eV 9.14 mm 3.06 cm Target compt + 4 1.78 cm -1.97 cm -2.44 m 431 keV 0 eV 1.49 mm 3.2 cm Target compt + 5 1.9 cm -1.9 cm -2.44 m 0 eV 88 keV 1.42 mm 3.35 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 39, Parent ID = 26 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.9 cm -1.9 cm -2.44 m 343 keV 0 eV 0 fm 0 fm Target initStep + 1 1.91 cm -1.9 cm -2.44 m 0 eV 343 keV 179 mum 179 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 38, Parent ID = 26 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.78 cm -1.97 cm -2.44 m 191 keV 0 eV 0 fm 0 fm Target initStep + 1 1.78 cm -1.97 cm -2.44 m 5.55e-11 eV 191 keV 75.8 mum 75.8 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 37, Parent ID = 26 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.65 cm -1.92 cm -2.44 m 77.4 keV 0 eV 0 fm 0 fm Target initStep + 1 1.65 cm -1.92 cm -2.44 m 1.39e-11 eV 77.4 keV 18.2 mum 18.2 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 36, Parent ID = 26 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 7.75 mm -1.94 cm -2.44 m 900 keV 0 eV 0 fm 0 fm Target initStep + 1 7.68 mm -1.95 cm -2.44 m 429 keV 472 keV 396 mum 396 mum Target eIoni + 2 7.67 mm -1.95 cm -2.44 m 1.67e-10 eV 429 keV 238 mum 635 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 35, Parent ID = 26 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 7.73 mm -1.94 cm -2.44 m 141 keV 0 eV 0 fm 0 fm Target initStep + 1 7.73 mm -1.94 cm -2.44 m 0 eV 141 keV 47.4 mum 47.4 mum Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 25, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -5.41 mm -3.2 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.68 mm 2.18 cm -2.44 m 0 eV 511 keV 2.54 cm 2.54 cm TargetPV phot + 0 -1.77 mm -992 mum -2.43 m 4.06 MeV 0 eV 0 fm 0 fm Target initStep + 1 8.75 mm -2.5 cm -2.43 m 4.06 MeV 0 eV 2.71 cm 2.71 cm Target Transportation + 2 5.03 cm -12 cm -2.4 m 4.06 MeV 0 eV 10.7 cm 13.4 cm World Transportation + 3 1.05 m -2.4 m -1.76 m 4.06 MeV 0 eV 2.57 m 2.7 m Tracker Transportation + 4 1.27 m -2.91 m -1.62 m 4.06 MeV 0 eV 57.5 cm 3.28 m OutOfWorld Transportation ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 24, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -5.41 mm -3.2 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -6.33 mm -1.16 cm -2.43 m 0 eV 511 keV 8.5 mm 8.5 mm TargetPV phot + 0 -1.84 mm -617 mum -2.43 m 787 keV 0 eV 0 fm 0 fm Target initStep + 1 33.5 mum -4.12 mm -2.43 m 205 keV 0 eV 5.11 mm 5.11 mm Target compt + 2 -66.3 mum -4.09 mm -2.43 m 0 eV 88 keV 165 mum 5.27 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 41, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -66.3 mum -4.09 mm -2.43 m 117 keV 0 eV 0 fm 0 fm Target initStep + 1 -67.2 mum -4.09 mm -2.43 m 0 eV 117 keV 35.2 mum 35.2 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 40, Parent ID = 24 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 33.5 mum -4.12 mm -2.43 m 583 keV 0 eV 0 fm 0 fm Target initStep + 1 74.3 mum -4.15 mm -2.43 m 210 keV 373 keV 307 mum 307 mum Target eIoni + 2 77.1 mum -4.15 mm -2.43 m 2.78e-11 eV 210 keV 87.5 mum 394 mum Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 23, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -4.38 mm -3.33 mm -2.44 m 4.74 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.03 cm 3.34 mm -2.42 m 660 keV 4.08 MeV 1.81 cm 1.81 cm TargetPV compt - 2 -9.94 mm 4.81 mm -2.42 m 0 eV 660 keV 1.52 mm 1.97 cm TargetPV phot + 0 -990 mum -591 mum -2.44 m 507 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.11 mm -64.4 mum -2.43 m 176 keV 0 eV 9.55 mm 9.55 mm Target compt + 2 -998 mum -125 mum -2.43 m 0 eV 88 keV 275 mum 9.82 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 23 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -998 mum -125 mum -2.43 m 88 keV 0 eV 0 fm 0 fm Target initStep + 1 -997 mum -125 mum -2.43 m 0 eV 88 keV 22.4 mum 22.4 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 42, Parent ID = 23 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.11 mm -64.4 mum -2.43 m 331 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.11 mm -63.4 mum -2.43 m 0 eV 331 keV 171 mum 171 mum Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 22, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -4.09 mm -3.43 mm -2.44 m 501 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -6.59 mm -2.36 mm -2.43 m 479 keV 21.3 keV 3.67 mm 3.67 mm TargetPV compt - 2 -9.82 mm -2.37 mm -2.43 m 387 keV 91.8 keV 4.72 mm 8.4 mm TargetPV compt - 3 -1.43 cm 4.64 mm -2.42 m 0 eV 387 keV 1.08 cm 1.92 cm TargetPV phot + 0 -950 mum -393 mum -2.44 m 30.5 MeV 0 eV 0 fm 0 fm Target initStep + 1 -963 mum -386 mum -2.44 m 0 eV 0 eV 151 mum 151 mum Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 45, Parent ID = 22 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -963 mum -386 mum -2.44 m 19.4 MeV 0 eV 0 fm 0 fm Target initStep + 1 -913 mum -187 mum -2.44 m 17.5 MeV 1.37 MeV 1.05 mm 1.05 mm Target eBrem + 2 -1.12 mm -169 mum -2.43 m 14.9 MeV 915 keV 667 mum 1.71 mm Target eBrem + 3 -1.13 mm -147 mum -2.43 m 14.3 MeV 141 keV 117 mum 1.83 mm Target eBrem + 4 -1.27 mm -6.1 mum -2.43 m 12.7 MeV 670 keV 564 mum 2.4 mm Target eBrem + 5 -1.4 mm 1.05 mm -2.43 m 10.1 MeV 2.54 MeV 2.24 mm 4.64 mm Target eIoni + 6 -1.14 mm 704 mum -2.43 m 7.46 MeV 812 keV 712 mum 5.35 mm Target eBrem + 7 -1.06 mm 614 mum -2.43 m 5.94 MeV 253 keV 212 mum 5.56 mm Target eBrem + 8 -758 mum 614 mum -2.43 m 4.45 MeV 583 keV 494 mum 6.05 mm Target eBrem + 9 -712 mum 607 mum -2.43 m 3.27 MeV 54.7 keV 64.4 mum 6.12 mm Target eBrem + 10 -725 mum 559 mum -2.43 m 2.47 MeV 792 keV 836 mum 6.95 mm Target eIoni + 11 -867 mum 574 mum -2.43 m 1.81 MeV 669 keV 703 mum 7.66 mm Target eIoni + 12 -1.06 mm 401 mum -2.43 m 1.31 MeV 497 keV 584 mum 8.24 mm Target eIoni + 13 -1.05 mm 559 mum -2.43 m 834 keV 476 keV 488 mum 8.73 mm Target eIoni + 14 -1.03 mm 661 mum -2.43 m 375 keV 459 keV 383 mum 9.11 mm Target eIoni + 15 -1.04 mm 667 mum -2.43 m 16.4 keV 359 keV 201 mum 9.31 mm Target eIoni + 16 -1.04 mm 667 mum -2.43 m 0 eV 16.4 keV 1.22 mum 9.31 mm Target eIoni + 17 -1.04 mm 667 mum -2.43 m 0 eV 0 eV 0 fm 9.31 mm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 55, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.04 mm 667 mum -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.28 mm -390 mum -2.43 m 0 eV 88 keV 1.09 mm 1.09 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 56, Parent ID = 55 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.28 mm -390 mum -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.27 mm -406 mum -2.43 m 54.1 keV 369 keV 235 mum 235 mum Target eIoni + 2 -1.27 mm -406 mum -2.43 m 1.39e-11 eV 54.1 keV 10.1 mum 245 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 54, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.04 mm 667 mum -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -852 mum 1.48 mm -2.43 m 0 eV 88 keV 836 mum 836 mum Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 57, Parent ID = 54 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -852 mum 1.48 mm -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -849 mum 1.49 mm -2.43 m 0 eV 423 keV 235 mum 235 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 53, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -712 mum 607 mum -2.43 m 1.13 MeV 0 eV 0 fm 0 fm Target initStep + 1 8.02 mm 1.71 mm -2.42 m 274 keV 0 eV 1.22 cm 1.22 cm Target compt + 2 8.07 mm 1.47 mm -2.42 m 0 eV 88 keV 324 mum 1.25 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 59, Parent ID = 53 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 8.07 mm 1.47 mm -2.42 m 186 keV 0 eV 0 fm 0 fm Target initStep + 1 8.07 mm 1.47 mm -2.42 m 0 eV 186 keV 73.1 mum 73.1 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 58, Parent ID = 53 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 8.02 mm 1.71 mm -2.42 m 859 keV 0 eV 0 fm 0 fm Target initStep + 1 8.1 mm 1.73 mm -2.42 m 348 keV 511 keV 386 mum 386 mum Target eIoni + 2 8.1 mm 1.73 mm -2.42 m 0 eV 348 keV 183 mum 569 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 52, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -758 mum 614 mum -2.43 m 899 keV 0 eV 0 fm 0 fm Target initStep + 1 2.1 cm 5.12 mm -2.42 m 0 eV 88 keV 2.64 cm 2.64 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 60, Parent ID = 52 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.1 cm 5.12 mm -2.42 m 811 keV 0 eV 0 fm 0 fm Target initStep + 1 2.1 cm 5.07 mm -2.42 m 459 keV 352 keV 375 mum 375 mum Target eIoni + 2 2.1 cm 5.05 mm -2.42 m 187 keV 272 keV 254 mum 629 mum Target eIoni + 3 2.1 cm 5.05 mm -2.42 m 0 eV 187 keV 73.6 mum 703 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 51, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.06 mm 614 mum -2.43 m 1.27 MeV 0 eV 0 fm 0 fm Target initStep + 1 -839 mum 526 mum -2.43 m 540 keV 0 eV 296 mum 296 mum Target compt + 2 -1.57 mm -5.74 mm -2.43 m 0 eV 88 keV 7.11 mm 7.4 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 62, Parent ID = 51 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.57 mm -5.74 mm -2.43 m 452 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.58 mm -5.74 mm -2.43 m 152 keV 300 keV 251 mum 251 mum Target eIoni + 2 -1.58 mm -5.74 mm -2.43 m 0 eV 152 keV 53.3 mum 304 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 61, Parent ID = 51 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -839 mum 526 mum -2.43 m 731 keV 0 eV 0 fm 0 fm Target initStep + 1 -796 mum 589 mum -2.43 m 360 keV 370 keV 353 mum 353 mum Target eIoni + 2 -795 mum 592 mum -2.43 m 0 eV 360 keV 192 mum 546 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 50, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.14 mm 704 mum -2.43 m 1.85 MeV 0 eV 0 fm 0 fm Target initStep + 1 1.59 mm -2.71 mm -2.43 m 422 keV 0 eV 5.52 mm 5.52 mm Target compt + 2 976 mum -2.9 mm -2.43 m 0 eV 88 keV 748 mum 6.26 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 64, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 976 mum -2.9 mm -2.43 m 334 keV 0 eV 0 fm 0 fm Target initStep + 1 968 mum -2.9 mm -2.43 m 0 eV 334 keV 173 mum 173 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 63, Parent ID = 50 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.59 mm -2.71 mm -2.43 m 1.43 MeV 0 eV 0 fm 0 fm Target initStep + 1 1.69 mm -2.65 mm -2.43 m 529 keV 299 keV 350 mum 350 mum Target eBrem + 2 1.69 mm -2.67 mm -2.43 m 80 keV 449 keV 286 mum 636 mum Target eIoni + 3 1.69 mm -2.68 mm -2.43 m 0 eV 80 keV 19.2 mum 655 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 65, Parent ID = 63 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.69 mm -2.65 mm -2.43 m 598 keV 0 eV 0 fm 0 fm Target initStep + 1 99.9 mum -5.06 mm -2.43 m 448 keV 0 eV 3.44 mm 3.44 mm Target compt + 2 1.05 mm -7.27 mm -2.43 m 186 keV 0 eV 3.74 mm 7.18 mm Target compt + 3 1.21 mm -7.19 mm -2.43 m 0 eV 88 keV 279 mum 7.46 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 68, Parent ID = 65 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.21 mm -7.19 mm -2.43 m 98.3 keV 0 eV 0 fm 0 fm Target initStep + 1 1.21 mm -7.19 mm -2.43 m 0 eV 98.3 keV 26.8 mum 26.8 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 67, Parent ID = 65 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.05 mm -7.27 mm -2.43 m 261 keV 0 eV 0 fm 0 fm Target initStep + 1 1.05 mm -7.27 mm -2.43 m 5.55e-11 eV 261 keV 121 mum 121 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 66, Parent ID = 65 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 99.9 mum -5.06 mm -2.43 m 150 keV 0 eV 0 fm 0 fm Target initStep + 1 97.7 mum -5.06 mm -2.43 m 0 eV 150 keV 52.3 mum 52.3 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 49, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.27 mm -6.1 mum -2.43 m 972 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.65 mm 1.93 mm -2.41 m 287 keV 0 eV 2.06 cm 2.06 cm Target compt + 2 -3.15 mm 3.87 mm -2.41 m 0 eV 88 keV 4.9 mm 2.55 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 70, Parent ID = 49 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.15 mm 3.87 mm -2.41 m 199 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.15 mm 3.87 mm -2.41 m 0 eV 199 keV 80.8 mum 80.8 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 69, Parent ID = 49 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -7.65 mm 1.93 mm -2.41 m 685 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.62 mm 1.95 mm -2.41 m 326 keV 359 keV 340 mum 340 mum Target eIoni + 2 -7.62 mm 1.94 mm -2.41 m 0 eV 326 keV 167 mum 507 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 48, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.13 mm -147 mum -2.43 m 458 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.55 mm 1.62 mm -2.42 m 0 eV 88 keV 1.18 cm 1.18 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 71, Parent ID = 48 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.55 mm 1.62 mm -2.42 m 370 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.55 mm 1.62 mm -2.42 m 5.55e-11 eV 370 keV 200 mum 200 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 47, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.12 mm -169 mum -2.43 m 1.73 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.24 mm -32 mum -2.43 m 229 keV 0 eV 614 mum 614 mum Target compt + 2 -1.27 mm -36.5 mum -2.43 m 0 eV 88 keV 384 mum 999 mum Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 73, Parent ID = 47 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.27 mm -36.5 mum -2.43 m 141 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.27 mm -36.5 mum -2.43 m 0 eV 141 keV 47.3 mum 47.3 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 72, Parent ID = 47 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.24 mm -32 mum -2.43 m 1.5 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.26 mm -167 mum -2.43 m 664 keV 451 keV 442 mum 442 mum Target eBrem + 2 -1.28 mm -198 mum -2.43 m 89 keV 575 keV 334 mum 775 mum Target eIoni + 3 -1.28 mm -199 mum -2.43 m 0 eV 89 keV 22.7 mum 798 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 74, Parent ID = 72 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.26 mm -167 mum -2.43 m 388 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.15 mm -1.07 mm -2.44 m 0 eV 88 keV 2.23 mm 2.23 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 75, Parent ID = 74 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.15 mm -1.07 mm -2.44 m 300 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.15 mm -1.08 mm -2.44 m 0 eV 300 keV 148 mum 148 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 46, Parent ID = 45 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -913 mum -187 mum -2.44 m 516 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.83 mm 43 mum -2.42 m 219 keV 0 eV 1.58 cm 1.58 cm Target compt + 2 -3.84 mm -1.2 mm -2.42 m 0 eV 88 keV 1.76 mm 1.76 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 77, Parent ID = 46 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.84 mm -1.2 mm -2.42 m 131 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.84 mm -1.2 mm -2.42 m 5.55e-11 eV 131 keV 42 mum 42 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 76, Parent ID = 46 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.83 mm 43 mum -2.42 m 297 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.83 mm 45 mum -2.42 m 5.55e-11 eV 297 keV 146 mum 146 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 22 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -963 mum -386 mum -2.44 m 10.1 MeV 0 eV 0 fm 0 fm Target initStep + 1 -613 mum 60.1 mum -2.44 m 7.48 MeV 1.46 MeV 1.31 mm 1.31 mm Target eBrem + 2 -621 mum 59.2 mum -2.44 m 6.49 MeV 7.31 keV 9.92 mum 1.32 mm Target eBrem + 3 -277 mum -537 mum -2.44 m 1.9 MeV 1.52 MeV 1.12 mm 2.44 mm Target eBrem + 4 -467 mum -478 mum -2.44 m 1.27 MeV 637 keV 594 mum 3.04 mm Target eIoni + 5 -372 mum -585 mum -2.44 m 755 keV 512 keV 475 mum 3.51 mm Target eIoni + 6 -422 mum -606 mum -2.44 m 183 keV 572 keV 360 mum 3.87 mm Target eIoni + 7 -423 mum -609 mum -2.44 m 5.55e-11 eV 183 keV 71 mum 3.94 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 80, Parent ID = 44 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -277 mum -537 mum -2.44 m 3.06 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.35 cm 8.43 mm -2.43 m 0 eV 0 eV 1.65 cm 1.65 cm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 82, Parent ID = 80 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.35 cm 8.43 mm -2.43 m 1.49 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.37 cm 8.38 mm -2.43 m 797 keV 694 keV 524 mum 524 mum Target eIoni + 2 -1.38 cm 8.33 mm -2.43 m 442 keV 355 keV 373 mum 897 mum Target eIoni + 3 -1.38 cm 8.31 mm -2.43 m 136 keV 306 keV 245 mum 1.14 mm Target eIoni + 4 -1.38 cm 8.31 mm -2.43 m 5.55e-11 eV 136 keV 42.2 mum 1.18 mm Target eIoni + 5 -1.38 cm 8.31 mm -2.43 m 5.55e-11 eV 0 eV 0 fm 1.18 mm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 84, Parent ID = 82 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.38 cm 8.31 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.46 cm 9.94 mm -2.43 m 0 eV 88 keV 4.25 mm 4.25 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 85, Parent ID = 84 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.46 cm 9.94 mm -2.43 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.47 cm 9.95 mm -2.43 m 56.5 keV 367 keV 235 mum 235 mum Target eIoni + 2 -1.47 cm 9.95 mm -2.43 m 6.94e-12 eV 56.5 keV 10.9 mum 246 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 83, Parent ID = 82 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.38 cm 8.31 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.35 cm 7.64 mm -2.43 m 338 keV 0 eV 1.75 mm 1.75 mm Target compt + 2 -1.57 cm 83.7 mum -2.43 m 0 eV 88 keV 8.03 mm 9.78 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 87, Parent ID = 83 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.57 cm 83.7 mum -2.43 m 250 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.57 cm 78.2 mum -2.43 m 5.55e-11 eV 250 keV 114 mum 114 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 86, Parent ID = 83 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.35 cm 7.64 mm -2.43 m 173 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.35 cm 7.64 mm -2.43 m 2.78e-11 eV 173 keV 65.3 mum 65.3 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 81, Parent ID = 80 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.35 cm 8.43 mm -2.43 m 549 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.35 cm 8.45 mm -2.43 m 239 keV 310 keV 294 mum 294 mum Target eIoni + 2 -1.35 cm 8.45 mm -2.43 m 0 eV 239 keV 106 mum 400 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 79, Parent ID = 44 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -621 mum 59.2 mum -2.44 m 984 keV 0 eV 0 fm 0 fm Target initStep + 1 -415 mum -1.01 mm -2.43 m 382 keV 0 eV 1.9 mm 1.9 mm Target compt + 2 -4.68 mm 432 mum -2.43 m 304 keV 0 eV 5.26 mm 7.16 mm Target compt + 3 -4.71 mm 432 mum -2.43 m 0 eV 88 keV 25.7 mum 7.18 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 90, Parent ID = 79 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -4.71 mm 432 mum -2.43 m 216 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.71 mm 432 mum -2.43 m 8.33e-11 eV 216 keV 91.6 mum 91.6 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 89, Parent ID = 79 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -4.68 mm 432 mum -2.43 m 77.9 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.68 mm 432 mum -2.43 m 0 eV 77.9 keV 18.4 mum 18.4 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 88, Parent ID = 79 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -415 mum -1.01 mm -2.43 m 602 keV 0 eV 0 fm 0 fm Target initStep + 1 -433 mum -1.05 mm -2.43 m 173 keV 110 keV 91.7 mum 91.7 mum Target eBrem + 2 -433 mum -1.05 mm -2.43 m 0 eV 173 keV 65.4 mum 157 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 91, Parent ID = 88 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -433 mum -1.05 mm -2.43 m 318 keV 0 eV 0 fm 0 fm Target initStep + 1 -783 mum -2.39 mm -2.43 m 0 eV 88 keV 1.42 mm 1.42 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 92, Parent ID = 91 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -783 mum -2.39 mm -2.43 m 230 keV 0 eV 0 fm 0 fm Target initStep + 1 -785 mum -2.4 mm -2.43 m 0 eV 230 keV 101 mum 101 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 78, Parent ID = 44 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -613 mum 60.1 mum -2.44 m 1.11 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.45 cm -1.92 mm -2.43 m 1.08 MeV 0 eV 1.64 cm 1.64 cm Target compt + 2 -2.5 cm -3.76 mm -2.42 m 1.08 MeV 0 eV 1.4 cm 3.04 cm Target Transportation + 3 -4.57 cm -7.39 mm -2.4 m 1.08 MeV 0 eV 2.75 cm 5.78 cm World Transportation + 4 -2.4 m -41.9 cm -39 cm 1.08 MeV 0 eV 3.12 m 3.18 m Tracker Transportation + 5 -2.91 m -50.9 cm 4.59 cm 1.08 MeV 0 eV 67.7 cm 3.86 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 93, Parent ID = 78 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.45 cm -1.92 mm -2.43 m 27.7 keV 0 eV 0 fm 0 fm World initStep + 1 -1.45 cm -1.92 mm -2.43 m 27.7 keV 0 eV -0 fm 0 fm World Transportation + 2 -1.45 cm -1.92 mm -2.43 m 27.2 keV 428 eV 137 nm 137 nm Target msc + 3 -1.45 cm -1.92 mm -2.43 m 0 eV 27.2 keV 3.33 mum 3.46 mum Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 21, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -4.09 mm -3.43 mm -2.44 m 736 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -4.41 mm -3.17 mm -2.44 m 255 keV 481 keV 557 mum 557 mum TargetPV compt - 2 -4.71 mm -3.44 mm -2.44 m 0 eV 255 keV 506 mum 1.06 mm TargetPV phot + 0 -1.07 mm -436 mum -2.44 m 4.43 MeV 0 eV 0 fm 0 fm Target initStep + 1 -3.58 mm 949 mum -2.42 m 0 eV 0 eV 2.04 cm 2.04 cm Target conv ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 20, Parent ID = 1 +* G4Track Information: Particle = e+, Track ID = 95, Parent ID = 21 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.98 mm -3.37 mm -2.44 m 2.19 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -4.99 mm -3.62 mm -2.43 m 1.3 MeV 890 keV 1.94 mm 1.94 mm TargetPV compt - 2 -1.08 cm -6.01 mm -2.43 m 978 keV 317 keV 6.91 mm 8.85 mm TargetPV compt - 3 -1.45 cm -9.5 mm -2.42 m 606 keV 371 keV 7.98 mm 1.68 cm TargetPV compt - 4 -2.03 cm -1.01 cm -2.42 m 0 eV 606 keV 5.95 mm 2.28 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 19, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.06 mm -2.46 mm -2.44 m 4.26 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.22 cm -9.66 mm -2.42 m 0 eV 3.24 MeV 1.72 cm 1.72 cm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 26, Parent ID = 19 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.22 cm -9.66 mm -2.42 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.22 cm -9.66 mm -2.42 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 28, Parent ID = 26 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.22 cm -9.66 mm -2.42 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.24 cm -9.68 mm -2.42 m 0 eV 511 keV 374 mum 374 mum TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 27, Parent ID = 26 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.22 cm -9.66 mm -2.42 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.12 cm -9.55 mm -2.42 m 0 eV 511 keV 1.63 mm 1.63 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 18, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.96 mm -2.38 mm -2.44 m 515 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -6.73 mm -5.81 mm -2.43 m 478 keV 36.9 keV 6.89 mm 6.89 mm TargetPV compt - 2 -6.77 mm -5.86 mm -2.43 m 0 eV 478 keV 74.9 mum 6.96 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 17, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.95 mm -507 mum -2.44 m 1.14 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.37 mm -1.32 mm -2.44 m 665 keV 472 keV 3.37 mm 3.37 mm TargetPV compt - 2 -373 mum -8.4 mm -2.43 m 533 keV 133 keV 1.13 cm 1.47 cm TargetPV compt - 3 3.69 mm -9.92 mm -2.42 m 0 eV 533 keV 5.35 mm 2 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 16, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.76 mm -261 mum -2.44 m 3.09 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -6.54 mm -3.77 mm -2.43 m 0 eV 2.07 MeV 1.17 cm 1.17 cm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 29, Parent ID = 16 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -6.54 mm -3.77 mm -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -6.54 mm -3.77 mm -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 31, Parent ID = 29 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -6.54 mm -3.77 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -7.89 mm -6.32 mm -2.43 m 0 eV 511 keV 3.58 mm 3.58 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 30, Parent ID = 29 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -6.54 mm -3.77 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -5.54 mm -1.9 mm -2.43 m 0 eV 511 keV 2.64 mm 2.64 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 15, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.63 mm -225 mum -2.44 m 7.31 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.18 cm -5.48 mm -2.4 m 7.31 MeV 0 eV 4.52 cm 4.52 cm TargetPV Transportation - 2 -2.4 m -62.5 cm 2.33 m 7.31 MeV 0 eV 5.33 m 5.38 m Tracker Transportation - 3 -2.69 m -70.1 cm 2.91 m 7.31 MeV 0 eV 65 cm 6.03 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 14, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.3 mm -269 mum -2.44 m 23.6 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.37 cm -3.28 mm -2.4 m 0 eV 0 eV 3.86 cm 3.86 cm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 33, Parent ID = 14 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.37 cm -3.28 mm -2.4 m 8.94 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.37 cm -3.28 mm -2.4 m 8.1 MeV 536 keV 458 mum 458 mum TargetPV eBrem - 2 -1.44 cm -2.4 mm -2.4 m 4.81 MeV 1.73 MeV 1.58 mm 2.04 mm TargetPV eBrem - 3 -1.5 cm -2.99 mm -2.4 m 3.37 MeV 1.44 MeV 1.08 mm 3.12 mm TargetPV eIoni - 4 -1.51 cm -3.01 mm -2.4 m 2.29 MeV 1.08 MeV 853 mum 3.97 mm TargetPV eIoni - 5 -1.53 cm -3.03 mm -2.4 m 1.45 MeV 301 keV 232 mum 4.21 mm TargetPV eBrem - 6 -1.51 cm -3.1 mm -2.4 m 839 keV 614 keV 517 mum 4.72 mm TargetPV eIoni - 7 -1.51 cm -3.04 mm -2.4 m 245 keV 594 keV 384 mum 5.11 mm TargetPV eIoni - 8 -1.51 cm -3.04 mm -2.4 m 0 eV 245 keV 107 mum 5.21 mm TargetPV eIoni - 9 -1.51 cm -3.04 mm -2.4 m 0 eV 0 eV 0 fm 5.21 mm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 38, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.51 cm -3.04 mm -2.4 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.5 cm 3.03 mm -2.41 m 511 keV 0 eV 1.29 cm 1.29 cm TargetPV Transportation - 2 -89.7 cm 53.7 cm -2.91 m 511 keV 0 eV 1.14 m 1.15 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 37, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.51 cm -3.04 mm -2.4 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1 cm -6.16 mm -2.4 m 511 keV 0 eV 6.65 mm 6.65 mm TargetPV Transportation - 2 2.4 m -1.48 m -1.01 m 511 keV 0 eV 3.15 m 3.16 m Tracker Transportation - 3 2.91 m -1.8 m -72 cm 511 keV 0 eV 66.6 cm 3.82 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 36, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.53 cm -3.03 mm -2.4 m 534 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.41 cm -357 mum -2.41 m 0 eV 534 keV 7.46 mm 7.46 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 35, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.44 cm -2.4 mm -2.4 m 1.57 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.5 cm -5.94 mm -2.41 m 1.57 MeV 0 eV 1.13 cm 1.13 cm TargetPV Transportation - 2 -2.91 m -96.9 cm -2.9 m 1.57 MeV 0 eV 3.08 m 3.09 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 34, Parent ID = 33 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.37 cm -3.28 mm -2.4 m 299 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.57 cm -2.59 mm -2.4 m 0 eV 299 keV 4.44 mm 4.44 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 32, Parent ID = 14 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.37 cm -3.28 mm -2.4 m 13.6 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.38 cm -3.33 mm -2.4 m 12.3 MeV 645 keV 303 mum 303 mum TargetPV eBrem - 2 -1.33 cm -3.57 mm -2.4 m 8.4 MeV 3.93 MeV 2.14 mm 2.44 mm TargetPV eIoni - 3 -1.32 cm -2.74 mm -2.4 m 6.43 MeV 1.97 MeV 1.59 mm 4.03 mm TargetPV eIoni - 4 -1.3 cm -2.42 mm -2.4 m 5.62 MeV 388 keV 413 mum 4.44 mm TargetPV eBrem - 5 -1.24 cm -1.87 mm -2.4 m 3.73 MeV 1.16 MeV 922 mum 5.36 mm TargetPV eBrem - 6 -1.22 cm -1.66 mm -2.4 m 3.07 MeV 351 keV 384 mum 5.75 mm TargetPV eBrem - 7 -1.23 cm -1.78 mm -2.4 m 1.98 MeV 664 keV 582 mum 6.33 mm TargetPV eBrem - 8 -1.22 cm -1.74 mm -2.4 m 1.14 MeV 846 keV 607 mum 6.93 mm TargetPV eIoni - 9 -1.2 cm -1.72 mm -2.4 m 744 keV 393 keV 449 mum 7.38 mm TargetPV eIoni - 10 -1.2 cm -1.75 mm -2.4 m 254 keV 490 keV 357 mum 7.74 mm TargetPV eIoni - 11 -1.2 cm -1.75 mm -2.4 m 0 eV 254 keV 117 mum 7.86 mm TargetPV eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 43, Parent ID = 32 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.23 cm -1.78 mm -2.4 m 419 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.23 cm -2.5 mm -2.4 m 419 keV 0 eV 2.04 mm 2.04 mm TargetPV Transportation - 2 -2.88 cm -60.3 cm -80 cm 419 keV 0 eV 1.71 m 1.71 m Tracker Transportation - 3 -3.07 cm -67.2 cm -61.5 cm 419 keV 0 eV 19.7 cm 1.91 m Chamber Transportation - 4 -3.7 cm -90.3 cm 0 fm 419 keV 0 eV 65.7 cm 2.57 m Tracker Transportation - 5 -3.91 cm -97.8 cm 20 cm 419 keV 0 eV 21.4 cm 2.78 m Chamber Transportation - 6 -4.53 cm -1.2 m 80 cm 419 keV 0 eV 64.1 cm 3.42 m Tracker Transportation - 7 -4.73 cm -1.28 m 1 m 419 keV 0 eV 21.4 cm 3.63 m Chamber Transportation - 8 -5.35 cm -1.5 m 1.6 m 419 keV 0 eV 64.1 cm 4.27 m Tracker Transportation - 9 -5.55 cm -1.58 m 1.8 m 419 keV 0 eV 21.4 cm 4.49 m Chamber Transportation - 10 -6.17 cm -1.8 m 2.4 m 419 keV 0 eV 64.1 cm 5.13 m Tracker Transportation - 11 -6.7 cm -1.99 m 2.91 m 419 keV 0 eV 54.5 cm 5.67 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 42, Parent ID = 32 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.22 cm -1.66 mm -2.4 m 313 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.16 cm -2.53 mm -2.4 m 0 eV 313 keV 1.35 mm 1.35 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 41, Parent ID = 32 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.24 cm -1.87 mm -2.4 m 733 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -5.59 mm -1.17 mm -2.4 m 554 keV 178 keV 6.92 mm 6.92 mm TargetPV compt - 2 -3.87 mm -924 mum -2.4 m 0 eV 554 keV 2.4 mm 9.33 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 40, Parent ID = 32 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.3 cm -2.42 mm -2.4 m 423 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.23 cm 3.36 mm -2.4 m 0 eV 423 keV 5.82 mm 5.82 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 39, Parent ID = 32 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.38 cm -3.33 mm -2.4 m 626 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.41 cm -3.29 mm -2.4 m 0 eV 626 keV 1.08 mm 1.08 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 13, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -944 mum -136 mum -2.44 m 1.01 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.2 cm -2.24 mm -2.41 m 0 eV 1.01 MeV 3.19 cm 3.19 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 12, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -681 mum 409 nm -2.44 m 1.93 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -5.16 mm -1.95 mm -2.43 m 0 eV 911 keV 1.87 cm 1.87 cm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 44, Parent ID = 12 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -5.16 mm -1.95 mm -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -5.16 mm -1.95 mm -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 46, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -5.16 mm -1.95 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.4 cm 3.45 mm -2.43 m 354 keV 157 keV 1.3 cm 1.3 cm TargetPV compt - 2 -1.72 cm -480 mum -2.44 m 0 eV 354 keV 8.84 mm 2.18 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 45, Parent ID = 44 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -5.16 mm -1.95 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 1.24 mm -5.88 mm -2.42 m 0 eV 511 keV 9.43 mm 9.43 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 11, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -481 mum -47.1 mum -2.44 m 80.5 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.11 mm -111 mum -2.44 m 0 eV 0 eV 6.68 mm 6.68 mm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 48, Parent ID = 11 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.11 mm -111 mum -2.44 m 59.9 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.23 mm -105 mum -2.44 m 57.3 MeV 852 keV 764 mum 764 mum TargetPV eBrem - 2 -1.32 mm 61.5 mum -2.44 m 49.1 MeV 502 keV 342 mum 1.11 mm TargetPV eBrem - 3 -1.52 mm 319 mum -2.44 m 43.3 MeV 672 keV 537 mum 1.64 mm TargetPV eBrem - 4 -2.12 mm 891 mum -2.44 m 37.5 MeV 1.76 MeV 1.61 mm 3.25 mm TargetPV eBrem - 5 -2.21 mm 2.19 mm -2.43 m 3.82 MeV 4.33 MeV 2.74 mm 5.99 mm TargetPV eBrem - 6 -2.63 mm 2.67 mm -2.43 m 2.68 MeV 1.14 MeV 927 mum 6.92 mm TargetPV eIoni - 7 -2.23 mm 2.73 mm -2.43 m 1.92 MeV 761 keV 738 mum 7.66 mm TargetPV eIoni - 8 -2.21 mm 2.88 mm -2.43 m 1.05 MeV 872 keV 605 mum 8.26 mm TargetPV eIoni - 9 -2.17 mm 2.71 mm -2.43 m 627 keV 424 keV 434 mum 8.69 mm TargetPV eIoni - 10 -2.23 mm 2.72 mm -2.43 m 349 keV 278 keV 323 mum 9.02 mm TargetPV eIoni - 11 -2.21 mm 2.72 mm -2.43 m 1.11e-10 eV 349 keV 181 mum 9.2 mm TargetPV eIoni - 12 -2.21 mm 2.72 mm -2.43 m 1.11e-10 eV 0 eV 0 fm 9.2 mm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 55, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.21 mm 2.72 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.53 mm 2.24 mm -2.43 m 0 eV 511 keV 1.58 mm 1.58 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 54, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.21 mm 2.72 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.26 mm 4.13 mm -2.44 m 486 keV 24.9 keV 4.63 mm 4.63 mm TargetPV compt - 2 155 mum 5.28 mm -2.44 m 0 eV 486 keV 2.96 mm 7.59 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 53, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.21 mm 2.19 mm -2.43 m 29.4 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.27 mm 2.74 mm -2.43 m 0 eV 2.21 MeV 1.29 mm 1.29 mm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 56, Parent ID = 53 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.27 mm 2.74 mm -2.43 m 26.1 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.3 mm 3.27 mm -2.43 m 24.8 MeV 1.08 MeV 925 mum 925 mum TargetPV eBrem - 2 -2.39 mm 3.4 mm -2.43 m 16 MeV 412 keV 289 mum 1.21 mm TargetPV eBrem - 3 -3.11 mm 3.33 mm -2.43 m 11.3 MeV 3.03 MeV 2.69 mm 3.9 mm TargetPV eBrem - 4 -3.27 mm 3.54 mm -2.43 m 10.3 MeV 652 keV 412 mum 4.32 mm TargetPV eBrem - 5 -3.63 mm 4.1 mm -2.43 m 7.94 MeV 1.35 MeV 1.28 mm 5.6 mm TargetPV eBrem - 6 -3.79 mm 3.85 mm -2.43 m 6.36 MeV 1.57 MeV 1.56 mm 7.16 mm TargetPV eIoni - 7 -3.74 mm 4.03 mm -2.43 m 4.96 MeV 269 keV 218 mum 7.37 mm TargetPV eBrem - 8 -2.89 mm 3.91 mm -2.43 m 3.05 MeV 1.91 MeV 1.11 mm 8.48 mm TargetPV eIoni - 9 -2.42 mm 4.23 mm -2.43 m 2.34 MeV 716 keV 801 mum 9.28 mm TargetPV eIoni - 10 -2.64 mm 3.86 mm -2.43 m 1.41 MeV 926 keV 679 mum 9.96 mm TargetPV eIoni - 11 -2.8 mm 4 mm -2.43 m 650 keV 761 keV 509 mum 1.05 cm TargetPV eIoni - 12 -2.85 mm 4.07 mm -2.43 m 336 keV 314 keV 331 mum 1.08 cm TargetPV eIoni - 13 -2.83 mm 4.08 mm -2.43 m 5.55e-11 eV 336 keV 172 mum 1.1 cm TargetPV eIoni - 14 -2.83 mm 4.08 mm -2.43 m 5.55e-11 eV 0 eV 0 fm 1.1 cm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 64, Parent ID = 56 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.83 mm 4.08 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.01 mm 5.5 mm -2.43 m 214 keV 297 keV 1.7 mm 1.7 mm TargetPV compt - 2 -2.09 mm 5.48 mm -2.43 m 0 eV 214 keV 103 mum 1.81 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 63, Parent ID = 56 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.83 mm 4.08 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.64 mm 2.67 mm -2.43 m 0 eV 511 keV 1.7 mm 1.7 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 62, Parent ID = 56 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.74 mm 4.03 mm -2.43 m 1.13 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.33 mm 4.03 mm -2.43 m 0 eV 1.13 MeV 729 mum 729 mum TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 61, Parent ID = 56 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.63 mm 4.1 mm -2.43 m 1.03 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.75 mm 3.75 mm -2.43 m 654 keV 379 keV 3.87 mm 3.87 mm TargetPV compt - 2 -3.51 mm -693 mum -2.44 m 466 keV 188 keV 9.83 mm 1.37 cm TargetPV compt - 3 -3.28 mm -1.54 mm -2.44 m 0 eV 466 keV 943 mum 1.46 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 60, Parent ID = 56 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.27 mm 3.54 mm -2.43 m 348 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.65 mm 3.76 mm -2.43 m 0 eV 348 keV 635 mum 635 mum TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 59, Parent ID = 56 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.11 mm 3.33 mm -2.43 m 1.63 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.65 cm 2.5 cm -2.41 m 1.63 MeV 0 eV 3.3 cm 3.3 cm TargetPV Transportation - 2 -2.12 cm 3.26 cm -2.4 m 1.63 MeV 0 eV 1.16 cm 4.46 cm WorldPV Transportation - 3 -1.48 m 2.4 m -10.6 cm 1.63 MeV 0 eV 3.61 m 3.65 m Tracker Transportation - 4 -1.8 m 2.91 m 38.9 cm 1.63 MeV 0 eV 77.7 cm 4.43 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 58, Parent ID = 56 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.39 mm 3.4 mm -2.43 m 8.37 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.13 cm 1.69 cm -2.4 m 812 keV 0 eV 3.39 cm 3.39 cm TargetPV compt - 2 -1.25 cm 1.59 cm -2.4 m 812 keV 0 eV 1.86 mm 3.58 cm TargetPV Transportation - 3 -2.4 m -2.12 m -25.8 cm 812 keV 0 eV 3.85 m 3.89 m Tracker Transportation - 4 -2.91 m -2.57 m 20 cm 812 keV 0 eV 82.3 cm 4.71 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 65, Parent ID = 58 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.13 cm 1.69 cm -2.4 m 7.56 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.14 cm 1.69 cm -2.4 m 6.75 MeV 480 keV 263 mum 263 mum TargetPV eBrem - 2 -1.17 cm 1.71 cm -2.4 m 5.25 MeV 1.51 MeV 1.34 mm 1.6 mm TargetPV Transportation - 3 -1.17 cm 1.71 cm -2.4 m 5.25 MeV 0 eV 0 fm 1.6 mm Tracker Transportation - 4 -1.18 cm 1.71 cm -2.4 m 1.3 MeV 137 keV 122 mum 1.73 mm TargetPV eBrem - 5 -1.19 cm 1.7 cm -2.4 m 806 keV 490 keV 481 mum 2.21 mm TargetPV eIoni - 6 -1.19 cm 1.7 cm -2.4 m 218 keV 220 keV 225 mum 2.43 mm TargetPV eBrem - 7 -1.19 cm 1.7 cm -2.4 m 0 eV 218 keV 92.7 mum 2.53 mm TargetPV eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 68, Parent ID = 65 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.19 cm 1.7 cm -2.4 m 368 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.19 cm 1.7 cm -2.4 m 368 keV 0 eV 32.9 mum 32.9 mum TargetPV Transportation - 2 -13.5 cm -7.47 cm -1.6 m 368 keV 0 eV 81.5 cm 81.5 cm Tracker Transportation - 3 -16.6 cm -9.76 cm -1.4 m 368 keV 0 eV 20.4 cm 1.02 m Chamber Transportation - 4 -25.9 cm -16.6 cm -80 cm 368 keV 0 eV 61.1 cm 1.63 m Tracker Transportation - 5 -29 cm -18.9 cm -60 cm 368 keV 0 eV 20.4 cm 1.83 m Chamber Transportation - 6 -38.3 cm -25.8 cm 0 fm 368 keV 0 eV 61.1 cm 2.44 m Tracker Transportation - 7 -41.4 cm -28.1 cm 20 cm 368 keV 0 eV 20.4 cm 2.65 m Chamber Transportation - 8 -50.6 cm -35 cm 80 cm 368 keV 0 eV 61.1 cm 3.26 m Tracker Transportation - 9 -53.7 cm -37.3 cm 1 m 368 keV 0 eV 20.4 cm 3.46 m Chamber Transportation - 10 -63 cm -44.1 cm 1.6 m 368 keV 0 eV 61.1 cm 4.07 m Tracker Transportation - 11 -66.1 cm -46.4 cm 1.8 m 368 keV 0 eV 20.4 cm 4.28 m Chamber Transportation - 12 -75.4 cm -53.3 cm 2.4 m 368 keV 0 eV 61.1 cm 4.89 m Tracker Transportation - 13 -83.2 cm -59.2 cm 2.91 m 368 keV 0 eV 51.9 cm 5.41 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 67, Parent ID = 65 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.18 cm 1.71 cm -2.4 m 3.81 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.27 cm 1.73 cm -2.4 m 0 eV 585 keV 1.09 mm 1.09 mm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 69, Parent ID = 67 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.27 cm 1.73 cm -2.4 m 2.21 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.28 cm 1.73 cm -2.4 m 924 keV 573 keV 508 mum 508 mum TargetPV eBrem - 2 -1.29 cm 1.73 cm -2.4 m 498 keV 426 keV 405 mum 913 mum TargetPV eIoni - 3 -1.28 cm 1.73 cm -2.4 m 98.4 keV 399 keV 273 mum 1.19 mm TargetPV eIoni - 4 -1.28 cm 1.73 cm -2.4 m 0 eV 98.4 keV 24.7 mum 1.21 mm TargetPV eIoni - 5 -1.28 cm 1.73 cm -2.4 m 0 eV 0 eV 0 fm 1.21 mm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 72, Parent ID = 69 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.28 cm 1.73 cm -2.4 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -9.13 mm 1.57 cm -2.42 m 0 eV 511 keV 1.94 cm 1.94 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 71, Parent ID = 69 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.28 cm 1.73 cm -2.4 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.3 cm 1.74 cm -2.4 m 511 keV 0 eV 765 mum 765 mum TargetPV Transportation - 2 -16.8 cm 8.52 cm -1.6 m 511 keV 0 eV 81.8 cm 81.8 cm Tracker Transportation - 3 -20.7 cm 10.2 cm -1.4 m 511 keV 0 eV 20.4 cm 1.02 m Chamber Transportation - 4 -32.3 cm 15.3 cm -80 cm 511 keV 0 eV 61.3 cm 1.64 m Tracker Transportation - 5 -36.2 cm 17 cm -60 cm 511 keV 0 eV 20.4 cm 1.84 m Chamber Transportation - 6 -47.8 cm 22.1 cm 0 fm 511 keV 0 eV 61.3 cm 2.45 m Tracker Transportation - 7 -51.6 cm 23.8 cm 20 cm 511 keV 0 eV 20.4 cm 2.66 m Chamber Transportation - 8 -63.3 cm 28.9 cm 80 cm 511 keV 0 eV 61.3 cm 3.27 m Tracker Transportation - 9 -67.1 cm 30.6 cm 1 m 511 keV 0 eV 20.4 cm 3.48 m Chamber Transportation - 10 -78.8 cm 35.7 cm 1.6 m 511 keV 0 eV 61.3 cm 4.09 m Tracker Transportation - 11 -82.6 cm 37.3 cm 1.8 m 511 keV 0 eV 20.4 cm 4.29 m Chamber Transportation - 12 -94.3 cm 42.4 cm 2.4 m 511 keV 0 eV 61.3 cm 4.91 m Tracker Transportation - 13 -1.04 m 46.8 cm 2.91 m 511 keV 0 eV 52.1 cm 5.43 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 70, Parent ID = 69 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.28 cm 1.73 cm -2.4 m 710 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.45 cm 2.5 cm -2.4 m 710 keV 0 eV 7.91 mm 7.91 mm TargetPV Transportation - 2 -65.9 cm 2.91 m -2.57 m 710 keV 0 eV 2.96 m 2.97 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 66, Parent ID = 65 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.14 cm 1.69 cm -2.4 m 323 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.14 cm 1.69 cm -2.4 m 203 keV 120 keV 8.77 mum 8.77 mum TargetPV compt - 2 -1.2 cm 1.71 cm -2.4 m 0 eV 203 keV 641 mum 650 mum TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 57, Parent ID = 56 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.3 mm 3.27 mm -2.43 m 302 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.61 mm 5.72 mm -2.43 m 0 eV 302 keV 5.83 mm 5.83 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 52, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.12 mm 891 mum -2.44 m 4.04 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.99 mm 2.49 mm -2.43 m 0 eV 3.02 MeV 3.67 mm 3.67 mm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 73, Parent ID = 52 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.99 mm 2.49 mm -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.99 mm 2.49 mm -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 75, Parent ID = 73 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.99 mm 2.49 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.38 mm 2.9 mm -2.43 m 404 keV 107 keV 1.18 mm 1.18 mm TargetPV compt - 2 -9.07 mm 9.27 mm -2.44 m 291 keV 114 keV 9 mm 1.02 cm TargetPV compt - 3 -1.15 cm 8.53 mm -2.44 m 252 keV 38.6 keV 3.45 mm 1.36 cm TargetPV compt - 4 -1.15 cm 8.52 mm -2.44 m 170 keV 82.1 keV 9.29 mum 1.36 cm TargetPV compt - 5 -1.17 cm 8.47 mm -2.44 m 0 eV 170 keV 223 mum 1.39 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 74, Parent ID = 73 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.99 mm 2.49 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.22 mm 661 mum -2.43 m 174 keV 337 keV 5.24 mm 5.24 mm TargetPV compt - 2 -1.61 mm 692 mum -2.43 m 124 keV 49.5 keV 825 mum 6.07 mm TargetPV compt - 3 -1.62 mm 693 mum -2.43 m 0 eV 124 keV 13.7 mum 6.08 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 51, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.52 mm 319 mum -2.44 m 5.1 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.42 cm 1.81 cm -2.41 m 0 eV 4.08 MeV 3.79 cm 3.79 cm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 76, Parent ID = 51 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.42 cm 1.81 cm -2.41 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.42 cm 1.81 cm -2.41 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 78, Parent ID = 76 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.42 cm 1.81 cm -2.41 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.38 cm 2.01 cm -2.41 m 367 keV 144 keV 2.06 mm 2.06 mm TargetPV compt - 2 -9.94 mm 2.21 cm -2.41 m 0 eV 367 keV 4.34 mm 6.4 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 77, Parent ID = 76 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.42 cm 1.81 cm -2.41 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.43 cm 1.77 cm -2.41 m 424 keV 86.8 keV 378 mum 378 mum TargetPV compt - 2 -2.11 cm 1.05 cm -2.41 m 360 keV 64.5 keV 1.07 cm 1.11 cm TargetPV compt - 3 -2.18 cm 1.03 cm -2.41 m 0 eV 360 keV 810 mum 1.19 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 50, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.32 mm 61.5 mum -2.44 m 7.7 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.69 mm 2.29 mm -2.43 m 0 eV 6.68 MeV 4.38 mm 4.38 mm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 79, Parent ID = 50 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.69 mm 2.29 mm -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.69 mm 2.29 mm -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 81, Parent ID = 79 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.69 mm 2.29 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.55 mm 2.18 mm -2.43 m 492 keV 18.9 keV 233 mum 233 mum TargetPV compt - 2 2.08 cm -1.84 cm -2.45 m 229 keV 263 keV 3.4 cm 3.42 cm TargetPV compt - 3 2.08 cm -1.65 cm -2.45 m 0 eV 229 keV 2.55 mm 3.67 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 80, Parent ID = 79 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -2.69 mm 2.29 mm -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.25 mm 2.73 mm -2.43 m 0 eV 511 keV 914 mum 914 mum TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 49, Parent ID = 48 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.23 mm -105 mum -2.44 m 1.7 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.24 cm 2.02 cm -2.41 m 1.3 MeV 401 keV 3.96 cm 3.96 cm TargetPV compt - 2 -1.26 cm 2.13 cm -2.4 m 1.3 MeV 0 eV 5.43 mm 4.5 cm TargetPV Transportation - 3 -4 cm 18.8 cm -1.6 m 1.3 MeV 0 eV 81.8 cm 86.3 cm Tracker Transportation - 4 -4.69 cm 22.9 cm -1.4 m 1.3 MeV 0 eV 20.4 cm 1.07 m Chamber Transportation - 5 -6.75 cm 35.4 cm -80 cm 1.3 MeV 0 eV 61.3 cm 1.68 m Tracker Transportation - 6 -7.44 cm 39.6 cm -60 cm 1.3 MeV 0 eV 20.4 cm 1.88 m Chamber Transportation - 7 -9.49 cm 52 cm 0 fm 1.3 MeV 0 eV 61.3 cm 2.5 m Tracker Transportation - 8 -10.2 cm 56.2 cm 20 cm 1.3 MeV 0 eV 20.4 cm 2.7 m Chamber Transportation - 9 -12.2 cm 68.7 cm 80 cm 1.3 MeV 0 eV 61.3 cm 3.32 m Tracker Transportation - 10 -12.9 cm 72.8 cm 1 m 1.3 MeV 0 eV 20.4 cm 3.52 m Chamber Transportation - 11 -15 cm 85.3 cm 1.6 m 1.3 MeV 0 eV 61.3 cm 4.13 m Tracker Transportation - 12 -15.7 cm 89.5 cm 1.8 m 1.3 MeV 0 eV 20.4 cm 4.34 m Chamber Transportation - 13 -17.7 cm 1.02 m 2.4 m 1.3 MeV 0 eV 61.3 cm 4.95 m Tracker Transportation - 14 -19.5 cm 1.13 m 2.91 m 1.3 MeV 0 eV 52.1 cm 5.47 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 47, Parent ID = 11 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.11 mm -111 mum -2.44 m 19.6 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.12 mm -105 mum -2.44 m 15.8 MeV 96.2 keV 101 mum 101 mum TargetPV eBrem - 2 -1.19 mm -376 mum -2.44 m 14.1 MeV 1.09 MeV 818 mum 919 mum TargetPV eBrem - 3 -1.2 mm -389 mum -2.44 m 13.7 MeV 11.9 keV 19.4 mum 938 mum TargetPV eBrem - 4 -1.29 mm -709 mum -2.44 m 12.1 MeV 509 keV 496 mum 1.43 mm TargetPV eBrem - 5 -1.87 mm -1.05 mm -2.44 m 10.3 MeV 1.25 MeV 1.05 mm 2.49 mm TargetPV eBrem - 6 -1.43 mm -1.7 mm -2.44 m 1.55 MeV 1.69 MeV 1.41 mm 3.9 mm TargetPV eBrem - 7 -1.58 mm -1.78 mm -2.44 m 1.05 MeV 496 keV 530 mum 4.43 mm TargetPV eIoni - 8 -1.48 mm -1.73 mm -2.44 m 360 keV 695 keV 431 mum 4.86 mm TargetPV eIoni - 9 -1.48 mm -1.74 mm -2.44 m 0 eV 360 keV 192 mum 5.05 mm TargetPV eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 87, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.43 mm -1.7 mm -2.44 m 7.07 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.27 cm -1.11 cm -2.43 m 325 keV 6.74 MeV 1.52 cm 1.52 cm TargetPV compt - 2 -1.29 cm -1.06 cm -2.43 m 0 eV 325 keV 588 mum 1.58 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 86, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.87 mm -1.05 mm -2.44 m 567 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.53 mm -3.5 mm -2.43 m 0 eV 567 keV 3.99 mm 3.99 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 85, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.29 mm -709 mum -2.44 m 1.1 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.35 mm -3.25 mm -2.43 m 488 keV 608 keV 4.17 mm 4.17 mm TargetPV compt - 2 -5.37 mm -700 mum -2.43 m 0 eV 488 keV 5.83 mm 9.99 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 84, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.2 mm -389 mum -2.44 m 319 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.89 mm -1.51 mm -2.44 m 238 keV 80.8 keV 1.67 mm 1.67 mm TargetPV compt - 2 -2.83 mm -1.88 mm -2.44 m 0 eV 238 keV 1.05 mm 2.72 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 83, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.19 mm -376 mum -2.44 m 647 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.58 mm -992 mum -2.44 m 330 keV 318 keV 871 mum 871 mum TargetPV compt - 2 -4.06 mm 649 mum -2.44 m 0 eV 330 keV 3.36 mm 4.23 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 82, Parent ID = 47 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.12 mm -105 mum -2.44 m 3.74 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -4.64 mm -2.43 mm -2.4 m 3.74 MeV 0 eV 3.83 cm 3.83 cm TargetPV Transportation - 2 -7.86 cm -5.12 cm -1.6 m 3.74 MeV 0 eV 80.5 cm 84.3 cm Tracker Transportation - 3 -9.71 cm -6.34 cm -1.4 m 3.74 MeV 0 eV 20.1 cm 1.04 m Chamber Transportation - 4 -15.3 cm -10 cm -80 cm 3.74 MeV 0 eV 60.4 cm 1.65 m Tracker Transportation - 5 -17.1 cm -11.2 cm -60 cm 3.74 MeV 0 eV 20.1 cm 1.85 m Chamber Transportation - 6 -22.7 cm -14.9 cm 0 fm 3.74 MeV 0 eV 60.4 cm 2.45 m Tracker Transportation - 7 -24.5 cm -16.1 cm 20 cm 3.74 MeV 0 eV 20.1 cm 2.65 m Chamber Transportation - 8 -30.1 cm -19.8 cm 80 cm 3.74 MeV 0 eV 60.4 cm 3.26 m Tracker Transportation - 9 -31.9 cm -21 cm 1 m 3.74 MeV 0 eV 20.1 cm 3.46 m Chamber Transportation - 10 -37.5 cm -24.7 cm 1.6 m 3.74 MeV 0 eV 60.4 cm 4.06 m Tracker Transportation - 11 -39.3 cm -25.9 cm 1.8 m 3.74 MeV 0 eV 20.1 cm 4.26 m Chamber Transportation - 12 -44.9 cm -29.5 cm 2.4 m 3.74 MeV 0 eV 60.4 cm 4.87 m Tracker Transportation - 13 -49.6 cm -32.6 cm 2.91 m 3.74 MeV 0 eV 51.3 cm 5.38 m OutOfWorld Transportation - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 10, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -461 mum -38.2 mum -2.45 m 845 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.38 mm -550 mum -2.43 m 0 eV 845 keV 1.19 cm 1.19 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 9, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -389 mum 17.6 mum -2.45 m 563 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -522 mum -49.9 mum -2.44 m 358 keV 205 keV 1.22 mm 1.22 mm TargetPV compt - 2 -832 mum -5.35 mm -2.44 m 260 keV 97.5 keV 5.88 mm 7.1 mm TargetPV compt - 3 -2.1 mm -5.77 mm -2.44 m 0 eV 260 keV 1.43 mm 8.53 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 8, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -356 mum 35.1 mum -2.45 m 2.7 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -406 mum 10.8 mum -2.45 m 0 eV 732 keV 433 mum 433 mum TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 88, Parent ID = 8 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -406 mum 10.8 mum -2.45 m 946 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -292 mum 57.4 mum -2.45 m 521 keV 425 keV 410 mum 410 mum TargetPV eIoni - 2 -289 mum 115 mum -2.45 m 202 keV 319 keV 283 mum 693 mum TargetPV eIoni - 3 -287 mum 112 mum -2.45 m 2.78e-11 eV 202 keV 79 mum 772 mum TargetPV eIoni - 4 -287 mum 112 mum -2.45 m 2.78e-11 eV 0 eV 0 fm 772 mum TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 90, Parent ID = 88 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -287 mum 112 mum -2.45 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 1.96 mm 268 mum -2.45 m 0 eV 511 keV 3.2 mm 3.2 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 89, Parent ID = 88 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -287 mum 112 mum -2.45 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.22 mm -92.1 mum -2.44 m 0 eV 88 keV 4.19 mm 4.19 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 91, Parent ID = 89 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.22 mm -92.1 mum -2.44 m 423 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.23 mm -92.9 mum -2.44 m 0 eV 423 keV 235 mum 235 mum TargetPV eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 7, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -245 mum 115 mum -2.45 m 7.62 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.06 mm -45.3 mum -2.43 m 4.16 MeV 3.46 MeV 2.24 cm 2.24 cm TargetPV compt - 2 -4.68 mm -308 mum -2.42 m 568 keV 3.59 MeV 6.51 mm 2.89 cm TargetPV compt - 3 -5.36 mm 893 mum -2.42 m 0 eV 568 keV 1.38 mm 3.03 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 6, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -238 mum 116 mum -2.45 m 10.1 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.1 mm -214 mum -2.41 m 0 eV 9.07 MeV 3.83 cm 3.83 cm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 92, Parent ID = 6 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.1 mm -214 mum -2.41 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.1 mm -214 mum -2.41 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 94, Parent ID = 92 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.1 mm -214 mum -2.41 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -2.1 mm -2.38 mm -2.41 m 0 eV 511 keV 4.45 mm 4.45 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 93, Parent ID = 92 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -3.1 mm -214 mum -2.41 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -5.65 mm 5.29 mm -2.42 m 182 keV 329 keV 1.13 cm 1.13 cm TargetPV compt - 2 -5.6 mm 5.32 mm -2.42 m 0 eV 182 keV 183 mum 1.15 cm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 5, Parent ID = 1 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -204 mum 116 mum -2.45 m 9.16 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.52 mm 30.6 mum -2.43 m 0 eV 8.14 MeV 1.65 cm 1.65 cm TargetPV conv - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 95, Parent ID = 5 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.52 mm 30.6 mum -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.52 mm 30.6 mum -2.43 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil + 0 -3.58 mm 949 mum -2.42 m 1.64 MeV 0 eV 0 fm 0 fm Target initStep + 1 -3.66 mm 885 mum -2.42 m 269 keV 1.37 MeV 367 mum 367 mum Target eBrem + 2 -3.66 mm 891 mum -2.42 m 0 eV 269 keV 123 mum 490 mum Target eIoni + 3 -3.66 mm 891 mum -2.42 m 0 eV 0 eV 0 fm 490 mum Target annihil ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 97, Parent ID = 95 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.52 mm 30.6 mum -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.71 mm 183 mum -2.43 m 0 eV 511 keV 1.51 mm 1.51 mm TargetPV phot + 0 -3.66 mm 891 mum -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.93 mm 3.39 mm -2.41 m 0 eV 88 keV 6.99 mm 6.99 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 98, Parent ID = 97 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.93 mm 3.39 mm -2.41 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.95 mm 3.38 mm -2.41 m 85.2 keV 338 keV 235 mum 235 mum Target eIoni + 2 -8.95 mm 3.38 mm -2.41 m 2.78e-11 eV 85.2 keV 21.2 mum 256 mum Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 96, Parent ID = 95 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.52 mm 30.6 mum -2.43 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.48 mm -2.66 mum -2.43 m 0 eV 511 keV 329 mum 329 mum TargetPV phot + 0 -3.66 mm 891 mum -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -936 mum -396 mum -2.42 m 0 eV 88 keV 3.6 mm 3.6 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 99, Parent ID = 96 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -936 mum -396 mum -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -925 mum -401 mum -2.42 m 1.11e-10 eV 423 keV 235 mum 235 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 94, Parent ID = 21 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.58 mm 949 mum -2.42 m 1.77 MeV 0 eV 0 fm 0 fm Target initStep + 1 -3.45 mm 837 mum -2.42 m 1.24 MeV 526 keV 570 mum 570 mum Target eIoni + 2 -3.47 mm 749 mum -2.42 m 735 keV 508 keV 470 mum 1.04 mm Target eIoni + 3 -3.47 mm 770 mum -2.42 m 225 keV 510 keV 354 mum 1.39 mm Target eIoni + 4 -3.47 mm 765 mum -2.42 m 2.78e-11 eV 225 keV 97.3 mum 1.49 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 20, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.06 mm -431 mum -2.44 m 302 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.08 mm -439 mum -2.44 m 0 eV 88 keV 1.07 mm 1.07 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 100, Parent ID = 20 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.08 mm -439 mum -2.44 m 214 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.08 mm -439 mum -2.44 m 0 eV 214 keV 90.4 mum 90.4 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 19, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.01 mm -406 mum -2.44 m 288 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.14 mm -423 mum -2.44 m 0 eV 88 keV 1.74 mm 1.74 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 101, Parent ID = 19 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.14 mm -423 mum -2.44 m 200 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.14 mm -423 mum -2.44 m 0 eV 200 keV 81.7 mum 81.7 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 18, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -741 mum -374 mum -2.44 m 1.2 MeV 0 eV 0 fm 0 fm Target initStep + 1 -2.12 mm -48 mum -2.43 m 468 keV 0 eV 1.22 cm 1.22 cm Target compt + 2 16.1 mum -1.09 mm -2.43 m 0 eV 88 keV 2.65 mm 1.49 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 103, Parent ID = 18 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 16.1 mum -1.09 mm -2.43 m 380 keV 0 eV 0 fm 0 fm Target initStep + 1 32 mum -1.08 mm -2.43 m 89 keV 291 keV 207 mum 207 mum Target eIoni + 2 31.7 mum -1.08 mm -2.43 m 0 eV 89 keV 22.8 mum 230 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 102, Parent ID = 18 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.12 mm -48 mum -2.43 m 736 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.18 mm -98.4 mum -2.43 m 341 keV 394 keV 355 mum 355 mum Target eIoni + 2 -2.18 mm -102 mum -2.43 m 0 eV 341 keV 178 mum 533 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 17, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -730 mum -369 mum -2.44 m 1.99 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.17 mm -389 mum -2.43 m 840 keV 0 eV 5.89 mm 5.89 mm Target compt + 2 -1.24 mm -1.1 mm -2.43 m 0 eV 88 keV 927 mum 6.82 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 105, Parent ID = 17 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.24 mm -1.1 mm -2.43 m 752 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.26 mm -1.14 mm -2.43 m 142 keV 70.9 keV 62 mum 62 mum Target eBrem + 2 -1.26 mm -1.14 mm -2.43 m 0 eV 142 keV 47.9 mum 110 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 106, Parent ID = 105 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.26 mm -1.14 mm -2.43 m 539 keV 0 eV 0 fm 0 fm Target initStep + 1 -6.46 mm -8.08 mm -2.42 m 517 keV 0 eV 1.52 cm 1.52 cm Target compt + 2 -7.22 mm -8.58 mm -2.42 m 194 keV 0 eV 1.26 mm 1.64 cm Target compt + 3 -7.23 mm -8.57 mm -2.42 m 0 eV 88 keV 77.1 mum 1.65 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 109, Parent ID = 106 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -7.23 mm -8.57 mm -2.42 m 106 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.23 mm -8.57 mm -2.42 m 0 eV 106 keV 30.4 mum 30.4 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 108, Parent ID = 106 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -7.22 mm -8.58 mm -2.42 m 322 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.22 mm -8.59 mm -2.42 m 0 eV 322 keV 164 mum 164 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 107, Parent ID = 106 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -6.46 mm -8.08 mm -2.42 m 22.6 keV 0 eV 0 fm 0 fm Target initStep + 1 -6.46 mm -8.08 mm -2.42 m 1.04e-11 eV 22.6 keV 2.46 mum 2.46 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 104, Parent ID = 17 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.17 mm -389 mum -2.43 m 1.15 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.08 mm -431 mum -2.43 m 631 keV 517 keV 451 mum 451 mum Target eIoni + 2 -1.12 mm -466 mum -2.43 m 265 keV 366 keV 323 mum 774 mum Target eIoni + 3 -1.11 mm -468 mum -2.43 m 0 eV 265 keV 124 mum 898 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 16, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -557 mum -249 mum -2.44 m 5.94 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.22 mm -671 mum -2.43 m 0 eV 0 eV 7.63 mm 7.63 mm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 111, Parent ID = 16 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.22 mm -671 mum -2.43 m 4.3 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.13 mm -1.16 mm -2.43 m 2.54 MeV 1.77 MeV 1 mm 1 mm Target eIoni + 2 -833 mum -941 mum -2.43 m 1.09 MeV 1.44 MeV 713 mum 1.72 mm Target eIoni + 3 -668 mum -941 mum -2.43 m 687 keV 404 keV 443 mum 2.16 mm Target eIoni + 4 -729 mum -1 mm -2.43 m 341 keV 346 keV 342 mum 2.5 mm Target eIoni + 5 -737 mum -1.01 mm -2.43 m 0 eV 341 keV 175 mum 2.68 mm Target eIoni + 6 -737 mum -1.01 mm -2.43 m 0 eV 0 eV 0 fm 2.68 mm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 113, Parent ID = 111 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -737 mum -1.01 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 40.8 mum -2.85 mm -2.44 m 333 keV 0 eV 3.54 mm 3.54 mm Target compt + 2 4.05 mm -709 mum -2.44 m 246 keV 0 eV 5.75 mm 9.29 mm Target compt + 3 4.68 mm -1.13 mm -2.44 m 0 eV 88 keV 766 mum 1.01 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 116, Parent ID = 113 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.68 mm -1.13 mm -2.44 m 158 keV 0 eV 0 fm 0 fm Target initStep + 1 4.68 mm -1.13 mm -2.44 m 0 eV 158 keV 56.6 mum 56.6 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 115, Parent ID = 113 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.05 mm -709 mum -2.44 m 87.2 keV 0 eV 0 fm 0 fm Target initStep + 1 4.05 mm -708 mum -2.44 m 0 eV 87.2 keV 22 mum 22 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 114, Parent ID = 113 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 40.8 mum -2.85 mm -2.44 m 178 keV 0 eV 0 fm 0 fm Target initStep + 1 39.9 mum -2.85 mm -2.44 m 5.55e-11 eV 178 keV 68.1 mum 68.1 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 112, Parent ID = 111 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -737 mum -1.01 mm -2.43 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.22 mm 124 mum -2.43 m 375 keV 0 eV 2.2 mm 2.2 mm Target compt + 2 -1.18 mm 156 mum -2.43 m 0 eV 88 keV 74.2 mum 2.27 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 118, Parent ID = 112 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.18 mm 156 mum -2.43 m 287 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.17 mm 159 mum -2.43 m 5.55e-11 eV 287 keV 139 mum 139 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 117, Parent ID = 112 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.22 mm 124 mum -2.43 m 136 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.22 mm 125 mum -2.43 m 0 eV 136 keV 44.8 mum 44.8 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 110, Parent ID = 16 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.22 mm -671 mum -2.43 m 611 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.22 mm -707 mum -2.43 m 264 keV 347 keV 317 mum 317 mum Target eIoni + 2 -1.22 mm -709 mum -2.43 m 0 eV 264 keV 123 mum 440 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 15, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -531 mum -247 mum -2.44 m 1.82 MeV 0 eV 0 fm 0 fm Target initStep + 1 -3.51 mm 218 mum -2.42 m 255 keV 0 eV 2.57 cm 2.57 cm Target compt + 2 -4.1 mm 2.14 mm -2.42 m 0 eV 88 keV 3.08 mm 2.88 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 120, Parent ID = 15 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -4.1 mm 2.14 mm -2.42 m 167 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.1 mm 2.14 mm -2.42 m 0 eV 167 keV 62 mum 62 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 119, Parent ID = 15 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.51 mm 218 mum -2.42 m 1.56 MeV 0 eV 0 fm 0 fm Target initStep + 1 -3.53 mm 63.2 mum -2.42 m 939 keV 333 keV 342 mum 342 mum Target eBrem + 2 -3.48 mm -26.6 mum -2.42 m 444 keV 494 keV 405 mum 747 mum Target eIoni + 3 -3.48 mm -22.7 mum -2.42 m 111 keV 334 keV 247 mum 994 mum Target eIoni + 4 -3.48 mm -23.4 mum -2.42 m 1.39e-11 eV 111 keV 32.3 mum 1.03 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 121, Parent ID = 119 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.53 mm 63.2 mum -2.42 m 288 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.01 mm -2.3 mm -2.42 m 0 eV 88 keV 2.72 mm 2.72 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 122, Parent ID = 121 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -4.01 mm -2.3 mm -2.42 m 200 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.01 mm -2.3 mm -2.42 m 0 eV 200 keV 81.1 mum 81.1 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 14, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -469 mum -52 mum -2.44 m 3.61 MeV 0 eV 0 fm 0 fm Target initStep + 1 -740 mum -325 mum -2.44 m 0 eV 88 keV 2.28 mm 2.28 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 123, Parent ID = 14 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -740 mum -325 mum -2.44 m 3.52 MeV 0 eV 0 fm 0 fm Target initStep + 1 -911 mum -721 mum -2.44 m 2.51 MeV 1.01 MeV 862 mum 862 mum Target eIoni + 2 -633 mum -467 mum -2.44 m 1.88 MeV 635 keV 698 mum 1.56 mm Target eIoni + 3 -540 mum -269 mum -2.44 m 1.27 MeV 607 keV 589 mum 2.15 mm Target eIoni + 4 -611 mum -246 mum -2.44 m 2.22e-10 eV 1.27 MeV 476 mum 2.62 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 13, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -389 mum -30.1 mum -2.44 m 48 MeV 0 eV 0 fm 0 fm Target initStep + 1 -893 mum -539 mum -2.44 m 0 eV 0 eV 6.47 mm 6.47 mm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 125, Parent ID = 13 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -893 mum -539 mum -2.44 m 39.4 MeV 0 eV 0 fm 0 fm Target initStep + 1 -894 mum -561 mum -2.44 m 36.6 MeV 837 keV 502 mum 502 mum Target eBrem + 2 -919 mum -571 mum -2.44 m 35.9 MeV 123 keV 96.8 mum 598 mum Target eBrem + 3 -1.1 mm -693 mum -2.44 m 3.59 MeV 862 keV 750 mum 1.35 mm Target eBrem + 4 -1.51 mm -482 mum -2.44 m 2.44 MeV 1.15 MeV 890 mum 2.24 mm Target eIoni + 5 -1.53 mm -456 mum -2.44 m 1.64 MeV 102 keV 141 mum 2.38 mm Target eBrem + 6 -1.53 mm -655 mum -2.44 m 811 keV 337 keV 358 mum 2.74 mm Target eBrem + 7 -1.45 mm -747 mum -2.44 m 412 keV 399 keV 377 mum 3.12 mm Target eIoni + 8 -1.47 mm -747 mum -2.44 m 0 eV 412 keV 227 mum 3.34 mm Target eIoni + 9 -1.47 mm -747 mum -2.44 m 0 eV 0 eV 0 fm 3.34 mm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 132, Parent ID = 125 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.47 mm -747 mum -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -95.2 mum 1.92 mm -2.43 m 351 keV 0 eV 3.47 mm 3.47 mm Target compt + 2 -165 mum 2 mm -2.43 m 177 keV 0 eV 136 mum 3.61 mm Target compt + 3 384 mum 1.17 mm -2.43 m 0 eV 88 keV 1.07 mm 4.68 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 135, Parent ID = 132 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 384 mum 1.17 mm -2.43 m 89.1 keV 0 eV 0 fm 0 fm Target initStep + 1 384 mum 1.17 mm -2.43 m 2.78e-11 eV 89.1 keV 22.8 mum 22.8 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 134, Parent ID = 132 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -165 mum 2 mm -2.43 m 173 keV 0 eV 0 fm 0 fm Target initStep + 1 -167 mum 2 mm -2.43 m 2.78e-11 eV 173 keV 65.5 mum 65.5 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 133, Parent ID = 132 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -95.2 mum 1.92 mm -2.43 m 160 keV 0 eV 0 fm 0 fm Target initStep + 1 -92.8 mum 1.92 mm -2.43 m 8.33e-11 eV 160 keV 58 mum 58 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 131, Parent ID = 125 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.47 mm -747 mum -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.61 mm -1.02 mm -2.44 m 510 keV 0 eV 359 mum 359 mum Target compt + 2 -3.28 mm -3.72 mm -2.44 m 0 eV 88 keV 3.66 mm 4.02 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 137, Parent ID = 131 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.28 mm -3.72 mm -2.44 m 422 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.29 mm -3.73 mm -2.44 m 19.5 keV 402 keV 234 mum 234 mum Target eIoni + 2 -3.29 mm -3.73 mm -2.44 m 6.94e-12 eV 19.5 keV 1.95 mum 236 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 136, Parent ID = 131 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.61 mm -1.02 mm -2.44 m 1.21 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.61 mm -1.02 mm -2.44 m 0 eV 1.21 keV 36.6 nm 36.6 nm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 130, Parent ID = 125 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.53 mm -655 mum -2.44 m 495 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.59 mm -3.07 mm -2.44 m 0 eV 88 keV 2.62 mm 2.62 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 138, Parent ID = 130 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.59 mm -3.07 mm -2.44 m 407 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.58 mm -3.08 mm -2.44 m 58.2 keV 348 keV 225 mum 225 mum Target eIoni + 2 -1.59 mm -3.08 mm -2.44 m 0 eV 58.2 keV 11.4 mum 236 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 129, Parent ID = 125 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.53 mm -456 mum -2.44 m 695 keV 0 eV 0 fm 0 fm Target initStep + 1 -651 mum -1.02 mm -2.44 m 0 eV 88 keV 2.08 mm 2.08 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 139, Parent ID = 129 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -651 mum -1.02 mm -2.44 m 607 keV 0 eV 0 fm 0 fm Target initStep + 1 -640 mum -1.02 mm -2.44 m 1.11e-10 eV 607 keV 315 mum 315 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 128, Parent ID = 125 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.1 mm -693 mum -2.44 m 31.4 MeV 0 eV 0 fm 0 fm Target initStep + 1 -7.06 mm 5.13 mm -2.4 m 31.4 MeV 0 eV 3.75 cm 3.75 cm Target Transportation + 2 -13.7 cm 13.3 cm -1.6 m 31.4 MeV 0 eV 82 cm 85.8 cm Tracker Transportation + 3 -17 cm 16.4 cm -1.4 m 31.4 MeV 0 eV 20.5 cm 1.06 m Chamber Transportation + 4 -26.8 cm 26 cm -80 cm 31.4 MeV 0 eV 61.5 cm 1.68 m Tracker Transportation + 5 -30 cm 29.2 cm -60 cm 31.4 MeV 0 eV 20.5 cm 1.88 m Chamber Transportation + 6 -39.8 cm 38.7 cm 0 fm 31.4 MeV 0 eV 61.5 cm 2.5 m Tracker Transportation + 7 -43.1 cm 41.9 cm 20 cm 31.4 MeV 0 eV 20.5 cm 2.7 m Chamber Transportation + 8 -52.8 cm 51.5 cm 80 cm 31.4 MeV 0 eV 61.5 cm 3.32 m Tracker Transportation + 9 -56.1 cm 54.7 cm 1 m 31.4 MeV 0 eV 20.5 cm 3.52 m Chamber Transportation + 10 -65.9 cm 64.2 cm 1.6 m 31.4 MeV 0 eV 61.5 cm 4.14 m Tracker Transportation + 11 -69.1 cm 67.4 cm 1.8 m 31.4 MeV 0 eV 20.5 cm 4.35 m Chamber Transportation + 12 -78.9 cm 77 cm 2.4 m 31.4 MeV 0 eV 61.5 cm 4.96 m Tracker Transportation + 13 -87.2 cm 85.1 cm 2.91 m 31.4 MeV 0 eV 52.3 cm 5.48 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 127, Parent ID = 125 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -919 mum -571 mum -2.44 m 585 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.61 mm -1.05 mm -2.43 m 516 keV 0 eV 5.03 mm 5.03 mm Target compt + 2 -2.29 mm -1.86 mm -2.43 m 336 keV 0 eV 2.89 mm 7.92 mm Target compt + 3 -1.6 mm -864 mum -2.43 m 0 eV 88 keV 1.55 mm 9.47 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 142, Parent ID = 127 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.6 mm -864 mum -2.43 m 248 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.6 mm -860 mum -2.43 m 2.78e-11 eV 248 keV 112 mum 112 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 141, Parent ID = 127 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.29 mm -1.86 mm -2.43 m 180 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.29 mm -1.86 mm -2.43 m 5.55e-11 eV 180 keV 69.4 mum 69.4 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 140, Parent ID = 127 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.61 mm -1.05 mm -2.43 m 69.4 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.61 mm -1.05 mm -2.43 m 5.55e-11 eV 69.4 keV 15.2 mum 15.2 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 126, Parent ID = 125 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -894 mum -561 mum -2.44 m 1.94 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.2 cm -5.65 mm -2.4 m 1.94 MeV 0 eV 3.93 cm 3.93 cm Target Transportation + 2 -48.8 cm -22.3 cm -80 cm 1.94 MeV 0 eV 1.68 m 1.72 m Tracker Transportation + 3 -54.7 cm -25.1 cm -60 cm 1.94 MeV 0 eV 21 cm 1.93 m Chamber Transportation + 4 -72.5 cm -33.2 cm 0 fm 1.94 MeV 0 eV 63.1 cm 2.56 m Tracker Transportation + 5 -78.5 cm -36 cm 20 cm 1.94 MeV 0 eV 21 cm 2.77 m Chamber Transportation + 6 -96.3 cm -44.1 cm 80 cm 1.94 MeV 0 eV 63.1 cm 3.41 m Tracker Transportation + 7 -1.02 m -46.8 cm 1 m 1.94 MeV 0 eV 21 cm 3.62 m Chamber Transportation + 8 -1.2 m -55 cm 1.6 m 1.94 MeV 0 eV 63.1 cm 4.25 m Tracker Transportation + 9 -1.26 m -57.7 cm 1.8 m 1.94 MeV 0 eV 21 cm 4.46 m Chamber Transportation + 10 -1.44 m -65.9 cm 2.4 m 1.94 MeV 0 eV 63.1 cm 5.09 m Tracker Transportation + 11 -1.59 m -72.8 cm 2.91 m 1.94 MeV 0 eV 53.7 cm 5.63 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 124, Parent ID = 13 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -893 mum -539 mum -2.44 m 7.62 MeV 0 eV 0 fm 0 fm Target initStep + 1 -943 mum -263 mum -2.44 m 2.03 MeV 5.59 MeV 1.48 mm 1.48 mm Target eIoni + 2 -862 mum -410 mum -2.44 m 1.17 MeV 857 keV 616 mum 2.09 mm Target eIoni + 3 -760 mum -455 mum -2.44 m 786 keV 386 keV 456 mum 2.55 mm Target eIoni + 4 -759 mum -546 mum -2.44 m 471 keV 315 keV 368 mum 2.92 mm Target eIoni + 5 -785 mum -559 mum -2.44 m 141 keV 330 keV 260 mum 3.18 mm Target eIoni + 6 -785 mum -560 mum -2.44 m 0 eV 141 keV 47.5 mum 3.22 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 12, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -385 mum -26.8 mum -2.44 m 541 keV 0 eV 0 fm 0 fm Target initStep + 1 -825 mum -255 mum -2.44 m 0 eV 88 keV 4.56 mm 4.56 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 143, Parent ID = 12 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -825 mum -255 mum -2.44 m 453 keV 0 eV 0 fm 0 fm Target initStep + 1 -820 mum -278 mum -2.44 m 119 keV 334 keV 251 mum 251 mum Target eIoni + 2 -821 mum -279 mum -2.44 m 0 eV 119 keV 36.4 mum 288 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 11, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -374 mum -21.8 mum -2.44 m 16.7 MeV 0 eV 0 fm 0 fm Target initStep + 1 -526 mum -92.6 mum -2.44 m 0 eV 0 eV 2.29 mm 2.29 mm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 145, Parent ID = 11 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -526 mum -92.6 mum -2.44 m 9.08 MeV 0 eV 0 fm 0 fm Target initStep + 1 -645 mum -65.5 mum -2.44 m 7.91 MeV 478 keV 343 mum 343 mum Target eBrem + 2 -561 mum -133 mum -2.44 m 7.11 MeV 369 keV 390 mum 732 mum Target eBrem + 3 -857 mum -299 mum -2.44 m 4.53 MeV 1.45 MeV 1.24 mm 1.97 mm Target eBrem + 4 -653 mum -361 mum -2.44 m 2.96 MeV 1.57 MeV 1.04 mm 3.01 mm Target eIoni + 5 -629 mum -418 mum -2.44 m 2.04 MeV 86.9 keV 99.8 mum 3.11 mm Target eBrem + 6 -483 mum -265 mum -2.44 m 1.39 MeV 646 keV 625 mum 3.74 mm Target eIoni + 7 -279 mum -374 mum -2.44 m 907 keV 483 keV 504 mum 4.24 mm Target eIoni + 8 -375 mum -467 mum -2.44 m 475 keV 432 keV 401 mum 4.64 mm Target eIoni + 9 -396 mum -450 mum -2.44 m 3.62 keV 471 keV 262 mum 4.9 mm Target eIoni + 10 -396 mum -450 mum -2.44 m 0 eV 3.62 keV 117 nm 4.9 mm Target eIoni + 11 -396 mum -450 mum -2.44 m 0 eV 0 eV 0 fm 4.9 mm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 151, Parent ID = 145 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -396 mum -450 mum -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 499 mum -195 mum -2.44 m 416 keV 0 eV 2.71 mm 2.71 mm Target compt + 2 5.51 mm 44.2 mum -2.45 m 0 eV 88 keV 5.86 mm 8.57 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 153, Parent ID = 151 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 5.51 mm 44.2 mum -2.45 m 328 keV 0 eV 0 fm 0 fm Target initStep + 1 5.52 mm 44.6 mum -2.45 m 5.55e-11 eV 328 keV 168 mum 168 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 152, Parent ID = 151 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 499 mum -195 mum -2.44 m 95.2 keV 0 eV 0 fm 0 fm Target initStep + 1 499 mum -195 mum -2.44 m 5.55e-11 eV 95.2 keV 25.4 mum 25.4 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 150, Parent ID = 145 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -396 mum -450 mum -2.44 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -437 mum -462 mum -2.44 m 276 keV 0 eV 124 mum 124 mum Target compt + 2 -4.09 mm -540 mum -2.44 m 0 eV 88 keV 3.73 mm 3.85 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 155, Parent ID = 150 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -4.09 mm -540 mum -2.44 m 188 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.1 mm -540 mum -2.44 m 8.33e-11 eV 188 keV 73.9 mum 73.9 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 154, Parent ID = 150 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -437 mum -462 mum -2.44 m 235 keV 0 eV 0 fm 0 fm Target initStep + 1 -436 mum -462 mum -2.44 m 0 eV 235 keV 104 mum 104 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 149, Parent ID = 145 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -629 mum -418 mum -2.44 m 837 keV 0 eV 0 fm 0 fm Target initStep + 1 5.85 mm -4.38 mm -2.45 m 494 keV 0 eV 1.16 cm 1.16 cm Target compt + 2 6.14 mm -4.08 mm -2.45 m 0 eV 88 keV 535 mum 1.21 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 157, Parent ID = 149 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 6.14 mm -4.08 mm -2.45 m 406 keV 0 eV 0 fm 0 fm Target initStep + 1 6.15 mm -4.07 mm -2.45 m 0 eV 406 keV 224 mum 224 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 156, Parent ID = 149 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 5.85 mm -4.38 mm -2.45 m 343 keV 0 eV 0 fm 0 fm Target initStep + 1 5.85 mm -4.39 mm -2.45 m 0 eV 343 keV 179 mum 179 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 148, Parent ID = 145 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -857 mum -299 mum -2.44 m 1.13 MeV 0 eV 0 fm 0 fm Target initStep + 1 1.48 mm -1.22 cm -2.43 m 482 keV 0 eV 1.67 cm 1.67 cm Target compt + 2 3.87 mm -1.23 cm -2.43 m 180 keV 0 eV 2.57 mm 1.93 cm Target compt + 3 894 mum -1.25 cm -2.43 m 0 eV 88 keV 3.13 mm 2.24 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 160, Parent ID = 148 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 894 mum -1.25 cm -2.43 m 91.7 keV 0 eV 0 fm 0 fm Target initStep + 1 893 mum -1.25 cm -2.43 m 0 eV 91.7 keV 23.9 mum 23.9 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 159, Parent ID = 148 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 3.87 mm -1.23 cm -2.43 m 303 keV 0 eV 0 fm 0 fm Target initStep + 1 3.88 mm -1.23 cm -2.43 m 0 eV 303 keV 150 mum 150 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 158, Parent ID = 148 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.48 mm -1.22 cm -2.43 m 651 keV 0 eV 0 fm 0 fm Target initStep + 1 1.48 mm -1.22 cm -2.43 m 316 keV 335 keV 330 mum 330 mum Target eIoni + 2 1.47 mm -1.22 cm -2.43 m 1.11e-10 eV 316 keV 160 mum 489 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 147, Parent ID = 145 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -561 mum -133 mum -2.44 m 430 keV 0 eV 0 fm 0 fm Target initStep + 1 -320 mum -1.6 mm -2.44 m 0 eV 88 keV 3.13 mm 3.13 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 161, Parent ID = 147 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -320 mum -1.6 mm -2.44 m 342 keV 0 eV 0 fm 0 fm Target initStep + 1 -320 mum -1.6 mm -2.44 m 0 eV 342 keV 179 mum 179 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 146, Parent ID = 145 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -645 mum -65.5 mum -2.44 m 698 keV 0 eV 0 fm 0 fm Target initStep + 1 -521 mum -532 mum -2.44 m 0 eV 88 keV 895 mum 895 mum Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 162, Parent ID = 146 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -521 mum -532 mum -2.44 m 610 keV 0 eV 0 fm 0 fm Target initStep + 1 -538 mum -597 mum -2.44 m 333 keV 277 keV 316 mum 316 mum Target eIoni + 2 -534 mum -602 mum -2.44 m 0 eV 333 keV 172 mum 488 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 144, Parent ID = 11 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -526 mum -92.6 mum -2.44 m 6.63 MeV 0 eV 0 fm 0 fm Target initStep + 1 -70.5 mum -389 mum -2.44 m 4.27 MeV 1.85 MeV 1.18 mm 1.18 mm Target eBrem + 2 398 mum -668 mum -2.44 m 3.03 MeV 928 keV 665 mum 1.84 mm Target eBrem + 3 -14.8 mum -453 mum -2.44 m 2.32 MeV 701 keV 782 mum 2.62 mm Target eIoni + 4 145 mum -692 mum -2.44 m 1.21 MeV 296 keV 321 mum 2.95 mm Target eBrem + 5 160 mum -769 mum -2.44 m 783 keV 423 keV 463 mum 3.41 mm Target eIoni + 6 130 mum -772 mum -2.44 m 80.8 keV 703 keV 367 mum 3.78 mm Target eIoni + 7 131 mum -772 mum -2.44 m 0 eV 80.8 keV 19.5 mum 3.8 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 165, Parent ID = 144 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 145 mum -692 mum -2.44 m 822 keV 0 eV 0 fm 0 fm Target initStep + 1 -209 mum -2.5 cm -2.44 m 822 keV 0 eV 2.45 cm 2.45 cm Target Transportation + 2 -4.12 mm -29.4 cm -2.4 m 822 keV 0 eV 27.1 cm 29.6 cm World Transportation + 3 -3.48 cm -2.4 m -2.1 m 822 keV 0 eV 2.13 m 2.42 m Tracker Transportation + 4 -4.22 cm -2.91 m -2.03 m 822 keV 0 eV 51.5 cm 2.94 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 164, Parent ID = 144 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 398 mum -668 mum -2.44 m 319 keV 0 eV 0 fm 0 fm Target initStep + 1 209 mum -624 mum -2.44 m 0 eV 88 keV 331 mum 331 mum Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 166, Parent ID = 164 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 209 mum -624 mum -2.44 m 231 keV 0 eV 0 fm 0 fm Target initStep + 1 206 mum -623 mum -2.44 m 2.78e-11 eV 231 keV 101 mum 101 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 163, Parent ID = 144 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -70.5 mum -389 mum -2.44 m 508 keV 0 eV 0 fm 0 fm Target initStep + 1 555 mum -3.49 mm -2.44 m 0 eV 88 keV 3.16 mm 3.16 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 167, Parent ID = 163 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 555 mum -3.49 mm -2.44 m 420 keV 0 eV 0 fm 0 fm Target initStep + 1 558 mum -3.5 mm -2.44 m 0 eV 420 keV 233 mum 233 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 10, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -235 mum 70.6 mum -2.45 m 29 MeV 0 eV 0 fm 0 fm Target initStep + 1 -521 mum -55.2 mum -2.44 m 0 eV 0 eV 6.19 mm 6.19 mm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 169, Parent ID = 10 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -521 mum -55.2 mum -2.44 m 18.5 MeV 0 eV 0 fm 0 fm Target initStep + 1 -132 mum 21 mum -2.44 m 15.7 MeV 1.7 MeV 1.63 mm 1.63 mm Target eBrem + 2 281 mum 1.47 mm -2.44 m 12.2 MeV 3.5 MeV 2.67 mm 4.3 mm Target eIoni + 3 205 mum 1.61 mm -2.44 m 8.66 MeV 673 keV 598 mum 4.9 mm Target eBrem + 4 442 mum 1.63 mm -2.44 m 2.96 MeV 739 keV 696 mum 5.59 mm Target eBrem + 5 111 mum 1.78 mm -2.43 m 2.17 MeV 794 keV 785 mum 6.38 mm Target eIoni + 6 -112 mum 1.56 mm -2.43 m 1.58 MeV 590 keV 649 mum 7.03 mm Target eIoni + 7 -322 mum 1.46 mm -2.43 m 1.09 MeV 485 keV 541 mum 7.57 mm Target eIoni + 8 -334 mum 1.48 mm -2.43 m 0 eV 26.4 keV 34.8 mum 7.6 mm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 174, Parent ID = 169 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -334 mum 1.48 mm -2.43 m 1.55 MeV 0 eV 0 fm 0 fm Target initStep + 1 -3.18 mm -1.65 mm -2.44 m 666 keV 0 eV 5.54 mm 5.54 mm Target compt + 2 -3.68 mm -3.4 mm -2.44 m 0 eV 88 keV 1.85 mm 7.39 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 176, Parent ID = 174 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.68 mm -3.4 mm -2.44 m 578 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.69 mm -3.43 mm -2.44 m 1.11e-10 eV 578 keV 305 mum 305 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 175, Parent ID = 174 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -3.18 mm -1.65 mm -2.44 m 886 keV 0 eV 0 fm 0 fm Target initStep + 1 -3.17 mm -1.58 mm -2.44 m 482 keV 404 keV 393 mum 393 mum Target eIoni + 2 -3.19 mm -1.56 mm -2.44 m 83.7 keV 399 keV 266 mum 659 mum Target eIoni + 3 -3.18 mm -1.56 mm -2.44 m 0 eV 83.7 keV 20.6 mum 679 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 173, Parent ID = 169 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -334 mum 1.48 mm -2.43 m 535 keV 0 eV 0 fm 0 fm Target initStep + 1 -168 mum 846 mum -2.43 m 219 keV 0 eV 1.12 mm 1.12 mm Target compt + 2 1.99 mum 437 mum -2.43 m 0 eV 88 keV 828 mum 1.95 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 178, Parent ID = 173 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.99 mum 437 mum -2.43 m 131 keV 0 eV 0 fm 0 fm Target initStep + 1 2.37 mum 436 mum -2.43 m 0 eV 131 keV 42.1 mum 42.1 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 177, Parent ID = 173 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -168 mum 846 mum -2.43 m 316 keV 0 eV 0 fm 0 fm Target initStep + 1 -167 mum 844 mum -2.43 m 1.67e-10 eV 316 keV 160 mum 160 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 172, Parent ID = 169 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 442 mum 1.63 mm -2.44 m 4.96 MeV 0 eV 0 fm 0 fm Target initStep + 1 3.98 mm 6.17 mm -2.42 m 0 eV 0 eV 1.85 cm 1.85 cm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 180, Parent ID = 172 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 3.98 mm 6.17 mm -2.42 m 270 keV 0 eV 0 fm 0 fm Target initStep + 1 3.98 mm 6.17 mm -2.42 m 0 eV 270 keV 124 mum 124 mum Target eIoni + 2 3.98 mm 6.17 mm -2.42 m 0 eV 0 eV 0 fm 124 mum Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 182, Parent ID = 180 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 3.98 mm 6.17 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 7.69 mm 8.88 mm -2.42 m 0 eV 88 keV 8.24 mm 8.24 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 183, Parent ID = 182 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 7.69 mm 8.88 mm -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 7.7 mm 8.86 mm -2.42 m 140 keV 283 keV 235 mum 235 mum Target eIoni + 2 7.7 mm 8.86 mm -2.42 m 5.55e-11 eV 140 keV 46.9 mum 282 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 181, Parent ID = 180 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 3.98 mm 6.17 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 2.98 mm 5.44 mm -2.42 m 0 eV 88 keV 2.22 mm 2.22 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 184, Parent ID = 181 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.98 mm 5.44 mm -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 2.97 mm 5.44 mm -2.42 m 6.77 keV 416 keV 235 mum 235 mum Target eIoni + 2 2.97 mm 5.44 mm -2.42 m 6.07e-12 eV 6.77 keV 393 nm 235 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 179, Parent ID = 172 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 3.98 mm 6.17 mm -2.42 m 3.67 MeV 0 eV 0 fm 0 fm Target initStep + 1 3.92 mm 6.12 mm -2.42 m 784 keV 385 keV 320 mum 320 mum Target eBrem + 2 3.92 mm 6.2 mm -2.42 m 401 keV 383 keV 368 mum 687 mum Target eIoni + 3 3.92 mm 6.2 mm -2.42 m 1.67e-10 eV 401 keV 221 mum 908 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 185, Parent ID = 179 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 3.92 mm 6.12 mm -2.42 m 2.5 MeV 0 eV 0 fm 0 fm Target initStep + 1 4.26 mm 8.54 mm -2.42 m 0 eV 0 eV 3.18 mm 3.18 mm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 187, Parent ID = 185 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.26 mm 8.54 mm -2.42 m 594 keV 0 eV 0 fm 0 fm Target initStep + 1 4.25 mm 8.52 mm -2.42 m 256 keV 339 keV 312 mum 312 mum Target eIoni + 2 4.24 mm 8.51 mm -2.42 m 0 eV 256 keV 114 mum 426 mum Target eIoni + 3 4.24 mm 8.51 mm -2.42 m 0 eV 0 eV 0 fm 426 mum Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 189, Parent ID = 187 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.24 mm 8.51 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 8.56 mm 8.76 mm -2.42 m 0 eV 88 keV 4.32 mm 4.32 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 190, Parent ID = 189 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 8.56 mm 8.76 mm -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 8.57 mm 8.76 mm -2.42 m 4.08 keV 419 keV 235 mum 235 mum Target eIoni + 2 8.57 mm 8.76 mm -2.42 m 8.67e-13 eV 4.08 keV 194 nm 235 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 188, Parent ID = 187 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.24 mm 8.51 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 2.18 mm 8.39 mm -2.42 m 0 eV 88 keV 2.07 mm 2.07 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 191, Parent ID = 188 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.18 mm 8.39 mm -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 2.16 mm 8.39 mm -2.42 m 0 eV 423 keV 235 mum 235 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 186, Parent ID = 185 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 4.26 mm 8.54 mm -2.42 m 887 keV 0 eV 0 fm 0 fm Target initStep + 1 4.28 mm 8.54 mm -2.42 m 371 keV 515 keV 393 mum 393 mum Target eIoni + 2 4.28 mm 8.55 mm -2.42 m 1.11e-10 eV 371 keV 201 mum 594 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 171, Parent ID = 169 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 205 mum 1.61 mm -2.44 m 2.88 MeV 0 eV 0 fm 0 fm Target initStep + 1 1.41 mm 4.11 mm -2.43 m 571 keV 0 eV 7.47 mm 7.47 mm Target compt + 2 319 mum 4.42 mm -2.43 m 0 eV 88 keV 1.22 mm 8.68 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 193, Parent ID = 171 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 319 mum 4.42 mm -2.43 m 483 keV 0 eV 0 fm 0 fm Target initStep + 1 303 mum 4.43 mm -2.43 m 1.11e-10 eV 483 keV 266 mum 266 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 192, Parent ID = 171 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.41 mm 4.11 mm -2.43 m 2.31 MeV 0 eV 0 fm 0 fm Target initStep + 1 1.48 mm 4.17 mm -2.43 m 4.44e-10 eV 2.31 MeV 664 mum 664 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 170, Parent ID = 169 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -132 mum 21 mum -2.44 m 1.13 MeV 0 eV 0 fm 0 fm Target initStep + 1 -2.79 mm 1.35 cm -2.42 m 950 keV 0 eV 2.02 cm 2.02 cm Target compt + 2 -2.45 mm 2.5 cm -2.42 m 950 keV 0 eV 1.27 cm 3.29 cm Target Transportation + 3 -1.32 mm 6.32 cm -2.4 m 950 keV 0 eV 4.23 cm 7.52 cm World Transportation + 4 6.8 cm 2.4 m -1.29 m 950 keV 0 eV 2.59 m 2.66 m Tracker Transportation + 5 8.31 cm 2.91 m -1.05 m 950 keV 0 eV 56.5 cm 3.23 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 194, Parent ID = 170 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.79 mm 1.35 cm -2.42 m 182 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.79 mm 1.35 cm -2.42 m 5.55e-11 eV 182 keV 70.4 mum 70.4 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 168, Parent ID = 10 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -521 mum -55.2 mum -2.44 m 9.38 MeV 0 eV 0 fm 0 fm Target initStep + 1 -431 mum 613 mum -2.44 m 6.5 MeV 2.88 MeV 1.73 mm 1.73 mm Target eIoni + 2 -249 mum 704 mum -2.44 m 5.33 MeV 498 keV 477 mum 2.2 mm Target eBrem + 3 -387 mum -233 mum -2.44 m 4.01 MeV 1.32 MeV 1.14 mm 3.34 mm Target eIoni + 4 29.2 mum -682 mum -2.44 m 3.06 MeV 953 keV 938 mum 4.28 mm Target eIoni + 5 -18.4 mum -798 mum -2.44 m 2.28 MeV 780 keV 787 mum 5.07 mm Target eIoni + 6 117 mum -1.09 mm -2.44 m 1.62 MeV 661 keV 658 mum 5.73 mm Target eIoni + 7 277 mum -1.12 mm -2.44 m 600 keV 1.02 MeV 542 mum 6.27 mm Target eIoni + 8 233 mum -1.11 mm -2.44 m 211 keV 389 keV 313 mum 6.58 mm Target eIoni + 9 233 mum -1.12 mm -2.44 m 0 eV 211 keV 88.1 mum 6.67 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 195, Parent ID = 168 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -249 mum 704 mum -2.44 m 676 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.22 mm -4.16 mm -2.43 m 290 keV 0 eV 6.63 mm 6.63 mm Target compt + 2 -4.6 mm -4.56 mm -2.44 m 0 eV 88 keV 2.94 mm 9.57 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 197, Parent ID = 195 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -4.6 mm -4.56 mm -2.44 m 202 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.61 mm -4.56 mm -2.44 m 0 eV 202 keV 82.8 mum 82.8 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 196, Parent ID = 195 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.22 mm -4.16 mm -2.43 m 386 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.22 mm -4.16 mm -2.43 m 7.31 keV 379 keV 211 mum 211 mum Target eIoni + 2 -2.22 mm -4.16 mm -2.43 m 0 eV 7.31 keV 440 nm 211 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 9, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -216 mum 86.5 mum -2.45 m 3.43 MeV 0 eV 0 fm 0 fm Target initStep + 1 -1.5 mm -576 mum -2.4 m 3.43 MeV 0 eV 4.67 cm 4.67 cm Target Transportation + 2 -2.36 cm -1.19 cm -1.6 m 3.43 MeV 0 eV 80 cm 84.7 cm Tracker Transportation + 3 -2.91 cm -1.48 cm -1.4 m 3.43 MeV 0 eV 20 cm 1.05 m Chamber Transportation + 4 -4.57 cm -2.33 cm -80 cm 3.43 MeV 0 eV 60 cm 1.65 m Tracker Transportation + 5 -5.12 cm -2.61 cm -60 cm 3.43 MeV 0 eV 20 cm 1.85 m Chamber Transportation + 6 -6.78 cm -3.47 cm 0 fm 3.43 MeV 0 eV 60 cm 2.45 m Tracker Transportation + 7 -7.33 cm -3.75 cm 20 cm 3.43 MeV 0 eV 20 cm 2.65 m Chamber Transportation + 8 -8.99 cm -4.6 cm 80 cm 3.43 MeV 0 eV 60 cm 3.25 m Tracker Transportation + 9 -9.54 cm -4.89 cm 1 m 3.43 MeV 0 eV 20 cm 3.45 m Chamber Transportation + 10 -11.2 cm -5.74 cm 1.6 m 3.43 MeV 0 eV 60 cm 4.05 m Tracker Transportation + 11 -11.8 cm -6.02 cm 1.8 m 3.43 MeV 0 eV 20 cm 4.25 m Chamber Transportation + 12 -13.4 cm -6.87 cm 2.4 m 3.43 MeV 0 eV 60 cm 4.85 m Tracker Transportation + 13 -14.8 cm -7.6 cm 2.91 m 3.43 MeV 0 eV 51 cm 5.36 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 8, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -144 mum 106 mum -2.45 m 8.09 MeV 0 eV 0 fm 0 fm Target initStep + 1 -203 mum -250 mum -2.42 m 0 eV 0 eV 2.87 cm 2.87 cm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 199, Parent ID = 8 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -203 mum -250 mum -2.42 m 5.75 MeV 0 eV 0 fm 0 fm Target initStep + 1 256 mum -159 mum -2.42 m 2.94 MeV 2.81 MeV 1.23 mm 1.23 mm Target eIoni + 2 769 mum -41.4 mum -2.42 m 2.19 MeV 742 keV 781 mum 2.01 mm Target eIoni + 3 1.09 mm -203 mum -2.42 m 1.41 MeV 782 keV 653 mum 2.66 mm Target eIoni + 4 1.06 mm -311 mum -2.42 m 686 keV 726 keV 509 mum 3.17 mm Target eIoni + 5 1.09 mm -244 mum -2.42 m 215 keV 471 keV 342 mum 3.52 mm Target eIoni + 6 1.09 mm -245 mum -2.42 m 0 eV 215 keV 87.5 mum 3.6 mm Target eIoni + 7 1.09 mm -245 mum -2.42 m 0 eV 0 eV 0 fm 3.6 mm Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 201, Parent ID = 199 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.09 mm -245 mum -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 5.53 mm -305 mum -2.41 m 475 keV 0 eV 6.31 mm 6.31 mm Target compt + 2 6.46 mm 189 mum -2.41 m 398 keV 0 eV 1.34 mm 7.65 mm Target compt + 3 1.5 cm 7.39 mm -2.41 m 0 eV 88 keV 1.12 cm 1.89 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 204, Parent ID = 201 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.5 cm 7.39 mm -2.41 m 310 keV 0 eV 0 fm 0 fm Target initStep + 1 1.5 cm 7.39 mm -2.41 m 1.11e-10 eV 310 keV 156 mum 156 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 203, Parent ID = 201 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 6.46 mm 189 mum -2.41 m 76.9 keV 0 eV 0 fm 0 fm Target initStep + 1 6.46 mm 188 mum -2.41 m 1.39e-11 eV 76.9 keV 18 mum 18 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 202, Parent ID = 201 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 5.53 mm -305 mum -2.41 m 35.8 keV 0 eV 0 fm 0 fm Target initStep + 1 5.53 mm -305 mum -2.41 m 1.39e-11 eV 35.8 keV 5.17 mum 5.17 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 200, Parent ID = 199 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.09 mm -245 mum -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -706 mum -221 mum -2.42 m 0 eV 88 keV 2.54 mm 2.54 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 205, Parent ID = 200 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -706 mum -221 mum -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -704 mum -235 mum -2.42 m 117 keV 306 keV 235 mum 235 mum Target eIoni + 2 -704 mum -236 mum -2.42 m 4.16e-11 eV 117 keV 35.2 mum 270 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 198, Parent ID = 8 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -203 mum -250 mum -2.42 m 1.32 MeV 0 eV 0 fm 0 fm Target initStep + 1 -225 mum -111 mum -2.42 m 741 keV 581 keV 486 mum 486 mum Target eIoni + 2 -253 mum -159 mum -2.42 m 205 keV 536 keV 356 mum 842 mum Target eIoni + 3 -253 mum -155 mum -2.42 m 0 eV 205 keV 84.6 mum 926 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 7, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -141 mum 121 mum -2.45 m 2.4 MeV 0 eV 0 fm 0 fm Target initStep + 1 -132 mum 78.9 mum -2.45 m 453 keV 0 eV 1.12 mm 1.12 mm Target compt + 2 -1.38 mm -465 mum -2.45 m 419 keV 0 eV 1.37 mm 2.49 mm Target compt + 3 -4.73 mm -3.57 mm -2.45 m 0 eV 88 keV 4.66 mm 7.15 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 208, Parent ID = 7 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -4.73 mm -3.57 mm -2.45 m 331 keV 0 eV 0 fm 0 fm Target initStep + 1 -4.74 mm -3.58 mm -2.45 m 0 eV 331 keV 170 mum 170 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 207, Parent ID = 7 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.38 mm -465 mum -2.45 m 34.6 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.38 mm -464 mum -2.45 m 3.47e-11 eV 34.6 keV 4.89 mum 4.89 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 206, Parent ID = 7 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -132 mum 78.9 mum -2.45 m 1.95 MeV 0 eV 0 fm 0 fm Target initStep + 1 113 mum 89.5 mum -2.45 m 1.32 MeV 623 keV 601 mum 601 mum Target eIoni + 2 111 mum 38.9 mum -2.45 m 766 keV 51.4 keV 78.7 mum 680 mum Target eBrem + 3 89.3 mum 66.7 mum -2.45 m 274 keV 161 keV 82.8 mum 763 mum Target eBrem + 4 95.3 mum 65.6 mum -2.45 m 0 eV 274 keV 130 mum 893 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 210, Parent ID = 206 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 89.3 mum 66.7 mum -2.45 m 331 keV 0 eV 0 fm 0 fm Target initStep + 1 457 mum 21.6 mum -2.45 m 0 eV 88 keV 407 mum 407 mum Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 211, Parent ID = 210 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 457 mum 21.6 mum -2.45 m 243 keV 0 eV 0 fm 0 fm Target initStep + 1 462 mum 21 mum -2.45 m 0 eV 243 keV 109 mum 109 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 209, Parent ID = 206 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 111 mum 38.9 mum -2.45 m 506 keV 0 eV 0 fm 0 fm Target initStep + 1 105 mum 17.4 mum -2.45 m 328 keV 0 eV 52 mum 52 mum Target compt + 2 2.96 mm -227 mum -2.45 m 321 keV 0 eV 3.51 mm 3.56 mm Target compt + 3 3.29 mm -307 mum -2.45 m 0 eV 88 keV 506 mum 4.07 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 214, Parent ID = 209 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 3.29 mm -307 mum -2.45 m 233 keV 0 eV 0 fm 0 fm Target initStep + 1 3.29 mm -308 mum -2.45 m 2.78e-11 eV 233 keV 102 mum 102 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 213, Parent ID = 209 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 2.96 mm -227 mum -2.45 m 6.3 keV 0 eV 0 fm 0 fm Target initStep + 1 2.96 mm -227 mum -2.45 m 4.34e-12 eV 6.3 keV 356 nm 356 nm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 212, Parent ID = 209 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 105 mum 17.4 mum -2.45 m 178 keV 0 eV 0 fm 0 fm Target initStep + 1 102 mum 16.1 mum -2.45 m 5.55e-11 eV 178 keV 68.5 mum 68.5 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 6, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -142 mum 121 mum -2.45 m 4.18 MeV 0 eV 0 fm 0 fm Target initStep + 1 -141 mum 121 mum -2.45 m 566 keV 0 eV 34.6 mum 34.6 mum Target compt + 2 1.46 cm 1.11 cm -2.44 m 267 keV 0 eV 1.89 cm 1.89 cm Target compt + 3 1.47 cm 1.12 cm -2.45 m 0 eV 88 keV 587 mum 1.95 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 217, Parent ID = 6 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.47 cm 1.12 cm -2.45 m 179 keV 0 eV 0 fm 0 fm Target initStep + 1 1.47 cm 1.12 cm -2.45 m 0 eV 179 keV 68.7 mum 68.7 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 216, Parent ID = 6 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.46 cm 1.11 cm -2.44 m 299 keV 0 eV 0 fm 0 fm Target initStep + 1 1.46 cm 1.11 cm -2.44 m 0 eV 299 keV 147 mum 147 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 215, Parent ID = 6 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -141 mum 121 mum -2.45 m 3.61 MeV 0 eV 0 fm 0 fm Target initStep + 1 -456 mum 385 mum -2.45 m 2.77 MeV 845 keV 876 mum 876 mum Target eIoni + 2 -409 mum 232 mum -2.45 m 2.47 MeV 295 keV 296 mum 1.17 mm Target msc + 3 -546 mum 156 mum -2.45 m 67.4 keV 2.12 MeV 486 mum 1.66 mm Target eBrem + 4 -545 mum 156 mum -2.45 m 0 eV 67.4 keV 14.5 mum 1.67 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 218, Parent ID = 215 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -546 mum 156 mum -2.45 m 288 keV 0 eV 0 fm 0 fm Target initStep + 1 -438 mum -1.43 mm -2.45 m 0 eV 88 keV 1.73 mm 1.73 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 219, Parent ID = 218 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -438 mum -1.43 mm -2.45 m 200 keV 0 eV 0 fm 0 fm Target initStep + 1 -438 mum -1.44 mm -2.45 m 0 eV 200 keV 81.2 mum 81.2 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 5, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -145 mum 125 mum -2.45 m 2.34 MeV 0 eV 0 fm 0 fm Target initStep + 1 142 mum -335 mum -2.43 m 936 keV 0 eV 2.28 cm 2.28 cm Target compt + 2 1.17 cm -1.09 cm -2.41 m 0 eV 88 keV 2.08 cm 4.35 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 221, Parent ID = 5 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 1.17 cm -1.09 cm -2.41 m 848 keV 0 eV 0 fm 0 fm Target initStep + 1 1.18 cm -1.1 cm -2.41 m 511 keV 337 keV 384 mum 384 mum Target eIoni + 2 1.18 cm -1.1 cm -2.41 m 231 keV 280 keV 188 mum 572 mum Target eBrem + 3 1.18 cm -1.1 cm -2.41 m 0 eV 231 keV 101 mum 673 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 220, Parent ID = 5 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 142 mum -335 mum -2.43 m 1.4 MeV 0 eV 0 fm 0 fm Target initStep + 1 278 mum -320 mum -2.43 m 909 keV 495 keV 502 mum 502 mum Target eIoni + 2 353 mum -389 mum -2.43 m 542 keV 367 keV 399 mum 900 mum Target eIoni + 3 344 mum -398 mum -2.43 m 116 keV 426 keV 291 mum 1.19 mm Target eIoni + 4 345 mum -398 mum -2.43 m 0 eV 116 keV 34.9 mum 1.23 mm Target eIoni ********************************************************************************************************* * G4Track Information: Particle = gamma, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -178 mum 107 mum -2.45 m 633 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -912 mum 341 mum -2.44 m 390 keV 243 keV 1.27 cm 1.27 cm TargetPV compt - 2 138 mum 1.55 mm -2.44 m 0 eV 390 keV 1.88 mm 1.46 cm TargetPV phot + 0 -146 mum 127 mum -2.45 m 1.17 MeV 0 eV 0 fm 0 fm Target initStep + 1 -145 mum 127 mum -2.45 m 0 eV 88 keV 106 mum 106 mum Target phot ********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 3, Parent ID = 1 +* G4Track Information: Particle = e-, Track ID = 222, Parent ID = 4 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -173 mum 108 mum -2.45 m 3.03 MeV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.12 mm 29.1 mum -2.42 m 0 eV 2.01 MeV 3.36 cm 3.36 cm TargetPV conv + 0 -145 mum 127 mum -2.45 m 1.09 MeV 0 eV 0 fm 0 fm Target initStep + 1 -141 mum -7.26 mum -2.45 m 721 keV 365 keV 438 mum 438 mum Target eIoni + 2 -145 mum -73.6 mum -2.45 m 280 keV 441 keV 350 mum 788 mum Target eIoni + 3 -151 mum -73.4 mum -2.45 m 5.55e-11 eV 280 keV 134 mum 922 mum Target eIoni ********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 98, Parent ID = 3 +* G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.12 mm 29.1 mum -2.42 m 0 eV 0 eV 0 fm 0 fm TargetPV initStep - 1 -1.12 mm 29.1 mum -2.42 m 0 eV 0 eV 0 fm 0 fm TargetPV annihil - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 100, Parent ID = 98 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.12 mm 29.1 mum -2.42 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 -3.28 mm -3.74 mm -2.42 m 0 eV 511 keV 4.41 mm 4.41 mm TargetPV phot - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 99, Parent ID = 98 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -1.12 mm 29.1 mum -2.42 m 511 keV 0 eV 0 fm 0 fm TargetPV initStep - 1 3.74 mm 8.51 mm -2.41 m 0 eV 511 keV 9.92 mm 9.92 mm TargetPV phot + 0 -124 mum 95.7 mum -2.51 m 1.23 keV 0 eV 0 fm 0 fm World initStep + 1 -115 mum 78.9 mum -2.51 m 4.34e-13 eV 1.23 keV 77 mum 77 mum World eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -32.2 mum -1.27 mum -2.86 m 10.5 keV 0 eV 0 fm 0 fm WorldPV initStep - 1 -690 mum -257 mum -2.86 m 8.36 keV 2.13 keV 798 mum 798 mum WorldPV eIoni - 2 -727 mum -810 mum -2.86 m 6.66 keV 1.71 keV 630 mum 1.43 mm WorldPV eIoni - 3 -529 mum -1.07 mm -2.86 m 8.67e-13 eV 6.66 keV 515 mum 1.94 mm WorldPV eIoni + 0 -32.2 mum -1.27 mum -2.86 m 10.5 keV 0 eV 0 fm 0 fm World initStep + 1 -673 mum -36.8 mum -2.86 m 9.23 keV 1.26 keV 798 mum 798 mum World eIoni + 2 -216 mum -18.9 mum -2.86 m 5.39 keV 3.84 keV 697 mum 1.49 mm World eIoni + 3 -242 mum -112 mum -2.86 m 2.08 keV 3.32 keV 435 mum 1.93 mm World eIoni + 4 -251 mum -104 mum -2.86 m 4.34e-13 eV 2.08 keV 166 mum 2.1 mm World eIoni >>> Event 0 0 trajectories stored in this event. ### Run 1 start. @@ -1108,152 +2175,808 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 0 fm 0 fm -2.91 m 1 TeV 0 eV 0 fm 0 fm WorldPV initStep - 1 -56.4 nm 65.7 nm -2.65 m 1e+03 GeV 64 keV 25.9 cm 25.9 cm WorldPV MuIoni - 2 -113 nm -159 nm -2.45 m 1e+03 GeV 45 keV 20.1 cm 46 cm WorldPV Transportation - 3 -128 nm -211 nm -2.4 m 1e+03 GeV 72.7 MeV 5 cm 51 cm TargetPV Transportation - 4 18.5 mum -5.87 mum -2.24 m 1e+03 GeV 33.9 keV 16.3 cm 67.3 cm Tracker MuIoni - 5 91.5 mum -27.4 mum -1.6 m 1e+03 GeV 145 keV 63.7 cm 1.31 m Tracker Transportation - 6 113 mum -33.8 mum -1.41 m 1e+03 GeV 175 keV 19.3 cm 1.5 m Chamber MuIoni - 7 114 mum -34 mum -1.4 m 1e+03 GeV 6.69 keV 7.5 mm 1.51 m Chamber Transportation - 8 184 mum -53.2 mum -80 cm 1e+03 GeV 157 keV 60 cm 2.11 m Tracker Transportation - 9 207 mum -59.7 mum -60 cm 1e+03 GeV 126 keV 20 cm 2.31 m Chamber Transportation - 10 277 mum -79.1 mum 0 fm 1e+03 GeV 137 keV 60 cm 2.91 m Tracker Transportation - 11 300 mum -86 mum 20 cm 1e+03 GeV 146 keV 20 cm 3.11 m Chamber Transportation - 12 368 mum -105 mum 80 cm 1e+03 GeV 139 keV 60 cm 3.71 m Tracker Transportation - 13 391 mum -111 mum 1 m 1e+03 GeV 175 keV 20 cm 3.91 m Chamber Transportation - 14 459 mum -129 mum 1.6 m 1e+03 GeV 137 keV 60 cm 4.51 m Tracker Transportation - 15 472 mum -132 mum 1.71 m 1e+03 GeV 91.1 keV 10.8 cm 4.62 m Chamber MuIoni - 16 482 mum -135 mum 1.8 m 1e+03 GeV 60.2 keV 9.22 cm 4.71 m Chamber Transportation - 17 503 mum -141 mum 1.98 m 1e+03 GeV 46.3 keV 18.1 cm 4.89 m Tracker MuIoni - 18 548 mum -153 mum 2.38 m 1e+03 GeV 86.5 keV 39.6 cm 5.29 m Tracker MuIoni - 19 550 mum -153 mum 2.4 m 1e+03 GeV 4.05 keV 2.23 cm 5.31 m Tracker Transportation - 20 559 mum -156 mum 2.48 m 1e+03 GeV 15.8 keV 7.56 cm 5.39 m WorldPV MuIoni - 21 576 mum -160 mum 2.63 m 1e+03 GeV 35.8 keV 15.2 cm 5.54 m WorldPV MuIoni - 22 608 mum -169 mum 2.91 m 1e+03 GeV 56.4 keV 28.2 cm 5.82 m OutOfWorld Transportation + 0 0 fm 0 fm -2.91 m 1 TeV 0 eV 0 fm 0 fm World initStep + 1 0 fm 0 fm -2.45 m 1e+03 GeV 116 keV 46 cm 46 cm World Transportation + 2 -0.0134 fm -0.00479 fm -2.4 m 1e+03 GeV 59.7 MeV 5 cm 51 cm Target Transportation + 3 16 mum -19.5 mum -1.88 m 1e+03 GeV 96.4 keV 51.8 cm 1.03 m Tracker MuIoni + 4 24.8 mum -30.1 mum -1.6 m 1e+03 GeV 58.4 keV 28.2 cm 1.31 m Tracker Transportation + 5 31 mum -37.6 mum -1.4 m 1e+03 GeV 156 keV 20 cm 1.51 m Chamber Transportation + 6 49.4 mum -60.8 mum -80 cm 1e+03 GeV 139 keV 60 cm 2.11 m Tracker Transportation + 7 55.5 mum -68.5 mum -60 cm 1e+03 GeV 140 keV 20 cm 2.31 m Chamber Transportation + 8 74.4 mum -90 mum -2.5 cm 1e+03 GeV 123 keV 57.5 cm 2.88 m Tracker MuIoni + 9 75.2 mum -90.9 mum 0 fm 1e+03 GeV 5.07 keV 2.5 cm 2.91 m Tracker Transportation + 10 75.9 mum -91.6 mum 1.85 cm 1e+03 GeV 14.8 keV 1.85 cm 2.93 m Chamber MuIoni + 11 81.9 mum -98.3 mum 20 cm 1e+03 GeV 114 keV 18.1 cm 3.11 m Chamber Transportation + 12 102 mum -120 mum 80 cm 1e+03 GeV 112 keV 60 cm 3.71 m Tracker Transportation + 13 109 mum -128 mum 1 m 1e+03 GeV 149 keV 20 cm 3.91 m Chamber Transportation + 14 129 mum -149 mum 1.6 m 1e+03 GeV 116 keV 60 cm 4.51 m Tracker Transportation + 15 136 mum -156 mum 1.8 m 1e+03 GeV 84.2 keV 20 cm 4.71 m Chamber Transportation + 16 136 mum -156 mum 1.8 m 1e+03 GeV 691 eV 2.54 mm 4.71 m Tracker MuIoni + 17 157 mum -178 mum 2.4 m 1e+03 GeV 119 keV 59.7 cm 5.31 m Tracker Transportation + 18 176 mum -197 mum 2.91 m 1e+03 GeV 98.2 keV 51 cm 5.82 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 71, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 161 mum -182 mum 2.52 m 1.58 keV 0 eV 0 fm 0 fm World initStep + 1 190 mum -181 mum 2.52 m 2.17e-13 eV 1.58 keV 110 mum 110 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 70, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 164 mum -185 mum 2.59 m 2.08 keV 0 eV 0 fm 0 fm World initStep + 1 179 mum -228 mum 2.59 m 0 eV 2.08 keV 166 mum 166 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 69, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 168 mum -189 mum 2.7 m 2.79 keV 0 eV 0 fm 0 fm World initStep + 1 205 mum -109 mum 2.7 m 606 eV 2.19 keV 251 mum 251 mum World eIoni + 2 203 mum -114 mum 2.7 m 1.08e-13 eV 606 eV 32.2 mum 283 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 68, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 159 mum -180 mum 2.44 m 3.97 keV 0 eV 0 fm 0 fm World initStep + 1 280 mum -58.6 mum 2.44 m 1.95 keV 2.02 keV 344 mum 344 mum World eIoni + 2 284 mum -34.6 mum 2.44 m 4.34e-13 eV 1.95 keV 150 mum 494 mum World eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 67, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 140 mum -161 mum 1.92 m 1.1 keV 0 eV 0 fm 0 fm Tracker initStep + 1 124 mum -163 mum 1.92 m 0 eV 1.1 keV 65.9 mum 65.9 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 66, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 142 mum -162 mum 1.96 m 3.12 keV 0 eV 0 fm 0 fm Tracker initStep + 1 218 mum -262 mum 1.96 m 1.73 keV 1.39 keV 281 mum 281 mum Tracker eIoni + 2 241 mum -249 mum 1.96 m 2.17e-13 eV 1.73 keV 125 mum 407 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 65, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 150 mum -171 mum 2.2 m 4.41 keV 0 eV 0 fm 0 fm Tracker initStep + 1 120 mum -370 mum 2.2 m 3.39 keV 1.02 keV 374 mum 374 mum Tracker eIoni + 2 142 mum -306 mum 2.2 m 1.11 keV 2.29 keV 303 mum 678 mum Tracker eIoni + 3 141 mum -299 mum 2.2 m 0 eV 1.11 keV 66.5 mum 744 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 64, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 152 mum -173 mum 2.26 m 2.11 keV 0 eV 0 fm 0 fm Tracker initStep + 1 189 mum -201 mum 2.26 m 0 eV 2.11 keV 170 mum 170 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 63, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 151 mum -172 mum 2.22 m 1.95 keV 0 eV 0 fm 0 fm Tracker initStep + 1 176 mum -204 mum 2.22 m 0 eV 1.95 keV 150 mum 150 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 62, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 136 mum -156 mum 1.8 m 10.7 keV 0 eV 0 fm 0 fm Tracker initStep + 1 207 mum 535 mum 1.8 m 8.81 keV 1.91 keV 818 mum 818 mum Tracker eIoni + 2 500 mum 774 mum 1.8 m 6.64 keV 2.18 keV 665 mum 1.48 mm Tracker eIoni + 3 439 mum 458 mum 1.8 m 5.74 keV 898 eV 513 mum 2 mm Tracker eIoni + 4 677 mum 728 mum 1.8 m 2.04 keV 3.7 keV 456 mum 2.45 mm Tracker eIoni + 5 652 mum 738 mum 1.8 m 0 eV 2.04 keV 161 mum 2.61 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 61, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 133 mum -153 mum 1.7 m 8.95 keV 0 eV 0 fm 0 fm Chamber initStep + 1 124 mum -22.3 mum 1.7 m 5.35 keV 3.6 keV 470 mum 470 mum Chamber eIoni + 2 86.1 mum 17.2 mum 1.7 m 2.62 keV 2.73 keV 328 mum 798 mum Chamber eIoni + 3 87.5 mum 18.7 mum 1.7 m 8.67e-13 eV 2.62 keV 150 mum 948 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 60, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 131 mum -151 mum 1.66 m 3.08 keV 0 eV 0 fm 0 fm Chamber initStep + 1 128 mum -162 mum 1.66 m 4.34e-13 eV 3.08 keV 189 mum 189 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 59, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 132 mum -152 mum 1.67 m 39.1 keV 0 eV 0 fm 0 fm Chamber initStep + 1 463 mum -1.16 mm 1.67 m 33.8 keV 5.29 keV 2.38 mm 2.38 mm Chamber eIoni + 2 459 mum -781 mum 1.67 m 30.9 keV 2.94 keV 1.93 mm 4.31 mm Chamber eIoni + 3 -250 mum -522 mum 1.67 m 28.5 keV 2.41 keV 1.7 mm 6.01 mm Chamber eIoni + 4 -1.01 mm -478 mum 1.67 m 26.8 keV 1.62 keV 1.53 mm 7.54 mm Chamber eIoni + 5 -1.56 mm -898 mum 1.67 m 24.8 keV 2.04 keV 1.41 mm 8.95 mm Chamber eIoni + 6 -1.81 mm -1.18 mm 1.67 m 19.6 keV 5.21 keV 1.27 mm 1.02 cm Chamber eIoni + 7 -1.88 mm -746 mum 1.67 m 17.8 keV 1.75 keV 963 mum 1.12 cm Chamber eIoni + 8 -1.82 mm -815 mum 1.67 m 15.4 keV 2.43 keV 867 mum 1.21 cm Chamber eIoni + 9 -2.03 mm -716 mum 1.67 m 14.3 keV 1.06 keV 746 mum 1.28 cm Chamber eIoni + 10 -2.17 mm -865 mum 1.67 m 7.93 keV 6.41 keV 694 mum 1.35 cm Chamber eIoni + 11 -2.29 mm -846 mum 1.67 m 5.6 keV 2.33 keV 431 mum 1.39 cm Chamber eIoni + 12 -2.32 mm -817 mum 1.67 m 1.69 keV 3.91 keV 339 mum 1.43 cm Chamber eIoni + 13 -2.32 mm -817 mum 1.67 m 6.51e-13 eV 1.69 keV 81.9 mum 1.43 cm Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 58, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 133 mum -153 mum 1.71 m 1 keV 0 eV 0 fm 0 fm Chamber initStep + 1 130 mum -152 mum 1.71 m 0 eV 1 keV 40.9 mum 40.9 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 57, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 135 mum -155 mum 1.77 m 2.61 keV 0 eV 0 fm 0 fm Chamber initStep + 1 143 mum -159 mum 1.77 m 1.73e-12 eV 2.61 keV 149 mum 149 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 56, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 131 mum -151 mum 1.65 m 3.09 keV 0 eV 0 fm 0 fm Chamber initStep + 1 119 mum -152 mum 1.65 m 0 eV 3.09 keV 189 mum 189 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 55, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 134 mum -154 mum 1.74 m 7.24 keV 0 eV 0 fm 0 fm Chamber initStep + 1 218 mum -152 mum 1.74 m 4.89 keV 2.35 keV 405 mum 405 mum Chamber eIoni + 2 208 mum -166 mum 1.74 m 1.16 keV 3.73 keV 306 mum 711 mum Chamber eIoni + 3 208 mum -168 mum 1.74 m 0 eV 1.16 keV 49.4 mum 760 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 54, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 131 mum -151 mum 1.65 m 1.65 keV 0 eV 0 fm 0 fm Chamber initStep + 1 130 mum -156 mum 1.65 m 4.34e-13 eV 1.65 keV 79.2 mum 79.2 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 53, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 118 mum -138 mum 1.28 m 2.06 keV 0 eV 0 fm 0 fm Tracker initStep + 1 162 mum -146 mum 1.28 m 0 eV 2.06 keV 163 mum 163 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 52, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 112 mum -131 mum 1.09 m 4.3 keV 0 eV 0 fm 0 fm Tracker initStep + 1 42.9 mum -255 mum 1.09 m 3.16 keV 1.14 keV 367 mum 367 mum Tracker eIoni + 2 78.6 mum -358 mum 1.09 m 1.28 keV 1.88 keV 285 mum 652 mum Tracker eIoni + 3 72.2 mum -377 mum 1.09 m 0 eV 1.28 keV 81.5 mum 734 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 51, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 129 mum -149 mum 1.59 m 1.26 keV 0 eV 0 fm 0 fm Tracker initStep + 1 143 mum -135 mum 1.59 m 0 eV 1.26 keV 79.7 mum 79.7 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 50, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 110 mum -128 mum 1.02 m 6.06 keV 0 eV 0 fm 0 fm Tracker initStep + 1 7.71 mum 54.9 mum 1.02 m 4.11 keV 1.96 keV 477 mum 477 mum Tracker eIoni + 2 -58.9 mum 109 mum 1.02 m 1.36 keV 2.75 keV 354 mum 831 mum Tracker eIoni + 3 -63.5 mum 100 mum 1.02 m 0 eV 1.36 keV 88.2 mum 919 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 49, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 120 mum -140 mum 1.33 m 1.77 keV 0 eV 0 fm 0 fm Tracker initStep + 1 135 mum -108 mum 1.33 m 2.17e-13 eV 1.77 keV 130 mum 130 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 48, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 105 mum -123 mum 87.7 cm 1.12 keV 0 eV 0 fm 0 fm Chamber initStep + 1 106 mum -120 mum 87.7 cm 0 eV 1.12 keV 47.1 mum 47.1 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 47, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 106 mum -125 mum 91.3 cm 4.33 keV 0 eV 0 fm 0 fm Chamber initStep + 1 99.7 mum -97.9 mum 91.3 cm 682 eV 3.64 keV 277 mum 277 mum Chamber eIoni + 2 99.8 mum -97.3 mum 91.3 cm 0 eV 682 eV 25.7 mum 303 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 46, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 105 mum -123 mum 87.1 cm 1.43 keV 0 eV 0 fm 0 fm Chamber initStep + 1 108 mum -125 mum 87.1 cm 2.17e-13 eV 1.43 keV 64.7 mum 64.7 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 45, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 105 mum -124 mum 89 cm 1.11 keV 0 eV 0 fm 0 fm Chamber initStep + 1 104 mum -127 mum 89 cm 0 eV 1.11 keV 46.7 mum 46.7 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 44, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 103 mum -121 mum 82.2 cm 2.07 keV 0 eV 0 fm 0 fm Chamber initStep + 1 109 mum -124 mum 82.2 cm 0 eV 2.07 keV 108 mum 108 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 43, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 103 mum -121 mum 82 cm 1.84 keV 0 eV 0 fm 0 fm Chamber initStep + 1 98.8 mum -125 mum 82 cm 2.17e-13 eV 1.84 keV 91.5 mum 91.5 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 42, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 109 mum -128 mum 99.4 cm 1.04 keV 0 eV 0 fm 0 fm Chamber initStep + 1 111 mum -126 mum 99.4 cm 0 eV 1.04 keV 43 mum 43 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 41, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 106 mum -124 mum 89.9 cm 6.54 keV 0 eV 0 fm 0 fm Chamber initStep + 1 117 mum -49.1 mum 89.9 cm 4.85 keV 1.69 keV 377 mum 377 mum Chamber eIoni + 2 130 mum -42.8 mum 89.9 cm 0 eV 4.85 keV 304 mum 682 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 40, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 85.6 mum -102 mum 31.2 cm 1.33 keV 0 eV 0 fm 0 fm Tracker initStep + 1 65.9 mum -112 mum 31.2 cm 4.34e-13 eV 1.33 keV 85.7 mum 85.7 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 39, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 90.7 mum -108 mum 46.2 cm 6.78 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -133 mum -156 mum 46.2 cm 4.04 keV 2.75 keV 522 mum 522 mum Tracker eIoni + 2 -164 mum -234 mum 46.2 cm 2.67 keV 1.37 keV 349 mum 872 mum Tracker eIoni + 3 -216 mum -280 mum 46.2 cm 0 eV 2.67 keV 238 mum 1.11 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 38, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 93.4 mum -111 mum 54.2 cm 1.77 keV 0 eV 0 fm 0 fm Tracker initStep + 1 63.3 mum -93.4 mum 54.2 cm 0 eV 1.77 keV 130 mum 130 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 37, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 85.1 mum -102 mum 29.7 cm 3.73 keV 0 eV 0 fm 0 fm Tracker initStep + 1 12.3 mum -206 mum 29.7 cm 1.6 keV 2.13 keV 329 mum 329 mum Tracker eIoni + 2 33.8 mum -212 mum 29.7 cm 0 eV 1.6 keV 111 mum 440 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 36, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 96.2 mum -114 mum 62.3 cm 2.04 keV 0 eV 0 fm 0 fm Tracker initStep + 1 126 mum -81.2 mum 62.3 cm 0 eV 2.04 keV 161 mum 161 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 35, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 80.8 mum -97.2 mum 16.9 cm 1.44 keV 0 eV 0 fm 0 fm Chamber initStep + 1 84.7 mum -95.2 mum 16.9 cm 0 eV 1.44 keV 65.8 mum 65.8 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 34, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 79.3 mum -95.4 mum 12.2 cm 2.53 keV 0 eV 0 fm 0 fm Chamber initStep + 1 75.4 mum -103 mum 12.2 cm 0 eV 2.53 keV 143 mum 143 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 33, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 79.1 mum -95.2 mum 11.5 cm 3.83 keV 0 eV 0 fm 0 fm Chamber initStep + 1 73.3 mum -109 mum 11.5 cm 0 eV 3.83 keV 247 mum 247 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 32, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 80.3 mum -96.6 mum 15.2 cm 1.88 keV 0 eV 0 fm 0 fm Chamber initStep + 1 77.2 mum -102 mum 15.2 cm 0 eV 1.88 keV 94.8 mum 94.8 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 31, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 75.9 mum -91.6 mum 1.85 cm 103 keV 0 eV 0 fm 0 fm Chamber initStep + 1 -5.96 mm -1.19 mm 1.81 cm 96.6 keV 6.72 keV 1.07 cm 1.07 cm Chamber eIoni + 2 -9.02 mm 2.37 mm 1.91 cm 75.3 keV 21.2 keV 9.65 mm 2.04 cm Chamber eIoni + 3 -1.04 cm 4.52 mm 1.67 cm 67.8 keV 7.51 keV 6.47 mm 2.69 cm Chamber eIoni + 4 -9.87 mm 2.94 mm 1.44 cm 59.1 keV 8.68 keV 5.5 mm 3.24 cm Chamber eIoni + 5 -9.35 mm 4.06 mm 1.6 cm 44 keV 15.1 keV 4.44 mm 3.68 cm Chamber eIoni + 6 -9.67 mm 2.69 mm 1.6 cm 38.4 keV 5.61 keV 2.82 mm 3.96 cm Chamber eIoni + 7 -1.02 cm 1.99 mm 1.69 cm 36.1 keV 2.27 keV 2.32 mm 4.19 cm Chamber eIoni + 8 -1.01 cm 927 mum 1.68 cm 33.2 keV 2.93 keV 2.11 mm 4.41 cm Chamber eIoni + 9 -1.1 cm 879 mum 1.67 cm 30.2 keV 2.98 keV 1.88 mm 4.59 cm Chamber eIoni + 10 -1.11 cm 527 mum 1.72 cm 17.8 keV 12.4 keV 1.65 mm 4.76 cm Chamber eIoni + 11 -1.1 cm 775 mum 1.7 cm 16.9 keV 928 eV 868 mum 4.85 cm Chamber eIoni + 12 -1.13 cm 719 mum 1.67 cm 14.4 keV 2.55 keV 820 mum 4.93 cm Chamber eIoni + 13 -1.1 cm 887 mum 1.68 cm 12.6 keV 1.81 keV 696 mum 5 cm Chamber eIoni + 14 -1.08 cm 818 mum 1.69 cm 11.3 keV 1.29 keV 616 mum 5.06 cm Chamber eIoni + 15 -1.1 cm 792 mum 1.7 cm 9.02 keV 2.25 keV 562 mum 5.12 cm Chamber eIoni + 16 -1.1 cm 740 mum 1.71 cm 6.23 keV 2.79 keV 473 mum 5.16 cm Chamber eIoni + 17 -1.1 cm 666 mum 1.71 cm 2.88 keV 3.35 keV 365 mum 5.2 cm Chamber eIoni + 18 -1.1 cm 667 mum 1.71 cm 4.34e-13 eV 2.88 keV 171 mum 5.22 cm Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 30, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 74.4 mum -90 mum -2.5 cm 8.65 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -98.5 mum 448 mum -2.52 cm 7.74 keV 911 eV 653 mum 653 mum Tracker eIoni + 2 -207 mum 161 mum -2.56 cm 6.28 keV 1.46 keV 588 mum 1.24 mm Tracker eIoni + 3 -517 mum 16 mum -2.57 cm 4.38 keV 1.9 keV 491 mum 1.73 mm Tracker eIoni + 4 -456 mum -34.4 mum -2.55 cm 2.85 keV 1.53 keV 372 mum 2.1 mm Tracker eIoni + 5 -470 mum -24.2 mum -2.54 cm 0 eV 2.85 keV 257 mum 2.36 mm Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 29, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 58.2 mum -71.7 mum -51.7 cm 1.25 keV 0 eV 0 fm 0 fm Tracker initStep + 1 76.9 mum -66 mum -51.7 cm 0 eV 1.25 keV 78.5 mum 78.5 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 28, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 60 mum -73.7 mum -46.1 cm 1.72 keV 0 eV 0 fm 0 fm Tracker initStep + 1 92.6 mum -79.9 mum -46.1 cm 0 eV 1.72 keV 124 mum 124 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 27, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 52.2 mum -64.4 mum -70.6 cm 1.02 keV 0 eV 0 fm 0 fm Chamber initStep + 1 49.6 mum -63.4 mum -70.6 cm 0 eV 1.02 keV 41.5 mum 41.5 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 26, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 50.2 mum -61.9 mum -77.2 cm 3.56 keV 0 eV 0 fm 0 fm Chamber initStep + 1 61.3 mum -53.9 mum -77.2 cm 8.67e-13 eV 3.56 keV 228 mum 228 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 25, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 49.8 mum -61.3 mum -78.7 cm 2.01 keV 0 eV 0 fm 0 fm Chamber initStep + 1 54.6 mum -65.5 mum -78.7 cm 0 eV 2.01 keV 104 mum 104 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 24, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 52.5 mum -64.8 mum -69.6 cm 1.62 keV 0 eV 0 fm 0 fm Chamber initStep + 1 50.8 mum -69.5 mum -69.6 cm 0 eV 1.62 keV 76.6 mum 76.6 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 23, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 51.9 mum -64 mum -71.7 cm 4.99 keV 0 eV 0 fm 0 fm Chamber initStep + 1 70.8 mum -101 mum -71.7 cm 2.62 keV 2.37 keV 311 mum 311 mum Chamber eIoni + 2 62.7 mum -105 mum -71.7 cm 0 eV 2.62 keV 150 mum 461 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 22, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 51.1 mum -63 mum -74.3 cm 2.87 keV 0 eV 0 fm 0 fm Chamber initStep + 1 40.8 mum -62.6 mum -74.3 cm 0 eV 2.87 keV 170 mum 170 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 21, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 54.3 mum -67.1 mum -63.7 cm 1.79 keV 0 eV 0 fm 0 fm Chamber initStep + 1 59.6 mum -68.8 mum -63.7 cm 2.17e-13 eV 1.79 keV 88.7 mum 88.7 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 20, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 52.8 mum -65.2 mum -68.6 cm 8.65 keV 0 eV 0 fm 0 fm Chamber initStep + 1 73.1 mum -100 mum -68.6 cm 4.9 keV 3.75 keV 458 mum 458 mum Chamber eIoni + 2 49.9 mum -55.9 mum -68.6 cm 2.74 keV 2.16 keV 307 mum 765 mum Chamber eIoni + 3 53.5 mum -62.5 mum -68.6 cm 0 eV 2.74 keV 159 mum 924 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 19, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 41.1 mum -50.4 mum -1.07 m 1.17 keV 0 eV 0 fm 0 fm Tracker initStep + 1 29.8 mum -37 mum -1.07 m 2.17e-13 eV 1.17 keV 71.7 mum 71.7 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 18, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 44.6 mum -54.8 mum -95.5 cm 1.81 keV 0 eV 0 fm 0 fm Tracker initStep + 1 57.3 mum -88.9 mum -95.5 cm 0 eV 1.81 keV 135 mum 135 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 17, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 36.9 mum -45 mum -1.21 m 1.25 keV 0 eV 0 fm 0 fm Tracker initStep + 1 21.2 mum -33.2 mum -1.21 m 6.51e-13 eV 1.25 keV 79 mum 79 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 16, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 33 mum -40.1 mum -1.34 m 1.68 keV 0 eV 0 fm 0 fm Tracker initStep + 1 49.2 mum -67.5 mum -1.34 m 0 eV 1.68 keV 120 mum 120 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 15, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 34.1 mum -41.5 mum -1.3 m 2.27 keV 0 eV 0 fm 0 fm Tracker initStep + 1 67.4 mum -82.9 mum -1.3 m 0 eV 2.27 keV 190 mum 190 mum Tracker eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 14, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 28.2 mum -34.2 mum -1.49 m 2.14 keV 0 eV 0 fm 0 fm Chamber initStep + 1 34.4 mum -37.1 mum -1.49 m 0 eV 2.14 keV 113 mum 113 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 13, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 26.8 mum -32.5 mum -1.54 m 1.6 keV 0 eV 0 fm 0 fm Chamber initStep + 1 23.3 mum -35.9 mum -1.54 m 0 eV 1.6 keV 75.5 mum 75.5 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 12, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 29 mum -35.2 mum -1.46 m 2.1 keV 0 eV 0 fm 0 fm Chamber initStep + 1 24.3 mum -39.9 mum -1.46 m 0 eV 2.1 keV 111 mum 111 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 11, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 26.2 mum -31.9 mum -1.55 m 1.08 keV 0 eV 0 fm 0 fm Chamber initStep + 1 23.4 mum -33 mum -1.55 m 6.51e-13 eV 1.08 keV 45 mum 45 mum Chamber eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 10, Parent ID = 1 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 29.5 mum -35.8 mum -1.45 m 2.16 keV 0 eV 0 fm 0 fm Chamber initStep + 1 30.8 mum -29 mum -1.45 m 4.34e-13 eV 2.16 keV 115 mum 115 mum Chamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 9, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 576 mum -160 mum 2.63 m 9.53 keV 0 eV 0 fm 0 fm WorldPV initStep - 1 606 mum 496 mum 2.63 m 7.84 keV 1.69 keV 720 mum 720 mum WorldPV eIoni - 2 775 mum 1.02 mm 2.63 m 6.18 keV 1.66 keV 594 mum 1.31 mm WorldPV eIoni - 3 653 mum 985 mum 2.63 m 5.05 keV 1.13 keV 484 mum 1.8 mm WorldPV eIoni - 4 823 mum 778 mum 2.63 m 3.69 keV 1.35 keV 414 mum 2.21 mm WorldPV eIoni - 5 999 mum 932 mum 2.63 m 1.36 keV 2.33 keV 326 mum 2.54 mm WorldPV eIoni - 6 1.01 mm 943 mum 2.63 m 0 eV 1.36 keV 88.8 mum 2.63 mm WorldPV eIoni + 0 25.4 mum -30.9 mum -1.58 m 2.7 keV 0 eV 0 fm 0 fm Chamber initStep + 1 18.5 mum -37.4 mum -1.58 m 4.34e-13 eV 2.7 keV 156 mum 156 mum Chamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 8, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 559 mum -156 mum 2.48 m 15.8 keV 0 eV 0 fm 0 fm WorldPV initStep - 1 404 mum -1.24 mm 2.48 m 13 keV 2.76 keV 1.32 mm 1.32 mm WorldPV eIoni - 2 728 mum -2.08 mm 2.48 m 11.3 keV 1.78 keV 1.03 mm 2.35 mm WorldPV eIoni - 3 1.08 mm -2.78 mm 2.48 m 6.85 keV 4.41 keV 864 mum 3.21 mm WorldPV eIoni - 4 1.13 mm -2.81 mm 2.48 m 3.24 keV 3.61 keV 527 mum 3.74 mm WorldPV eIoni - 5 1.18 mm -2.9 mm 2.48 m 1.1 keV 2.14 keV 291 mum 4.03 mm WorldPV eIoni - 6 1.18 mm -2.93 mm 2.48 m 4.34e-13 eV 1.1 keV 65.7 mum 4.1 mm WorldPV eIoni + 0 26.9 mum -32.6 mum -1.53 m 2.15 keV 0 eV 0 fm 0 fm Chamber initStep + 1 28.1 mum -25.9 mum -1.53 m 0 eV 2.15 keV 114 mum 114 mum Chamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 7, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 548 mum -153 mum 2.38 m 9.3 keV 0 eV 0 fm 0 fm Tracker initStep - 1 1.11 mm -63.7 mum 2.38 m 8.16 keV 1.14 keV 702 mum 702 mum Tracker eIoni - 2 1.6 mm -179 mum 2.38 m 1.73e-12 eV 8.16 keV 617 mum 1.32 mm Tracker eIoni + 0 26.1 mum -31.6 mum -1.56 m 1.19 keV 0 eV 0 fm 0 fm Chamber initStep + 1 22.7 mum -31.2 mum -1.56 m 0 eV 1.19 keV 51.2 mum 51.2 mum Chamber eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 6, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 503 mum -141 mum 1.98 m 12.5 keV 0 eV 0 fm 0 fm Tracker initStep - 1 -148 mum -789 mum 1.98 m 11 keV 1.55 keV 980 mum 980 mum Tracker eIoni - 2 -836 mum -789 mum 1.98 m 9.68 keV 1.31 keV 841 mum 1.82 mm Tracker eIoni - 3 -1.5 mm -815 mum 1.98 m 7.15 keV 2.53 keV 731 mum 2.55 mm Tracker eIoni - 4 -1.86 mm -977 mum 1.98 m 5.16 keV 1.99 keV 547 mum 3.1 mm Tracker eIoni - 5 -1.83 mm -736 mum 1.98 m 3.5 keV 1.66 keV 421 mum 3.52 mm Tracker eIoni - 6 -2.01 mm -670 mum 1.98 m 2.16 keV 1.34 keV 312 mum 3.83 mm Tracker eIoni - 7 -2.1 mm -642 mum 1.98 m 0 eV 2.16 keV 176 mum 4.01 mm Tracker eIoni + 0 23.6 mum -28.7 mum -1.64 m 6.08 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -241 mum 34.6 mum -1.64 m 5.15 keV 936 eV 478 mum 478 mum Tracker eIoni + 2 -286 mum -35.5 mum -1.64 m 1.72 keV 3.43 keV 420 mum 899 mum Tracker eIoni + 3 -290 mum -7.04 mum -1.64 m 4.34e-13 eV 1.72 keV 124 mum 1.02 mm Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 5, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 472 mum -132 mum 1.71 m 295 keV 0 eV 0 fm 0 fm Chamber initStep - 1 -8.3 mm 3.47 mm 1.72 m 273 keV 13.8 keV 2.16 cm 2.16 cm Chamber eBrem - 2 -3.74 cm -6.02 mm 1.74 m 247 keV 26 keV 5.06 cm 7.22 cm Chamber eIoni - 3 -1.03 cm 1.26 mm 1.75 m 213 keV 34.3 keV 4.34 cm 11.6 cm Chamber eIoni - 4 9.34 mm -1.14 cm 1.75 m 162 keV 50.6 keV 3.44 cm 15 cm Chamber eIoni - 5 -5.22 mm -1.62 cm 1.75 m 146 keV 16.5 keV 2.23 cm 17.2 cm Chamber eIoni - 6 -5.81 mm -2.23 cm 1.76 m 122 keV 23.4 keV 1.88 cm 19.1 cm Chamber eIoni - 7 -1.42 cm -2.26 cm 1.76 m 110 keV 12.7 keV 1.42 cm 20.5 cm Chamber eIoni - 8 -2.11 cm -1.84 cm 1.77 m 97.1 keV 12.6 keV 1.18 cm 21.7 cm Chamber eIoni - 9 -1.59 cm -2.28 cm 1.77 m 93.5 keV 3.61 keV 9.73 mm 22.7 cm Chamber eIoni - 10 -2.19 cm -2.15 cm 1.76 m 83 keV 10.5 keV 9.14 mm 23.6 cm Chamber eIoni - 11 -2.1 cm -2.66 cm 1.76 m 76 keV 7.02 keV 7.58 mm 24.4 cm Chamber eIoni - 12 -1.85 cm -2.38 cm 1.76 m 44.9 keV 31.1 keV 6.56 mm 25 cm Chamber eIoni - 13 -1.67 cm -2.3 cm 1.76 m 38.9 keV 5.98 keV 2.91 mm 25.3 cm Chamber eIoni - 14 -1.56 cm -2.41 cm 1.76 m 34.6 keV 4.34 keV 2.36 mm 25.5 cm Chamber eIoni - 15 -1.69 cm -2.42 cm 1.76 m 26.4 keV 8.22 keV 1.99 mm 25.7 cm Chamber eIoni - 16 -1.67 cm -2.36 cm 1.76 m 22.4 keV 4 keV 1.38 mm 25.9 cm Chamber eIoni - 17 -1.63 cm -2.33 cm 1.77 m 17 keV 5.32 keV 1.12 mm 26 cm Chamber eIoni - 18 -1.63 cm -2.28 cm 1.77 m 13.6 keV 3.42 keV 825 mum 26.1 cm Chamber eIoni - 19 -1.61 cm -2.28 cm 1.77 m 8.49 keV 5.12 keV 662 mum 26.1 cm Chamber eIoni - 20 -1.6 cm -2.27 cm 1.77 m 2.66 keV 5.83 keV 452 mum 26.2 cm Chamber eIoni - 21 -1.6 cm -2.27 cm 1.77 m 0 eV 2.66 keV 154 mum 26.2 cm Chamber eIoni - -********************************************************************************************************* -* G4Track Information: Particle = gamma, Track ID = 10, Parent ID = 5 -********************************************************************************************************* - -Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -8.3 mm 3.47 mm 1.72 m 7.73 keV 0 eV 0 fm 0 fm Chamber initStep - 1 -8.99 mm 3.61 mm 1.72 m 0 eV 7.73 keV 989 mum 989 mum Chamber phot + 0 16 mum -19.5 mum -1.88 m 85 keV 0 eV 0 fm 0 fm Tracker initStep + 1 -1.72 cm -8.94 mm -1.88 m 77.2 keV 7.76 keV 2.09 cm 2.09 cm Tracker eIoni + 2 -1.8 cm -2.53 cm -1.88 m 66.9 keV 10.4 keV 1.76 cm 3.85 cm Tracker eIoni + 3 -2.65 cm -2.19 cm -1.88 m 59.6 keV 7.25 keV 1.37 cm 5.22 cm Tracker eIoni + 4 -3.41 cm -2.75 cm -1.87 m 53.8 keV 5.84 keV 1.12 cm 6.34 cm Tracker eIoni + 5 -4.02 cm -2.51 cm -1.87 m 44.8 keV 8.99 keV 9.38 mm 7.28 cm Tracker eIoni + 6 -4.2 cm -2.8 cm -1.86 m 39.4 keV 5.46 keV 6.84 mm 7.96 cm Tracker eIoni + 7 -4.66 cm -2.9 cm -1.86 m 33.4 keV 5.9 keV 5.49 mm 8.51 cm Tracker eIoni + 8 -4.7 cm -2.87 cm -1.86 m 31 keV 2.42 keV 4.17 mm 8.93 cm Tracker eIoni + 9 -4.73 cm -2.95 cm -1.85 m 28.2 keV 2.79 keV 3.67 mm 9.3 cm Tracker eIoni + 10 -4.99 cm -2.9 cm -1.85 m 24.4 keV 3.88 keV 3.15 mm 9.61 cm Tracker eIoni + 11 -5.05 cm -2.79 cm -1.85 m 18.5 keV 5.85 keV 2.49 mm 9.86 cm Tracker eIoni + 12 -5.06 cm -2.72 cm -1.85 m 15.9 keV 2.59 keV 1.64 mm 10 cm Tracker eIoni + 13 -5.06 cm -2.61 cm -1.85 m 14.3 keV 1.6 keV 1.33 mm 10.2 cm Tracker eIoni + 14 -5.1 cm -2.55 cm -1.85 m 13.3 keV 985 eV 1.15 mm 10.3 cm Tracker eIoni + 15 -5.14 cm -2.51 cm -1.85 m 9.71 keV 3.62 keV 1.06 mm 10.4 cm Tracker eIoni + 16 -5.19 cm -2.53 cm -1.85 m 8.19 keV 1.52 keV 733 mum 10.5 cm Tracker eIoni + 17 -5.22 cm -2.48 cm -1.85 m 6.59 keV 1.61 keV 619 mum 10.5 cm Tracker eIoni + 18 -5.2 cm -2.48 cm -1.85 m 5.31 keV 1.27 keV 510 mum 10.6 cm Tracker eIoni + 19 -5.21 cm -2.51 cm -1.85 m 3.99 keV 1.32 keV 431 mum 10.6 cm Tracker eIoni + 20 -5.19 cm -2.51 cm -1.85 m 1.91 keV 2.08 keV 346 mum 10.6 cm Tracker eIoni + 21 -5.19 cm -2.51 cm -1.85 m 4.34e-13 eV 1.91 keV 146 mum 10.7 cm Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 4, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 113 mum -33.8 mum -1.41 m 40.5 keV 0 eV 0 fm 0 fm Chamber initStep - 1 1.09 mm 301 mum -1.41 m 8.13 keV 32.4 keV 2.51 mm 2.51 mm Chamber eIoni - 2 1.07 mm 452 mum -1.41 m 5.66 keV 2.47 keV 438 mum 2.95 mm Chamber eIoni - 3 1.15 mm 468 mum -1.41 m 4.24 keV 1.41 keV 341 mum 3.29 mm Chamber eIoni - 4 1.06 mm 500 mum -1.41 m 4 keV 239 eV 272 mum 3.56 mm Chamber eIoni - 5 1.04 mm 520 mum -1.41 m 0 eV 4 keV 258 mum 3.82 mm Chamber eIoni + 0 4.07 mum -4.96 mum -2.27 m 4.5 keV 0 eV 0 fm 0 fm Tracker initStep + 1 168 mum -29.7 mum -2.27 m 662 eV 3.84 keV 380 mum 380 mum Tracker eIoni + 2 161 mum -31.6 mum -2.27 m 0 eV 662 eV 35.5 mum 415 mum Tracker eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 3, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 18.5 mum -5.87 mum -2.24 m 10 keV 0 eV 0 fm 0 fm Tracker initStep - 1 613 mum -366 mum -2.24 m 8.63 keV 1.39 keV 757 mum 757 mum Tracker eIoni - 2 885 mum -901 mum -2.24 m 5.88 keV 2.75 keV 651 mum 1.41 mm Tracker eIoni - 3 730 mum -1.29 mm -2.24 m 2.61 keV 3.27 keV 465 mum 1.87 mm Tracker eIoni - 4 706 mum -1.14 mm -2.24 m 1.56 keV 1.05 keV 232 mum 2.11 mm Tracker eIoni - 5 687 mum -1.09 mm -2.24 m 2.17e-13 eV 1.56 keV 108 mum 2.21 mm Tracker eIoni + 0 0 fm 0 fm -2.44 m 2.41 MeV 0 eV 0 fm 0 fm Target initStep + 1 249 mum -172 mum -2.44 m 1.79 MeV 617 keV 680 mum 680 mum Target eIoni + 2 104 mum -263 mum -2.44 m 1.29 MeV 498 keV 573 mum 1.25 mm Target eIoni + 3 176 mum -239 mum -2.44 m 704 keV 589 keV 480 mum 1.73 mm Target eIoni + 4 211 mum -295 mum -2.44 m 338 keV 366 keV 346 mum 2.08 mm Target eIoni + 5 211 mum -285 mum -2.44 m 0 eV 338 keV 175 mum 2.26 mm Target eIoni ********************************************************************************************************* * G4Track Information: Particle = e-, Track ID = 2, Parent ID = 1 ********************************************************************************************************* Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process - 0 -56.4 nm 65.7 nm -2.65 m 11.2 keV 0 eV 0 fm 0 fm WorldPV initStep - 1 -292 mum -715 mum -2.65 m 9.66 keV 1.58 keV 862 mum 862 mum WorldPV eIoni - 2 -112 mum -1.24 mm -2.65 m 7.93 keV 1.73 keV 729 mum 1.59 mm WorldPV eIoni - 3 -534 mum -1.49 mm -2.65 m 6 keV 1.93 keV 601 mum 2.19 mm WorldPV eIoni - 4 -844 mum -1.67 mm -2.65 m 4.31 keV 1.68 keV 473 mum 2.66 mm WorldPV eIoni - 5 -1.07 mm -1.89 mm -2.65 m 2.58 keV 1.73 keV 368 mum 3.03 mm WorldPV eIoni - 6 -1.15 mm -2 mm -2.65 m 439 eV 2.14 keV 229 mum 3.26 mm WorldPV eIoni - 7 -1.15 mm -2.01 mm -2.65 m 5.42e-14 eV 439 eV 23.4 mum 3.28 mm WorldPV eIoni + 0 0 fm 0 fm -2.42 m 9.41 MeV 0 eV 0 fm 0 fm Target initStep + 1 -444 mum 755 mum -2.42 m 4.67 MeV 1.47 MeV 1.34 mm 1.34 mm Target eBrem + 2 -908 mum 762 mum -2.42 m 3.4 MeV 556 keV 495 mum 1.84 mm Target eBrem + 3 -1.29 mm 436 mum -2.42 m 2.41 MeV 989 keV 843 mum 2.68 mm Target eIoni + 4 -1.57 mm 616 mum -2.42 m 1.63 MeV 778 keV 681 mum 3.36 mm Target eIoni + 5 -1.48 mm 701 mum -2.42 m 1.14 MeV 497 keV 545 mum 3.9 mm Target eIoni + 6 -1.49 mm 713 mum -2.42 m 673 keV 23.4 keV 23.7 mum 3.93 mm Target eBrem + 7 -1.54 mm 746 mum -2.42 m 252 keV 421 keV 336 mum 4.26 mm Target eIoni + 8 -1.53 mm 750 mum -2.42 m 0 eV 252 keV 115 mum 4.38 mm Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 74, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.49 mm 713 mum -2.42 m 442 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.05 cm -5.84 mm -2.41 m 0 eV 88 keV 1.45 cm 1.45 cm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 75, Parent ID = 74 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.05 cm -5.84 mm -2.41 m 354 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.05 cm -5.85 mm -2.41 m 0 eV 354 keV 187 mum 187 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 73, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -908 mum 762 mum -2.42 m 712 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.01 mm 728 mum -2.42 m 0 eV 88 keV 115 mum 115 mum Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 76, Parent ID = 73 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -1.01 mm 728 mum -2.42 m 624 keV 0 eV 0 fm 0 fm Target initStep + 1 -1.03 mm 697 mum -2.42 m 138 keV 486 keV 321 mum 321 mum Target eIoni + 2 -1.03 mm 698 mum -2.42 m 0 eV 138 keV 46.1 mum 367 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 72, Parent ID = 2 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -444 mum 755 mum -2.42 m 3.27 MeV 0 eV 0 fm 0 fm Target initStep + 1 -8.69 mm 2.03 mm -2.42 m 0 eV 0 eV 9.22 mm 9.22 mm Target conv + +********************************************************************************************************* +* G4Track Information: Particle = e+, Track ID = 78, Parent ID = 72 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.69 mm 2.03 mm -2.42 m 514 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.72 mm 2.03 mm -2.42 m 0 eV 514 keV 280 mum 280 mum Target eIoni + 2 -8.72 mm 2.03 mm -2.42 m 0 eV 0 eV 0 fm 280 mum Target annihil + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 80, Parent ID = 78 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.72 mm 2.03 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.98 mm 2.88 mm -2.42 m 0 eV 88 keV 1.8 mm 1.8 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 81, Parent ID = 80 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.98 mm 2.88 mm -2.42 m 423 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.99 mm 2.89 mm -2.42 m 5.55e-11 eV 423 keV 235 mum 235 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 79, Parent ID = 78 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.72 mm 2.03 mm -2.42 m 511 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.37 mm 920 mum -2.42 m 484 keV 0 eV 2.35 mm 2.35 mm Target compt + 2 -7.56 mm 438 mum -2.42 m 407 keV 0 eV 2.2 mm 4.55 mm Target compt + 3 -6.01 mm 522 mum -2.42 m 0 eV 88 keV 1.88 mm 6.43 mm Target phot + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 84, Parent ID = 79 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -6.01 mm 522 mum -2.42 m 319 keV 0 eV 0 fm 0 fm Target initStep + 1 -6 mm 522 mum -2.42 m 0 eV 319 keV 162 mum 162 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 83, Parent ID = 79 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -7.56 mm 438 mum -2.42 m 76.2 keV 0 eV 0 fm 0 fm Target initStep + 1 -7.56 mm 437 mum -2.42 m 1.39e-11 eV 76.2 keV 17.7 mum 17.7 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 82, Parent ID = 79 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.37 mm 920 mum -2.42 m 27.3 keV 0 eV 0 fm 0 fm Target initStep + 1 -8.37 mm 920 mum -2.42 m 1.04e-11 eV 27.3 keV 3.35 mum 3.35 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 77, Parent ID = 72 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.69 mm 2.03 mm -2.42 m 1.73 MeV 0 eV 0 fm 0 fm Target initStep + 1 -8.77 mm 2.01 mm -2.42 m 278 keV 530 keV 94.6 mum 94.6 mum Target eBrem + 2 -8.77 mm 2.01 mm -2.42 m 5.55e-11 eV 278 keV 133 mum 227 mum Target eIoni + +********************************************************************************************************* +* G4Track Information: Particle = gamma, Track ID = 85, Parent ID = 77 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -8.77 mm 2.01 mm -2.42 m 926 keV 0 eV 0 fm 0 fm Target initStep + 1 -2.13 cm 156 mum -2.42 m 591 keV 0 eV 1.33 cm 1.33 cm Target compt + 2 -2.5 cm -4.43 mm -2.42 m 591 keV 0 eV 5.91 mm 1.92 cm Target Transportation + 3 -32 cm -36.8 cm -2.4 m 591 keV 0 eV 46.9 cm 48.8 cm World Transportation + 4 -1.97 m -2.4 m -2.28 m 591 keV 0 eV 2.62 m 3.11 m Tracker Transportation + 5 -2.38 m -2.91 m -2.25 m 591 keV 0 eV 65.8 cm 3.77 m OutOfWorld Transportation + +********************************************************************************************************* +* G4Track Information: Particle = e-, Track ID = 86, Parent ID = 85 +********************************************************************************************************* + +Step# X Y Z KineE dEStep StepLeng TrakLeng Volume Process + 0 -2.13 cm 156 mum -2.42 m 335 keV 0 eV 0 fm 0 fm World initStep + 1 -2.13 cm 156 mum -2.42 m 335 keV 0 eV -0 fm 0 fm World Transportation + 2 -2.13 cm 162 mum -2.42 m 328 keV 7.07 keV 9.76 mum 9.76 mum Target msc + 3 -2.13 cm 172 mum -2.42 m 0 eV 328 keV 168 mum 178 mum Target eIoni >>> Event 0 0 trajectories stored in this event. ### Run 2 start. @@ -1658,3 +3381,5 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng 0 trajectories stored in this event. >>> Event 99 0 trajectories stored in this event. +Graphics systems deleted. +Visualization Manager deleting... diff --git a/examples/novice/N02/include/ExN02ChamberParameterisation.hh b/examples/novice/N02/include/ExN02ChamberParameterisation.hh index 66a4dae4b6..3d5731f6df 100644 --- a/examples/novice/N02/include/ExN02ChamberParameterisation.hh +++ b/examples/novice/N02/include/ExN02ChamberParameterisation.hh @@ -21,16 +21,16 @@ // ******************************************************************** // // -// $Id: ExN02ChamberParameterisation.hh,v 1.3.4.1 2001/06/28 19:07:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02ChamberParameterisation.hh,v 1.5 2001/10/11 12:32:35 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // A parameterisation that describes a series of boxes along Z // The boxes have equal width, & their lengths are a linear equation. // They are spaced an equal distance apart, starting from given location. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02ChamberParameterisation_H #define ExN02ChamberParameterisation_H 1 @@ -41,7 +41,7 @@ class G4VPhysicalVolume; class G4Box; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02ChamberParameterisation : public G4VPVParameterisation { @@ -53,7 +53,8 @@ class ExN02ChamberParameterisation : public G4VPVParameterisation G4double widthChamber, G4double lengthInitial, G4double lengthFinal ); - + + virtual ~ExN02ChamberParameterisation(); void ComputeTransformation (const G4int copyNo, @@ -73,6 +74,8 @@ class ExN02ChamberParameterisation : public G4VPVParameterisation G4double fHalfLengthIncr; // The Increment for the half-length }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02DetectorConstruction.hh b/examples/novice/N02/include/ExN02DetectorConstruction.hh index b93a8f7d86..47160999a9 100644 --- a/examples/novice/N02/include/ExN02DetectorConstruction.hh +++ b/examples/novice/N02/include/ExN02DetectorConstruction.hh @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02DetectorConstruction.hh,v 1.3.4.1 2001/06/28 19:07:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02DetectorConstruction.hh,v 1.6 2001/11/05 08:24:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02DetectorConstruction_h #define ExN02DetectorConstruction_h 1 @@ -40,7 +40,7 @@ class G4VPhysicalVolume; class G4Material; class ExN02DetectorMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02DetectorConstruction : public G4VUserDetectorConstruction { @@ -64,28 +64,28 @@ class ExN02DetectorConstruction : public G4VUserDetectorConstruction void SetMagField(G4double); private: - - G4Box* solidWorld; //pointer to the solid enveloppe - G4LogicalVolume* logicWorld; //pointer to the logical enveloppe - G4VPhysicalVolume* physiWorld; //pointer to the physical enveloppe + + G4Box* solidWorld; // pointer to the solid envelope + G4LogicalVolume* logicWorld; // pointer to the logical envelope + G4VPhysicalVolume* physiWorld; // pointer to the physical envelope - G4Box* solidTarget; //pointer to the solid Target - G4LogicalVolume* logicTarget; //pointer to the logical Target - G4VPhysicalVolume* physiTarget; //pointer to the physical Target + G4Box* solidTarget; // pointer to the solid Target + G4LogicalVolume* logicTarget; // pointer to the logical Target + G4VPhysicalVolume* physiTarget; // pointer to the physical Target - G4Box* solidTracker; //pointer to the solid Tracker - G4LogicalVolume* logicTracker; //pointer to the logical Tracker - G4VPhysicalVolume* physiTracker; //pointer to the physical Tracker + G4Box* solidTracker; // pointer to the solid Tracker + G4LogicalVolume* logicTracker; // pointer to the logical Tracker + G4VPhysicalVolume* physiTracker; // pointer to the physical Tracker - G4Box* solidChamber; //pointer to the solid Chamber - G4LogicalVolume* logicChamber; //pointer to the logical Chamber - G4VPhysicalVolume* physiChamber; //pointer to the physical Chamber + G4Box* solidChamber; // pointer to the solid Chamber + G4LogicalVolume* logicChamber; // pointer to the logical Chamber + G4VPhysicalVolume* physiChamber; // pointer to the physical Chamber - G4Material* TargetMater; //pointer to the target material - G4Material* ChamberMater; //pointer to the chamber material - ExN02MagneticField* fpMagField; //pointer to the magnetic field + G4Material* TargetMater; // pointer to the target material + G4Material* ChamberMater; // pointer to the chamber material + ExN02MagneticField* fpMagField; // pointer to the magnetic field - ExN02DetectorMessenger* detectorMessenger; //pointer to the Messenger + ExN02DetectorMessenger* detectorMessenger; // pointer to the Messenger G4double fWorldLength; // Full length of the world volume G4double fTargetLength; // Full length of Target @@ -95,5 +95,6 @@ class ExN02DetectorConstruction : public G4VUserDetectorConstruction G4double ChamberSpacing; // distance between chambers }; -#endif +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +#endif diff --git a/examples/novice/N02/include/ExN02DetectorMessenger.hh b/examples/novice/N02/include/ExN02DetectorMessenger.hh index e830bdef2e..3a627a041d 100644 --- a/examples/novice/N02/include/ExN02DetectorMessenger.hh +++ b/examples/novice/N02/include/ExN02DetectorMessenger.hh @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02DetectorMessenger.hh,v 1.3.4.1 2001/06/28 19:07:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02DetectorMessenger.hh,v 1.5 2001/10/11 12:32:35 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02DetectorMessenger_h #define ExN02DetectorMessenger_h 1 @@ -38,7 +38,7 @@ class G4UIdirectory; class G4UIcmdWithAString; class G4UIcmdWithADoubleAndUnit; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02DetectorMessenger: public G4UImessenger { @@ -57,5 +57,7 @@ class ExN02DetectorMessenger: public G4UImessenger G4UIcmdWithADoubleAndUnit* FieldCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02EventAction.hh b/examples/novice/N02/include/ExN02EventAction.hh index baea4975b8..24d072e2af 100644 --- a/examples/novice/N02/include/ExN02EventAction.hh +++ b/examples/novice/N02/include/ExN02EventAction.hh @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02EventAction.hh,v 1.4.4.1 2001/06/28 19:07:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02EventAction.hh,v 1.6 2001/10/11 12:32:35 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02EventAction_h #define ExN02EventAction_h 1 @@ -34,7 +34,7 @@ class G4Event; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02EventAction : public G4UserEventAction { @@ -47,6 +47,8 @@ class ExN02EventAction : public G4UserEventAction void EndOfEventAction(const G4Event*); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02MagneticField.hh b/examples/novice/N02/include/ExN02MagneticField.hh index 598c3223b6..81521d4fb0 100644 --- a/examples/novice/N02/include/ExN02MagneticField.hh +++ b/examples/novice/N02/include/ExN02MagneticField.hh @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: ExN02MagneticField.hh,v 1.3.4.1 2001/06/28 19:07:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02MagneticField.hh,v 1.5 2001/10/11 12:32:35 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // A class for control of the Magnetic Field of the detector. // The field is assumed to be uniform. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02MagneticField_H #define ExN02MagneticField_H @@ -38,7 +38,7 @@ class G4FieldManager; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02MagneticField: public G4UniformMagField @@ -61,4 +61,6 @@ class ExN02MagneticField: public G4UniformMagField G4FieldManager* GetGlobalFieldManager(); // static }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02PhysicsList.hh b/examples/novice/N02/include/ExN02PhysicsList.hh index 79c70ed67c..1c7feabca6 100644 --- a/examples/novice/N02/include/ExN02PhysicsList.hh +++ b/examples/novice/N02/include/ExN02PhysicsList.hh @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02PhysicsList.hh,v 1.7.4.1 2001/06/28 19:07:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02PhysicsList.hh,v 1.9 2001/10/11 12:32:35 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02PhysicsList_h #define ExN02PhysicsList_h 1 @@ -33,7 +33,7 @@ #include "G4VUserPhysicsList.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02PhysicsList: public G4VUserPhysicsList { @@ -62,6 +62,8 @@ class ExN02PhysicsList: public G4VUserPhysicsList void ConstructEM(); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh b/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh index a311fc89ab..d4fa762832 100644 --- a/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh +++ b/examples/novice/N02/include/ExN02PrimaryGeneratorAction.hh @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02PrimaryGeneratorAction.hh,v 1.3.4.1 2001/06/28 19:07:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02PrimaryGeneratorAction.hh,v 1.5 2001/10/11 12:32:35 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02PrimaryGeneratorAction_h #define ExN02PrimaryGeneratorAction_h 1 @@ -36,7 +36,7 @@ class ExN02DetectorConstruction; class G4ParticleGun; class G4Event; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { @@ -52,6 +52,8 @@ class ExN02PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction ExN02DetectorConstruction* myDetector; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02RunAction.hh b/examples/novice/N02/include/ExN02RunAction.hh index 79c8a913ad..5b4d80bdd4 100644 --- a/examples/novice/N02/include/ExN02RunAction.hh +++ b/examples/novice/N02/include/ExN02RunAction.hh @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02RunAction.hh,v 1.4.4.1 2001/06/28 19:07:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02RunAction.hh,v 1.6 2001/10/11 12:32:36 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02RunAction_h #define ExN02RunAction_h 1 @@ -33,7 +33,7 @@ #include "G4UserRunAction.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4Run; @@ -48,6 +48,8 @@ class ExN02RunAction : public G4UserRunAction void EndOfRunAction(const G4Run*); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02SteppingAction.hh b/examples/novice/N02/include/ExN02SteppingAction.hh index e260107e8f..a66e3e775e 100644 --- a/examples/novice/N02/include/ExN02SteppingAction.hh +++ b/examples/novice/N02/include/ExN02SteppingAction.hh @@ -21,18 +21,18 @@ // ******************************************************************** // // -// $Id: ExN02SteppingAction.hh,v 1.4.4.1 2001/06/28 19:07:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02SteppingAction.hh,v 1.6 2001/10/11 12:32:36 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02SteppingAction_h #define ExN02SteppingAction_h 1 #include "G4UserSteppingAction.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02SteppingAction : public G4UserSteppingAction { @@ -43,4 +43,6 @@ class ExN02SteppingAction : public G4UserSteppingAction void UserSteppingAction(const G4Step*); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02SteppingVerbose.hh b/examples/novice/N02/include/ExN02SteppingVerbose.hh index bec0451467..16a00accc0 100644 --- a/examples/novice/N02/include/ExN02SteppingVerbose.hh +++ b/examples/novice/N02/include/ExN02SteppingVerbose.hh @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: ExN02SteppingVerbose.hh,v 1.4.4.1 2001/06/28 19:07:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02SteppingVerbose.hh,v 1.6 2001/10/11 12:32:36 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // This class manages the verbose outputs in G4SteppingManager. // It inherits from G4SteppingVerbose. // It shows how to extract informations during the tracking of a particle. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02SteppingVerbose; @@ -38,11 +38,11 @@ class ExN02SteppingVerbose; #include "G4SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -class ExN02SteppingVerbose : public G4SteppingVerbose { - -public: +class ExN02SteppingVerbose : public G4SteppingVerbose +{ + public: ExN02SteppingVerbose(); ~ExN02SteppingVerbose(); @@ -52,4 +52,6 @@ public: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02TrackerHit.hh b/examples/novice/N02/include/ExN02TrackerHit.hh index 6035a83788..a1f0da2e05 100644 --- a/examples/novice/N02/include/ExN02TrackerHit.hh +++ b/examples/novice/N02/include/ExN02TrackerHit.hh @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02TrackerHit.hh,v 1.3.4.1 2001/06/28 19:07:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02TrackerHit.hh,v 1.5 2001/10/11 12:32:36 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02TrackerHit_h #define ExN02TrackerHit_h 1 @@ -35,7 +35,7 @@ #include "G4Allocator.hh" #include "G4ThreeVector.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02TrackerHit : public G4VHit { @@ -73,13 +73,13 @@ class ExN02TrackerHit : public G4VHit G4ThreeVector pos; }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... typedef G4THitsCollection ExN02TrackerHitsCollection; extern G4Allocator ExN02TrackerHitAllocator; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void* ExN02TrackerHit::operator new(size_t) { @@ -88,14 +88,14 @@ inline void* ExN02TrackerHit::operator new(size_t) return aHit; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void ExN02TrackerHit::operator delete(void *aHit) { ExN02TrackerHitAllocator.FreeSingle((ExN02TrackerHit*) aHit); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #endif diff --git a/examples/novice/N02/include/ExN02TrackerSD.hh b/examples/novice/N02/include/ExN02TrackerSD.hh index 4c5ce8eda2..c1e46c5426 100644 --- a/examples/novice/N02/include/ExN02TrackerSD.hh +++ b/examples/novice/N02/include/ExN02TrackerSD.hh @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02TrackerSD.hh,v 1.3.4.1 2001/06/28 19:07:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02TrackerSD.hh,v 1.5 2001/10/11 12:32:36 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02TrackerSD_h #define ExN02TrackerSD_h 1 @@ -36,11 +36,10 @@ class G4Step; class G4HCofThisEvent; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02TrackerSD : public G4VSensitiveDetector { - public: ExN02TrackerSD(G4String); ~ExN02TrackerSD(); @@ -54,5 +53,7 @@ class ExN02TrackerSD : public G4VSensitiveDetector }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N02/include/ExN02VisManager.hh b/examples/novice/N02/include/ExN02VisManager.hh index 7cedba623d..6c271827c4 100644 --- a/examples/novice/N02/include/ExN02VisManager.hh +++ b/examples/novice/N02/include/ExN02VisManager.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN02VisManager.hh,v 1.3.4.1 2001/06/28 19:07:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02VisManager.hh,v 1.5 2001/10/11 12:32:36 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Example Visualization Manager implementing virtual function // RegisterGraphicsSystems. Exploits C-pre-processor variables @@ -42,7 +42,7 @@ // G4VisManager* myVisManager = new MyVisManager; // myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN02VisManager_h #define ExN02VisManager_h 1 @@ -51,7 +51,7 @@ #include "G4VisManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN02VisManager: public G4VisManager { @@ -65,6 +65,8 @@ private: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif #endif diff --git a/examples/novice/N02/src/ExN02ChamberParameterisation.cc b/examples/novice/N02/src/ExN02ChamberParameterisation.cc index c2f1c5d65d..6790c4a130 100644 --- a/examples/novice/N02/src/ExN02ChamberParameterisation.cc +++ b/examples/novice/N02/src/ExN02ChamberParameterisation.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02ChamberParameterisation.cc,v 1.4.2.1 2001/06/28 19:07:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02ChamberParameterisation.cc,v 1.6 2001/10/11 12:32:36 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02ChamberParameterisation.hh" @@ -33,7 +33,7 @@ #include "G4ThreeVector.hh" #include "G4Box.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02ChamberParameterisation::ExN02ChamberParameterisation( G4int NoChambers, @@ -51,20 +51,19 @@ ExN02ChamberParameterisation::ExN02ChamberParameterisation( // fHalfLengthLast = lengthFinal; if( NoChambers > 0 ){ fHalfLengthIncr = 0.5 * (lengthFinal-lengthInitial)/NoChambers; - - if( spacingZ < widthChamber ) { - G4Exception( "ExN02ChamberParameterisation construction: Width > Spacing" ); + if (spacingZ < widthChamber) { + G4Exception("ExN02ChamberParameterisation construction: Width>Spacing"); } } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02ChamberParameterisation::~ExN02ChamberParameterisation() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02ChamberParameterisation::ComputeTransformation (const G4int copyNo, G4VPhysicalVolume* physVol) const @@ -75,7 +74,7 @@ void ExN02ChamberParameterisation::ComputeTransformation physVol->SetRotation(0); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02ChamberParameterisation::ComputeDimensions (G4Box& trackerChamber, const G4int copyNo, @@ -87,4 +86,4 @@ void ExN02ChamberParameterisation::ComputeDimensions trackerChamber.SetZHalfLength(fHalfWidth); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02DetectorConstruction.cc b/examples/novice/N02/src/ExN02DetectorConstruction.cc index bef1cc44e7..c229c8fab7 100644 --- a/examples/novice/N02/src/ExN02DetectorConstruction.cc +++ b/examples/novice/N02/src/ExN02DetectorConstruction.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02DetectorConstruction.cc,v 1.6.2.1 2001/06/28 19:07:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02DetectorConstruction.cc,v 1.10 2001/11/05 08:24:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02DetectorConstruction.hh" #include "ExN02DetectorMessenger.hh" @@ -40,21 +40,21 @@ #include "G4PVParameterised.hh" #include "G4SDManager.hh" -///#include "G4UserLimits.hh" +#include "G4UserLimits.hh" #include "G4VisAttributes.hh" #include "G4Colour.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02DetectorConstruction::ExN02DetectorConstruction() -:solidWorld(NULL), logicWorld(NULL), physiWorld(NULL), - solidTarget(NULL), logicTarget(NULL), physiTarget(NULL), - solidTracker(NULL),logicTracker(NULL),physiTracker(NULL), - solidChamber(NULL),logicChamber(NULL),physiChamber(NULL), - TargetMater(NULL), ChamberMater(NULL),fpMagField(NULL), +:solidWorld(0), logicWorld(0), physiWorld(0), + solidTarget(0), logicTarget(0), physiTarget(0), + solidTracker(0),logicTracker(0),physiTracker(0), + solidChamber(0),logicChamber(0),physiChamber(0), + TargetMater(0), ChamberMater(0),fpMagField(0), fWorldLength(0.), fTargetLength(0.), fTrackerLength(0.), NbOfChambers(0) , ChamberWidth(0.), ChamberSpacing(0.) { @@ -62,15 +62,15 @@ ExN02DetectorConstruction::ExN02DetectorConstruction() detectorMessenger = new ExN02DetectorMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02DetectorConstruction::~ExN02DetectorConstruction() -{ +{ delete fpMagField; delete detectorMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* ExN02DetectorConstruction::Construct() { @@ -91,11 +91,6 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() Air->AddElement(elN, .7); Air->AddElement(elO, .3); - //Al - a = 26.98*g/mole; - density = 2.7*g/cm3; - G4Material* Aluminium = new G4Material(name="Al", z=13., a, density); - //Pb a = 207.19*g/mole; density = 11.35*g/cm3; @@ -119,8 +114,8 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() ChamberWidth = 20*cm; ChamberSpacing = 80*cm; - fTrackerLength = (NbOfChambers+1)*ChamberSpacing; // Full length of the Tracker - fTargetLength = 5.0 * cm; // Full length of the Target + fTrackerLength = (NbOfChambers+1)*ChamberSpacing; // Full length of Tracker + fTargetLength = 5.0 * cm; // Full length of Target TargetMater = Pb; ChamberMater = Xenon; @@ -138,14 +133,14 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() G4double HalfWorldLength = 0.5*fWorldLength; - solidWorld= new G4Box("World",HalfWorldLength,HalfWorldLength,HalfWorldLength); - logicWorld= new G4LogicalVolume( solidWorld, Air, "World", 0, 0, 0); + solidWorld= new G4Box("world",HalfWorldLength,HalfWorldLength,HalfWorldLength); + logicWorld= new G4LogicalVolume( solidWorld, Air, "World", 0, 0, 0); // Must place the World Physical volume unrotated at (0,0,0). // physiWorld = new G4PVPlacement(0, // no rotation G4ThreeVector(), // at (0,0,0) - "WorldPV", // its name + "World", // its name logicWorld, // its logical volume 0, // its mother volume false, // no boolean operations @@ -157,11 +152,11 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() G4ThreeVector positionTarget = G4ThreeVector(0,0,-(targetSize+trackerSize)); - solidTarget = new G4Box("TargetSolid",targetSize,targetSize,targetSize); - logicTarget = new G4LogicalVolume(solidTarget,TargetMater,"TargetLV",0,0,0); + solidTarget = new G4Box("target",targetSize,targetSize,targetSize); + logicTarget = new G4LogicalVolume(solidTarget,TargetMater,"Target",0,0,0); physiTarget = new G4PVPlacement(0, // no rotation positionTarget, // at (x,y,z) - "TargetPV", // its name + "Target", // its name logicTarget, // its logical volume physiWorld, // its mother volume false, // no boolean operations @@ -176,7 +171,7 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() G4ThreeVector positionTracker = G4ThreeVector(0,0,0); - solidTracker = new G4Box("Tracker",trackerSize,trackerSize,trackerSize); + solidTracker = new G4Box("tracker",trackerSize,trackerSize,trackerSize); logicTracker = new G4LogicalVolume(solidTracker , Air, "Tracker",0,0,0); physiTracker = new G4PVPlacement(0, // no rotation positionTracker, // at (x,y,z) @@ -246,19 +241,19 @@ G4VPhysicalVolume* ExN02DetectorConstruction::Construct() //--------- example of User Limits ------------------------------- - //below is an example of how to set tracking constraints in a given - //logical volume(see also in N02PhysicsList how to setup the process - //G4UserSpecialCuts). - //set a max Step length in the tracker region - ///G4double maxStep = 0.5*ChamberWidth, maxLength = 2*fTrackerLength; - ///G4double maxTime = 0.1*ns, minEkin = 10*MeV; - ///logicTracker->SetUserLimits(new G4UserLimits(maxStep,maxLength,maxTime, - /// minEkin)); + // below is an example of how to set tracking constraints in a given + // logical volume(see also in N02PhysicsList how to setup the process + // G4UserSpecialCuts). + // Sets a max Step length in the tracker region + // G4double maxStep = 0.5*ChamberWidth, maxLength = 2*fTrackerLength; + // G4double maxTime = 0.1*ns, minEkin = 10*MeV; + // logicTracker->SetUserLimits(new G4UserLimits(maxStep,maxLength,maxTime, + // minEkin)); return physiWorld; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02DetectorConstruction::setTargetMaterial(G4String materialName) { @@ -272,7 +267,7 @@ void ExN02DetectorConstruction::setTargetMaterial(G4String materialName) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02DetectorConstruction::setChamberMaterial(G4String materialName) { @@ -286,11 +281,11 @@ void ExN02DetectorConstruction::setChamberMaterial(G4String materialName) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02DetectorConstruction::SetMagField(G4double fieldValue) { fpMagField->SetFieldValue(fieldValue); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02DetectorMessenger.cc b/examples/novice/N02/src/ExN02DetectorMessenger.cc index 157eeafb84..9447b22ad5 100644 --- a/examples/novice/N02/src/ExN02DetectorMessenger.cc +++ b/examples/novice/N02/src/ExN02DetectorMessenger.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02DetectorMessenger.cc,v 1.3.4.1 2001/06/28 19:07:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02DetectorMessenger.cc,v 1.6 2001/10/11 12:32:37 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02DetectorMessenger.hh" @@ -35,9 +35,9 @@ #include "G4UIcmdWithADoubleAndUnit.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -ExN02DetectorMessenger::ExN02DetectorMessenger(ExN02DetectorConstruction * myDet) +ExN02DetectorMessenger::ExN02DetectorMessenger(ExN02DetectorConstruction* myDet) :myDetector(myDet) { @@ -56,14 +56,14 @@ ExN02DetectorMessenger::ExN02DetectorMessenger(ExN02DetectorConstruction * myDet FieldCmd = new G4UIcmdWithADoubleAndUnit("/mydet/setField",this); FieldCmd->SetGuidance("Define magnetic field."); - FieldCmd->SetGuidance("Magnetic field will be in Z direction."); - FieldCmd->SetParameterName("Bz",false); + FieldCmd->SetGuidance("Magnetic field will be in X direction."); + FieldCmd->SetParameterName("Bx",false); FieldCmd->SetDefaultUnit("tesla"); FieldCmd->SetUnitCategory("Magnetic flux density"); FieldCmd->AvailableForStates(PreInit,Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02DetectorMessenger::~ExN02DetectorMessenger() { @@ -73,18 +73,18 @@ ExN02DetectorMessenger::~ExN02DetectorMessenger() delete mydetDir; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void ExN02DetectorMessenger::SetNewValue(G4UIcommand * command,G4String newValues) +void ExN02DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { if( command == TargMatCmd ) - { myDetector->setTargetMaterial(newValues);} + { myDetector->setTargetMaterial(newValue);} if( command == ChamMatCmd ) - { myDetector->setChamberMaterial(newValues);} + { myDetector->setChamberMaterial(newValue);} if( command == FieldCmd ) - { myDetector->SetMagField(FieldCmd->GetNewDoubleValue(newValues));} + { myDetector->SetMagField(FieldCmd->GetNewDoubleValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02EventAction.cc b/examples/novice/N02/src/ExN02EventAction.cc index 5959c0eb3a..375ea156db 100644 --- a/examples/novice/N02/src/ExN02EventAction.cc +++ b/examples/novice/N02/src/ExN02EventAction.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02EventAction.cc,v 1.5.4.1 2001/06/28 19:07:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02EventAction.cc,v 1.7 2001/10/11 12:32:37 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02EventAction.hh" @@ -33,40 +33,54 @@ #include "G4EventManager.hh" #include "G4TrajectoryContainer.hh" #include "G4Trajectory.hh" +#include "G4VVisManager.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02EventAction::ExN02EventAction() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02EventAction::~ExN02EventAction() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02EventAction::BeginOfEventAction(const G4Event*) {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02EventAction::EndOfEventAction(const G4Event* evt) { G4int event_id = evt->GetEventID(); - - G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer(); + + // get number of stored trajectories + // + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); G4int n_trajectories = 0; if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); - - if (event_id < 100 || event_id%100 == 0) { - - G4cout << ">>> Event " << evt->GetEventID() << G4endl; + // periodic printing + // + if (event_id < 100 || event_id%100 == 0) { + G4cout << ">>> Event " << evt->GetEventID() << G4endl; G4cout << " " << n_trajectories << " trajectories stored in this event." << G4endl; } + + // extract the trajectories and draw them + // + if (G4VVisManager::GetConcreteInstance()) + { + for (G4int i=0; iGetTrajectoryContainer()))[i]); + trj->DrawTrajectory(50); + } + } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02MagneticField.cc b/examples/novice/N02/src/ExN02MagneticField.cc index db2ea53f08..11bec188ed 100644 --- a/examples/novice/N02/src/ExN02MagneticField.cc +++ b/examples/novice/N02/src/ExN02MagneticField.cc @@ -21,18 +21,18 @@ // ******************************************************************** // // -// $Id: ExN02MagneticField.cc,v 1.4.4.1 2001/06/28 19:07:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02MagneticField.cc,v 1.6 2001/10/11 12:32:37 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // User Field class implementation. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02MagneticField.hh" #include "G4FieldManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02MagneticField::ExN02MagneticField() : G4UniformMagField(G4ThreeVector()) @@ -41,7 +41,7 @@ ExN02MagneticField::ExN02MagneticField() GetGlobalFieldManager()->CreateChordFinder(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02MagneticField::ExN02MagneticField(G4ThreeVector fieldVector) : G4UniformMagField(fieldVector) @@ -50,7 +50,7 @@ ExN02MagneticField::ExN02MagneticField(G4ThreeVector fieldVector) GetGlobalFieldManager()->CreateChordFinder(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Set the value of the Global Field to fieldValue along X // @@ -59,7 +59,7 @@ void ExN02MagneticField::SetFieldValue(G4double fieldValue) G4UniformMagField::SetFieldValue(G4ThreeVector(fieldValue,0,0)); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Set the value of the Global Field // @@ -80,14 +80,14 @@ void ExN02MagneticField::SetFieldValue(G4ThreeVector fieldVector) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02MagneticField::~ExN02MagneticField() { // GetGlobalFieldManager()->SetDetectorField(0); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4TransportationManager.hh" @@ -95,4 +95,5 @@ G4FieldManager* ExN02MagneticField::GetGlobalFieldManager() { return G4TransportationManager::GetTransportationManager()->GetFieldManager(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02PhysicsList.cc b/examples/novice/N02/src/ExN02PhysicsList.cc index 375551c4d9..cba4ef26cc 100644 --- a/examples/novice/N02/src/ExN02PhysicsList.cc +++ b/examples/novice/N02/src/ExN02PhysicsList.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02PhysicsList.cc,v 1.9.2.1 2001/06/28 19:07:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02PhysicsList.cc,v 1.12 2001/10/11 12:32:37 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "globals.hh" #include "ExN02PhysicsList.hh" @@ -40,7 +40,7 @@ #include "G4ios.hh" #include "g4std/iomanip" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02PhysicsList::ExN02PhysicsList(): G4VUserPhysicsList() { @@ -48,12 +48,12 @@ ExN02PhysicsList::ExN02PhysicsList(): G4VUserPhysicsList() SetVerboseLevel(1); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02PhysicsList::~ExN02PhysicsList() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PhysicsList::ConstructParticle() { @@ -69,7 +69,7 @@ void ExN02PhysicsList::ConstructParticle() } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PhysicsList::ConstructBosons() { @@ -81,7 +81,7 @@ void ExN02PhysicsList::ConstructBosons() G4Gamma::GammaDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PhysicsList::ConstructLeptons() { @@ -100,7 +100,7 @@ void ExN02PhysicsList::ConstructLeptons() G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PhysicsList::ConstructMesons() { @@ -119,7 +119,7 @@ void ExN02PhysicsList::ConstructMesons() G4KaonZeroShort::KaonZeroShortDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PhysicsList::ConstructBaryons() { @@ -131,7 +131,7 @@ void ExN02PhysicsList::ConstructBaryons() G4AntiNeutron::AntiNeutronDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PhysicsList::ConstructProcess() { @@ -140,7 +140,7 @@ void ExN02PhysicsList::ConstructProcess() ConstructGeneral(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" @@ -158,9 +158,9 @@ void ExN02PhysicsList::ConstructProcess() #include "G4hIonisation.hh" -////#include "G4UserSpecialCuts.hh" +#include "G4UserSpecialCuts.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PhysicsList::ConstructEM() { @@ -274,7 +274,7 @@ void ExN02PhysicsList::ConstructEM() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4Decay.hh" void ExN02PhysicsList::ConstructGeneral() @@ -294,7 +294,7 @@ void ExN02PhysicsList::ConstructGeneral() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PhysicsList::SetCuts() { @@ -306,5 +306,5 @@ void ExN02PhysicsList::SetCuts() if (verboseLevel>0) DumpCutValuesTable(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc b/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc index e2576347de..8813a6240e 100644 --- a/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc +++ b/examples/novice/N02/src/ExN02PrimaryGeneratorAction.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02PrimaryGeneratorAction.cc,v 1.3.4.1 2001/06/28 19:07:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02PrimaryGeneratorAction.cc,v 1.5 2001/10/11 12:32:37 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02PrimaryGeneratorAction.hh" #include "ExN02DetectorConstruction.hh" @@ -36,9 +36,10 @@ #include "G4ParticleDefinition.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -ExN02PrimaryGeneratorAction::ExN02PrimaryGeneratorAction(ExN02DetectorConstruction* myDC) +ExN02PrimaryGeneratorAction::ExN02PrimaryGeneratorAction( + ExN02DetectorConstruction* myDC) :myDetector(myDC) { G4int n_particle = 1; @@ -54,14 +55,14 @@ ExN02PrimaryGeneratorAction::ExN02PrimaryGeneratorAction(ExN02DetectorConstructi particleGun->SetParticleEnergy(3.0*GeV); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02PrimaryGeneratorAction::~ExN02PrimaryGeneratorAction() { delete particleGun; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { @@ -71,5 +72,5 @@ void ExN02PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) particleGun->GeneratePrimaryVertex(anEvent); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02RunAction.cc b/examples/novice/N02/src/ExN02RunAction.cc index e9f7819d15..cbf4d2b575 100644 --- a/examples/novice/N02/src/ExN02RunAction.cc +++ b/examples/novice/N02/src/ExN02RunAction.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02RunAction.cc,v 1.4.4.1 2001/06/28 19:07:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02RunAction.cc,v 1.6 2001/10/11 12:32:37 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02RunAction.hh" @@ -34,17 +34,17 @@ #include "G4VVisManager.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02RunAction::ExN02RunAction() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02RunAction::~ExN02RunAction() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02RunAction::BeginOfRunAction(const G4Run* aRun) { @@ -57,19 +57,17 @@ void ExN02RunAction::BeginOfRunAction(const G4Run* aRun) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02RunAction::EndOfRunAction(const G4Run*) { - G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance(); - - if(G4VVisManager::GetConcreteInstance()) - { - G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); - } + if (G4VVisManager::GetConcreteInstance()) + { + G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update"); + } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02SteppingAction.cc b/examples/novice/N02/src/ExN02SteppingAction.cc index 84bf3227df..f148e0c524 100644 --- a/examples/novice/N02/src/ExN02SteppingAction.cc +++ b/examples/novice/N02/src/ExN02SteppingAction.cc @@ -21,27 +21,25 @@ // ******************************************************************** // // -// $Id: ExN02SteppingAction.cc,v 1.4.4.1 2001/06/28 19:07:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02SteppingAction.cc,v 1.7 2001/11/05 08:24:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02SteppingAction.hh" #include "G4SteppingManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02SteppingAction::ExN02SteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void ExN02SteppingAction::UserSteppingAction(const G4Step* aStep) +void ExN02SteppingAction::UserSteppingAction(const G4Step*) { - const G4VPhysicalVolume* currentVolume = - aStep->GetPreStepPoint()->GetPhysicalVolume(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02SteppingVerbose.cc b/examples/novice/N02/src/ExN02SteppingVerbose.cc index 780b79312b..96d3130453 100644 --- a/examples/novice/N02/src/ExN02SteppingVerbose.cc +++ b/examples/novice/N02/src/ExN02SteppingVerbose.cc @@ -21,28 +21,28 @@ // ******************************************************************** // // -// $Id: ExN02SteppingVerbose.cc,v 1.6.2.1 2001/06/28 19:07:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02SteppingVerbose.cc,v 1.8 2001/10/11 12:32:38 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02SteppingVerbose.hh" #include "G4SteppingManager.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02SteppingVerbose::ExN02SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02SteppingVerbose::~ExN02SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02SteppingVerbose::StepInfo() { @@ -66,14 +66,14 @@ void ExN02SteppingVerbose::StepInfo() << G4std::setw(10) << "Process" << G4endl; } - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); // if( fStepStatus != fWorldBoundary){ if( fTrack->GetNextVolume() != 0 ) { @@ -84,7 +84,7 @@ void ExN02SteppingVerbose::StepInfo() if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ G4cout << " " - << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() + << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() ->GetProcessName(); } else { G4cout << " UserLimit"; @@ -107,7 +107,7 @@ void ExN02SteppingVerbose::StepInfo() << " ---------------" << G4endl; - for(G4int lp1=(*fSecondary).size()-tN2ndariesTot; + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; lp1<(*fSecondary).size(); lp1++){ G4cout << " : " << G4std::setw(6) @@ -134,7 +134,7 @@ void ExN02SteppingVerbose::StepInfo() G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02SteppingVerbose::TrackingStarted() { @@ -154,14 +154,14 @@ G4int prec = G4cout.precision(3); << G4std::setw(10) << "Volume" << " " << G4std::setw(10) << "Process" << G4endl; - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); if(fTrack->GetNextVolume()){ G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); @@ -173,4 +173,4 @@ G4int prec = G4cout.precision(3); G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02TrackerHit.cc b/examples/novice/N02/src/ExN02TrackerHit.cc index c51b189e6b..dd524ff5d6 100644 --- a/examples/novice/N02/src/ExN02TrackerHit.cc +++ b/examples/novice/N02/src/ExN02TrackerHit.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02TrackerHit.cc,v 1.4.4.1 2001/06/28 19:07:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02TrackerHit.cc,v 1.6 2001/10/11 12:32:38 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02TrackerHit.hh" #include "G4UnitsTable.hh" @@ -36,15 +36,15 @@ G4Allocator ExN02TrackerHitAllocator; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02TrackerHit::ExN02TrackerHit() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02TrackerHit::~ExN02TrackerHit() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02TrackerHit::ExN02TrackerHit(const ExN02TrackerHit& right) { @@ -54,7 +54,7 @@ ExN02TrackerHit::ExN02TrackerHit(const ExN02TrackerHit& right) pos = right.pos; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... const ExN02TrackerHit& ExN02TrackerHit::operator=(const ExN02TrackerHit& right) { @@ -65,14 +65,14 @@ const ExN02TrackerHit& ExN02TrackerHit::operator=(const ExN02TrackerHit& right) return *this; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int ExN02TrackerHit::operator==(const ExN02TrackerHit& right) const { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02TrackerHit::Draw() { @@ -89,7 +89,7 @@ void ExN02TrackerHit::Draw() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02TrackerHit::Print() { @@ -98,5 +98,5 @@ void ExN02TrackerHit::Print() << " position: " << G4BestUnit(pos,"Length") << G4endl; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02TrackerSD.cc b/examples/novice/N02/src/ExN02TrackerSD.cc index b6e6f56549..caf7b9e6d2 100644 --- a/examples/novice/N02/src/ExN02TrackerSD.cc +++ b/examples/novice/N02/src/ExN02TrackerSD.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: ExN02TrackerSD.cc,v 1.3.4.1 2001/06/28 19:07:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02TrackerSD.cc,v 1.5 2001/10/11 12:32:38 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN02TrackerSD.hh" #include "G4HCofThisEvent.hh" @@ -34,7 +34,7 @@ #include "G4SDManager.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02TrackerSD::ExN02TrackerSD(G4String name) :G4VSensitiveDetector(name) @@ -43,11 +43,11 @@ ExN02TrackerSD::ExN02TrackerSD(G4String name) collectionName.insert(HCname="trackerCollection"); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02TrackerSD::~ExN02TrackerSD(){ } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02TrackerSD::Initialize(G4HCofThisEvent* HCE) { @@ -59,7 +59,7 @@ void ExN02TrackerSD::Initialize(G4HCofThisEvent* HCE) HCE->AddHitsCollection( HCID, trackerCollection ); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4bool ExN02TrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) { @@ -69,7 +69,8 @@ G4bool ExN02TrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) ExN02TrackerHit* newHit = new ExN02TrackerHit(); newHit->SetTrackID (aStep->GetTrack()->GetTrackID()); - newHit->SetChamberNb(aStep->GetPreStepPoint()->GetTouchable()->GetReplicaNumber()); + newHit->SetChamberNb(aStep->GetPreStepPoint()->GetTouchable() + ->GetReplicaNumber()); newHit->SetEdep (edep); newHit->SetPos (aStep->GetPostStepPoint()->GetPosition()); trackerCollection->insert( newHit ); @@ -80,7 +81,7 @@ G4bool ExN02TrackerSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) return true; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02TrackerSD::EndOfEvent(G4HCofThisEvent* HCE) { @@ -92,5 +93,5 @@ void ExN02TrackerSD::EndOfEvent(G4HCofThisEvent* HCE) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/src/ExN02VisManager.cc b/examples/novice/N02/src/ExN02VisManager.cc index 2d953ed275..6b2641bc7f 100644 --- a/examples/novice/N02/src/ExN02VisManager.cc +++ b/examples/novice/N02/src/ExN02VisManager.cc @@ -21,14 +21,14 @@ // ******************************************************************** // // -// $Id: ExN02VisManager.cc,v 1.3.4.1 2001/06/28 19:07:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN02VisManager.cc,v 1.7 2001/11/15 13:09:54 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifdef G4VIS_USE @@ -36,14 +36,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -77,27 +84,29 @@ #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN02VisManager::ExN02VisManager () {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN02VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -131,11 +140,6 @@ void ExN02VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." @@ -146,4 +150,4 @@ void ExN02VisManager::RegisterGraphicsSystems () { #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N02/initInter.mac b/examples/novice/N02/vis.mac similarity index 76% rename from examples/novice/N02/initInter.mac rename to examples/novice/N02/vis.mac index b4b4ceb608..aacc1b037b 100644 --- a/examples/novice/N02/initInter.mac +++ b/examples/novice/N02/vis.mac @@ -15,15 +15,17 @@ # (Edit the next line(s) to choose another graphic system) # /vis/open OGLIX -#/vis/open DAWNFILE +# +####/vis/open DAWNFILE # # draw scene # -/vis/camera/zoom 1.4 -/vis/camera/viewpoint 90 180 -/vis/drawVolume +/vis/viewer/set/viewpointThetaPhi 90 180 deg +/vis/viewer/zoom 1.4 +/vis/viewer/flush # # for drawing the tracks # (if too many tracks cause core dump => storeTrajectory 0) /tracking/storeTrajectory 1 -/vis/scene/add/trajectories +/vis/scene/endOfEventAction accumulate + diff --git a/examples/novice/N03/History b/examples/novice/N03/History index e681d1f3e0..f9066a5ad0 100644 --- a/examples/novice/N03/History +++ b/examples/novice/N03/History @@ -1,4 +1,4 @@ -$Id: History,v 1.36 2001/06/21 06:28:03 stanaka Exp $ +$Id: History,v 1.46 2001/11/27 11:10:31 maire Exp $ -------------------------------------------------- ========================================================= @@ -14,6 +14,47 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +27-11-01 mma (exampleN03-V03-02-07) +- DetectorConstruction: Vacuum is the default material. +- newgeom.mac: a box of 40 cm of water. + +19-11-01 John (exampleN03-V03-02-06) +- Updated ExN03VisManager.cc for new graphics systems and defaults. + +14-11-01 Satoshi Tanaka (exampleN03-V03-02-05) +- exN03Vis8.mac : Batch visualization with the DAWNFILE driver +- exN03Vis9.mac : Multi-page PostScript file generation (old exN03Vis8.mac) + +07-11-01 Satoshi (exampleN03-V03-02-04a) +- /vis/viewer/viewpointThetaPhi ==> /vis/viewer/set/viewpointThetaPhi + +07-11-01 Satoshi (exampleN03-V03-02-04) +- visTutor/exN03VisXX.mac's are rewritten with /vis/viewer/flush. +- Some refinements of command sequences and comments. +- Note that /vis/flushAll's are described but commented out. + +07-11-01 Satoshi (exampleN03-V03-02-03) +- vis.mac: /vis/viewer/refresh + /vis/viewer/update is replaced + with their equivalent command /vis/viewer/flush. + +24-10-01 mma (exampleN03-V03-02-02) +- initInter.mac renamed vis.mac : OpenGL and DAWNFILE opened simultaneously. + +19-10-01 Steve O'Neale (examples-V03-02-00) +- Update reference output + +10-10-01 mma (exampleN03-V03-02-01) +- /vis/scene/endOfEventAction accumulate + /vis/viewer/zoom (in newgeom.mac) +- 80 columns everywhere + +18-09-01 Satoshi Tanaka (exampleN03-V03-02-00) +- Updation for automatic visualization at Hebden Bridge mini-workshop. +- /vis/viewer/flush and /vis/flushAll are not included yet. + (To be included in the next tag.) +- /vis/drawTree may still require /vis/scene/notifyHandlers. + (John Allison will revise the /vis/drawTree command soon.) 21-06-01 Satoshi Tanaka (exampleN03-V03-00-02) - visTutor/*.mac updated diff --git a/examples/novice/N03/README b/examples/novice/N03/README index c958ee5c59..9cf0b0f02e 100644 --- a/examples/novice/N03/README +++ b/examples/novice/N03/README @@ -1,4 +1,4 @@ -$Id: README,v 1.6 2000/11/21 11:43:31 maire Exp $ +$Id: README,v 1.8 2001/11/27 11:10:31 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -58,7 +58,7 @@ $Id: README,v 1.6 2000/11/21 11:43:31 maire Exp $ In this example a CalorHit is defined as a set of 4 informations per layer : - the total energy deposit in the absorber plate, - - the total tracklength of all charged particles in the absorber plate, + - the total tracklength of all charged particles in the absorber plate, - the total energy deposit in the detection gap, - the total tracklength of all charged particles in the detection gap. @@ -74,8 +74,8 @@ $Id: README,v 1.6 2000/11/21 11:43:31 maire Exp $ 4- VISUALIZATION The Visualization Manager is set in the main(). - The initialisation of the drawing is done via a set of /vis commands - in the macro initInter.mac. This macro is automatically read from + The initialisation of the drawing is done via a set of /vis/ commands + in the macro vis.mac. This macro is automatically read from the main in case of interactive running mode. The detector has a default view which is a longitudinal view of the @@ -83,7 +83,7 @@ $Id: README,v 1.6 2000/11/21 11:43:31 maire Exp $ The tracks are drawn at the end of event, and erased at the end of run. Optionaly one can choose to draw all particles, only the charged, - or neutral or none. This command is defined in EventActionMessenger class. + or neutral or none. This command is build in EventActionMessenger class. NB 1: the visualization (with OpenGL driver) assumes two things: 1- the visualisation & interfaces categories have been compiled diff --git a/examples/novice/N03/exampleN03.cc b/examples/novice/N03/exampleN03.cc index 74e50d6659..5dfc31c13a 100644 --- a/examples/novice/N03/exampleN03.cc +++ b/examples/novice/N03/exampleN03.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: exampleN03.cc,v 1.13.4.2 2001/06/28 20:18:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: exampleN03.cc,v 1.15 2001/10/24 11:45:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -109,10 +109,10 @@ int main(int argc,char** argv) { if (session) // Define UI session for interactive mode. { // G4UIterminal is a (dumb) terminal. - UI->ApplyCommand("/control/execute initInter.mac"); + UI->ApplyCommand("/control/execute vis.mac"); #ifdef G4UI_USE_XM // Customize the G4UIXm menubar with a macro file : - UI->ApplyCommand("/control/execute gui.mac"); + UI->ApplyCommand("/control/execute visTutor/gui.mac"); #endif session->SessionStart(); delete session; diff --git a/examples/novice/N03/exampleN03.out b/examples/novice/N03/exampleN03.out index ec8d16f0c8..f4ac950625 100644 --- a/examples/novice/N03/exampleN03.out +++ b/examples/novice/N03/exampleN03.out @@ -1,10 +1,23 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... -***** Table : Nb of materials = 13 ***** +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) + +***** Table : Nb of materials = 12 ***** Material: Aluminium density: 2.700 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 8.893 cm ---> Element: Aluminium Z = 13.0 N = 27.0 A = 26.98 g/mole fractionMass: 100.00 % Abundance 100.00 % @@ -12,9 +25,6 @@ Material: liquidArgon density: 1.390 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 14.065 cm ---> Element: liquidArgon Z = 18.0 N = 40.0 A = 39.95 g/mole fractionMass: 100.00 % Abundance 100.00 % - Material: Copper density: 8.960 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 1.436 cm - ---> Element: Copper Z = 29.0 N = 63.5 A = 63.55 g/mole fractionMass: 100.00 % Abundance 100.00 % - Material: Lead density: 11.350 g/cm3 temperature: 273.15 K pressure: 1.00 atm RadLength: 5.612 mm ---> Element: Lead Z = 82.0 N = 207.2 A = 207.19 g/mole fractionMass: 100.00 % Abundance 100.00 % @@ -64,11 +74,11 @@ ExN03PhysicsList::SetCuts:CutLength : 1 mm conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. e+e- energies according Bethe-Heitler - PhysicsTables from 1 MeV to 1e+02 GeV in 100 bins. + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. - PhysicsTables from 10 keV to 1e+02 GeV in 100 bins. + Scattered gamma energy according Klein-Nishina. + PhysicsTables from 10 keV to 100 GeV in 100 bins. phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z Sandia crossSection below 50 KeV @@ -77,56 +87,67 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. eIoni: delta cross sections from Moller+Bhabha. Good description from 1 KeV to 100 GeV. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. eBrem: Total cross sections from a NEW parametrisation based on the EEDL data library. Good description from 1 KeV to 100 GeV. log scale extrapolation above 100 GeV Gamma energy sampled from a parametrised formula. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. hIoni: Knock-on electron cross sections . Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+02 TeV in 100 bins. + PhysicsTables from 1 keV to 100 TeV in 100 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. - PhysicsTables from 1e+02 eV to 1e+02 TeV in 100 bins. + PhysicsTables from 100 eV to 100 TeV in 100 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuPairProd: theoretical cross sections Good description up to 1000 PeV. - PhysicsTables from 1 keV to 1e+03 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. ============= The cut Energy ============================== gamma e- -Cut in range 1 mm 1 mm +Cut in range + Aluminium 1 mm 1 mm + liquidArgon 1 mm 1 mm + Lead 1 mm 1 mm + Water 1 mm 1 mm + Scintillator 1 mm 1 mm + quartz 1 mm 1 mm + Air 1 mm 1 mm + Aerogel 1 mm 1 mm + CarbonicGas 1 mm 1 mm + WaterSteam 1 mm 1 mm + Galactic 1 mm 1 mm + Beam 1 mm 1 mm Cut in energy Aluminium 6.89 keV 597 keV liquidArgon 6.18 keV 343 keV - Copper 24.6 keV 1.4 MeV Lead 101 keV 1.38 MeV Water 2.9 keV 347 keV Scintillator 2.37 keV 356 keV @@ -138,7 +159,6 @@ Cut in energy Galactic 990 eV 990 eV Beam 990 eV 990 eV =================================================== -# e+ 300MeV ### Run 0 start. ---> Begin of event: 0 @@ -148,35 +168,27 @@ Cut in energy Current couple of seeds = 9876, 54321 ---------------------------------------- ---> End of event: 0 - Absorber: total energy: 2.8e+02 MeV total track length: 17 cm - Gap: total energy: 8.2 MeV total track length: 4.1 cm + Absorber: total energy: 269.904 MeV total track length: 19.1751 cm + Gap: total energy: 14.6003 MeV total track length: 7.40188 cm 9 hits are stored in ExN03CalorHitsCollection. -# -# list the existing physics processes Transportation, hIoni, msc, eIoni eBrem, annihil, conv, compt phot, MuIoni, MuBrems, MuPairProd Decay -# -# switch off MultipleScattering ### Run 1 start. ---> Begin of event: 0 --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1007375238, 624422740 + Current couple of seeds = 1748430878, 543225391 ---------------------------------------- ---> End of event: 0 - Absorber: total energy: 2.7e+02 MeV total track length: 15 cm - Gap: total energy: 19 MeV total track length: 9.9 cm + Absorber: total energy: 279.35 MeV total track length: 19.6094 cm + Gap: total energy: 15.0617 MeV total track length: 7.74823 cm 10 hits are stored in ExN03CalorHitsCollection. -# -# switch on MultipleScattering -# -# change detector parameter ------------------------------------------------------------ ---> The calorimeter is 10 layers of: [ 10mm of Aluminium + 5mm of liquidArgon ] @@ -195,10 +207,12 @@ Cut in energy --------- Ranecu engine status --------- Initial seed (index) = 0 - Current couple of seeds = 1472867459, 1074604418 + Current couple of seeds = 1715683464, 1760201142 ---------------------------------------- ---> End of event: 0 - Absorber: total energy: 4.1e+02 MeV total track length: 95 cm - Gap: total energy: 81 MeV total track length: 2.2 m + Absorber: total energy: 333.094 MeV total track length: 79.5857 cm + Gap: total energy: 68.1459 MeV total track length: 1.88635 m - 25 hits are stored in ExN03CalorHitsCollection. + 23 hits are stored in ExN03CalorHitsCollection. +Graphics systems deleted. +Visualization Manager deleting... diff --git a/examples/novice/N03/include/ExN03CalorHit.hh b/examples/novice/N03/include/ExN03CalorHit.hh index 597badca4b..9849173cb4 100644 --- a/examples/novice/N03/include/ExN03CalorHit.hh +++ b/examples/novice/N03/include/ExN03CalorHit.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03CalorHit.hh,v 1.2.4.1 2001/06/28 19:07:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03CalorHit.hh,v 1.4 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03CalorHit_h #define ExN03CalorHit_h 1 @@ -36,48 +36,47 @@ #include "G4THitsCollection.hh" #include "G4Allocator.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03CalorHit : public G4VHit { - public: + public: - ExN03CalorHit(); - ~ExN03CalorHit(); - ExN03CalorHit(const ExN03CalorHit&); - const ExN03CalorHit& operator=(const ExN03CalorHit&); - int operator==(const ExN03CalorHit&) const; + ExN03CalorHit(); + ~ExN03CalorHit(); + ExN03CalorHit(const ExN03CalorHit&); + const ExN03CalorHit& operator=(const ExN03CalorHit&); + int operator==(const ExN03CalorHit&) const; - inline void* operator new(size_t); - inline void operator delete(void*); + inline void* operator new(size_t); + inline void operator delete(void*); - void Draw(); - void Print(); + void Draw(); + void Print(); - public: + public: - void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;}; - void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;}; + void AddAbs(G4double de, G4double dl) {EdepAbs += de; TrackLengthAbs += dl;}; + void AddGap(G4double de, G4double dl) {EdepGap += de; TrackLengthGap += dl;}; - G4double GetEdepAbs() { return EdepAbs; }; - G4double GetTrakAbs() { return TrackLengthAbs; }; - G4double GetEdepGap() { return EdepGap; }; - G4double GetTrakGap() { return TrackLengthGap; }; - - private: + G4double GetEdepAbs() { return EdepAbs; }; + G4double GetTrakAbs() { return TrackLengthAbs; }; + G4double GetEdepGap() { return EdepGap; }; + G4double GetTrakGap() { return TrackLengthGap; }; + + private: - G4double EdepAbs, TrackLengthAbs; - G4double EdepGap, TrackLengthGap; - + G4double EdepAbs, TrackLengthAbs; + G4double EdepGap, TrackLengthGap; }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... typedef G4THitsCollection ExN03CalorHitsCollection; extern G4Allocator ExN03CalorHitAllocator; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void* ExN03CalorHit::operator new(size_t) { @@ -86,13 +85,15 @@ inline void* ExN03CalorHit::operator new(size_t) return aHit; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void ExN03CalorHit::operator delete(void* aHit) { ExN03CalorHitAllocator.FreeSingle((ExN03CalorHit*) aHit); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03CalorimeterSD.hh b/examples/novice/N03/include/ExN03CalorimeterSD.hh index cf7b52c6fb..891e58aaf5 100644 --- a/examples/novice/N03/include/ExN03CalorimeterSD.hh +++ b/examples/novice/N03/include/ExN03CalorimeterSD.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN03CalorimeterSD.hh,v 1.2.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03CalorimeterSD.hh,v 1.3 2001/07/11 09:58:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N03/include/ExN03DetectorConstruction.hh b/examples/novice/N03/include/ExN03DetectorConstruction.hh index a2fffa06d2..f83832a7cc 100644 --- a/examples/novice/N03/include/ExN03DetectorConstruction.hh +++ b/examples/novice/N03/include/ExN03DetectorConstruction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03DetectorConstruction.hh,v 1.2.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03DetectorConstruction.hh,v 1.4 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03DetectorConstruction_h #define ExN03DetectorConstruction_h 1 @@ -43,7 +43,7 @@ class G4UniformMagField; class ExN03DetectorMessenger; class ExN03CalorimeterSD; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03DetectorConstruction : public G4VUserDetectorConstruction { @@ -141,7 +141,7 @@ class ExN03DetectorConstruction : public G4VUserDetectorConstruction G4VPhysicalVolume* ConstructCalorimeter(); }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline void ExN03DetectorConstruction::ComputeCalorParameters() { @@ -152,5 +152,7 @@ inline void ExN03DetectorConstruction::ComputeCalorParameters() WorldSizeX = 1.2*CalorThickness; WorldSizeYZ = 1.2*CalorSizeYZ; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03DetectorMessenger.hh b/examples/novice/N03/include/ExN03DetectorMessenger.hh index 259641d006..9c503f4693 100644 --- a/examples/novice/N03/include/ExN03DetectorMessenger.hh +++ b/examples/novice/N03/include/ExN03DetectorMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03DetectorMessenger.hh,v 1.2.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03DetectorMessenger.hh,v 1.4 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03DetectorMessenger_h #define ExN03DetectorMessenger_h 1 @@ -42,7 +42,7 @@ class G4UIcmdWithAnInteger; class G4UIcmdWithADoubleAndUnit; class G4UIcmdWithoutParameter; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03DetectorMessenger: public G4UImessenger { @@ -66,5 +66,7 @@ class ExN03DetectorMessenger: public G4UImessenger G4UIcmdWithoutParameter* UpdateCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03EventAction.hh b/examples/novice/N03/include/ExN03EventAction.hh index d09270d522..7fd62ee75d 100644 --- a/examples/novice/N03/include/ExN03EventAction.hh +++ b/examples/novice/N03/include/ExN03EventAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03EventAction.hh,v 1.4.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03EventAction.hh,v 1.6 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03EventAction_h #define ExN03EventAction_h 1 @@ -37,7 +37,7 @@ class ExN03EventActionMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03EventAction : public G4UserEventAction { @@ -59,6 +59,8 @@ class ExN03EventAction : public G4UserEventAction ExN03EventActionMessenger* eventMessenger; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03EventActionMessenger.hh b/examples/novice/N03/include/ExN03EventActionMessenger.hh index adcb060ce2..af3b944236 100644 --- a/examples/novice/N03/include/ExN03EventActionMessenger.hh +++ b/examples/novice/N03/include/ExN03EventActionMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03EventActionMessenger.hh,v 1.3.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03EventActionMessenger.hh,v 1.5 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03EventActionMessenger_h #define ExN03EventActionMessenger_h 1 @@ -39,7 +39,7 @@ class ExN03EventAction; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03EventActionMessenger: public G4UImessenger { @@ -55,4 +55,6 @@ class ExN03EventActionMessenger: public G4UImessenger G4UIcmdWithAnInteger* PrintCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03PhysicsList.hh b/examples/novice/N03/include/ExN03PhysicsList.hh index 377057baa5..9d7d3498e8 100644 --- a/examples/novice/N03/include/ExN03PhysicsList.hh +++ b/examples/novice/N03/include/ExN03PhysicsList.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03PhysicsList.hh,v 1.6.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03PhysicsList.hh,v 1.8 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03PhysicsList_h #define ExN03PhysicsList_h 1 @@ -35,7 +35,7 @@ #include "G4VUserPhysicsList.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03PhysicsList: public G4VUserPhysicsList { @@ -78,6 +78,8 @@ class ExN03PhysicsList: public G4VUserPhysicsList G4double currentDefaultCut; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh b/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh index edf5fba682..fa8bfb24b2 100644 --- a/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh +++ b/examples/novice/N03/include/ExN03PrimaryGeneratorAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03PrimaryGeneratorAction.hh,v 1.2.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03PrimaryGeneratorAction.hh,v 1.4 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03PrimaryGeneratorAction_h #define ExN03PrimaryGeneratorAction_h 1 @@ -40,7 +40,7 @@ class G4Event; class ExN03DetectorConstruction; class ExN03PrimaryGeneratorMessenger; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction { @@ -53,13 +53,15 @@ class ExN03PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction void SetRndmFlag(G4String val) { rndmFlag = val;} private: - G4ParticleGun* particleGun; //pointer a to G4 service class + G4ParticleGun* particleGun; //pointer a to G4 class ExN03DetectorConstruction* ExN03Detector; //pointer to the geometry ExN03PrimaryGeneratorMessenger* gunMessenger; //messenger of this class - G4String rndmFlag; //flag for a random impact point + G4String rndmFlag; //flag for a rndm impact point }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh b/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh index 89b2807829..2fc5f0ff50 100644 --- a/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh +++ b/examples/novice/N03/include/ExN03PrimaryGeneratorMessenger.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03PrimaryGeneratorMessenger.hh,v 1.2.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03PrimaryGeneratorMessenger.hh,v 1.4 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03PrimaryGeneratorMessenger_h #define ExN03PrimaryGeneratorMessenger_h 1 @@ -38,7 +38,7 @@ class ExN03PrimaryGeneratorAction; class G4UIcmdWithAString; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03PrimaryGeneratorMessenger: public G4UImessenger { @@ -53,5 +53,7 @@ class ExN03PrimaryGeneratorMessenger: public G4UImessenger G4UIcmdWithAString* RndmCmd; }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03RunAction.hh b/examples/novice/N03/include/ExN03RunAction.hh index 0bf4cedaad..e92111674c 100644 --- a/examples/novice/N03/include/ExN03RunAction.hh +++ b/examples/novice/N03/include/ExN03RunAction.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03RunAction.hh,v 1.4.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03RunAction.hh,v 1.6 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03RunAction_h #define ExN03RunAction_h 1 @@ -35,7 +35,7 @@ #include "G4UserRunAction.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4Run; @@ -51,5 +51,7 @@ class ExN03RunAction : public G4UserRunAction }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03SteppingAction.hh b/examples/novice/N03/include/ExN03SteppingAction.hh index 8d494316c3..98060f0e4d 100644 --- a/examples/novice/N03/include/ExN03SteppingAction.hh +++ b/examples/novice/N03/include/ExN03SteppingAction.hh @@ -21,20 +21,20 @@ // ******************************************************************** // // -// $Id: ExN03SteppingAction.hh,v 1.4.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03SteppingAction.hh,v 1.6 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03SteppingAction_h #define ExN03SteppingAction_h 1 #include "G4UserSteppingAction.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03SteppingAction : public G4UserSteppingAction { @@ -45,4 +45,6 @@ class ExN03SteppingAction : public G4UserSteppingAction void UserSteppingAction(const G4Step*); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03SteppingVerbose.hh b/examples/novice/N03/include/ExN03SteppingVerbose.hh index 26b87f9794..bf1c7ff3c4 100644 --- a/examples/novice/N03/include/ExN03SteppingVerbose.hh +++ b/examples/novice/N03/include/ExN03SteppingVerbose.hh @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: ExN03SteppingVerbose.hh,v 1.4.2.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03SteppingVerbose.hh,v 1.6 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03SteppingVerbose; @@ -35,7 +35,7 @@ class ExN03SteppingVerbose; #include "G4SteppingVerbose.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03SteppingVerbose : public G4SteppingVerbose { @@ -49,4 +49,6 @@ class ExN03SteppingVerbose : public G4SteppingVerbose }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif diff --git a/examples/novice/N03/include/ExN03VisManager.hh b/examples/novice/N03/include/ExN03VisManager.hh index e05f7474c8..b9bbfe69d1 100644 --- a/examples/novice/N03/include/ExN03VisManager.hh +++ b/examples/novice/N03/include/ExN03VisManager.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03VisManager.hh,v 1.3.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03VisManager.hh,v 1.5 2001/10/10 14:58:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Example Visualization Manager implementing virtual function // RegisterGraphicsSystems. Exploits C-pre-processor variables @@ -42,7 +42,7 @@ // G4VisManager* myVisManager = new MyVisManager; // myVisManager -> RegisterGraphicsSystem (new MyGraphicsSystem); -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef ExN03VisManager_h #define ExN03VisManager_h 1 @@ -51,7 +51,7 @@ #include "G4VisManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class ExN03VisManager: public G4VisManager { @@ -65,6 +65,8 @@ private: }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #endif #endif diff --git a/examples/novice/N03/newgeom.mac b/examples/novice/N03/newgeom.mac index 0d519c06df..5964c6fb23 100644 --- a/examples/novice/N03/newgeom.mac +++ b/examples/novice/N03/newgeom.mac @@ -1,4 +1,3 @@ -# # Example of interactive redefinition # of the geometry # @@ -10,18 +9,16 @@ # /calor/setNbOfLayers 1 # -/calor/setAbsMat Aluminium -/calor/setAbsThick 10. cm +/calor/setAbsMat Water +/calor/setAbsThick 40 cm # /calor/setGapMat Air -/calor/setGapThick 0.1 cm +/calor/setGapThick 0 cm # -/calor/setSizeYZ 10. cm +/calor/setSizeYZ 40 cm # /calor/update # /calor/setField 3 tesla # -/vis/camera/zoom 1.3 -/vis/drawVolume - +/vis/viewer/zoom 1.3 diff --git a/examples/novice/N03/src/ExN03CalorHit.cc b/examples/novice/N03/src/ExN03CalorHit.cc index a2054563e3..9007df9288 100644 --- a/examples/novice/N03/src/ExN03CalorHit.cc +++ b/examples/novice/N03/src/ExN03CalorHit.cc @@ -21,19 +21,19 @@ // ******************************************************************** // // -// $Id: ExN03CalorHit.cc,v 1.2.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03CalorHit.cc,v 1.4 2001/10/10 14:58:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03CalorHit.hh" G4Allocator ExN03CalorHitAllocator; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03CalorHit::ExN03CalorHit() { @@ -41,12 +41,12 @@ ExN03CalorHit::ExN03CalorHit() EdepGap = 0.; TrackLengthGap = 0.; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03CalorHit::~ExN03CalorHit() -{;} +{} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03CalorHit::ExN03CalorHit(const ExN03CalorHit& right) { @@ -54,7 +54,7 @@ ExN03CalorHit::ExN03CalorHit(const ExN03CalorHit& right) EdepGap = right.EdepGap; TrackLengthGap = right.TrackLengthGap; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... const ExN03CalorHit& ExN03CalorHit::operator=(const ExN03CalorHit& right) { @@ -63,22 +63,22 @@ const ExN03CalorHit& ExN03CalorHit::operator=(const ExN03CalorHit& right) return *this; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... int ExN03CalorHit::operator==(const ExN03CalorHit& right) const { return 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03CalorHit::Draw() -{;} +{} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03CalorHit::Print() -{;} +{} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03CalorimeterSD.cc b/examples/novice/N03/src/ExN03CalorimeterSD.cc index 7ce313cf27..8688d8158f 100644 --- a/examples/novice/N03/src/ExN03CalorimeterSD.cc +++ b/examples/novice/N03/src/ExN03CalorimeterSD.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03CalorimeterSD.cc,v 1.3.4.1 2001/06/28 19:07:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03CalorimeterSD.cc,v 1.5 2001/10/10 14:58:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03CalorimeterSD.hh" @@ -42,7 +42,7 @@ #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03CalorimeterSD::ExN03CalorimeterSD(G4String name, ExN03DetectorConstruction* det) @@ -52,14 +52,14 @@ ExN03CalorimeterSD::ExN03CalorimeterSD(G4String name, HitID = new G4int[500]; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03CalorimeterSD::~ExN03CalorimeterSD() { delete [] HitID; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03CalorimeterSD::Initialize(G4HCofThisEvent*HCE) { @@ -68,7 +68,7 @@ void ExN03CalorimeterSD::Initialize(G4HCofThisEvent*HCE) for (G4int j=0;jGetNbOfLayers();j++) {HitID[j] = -1;}; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4bool ExN03CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) { @@ -86,7 +86,7 @@ G4bool ExN03CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) G4VPhysicalVolume* physVol = theTouchable->GetVolume(); //theTouchable->MoveUpHistory(); G4int LayerNumber = 0; - if (Detector->GetNbOfLayers()>1) LayerNumber=theTouchable->GetReplicaNumber(1); + if(Detector->GetNbOfLayers()>1) LayerNumber=theTouchable->GetReplicaNumber(1); if (HitID[LayerNumber]==-1) { @@ -110,7 +110,7 @@ G4bool ExN03CalorimeterSD::ProcessHits(G4Step* aStep,G4TouchableHistory* ROhist) return true; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) { @@ -120,20 +120,20 @@ void ExN03CalorimeterSD::EndOfEvent(G4HCofThisEvent* HCE) HCE->AddHitsCollection(HCID,CalCollection); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03CalorimeterSD::clear() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03CalorimeterSD::DrawAll() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03CalorimeterSD::PrintAll() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03DetectorConstruction.cc b/examples/novice/N03/src/ExN03DetectorConstruction.cc index 3f94ea88be..8b3a49d220 100644 --- a/examples/novice/N03/src/ExN03DetectorConstruction.cc +++ b/examples/novice/N03/src/ExN03DetectorConstruction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03DetectorConstruction.cc,v 1.4.4.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03DetectorConstruction.cc,v 1.10 2001/11/27 11:37:37 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03DetectorConstruction.hh" #include "ExN03DetectorMessenger.hh" @@ -50,16 +50,16 @@ #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03DetectorConstruction::ExN03DetectorConstruction() -:solidWorld(NULL),logicWorld(NULL),physiWorld(NULL), - solidCalor(NULL),logicCalor(NULL),physiCalor(NULL), - solidLayer(NULL),logicLayer(NULL),physiLayer(NULL), - solidAbsorber(NULL),logicAbsorber(NULL),physiAbsorber(NULL), - solidGap (NULL),logicGap (NULL),physiGap (NULL), - AbsorberMaterial(NULL),GapMaterial(NULL),defaultMaterial(NULL), - magField(NULL),calorimeterSD(NULL) +:AbsorberMaterial(0),GapMaterial(0),defaultMaterial(0), + solidWorld(0),logicWorld(0),physiWorld(0), + solidCalor(0),logicCalor(0),physiCalor(0), + solidLayer(0),logicLayer(0),physiLayer(0), + solidAbsorber(0),logicAbsorber(0),physiAbsorber(0), + solidGap (0),logicGap (0),physiGap (0), + magField(0),calorimeterSD(0) { // default parameter values of the calorimeter AbsorberThickness = 10.*mm; @@ -72,12 +72,12 @@ ExN03DetectorConstruction::ExN03DetectorConstruction() detectorMessenger = new ExN03DetectorMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03DetectorConstruction::~ExN03DetectorConstruction() { delete detectorMessenger;} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* ExN03DetectorConstruction::Construct() { @@ -85,7 +85,7 @@ G4VPhysicalVolume* ExN03DetectorConstruction::Construct() return ConstructCalorimeter(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::DefineMaterials() { @@ -119,9 +119,6 @@ G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); a = 28.09*g/mole; G4Element* Si = new G4Element(name="Silicon",symbol="Si" , z= 14., a); -a = 55.85*g/mole; -G4Element* Fe = new G4Element(name="Iron" ,symbol="Fe", z=26., a); - // // define an Element from isotopes, by relative abundance // @@ -129,7 +126,7 @@ G4Element* Fe = new G4Element(name="Iron" ,symbol="Fe", z=26., a); G4Isotope* U5 = new G4Isotope(name="U235", iz=92, n=235, a=235.01*g/mole); G4Isotope* U8 = new G4Isotope(name="U238", iz=92, n=238, a=238.03*g/mole); -G4Element* U = new G4Element(name="enriched Uranium", symbol="U", ncomponents=2); +G4Element* U = new G4Element(name="enriched Uranium",symbol="U",ncomponents=2); U->AddIsotope(U5, abundance= 90.*perCent); U->AddIsotope(U8, abundance= 10.*perCent); @@ -137,18 +134,12 @@ U->AddIsotope(U8, abundance= 10.*perCent); // define simple materials // -density = 2.700*g/cm3; -a = 26.98*g/mole; -G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); +new G4Material(name="Aluminium", z=13., a=26.98*g/mole, density=2.700*g/cm3); density = 1.390*g/cm3; a = 39.95*g/mole; G4Material* lAr = new G4Material(name="liquidArgon", z=18., a, density); -density = 8.960*g/cm3; -a = 63.55*g/mole; -G4Material* Cu = new G4Material(name="Copper" , z=29., a, density); - density = 11.35*g/cm3; a = 207.19*g/mole; G4Material* Pb = new G4Material(name="Lead" , z=82., a, density); @@ -214,11 +205,11 @@ steam->AddMaterial(H2O, fractionmass=1.); // examples of vacuum // -density = universe_mean_density; //from PhysicalConstants.h +density = universe_mean_density; pressure = 3.e-18*pascal; temperature = 2.73*kelvin; -new G4Material(name="Galactic", z=1., a=1.01*g/mole, density, - kStateGas,temperature,pressure); +G4Material* Vacuum = new G4Material(name="Galactic", z=1., a=1.01*g/mole, + density,kStateGas,temperature,pressure); density = 1.e-5*g/cm3; pressure = 2.e-2*bar; @@ -232,10 +223,10 @@ G4cout << *(G4Material::GetMaterialTable()) << G4endl; //default materials of the calorimeter AbsorberMaterial = Pb; GapMaterial = lAr; - defaultMaterial = Air; + defaultMaterial = Vacuum; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VPhysicalVolume* ExN03DetectorConstruction::ConstructCalorimeter() { @@ -256,15 +247,15 @@ G4VPhysicalVolume* ExN03DetectorConstruction::ConstructCalorimeter() G4ThreeVector(), //at (0,0,0) "World", //its name logicWorld, //its logical volume - NULL, //its mother volume + 0, //its mother volume false, //no boolean operation 0); //copy number // // Calorimeter // - solidCalor=NULL; logicCalor=NULL; physiCalor=NULL; - solidLayer=NULL; logicLayer=NULL; physiLayer=NULL; + solidCalor=0; logicCalor=0; physiCalor=0; + solidLayer=0; logicLayer=0; physiLayer=0; if (CalorThickness > 0.) { solidCalor = new G4Box("Calorimeter", //its name @@ -311,7 +302,7 @@ G4VPhysicalVolume* ExN03DetectorConstruction::ConstructCalorimeter() // // Absorber // - solidAbsorber=NULL; logicAbsorber=NULL; physiAbsorber=NULL; + solidAbsorber=0; logicAbsorber=0; physiAbsorber=0; if (AbsorberThickness > 0.) { solidAbsorber = new G4Box("Absorber", //its name @@ -334,7 +325,7 @@ G4VPhysicalVolume* ExN03DetectorConstruction::ConstructCalorimeter() // // Gap // - solidGap=NULL; logicGap=NULL; physiGap=NULL; + solidGap=0; logicGap=0; physiGap=0; if (GapThickness > 0.) { solidGap = new G4Box("Gap", @@ -383,7 +374,7 @@ G4VPhysicalVolume* ExN03DetectorConstruction::ConstructCalorimeter() return physiWorld; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::PrintCalorParameters() { @@ -395,7 +386,7 @@ void ExN03DetectorConstruction::PrintCalorParameters() << "\n------------------------------------------------------------\n"; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) { @@ -408,7 +399,7 @@ void ExN03DetectorConstruction::SetAbsorberMaterial(G4String materialChoice) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::SetGapMaterial(G4String materialChoice) { @@ -421,7 +412,7 @@ void ExN03DetectorConstruction::SetGapMaterial(G4String materialChoice) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::SetAbsorberThickness(G4double val) { @@ -429,7 +420,7 @@ void ExN03DetectorConstruction::SetAbsorberThickness(G4double val) AbsorberThickness = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::SetGapThickness(G4double val) { @@ -437,7 +428,7 @@ void ExN03DetectorConstruction::SetGapThickness(G4double val) GapThickness = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::SetCalorSizeYZ(G4double val) { @@ -445,14 +436,14 @@ void ExN03DetectorConstruction::SetCalorSizeYZ(G4double val) CalorSizeYZ = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::SetNbOfLayers(G4int val) { NbOfLayers = val; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::SetMagField(G4double fieldValue) { @@ -467,16 +458,16 @@ void ExN03DetectorConstruction::SetMagField(G4double fieldValue) fieldMgr->SetDetectorField(magField); fieldMgr->CreateChordFinder(magField); } else { - magField = NULL; + magField = 0; fieldMgr->SetDetectorField(magField); } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorConstruction::UpdateGeometry() { G4RunManager::GetRunManager()->DefineWorldVolume(ConstructCalorimeter()); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03DetectorMessenger.cc b/examples/novice/N03/src/ExN03DetectorMessenger.cc index 76f5bcd582..5693c7ff15 100644 --- a/examples/novice/N03/src/ExN03DetectorMessenger.cc +++ b/examples/novice/N03/src/ExN03DetectorMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03DetectorMessenger.cc,v 1.3.4.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03DetectorMessenger.cc,v 1.5 2001/10/10 14:58:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03DetectorMessenger.hh" @@ -38,9 +38,10 @@ #include "G4UIcmdWithADoubleAndUnit.hh" #include "G4UIcmdWithoutParameter.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -ExN03DetectorMessenger::ExN03DetectorMessenger(ExN03DetectorConstruction * ExN03Det) +ExN03DetectorMessenger::ExN03DetectorMessenger( + ExN03DetectorConstruction* ExN03Det) :ExN03Detector(ExN03Det) { ExN03detDir = new G4UIdirectory("/calor/"); @@ -97,7 +98,7 @@ ExN03DetectorMessenger::ExN03DetectorMessenger(ExN03DetectorConstruction * ExN03 MagFieldCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03DetectorMessenger::~ExN03DetectorMessenger() { @@ -109,7 +110,7 @@ ExN03DetectorMessenger::~ExN03DetectorMessenger() delete ExN03detDir; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { @@ -120,7 +121,8 @@ void ExN03DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { ExN03Detector->SetGapMaterial(newValue);} if( command == AbsThickCmd ) - { ExN03Detector->SetAbsorberThickness(AbsThickCmd->GetNewDoubleValue(newValue));} + { ExN03Detector->SetAbsorberThickness(AbsThickCmd + ->GetNewDoubleValue(newValue));} if( command == GapThickCmd ) { ExN03Detector->SetGapThickness(GapThickCmd->GetNewDoubleValue(newValue));} @@ -138,4 +140,4 @@ void ExN03DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue) { ExN03Detector->SetMagField(MagFieldCmd->GetNewDoubleValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03EventAction.cc b/examples/novice/N03/src/ExN03EventAction.cc index dd0d4f192d..1506bc5d55 100644 --- a/examples/novice/N03/src/ExN03EventAction.cc +++ b/examples/novice/N03/src/ExN03EventAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03EventAction.cc,v 1.12.2.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03EventAction.cc,v 1.15 2001/11/05 08:24:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03EventAction.hh" @@ -46,23 +46,23 @@ #include "G4ios.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03EventAction::ExN03EventAction() -:calorimeterCollID(-1),drawFlag("all"),eventMessenger(NULL), - printModulo(1) +:calorimeterCollID(-1),drawFlag("all"),printModulo(1), + eventMessenger(0) { eventMessenger = new ExN03EventActionMessenger(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03EventAction::~ExN03EventAction() { delete eventMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03EventAction::BeginOfEventAction(const G4Event* evt) { @@ -81,7 +81,7 @@ void ExN03EventAction::BeginOfEventAction(const G4Event* evt) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03EventAction::EndOfEventAction(const G4Event* evt) { @@ -91,7 +91,7 @@ void ExN03EventAction::EndOfEventAction(const G4Event* evt) // track length) in all absorbers and in all gaps G4HCofThisEvent* HCE = evt->GetHCofThisEvent(); - ExN03CalorHitsCollection* CHC = NULL; + ExN03CalorHitsCollection* CHC = 0; G4int n_hit = 0; G4double totEAbs=0, totLAbs=0, totEGap=0, totLGap=0; @@ -115,34 +115,39 @@ void ExN03EventAction::EndOfEventAction(const G4Event* evt) G4cout << "---> End of event: " << evtNb << G4endl; G4cout - << " Absorber: total energy: " << G4std::setw(7) << G4BestUnit(totEAbs,"Energy") - << " total track length: " << G4std::setw(7) << G4BestUnit(totLAbs,"Length") + << " Absorber: total energy: " << G4std::setw(7) + << G4BestUnit(totEAbs,"Energy") + << " total track length: " << G4std::setw(7) + << G4BestUnit(totLAbs,"Length") << G4endl - << " Gap: total energy: " << G4std::setw(7) << G4BestUnit(totEGap,"Energy") - << " total track length: " << G4std::setw(7) << G4BestUnit(totLGap,"Length") + << " Gap: total energy: " << G4std::setw(7) + << G4BestUnit(totEGap,"Energy") + << " total track length: " << G4std::setw(7) + << G4BestUnit(totLGap,"Length") << G4endl; G4cout << "\n " << n_hit - << " hits are stored in ExN03CalorHitsCollection." << G4endl; + << " hits are stored in ExN03CalorHitsCollection." << G4endl; } // extract the trajectories and draw them if (G4VVisManager::GetConcreteInstance()) { - G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer(); + G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); G4int n_trajectories = 0; if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); for (G4int i=0; iGetTrajectoryContainer()))[i]); + { G4Trajectory* trj = (G4Trajectory*) + ((*(evt->GetTrajectoryContainer()))[i]); if (drawFlag == "all") trj->DrawTrajectory(50); else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.)) trj->DrawTrajectory(50); else if ((drawFlag == "neutral")&&(trj->GetCharge() == 0.)) - trj->DrawTrajectory(50); + trj->DrawTrajectory(50); } - } -} + } +} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03EventActionMessenger.cc b/examples/novice/N03/src/ExN03EventActionMessenger.cc index 882bba67a6..565f1cb3a0 100644 --- a/examples/novice/N03/src/ExN03EventActionMessenger.cc +++ b/examples/novice/N03/src/ExN03EventActionMessenger.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03EventActionMessenger.cc,v 1.4.4.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03EventActionMessenger.cc,v 1.6 2001/10/10 14:58:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03EventActionMessenger.hh" @@ -36,7 +36,7 @@ #include "G4UIcmdWithAnInteger.hh" #include "globals.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03EventActionMessenger::ExN03EventActionMessenger(ExN03EventAction* EvAct) :eventAction(EvAct) @@ -56,7 +56,7 @@ ExN03EventActionMessenger::ExN03EventActionMessenger(ExN03EventAction* EvAct) PrintCmd->AvailableForStates(Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03EventActionMessenger::~ExN03EventActionMessenger() { @@ -64,15 +64,16 @@ ExN03EventActionMessenger::~ExN03EventActionMessenger() delete PrintCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void ExN03EventActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void ExN03EventActionMessenger::SetNewValue( + G4UIcommand* command,G4String newValue) { if(command == DrawCmd) {eventAction->SetDrawFlag(newValue);} if(command == PrintCmd) - {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} + {eventAction->SetPrintModulo(PrintCmd->GetNewIntValue(newValue));} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03PhysicsList.cc b/examples/novice/N03/src/ExN03PhysicsList.cc index 2fc08eda2a..b17e36dcc3 100644 --- a/examples/novice/N03/src/ExN03PhysicsList.cc +++ b/examples/novice/N03/src/ExN03PhysicsList.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03PhysicsList.cc,v 1.9.4.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03PhysicsList.cc,v 1.11 2001/10/10 14:58:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03PhysicsList.hh" @@ -40,7 +40,7 @@ #include "G4Material.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03PhysicsList::ExN03PhysicsList(): G4VUserPhysicsList() { @@ -52,12 +52,12 @@ ExN03PhysicsList::ExN03PhysicsList(): G4VUserPhysicsList() SetVerboseLevel(1); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03PhysicsList::~ExN03PhysicsList() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::ConstructParticle() { @@ -72,7 +72,7 @@ void ExN03PhysicsList::ConstructParticle() ConstructBaryons(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::ConstructBosons() { @@ -86,7 +86,8 @@ void ExN03PhysicsList::ConstructBosons() // optical photon G4OpticalPhoton::OpticalPhotonDefinition(); } - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::ConstructLeptons() { @@ -102,7 +103,7 @@ void ExN03PhysicsList::ConstructLeptons() G4AntiNeutrinoMu::AntiNeutrinoMuDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::ConstructMesons() { @@ -120,7 +121,7 @@ void ExN03PhysicsList::ConstructMesons() G4KaonZeroShort::KaonZeroShortDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::ConstructBaryons() { @@ -132,7 +133,7 @@ void ExN03PhysicsList::ConstructBaryons() } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::ConstructProcess() { @@ -141,7 +142,7 @@ void ExN03PhysicsList::ConstructProcess() ConstructGeneral(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4ComptonScattering.hh" #include "G4GammaConversion.hh" @@ -159,7 +160,7 @@ void ExN03PhysicsList::ConstructProcess() #include "G4hIonisation.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::ConstructEM() { @@ -267,7 +268,7 @@ void ExN03PhysicsList::ConstructEM() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4Decay.hh" @@ -288,7 +289,7 @@ void ExN03PhysicsList::ConstructGeneral() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::SetCuts() { @@ -303,7 +304,7 @@ void ExN03PhysicsList::SetCuts() if (verboseLevel >0){ G4cout << "ExN03PhysicsList::SetCuts:"; - G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; + G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; } // set cut values for gamma at first and for e- second and next for e+, @@ -322,7 +323,7 @@ void ExN03PhysicsList::SetCuts() if (verboseLevel>0) DumpCutValuesTable(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PhysicsList::SetCutForGamma(G4double cut) @@ -358,15 +359,5 @@ G4double ExN03PhysicsList::GetCutForProton() const return cutForProton; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - - - - - - - - - +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc b/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc index 0271dd59eb..3422dc713b 100644 --- a/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc +++ b/examples/novice/N03/src/ExN03PrimaryGeneratorAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03PrimaryGeneratorAction.cc,v 1.3.4.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03PrimaryGeneratorAction.cc,v 1.5 2001/10/10 14:58:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03PrimaryGeneratorAction.hh" @@ -40,10 +40,10 @@ #include "G4ParticleDefinition.hh" #include "Randomize.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03PrimaryGeneratorAction::ExN03PrimaryGeneratorAction( - ExN03DetectorConstruction* ExN03DC) + ExN03DetectorConstruction* ExN03DC) :ExN03Detector(ExN03DC),rndmFlag("off") { G4int n_particle = 1; @@ -66,7 +66,7 @@ ExN03PrimaryGeneratorAction::ExN03PrimaryGeneratorAction( } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03PrimaryGeneratorAction::~ExN03PrimaryGeneratorAction() { @@ -74,7 +74,7 @@ ExN03PrimaryGeneratorAction::~ExN03PrimaryGeneratorAction() delete gunMessenger; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) { @@ -91,5 +91,5 @@ void ExN03PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent) particleGun->GeneratePrimaryVertex(anEvent); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc b/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc index a1aa798ed0..689d8ca44e 100644 --- a/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc +++ b/examples/novice/N03/src/ExN03PrimaryGeneratorMessenger.cc @@ -21,22 +21,23 @@ // ******************************************************************** // // -// $Id: ExN03PrimaryGeneratorMessenger.cc,v 1.3.4.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03PrimaryGeneratorMessenger.cc,v 1.5 2001/10/10 14:58:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03PrimaryGeneratorMessenger.hh" #include "ExN03PrimaryGeneratorAction.hh" #include "G4UIcmdWithAString.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -ExN03PrimaryGeneratorMessenger::ExN03PrimaryGeneratorMessenger(ExN03PrimaryGeneratorAction* ExN03Gun) +ExN03PrimaryGeneratorMessenger::ExN03PrimaryGeneratorMessenger( + ExN03PrimaryGeneratorAction* ExN03Gun) :ExN03Action(ExN03Gun) { RndmCmd = new G4UIcmdWithAString("/gun/random",this); @@ -48,20 +49,21 @@ ExN03PrimaryGeneratorMessenger::ExN03PrimaryGeneratorMessenger(ExN03PrimaryGener RndmCmd->AvailableForStates(PreInit,Idle); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03PrimaryGeneratorMessenger::~ExN03PrimaryGeneratorMessenger() { delete RndmCmd; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void ExN03PrimaryGeneratorMessenger::SetNewValue(G4UIcommand * command,G4String newValue) +void ExN03PrimaryGeneratorMessenger::SetNewValue( + G4UIcommand* command, G4String newValue) { if( command == RndmCmd ) { ExN03Action->SetRndmFlag(newValue);} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03RunAction.cc b/examples/novice/N03/src/ExN03RunAction.cc index 02bd37f55d..5f2af67d30 100644 --- a/examples/novice/N03/src/ExN03RunAction.cc +++ b/examples/novice/N03/src/ExN03RunAction.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: ExN03RunAction.cc,v 1.7.4.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03RunAction.cc,v 1.9 2001/10/10 14:58:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03RunAction.hh" @@ -36,18 +36,17 @@ #include "G4VVisManager.hh" #include "G4ios.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03RunAction::ExN03RunAction() -{ -} +{} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03RunAction::~ExN03RunAction() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03RunAction::BeginOfRunAction(const G4Run* aRun) { @@ -61,7 +60,7 @@ void ExN03RunAction::BeginOfRunAction(const G4Run* aRun) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03RunAction::EndOfRunAction(const G4Run* ) { @@ -70,4 +69,4 @@ void ExN03RunAction::EndOfRunAction(const G4Run* ) } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03SteppingAction.cc b/examples/novice/N03/src/ExN03SteppingAction.cc index f44f3e1f1d..411f7eadc3 100644 --- a/examples/novice/N03/src/ExN03SteppingAction.cc +++ b/examples/novice/N03/src/ExN03SteppingAction.cc @@ -21,32 +21,32 @@ // ******************************************************************** // // -// $Id: ExN03SteppingAction.cc,v 1.3.4.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03SteppingAction.cc,v 1.5 2001/10/10 14:58:13 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03SteppingAction.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03SteppingAction::ExN03SteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03SteppingAction::~ExN03SteppingAction() { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03SteppingAction::UserSteppingAction(const G4Step*) { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03SteppingVerbose.cc b/examples/novice/N03/src/ExN03SteppingVerbose.cc index 002d086c80..d1c4e754a5 100644 --- a/examples/novice/N03/src/ExN03SteppingVerbose.cc +++ b/examples/novice/N03/src/ExN03SteppingVerbose.cc @@ -21,28 +21,28 @@ // ******************************************************************** // // -// $Id: ExN03SteppingVerbose.cc,v 1.5.2.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03SteppingVerbose.cc,v 1.8 2001/11/05 08:24:51 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "ExN03SteppingVerbose.hh" #include "G4SteppingManager.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03SteppingVerbose::ExN03SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03SteppingVerbose::~ExN03SteppingVerbose() {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03SteppingVerbose::StepInfo() { @@ -66,14 +66,14 @@ void ExN03SteppingVerbose::StepInfo() << G4std::setw(10) << "Process" << G4endl; } - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw(5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); // if( fStepStatus != fWorldBoundary){ if( fTrack->GetNextVolume() != 0 ) { @@ -82,10 +82,11 @@ void ExN03SteppingVerbose::StepInfo() G4cout << G4std::setw(10) << "OutOfWorld"; } - if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ + if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){ G4cout << " " - << G4std::setw(10) << fStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + << G4std::setw(10) + << fStep->GetPostStepPoint()->GetProcessDefinedStep() + ->GetProcessName(); } else { G4cout << " UserLimit"; } @@ -107,7 +108,7 @@ void ExN03SteppingVerbose::StepInfo() << " ---------------" << G4endl; - for(G4int lp1=(*fSecondary).size()-tN2ndariesTot; + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; lp1<(*fSecondary).size(); lp1++){ G4cout << " : " << G4std::setw(6) @@ -134,7 +135,7 @@ void ExN03SteppingVerbose::StepInfo() G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03SteppingVerbose::TrackingStarted() { @@ -154,14 +155,14 @@ G4int prec = G4cout.precision(3); << G4std::setw(10) << "Volume" << " " << G4std::setw(10) << "Process" << G4endl; - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") - << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") - << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); + G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") + << G4std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length") + << G4std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length"); if(fTrack->GetNextVolume()){ G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName(); @@ -173,4 +174,4 @@ G4int prec = G4cout.precision(3); G4cout.precision(prec); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo..... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/src/ExN03VisManager.cc b/examples/novice/N03/src/ExN03VisManager.cc index 624aa8fa25..9524d4146c 100644 --- a/examples/novice/N03/src/ExN03VisManager.cc +++ b/examples/novice/N03/src/ExN03VisManager.cc @@ -21,14 +21,14 @@ // ******************************************************************** // // -// $Id: ExN03VisManager.cc,v 1.5.2.1 2001/06/28 19:07:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN03VisManager.cc,v 1.8 2001/11/15 13:09:56 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifdef G4VIS_USE @@ -36,18 +36,21 @@ // Supported drivers... -#ifdef G4VIS_USE_ASCIITREE +// Not needing external packages or libraries... #include "G4ASCIITree.hh" -#endif +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -76,40 +79,34 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYTRACER -#include "G4RayTracer.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... ExN03VisManager::ExN03VisManager () {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void ExN03VisManager::RegisterGraphicsSystems () { -#ifdef G4VIS_USE_ASCIITREE + // Graphics Systems not needing external packages or libraries... RegisterGraphicsSystem (new G4ASCIITree); -#endif + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -138,20 +135,11 @@ void ExN03VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYTRACER - RegisterGraphicsSystem (new G4RayTracer); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." @@ -162,4 +150,4 @@ void ExN03VisManager::RegisterGraphicsSystems () { #endif -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/examples/novice/N03/vis.mac b/examples/novice/N03/vis.mac new file mode 100644 index 0000000000..405a89019f --- /dev/null +++ b/examples/novice/N03/vis.mac @@ -0,0 +1,27 @@ +# +# Macro file for the initialization phase of "exampleN03.cc" +# when running in interactive mode +# +# Sets some default verbose +# +/control/verbose 2 +/control/saveHistory +/run/verbose 2 +# +# create empty scene +# +/vis/scene/create +# +# Create a scene handler for a specific graphics system +# (Edit the next line(s) to choose another graphic system) +# +/vis/open DAWNFILE +/vis/open OGLIX +# +/vis/viewer/flush +# +# for drawing the tracks +# (if too many tracks cause core dump => storeTrajectory 0) +# +/tracking/storeTrajectory 1 +/vis/scene/endOfEventAction accumulate diff --git a/examples/novice/N03/visTutor/History b/examples/novice/N03/visTutor/History new file mode 100644 index 0000000000..53261f0b00 --- /dev/null +++ b/examples/novice/N03/visTutor/History @@ -0,0 +1,22 @@ +==================================== +examples/novice/N03/visTutor/History +==================================== + +14-11-01 Satoshi Tanaka (exN03VisTutor-V03-02-02) +- exN03Vis8.mac : Batch visualization with the DAWNFILE driver +- exN03Vis9.mac : Multi-page PostScript file generation (old exN03Vis8.mac) + +08-11-01 Satoshi Tanaka (exN03VisTutor-V03-02-01a) +- /vis/viewer/viewpointThetaPhi ==> /vis/viewer/set/viewpointThetaPhi + +07-11-01 Satoshi Tanaka (exN03VisTutor-V03-02-01) +- Macros are rewritten with /vis/viewer/flush +- Comments are updated. + +18-09-01 Satoshi Tanaka (exN03VisTutor-V03-02-00) +- Updation for automatic visualization at Hebden Bridge mini-workshop. +- /vis/viewer/flush and /vis/flushAll are not included yet. + (To be included in the next tag.) +- /vis/drawTree may still require /vis/scene/notifyHandlers. + (John Allison will revise the /vis/drawTree command soon.) + diff --git a/examples/novice/N03/visTutor/exN03Tree0.mac b/examples/novice/N03/visTutor/exN03Tree0.mac index 9e5e5fc3f3..865388118e 100644 --- a/examples/novice/N03/visTutor/exN03Tree0.mac +++ b/examples/novice/N03/visTutor/exN03Tree0.mac @@ -4,6 +4,7 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # # June 20, 2001 # # # # CONTENTS: A macro to demonstrate ASCII DTREE # @@ -16,12 +17,12 @@ # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # # -# % setenv G4VIS_BUILD_ASCIITREE_DRIVER 1 # +# * Unnecessary # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # -# % setenv G4VIS_USE_ASCIITREE 1 # +# * Unnecessary # # # # VERBOSE LEVEL: # # # @@ -35,16 +36,8 @@ # # # ADDITIONAL NOTES: # # * The geometry tree is displayed in the stdout. # -# # -# * The compound command # -# "/vis/drawTree [] []" # -# is equivalent to the following set of commands: # -# /vis/open system # -# /vis/drawVolume PV-name # -# # -# The PV-name "world" is always means the world volume, # -# whatever its real name, e.g., "World" in example N03, is. # -# # +# * The compound command to visualize geometry tree: # +# /vis/drawTree [] [] # ####################################################################### # Draw the whole geometry tree diff --git a/examples/novice/N03/visTutor/exN03Tree1.mac b/examples/novice/N03/visTutor/exN03Tree1.mac index b40a5984a4..8fc517321d 100644 --- a/examples/novice/N03/visTutor/exN03Tree1.mac +++ b/examples/novice/N03/visTutor/exN03Tree1.mac @@ -4,6 +4,7 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # # June 20, 2001 # # # # CONTENTS: A macro to demonstrate GAG DTREE # @@ -17,12 +18,12 @@ # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # # -# % setenv G4VIS_BUILD_GAGTREE_DRIVER 1 # +# * Unnecessary # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # -# % setenv G4VIS_USE_GAGTREE 1 # +# * Unnecessary # # # # VERBOSE LEVEL: # # # @@ -35,33 +36,28 @@ # >= 2: prints solid name and type. # # # # ADDITIONAL NOTES: # -# * The geometry tree is displayed in the stdout. # -# # -# * The compound command # -# "/vis/drawTree [] []" # -# is equivalent to the following set of commands: # -# /vis/open system # -# /vis/drawVolume PV-name # -# # -# The PV-name "world" is always means the world volume, # -# whatever its real name, e.g., "World" in example N03, is. # -# # +# * The geometry tree is displayed in GAG windows stdout. # +# (If you are using the G4 character terminals, the tree is # +# displayed in stdout.) # +# * The compound command to visualize geometry tree: # +# /vis/drawTree [] [] # ####################################################################### # Draw the whole geometry tree -/vis/drawTree world GAGTree +# Note: "!" means the default argument, i.e., "world" +/vis/drawTree ! GAGTree # Draw a part of tree /vis/drawTree Gap GAGTree # Change the level to display details /vis/GAGTree/verbose 1 -/vis/drawTree world GAGTree +/vis/drawTree ! GAGTree # Change the level to display details /vis/GAGTree/verbose 2 -/vis/drawTree world GAGTree +/vis/drawTree ! GAGTree # Change the level to display details /vis/GAGTree/verbose 10 -/vis/drawTree world GAGTree +/vis/drawTree ! GAGTree diff --git a/examples/novice/N03/visTutor/exN03Vis0.mac b/examples/novice/N03/visTutor/exN03Vis0.mac index a6a9c1592b..fb505e3757 100644 --- a/examples/novice/N03/visTutor/exN03Vis0.mac +++ b/examples/novice/N03/visTutor/exN03Vis0.mac @@ -4,6 +4,8 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # +# Nov 07, 2001 # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # # June 20, 2001 # # November 26, 2000 # # October 17, 2000 # @@ -27,13 +29,11 @@ # # # % setenv OGLHOME ... (e.g. /usr/X11R6) # # % setenv G4VIS_BUILD_OPENGLX_DRIVER 1 # -# % setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # # % setenv G4VIS_USE_OPENGLX 1 # -# % setenv G4VIS_USE_DAWNFILE 1 # # # # ADDITIONAL NOTES: # # The compound command "/vis/open " # @@ -48,12 +48,6 @@ # /vis/scene/create # # /vis/scene/add/volume $1 # # /vis/sceneHandler/attach # -# /vis/viewer/refresh # -# # -# WARNING: You should execute "/vis/viewer/update" after # -# "/vis/drawVolume" in order to complete visualization # -# when you use post-processin visualization drivers # -# such as the DAWNFILE, VRMLFILE, OpenGL Motif drivers. # # # ####################################################################### @@ -64,14 +58,22 @@ # Invoke the OGLIX driver /vis/open OGLIX +#/vis/open DAWNFILE # Set camera /vis/viewer/reset -/vis/viewer/viewpointThetaPhi 70 20 +/vis/viewer/set/viewpointThetaPhi 70 20 -# Visualize of the whole detector geometry +# Create an empty scene and add the detector geometry to it /vis/drawVolume -/vis/viewer/update + +# The following command "flush" +# the action of the current viewer. +# They are required for the post-processing drivers +# such as DAWNFILE, VRMLFILE, HepRep drivers, etc. +# For OpenGL drivers, these commands are not required +# but harmless even if they are described. +/vis/viewer/flush ######################################################### # Visualization of events with the DAWNFILE driver @@ -79,11 +81,6 @@ # * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4_XX.eps" printable, -# append the "showpage" PostScript command to the file. -# You can do it with the 4th page of the DAWN GUI panel -# or by editing the EPS file by hand. -# # * Set an environmental variable if you wish to # skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" @@ -92,11 +89,8 @@ # Invoke the DAWNFILE driver /vis/open DAWNFILE -# Create a new scene -/vis/scene/create - # Add the world volume to the current scene -/vis/scene/add/volume +/vis/drawVolume # Add trajectories to the current scene # Note: This command is not necessary in exampleN03, @@ -104,16 +98,11 @@ # described in the event action. #/vis/scene/add/trajectories -# Attach the current scene handler -# to the current scene (omitable) -/vis/sceneHandler/attach - # Set camera /vis/viewer/reset /vis/viewer/zoom 1.5 -/vis/viewer/viewpointThetaPhi 70 20 +/vis/viewer/set/viewpointThetaPhi 70 20 # Visualize events added to the current scene /tracking/storeTrajectory 1 -/run/beamOn 10 - +/run/beamOn 3 diff --git a/examples/novice/N03/visTutor/exN03Vis1.mac b/examples/novice/N03/visTutor/exN03Vis1.mac index e60af295e8..5ee98b8319 100644 --- a/examples/novice/N03/visTutor/exN03Vis1.mac +++ b/examples/novice/N03/visTutor/exN03Vis1.mac @@ -4,6 +4,8 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # +# Nov 07, 2001 # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # # June 20, 2001 # # November 26, 2000 # # October 17, 2000 # @@ -26,13 +28,11 @@ # # # % setenv OGLHOME ... (e.g. /usr/X11R6) # # % setenv G4VIS_BUILD_OPENGLX_DRIVER 1 # -# % setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # # % setenv G4VIS_USE_OPENGLX 1 # -# % setenv G4VIS_USE_DAWNFILE 1 # # # # ADDITIONAL NOTES: # # The compound command "/vis/open " # @@ -47,12 +47,6 @@ # /vis/scene/create # # /vis/scene/add/volume $1 # # /vis/sceneHandler/attach # -# /vis/viewer/refresh # -# # -# WARNING: You should execute "/vis/viewer/update" after # -# "/vis/drawVolume" in order to complete visualization # -# when you use post-processin visualization drivers # -# such as the DAWNFILE, VRMLFILE, OpenGL Motif drivers. # # # ####################################################################### @@ -64,32 +58,23 @@ # Invoke the OGLSX driver /vis/open OGLSX -# Visualize the detector geometry -# with the defalut camera parameters -/vis/viewer/reset -/vis/drawVolume -/vis/viewer/update - -# Slide show (spinning) of the view visualized above. -# Draw 60 frames with steps of 3 degrees. -/vis/viewer/reset -/vis/viewer/viewpointThetaPhi 20 20 -/vis/viewer/zoom 0.8 -/vis/camera/spin 60 3 - # Bird's-eye view of the detector geometry # # viewpoint : (theta,phi) = (20*deg, 70*deg), # zoom factor: 0.8 of the full screen size -# coordinate axes: -# x-axis:red, y-axis:green, z-axis:blue -# origin: (0,0,0), length: 500 # /vis/viewer/reset -/vis/viewer/viewpointThetaPhi 20 70 +/vis/viewer/set/viewpointThetaPhi 20 70 /vis/viewer/zoom 0.8 /vis/drawVolume -/vis/viewer/update + +# The following two commands "flush" +# the action of the current viewer. +# They are required for the post-processing drivers +# such as DAWNFILE, VRMLFILE, HepRep drivers, etc. +# For OpenGL drivers, these commands are not required +# but harmless even if they are described. +/vis/viewer/flush ########################################################## # Visualization with the DAWNFILE driver @@ -97,11 +82,6 @@ # * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4_XX.eps" printable, -# append the "showpage" PostScript command to the file. -# You can do it with the 4th page of the DAWN GUI panel -# or by editing the EPS file by hand. -# # * Set an environmental variable if you wish to # skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" @@ -116,31 +96,45 @@ # coordinate axes: # x-axis:red, y-axis:green, z-axis:blue # origin: (0,0,0), length: 500 +# Scale: length = 10 cm, Orientation = z, color = red, +# placing_algorithm = manual, +# center = (-2.5 cm , -5 cm, 0 cm) # /vis/viewer/reset /vis/viewer/zoom 1.1 -/vis/viewer/viewpointThetaPhi 35 35 -/vis/scene/create -/vis/scene/add/volume Absorber -/vis/scene/add/axes 0 0 0 500 -/vis/scene/add/text 0 0 0 mm 40 -100 -120 Absorber -/vis/sceneHandler/attach -/vis/viewer/refresh +/vis/viewer/set/viewpointThetaPhi 35 35 +/vis/drawVolume Absorber +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 40 -100 -140 Absorber +/vis/scene/add/scale 10 cm z 1 0 0 manual -2.5 -5 0 cm + +# "Flush the action of all the existing viewers. +# Note: You should execute these commands, e.g., +# when the current scene is modified. +/vis/scene/notifyHandlers /vis/viewer/update +# FOR FUTURE UPDATION +#/vis/viewer/flushAll + # Bird's-eye view of a detector component (Gap) /vis/viewer/reset /vis/viewer/zoom 1.1 -/vis/viewer/viewpointThetaPhi 35 35 -/vis/scene/create -/vis/scene/add/volume Gap -/vis/scene/add/axes 0 0 0 500 -/vis/scene/add/text 0 0 0 mm 50 -100 -120 Gap -/vis/sceneHandler/attach -/vis/viewer/refresh +/vis/viewer/set/viewpointThetaPhi 35 35 +/vis/drawVolume Gap +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 50 -100 -140 Gap +/vis/scene/add/scale 10 cm z 1 0 0 manual -2.5 -5 0 cm + +# "Flush the action of all the existing viewers. +/vis/scene/notifyHandlers /vis/viewer/update -# Bird's-eye view of the whole detector components +# FOR FUTURE UPDATION +#/vis/viewer/flushAll + + +# Bird's-eye view of the whole detector components (world) # * The argument "world" of the command # "/vis/scene/add/volume" is omittable. # * "/vis/viewer/set/culling false" makes the invisible @@ -149,15 +143,22 @@ # in ExN03DetectorConstruction.cc.) /vis/viewer/reset /vis/viewer/zoom 1.1 -/vis/viewer/viewpointThetaPhi 35 35 +/vis/viewer/set/viewpointThetaPhi 35 35 /vis/viewer/set/culling global false -/vis/scene/create -/vis/scene/add/volume -/vis/scene/add/axes 0 0 0 500 -/vis/scene/add/text 0 0 0 mm 50 -100 -190 World -/vis/sceneHandler/attach -/vis/viewer/refresh +/vis/drawVolume +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 50 -100 -240 World +/vis/scene/add/scale 10 cm x 1 0 0 + +# "Flush the action of all the existing viewers. +/vis/scene/notifyHandlers /vis/viewer/update +# FOR FUTURE UPDATION +#/vis/viewer/flushAll + + # Make the culling on for next visualization +# Note: You may also use "/vis/viewer/reset" +# for this initialization. /vis/viewer/set/culling global true diff --git a/examples/novice/N03/visTutor/exN03Vis2.mac b/examples/novice/N03/visTutor/exN03Vis2.mac index 2bc24565f7..b1fec56f33 100644 --- a/examples/novice/N03/visTutor/exN03Vis2.mac +++ b/examples/novice/N03/visTutor/exN03Vis2.mac @@ -4,6 +4,8 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # +# Nov 07, 2001 # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # # June 20, 2001 # # November 26, 2000 # # October 17, 2000 # @@ -26,13 +28,11 @@ # # # % setenv OGLHOME ... (e.g. /usr/X11R6) # # % setenv G4VIS_BUILD_OPENGLX_DRIVER 1 # -# % setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # # % setenv G4VIS_USE_OPENGLX 1 # -# % setenv G4VIS_USE_DAWNFILE 1 # # # # ADDITIONAL NOTES: # # The compound command "/vis/open " # @@ -55,15 +55,8 @@ # Invoke the OGLSX driver /vis/open OGLSX -# Create a new scene -/vis/scene/create - -# Add the world volume to the current scene -/vis/scene/add/volume - -# Attach the current scene handler -# to the current scene (omitable) -/vis/sceneHandler/attach +# Create an empty scene and add the detector geometry to it +/vis/drawVolume # Add trajectories to the current scene # Note: This command is not necessary in exampleN03, @@ -73,24 +66,14 @@ # Set viewing parameters # viewpoint : (theta,phi) = (10*deg, 10*deg). -# zoom factor: 0.9 x (full screen size) # drawing style: surface /vis/viewer/reset /vis/viewer/set/style surface -/vis/viewer/viewpointThetaPhi 10 10 -/vis/viewer/zoom 0.9 +/vis/viewer/set/viewpointThetaPhi 10 10 # Generate one event and visualize it. /run/beamOn 1 -# Slide show (spinning). -# Draw 18 frames with steps of 20 degrees. -# The OGLSX driver stores the previously visualized view -# in the display list. So the particle trajectories are -# also rotated together with the detector geometry. -# -/vis/camera/spin 18 20 - ########################################################## # Visualization with the DAWNFILE driver @@ -98,11 +81,6 @@ # * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4_XX.eps" printable, -# append the "showpage" PostScript command to the file -# You can do it with the 4th page of the DAWN GUI panel -# or by editing the EPS file by hand. -# # * Set an environmental variable if you wish to # skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" @@ -111,15 +89,8 @@ # Invoke the DAWNFILE driver /vis/open DAWNFILE -# Create a new scene -/vis/scene/create - -# Add the world volume to the current scene -/vis/scene/add/volume - -# Attach the current scene handler -# to the current scene (omitable) -/vis/sceneHandler/attach +# Create an empty scene and add the detector geometry to it +/vis/drawVolume # Add trajectories to the current scene # Note: This command is not necessary in exampleN03, @@ -127,13 +98,18 @@ # described in the event action. #/vis/scene/add/trajectories +# Set the trajectory-accumulation mode to "accumulate". +# Trajectories of each event are accumulated +# and visualized at the end of one run. +/vis/scene/endOfEventAction accumulate + # Visualize many events (bird's eye view) # viewpoint : (theta,phi) = (45*deg, 45*deg) # zoom factor: 1.5 x (full screen size) # drawing style: wireframe /vis/viewer/reset /vis/viewer/set/style wireframe -/vis/viewer/viewpointThetaPhi 45 45 +/vis/viewer/set/viewpointThetaPhi 45 45 /vis/viewer/zoom 1.5 /run/beamOn 50 @@ -142,6 +118,10 @@ # zoom factor: 5 x (full screen size) /vis/viewer/reset /vis/viewer/set/style wireframe -/vis/viewer/viewpointThetaPhi 90 0 +/vis/viewer/set/viewpointThetaPhi 90 0 /vis/viewer/zoom 5 /run/beamOn 50 + +# Reset trajectory-accumulation mode to "refresh" (default) +# Trajectories are visualized at the end of each event. +/vis/scene/endOfEventAction refresh diff --git a/examples/novice/N03/visTutor/exN03Vis3.mac b/examples/novice/N03/visTutor/exN03Vis3.mac index e79afae78d..06f7b73f81 100644 --- a/examples/novice/N03/visTutor/exN03Vis3.mac +++ b/examples/novice/N03/visTutor/exN03Vis3.mac @@ -4,6 +4,8 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # +# Nov 07, 2001 # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # # June 20, 2001 # # November 26, 2000 # # October 17, 2000 # @@ -26,13 +28,11 @@ # # # % setenv OGLHOME ... (e.g. /usr/local) # # % setenv G4VIS_BUILD_OPENGLX_DRIVER 1 # -# % setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # # % setenv G4VIS_USE_OPENGLX 1 # -# % setenv G4VIS_USE_DAWNFILE 1 # # # # ADDITIONAL NOTES: # # The compound command "/vis/open " # @@ -52,18 +52,11 @@ # Visualization with the OGLIX (OpenGL Immediate X) driver ########################################################### -# Invoke the OGLIX driver -/vis/open OGLIX +# Invoke the OGLSX driver +/vis/open OGLSX -# Create a new scene -/vis/scene/create - -# Add the world volume to the current scene -/vis/scene/add/volume - -# Attach the current scene handler -# to the current scene (omitable) -/vis/sceneHandler/attach +# Create an empty scene and add the detector geometry to it +/vis/drawVolume # Add trajectories to the current scene # Note: This command is not necessary in exampleN03, @@ -74,7 +67,7 @@ # Bird-eye view of events with # the hidden-surface drawing style /vis/viewer/reset -/vis/viewer/viewpointThetaPhi 45 45 +/vis/viewer/set/viewpointThetaPhi 45 45 /vis/viewer/set/style surface /run/beamOn 10 @@ -84,11 +77,6 @@ # * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4_XX.eps" printable, -# append the "showpage" PostScript command to the file. -# You can do it with the 4th page of the DAWN GUI panel -# or by editing the EPS file by hand. -# # * Set an environmental variable if you wish to # skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" @@ -98,15 +86,8 @@ # Invoke the DAWNFILE driver /vis/open DAWNFILE -# Create a new scene -/vis/scene/create - -# Add the world volume to the current scene -/vis/scene/add/volume - -# Attach the current scene handler -# to the current scene (omitable) -/vis/sceneHandler/attach +# Create an empty scene and add the detector geometry to it +/vis/drawVolume # Add trajectories to the current scene # Note: This command is not necessary in exampleN03, @@ -118,9 +99,14 @@ # wireframe drawing style /vis/viewer/reset /vis/viewer/zoom 1.5 -/vis/viewer/viewpointThetaPhi 45 45 +/vis/viewer/set/viewpointThetaPhi 45 45 /vis/viewer/set/style wireframe -/run/beamOn 5 +/run/beamOn 3 + +# Set the trajectory-accumulation mode to "accumulate". +# Trajectories of each event are accumulated +# and visualized at the end of one run. +/vis/scene/endOfEventAction accumulate # Bird-eye view of events with the # hidden-surface drawing style @@ -140,4 +126,11 @@ # invisible : on # low density : off # covered daughter: off +# +# Note: You may also use "/vis/viewer/reset" +# for this initialization. /vis/viewer/set/culling density false + +# Reset trajectory-accumulation mode to "refresh" (default) +# Trajectories are visualized at the end of each event. +/vis/scene/endOfEventAction refresh diff --git a/examples/novice/N03/visTutor/exN03Vis4.mac b/examples/novice/N03/visTutor/exN03Vis4.mac index 1d66517c6d..aa65650ce9 100644 --- a/examples/novice/N03/visTutor/exN03Vis4.mac +++ b/examples/novice/N03/visTutor/exN03Vis4.mac @@ -4,6 +4,8 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # +# Nov 07, 2001 # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # # June 20, 2001 # # November 26, 2000 # # October 17, 2000 # @@ -23,12 +25,13 @@ # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # (See geant4/source/visualization/README for details.) # # # -# % setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # +# % setenv OGLHOME ... (e.g. /usr/X11R6) # +# % setenv G4VIS_BUILD_OPENGLX_DRIVER 1 # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # -# % setenv G4VIS_USE_DAWNFILE 1 # +# % setenv G4VIS_USE_OPENGLX 1 # # # # ADDITIONAL NOTES: # # The compound command "/vis/open " # @@ -43,13 +46,6 @@ # /vis/scene/create # # /vis/scene/add/logicalVolume $1 # # /vis/sceneHandler/attach # -# /vis/viewer/refresh # -# /geometry/print $1 # -# # -# WARNING: You should execute "/vis/viewer/update" after # -# "/vis/specify" in order to complete visualization # -# when you use post-processin visualization drivers # -# such as the DAWNFILE, VRMLFILE, OpenGL Motif drivers. # # # ####################################################################### @@ -63,11 +59,11 @@ # Set camera /vis/viewer/reset /vis/viewer/zoom 0.9 -/vis/viewer/viewpointThetaPhi 35 35 +/vis/viewer/set/viewpointThetaPhi 35 35 # Visualize a selected logical volume /vis/specify Absorber -/vis/viewer/update +/vis/viewer/flush ########################################################## # Visualization with the DAWNFILE driver @@ -75,11 +71,6 @@ # * Each visualized view is saved to a file "g4_XX.eps" # with the "vectorized" PostScript format. # -# * In order to make the file "g4_XX.eps" printable, -# append the "showpage" PostScript command to the file. -# You can do it with the 4th page of the DAWN GUI panel -# or by editing the EPS file by hand. -# # * Set an environmental variable if you wish to # skip DAWN GUI: # % setenv G4DAWNFILE_VIEWER "dawn -d" @@ -90,24 +81,25 @@ # Set camera /vis/viewer/reset /vis/viewer/zoom 0.9 -/vis/viewer/viewpointThetaPhi 35 35 +/vis/viewer/set/viewpointThetaPhi 35 35 # Visualize a selected logical volume (1) -/vis/scene/create -/vis/scene/add/logicalVolume Absorber -/vis/scene/add/axes 0 0 0 500 +/vis/specify Absorber +/vis/scene/add/axes 0 0 0 500 mm /vis/scene/add/text 0 0 0 mm 40 -100 -200 LogVol:Absorber -/vis/sceneHandler/attach -/vis/viewer/refresh -/geometry/print +/vis/scene/notifyHandlers /vis/viewer/update +# FOR FUTURE UPDATION +#/vis/viewer/flushAll + # Visualize a selected logical volume (2) -/vis/scene/create -/vis/scene/add/logicalVolume Gap -/vis/scene/add/axes 0 0 0 500 +/vis/specify Gap +/vis/scene/add/axes 0 0 0 500 mm /vis/scene/add/text 0 0 0 mm 40 -100 -200 LogVol:Gap -/vis/sceneHandler/attach -/vis/viewer/refresh -/geometry/print +/vis/scene/notifyHandlers /vis/viewer/update + +# FOR FUTURE UPDATION +#/vis/viewer/flushAll + diff --git a/examples/novice/N03/visTutor/exN03Vis5.mac b/examples/novice/N03/visTutor/exN03Vis5.mac index b67af9d5b0..4600302e1a 100644 --- a/examples/novice/N03/visTutor/exN03Vis5.mac +++ b/examples/novice/N03/visTutor/exN03Vis5.mac @@ -51,7 +51,7 @@ # Bird-eye view of events /vis/viewer/reset -/vis/viewer/viewpointThetaPhi 45 45 +/vis/viewer/set/viewpointThetaPhi 45 45 /run/beamOn 1 diff --git a/examples/novice/N03/visTutor/exN03Vis6.mac b/examples/novice/N03/visTutor/exN03Vis6.mac index 93c5901911..a6b0b8c5ff 100644 --- a/examples/novice/N03/visTutor/exN03Vis6.mac +++ b/examples/novice/N03/visTutor/exN03Vis6.mac @@ -41,7 +41,7 @@ # Bird-eye view of events /vis/viewer/reset -/vis/viewer/viewpointThetaPhi 45 45 +/vis/viewer/set/viewpointThetaPhi 45 45 # Attach the just created Go scene graph to the viewer. /vis/viewer/update diff --git a/examples/novice/N03/visTutor/exN03Vis7.mac b/examples/novice/N03/visTutor/exN03Vis7.mac index 435eabc9a8..a6e855fd0d 100644 --- a/examples/novice/N03/visTutor/exN03Vis7.mac +++ b/examples/novice/N03/visTutor/exN03Vis7.mac @@ -4,6 +4,8 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # +# Nov 07, 2001 # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # # June 20, 2001 # # November 26, 2000 # # October 17, 2000 # @@ -19,22 +21,17 @@ # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # (See geant4/source/visualization/README for details.) # -# # -# % setenv G4VIS_BUILD_VRMLFILE_DRIVER 1 # +# * Unnecessary # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # -# # -# % setenv G4VIS_USE_VRMLFILE 1 # +# * Unnecessary # # # # RECOMMENDED ENVIRONMENTAL VARIABLES FOR VISUALIZATION: # # # # % setenv G4VRMLFILE_VIEWER vrmlview # # ( The default value is "NONE".) # # # -# % setenv G4VRMLFILE_MAX_FILE_NUM 100 # -# ( The default value is "1".) # -# # # ADDITIONAL NOTES: # # The VRML-file viewer "vrmlview" is obtainable from the following # # Web site: # @@ -45,34 +42,27 @@ ################################################### # Visualization of detector geometry and events # with the VRML2FILE driver. -# -# Note: "/vis/viewer/set/style wireframe" means -# "half-transparent" in the VRML2FILE driver. -# It is a convention of this driver. ################################################### # Store particle trajactories for visualization /tracking/storeTrajectory 1 # Invoke the VRML2FILE driver +# Note: The VRML1FILE driver generates VRML 1.0 format files. +# The VRML2FILE driver generates VRML 2.0 format files. /vis/open VRML2FILE -# Create a new scene -/vis/scene/create +# Create an empty scene and add the detector geometry to it +/vis/drawVolume -# Attach the current scene handler -# to the current scene -/vis/sceneHandler/attach - -# Add the world volume to the current scene -/vis/scene/add/volume - -# Visualize one event added to the current scene +# Visualize 3 events in the wireframe mode # Note: The command /vis/scene/add/trajectories # is not necessary in exampleN03, # since the C++ method DrawTrajectory() is # described in the event action. +# Note: "/vis/viewer/set/style wireframe" means +# "half-transparent" in the VRML2FILE driver. +# It is a convention only for this driver. #/vis/scene/add/trajectories /vis/viewer/set/style wireframe /run/beamOn 3 - diff --git a/examples/novice/N03/visTutor/exN03Vis8.mac b/examples/novice/N03/visTutor/exN03Vis8.mac index 1add800898..10370d856a 100644 --- a/examples/novice/N03/visTutor/exN03Vis8.mac +++ b/examples/novice/N03/visTutor/exN03Vis8.mac @@ -4,42 +4,34 @@ # AUTHOR(S): Satoshi Tanaka # # # # DATE: # -# June 20, 2001 # -# November 26, 2000 # -# October 17, 2000 # +# Nov 14, 2001 # # # -# CONTENTS: A macro to demonstrate creation of a "multi-page" # -# PostScript file # +# CONTENTS: A macro to demonstrate batch visualization to generate # +# PostScript file with the DAWNFILE driver # # # -# USAGE: % setenv G4DAWNFILE_MAX_FILE_NUM 1 # -# % setenv DAWN_BATCH a # -# % gmake visclean # +# % setenv DAWN_BATCH 1 # +# % make visclean # # % $G4BINDIR/exampleN03 # # Idle> /control/execute visTutor/exN03Vis8.mac # # Idle> exit # -# % gv g4_00.eps # -# # -# Then click, "<<", ">>" etc to traverse pages # +# % gv g4_00.eps & # +# % gv g4_01.eps & # +# % gv g4_02.eps & # # # # REQUIRED PLATFORMS & SOFTWARES: Unix, X-window, # # DAWN (version 3.85 or after) # -# gv (Ghostview), Tcl/Tk # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # # (See geant4/source/visualization/README for details.) # # # -# % setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # +# * Unnecessary # # # # ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # # (See geant4/source/visualization/README for details.) # # # -# % setenv G4VIS_USE_DAWNFILE 1 # +# * Unnecessary # # # # ADDITIONAL NOTES: # -# * If you execute this macro plural times, all the views are # -# sequentially appended to the file "g4_00.eps". # -# For example if you execute it two times, a 6-page (3+3 page) # -# PostScript file is made. # # # ####################################################################### @@ -47,41 +39,23 @@ # Creation of a multi-page PostScript file with the DAWNFILE driver #################################################################### -# Invoke the DAWNFILE driver +# Invoke the DAWNFILE driver /vis/open DAWNFILE -# Set viewing parameters -/vis/viewer/reset -/vis/viewer/zoom 0.9 -/vis/viewer/viewpointThetaPhi 35 35 +# Add the world volume to the current scene +/vis/drawVolume -# Generate page 1: Absorber -/vis/scene/create -/vis/scene/add/volume Absorber -/vis/scene/add/axes 0 0 0 500 -/vis/scene/add/text 0 0 0 mm 30 -150 -200 Page1/3:Absorber -/vis/sceneHandler/attach -/vis/viewer/refresh -/vis/viewer/update +# Add trajectories to the current scene +# Note: This command is not necessary in exampleN03, +# since the C++ method DrawTrajectory() is +# described in the event action. +#/vis/scene/add/trajectories -# Generate page 2: Gap -/vis/scene/create -/vis/scene/add/volume Gap -/vis/scene/add/axes 0 0 0 500 -/vis/scene/add/text 0 0 0 mm 30 -100 -200 Page2/3:Gap -/vis/sceneHandler/attach -/vis/viewer/refresh -/vis/viewer/update +# Set camera +/vis/viewer/reset +/vis/viewer/zoom 1.5 +/vis/viewer/set/viewpointThetaPhi 70 20 -# Generate page 3: World -/vis/viewer/set/culling global false -/vis/scene/create -/vis/scene/add/volume -/vis/scene/add/axes 0 0 0 500 -/vis/scene/add/text 0 0 0 mm 50 -100 -200 Page3/3:world -/vis/sceneHandler/attach -/vis/viewer/refresh -/vis/viewer/update - -# Make the culling on for next visualization -/vis/viewer/set/culling global true +# Visualize events added to the current scene +/tracking/storeTrajectory 1 +/run/beamOn 3 diff --git a/examples/novice/N03/visTutor/exN03Vis9.mac b/examples/novice/N03/visTutor/exN03Vis9.mac new file mode 100644 index 0000000000..92735677d3 --- /dev/null +++ b/examples/novice/N03/visTutor/exN03Vis9.mac @@ -0,0 +1,87 @@ +####################################################################### +# MACRO FILE NAME: exN03Vis9.mac # +# # +# AUTHOR(S): Satoshi Tanaka # +# # +# DATE: # +# Nov 14, 2001 (renamed from exN03Vis8.mac) # +# Nov 07, 2001 # +# Sept 08-09, 2001 (at Hebden Bridge, UK) # +# June 20, 2001 # +# November 26, 2000 # +# October 17, 2000 # +# # +# CONTENTS: A macro to demonstrate creation of a "multi-page" # +# PostScript file # +# # +# USAGE: % setenv G4DAWNFILE_MAX_FILE_NUM 1 # +# % setenv DAWN_BATCH a # +# % gmake visclean # +# % $G4BINDIR/exampleN03 # +# Idle> /control/execute visTutor/exN03Vis9.mac # +# Idle> exit # +# % gv g4_00.eps # +# # +# Then click, "<<", ">>" etc to traverse pages # +# # +# REQUIRED PLATFORMS & SOFTWARES: Unix, X-window, # +# DAWN (version 3.85 or after) # +# gv (Ghostview), Tcl/Tk # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR INSTALLATION: # +# (See geant4/source/visualization/README for details.) # +# # +# * Unnecessary # +# # +# ENVIRONMENTAL VARIABLES (C-MACROS) FOR COMPILATION: # +# (See geant4/source/visualization/README for details.) # +# # +# * Unnecessary # +# # +# ADDITIONAL NOTES: # +# * If you execute this macro plural times, all the views are # +# sequentially appended to the file "g4_00.eps". # +# For example if you execute it two times, a 6-page (3+3 page) # +# PostScript file is made. # +# Unset environmental variables to initialize your environment: # +# # +# % unsetenv G4DAWNFILE_MAX_FILE_NUM # +# % unsetenv DAWN_BATCH # +# # +####################################################################### + +#################################################################### +# Creation of a multi-page PostScript file with the DAWNFILE driver +#################################################################### + +# Invoke the DAWNFILE driver +/vis/open DAWNFILE + +# Set viewing parameters +/vis/viewer/reset +/vis/viewer/zoom 0.9 +/vis/viewer/set/viewpointThetaPhi 35 35 + +# Generate page 1: Absorber +/vis/drawVolume Absorber +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 30 -150 -200 Page1/3:Absorber +/vis/viewer/flush + +# Generate page 2: Gap +/vis/drawVolume Gap +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 30 -100 -200 Page2/3:Gap +/vis/viewer/flush + +# Generate page 3: World +/vis/viewer/set/culling global false +/vis/drawVolume +/vis/scene/add/axes 0 0 0 500 mm +/vis/scene/add/text 0 0 0 mm 50 -100 -200 Page3/3:world +/vis/viewer/flush + +# Make the culling on for next visualization +# Note: You may also use "/vis/viewer/reset" +# for this initialization. +/vis/viewer/set/culling global true diff --git a/examples/novice/N04/History b/examples/novice/N04/History index 3a1eb0487d..28b9484500 100644 --- a/examples/novice/N04/History +++ b/examples/novice/N04/History @@ -1,4 +1,4 @@ -$Id: History,v 1.18 2001/03/06 10:11:20 kurasige Exp $ +$Id: History,v 1.19 2001/10/19 05:27:13 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -14,6 +14,10 @@ track of all tags. ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +Oct 19, 2001 Steve O'Neale (examples-V03-02-00) +- Update reference output + March 07 2001 H.Kurashige (exampleN04-V03-00-07) - Add G4MuonMinusCaptureAtRest in G4MuonPhysics diff --git a/examples/novice/N04/exampleN04.EMtest.large_N.out b/examples/novice/N04/exampleN04.EMtest.large_N.out index 508fc29f79..8f2c62d23d 100644 --- a/examples/novice/N04/exampleN04.EMtest.large_N.out +++ b/examples/novice/N04/exampleN04.EMtest.large_N.out @@ -1,5 +1,5 @@ ********************************************** - Geant4 version $Name: geant4-03-00-ref-03 $ + Geant4 version $Name: geant4-04-00 $ (15-Dec-2000) Copyright : Geant4 Collaboration ********************************************** diff --git a/examples/novice/N04/exampleN04.EMtest.out b/examples/novice/N04/exampleN04.EMtest.out index e2ed2ec461..0dc9a1d2bc 100644 --- a/examples/novice/N04/exampleN04.EMtest.out +++ b/examples/novice/N04/exampleN04.EMtest.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** MuonMinusCaptureAtRest is created @@ -10,7 +10,7 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. + Scattered gamma energy according Klein-Nishina. PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. @@ -32,11 +32,11 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. @@ -50,10 +50,10 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1000 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. @@ -70,21 +70,21 @@ msc: Tables of transport mean free paths. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 0 - 10 hits are stored in ExN04TrackerHitsCollection. + 11 hits are stored in ExN04TrackerHitsCollection. 4 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.343686 (GeV) + Total energy deposition in calorimeter : 0.337948 (GeV) 1 hits are stored in ExN04MuonHitsCollection. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 0 - 13 hits are stored in ExN04TrackerHitsCollection. - 16 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 8.03057 (GeV) + 24 hits are stored in ExN04TrackerHitsCollection. + 21 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 20.4442 (GeV) 1 hits are stored in ExN04MuonHitsCollection. Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 1 - 5 hits are stored in ExN04TrackerHitsCollection. - 10 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 1.07491 (GeV) + 24 hits are stored in ExN04TrackerHitsCollection. + 34 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 9.76921 (GeV) 1 hits are stored in ExN04MuonHitsCollection. diff --git a/examples/novice/N04/exampleN04.cc b/examples/novice/N04/exampleN04.cc index c422696497..26d63f84cd 100644 --- a/examples/novice/N04/exampleN04.cc +++ b/examples/novice/N04/exampleN04.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: exampleN04.cc,v 1.2.4.2 2001/06/28 20:18:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: exampleN04.cc,v 1.3 2001/07/11 09:58:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N04/exampleN04.out b/examples/novice/N04/exampleN04.out index 97976b8a5f..ef7cb80a7e 100644 --- a/examples/novice/N04/exampleN04.out +++ b/examples/novice/N04/exampleN04.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** MuonMinusCaptureAtRest is created @@ -10,7 +10,7 @@ phot: Total cross sections from a parametrisation. Good description from 10 KeV PhysicsTables from 50 keV to 50 MeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. + Scattered gamma energy according Klein-Nishina. PhysicsTables from 10 keV to 100 GeV in 100 bins. conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. @@ -32,11 +32,11 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. @@ -50,10 +50,10 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1000 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. @@ -67,13 +67,12 @@ msc: Tables of transport mean free paths. New model of MSC , computes the lateral displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -# Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 1 isolated muon found. >>> Event 0 - 149 hits are stored in ExN04TrackerHitsCollection. - 46 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.637807 (GeV) + 130 hits are stored in ExN04TrackerHitsCollection. + 56 hits are stored in ExN04CalorimeterHitsCollection. + Total energy deposition in calorimeter : 0.896933 (GeV) 1 hits are stored in ExN04MuonHitsCollection. Stage 0->1 : 0 hits found in the muon chamber. ++++++++ event aborted @@ -86,8 +85,7 @@ Stage 0->1 : 1 hits found in the muon chamber. Stage 1->2 : 0 isolated muon found. ++++++++ event aborted >>> Event 2 - 91 hits are stored in ExN04TrackerHitsCollection. + 84 hits are stored in ExN04TrackerHitsCollection. 13 hits are stored in ExN04CalorimeterHitsCollection. - Total energy deposition in calorimeter : 0.334183 (GeV) + Total energy deposition in calorimeter : 0.315841 (GeV) 1 hits are stored in ExN04MuonHitsCollection. -# diff --git a/examples/novice/N04/include/ExN04CalorimeterParametrisation.hh b/examples/novice/N04/include/ExN04CalorimeterParametrisation.hh index 435e817f03..bfab08a8f8 100644 --- a/examples/novice/N04/include/ExN04CalorimeterParametrisation.hh +++ b/examples/novice/N04/include/ExN04CalorimeterParametrisation.hh @@ -26,19 +26,21 @@ #include "globals.hh" #include "G4VPVParameterisation.hh" + class G4VPhysicalVolume; class G4Tubs; class ExN04CalorimeterParametrisation : public G4VPVParameterisation { public: + ExN04CalorimeterParametrisation(); - ~ExN04CalorimeterParametrisation(); - void ComputeTransformation - (const G4int copyNo,G4VPhysicalVolume *physVol) const; - void ComputeDimensions - (G4Tubs & calorimeterLayer, const G4int copyNo, - const G4VPhysicalVolume * physVol) const; + virtual ~ExN04CalorimeterParametrisation(); + void ComputeTransformation(const G4int copyNo, + G4VPhysicalVolume *physVol) const; + void ComputeDimensions( G4Tubs & calorimeterLayer, + const G4int copyNo, + const G4VPhysicalVolume * physVol) const; private: diff --git a/examples/novice/N04/include/ExN04EMPhysics.hh b/examples/novice/N04/include/ExN04EMPhysics.hh index b522d17e00..b4661a449d 100644 --- a/examples/novice/N04/include/ExN04EMPhysics.hh +++ b/examples/novice/N04/include/ExN04EMPhysics.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04EMPhysics.hh,v 1.1.2.1 2001/06/28 19:07:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04EMPhysics.hh,v 1.2 2001/07/11 09:58:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N04/include/ExN04GeneralPhysics.hh b/examples/novice/N04/include/ExN04GeneralPhysics.hh index 3ec5071efe..213406628f 100644 --- a/examples/novice/N04/include/ExN04GeneralPhysics.hh +++ b/examples/novice/N04/include/ExN04GeneralPhysics.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04GeneralPhysics.hh,v 1.1.2.1 2001/06/28 19:07:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04GeneralPhysics.hh,v 1.2 2001/07/11 09:58:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N04/include/ExN04HadronPhysics.hh b/examples/novice/N04/include/ExN04HadronPhysics.hh index 55c4271057..5715e6fc75 100644 --- a/examples/novice/N04/include/ExN04HadronPhysics.hh +++ b/examples/novice/N04/include/ExN04HadronPhysics.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04HadronPhysics.hh,v 1.1.2.1 2001/06/28 19:07:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04HadronPhysics.hh,v 1.2 2001/07/11 09:58:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N04/include/ExN04IonPhysics.hh b/examples/novice/N04/include/ExN04IonPhysics.hh index d38cdac1c2..977faef5e3 100644 --- a/examples/novice/N04/include/ExN04IonPhysics.hh +++ b/examples/novice/N04/include/ExN04IonPhysics.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04IonPhysics.hh,v 1.1.2.1 2001/06/28 19:07:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04IonPhysics.hh,v 1.2 2001/07/11 09:58:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N04/include/ExN04MuonPhysics.hh b/examples/novice/N04/include/ExN04MuonPhysics.hh index e5e89ab279..517e4ef936 100644 --- a/examples/novice/N04/include/ExN04MuonPhysics.hh +++ b/examples/novice/N04/include/ExN04MuonPhysics.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04MuonPhysics.hh,v 1.2.2.1 2001/06/28 19:07:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04MuonPhysics.hh,v 1.3 2001/07/11 09:58:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N04/include/ExN04TrackerParametrisation.hh b/examples/novice/N04/include/ExN04TrackerParametrisation.hh index 16b87365af..dc1fa0102e 100644 --- a/examples/novice/N04/include/ExN04TrackerParametrisation.hh +++ b/examples/novice/N04/include/ExN04TrackerParametrisation.hh @@ -26,19 +26,21 @@ #include "globals.hh" #include "G4VPVParameterisation.hh" + class G4VPhysicalVolume; class G4Tubs; class ExN04TrackerParametrisation : public G4VPVParameterisation { public: + ExN04TrackerParametrisation(); - ~ExN04TrackerParametrisation(); - void ComputeTransformation - (const G4int copyNo,G4VPhysicalVolume *physVol) const; - void ComputeDimensions - (G4Tubs & trackerLayer, const G4int copyNo, - const G4VPhysicalVolume * physVol) const; + virtual ~ExN04TrackerParametrisation(); + void ComputeTransformation(const G4int copyNo, + G4VPhysicalVolume *physVol) const; + void ComputeDimensions( G4Tubs & trackerLayer, + const G4int copyNo, + const G4VPhysicalVolume * physVol) const; private: diff --git a/examples/novice/N04/src/ExN04CalorimeterHit.cc b/examples/novice/N04/src/ExN04CalorimeterHit.cc index 180f378bc4..4b43319609 100644 --- a/examples/novice/N04/src/ExN04CalorimeterHit.cc +++ b/examples/novice/N04/src/ExN04CalorimeterHit.cc @@ -31,10 +31,10 @@ G4Allocator ExN04CalorimeterHitAllocator; ExN04CalorimeterHit::ExN04CalorimeterHit() -{pLogV=NULL;} +{pLogV=0;} ExN04CalorimeterHit::ExN04CalorimeterHit(G4LogicalVolume* logVol,G4int z,G4int phi) -:pLogV(logVol),ZCellID(z),PhiCellID(phi) +: ZCellID(z), PhiCellID(phi), pLogV(logVol) {;} ExN04CalorimeterHit::~ExN04CalorimeterHit() diff --git a/examples/novice/N04/src/ExN04CalorimeterROGeometry.cc b/examples/novice/N04/src/ExN04CalorimeterROGeometry.cc index 79957f1f35..5710bc97a9 100644 --- a/examples/novice/N04/src/ExN04CalorimeterROGeometry.cc +++ b/examples/novice/N04/src/ExN04CalorimeterROGeometry.cc @@ -94,8 +94,8 @@ G4VPhysicalVolume* ExN04CalorimeterROGeometry::Build() caloRing_dz, caloRing_sphi, caloRing_dphi); G4LogicalVolume * caloROcellLog = new G4LogicalVolume(caloROcellTub, dummyMat, "caloROcellLogical",0,0,0); - G4VPhysicalVolume * caloROcellPhys - = new G4PVReplica("caloROcellPhysical", caloROcellLog, caloROphiDivisionPhys, +// G4VPhysicalVolume * caloROcellPhys = + new G4PVReplica("caloROcellPhysical", caloROcellLog, caloROphiDivisionPhys, kZAxis, segmentsinZ,2.*caloRing_dz); diff --git a/examples/novice/N04/src/ExN04CalorimeterSD.cc b/examples/novice/N04/src/ExN04CalorimeterSD.cc index 3ef9c96cad..c2df7f35ce 100644 --- a/examples/novice/N04/src/ExN04CalorimeterSD.cc +++ b/examples/novice/N04/src/ExN04CalorimeterSD.cc @@ -62,7 +62,7 @@ G4bool ExN04CalorimeterSD::ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist) G4VPhysicalVolume* physVol = ROhist->GetVolume(); //ROhist->MoveUpHistory(); - G4VPhysicalVolume* mothVol = ROhist->GetVolume(1); + //G4VPhysicalVolume* mothVol = ROhist->GetVolume(1); int copyIDinZ = ROhist->GetReplicaNumber(); int copyIDinPhi = ROhist->GetReplicaNumber(1); diff --git a/examples/novice/N04/src/ExN04DetectorConstruction.cc b/examples/novice/N04/src/ExN04DetectorConstruction.cc index 1cdaddbd89..7ed0cc02dd 100644 --- a/examples/novice/N04/src/ExN04DetectorConstruction.cc +++ b/examples/novice/N04/src/ExN04DetectorConstruction.cc @@ -160,8 +160,8 @@ G4VPhysicalVolume* ExN04DetectorConstruction::Construct() G4VPVParameterisation * trackerParam = new ExN04TrackerParametrisation; // dummy value : kXAxis -- modified by parameterised volume - G4VPhysicalVolume *trackerLayer_phys - = new G4PVParameterised("trackerLayer_phys",trackerLayer_log,tracker_phys, + // G4VPhysicalVolume *trackerLayer_phys = + new G4PVParameterised("trackerLayer_phys",trackerLayer_log,tracker_phys, kXAxis, notrkLayers, trackerParam); G4VisAttributes* trackerLayer_logVisAtt = new G4VisAttributes(G4Colour(0.5,0.0,1.0)); @@ -193,8 +193,8 @@ G4VPhysicalVolume* ExN04DetectorConstruction::Construct() G4VPVParameterisation * calorimeterParam = new ExN04CalorimeterParametrisation; // dummy value : kXAxis -- modified by parameterised volume - G4VPhysicalVolume * caloLayer_phys - = new G4PVParameterised("caloLayer_phys",caloLayer_log,calorimeter_phys, + // G4VPhysicalVolume * caloLayer_phys = + new G4PVParameterised("caloLayer_phys",caloLayer_log,calorimeter_phys, kXAxis, nocaloLayers, calorimeterParam); G4VisAttributes* caloLayer_logVisAtt = new G4VisAttributes(G4Colour(0.7,1.0,0.0)); diff --git a/examples/novice/N04/src/ExN04EMPhysics.cc b/examples/novice/N04/src/ExN04EMPhysics.cc index 7c95477548..81bacb474e 100644 --- a/examples/novice/N04/src/ExN04EMPhysics.cc +++ b/examples/novice/N04/src/ExN04EMPhysics.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04EMPhysics.cc,v 1.1.2.1 2001/06/28 19:07:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04EMPhysics.cc,v 1.2 2001/07/11 09:58:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N04/src/ExN04EventAction.cc b/examples/novice/N04/src/ExN04EventAction.cc index ea0f0fdfcd..5a1bdfbac9 100644 --- a/examples/novice/N04/src/ExN04EventAction.cc +++ b/examples/novice/N04/src/ExN04EventAction.cc @@ -72,9 +72,9 @@ void ExN04EventAction::EndOfEventAction(const G4Event* evt) if(trackerCollID<0||calorimeterCollID<0||muonCollID<0) return; G4HCofThisEvent * HCE = evt->GetHCofThisEvent(); - ExN04TrackerHitsCollection* THC = NULL; - ExN04CalorimeterHitsCollection* CHC = NULL; - ExN04MuonHitsCollection* MHC = NULL; + ExN04TrackerHitsCollection* THC = 0; + ExN04CalorimeterHitsCollection* CHC = 0; + ExN04MuonHitsCollection* MHC = 0; if(HCE) { THC = (ExN04TrackerHitsCollection*)(HCE->GetHC(trackerCollID)); diff --git a/examples/novice/N04/src/ExN04GeneralPhysics.cc b/examples/novice/N04/src/ExN04GeneralPhysics.cc index 4203e213db..6a7d7137a3 100644 --- a/examples/novice/N04/src/ExN04GeneralPhysics.cc +++ b/examples/novice/N04/src/ExN04GeneralPhysics.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04GeneralPhysics.cc,v 1.1.2.1 2001/06/28 19:07:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04GeneralPhysics.cc,v 1.2 2001/07/11 09:58:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N04/src/ExN04HadronPhysics.cc b/examples/novice/N04/src/ExN04HadronPhysics.cc index 5f22a66263..4261a135e9 100644 --- a/examples/novice/N04/src/ExN04HadronPhysics.cc +++ b/examples/novice/N04/src/ExN04HadronPhysics.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04HadronPhysics.cc,v 1.1.2.1 2001/06/28 19:07:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04HadronPhysics.cc,v 1.2 2001/07/11 09:58:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N04/src/ExN04IonPhysics.cc b/examples/novice/N04/src/ExN04IonPhysics.cc index 3d454a621a..31d7f21d45 100644 --- a/examples/novice/N04/src/ExN04IonPhysics.cc +++ b/examples/novice/N04/src/ExN04IonPhysics.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04IonPhysics.cc,v 1.1.2.1 2001/06/28 19:07:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04IonPhysics.cc,v 1.2 2001/07/11 09:58:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N04/src/ExN04MuonPhysics.cc b/examples/novice/N04/src/ExN04MuonPhysics.cc index f8f71ca125..3704b20be7 100644 --- a/examples/novice/N04/src/ExN04MuonPhysics.cc +++ b/examples/novice/N04/src/ExN04MuonPhysics.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04MuonPhysics.cc,v 1.2.2.1 2001/06/28 19:07:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04MuonPhysics.cc,v 1.3 2001/07/11 09:58:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N04/src/ExN04MuonSD.cc b/examples/novice/N04/src/ExN04MuonSD.cc index c5e5f35a92..b464103b89 100644 --- a/examples/novice/N04/src/ExN04MuonSD.cc +++ b/examples/novice/N04/src/ExN04MuonSD.cc @@ -51,7 +51,6 @@ void ExN04MuonSD::Initialize(G4HCofThisEvent*HCE) G4bool ExN04MuonSD::ProcessHits(G4Step*aStep,G4TouchableHistory*ROhist) { - G4Track* aTrack = aStep->GetTrack(); G4double edep = aStep->GetTotalEnergyDeposit(); if(edep==0.) return true; diff --git a/examples/novice/N04/src/ExN04PhysicsList.cc b/examples/novice/N04/src/ExN04PhysicsList.cc index 928a672345..a0f1b1a6f0 100644 --- a/examples/novice/N04/src/ExN04PhysicsList.cc +++ b/examples/novice/N04/src/ExN04PhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN04PhysicsList.cc,v 1.9.2.1 2001/06/28 19:07:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN04PhysicsList.cc,v 1.10 2001/07/11 09:58:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N04/src/ExN04StackingAction.cc b/examples/novice/N04/src/ExN04StackingAction.cc index 3c843ddf03..cbe49ae54f 100644 --- a/examples/novice/N04/src/ExN04StackingAction.cc +++ b/examples/novice/N04/src/ExN04StackingAction.cc @@ -34,7 +34,7 @@ #include "G4ios.hh" ExN04StackingAction::ExN04StackingAction() -:stage(0),trkHits(NULL),muonHits(NULL) + : trkHits(0), muonHits(0), stage(0) { angRoI = 30.0*deg; reqMuon = 2; @@ -119,7 +119,7 @@ G4VHitsCollection* ExN04StackingAction::GetCollection(G4String colName) G4HCofThisEvent* HCE = currentEvent->GetHCofThisEvent(); return HCE->GetHC(colID); } - return NULL; + return 0; } void ExN04StackingAction::NewStage() @@ -196,8 +196,8 @@ void ExN04StackingAction::NewStage() void ExN04StackingAction::PrepareNewEvent() { stage = 0; - trkHits = NULL; - muonHits = NULL; + trkHits = 0; + muonHits = 0; } diff --git a/examples/novice/N04/src/ExN04SteppingAction.cc b/examples/novice/N04/src/ExN04SteppingAction.cc index dfbb1ce4d9..83ce56ad7c 100644 --- a/examples/novice/N04/src/ExN04SteppingAction.cc +++ b/examples/novice/N04/src/ExN04SteppingAction.cc @@ -39,7 +39,6 @@ ExN04SteppingAction::~ExN04SteppingAction() void ExN04SteppingAction::UserSteppingAction(const G4Step * theStep) { - G4SteppingManager * SM = fpSteppingManager; G4Track * theTrack = theStep->GetTrack(); // check if it is alive diff --git a/examples/novice/N05/History b/examples/novice/N05/History index f963eab469..b74391b107 100644 --- a/examples/novice/N05/History +++ b/examples/novice/N05/History @@ -1,4 +1,4 @@ -$Id: History,v 1.11 2001/04/27 12:50:51 gcosmo Exp $ +$Id: History,v 1.14 2001/11/08 11:21:29 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,16 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Nov 8, 2001 Radovan Chytracek (exampleN05-V03-02-00) +- RC dev changes propagated to the main trunk HEAD revision + +Nov 7, 2001 Marc Verderi (exampleN05-RC-dev) +- changes to be compatible with RC dev: the branch tag is + dev_rc_touchables_branch_start + +Oct 19, 2001 Steve O'Neale (examples-V03-02-00) +- Update reference output + 27th April 2001 Gabriele Cosmo (exampleN05-V03-01-00) - Migrated to STL vector. Removed RW wrappers. diff --git a/examples/novice/N05/exampleN05.cc b/examples/novice/N05/exampleN05.cc index 8cc65a036c..e76eb01b03 100644 --- a/examples/novice/N05/exampleN05.cc +++ b/examples/novice/N05/exampleN05.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: exampleN05.cc,v 1.8.2.2 2001/06/28 20:18:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: exampleN05.cc,v 1.9 2001/07/11 09:58:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N05/exampleN05.out b/examples/novice/N05/exampleN05.out index 852e759f6f..9ef8b0521e 100644 --- a/examples/novice/N05/exampleN05.out +++ b/examples/novice/N05/exampleN05.out @@ -1,7 +1,7 @@ RunManager construction starting.... ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** @@ -13,7 +13,7 @@ conv: Total cross sections from a parametrisation. Good description from 1.5 Me PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. compt: Total cross sections from a parametrisation. Good description from 10 KeV to (100/Z) GeV. - Scattered gamma energy according Klein-Nishina. + Scattered gamma energy according Klein-Nishina. PhysicsTables from 10 keV to 100 GeV in 100 bins. phot: Total cross sections from a parametrisation. Good description from 10 KeV to 50 MeV for all Z @@ -35,7 +35,7 @@ eBrem: Total cross sections from a NEW parametrisation based on the EEDL data l Gamma energy sampled from a parametrised formula. PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. @@ -49,10 +49,10 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1000 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. msc: Tables of transport mean free paths. New model of MSC , computes the lateral @@ -67,300 +67,329 @@ MuPairProd: theoretical cross sections Good description up to 1000 PeV. PhysicsTables from 1 keV to 1000 PeV in 150 bins. Closing FastSimulation -# exampleN05.in -# -# -#/tracking/verbose 1 -# +Instantiating Visualization Manager....... +Visualization Manager instantiating... +Visualization Manager initialising... +Registering graphics systems... + +You have successfully chosen to use the following graphics systems. +Current available graphics systems are: + ASCIITree (ATree) + DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + G4HepRepFile (HepRepFile) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) ### Run 0 start. +ExN05EMShowerModel::DoIt >>> Event 0 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.989895 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 1 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999921 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 2 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999906 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 3 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999915 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 4 9 hits are stored in EM ExN05CalorimeterHitsCollection. Total energy deposition in EM calorimeter crytals : 0.989909 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) -number of event = 5 -# -### Run 1 start. ->>> Event 0 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999923 (GeV) +ExN05EMShowerModel::DoIt +>>> Event 1 + 9 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999906 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 1 - 5 hits are stored in EM ExN05CalorimeterHitsCollection. +ExN05EMShowerModel::DoIt +>>> Event 2 + 12 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999435 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt +>>> Event 3 + 11 hits are stored in EM ExN05CalorimeterHitsCollection. Total energy deposition in EM calorimeter crytals : 0.99992 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 2 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999927 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 3 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999907 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt >>> Event 4 - 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999923 (GeV) + 11 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999908 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 -# -### Run 2 start. +### Run 1 start. +ExN05EMShowerModel::DoIt >>> Event 0 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999894 (GeV) + Total energy deposition in EM calorimeter crytals : 0.999922 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt >>> Event 1 - 8 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999907 (GeV) + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999902 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt >>> Event 2 - 6 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999913 (GeV) + 8 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999921 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt >>> Event 3 + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999918 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt +>>> Event 4 10 hits are stored in EM ExN05CalorimeterHitsCollection. Total energy deposition in EM calorimeter crytals : 0.999926 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 4 +number of event = 5 +### Run 2 start. +ExN05EMShowerModel::DoIt +>>> Event 0 + 7 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999911 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt +>>> Event 1 + 9 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999913 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt +>>> Event 2 8 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999919 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt +>>> Event 3 + 10 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999927 (GeV) + 0 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt +>>> Event 4 + 9 hits are stored in EM ExN05CalorimeterHitsCollection. Total energy deposition in EM calorimeter crytals : 0.999931 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 -# ### Run 3 start. +ExN05EMShowerModel::DoIt >>> Event 0 - 9 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999921 (GeV) + 12 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.989909 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt >>> Event 1 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999905 (GeV) + 9 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999768 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt >>> Event 2 - 11 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999905 (GeV) + 12 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999895 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt >>> Event 3 10 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.989858 (GeV) + Total energy deposition in EM calorimeter crytals : 0.999914 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) +ExN05EMShowerModel::DoIt >>> Event 4 - 12 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.999918 (GeV) + 9 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999912 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) number of event = 5 -# -# -# -# ### Run 4 start. +ExN05PionShowerModel::DoIt >>> Event 0 - 12 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.299967 (GeV) - 12 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.499946 (GeV) + 8 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.219987 (GeV) + 8 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.399976 (GeV) +ExN05PionShowerModel::DoIt >>> Event 1 - 17 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.519957 (GeV) + 16 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.419975 (GeV) + 9 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.759954 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 2 + 22 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.639962 (GeV) + 11 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 1.15993 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 3 + 25 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.839951 (GeV) + 14 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 1.61991 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 4 + 28 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999941 (GeV) 15 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.919926 (GeV) ->>> Event 2 - 19 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.639947 (GeV) - 17 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 1.2999 (GeV) ->>> Event 3 - 21 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.799939 (GeV) - 17 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 1.75987 (GeV) ->>> Event 4 - 23 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.95993 (GeV) - 17 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 2.07985 (GeV) + Total energy deposition in HAD calorimeter towers : 2.09988 (GeV) number of event = 5 -# ### Run 5 start. +ExN05PionShowerModel::DoIt >>> Event 0 - 24 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.979929 (GeV) - 29 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 2.93981 (GeV) ->>> Event 1 - 24 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.979929 (GeV) - 30 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 3.79977 (GeV) ->>> Event 2 - 26 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.01993 (GeV) - 31 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 4.61973 (GeV) ->>> Event 3 29 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.07992 (GeV) - 32 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 5.47969 (GeV) ->>> Event 4 + Total energy deposition in EM calorimeter crytals : 1.03994 (GeV) + 28 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 2.89983 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 1 + 29 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.03994 (GeV) + 30 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 3.75977 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 2 30 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.09992 (GeV) - 35 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 6.25964 (GeV) -number of event = 5 -# -### Run 6 start. ->>> Event 0 - 31 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.11992 (GeV) - 48 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 7.1796 (GeV) ->>> Event 1 - 34 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.17992 (GeV) - 53 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 8.01956 (GeV) ->>> Event 2 - 36 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.21992 (GeV) - 53 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 8.91952 (GeV) ->>> Event 3 - 36 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.21992 (GeV) - 56 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 9.79948 (GeV) ->>> Event 4 - 36 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.21992 (GeV) - 57 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 10.7194 (GeV) -number of event = 5 -# -### Run 7 start. ->>> Event 0 - 48 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.4799 (GeV) - 64 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 11.1194 (GeV) ->>> Event 1 - 52 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.59989 (GeV) - 69 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 11.6194 (GeV) ->>> Event 2 - 55 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.79988 (GeV) - 69 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 12.0393 (GeV) ->>> Event 3 - 56 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 1.91987 (GeV) - 69 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 12.5993 (GeV) ->>> Event 4 - 60 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 2.05987 (GeV) - 71 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 13.1393 (GeV) -number of event = 5 -# -# -# switch off Fast Simulation -# -# -# -# switch off UserLimits -# -### Run 8 start. ->>> Event 0 - 32 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.994625 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 1 - 39 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.995765 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 2 - 36 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.990406 (GeV) - 1 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.00520094 (GeV) + Total energy deposition in EM calorimeter crytals : 1.07994 (GeV) + 32 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 4.61972 (GeV) +ExN05PionShowerModel::DoIt >>> Event 3 33 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.995879 (GeV) + Total energy deposition in EM calorimeter crytals : 1.15993 (GeV) + 33 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 5.41968 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 4 + 35 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.19993 (GeV) + 36 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 6.23958 (GeV) +number of event = 5 +### Run 6 start. +ExN05PionShowerModel::DoIt +>>> Event 0 + 37 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.23993 (GeV) + 50 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 7.07954 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 1 + 39 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.27992 (GeV) + 55 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 7.97949 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 2 + 43 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.35992 (GeV) + 55 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 8.77944 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 3 + 44 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.37992 (GeV) + 56 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 9.67939 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 4 + 47 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.43991 (GeV) + 56 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 10.5793 (GeV) +number of event = 5 +### Run 7 start. +ExN05PionShowerModel::DoIt +>>> Event 0 + 52 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.5599 (GeV) + 64 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 11.0593 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 1 + 58 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.6799 (GeV) + 65 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 11.6793 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 2 + 62 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 1.83989 (GeV) + 66 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 12.1992 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 3 + 67 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 2.01988 (GeV) + 67 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 12.6992 (GeV) +ExN05PionShowerModel::DoIt +>>> Event 4 + 71 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 2.23986 (GeV) + 69 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 13.1392 (GeV) +number of event = 5 +### Run 8 start. +>>> Event 0 + 38 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.993957 (GeV) + 3 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.0046007 (GeV) +>>> Event 1 + 45 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.994999 (GeV) + 3 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.00182995 (GeV) +>>> Event 2 + 39 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.991808 (GeV) + 1 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.00358799 (GeV) +>>> Event 3 + 38 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.990201 (GeV) + 2 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.00473796 (GeV) +>>> Event 4 + 27 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.990314 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) ->>> Event 4 - 49 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.991912 (GeV) - 1 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.00576664 (GeV) number of event = 5 -# -# switch on UserLimits -# ### Run 9 start. >>> Event 0 22 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.99602 (GeV) + Total energy deposition in EM calorimeter crytals : 0.999923 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 1 - 17 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.99114 (GeV) + 28 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.999917 (GeV) 0 hits are stored in HAD ExN05CalorimeterHitsCollection. Total energy deposition in HAD calorimeter towers : 0 (GeV) >>> Event 2 - 24 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.985522 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) + 21 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.994264 (GeV) + 1 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.00351956 (GeV) >>> Event 3 26 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.998598 (GeV) - 0 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0 (GeV) + Total energy deposition in EM calorimeter crytals : 0.99804 (GeV) + 2 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.0018661 (GeV) >>> Event 4 - 19 hits are stored in EM ExN05CalorimeterHitsCollection. - Total energy deposition in EM calorimeter crytals : 0.997669 (GeV) - 1 hits are stored in HAD ExN05CalorimeterHitsCollection. - Total energy deposition in HAD calorimeter towers : 0.00115066 (GeV) + 24 hits are stored in EM ExN05CalorimeterHitsCollection. + Total energy deposition in EM calorimeter crytals : 0.988098 (GeV) + 2 hits are stored in HAD ExN05CalorimeterHitsCollection. + Total energy deposition in HAD calorimeter towers : 0.00430555 (GeV) number of event = 5 -# +Graphics systems deleted. +Visualization Manager deleting... diff --git a/examples/novice/N05/include/ExN05CalorimeterHit.hh b/examples/novice/N05/include/ExN05CalorimeterHit.hh index e7eaa7f224..bece4021cd 100644 --- a/examples/novice/N05/include/ExN05CalorimeterHit.hh +++ b/examples/novice/N05/include/ExN05CalorimeterHit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05CalorimeterHit.hh,v 1.3.4.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05CalorimeterHit.hh,v 1.4 2001/07/11 09:58:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05CalorimeterHit_h diff --git a/examples/novice/N05/include/ExN05CalorimeterSD.hh b/examples/novice/N05/include/ExN05CalorimeterSD.hh index 2c89a7d111..112b224bb5 100644 --- a/examples/novice/N05/include/ExN05CalorimeterSD.hh +++ b/examples/novice/N05/include/ExN05CalorimeterSD.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05CalorimeterSD.hh,v 1.2.4.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05CalorimeterSD.hh,v 1.3 2001/07/11 09:58:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05CalorimeterSD_h diff --git a/examples/novice/N05/include/ExN05DetectorConstruction.hh b/examples/novice/N05/include/ExN05DetectorConstruction.hh index 281f15e335..7dbb32c175 100644 --- a/examples/novice/N05/include/ExN05DetectorConstruction.hh +++ b/examples/novice/N05/include/ExN05DetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05DetectorConstruction.hh,v 1.2.4.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05DetectorConstruction.hh,v 1.3 2001/07/11 09:58:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05DetectorConstruction_h #define ExN05DetectorConstruction_h 1 diff --git a/examples/novice/N05/include/ExN05DetectorMessenger.hh b/examples/novice/N05/include/ExN05DetectorMessenger.hh index efb878dd89..4687395668 100644 --- a/examples/novice/N05/include/ExN05DetectorMessenger.hh +++ b/examples/novice/N05/include/ExN05DetectorMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05DetectorMessenger.hh,v 1.2.4.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05DetectorMessenger.hh,v 1.3 2001/07/11 09:58:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N05/include/ExN05EMShowerModel.hh b/examples/novice/N05/include/ExN05EMShowerModel.hh index 19a865f535..ba3f60677b 100644 --- a/examples/novice/N05/include/ExN05EMShowerModel.hh +++ b/examples/novice/N05/include/ExN05EMShowerModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05EMShowerModel.hh,v 1.4.2.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05EMShowerModel.hh,v 1.6 2001/11/08 10:16:03 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //---------------------------------------------- @@ -37,8 +37,7 @@ #include "G4VFastSimulationModel.hh" #include "G4Step.hh" -#include "G4VTouchable.hh" -#include "G4TouchableHistory.hh" +#include "G4TouchableHandle.hh" #include "g4std/vector" class ExN05EMShowerModel : public G4VFastSimulationModel @@ -68,13 +67,19 @@ private: void FillFakeStep(const ExN05EnergySpot &eSpot); void Explode(const G4FastTrack&); void BuildDetectorResponse(); - G4Step *fFakeStep; - G4StepPoint *fFakePreStepPoint, *fFakePostStepPoint; - G4VTouchable*fpTouchable; - G4Navigator *fpNavigator; - G4bool fNaviSetup; + +private: + G4Step *fFakeStep; + G4StepPoint *fFakePreStepPoint, *fFakePostStepPoint; + G4TouchableHandle fTouchableHandle; + G4Navigator *fpNavigator; + G4bool fNaviSetup; G4std::vector feSpotList; }; #endif + + + + diff --git a/examples/novice/N05/include/ExN05EnergySpot.hh b/examples/novice/N05/include/ExN05EnergySpot.hh index b164d6802d..1464208b0e 100644 --- a/examples/novice/N05/include/ExN05EnergySpot.hh +++ b/examples/novice/N05/include/ExN05EnergySpot.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05EnergySpot.hh,v 1.4.2.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05EnergySpot.hh,v 1.6 2001/11/05 08:24:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05EnergySpot_h #define ExN05EnergySpot_h @@ -49,7 +49,7 @@ public: } // Draw: - void Draw(G4Colour* color = NULL); + void Draw(G4Colour* color = 0); // Print: void Print(); diff --git a/examples/novice/N05/include/ExN05EventAction.hh b/examples/novice/N05/include/ExN05EventAction.hh index 03dc96a327..21e06a5917 100644 --- a/examples/novice/N05/include/ExN05EventAction.hh +++ b/examples/novice/N05/include/ExN05EventAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05EventAction.hh,v 1.3.4.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05EventAction.hh,v 1.4 2001/07/11 09:58:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05EventAction_h diff --git a/examples/novice/N05/include/ExN05EventActionMessenger.hh b/examples/novice/N05/include/ExN05EventActionMessenger.hh index 95099fb448..d115159537 100644 --- a/examples/novice/N05/include/ExN05EventActionMessenger.hh +++ b/examples/novice/N05/include/ExN05EventActionMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05EventActionMessenger.hh,v 1.2.4.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05EventActionMessenger.hh,v 1.3 2001/07/11 09:58:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05EventActionMessenger_h diff --git a/examples/novice/N05/include/ExN05MaxTimeCuts.hh b/examples/novice/N05/include/ExN05MaxTimeCuts.hh index 2d62d79d5e..000169cd92 100644 --- a/examples/novice/N05/include/ExN05MaxTimeCuts.hh +++ b/examples/novice/N05/include/ExN05MaxTimeCuts.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05MaxTimeCuts.hh,v 1.3.4.2 2001/06/28 20:18:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05MaxTimeCuts.hh,v 1.4 2001/07/11 09:58:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/include/ExN05MinEkineCuts.hh b/examples/novice/N05/include/ExN05MinEkineCuts.hh index f0b93f3ca4..0b0d1421b7 100644 --- a/examples/novice/N05/include/ExN05MinEkineCuts.hh +++ b/examples/novice/N05/include/ExN05MinEkineCuts.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05MinEkineCuts.hh,v 1.3.4.2 2001/06/28 20:18:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05MinEkineCuts.hh,v 1.4 2001/07/11 09:58:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/include/ExN05MinRangeCuts.hh b/examples/novice/N05/include/ExN05MinRangeCuts.hh index 5146893d58..69c62434ed 100644 --- a/examples/novice/N05/include/ExN05MinRangeCuts.hh +++ b/examples/novice/N05/include/ExN05MinRangeCuts.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05MinRangeCuts.hh,v 1.3.4.2 2001/06/28 20:18:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05MinRangeCuts.hh,v 1.4 2001/07/11 09:58:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/include/ExN05PhysicsList.hh b/examples/novice/N05/include/ExN05PhysicsList.hh index 5726e46014..fe05efc879 100644 --- a/examples/novice/N05/include/ExN05PhysicsList.hh +++ b/examples/novice/N05/include/ExN05PhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05PhysicsList.hh,v 1.5.4.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05PhysicsList.hh,v 1.6 2001/07/11 09:58:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // #ifndef ExN05PhysicsList_h diff --git a/examples/novice/N05/include/ExN05PiModel.hh b/examples/novice/N05/include/ExN05PiModel.hh index 594ae49281..b842a86674 100644 --- a/examples/novice/N05/include/ExN05PiModel.hh +++ b/examples/novice/N05/include/ExN05PiModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05PiModel.hh,v 1.2.4.1 2001/06/28 19:07:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05PiModel.hh,v 1.3 2001/07/11 09:58:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //---------------------------------------- diff --git a/examples/novice/N05/include/ExN05PionShowerModel.hh b/examples/novice/N05/include/ExN05PionShowerModel.hh index 943a076180..64d047443a 100644 --- a/examples/novice/N05/include/ExN05PionShowerModel.hh +++ b/examples/novice/N05/include/ExN05PionShowerModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05PionShowerModel.hh,v 1.4.2.1 2001/06/28 19:07:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05PionShowerModel.hh,v 1.6 2001/11/08 10:16:04 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //---------------------------------------------- @@ -35,8 +35,7 @@ #include "G4VFastSimulationModel.hh" #include "G4Step.hh" -#include "G4VTouchable.hh" -#include "G4TouchableHistory.hh" +#include "G4TouchableHandle.hh" #include "g4std/vector" class ExN05PionShowerModel : public G4VFastSimulationModel @@ -66,11 +65,13 @@ private: void FillFakeStep(const ExN05EnergySpot &eSpot); void Explode(const G4FastTrack&); void BuildDetectorResponse(); - G4Step *fFakeStep; - G4StepPoint *fFakePreStepPoint, *fFakePostStepPoint; - G4VTouchable*fpTouchable; - G4Navigator *fpNavigator; - G4bool fNaviSetup; + +private: + G4Step *fFakeStep; + G4StepPoint *fFakePreStepPoint, *fFakePostStepPoint; + G4TouchableHandle fTouchableHandle; + G4Navigator *fpNavigator; + G4bool fNaviSetup; G4std::vector feSpotList; diff --git a/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh b/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh index fb2f73dca1..e0919c56cc 100644 --- a/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh +++ b/examples/novice/N05/include/ExN05PrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05PrimaryGeneratorAction.hh,v 1.2.4.1 2001/06/28 19:07:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05PrimaryGeneratorAction.hh,v 1.3 2001/07/11 09:58:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05PrimaryGeneratorAction_h diff --git a/examples/novice/N05/include/ExN05RunAction.hh b/examples/novice/N05/include/ExN05RunAction.hh index d572fa14b1..78f8b2c797 100644 --- a/examples/novice/N05/include/ExN05RunAction.hh +++ b/examples/novice/N05/include/ExN05RunAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05RunAction.hh,v 1.6.4.1 2001/06/28 19:07:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05RunAction.hh,v 1.7 2001/07/11 09:58:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05RunAction_h diff --git a/examples/novice/N05/include/ExN05SpecialCuts.hh b/examples/novice/N05/include/ExN05SpecialCuts.hh index 7b2062a52a..7388412a7f 100644 --- a/examples/novice/N05/include/ExN05SpecialCuts.hh +++ b/examples/novice/N05/include/ExN05SpecialCuts.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05SpecialCuts.hh,v 1.3.4.2 2001/06/28 20:18:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05SpecialCuts.hh,v 1.5 2001/11/05 08:24:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -69,7 +69,7 @@ class ExN05SpecialCuts : public G4VProcess virtual G4VParticleChange* AtRestDoIt( const G4Track& , const G4Step& - ){return NULL;}; + ){return 0;}; // no operation in AlongStepGPIL virtual G4double AlongStepGetPhysicalInteractionLength( @@ -84,7 +84,7 @@ class ExN05SpecialCuts : public G4VProcess virtual G4VParticleChange* AlongStepDoIt( const G4Track& , const G4Step& - ) {return NULL;}; + ) {return 0;}; private: diff --git a/examples/novice/N05/include/ExN05SteppingAction.hh b/examples/novice/N05/include/ExN05SteppingAction.hh index 0de89a8f2f..dc75e3eb64 100644 --- a/examples/novice/N05/include/ExN05SteppingAction.hh +++ b/examples/novice/N05/include/ExN05SteppingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05SteppingAction.hh,v 1.3.4.1 2001/06/28 19:07:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05SteppingAction.hh,v 1.4 2001/07/11 09:58:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05SteppingAction_h diff --git a/examples/novice/N05/include/ExN05SteppingActionMessenger.hh b/examples/novice/N05/include/ExN05SteppingActionMessenger.hh index 2b52227218..a9e091e117 100644 --- a/examples/novice/N05/include/ExN05SteppingActionMessenger.hh +++ b/examples/novice/N05/include/ExN05SteppingActionMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05SteppingActionMessenger.hh,v 1.2.4.1 2001/06/28 19:07:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05SteppingActionMessenger.hh,v 1.3 2001/07/11 09:58:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef ExN05SteppingActionMessenger_h diff --git a/examples/novice/N05/include/ExN05VisManager.hh b/examples/novice/N05/include/ExN05VisManager.hh index 719b3eda23..240edadb3d 100644 --- a/examples/novice/N05/include/ExN05VisManager.hh +++ b/examples/novice/N05/include/ExN05VisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05VisManager.hh,v 1.1.4.1 2001/06/28 19:07:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05VisManager.hh,v 1.2 2001/07/11 09:58:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N05/src/ExN05CalorimeterHit.cc b/examples/novice/N05/src/ExN05CalorimeterHit.cc index a448759c89..8f59338a60 100644 --- a/examples/novice/N05/src/ExN05CalorimeterHit.cc +++ b/examples/novice/N05/src/ExN05CalorimeterHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05CalorimeterHit.cc,v 1.2.4.1 2001/06/28 19:07:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05CalorimeterHit.cc,v 1.3 2001/07/11 09:58:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05CalorimeterHit.hh" diff --git a/examples/novice/N05/src/ExN05CalorimeterSD.cc b/examples/novice/N05/src/ExN05CalorimeterSD.cc index ae94a29c08..52103c2e3e 100644 --- a/examples/novice/N05/src/ExN05CalorimeterSD.cc +++ b/examples/novice/N05/src/ExN05CalorimeterSD.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05CalorimeterSD.cc,v 1.2.4.1 2001/06/28 19:07:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05CalorimeterSD.cc,v 1.3 2001/07/11 09:58:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05CalorimeterSD.hh" diff --git a/examples/novice/N05/src/ExN05DetectorConstruction.cc b/examples/novice/N05/src/ExN05DetectorConstruction.cc index 012a5f0ad5..06fbf33d1b 100644 --- a/examples/novice/N05/src/ExN05DetectorConstruction.cc +++ b/examples/novice/N05/src/ExN05DetectorConstruction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05DetectorConstruction.cc,v 1.2.4.1 2001/06/28 19:07:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05DetectorConstruction.cc,v 1.4 2001/11/05 08:24:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05DetectorConstruction.hh" #include "ExN05CalorimeterSD.hh" @@ -48,7 +48,7 @@ ExN05DetectorConstruction::ExN05DetectorConstruction() { - theUserLimitsForCrystal = NULL; + theUserLimitsForCrystal = 0; fUseUserLimits = false; theMaxTimeCutsInCrystal = 1000.0 * ns; theMinEkineCutsInCrystal = 1.0 * MeV; @@ -58,7 +58,7 @@ ExN05DetectorConstruction::ExN05DetectorConstruction() ExN05DetectorConstruction::~ExN05DetectorConstruction() { - if (theUserLimitsForCrystal != NULL) delete theUserLimitsForCrystal; + if (theUserLimitsForCrystal != 0) delete theUserLimitsForCrystal; delete theMessenger; } @@ -90,12 +90,6 @@ G4VPhysicalVolume* ExN05DetectorConstruction::Construct() density = 0.1786e-03*g/cm3; G4Material* He = new G4Material(name="He", z=2., a, density); - a = 26.98*g/mole; - density = 2.7*g/cm3; - G4Material* Al = new G4Material(name="Aluminium", z=13., a, density); - a = 207.19*g/mole; - density = 11.35*g/cm3; - G4Material* Pb = new G4Material(name="Lead", z=82., a, density); a = 55.85*g/mole; density = 7.87*g/cm3; G4Material* Fe = new G4Material(name="Fer", z=26., a, density); @@ -103,10 +97,6 @@ G4VPhysicalVolume* ExN05DetectorConstruction::Construct() G4Material* Air = new G4Material(name="Air", density, nel=2); Air->AddElement(elN, .7); Air->AddElement(elO, .3); - - - - //--------- G4VSolid, G4LogicalVolume, G4VPhysicalVolume --------- @@ -130,13 +120,15 @@ G4VPhysicalVolume* ExN05DetectorConstruction::Construct() // -- Logical volume: G4Box *driftChamberBox = new G4Box("DriftChamberSolid", detectSize, detectSize, 40*cm); - G4LogicalVolume *driftChamberLog = new G4LogicalVolume(driftChamberBox,He, - "DriftChamberLogical", 0, 0, 0); + G4LogicalVolume *driftChamberLog + = new G4LogicalVolume(driftChamberBox,He, + "DriftChamberLogical", 0, 0, 0); // -- Placement: - G4PVPlacement *driftChamberPhys = new G4PVPlacement(0,G4ThreeVector(0., 0., 50*cm), - "DriftChamberPhysical", - driftChamberLog, - WorldPhys,false,0); + // G4PVPlacement *driftChamberPhys = + new G4PVPlacement(0,G4ThreeVector(0., 0., 50*cm), + "DriftChamberPhysical", + driftChamberLog, + WorldPhys,false,0); //-------------------------- // "Calorimeter": used in @@ -165,7 +157,7 @@ G4VPhysicalVolume* ExN05DetectorConstruction::Construct() theCrystalLog = new G4LogicalVolume(CrystalSolid,CsI, "CrystalLogical", 0, 0, 0); // create UserLimits - if (theUserLimitsForCrystal != NULL) delete theUserLimitsForCrystal; + if (theUserLimitsForCrystal != 0) delete theUserLimitsForCrystal; theUserLimitsForCrystal = new G4UserLimits( DBL_MAX, //step max DBL_MAX, // track max theMaxTimeCutsInCrystal, @@ -292,11 +284,11 @@ G4VPhysicalVolume* ExN05DetectorConstruction::Construct() //------------------ Parameterisation ------------------------------ // builds a model and sets it to the envelope of the calorimeter: - ExN05EMShowerModel* emShowerModel = + // ExN05EMShowerModel* emShowerModel = new ExN05EMShowerModel("emShowerModel",calorimeterLog); // and a model attached to the ghost: - ExN05PionShowerModel* ghostPionShowerModel = + // ExN05PionShowerModel* ghostPionShowerModel = new ExN05PionShowerModel("ghostPionShowerModel",ghostLogical); //--------- Visualization attributes ------------------------------- @@ -345,21 +337,21 @@ G4VPhysicalVolume* ExN05DetectorConstruction::Construct() void ExN05DetectorConstruction::SetMaxTimeInCrystal(G4double value) { theMaxTimeCutsInCrystal = value; - if (theUserLimitsForCrystal != NULL) { + if (theUserLimitsForCrystal != 0) { theUserLimitsForCrystal->SetUserMaxTime(value); } } void ExN05DetectorConstruction::SetMinEkineInCrystal(G4double value) { theMinEkineCutsInCrystal = value; - if (theUserLimitsForCrystal != NULL) { + if (theUserLimitsForCrystal != 0) { theUserLimitsForCrystal->SetUserMinEkine(value); } } void ExN05DetectorConstruction::SetMinRangeInCrystal(G4double value) { theMinRangeCutsInCrystal = value; - if (theUserLimitsForCrystal != NULL) { + if (theUserLimitsForCrystal != 0) { theUserLimitsForCrystal->SetUserMinRange(value); } } @@ -367,7 +359,7 @@ void ExN05DetectorConstruction::SetMinRangeInCrystal(G4double value) void ExN05DetectorConstruction::UseUserLimits(G4bool isUse) { fUseUserLimits = isUse; - if ( fUseUserLimits && (theUserLimitsForCrystal!= NULL)) { + if ( fUseUserLimits && (theUserLimitsForCrystal!= 0)) { theCrystalLog->SetUserLimits(theUserLimitsForCrystal); } } diff --git a/examples/novice/N05/src/ExN05DetectorMessenger.cc b/examples/novice/N05/src/ExN05DetectorMessenger.cc index f9f00839ce..b5b34c70e6 100644 --- a/examples/novice/N05/src/ExN05DetectorMessenger.cc +++ b/examples/novice/N05/src/ExN05DetectorMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05DetectorMessenger.cc,v 1.2.4.1 2001/06/28 19:07:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05DetectorMessenger.cc,v 1.3 2001/07/11 09:58:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N05/src/ExN05EMShowerModel.cc b/examples/novice/N05/src/ExN05EMShowerModel.cc index 7861d25a79..49b12c1fed 100644 --- a/examples/novice/N05/src/ExN05EMShowerModel.cc +++ b/examples/novice/N05/src/ExN05EMShowerModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05EMShowerModel.cc,v 1.3.2.1 2001/06/28 19:07:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05EMShowerModel.cc,v 1.6 2001/11/08 10:21:28 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05EMShowerModel.hh" #include "ExN05EnergySpot.hh" @@ -35,7 +35,8 @@ #include "G4Gamma.hh" #include "G4TransportationManager.hh" #include "G4VSensitiveDetector.hh" -#include "G4VTouchable.hh" +#include "G4TouchableHandle.hh" +//#include "G4TouchableHistory.hh" ExN05EMShowerModel::ExN05EMShowerModel(G4String modelName, G4LogicalVolume* envelope) : G4VFastSimulationModel(modelName, envelope) @@ -43,9 +44,9 @@ ExN05EMShowerModel::ExN05EMShowerModel(G4String modelName, G4LogicalVolume* enve fFakeStep = new G4Step(); fFakePreStepPoint = fFakeStep->GetPreStepPoint(); fFakePostStepPoint = fFakeStep->GetPostStepPoint(); - fpTouchable = new G4TouchableHistory(); - fpNavigator = new G4Navigator(); - fNaviSetup = false; + fTouchableHandle = new G4TouchableHistory(); + fpNavigator = new G4Navigator(); + fNaviSetup = false; } ExN05EMShowerModel::ExN05EMShowerModel(G4String modelName) @@ -54,15 +55,14 @@ ExN05EMShowerModel::ExN05EMShowerModel(G4String modelName) fFakeStep = new G4Step(); fFakePreStepPoint = fFakeStep->GetPreStepPoint(); fFakePostStepPoint = fFakeStep->GetPostStepPoint(); - fpTouchable = new G4TouchableHistory(); - fpNavigator = new G4Navigator(); - fNaviSetup = false; + fTouchableHandle = new G4TouchableHistory(); + fpNavigator = new G4Navigator(); + fNaviSetup = false; } ExN05EMShowerModel::~ExN05EMShowerModel() { delete fFakeStep; - delete fpTouchable; delete fpNavigator; } @@ -83,6 +83,8 @@ G4bool ExN05EMShowerModel::ModelTrigger(const G4FastTrack& fastTrack) void ExN05EMShowerModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep) { + G4cout << "ExN05EMShowerModel::DoIt" << G4endl; + // Kill the parawmeterised particle: fastStep.KillPrimaryTrack(); fastStep.SetPrimaryTrackPathLength(0.0); @@ -173,7 +175,7 @@ void ExN05EMShowerModel::Explode(const G4FastTrack& fastTrack) void ExN05EMShowerModel::BuildDetectorResponse() { // Does the assignation of the energy spots to the sensitive volumes: - for (int i = 0; i < feSpotList.size(); i++) + for (size_t i = 0; i < feSpotList.size(); i++) { // Draw the energy spot: feSpotList[i].Draw(); @@ -226,7 +228,7 @@ void ExN05EMShowerModel::FillFakeStep(const ExN05EnergySpot &eSpot) GetNavigatorForTracking()->GetWorldVolume()); fpNavigator-> LocateGlobalPointAndUpdateTouchable(eSpot.GetPosition(), - fpTouchable, + fTouchableHandle(), false); fNaviSetup = true; } @@ -234,14 +236,14 @@ void ExN05EMShowerModel::FillFakeStep(const ExN05EnergySpot &eSpot) { fpNavigator-> LocateGlobalPointAndUpdateTouchable(eSpot.GetPosition(), - fpTouchable); + fTouchableHandle()); } //-------------------------------------- // Fills attribute of the G4Step needed // by our sensitive detector: //------------------------------------- // set touchable volume at PreStepPoint: - fFakePreStepPoint->SetTouchable(fpTouchable); + fFakePreStepPoint->SetTouchableHandle(fTouchableHandle); // set total energy deposit: fFakeStep->SetTotalEnergyDeposit(eSpot.GetEnergy()); } diff --git a/examples/novice/N05/src/ExN05EnergySpot.cc b/examples/novice/N05/src/ExN05EnergySpot.cc index ea4e6b35ef..10edb15e11 100644 --- a/examples/novice/N05/src/ExN05EnergySpot.cc +++ b/examples/novice/N05/src/ExN05EnergySpot.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05EnergySpot.cc,v 1.3.2.1 2001/06/28 19:07:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05EnergySpot.cc,v 1.5 2001/11/05 08:24:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05EnergySpot.hh" @@ -54,7 +54,6 @@ void ExN05EnergySpot::Draw(G4Colour *color) G4Polyline polyline; G4Colour colour(1.,.5,.5); if (color != 0) colour = *color; - G4VisAttributes attribs(colour); polyline.SetVisAttributes(colour); G4ThreeVector pp(Point); // Draw a "home made" marker: diff --git a/examples/novice/N05/src/ExN05EventAction.cc b/examples/novice/N05/src/ExN05EventAction.cc index 9eb19dfe36..916e1bf985 100644 --- a/examples/novice/N05/src/ExN05EventAction.cc +++ b/examples/novice/N05/src/ExN05EventAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05EventAction.cc,v 1.5.2.1 2001/06/28 19:07:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05EventAction.cc,v 1.7 2001/11/05 08:24:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05EventAction.hh" @@ -71,8 +71,8 @@ void ExN05EventAction::EndOfEventAction(const G4Event* evt ) G4cout << ">>> Event " << evt->GetEventID() << G4endl; G4HCofThisEvent * HCE = evt->GetHCofThisEvent(); - ExN05CalorimeterHitsCollection* CaloHC = NULL; - ExN05CalorimeterHitsCollection* HadCaloHC = NULL; + ExN05CalorimeterHitsCollection* CaloHC = 0; + ExN05CalorimeterHitsCollection* HadCaloHC = 0; if(HCE) { CaloHC = (ExN05CalorimeterHitsCollection*)(HCE->GetHC(calorimeterCollID)); diff --git a/examples/novice/N05/src/ExN05EventActionMessenger.cc b/examples/novice/N05/src/ExN05EventActionMessenger.cc index 603623a20e..b6e5ac7efb 100644 --- a/examples/novice/N05/src/ExN05EventActionMessenger.cc +++ b/examples/novice/N05/src/ExN05EventActionMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05EventActionMessenger.cc,v 1.2.4.1 2001/06/28 19:07:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05EventActionMessenger.cc,v 1.3 2001/07/11 09:58:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05EventActionMessenger.hh" diff --git a/examples/novice/N05/src/ExN05MaxTimeCuts.cc b/examples/novice/N05/src/ExN05MaxTimeCuts.cc index 628ec964fd..7f29b49afb 100644 --- a/examples/novice/N05/src/ExN05MaxTimeCuts.cc +++ b/examples/novice/N05/src/ExN05MaxTimeCuts.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05MaxTimeCuts.cc,v 1.2.4.2 2001/06/28 20:18:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05MaxTimeCuts.cc,v 1.4 2001/11/05 08:24:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -70,7 +70,6 @@ G4double ExN05MaxTimeCuts::PostStepGetPhysicalInteractionLength( // get the pointer to UserLimits G4UserLimits* pUserLimits = aTrack.GetVolume()->GetLogicalVolume()->GetUserLimits(); const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - G4ParticleDefinition* aParticleDef = aTrack.GetDefinition(); if (pUserLimits) { G4double temp = DBL_MAX; diff --git a/examples/novice/N05/src/ExN05MinEkineCuts.cc b/examples/novice/N05/src/ExN05MinEkineCuts.cc index 8bdc968c81..33ba47a324 100644 --- a/examples/novice/N05/src/ExN05MinEkineCuts.cc +++ b/examples/novice/N05/src/ExN05MinEkineCuts.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05MinEkineCuts.cc,v 1.2.4.2 2001/06/28 20:18:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05MinEkineCuts.cc,v 1.3 2001/07/11 09:58:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N05/src/ExN05MinRangeCuts.cc b/examples/novice/N05/src/ExN05MinRangeCuts.cc index 16907304a0..ee531eb4aa 100644 --- a/examples/novice/N05/src/ExN05MinRangeCuts.cc +++ b/examples/novice/N05/src/ExN05MinRangeCuts.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05MinRangeCuts.cc,v 1.2.4.2 2001/06/28 20:18:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05MinRangeCuts.cc,v 1.3 2001/07/11 09:58:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/examples/novice/N05/src/ExN05PhysicsList.cc b/examples/novice/N05/src/ExN05PhysicsList.cc index 97abb53cc9..2819155b62 100644 --- a/examples/novice/N05/src/ExN05PhysicsList.cc +++ b/examples/novice/N05/src/ExN05PhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05PhysicsList.cc,v 1.5.4.1 2001/06/28 19:07:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05PhysicsList.cc,v 1.6 2001/07/11 09:58:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/examples/novice/N05/src/ExN05PiModel.cc b/examples/novice/N05/src/ExN05PiModel.cc index 8e29aa0ca6..8f0c63bfda 100644 --- a/examples/novice/N05/src/ExN05PiModel.cc +++ b/examples/novice/N05/src/ExN05PiModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05PiModel.cc,v 1.2.4.1 2001/06/28 19:07:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05PiModel.cc,v 1.3 2001/07/11 09:58:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05PiModel.hh" diff --git a/examples/novice/N05/src/ExN05PionShowerModel.cc b/examples/novice/N05/src/ExN05PionShowerModel.cc index fabf3a3ccf..2e3c6c445f 100644 --- a/examples/novice/N05/src/ExN05PionShowerModel.cc +++ b/examples/novice/N05/src/ExN05PionShowerModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05PionShowerModel.cc,v 1.4.2.1 2001/06/28 19:07:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05PionShowerModel.cc,v 1.7 2001/11/08 10:21:29 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05PionShowerModel.hh" #include "ExN05EnergySpot.hh" @@ -33,7 +33,7 @@ #include "G4PionPlus.hh" #include "G4TransportationManager.hh" #include "G4VSensitiveDetector.hh" -#include "G4VTouchable.hh" +#include "G4TouchableHistory.hh" #include "G4Colour.hh" @@ -43,9 +43,9 @@ ExN05PionShowerModel::ExN05PionShowerModel(G4String modelName, G4LogicalVolume* fFakeStep = new G4Step(); fFakePreStepPoint = fFakeStep->GetPreStepPoint(); fFakePostStepPoint = fFakeStep->GetPostStepPoint(); - fpTouchable = new G4TouchableHistory(); - fpNavigator = new G4Navigator(); - fNaviSetup = false; + fTouchableHandle = new G4TouchableHistory(); + fpNavigator = new G4Navigator(); + fNaviSetup = false; } ExN05PionShowerModel::ExN05PionShowerModel(G4String modelName) @@ -54,15 +54,14 @@ ExN05PionShowerModel::ExN05PionShowerModel(G4String modelName) fFakeStep = new G4Step(); fFakePreStepPoint = fFakeStep->GetPreStepPoint(); fFakePostStepPoint = fFakeStep->GetPostStepPoint(); - fpTouchable = new G4TouchableHistory(); - fpNavigator = new G4Navigator(); - fNaviSetup = false; + fTouchableHandle = new G4TouchableHistory(); + fpNavigator = new G4Navigator(); + fNaviSetup = false; } ExN05PionShowerModel::~ExN05PionShowerModel() { delete fFakeStep; - delete fpTouchable; delete fpNavigator; } @@ -82,6 +81,8 @@ G4bool ExN05PionShowerModel::ModelTrigger(const G4FastTrack& fastTrack) void ExN05PionShowerModel::DoIt(const G4FastTrack& fastTrack, G4FastStep& fastStep) { + G4cout << "ExN05PionShowerModel::DoIt" << G4endl; + // Kill the parawmeterised particle: fastStep.KillPrimaryTrack(); fastStep.SetPrimaryTrackPathLength(0.0); @@ -146,7 +147,7 @@ void ExN05PionShowerModel::Explode(const G4FastTrack& fastTrack) void ExN05PionShowerModel::BuildDetectorResponse() { // Does the assignation of the energy spots to the sensitive volumes: - for (int i = 0; i < feSpotList.size(); i++) + for (size_t i = 0; i < feSpotList.size(); i++) { // Draw the energy spot: G4Colour red(1.,0.,0.); @@ -200,7 +201,7 @@ void ExN05PionShowerModel::FillFakeStep(const ExN05EnergySpot &eSpot) GetNavigatorForTracking()->GetWorldVolume()); fpNavigator-> LocateGlobalPointAndUpdateTouchable(eSpot.GetPosition(), - fpTouchable, + fTouchableHandle(), false); fNaviSetup = true; } @@ -208,14 +209,14 @@ void ExN05PionShowerModel::FillFakeStep(const ExN05EnergySpot &eSpot) { fpNavigator-> LocateGlobalPointAndUpdateTouchable(eSpot.GetPosition(), - fpTouchable); + fTouchableHandle()); } //-------------------------------------- // Fills attribute of the G4Step needed // by our sensitive detector: //------------------------------------- // set touchable volume at PreStepPoint: - fFakePreStepPoint->SetTouchable(fpTouchable); + fFakePreStepPoint->SetTouchableHandle(fTouchableHandle); // set total energy deposit: fFakeStep->SetTotalEnergyDeposit(eSpot.GetEnergy()); } diff --git a/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc b/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc index 988abc82e9..551017d5ef 100644 --- a/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc +++ b/examples/novice/N05/src/ExN05PrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05PrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:07:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05PrimaryGeneratorAction.cc,v 1.3 2001/07/11 09:58:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05PrimaryGeneratorAction.hh" diff --git a/examples/novice/N05/src/ExN05RunAction.cc b/examples/novice/N05/src/ExN05RunAction.cc index 3287f1339d..441bb2f31a 100644 --- a/examples/novice/N05/src/ExN05RunAction.cc +++ b/examples/novice/N05/src/ExN05RunAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05RunAction.cc,v 1.5.4.1 2001/06/28 19:07:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05RunAction.cc,v 1.6 2001/07/11 09:58:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Make this appear first! diff --git a/examples/novice/N05/src/ExN05SpecialCuts.cc b/examples/novice/N05/src/ExN05SpecialCuts.cc index c98421abac..0ea2b9d7f8 100644 --- a/examples/novice/N05/src/ExN05SpecialCuts.cc +++ b/examples/novice/N05/src/ExN05SpecialCuts.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05SpecialCuts.cc,v 1.3.4.2 2001/06/28 20:18:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05SpecialCuts.cc,v 1.4 2001/07/11 09:58:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/examples/novice/N05/src/ExN05SteppingAction.cc b/examples/novice/N05/src/ExN05SteppingAction.cc index 669392ea07..80c786190e 100644 --- a/examples/novice/N05/src/ExN05SteppingAction.cc +++ b/examples/novice/N05/src/ExN05SteppingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05SteppingAction.cc,v 1.4.2.1 2001/06/28 19:07:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05SteppingAction.cc,v 1.5 2001/07/11 09:58:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05SteppingAction.hh" diff --git a/examples/novice/N05/src/ExN05SteppingActionMessenger.cc b/examples/novice/N05/src/ExN05SteppingActionMessenger.cc index fdb0543dce..e2ae4c3048 100644 --- a/examples/novice/N05/src/ExN05SteppingActionMessenger.cc +++ b/examples/novice/N05/src/ExN05SteppingActionMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05SteppingActionMessenger.cc,v 1.2.4.1 2001/06/28 19:07:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05SteppingActionMessenger.cc,v 1.3 2001/07/11 09:58:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "ExN05SteppingActionMessenger.hh" diff --git a/examples/novice/N05/src/ExN05VisManager.cc b/examples/novice/N05/src/ExN05VisManager.cc index 0cb7e74ca6..f2501cfda6 100644 --- a/examples/novice/N05/src/ExN05VisManager.cc +++ b/examples/novice/N05/src/ExN05VisManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: ExN05VisManager.cc,v 1.1.4.1 2001/06/28 19:07:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: ExN05VisManager.cc,v 1.5 2001/11/15 13:09:59 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -34,14 +34,21 @@ // Supported drivers... +// Not needing external packages or libraries... +#include "G4ASCIITree.hh" +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... + #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -75,15 +82,6 @@ #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif - -#ifdef G4VIS_USE_RAYTRACER -#include "G4RayTracer.hh" -#endif - //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ExN05VisManager::ExN05VisManager () {} @@ -92,14 +90,21 @@ ExN05VisManager::ExN05VisManager () {} void ExN05VisManager::RegisterGraphicsSystems () { + // Graphics Systems not needing external packages or libraries... + RegisterGraphicsSystem (new G4ASCIITree); + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... + #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -133,15 +138,6 @@ void ExN05VisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4VRML2); #endif -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - -#ifdef G4VIS_USE_RAYTRACER - RegisterGraphicsSystem (new G4RayTracer); -#endif - if (fVerbose > 0) { G4cout << "\nYou have successfully chosen to use the following graphics systems." diff --git a/examples/novice/N05/src/RandomGamma.cc b/examples/novice/N05/src/RandomGamma.cc index efa2daf054..6e3a1c3d00 100644 --- a/examples/novice/N05/src/RandomGamma.cc +++ b/examples/novice/N05/src/RandomGamma.cc @@ -46,7 +46,7 @@ double RandomGamma(double p) } else { - int m = p; + int m = int(p); double f = p - m; if (m > 0) { diff --git a/examples/novice/N06/History b/examples/novice/N06/History index 050267da75..75fb0d5763 100644 --- a/examples/novice/N06/History +++ b/examples/novice/N06/History @@ -1,4 +1,4 @@ -$Id: History,v 1.5 2001/02/06 14:19:32 stesting Exp $ +$Id: History,v 1.6 2001/10/19 05:37:49 stesting Exp $ ------------------------------------------------------------------- ========================================================= @@ -15,6 +15,9 @@ track of all tags. * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Oct 19, 2001 Steve O'Neale (examples-V03-02-00) +- Update reference output + 06-02-2001 Update reference output for op-V03-00-05 S.W.O'Neale June 17, 2000 John Allison (exampleN06-V01-01-00) diff --git a/examples/novice/N06/exampleN06.out b/examples/novice/N06/exampleN06.out index d42ef20156..6696f9a951 100644 --- a/examples/novice/N06/exampleN06.out +++ b/examples/novice/N06/exampleN06.out @@ -1,6 +1,6 @@ ********************************************** - Geant4 version $Name: geant4-03-01-ref-01 $ - (06-Apr-2001) + Geant4 version $Name: geant4-04-00 $ + (14-Dec-2001) Copyright : Geant4 Collaboration ********************************************** /run/initialize @@ -32,7 +32,7 @@ eBrem: Total cross sections from a NEW parametrisation based on the EEDL data l Gamma energy sampled from a parametrised formula. PhysicsTables from 1 keV to 100 TeV in 100 bins. -annihil: Total cross section from Heilter formula (annihilation into 2 photons). +annihil: Total cross section from Heilter formula(annihilation into 2 photons). gamma energies sampled according Heitler PhysicsTables from 10 keV to 10 TeV in 100 bins. @@ -51,10 +51,10 @@ msc: Tables of transport mean free paths. displacement of the particle , too. PhysicsTables from 100 eV to 100 TeV in 100 bins. -MuIoni: knock-on electron cross sections . - Good description above the mean excitation energy. +MuIoni: Knock-on electron cross sections . + Good description above the mean excitation energy. delta ray energy sampled from differential Xsection. - PhysicsTables from 1 keV to 1000 PeV in 150 bins. + PhysicsTables from 1 keV to 1000 PeV in 150 bins. MuBrems: theoretical cross section Good description up to 1000 PeV. @@ -73,153 +73,58 @@ MuPairProd: theoretical cross sections !!!!!!! Now start processing an event !!!!!!! ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 302 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 290 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 303 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739884,0.574004,0.350843) - Old Polarization: (-0.672734,0.631299,0.385863) - New Momentum Direction: (0.413909,0.77672,0.474748) - New Polarization: (-0.910318,0.353164,0.215861) - *** FresnelRefraction *** -Track (trackID 303, parentID 1) is processed with stopping code 2 -### pop requested out of 302 stacked tracks. - -** Photon absorbed! ** -Track (trackID 302, parentID 1) is processed with stopping code 2 -### pop requested out of 301 stacked tracks. - -** Photon absorbed! ** -Track (trackID 301, parentID 1) is processed with stopping code 2 -### pop requested out of 300 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743858,0.632192,0.216814) - Old Polarization: (-0.668338,0.703628,0.241313) - New Momentum Direction: (0.436842,0.850889,0.291817) - New Polarization: (-0.899538,0.413217,0.141715) - *** FresnelRefraction *** -Track (trackID 300, parentID 1) is processed with stopping code 2 -### pop requested out of 299 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.744934,0.663849,-0.0661642) - Old Polarization: (-0.667138,0.741262,-0.0738797) - New Momentum Direction: (0.442788,0.892206,-0.088924) - New Polarization: (-0.896626,0.440605,-0.043914) - *** FresnelRefraction *** -Track (trackID 299, parentID 1) is processed with stopping code 2 -### pop requested out of 298 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.737431,-0.38845,-0.552542) -Old Polarization: (-0.675423,-0.424112,-0.603269) -New Polarization: (-0.171758,-0.959255,0.224342) -Polarization Change: (-0.171758,-0.959255,0.224342) -New Momentum Direction: (0.66047,0.0568391,0.748698) -Momentum Change: (0.66047,0.0568391,0.748698) - Photon at Boundary! - Old Momentum Direction: (0.66047,0.0568391,0.748698) - Old Polarization: (-0.171758,-0.959255,0.224342) - New Momentum Direction: (-0.66047,0.0568391,0.748698) - New Polarization: (-0.171758,0.959255,-0.224342) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66047,0.0568391,0.748698) - Old Polarization: (-0.171758,0.959255,-0.224342) - New Momentum Direction: (-0.66047,0.0568391,-0.748698) - New Polarization: (-0.00713785,-0.997561,-0.0694354) - *** FresnelReflection *** - -** Photon absorbed! ** -Track (trackID 298, parentID 1) is processed with stopping code 2 -### pop requested out of 297 stacked tracks. - -** Photon absorbed! ** -Track (trackID 297, parentID 1) is processed with stopping code 2 -### pop requested out of 296 stacked tracks. - -** Photon absorbed! ** -Track (trackID 296, parentID 1) is processed with stopping code 2 -### pop requested out of 295 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.741256,0.122124,0.660019) - Old Polarization: (-0.671223,0.134867,0.728884) - New Momentum Direction: (-0.741256,0.122124,0.660019) - New Polarization: (-0.671223,-0.134867,-0.728884) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.741256,0.122124,0.660019) - Old Polarization: (-0.671223,-0.134867,-0.728884) - New Momentum Direction: (-0.741256,0.122124,-0.660019) - New Polarization: (0.671223,0.134867,-0.728884) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.741256,0.122124,-0.660019) - Old Polarization: (0.671223,0.134867,-0.728884) - New Momentum Direction: (-0.422007,0.164949,-0.891461) - New Polarization: (0.906593,0.0767813,-0.414963) - *** FresnelRefraction *** -Track (trackID 295, parentID 1) is processed with stopping code 2 -### pop requested out of 294 stacked tracks. - -** Photon absorbed! ** -Track (trackID 294, parentID 1) is processed with stopping code 2 -### pop requested out of 293 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.741609,0.54495,-0.39121) - Old Polarization: (-0.670832,0.602445,-0.432485) - New Momentum Direction: (0.42406,0.735691,-0.52814) - New Polarization: (-0.905634,0.344485,-0.2473) - *** FresnelRefraction *** -Track (trackID 293, parentID 1) is processed with stopping code 2 -### pop requested out of 292 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73936,0.671465,-0.0498066) - Old Polarization: (-0.67331,0.737335,-0.0546925) - New Momentum Direction: (0.41076,0.909245,-0.0674442) - New Polarization: (-0.911743,0.409635,-0.0303851) - *** FresnelRefraction *** -Track (trackID 292, parentID 1) is processed with stopping code 2 ### pop requested out of 291 stacked tracks. ** Photon absorbed! ** Track (trackID 291, parentID 1) is processed with stopping code 2 ### pop requested out of 290 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.738029,-0.494232,-0.459399) + Old Polarization: (-0.674769,-0.540567,-0.502469) + New Momentum Direction: (0.40262,-0.670457,-0.623205) + New Polarization: (-0.915367,-0.294897,-0.274113) + *** FresnelRefraction *** Track (trackID 290, parentID 1) is processed with stopping code 2 ### pop requested out of 289 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.742698,0.445553,-0.499883) + Old Polarization: (-0.669627,0.494172,-0.554431) + New Momentum Direction: (0.43031,0.600621,-0.67386) + New Polarization: (-0.902681,0.286318,-0.321231) + *** FresnelRefraction *** Track (trackID 289, parentID 1) is processed with stopping code 2 ### pop requested out of 288 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738753,0.130576,0.661206) - Old Polarization: (-0.673976,0.143126,0.724756) - New Momentum Direction: (0.407074,0.176961,0.896089) - New Polarization: (-0.913395,0.0788665,0.399361) + Old Momentum Direction: (0.7412,-0.65902,0.127732) + Old Polarization: (-0.671285,-0.727658,0.141035) + New Momentum Direction: (0.421679,-0.890179,0.172535) + New Polarization: (-0.906745,-0.413975,0.0802369) *** FresnelRefraction *** Track (trackID 288, parentID 1) is processed with stopping code 2 ### pop requested out of 287 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740212,-0.662432,0.115196) - Old Polarization: (-0.672373,-0.729268,0.126819) - New Momentum Direction: (0.415863,-0.89598,0.15581) - New Polarization: (-0.909427,-0.409714,0.071249) + Old Momentum Direction: (0.741428,0.639049,0.204696) + Old Polarization: (-0.671033,0.706089,0.22617) + New Momentum Direction: (0.423008,0.862937,0.276411) + New Polarization: (-0.906126,0.402847,0.129037) *** FresnelRefraction *** Track (trackID 287, parentID 1) is processed with stopping code 2 ### pop requested out of 286 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741522,-0.0536341,-0.668782) - Old Polarization: (-0.670929,-0.0592773,-0.739149) - New Momentum Direction: (0.423553,-0.0724154,-0.902972) - New Polarization: (-0.905871,-0.0338589,-0.422198) + Old Momentum Direction: (0.73665,0.208163,0.643439) + Old Polarization: (-0.676274,0.226748,0.700884) + New Momentum Direction: (0.393963,0.282916,0.874501) + New Polarization: (-0.919126,0.121266,0.374836) *** FresnelRefraction *** Track (trackID 286, parentID 1) is processed with stopping code 2 ### pop requested out of 285 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.744501,0.66741,0.0167957) - Old Polarization: (-0.667621,0.744265,0.0187298) - New Momentum Direction: (0.440407,0.897514,0.0225863) - New Polarization: (-0.897798,0.440268,0.0110795) + Old Momentum Direction: (0.738608,-0.673925,-0.0168344) + Old Polarization: (-0.674135,-0.738377,-0.0184444) + New Momentum Direction: (0.406184,-0.913506,-0.022819) + New Polarization: (-0.913791,-0.406057,-0.0101431) *** FresnelRefraction *** Track (trackID 285, parentID 1) is processed with stopping code 2 ### pop requested out of 284 stacked tracks. @@ -228,134 +133,139 @@ Track (trackID 285, parentID 1) is processed with stopping code 2 Track (trackID 284, parentID 1) is processed with stopping code 2 ### pop requested out of 283 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737326,-0.407462,0.538818) - Old Polarization: (-0.675537,-0.444731,0.588102) - New Momentum Direction: (0.398236,-0.553276,0.731638) - New Polarization: (-0.917283,-0.240203,0.317639) + Old Momentum Direction: (0.736043,-0.599846,0.31373) + Old Polarization: (-0.676935,-0.652222,0.341123) + New Momentum Direction: (0.390072,-0.815925,0.426743) + New Polarization: (-0.920784,-0.345651,0.180781) *** FresnelRefraction *** Track (trackID 283, parentID 1) is processed with stopping code 2 ### pop requested out of 282 stacked tracks. - -** Photon absorbed! ** +Scattering Photon! +Old Momentum Direction: (0.73665,-0.160216,0.657022) +Old Polarization: (-0.676274,-0.17452,0.715679) +New Polarization: (-0.491045,-0.815428,0.306518) +Polarization Change: (-0.491045,-0.815428,0.306518) +New Momentum Direction: (-0.465987,0.54316,0.69845) +Momentum Change: (-0.465987,0.54316,0.69845) + Photon at Boundary! + Old Momentum Direction: (-0.465987,0.54316,0.69845) + Old Polarization: (-0.491045,-0.815428,0.306518) + New Momentum Direction: (-0.633325,0.738211,0.232257) + New Polarization: (-0.697798,-0.414961,-0.583854) + *** FresnelRefraction *** Track (trackID 282, parentID 1) is processed with stopping code 2 ### pop requested out of 281 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.738724,0.41996,-0.527181) - Old Polarization: (-0.674008,0.460283,-0.5778) - New Momentum Direction: (0.406896,0.569167,-0.714482) - New Polarization: (-0.913475,0.253528,-0.318257) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 281, parentID 1) is processed with stopping code 2 ### pop requested out of 280 stacked tracks. ** Photon absorbed! ** Track (trackID 280, parentID 1) is processed with stopping code 2 ### pop requested out of 279 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.736957,0.33394,0.587689) + Old Polarization: (-0.675939,0.364085,0.64074) + New Momentum Direction: (0.395912,0.45367,0.798397) + New Polarization: (-0.918289,0.195595,0.344221) + *** FresnelRefraction *** Track (trackID 279, parentID 1) is processed with stopping code 2 ### pop requested out of 278 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.73915,-0.0460269,-0.671966) - Old Polarization: (-0.67354,-0.0505104,-0.737423) - New Momentum Direction: (0.40949,-0.0623437,-0.910182) - New Polarization: (-0.912315,-0.0279828,-0.408533) + Old Momentum Direction: (0.741047,0.671421,0.00654827) + Old Polarization: (-0.671453,0.741012,0.00722697) + New Momentum Direction: (0.420786,0.907117,0.00884697) + New Polarization: (-0.90716,0.420766,0.00410367) *** FresnelRefraction *** Track (trackID 278, parentID 1) is processed with stopping code 2 ### pop requested out of 277 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.735975,0.397463,-0.548055) +Old Polarization: (-0.677009,0.432082,-0.595789) +New Polarization: (-0.582514,-0.657611,-0.477729) +Polarization Change: (-0.582514,-0.657611,-0.477729) +New Momentum Direction: (-0.486536,0.752918,-0.443167) +Momentum Change: (-0.486536,0.752918,-0.443167) +Scattering Photon! +Old Momentum Direction: (-0.486536,0.752918,-0.443167) +Old Polarization: (-0.582514,-0.657611,-0.477729) +New Polarization: (-0.0797098,-0.57056,-0.817378) +Polarization Change: (-0.0797098,-0.57056,-0.817378) +New Momentum Direction: (-0.887392,-0.332907,0.318918) +Momentum Change: (-0.887392,-0.332907,0.318918) Photon at Boundary! - Old Momentum Direction: (0.736521,0.622616,-0.264358) - Old Polarization: (-0.676414,0.677943,-0.28785) - New Momentum Direction: (0.393142,0.846348,-0.359353) - New Polarization: (-0.919478,0.361874,-0.153649) + Old Momentum Direction: (-0.887392,-0.332907,0.318918) + Old Polarization: (-0.0797098,-0.57056,-0.817378) + New Momentum Direction: (-0.778904,-0.45287,0.433841) + New Polarization: (0.14843,-0.805239,-0.574072) *** FresnelRefraction *** Track (trackID 277, parentID 1) is processed with stopping code 2 ### pop requested out of 276 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740964,-0.537835,-0.402126) - Old Polarization: (-0.671544,-0.593433,-0.443696) - New Momentum Direction: (0.420303,-0.726717,-0.543349) - New Polarization: (-0.907384,-0.336617,-0.251681) + Old Momentum Direction: (0.744692,-0.635011,0.205414) + Old Polarization: (-0.667408,-0.708543,0.2292) + New Momentum Direction: (0.44146,-0.853725,0.276164) + New Polarization: (-0.897281,-0.420031,0.135872) *** FresnelRefraction *** Track (trackID 276, parentID 1) is processed with stopping code 2 ### pop requested out of 275 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738675,-0.289999,0.60849) - Old Polarization: (-0.674062,-0.317797,0.666817) - New Momentum Direction: (0.406594,-0.393058,0.824734) - New Polarization: (-0.913609,-0.174927,0.367041) + Old Momentum Direction: (0.736984,0.65407,-0.170432) + Old Polarization: (-0.67591,0.713171,-0.185832) + New Momentum Direction: (0.396083,0.888545,-0.231529) + New Polarization: (-0.918215,0.383284,-0.0998728) *** FresnelRefraction *** Track (trackID 275, parentID 1) is processed with stopping code 2 ### pop requested out of 274 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.743733,0.433839,0.508572) + Old Polarization: (-0.668477,0.48268,0.565826) + New Momentum Direction: (0.436144,0.584016,0.684619) + New Polarization: (-0.899877,0.283055,0.331815) + *** FresnelRefraction *** Track (trackID 274, parentID 1) is processed with stopping code 2 ### pop requested out of 273 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737589,0.393851,0.548492) - Old Polarization: (-0.67525,0.430212,0.599129) - New Momentum Direction: (0.399885,0.534603,0.744508) - New Polarization: (-0.916565,0.23324,0.324818) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 273, parentID 1) is processed with stopping code 2 ### pop requested out of 272 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.741178,-0.00989236,-0.671236) - Old Polarization: (-0.671309,-0.010922,-0.741098) - New Momentum Direction: (0.421552,-0.0133626,-0.906706) - New Polarization: (-0.906804,-0.00621197,-0.421507) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 272, parentID 1) is processed with stopping code 2 ### pop requested out of 271 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739221,-0.487495,-0.464652) - Old Polarization: (-0.673463,-0.535094,-0.510021) - New Momentum Direction: (0.409916,-0.660252,-0.629314) - New Polarization: (-0.912123,-0.296723,-0.282819) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 271, parentID 1) is processed with stopping code 2 ### pop requested out of 270 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739546,-0.673069,-0.00706978) - Old Polarization: (-0.673106,-0.739506,-0.00776763) - New Momentum Direction: (0.411881,-0.911187,-0.00957094) - New Polarization: (-0.911238,-0.411858,-0.00432608) + Old Momentum Direction: (0.741565,0.577907,-0.340742) + Old Polarization: (-0.670881,0.638795,-0.376642) + New Momentum Direction: (0.423805,0.78023,-0.460034) + New Polarization: (-0.905754,0.365072,-0.215251) *** FresnelRefraction *** Track (trackID 270, parentID 1) is processed with stopping code 2 ### pop requested out of 269 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737799,0.406061,0.539229) - Old Polarization: (-0.675021,0.443825,0.589378) - New Momentum Direction: (0.401189,0.55102,0.731727) - New Polarization: (-0.915995,0.241336,0.320483) + Old Momentum Direction: (0.739224,-0.158434,-0.654558) + Old Polarization: (-0.67346,-0.173906,-0.718477) + New Momentum Direction: (0.409936,-0.214579,-0.886515) + New Polarization: (-0.912114,-0.0964391,-0.39843) *** FresnelRefraction *** Track (trackID 269, parentID 1) is processed with stopping code 2 ### pop requested out of 268 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.743854,-0.648464,0.16179) - Old Polarization: (-0.668342,-0.72173,0.180069) - New Momentum Direction: (0.43682,-0.872794,0.217759) - New Polarization: (-0.899549,-0.423828,0.105744) + Old Momentum Direction: (0.737783,0.638914,0.217865) + Old Polarization: (-0.675038,0.698301,0.238116) + New Momentum Direction: (0.40109,0.867018,0.295647) + New Polarization: (-0.916039,0.379626,0.12945) *** FresnelRefraction *** Track (trackID 268, parentID 1) is processed with stopping code 2 ### pop requested out of 267 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737449,0.0786034,0.670814) - Old Polarization: (-0.675403,0.0858243,0.732438) - New Momentum Direction: (-0.737449,0.0786034,0.670814) - New Polarization: (-0.675403,-0.0858243,-0.732438) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.737449,0.0786034,0.670814) - Old Polarization: (-0.675403,-0.0858243,-0.732438) - New Momentum Direction: (-0.737449,0.0786034,-0.670814) - New Polarization: (0.675403,0.0858243,-0.732438) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.737449,0.0786034,-0.670814) - Old Polarization: (0.675403,0.0858243,-0.732438) - New Momentum Direction: (-0.399005,0.106715,-0.910718) - New Polarization: (0.916949,0.0464362,-0.396293) + Old Momentum Direction: (0.740909,0.44627,-0.501893) + Old Polarization: (-0.671605,0.492321,-0.553684) + New Momentum Direction: (0.419978,0.603041,-0.678204) + New Polarization: (-0.907534,0.279068,-0.313851) *** FresnelRefraction *** Track (trackID 267, parentID 1) is processed with stopping code 2 ### pop requested out of 266 stacked tracks. @@ -363,190 +273,207 @@ Track (trackID 267, parentID 1) is processed with stopping code 2 ** Photon absorbed! ** Track (trackID 266, parentID 1) is processed with stopping code 2 ### pop requested out of 265 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.73822,0.425054,-0.523795) + Old Polarization: (-0.674561,0.465167,-0.573226) + New Momentum Direction: (0.403797,0.576464,-0.710378) + New Polarization: (-0.914849,0.254441,-0.313547) + *** FresnelRefraction *** Track (trackID 265, parentID 1) is processed with stopping code 2 ### pop requested out of 264 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737797,-0.543584,-0.400215) - Old Polarization: (-0.675022,-0.594135,-0.437433) - New Momentum Direction: (0.40118,-0.737638,-0.543088) - New Polarization: (-0.915999,-0.323064,-0.237856) + Old Momentum Direction: (0.737415,0.624248,0.25794) + Old Polarization: (-0.67544,0.681527,0.281608) + New Momentum Direction: (0.398796,0.847537,0.350203) + New Polarization: (-0.91704,0.368571,0.152294) *** FresnelRefraction *** Track (trackID 264, parentID 1) is processed with stopping code 2 ### pop requested out of 263 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736414,0.592575,-0.326418) - Old Polarization: (-0.676531,0.645027,-0.355311) - New Momentum Direction: (0.392456,0.805629,-0.443778) - New Polarization: (-0.919771,0.343753,-0.189356) + Old Momentum Direction: (0.739866,-0.355742,-0.571004) + Old Polarization: (-0.672754,-0.39123,-0.627965) + New Momentum Direction: (0.413799,-0.481389,-0.77268) + New Polarization: (-0.910368,-0.218811,-0.351214) *** FresnelRefraction *** Track (trackID 263, parentID 1) is processed with stopping code 2 ### pop requested out of 262 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739111,-0.288659,0.608597) - Old Polarization: (-0.673584,-0.316741,0.667803) - New Momentum Direction: (0.40925,-0.391012,0.824393) - New Polarization: (-0.912422,-0.175381,0.369766) + Old Momentum Direction: (0.739643,-0.64716,0.184693) + Old Polarization: (-0.672999,-0.711245,0.202983) + New Momentum Direction: (0.412462,-0.875999,0.250002) + New Polarization: (-0.910975,-0.396626,0.113193) *** FresnelRefraction *** Track (trackID 262, parentID 1) is processed with stopping code 2 ### pop requested out of 261 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743976,-0.659633,-0.106697) - Old Polarization: (-0.668207,-0.73443,-0.118796) - New Momentum Direction: (0.437496,-0.887683,-0.143585) - New Polarization: (-0.89922,-0.431883,-0.0698579) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 261, parentID 1) is processed with stopping code 2 ### pop requested out of 260 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.739438,-0.630328,0.236472) + Old Polarization: (-0.673225,-0.692321,0.25973) + New Momentum Direction: (0.411226,-0.853451,0.320179) + New Polarization: (-0.911533,-0.385023,0.144444) + *** FresnelRefraction *** Track (trackID 260, parentID 1) is processed with stopping code 2 ### pop requested out of 259 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.737021,0.672231,-0.0700365) + Old Polarization: (-0.675869,0.733054,-0.0763734) + New Momentum Direction: (0.396316,0.913171,-0.095139) + New Polarization: (-0.918114,0.394183,-0.041068) + *** FresnelRefraction *** Track (trackID 259, parentID 1) is processed with stopping code 2 ### pop requested out of 258 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737679,0.587326,0.332984) - Old Polarization: (-0.675152,0.641719,0.363822) - New Momentum Direction: (0.400444,0.797123,0.451928) - New Polarization: (-0.916321,0.348353,0.197498) + Old Momentum Direction: (0.737118,0.0415728,0.674484) + Old Polarization: (-0.675764,0.0453472,0.735722) + New Momentum Direction: (0.396925,0.0564658,0.916113) + New Polarization: (-0.917851,0.0244187,0.396173) *** FresnelRefraction *** Track (trackID 258, parentID 1) is processed with stopping code 2 ### pop requested out of 257 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742712,0.667845,-0.0485996) - Old Polarization: (-0.669611,0.740753,-0.0539052) - New Momentum Direction: (0.430389,0.900263,-0.0655129) - New Polarization: (-0.902644,0.429253,-0.0312371) + Old Momentum Direction: (0.74127,-0.219014,-0.63447) + Old Polarization: (-0.671207,-0.241875,-0.700697) + New Momentum Direction: (0.422087,-0.295808,-0.856937) + New Polarization: (-0.906556,-0.137726,-0.398984) *** FresnelRefraction *** Track (trackID 257, parentID 1) is processed with stopping code 2 ### pop requested out of 256 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.738359,-0.395089,-0.546563) + Old Polarization: (-0.674408,-0.432553,-0.59839) + New Momentum Direction: (0.404654,-0.535725,-0.741117) + New Polarization: (-0.91447,-0.237059,-0.327945) + *** FresnelRefraction *** Track (trackID 256, parentID 1) is processed with stopping code 2 ### pop requested out of 255 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741084,0.570212,-0.354476) - Old Polarization: (-0.671412,0.629382,-0.391259) - New Momentum Direction: (0.421003,0.77034,-0.478887) - New Polarization: (-0.907059,0.357546,-0.222271) + Old Momentum Direction: (0.737091,-0.675774,0.00514197) + Old Polarization: (-0.675793,-0.73707,0.00560837) + New Momentum Direction: (0.396757,-0.917897,0.00698428) + New Polarization: (-0.917924,-0.396746,0.00301884) *** FresnelRefraction *** Track (trackID 255, parentID 1) is processed with stopping code 2 ### pop requested out of 254 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739418,0.629835,-0.237845) - Old Polarization: (-0.673247,0.691738,-0.261221) - New Momentum Direction: (0.411105,0.852807,-0.322046) - New Polarization: (-0.911588,0.384596,-0.145235) + Old Momentum Direction: (0.738618,0.216358,0.638462) + Old Polarization: (-0.674125,0.237057,0.699543) + New Momentum Direction: (0.406244,0.29327,0.865424) + New Polarization: (-0.913765,0.130383,0.384753) *** FresnelRefraction *** Track (trackID 254, parentID 1) is processed with stopping code 2 ### pop requested out of 253 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740317,0.0993838,0.664871) - Old Polarization: (-0.672258,0.109445,0.732183) - New Momentum Direction: (0.416486,0.134404,0.899152) - New Polarization: (-0.909142,0.0615716,0.41191) + Old Momentum Direction: (0.738826,0.239914,0.629744) + Old Polarization: (-0.673897,0.263029,0.69042) + New Momentum Direction: (0.407516,0.325107,0.853368) + New Polarization: (-0.913198,0.145079,0.380816) *** FresnelRefraction *** Track (trackID 253, parentID 1) is processed with stopping code 2 ### pop requested out of 252 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.739546,-0.67149,0.0466159) + Old Polarization: (-0.673106,-0.737771,0.0512172) + New Momentum Direction: (0.41188,-0.90905,0.0631077) + New Polarization: (-0.911238,-0.410891,0.0285247) + *** FresnelRefraction *** Track (trackID 252, parentID 1) is processed with stopping code 2 ### pop requested out of 251 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.740525,0.0360738,0.67106) + Old Polarization: (-0.672029,0.0397505,0.739457) + New Momentum Direction: (0.417715,0.0487714,0.907268) + New Polarization: (-0.908578,0.0224225,0.417113) + *** FresnelRefraction *** Track (trackID 251, parentID 1) is processed with stopping code 2 ### pop requested out of 250 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741224,0.534122,-0.406571) - Old Polarization: (-0.671257,0.589795,-0.448949) - New Momentum Direction: (0.421823,0.721447,-0.549162) - New Polarization: (-0.906678,0.335646,-0.255492) + Old Momentum Direction: (0.742352,0.249983,-0.621629) + Old Polarization: (-0.67001,0.276974,-0.688746) + New Momentum Direction: (0.428336,0.337143,-0.838369) + New Polarization: (-0.90362,0.159813,-0.397405) *** FresnelRefraction *** Track (trackID 250, parentID 1) is processed with stopping code 2 ### pop requested out of 249 stacked tracks. - -** Photon absorbed! ** +Scattering Photon! +Old Momentum Direction: (0.736886,-0.390388,-0.551902) +Old Polarization: (-0.676017,-0.425539,-0.601596) +New Polarization: (0.468269,0.410793,0.782287) +Polarization Change: (0.468269,0.410793,0.782287) +New Momentum Direction: (-0.825897,-0.111172,0.552752) +Momentum Change: (-0.825897,-0.111172,0.552752) +Scattering Photon! +Old Momentum Direction: (-0.825897,-0.111172,0.552752) +Old Polarization: (0.468269,0.410793,0.782287) +New Polarization: (0.173272,0.978566,0.111294) +Polarization Change: (0.173272,0.978566,0.111294) +New Momentum Direction: (0.449744,-0.179151,0.875006) +Momentum Change: (0.449744,-0.179151,0.875006) + Photon at Boundary! + Old Momentum Direction: (0.449744,-0.179151,0.875006) + Old Polarization: (0.173272,0.978566,0.111294) + New Momentum Direction: (-0.449744,-0.179151,0.875006) + New Polarization: (0.173272,-0.978566,-0.111294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.449744,-0.179151,0.875006) + Old Polarization: (0.173272,-0.978566,-0.111294) + New Momentum Direction: (-0.611053,-0.243406,0.753238) + New Polarization: (0.133308,-0.969603,-0.20518) + *** FresnelRefraction *** Track (trackID 249, parentID 1) is processed with stopping code 2 ### pop requested out of 248 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.743602,0.481016,-0.464412) + Old Polarization: (-0.668622,0.534958,-0.516492) + New Momentum Direction: (0.435414,0.647639,-0.625283) + New Polarization: (-0.900231,0.313243,-0.30243) + *** FresnelRefraction *** Track (trackID 248, parentID 1) is processed with stopping code 2 ### pop requested out of 247 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737366,-0.364559,0.568672) - Old Polarization: (-0.675493,-0.397952,0.62076) - New Momentum Direction: (-0.737366,-0.364559,0.568672) - New Polarization: (-0.675493,0.397952,-0.62076) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.737366,-0.364559,0.568672) - Old Polarization: (-0.675493,0.397952,-0.62076) - New Momentum Direction: (-0.737366,-0.364559,-0.568672) - New Polarization: (0.675493,-0.397952,-0.62076) - *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 247, parentID 1) is processed with stopping code 2 ### pop requested out of 246 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739359,0.619202,0.264457) - Old Polarization: (-0.673312,0.679941,0.290399) - New Momentum Direction: (0.41075,0.838477,0.358108) - New Polarization: (-0.911748,0.377741,0.161331) + Old Momentum Direction: (0.743077,-0.229614,0.628581) + Old Polarization: (-0.669206,-0.25496,0.697967) + New Momentum Direction: (0.432457,-0.30937,0.846919) + New Polarization: (-0.901655,-0.148382,0.406204) *** FresnelRefraction *** Track (trackID 246, parentID 1) is processed with stopping code 2 ### pop requested out of 245 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.744014,0.52778,-0.409745) - Old Polarization: (-0.668164,0.587694,-0.45626) - New Momentum Direction: (0.437712,0.710208,-0.551374) - New Polarization: (-0.899115,0.345747,-0.268423) + Old Momentum Direction: (0.74246,0.667012,0.0620305) + Old Polarization: (-0.66989,0.73927,0.0687504) + New Momentum Direction: (0.428956,0.899444,0.0836462) + New Polarization: (-0.903325,0.427113,0.0397205) *** FresnelRefraction *** Track (trackID 245, parentID 1) is processed with stopping code 2 ### pop requested out of 244 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.73937,-0.588451,0.327198) - Old Polarization: (-0.6733,-0.646195,0.359305) - New Momentum Direction: (0.410817,-0.796824,0.44306) - New Polarization: (-0.911718,-0.359046,0.199641) + Old Momentum Direction: (0.736004,0.0967892,-0.670022) + Old Polarization: (-0.676977,0.105229,-0.728443) + New Momentum Direction: (0.389826,0.131662,-0.911428) + New Polarization: (-0.920889,0.0557344,-0.385821) *** FresnelRefraction *** Track (trackID 244, parentID 1) is processed with stopping code 2 ### pop requested out of 243 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.735971,0.478672,0.478769) -Old Polarization: (-0.677013,0.520358,0.520463) -New Polarization: (0.206341,-0.455049,-0.86623) -Polarization Change: (0.206341,-0.455049,-0.86623) -New Momentum Direction: (0.901334,-0.256148,0.349263) -Momentum Change: (0.901334,-0.256148,0.349263) Photon at Boundary! - Old Momentum Direction: (0.901334,-0.256148,0.349263) - Old Polarization: (0.206341,-0.455049,-0.86623) - New Momentum Direction: (-0.901334,-0.256148,0.349263) - New Polarization: (0.109239,0.645873,0.755589) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.901334,-0.256148,0.349263) - Old Polarization: (0.109239,0.645873,0.755589) - New Momentum Direction: (-0.901334,-0.256148,-0.349263) - New Polarization: (-0.109239,-0.645873,0.755589) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.901334,-0.256148,-0.349263) - Old Polarization: (-0.109239,-0.645873,0.755589) - New Momentum Direction: (-0.807985,-0.348453,-0.475122) - New Polarization: (0.19983,-0.920649,0.335372) + Old Momentum Direction: (0.73738,-0.0630044,-0.672534) + Old Polarization: (-0.675478,-0.0687782,-0.734165) + New Momentum Direction: (0.398572,-0.0855448,-0.913139) + New Polarization: (-0.917137,-0.0371763,-0.396835) *** FresnelRefraction *** Track (trackID 243, parentID 1) is processed with stopping code 2 ### pop requested out of 242 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.735741,-0.0377178,-0.676212) - Old Polarization: (-0.677263,-0.0409745,-0.734599) - New Momentum Direction: (0.388121,-0.0513257,-0.920178) - New Polarization: (-0.921608,-0.021615,-0.387519) + Old Momentum Direction: (0.737444,-0.247377,-0.628475) + Old Polarization: (-0.675408,-0.270099,-0.6862) + New Momentum Direction: (0.398976,-0.335849,-0.853243) + New Polarization: (-0.916961,-0.14613,-0.371252) *** FresnelRefraction *** Track (trackID 242, parentID 1) is processed with stopping code 2 ### pop requested out of 241 stacked tracks. @@ -555,39 +482,39 @@ Track (trackID 242, parentID 1) is processed with stopping code 2 Track (trackID 241, parentID 1) is processed with stopping code 2 ### pop requested out of 240 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.743058,0.246094,-0.622336) - Old Polarization: (-0.669227,0.273244,-0.690994) - New Momentum Direction: (0.432353,0.331583,-0.838525) - New Polarization: (-0.901704,0.158989,-0.402059) + Old Momentum Direction: (0.740003,-0.111297,0.663332) + Old Polarization: (-0.672604,-0.12245,0.729802) + New Momentum Direction: (0.414616,-0.150579,0.897452) + New Polarization: (-0.909996,-0.0686073,0.4089) *** FresnelRefraction *** Track (trackID 240, parentID 1) is processed with stopping code 2 ### pop requested out of 239 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739643,-0.529038,0.415989) - Old Polarization: (-0.672999,-0.581426,0.457183) - New Momentum Direction: (0.412463,-0.716107,0.563085) - New Polarization: (-0.910974,-0.324233,0.254949) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 239, parentID 1) is processed with stopping code 2 ### pop requested out of 238 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736588,0.0748301,0.67219) - Old Polarization: (-0.676342,0.0814957,0.732065) - New Momentum Direction: (0.393564,0.101711,0.913653) - New Polarization: (-0.919297,0.0435438,0.391148) + Old Momentum Direction: (0.744653,-0.623471,-0.238276) + Old Polarization: (-0.667451,-0.695586,-0.265837) + New Momentum Direction: (0.441246,-0.838254,-0.320362) + New Polarization: (-0.897386,-0.412171,-0.157522) *** FresnelRefraction *** Track (trackID 238, parentID 1) is processed with stopping code 2 ### pop requested out of 237 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738684,0.453809,-0.4984) - Old Polarization: (-0.674052,0.497323,-0.54619) - New Momentum Direction: (0.40665,0.615076,-0.675513) - New Polarization: (-0.913584,0.27378,-0.300681) + Old Momentum Direction: (0.73648,0.63537,-0.23217) + Old Polarization: (-0.67646,0.691744,-0.252769) + New Momentum Direction: (0.392876,0.863733,-0.315615) + New Polarization: (-0.919591,0.369012,-0.13484) *** FresnelRefraction *** Track (trackID 237, parentID 1) is processed with stopping code 2 ### pop requested out of 236 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.741544,-0.632546,0.223602) + Old Polarization: (-0.670904,-0.699148,0.247145) + New Momentum Direction: (0.423685,-0.854021,0.301892) + New Polarization: (-0.905809,-0.399462,0.141208) + *** FresnelRefraction *** Track (trackID 236, parentID 1) is processed with stopping code 2 ### pop requested out of 235 stacked tracks. @@ -595,10 +522,10 @@ Track (trackID 236, parentID 1) is processed with stopping code 2 Track (trackID 235, parentID 1) is processed with stopping code 2 ### pop requested out of 234 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739132,-0.158006,0.654766) - Old Polarization: (-0.673561,-0.173388,0.718507) - New Momentum Direction: (0.409379,-0.214025,0.886906) - New Polarization: (-0.912365,-0.0960333,0.397955) + Old Momentum Direction: (0.74257,0.101317,0.662061) + Old Polarization: (-0.669769,0.11233,0.734024) + New Momentum Direction: (0.42958,0.136602,0.892637) + New Polarization: (-0.903029,0.0649832,0.424637) *** FresnelRefraction *** Track (trackID 234, parentID 1) is processed with stopping code 2 ### pop requested out of 233 stacked tracks. @@ -607,135 +534,112 @@ Track (trackID 234, parentID 1) is processed with stopping code 2 Track (trackID 233, parentID 1) is processed with stopping code 2 ### pop requested out of 232 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736444,-0.664764,0.12546) - Old Polarization: (-0.676499,-0.723668,0.136577) - New Momentum Direction: (0.392645,-0.903736,0.170561) - New Polarization: (-0.91969,-0.385834,0.0728178) + Old Momentum Direction: (0.737855,0.674089,-0.0342479) + Old Polarization: (-0.674959,0.736905,-0.0374393) + New Momentum Direction: (0.401542,0.914661,-0.0464704) + New Polarization: (-0.91584,0.401025,-0.0203746) *** FresnelRefraction *** Track (trackID 232, parentID 1) is processed with stopping code 2 ### pop requested out of 231 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.739292,-0.397158,0.543794) + Old Polarization: (-0.673385,-0.43603,0.597018) + New Momentum Direction: (0.410349,-0.53785,0.736431) + New Polarization: (-0.911928,-0.242022,0.331379) + *** FresnelRefraction *** Track (trackID 231, parentID 1) is processed with stopping code 2 ### pop requested out of 230 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.743977,-0.393091,-0.540349) + Old Polarization: (-0.668205,-0.437666,-0.601623) + New Momentum Direction: (0.437507,-0.528989,-0.727158) + New Polarization: (-0.899215,-0.257376,-0.353793) + *** FresnelRefraction *** Track (trackID 230, parentID 1) is processed with stopping code 2 ### pop requested out of 229 stacked tracks. ** Photon absorbed! ** Track (trackID 229, parentID 1) is processed with stopping code 2 ### pop requested out of 228 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.740009,-0.27616,0.613288) -Old Polarization: (-0.672597,-0.303838,0.674756) -New Polarization: (-0.822623,-0.568123,-0.0229458) -Polarization Change: (-0.822623,-0.568123,-0.0229458) -New Momentum Direction: (-0.125299,0.14177,0.981938) -Momentum Change: (-0.125299,0.14177,0.981938) Photon at Boundary! - Old Momentum Direction: (-0.125299,0.14177,0.981938) - Old Polarization: (-0.822623,-0.568123,-0.0229458) - New Momentum Direction: (-0.169522,0.191805,0.966681) - New Polarization: (-0.843855,-0.534937,-0.0418422) + Old Momentum Direction: (0.737701,-0.579787,0.345897) + Old Polarization: (-0.675127,-0.633524,0.377956) + New Momentum Direction: (0.400583,-0.786867,0.469439) + New Polarization: (-0.916261,-0.344013,0.205236) *** FresnelRefraction *** Track (trackID 228, parentID 1) is processed with stopping code 2 ### pop requested out of 227 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.744308,0.181895,-0.642588) - Old Polarization: (-0.667836,0.202724,-0.716169) - New Momentum Direction: (0.439343,0.244671,-0.864357) - New Polarization: (-0.898319,0.119662,-0.422733) + Old Momentum Direction: (0.737655,-0.46326,-0.491177) + Old Polarization: (-0.675178,-0.506128,-0.536628) + New Momentum Direction: (0.400294,-0.628761,-0.666652) + New Polarization: (-0.916387,-0.274654,-0.291205) *** FresnelRefraction *** Track (trackID 227, parentID 1) is processed with stopping code 2 ### pop requested out of 226 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737956,-0.315042,0.596799) - Old Polarization: (-0.674849,-0.344503,0.652608) - New Momentum Direction: (0.402168,-0.427417,0.809676) - New Polarization: (-0.915566,-0.187745,0.355655) + Old Momentum Direction: (0.735984,-0.404922,-0.542555) + Old Polarization: (-0.676999,-0.440201,-0.589826) + New Momentum Direction: (0.389693,-0.550829,-0.738056) + New Polarization: (-0.920945,-0.23308,-0.312304) *** FresnelRefraction *** Track (trackID 226, parentID 1) is processed with stopping code 2 ### pop requested out of 225 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.744341,0.583838,0.324175) - Old Polarization: (-0.667799,0.650756,0.361332) - New Momentum Direction: (0.439525,0.785297,0.436035) - New Polarization: (-0.89823,0.384264,0.213362) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 225, parentID 1) is processed with stopping code 2 ### pop requested out of 224 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743143,0.445377,-0.499378) - Old Polarization: (-0.669133,0.494638,-0.554612) - New Momentum Direction: (0.432829,0.600026,-0.672777) - New Polarization: (-0.901476,0.288092,-0.323023) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 224, parentID 1) is processed with stopping code 2 ### pop requested out of 223 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.737973,0.385994,-0.553539) +Old Polarization: (-0.674831,0.42211,-0.605332) +New Polarization: (0.00369749,-0.910624,0.413219) +Polarization Change: (0.00369749,-0.910624,0.413219) +New Momentum Direction: (0.872378,0.204929,0.443802) +Momentum Change: (0.872378,0.204929,0.443802) Photon at Boundary! - Old Momentum Direction: (0.742495,0.664737,0.0826134) - Old Polarization: (-0.669851,0.736827,0.0915726) - New Momentum Direction: (0.429157,0.896334,0.111396) - New Polarization: (-0.90323,0.42588,0.0529283) + Old Momentum Direction: (0.872378,0.204929,0.443802) + Old Polarization: (0.00369749,-0.910624,0.413219) + New Momentum Direction: (0.748459,0.27802,0.602092) + New Polarization: (-0.00696456,-0.904539,0.426335) *** FresnelRefraction *** Track (trackID 223, parentID 1) is processed with stopping code 2 ### pop requested out of 222 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.735928,0.203423,0.645778) +Old Polarization: (-0.67706,0.22111,0.701926) +New Polarization: (-0.0482308,0.159861,0.985961) +Polarization Change: (-0.0482308,0.159861,0.985961) +New Momentum Direction: (-0.985479,0.153274,-0.0730587) +Momentum Change: (-0.985479,0.153274,-0.0730587) Photon at Boundary! - Old Momentum Direction: (0.738118,-0.302389,-0.603111) - Old Polarization: (-0.674672,-0.330825,-0.659828) - New Momentum Direction: (0.403169,-0.41016,-0.818061) - New Polarization: (-0.915125,-0.180701,-0.360406) + Old Momentum Direction: (-0.985479,0.153274,-0.0730587) + Old Polarization: (-0.0482308,0.159861,0.985961) + New Momentum Direction: (-0.972955,0.20852,-0.0993918) + New Polarization: (0.0864955,0.727842,0.680268) *** FresnelRefraction *** Track (trackID 222, parentID 1) is processed with stopping code 2 ### pop requested out of 221 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.738612,-0.637482,0.219245) - Old Polarization: (-0.67413,-0.698458,0.240217) - New Momentum Direction: (0.406212,-0.864102,0.297186) - New Polarization: (-0.913779,-0.384129,0.132111) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 221, parentID 1) is processed with stopping code 2 ### pop requested out of 220 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.73618,-0.53719,-0.411662) -Old Polarization: (-0.676786,-0.584334,-0.447789) -New Polarization: (-0.552579,-0.833457,0.00241849) -Polarization Change: (-0.552579,-0.833457,0.00241849) -New Momentum Direction: (0.394984,-0.259316,0.88133) -Momentum Change: (0.394984,-0.259316,0.88133) Photon at Boundary! - Old Momentum Direction: (0.394984,-0.259316,0.88133) - Old Polarization: (-0.552579,-0.833457,0.00241849) - New Momentum Direction: (-0.394984,-0.259316,0.88133) - New Polarization: (-0.552579,0.833457,-0.00241849) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.394984,-0.259316,0.88133) - Old Polarization: (-0.552579,0.833457,-0.00241849) - New Momentum Direction: (-0.394984,0.259316,0.88133) - New Polarization: (0.552579,0.833457,0.00241849) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.394984,0.259316,0.88133) -Old Polarization: (0.552579,0.833457,0.00241849) -New Polarization: (0.974548,0.0329304,-0.221749) -Polarization Change: (0.974548,0.0329304,-0.221749) -New Momentum Direction: (-0.00187451,-0.987921,-0.154947) -Momentum Change: (-0.00187451,-0.987921,-0.154947) - Photon at Boundary! - Old Momentum Direction: (-0.00187451,-0.987921,-0.154947) - Old Polarization: (0.974548,0.0329304,-0.221749) - New Momentum Direction: (-0.00254929,-0.977542,-0.210724) - New Polarization: (0.955384,0.0598583,-0.289239) + Old Momentum Direction: (0.73758,0.203048,-0.644009) + Old Polarization: (-0.67526,0.221788,-0.703444) + New Momentum Direction: (0.399824,0.275616,-0.874172) + New Polarization: (-0.916592,0.120226,-0.38132) *** FresnelRefraction *** Track (trackID 220, parentID 1) is processed with stopping code 2 ### pop requested out of 219 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736231,-0.00135337,-0.676728) - Old Polarization: (-0.67673,-0.00147236,-0.73623) - New Momentum Direction: (0.391287,-0.00184041,-0.920267) - New Polarization: (-0.920269,-0.000782521,-0.391286) + Old Momentum Direction: (0.74277,0.466967,0.479828) + Old Polarization: (-0.669547,0.518035,0.532303) + New Momentum Direction: (0.430719,0.629427,0.646763) + New Polarization: (-0.902486,0.300399,0.308673) *** FresnelRefraction *** Track (trackID 219, parentID 1) is processed with stopping code 2 ### pop requested out of 218 stacked tracks. @@ -743,216 +647,207 @@ Track (trackID 219, parentID 1) is processed with stopping code 2 ** Photon absorbed! ** Track (trackID 218, parentID 1) is processed with stopping code 2 ### pop requested out of 217 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.735789,-0.639282,-0.223457) -Old Polarization: (-0.677211,-0.694579,-0.242786) -New Polarization: (0.576033,0.498608,0.647747) -Polarization Change: (0.576033,0.498608,0.647747) -New Momentum Direction: (0.361979,0.554898,-0.749039) -Momentum Change: (0.361979,0.554898,-0.749039) - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.736184,-0.38499,-0.556611) + Old Polarization: (-0.676781,-0.418781,-0.605466) + New Momentum Direction: (0.390983,-0.523572,-0.756971) + New Polarization: (-0.920398,-0.222412,-0.321559) + *** FresnelRefraction *** Track (trackID 217, parentID 1) is processed with stopping code 2 ### pop requested out of 216 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742575,0.6549,0.140318) - Old Polarization: (-0.669763,0.726095,0.155573) - New Momentum Direction: (0.429609,0.882975,0.189186) - New Polarization: (-0.903015,0.420075,0.0900049) + Old Momentum Direction: (0.736584,-0.673996,-0.0563321) + Old Polarization: (-0.676346,-0.734025,-0.0613493) + New Momentum Direction: (0.393544,-0.916112,-0.076568) + New Polarization: (-0.919306,-0.392177,-0.0327779) *** FresnelRefraction *** Track (trackID 216, parentID 1) is processed with stopping code 2 ### pop requested out of 215 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.736599,0.0240631,-0.675902) -Old Polarization: (-0.67633,0.0262074,-0.736132) -New Polarization: (-0.679857,-0.140083,-0.719841) -Polarization Change: (-0.679857,-0.140083,-0.719841) -New Momentum Direction: (0.0358311,-0.986759,0.158184) -Momentum Change: (0.0358311,-0.986759,0.158184) - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.739805,0.0370281,-0.671802) + Old Polarization: (-0.672822,0.0407145,-0.738683) + New Momentum Direction: (0.413431,0.0501105,-0.909156) + New Polarization: (-0.910536,0.0227528,-0.412804) + *** FresnelRefraction *** Track (trackID 215, parentID 1) is processed with stopping code 2 ### pop requested out of 214 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.743061,0.58443,-0.326039) - Old Polarization: (-0.669223,0.648912,-0.362012) - New Momentum Direction: (0.43237,0.787448,-0.439298) - New Polarization: (-0.901696,0.377587,-0.210646) + Old Momentum Direction: (0.738319,0.0455993,0.672908) + Old Polarization: (-0.674451,0.0499174,0.73663) + New Momentum Direction: (0.404413,0.061834,0.912484) + New Polarization: (-0.914577,0.0273421,0.403487) *** FresnelRefraction *** Track (trackID 214, parentID 1) is processed with stopping code 2 ### pop requested out of 213 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.73633,0.676544,0.0103061) - Old Polarization: (-0.676622,0.736245,0.0112156) - New Momentum Direction: (0.39192,0.919892,0.0140132) - New Polarization: (-0.919999,0.391875,0.00596963) + Old Momentum Direction: (0.736438,0.676364,0.0137998) + Old Polarization: (-0.676505,0.736285,0.0150224) + New Momentum Direction: (0.392612,0.919513,0.0187608) + New Polarization: (-0.919704,0.39253,0.00800878) *** FresnelRefraction *** Track (trackID 213, parentID 1) is processed with stopping code 2 ### pop requested out of 212 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738786,0.078842,0.669313) - Old Polarization: (-0.67394,0.0864281,0.733713) - New Momentum Direction: (0.407272,0.106845,0.907036) - New Polarization: (-0.913307,0.0476454,0.404475) + Old Momentum Direction: (0.738939,-0.480393,-0.472431) + Old Polarization: (-0.673772,-0.526857,-0.518125) + New Momentum Direction: (0.408207,-0.650881,-0.640094) + New Polarization: (-0.912889,-0.291048,-0.286224) *** FresnelRefraction *** Track (trackID 212, parentID 1) is processed with stopping code 2 ### pop requested out of 211 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739854,-0.00386876,0.672756) - Old Polarization: (-0.672767,-0.00425455,0.739842) - New Momentum Direction: (0.413727,-0.00523528,0.910386) - New Polarization: (-0.910401,-0.00237915,0.41372) + Old Momentum Direction: (0.742539,-0.10177,-0.662027) + Old Polarization: (-0.669803,-0.112821,-0.733918) + New Momentum Direction: (0.429403,-0.137219,-0.892628) + New Polarization: (-0.903113,-0.0652433,-0.424417) *** FresnelRefraction *** Track (trackID 211, parentID 1) is processed with stopping code 2 ### pop requested out of 210 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.743923,-0.599283,0.295699) - Old Polarization: (-0.668265,-0.667132,0.329177) - New Momentum Direction: (0.437205,-0.806525,0.397956) - New Polarization: (-0.899362,-0.392075,0.193458) + Old Momentum Direction: (0.742628,-0.0945272,0.662999) + Old Polarization: (-0.669704,-0.10482,0.735193) + New Momentum Direction: (0.429913,-0.127438,0.893831) + New Polarization: (-0.90287,-0.0606812,0.425609) *** FresnelRefraction *** Track (trackID 210, parentID 1) is processed with stopping code 2 ### pop requested out of 209 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736692,-0.472326,-0.483935) - Old Polarization: (-0.676228,-0.514558,-0.527205) - New Momentum Direction: (0.394231,-0.641903,-0.65768) - New Polarization: (-0.919012,-0.275359,-0.282126) + Old Momentum Direction: (0.738071,0.511231,-0.440334) + Old Polarization: (-0.674723,0.559229,-0.481676) + New Momentum Direction: (0.402881,0.693478,-0.597307) + New Polarization: (-0.915253,0.305259,-0.262926) *** FresnelRefraction *** Track (trackID 209, parentID 1) is processed with stopping code 2 ### pop requested out of 208 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.740263,-0.626582,0.243734) + Old Polarization: (-0.672318,-0.689905,0.268366) + New Momentum Direction: (0.416162,-0.847434,0.329643) + New Polarization: (-0.909291,-0.387852,0.15087) + *** FresnelRefraction *** Track (trackID 208, parentID 1) is processed with stopping code 2 ### pop requested out of 207 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.743764,-0.647722,-0.165143) + Old Polarization: (-0.668442,-0.720708,-0.183752) + New Momentum Direction: (0.436316,-0.871901,-0.2223) + New Polarization: (-0.899793,-0.422791,-0.107795) + *** FresnelRefraction *** Track (trackID 207, parentID 1) is processed with stopping code 2 ### pop requested out of 206 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740148,-0.190799,0.644808) - Old Polarization: (-0.672444,-0.21001,0.709729) - New Momentum Direction: (0.415479,-0.258091,0.872219) - New Polarization: (-0.909603,-0.117888,0.398404) + Old Momentum Direction: (0.737018,0.168835,0.654446) + Old Polarization: (-0.675873,0.18411,0.713652) + New Momentum Direction: (0.396294,0.22935,0.889016) + New Polarization: (-0.918124,0.0989957,0.38373) *** FresnelRefraction *** Track (trackID 206, parentID 1) is processed with stopping code 2 ### pop requested out of 205 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737751,0.287358,0.61086) - Old Polarization: (-0.675073,0.314038,0.667575) - New Momentum Direction: (0.400891,0.389966,0.828983) - New Polarization: (-0.916126,0.170647,0.362758) + Old Momentum Direction: (0.738793,0.214429,-0.638909) + Old Polarization: (-0.673932,0.235066,-0.700399) + New Momentum Direction: (0.407316,0.290586,-0.865825) + New Polarization: (-0.913287,0.129598,-0.386149) *** FresnelRefraction *** Track (trackID 205, parentID 1) is processed with stopping code 2 ### pop requested out of 204 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738843,-0.0479759,0.672168) - Old Polarization: (-0.673878,-0.052601,0.736968) - New Momentum Direction: (0.407618,-0.0650108,0.910835) - New Polarization: (-0.913152,-0.0290199,0.406584) + Old Momentum Direction: (0.742357,0.659544,-0.117931) + Old Polarization: (-0.670004,0.730767,-0.130667) + New Momentum Direction: (0.428367,0.889497,-0.159049) + New Polarization: (-0.903605,0.421679,-0.0753994) *** FresnelRefraction *** Track (trackID 204, parentID 1) is processed with stopping code 2 ### pop requested out of 203 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.740313,-0.505426,0.443262) - Old Polarization: (-0.672262,-0.556589,0.488131) - New Momentum Direction: (0.416461,-0.683528,0.599458) - New Polarization: (-0.909154,-0.313107,0.274597) - *** FresnelRefraction *** -Track (trackID 203, parentID 1) is processed with stopping code 2 -### pop requested out of 202 stacked tracks. ** Photon absorbed! ** +Track (trackID 203, parentID 1) is processed with stopping code 2 +### pop requested out of 202 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74466,0.160589,0.647837) + Old Polarization: (-0.667444,0.179167,0.722785) + New Momentum Direction: (0.441283,0.215909,0.871007) + New Polarization: (-0.897368,0.106174,0.42832) + *** FresnelRefraction *** Track (trackID 202, parentID 1) is processed with stopping code 2 ### pop requested out of 201 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737034,-0.560843,-0.377142) - Old Polarization: (-0.675856,-0.61161,-0.411281) - New Momentum Direction: (0.396396,-0.761847,-0.512308) - New Polarization: (-0.91808,-0.32894,-0.221198) + Old Momentum Direction: (0.739905,0.558542,-0.374928) + Old Polarization: (-0.672711,0.614332,-0.412378) + New Momentum Direction: (0.414032,0.755777,-0.507325) + New Polarization: (-0.910262,0.343764,-0.230756) *** FresnelRefraction *** Track (trackID 201, parentID 1) is processed with stopping code 2 ### pop requested out of 200 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.744621,0.467001,0.476916) - Old Polarization: (-0.667487,0.520967,0.532028) - New Momentum Direction: (0.441068,0.627909,0.64124) - New Polarization: (-0.897474,0.308589,0.315141) + Old Momentum Direction: (0.738427,0.612208,-0.282715) + Old Polarization: (-0.674334,0.670396,-0.309586) + New Momentum Direction: (0.405073,0.830052,-0.383314) + New Polarization: (-0.914284,0.367754,-0.169827) *** FresnelRefraction *** Track (trackID 200, parentID 1) is processed with stopping code 2 ### pop requested out of 199 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736555,0.369201,0.566726) - Old Polarization: (-0.676378,0.402049,0.617146) - New Momentum Direction: (0.393354,0.501848,0.770339) - New Polarization: (-0.919387,0.214712,0.329584) - *** FresnelRefraction *** -Track (trackID 199, parentID 1) is processed with stopping code 2 -### pop requested out of 198 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.738288,-0.47137,-0.482432) - Old Polarization: (-0.674485,-0.51596,-0.528068) - New Momentum Direction: (0.404222,-0.639219,-0.65422) - New Polarization: (-0.914661,-0.282494,-0.289123) - *** FresnelRefraction *** -Track (trackID 198, parentID 1) is processed with stopping code 2 -### pop requested out of 197 stacked tracks. ** Photon absorbed! ** +Track (trackID 199, parentID 1) is processed with stopping code 2 +### pop requested out of 198 stacked tracks. + +** Photon absorbed! ** +Track (trackID 198, parentID 1) is processed with stopping code 2 +### pop requested out of 197 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74042,-0.671615,0.0266912) + Old Polarization: (-0.672145,-0.739836,0.0294024) + New Momentum Direction: (0.417093,-0.908147,0.0360915) + New Polarization: (-0.908864,-0.416764,0.016563) + *** FresnelRefraction *** Track (trackID 197, parentID 1) is processed with stopping code 2 ### pop requested out of 196 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.73982,-0.420838,0.524939) - Old Polarization: (-0.672804,-0.462757,0.577226) - New Momentum Direction: (0.413525,-0.569512,0.710389) - New Polarization: (-0.910493,-0.25866,0.322643) + Old Momentum Direction: (0.7361,0.670472,0.0928636) + Old Polarization: (-0.676873,0.729139,0.100989) + New Momentum Direction: (0.390441,0.911922,0.126306) + New Polarization: (-0.920628,0.386749,0.0535666) *** FresnelRefraction *** Track (trackID 196, parentID 1) is processed with stopping code 2 ### pop requested out of 195 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.735925,0.504302,0.451768) -Old Polarization: (-0.677063,0.548144,0.491043) -New Polarization: (0.551861,-0.469607,-0.689144) -Polarization Change: (0.551861,-0.469607,-0.689144) -New Momentum Direction: (0.579205,-0.378697,0.72188) -Momentum Change: (0.579205,-0.378697,0.72188) ** Photon absorbed! ** Track (trackID 195, parentID 1) is processed with stopping code 2 ### pop requested out of 194 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741754,-0.125435,0.658837) - Old Polarization: (-0.670672,-0.13873,0.728666) - New Momentum Direction: (0.424901,-0.169306,0.889266) - New Polarization: (-0.90524,-0.0794691,0.417404) + Old Momentum Direction: (0.737445,0.177217,-0.651743) + Old Polarization: (-0.675408,0.193495,-0.711607) + New Momentum Direction: (0.398979,0.240597,-0.884832) + New Polarization: (-0.91696,0.104686,-0.385) *** FresnelRefraction *** Track (trackID 194, parentID 1) is processed with stopping code 2 ### pop requested out of 193 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.743406,0.322222,0.586105) + Old Polarization: (-0.66884,0.358146,0.651448) + New Momentum Direction: (0.434314,0.433954,0.789339) + New Polarization: (-0.900761,0.209237,0.38059) + *** FresnelRefraction *** Track (trackID 193, parentID 1) is processed with stopping code 2 ### pop requested out of 192 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741048,0.595394,0.310409) - Old Polarization: (-0.671452,0.657107,0.342583) - New Momentum Direction: (0.420794,0.804399,0.419374) - New Polarization: (-0.907156,0.373129,0.194531) + Old Momentum Direction: (0.736667,0.623629,-0.261552) + Old Polarization: (-0.676256,0.679338,-0.284917) + New Momentum Direction: (0.394069,0.847557,-0.355468) + New Polarization: (-0.919081,0.363402,-0.152412) *** FresnelRefraction *** Track (trackID 192, parentID 1) is processed with stopping code 2 ### pop requested out of 191 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736666,0.676255,0.00167989) - Old Polarization: (-0.676257,0.736664,0.00182995) - New Momentum Direction: (0.394062,0.919081,0.0022831) - New Polarization: (-0.919084,0.394061,0.000978891) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 191, parentID 1) is processed with stopping code 2 ### pop requested out of 190 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738183,-0.581462,0.342035) - Old Polarization: (-0.6746,-0.636266,0.374272) - New Momentum Direction: (0.403573,-0.788626,0.463895) - New Polarization: (-0.914947,-0.347854,0.204619) + Old Momentum Direction: (0.737517,-0.0345049,0.674447) + Old Polarization: (-0.675329,-0.0376823,0.736554) + New Momentum Direction: (0.399432,-0.0468406,0.915565) + New Polarization: (-0.916763,-0.0204084,0.398911) *** FresnelRefraction *** Track (trackID 190, parentID 1) is processed with stopping code 2 ### pop requested out of 189 stacked tracks. @@ -960,87 +855,95 @@ Track (trackID 190, parentID 1) is processed with stopping code 2 ** Photon absorbed! ** Track (trackID 189, parentID 1) is processed with stopping code 2 ### pop requested out of 188 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73666,0.24141,0.631707) - Old Polarization: (-0.676264,0.26297,0.688124) - New Momentum Direction: (0.394023,0.328097,0.858544) - New Polarization: (-0.9191,0.140657,0.368063) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 188, parentID 1) is processed with stopping code 2 ### pop requested out of 187 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741636,-0.227104,-0.63119) - Old Polarization: (-0.670803,-0.251085,-0.69784) - New Momentum Direction: (0.424215,-0.306583,-0.852085) - New Polarization: (-0.905562,-0.14362,-0.399163) + Old Momentum Direction: (0.736719,0.618929,-0.272344) + Old Polarization: (-0.676199,0.674324,-0.296719) + New Momentum Direction: (0.394402,0.84111,-0.370109) + New Polarization: (-0.918938,0.360999,-0.158848) *** FresnelRefraction *** Track (trackID 187, parentID 1) is processed with stopping code 2 ### pop requested out of 186 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736372,-0.660024,0.148744) - Old Polarization: (-0.676577,-0.718356,0.16189) - New Momentum Direction: (0.392188,-0.897379,0.202235) - New Polarization: (-0.919885,-0.382593,0.0862216) + Old Momentum Direction: (0.737332,0.446481,-0.506947) + Old Polarization: (-0.67553,0.487329,-0.553326) + New Momentum Direction: (0.398276,0.606253,-0.688356) + New Polarization: (-0.917266,0.263235,-0.298884) *** FresnelRefraction *** Track (trackID 186, parentID 1) is processed with stopping code 2 ### pop requested out of 185 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737423,-0.297385,0.60644) - Old Polarization: (-0.675431,-0.32468,0.6621) - New Momentum Direction: (0.398844,-0.403754,0.823351) - New Polarization: (-0.917019,-0.175607,0.358105) + Old Momentum Direction: (0.743444,0.415689,0.523921) + Old Polarization: (-0.668798,0.462085,0.582397) + New Momentum Direction: (0.434526,0.559802,0.705556) + New Polarization: (-0.900659,0.270078,0.340397) *** FresnelRefraction *** Track (trackID 185, parentID 1) is processed with stopping code 2 ### pop requested out of 184 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738505,-0.0914989,0.668011) - Old Polarization: (-0.674248,-0.100219,0.731673) - New Momentum Direction: (0.405553,-0.124044,0.905616) - New Polarization: (-0.914071,-0.0550357,0.401802) + Old Momentum Direction: (0.742967,-0.502636,-0.441993) + Old Polarization: (-0.669328,-0.557935,-0.49062) + New Momentum Direction: (0.431835,-0.677326,-0.595607) + New Polarization: (-0.901953,-0.324289,-0.285163) *** FresnelRefraction *** Track (trackID 184, parentID 1) is processed with stopping code 2 ### pop requested out of 183 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.741496,0.663497,-0.0997765) + Old Polarization: (-0.670957,0.733251,-0.110266) + New Momentum Direction: (0.423404,0.895868,-0.13472) + New Polarization: (-0.905941,0.418696,-0.0629633) + *** FresnelRefraction *** Track (trackID 183, parentID 1) is processed with stopping code 2 ### pop requested out of 182 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.744447,-0.447247,0.49575) + Old Polarization: (-0.667681,-0.49867,0.552748) + New Momentum Direction: (0.440112,-0.601489,0.666718) + New Polarization: (-0.897943,-0.29481,0.326781) + *** FresnelRefraction *** Track (trackID 182, parentID 1) is processed with stopping code 2 ### pop requested out of 181 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738204,0.424169,0.524534) - Old Polarization: (-0.674578,0.464176,0.574008) - New Momentum Direction: (0.403699,0.575276,0.711396) - New Polarization: (-0.914892,0.253842,0.313906) + Old Momentum Direction: (0.739155,0.646676,-0.188307) + Old Polarization: (-0.673535,0.709679,-0.206653) + New Momentum Direction: (0.409518,0.875922,-0.255062) + New Polarization: (-0.912302,0.393187,-0.114493) *** FresnelRefraction *** Track (trackID 181, parentID 1) is processed with stopping code 2 ### pop requested out of 180 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.743942,0.556562,-0.369852) - Old Polarization: (-0.668245,0.619607,-0.411747) - New Momentum Direction: (0.437307,0.749011,-0.49774) - New Polarization: (-0.899312,0.36422,-0.242035) + Old Momentum Direction: (0.739936,-0.6716,0.0380585) + Old Polarization: (-0.672678,-0.73875,0.0418638) + New Momentum Direction: (0.414215,-0.908721,0.0514958) + New Polarization: (-0.910179,-0.413551,0.0234353) *** FresnelRefraction *** Track (trackID 180, parentID 1) is processed with stopping code 2 ### pop requested out of 179 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.736546,-0.505038,0.44993) + Old Polarization: (-0.676387,-0.549956,0.489947) + New Momentum Direction: (0.393299,-0.686496,0.611587) + New Polarization: (-0.91941,-0.293665,0.261621) + *** FresnelRefraction *** Track (trackID 179, parentID 1) is processed with stopping code 2 ### pop requested out of 178 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736536,0.309081,0.601651) - Old Polarization: (-0.676398,0.336561,0.655143) - New Momentum Direction: (0.393235,0.420138,0.817833) - New Polarization: (-0.919438,0.179689,0.349779) + Old Momentum Direction: (0.742915,-0.0682557,0.665896) + Old Polarization: (-0.669385,-0.0757534,0.739043) + New Momentum Direction: (0.431545,-0.0919842,0.897389) + New Polarization: (-0.902091,-0.0440037,0.429296) *** FresnelRefraction *** Track (trackID 178, parentID 1) is processed with stopping code 2 ### pop requested out of 177 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741979,-0.482883,0.465071) - Old Polarization: (-0.670423,-0.534422,0.51471) - New Momentum Direction: (0.426197,-0.651574,0.627541) - New Polarization: (-0.904631,-0.306975,0.295652) + Old Momentum Direction: (0.73912,0.0633263,-0.670591) + Old Polarization: (-0.673574,0.0694886,-0.735846) + New Momentum Direction: (0.409304,0.0857794,-0.908357) + New Polarization: (-0.912398,0.0384809,-0.407492) *** FresnelRefraction *** Track (trackID 177, parentID 1) is processed with stopping code 2 ### pop requested out of 176 stacked tracks. @@ -1048,111 +951,98 @@ Track (trackID 177, parentID 1) is processed with stopping code 2 ** Photon absorbed! ** Track (trackID 176, parentID 1) is processed with stopping code 2 ### pop requested out of 175 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742178,0.167292,-0.648988) - Old Polarization: (-0.670203,0.185258,-0.718685) - New Momentum Direction: (0.427339,0.225673,-0.875473) - New Polarization: (-0.904091,0.10667,-0.413812) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 175, parentID 1) is processed with stopping code 2 ### pop requested out of 174 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.736526,0.510338,0.443942) +Old Polarization: (-0.676409,0.555695,0.483398) +New Polarization: (-0.294192,0.614211,0.732254) +Polarization Change: (-0.294192,0.614211,0.732254) +New Momentum Direction: (0.923597,-0.0143438,0.383097) +Momentum Change: (0.923597,-0.0143438,0.383097) Photon at Boundary! - Old Momentum Direction: (0.735974,0.676241,0.0322435) - Old Polarization: (-0.67701,0.735139,0.0350518) - New Momentum Direction: (0.389631,0.919926,0.0438625) - New Polarization: (-0.920971,0.389189,0.0185567) + Old Momentum Direction: (0.923597,-0.0143438,0.383097) + Old Polarization: (-0.294192,0.614211,0.732254) + New Momentum Direction: (0.853482,-0.019498,0.520757) + New Polarization: (-0.445414,0.49143,0.7484) *** FresnelRefraction *** Track (trackID 174, parentID 1) is processed with stopping code 2 ### pop requested out of 173 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739004,0.494932,-0.457073) - Old Polarization: (-0.673701,0.542906,-0.501377) - New Momentum Direction: (0.408599,0.670522,-0.619231) - New Polarization: (-0.912714,0.300176,-0.277214) + Old Momentum Direction: (0.741157,0.306759,-0.597148) + Old Polarization: (-0.671332,0.338665,-0.659257) + New Momentum Direction: (0.42143,0.414382,-0.80665) + New Polarization: (-0.906861,0.192568,-0.37486) *** FresnelRefraction *** Track (trackID 173, parentID 1) is processed with stopping code 2 ### pop requested out of 172 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736558,-0.535604,-0.41305) - Old Polarization: (-0.676374,-0.583263,-0.449803) - New Momentum Direction: (0.393379,-0.728032,-0.561447) - New Polarization: (-0.919377,-0.311507,-0.240229) + Old Momentum Direction: (0.740207,0.518195,0.428448) + Old Polarization: (-0.672379,0.570469,0.471669) + New Momentum Direction: (0.415834,0.700896,0.579506) + New Polarization: (-0.909441,0.320478,0.264974) *** FresnelRefraction *** Track (trackID 172, parentID 1) is processed with stopping code 2 ### pop requested out of 171 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736839,-0.211299,-0.6422) - Old Polarization: (-0.676068,-0.230292,-0.699927) - New Momentum Direction: (0.395165,-0.287103,-0.872592) - New Polarization: (-0.91861,-0.123505,-0.375369) + Old Momentum Direction: (0.738984,-0.313888,-0.596136) + Old Polarization: (-0.673723,-0.344292,-0.65388) + New Momentum Direction: (0.408478,-0.425259,-0.807651) + New Polarization: (-0.912768,-0.19031,-0.361437) *** FresnelRefraction *** Track (trackID 171, parentID 1) is processed with stopping code 2 ### pop requested out of 170 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.73746,0.337846,0.584818) +Old Polarization: (-0.67539,0.368895,0.638564) +New Polarization: (-0.863578,0.50392,-0.0172409) +Polarization Change: (-0.863578,0.50392,-0.0172409) +New Momentum Direction: (0.0317135,0.0201588,-0.999294) +Momentum Change: (0.0317135,0.0201588,-0.999294) Photon at Boundary! - Old Momentum Direction: (0.739307,0.182079,0.648284) - Old Polarization: (-0.673369,0.199909,0.711766) - New Momentum Direction: (0.410437,0.246575,0.87792) - New Polarization: (-0.911889,0.110982,0.395147) + Old Momentum Direction: (0.0317135,0.0201588,-0.999294) + Old Polarization: (-0.863578,0.50392,-0.0172409) + New Momentum Direction: (0.0430546,0.0273678,-0.998698) + New Polarization: (0.0445733,0.998577,0.029286) *** FresnelRefraction *** Track (trackID 170, parentID 1) is processed with stopping code 2 ### pop requested out of 169 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736971,-0.201368,0.645233) - Old Polarization: (-0.675925,-0.219554,0.703507) - New Momentum Direction: (0.395997,-0.27356,0.876557) - New Polarization: (-0.918252,-0.117973,0.378015) + Old Momentum Direction: (0.742694,0.0630562,-0.666655) + Old Polarization: (-0.669631,0.0699363,-0.739394) + New Momentum Direction: (0.43029,0.0850025,-0.89868) + New Polarization: (-0.902691,0.0405185,-0.428378) *** FresnelRefraction *** Track (trackID 169, parentID 1) is processed with stopping code 2 ### pop requested out of 168 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.738796,-0.413444,-0.532206) -Old Polarization: (-0.673929,-0.45324,-0.583433) -New Polarization: (-0.793339,-0.362469,0.489111) -Polarization Change: (-0.793339,-0.362469,0.489111) -New Momentum Direction: (-0.379829,-0.333159,-0.86298) -Momentum Change: (-0.379829,-0.333159,-0.86298) Photon at Boundary! - Old Momentum Direction: (-0.379829,-0.333159,-0.86298) - Old Polarization: (-0.793339,-0.362469,0.489111) - New Momentum Direction: (-0.514728,-0.451482,-0.728848) - New Polarization: (-0.659413,-0.334828,0.6731) + Old Momentum Direction: (0.736875,-0.454578,0.500374) + Old Polarization: (-0.676029,-0.495492,0.54541) + New Momentum Direction: (0.395392,-0.61763,0.679852) + New Polarization: (-0.918513,-0.265871,0.292656) *** FresnelRefraction *** Track (trackID 168, parentID 1) is processed with stopping code 2 ### pop requested out of 167 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736405,-0.290831,-0.61084) - Old Polarization: (-0.676541,-0.316566,-0.66489) - New Momentum Direction: (0.392396,-0.395402,-0.830471) - New Polarization: (-0.919796,-0.168683,-0.354289) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 167, parentID 1) is processed with stopping code 2 ### pop requested out of 166 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.735943,0.399172,0.546854) -Old Polarization: (-0.677043,0.433898,0.594428) -New Polarization: (-0.478555,-0.321858,0.816941) -Polarization Change: (-0.478555,-0.321858,0.816941) -New Momentum Direction: (0.480108,-0.874911,-0.0634556) -Momentum Change: (0.480108,-0.874911,-0.0634556) Photon at Boundary! - Old Momentum Direction: (0.480108,-0.874911,-0.0634556) - Old Polarization: (-0.478555,-0.321858,0.816941) - New Momentum Direction: (-0.480108,-0.874911,-0.0634556) - New Polarization: (-0.478555,0.321858,-0.816941) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.480108,-0.874911,-0.0634556) -Old Polarization: (-0.478555,0.321858,-0.816941) -New Polarization: (-0.213533,-0.168736,-0.962254) -Polarization Change: (-0.213533,-0.168736,-0.962254) -New Momentum Direction: (-0.54454,0.838326,-0.0261662) -Momentum Change: (-0.54454,0.838326,-0.0261662) - -** Photon absorbed! ** + Old Momentum Direction: (0.745131,-0.520739,-0.416666) + Old Polarization: (-0.666918,-0.581809,-0.465531) + New Momentum Direction: (0.443864,-0.699683,-0.559847) + New Polarization: (-0.896094,-0.346575,-0.27731) + *** FresnelRefraction *** Track (trackID 166, parentID 1) is processed with stopping code 2 ### pop requested out of 165 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.7386,0.1422,-0.658976) + Old Polarization: (-0.674144,0.155796,-0.721982) + New Momentum Direction: (0.406138,0.192754,-0.893251) + New Polarization: (-0.913812,0.0856683,-0.397) + *** FresnelRefraction *** Track (trackID 165, parentID 1) is processed with stopping code 2 ### pop requested out of 164 stacked tracks. @@ -1160,154 +1050,130 @@ Track (trackID 165, parentID 1) is processed with stopping code 2 Track (trackID 164, parentID 1) is processed with stopping code 2 ### pop requested out of 163 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742916,0.196312,-0.639951) - Old Polarization: (-0.669385,0.217877,-0.710249) - New Momentum Direction: (0.431546,0.264559,-0.862425) - New Polarization: (-0.902091,0.126561,-0.41257) + Old Momentum Direction: (0.736248,-0.210635,-0.643095) + Old Polarization: (-0.676712,-0.229167,-0.699674) + New Momentum Direction: (0.391394,-0.286431,-0.87451) + New Polarization: (-0.920223,-0.121826,-0.371951) *** FresnelRefraction *** Track (trackID 163, parentID 1) is processed with stopping code 2 ### pop requested out of 162 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741381,-0.418959,-0.52424) - Old Polarization: (-0.671084,-0.462845,-0.579154) - New Momentum Direction: (0.422736,-0.565775,-0.70795) - New Polarization: (-0.906253,-0.263915,-0.330234) + Old Momentum Direction: (0.74093,0.29532,0.603166) + Old Polarization: (-0.671582,0.325815,0.665448) + New Momentum Direction: (0.4201,0.399053,0.81503) + New Polarization: (-0.907478,0.184734,0.377303) *** FresnelRefraction *** Track (trackID 162, parentID 1) is processed with stopping code 2 ### pop requested out of 161 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.741564,0.621063,0.253697) - Old Polarization: (-0.670882,0.686498,0.280427) - New Momentum Direction: (0.423802,0.838496,0.342516) - New Polarization: (-0.905755,0.392331,0.160263) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 161, parentID 1) is processed with stopping code 2 ### pop requested out of 160 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738839,-0.519697,-0.42899) - Old Polarization: (-0.673882,-0.569791,-0.470341) - New Momentum Direction: (0.407597,-0.704229,-0.581314) - New Polarization: (-0.913162,-0.314338,-0.259474) + Old Momentum Direction: (0.736022,0.676787,0.0152323) + Old Polarization: (-0.676958,0.735835,0.0165613) + New Momentum Direction: (0.389936,0.920609,0.02072) + New Polarization: (-0.920842,0.389837,0.00877399) *** FresnelRefraction *** Track (trackID 160, parentID 1) is processed with stopping code 2 ### pop requested out of 159 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742052,0.00877387,0.670285) - Old Polarization: (-0.670342,0.00971246,0.741989) - New Momentum Direction: (0.426618,0.0118378,0.904354) - New Polarization: (-0.904432,0.00558386,0.426582) + Old Momentum Direction: (0.739737,0.241168,-0.628194) + Old Polarization: (-0.672896,0.265124,-0.690594) + New Momentum Direction: (0.413024,0.326404,-0.850218) + New Polarization: (-0.91072,0.148029,-0.385586) *** FresnelRefraction *** Track (trackID 159, parentID 1) is processed with stopping code 2 ### pop requested out of 158 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741234,0.272516,0.613438) - Old Polarization: (-0.671246,0.30093,0.677399) - New Momentum Direction: (0.421882,0.368086,0.82857) - New Polarization: (-0.906651,0.171278,0.385549) + Old Momentum Direction: (0.736045,-0.506945,-0.448604) + Old Polarization: (-0.676933,-0.551213,-0.487777) + New Momentum Direction: (0.390085,-0.689557,-0.6102) + New Polarization: (-0.920779,-0.292129,-0.258509) *** FresnelRefraction *** Track (trackID 158, parentID 1) is processed with stopping code 2 ### pop requested out of 157 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736225,0.0603963,-0.674037) - Old Polarization: (-0.676737,0.0657054,-0.733287) - New Momentum Direction: (0.391242,0.0821323,-0.916615) - New Polarization: (-0.920288,0.034917,-0.389681) + Old Momentum Direction: (0.742948,0.649433,-0.162064) + Old Polarization: (-0.66935,0.720842,-0.179884) + New Momentum Direction: (0.431727,0.875166,-0.218395) + New Polarization: (-0.902004,0.418882,-0.104531) *** FresnelRefraction *** Track (trackID 157, parentID 1) is processed with stopping code 2 ### pop requested out of 156 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739474,0.252176,-0.624167) - Old Polarization: (-0.673185,0.277008,-0.68563) - New Momentum Direction: (0.411448,0.341424,-0.845068) - New Polarization: (-0.911433,0.154129,-0.381489) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 156, parentID 1) is processed with stopping code 2 ### pop requested out of 155 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736502,0.295706,0.608377) - Old Polarization: (-0.676436,0.321964,0.6624) - New Momentum Direction: (0.393016,0.401977,0.827015) - New Polarization: (-0.919532,0.171808,0.353473) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 155, parentID 1) is processed with stopping code 2 ### pop requested out of 154 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742366,0.577681,0.33938) - Old Polarization: (-0.669995,0.64008,0.376038) - New Momentum Direction: (0.428415,0.779083,0.457701) - New Polarization: (-0.903582,0.369386,0.217009) + Old Momentum Direction: (0.736282,-0.471045,0.485805) + Old Polarization: (-0.676675,-0.512538,0.528598) + New Momentum Direction: (0.391608,-0.640519,0.66059) + New Polarization: (-0.920132,-0.272605,0.281147) *** FresnelRefraction *** Track (trackID 154, parentID 1) is processed with stopping code 2 ### pop requested out of 153 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742158,-0.317186,0.590418) - Old Polarization: (-0.670224,-0.351229,0.653787) - New Momentum Direction: (0.427229,-0.427889,0.796484) - New Polarization: (-0.904144,-0.202187,0.376357) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 153, parentID 1) is processed with stopping code 2 ### pop requested out of 152 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742213,0.159661,0.650867) - Old Polarization: (-0.670164,0.176826,0.720842) - New Momentum Direction: (0.427544,0.215369,0.877965) - New Polarization: (-0.903995,0.101858,0.415233) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 152, parentID 1) is processed with stopping code 2 ### pop requested out of 151 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739168,-0.414376,0.530964) - Old Polarization: (-0.673521,-0.454765,0.582717) - New Momentum Direction: (0.409598,-0.561261,0.719177) - New Polarization: (-0.912266,-0.252,0.322903) + Old Momentum Direction: (0.738198,0.233589,0.632851) + Old Polarization: (-0.674584,0.255617,0.692529) + New Momentum Direction: (0.403663,0.316806,0.858306) + New Polarization: (-0.914908,0.139777,0.37869) *** FresnelRefraction *** Track (trackID 151, parentID 1) is processed with stopping code 2 ### pop requested out of 150 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738817,0.152456,0.656435) - Old Polarization: (-0.673906,0.16714,0.719663) - New Momentum Direction: (0.407462,0.206596,0.889547) - New Polarization: (-0.913222,0.0921788,0.396898) + Old Momentum Direction: (0.737051,-0.311929,-0.599547) + Old Polarization: (-0.675837,-0.340182,-0.65385) + New Momentum Direction: (0.396502,-0.423713,-0.814404) + New Polarization: (-0.918034,-0.183003,-0.351744) *** FresnelRefraction *** Track (trackID 150, parentID 1) is processed with stopping code 2 ### pop requested out of 149 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738495,-0.561449,0.373362) - Old Polarization: (-0.674258,-0.614939,0.408932) - New Momentum Direction: (0.405495,-0.761161,0.506169) - New Polarization: (-0.914097,-0.337652,0.224538) + Old Momentum Direction: (0.741393,0.654094,0.149989) + Old Polarization: (-0.671071,0.722638,0.165707) + New Momentum Direction: (0.422808,0.883294,0.202547) + New Polarization: (-0.906219,0.412112,0.0945007) *** FresnelRefraction *** Track (trackID 149, parentID 1) is processed with stopping code 2 ### pop requested out of 148 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73845,-0.216179,-0.638716) - Old Polarization: (-0.674308,-0.236743,-0.699472) - New Momentum Direction: (0.405216,-0.293094,-0.865966) - New Polarization: (-0.914221,-0.12991,-0.383827) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 148, parentID 1) is processed with stopping code 2 ### pop requested out of 147 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739179,0.661008,0.129161) - Old Polarization: (-0.673509,0.725459,0.141755) - New Momentum Direction: (0.409663,0.895305,0.174943) - New Polarization: (-0.912237,0.40206,0.0785627) + Old Momentum Direction: (0.736954,-0.570544,-0.362462) + Old Polarization: (-0.675943,-0.622041,-0.395178) + New Momentum Direction: (0.395891,-0.775108,-0.49242) + New Polarization: (-0.918298,-0.33416,-0.212289) *** FresnelRefraction *** Track (trackID 147, parentID 1) is processed with stopping code 2 ### pop requested out of 146 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739027,-0.659811,0.135977) - Old Polarization: (-0.673676,-0.723816,0.149168) - New Momentum Direction: (0.408738,-0.893867,0.184213) - New Polarization: (-0.912652,-0.400325,0.0825011) + Old Momentum Direction: (0.736563,-0.391762,-0.55136) + Old Polarization: (-0.676369,-0.426627,-0.600428) + New Momentum Direction: (0.393408,-0.532508,-0.749443) + New Polarization: (-0.919364,-0.227867,-0.320697) *** FresnelRefraction *** Track (trackID 146, parentID 1) is processed with stopping code 2 ### pop requested out of 145 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739537,0.267501,0.61768) - Old Polarization: (-0.673116,0.293897,0.67863) - New Momentum Direction: (0.411824,0.362143,0.836214) - New Polarization: (-0.911263,0.163662,0.377907) + Old Momentum Direction: (0.744091,-0.623542,0.239842) + Old Polarization: (-0.668078,-0.694487,0.267131) + New Momentum Direction: (0.438138,-0.838983,0.322711) + New Polarization: (-0.898908,-0.40893,0.157293) *** FresnelRefraction *** Track (trackID 145, parentID 1) is processed with stopping code 2 ### pop requested out of 144 stacked tracks. @@ -1316,91 +1182,91 @@ Track (trackID 145, parentID 1) is processed with stopping code 2 Track (trackID 144, parentID 1) is processed with stopping code 2 ### pop requested out of 143 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741549,0.41201,-0.529483) - Old Polarization: (-0.670899,0.455398,-0.585242) - New Momentum Direction: (0.423711,0.556266,-0.714869) - New Polarization: (-0.905797,0.260208,-0.334399) + Old Momentum Direction: (0.737055,-0.574672,-0.355672) + Old Polarization: (-0.675833,-0.62673,-0.387891) + New Momentum Direction: (0.396526,-0.780611,-0.483129) + New Polarization: (-0.918023,-0.337173,-0.20868) *** FresnelRefraction *** Track (trackID 143, parentID 1) is processed with stopping code 2 ### pop requested out of 142 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736597,0.474371,-0.482075) - Old Polarization: (-0.676331,0.516641,-0.525031) - New Momentum Direction: (0.393627,0.644766,-0.655237) - New Polarization: (-0.91927,0.276086,-0.280569) + Old Momentum Direction: (0.74185,0.481904,-0.466292) + Old Polarization: (-0.670566,0.533132,-0.51586) + New Momentum Direction: (0.425451,0.650367,-0.629297) + New Polarization: (-0.904982,0.305751,-0.295846) *** FresnelRefraction *** Track (trackID 142, parentID 1) is processed with stopping code 2 ### pop requested out of 141 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737441,0.0310574,-0.674697) - Old Polarization: (-0.675411,0.0339097,-0.736661) - New Momentum Direction: (0.398958,0.042165,-0.915999) - New Polarization: (-0.916969,0.0183453,-0.398536) + Old Momentum Direction: (0.738275,-0.446782,0.505308) + Old Polarization: (-0.6745,-0.489026,0.553086) + New Momentum Direction: (0.40414,-0.605886,0.685254) + New Polarization: (-0.914697,-0.267698,0.302765) *** FresnelRefraction *** Track (trackID 141, parentID 1) is processed with stopping code 2 ### pop requested out of 140 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737408,0.617303,0.274165) - Old Polarization: (-0.675448,0.67393,0.299314) - New Momentum Direction: (0.398749,0.838117,0.372235) - New Polarization: (-0.91706,0.364423,0.161852) + Old Momentum Direction: (0.739916,0.56929,-0.358377) + Old Polarization: (-0.6727,0.626173,-0.394186) + New Momentum Direction: (0.414095,0.770309,-0.484922) + New Polarization: (-0.910234,0.350439,-0.220607) *** FresnelRefraction *** Track (trackID 140, parentID 1) is processed with stopping code 2 ### pop requested out of 139 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.740143,0.224942,-0.63371) + Old Polarization: (-0.672449,0.247587,-0.697505) + New Momentum Direction: (0.415452,0.304277,-0.857214) + New Polarization: (-0.909615,0.138974,-0.391518) + *** FresnelRefraction *** Track (trackID 139, parentID 1) is processed with stopping code 2 ### pop requested out of 138 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738593,0.274571,0.615703) - Old Polarization: (-0.674151,0.300817,0.674558) - New Momentum Direction: (0.406095,0.372189,0.834603) - New Polarization: (-0.913831,0.165396,0.370887) + Old Momentum Direction: (0.742166,-0.638327,0.204274) + Old Polarization: (-0.670216,-0.706854,0.226204) + New Momentum Direction: (0.427271,-0.861105,0.275567) + New Polarization: (-0.904124,-0.406941,0.130227) *** FresnelRefraction *** Track (trackID 138, parentID 1) is processed with stopping code 2 ### pop requested out of 137 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73615,0.630768,0.245387) - Old Polarization: (-0.676818,0.686063,0.266898) - New Momentum Direction: (0.390766,0.85786,0.333732) - New Polarization: (-0.92049,0.364179,0.141676) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 137, parentID 1) is processed with stopping code 2 ### pop requested out of 136 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736032,0.513319,0.441316) - Old Polarization: (-0.676946,0.558123,0.479836) - New Momentum Direction: (0.390006,0.698239,0.600298) - New Polarization: (-0.920812,0.295736,0.254254) + Old Momentum Direction: (0.737102,-0.656027,0.1622) + Old Polarization: (-0.675781,-0.715556,0.176918) + New Momentum Direction: (0.396828,-0.891061,0.220311) + New Polarization: (-0.917893,-0.385228,0.095246) *** FresnelRefraction *** Track (trackID 136, parentID 1) is processed with stopping code 2 ### pop requested out of 135 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.735888,0.641302,0.217257) - Old Polarization: (-0.677103,0.696978,0.236119) - New Momentum Direction: (0.389074,0.872498,0.295581) - New Polarization: (-0.921207,0.368502,0.124839) + Old Momentum Direction: (0.735812,0.612664,-0.288486) + Old Polarization: (-0.677186,0.665703,-0.313461) + New Momentum Direction: (0.388581,0.833622,-0.39253) + New Polarization: (-0.921415,0.351557,-0.165538) *** FresnelRefraction *** Track (trackID 135, parentID 1) is processed with stopping code 2 ### pop requested out of 134 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738684,-0.626937,0.247581) - Old Polarization: (-0.674052,-0.687051,0.27132) - New Momentum Direction: (0.406649,-0.849726,0.335562) - New Polarization: (-0.913584,-0.378225,0.149363) + Old Momentum Direction: (0.739847,-0.365311,0.564955) + Old Polarization: (-0.672775,-0.401731,0.621278) + New Momentum Direction: (0.413686,-0.49435,0.764514) + New Polarization: (-0.91042,-0.224628,0.347388) *** FresnelRefraction *** Track (trackID 134, parentID 1) is processed with stopping code 2 ### pop requested out of 133 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.738577,0.231672,0.633113) - Old Polarization: (-0.674169,0.253806,0.693598) - New Momentum Direction: (0.405995,0.314045,0.858221) - New Polarization: (-0.913875,0.139517,0.38127) - *** FresnelRefraction *** -Track (trackID 133, parentID 1) is processed with stopping code 2 -### pop requested out of 132 stacked tracks. ** Photon absorbed! ** +Track (trackID 133, parentID 1) is processed with stopping code 2 +### pop requested out of 132 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.739062,0.512961,0.436644) + Old Polarization: (-0.673637,0.562781,0.479052) + New Momentum Direction: (0.408956,0.694891,0.591508) + New Polarization: (-0.912554,0.311411,0.265081) + *** FresnelRefraction *** Track (trackID 132, parentID 1) is processed with stopping code 2 ### pop requested out of 131 stacked tracks. @@ -1408,130 +1274,153 @@ Track (trackID 132, parentID 1) is processed with stopping code 2 Track (trackID 131, parentID 1) is processed with stopping code 2 ### pop requested out of 130 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737839,-0.640351,-0.213409) - Old Polarization: (-0.674976,-0.699989,-0.233284) - New Momentum Direction: (0.401442,-0.868901,-0.289577) - New Polarization: (-0.915884,-0.380849,-0.126925) + Old Momentum Direction: (0.739048,-0.451947,-0.499553) + Old Polarization: (-0.673653,-0.495819,-0.548046) + New Momentum Direction: (0.408865,-0.61225,-0.676741) + New Polarization: (-0.912595,-0.274303,-0.303197) *** FresnelRefraction *** Track (trackID 130, parentID 1) is processed with stopping code 2 ### pop requested out of 129 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.738403,0.541417,-0.402031) + Old Polarization: (-0.67436,0.592835,-0.440211) + New Momentum Direction: (0.404928,0.734095,-0.545104) + New Polarization: (-0.914349,0.325101,-0.241405) + *** FresnelRefraction *** Track (trackID 129, parentID 1) is processed with stopping code 2 ### pop requested out of 128 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.738768,-0.248028,0.626661) - Old Polarization: (-0.67396,-0.271878,0.686921) - New Momentum Direction: (0.407164,-0.336129,0.849255) - New Polarization: (-0.913355,-0.149843,0.378589) - *** FresnelRefraction *** -Track (trackID 128, parentID 1) is processed with stopping code 2 -### pop requested out of 127 stacked tracks. ** Photon absorbed! ** +Track (trackID 128, parentID 1) is processed with stopping code 2 +### pop requested out of 127 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.742504,-0.443079,-0.502363) + Old Polarization: (-0.669842,-0.491143,-0.556858) + New Momentum Direction: (0.429206,-0.597443,-0.677381) + New Polarization: (-0.903207,-0.283906,-0.321893) + *** FresnelRefraction *** Track (trackID 127, parentID 1) is processed with stopping code 2 ### pop requested out of 126 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739182,-0.384331,-0.553082) - Old Polarization: (-0.673505,-0.421809,-0.607015) - New Momentum Direction: (0.409683,-0.520556,-0.74912) - New Polarization: (-0.912228,-0.233782,-0.336431) + Old Momentum Direction: (0.737223,0.590994,0.327458) + Old Polarization: (-0.67565,0.644852,0.3573) + New Momentum Direction: (0.397587,0.802598,0.444704) + New Polarization: (-0.917565,0.347771,0.192693) *** FresnelRefraction *** Track (trackID 126, parentID 1) is processed with stopping code 2 ### pop requested out of 125 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.741825,-0.59458,0.310113) - Old Polarization: (-0.670593,-0.657738,0.343054) - New Momentum Direction: (0.42531,-0.802459,0.418535) - New Polarization: (-0.905048,-0.3771,0.196683) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 125, parentID 1) is processed with stopping code 2 ### pop requested out of 124 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.74124,-0.385957,0.549182) - Old Polarization: (-0.67124,-0.426206,0.606453) - New Momentum Direction: (0.421913,-0.521307,0.741774) - New Polarization: (-0.906636,-0.242596,0.345192) + Old Momentum Direction: (0.738533,0.0944575,-0.667568) + Old Polarization: (-0.674218,0.103468,-0.731249) + New Momentum Direction: (0.405724,0.12805,-0.904981) + New Polarization: (-0.913995,0.0568418,-0.401723) *** FresnelRefraction *** Track (trackID 124, parentID 1) is processed with stopping code 2 ### pop requested out of 123 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.74143,-0.308948,0.595678) - Old Polarization: (-0.67103,-0.341361,0.658173) - New Momentum Direction: (0.423023,-0.417185,0.804368) - New Polarization: (-0.906119,-0.194763,0.37552) + Old Momentum Direction: (0.741892,0.0325406,-0.669729) + Old Polarization: (-0.670519,0.0360044,-0.741018) + New Momentum Direction: (0.425697,0.0439136,-0.903799) + New Polarization: (-0.904866,0.0206593,-0.425196) *** FresnelRefraction *** Track (trackID 123, parentID 1) is processed with stopping code 2 ### pop requested out of 122 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.743867,-0.10827,0.659499) + Old Polarization: (-0.668328,-0.120508,0.734041) + New Momentum Direction: (0.436891,-0.145723,0.887632) + New Polarization: (-0.899514,-0.0707773,0.43112) + *** FresnelRefraction *** Track (trackID 122, parentID 1) is processed with stopping code 2 ### pop requested out of 121 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.743087,-0.00371966,0.669185) - Old Polarization: (-0.669195,-0.00413038,0.743075) - New Momentum Direction: (0.432515,-0.00501161,0.901613) - New Polarization: (-0.901627,-0.00240409,0.432508) + Old Momentum Direction: (0.736028,-0.142693,-0.661741) + Old Polarization: (-0.676951,-0.155145,-0.719491) + New Momentum Direction: (0.389981,-0.194098,-0.900134) + New Polarization: (-0.920823,-0.082203,-0.381219) *** FresnelRefraction *** Track (trackID 121, parentID 1) is processed with stopping code 2 ### pop requested out of 120 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.736344,0.674834,-0.0489474) +Old Polarization: (-0.676607,0.734415,-0.0532689) +New Polarization: (0.489547,-0.864343,0.115129) +Polarization Change: (0.489547,-0.864343,0.115129) +New Momentum Direction: (-0.856354,-0.451686,0.250274) +Momentum Change: (-0.856354,-0.451686,0.250274) Photon at Boundary! - Old Momentum Direction: (0.74034,-0.4975,-0.452096) - Old Polarization: (-0.672233,-0.547904,-0.4979) - New Momentum Direction: (0.416621,-0.672784,-0.611383) - New Polarization: (-0.90908,-0.308329,-0.28019) + Old Momentum Direction: (-0.856354,-0.451686,0.250274) + Old Polarization: (0.489547,-0.864343,0.115129) + New Momentum Direction: (-0.712061,-0.614144,0.340289) + New Polarization: (0.682724,-0.718762,0.131413) *** FresnelRefraction *** Track (trackID 120, parentID 1) is processed with stopping code 2 ### pop requested out of 119 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.739731,0.279708,0.612015) + Old Polarization: (-0.672903,0.307487,0.672795) + New Momentum Direction: (0.412987,0.378569,0.828328) + New Polarization: (-0.910737,0.171668,0.375618) + *** FresnelRefraction *** Track (trackID 119, parentID 1) is processed with stopping code 2 ### pop requested out of 118 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740337,0.657452,0.140208) - Old Polarization: (-0.672236,0.724055,0.154412) - New Momentum Direction: (0.416601,0.889097,0.189608) - New Polarization: (-0.90909,0.407439,0.0868901) + Old Momentum Direction: (0.740414,-0.622009,0.254739) + Old Polarization: (-0.672151,-0.685179,0.28061) + New Momentum Direction: (0.417059,-0.841078,0.344457) + New Polarization: (-0.90888,-0.385946,0.158061) *** FresnelRefraction *** Track (trackID 118, parentID 1) is processed with stopping code 2 ### pop requested out of 117 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.738253,-0.458729,0.494519) + Old Polarization: (-0.674524,-0.502071,0.541242) + New Momentum Direction: (0.404006,-0.622107,0.670644) + New Polarization: (-0.914757,-0.274756,0.296192) + *** FresnelRefraction *** Track (trackID 117, parentID 1) is processed with stopping code 2 ### pop requested out of 116 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738874,-0.67367,0.0153338) - Old Polarization: (-0.673844,-0.738682,0.0168136) - New Momentum Direction: (0.407807,-0.912832,0.0207775) - New Polarization: (-0.913068,-0.407701,0.00927994) + Old Momentum Direction: (0.737025,-0.618725,0.27198) + Old Polarization: (-0.675865,-0.674715,0.296591) + New Momentum Direction: (0.396341,-0.840484,0.36946) + New Polarization: (-0.918104,-0.362833,0.159494) *** FresnelRefraction *** Track (trackID 116, parentID 1) is processed with stopping code 2 ### pop requested out of 115 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736355,0.314762,-0.598921) - Old Polarization: (-0.676595,0.342564,-0.65182) - New Momentum Direction: (0.392079,0.427966,-0.814321) - New Polarization: (-0.919932,0.182401,-0.347067) + Old Momentum Direction: (0.743324,0.666742,0.0540779) + Old Polarization: (-0.668931,0.740891,0.060092) + New Momentum Direction: (0.433852,0.898035,0.0728376) + New Polarization: (-0.900984,0.432432,0.0350736) *** FresnelRefraction *** Track (trackID 115, parentID 1) is processed with stopping code 2 ### pop requested out of 114 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739925,-0.608842,-0.286048) - Old Polarization: (-0.67269,-0.669695,-0.314638) - New Momentum Direction: (0.414148,-0.823817,-0.387048) - New Polarization: (-0.910209,-0.37484,-0.176108) + Old Momentum Direction: (0.740661,-0.501578,0.447036) + Old Polarization: (-0.671879,-0.552926,0.4928) + New Momentum Direction: (0.418517,-0.678005,0.604278) + New Polarization: (-0.908209,-0.312436,0.278461) *** FresnelRefraction *** Track (trackID 114, parentID 1) is processed with stopping code 2 ### pop requested out of 113 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.738668,-0.320881,0.592794) + Old Polarization: (-0.674069,-0.351633,0.649604) + New Momentum Direction: (0.406554,-0.434919,0.803467) + New Polarization: (-0.913627,-0.193534,0.357534) + *** FresnelRefraction *** Track (trackID 113, parentID 1) is processed with stopping code 2 ### pop requested out of 112 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742458,-0.622451,-0.247609) - Old Polarization: (-0.669892,-0.689878,-0.274431) - New Momentum Direction: (0.428946,-0.839357,-0.333893) - New Polarization: (-0.90333,-0.398569,-0.158549) + Old Momentum Direction: (0.744453,0.613461,0.263544) + Old Polarization: (-0.667675,0.684005,0.29385) + New Momentum Direction: (0.440144,0.825017,0.354429) + New Polarization: (-0.897927,0.404405,0.173733) *** FresnelRefraction *** Track (trackID 112, parentID 1) is processed with stopping code 2 ### pop requested out of 111 stacked tracks. @@ -1544,275 +1433,258 @@ Track (trackID 111, parentID 1) is processed with stopping code 2 Track (trackID 110, parentID 1) is processed with stopping code 2 ### pop requested out of 109 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738318,-0.0839017,0.669214) - Old Polarization: (-0.674453,-0.0918466,0.732583) - New Momentum Direction: (0.404405,-0.113773,0.907476) - New Polarization: (-0.91458,-0.0503079,0.401264) + Old Momentum Direction: (0.743526,-0.475939,0.469735) + Old Polarization: (-0.668707,-0.52919,0.522292) + New Momentum Direction: (0.434987,-0.640868,0.632514) + New Polarization: (-0.900437,-0.309594,0.305558) *** FresnelRefraction *** Track (trackID 109, parentID 1) is processed with stopping code 2 ### pop requested out of 108 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738589,-0.143681,0.658667) - Old Polarization: (-0.674156,-0.157413,0.721619) - New Momentum Direction: (0.406066,-0.194765,0.892848) - New Polarization: (-0.913844,-0.0865436,0.396737) + Old Momentum Direction: (0.737896,-0.580077,-0.344993) + Old Polarization: (-0.674915,-0.634209,-0.377186) + New Momentum Direction: (0.401793,-0.787055,-0.468089) + New Polarization: (-0.915731,-0.345334,-0.205382) *** FresnelRefraction *** Track (trackID 108, parentID 1) is processed with stopping code 2 ### pop requested out of 107 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739266,0.673058,-0.0218902) - Old Polarization: (-0.673414,0.738875,-0.0240308) - New Momentum Direction: (0.410188,0.911519,-0.0296458) - New Polarization: (-0.912001,0.409971,-0.0133337) + Old Momentum Direction: (0.738892,-0.584161,0.335849) + Old Polarization: (-0.673824,-0.640571,0.36828) + New Momentum Direction: (0.407921,-0.791526,0.455068) + New Polarization: (-0.913017,-0.353641,0.203317) *** FresnelRefraction *** Track (trackID 107, parentID 1) is processed with stopping code 2 ### pop requested out of 106 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.735804,-0.585261,-0.34068) -Old Polarization: (-0.677195,-0.635913,-0.370164) -New Polarization: (-0.495973,-0.865561,-0.0693948) -Polarization Change: (-0.495973,-0.865561,-0.0693948) -New Momentum Direction: (0.548167,-0.374077,0.74805) -Momentum Change: (0.548167,-0.374077,0.74805) Photon at Boundary! - Old Momentum Direction: (0.548167,-0.374077,0.74805) - Old Polarization: (-0.495973,-0.865561,-0.0693948) - New Momentum Direction: (-0.548167,-0.374077,0.74805) - New Polarization: (-0.495973,0.865561,0.0693948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.548167,-0.374077,0.74805) - Old Polarization: (-0.495973,0.865561,0.0693948) - New Momentum Direction: (-0.548167,0.374077,0.74805) - New Polarization: (0.495973,0.865561,-0.0693948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.548167,0.374077,0.74805) - Old Polarization: (0.495973,0.865561,-0.0693948) - New Momentum Direction: (-0.745873,0.508995,0.429649) - New Polarization: (0.502495,0.853389,-0.138655) + Old Momentum Direction: (0.736089,-0.281854,0.615411) + Old Polarization: (-0.676885,-0.306507,0.669239) + New Momentum Direction: (0.390372,-0.383361,0.837045) + New Polarization: (-0.920657,-0.162551,0.354919) *** FresnelRefraction *** Track (trackID 106, parentID 1) is processed with stopping code 2 ### pop requested out of 105 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.744563,0.373661,-0.553176) - Old Polarization: (-0.667552,0.416767,-0.616992) - New Momentum Direction: (0.440749,0.502447,-0.743833) - New Polarization: (-0.897631,0.246708,-0.365232) + Old Momentum Direction: (0.739036,-0.54847,-0.391162) + Old Polarization: (-0.673666,-0.60169,-0.429118) + New Momentum Direction: (0.408793,-0.743021,-0.529914) + New Polarization: (-0.912627,-0.332821,-0.237364) *** FresnelRefraction *** Track (trackID 105, parentID 1) is processed with stopping code 2 ### pop requested out of 104 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742962,-0.429265,0.513555) - Old Polarization: (-0.669333,-0.476486,0.570047) - New Momentum Direction: (0.431809,-0.578459,0.692045) - New Polarization: (-0.901965,-0.276933,0.331311) + Old Momentum Direction: (0.74061,-0.565712,-0.362585) + Old Polarization: (-0.671936,-0.623529,-0.399642) + New Momentum Direction: (0.418215,-0.764751,-0.490155) + New Polarization: (-0.908348,-0.352101,-0.225674) *** FresnelRefraction *** Track (trackID 104, parentID 1) is processed with stopping code 2 ### pop requested out of 103 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740086,0.435227,-0.51269) - Old Polarization: (-0.672513,0.478958,-0.564204) - New Momentum Direction: (0.41511,0.588773,-0.693564) - New Polarization: (-0.909771,0.268645,-0.316459) + Old Momentum Direction: (0.74367,-0.505231,0.437831) + Old Polarization: (-0.668547,-0.562003,0.48703) + New Momentum Direction: (0.435792,-0.68018,0.589441) + New Polarization: (-0.900047,-0.329335,0.2854) *** FresnelRefraction *** Track (trackID 103, parentID 1) is processed with stopping code 2 ### pop requested out of 102 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741902,0.121929,-0.659329) - Old Polarization: (-0.670508,0.134911,-0.729532) - New Momentum Direction: (0.425754,0.164541,-0.889753) - New Polarization: (-0.904839,0.0774213,-0.418655) + Old Momentum Direction: (0.736392,0.507652,-0.447233) + Old Polarization: (-0.676555,0.55255,-0.486787) + New Momentum Direction: (0.392315,0.690193,-0.608048) + New Polarization: (-0.919831,0.294372,-0.259337) *** FresnelRefraction *** Track (trackID 102, parentID 1) is processed with stopping code 2 ### pop requested out of 101 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738272,-0.388155,0.551625) - Old Polarization: (-0.674503,-0.424851,0.603777) - New Momentum Direction: (0.40412,-0.526383,0.748069) - New Polarization: (-0.914706,-0.232558,0.3305) + Old Momentum Direction: (0.737442,-0.631844,-0.238648) + Old Polarization: (-0.67541,-0.689874,-0.260566) + New Momentum Direction: (0.398964,-0.857819,-0.323999) + New Polarization: (-0.916967,-0.373229,-0.140969) *** FresnelRefraction *** Track (trackID 101, parentID 1) is processed with stopping code 2 ### pop requested out of 100 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736992,0.398584,-0.54587) - Old Polarization: (-0.675902,0.434609,-0.595207) - New Momentum Direction: (0.39613,0.541466,-0.741549) - New Polarization: (-0.918194,0.233601,-0.319921) + Old Momentum Direction: (0.7431,-0.57495,0.342395) + Old Polarization: (-0.66918,-0.638461,0.380217) + New Momentum Direction: (0.43259,-0.774634,0.461311) + New Polarization: (-0.901591,-0.371675,0.221341) *** FresnelRefraction *** Track (trackID 100, parentID 1) is processed with stopping code 2 ### pop requested out of 99 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.736255,-0.119369,0.666093) -Old Polarization: (-0.676704,-0.129874,0.724709) -New Polarization: (0.0733413,0.839539,-0.538326) -Polarization Change: (0.0733413,0.839539,-0.538326) -New Momentum Direction: (-0.761349,0.395787,0.513518) -Momentum Change: (-0.761349,0.395787,0.513518) - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74194,-0.588263,-0.32167) + Old Polarization: (-0.670467,-0.650973,-0.355961) + New Momentum Direction: (0.425971,-0.793811,-0.434066) + New Polarization: (-0.904737,-0.373744,-0.204368) + *** FresnelRefraction *** Track (trackID 99, parentID 1) is processed with stopping code 2 ### pop requested out of 98 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737182,0.655153,0.165337) - Old Polarization: (-0.675694,0.714773,0.180383) - New Momentum Direction: (0.397332,0.889778,0.224548) - New Polarization: (-0.917675,0.385253,0.097224) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 98, parentID 1) is processed with stopping code 2 ### pop requested out of 97 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737841,-0.489485,0.464753) - Old Polarization: (-0.674974,-0.535075,0.50804) - New Momentum Direction: (0.401454,-0.664187,0.630627) - New Polarization: (-0.915879,-0.291131,0.276421) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 97, parentID 1) is processed with stopping code 2 ### pop requested out of 96 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739901,0.450605,-0.499502) - Old Polarization: (-0.672716,0.495607,-0.549388) - New Momentum Direction: (0.414007,0.609728,-0.675892) - New Polarization: (-0.910274,0.277314,-0.307406) + Old Momentum Direction: (0.741038,0.559907,0.37063) + Old Polarization: (-0.671463,0.617923,0.409034) + New Momentum Direction: (0.420733,0.756466,0.500743) + New Polarization: (-0.907184,0.350833,0.232234) *** FresnelRefraction *** Track (trackID 96, parentID 1) is processed with stopping code 2 ### pop requested out of 95 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742568,-0.453498,-0.492882) - Old Polarization: (-0.669771,-0.502789,-0.546453) - New Momentum Direction: (0.429569,-0.611439,-0.664539) - New Polarization: (-0.903034,-0.290859,-0.316118) + Old Momentum Direction: (0.736249,0.214775,-0.641723) + Old Polarization: (-0.676711,0.233672,-0.698184) + New Momentum Direction: (0.3914,0.292061,-0.872643) + New Polarization: (-0.920221,0.124223,-0.371164) *** FresnelRefraction *** Track (trackID 95, parentID 1) is processed with stopping code 2 ### pop requested out of 94 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736359,-0.322122,0.594989) - Old Polarization: (-0.676591,-0.350578,0.647549) - New Momentum Direction: (0.392107,-0.437971,0.808971) - New Polarization: (-0.91992,-0.186681,0.344816) + Old Momentum Direction: (0.73592,-0.224821,-0.638652) + Old Polarization: (-0.677068,-0.244363,-0.694165) + New Momentum Direction: (0.389282,-0.305858,-0.868856) + New Polarization: (-0.921119,-0.129261,-0.367195) *** FresnelRefraction *** Track (trackID 94, parentID 1) is processed with stopping code 2 ### pop requested out of 93 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.735897,0.619151,0.274057) - Old Polarization: (-0.677094,0.672923,0.297858) - New Momentum Direction: (0.389131,0.842352,0.372853) - New Polarization: (-0.921182,0.355831,0.157503) + Old Momentum Direction: (0.743372,-0.0148384,-0.668713) + Old Polarization: (-0.668878,-0.0164909,-0.743189) + New Momentum Direction: (0.434122,-0.0199845,-0.900633) + New Polarization: (-0.900854,-0.00963054,-0.434015) *** FresnelRefraction *** Track (trackID 93, parentID 1) is processed with stopping code 2 ### pop requested out of 92 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.736949,0.674732,-0.0405362) + Old Polarization: (-0.675949,0.735622,-0.0441944) + New Momentum Direction: (0.395858,0.916659,-0.0550706) + New Polarization: (-0.918312,0.395146,-0.0237394) + *** FresnelRefraction *** Track (trackID 92, parentID 1) is processed with stopping code 2 ### pop requested out of 91 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.741786,0.484232,0.463975) - Old Polarization: (-0.670637,0.535605,0.513199) - New Momentum Direction: (0.425083,0.653565,0.626225) - New Polarization: (-0.905154,0.30693,0.294091) - *** FresnelRefraction *** -Track (trackID 91, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.739312,-0.621101,0.260098) -Old Polarization: (-0.673363,-0.681932,0.285572) -New Polarization: (-0.141634,0.826997,-0.544073) -Polarization Change: (-0.141634,0.826997,-0.544073) -New Momentum Direction: (0.974762,0.212323,0.0689805) -Momentum Change: (0.974762,0.212323,0.0689805) ** Photon absorbed! ** +Track (trackID 91, parentID 1) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.743998,-0.468028,0.476882) + Old Polarization: (-0.668182,-0.521134,0.530992) + New Momentum Direction: (0.437621,-0.629817,0.641731) + New Polarization: (-0.899159,-0.306532,0.312331) + *** FresnelRefraction *** Track (trackID 90, parentID 1) is processed with stopping code 2 ### pop requested out of 89 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738474,-0.526187,0.421643) - Old Polarization: (-0.674282,-0.576281,0.461784) - New Momentum Direction: (0.405366,-0.713376,0.57164) - New Polarization: (-0.914155,-0.316334,0.253484) + Old Momentum Direction: (0.73763,0.352581,0.575837) + Old Polarization: (-0.675205,0.385178,0.629076) + New Momentum Direction: (0.400141,0.478557,0.781582) + New Polarization: (-0.916454,0.208947,0.341253) *** FresnelRefraction *** Track (trackID 89, parentID 1) is processed with stopping code 2 ### pop requested out of 88 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739289,-0.10052,0.665843) - Old Polarization: (-0.673388,-0.110357,0.731006) - New Momentum Direction: (0.41033,-0.136129,0.90172) - New Polarization: (-0.911937,-0.0612519,0.405732) - *** FresnelRefraction *** +Scattering Photon! +Old Momentum Direction: (0.737724,-0.649241,0.185067) +Old Polarization: (-0.675103,-0.709463,0.202234) +New Polarization: (0.695701,0.711317,-0.10014) +Polarization Change: (0.695701,0.711317,-0.10014) +New Momentum Direction: (0.161727,-0.0192746,0.986647) +Momentum Change: (0.161727,-0.0192746,0.986647) + +** Photon absorbed! ** Track (trackID 88, parentID 1) is processed with stopping code 2 ### pop requested out of 87 stacked tracks. ** Photon absorbed! ** Track (trackID 87, parentID 1) is processed with stopping code 2 ### pop requested out of 86 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.738394,-0.499978,0.452544) - Old Polarization: (-0.67437,-0.547446,0.495508) - New Momentum Direction: (0.404871,-0.677918,0.613602) - New Polarization: (-0.914374,-0.300172,0.271694) - *** FresnelRefraction *** -Track (trackID 86, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. ** Photon absorbed! ** +Track (trackID 86, parentID 1) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74146,0.564691,-0.362438) + Old Polarization: (-0.670997,0.623991,-0.400499) + New Momentum Direction: (0.423197,0.762494,-0.489395) + New Polarization: (-0.906038,0.35615,-0.228589) + *** FresnelRefraction *** Track (trackID 85, parentID 1) is processed with stopping code 2 ### pop requested out of 84 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737064,-0.150337,0.658889) - Old Polarization: (-0.675823,-0.16396,0.718596) - New Momentum Direction: (0.396587,-0.204208,0.894996) - New Polarization: (-0.917997,-0.0882208,0.38665) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 84, parentID 1) is processed with stopping code 2 ### pop requested out of 83 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.73852,-0.661813,-0.128809) - Old Polarization: (-0.674232,-0.724917,-0.141091) - New Momentum Direction: (0.405645,-0.897195,-0.174622) - New Polarization: (-0.914031,-0.398174,-0.0774968) + Old Momentum Direction: (0.738281,0.634065,0.230006) + Old Polarization: (-0.674493,0.694029,0.251758) + New Momentum Direction: (0.404176,0.859856,0.311911) + New Polarization: (-0.914681,0.37995,0.137826) *** FresnelRefraction *** Track (trackID 83, parentID 1) is processed with stopping code 2 ### pop requested out of 82 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.735888,0.576855,-0.354552) - Old Polarization: (-0.677104,0.626936,-0.385333) - New Momentum Direction: (0.389072,0.784819,-0.482372) - New Polarization: (-0.921208,0.331468,-0.20373) + Old Momentum Direction: (0.737111,0.154314,-0.657917) + Old Polarization: (-0.675772,0.168321,-0.717635) + New Momentum Direction: (0.396881,0.209598,-0.893618) + New Polarization: (-0.91787,0.090629,-0.386395) *** FresnelRefraction *** Track (trackID 82, parentID 1) is processed with stopping code 2 ### pop requested out of 81 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738943,-0.598974,-0.308535) - Old Polarization: (-0.673768,-0.656913,-0.33838) - New Momentum Direction: (0.408228,-0.811542,-0.41803) - New Polarization: (-0.91288,-0.362911,-0.186938) + Old Momentum Direction: (0.738537,0.192777,0.646065) + Old Polarization: (-0.674213,0.21117,0.707704) + New Momentum Direction: (0.405752,0.261335,0.875825) + New Polarization: (-0.913983,0.116017,0.388812) *** FresnelRefraction *** Track (trackID 81, parentID 1) is processed with stopping code 2 ### pop requested out of 80 stacked tracks. - -** Photon absorbed! ** +Scattering Photon! +Old Momentum Direction: (0.739717,-0.551573,-0.385468) +Old Polarization: (-0.672918,-0.606327,-0.423733) +New Polarization: (-0.734577,-0.649477,0.196409) +Polarization Change: (-0.734577,-0.649477,0.196409) +New Momentum Direction: (0.137625,0.140833,0.980421) +Momentum Change: (0.137625,0.140833,0.980421) + Photon at Boundary! + Old Momentum Direction: (0.137625,0.140833,0.980421) + Old Polarization: (-0.734577,-0.649477,0.196409) + New Momentum Direction: (-0.137625,0.140833,0.980421) + New Polarization: (-0.734577,0.649477,-0.196409) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.137625,0.140833,0.980421) + Old Polarization: (-0.734577,0.649477,-0.196409) + New Momentum Direction: (-0.186271,0.190613,0.963831) + New Polarization: (-0.710399,0.651537,-0.266144) + *** FresnelRefraction *** Track (trackID 80, parentID 1) is processed with stopping code 2 ### pop requested out of 79 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736128,0.676087,0.0319755) - Old Polarization: (-0.676842,0.735306,0.0347763) - New Momentum Direction: (0.390621,0.919524,0.0434889) - New Polarization: (-0.920552,0.390185,0.0184538) + Old Momentum Direction: (0.739373,0.652514,0.165991) + Old Polarization: (-0.673296,0.716552,0.182281) + New Momentum Direction: (0.410837,0.883568,0.224768) + New Polarization: (-0.911709,0.398157,0.101286) *** FresnelRefraction *** Track (trackID 79, parentID 1) is processed with stopping code 2 ### pop requested out of 78 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738501,-0.228654,-0.634297) - Old Polarization: (-0.674252,-0.250443,-0.694739) - New Momentum Direction: (0.405531,-0.309986,-0.859915) - New Polarization: (-0.914081,-0.137525,-0.3815) + Old Momentum Direction: (0.738344,-0.171073,0.652367) + Old Polarization: (-0.674425,-0.187286,0.714195) + New Momentum Direction: (0.404561,-0.231972,0.884601) + New Polarization: (-0.914511,-0.10262,0.39133) *** FresnelRefraction *** Track (trackID 78, parentID 1) is processed with stopping code 2 ### pop requested out of 77 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741415,-0.43832,-0.508113) - Old Polarization: (-0.671047,-0.484284,-0.561396) - New Momentum Direction: (0.422934,-0.591894,-0.68614) - New Polarization: (-0.90616,-0.276256,-0.320244) + Old Momentum Direction: (0.744044,0.145801,0.652028) + Old Polarization: (-0.668131,0.162367,0.726112) + New Momentum Direction: (0.437877,0.19619,0.877367) + New Polarization: (-0.899035,0.0955545,0.427324) *** FresnelRefraction *** Track (trackID 77, parentID 1) is processed with stopping code 2 ### pop requested out of 76 stacked tracks. @@ -1821,113 +1693,110 @@ Track (trackID 77, parentID 1) is processed with stopping code 2 Track (trackID 76, parentID 1) is processed with stopping code 2 ### pop requested out of 75 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739397,-0.66549,0.102055) - Old Polarization: (-0.67327,-0.730853,0.112079) - New Momentum Direction: (0.410981,-0.90111,0.138188) - New Polarization: (-0.911644,-0.406232,0.0622972) + Old Momentum Direction: (0.738131,-0.0911962,-0.668465) + Old Polarization: (-0.674657,-0.0997762,-0.731357) + New Momentum Direction: (0.403251,-0.123696,-0.90669) + New Polarization: (-0.915089,-0.0545091,-0.39955) *** FresnelRefraction *** Track (trackID 75, parentID 1) is processed with stopping code 2 ### pop requested out of 74 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.743371,-0.301172,0.59724) - Old Polarization: (-0.668879,-0.334713,0.663753) - New Momentum Direction: (0.434115,-0.405623,0.804372) - New Polarization: (-0.900857,-0.195466,0.38762) + Old Momentum Direction: (0.739019,-0.673684,0.00105587) + Old Polarization: (-0.673685,-0.739018,0.00115827) + New Momentum Direction: (0.408692,-0.912671,0.00143044) + New Polarization: (-0.912673,-0.408691,0.000640547) *** FresnelRefraction *** Track (trackID 74, parentID 1) is processed with stopping code 2 ### pop requested out of 73 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.739572,-0.669813,0.0662198) + Old Polarization: (-0.673078,-0.735984,0.0727616) + New Momentum Direction: (0.412033,-0.906749,0.089644) + New Polarization: (-0.911169,-0.410034,0.0405372) + *** FresnelRefraction *** Track (trackID 73, parentID 1) is processed with stopping code 2 ### pop requested out of 72 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.735925,0.0265065,-0.676544) -Old Polarization: (-0.677063,0.0288109,-0.735361) -New Polarization: (-0.701009,0.539017,-0.466956) -Polarization Change: (-0.701009,0.539017,-0.466956) -New Momentum Direction: (0.167877,0.761101,0.626533) -Momentum Change: (0.167877,0.761101,0.626533) - Photon at Boundary! - Old Momentum Direction: (0.167877,0.761101,0.626533) - Old Polarization: (-0.701009,0.539017,-0.466956) - New Momentum Direction: (0.228387,0.470446,0.852362) - New Polarization: (-0.291368,-0.802344,0.520911) - *** FresnelRefraction *** -Track (trackID 72, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. ** Photon absorbed! ** +Track (trackID 72, parentID 1) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.738271,0.033528,-0.673671) + Old Polarization: (-0.674504,0.0366977,-0.737358) + New Momentum Direction: (0.404113,0.0454681,-0.913578) + New Polarization: (-0.914709,0.0200875,-0.403614) + *** FresnelRefraction *** Track (trackID 71, parentID 1) is processed with stopping code 2 ### pop requested out of 70 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742118,0.636407,0.210353) - Old Polarization: (-0.67027,0.704624,0.232901) - New Momentum Direction: (0.426994,0.85857,0.283785) - New Polarization: (-0.904255,0.405421,0.134005) + Old Momentum Direction: (0.737892,0.184077,0.649332) + Old Polarization: (-0.674919,0.201252,0.709917) + New Momentum Direction: (0.401768,0.249758,0.881024) + New Polarization: (-0.915742,0.109578,0.386536) *** FresnelRefraction *** Track (trackID 70, parentID 1) is processed with stopping code 2 ### pop requested out of 69 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.740712,-0.591795,-0.318) + Old Polarization: (-0.671822,-0.652479,-0.350608) + New Momentum Direction: (0.418821,-0.7999,-0.429825) + New Polarization: (-0.908069,-0.368932,-0.198245) + *** FresnelRefraction *** Track (trackID 69, parentID 1) is processed with stopping code 2 ### pop requested out of 68 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.743236,-0.665613,0.0675277) - Old Polarization: (-0.669029,-0.73944,0.0750177) - New Momentum Direction: (0.433355,-0.896621,0.0909639) - New Polarization: (-0.901223,-0.431142,0.0437402) + Old Momentum Direction: (0.744534,-0.667314,0.0189898) + Old Polarization: (-0.667584,-0.744233,0.0211787) + New Momentum Direction: (0.440591,-0.897345,0.0255358) + New Polarization: (-0.897708,-0.440413,0.0125329) *** FresnelRefraction *** Track (trackID 68, parentID 1) is processed with stopping code 2 ### pop requested out of 67 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740726,-0.671508,0.0200498) - Old Polarization: (-0.671807,-0.740396,0.0221066) - New Momentum Direction: (0.418904,-0.907626,0.0270997) - New Polarization: (-0.908031,-0.418717,0.012502) + Old Momentum Direction: (0.737012,0.580874,-0.34554) + Old Polarization: (-0.675879,0.633414,-0.376794) + New Momentum Direction: (0.396261,0.78908,-0.469394) + New Polarization: (-0.918138,0.34056,-0.202586) *** FresnelRefraction *** Track (trackID 67, parentID 1) is processed with stopping code 2 ### pop requested out of 66 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738119,0.580063,0.344538) - Old Polarization: (-0.67467,0.634615,0.37694) - New Momentum Direction: (0.403178,0.786797,0.467331) - New Polarization: (-0.915121,0.346642,0.205894) + Old Momentum Direction: (0.739114,0.269034,0.61752) + Old Polarization: (-0.673581,0.295209,0.677599) + New Momentum Direction: (0.409267,0.364427,0.836477) + New Polarization: (-0.912415,0.163465,0.375205) *** FresnelRefraction *** Track (trackID 66, parentID 1) is processed with stopping code 2 ### pop requested out of 65 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.736337,-0.675548,-0.0379931) + Old Polarization: (-0.676615,-0.735175,-0.0413466) + New Momentum Direction: (0.391963,-0.91853,-0.0516585) + New Polarization: (-0.919981,-0.391344,-0.0220094) + *** FresnelRefraction *** Track (trackID 65, parentID 1) is processed with stopping code 2 ### pop requested out of 64 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737639,0.486725,-0.467961) - Old Polarization: (-0.675196,0.531738,-0.511239) - New Momentum Direction: (0.400193,0.660623,-0.635155) - New Polarization: (-0.916431,0.288486,-0.277364) + Old Momentum Direction: (0.736608,-0.054423,-0.674127) + Old Polarization: (-0.67632,-0.0592744,-0.734219) + New Momentum Direction: (0.393694,-0.0739708,-0.916261) + New Polarization: (-0.919242,-0.0316803,-0.392417) *** FresnelRefraction *** Track (trackID 64, parentID 1) is processed with stopping code 2 ### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73583,0.561965,-0.377822) - Old Polarization: (-0.677167,0.610648,-0.410553) - New Momentum Direction: (0.388697,0.76462,-0.514072) - New Polarization: (-0.921366,0.322571,-0.216872) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 63, parentID 1) is processed with stopping code 2 ### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739066,-0.640621,-0.208294) - Old Polarization: (-0.673633,-0.702847,-0.228527) - New Momentum Direction: (0.408978,-0.867824,-0.282168) - New Polarization: (-0.912544,-0.388936,-0.12646) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 62, parentID 1) is processed with stopping code 2 ### pop requested out of 61 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736509,0.117822,0.666087) - Old Polarization: (-0.676427,0.128288,0.725251) - New Momentum Direction: (0.393066,0.160163,0.905454) - New Polarization: (-0.91951,0.0684656,0.387057) + Old Momentum Direction: (0.743114,-0.563819,0.360402) + Old Polarization: (-0.669165,-0.626127,0.40023) + New Momentum Direction: (0.432668,-0.759623,0.485562) + New Polarization: (-0.901553,-0.364554,0.233028) *** FresnelRefraction *** Track (trackID 61, parentID 1) is processed with stopping code 2 ### pop requested out of 60 stacked tracks. @@ -1935,17707 +1804,15278 @@ Track (trackID 61, parentID 1) is processed with stopping code 2 ** Photon absorbed! ** Track (trackID 60, parentID 1) is processed with stopping code 2 ### pop requested out of 59 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.736334,-0.139962,-0.661984) -Old Polarization: (-0.676618,-0.152314,-0.720409) -New Polarization: (-0.689489,-0.481715,-0.540884) -Polarization Change: (-0.689489,-0.481715,-0.540884) -New Momentum Direction: (-0.0968368,0.801377,-0.590269) -Momentum Change: (-0.0968368,0.801377,-0.590269) Photon at Boundary! - Old Momentum Direction: (-0.0968368,0.801377,-0.590269) - Old Polarization: (-0.689489,-0.481715,-0.540884) - New Momentum Direction: (-0.131668,0.581831,-0.802581) - New Polarization: (-0.536092,-0.722814,-0.436056) + Old Momentum Direction: (0.739493,0.663795,0.111922) + Old Polarization: (-0.673164,0.7292,0.12295) + New Momentum Direction: (0.411559,0.898698,0.151529) + New Polarization: (-0.911383,0.405831,0.0684269) *** FresnelRefraction *** Track (trackID 59, parentID 1) is processed with stopping code 2 ### pop requested out of 58 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737789,-0.0427065,0.67368) - Old Polarization: (-0.675032,-0.0466769,0.736311) - New Momentum Direction: (0.401127,-0.057953,0.914187) - New Polarization: (-0.916022,-0.0253777,0.400323) + Old Momentum Direction: (0.739458,0.283375,0.610656) + Old Polarization: (-0.673203,0.311264,0.670755) + New Momentum Direction: (0.411347,0.383674,0.826794) + New Polarization: (-0.911479,0.173151,0.373129) *** FresnelRefraction *** Track (trackID 58, parentID 1) is processed with stopping code 2 ### pop requested out of 57 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742865,0.133851,0.655924) - Old Polarization: (-0.669442,0.148532,0.727864) - New Momentum Direction: (0.431257,0.180396,0.88401) - New Polarization: (-0.902229,0.0862277,0.422549) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 57, parentID 1) is processed with stopping code 2 ### pop requested out of 56 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.74354,-0.136305,0.654652) + Old Polarization: (-0.668691,-0.151563,0.727929) + New Momentum Direction: (0.435065,-0.183537,0.881494) + New Polarization: (-0.900399,-0.0886833,0.425931) + *** FresnelRefraction *** Track (trackID 56, parentID 1) is processed with stopping code 2 ### pop requested out of 55 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.741525,0.530947,-0.410166) + Old Polarization: (-0.670925,0.586817,-0.453327) + New Momentum Direction: (0.423573,0.716868,-0.553793) + New Polarization: (-0.905862,0.335201,-0.258949) + *** FresnelRefraction *** Track (trackID 55, parentID 1) is processed with stopping code 2 ### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739563,0.254049,-0.623303) - Old Polarization: (-0.673088,0.279139,-0.684861) - New Momentum Direction: (0.411979,0.343919,-0.843797) - New Polarization: (-0.911193,0.155496,-0.381507) - *** FresnelRefraction *** +Scattering Photon! +Old Momentum Direction: (0.736963,-0.577996,-0.350437) +Old Polarization: (-0.675933,-0.630183,-0.382078) +New Polarization: (0.389373,0.905459,0.168917) +Polarization Change: (0.389373,0.905459,0.168917) +New Momentum Direction: (-0.742402,0.417065,-0.524306) +Momentum Change: (-0.742402,0.417065,-0.524306) + +** Photon absorbed! ** Track (trackID 54, parentID 1) is processed with stopping code 2 ### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.739306,-0.663882,0.112634) - Old Polarization: (-0.673369,-0.72889,0.123664) - New Momentum Direction: (0.410433,-0.899043,0.152532) - New Polarization: (-0.911891,-0.404651,0.068653) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 53, parentID 1) is processed with stopping code 2 ### pop requested out of 52 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.73618,0.227707,0.637329) -Old Polarization: (-0.676786,0.247691,0.693261) -New Polarization: (0.737808,-0.491582,-0.462587) -Polarization Change: (0.737808,-0.491582,-0.462587) -New Momentum Direction: (-0.0537646,0.640329,-0.766217) -Momentum Change: (-0.0537646,0.640329,-0.766217) Photon at Boundary! - Old Momentum Direction: (-0.0537646,0.640329,-0.766217) - Old Polarization: (0.737808,-0.491582,-0.462587) - New Momentum Direction: (-0.0731183,0.870829,-0.486118) - New Polarization: (0.516261,0.450085,0.728628) + Old Momentum Direction: (0.741328,-0.603503,0.293627) + Old Polarization: (-0.671143,-0.666615,0.324333) + New Momentum Direction: (0.422426,-0.815048,0.396551) + New Polarization: (-0.906398,-0.379852,0.184812) *** FresnelRefraction *** Track (trackID 52, parentID 1) is processed with stopping code 2 ### pop requested out of 51 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736059,0.482651,-0.474621) - Old Polarization: (-0.676918,0.52482,-0.516088) - New Momentum Direction: (0.390177,0.6565,-0.645577) - New Polarization: (-0.92074,0.278201,-0.273572) + Old Momentum Direction: (0.738959,-0.0646061,-0.670646) + Old Polarization: (-0.673751,-0.0708589,-0.735554) + New Momentum Direction: (0.408326,-0.0875321,-0.90863) + New Polarization: (-0.912836,-0.0391545,-0.406444) *** FresnelRefraction *** Track (trackID 51, parentID 1) is processed with stopping code 2 ### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.738781,0.109114,0.665054) - Old Polarization: (-0.673946,0.119611,0.729034) - New Momentum Direction: (0.407243,0.147869,0.90127) - New Polarization: (-0.91332,0.0659339,0.40187) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 50, parentID 1) is processed with stopping code 2 ### pop requested out of 49 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.74271,-0.234814,0.627091) - Old Polarization: (-0.669613,-0.260447,0.695547) - New Momentum Direction: (0.43038,-0.316533,0.845328) - New Polarization: (-0.902648,-0.150922,0.403051) + Old Momentum Direction: (0.740151,-0.178606,0.648288) + Old Polarization: (-0.672441,-0.19659,0.713565) + New Momentum Direction: (0.415496,-0.241596,0.876923) + New Polarization: (-0.909595,-0.110359,0.400572) *** FresnelRefraction *** Track (trackID 49, parentID 1) is processed with stopping code 2 ### pop requested out of 48 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738713,-0.506215,0.445028) - Old Polarization: (-0.67402,-0.554801,0.487742) - New Momentum Direction: (0.406827,-0.686077,0.60315) - New Polarization: (-0.913505,-0.305542,0.268611) + Old Momentum Direction: (0.736649,0.384251,0.556506) + Old Polarization: (-0.676275,0.418555,0.606188) + New Momentum Direction: (0.393957,0.522238,0.75635) + New Polarization: (-0.919129,0.223841,0.324187) *** FresnelRefraction *** Track (trackID 48, parentID 1) is processed with stopping code 2 ### pop requested out of 47 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.737533,0.450323,-0.503244) + Old Polarization: (-0.675311,0.491814,-0.549612) + New Momentum Direction: (0.399532,0.611302,-0.683142) + New Polarization: (-0.916719,0.266423,-0.297733) + *** FresnelRefraction *** Track (trackID 47, parentID 1) is processed with stopping code 2 ### pop requested out of 46 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737632,0.366842,0.566856) - Old Polarization: (-0.675203,0.40076,0.619268) - New Momentum Direction: (0.400153,0.497912,0.76939) - New Polarization: (-0.916448,0.217406,0.335942) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 46, parentID 1) is processed with stopping code 2 ### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742195,-0.461695,0.485783) - Old Polarization: (-0.670184,-0.511303,0.537979) - New Momentum Direction: (0.427436,-0.622804,0.655297) - New Polarization: (-0.904046,-0.294463,0.309826) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 45, parentID 1) is processed with stopping code 2 ### pop requested out of 44 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742575,0.619663,0.254165) - Old Polarization: (-0.669763,0.687029,0.281797) - New Momentum Direction: (0.429612,0.835466,0.342681) - New Polarization: (-0.903013,0.397476,0.163032) + Old Momentum Direction: (0.737763,0.606432,-0.296556) + Old Polarization: (-0.67506,0.662761,-0.324102) + New Momentum Direction: (0.400968,0.822961,-0.402443) + New Polarization: (-0.916092,0.360205,-0.176147) *** FresnelRefraction *** Track (trackID 44, parentID 1) is processed with stopping code 2 ### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737891,0.490823,-0.463259) - Old Polarization: (-0.674919,0.536618,-0.506482) - New Momentum Direction: (0.401766,0.665957,-0.628558) - New Polarization: (-0.915742,0.292177,-0.275769) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 43, parentID 1) is processed with stopping code 2 ### pop requested out of 42 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738895,-0.608723,0.288948) - Old Polarization: (-0.67382,-0.667511,0.316853) - New Momentum Direction: (0.407939,-0.824803,0.391516) - New Polarization: (-0.913009,-0.368528,0.174932) + Old Momentum Direction: (0.742798,-0.235461,-0.626745) + Old Polarization: (-0.669516,-0.261233,-0.695346) + New Momentum Direction: (0.430878,-0.317367,-0.844762) + New Polarization: (-0.90241,-0.151535,-0.403353) *** FresnelRefraction *** Track (trackID 42, parentID 1) is processed with stopping code 2 ### pop requested out of 41 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737429,0.453098,0.500899) - Old Polarization: (-0.675425,0.494693,0.546882) - New Momentum Direction: (0.398881,0.615157,0.680055) - New Polarization: (-0.917003,0.267584,0.295813) + Old Momentum Direction: (0.738433,0.582009,-0.340563) + Old Polarization: (-0.674327,0.637338,-0.372939) + New Momentum Direction: (0.405108,0.789101,-0.461743) + New Polarization: (-0.914269,0.349647,-0.204596) *** FresnelRefraction *** Track (trackID 41, parentID 1) is processed with stopping code 2 ### pop requested out of 40 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.744096,-0.436987,0.505335) + Old Polarization: (-0.668073,-0.486714,0.562839) + New Momentum Direction: (0.438166,-0.587968,0.67993) + New Polarization: (-0.898894,-0.286605,0.331432) + *** FresnelRefraction *** Track (trackID 40, parentID 1) is processed with stopping code 2 ### pop requested out of 39 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.739539,-0.370207,0.562164) -Old Polarization: (-0.673113,-0.406741,0.617641) -New Polarization: (-0.513418,0.204325,-0.833458) -Polarization Change: (-0.513418,0.204325,-0.833458) -New Momentum Direction: (0.829481,0.367065,-0.420981) -Momentum Change: (0.829481,0.367065,-0.420981) Photon at Boundary! - Old Momentum Direction: (0.829481,0.367065,-0.420981) - Old Polarization: (-0.513418,0.204325,-0.833458) - New Momentum Direction: (0.654408,0.49693,-0.569922) - New Polarization: (-0.723174,0.19119,-0.663675) + Old Momentum Direction: (0.74153,-0.584295,0.329747) + Old Polarization: (-0.67092,-0.645788,0.364451) + New Momentum Direction: (0.423599,-0.788892,0.445212) + New Polarization: (-0.90585,-0.368906,0.208193) *** FresnelRefraction *** Track (trackID 39, parentID 1) is processed with stopping code 2 ### pop requested out of 38 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742089,-0.256805,-0.619156) - Old Polarization: (-0.670301,-0.284309,-0.685467) - New Momentum Direction: (0.426832,-0.346467,-0.83533) - New Polarization: (-0.904331,-0.163528,-0.394264) + Old Momentum Direction: (0.736363,-0.668493,-0.104344) + Old Polarization: (-0.676587,-0.727553,-0.113562) + New Momentum Direction: (0.392128,-0.908905,-0.141869) + New Polarization: (-0.919911,-0.387437,-0.0604742) *** FresnelRefraction *** Track (trackID 38, parentID 1) is processed with stopping code 2 ### pop requested out of 37 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.737754,-0.169414,0.653467) + Old Polarization: (-0.67507,-0.185145,0.714144) + New Momentum Direction: (0.400909,-0.229907,0.8868) + New Polarization: (-0.916118,-0.100611,0.388079) + *** FresnelRefraction *** Track (trackID 37, parentID 1) is processed with stopping code 2 ### pop requested out of 36 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739139,0.571709,0.356122) - Old Polarization: (-0.673553,0.627377,0.390799) - New Momentum Direction: (0.409418,0.774396,0.482378) - New Polarization: (-0.912347,0.347512,0.216468) + Old Momentum Direction: (0.743553,0.240366,-0.623982) + Old Polarization: (-0.668677,0.267281,-0.693853) + New Momentum Direction: (0.435137,0.32365,-0.840183) + New Polarization: (-0.900364,0.156416,-0.406051) *** FresnelRefraction *** Track (trackID 36, parentID 1) is processed with stopping code 2 ### pop requested out of 35 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736191,0.555437,-0.386669) - Old Polarization: (-0.676774,0.604201,-0.420616) - New Momentum Direction: (0.391025,0.755368,-0.525851) - New Polarization: (-0.92038,0.32092,-0.223409) + Old Momentum Direction: (0.739144,0.659897,-0.134913) + Old Polarization: (-0.673547,0.724165,-0.148053) + New Momentum Direction: (0.409452,0.893843,-0.182742) + New Polarization: (-0.912332,0.401154,-0.0820143) *** FresnelRefraction *** Track (trackID 35, parentID 1) is processed with stopping code 2 ### pop requested out of 34 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.741175,0.388556,0.547435) + Old Polarization: (-0.671312,0.428992,0.604405) + New Momentum Direction: (0.421533,0.524864,0.739478) + New Polarization: (-0.906813,0.243983,0.343747) + *** FresnelRefraction *** Track (trackID 34, parentID 1) is processed with stopping code 2 ### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742131,-0.397463,-0.53969) - Old Polarization: (-0.670255,-0.440085,-0.597564) - New Momentum Direction: (0.427069,-0.536204,-0.728078) - New Polarization: (-0.904219,-0.253253,-0.343876) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 33, parentID 1) is processed with stopping code 2 ### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738814,0.649393,0.180119) - Old Polarization: (-0.67391,0.711936,0.197467) - New Momentum Direction: (0.407443,0.880007,0.244084) - New Polarization: (-0.913231,0.39262,0.108899) + Old Momentum Direction: (0.743914,-0.478238,-0.466777) + Old Polarization: (-0.668276,-0.532367,-0.519609) + New Momentum Direction: (0.437151,-0.643629,-0.628204) + New Polarization: (-0.899388,-0.312839,-0.305342) *** FresnelRefraction *** Track (trackID 32, parentID 1) is processed with stopping code 2 ### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742235,-0.639615,0.19995) - Old Polarization: (-0.67014,-0.708426,0.221461) - New Momentum Direction: (0.427668,-0.862762,0.269708) - New Polarization: (-0.903936,-0.408187,0.127604) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 31, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740482,-0.199898,-0.64166) - Old Polarization: (-0.672076,-0.220244,-0.70697) - New Momentum Direction: (0.417463,-0.270276,-0.867569) - New Polarization: (-0.908694,-0.124168,-0.39857) + Old Momentum Direction: (0.73645,-0.494815,0.461302) + Old Polarization: (-0.676492,-0.538671,0.502188) + New Momentum Direction: (0.392687,-0.672687,0.627128) + New Polarization: (-0.919672,-0.287228,0.267774) *** FresnelRefraction *** Track (trackID 30, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73872,0.120961,0.663069) - Old Polarization: (-0.674012,0.132574,0.726727) - New Momentum Direction: (0.406872,0.163938,0.898654) - New Polarization: (-0.913485,0.073019,0.400266) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 29, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742427,0.490769,0.456014) - Old Polarization: (-0.669927,0.54388,0.505363) - New Momentum Direction: (0.428765,0.661816,0.614947) - New Polarization: (-0.903416,0.314101,0.291857) + Old Momentum Direction: (0.742509,-0.586943,0.322767) + Old Polarization: (-0.669836,-0.650622,0.357786) + New Momentum Direction: (0.429235,-0.791421,0.435213) + New Polarization: (-0.903193,-0.376116,0.206831) *** FresnelRefraction *** Track (trackID 28, parentID 1) is processed with stopping code 2 ### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742583,0.0722617,0.665844) - Old Polarization: (-0.669754,0.0801194,0.738248) - New Momentum Direction: (0.429657,0.0974264,0.897721) - New Polarization: (-0.902992,0.0463569,0.427149) + Old Momentum Direction: (0.740563,-0.248015,-0.624544) + Old Polarization: (-0.671987,-0.273324,-0.688278) + New Momentum Direction: (0.417939,-0.335297,-0.844336) + New Polarization: (-0.908475,-0.154252,-0.388432) *** FresnelRefraction *** Track (trackID 27, parentID 1) is processed with stopping code 2 ### pop requested out of 26 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737585,-0.656873,0.156482) - Old Polarization: (-0.675255,-0.717507,0.170926) - New Momentum Direction: (0.399856,-0.891627,0.212406) - New Polarization: (-0.916578,-0.388972,0.0926617) + Old Momentum Direction: (0.735753,-0.026329,0.676738) + Old Polarization: (-0.67725,-0.0286034,0.735197) + New Momentum Direction: (0.388201,-0.0358275,0.920878) + New Polarization: (-0.921575,-0.0150919,0.387908) *** FresnelRefraction *** Track (trackID 26, parentID 1) is processed with stopping code 2 ### pop requested out of 25 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739915,-0.572675,0.352945) - Old Polarization: (-0.672701,-0.629894,0.38821) - New Momentum Direction: (0.414089,-0.77489,0.477572) - New Polarization: (-0.910237,-0.352516,0.217259) + Old Momentum Direction: (0.741329,0.655627,-0.143475) + Old Polarization: (-0.671142,0.724191,-0.15848) + New Momentum Direction: (0.422433,0.88544,-0.193767) + New Polarization: (-0.906394,0.412667,-0.0903067) *** FresnelRefraction *** Track (trackID 25, parentID 1) is processed with stopping code 2 ### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743463,0.195396,0.639596) - Old Polarization: (-0.668777,0.217218,0.711023) - New Momentum Direction: (0.434633,0.26313,0.861311) - New Polarization: (-0.900608,0.126987,0.415669) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 24, parentID 1) is processed with stopping code 2 ### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736204,0.281538,-0.615419) - Old Polarization: (-0.67676,0.306267,-0.669475) - New Momentum Direction: (0.391111,0.382871,-0.836924) - New Polarization: (-0.920344,0.162705,-0.355661) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 23, parentID 1) is processed with stopping code 2 ### pop requested out of 22 stacked tracks. ** Photon absorbed! ** Track (trackID 22, parentID 1) is processed with stopping code 2 ### pop requested out of 21 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.740112,-0.663425,0.110009) + Old Polarization: (-0.672484,-0.730142,0.121072) + New Momentum Direction: (0.415264,-0.897446,0.148814) + New Polarization: (-0.909701,-0.40967,0.0679314) + *** FresnelRefraction *** Track (trackID 21, parentID 1) is processed with stopping code 2 ### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.740964,0.644925,-0.187203) - Old Polarization: (-0.671545,0.711592,-0.206555) - New Momentum Direction: (0.420299,0.871416,-0.252947) - New Polarization: (-0.907386,0.403638,-0.117164) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 20, parentID 1) is processed with stopping code 2 ### pop requested out of 19 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737884,0.56715,0.365881) - Old Polarization: (-0.674928,0.620052,0.400009) - New Momentum Direction: (0.401718,0.769527,0.496438) - New Polarization: (-0.915764,0.337568,0.217772) + Old Momentum Direction: (0.737098,-0.656396,0.160721) + Old Polarization: (-0.675786,-0.715949,0.175303) + New Momentum Direction: (0.396801,-0.891567,0.218304) + New Polarization: (-0.917905,-0.385415,0.0943706) *** FresnelRefraction *** Track (trackID 19, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738501,-0.5424,0.400523) - Old Polarization: (-0.674252,-0.594085,0.438688) - New Momentum Direction: (0.405532,-0.735329,0.542987) - New Polarization: (-0.914081,-0.326229,0.240896) + Old Momentum Direction: (0.735941,-0.357029,-0.575257) + Old Polarization: (-0.677046,-0.388087,-0.625298) + New Momentum Direction: (0.389417,-0.485708,-0.782587) + New Polarization: (-0.921062,-0.205353,-0.330871) *** FresnelRefraction *** Track (trackID 18, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738612,0.283844,0.611461) - Old Polarization: (-0.67413,0.310994,0.669949) - New Momentum Direction: (0.406212,0.384748,0.828831) - New Polarization: (-0.913779,0.171036,0.368449) - *** FresnelRefraction *** + Old Momentum Direction: (0.736301,0.656111,0.165464) + Old Polarization: (-0.676654,0.713948,0.18005) + New Momentum Direction: (-0.736301,0.656111,0.165464) + New Polarization: (-0.676654,-0.713948,-0.18005) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.736301,0.656111,0.165464) + Old Polarization: (-0.676654,-0.713948,-0.18005) + New Momentum Direction: (-0.736301,-0.656111,0.165464) + New Polarization: (0.676654,-0.713948,0.18005) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 17, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. ** Photon absorbed! ** Track (trackID 16, parentID 1) is processed with stopping code 2 ### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737694,-0.67508,-0.00864168) - Old Polarization: (-0.675136,-0.737633,-0.00944243) - New Momentum Direction: (0.400536,-0.916206,-0.0117283) - New Polarization: (-0.916281,-0.400503,-0.00512683) - *** FresnelRefraction *** -Track (trackID 15, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.736718,-0.41983,-0.530085) -Old Polarization: (-0.6762,-0.457403,-0.577525) -New Polarization: (-0.683974,-0.669319,-0.29016) -Polarization Change: (-0.683974,-0.669319,-0.29016) -New Momentum Direction: (0.102011,-0.481593,0.870438) -Momentum Change: (0.102011,-0.481593,0.870438) ** Photon absorbed! ** +Track (trackID 15, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.737483,-0.655211,0.163758) + Old Polarization: (-0.675365,-0.715475,0.17882) + New Momentum Direction: (0.399221,-0.889494,0.222313) + New Polarization: (-0.916855,-0.387308,0.0968005) + *** FresnelRefraction *** Track (trackID 14, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743256,0.668761,0.0181507) - Old Polarization: (-0.669007,0.742983,0.0201652) - New Momentum Direction: (0.43347,0.900836,0.0244494) - New Polarization: (-0.901168,0.43331,0.0117604) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 13, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.74113,-0.487578,-0.461513) - Old Polarization: (-0.671362,-0.538248,-0.509473) - New Momentum Direction: (0.42127,-0.658664,-0.623452) - New Polarization: (-0.906935,-0.305949,-0.289593) + Old Momentum Direction: (0.742637,0.643559,0.185262) + Old Polarization: (-0.669695,0.713655,0.205441) + New Momentum Direction: (0.429962,0.867613,0.249761) + New Polarization: (-0.902847,0.413182,0.118943) *** FresnelRefraction *** Track (trackID 12, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743162,0.663684,0.0850488) - Old Polarization: (-0.669112,0.737134,0.0944611) - New Momentum Direction: (0.432938,0.894112,0.114577) - New Polarization: (-0.901424,0.429427,0.0550295) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 11, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736307,-0.671489,-0.0833978) - Old Polarization: (-0.676648,-0.730693,-0.0907509) - New Momentum Direction: (0.39177,-0.913048,-0.113399) - New Polarization: (-0.920063,-0.388783,-0.0482862) + Old Momentum Direction: (0.736708,0.532546,-0.41672) + Old Polarization: (-0.676211,0.58019,-0.454002) + New Momentum Direction: (-0.736708,0.532546,-0.41672) + New Polarization: (-0.676211,-0.58019,0.454002) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.736708,0.532546,-0.41672) + Old Polarization: (-0.676211,-0.58019,0.454002) + New Momentum Direction: (-0.736708,-0.532546,-0.41672) + New Polarization: (0.676211,-0.58019,-0.454002) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.736708,-0.532546,-0.41672) + Old Polarization: (0.676211,-0.58019,-0.454002) + New Momentum Direction: (-0.736708,-0.532546,0.41672) + New Polarization: (-0.676211,0.58019,-0.454002) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.736708,-0.532546,0.41672) + Old Polarization: (-0.676211,0.58019,-0.454002) + New Momentum Direction: (-0.394331,-0.723729,0.566322) + New Polarization: (0.918969,-0.310553,0.243009) *** FresnelRefraction *** Track (trackID 10, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737914,-0.67446,-0.0242381) - Old Polarization: (-0.674895,-0.737437,-0.0265013) - New Momentum Direction: (0.401903,-0.915091,-0.0328857) - New Polarization: (-0.915682,-0.401644,-0.0144339) - *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 9, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. ** Photon absorbed! ** Track (trackID 8, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. - -** Photon absorbed! ** + Photon at Boundary! + Old Momentum Direction: (0.743564,0.392583,-0.541287) + Old Polarization: (-0.668665,0.436558,-0.601918) + New Momentum Direction: (0.435198,0.5286,-0.728824) + New Polarization: (-0.900335,0.255512,-0.352295) + *** FresnelRefraction *** Track (trackID 7, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737214,-0.111409,-0.666411) - Old Polarization: (-0.675659,-0.121559,-0.727123) - New Momentum Direction: (0.397532,-0.1513,-0.905028) - New Polarization: (-0.917588,-0.0655487,-0.392091) + Old Momentum Direction: (0.744245,-0.0673402,0.664503) + Old Polarization: (-0.667907,-0.0750369,0.740453) + New Momentum Direction: (0.438993,-0.0905884,0.893912) + New Polarization: (-0.898491,-0.0442605,0.436756) *** FresnelRefraction *** Track (trackID 6, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.735988,-0.526759,-0.425262) - Old Polarization: (-0.676995,-0.57266,-0.462318) - New Momentum Direction: (0.389717,-0.716564,-0.578495) - New Polarization: (-0.920935,-0.303232,-0.244805) - *** FresnelRefraction *** -Track (trackID 5, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737215,-0.356406,-0.574012) - Old Polarization: (-0.675659,-0.388876,-0.626307) - New Momentum Direction: (0.397535,-0.484021,-0.779544) - New Polarization: (-0.917587,-0.209697,-0.33773) - *** FresnelRefraction *** -Track (trackID 4, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. ** Photon absorbed! ** +Track (trackID 5, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + +** Photon absorbed! ** +Track (trackID 4, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.740471,-0.432299,-0.514607) + Old Polarization: (-0.672088,-0.476284,-0.566966) + New Momentum Direction: (0.417397,-0.584508,-0.695795) + New Polarization: (-0.908724,-0.268477,-0.319594) + *** FresnelRefraction *** Track (trackID 3, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737748,-0.674718,-0.0219877) - Old Polarization: (-0.675076,-0.737357,-0.024029) - New Momentum Direction: (-0.737748,-0.674718,-0.0219877) - New Polarization: (-0.675076,0.737357,0.024029) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.737748,-0.674718,-0.0219877) - Old Polarization: (-0.675076,0.737357,0.024029) - New Momentum Direction: (-0.737748,0.674718,-0.0219877) - New Polarization: (0.675076,0.737357,-0.024029) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.737748,0.674718,-0.0219877) - Old Polarization: (0.675076,0.737357,-0.024029) - New Momentum Direction: (-0.400875,0.915647,-0.0298391) - New Polarization: (0.916133,0.400662,-0.0130568) + Old Momentum Direction: (0.73882,0.57724,-0.347763) + Old Polarization: (-0.673903,0.632845,-0.381263) + New Momentum Direction: (0.407481,0.782224,-0.471258) + New Polarization: (-0.913214,0.349033,-0.210278) *** FresnelRefraction *** Track (trackID 2, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 283 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 170 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 284 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.778644,0.591717,-0.208771) - Old Polarization: (-0.618254,0.666695,-0.41627) - New Momentum Direction: (0.528297,0.800685,-0.282499) - New Polarization: (-0.842922,0.454663,-0.287688) - *** FresnelRefraction *** -Track (trackID 586, parentID 1) is processed with stopping code 2 -### pop requested out of 283 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.649831,0.0807029,0.755782) - Old Polarization: (-0.759617,0.103583,0.642069) - New Momentum Direction: (0.881316,0.109451,0.459677) - New Polarization: (0.435186,0.191023,-0.879843) - *** FresnelRefraction *** -Track (trackID 585, parentID 1) is processed with stopping code 2 -### pop requested out of 282 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.692775,0.527242,0.492015) - Old Polarization: (-0.713269,0.601568,0.359669) - New Momentum Direction: (0.237043,0.710272,0.662815) - New Polarization: (-0.967079,0.237522,0.091329) - *** FresnelRefraction *** -Track (trackID 584, parentID 1) is processed with stopping code 2 -### pop requested out of 281 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.716876,-0.677712,0.163694) - Old Polarization: (-0.686172,-0.72741,-0.00655997) - New Momentum Direction: (0.32568,-0.919051,0.221987) - New Polarization: (-0.938912,-0.342004,-0.0384458) - *** FresnelRefraction *** -Track (trackID 583, parentID 1) is processed with stopping code 2 -### pop requested out of 280 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.756891,0.653063,-0.0250131) - Old Polarization: (-0.642144,0.736029,-0.214272) - New Momentum Direction: (0.468692,0.882715,-0.033809) - New Polarization: (-0.875935,0.459458,-0.147093) - *** FresnelRefraction *** -Track (trackID 582, parentID 1) is processed with stopping code 2 -### pop requested out of 279 stacked tracks. - -** Photon absorbed! ** -Track (trackID 581, parentID 1) is processed with stopping code 2 -### pop requested out of 278 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.654647,-0.342472,0.673907) - Old Polarization: (-0.754051,-0.358753,0.550185) - New Momentum Direction: (0.654647,-0.342472,-0.673907) - New Polarization: (0.754051,0.358753,0.550185) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.654647,-0.342472,-0.673907) - Old Polarization: (0.754051,0.358753,0.550185) - New Momentum Direction: (-0.654647,-0.342472,-0.673907) - New Polarization: (0.754051,-0.358753,-0.550185) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654647,-0.342472,-0.673907) - Old Polarization: (0.754051,-0.358753,-0.550185) - New Momentum Direction: (-0.654647,0.342472,-0.673907) - New Polarization: (-0.754051,-0.358753,0.550185) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 580, parentID 1) is processed with stopping code 2 -### pop requested out of 277 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.791798,-0.480246,-0.377384) - Old Polarization: (-0.603236,-0.518053,-0.606405) - New Momentum Direction: (0.567637,-0.647328,-0.508679) - New Polarization: (-0.818154,-0.374709,-0.43614) - *** FresnelRefraction *** -Track (trackID 579, parentID 1) is processed with stopping code 2 -### pop requested out of 276 stacked tracks. - -** Photon absorbed! ** -Track (trackID 578, parentID 1) is processed with stopping code 2 -### pop requested out of 275 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.81649,0.00521705,-0.577337) - Old Polarization: (-0.577308,0.0208465,-0.81626) - New Momentum Direction: (0.62068,0.00708483,-0.784032) - New Polarization: (-0.784028,0.0151251,-0.620541) - *** FresnelRefraction *** -Track (trackID 577, parentID 1) is processed with stopping code 2 -### pop requested out of 274 stacked tracks. - -** Photon absorbed! ** -Track (trackID 576, parentID 1) is processed with stopping code 2 -### pop requested out of 273 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.688374,-0.594789,0.415172) - Old Polarization: (-0.717761,-0.641166,0.271524) - New Momentum Direction: (0.196605,-0.803992,0.561199) - New Polarization: (-0.976417,-0.212615,0.0374696) - *** FresnelRefraction *** -Track (trackID 575, parentID 1) is processed with stopping code 2 -### pop requested out of 272 stacked tracks. - -** Photon absorbed! ** -Track (trackID 574, parentID 1) is processed with stopping code 2 -### pop requested out of 271 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.663059,0.225494,0.713796) - Old Polarization: (-0.746667,0.267134,0.609203) - New Momentum Direction: (0.891554,0.303201,0.336452) - New Polarization: (0.183585,0.43717,-0.880443) - *** FresnelRefraction *** -Track (trackID 573, parentID 1) is processed with stopping code 2 -### pop requested out of 270 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.777147,0.589938,-0.219124) - Old Polarization: (-0.620301,0.659339,-0.424852) - New Momentum Direction: (0.519024,0.801271,-0.297621) - New Polarization: (-0.84881,0.442149,-0.289871) - *** FresnelRefraction *** -Track (trackID 572, parentID 1) is processed with stopping code 2 -### pop requested out of 269 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.810151,0.325641,-0.487456) - Old Polarization: (-0.583802,0.372706,-0.721294) - New Momentum Direction: (0.607568,0.441209,-0.660451) - New Polarization: (-0.792624,0.283338,-0.539876) - *** FresnelRefraction *** -Track (trackID 571, parentID 1) is processed with stopping code 2 -### pop requested out of 268 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.76244,0.639868,-0.0962036) - Old Polarization: (-0.63633,0.714501,-0.290814) - New Momentum Direction: (0.477758,0.868728,-0.130613) - New Polarization: (-0.871526,0.450016,-0.194754) - *** FresnelRefraction *** -Track (trackID 570, parentID 1) is processed with stopping code 2 -### pop requested out of 267 stacked tracks. - -** Photon absorbed! ** -Track (trackID 569, parentID 1) is processed with stopping code 2 -### pop requested out of 266 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.652643,-0.334247,0.679953) - Old Polarization: (-0.755905,-0.348385,0.554288) - New Momentum Direction: (0.652643,-0.334247,-0.679953) - New Polarization: (-0.11323,0.844325,-0.523731) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652643,-0.334247,-0.679953) - Old Polarization: (-0.11323,0.844325,-0.523731) - New Momentum Direction: (-0.652643,-0.334247,-0.679953) - New Polarization: (-0.11323,-0.844325,0.523731) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 568, parentID 1) is processed with stopping code 2 -### pop requested out of 265 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.66087,-0.387368,0.642803) - Old Polarization: (-0.7479,-0.411162,0.521145) - New Momentum Direction: (-0.66087,-0.387368,0.642803) - New Polarization: (-0.7479,0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,-0.387368,0.642803) - Old Polarization: (-0.7479,0.411162,-0.521145) - New Momentum Direction: (-0.66087,-0.387368,-0.642803) - New Polarization: (0.7479,-0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,-0.387368,-0.642803) - Old Polarization: (0.7479,-0.411162,-0.521145) - New Momentum Direction: (-0.66087,0.387368,-0.642803) - New Polarization: (-0.7479,-0.411162,0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,0.387368,-0.642803) - Old Polarization: (-0.7479,-0.411162,0.521145) - New Momentum Direction: (0.66087,0.387368,-0.642803) - New Polarization: (-0.7479,0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.66087,0.387368,-0.642803) - Old Polarization: (-0.7479,0.411162,-0.521145) - New Momentum Direction: (0.66087,0.387368,0.642803) - New Polarization: (0.7479,-0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.66087,0.387368,0.642803) - Old Polarization: (0.7479,-0.411162,-0.521145) - New Momentum Direction: (0.66087,-0.387368,0.642803) - New Polarization: (-0.7479,-0.411162,0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.66087,-0.387368,0.642803) - Old Polarization: (-0.7479,-0.411162,0.521145) - New Momentum Direction: (-0.66087,-0.387368,0.642803) - New Polarization: (-0.7479,0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,-0.387368,0.642803) - Old Polarization: (-0.7479,0.411162,-0.521145) - New Momentum Direction: (-0.66087,-0.387368,-0.642803) - New Polarization: (0.7479,-0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,-0.387368,-0.642803) - Old Polarization: (0.7479,-0.411162,-0.521145) - New Momentum Direction: (-0.66087,0.387368,-0.642803) - New Polarization: (-0.7479,-0.411162,0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,0.387368,-0.642803) - Old Polarization: (-0.7479,-0.411162,0.521145) - New Momentum Direction: (0.66087,0.387368,-0.642803) - New Polarization: (-0.7479,0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.66087,0.387368,-0.642803) - Old Polarization: (-0.7479,0.411162,-0.521145) - New Momentum Direction: (0.66087,0.387368,0.642803) - New Polarization: (0.7479,-0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.66087,0.387368,0.642803) - Old Polarization: (0.7479,-0.411162,-0.521145) - New Momentum Direction: (-0.66087,0.387368,0.642803) - New Polarization: (0.7479,0.411162,0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,0.387368,0.642803) - Old Polarization: (0.7479,0.411162,0.521145) - New Momentum Direction: (-0.66087,0.387368,-0.642803) - New Polarization: (-0.7479,-0.411162,0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,0.387368,-0.642803) - Old Polarization: (-0.7479,-0.411162,0.521145) - New Momentum Direction: (-0.66087,-0.387368,-0.642803) - New Polarization: (0.7479,-0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,-0.387368,-0.642803) - Old Polarization: (0.7479,-0.411162,-0.521145) - New Momentum Direction: (0.66087,-0.387368,-0.642803) - New Polarization: (0.7479,0.411162,0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.66087,-0.387368,-0.642803) - Old Polarization: (0.7479,0.411162,0.521145) - New Momentum Direction: (0.66087,-0.387368,0.642803) - New Polarization: (-0.7479,-0.411162,0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.66087,-0.387368,0.642803) - Old Polarization: (-0.7479,-0.411162,0.521145) - New Momentum Direction: (-0.66087,-0.387368,0.642803) - New Polarization: (-0.7479,0.411162,-0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,-0.387368,0.642803) - Old Polarization: (-0.7479,0.411162,-0.521145) - New Momentum Direction: (-0.66087,0.387368,0.642803) - New Polarization: (0.7479,0.411162,0.521145) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66087,0.387368,0.642803) - Old Polarization: (0.7479,0.411162,0.521145) - New Momentum Direction: (-0.66087,0.387368,-0.642803) - New Polarization: (-0.7479,-0.411162,0.521145) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.66087,0.387368,-0.642803) -Old Polarization: (-0.7479,-0.411162,0.521145) -New Polarization: (0.229488,-0.643096,0.730591) -Polarization Change: (0.229488,-0.643096,0.730591) -New Momentum Direction: (-0.972511,-0.121074,0.198904) -Momentum Change: (-0.972511,-0.121074,0.198904) - Photon at Boundary! - Old Momentum Direction: (-0.972511,-0.121074,0.198904) - Old Polarization: (0.229488,-0.643096,0.730591) - New Momentum Direction: (-0.949048,-0.163853,0.269183) - New Polarization: (0.312636,-0.596828,0.738956) - *** FresnelRefraction *** -Track (trackID 567, parentID 1) is processed with stopping code 2 -### pop requested out of 264 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.70185,0.607282,0.372311) - Old Polarization: (-0.702451,0.676781,0.220295) - New Momentum Direction: (0.249068,0.825668,0.506199) - New Polarization: (-0.962988,0.266746,0.0387315) - *** FresnelRefraction *** -Track (trackID 566, parentID 1) is processed with stopping code 2 -### pop requested out of 263 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.805723,0.359446,-0.470754) - Old Polarization: (-0.589297,0.406661,-0.698109) - New Momentum Direction: (0.592764,0.48876,-0.640113) - New Polarization: (-0.803361,0.302638,-0.512856) - *** FresnelRefraction *** -Track (trackID 565, parentID 1) is processed with stopping code 2 -### pop requested out of 262 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.714517,-0.667938,0.208144) - Old Polarization: (-0.688961,-0.723502,0.0433334) - New Momentum Direction: (0.327781,-0.901974,0.281075) - New Polarization: (-0.938348,-0.345403,-0.0141324) - *** FresnelRefraction *** -Track (trackID 564, parentID 1) is processed with stopping code 2 -### pop requested out of 261 stacked tracks. - -** Photon absorbed! ** -Track (trackID 563, parentID 1) is processed with stopping code 2 -### pop requested out of 260 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.786688,0.552408,-0.275621) - Old Polarization: (-0.609397,0.623423,-0.489877) - New Momentum Direction: (0.549691,0.747491,-0.372957) - New Polarization: (-0.830031,0.438337,-0.344832) - *** FresnelRefraction *** -Track (trackID 562, parentID 1) is processed with stopping code 2 -### pop requested out of 259 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.669053,-0.429931,0.60624) - Old Polarization: (-0.739779,-0.463581,0.487668) - New Momentum Direction: (-0.669053,-0.429931,0.60624) - New Polarization: (-0.739779,0.463581,-0.487668) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.669053,-0.429931,0.60624) - Old Polarization: (-0.739779,0.463581,-0.487668) - New Momentum Direction: (-0.669053,-0.429931,-0.60624) - New Polarization: (0.739779,-0.463581,-0.487668) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.669053,-0.429931,-0.60624) - Old Polarization: (0.739779,-0.463581,-0.487668) - New Momentum Direction: (-0.669053,0.429931,-0.60624) - New Polarization: (-0.739779,-0.463581,0.487668) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.669053,0.429931,-0.60624) - Old Polarization: (-0.739779,-0.463581,0.487668) - New Momentum Direction: (0.669053,0.429931,-0.60624) - New Polarization: (-0.739779,0.463581,-0.487668) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.669053,0.429931,-0.60624) - Old Polarization: (-0.739779,0.463581,-0.487668) - New Momentum Direction: (0.669053,0.429931,0.60624) - New Polarization: (0.739779,-0.463581,-0.487668) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.669053,0.429931,0.60624) - Old Polarization: (0.739779,-0.463581,-0.487668) - New Momentum Direction: (0.669053,-0.429931,0.60624) - New Polarization: (-0.739779,-0.463581,0.487668) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.669053,-0.429931,0.60624) - Old Polarization: (-0.739779,-0.463581,0.487668) - New Momentum Direction: (-0.669053,-0.429931,0.60624) - New Polarization: (-0.739779,0.463581,-0.487668) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.669053,-0.429931,0.60624) - Old Polarization: (-0.739779,0.463581,-0.487668) - New Momentum Direction: (-0.669053,-0.429931,-0.60624) - New Polarization: (0.739779,-0.463581,-0.487668) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 561, parentID 1) is processed with stopping code 2 -### pop requested out of 258 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.654723,-0.33005,0.680003) - Old Polarization: (-0.754146,-0.345939,0.558203) - New Momentum Direction: (0.654723,-0.33005,-0.680003) - New Polarization: (-0.101217,0.853247,-0.511591) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.654723,-0.33005,-0.680003) - Old Polarization: (-0.101217,0.853247,-0.511591) - New Momentum Direction: (-0.654723,-0.33005,-0.680003) - New Polarization: (-0.101217,-0.853247,0.511591) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654723,-0.33005,-0.680003) - Old Polarization: (-0.101217,-0.853247,0.511591) - New Momentum Direction: (-0.654723,0.33005,-0.680003) - New Polarization: (0.101217,-0.853247,-0.511591) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654723,0.33005,-0.680003) - Old Polarization: (0.101217,-0.853247,-0.511591) - New Momentum Direction: (-0.654723,0.33005,0.680003) - New Polarization: (0.731755,0.502187,0.460807) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654723,0.33005,0.680003) - Old Polarization: (0.731755,0.502187,0.460807) - New Momentum Direction: (0.654723,0.33005,0.680003) - New Polarization: (0.731755,-0.502187,-0.460807) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.654723,0.33005,0.680003) - Old Polarization: (0.731755,-0.502187,-0.460807) - New Momentum Direction: (0.888483,0.44789,0.0999573) - New Polarization: (0.336961,-0.488853,-0.804661) - *** FresnelRefraction *** -Track (trackID 560, parentID 1) is processed with stopping code 2 -### pop requested out of 257 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.730313,-0.675353,0.102668) - Old Polarization: (-0.671548,-0.737332,-0.0732451) - New Momentum Direction: (0.39348,-0.908891,0.138171) - New Polarization: (-0.912033,-0.404824,-0.0656703) - *** FresnelRefraction *** -Track (trackID 559, parentID 1) is processed with stopping code 2 -### pop requested out of 256 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.796011,-0.44385,-0.411538) - Old Polarization: (-0.59865,-0.476944,-0.643539) - New Momentum Direction: (0.577508,-0.59865,-0.55507) - New Polarization: (-0.811875,-0.349772,-0.467461) - *** FresnelRefraction *** -Track (trackID 558, parentID 1) is processed with stopping code 2 -### pop requested out of 255 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.725213,0.659149,0.198969) - Old Polarization: (-0.677015,0.735284,0.0317512) - New Momentum Direction: (0.35476,0.895068,0.270183) - New Polarization: (-0.927979,0.372332,-0.015) - *** FresnelRefraction *** -Track (trackID 557, parentID 1) is processed with stopping code 2 -### pop requested out of 254 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.747784,0.662496,0.043798) - Old Polarization: (-0.652217,0.745321,-0.138242) - New Momentum Direction: (0.439927,0.896078,0.0592402) - New Polarization: (-0.890507,0.443812,-0.100138) - *** FresnelRefraction *** -Track (trackID 556, parentID 1) is processed with stopping code 2 -### pop requested out of 253 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.749325,-0.655847,-0.0915215) - Old Polarization: (-0.650618,-0.703413,-0.286194) - New Momentum Direction: (0.439913,-0.889422,-0.124116) - New Polarization: (-0.890639,-0.414392,-0.187195) - *** FresnelRefraction *** -Track (trackID 555, parentID 1) is processed with stopping code 2 -### pop requested out of 252 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.80496,-0.288556,-0.518434) - Old Polarization: (-0.590153,-0.299098,-0.74984) - New Momentum Direction: (0.59069,-0.392423,-0.705046) - New Polarization: (-0.804763,-0.222989,-0.55012) - *** FresnelRefraction *** -Track (trackID 554, parentID 1) is processed with stopping code 2 -### pop requested out of 251 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.76996,-0.59731,-0.22446) - Old Polarization: (-0.627633,-0.645506,-0.435201) - New Momentum Direction: (0.507591,-0.806531,-0.303082) - New Polarization: (-0.854658,-0.426762,-0.295694) - *** FresnelRefraction *** -Track (trackID 553, parentID 1) is processed with stopping code 2 -### pop requested out of 250 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.657892,0.218632,0.720679) - Old Polarization: (-0.751331,0.25631,0.608117) - New Momentum Direction: (0.889614,0.295639,0.348115) - New Polarization: (0.202318,0.428249,-0.880721) - *** FresnelRefraction *** -Track (trackID 552, parentID 1) is processed with stopping code 2 -### pop requested out of 249 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.803738,-0.306094,-0.510207) - Old Polarization: (-0.591484,-0.318195,-0.740877) - New Momentum Direction: (0.587601,-0.416275,-0.693859) - New Polarization: (-0.8068,-0.2361,-0.5416) - *** FresnelRefraction *** -Track (trackID 551, parentID 1) is processed with stopping code 2 -### pop requested out of 248 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.740656,-0.671857,-0.00599118) - Old Polarization: (-0.660065,-0.725933,-0.193222) - New Momentum Direction: (0.418183,-0.908327,-0.00809986) - New Polarization: (-0.900857,-0.413567,-0.131981) - *** FresnelRefraction *** -Track (trackID 550, parentID 1) is processed with stopping code 2 -### pop requested out of 247 stacked tracks. - -** Photon absorbed! ** -Track (trackID 549, parentID 1) is processed with stopping code 2 -### pop requested out of 246 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.707068,0.601948,0.371097) - Old Polarization: (-0.697203,0.681109,0.223604) - New Momentum Direction: (0.297057,0.812812,0.501093) - New Polarization: (-0.94902,0.309271,0.0609346) - *** FresnelRefraction *** -Track (trackID 548, parentID 1) is processed with stopping code 2 -### pop requested out of 245 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.665662,-0.452627,0.593315) - Old Polarization: (-0.74245,-0.481851,0.46539) - New Momentum Direction: (-0.665662,-0.452627,0.593315) - New Polarization: (-0.74245,0.481851,-0.46539) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 547, parentID 1) is processed with stopping code 2 -### pop requested out of 244 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.777623,-0.542967,-0.317) - Old Polarization: (-0.619811,-0.577399,-0.531455) - New Momentum Direction: (0.519947,-0.73768,-0.430678) - New Polarization: (-0.848316,-0.38686,-0.361525) - *** FresnelRefraction *** -Track (trackID 546, parentID 1) is processed with stopping code 2 -### pop requested out of 243 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.64879,-0.0703944,0.757705) -Old Polarization: (-0.760966,-0.0621014,0.645813) -New Polarization: (-0.414544,-0.567991,0.711013) -Polarization Change: (-0.414544,-0.567991,0.711013) -New Momentum Direction: (0.724948,-0.678399,-0.119268) -Momentum Change: (0.724948,-0.678399,-0.119268) - Photon at Boundary! - Old Momentum Direction: (0.724948,-0.678399,-0.119268) - Old Polarization: (-0.414544,-0.567991,0.711013) - New Momentum Direction: (0.359309,-0.919123,-0.161589) - New Polarization: (-0.698944,-0.379777,0.606009) - *** FresnelRefraction *** -Track (trackID 545, parentID 1) is processed with stopping code 2 -### pop requested out of 242 stacked tracks. - -** Photon absorbed! ** -Track (trackID 544, parentID 1) is processed with stopping code 2 -### pop requested out of 241 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.654642,-0.314166,0.687564) - Old Polarization: (-0.754414,-0.329264,0.567841) - New Momentum Direction: (0.887526,-0.425929,0.175735) - New Polarization: (-0.048565,-0.465755,-0.88358) - *** FresnelRefraction *** -Track (trackID 543, parentID 1) is processed with stopping code 2 -### pop requested out of 240 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736503,0.667793,0.107776) - Old Polarization: (-0.664685,0.744032,-0.0678948) - New Momentum Direction: (0.394408,0.907196,0.146414) - New Polarization: (-0.911636,0.406319,-0.0618391) - *** FresnelRefraction *** -Track (trackID 542, parentID 1) is processed with stopping code 2 -### pop requested out of 239 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.757774,-0.634835,-0.150875) - Old Polarization: (-0.641303,-0.681883,-0.351805) - New Momentum Direction: (0.467418,-0.86008,-0.204407) - New Polarization: (-0.876762,-0.421409,-0.231739) - *** FresnelRefraction *** -Track (trackID 541, parentID 1) is processed with stopping code 2 -### pop requested out of 238 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.791555,0.512525,-0.332805) - Old Polarization: (-0.604406,0.576223,-0.550147) - New Momentum Direction: (0.559146,0.695336,-0.451512) - New Polarization: (-0.824587,0.409862,-0.38996) - *** FresnelRefraction *** -Track (trackID 540, parentID 1) is processed with stopping code 2 -### pop requested out of 237 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.821224,0.156266,-0.548792) - Old Polarization: (-0.570223,0.189485,-0.799338) - New Momentum Direction: (0.640586,0.210293,-0.73853) - New Polarization: (-0.767621,0.150095,-0.62308) - *** FresnelRefraction *** -Track (trackID 539, parentID 1) is processed with stopping code 2 -### pop requested out of 236 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675319,-0.487975,0.553014) - Old Polarization: (-0.732829,-0.528459,0.428595) - New Momentum Direction: (-0.675319,-0.487975,0.553014) - New Polarization: (-0.7302,0.547798,-0.40832) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.675319,-0.487975,0.553014) - Old Polarization: (-0.7302,0.547798,-0.40832) - New Momentum Direction: (-0.675319,-0.487975,-0.553014) - New Polarization: (0.7302,-0.547798,-0.40832) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.675319,-0.487975,-0.553014) - Old Polarization: (0.7302,-0.547798,-0.40832) - New Momentum Direction: (-0.675319,0.487975,-0.553014) - New Polarization: (-0.7302,-0.547798,0.40832) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 538, parentID 1) is processed with stopping code 2 -### pop requested out of 235 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.817268,-0.0311159,-0.575417) - Old Polarization: (-0.576074,-0.0189478,-0.817178) - New Momentum Direction: (0.624406,-0.0421766,-0.779961) - New Polarization: (-0.780976,-0.0158748,-0.62436) - *** FresnelRefraction *** -Track (trackID 537, parentID 1) is processed with stopping code 2 -### pop requested out of 234 stacked tracks. - -** Photon absorbed! ** -Track (trackID 536, parentID 1) is processed with stopping code 2 -### pop requested out of 233 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.810901,-0.191503,-0.552961) - Old Polarization: (-0.583535,-0.193755,-0.788636) - New Momentum Direction: (0.606346,-0.260232,-0.751415) - New Polarization: (-0.794088,-0.14817,-0.589466) - *** FresnelRefraction *** -Track (trackID 535, parentID 1) is processed with stopping code 2 -### pop requested out of 232 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.653526,0.133744,0.744994) -Old Polarization: (-0.756034,0.162511,0.634036) -New Polarization: (-0.739934,0.372156,-0.560354) -Polarization Change: (-0.739934,0.372156,-0.560354) -New Momentum Direction: (-0.580948,0.0664014,0.811228) -Momentum Change: (-0.580948,0.0664014,0.811228) - Photon at Boundary! - Old Momentum Direction: (-0.580948,0.0664014,0.811228) - Old Polarization: (-0.739934,0.372156,-0.560354) - New Momentum Direction: (-0.78601,0.0898396,0.611651) - New Polarization: (-0.571094,0.273342,-0.774039) - *** FresnelRefraction *** -Track (trackID 534, parentID 1) is processed with stopping code 2 -### pop requested out of 231 stacked tracks. - -** Photon absorbed! ** -Track (trackID 533, parentID 1) is processed with stopping code 2 -### pop requested out of 230 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.722739,-0.673577,0.154735) - Old Polarization: (-0.679938,-0.733108,-0.015427) - New Momentum Direction: (-0.722739,-0.673577,0.154735) - New Polarization: (-0.633998,0.735299,0.239545) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.722739,-0.673577,0.154735) - Old Polarization: (-0.633998,0.735299,0.239545) - New Momentum Direction: (-0.973979,-0.0887857,0.208524) - New Polarization: (-0.0740664,0.994247,0.0773811) - *** FresnelRefraction *** -Track (trackID 532, parentID 1) is processed with stopping code 2 -### pop requested out of 229 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.816208,-0.030166,-0.576971) - Old Polarization: (-0.577581,-0.0178133,-0.816139) - New Momentum Direction: (0.620168,-0.0409587,-0.783399) - New Polarization: (-0.784348,-0.0148561,-0.620143) - *** FresnelRefraction *** -Track (trackID 531, parentID 1) is processed with stopping code 2 -### pop requested out of 228 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675184,-0.4866,0.55439) - Old Polarization: (-0.732985,-0.526964,0.430165) - New Momentum Direction: (0.120294,-0.654872,0.746105) - New Polarization: (-0.990431,-0.130385,0.0452451) - *** FresnelRefraction *** -Track (trackID 530, parentID 1) is processed with stopping code 2 -### pop requested out of 227 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.796179,0.49896,-0.342254) - Old Polarization: (-0.598622,0.567272,-0.565557) - New Momentum Direction: (0.576696,0.6737,-0.462114) - New Polarization: (-0.812588,0.414593,-0.409649) - *** FresnelRefraction *** -Track (trackID 529, parentID 1) is processed with stopping code 2 -### pop requested out of 226 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.65898,0.301864,0.688929) -Old Polarization: (-0.749223,0.344296,0.565796) -New Polarization: (0.999685,-0.0195113,0.0157627) -Polarization Change: (0.999685,-0.0195113,0.0157627) -New Momentum Direction: (-0.00401695,0.49578,0.868439) -Momentum Change: (-0.00401695,0.49578,0.868439) - -** Photon absorbed! ** -Track (trackID 528, parentID 1) is processed with stopping code 2 -### pop requested out of 225 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.657571,0.262002,0.706367) - Old Polarization: (-0.751048,0.301875,0.587196) - New Momentum Direction: (0.657571,0.262002,-0.706367) - New Polarization: (-0.129427,-0.884358,-0.448507) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.657571,0.262002,-0.706367) - Old Polarization: (-0.129427,-0.884358,-0.448507) - New Momentum Direction: (-0.657571,0.262002,-0.706367) - New Polarization: (-0.129427,0.884358,0.448507) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.657571,0.262002,-0.706367) - Old Polarization: (-0.129427,0.884358,0.448507) - New Momentum Direction: (-0.657571,-0.262002,-0.706367) - New Polarization: (0.129427,0.884358,-0.448507) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.657571,-0.262002,-0.706367) - Old Polarization: (0.129427,0.884358,-0.448507) - New Momentum Direction: (-0.892259,-0.35551,-0.278365) - New Polarization: (-0.432259,0.494386,0.754145) - *** FresnelRefraction *** -Track (trackID 527, parentID 1) is processed with stopping code 2 -### pop requested out of 224 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.814028,-0.152388,-0.560478) - Old Polarization: (-0.579655,-0.151918,-0.800575) - New Momentum Direction: (0.616443,-0.206586,-0.759816) - New Polarization: (-0.786604,-0.118209,-0.606037) - *** FresnelRefraction *** -Track (trackID 526, parentID 1) is processed with stopping code 2 -### pop requested out of 223 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.75485,-0.647022,-0.107536) - Old Polarization: (-0.644337,-0.700865,-0.305972) - New Momentum Direction: (0.464766,-0.873452,-0.145169) - New Polarization: (-0.877898,-0.43323,-0.203978) - *** FresnelRefraction *** -Track (trackID 525, parentID 1) is processed with stopping code 2 -### pop requested out of 222 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.816404,0.208924,-0.538363) - Old Polarization: (-0.576661,0.245287,-0.779292) - New Momentum Direction: (0.624093,0.28268,-0.728423) - New Polarization: (-0.78079,0.190342,-0.595094) - *** FresnelRefraction *** -Track (trackID 524, parentID 1) is processed with stopping code 2 -### pop requested out of 221 stacked tracks. - -** Photon absorbed! ** -Track (trackID 523, parentID 1) is processed with stopping code 2 -### pop requested out of 220 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.819442,0.0558294,-0.570436) - Old Polarization: (-0.573159,0.0768126,-0.815836) - New Momentum Direction: (0.632058,0.0754819,-0.771236) - New Polarization: (-0.774919,0.0594273,-0.629261) - *** FresnelRefraction *** -Track (trackID 522, parentID 1) is processed with stopping code 2 -### pop requested out of 219 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.772269,-0.584702,-0.248445) - Old Polarization: (-0.625181,-0.629945,-0.460779) - New Momentum Direction: (0.51231,-0.790407,-0.33585) - New Polarization: (-0.852089,-0.419033,-0.313616) - *** FresnelRefraction *** -Track (trackID 521, parentID 1) is processed with stopping code 2 -### pop requested out of 218 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.671189,-0.524266,0.524071) - Old Polarization: (-0.735891,-0.556375,0.38589) - New Momentum Direction: (-0.671189,-0.524266,0.524071) - New Polarization: (-0.735891,0.556375,-0.38589) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.671189,-0.524266,0.524071) - Old Polarization: (-0.735891,0.556375,-0.38589) - New Momentum Direction: (-0.671189,0.524266,0.524071) - New Polarization: (0.735891,0.556375,0.38589) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.671189,0.524266,0.524071) - Old Polarization: (0.735891,0.556375,0.38589) - New Momentum Direction: (-0.671189,0.524266,-0.524071) - New Polarization: (-0.735891,-0.556375,0.38589) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.671189,0.524266,-0.524071) -Old Polarization: (-0.735891,-0.556375,0.38589) -New Polarization: (0.86584,0.374554,-0.331708) -Polarization Change: (0.86584,0.374554,-0.331708) -New Momentum Direction: (-0.46865,0.839297,-0.275585) -Momentum Change: (-0.46865,0.839297,-0.275585) - Photon at Boundary! - Old Momentum Direction: (-0.46865,0.839297,-0.275585) - Old Polarization: (0.86584,0.374554,-0.331708) - New Momentum Direction: (0.46865,0.839297,-0.275585) - New Polarization: (0.86584,-0.374554,0.331708) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.46865,0.839297,-0.275585) - Old Polarization: (0.86584,-0.374554,0.331708) - New Momentum Direction: (0.637029,0.673698,-0.374598) - New Polarization: (0.768673,-0.591595,0.243223) - *** FresnelRefraction *** -Track (trackID 520, parentID 1) is processed with stopping code 2 -### pop requested out of 217 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.646908,-0.185296,0.739713) - Old Polarization: (-0.762216,-0.186558,0.619856) - New Momentum Direction: (0.879964,-0.252051,0.402657) - New Polarization: (0.297183,-0.369183,-0.88056) - *** FresnelRefraction *** -Track (trackID 519, parentID 1) is processed with stopping code 2 -### pop requested out of 216 stacked tracks. - -** Photon absorbed! ** -Track (trackID 518, parentID 1) is processed with stopping code 2 -### pop requested out of 215 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.811949,0.303572,-0.49858) - Old Polarization: (-0.581669,0.349105,-0.734702) - New Momentum Direction: (0.612809,0.410965,-0.674961) - New Polarization: (-0.788829,0.267281,-0.553452) - *** FresnelRefraction *** -Track (trackID 517, parentID 1) is processed with stopping code 2 -### pop requested out of 214 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.805615,-0.357653,-0.472302) - Old Polarization: (-0.587765,-0.382558,-0.712869) - New Momentum Direction: (0.602715,-0.481722,-0.636143) - New Polarization: (-0.794751,-0.291003,-0.532624) - *** FresnelRefraction *** -Track (trackID 516, parentID 1) is processed with stopping code 2 -### pop requested out of 213 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.796935,-0.428572,-0.425701) - Old Polarization: (-0.597831,-0.458583,-0.657495) - New Momentum Direction: (0.57825,-0.578836,-0.574957) - New Polarization: (-0.811628,-0.336451,-0.477557) - *** FresnelRefraction *** -Track (trackID 515, parentID 1) is processed with stopping code 2 -### pop requested out of 212 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.797536,-0.402822,-0.449078) - Old Polarization: (-0.597705,-0.426735,-0.678709) - New Momentum Direction: (0.575717,-0.545969,-0.608661) - New Polarization: (-0.813898,-0.311431,-0.490491) - *** FresnelRefraction *** -Track (trackID 514, parentID 1) is processed with stopping code 2 -### pop requested out of 211 stacked tracks. - -** Photon absorbed! ** -Track (trackID 513, parentID 1) is processed with stopping code 2 -### pop requested out of 210 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.740873,0.66794,0.0704504) - Old Polarization: (-0.659925,0.74344,-0.108611) - New Momentum Direction: (0.408287,0.907818,0.0957514) - New Polarization: (-0.90552,0.416042,-0.0833184) - *** FresnelRefraction *** -Track (trackID 512, parentID 1) is processed with stopping code 2 -### pop requested out of 209 stacked tracks. - -** Photon absorbed! ** -Track (trackID 511, parentID 1) is processed with stopping code 2 -### pop requested out of 208 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.791221,0.51876,-0.323816) - Old Polarization: (-0.604631,0.584306,-0.541302) - New Momentum Direction: (0.559495,0.703098,-0.438883) - New Polarization: (-0.824204,0.416081,-0.38414) - *** FresnelRefraction *** -Track (trackID 510, parentID 1) is processed with stopping code 2 -### pop requested out of 207 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.768255,0.628214,-0.123013) - Old Polarization: (-0.629684,0.707021,-0.321899) - New Momentum Direction: (0.49981,0.849993,-0.16644) - New Polarization: (-0.85924,0.46239,-0.218866) - *** FresnelRefraction *** -Track (trackID 509, parentID 1) is processed with stopping code 2 -### pop requested out of 206 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.70949,-0.661806,0.242152) - Old Polarization: (-0.694453,-0.715014,0.0805572) - New Momentum Direction: (-0.70949,-0.661806,0.242152) - New Polarization: (-0.668023,0.741029,0.0679787) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.70949,-0.661806,0.242152) - Old Polarization: (-0.668023,0.741029,0.0679787) - New Momentum Direction: (-0.70949,0.661806,0.242152) - New Polarization: (0.668023,0.741029,-0.0679787) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 508, parentID 1) is processed with stopping code 2 -### pop requested out of 205 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.744823,0.665935,0.0420603) - Old Polarization: (-0.655602,0.742084,-0.139629) - New Momentum Direction: (0.422356,0.904627,0.057136) - New Polarization: (-0.89907,0.42611,-0.100514) - *** FresnelRefraction *** -Track (trackID 507, parentID 1) is processed with stopping code 2 -### pop requested out of 204 stacked tracks. - -** Photon absorbed! ** -Track (trackID 506, parentID 1) is processed with stopping code 2 -### pop requested out of 203 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.801752,0.44465,-0.399349) - Old Polarization: (-0.592691,0.505584,-0.626979) - New Momentum Direction: (0.589006,0.601239,-0.539985) - New Polarization: (-0.804757,0.375411,-0.459819) - *** FresnelRefraction *** -Track (trackID 505, parentID 1) is processed with stopping code 2 -### pop requested out of 202 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.69295,-0.614905,0.376446) - Old Polarization: (-0.712695,-0.66315,0.228687) - New Momentum Direction: (0.223445,-0.831304,0.508926) - New Polarization: (-0.97016,-0.240106,0.03375) - *** FresnelRefraction *** -Track (trackID 504, parentID 1) is processed with stopping code 2 -### pop requested out of 201 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.677059,-0.505227,0.535105) - Old Polarization: (-0.73082,-0.547111,0.408131) - New Momentum Direction: (0.134523,-0.680275,0.720506) - New Polarization: (-0.98834,-0.144447,0.0481484) - *** FresnelRefraction *** -Track (trackID 503, parentID 1) is processed with stopping code 2 -### pop requested out of 200 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.817576,-0.0986032,-0.567316) - Old Polarization: (-0.575186,-0.0935732,-0.812653) - New Momentum Direction: (0.62778,-0.133291,-0.766893) - New Polarization: (-0.777956,-0.0745104,-0.623886) - *** FresnelRefraction *** -Track (trackID 502, parentID 1) is processed with stopping code 2 -### pop requested out of 199 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.646958,0.0149507,0.762379) - Old Polarization: (-0.762392,0.0314515,0.646351) - New Momentum Direction: (0.879027,0.0203136,0.476339) - New Polarization: (0.475164,0.0446667,-0.878763) - *** FresnelRefraction *** -Track (trackID 501, parentID 1) is processed with stopping code 2 -### pop requested out of 198 stacked tracks. - -** Photon absorbed! ** -Track (trackID 500, parentID 1) is processed with stopping code 2 -### pop requested out of 197 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.64645,-0.0150572,0.762808) - Old Polarization: (-0.762906,-0.00128719,0.646508) - New Momentum Direction: (0.878508,-0.0204623,0.47729) - New Polarization: (0.476815,-0.0241809,-0.878671) - *** FresnelRefraction *** -Track (trackID 499, parentID 1) is processed with stopping code 2 -### pop requested out of 196 stacked tracks. - -** Photon absorbed! ** -Track (trackID 498, parentID 1) is processed with stopping code 2 -### pop requested out of 195 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.784568,-0.52925,-0.323029) - Old Polarization: (-0.611243,-0.57272,-0.546237) - New Momentum Direction: (0.549336,-0.713244,-0.43533) - New Polarization: (-0.829656,-0.403523,-0.385797) - *** FresnelRefraction *** -Track (trackID 497, parentID 1) is processed with stopping code 2 -### pop requested out of 194 stacked tracks. - -** Photon absorbed! ** -Track (trackID 496, parentID 1) is processed with stopping code 2 -### pop requested out of 193 stacked tracks. - -** Photon absorbed! ** -Track (trackID 495, parentID 1) is processed with stopping code 2 -### pop requested out of 192 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.654533,0.118284,0.746723) - Old Polarization: (-0.755291,0.146056,0.638908) - New Momentum Direction: (0.883929,0.15974,0.439492) - New Polarization: (0.38961,0.268168,-0.881073) - *** FresnelRefraction *** -Track (trackID 494, parentID 1) is processed with stopping code 2 -### pop requested out of 191 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73832,-0.674382,-0.00957516) - Old Polarization: (-0.662684,-0.722726,-0.196256) - New Momentum Direction: (0.402959,-0.915126,-0.0129933) - New Polarization: (-0.907857,-0.397881,-0.132234) - *** FresnelRefraction *** -Track (trackID 493, parentID 1) is processed with stopping code 2 -### pop requested out of 190 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.804178,0.403509,-0.436439) - Old Polarization: (-0.590436,0.457755,-0.664715) - New Momentum Direction: (0.592335,0.546955,-0.591591) - New Polarization: (-0.803017,0.341003,-0.488754) - *** FresnelRefraction *** -Track (trackID 492, parentID 1) is processed with stopping code 2 -### pop requested out of 189 stacked tracks. - -** Photon absorbed! ** -Track (trackID 491, parentID 1) is processed with stopping code 2 -### pop requested out of 188 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.711139,0.618731,0.333845) - Old Polarization: (-0.692636,0.698012,0.181757) - New Momentum Direction: (0.311155,0.836379,0.45128) - New Polarization: (-0.944186,0.326092,0.0466492) - *** FresnelRefraction *** -Track (trackID 490, parentID 1) is processed with stopping code 2 -### pop requested out of 187 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.767735,0.622436,-0.152173) - Old Polarization: (-0.63073,0.692219,-0.350732) - New Momentum Direction: (0.489827,0.846878,-0.207044) - New Polarization: (-0.865294,0.44325,-0.234087) - *** FresnelRefraction *** -Track (trackID 489, parentID 1) is processed with stopping code 2 -### pop requested out of 186 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.753116,-0.648487,-0.110822) - Old Polarization: (-0.646383,-0.698005,-0.308185) - New Momentum Direction: (0.454664,-0.877935,-0.150034) - New Polarization: (-0.883236,-0.422721,-0.202983) - *** FresnelRefraction *** -Track (trackID 488, parentID 1) is processed with stopping code 2 -### pop requested out of 185 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.784623,0.560469,-0.26503) - Old Polarization: (-0.611803,0.6308,-0.477272) - New Momentum Direction: (0.542855,0.759222,-0.359015) - New Polarization: (-0.834367,0.4389,-0.333464) - *** FresnelRefraction *** -Track (trackID 487, parentID 1) is processed with stopping code 2 -### pop requested out of 184 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.698252,-0.624951,0.349115) - Old Polarization: (-0.707089,-0.678198,0.200179) - New Momentum Direction: (0.26131,-0.842683,0.470746) - New Polarization: (-0.960244,-0.276574,0.0379333) - *** FresnelRefraction *** -Track (trackID 486, parentID 1) is processed with stopping code 2 -### pop requested out of 183 stacked tracks. - -** Photon absorbed! ** -Track (trackID 485, parentID 1) is processed with stopping code 2 -### pop requested out of 182 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.684263,0.489699,0.540351) - Old Polarization: (-0.722385,0.556509,0.410437) - New Momentum Direction: (0.172342,0.661476,0.729896) - New Polarization: (-0.98146,0.178406,0.0700589) - *** FresnelRefraction *** -Track (trackID 484, parentID 1) is processed with stopping code 2 -### pop requested out of 181 stacked tracks. - -** Photon absorbed! ** -Track (trackID 483, parentID 1) is processed with stopping code 2 -### pop requested out of 180 stacked tracks. - -** Photon absorbed! ** -Track (trackID 482, parentID 1) is processed with stopping code 2 -### pop requested out of 179 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.817939,0.207315,-0.536653) - Old Polarization: (-0.574492,0.244761,-0.781058) - New Momentum Direction: (0.630034,0.279841,-0.724393) - New Polarization: (-0.776009,0.191517,-0.600942) - *** FresnelRefraction *** -Track (trackID 481, parentID 1) is processed with stopping code 2 -### pop requested out of 178 stacked tracks. - -** Photon absorbed! ** -Track (trackID 480, parentID 1) is processed with stopping code 2 -### pop requested out of 177 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.811572,0.324492,-0.485856) - Old Polarization: (-0.581829,0.373215,-0.722624) - New Momentum Direction: (0.613278,0.438689,-0.656842) - New Polarization: (-0.788213,0.286108,-0.544852) - *** FresnelRefraction *** -Track (trackID 479, parentID 1) is processed with stopping code 2 -### pop requested out of 176 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.755077,0.654763,-0.0338127) - Old Polarization: (-0.64435,0.731564,-0.222773) - New Momentum Direction: (0.456551,0.888513,-0.0458838) - New Polarization: (-0.882435,0.445646,-0.150696) - *** FresnelRefraction *** -Track (trackID 478, parentID 1) is processed with stopping code 2 -### pop requested out of 175 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.65179,-0.0829329,0.753852) - Old Polarization: (-0.758389,-0.0765197,0.647295) - New Momentum Direction: (0.879951,-0.111964,0.461682) - New Polarization: (0.439666,-0.176171,-0.880714) - *** FresnelRefraction *** -Track (trackID 477, parentID 1) is processed with stopping code 2 -### pop requested out of 174 stacked tracks. - -** Photon absorbed! ** -Track (trackID 476, parentID 1) is processed with stopping code 2 -### pop requested out of 173 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.682091,-0.555489,0.475588) - Old Polarization: (-0.72486,-0.599495,0.339386) - New Momentum Direction: (0.159332,-0.74992,0.642053) - New Polarization: (-0.983924,-0.173768,0.0412095) - *** FresnelRefraction *** -Track (trackID 475, parentID 1) is processed with stopping code 2 ### pop requested out of 172 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.680176,-0.56509,0.466942) - Old Polarization: (-0.726462,-0.60482,0.32626) - New Momentum Direction: (0.113884,-0.765861,0.632841) - New Polarization: (-0.990311,-0.138457,0.0106525) - *** FresnelRefraction *** -Track (trackID 474, parentID 1) is processed with stopping code 2 -### pop requested out of 171 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.651428,-0.0173261,0.758513) - Old Polarization: (-0.758665,-0.00390333,0.651469) - New Momentum Direction: (0.879991,-0.0234053,0.474413) - New Polarization: (0.473737,-0.029244,-0.880181) - *** FresnelRefraction *** -Track (trackID 473, parentID 1) is processed with stopping code 2 -### pop requested out of 170 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.812892,-0.142185,-0.564792) -Old Polarization: (-0.581367,-0.139953,-0.801515) -New Polarization: (0.253814,0.842929,0.474393) -Polarization Change: (0.253814,0.842929,0.474393) -New Momentum Direction: (0.546748,-0.529612,0.64852) -Momentum Change: (0.546748,-0.529612,0.64852) - Photon at Boundary! - Old Momentum Direction: (0.546748,-0.529612,0.64852) - Old Polarization: (0.253814,0.842929,0.474393) - New Momentum Direction: (-0.546748,-0.529612,0.64852) - New Polarization: (0.253814,-0.842929,-0.474393) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.546748,-0.529612,0.64852) - Old Polarization: (0.253814,-0.842929,-0.474393) - New Momentum Direction: (-0.546748,0.529612,0.64852) - New Polarization: (-0.253814,-0.842929,0.474393) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.546748,0.529612,0.64852) - Old Polarization: (-0.253814,-0.842929,0.474393) - New Momentum Direction: (-0.546748,0.529612,-0.64852) - New Polarization: (0.253814,0.842929,0.474393) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.546748,0.529612,-0.64852) - Old Polarization: (0.253814,0.842929,0.474393) - New Momentum Direction: (0.546748,0.529612,-0.64852) - New Polarization: (0.253814,-0.842929,-0.474393) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.546748,0.529612,-0.64852) -Old Polarization: (0.253814,-0.842929,-0.474393) -New Polarization: (-0.30337,-0.946337,0.111411) -Polarization Change: (-0.30337,-0.946337,0.111411) -New Momentum Direction: (-0.613216,0.283385,0.737332) -Momentum Change: (-0.613216,0.283385,0.737332) - Photon at Boundary! - Old Momentum Direction: (-0.613216,0.283385,0.737332) - Old Polarization: (-0.30337,-0.946337,0.111411) - New Momentum Direction: (0.613216,0.283385,0.737332) - New Polarization: (-0.30337,0.946337,-0.111411) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 472, parentID 1) is processed with stopping code 2 -### pop requested out of 169 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.804302,0.380542,-0.456384) - Old Polarization: (-0.590804,0.42986,-0.682767) - New Momentum Direction: (0.589449,0.517323,-0.620425) - New Polarization: (-0.805507,0.318512,-0.499708) - *** FresnelRefraction *** -Track (trackID 471, parentID 1) is processed with stopping code 2 -### pop requested out of 168 stacked tracks. - -** Photon absorbed! ** -Track (trackID 470, parentID 1) is processed with stopping code 2 -### pop requested out of 167 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.711509,0.610675,0.347606) - Old Polarization: (-0.692406,0.693585,0.198781) - New Momentum Direction: (0.321015,0.823074,0.468507) - New Polarization: (-0.940909,0.33352,0.0587716) - *** FresnelRefraction *** -Track (trackID 469, parentID 1) is processed with stopping code 2 -### pop requested out of 166 stacked tracks. - -** Photon absorbed! ** -Track (trackID 468, parentID 1) is processed with stopping code 2 -### pop requested out of 165 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.701038,0.599964,0.385472) - Old Polarization: (-0.703426,0.670618,0.235507) - New Momentum Direction: (0.249538,0.814703,0.52344) - New Polarization: (-0.96295,0.265853,0.0452806) - *** FresnelRefraction *** -Track (trackID 467, parentID 1) is processed with stopping code 2 -### pop requested out of 164 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.676837,0.462407,0.572775) - Old Polarization: (-0.730023,0.521671,0.441503) - New Momentum Direction: (-0.676837,0.462407,0.572775) - New Polarization: (-0.728642,-0.531554,-0.431893) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.676837,0.462407,0.572775) - Old Polarization: (-0.728642,-0.531554,-0.431893) - New Momentum Direction: (-0.676837,0.462407,-0.572775) - New Polarization: (0.728642,0.531554,-0.431893) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.676837,0.462407,-0.572775) - Old Polarization: (0.728642,0.531554,-0.431893) - New Momentum Direction: (-0.676837,-0.462407,-0.572775) - New Polarization: (-0.728642,0.531554,0.431893) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.676837,-0.462407,-0.572775) - Old Polarization: (-0.728642,0.531554,0.431893) - New Momentum Direction: (-0.0560562,-0.627169,-0.776863) - New Polarization: (0.995094,0.0284372,-0.0947607) - *** FresnelRefraction *** -Track (trackID 466, parentID 1) is processed with stopping code 2 -### pop requested out of 163 stacked tracks. - -** Photon absorbed! ** -Track (trackID 465, parentID 1) is processed with stopping code 2 -### pop requested out of 162 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.654175,-0.120813,0.746632) - Old Polarization: (-0.75626,-0.119136,0.643333) - New Momentum Direction: (0.880976,-0.162698,0.444309) - New Polarization: (0.397518,-0.254809,-0.881506) - *** FresnelRefraction *** -Track (trackID 464, parentID 1) is processed with stopping code 2 -### pop requested out of 161 stacked tracks. - -** Photon absorbed! ** -Track (trackID 463, parentID 1) is processed with stopping code 2 -### pop requested out of 160 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.796819,-0.448462,-0.404921) - Old Polarization: (-0.597422,-0.484532,-0.638996) - New Momentum Direction: (0.582107,-0.603507,-0.544914) - New Polarization: (-0.808466,-0.358046,-0.467103) - *** FresnelRefraction *** Track (trackID 462, parentID 1) is processed with stopping code 2 -### pop requested out of 159 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.660004,-0.415807,0.625699) - Old Polarization: (-0.748207,-0.438846,0.497594) - New Momentum Direction: (-0.660004,-0.415807,0.625699) - New Polarization: (-0.748207,0.438846,-0.497594) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.660004,-0.415807,0.625699) - Old Polarization: (-0.748207,0.438846,-0.497594) - New Momentum Direction: (-0.660004,-0.415807,-0.625699) - New Polarization: (0.748207,-0.438846,-0.497594) - *** TotalInternalReflection *** +### pop requested out of 171 stacked tracks. ** Photon absorbed! ** Track (trackID 461, parentID 1) is processed with stopping code 2 -### pop requested out of 158 stacked tracks. +### pop requested out of 170 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.754453,0.655961,0.0227202) - Old Polarization: (-0.644629,0.747044,-0.162417) - New Momentum Direction: (0.469461,0.882424,0.0305641) - New Polarization: (-0.875247,0.469649,-0.11564) + Old Momentum Direction: (0.803478,-0.317694,0.503482) + Old Polarization: (-0.560247,-0.117447,0.819957) + New Momentum Direction: (0.594497,-0.429097,0.680036) + New Polarization: (-0.779258,-0.0988655,0.618855) *** FresnelRefraction *** Track (trackID 460, parentID 1) is processed with stopping code 2 -### pop requested out of 157 stacked tracks. +### pop requested out of 169 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.814899,-0.209949,-0.540242) - Old Polarization: (-0.577649,-0.217699,-0.786721) - New Momentum Direction: (0.623874,-0.28309,-0.728451) - New Polarization: (-0.780181,-0.170974,-0.601735) + Old Momentum Direction: (0.875811,0.397547,0.273698) + Old Polarization: (-0.48095,0.671238,0.564027) + New Momentum Direction: (0.757275,0.537936,0.370351) + New Polarization: (-0.651889,0.588116,0.478707) *** FresnelRefraction *** Track (trackID 459, parentID 1) is processed with stopping code 2 -### pop requested out of 156 stacked tracks. - -** Photon absorbed! ** -Track (trackID 458, parentID 1) is processed with stopping code 2 -### pop requested out of 155 stacked tracks. +### pop requested out of 168 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.816103,0.124409,-0.564357) - Old Polarization: (-0.577724,0.151056,-0.802133) - New Momentum Direction: (0.619773,0.168944,-0.76638) - New Polarization: (-0.784657,0.116037,-0.608974) + Old Momentum Direction: (0.603208,-0.775045,-0.188267) + Old Polarization: (-0.781427,-0.621559,0.0550966) + New Momentum Direction: (0.815577,-0.519653,-0.254549) + New Polarization: (0.454304,0.847491,-0.27453) + *** FresnelRefraction *** +Track (trackID 458, parentID 1) is processed with stopping code 2 +### pop requested out of 167 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.663795,0.218118,-0.715403) + Old Polarization: (-0.713888,0.470012,-0.519088) + New Momentum Direction: (0.902226,0.296464,-0.313206) + New Polarization: (0.0981413,0.566054,0.818505) *** FresnelRefraction *** Track (trackID 457, parentID 1) is processed with stopping code 2 -### pop requested out of 154 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.663727,0.351928,0.66001) - Old Polarization: (-0.744174,0.399554,0.535315) - New Momentum Direction: (-0.663727,0.351928,0.66001) - New Polarization: (-0.744174,-0.399554,-0.535315) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.663727,0.351928,0.66001) - Old Polarization: (-0.744174,-0.399554,-0.535315) - New Momentum Direction: (-0.663727,0.351928,-0.66001) - New Polarization: (0.744174,0.399554,-0.535315) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.663727,0.351928,-0.66001) - Old Polarization: (0.744174,0.399554,-0.535315) - New Momentum Direction: (-0.663727,-0.351928,-0.66001) - New Polarization: (-0.744174,0.399554,0.535315) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.663727,-0.351928,-0.66001) - Old Polarization: (-0.744174,0.399554,0.535315) - New Momentum Direction: (0.663727,-0.351928,-0.66001) - New Polarization: (-0.744174,-0.399554,-0.535315) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.663727,-0.351928,-0.66001) - Old Polarization: (-0.744174,-0.399554,-0.535315) - New Momentum Direction: (0.663727,-0.351928,0.66001) - New Polarization: (0.744174,0.399554,-0.535315) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.663727,-0.351928,0.66001) -Old Polarization: (0.744174,0.399554,-0.535315) -New Polarization: (0.849065,0.50638,-0.150559) -Polarization Change: (0.849065,0.50638,-0.150559) -New Momentum Direction: (-0.0805244,-0.157612,-0.984212) -Momentum Change: (-0.0805244,-0.157612,-0.984212) - Photon at Boundary! - Old Momentum Direction: (-0.0805244,-0.157612,-0.984212) - Old Polarization: (0.849065,0.50638,-0.150559) - New Momentum Direction: (-0.109356,-0.214045,-0.970683) - New Polarization: (-0.0338984,-0.975169,0.218853) - *** FresnelRefraction *** +### pop requested out of 166 stacked tracks. + +** Photon absorbed! ** Track (trackID 456, parentID 1) is processed with stopping code 2 -### pop requested out of 153 stacked tracks. +### pop requested out of 165 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.800466,0.441978,-0.404857) - Old Polarization: (-0.594532,0.499776,-0.629885) - New Momentum Direction: (0.582846,0.599194,-0.548869) - New Polarization: (-0.809313,0.367522,-0.458193) + Old Momentum Direction: (0.777876,-0.427129,0.460944) + Old Polarization: (-0.588598,-0.238263,0.772517) + New Momentum Direction: (0.528372,-0.577065,0.622751) + New Polarization: (-0.821398,-0.161893,0.546897) *** FresnelRefraction *** Track (trackID 455, parentID 1) is processed with stopping code 2 -### pop requested out of 152 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.651466,0.113224,0.750182) - Old Polarization: (-0.757983,0.139443,0.637195) - New Momentum Direction: (0.882831,0.153435,0.443923) - New Polarization: (0.397872,0.257989,-0.88042) - *** FresnelRefraction *** +### pop requested out of 164 stacked tracks. + +** Photon absorbed! ** Track (trackID 454, parentID 1) is processed with stopping code 2 -### pop requested out of 151 stacked tracks. +### pop requested out of 163 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.817688,0.206984,-0.537163) - Old Polarization: (-0.574853,0.244174,-0.780976) - New Momentum Direction: (0.629042,0.27951,-0.725383) - New Polarization: (-0.776818,0.190791,-0.600128) + Old Momentum Direction: (0.564405,-0.411072,-0.715868) + Old Polarization: (-0.823386,-0.218334,-0.5238) + New Momentum Direction: (0.764848,-0.557061,-0.32356) + New Polarization: (-0.069321,-0.57051,0.81836) *** FresnelRefraction *** Track (trackID 453, parentID 1) is processed with stopping code 2 -### pop requested out of 150 stacked tracks. +### pop requested out of 162 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.657298,-0.350203,0.667321) - Old Polarization: (-0.751618,-0.369298,0.546525) - New Momentum Direction: (0.657298,-0.350203,-0.667321) - New Polarization: (0.751618,0.369298,0.546525) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.657298,-0.350203,-0.667321) - Old Polarization: (0.751618,0.369298,0.546525) - New Momentum Direction: (-0.657298,-0.350203,-0.667321) - New Polarization: (0.751618,-0.369298,-0.546525) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.657298,-0.350203,-0.667321) - Old Polarization: (0.751618,-0.369298,-0.546525) - New Momentum Direction: (-0.657298,0.350203,-0.667321) - New Polarization: (-0.751618,-0.369298,0.546525) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.657298,0.350203,-0.667321) - Old Polarization: (-0.751618,-0.369298,0.546525) - New Momentum Direction: (-0.657298,0.350203,0.667321) - New Polarization: (0.751618,0.369298,0.546525) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.657298,0.350203,0.667321) - Old Polarization: (0.751618,0.369298,0.546525) - New Momentum Direction: (0.657298,0.350203,0.667321) - New Polarization: (0.751618,-0.369298,-0.546525) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.787486,0.525316,-0.322349) + Old Polarization: (-0.578384,0.810554,-0.0920512) + New Momentum Direction: (0.550649,0.711467,-0.436577) + New Polarization: (-0.808326,0.585004,-0.0661803) + *** FresnelRefraction *** Track (trackID 452, parentID 1) is processed with stopping code 2 -### pop requested out of 149 stacked tracks. +### pop requested out of 161 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.716714,-0.681865,0.146224) - Old Polarization: (-0.686238,-0.726908,-0.0261052) - New Momentum Direction: (0.316266,-0.927582,0.198917) - New Polarization: (-0.942126,-0.331689,-0.0487936) + Old Momentum Direction: (0.560457,-0.567656,-0.603037) + Old Polarization: (-0.828142,-0.391441,-0.401192) + New Momentum Direction: (0.560457,-0.567656,0.603037) + New Polarization: (0.828142,0.391441,-0.401192) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.560457,-0.567656,0.603037) + Old Polarization: (0.828142,0.391441,-0.401192) + New Momentum Direction: (0.560457,0.567656,0.603037) + New Polarization: (-0.828142,0.391441,0.401192) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.560457,0.567656,0.603037) + Old Polarization: (-0.828142,0.391441,0.401192) + New Momentum Direction: (-0.560457,0.567656,0.603037) + New Polarization: (-0.828142,-0.391441,-0.401192) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.560457,0.567656,0.603037) + Old Polarization: (-0.828142,-0.391441,-0.401192) + New Momentum Direction: (-0.560457,0.567656,-0.603037) + New Polarization: (0.828142,0.391441,-0.401192) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.560457,0.567656,-0.603037) + Old Polarization: (0.828142,0.391441,-0.401192) + New Momentum Direction: (-0.560457,-0.567656,-0.603037) + New Polarization: (-0.828142,0.391441,0.401192) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.560457,-0.567656,-0.603037) + Old Polarization: (-0.828142,0.391441,0.401192) + New Momentum Direction: (0.560457,-0.567656,-0.603037) + New Polarization: (-0.828142,-0.391441,-0.401192) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (0.560457,-0.567656,-0.603037) +Old Polarization: (-0.828142,-0.391441,-0.401192) +New Polarization: (0.196388,0.880258,0.431947) +Polarization Change: (0.196388,0.880258,0.431947) +New Momentum Direction: (0.947801,-0.283281,0.14637) +Momentum Change: (0.947801,-0.283281,0.14637) + Photon at Boundary! + Old Momentum Direction: (0.947801,-0.283281,0.14637) + Old Polarization: (0.196388,0.880258,0.431947) + New Momentum Direction: (0.902052,-0.383465,0.198134) + New Polarization: (-0.314817,-0.270482,0.909796) *** FresnelRefraction *** Track (trackID 451, parentID 1) is processed with stopping code 2 -### pop requested out of 148 stacked tracks. +### pop requested out of 160 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.732225,0.660758,0.165066) - Old Polarization: (-0.669362,0.742922,-0.00465153) - New Momentum Direction: (0.388463,0.893991,0.223331) - New Polarization: (-0.914169,0.404335,-0.0284398) + Old Momentum Direction: (0.590299,-0.14663,-0.793755) + Old Polarization: (-0.793895,0.0722371,-0.603748) + New Momentum Direction: (0.802734,-0.199398,-0.562013) + New Polarization: (0.52298,-0.217464,0.824137) *** FresnelRefraction *** Track (trackID 450, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. +### pop requested out of 159 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.724156,0.659097,0.202952) - Old Polarization: (-0.678156,0.73404,0.0359059) - New Momentum Direction: (0.34889,0.895663,0.275797) - New Polarization: (-0.93024,0.366683,-0.0140433) + Old Momentum Direction: (0.599148,-0.106174,-0.793567) + Old Polarization: (-0.785105,0.116381,-0.60833) + New Momentum Direction: (0.81232,-0.14395,-0.565168) + New Polarization: (0.553689,-0.114067,0.824874) *** FresnelRefraction *** Track (trackID 449, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. +### pop requested out of 158 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.665879,-0.431584,0.608556) - Old Polarization: (-0.742643,-0.461409,0.485368) - New Momentum Direction: (-0.665879,-0.431584,0.608556) - New Polarization: (-0.742643,0.461409,-0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665879,-0.431584,0.608556) - Old Polarization: (-0.742643,0.461409,-0.485368) - New Momentum Direction: (-0.665879,-0.431584,-0.608556) - New Polarization: (0.742643,-0.461409,-0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665879,-0.431584,-0.608556) - Old Polarization: (0.742643,-0.461409,-0.485368) - New Momentum Direction: (-0.665879,0.431584,-0.608556) - New Polarization: (-0.742643,-0.461409,0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665879,0.431584,-0.608556) - Old Polarization: (-0.742643,-0.461409,0.485368) - New Momentum Direction: (0.665879,0.431584,-0.608556) - New Polarization: (-0.742643,0.461409,-0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.665879,0.431584,-0.608556) - Old Polarization: (-0.742643,0.461409,-0.485368) - New Momentum Direction: (0.665879,0.431584,0.608556) - New Polarization: (0.742643,-0.461409,-0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.665879,0.431584,0.608556) - Old Polarization: (0.742643,-0.461409,-0.485368) - New Momentum Direction: (0.665879,-0.431584,0.608556) - New Polarization: (-0.742643,-0.461409,0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.665879,-0.431584,0.608556) - Old Polarization: (-0.742643,-0.461409,0.485368) - New Momentum Direction: (-0.665879,-0.431584,0.608556) - New Polarization: (-0.742643,0.461409,-0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665879,-0.431584,0.608556) - Old Polarization: (-0.742643,0.461409,-0.485368) - New Momentum Direction: (-0.665879,-0.431584,-0.608556) - New Polarization: (0.742643,-0.461409,-0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665879,-0.431584,-0.608556) - Old Polarization: (0.742643,-0.461409,-0.485368) - New Momentum Direction: (0.665879,-0.431584,-0.608556) - New Polarization: (0.742643,0.461409,0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.665879,-0.431584,-0.608556) - Old Polarization: (0.742643,0.461409,0.485368) - New Momentum Direction: (0.665879,-0.431584,0.608556) - New Polarization: (-0.742643,-0.461409,0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.665879,-0.431584,0.608556) - Old Polarization: (-0.742643,-0.461409,0.485368) - New Momentum Direction: (0.665879,0.431584,0.608556) - New Polarization: (0.742643,-0.461409,-0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.665879,0.431584,0.608556) - Old Polarization: (0.742643,-0.461409,-0.485368) - New Momentum Direction: (-0.665879,0.431584,0.608556) - New Polarization: (0.742643,0.461409,0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665879,0.431584,0.608556) - Old Polarization: (0.742643,0.461409,0.485368) - New Momentum Direction: (-0.665879,0.431584,-0.608556) - New Polarization: (-0.742643,-0.461409,0.485368) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665879,0.431584,-0.608556) - Old Polarization: (-0.742643,-0.461409,0.485368) - New Momentum Direction: (-0.665879,-0.431584,-0.608556) - New Polarization: (0.742643,-0.461409,-0.485368) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.584974,-0.26871,-0.765245) + Old Polarization: (-0.803697,-0.0652707,-0.591448) + New Momentum Direction: (0.78595,-0.361029,-0.501937) + New Polarization: (0.316493,-0.462476,0.82822) + *** FresnelRefraction *** Track (trackID 448, parentID 1) is processed with stopping code 2 -### pop requested out of 145 stacked tracks. +### pop requested out of 157 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.556391,-0.594395,-0.580623) + Old Polarization: (-0.830669,-0.415079,-0.371078) + New Momentum Direction: (0.556391,0.594395,-0.580623) + New Polarization: (0.830669,-0.415079,0.371078) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.556391,0.594395,-0.580623) + Old Polarization: (0.830669,-0.415079,0.371078) + New Momentum Direction: (0.556391,0.594395,0.580623) + New Polarization: (-0.830669,0.415079,0.371078) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.556391,0.594395,0.580623) + Old Polarization: (-0.830669,0.415079,0.371078) + New Momentum Direction: (-0.556391,0.594395,0.580623) + New Polarization: (-0.830669,-0.415079,-0.371078) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 447, parentID 1) is processed with stopping code 2 -### pop requested out of 144 stacked tracks. - -** Photon absorbed! ** -Track (trackID 446, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. +### pop requested out of 156 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.810273,-0.192075,-0.553683) - Old Polarization: (-0.584402,-0.193956,-0.787944) - New Momentum Direction: (0.603783,-0.26126,-0.75312) - New Polarization: (-0.796037,-0.147716,-0.586946) + Old Momentum Direction: (0.747197,0.442168,-0.496169) + Old Polarization: (-0.622273,0.727633,-0.288661) + New Momentum Direction: (0.446905,0.595175,-0.667864) + New Polarization: (-0.866067,0.474842,-0.156372) + *** FresnelRefraction *** +Track (trackID 446, parentID 1) is processed with stopping code 2 +### pop requested out of 155 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.828446,-0.175245,0.531946) + Old Polarization: (-0.533751,0.0406915,0.844662) + New Momentum Direction: (0.650335,-0.237693,0.721503) + New Polarization: (-0.740964,0.0108692,0.671457) *** FresnelRefraction *** Track (trackID 445, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. +### pop requested out of 154 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.740743,-0.67082,-0.0360644) - Old Polarization: (-0.660061,-0.716774,-0.224842) - New Momentum Direction: (0.408442,-0.911468,-0.049002) - New Polarization: (-0.905442,-0.397776,-0.148153) + Old Momentum Direction: (0.584981,-0.758059,-0.288345) + Old Polarization: (-0.800349,-0.597105,-0.0539216) + New Momentum Direction: (0.793839,-0.465521,-0.391294) + New Polarization: (0.272347,0.847453,-0.455686) *** FresnelRefraction *** Track (trackID 444, parentID 1) is processed with stopping code 2 -### pop requested out of 141 stacked tracks. +### pop requested out of 153 stacked tracks. ** Photon absorbed! ** Track (trackID 443, parentID 1) is processed with stopping code 2 -### pop requested out of 140 stacked tracks. +### pop requested out of 152 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.762264,-0.621613,-0.18042) - Old Polarization: (-0.636314,-0.668606,-0.384798) - New Momentum Direction: (0.481964,-0.841464,-0.244231) - New Polarization: (-0.869031,-0.423517,-0.255772) + Old Momentum Direction: (0.668419,0.222447,-0.709741) + Old Polarization: (-0.709296,0.477841,-0.518235) + New Momentum Direction: (0.905054,0.301198,-0.30026) + New Polarization: (0.0812624,0.570524,0.817251) *** FresnelRefraction *** Track (trackID 442, parentID 1) is processed with stopping code 2 -### pop requested out of 139 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.774754,0.60362,-0.188145) - Old Polarization: (-0.622724,0.677004,-0.392275) - New Momentum Direction: (0.515042,0.818335,-0.25507) - New Polarization: (-0.850862,0.452072,-0.267704) - *** FresnelRefraction *** -Track (trackID 441, parentID 1) is processed with stopping code 2 -### pop requested out of 138 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.814832,-0.14416,-0.561486) - Old Polarization: (-0.578617,-0.143158,-0.802937) - New Momentum Direction: (0.619183,-0.195276,-0.760578) - New Polarization: (-0.784511,-0.111924,-0.609931) - *** FresnelRefraction *** -Track (trackID 440, parentID 1) is processed with stopping code 2 -### pop requested out of 137 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.651243,-0.0804783,0.75459) - Old Polarization: (-0.758861,-0.0736886,0.64707) - New Momentum Direction: (0.879776,-0.10872,0.462789) - New Polarization: (0.442079,-0.170877,-0.880549) - *** FresnelRefraction *** -Track (trackID 439, parentID 1) is processed with stopping code 2 -### pop requested out of 136 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.649592,0.124794,0.749971) - Old Polarization: (-0.7595,0.151276,0.632673) - New Momentum Direction: (0.882684,0.169573,0.438307) - New Polarization: (0.383174,0.28033,-0.880109) - *** FresnelRefraction *** -Track (trackID 438, parentID 1) is processed with stopping code 2 -### pop requested out of 135 stacked tracks. +### pop requested out of 151 stacked tracks. ** Photon absorbed! ** -Track (trackID 437, parentID 1) is processed with stopping code 2 -### pop requested out of 134 stacked tracks. +Track (trackID 441, parentID 1) is processed with stopping code 2 +### pop requested out of 150 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.820203,0.0438431,-0.57039) - Old Polarization: (-0.572072,0.0637412,-0.817723) - New Momentum Direction: (0.634984,0.0592057,-0.770254) - New Polarization: (-0.772525,0.0492931,-0.633068) + Old Momentum Direction: (0.839804,-0.109599,0.531712) + Old Polarization: (-0.520996,0.112635,0.846095) + New Momentum Direction: (0.677447,-0.148497,0.720426) + New Polarization: (-0.719965,0.0668201,0.690786) + *** FresnelRefraction *** +Track (trackID 440, parentID 1) is processed with stopping code 2 +### pop requested out of 149 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.59397,-0.142307,-0.7918) + Old Polarization: (-0.790915,0.076727,-0.607096) + New Momentum Direction: (0.804946,-0.192854,-0.561132) + New Polarization: (0.526101,-0.205327,0.825263) + *** FresnelRefraction *** +Track (trackID 439, parentID 1) is processed with stopping code 2 +### pop requested out of 148 stacked tracks. + +** Photon absorbed! ** +Track (trackID 438, parentID 1) is processed with stopping code 2 +### pop requested out of 147 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.620464,-0.779106,-0.0895431) + Old Polarization: (-0.762382,-0.625996,0.164022) + New Momentum Direction: (0.83893,-0.530602,-0.121071) + New Polarization: (0.530132,0.847029,-0.038749) + *** FresnelRefraction *** +Track (trackID 437, parentID 1) is processed with stopping code 2 +### pop requested out of 146 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.565509,-0.403057,-0.719545) + Old Polarization: (-0.822406,-0.209972,-0.528734) + New Momentum Direction: (0.765863,-0.545856,-0.339846) + New Polarization: (-0.0442627,-0.572029,0.819038) *** FresnelRefraction *** Track (trackID 436, parentID 1) is processed with stopping code 2 -### pop requested out of 133 stacked tracks. +### pop requested out of 145 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.695546,-0.62356,0.356916) - Old Polarization: (-0.70986,-0.673137,0.207329) - New Momentum Direction: (0.23888,-0.842759,0.482383) - New Polarization: (-0.966238,-0.255683,0.0317915) + Old Momentum Direction: (0.68299,0.281099,-0.674172) + Old Polarization: (-0.693118,0.540632,-0.476765) + New Momentum Direction: (-0.68299,0.281099,-0.674172) + New Polarization: (-0.671027,-0.606054,0.427107) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.68299,0.281099,-0.674172) + Old Polarization: (-0.671027,-0.606054,0.427107) + New Momentum Direction: (-0.68299,0.281099,0.674172) + New Polarization: (0.671027,0.606054,0.427107) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.68299,0.281099,0.674172) +Old Polarization: (0.671027,0.606054,0.427107) +New Polarization: (0.118832,0.335096,0.93466) +Polarization Change: (0.118832,0.335096,0.93466) +New Momentum Direction: (-0.806725,-0.516199,0.287635) +Momentum Change: (-0.806725,-0.516199,0.287635) + Photon at Boundary! + Old Momentum Direction: (-0.806725,-0.516199,0.287635) + Old Polarization: (0.118832,0.335096,0.93466) + New Momentum Direction: (-0.597917,-0.700193,0.39016) + New Polarization: (0.224157,0.321268,0.920076) *** FresnelRefraction *** Track (trackID 435, parentID 1) is processed with stopping code 2 -### pop requested out of 132 stacked tracks. +### pop requested out of 144 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.780439,0.585948,-0.21813) - Old Polarization: (-0.616177,0.661647,-0.427258) - New Momentum Direction: (0.534331,0.792165,-0.294898) - New Polarization: (-0.83922,0.455487,-0.297053) + Old Momentum Direction: (0.876288,0.397001,0.272965) + Old Polarization: (-0.480076,0.671784,0.564122) + New Momentum Direction: (0.758795,0.536706,0.369021) + New Polarization: (-0.650113,0.589482,0.479441) *** FresnelRefraction *** Track (trackID 434, parentID 1) is processed with stopping code 2 -### pop requested out of 131 stacked tracks. +### pop requested out of 143 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.721407,-0.682087,0.119704) - Old Polarization: (-0.681172,-0.730066,-0.0548468) - New Momentum Direction: (-0.721407,-0.682087,0.119704) - New Polarization: (-0.641907,0.723489,0.254006) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.721407,-0.682087,0.119704) - Old Polarization: (-0.641907,0.723489,0.254006) - New Momentum Direction: (-0.979597,-0.118188,0.162546) - New Polarization: (-0.101903,0.989222,0.105144) + Old Momentum Direction: (0.736063,-0.565259,0.372416) + Old Polarization: (-0.634999,-0.386006,0.669161) + New Momentum Direction: (0.395034,-0.767136,0.505421) + New Polarization: (-0.891587,-0.187555,0.412184) *** FresnelRefraction *** Track (trackID 433, parentID 1) is processed with stopping code 2 -### pop requested out of 130 stacked tracks. +### pop requested out of 142 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.682293,-0.557999,0.472348) - Old Polarization: (-0.724605,-0.601946,0.335574) - New Momentum Direction: (-0.682293,-0.557999,0.472348) - New Polarization: (-0.719323,0.627787,-0.297417) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.682293,-0.557999,0.472348) - Old Polarization: (-0.719323,0.627787,-0.297417) - New Momentum Direction: (-0.682293,0.557999,0.472348) - New Polarization: (0.719323,0.627787,0.297417) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.682293,0.557999,0.472348) - Old Polarization: (0.719323,0.627787,0.297417) - New Momentum Direction: (-0.682293,0.557999,-0.472348) - New Polarization: (-0.719323,-0.627787,0.297417) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.682293,0.557999,-0.472348) - Old Polarization: (-0.719323,-0.627787,0.297417) - New Momentum Direction: (-0.15943,0.753493,-0.637833) - New Polarization: (0.981114,0.0492476,-0.187058) + Old Momentum Direction: (0.604388,-0.100892,-0.790276) + Old Polarization: (-0.780761,0.12236,-0.612732) + New Momentum Direction: (0.815361,-0.13611,-0.562725) + New Polarization: (0.554123,-0.0981241,0.826631) *** FresnelRefraction *** Track (trackID 432, parentID 1) is processed with stopping code 2 -### pop requested out of 129 stacked tracks. +### pop requested out of 141 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.650012,0.0529759,0.758075) - Old Polarization: (-0.759623,0.0733563,0.646213) - New Momentum Direction: (0.880666,0.0717743,0.468269) - New Polarization: (0.45713,0.130677,-0.879747) + Old Momentum Direction: (0.69164,-0.682856,0.23525) + Old Polarization: (-0.683568,-0.513748,0.518458) + New Momentum Direction: (0.194701,-0.927372,0.319488) + New Polarization: (-0.959584,-0.112612,0.25791) *** FresnelRefraction *** Track (trackID 431, parentID 1) is processed with stopping code 2 -### pop requested out of 128 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.746788,0.663996,0.0376494) - Old Polarization: (-0.65339,0.743064,-0.144697) - New Momentum Direction: (0.432344,0.900263,0.051046) - New Polarization: (-0.894277,0.435346,-0.103647) - *** FresnelRefraction *** +### pop requested out of 140 stacked tracks. + +** Photon absorbed! ** Track (trackID 430, parentID 1) is processed with stopping code 2 -### pop requested out of 127 stacked tracks. +### pop requested out of 139 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.556099,-0.511119,-0.655371) + Old Polarization: (-0.830907,-0.324243,-0.452172) + New Momentum Direction: (0.556099,-0.511119,0.655371) + New Polarization: (0.830907,0.324243,-0.452172) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.556099,-0.511119,0.655371) + Old Polarization: (0.830907,0.324243,-0.452172) + New Momentum Direction: (-0.556099,-0.511119,0.655371) + New Polarization: (0.830907,-0.324243,0.452172) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.556099,-0.511119,0.655371) + Old Polarization: (0.830907,-0.324243,0.452172) + New Momentum Direction: (-0.556099,0.511119,0.655371) + New Polarization: (-0.830907,-0.324243,-0.452172) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 429, parentID 1) is processed with stopping code 2 -### pop requested out of 126 stacked tracks. +### pop requested out of 138 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.65945,-0.398,0.637747) - Old Polarization: (-0.748995,-0.420393,0.512129) - New Momentum Direction: (-0.65945,-0.398,0.637747) - New Polarization: (-0.748995,0.420393,-0.512129) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.65945,-0.398,0.637747) - Old Polarization: (-0.748995,0.420393,-0.512129) - New Momentum Direction: (-0.65945,-0.398,-0.637747) - New Polarization: (0.748995,-0.420393,-0.512129) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.793325,0.53637,-0.287997) + Old Polarization: (-0.57249,0.818184,-0.0531973) + New Momentum Direction: (0.562339,0.728531,-0.391174) + New Polarization: (-0.801668,0.5963,-0.0418902) + *** FresnelRefraction *** Track (trackID 428, parentID 1) is processed with stopping code 2 -### pop requested out of 125 stacked tracks. +### pop requested out of 137 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.573559,-0.697529,-0.429516) +Old Polarization: (-0.814927,-0.53913,-0.212681) +New Polarization: (0.124807,-0.804393,-0.58084) +Polarization Change: (0.124807,-0.804393,-0.58084) +New Momentum Direction: (0.979263,0.194028,-0.0582883) +Momentum Change: (0.979263,0.194028,-0.0582883) Photon at Boundary! - Old Momentum Direction: (0.814129,-0.0911754,-0.573481) - Old Polarization: (-0.58012,-0.0842106,-0.810166) - New Momentum Direction: (0.613736,-0.123964,-0.779718) - New Polarization: (-0.78913,-0.0656531,-0.610707) + Old Momentum Direction: (0.979263,0.194028,-0.0582883) + Old Polarization: (0.124807,-0.804393,-0.58084) + New Momentum Direction: (0.961921,0.26177,-0.0786388) + New Polarization: (-0.198632,0.471853,-0.859011) *** FresnelRefraction *** Track (trackID 427, parentID 1) is processed with stopping code 2 -### pop requested out of 124 stacked tracks. +### pop requested out of 136 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.649174,-0.0346772,0.759849) - Old Polarization: (-0.760623,-0.0229099,0.64879) - New Momentum Direction: (0.879189,-0.046964,0.474153) - New Polarization: (0.470692,-0.068947,-0.8796) - *** FresnelRefraction *** -Track (trackID 426, parentID 1) is processed with stopping code 2 -### pop requested out of 123 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.684247,0.494848,0.535659) - Old Polarization: (-0.722292,0.56111,0.40429) - New Momentum Direction: (-0.684247,0.494848,0.535659) - New Polarization: (-0.716198,-0.594352,-0.365796) + Old Momentum Direction: (0.739586,0.422523,-0.523915) + Old Polarization: (-0.630724,0.706798,-0.32035) + New Momentum Direction: (-0.739586,0.422523,-0.523915) + New Polarization: (-0.438201,-0.893108,-0.10168) *** FresnelReflection *** ** Photon absorbed! ** -Track (trackID 425, parentID 1) is processed with stopping code 2 -### pop requested out of 122 stacked tracks. +Track (trackID 426, parentID 1) is processed with stopping code 2 +### pop requested out of 135 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.79449,0.499232,-0.345764) - Old Polarization: (-0.600907,0.564031,-0.566374) - New Momentum Direction: (0.569053,0.675999,-0.468192) - New Polarization: (-0.818007,0.407261,-0.406205) + Old Momentum Direction: (0.845625,-0.0953202,0.525197) + Old Polarization: (-0.512712,0.128634,0.84887) + New Momentum Direction: (0.695234,-0.128358,0.70723) + New Polarization: (-0.70359,0.0797034,0.706122) + *** FresnelRefraction *** +Track (trackID 425, parentID 1) is processed with stopping code 2 +### pop requested out of 134 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.739992,-0.566142,0.363174) + Old Polarization: (-0.630331,-0.395274,0.668162) + New Momentum Direction: (0.423327,-0.762562,0.489176) + New Polarization: (-0.877869,-0.211809,0.429515) *** FresnelRefraction *** Track (trackID 424, parentID 1) is processed with stopping code 2 -### pop requested out of 121 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.795894,-0.447454,-0.407845) -Old Polarization: (-0.598705,-0.481503,-0.640084) -New Polarization: (-0.957072,-0.142018,0.252673) -Polarization Change: (-0.957072,-0.142018,0.252673) -New Momentum Direction: (-0.159143,-0.471115,-0.867597) -Momentum Change: (-0.159143,-0.471115,-0.867597) +### pop requested out of 133 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.159143,-0.471115,-0.867597) - Old Polarization: (-0.957072,-0.142018,0.252673) - New Momentum Direction: (-0.214537,-0.635097,-0.742042) - New Polarization: (-0.884696,-0.195568,0.423163) + Old Momentum Direction: (0.661245,-0.743677,0.0984837) + Old Polarization: (-0.717561,-0.588742,0.372142) + New Momentum Direction: (0.893005,-0.429945,0.133001) + New Polarization: (0.348255,0.847349,0.400896) *** FresnelRefraction *** Track (trackID 423, parentID 1) is processed with stopping code 2 -### pop requested out of 120 stacked tracks. +### pop requested out of 132 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.704112,0.610928,0.36193) - Old Polarization: (-0.700066,0.68257,0.209776) - New Momentum Direction: (0.264957,0.829605,0.491481) - New Polarization: (-0.958587,0.281824,0.0410627) + Old Momentum Direction: (0.768083,0.50369,-0.395404) + Old Polarization: (-0.600135,0.781596,-0.170135) + New Momentum Direction: (0.492547,0.684554,-0.537385) + New Polarization: (-0.843056,0.52856,-0.0994019) *** FresnelRefraction *** Track (trackID 422, parentID 1) is processed with stopping code 2 -### pop requested out of 119 stacked tracks. +### pop requested out of 131 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.654623,-0.149023,0.741121) - Old Polarization: (-0.755773,-0.150549,0.637293) - New Momentum Direction: (0.881529,-0.200678,0.427358) - New Polarization: (0.357134,-0.308618,-0.881595) + Old Momentum Direction: (0.86371,0.0950127,0.494952) + Old Polarization: (-0.495876,0.335711,0.800878) + New Momentum Direction: (0.72848,0.12915,0.672784) + New Polarization: (-0.679333,0.26299,0.685086) *** FresnelRefraction *** Track (trackID 421, parentID 1) is processed with stopping code 2 -### pop requested out of 118 stacked tracks. - -** Photon absorbed! ** -Track (trackID 420, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. +### pop requested out of 130 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.651818,-0.17981,0.736751) - Old Polarization: (-0.758046,-0.183085,0.625976) - New Momentum Direction: (0.881325,-0.243121,0.405165) - New Polarization: (0.305456,-0.361066,-0.881095) + Old Momentum Direction: (0.659386,0.185585,-0.728538) + Old Polarization: (-0.719294,0.437618,-0.539542) + New Momentum Direction: (0.892434,0.251177,-0.374795) + New Polarization: (0.19354,0.537269,0.820905) + *** FresnelRefraction *** +Track (trackID 420, parentID 1) is processed with stopping code 2 +### pop requested out of 129 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.839952,0.540537,-0.0479689) + Old Polarization: (-0.520646,0.827644,0.209599) + New Momentum Direction: (0.678291,0.731917,-0.0649526) + New Polarization: (-0.719082,0.679371,0.146205) *** FresnelRefraction *** Track (trackID 419, parentID 1) is processed with stopping code 2 -### pop requested out of 116 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.810323,0.287183,-0.510786) - Old Polarization: (-0.584213,0.328219,-0.742272) - New Momentum Direction: (0.604653,0.390349,-0.694278) - New Polarization: (-0.795294,0.248158,-0.553105) - *** FresnelRefraction *** -Track (trackID 418, parentID 1) is processed with stopping code 2 -### pop requested out of 115 stacked tracks. +### pop requested out of 128 stacked tracks. ** Photon absorbed! ** +Track (trackID 418, parentID 1) is processed with stopping code 2 +### pop requested out of 127 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.713131,-0.628413,0.31071) + Old Polarization: (-0.660076,-0.452641,0.599513) + New Momentum Direction: (0.301975,-0.854565,0.422528) + New Polarization: (-0.928564,-0.163325,0.333307) + *** FresnelRefraction *** Track (trackID 417, parentID 1) is processed with stopping code 2 -### pop requested out of 114 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.66481,0.34921,0.660364) - Old Polarization: (-0.743243,0.397917,0.537822) - New Momentum Direction: (-0.66481,0.34921,0.660364) - New Polarization: (-0.743243,-0.397917,-0.537822) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66481,0.34921,0.660364) - Old Polarization: (-0.743243,-0.397917,-0.537822) - New Momentum Direction: (-0.66481,0.34921,-0.660364) - New Polarization: (0.743243,0.397917,-0.537822) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66481,0.34921,-0.660364) - Old Polarization: (0.743243,0.397917,-0.537822) - New Momentum Direction: (-0.66481,-0.34921,-0.660364) - New Polarization: (-0.743243,0.397917,0.537822) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66481,-0.34921,-0.660364) - Old Polarization: (-0.743243,0.397917,0.537822) - New Momentum Direction: (0.66481,-0.34921,-0.660364) - New Polarization: (-0.743243,-0.397917,-0.537822) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.66481,-0.34921,-0.660364) - Old Polarization: (-0.743243,-0.397917,-0.537822) - New Momentum Direction: (0.66481,-0.34921,0.660364) - New Polarization: (0.743243,0.397917,-0.537822) - *** TotalInternalReflection *** +### pop requested out of 126 stacked tracks. ** Photon absorbed! ** Track (trackID 416, parentID 1) is processed with stopping code 2 -### pop requested out of 113 stacked tracks. +### pop requested out of 125 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.80657,-0.292758,-0.513555) - Old Polarization: (-0.587853,-0.305759,-0.748959) - New Momentum Direction: (0.598034,-0.396923,-0.696282) - New Polarization: (-0.799246,-0.230664,-0.554977) + Old Momentum Direction: (0.576244,-0.306083,-0.757797) + Old Polarization: (-0.811538,-0.104597,-0.574862) + New Momentum Direction: (0.778328,-0.413423,-0.472532) + New Polarization: (0.228112,-0.514979,0.826294) *** FresnelRefraction *** Track (trackID 415, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. +### pop requested out of 124 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.660663,-0.392095,0.640145) - Old Polarization: (-0.74801,-0.415745,0.517336) - New Momentum Direction: (-0.660663,-0.392095,0.640145) - New Polarization: (-0.74801,0.415745,-0.517336) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.660663,-0.392095,0.640145) - Old Polarization: (-0.74801,0.415745,-0.517336) - New Momentum Direction: (-0.660663,-0.392095,-0.640145) - New Polarization: (0.74801,-0.415745,-0.517336) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.660663,-0.392095,-0.640145) - Old Polarization: (0.74801,-0.415745,-0.517336) - New Momentum Direction: (-0.660663,0.392095,-0.640145) - New Polarization: (-0.74801,-0.415745,0.517336) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.660663,0.392095,-0.640145) - Old Polarization: (-0.74801,-0.415745,0.517336) - New Momentum Direction: (0.660663,0.392095,-0.640145) - New Polarization: (-0.74801,0.415745,-0.517336) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.660663,0.392095,-0.640145) - Old Polarization: (-0.74801,0.415745,-0.517336) - New Momentum Direction: (0.660663,0.392095,0.640145) - New Polarization: (0.74801,-0.415745,-0.517336) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.660663,0.392095,0.640145) - Old Polarization: (0.74801,-0.415745,-0.517336) - New Momentum Direction: (0.660663,-0.392095,0.640145) - New Polarization: (-0.74801,-0.415745,0.517336) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.563369,-0.388275,-0.729286) + Old Polarization: (-0.823413,-0.191341,-0.53421) + New Momentum Direction: (0.765738,-0.527748,-0.367597) + New Polarization: (0.000447819,-0.571117,0.820869) + *** FresnelRefraction *** Track (trackID 414, parentID 1) is processed with stopping code 2 -### pop requested out of 111 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.778267,-0.546542,-0.30918) -Old Polarization: (-0.618861,-0.584205,-0.525087) -New Polarization: (-0.612787,-0.771219,0.172376) -Polarization Change: (-0.612787,-0.771219,0.172376) -New Momentum Direction: (0.24628,0.0208904,0.968974) -Momentum Change: (0.24628,0.0208904,0.968974) - -** Photon absorbed! ** +### pop requested out of 123 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.583378,-0.749758,-0.312303) + Old Polarization: (-0.802706,-0.590855,-0.0809557) + New Momentum Direction: (0.790198,-0.443441,-0.423021) + New Polarization: (0.215884,0.847417,-0.485054) + *** FresnelRefraction *** Track (trackID 413, parentID 1) is processed with stopping code 2 -### pop requested out of 110 stacked tracks. +### pop requested out of 122 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.668463,0.408153,0.621746) - Old Polarization: (-0.738863,0.460063,0.492366) - New Momentum Direction: (-0.668463,0.408153,0.621746) - New Polarization: (-0.738863,-0.460063,-0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.668463,0.408153,0.621746) - Old Polarization: (-0.738863,-0.460063,-0.492366) - New Momentum Direction: (-0.668463,0.408153,-0.621746) - New Polarization: (0.738863,0.460063,-0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.668463,0.408153,-0.621746) - Old Polarization: (0.738863,0.460063,-0.492366) - New Momentum Direction: (-0.668463,-0.408153,-0.621746) - New Polarization: (-0.738863,0.460063,0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.668463,-0.408153,-0.621746) - Old Polarization: (-0.738863,0.460063,0.492366) - New Momentum Direction: (0.668463,-0.408153,-0.621746) - New Polarization: (-0.738863,-0.460063,-0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.668463,-0.408153,-0.621746) - Old Polarization: (-0.738863,-0.460063,-0.492366) - New Momentum Direction: (0.668463,-0.408153,0.621746) - New Polarization: (0.738863,0.460063,-0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.668463,-0.408153,0.621746) - Old Polarization: (0.738863,0.460063,-0.492366) - New Momentum Direction: (0.668463,0.408153,0.621746) - New Polarization: (-0.738863,0.460063,0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.668463,0.408153,0.621746) - Old Polarization: (-0.738863,0.460063,0.492366) - New Momentum Direction: (-0.668463,0.408153,0.621746) - New Polarization: (-0.738863,-0.460063,-0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.668463,0.408153,0.621746) - Old Polarization: (-0.738863,-0.460063,-0.492366) - New Momentum Direction: (-0.668463,0.408153,-0.621746) - New Polarization: (0.738863,0.460063,-0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.668463,0.408153,-0.621746) - Old Polarization: (0.738863,0.460063,-0.492366) - New Momentum Direction: (0.668463,0.408153,-0.621746) - New Polarization: (0.738863,-0.460063,0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.668463,0.408153,-0.621746) - Old Polarization: (0.738863,-0.460063,0.492366) - New Momentum Direction: (0.668463,0.408153,0.621746) - New Polarization: (-0.738863,0.460063,0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.668463,0.408153,0.621746) - Old Polarization: (-0.738863,0.460063,0.492366) - New Momentum Direction: (0.668463,-0.408153,0.621746) - New Polarization: (0.738863,0.460063,-0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.668463,-0.408153,0.621746) - Old Polarization: (0.738863,0.460063,-0.492366) - New Momentum Direction: (-0.668463,-0.408153,0.621746) - New Polarization: (0.738863,-0.460063,0.492366) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.668463,-0.408153,0.621746) - Old Polarization: (0.738863,-0.460063,0.492366) - New Momentum Direction: (-0.668463,-0.408153,-0.621746) - New Polarization: (-0.738863,0.460063,0.492366) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.668463,-0.408153,-0.621746) -Old Polarization: (-0.738863,0.460063,0.492366) -New Polarization: (0.584986,0.299882,-0.753567) -Polarization Change: (0.584986,0.299882,-0.753567) -New Momentum Direction: (-0.468369,0.883451,-0.0120206) -Momentum Change: (-0.468369,0.883451,-0.0120206) - Photon at Boundary! - Old Momentum Direction: (-0.468369,0.883451,-0.0120206) - Old Polarization: (0.584986,0.299882,-0.753567) - New Momentum Direction: (-0.636647,0.770982,-0.0163394) - New Polarization: (-0.566122,-0.481659,-0.668962) + Old Momentum Direction: (0.842336,-0.105666,0.528493) + Old Polarization: (-0.51724,0.117038,0.8478) + New Momentum Direction: (0.685723,-0.142703,0.713736) + New Polarization: (-0.712287,0.0702073,0.698368) *** FresnelRefraction *** Track (trackID 412, parentID 1) is processed with stopping code 2 -### pop requested out of 109 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.665021,-0.475234,0.576107) - Old Polarization: (-0.742594,-0.502776,0.44246) - New Momentum Direction: (-0.665021,-0.475234,0.576107) - New Polarization: (-0.742594,0.502776,-0.44246) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665021,-0.475234,0.576107) - Old Polarization: (-0.742594,0.502776,-0.44246) - New Momentum Direction: (-0.665021,-0.475234,-0.576107) - New Polarization: (0.742594,-0.502776,-0.44246) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.665021,-0.475234,-0.576107) - Old Polarization: (0.742594,-0.502776,-0.44246) - New Momentum Direction: (-0.665021,0.475234,-0.576107) - New Polarization: (-0.742594,-0.502776,0.44246) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.665021,0.475234,-0.576107) -Old Polarization: (-0.742594,-0.502776,0.44246) -New Polarization: (-0.968567,0.0510538,-0.243458) -Polarization Change: (-0.968567,0.0510538,-0.243458) -New Momentum Direction: (-0.216121,-0.657304,0.721971) -Momentum Change: (-0.216121,-0.657304,0.721971) +### pop requested out of 121 stacked tracks. ** Photon absorbed! ** Track (trackID 411, parentID 1) is processed with stopping code 2 -### pop requested out of 108 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736683,0.66291,0.133594) - Old Polarization: (-0.664448,0.746303,-0.0392505) - New Momentum Direction: (0.404877,0.89635,0.180639) - New Polarization: (-0.906941,0.418806,-0.0453785) - *** FresnelRefraction *** +### pop requested out of 120 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.797305,0.542204,-0.265178) +Old Polarization: (-0.568425,0.822266,-0.0278022) +New Polarization: (-0.591501,0.769191,-0.241808) +Polarization Change: (-0.591501,0.769191,-0.241808) +New Momentum Direction: (0.0387668,0.32668,0.94434) +Momentum Change: (0.0387668,0.32668,0.94434) + +** Photon absorbed! ** Track (trackID 410, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. +### pop requested out of 119 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.787113,-0.481521,-0.385475) - Old Polarization: (-0.609419,-0.510656,-0.606498) - New Momentum Direction: (0.546022,-0.654018,-0.523565) - New Polarization: (-0.83285,-0.356126,-0.423716) - *** FresnelRefraction *** + Old Momentum Direction: (0.55843,-0.555963,-0.615679) + Old Polarization: (-0.829548,-0.376306,-0.412606) + New Momentum Direction: (0.55843,-0.555963,0.615679) + New Polarization: (0.829548,0.376306,-0.412606) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.55843,-0.555963,0.615679) + Old Polarization: (0.829548,0.376306,-0.412606) + New Momentum Direction: (-0.55843,-0.555963,0.615679) + New Polarization: (0.829548,-0.376306,0.412606) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.55843,-0.555963,0.615679) + Old Polarization: (0.829548,-0.376306,0.412606) + New Momentum Direction: (-0.55843,0.555963,0.615679) + New Polarization: (-0.829548,-0.376306,-0.412606) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 409, parentID 1) is processed with stopping code 2 -### pop requested out of 106 stacked tracks. +### pop requested out of 118 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.561602,-0.650202,-0.511703) + Old Polarization: (-0.825827,-0.478685,-0.298111) + New Momentum Direction: (0.561602,0.650202,-0.511703) + New Polarization: (0.825827,-0.478685,0.298111) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.561602,0.650202,-0.511703) + Old Polarization: (0.825827,-0.478685,0.298111) + New Momentum Direction: (-0.561602,0.650202,-0.511703) + New Polarization: (0.825827,0.478685,-0.298111) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.561602,0.650202,-0.511703) + Old Polarization: (0.825827,0.478685,-0.298111) + New Momentum Direction: (-0.561602,0.650202,0.511703) + New Polarization: (-0.825827,-0.478685,-0.298111) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.561602,0.650202,0.511703) + Old Polarization: (-0.825827,-0.478685,-0.298111) + New Momentum Direction: (-0.561602,0.650202,-0.511703) + New Polarization: (0.825827,0.478685,-0.298111) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.561602,0.650202,-0.511703) + Old Polarization: (0.825827,0.478685,-0.298111) + New Momentum Direction: (-0.561602,-0.650202,-0.511703) + New Polarization: (-0.825827,0.478685,0.298111) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.561602,-0.650202,-0.511703) + Old Polarization: (-0.825827,0.478685,0.298111) + New Momentum Direction: (0.561602,-0.650202,-0.511703) + New Polarization: (-0.825827,-0.478685,-0.298111) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.561602,-0.650202,-0.511703) + Old Polarization: (-0.825827,-0.478685,-0.298111) + New Momentum Direction: (0.561602,-0.650202,0.511703) + New Polarization: (0.825827,0.478685,-0.298111) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 408, parentID 1) is processed with stopping code 2 -### pop requested out of 105 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.698302,0.578023,0.422213) - Old Polarization: (-0.706654,0.650691,0.277923) - New Momentum Direction: (0.246177,0.782665,0.571692) - New Polarization: (-0.964103,0.258301,0.0615309) - *** FresnelRefraction *** +### pop requested out of 117 stacked tracks. + +** Photon absorbed! ** Track (trackID 407, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. +### pop requested out of 116 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.802216,-0.386625,-0.454941) - Old Polarization: (-0.591741,-0.413648,-0.691909) - New Momentum Direction: (0.593113,-0.521375,-0.613502) - New Polarization: (-0.801505,-0.310235,-0.511219) + Old Momentum Direction: (0.872985,0.446775,0.195679) + Old Polarization: (-0.482399,0.731629,0.481674) + New Momentum Direction: (0.753838,0.601864,0.263605) + New Polarization: (-0.653228,0.643221,0.399449) *** FresnelRefraction *** Track (trackID 406, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. +### pop requested out of 115 stacked tracks. ** Photon absorbed! ** Track (trackID 405, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. +### pop requested out of 114 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.654397,-0.136817,0.743671) - Old Polarization: (-0.756017,-0.13695,0.640065) - New Momentum Direction: (0.88126,-0.184248,0.43524) - New Polarization: (0.375618,-0.285909,-0.881571) + Old Momentum Direction: (0.624363,0.0201436,-0.780875) + Old Polarization: (-0.758216,0.256005,-0.599642) + New Momentum Direction: (0.843713,0.0272204,-0.536103) + New Polarization: (0.518509,0.21712,0.827048) *** FresnelRefraction *** Track (trackID 404, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. +### pop requested out of 113 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.649798,-0.221323,0.727171) - Old Polarization: (-0.759511,-0.226922,0.609631) - New Momentum Direction: (0.881903,-0.300378,0.363346) - New Polarization: (0.220107,-0.419214,-0.880802) + Old Momentum Direction: (0.858608,0.0426844,0.510853) + Old Polarization: (-0.501235,0.278877,0.819141) + New Momentum Direction: (0.717656,0.0579856,0.693979) + New Polarization: (-0.688321,0.210396,0.694225) *** FresnelRefraction *** Track (trackID 403, parentID 1) is processed with stopping code 2 +### pop requested out of 112 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.621189,-0.780519,-0.0701026) + Old Polarization: (-0.760779,-0.622093,0.184974) + New Momentum Direction: (0.84276,-0.529821,-0.0951074) + New Polarization: (0.532939,0.846106,0.00897672) + *** FresnelRefraction *** +Track (trackID 402, parentID 1) is processed with stopping code 2 +### pop requested out of 111 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.715765,0.390437,-0.578999) + Old Polarization: (-0.657206,0.656959,-0.369439) + New Momentum Direction: (0.312366,0.531116,-0.787619) + New Polarization: (-0.924918,0.359159,-0.124626) + *** FresnelRefraction *** +Track (trackID 401, parentID 1) is processed with stopping code 2 +### pop requested out of 110 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.571377,-0.354674,-0.740091) + Old Polarization: (-0.816805,-0.158148,-0.554814) + New Momentum Direction: (0.771996,-0.479205,-0.417595) + New Polarization: (0.0985681,-0.558779,0.823438) + *** FresnelRefraction *** +Track (trackID 400, parentID 1) is processed with stopping code 2 +### pop requested out of 109 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.570486,-0.400709,-0.716923) + Old Polarization: (-0.818931,-0.211165,-0.533631) + New Momentum Direction: (0.768443,-0.539754,-0.343747) + New Polarization: (-0.0365785,-0.573344,0.818498) + *** FresnelRefraction *** +Track (trackID 399, parentID 1) is processed with stopping code 2 +### pop requested out of 108 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.638302,-0.76971,0.0108596) + Old Polarization: (-0.742207,-0.61163,0.27393) + New Momentum Direction: (0.865222,-0.501172,0.0147202) + New Polarization: (0.487251,0.847386,0.211007) + *** FresnelRefraction *** +Track (trackID 398, parentID 1) is processed with stopping code 2 +### pop requested out of 107 stacked tracks. + +** Photon absorbed! ** +Track (trackID 397, parentID 1) is processed with stopping code 2 +### pop requested out of 106 stacked tracks. + +** Photon absorbed! ** +Track (trackID 396, parentID 1) is processed with stopping code 2 +### pop requested out of 105 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.679372,-0.712265,0.176443) + Old Polarization: (-0.697364,-0.551878,0.457291) + New Momentum Direction: (0.918814,-0.314382,0.23863) + New Polarization: (0.154766,0.843158,0.514909) + *** FresnelRefraction *** +Track (trackID 395, parentID 1) is processed with stopping code 2 +### pop requested out of 104 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.794534,-0.34779,0.497753) + Old Polarization: (-0.57087,-0.148475,0.807504) + New Momentum Direction: (0.567411,-0.471629,0.674989) + New Polarization: (-0.79806,-0.113046,0.591879) + *** FresnelRefraction *** +Track (trackID 394, parentID 1) is processed with stopping code 2 +### pop requested out of 103 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.710764,0.354994,-0.607284) + Old Polarization: (-0.662794,0.627154,-0.409124) + New Momentum Direction: (0.313629,0.479198,-0.81976) + New Polarization: (-0.924444,0.351285,-0.148333) + *** FresnelRefraction *** +Track (trackID 393, parentID 1) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.685184,0.265807,-0.678136) + Old Polarization: (-0.69132,0.530486,-0.490573) + New Momentum Direction: (0.193793,0.358015,-0.913383) + New Polarization: (-0.96035,0.259443,-0.102065) + *** FresnelRefraction *** +Track (trackID 392, parentID 1) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.648398,-0.760145,0.0419386) + Old Polarization: (-0.731792,-0.607129,0.309636) + New Momentum Direction: (0.875561,-0.479776,0.0566316) + New Polarization: (0.446456,0.848345,0.284585) + *** FresnelRefraction *** +Track (trackID 391, parentID 1) is processed with stopping code 2 ### pop requested out of 100 stacked tracks. ** Photon absorbed! ** -Track (trackID 402, parentID 1) is processed with stopping code 2 +Track (trackID 390, parentID 1) is processed with stopping code 2 ### pop requested out of 99 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.735208,-0.677644,0.016397) - Old Polarization: (-0.666088,-0.726733,-0.167888) - New Momentum Direction: (0.392925,-0.919301,0.0222445) - New Polarization: (-0.912257,-0.392731,-0.116403) - *** FresnelRefraction *** -Track (trackID 401, parentID 1) is processed with stopping code 2 -### pop requested out of 98 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.802166,0.424998,-0.419412) - Old Polarization: (-0.592661,0.481209,-0.645903) - New Momentum Direction: (0.587179,0.576147,-0.568573) - New Polarization: (-0.806457,0.355969,-0.472136) - *** FresnelRefraction *** -Track (trackID 400, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.670008,-0.486512,0.56071) - Old Polarization: (-0.737798,-0.519958,0.430462) - New Momentum Direction: (-0.670008,-0.486512,0.56071) - New Polarization: (-0.737798,0.519958,-0.430462) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.670008,-0.486512,0.56071) - Old Polarization: (-0.737798,0.519958,-0.430462) - New Momentum Direction: (-0.670008,-0.486512,-0.56071) - New Polarization: (0.737798,-0.519958,-0.430462) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 399, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.660267,-0.347553,0.665773) - Old Polarization: (-0.749027,-0.369443,0.549973) - New Momentum Direction: (0.660267,-0.347553,-0.665773) - New Polarization: (0.749027,0.369443,0.549973) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.660267,-0.347553,-0.665773) - Old Polarization: (0.749027,0.369443,0.549973) - New Momentum Direction: (-0.660267,-0.347553,-0.665773) - New Polarization: (0.749027,-0.369443,-0.549973) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.660267,-0.347553,-0.665773) - Old Polarization: (0.749027,-0.369443,-0.549973) - New Momentum Direction: (-0.660267,0.347553,-0.665773) - New Polarization: (-0.749027,-0.369443,0.549973) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.660267,0.347553,-0.665773) -Old Polarization: (-0.749027,-0.369443,0.549973) -New Polarization: (-0.631682,-0.595847,0.495927) -Polarization Change: (-0.631682,-0.595847,0.495927) -New Momentum Direction: (-0.537076,0.797686,0.27431) -Momentum Change: (-0.537076,0.797686,0.27431) - Photon at Boundary! - Old Momentum Direction: (-0.537076,0.797686,0.27431) - Old Polarization: (-0.631682,-0.595847,0.495927) - New Momentum Direction: (0.537076,0.797686,0.27431) - New Polarization: (-0.631682,0.595847,-0.495927) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.537076,0.797686,0.27431) - Old Polarization: (-0.631682,0.595847,-0.495927) - New Momentum Direction: (0.725005,0.580732,0.370294) - New Polarization: (0.563975,-0.809177,0.164816) - *** FresnelRefraction *** -Track (trackID 398, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.75804,0.648979,-0.0648231) - Old Polarization: (-0.641184,0.723339,-0.256248) - New Momentum Direction: (0.46347,0.881725,-0.0880709) - New Polarization: (-0.87901,0.44492,-0.171426) - *** FresnelRefraction *** -Track (trackID 397, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.658319,-0.298075,0.691208) - Old Polarization: (-0.751379,-0.315399,0.579615) - New Momentum Direction: (0.887777,-0.40197,0.224216) - New Polarization: (0.00773265,-0.474042,-0.880468) - *** FresnelRefraction *** -Track (trackID 396, parentID 1) is processed with stopping code 2 -### pop requested out of 93 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.70917,0.61903,0.337459) - Old Polarization: (-0.694684,0.695242,0.184536) - New Momentum Direction: (0.296667,0.838484,0.457093) - New Polarization: (-0.948936,0.312598,0.0424622) - *** FresnelRefraction *** -Track (trackID 395, parentID 1) is processed with stopping code 2 -### pop requested out of 92 stacked tracks. - -** Photon absorbed! ** -Track (trackID 394, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.708247,-0.651831,0.271112) - Old Polarization: (-0.696038,-0.708918,0.11387) - New Momentum Direction: (0.307988,-0.878438,0.365363) - New Polarization: (-0.945489,-0.325316,0.0148588) - *** FresnelRefraction *** -Track (trackID 393, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.73604,0.666939,0.115923) -Old Polarization: (-0.665183,0.744349,-0.0589592) -New Polarization: (-0.975162,0.146918,-0.165754) -Polarization Change: (-0.975162,0.146918,-0.165754) -New Momentum Direction: (-0.130387,-0.985715,-0.106611) -Momentum Change: (-0.130387,-0.985715,-0.106611) - Photon at Boundary! - Old Momentum Direction: (-0.130387,-0.985715,-0.106611) - Old Polarization: (-0.975162,0.146918,-0.165754) - New Momentum Direction: (-0.130387,0.985715,-0.106611) - New Polarization: (-0.323611,-0.143951,-0.935176) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.130387,0.985715,-0.106611) - Old Polarization: (-0.323611,-0.143951,-0.935176) - New Momentum Direction: (-0.176994,0.973514,-0.144719) - New Polarization: (-0.430021,-0.208754,-0.878353) - *** FresnelRefraction *** -Track (trackID 392, parentID 1) is processed with stopping code 2 -### pop requested out of 89 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.756142,-0.636966,-0.15008) - Old Polarization: (-0.643209,-0.681146,-0.349746) - New Momentum Direction: (-0.756142,-0.636966,-0.15008) - New Polarization: (-0.525313,0.454036,0.719651) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.756142,-0.636966,-0.15008) - Old Polarization: (-0.525313,0.454036,0.719651) - New Momentum Direction: (-0.756142,0.636966,-0.15008) - New Polarization: (0.525313,0.454036,-0.719651) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 391, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.787189,0.548029,-0.28284) - Old Polarization: (-0.608908,0.617938,-0.497377) - New Momentum Direction: (0.550382,0.741928,-0.382913) - New Polarization: (-0.82968,0.434754,-0.350171) - *** FresnelRefraction *** -Track (trackID 390, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.648583,0.0423325,0.759966) - Old Polarization: (-0.760897,0.0614954,0.645952) - New Momentum Direction: (0.880006,0.0574373,0.471477) - New Polarization: (0.464125,0.106856,-0.879301) + Old Momentum Direction: (0.834503,0.544484,-0.0845115) + Old Polarization: (-0.526436,0.833149,0.169492) + New Momentum Direction: (0.66645,0.736728,-0.114351) + New Polarization: (-0.728006,0.676144,0.113297) *** FresnelRefraction *** Track (trackID 389, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.820982,0.116505,-0.558941) - Old Polarization: (-0.5708,0.144709,-0.808237) - New Momentum Direction: (0.63865,0.157018,-0.753307) - New Polarization: (-0.769391,0.114018,-0.62852) - *** FresnelRefraction *** +### pop requested out of 98 stacked tracks. + +** Photon absorbed! ** Track (trackID 388, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. +### pop requested out of 97 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.687632,-0.599496,0.409595) - Old Polarization: (-0.718366,-0.643657,0.263923) - New Momentum Direction: (-0.687632,-0.599496,0.409595) - New Polarization: (-0.710677,0.671245,-0.210637) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.687632,-0.599496,0.409595) - Old Polarization: (-0.710677,0.671245,-0.210637) - New Momentum Direction: (-0.687632,0.599496,0.409595) - New Polarization: (0.710677,0.671245,0.210637) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.687632,0.599496,0.409595) - Old Polarization: (0.710677,0.671245,0.210637) - New Momentum Direction: (-0.687632,0.599496,-0.409595) - New Polarization: (-0.710677,-0.671245,0.210637) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.687632,0.599496,-0.409595) - Old Polarization: (-0.710677,-0.671245,0.210637) - New Momentum Direction: (-0.182125,0.811874,-0.554698) - New Polarization: (0.975118,0.076615,-0.208027) + Old Momentum Direction: (0.669008,-0.7328,0.124228) + Old Polarization: (-0.709199,-0.579361,0.401719) + New Momentum Direction: (0.901917,-0.398118,0.167477) + New Polarization: (0.290605,0.846225,0.446601) *** FresnelRefraction *** Track (trackID 387, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.71902,-0.683183,0.127559) -Old Polarization: (-0.683727,-0.72826,-0.0464214) -New Polarization: (-0.891195,-0.423137,-0.163483) -Polarization Change: (-0.891195,-0.423137,-0.163483) -New Momentum Direction: (-0.370469,0.886897,-0.275983) -Momentum Change: (-0.370469,0.886897,-0.275983) +### pop requested out of 96 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.370469,0.886897,-0.275983) - Old Polarization: (-0.891195,-0.423137,-0.163483) - New Momentum Direction: (-0.503997,0.77783,-0.375456) - New Polarization: (-0.774676,-0.599322,-0.20172) + Old Momentum Direction: (0.695182,0.328541,-0.639361) + Old Polarization: (-0.67964,0.590094,-0.435751) + New Momentum Direction: (0.21159,0.446699,-0.869304) + New Polarization: (-0.955471,0.281721,-0.0877986) *** FresnelRefraction *** Track (trackID 386, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.656221,0.21453,0.72343) - Old Polarization: (-0.752848,0.250858,0.608515) - New Momentum Direction: (0.88888,0.29059,0.35419) - New Polarization: (0.212643,0.423099,-0.880778) - *** FresnelRefraction *** +### pop requested out of 95 stacked tracks. + +** Photon absorbed! ** Track (trackID 385, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. +### pop requested out of 94 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.778467,-0.549443,-0.303483) - Old Polarization: (-0.618503,-0.589059,-0.520062) - New Momentum Direction: (0.527128,-0.743857,-0.410868) - New Polarization: (-0.843676,-0.400228,-0.357811) + Old Momentum Direction: (0.5998,-0.765667,-0.232365) + Old Polarization: (-0.786402,-0.617691,0.00542946) + New Momentum Direction: (0.807698,-0.499714,-0.312906) + New Polarization: (0.384884,0.848913,-0.36223) *** FresnelRefraction *** Track (trackID 384, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - -** Photon absorbed! ** -Track (trackID 383, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. +### pop requested out of 93 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.819703,0.186342,-0.54163) - Old Polarization: (-0.572169,0.22241,-0.789403) - New Momentum Direction: (0.635895,0.251078,-0.729793) - New Polarization: (-0.771348,0.175305,-0.611792) + Old Momentum Direction: (0.665949,-0.735741,0.123277) + Old Polarization: (-0.712169,-0.577811,0.398686) + New Momentum Direction: (0.900633,-0.401329,0.166721) + New Polarization: (0.294998,0.846289,0.443589) + *** FresnelRefraction *** +Track (trackID 383, parentID 1) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.858223,0.502194,0.106089) + Old Polarization: (-0.502123,0.778589,0.376393) + New Momentum Direction: (0.715868,0.683158,0.144318) + New Polarization: (-0.690352,0.66153,0.292903) *** FresnelRefraction *** Track (trackID 382, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.808471,-0.233259,-0.540338) - Old Polarization: (-0.586287,-0.239009,-0.774043) - New Momentum Direction: (0.59974,-0.317148,-0.734663) - New Polarization: (-0.798679,-0.180764,-0.573965) - *** FresnelRefraction *** +### pop requested out of 91 stacked tracks. + +** Photon absorbed! ** Track (trackID 381, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. +### pop requested out of 90 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.780345,0.577089,-0.240895) - Old Polarization: (-0.616718,0.646401,-0.449249) - New Momentum Direction: (0.528868,0.783206,-0.326935) - New Polarization: (-0.842982,0.440107,-0.309332) + Old Momentum Direction: (0.703023,0.320644,-0.63478) + Old Polarization: (-0.671543,0.593094,-0.44415) + New Momentum Direction: (0.291784,0.43125,-0.853748) + New Polarization: (-0.932259,0.32784,-0.153017) *** FresnelRefraction *** Track (trackID 380, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.810051,0.335936,-0.480587) - Old Polarization: (-0.583747,0.384749,-0.714988) - New Momentum Direction: (0.608246,0.454754,-0.650566) - New Polarization: (-0.791971,0.292878,-0.535728) - *** FresnelRefraction *** -Track (trackID 379, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.725266,-0.679954,0.107942) - Old Polarization: (-0.677015,-0.73286,-0.0675808) - New Momentum Direction: (0.362657,-0.920397,0.146112) - New Polarization: (-0.924902,-0.374682,-0.064572) - *** FresnelRefraction *** -Track (trackID 378, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. +### pop requested out of 89 stacked tracks. ** Photon absorbed! ** -Track (trackID 377, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. +Track (trackID 379, parentID 1) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + +** Photon absorbed! ** +Track (trackID 378, parentID 1) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.762848,0.644784,-0.0481228) - Old Polarization: (-0.635299,0.733622,-0.241235) - New Momentum Direction: (0.492506,0.867895,-0.0647746) - New Polarization: (-0.86283,0.477182,-0.166797) + Old Momentum Direction: (0.609391,-0.780405,-0.140036) + Old Polarization: (-0.774005,-0.623838,0.108364) + New Momentum Direction: (0.82579,-0.531093,-0.189764) + New Polarization: (0.506441,0.846367,-0.164865) *** FresnelRefraction *** +Track (trackID 377, parentID 1) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + +** Photon absorbed! ** Track (trackID 376, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. +### pop requested out of 85 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.650538,0.074888,0.755772) - Old Polarization: (-0.759048,0.0974175,0.643705) - New Momentum Direction: (0.881368,0.10146,0.461407) - New Polarization: (0.440124,0.178619,-0.879992) + Old Momentum Direction: (0.65914,-0.748146,0.0762402) + Old Polarization: (-0.720433,-0.599125,0.349322) + New Momentum Direction: (0.887075,-0.450077,0.102605) + New Polarization: (0.388869,0.848346,0.359291) *** FresnelRefraction *** Track (trackID 375, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. +### pop requested out of 84 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.78775,0.543338,-0.29023) - Old Polarization: (-0.608347,0.612199,-0.5051) - New Momentum Direction: (0.551305,0.735898,-0.393087) - New Polarization: (-0.829179,0.431148,-0.355773) - *** FresnelRefraction *** -Track (trackID 374, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. + Old Momentum Direction: (0.565504,-0.691886,-0.448886) + Old Polarization: (-0.821187,-0.522861,-0.228621) + New Momentum Direction: (0.565504,0.691886,-0.448886) + New Polarization: (0.18997,0.420364,0.887246) + *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (0.813677,0.334316,-0.475565) - Old Polarization: (-0.578667,0.387784,-0.717474) - New Momentum Direction: (0.62273,0.44998,-0.640098) - New Polarization: (-0.78061,0.301429,-0.547529) - *** FresnelRefraction *** -Track (trackID 373, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. + Old Momentum Direction: (0.565504,0.691886,-0.448886) + Old Polarization: (0.18997,0.420364,0.887246) + New Momentum Direction: (-0.565504,0.691886,-0.448886) + New Polarization: (0.18997,-0.420364,-0.887246) + *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.783918,-0.511456,-0.351974) - Old Polarization: (-0.612683,-0.545535,-0.571849) - New Momentum Direction: (0.539858,-0.693422,-0.4772) - New Polarization: (-0.836302,-0.377415,-0.397688) - *** FresnelRefraction *** -Track (trackID 372, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.78205,-0.516711,-0.348435) - Old Polarization: (-0.61495,-0.549049,-0.566022) - New Momentum Direction: (0.532396,-0.701834,-0.473269) - New Polarization: (-0.841018,-0.375054,-0.389902) - *** FresnelRefraction *** -Track (trackID 371, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.721411,0.654628,0.225895) - Old Polarization: (-0.681156,0.729591,0.0610167) - New Momentum Direction: (0.338929,0.889351,0.306892) - New Polarization: (-0.93401,0.357227,-0.00370684) - *** FresnelRefraction *** -Track (trackID 370, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.685795,-0.607179,0.401271) - Old Polarization: (-0.719961,-0.646658,0.251972) - New Momentum Direction: (0.145546,-0.825389,0.545481) - New Polarization: (-0.985438,-0.169936,0.00579936) - *** FresnelRefraction *** -Track (trackID 369, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.820631,0.144135,-0.552983) - Old Polarization: (-0.571158,0.175461,-0.801868) - New Momentum Direction: (0.637974,0.194227,-0.745161) - New Polarization: (-0.769851,0.138401,-0.623037) - *** FresnelRefraction *** -Track (trackID 368, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. + Old Momentum Direction: (-0.565504,0.691886,-0.448886) + Old Polarization: (0.18997,-0.420364,-0.887246) + New Momentum Direction: (-0.565504,0.691886,0.448886) + New Polarization: (-0.18997,0.420364,-0.887246) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 367, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. +Track (trackID 374, parentID 1) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.735534,0.667337,0.116835) - Old Polarization: (-0.66574,0.743927,-0.0579931) - New Momentum Direction: (0.391585,0.906356,0.158682) - New Polarization: (-0.912853,0.404326,-0.0567408) + Old Momentum Direction: (0.864899,0.0973306,0.492419) + Old Polarization: (-0.493983,0.339096,0.800621) + New Momentum Direction: (0.732148,0.132079,0.668218) + New Polarization: (-0.675501,0.266823,0.687389) + *** FresnelRefraction *** +Track (trackID 373, parentID 1) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + +** Photon absorbed! ** +Track (trackID 372, parentID 1) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56065,-0.456189,-0.69106) + Old Polarization: (-0.82702,-0.266808,-0.494825) + New Momentum Direction: (0.56065,-0.456189,0.69106) + New Polarization: (0.243304,0.888476,0.389119) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.56065,-0.456189,0.69106) + Old Polarization: (0.243304,0.888476,0.389119) + New Momentum Direction: (-0.56065,-0.456189,0.69106) + New Polarization: (0.243304,-0.888476,-0.389119) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.56065,-0.456189,0.69106) + Old Polarization: (0.243304,-0.888476,-0.389119) + New Momentum Direction: (-0.56065,0.456189,0.69106) + New Polarization: (-0.243304,-0.888476,0.389119) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 371, parentID 1) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + +** Photon absorbed! ** +Track (trackID 370, parentID 1) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.780969,-0.417236,0.46476) + Old Polarization: (-0.585024,-0.228107,0.778276) + New Momentum Direction: (0.538027,-0.563107,0.627246) + New Polarization: (-0.815361,-0.15892,0.556714) + *** FresnelRefraction *** +Track (trackID 369, parentID 1) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.797251,0.527113,-0.294181) + Old Polarization: (-0.566577,0.821567,-0.0633809) + New Momentum Direction: (0.582399,0.709838,-0.396159) + New Polarization: (-0.786611,0.615052,-0.0543577) + *** FresnelRefraction *** +Track (trackID 368, parentID 1) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.794069,0.525176,-0.306014) + Old Polarization: (-0.570287,0.817909,-0.0761457) + New Momentum Direction: (0.573362,0.707894,-0.412483) + New Polarization: (-0.792784,0.606414,-0.061276) + *** FresnelRefraction *** +Track (trackID 367, parentID 1) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.874219,0.415905,0.250529) + Old Polarization: (-0.482876,0.690866,0.538084) + New Momentum Direction: (0.753637,0.563033,0.339155) + New Polarization: (-0.655408,0.604678,0.452553) *** FresnelRefraction *** Track (trackID 366, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. +### pop requested out of 75 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.792983,0.496312,-0.353344) - Old Polarization: (-0.603039,0.55685,-0.571194) - New Momentum Direction: (0.561223,0.674246,-0.480022) - New Polarization: (-0.823516,0.396907,-0.405322) + Old Momentum Direction: (0.876484,0.326884,0.353444) + Old Polarization: (-0.481419,0.59002,0.64816) + New Momentum Direction: (0.756922,0.443719,0.479773) + New Polarization: (-0.653497,0.510268,0.559078) *** FresnelRefraction *** Track (trackID 365, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. +### pop requested out of 74 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.794775,0.507329,-0.333093) - Old Polarization: (-0.60024,0.575967,-0.554954) - New Momentum Direction: (0.57263,0.685306,-0.449945) - New Polarization: (-0.815299,0.41852,-0.40016) + Old Momentum Direction: (0.865022,0.473449,0.16608) + Old Polarization: (-0.494466,0.748302,0.442207) + New Momentum Direction: (0.731313,0.643593,0.225765) + New Polarization: (-0.676909,0.644354,0.355812) *** FresnelRefraction *** Track (trackID 364, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.68235,0.497676,0.535459) -Old Polarization: (-0.724056,0.561016,0.401254) -New Polarization: (-0.264845,0.518754,0.812866) -Polarization Change: (-0.264845,0.518754,0.812866) -New Momentum Direction: (-0.867215,0.240473,-0.436017) -Momentum Change: (-0.867215,0.240473,-0.436017) - Photon at Boundary! - Old Momentum Direction: (-0.867215,0.240473,-0.436017) - Old Polarization: (-0.264845,0.518754,0.812866) - New Momentum Direction: (-0.867215,0.240473,0.436017) - New Polarization: (0.264845,-0.518754,0.812866) - *** TotalInternalReflection *** +### pop requested out of 73 stacked tracks. ** Photon absorbed! ** Track (trackID 363, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.805351,-0.320383,-0.498763) - Old Polarization: (-0.588971,-0.336994,-0.734539) - New Momentum Direction: (0.596364,-0.433834,-0.67538) - New Polarization: (-0.800117,-0.253649,-0.543575) - *** FresnelRefraction *** +### pop requested out of 72 stacked tracks. + +** Photon absorbed! ** Track (trackID 362, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. +### pop requested out of 71 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.793669,0.489262,-0.361542) - Old Polarization: (-0.602346,0.548712,-0.579736) - New Momentum Direction: (0.562556,0.664916,-0.491342) - New Polarization: (-0.822746,0.391753,-0.411848) + Old Momentum Direction: (0.611603,-0.0609803,-0.788811) + Old Polarization: (-0.772941,0.166705,-0.612185) + New Momentum Direction: (0.824549,-0.0822123,-0.559786) + New Polarization: (0.56217,0.00729743,0.826989) *** FresnelRefraction *** Track (trackID 361, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. +### pop requested out of 70 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.820824,0.173047,-0.544337) - Old Polarization: (-0.570671,0.208182,-0.794352) - New Momentum Direction: (0.639645,0.232879,-0.732545) - New Polarization: (-0.768318,0.164835,-0.61848) + Old Momentum Direction: (0.842511,-0.07622,0.533259) + Old Polarization: (-0.519197,0.148922,0.84158) + New Momentum Direction: (0.680534,-0.103675,0.725345) + New Polarization: (-0.718929,0.0966603,0.68833) *** FresnelRefraction *** Track (trackID 360, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. +### pop requested out of 69 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.683421,0.501601,0.530407) - Old Polarization: (-0.722944,0.565969,0.396271) - New Momentum Direction: (-0.683421,0.501601,0.530407) - New Polarization: (-0.717731,-0.594447,-0.362623) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.683421,0.501601,0.530407) - Old Polarization: (-0.717731,-0.594447,-0.362623) - New Momentum Direction: (-0.683421,0.501601,-0.530407) - New Polarization: (0.717731,0.594447,-0.362623) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.683421,0.501601,-0.530407) - Old Polarization: (0.717731,0.594447,-0.362623) - New Momentum Direction: (-0.683421,-0.501601,-0.530407) - New Polarization: (-0.717731,0.594447,0.362623) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.683421,-0.501601,-0.530407) - Old Polarization: (-0.717731,0.594447,0.362623) - New Momentum Direction: (-0.147636,-0.679573,-0.718599) - New Polarization: (0.982798,-0.0192893,-0.183674) + Old Momentum Direction: (0.863547,0.0668156,0.499823) + Old Polarization: (-0.494434,0.306995,0.813197) + New Momentum Direction: (0.731075,0.0904042,0.676281) + New Polarization: (-0.675283,0.237625,0.698232) *** FresnelRefraction *** Track (trackID 359, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - -** Photon absorbed! ** -Track (trackID 358, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. +### pop requested out of 68 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.657107,0.0994599,0.747207) - Old Polarization: (-0.753195,0.126242,0.64557) - New Momentum Direction: (0.88406,0.133811,0.447809) - New Polarization: (0.411674,0.230679,-0.881653) + Old Momentum Direction: (0.682686,-0.710214,0.171861) + Old Polarization: (-0.69419,-0.556943,0.455977) + New Momentum Direction: (0.918699,-0.320163,0.231276) + New Polarization: (0.16459,0.842644,0.5127) + *** FresnelRefraction *** +Track (trackID 358, parentID 1) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.570983,-0.335377,-0.749334) + Old Polarization: (-0.816369,-0.135538,-0.561401) + New Momentum Direction: (0.773318,-0.454222,-0.442336) + New Polarization: (0.151678,-0.544872,0.824686) *** FresnelRefraction *** Track (trackID 357, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.787368,0.533416,-0.309063) -Old Polarization: (-0.609241,0.596645,-0.522341) -New Polarization: (0.0367115,-0.987128,0.155662) -Polarization Change: (0.0367115,-0.987128,0.155662) -New Momentum Direction: (0.809408,0.120728,0.574703) -Momentum Change: (0.809408,0.120728,0.574703) +### pop requested out of 66 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.809408,0.120728,0.574703) - Old Polarization: (0.0367115,-0.987128,0.155662) - New Momentum Direction: (0.602372,0.164099,0.781165) - New Polarization: (-0.0707841,-0.963803,0.257049) + Old Momentum Direction: (0.856912,0.508901,0.0819837) + Old Polarization: (-0.502672,0.7898,0.351479) + New Momentum Direction: (0.714753,0.690474,0.111235) + New Polarization: (-0.690289,0.670928,0.270844) *** FresnelRefraction *** Track (trackID 356, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. +### pop requested out of 65 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.660629,0.316976,0.680512) - Old Polarization: (-0.747524,0.361222,0.557429) - New Momentum Direction: (0.660629,0.316976,-0.680512) - New Polarization: (-0.119576,-0.850483,-0.51223) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.660629,0.316976,-0.680512) - Old Polarization: (-0.119576,-0.850483,-0.51223) - New Momentum Direction: (-0.660629,0.316976,-0.680512) - New Polarization: (-0.119576,0.850483,0.51223) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.660629,0.316976,-0.680512) -Old Polarization: (-0.119576,0.850483,0.51223) -New Polarization: (0.117499,-0.914087,0.388122) -Polarization Change: (0.117499,-0.914087,0.388122) -New Momentum Direction: (-0.0620019,0.383315,0.921534) -Momentum Change: (-0.0620019,0.383315,0.921534) - Photon at Boundary! - Old Momentum Direction: (-0.0620019,0.383315,0.921534) - Old Polarization: (0.117499,-0.914087,0.388122) - New Momentum Direction: (-0.0620019,-0.383315,0.921534) - New Polarization: (-0.117499,-0.914087,-0.388122) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.0620019,-0.383315,0.921534) - Old Polarization: (-0.117499,-0.914087,-0.388122) - New Momentum Direction: (-0.0842183,-0.520663,0.849599) - New Polarization: (-0.114113,-0.841979,-0.527305) + Old Momentum Direction: (0.852811,-0.0358468,0.520987) + Old Polarization: (-0.505411,0.194418,0.840691) + New Momentum Direction: (0.709466,-0.0483756,0.703077) + New Polarization: (-0.692669,0.135988,0.70832) *** FresnelRefraction *** Track (trackID 355, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - -** Photon absorbed! ** -Track (trackID 354, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. +### pop requested out of 64 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.76524,-0.60276,-0.22603) - Old Polarization: (-0.633356,-0.642125,-0.431899) - New Momentum Direction: (0.484264,-0.819217,-0.307199) - New Polarization: (-0.86817,-0.406396,-0.284823) + Old Momentum Direction: (0.624837,-0.778195,-0.0631796) + Old Polarization: (-0.757386,-0.623797,0.192987) + New Momentum Direction: (0.845467,-0.527141,-0.0854883) + New Polarization: (0.530897,0.84698,0.0278021) + *** FresnelRefraction *** +Track (trackID 354, parentID 1) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.847472,0.530584,0.0164915) + Old Polarization: (-0.513439,0.811405,0.279288) + New Momentum Direction: (0.692691,0.720886,0.0224064) + New Polarization: (-0.70889,0.674785,0.205281) *** FresnelRefraction *** Track (trackID 353, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.652221,-0.275472,0.706203) - Old Polarization: (-0.756947,-0.286438,0.587354) - New Momentum Direction: (0.884796,-0.373702,0.278356) - New Polarization: (0.0799622,-0.466732,-0.880777) - *** FresnelRefraction *** -Track (trackID 352, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.803722,-0.381916,-0.456257) - Old Polarization: (-0.589787,-0.410027,-0.695722) - New Momentum Direction: (0.598663,-0.514139,-0.614218) - New Polarization: (-0.797422,-0.310141,-0.51762) - *** FresnelRefraction *** -Track (trackID 351, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. +### pop requested out of 62 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.825186,-0.221209,0.519745) +Old Polarization: (-0.535178,-0.0118231,0.844657) +New Polarization: (0.159447,0.690572,0.705469) +Polarization Change: (0.159447,0.690572,0.705469) +New Momentum Direction: (-0.711599,-0.414915,0.566985) +Momentum Change: (-0.711599,-0.414915,0.566985) ** Photon absorbed! ** -Track (trackID 350, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. +Track (trackID 352, parentID 1) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.727054,-0.683601,0.0638946) - Old Polarization: (-0.674985,-0.728704,-0.115695) - New Momentum Direction: (0.357142,-0.929997,0.0869246) - New Polarization: (-0.927032,-0.364307,-0.0888363) + Old Momentum Direction: (0.566115,-0.663018,-0.489817) + Old Polarization: (-0.822154,-0.49724,-0.277154) + New Momentum Direction: (0.566115,0.663018,-0.489817) + New Polarization: (0.822154,-0.49724,0.277154) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.566115,0.663018,-0.489817) + Old Polarization: (0.822154,-0.49724,0.277154) + New Momentum Direction: (-0.566115,0.663018,-0.489817) + New Polarization: (0.822154,0.49724,-0.277154) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.566115,0.663018,-0.489817) + Old Polarization: (0.822154,0.49724,-0.277154) + New Momentum Direction: (-0.566115,0.663018,0.489817) + New Polarization: (-0.822154,-0.49724,-0.277154) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 351, parentID 1) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87625,0.382809,0.292647) + Old Polarization: (-0.48078,0.654011,0.584055) + New Momentum Direction: (0.757744,0.518418,0.396316) + New Polarization: (-0.65179,0.571943,0.498047) + *** FresnelRefraction *** +Track (trackID 350, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.612388,-0.0533078,-0.788758) + Old Polarization: (-0.771906,0.17513,-0.611139) + New Momentum Direction: (0.826108,-0.0719119,-0.558905) + New Polarization: (0.561779,0.0273777,0.826834) *** FresnelRefraction *** Track (trackID 349, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.804603,-0.334222,-0.490824) - Old Polarization: (-0.589701,-0.352631,-0.72657) - New Momentum Direction: (0.595092,-0.452332,-0.664275) - New Polarization: (-0.800866,-0.264951,-0.537042) - *** FresnelRefraction *** +### pop requested out of 58 stacked tracks. + +** Photon absorbed! ** Track (trackID 348, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.692284,-0.629543,0.352731) - Old Polarization: (-0.712963,-0.672206,0.199558) - New Momentum Direction: (0.198057,-0.855114,0.479118) - New Polarization: (-0.975592,-0.219265,0.0119519) - *** FresnelRefraction *** +### pop requested out of 57 stacked tracks. + +** Photon absorbed! ** Track (trackID 347, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. +### pop requested out of 56 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.738475,0.669129,0.0831987) - Old Polarization: (-0.662561,0.742999,-0.0946875) - New Momentum Direction: (0.397906,0.910415,0.1132) - New Polarization: (-0.91015,0.407243,-0.0760246) + Old Momentum Direction: (0.630521,-0.776022,-0.0152945) + Old Polarization: (-0.750192,-0.614353,0.244503) + New Momentum Direction: (0.856941,-0.514994,-0.0207868) + New Polarization: (0.512169,0.846337,0.146276) *** FresnelRefraction *** Track (trackID 346, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. +### pop requested out of 55 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.694785,-0.63952,0.32907) - Old Polarization: (-0.710186,-0.682317,0.173431) - New Momentum Direction: (0.211276,-0.869117,0.447211) - New Polarization: (-0.972572,-0.232474,0.00767852) - *** FresnelRefraction *** + Old Momentum Direction: (0.565898,-0.650949,-0.50599) + Old Polarization: (-0.822776,-0.485263,-0.295906) + New Momentum Direction: (0.565898,0.650949,-0.50599) + New Polarization: (0.822776,-0.485263,0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565898,0.650949,-0.50599) + Old Polarization: (0.822776,-0.485263,0.295906) + New Momentum Direction: (-0.565898,0.650949,-0.50599) + New Polarization: (0.822776,0.485263,-0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565898,0.650949,-0.50599) + Old Polarization: (0.822776,0.485263,-0.295906) + New Momentum Direction: (-0.565898,0.650949,0.50599) + New Polarization: (-0.822776,-0.485263,-0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565898,0.650949,0.50599) + Old Polarization: (-0.822776,-0.485263,-0.295906) + New Momentum Direction: (-0.565898,-0.650949,0.50599) + New Polarization: (0.822776,-0.485263,0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565898,-0.650949,0.50599) + Old Polarization: (0.822776,-0.485263,0.295906) + New Momentum Direction: (0.565898,-0.650949,0.50599) + New Polarization: (0.822776,0.485263,-0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565898,-0.650949,0.50599) + Old Polarization: (0.822776,0.485263,-0.295906) + New Momentum Direction: (0.565898,-0.650949,-0.50599) + New Polarization: (-0.822776,-0.485263,-0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565898,-0.650949,-0.50599) + Old Polarization: (-0.822776,-0.485263,-0.295906) + New Momentum Direction: (0.565898,0.650949,-0.50599) + New Polarization: (0.822776,-0.485263,0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565898,0.650949,-0.50599) + Old Polarization: (0.822776,-0.485263,0.295906) + New Momentum Direction: (-0.565898,0.650949,-0.50599) + New Polarization: (0.822776,0.485263,-0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565898,0.650949,-0.50599) + Old Polarization: (0.822776,0.485263,-0.295906) + New Momentum Direction: (-0.565898,0.650949,0.50599) + New Polarization: (-0.822776,-0.485263,-0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565898,0.650949,0.50599) + Old Polarization: (-0.822776,-0.485263,-0.295906) + New Momentum Direction: (-0.565898,-0.650949,0.50599) + New Polarization: (0.822776,-0.485263,0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565898,-0.650949,0.50599) + Old Polarization: (0.822776,-0.485263,0.295906) + New Momentum Direction: (0.565898,-0.650949,0.50599) + New Polarization: (0.822776,0.485263,-0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565898,-0.650949,0.50599) + Old Polarization: (0.822776,0.485263,-0.295906) + New Momentum Direction: (0.565898,0.650949,0.50599) + New Polarization: (-0.822776,0.485263,0.295906) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565898,0.650949,0.50599) + Old Polarization: (-0.822776,0.485263,0.295906) + New Momentum Direction: (0.565898,0.650949,-0.50599) + New Polarization: (0.822776,-0.485263,0.295906) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 345, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.689466,0.540714,0.481939) - Old Polarization: (-0.716239,0.608059,0.342442) - New Momentum Direction: (0.18916,0.733037,0.653357) - New Polarization: (-0.977681,0.202549,0.0558076) - *** FresnelRefraction *** +### pop requested out of 54 stacked tracks. + +** Photon absorbed! ** Track (trackID 344, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. +### pop requested out of 53 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.811112,0.326048,-0.485582) - Old Polarization: (-0.582447,0.374451,-0.721486) - New Momentum Direction: (0.611561,0.441054,-0.65686) - New Polarization: (-0.789531,0.286348,-0.542812) + Old Momentum Direction: (0.567811,-0.414925,-0.710935) + Old Polarization: (-0.821173,-0.225563,-0.52421) + New Momentum Direction: (0.766309,-0.559977,-0.314955) + New Polarization: (-0.0811119,-0.570624,0.817196) *** FresnelRefraction *** Track (trackID 343, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. +### pop requested out of 52 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739454,0.667912,0.0842726) - Old Polarization: (-0.661464,0.744119,-0.0935485) - New Momentum Direction: (0.404417,0.90738,0.114487) - New Polarization: (-0.907237,0.413842,-0.0752015) + Old Momentum Direction: (0.875078,0.399675,0.272944) + Old Polarization: (-0.482226,0.672034,0.561986) + New Momentum Direction: (0.755019,0.541483,0.369786) + New Polarization: (-0.65446,0.587614,0.475808) *** FresnelRefraction *** Track (trackID 342, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. +### pop requested out of 51 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.811073,0.345173,-0.472246) - Old Polarization: (-0.58213,0.397198,-0.709477) - New Momentum Direction: (0.613442,0.466021,-0.637583) - New Polarization: (-0.787813,0.304751,-0.535236) + Old Momentum Direction: (0.665741,-0.733333,0.137883) + Old Polarization: (-0.711855,-0.568774,0.412019) + New Momentum Direction: (0.904206,-0.38385,0.187272) + New Polarization: (0.262817,0.845698,0.464459) *** FresnelRefraction *** Track (trackID 341, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. +### pop requested out of 50 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.691229,-0.623972,0.364502) - Old Polarization: (-0.714164,-0.666868,0.212737) - New Momentum Direction: (0.193657,-0.847121,0.494857) - New Polarization: (-0.976588,-0.214608,0.0147995) + Old Momentum Direction: (0.601737,-0.767104,-0.222404) + Old Polarization: (-0.784388,-0.620054,0.0164127) + New Momentum Direction: (0.809926,-0.504389,-0.299351) + New Polarization: (0.401929,0.848988,-0.343035) *** FresnelRefraction *** Track (trackID 340, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. +### pop requested out of 49 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.654342,-0.34093,0.674984) - Old Polarization: (-0.754338,-0.356871,0.551015) - New Momentum Direction: (0.654342,-0.34093,-0.674984) - New Polarization: (0.754338,0.356871,0.551015) + Old Momentum Direction: (0.567256,-0.662182,-0.489627) + Old Polarization: (-0.821373,-0.498022,-0.278064) + New Momentum Direction: (0.567256,0.662182,-0.489627) + New Polarization: (0.821373,-0.498022,0.278064) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.654342,-0.34093,-0.674984) - Old Polarization: (0.754338,0.356871,0.551015) - New Momentum Direction: (-0.654342,-0.34093,-0.674984) - New Polarization: (0.754338,-0.356871,-0.551015) + Old Momentum Direction: (0.567256,0.662182,-0.489627) + Old Polarization: (0.821373,-0.498022,0.278064) + New Momentum Direction: (-0.567256,0.662182,-0.489627) + New Polarization: (0.821373,0.498022,-0.278064) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.654342,-0.34093,-0.674984) - Old Polarization: (0.754338,-0.356871,-0.551015) - New Momentum Direction: (-0.654342,0.34093,-0.674984) - New Polarization: (-0.754338,-0.356871,0.551015) + Old Momentum Direction: (-0.567256,0.662182,-0.489627) + Old Polarization: (0.821373,0.498022,-0.278064) + New Momentum Direction: (-0.567256,0.662182,0.489627) + New Polarization: (-0.821373,-0.498022,-0.278064) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.654342,0.34093,-0.674984) - Old Polarization: (-0.754338,-0.356871,0.551015) - New Momentum Direction: (-0.654342,0.34093,0.674984) - New Polarization: (0.754338,0.356871,0.551015) + Old Momentum Direction: (-0.567256,0.662182,0.489627) + Old Polarization: (-0.821373,-0.498022,-0.278064) + New Momentum Direction: (-0.567256,-0.662182,0.489627) + New Polarization: (0.821373,-0.498022,0.278064) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.654342,0.34093,0.674984) - Old Polarization: (0.754338,0.356871,0.551015) - New Momentum Direction: (0.654342,0.34093,0.674984) - New Polarization: (0.754338,-0.356871,-0.551015) + Old Momentum Direction: (-0.567256,-0.662182,0.489627) + Old Polarization: (0.821373,-0.498022,0.278064) + New Momentum Direction: (0.567256,-0.662182,0.489627) + New Polarization: (0.821373,0.498022,-0.278064) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.654342,0.34093,0.674984) - Old Polarization: (0.754338,-0.356871,-0.551015) - New Momentum Direction: (0.654342,0.34093,-0.674984) - New Polarization: (-0.754338,0.356871,-0.551015) + Old Momentum Direction: (0.567256,-0.662182,0.489627) + Old Polarization: (0.821373,0.498022,-0.278064) + New Momentum Direction: (0.567256,-0.662182,-0.489627) + New Polarization: (-0.821373,-0.498022,-0.278064) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.654342,0.34093,-0.674984) - Old Polarization: (-0.754338,0.356871,-0.551015) - New Momentum Direction: (-0.654342,0.34093,-0.674984) - New Polarization: (-0.754338,-0.356871,0.551015) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654342,0.34093,-0.674984) - Old Polarization: (-0.754338,-0.356871,0.551015) - New Momentum Direction: (-0.654342,-0.34093,-0.674984) - New Polarization: (0.754338,-0.356871,-0.551015) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654342,-0.34093,-0.674984) - Old Polarization: (0.754338,-0.356871,-0.551015) - New Momentum Direction: (-0.654342,-0.34093,0.674984) - New Polarization: (-0.754338,0.356871,-0.551015) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654342,-0.34093,0.674984) - Old Polarization: (-0.754338,0.356871,-0.551015) - New Momentum Direction: (0.654342,-0.34093,0.674984) - New Polarization: (-0.754338,-0.356871,0.551015) + Old Momentum Direction: (0.567256,-0.662182,-0.489627) + Old Polarization: (-0.821373,-0.498022,-0.278064) + New Momentum Direction: (0.567256,0.662182,-0.489627) + New Polarization: (0.821373,-0.498022,0.278064) *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 339, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. +### pop requested out of 48 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.662403,-0.349878,0.662425) - Old Polarization: (-0.747092,-0.373982,0.549538) - New Momentum Direction: (-0.662403,-0.349878,0.662425) - New Polarization: (-0.747092,0.373982,-0.549538) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.662403,-0.349878,0.662425) - Old Polarization: (-0.747092,0.373982,-0.549538) - New Momentum Direction: (-0.662403,-0.349878,-0.662425) - New Polarization: (0.747092,-0.373982,-0.549538) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.662403,-0.349878,-0.662425) - Old Polarization: (0.747092,-0.373982,-0.549538) - New Momentum Direction: (-0.662403,0.349878,-0.662425) - New Polarization: (-0.747092,-0.373982,0.549538) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.662403,0.349878,-0.662425) - Old Polarization: (-0.747092,-0.373982,0.549538) - New Momentum Direction: (0.662403,0.349878,-0.662425) - New Polarization: (-0.747092,0.373982,-0.549538) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.662403,0.349878,-0.662425) - Old Polarization: (-0.747092,0.373982,-0.549538) - New Momentum Direction: (0.662403,0.349878,0.662425) - New Polarization: (0.747092,-0.373982,-0.549538) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.807828,0.546519,-0.220753) + Old Polarization: (-0.556462,0.830631,0.0200658) + New Momentum Direction: (0.600134,0.741679,-0.299584) + New Polarization: (-0.776727,0.629829,0.00330614) + *** FresnelRefraction *** Track (trackID 338, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. +### pop requested out of 47 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.817457,0.212727,-0.535267) - Old Polarization: (-0.575123,0.25049,-0.778774) - New Momentum Direction: (0.628427,0.287286,-0.722873) - New Polarization: (-0.777274,0.195596,-0.597986) + Old Momentum Direction: (0.565754,-0.362613,-0.740563) + Old Polarization: (-0.820949,-0.16358,-0.547069) + New Momentum Direction: (0.768685,-0.492679,-0.407909) + New Polarization: (0.0757344,-0.563138,0.822885) *** FresnelRefraction *** Track (trackID 337, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. +### pop requested out of 46 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.647166,0.0223058,0.762023) - Old Polarization: (-0.762188,0.0394853,0.64615) - New Momentum Direction: (0.879206,0.0303035,0.475476) - New Polarization: (0.473155,0.0614695,-0.878832) + Old Momentum Direction: (0.617743,-0.0198848,-0.786129) + Old Polarization: (-0.765794,0.212033,-0.607126) + New Momentum Direction: (0.833897,-0.0268427,-0.551267) + New Polarization: (0.550372,0.115205,0.826933) *** FresnelRefraction *** Track (trackID 336, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. +### pop requested out of 45 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.757599,0.652555,-0.0146671) - Old Polarization: (-0.641219,0.739863,-0.203569) - New Momentum Direction: (0.475212,0.879649,-0.0197713) - New Polarization: (-0.87232,0.468077,-0.141284) + Old Momentum Direction: (0.871743,0.424751,0.244235) + Old Polarization: (-0.48695,0.695863,0.527877) + New Momentum Direction: (0.746215,0.577102,0.331838) + New Polarization: (-0.663579,0.605029,0.440003) *** FresnelRefraction *** Track (trackID 335, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. +### pop requested out of 44 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.683206,-0.557388,0.47175) - Old Polarization: (-0.72374,-0.602775,0.33595) - New Momentum Direction: (-0.683206,-0.557388,0.47175) - New Polarization: (-0.717802,0.631285,-0.293665) + Old Momentum Direction: (0.77909,-0.419086,0.466247) + Old Polarization: (-0.587455,-0.228355,0.77637) + New Momentum Direction: (0.529765,-0.566978,0.630782) + New Polarization: (-0.820829,-0.15551,0.549596) + *** FresnelRefraction *** +Track (trackID 334, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.696774,-0.675283,0.241864) + Old Polarization: (-0.678142,-0.510293,0.528891) + New Momentum Direction: (-0.696774,-0.675283,0.241864) + New Polarization: (-0.625026,0.406158,-0.666617) *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (-0.683206,-0.557388,0.47175) - Old Polarization: (-0.717802,0.631285,-0.293665) - New Momentum Direction: (-0.683206,0.557388,0.47175) - New Polarization: (0.717802,0.631285,0.293665) - *** TotalInternalReflection *** + Old Momentum Direction: (-0.696774,-0.675283,0.241864) + Old Polarization: (-0.625026,0.406158,-0.666617) + New Momentum Direction: (-0.696774,0.675283,0.241864) + New Polarization: (0.606347,0.374368,0.701564) + *** FresnelReflection *** Scattering Photon! -Old Momentum Direction: (-0.683206,0.557388,0.47175) -Old Polarization: (0.717802,0.631285,0.293665) -New Polarization: (-0.973335,-0.0684429,0.218939) -Polarization Change: (-0.973335,-0.0684429,0.218939) -New Momentum Direction: (0.0792642,0.795305,0.601006) -Momentum Change: (0.0792642,0.795305,0.601006) +Old Momentum Direction: (-0.696774,0.675283,0.241864) +Old Polarization: (0.606347,0.374368,0.701564) +New Polarization: (0.321735,0.94506,-0.0578586) +Polarization Change: (0.321735,0.94506,-0.0578586) +New Momentum Direction: (0.514189,-0.123085,0.848799) +Momentum Change: (0.514189,-0.123085,0.848799) Photon at Boundary! - Old Momentum Direction: (0.0792642,0.795305,0.601006) - Old Polarization: (-0.973335,-0.0684429,0.218939) - New Momentum Direction: (0.0792642,0.795305,-0.601006) - New Polarization: (0.973335,0.0684429,0.218939) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 334, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - -** Photon absorbed! ** -Track (trackID 333, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.759145,-0.625779,-0.179166) - Old Polarization: (-0.639996,-0.667351,-0.380852) - New Momentum Direction: (0.466351,-0.85043,-0.243485) - New Polarization: (-0.877555,-0.410097,-0.248431) + Old Momentum Direction: (0.514189,-0.123085,0.848799) + Old Polarization: (0.321735,0.94506,-0.0578586) + New Momentum Direction: (0.695825,-0.166564,0.69863) + New Polarization: (0.333121,0.936623,-0.108478) *** FresnelRefraction *** +Track (trackID 333, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + +** Photon absorbed! ** Track (trackID 332, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. +### pop requested out of 41 stacked tracks. ** Photon absorbed! ** Track (trackID 331, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. +### pop requested out of 40 stacked tracks. ** Photon absorbed! ** Track (trackID 330, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - -** Photon absorbed! ** -Track (trackID 329, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. +### pop requested out of 39 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.798183,0.455835,-0.393849) - Old Polarization: (-0.597255,0.513418,-0.616188) - New Momentum Direction: (0.575451,0.618841,-0.534689) - New Polarization: (-0.81437,0.373455,-0.444222) + Old Momentum Direction: (0.874886,0.39065,0.2863) + Old Polarization: (-0.483016,0.660252,0.575119) + New Momentum Direction: (0.753736,0.530065,0.388474) + New Polarization: (-0.65625,0.575706,0.487749) + *** FresnelRefraction *** +Track (trackID 329, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.701776,0.346456,-0.622478) + Old Polarization: (-0.672482,0.610544,-0.418336) + New Momentum Direction: (0.251736,0.470663,-0.845639) + New Polarization: (-0.944614,0.309594,-0.108886) *** FresnelRefraction *** Track (trackID 328, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743635,0.667223,0.0426758) - Old Polarization: (-0.656945,0.741056,-0.138778) - New Momentum Direction: (0.41548,0.907748,0.0580599) - New Polarization: (-0.902302,0.419375,-0.0998782) - *** FresnelRefraction *** +### pop requested out of 37 stacked tracks. + +** Photon absorbed! ** Track (trackID 327, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. +### pop requested out of 36 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.750926,-0.651262,-0.109396) - Old Polarization: (-0.648906,-0.696923,-0.305318) - New Momentum Direction: (0.443193,-0.884041,-0.148497) - New Polarization: (-0.889091,-0.412345,-0.198718) + Old Momentum Direction: (0.622727,0.00856593,-0.782392) + Old Polarization: (-0.760183,0.24342,-0.602386) + New Momentum Direction: (0.840942,0.0115676,-0.541002) + New Polarization: (0.529524,0.188317,0.827128) *** FresnelRefraction *** Track (trackID 326, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. +### pop requested out of 35 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.782584,0.572796,-0.243859) - Old Polarization: (-0.613962,0.645299,-0.454576) - New Momentum Direction: (0.538326,0.775391,-0.330111) - New Polarization: (-0.837003,0.446323,-0.316579) + Old Momentum Direction: (0.829298,0.550493,-0.0960349) + Old Polarization: (-0.533615,0.831149,0.156355) + New Momentum Direction: (0.649711,0.748871,-0.130643) + New Polarization: (-0.742394,0.662027,0.102813) *** FresnelRefraction *** Track (trackID 325, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.709605,0.364659,-0.602897) + Old Polarization: (-0.663966,0.632446,-0.398951) + New Momentum Direction: (0.294917,0.494522,-0.817602) + New Polarization: (-0.930978,0.341404,-0.129317) + *** FresnelRefraction *** Track (trackID 324, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 33 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.738959,0.448111,-0.503126) + Old Polarization: (-0.631948,0.719929,-0.286957) + New Momentum Direction: (0.400293,0.609489,-0.684316) + New Polarization: (-0.889398,0.438293,-0.129889) + *** FresnelRefraction *** Track (trackID 323, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. +### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.761365,-0.616779,-0.199767) - Old Polarization: (-0.63762,-0.656606,-0.402876) - New Momentum Direction: (-0.761365,-0.616779,-0.199767) - New Polarization: (-0.50455,0.3702,0.779988) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.761365,-0.616779,-0.199767) - Old Polarization: (-0.50455,0.3702,0.779988) - New Momentum Direction: (-0.761365,0.616779,-0.199767) - New Polarization: (0.50455,0.3702,-0.779988) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.761365,0.616779,-0.199767) - Old Polarization: (0.50455,0.3702,-0.779988) - New Momentum Direction: (-0.471939,0.838735,-0.271656) - New Polarization: (0.771725,0.244022,-0.587276) + Old Momentum Direction: (0.68362,-0.700014,0.206503) + Old Polarization: (-0.692327,-0.532443,0.487019) + New Momentum Direction: (0.928445,-0.243585,0.280458) + New Polarization: (0.0599255,0.843318,0.534063) *** FresnelRefraction *** Track (trackID 322, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.56298,-0.658867,-0.498946) + Old Polarization: (-0.824545,-0.488953,-0.284695) + New Momentum Direction: (0.56298,0.658867,-0.498946) + New Polarization: (0.824545,-0.488953,0.284695) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.56298,0.658867,-0.498946) + Old Polarization: (0.824545,-0.488953,0.284695) + New Momentum Direction: (-0.56298,0.658867,-0.498946) + New Polarization: (0.824545,0.488953,-0.284695) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.56298,0.658867,-0.498946) + Old Polarization: (0.824545,0.488953,-0.284695) + New Momentum Direction: (-0.56298,0.658867,0.498946) + New Polarization: (-0.824545,-0.488953,-0.284695) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.56298,0.658867,0.498946) + Old Polarization: (-0.824545,-0.488953,-0.284695) + New Momentum Direction: (-0.56298,-0.658867,0.498946) + New Polarization: (0.824545,-0.488953,0.284695) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.56298,-0.658867,0.498946) + Old Polarization: (0.824545,-0.488953,0.284695) + New Momentum Direction: (0.56298,-0.658867,0.498946) + New Polarization: (0.824545,0.488953,-0.284695) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.56298,-0.658867,0.498946) + Old Polarization: (0.824545,0.488953,-0.284695) + New Momentum Direction: (0.56298,-0.658867,-0.498946) + New Polarization: (-0.824545,-0.488953,-0.284695) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.56298,-0.658867,-0.498946) + Old Polarization: (-0.824545,-0.488953,-0.284695) + New Momentum Direction: (0.56298,0.658867,-0.498946) + New Polarization: (0.824545,-0.488953,0.284695) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 321, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. +### pop requested out of 30 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.816,0.552131,-0.17116) +Old Polarization: (-0.548065,0.833106,0.0745633) +New Polarization: (-0.49527,0.497826,0.711953) +Polarization Change: (-0.49527,0.497826,0.711953) +New Momentum Direction: (0.270159,-0.690631,0.670852) +Momentum Change: (0.270159,-0.690631,0.670852) ** Photon absorbed! ** Track (trackID 320, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.670853,-0.522334,0.526426) -Old Polarization: (-0.736247,-0.554171,0.388375) -New Polarization: (0.0532529,-0.359641,0.93157) -Polarization Change: (0.0532529,-0.359641,0.93157) -New Momentum Direction: (-0.895697,-0.429628,-0.114659) -Momentum Change: (-0.895697,-0.429628,-0.114659) -Scattering Photon! -Old Momentum Direction: (-0.895697,-0.429628,-0.114659) -Old Polarization: (0.0532529,-0.359641,0.93157) -New Polarization: (-0.346436,0.472177,-0.810574) -Polarization Change: (-0.346436,0.472177,-0.810574) -New Momentum Direction: (0.824626,-0.258624,-0.503096) -Momentum Change: (0.824626,-0.258624,-0.503096) - -** Photon absorbed! ** -Track (trackID 319, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. +### pop requested out of 29 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.753179,0.657401,0.0233735) - Old Polarization: (-0.64611,0.745982,-0.161408) - New Momentum Direction: (0.463027,0.885784,0.0314935) - New Polarization: (-0.878695,0.4634,-0.1147) + Old Momentum Direction: (0.87629,0.279114,0.392697) + Old Polarization: (-0.481436,0.538256,0.691737) + New Momentum Direction: (0.756798,0.378681,0.532783) + New Polarization: (-0.653404,0.4606,0.600759) + *** FresnelRefraction *** +Track (trackID 319, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.851264,0.522878,0.044127) + Old Polarization: (-0.509292,0.803028,0.309464) + New Momentum Direction: (0.70124,0.7104,0.0599525) + New Polarization: (-0.701971,0.673335,0.232072) *** FresnelRefraction *** Track (trackID 318, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. +### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.663333,0.32749,0.672859) - Old Polarization: (-0.744934,0.374466,0.55213) - New Momentum Direction: (0.663333,0.32749,-0.672859) - New Polarization: (0.744934,-0.374466,0.55213) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.663333,0.32749,-0.672859) - Old Polarization: (0.744934,-0.374466,0.55213) - New Momentum Direction: (-0.663333,0.32749,-0.672859) - New Polarization: (0.744934,0.374466,-0.55213) - *** TotalInternalReflection *** + Old Momentum Direction: (0.688086,-0.698259,0.197413) + Old Polarization: (-0.688036,-0.541397,0.483214) + New Momentum Direction: (0.927383,-0.263,0.266067) + New Polarization: (0.0855123,0.841384,0.533629) + *** FresnelRefraction *** +Track (trackID 317, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. ** Photon absorbed! ** -Track (trackID 317, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.798071,-0.385268,-0.463305) - Old Polarization: (-0.597425,-0.405714,-0.691723) - New Momentum Direction: (0.574825,-0.523191,-0.629164) - New Polarization: (-0.814825,-0.295443,-0.498772) - *** FresnelRefraction *** Track (trackID 316, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. +### pop requested out of 25 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.717291,0.647262,0.257963) - Old Polarization: (-0.685653,0.721568,0.0960187) - New Momentum Direction: (0.322416,0.879335,0.350454) - New Polarization: (-0.940013,0.341016,0.00915172) + Old Momentum Direction: (0.586005,-0.245494,-0.772225) + Old Polarization: (-0.801889,-0.038681,-0.596219) + New Momentum Direction: (0.788825,-0.33046,-0.518219) + New Polarization: (0.366247,-0.424375,0.828112) *** FresnelRefraction *** Track (trackID 315, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - -** Photon absorbed! ** -Track (trackID 314, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. +### pop requested out of 24 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.680547,0.451245,0.577264) - Old Polarization: (-0.726739,0.516038,0.453381) - New Momentum Direction: (0.15479,0.60844,0.778358) - New Polarization: (-0.984882,0.157046,0.0730983) + Old Momentum Direction: (0.754468,0.473158,-0.454861) + Old Polarization: (-0.614738,0.752229,-0.237166) + New Momentum Direction: (0.456868,0.641272,-0.616475) + New Polarization: (-0.86169,0.49109,-0.127753) + *** FresnelRefraction *** +Track (trackID 314, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.753903,0.467076,-0.462029) + Old Polarization: (-0.615169,0.748754,-0.24685) + New Momentum Direction: (0.459053,0.631604,-0.624778) + New Polarization: (-0.860283,0.491579,-0.13514) *** FresnelRefraction *** Track (trackID 313, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. +### pop requested out of 22 stacked tracks. ** Photon absorbed! ** Track (trackID 312, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. +### pop requested out of 21 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.818663,0.0703221,-0.569952) - Old Polarization: (-0.574257,0.0925784,-0.813424) - New Momentum Direction: (0.629097,0.0951867,-0.771476) - New Polarization: (-0.777315,0.0715884,-0.625026) + Old Momentum Direction: (0.846774,0.530899,-0.0334687) + Old Polarization: (-0.510818,0.829079,0.227361) + New Momentum Direction: (0.699226,0.713484,-0.0449791) + New Polarization: (-0.699601,0.695853,0.162316) *** FresnelRefraction *** Track (trackID 311, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. +### pop requested out of 20 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.760488,0.647587,-0.0478354) - Old Polarization: (-0.63811,0.731644,-0.239817) - New Momentum Direction: (0.480866,0.874412,-0.0645902) - New Polarization: (-0.869416,0.465988,-0.164232) + Old Momentum Direction: (0.717876,0.392707,-0.574834) + Old Polarization: (-0.654902,0.661011,-0.366288) + New Momentum Direction: (0.324818,0.533509,-0.780936) + New Polarization: (-0.92036,0.368441,-0.131103) *** FresnelRefraction *** Track (trackID 310, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.65394,-0.166179,0.73807) - Old Polarization: (-0.756287,-0.169173,0.63199) - New Momentum Direction: (0.881658,-0.224047,0.41531) - New Polarization: (0.329104,-0.338799,-0.881423) - *** FresnelRefraction *** -Track (trackID 309, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.680386,-0.573903,0.455752) - Old Polarization: (-0.726043,-0.612451,0.312675) - New Momentum Direction: (0.102681,-0.778968,0.6186) - New Polarization: (-0.991483,-0.130236,0.000576917) - *** FresnelRefraction *** -Track (trackID 308, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.815075,0.139959,-0.562196) - Old Polarization: (-0.579093,0.167608,-0.797846) - New Momentum Direction: (0.616036,0.190294,-0.764387) - New Polarization: (-0.78754,0.128193,-0.602782) - *** FresnelRefraction *** -Track (trackID 307, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.647744,0.0778846,0.757867) - Old Polarization: (-0.761418,0.100001,0.640502) - New Momentum Direction: (0.880608,0.105884,0.461864) - New Polarization: (0.438937,0.184911,-0.879285) - *** FresnelRefraction *** -Track (trackID 306, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. +### pop requested out of 19 stacked tracks. ** Photon absorbed! ** +Track (trackID 309, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.873142,0.410793,0.262436) + Old Polarization: (-0.485251,0.681202,0.548174) + New Momentum Direction: (0.749496,0.557881,0.356404) + New Polarization: (-0.660447,0.593155,0.46041) + *** FresnelRefraction *** +Track (trackID 308, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.872273,0.446014,0.200527) + Old Polarization: (-0.483906,0.728104,0.485488) + New Momentum Direction: (0.75123,0.601995,0.270656) + New Polarization: (-0.656389,0.638307,0.402141) + *** FresnelRefraction *** +Track (trackID 307, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.87735,0.303107,0.372) + Old Polarization: (-0.479798,0.565787,0.670582) + New Momentum Direction: (0.759746,0.410723,0.504076) + New Polarization: (-0.650181,0.488297,0.582091) + *** FresnelRefraction *** +Track (trackID 306, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.615032,-0.0153277,-0.788353) + Old Polarization: (-0.767775,0.216096,-0.603179) + New Momentum Direction: (0.833558,-0.0207737,-0.552041) + New Polarization: (0.549968,0.125474,0.825707) + *** FresnelRefraction *** Track (trackID 305, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. +### pop requested out of 14 stacked tracks. ** Photon absorbed! ** Track (trackID 304, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + +** Photon absorbed! ** +Track (trackID 303, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.615081,-0.782799,-0.0943512) + Old Polarization: (-0.767039,-0.621774,0.158268) + New Momentum Direction: (0.835942,-0.533627,-0.128231) + New Polarization: (0.531481,0.845391,-0.0533104) + *** FresnelRefraction *** +Track (trackID 302, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + +** Photon absorbed! ** +Track (trackID 301, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.574322,-0.313624,-0.756171) + Old Polarization: (-0.813195,-0.112302,-0.571054) + New Momentum Direction: (0.77675,-0.424165,-0.465558) + New Polarization: (0.20899,-0.523731,0.825851) + *** FresnelRefraction *** +Track (trackID 300, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.868959,0.460285,0.181793) + Old Polarization: (-0.488635,0.739809,0.462513) + New Momentum Direction: (0.742452,0.623064,0.246083) + New Polarization: (-0.665456,0.643721,0.377878) + *** FresnelRefraction *** +Track (trackID 299, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.570065,-0.350323,-0.743169) + Old Polarization: (-0.817557,-0.152248,-0.555357) + New Momentum Direction: (0.771695,-0.474231,-0.423783) + New Polarization: (0.110662,-0.556045,0.823752) + *** FresnelRefraction *** +Track (trackID 298, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.855209,0.515907,0.049564) + Old Polarization: (-0.503207,0.803632,0.31774) + New Momentum Direction: (0.713763,0.697177,0.0669789) + New Polarization: (-0.689592,0.682815,0.241301) + *** FresnelRefraction *** +Track (trackID 297, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.639399,-0.76843,0.026158) + Old Polarization: (-0.740538,-0.606326,0.28978) + New Momentum Direction: (0.639399,0.76843,0.026158) + New Polarization: (-0.339728,0.312876,-0.886957) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639399,0.76843,0.026158) + Old Polarization: (-0.339728,0.312876,-0.886957) + New Momentum Direction: (-0.639399,0.76843,0.026158) + New Polarization: (-0.339728,-0.312876,0.886957) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639399,0.76843,0.026158) + Old Polarization: (-0.339728,-0.312876,0.886957) + New Momentum Direction: (-0.868866,0.493769,0.0355456) + New Polarization: (-0.279696,-0.548877,0.787721) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (-0.868866,0.493769,0.0355456) + Old Polarization: (-0.279696,-0.548877,0.787721) + New Momentum Direction: (-0.93128,0.363364,0.026158) + New Polarization: (0.165321,0.357539,0.919149) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (-0.93128,0.363364,0.026158) + Old Polarization: (0.165321,0.357539,0.919149) + New Momentum Direction: (-0.868866,0.493769,0.0355456) + New Polarization: (0.283715,0.437827,0.85312) + *** FresnelRefraction *** +Track (trackID 296, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.624064,-0.778941,-0.0616045) + Old Polarization: (-0.757953,-0.622632,0.194515) + New Momentum Direction: (0.845462,-0.527474,-0.0834598) + New Polarization: (0.531279,0.846621,0.0312311) + *** FresnelRefraction *** +Track (trackID 295, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.871131,0.161608,0.463696) + Old Polarization: (-0.486641,0.410393,0.771206) + New Momentum Direction: (0.746467,0.218995,0.628354) + New Polarization: (-0.662296,0.335949,0.669703) + *** FresnelRefraction *** +Track (trackID 294, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.557827,-0.558733,-0.613715) +Old Polarization: (-0.82995,-0.378622,-0.409669) +New Polarization: (-0.331083,-0.842652,-0.424644) +Polarization Change: (-0.331083,-0.842652,-0.424644) +New Momentum Direction: (0.898623,-0.418854,0.130531) +Momentum Change: (0.898623,-0.418854,0.130531) + Photon at Boundary! + Old Momentum Direction: (0.898623,-0.418854,0.130531) + Old Polarization: (-0.331083,-0.842652,-0.424644) + New Momentum Direction: (-0.898623,-0.418854,0.130531) + New Polarization: (0.208114,-0.145049,0.96729) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.898623,-0.418854,0.130531) + Old Polarization: (0.208114,-0.145049,0.96729) + New Momentum Direction: (-0.898623,0.418854,0.130531) + New Polarization: (-0.208114,-0.145049,-0.96729) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.898623,0.418854,0.130531) + Old Polarization: (-0.208114,-0.145049,-0.96729) + New Momentum Direction: (-0.803323,0.568573,0.17719) + New Polarization: (0.355484,0.696503,-0.62331) + *** FresnelRefraction *** +Track (trackID 293, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.570599,-0.392794,-0.7212) + Old Polarization: (-0.818613,-0.202012,-0.537647) + New Momentum Direction: (0.768985,-0.52936,-0.358385) + New Polarization: (-0.0124818,-0.572945,0.819499) + *** FresnelRefraction *** +Track (trackID 292, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 282 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 279 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 283 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.595276,0.657602,0.461743) - Old Polarization: (-0.704562,0.703453,-0.0935225) - New Momentum Direction: (0.595276,-0.657602,0.461743) - New Polarization: (0.704562,0.703453,0.0935225) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.595276,-0.657602,0.461743) - Old Polarization: (0.704562,0.703453,0.0935225) - New Momentum Direction: (-0.595276,-0.657602,0.461743) - New Polarization: (0.704562,-0.703453,-0.0935225) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.595276,-0.657602,0.461743) - Old Polarization: (0.704562,-0.703453,-0.0935225) - New Momentum Direction: (-0.595276,-0.657602,-0.461743) - New Polarization: (-0.704562,0.703453,-0.0935225) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.595276,-0.657602,-0.461743) - Old Polarization: (-0.704562,0.703453,-0.0935225) - New Momentum Direction: (-0.595276,0.657602,-0.461743) - New Polarization: (0.704562,0.703453,0.0935225) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.595276,0.657602,-0.461743) - Old Polarization: (0.704562,0.703453,0.0935225) - New Momentum Direction: (0.595276,0.657602,-0.461743) - New Polarization: (0.704562,-0.703453,-0.0935225) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.595276,0.657602,-0.461743) - Old Polarization: (0.704562,-0.703453,-0.0935225) - New Momentum Direction: (0.595276,0.657602,0.461743) - New Polarization: (-0.704562,0.703453,-0.0935225) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.595276,0.657602,0.461743) -Old Polarization: (-0.704562,0.703453,-0.0935225) -New Polarization: (0.366568,-0.814487,-0.44971) -Polarization Change: (0.366568,-0.814487,-0.44971) -New Momentum Direction: (-0.676151,0.0988124,-0.730107) -Momentum Change: (-0.676151,0.0988124,-0.730107) - Photon at Boundary! - Old Momentum Direction: (-0.676151,0.0988124,-0.730107) - Old Polarization: (0.366568,-0.814487,-0.44971) - New Momentum Direction: (-0.676151,0.0988124,0.730107) - New Polarization: (0.373624,0.900078,0.224197) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.676151,0.0988124,0.730107) - Old Polarization: (0.373624,0.900078,0.224197) - New Momentum Direction: (0.676151,0.0988124,0.730107) - New Polarization: (0.363775,-0.906524,-0.214203) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.676151,0.0988124,0.730107) - Old Polarization: (0.363775,-0.906524,-0.214203) - New Momentum Direction: (0.917559,0.134092,0.374306) - New Polarization: (0.293671,-0.863201,-0.41066) - *** FresnelRefraction *** -Track (trackID 868, parentID 1) is processed with stopping code 2 -### pop requested out of 282 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.439891,-0.32201,0.838335) -Old Polarization: (-0.873893,-0.368551,0.316986) -New Polarization: (0.933507,-0.229695,-0.275327) -Polarization Change: (0.933507,-0.229695,-0.275327) -New Momentum Direction: (-0.191259,-0.968493,0.159504) -Momentum Change: (-0.191259,-0.968493,0.159504) - Photon at Boundary! - Old Momentum Direction: (-0.191259,-0.968493,0.159504) - Old Polarization: (0.933507,-0.229695,-0.275327) - New Momentum Direction: (-0.191259,-0.968493,-0.159504) - New Polarization: (-0.933507,0.229695,-0.275327) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.191259,-0.968493,-0.159504) - Old Polarization: (-0.933507,0.229695,-0.275327) - New Momentum Direction: (-0.259964,-0.940965,-0.216802) - New Polarization: (-0.878754,0.323606,-0.350814) - *** FresnelRefraction *** -Track (trackID 867, parentID 1) is processed with stopping code 2 -### pop requested out of 281 stacked tracks. - -** Photon absorbed! ** -Track (trackID 866, parentID 1) is processed with stopping code 2 ### pop requested out of 280 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.527877,-0.545259,0.651182) - Old Polarization: (-0.778936,-0.616413,0.115295) - New Momentum Direction: (0.527877,-0.545259,-0.651182) - New Polarization: (0.778936,0.616413,0.115295) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.527877,-0.545259,-0.651182) - Old Polarization: (0.778936,0.616413,0.115295) - New Momentum Direction: (0.527877,0.545259,-0.651182) - New Polarization: (-0.778936,0.616413,-0.115295) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.527877,0.545259,-0.651182) - Old Polarization: (-0.778936,0.616413,-0.115295) - New Momentum Direction: (-0.527877,0.545259,-0.651182) - New Polarization: (-0.778936,-0.616413,0.115295) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.527877,0.545259,-0.651182) - Old Polarization: (-0.778936,-0.616413,0.115295) - New Momentum Direction: (-0.527877,0.545259,0.651182) - New Polarization: (0.778936,0.616413,0.115295) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.527877,0.545259,0.651182) - Old Polarization: (0.778936,0.616413,0.115295) - New Momentum Direction: (-0.527877,-0.545259,0.651182) - New Polarization: (-0.778936,0.616413,-0.115295) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.527877,-0.545259,0.651182) - Old Polarization: (-0.778936,0.616413,-0.115295) - New Momentum Direction: (0.527877,-0.545259,0.651182) - New Polarization: (-0.778936,-0.616413,0.115295) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 865, parentID 1) is processed with stopping code 2 -### pop requested out of 279 stacked tracks. - -** Photon absorbed! ** -Track (trackID 864, parentID 1) is processed with stopping code 2 -### pop requested out of 278 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.662978,-0.660169,0.35304) - Old Polarization: (-0.630517,-0.746631,-0.212111) - New Momentum Direction: (-0.662978,-0.660169,0.35304) - New Polarization: (-0.630517,0.746631,0.212111) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.662978,-0.660169,0.35304) - Old Polarization: (-0.630517,0.746631,0.212111) - New Momentum Direction: (-0.662978,0.660169,0.35304) - New Polarization: (0.630517,0.746631,-0.212111) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.662978,0.660169,0.35304) - Old Polarization: (0.630517,0.746631,-0.212111) - New Momentum Direction: (-0.662978,0.660169,-0.35304) - New Polarization: (-0.630517,-0.746631,-0.212111) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 863, parentID 1) is processed with stopping code 2 -### pop requested out of 277 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.867965,0.474532,-0.146479) - Old Polarization: (-0.404834,0.505221,-0.762143) - New Momentum Direction: (0.740061,0.642621,-0.198365) - New Polarization: (-0.598567,0.49488,-0.629929) - *** FresnelRefraction *** -Track (trackID 862, parentID 1) is processed with stopping code 2 -### pop requested out of 276 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.563758,0.63403,0.529322) - Old Polarization: (-0.738448,0.673989,-0.0208261) - New Momentum Direction: (0.563758,-0.63403,0.529322) - New Polarization: (0.738448,0.673989,0.0208261) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.563758,-0.63403,0.529322) - Old Polarization: (0.738448,0.673989,0.0208261) - New Momentum Direction: (-0.563758,-0.63403,0.529322) - New Polarization: (0.738448,-0.673989,-0.0208261) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.563758,-0.63403,0.529322) - Old Polarization: (0.738448,-0.673989,-0.0208261) - New Momentum Direction: (-0.563758,-0.63403,-0.529322) - New Polarization: (-0.738448,0.673989,-0.0208261) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 861, parentID 1) is processed with stopping code 2 -### pop requested out of 275 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.453785,0.404997,0.793761) - Old Polarization: (-0.860934,0.429101,0.273249) - New Momentum Direction: (0.614261,0.54822,0.567573) - New Polarization: (-0.295101,0.826666,-0.479103) - *** FresnelRefraction *** -Track (trackID 860, parentID 1) is processed with stopping code 2 -### pop requested out of 274 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.934459,0.200415,-0.294314) - Old Polarization: (-0.333395,0.202215,-0.920846) - New Momentum Direction: (0.875317,0.272165,-0.399681) - New Polarization: (-0.466426,0.257215,-0.846338) - *** FresnelRefraction *** -Track (trackID 859, parentID 1) is processed with stopping code 2 -### pop requested out of 273 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.43589,0.343988,0.831669) - Old Polarization: (-0.879268,0.359962,0.311953) - New Momentum Direction: (0.591435,0.466738,0.657541) - New Polarization: (-0.0916675,0.849082,-0.520247) - *** FresnelRefraction *** -Track (trackID 858, parentID 1) is processed with stopping code 2 -### pop requested out of 272 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.925125,-0.282357,-0.253806) - Old Polarization: (-0.341739,-0.328062,-0.880676) - New Momentum Direction: (0.857796,-0.382258,-0.343605) - New Polarization: (-0.484607,-0.37869,-0.788511) - *** FresnelRefraction *** -Track (trackID 857, parentID 1) is processed with stopping code 2 -### pop requested out of 271 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.73121,0.660889,0.168987) - Old Polarization: (-0.554566,0.720174,-0.416901) - New Momentum Direction: (0.396215,0.889539,0.227452) - New Polarization: (-0.825315,0.453601,-0.336306) - *** FresnelRefraction *** -Track (trackID 856, parentID 1) is processed with stopping code 2 -### pop requested out of 270 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.568667,0.638496,0.518595) - Old Polarization: (-0.733168,0.679277,-0.0323692) - New Momentum Direction: (0.568667,-0.638496,0.518595) - New Polarization: (0.733168,0.679277,0.0323692) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.568667,-0.638496,0.518595) -Old Polarization: (0.733168,0.679277,0.0323692) -New Polarization: (0.725851,0.554409,0.40715) -Polarization Change: (0.725851,0.554409,0.40715) -New Momentum Direction: (-0.165167,-0.434119,0.885585) -Momentum Change: (-0.165167,-0.434119,0.885585) - Photon at Boundary! - Old Momentum Direction: (-0.165167,-0.434119,0.885585) - Old Polarization: (0.725851,0.554409,0.40715) - New Momentum Direction: (-0.224618,-0.590379,0.775242) - New Polarization: (0.0874833,-0.804576,-0.58737) - *** FresnelRefraction *** -Track (trackID 855, parentID 1) is processed with stopping code 2 -### pop requested out of 269 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.744675,-0.648383,0.158298) -Old Polarization: (-0.541095,-0.725347,-0.425544) -New Polarization: (0.982001,0.0231916,0.187448) -Polarization Change: (0.982001,0.0231916,0.187448) -New Momentum Direction: (-0.0970723,0.913302,0.395546) -Momentum Change: (-0.0970723,0.913302,0.395546) -Scattering Photon! -Old Momentum Direction: (-0.0970723,0.913302,0.395546) -Old Polarization: (0.982001,0.0231916,0.187448) -New Polarization: (0.983055,0.0962984,0.155978) -Polarization Change: (0.983055,0.0962984,0.155978) -New Momentum Direction: (0.0259002,-0.915329,0.401873) -Momentum Change: (0.0259002,-0.915329,0.401873) - Photon at Boundary! - Old Momentum Direction: (0.0259002,-0.915329,0.401873) - Old Polarization: (0.983055,0.0962984,0.155978) - New Momentum Direction: (0.0351934,-0.837001,0.546069) - New Polarization: (0.96233,0.175783,0.207415) - *** FresnelRefraction *** -Track (trackID 854, parentID 1) is processed with stopping code 2 -### pop requested out of 268 stacked tracks. - -** Photon absorbed! ** -Track (trackID 853, parentID 1) is processed with stopping code 2 -### pop requested out of 267 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.770153,0.634263,0.0676387) - Old Polarization: (-0.51283,0.678758,-0.525635) - New Momentum Direction: (0.501611,0.860216,0.0917347) - New Polarization: (-0.770156,0.492342,-0.405537) - *** FresnelRefraction *** -Track (trackID 852, parentID 1) is processed with stopping code 2 -### pop requested out of 266 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.946631,-0.0586566,-0.316936) - Old Polarization: (-0.320948,-0.0809648,-0.94363) - New Momentum Direction: (0.898831,-0.0797626,-0.430977) - New Polarization: (-0.437301,-0.0969863,-0.89407) - *** FresnelRefraction *** -Track (trackID 851, parentID 1) is processed with stopping code 2 -### pop requested out of 265 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.916276,-0.330497,-0.226294) - Old Polarization: (-0.349538,-0.383857,-0.85468) - New Momentum Direction: (0.841368,-0.445944,-0.305341) - New Polarization: (-0.500149,-0.42834,-0.75258) - *** FresnelRefraction *** -Track (trackID 850, parentID 1) is processed with stopping code 2 -### pop requested out of 264 stacked tracks. - -** Photon absorbed! ** -Track (trackID 849, parentID 1) is processed with stopping code 2 -### pop requested out of 263 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.74467,0.655293,0.126716) - Old Polarization: (-0.540605,0.703538,-0.461281) - New Momentum Direction: (0.427075,0.88777,0.171671) - New Polarization: (-0.811172,0.460044,-0.361054) - *** FresnelRefraction *** -Track (trackID 848, parentID 1) is processed with stopping code 2 -### pop requested out of 262 stacked tracks. - -** Photon absorbed! ** -Track (trackID 847, parentID 1) is processed with stopping code 2 -### pop requested out of 261 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.439316,0.363311,0.821588) - Old Polarization: (-0.874961,0.380309,0.29968) - New Momentum Direction: (0.596664,0.493437,0.632861) - New Polarization: (-0.159346,0.845765,-0.509205) - *** FresnelRefraction *** -Track (trackID 846, parentID 1) is processed with stopping code 2 -### pop requested out of 260 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.639688,-0.657823,0.397578) - Old Polarization: (-0.655855,-0.736867,-0.163956) - New Momentum Direction: (0.639688,0.657823,0.397578) - New Polarization: (0.655855,-0.736867,0.163956) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.639688,0.657823,0.397578) - Old Polarization: (0.655855,-0.736867,0.163956) - New Momentum Direction: (-0.639688,0.657823,0.397578) - New Polarization: (0.655855,0.736867,-0.163956) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.639688,0.657823,0.397578) - Old Polarization: (0.655855,0.736867,-0.163956) - New Momentum Direction: (-0.639688,0.657823,-0.397578) - New Polarization: (-0.655855,-0.736867,-0.163956) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.639688,0.657823,-0.397578) - Old Polarization: (-0.655855,-0.736867,-0.163956) - New Momentum Direction: (-0.639688,-0.657823,-0.397578) - New Polarization: (0.655855,-0.736867,0.163956) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.639688,-0.657823,-0.397578) - Old Polarization: (0.655855,-0.736867,0.163956) - New Momentum Direction: (0.639688,-0.657823,-0.397578) - New Polarization: (0.655855,0.736867,-0.163956) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 845, parentID 1) is processed with stopping code 2 -### pop requested out of 259 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.426414,-0.225807,0.875889) - Old Polarization: (-0.891843,-0.266556,0.365463) - New Momentum Direction: (0.576502,-0.305285,0.757923) - New Polarization: (0.320509,-0.768753,-0.553438) - *** FresnelRefraction *** -Track (trackID 844, parentID 1) is processed with stopping code 2 -### pop requested out of 258 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.546653,0.60901,0.574698) - Old Polarization: (-0.758093,0.651419,0.0307865) - New Momentum Direction: (0.546653,-0.60901,0.574698) - New Polarization: (0.758093,0.651419,-0.0307865) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.546653,-0.60901,0.574698) - Old Polarization: (0.758093,0.651419,-0.0307865) - New Momentum Direction: (0.546653,-0.60901,-0.574698) - New Polarization: (-0.758093,-0.651419,-0.0307865) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.546653,-0.60901,-0.574698) - Old Polarization: (-0.758093,-0.651419,-0.0307865) - New Momentum Direction: (-0.546653,-0.60901,-0.574698) - New Polarization: (-0.758093,0.651419,0.0307865) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 843, parentID 1) is processed with stopping code 2 -### pop requested out of 257 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.524977,0.583672,0.619457) - Old Polarization: (-0.780892,0.619803,0.0777915) - New Momentum Direction: (0.524977,0.583672,-0.619457) - New Polarization: (0.780892,-0.619803,0.0777915) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.524977,0.583672,-0.619457) - Old Polarization: (0.780892,-0.619803,0.0777915) - New Momentum Direction: (0.524977,-0.583672,-0.619457) - New Polarization: (-0.780892,-0.619803,-0.0777915) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.524977,-0.583672,-0.619457) - Old Polarization: (-0.780892,-0.619803,-0.0777915) - New Momentum Direction: (-0.524977,-0.583672,-0.619457) - New Polarization: (-0.780892,0.619803,0.0777915) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 842, parentID 1) is processed with stopping code 2 -### pop requested out of 256 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.731092,-0.654331,0.193274) - Old Polarization: (-0.555636,-0.735394,-0.387897) - New Momentum Direction: (-0.731092,-0.654331,0.193274) - New Polarization: (-0.326794,0.584499,0.742675) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.731092,-0.654331,0.193274) - Old Polarization: (-0.326794,0.584499,0.742675) - New Momentum Direction: (-0.731092,0.654331,0.193274) - New Polarization: (0.326794,0.584499,-0.742675) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.731092,0.654331,0.193274) - Old Polarization: (0.326794,0.584499,-0.742675) - New Momentum Direction: (-0.3799,0.887137,0.262039) - New Polarization: (0.58394,0.449694,-0.675862) - *** FresnelRefraction *** -Track (trackID 841, parentID 1) is processed with stopping code 2 -### pop requested out of 255 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.48755,-0.448675,0.74899) - Old Polarization: (-0.825631,-0.515921,0.228382) - New Momentum Direction: (0.657312,-0.6049,0.449485) - New Polarization: (-0.441942,-0.792512,-0.420252) - *** FresnelRefraction *** -Track (trackID 840, parentID 1) is processed with stopping code 2 -### pop requested out of 254 stacked tracks. - -** Photon absorbed! ** -Track (trackID 839, parentID 1) is processed with stopping code 2 -### pop requested out of 253 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.678951,-0.665661,0.309711) -Old Polarization: (-0.612887,-0.746137,-0.260096) -New Polarization: (0.625511,0.308378,0.716686) -Polarization Change: (0.625511,0.308378,0.716686) -New Momentum Direction: (0.187547,0.832212,-0.521775) -Momentum Change: (0.187547,0.832212,-0.521775) - Photon at Boundary! - Old Momentum Direction: (0.187547,0.832212,-0.521775) - Old Polarization: (0.625511,0.308378,0.716686) - New Momentum Direction: (0.25454,0.658578,-0.708156) - New Polarization: (0.838014,-0.515676,-0.178357) - *** FresnelRefraction *** -Track (trackID 838, parentID 1) is processed with stopping code 2 -### pop requested out of 252 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.757343,-0.638006,0.13921) - Old Polarization: (-0.526197,-0.722478,-0.448489) - New Momentum Direction: (0.470221,-0.862262,0.188141) - New Polarization: (-0.787145,-0.506156,-0.352434) - *** FresnelRefraction *** -Track (trackID 837, parentID 1) is processed with stopping code 2 -### pop requested out of 251 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.87907,-0.454662,-0.143245) - Old Polarization: (-0.392082,-0.518711,-0.759744) - New Momentum Direction: (0.764306,-0.61505,-0.193777) - New Polarization: (-0.576641,-0.517359,-0.632317) - *** FresnelRefraction *** -Track (trackID 836, parentID 1) is processed with stopping code 2 -### pop requested out of 250 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.708981,-0.65844,0.25259) - Old Polarization: (-0.57953,-0.748057,-0.32335) - New Momentum Direction: (0.308015,-0.888264,0.340755) - New Polarization: (-0.865265,-0.410455,-0.287824) - *** FresnelRefraction *** -Track (trackID 835, parentID 1) is processed with stopping code 2 -### pop requested out of 249 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.764255,-0.634873,0.113357) - Old Polarization: (-0.519733,-0.710387,-0.474583) - New Momentum Direction: (0.48153,-0.862785,0.154051) - New Polarization: (-0.782489,-0.502395,-0.367846) - *** FresnelRefraction *** -Track (trackID 834, parentID 1) is processed with stopping code 2 -### pop requested out of 248 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.788366,0.613954,0.0392346) - Old Polarization: (-0.491046,0.666397,-0.561061) - New Momentum Direction: (0.559511,0.827136,0.0528579) - New Polarization: (-0.731487,0.522784,-0.437748) - *** FresnelRefraction *** -Track (trackID 833, parentID 1) is processed with stopping code 2 -### pop requested out of 247 stacked tracks. - -** Photon absorbed! ** -Track (trackID 832, parentID 1) is processed with stopping code 2 -### pop requested out of 246 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.944384,-0.143059,-0.296096) -Old Polarization: (-0.318656,-0.175707,-0.931443) -New Polarization: (0.221674,0.409334,-0.885046) -Polarization Change: (0.221674,0.409334,-0.885046) -New Momentum Direction: (-0.642209,-0.621703,-0.448389) -Momentum Change: (-0.642209,-0.621703,-0.448389) - Photon at Boundary! - Old Momentum Direction: (-0.642209,-0.621703,-0.448389) - Old Polarization: (0.221674,0.409334,-0.885046) - New Momentum Direction: (-0.642209,0.621703,-0.448389) - New Polarization: (-0.221674,0.409334,0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.642209,0.621703,-0.448389) - Old Polarization: (-0.221674,0.409334,0.885046) - New Momentum Direction: (-0.642209,0.621703,0.448389) - New Polarization: (0.221674,-0.409334,0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.642209,0.621703,0.448389) - Old Polarization: (0.221674,-0.409334,0.885046) - New Momentum Direction: (0.642209,0.621703,0.448389) - New Polarization: (0.221674,0.409334,-0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.642209,0.621703,0.448389) - Old Polarization: (0.221674,0.409334,-0.885046) - New Momentum Direction: (0.642209,-0.621703,0.448389) - New Polarization: (-0.221674,0.409334,0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.642209,-0.621703,0.448389) - Old Polarization: (-0.221674,0.409334,0.885046) - New Momentum Direction: (0.642209,-0.621703,-0.448389) - New Polarization: (0.221674,-0.409334,0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.642209,-0.621703,-0.448389) - Old Polarization: (0.221674,-0.409334,0.885046) - New Momentum Direction: (-0.642209,-0.621703,-0.448389) - New Polarization: (0.221674,0.409334,-0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.642209,-0.621703,-0.448389) - Old Polarization: (0.221674,0.409334,-0.885046) - New Momentum Direction: (-0.642209,0.621703,-0.448389) - New Polarization: (-0.221674,0.409334,0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.642209,0.621703,-0.448389) - Old Polarization: (-0.221674,0.409334,0.885046) - New Momentum Direction: (0.642209,0.621703,-0.448389) - New Polarization: (-0.221674,-0.409334,-0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.642209,0.621703,-0.448389) - Old Polarization: (-0.221674,-0.409334,-0.885046) - New Momentum Direction: (0.642209,0.621703,0.448389) - New Polarization: (0.221674,0.409334,-0.885046) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.642209,0.621703,0.448389) - Old Polarization: (0.221674,0.409334,-0.885046) - New Momentum Direction: (0.642209,-0.621703,0.448389) - New Polarization: (-0.221674,0.409334,0.885046) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.642209,-0.621703,0.448389) -Old Polarization: (-0.221674,0.409334,0.885046) -New Polarization: (-0.363498,-0.239027,0.900409) -Polarization Change: (-0.363498,-0.239027,0.900409) -New Momentum Direction: (0.0985626,0.951231,0.292308) -Momentum Change: (0.0985626,0.951231,0.292308) - Photon at Boundary! - Old Momentum Direction: (0.0985626,0.951231,0.292308) - Old Polarization: (-0.363498,-0.239027,0.900409) - New Momentum Direction: (0.133053,0.909169,0.394598) - New Polarization: (-0.238627,-0.357039,0.903095) - *** FresnelRefraction *** -Track (trackID 831, parentID 1) is processed with stopping code 2 -### pop requested out of 245 stacked tracks. - -** Photon absorbed! ** -Track (trackID 830, parentID 1) is processed with stopping code 2 -### pop requested out of 244 stacked tracks. - -** Photon absorbed! ** -Track (trackID 829, parentID 1) is processed with stopping code 2 -### pop requested out of 243 stacked tracks. - -** Photon absorbed! ** -Track (trackID 828, parentID 1) is processed with stopping code 2 -### pop requested out of 242 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.620459,0.673992,0.400956) - Old Polarization: (-0.676733,0.718505,-0.160571) - New Momentum Direction: (0.620459,-0.673992,0.400956) - New Polarization: (0.676733,0.718505,0.160571) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.620459,-0.673992,0.400956) - Old Polarization: (0.676733,0.718505,0.160571) - New Momentum Direction: (-0.620459,-0.673992,0.400956) - New Polarization: (0.676733,-0.718505,-0.160571) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.620459,-0.673992,0.400956) - Old Polarization: (0.676733,-0.718505,-0.160571) - New Momentum Direction: (-0.620459,-0.673992,-0.400956) - New Polarization: (-0.676733,0.718505,-0.160571) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 827, parentID 1) is processed with stopping code 2 -### pop requested out of 241 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.412465,-0.0151054,0.910848) - Old Polarization: (-0.910635,-0.0340932,0.411803) - New Momentum Direction: (0.554809,-0.0203183,0.83173) - New Polarization: (0.828343,-0.0798615,-0.5545) - *** FresnelRefraction *** -Track (trackID 826, parentID 1) is processed with stopping code 2 -### pop requested out of 240 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.941026,0.149765,-0.303381) -Old Polarization: (-0.324685,0.147624,-0.934231) -New Polarization: (0.168667,-0.400071,-0.90083) -Polarization Change: (0.168667,-0.400071,-0.90083) -New Momentum Direction: (0.652395,-0.639776,0.406285) -Momentum Change: (0.652395,-0.639776,0.406285) - Photon at Boundary! - Old Momentum Direction: (0.652395,-0.639776,0.406285) - Old Polarization: (0.168667,-0.400071,-0.90083) - New Momentum Direction: (-0.652395,-0.639776,0.406285) - New Polarization: (0.168667,0.400071,0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.652395,-0.639776,0.406285) - Old Polarization: (0.168667,0.400071,0.90083) - New Momentum Direction: (-0.652395,0.639776,0.406285) - New Polarization: (-0.168667,0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.652395,0.639776,0.406285) - Old Polarization: (-0.168667,0.400071,-0.90083) - New Momentum Direction: (-0.652395,0.639776,-0.406285) - New Polarization: (0.168667,-0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.652395,0.639776,-0.406285) - Old Polarization: (0.168667,-0.400071,-0.90083) - New Momentum Direction: (0.652395,0.639776,-0.406285) - New Polarization: (0.168667,0.400071,0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652395,0.639776,-0.406285) - Old Polarization: (0.168667,0.400071,0.90083) - New Momentum Direction: (0.652395,-0.639776,-0.406285) - New Polarization: (-0.168667,0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652395,-0.639776,-0.406285) - Old Polarization: (-0.168667,0.400071,-0.90083) - New Momentum Direction: (-0.652395,-0.639776,-0.406285) - New Polarization: (-0.168667,-0.400071,0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.652395,-0.639776,-0.406285) - Old Polarization: (-0.168667,-0.400071,0.90083) - New Momentum Direction: (-0.652395,-0.639776,0.406285) - New Polarization: (0.168667,0.400071,0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.652395,-0.639776,0.406285) - Old Polarization: (0.168667,0.400071,0.90083) - New Momentum Direction: (-0.652395,0.639776,0.406285) - New Polarization: (-0.168667,0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.652395,0.639776,0.406285) - Old Polarization: (-0.168667,0.400071,-0.90083) - New Momentum Direction: (0.652395,0.639776,0.406285) - New Polarization: (-0.168667,-0.400071,0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652395,0.639776,0.406285) - Old Polarization: (-0.168667,-0.400071,0.90083) - New Momentum Direction: (0.652395,-0.639776,0.406285) - New Polarization: (0.168667,-0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652395,-0.639776,0.406285) - Old Polarization: (0.168667,-0.400071,-0.90083) - New Momentum Direction: (0.652395,-0.639776,-0.406285) - New Polarization: (-0.168667,0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652395,-0.639776,-0.406285) - Old Polarization: (-0.168667,0.400071,-0.90083) - New Momentum Direction: (-0.652395,-0.639776,-0.406285) - New Polarization: (-0.168667,-0.400071,0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.652395,-0.639776,-0.406285) - Old Polarization: (-0.168667,-0.400071,0.90083) - New Momentum Direction: (-0.652395,0.639776,-0.406285) - New Polarization: (0.168667,-0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.652395,0.639776,-0.406285) - Old Polarization: (0.168667,-0.400071,-0.90083) - New Momentum Direction: (0.652395,0.639776,-0.406285) - New Polarization: (0.168667,0.400071,0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652395,0.639776,-0.406285) - Old Polarization: (0.168667,0.400071,0.90083) - New Momentum Direction: (0.652395,-0.639776,-0.406285) - New Polarization: (-0.168667,0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652395,-0.639776,-0.406285) - Old Polarization: (-0.168667,0.400071,-0.90083) - New Momentum Direction: (0.652395,-0.639776,0.406285) - New Polarization: (0.168667,-0.400071,-0.90083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.652395,-0.639776,0.406285) - Old Polarization: (0.168667,-0.400071,-0.90083) - New Momentum Direction: (-0.652395,-0.639776,0.406285) - New Polarization: (0.168667,0.400071,0.90083) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 825, parentID 1) is processed with stopping code 2 -### pop requested out of 239 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.526636,-0.531127,0.663746) - Old Polarization: (-0.782366,-0.60822,0.134057) - New Momentum Direction: (0.526636,-0.531127,-0.663746) - New Polarization: (0.782366,0.60822,0.134057) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.526636,-0.531127,-0.663746) - Old Polarization: (0.782366,0.60822,0.134057) - New Momentum Direction: (0.526636,0.531127,-0.663746) - New Polarization: (-0.782366,0.60822,-0.134057) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.526636,0.531127,-0.663746) - Old Polarization: (-0.782366,0.60822,-0.134057) - New Momentum Direction: (-0.526636,0.531127,-0.663746) - New Polarization: (-0.782366,-0.60822,0.134057) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.526636,0.531127,-0.663746) - Old Polarization: (-0.782366,-0.60822,0.134057) - New Momentum Direction: (-0.526636,0.531127,0.663746) - New Polarization: (0.782366,0.60822,0.134057) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 824, parentID 1) is processed with stopping code 2 -### pop requested out of 238 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.429714,0.306686,0.849288) - Old Polarization: (-0.886878,0.320098,0.333143) - New Momentum Direction: (0.582233,0.415539,0.698808) - New Polarization: (0.0427305,0.842691,-0.536699) - *** FresnelRefraction *** -Track (trackID 823, parentID 1) is processed with stopping code 2 -### pop requested out of 237 stacked tracks. - -** Photon absorbed! ** -Track (trackID 822, parentID 1) is processed with stopping code 2 -### pop requested out of 236 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.56249,0.627936,0.537868) -Old Polarization: (-0.740643,0.671827,-0.00978028) -New Polarization: (-0.0168037,0.999852,0.00363199) -Polarization Change: (-0.0168037,0.999852,0.00363199) -New Momentum Direction: (-0.999718,-0.0167404,-0.0168164) -Momentum Change: (-0.999718,-0.0167404,-0.0168164) - -** Photon absorbed! ** -Track (trackID 821, parentID 1) is processed with stopping code 2 -### pop requested out of 235 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.835907,-0.547452,-0.0394467) - Old Polarization: (-0.438971,-0.623663,-0.646799) - New Momentum Direction: (0.671403,-0.739176,-0.0532615) - New Polarization: (-0.652604,-0.555651,-0.515131) - *** FresnelRefraction *** -Track (trackID 820, parentID 1) is processed with stopping code 2 -### pop requested out of 234 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.823129,-0.567661,-0.0148167) - Old Polarization: (-0.454072,-0.642304,-0.617466) - New Momentum Direction: (-0.823129,-0.567661,-0.0148167) - New Polarization: (0.0700373,-0.127381,0.989378) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.823129,-0.567661,-0.0148167) - Old Polarization: (0.0700373,-0.127381,0.989378) - New Momentum Direction: (-0.823129,0.567661,-0.0148167) - New Polarization: (-0.0700373,-0.127381,-0.989378) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.823129,0.567661,-0.0148167) - Old Polarization: (-0.0700373,-0.127381,-0.989378) - New Momentum Direction: (-0.639537,0.768498,-0.0200588) - New Polarization: (0.13232,0.0843374,-0.987613) - *** FresnelRefraction *** -Track (trackID 819, parentID 1) is processed with stopping code 2 -### pop requested out of 233 stacked tracks. - -** Photon absorbed! ** -Track (trackID 818, parentID 1) is processed with stopping code 2 -### pop requested out of 232 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.940266,-0.190192,-0.28236) - Old Polarization: (-0.322139,-0.228774,-0.918634) - New Momentum Direction: (0.888536,-0.256318,-0.380532) - New Polarization: (-0.444946,-0.279078,-0.850963) - *** FresnelRefraction *** -Track (trackID 817, parentID 1) is processed with stopping code 2 -### pop requested out of 231 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.508477,-0.517702,0.688066) - Old Polarization: (-0.798887,-0.581793,0.152631) - New Momentum Direction: (0.508477,-0.517702,-0.688066) - New Polarization: (0.630084,0.768339,-0.112471) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.508477,-0.517702,-0.688066) - Old Polarization: (0.630084,0.768339,-0.112471) - New Momentum Direction: (0.508477,0.517702,-0.688066) - New Polarization: (-0.630084,0.768339,0.112471) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.508477,0.517702,-0.688066) - Old Polarization: (-0.630084,0.768339,0.112471) - New Momentum Direction: (-0.508477,0.517702,-0.688066) - New Polarization: (-0.630084,-0.768339,-0.112471) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.508477,0.517702,-0.688066) - Old Polarization: (-0.630084,-0.768339,-0.112471) - New Momentum Direction: (-0.691357,0.7039,-0.162945) - New Polarization: (-0.719362,-0.649568,0.24613) - *** FresnelRefraction *** -Track (trackID 816, parentID 1) is processed with stopping code 2 -### pop requested out of 230 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.50133,-0.491206,0.712309) - Old Polarization: (-0.808718,-0.558708,0.183901) - New Momentum Direction: (0.67836,-0.66466,0.313137) - New Polarization: (-0.561498,-0.743852,-0.362497) - *** FresnelRefraction *** -Track (trackID 815, parentID 1) is processed with stopping code 2 -### pop requested out of 229 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.415592,-0.194523,0.888506) - Old Polarization: (-0.900013,-0.229047,0.370829) - New Momentum Direction: (0.565257,-0.264575,0.781335) - New Polarization: (0.429255,-0.714493,-0.552485) - *** FresnelRefraction *** -Track (trackID 814, parentID 1) is processed with stopping code 2 -### pop requested out of 228 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.48145,-0.457449,0.747628) -Old Polarization: (-0.828398,-0.516117,0.217669) -New Polarization: (-0.61186,-0.790221,0.0343059) -Polarization Change: (-0.61186,-0.790221,0.0343059) -New Momentum Direction: (-0.682982,0.549708,0.480995) -Momentum Change: (-0.682982,0.549708,0.480995) - -** Photon absorbed! ** -Track (trackID 813, parentID 1) is processed with stopping code 2 -### pop requested out of 227 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.438411,-0.295327,0.848869) - Old Polarization: (-0.878003,-0.342609,0.334262) - New Momentum Direction: (0.593316,-0.399677,0.698737) - New Polarization: (0.0663014,-0.840817,-0.537244) - *** FresnelRefraction *** -Track (trackID 812, parentID 1) is processed with stopping code 2 -### pop requested out of 226 stacked tracks. - -** Photon absorbed! ** -Track (trackID 811, parentID 1) is processed with stopping code 2 -### pop requested out of 225 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.941952,-0.15136,-0.299694) - Old Polarization: (-0.324641,-0.18292,-0.927981) - New Momentum Direction: (0.890209,-0.20537,-0.406634) - New Polarization: (-0.447318,-0.22511,-0.865582) - *** FresnelRefraction *** -Track (trackID 810, parentID 1) is processed with stopping code 2 -### pop requested out of 224 stacked tracks. - -** Photon absorbed! ** -Track (trackID 809, parentID 1) is processed with stopping code 2 -### pop requested out of 223 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.634903,-0.656455,0.407389) - Old Polarization: (-0.66104,-0.734511,-0.153361) - New Momentum Direction: (0.634903,0.656455,0.407389) - New Polarization: (0.66104,-0.734511,0.153361) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 808, parentID 1) is processed with stopping code 2 -### pop requested out of 222 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.930358,0.235341,-0.281155) - Old Polarization: (-0.336244,0.241881,-0.910183) - New Momentum Direction: (0.867983,0.318747,-0.380798) - New Polarization: (-0.473285,0.298802,-0.828685) - *** FresnelRefraction *** -Track (trackID 807, parentID 1) is processed with stopping code 2 -### pop requested out of 221 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.782911,0.619972,0.0518164) - Old Polarization: (-0.497063,0.673433,-0.547189) - New Momentum Direction: (0.545717,0.835058,0.0697931) - New Polarization: (-0.740381,0.519497,-0.426567) - *** FresnelRefraction *** -Track (trackID 806, parentID 1) is processed with stopping code 2 -### pop requested out of 220 stacked tracks. - -** Photon absorbed! ** -Track (trackID 805, parentID 1) is processed with stopping code 2 -### pop requested out of 219 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.524016,-0.522274,0.672783) - Old Polarization: (-0.785997,-0.600789,0.14581) - New Momentum Direction: (0.524016,-0.522274,-0.672783) - New Polarization: (0.617295,0.777138,-0.122487) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.524016,-0.522274,-0.672783) - Old Polarization: (0.617295,0.777138,-0.122487) - New Momentum Direction: (-0.524016,-0.522274,-0.672783) - New Polarization: (0.617295,-0.777138,0.122487) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.524016,-0.522274,-0.672783) - Old Polarization: (0.617295,-0.777138,0.122487) - New Momentum Direction: (-0.524016,0.522274,-0.672783) - New Polarization: (-0.617295,-0.777138,-0.122487) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 804, parentID 1) is processed with stopping code 2 -### pop requested out of 218 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.8271,0.559962,-0.0484639) - Old Polarization: (-0.448229,0.605118,-0.657969) - New Momentum Direction: (0.65242,0.755035,-0.0653472) - New Polarization: (-0.666348,0.530431,-0.524045) - *** FresnelRefraction *** -Track (trackID 803, parentID 1) is processed with stopping code 2 -### pop requested out of 217 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.433293,-0.228316,0.871854) - Old Polarization: (-0.888073,-0.273,0.369862) - New Momentum Direction: (0.582164,-0.306761,0.752982) - New Polarization: (0.313886,-0.76951,-0.556174) - *** FresnelRefraction *** -Track (trackID 802, parentID 1) is processed with stopping code 2 -### pop requested out of 216 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.694119,0.677832,0.24237) - Old Polarization: (-0.596152,0.72999,-0.334241) - New Momentum Direction: (0.225483,0.917366,0.32802) - New Polarization: (-0.895336,0.327862,-0.301464) - *** FresnelRefraction *** -Track (trackID 801, parentID 1) is processed with stopping code 2 -### pop requested out of 215 stacked tracks. - -** Photon absorbed! ** -Track (trackID 800, parentID 1) is processed with stopping code 2 -### pop requested out of 214 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.672111,-0.658999,0.337619) - Old Polarization: (-0.620474,-0.750082,-0.228885) - New Momentum Direction: (-0.672111,-0.658999,0.337619) - New Polarization: (-0.598179,0.751977,0.27697) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.672111,-0.658999,0.337619) - Old Polarization: (-0.598179,0.751977,0.27697) - New Momentum Direction: (-0.672111,0.658999,0.337619) - New Polarization: (0.598179,0.751977,-0.27697) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.672111,0.658999,0.337619) - Old Polarization: (0.598179,0.751977,-0.27697) - New Momentum Direction: (-0.672111,0.658999,-0.337619) - New Polarization: (-0.598179,-0.751977,-0.27697) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 799, parentID 1) is processed with stopping code 2 -### pop requested out of 213 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.58695,0.65095,0.481409) - Old Polarization: (-0.713758,0.6967,-0.0718243) - New Momentum Direction: (0.58695,-0.65095,0.481409) - New Polarization: (0.713758,0.6967,0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.58695,-0.65095,0.481409) - Old Polarization: (0.713758,0.6967,0.0718243) - New Momentum Direction: (-0.58695,-0.65095,0.481409) - New Polarization: (0.713758,-0.6967,-0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.58695,-0.65095,0.481409) - Old Polarization: (0.713758,-0.6967,-0.0718243) - New Momentum Direction: (-0.58695,-0.65095,-0.481409) - New Polarization: (-0.713758,0.6967,-0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.58695,-0.65095,-0.481409) - Old Polarization: (-0.713758,0.6967,-0.0718243) - New Momentum Direction: (-0.58695,0.65095,-0.481409) - New Polarization: (0.713758,0.6967,0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.58695,0.65095,-0.481409) - Old Polarization: (0.713758,0.6967,0.0718243) - New Momentum Direction: (0.58695,0.65095,-0.481409) - New Polarization: (0.713758,-0.6967,-0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.58695,0.65095,-0.481409) - Old Polarization: (0.713758,-0.6967,-0.0718243) - New Momentum Direction: (0.58695,0.65095,0.481409) - New Polarization: (-0.713758,0.6967,-0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.58695,0.65095,0.481409) - Old Polarization: (-0.713758,0.6967,-0.0718243) - New Momentum Direction: (0.58695,-0.65095,0.481409) - New Polarization: (0.713758,0.6967,0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.58695,-0.65095,0.481409) - Old Polarization: (0.713758,0.6967,0.0718243) - New Momentum Direction: (-0.58695,-0.65095,0.481409) - New Polarization: (0.713758,-0.6967,-0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.58695,-0.65095,0.481409) - Old Polarization: (0.713758,-0.6967,-0.0718243) - New Momentum Direction: (-0.58695,-0.65095,-0.481409) - New Polarization: (-0.713758,0.6967,-0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.58695,-0.65095,-0.481409) - Old Polarization: (-0.713758,0.6967,-0.0718243) - New Momentum Direction: (-0.58695,0.65095,-0.481409) - New Polarization: (0.713758,0.6967,0.0718243) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.58695,0.65095,-0.481409) - Old Polarization: (0.713758,0.6967,0.0718243) - New Momentum Direction: (0.58695,0.65095,-0.481409) - New Polarization: (0.713758,-0.6967,-0.0718243) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 798, parentID 1) is processed with stopping code 2 -### pop requested out of 212 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.690062,-0.66661,0.28186) - Old Polarization: (-0.60077,-0.744755,-0.290543) - New Momentum Direction: (0.179569,-0.906079,0.383114) - New Polarization: (-0.909207,-0.301564,-0.287058) - *** FresnelRefraction *** -Track (trackID 797, parentID 1) is processed with stopping code 2 -### pop requested out of 211 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.407277,-0.0828995,0.909535) - Old Polarization: (-0.910972,-0.108005,0.398077) - New Momentum Direction: (0.552318,-0.112422,0.826018) - New Polarization: (0.748301,-0.369848,-0.550689) - *** FresnelRefraction *** -Track (trackID 796, parentID 1) is processed with stopping code 2 -### pop requested out of 210 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.933954,-0.231191,-0.272546) - Old Polarization: (-0.331094,-0.27257,-0.903373) - New Momentum Direction: (0.875546,-0.312529,-0.368435) - New Polarization: (-0.463043,-0.325195,-0.824523) - *** FresnelRefraction *** -Track (trackID 795, parentID 1) is processed with stopping code 2 -### pop requested out of 209 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.92147,0.285279,-0.263647) - Old Polarization: (-0.346411,0.296391,-0.890029) - New Momentum Direction: (0.8502,0.386634,-0.357316) - New Polarization: (-0.49377,0.350175,-0.79597) - *** FresnelRefraction *** -Track (trackID 794, parentID 1) is processed with stopping code 2 -### pop requested out of 208 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.441596,-0.33384,0.832792) - Old Polarization: (-0.871417,-0.380562,0.309522) - New Momentum Direction: (0.600893,-0.454266,0.6577) - New Polarization: (-0.0753574,-0.851345,-0.519166) - *** FresnelRefraction *** -Track (trackID 793, parentID 1) is processed with stopping code 2 -### pop requested out of 207 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.906071,0.353215,-0.23297) - Old Polarization: (-0.364014,0.37001,-0.854743) - New Momentum Direction: (0.818742,0.479295,-0.316129) - New Polarization: (-0.527455,0.410344,-0.743915) - *** FresnelRefraction *** -Track (trackID 792, parentID 1) is processed with stopping code 2 -### pop requested out of 206 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.453852,0.385205,0.803515) - Old Polarization: (-0.863686,0.412024,0.290314) - New Momentum Direction: (0.611235,0.518783,0.597709) - New Polarization: (-0.227276,0.838454,-0.495319) - *** FresnelRefraction *** -Track (trackID 791, parentID 1) is processed with stopping code 2 -### pop requested out of 205 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.928453,-0.26625,-0.259009) - Old Polarization: (-0.337141,-0.311343,-0.888483) - New Momentum Direction: (0.864804,-0.359905,-0.350117) - New Polarization: (-0.475599,-0.363572,-0.801013) - *** FresnelRefraction *** -Track (trackID 790, parentID 1) is processed with stopping code 2 -### pop requested out of 204 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.800317,-0.598335,0.0385716) - Old Polarization: (-0.479052,-0.676802,-0.55897) - New Momentum Direction: (0.584609,-0.809635,0.0521931) - New Polarization: (-0.716616,-0.545463,-0.434662) - *** FresnelRefraction *** -Track (trackID 789, parentID 1) is processed with stopping code 2 -### pop requested out of 203 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.724513,-0.657638,0.206379) - Old Polarization: (-0.56298,-0.737371,-0.37328) - New Momentum Direction: (0.353445,-0.892538,0.280095) - New Polarization: (-0.846984,-0.432442,-0.309211) - *** FresnelRefraction *** -Track (trackID 788, parentID 1) is processed with stopping code 2 -### pop requested out of 202 stacked tracks. - -** Photon absorbed! ** -Track (trackID 787, parentID 1) is processed with stopping code 2 -### pop requested out of 201 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.949771,0.0455361,-0.309614) - Old Polarization: (-0.311214,0.0335354,-0.949748) - New Momentum Direction: (0.906814,0.0613363,-0.417045) - New Polarization: (-0.420259,0.0547478,-0.905751) - *** FresnelRefraction *** -Track (trackID 786, parentID 1) is processed with stopping code 2 -### pop requested out of 200 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.823681,-0.566954,-0.0105775) - Old Polarization: (-0.452391,-0.645767,-0.615083) - New Momentum Direction: (-0.823681,-0.566954,-0.0105775) - New Polarization: (0.0741488,-0.12618,0.989232) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.823681,-0.566954,-0.0105775) - Old Polarization: (0.0741488,-0.12618,0.989232) - New Momentum Direction: (-0.823681,0.566954,-0.0105775) - New Polarization: (-0.0741488,-0.12618,-0.989232) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 785, parentID 1) is processed with stopping code 2 -### pop requested out of 199 stacked tracks. - -** Photon absorbed! ** -Track (trackID 784, parentID 1) is processed with stopping code 2 -### pop requested out of 198 stacked tracks. - -** Photon absorbed! ** -Track (trackID 783, parentID 1) is processed with stopping code 2 -### pop requested out of 197 stacked tracks. - -** Photon absorbed! ** -Track (trackID 782, parentID 1) is processed with stopping code 2 -### pop requested out of 196 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.930318,0.239241,-0.277979) - Old Polarization: (-0.335212,0.247155,-0.909147) - New Momentum Direction: (0.868398,0.323465,-0.37584) - New Polarization: (-0.471593,0.304503,-0.827573) - *** FresnelRefraction *** -Track (trackID 781, parentID 1) is processed with stopping code 2 -### pop requested out of 195 stacked tracks. - -** Photon absorbed! ** -Track (trackID 780, parentID 1) is processed with stopping code 2 -### pop requested out of 194 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.899763,0.379767,-0.21495) - Old Polarization: (-0.369595,0.401318,-0.838059) - New Momentum Direction: (0.806898,0.514061,-0.29096) - New Polarization: (-0.537407,0.434423,-0.722821) - *** FresnelRefraction *** -Track (trackID 779, parentID 1) is processed with stopping code 2 -### pop requested out of 193 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.559214,0.612552,0.558623) - Old Polarization: (-0.746295,0.665386,0.0174632) - New Momentum Direction: (0.559214,-0.612552,0.558623) - New Polarization: (0.746295,0.665386,-0.0174632) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.559214,-0.612552,0.558623) - Old Polarization: (0.746295,0.665386,-0.0174632) - New Momentum Direction: (-0.559214,-0.612552,0.558623) - New Polarization: (0.746295,-0.665386,0.0174632) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.559214,-0.612552,0.558623) - Old Polarization: (0.746295,-0.665386,0.0174632) - New Momentum Direction: (-0.559214,-0.612552,-0.558623) - New Polarization: (-0.746295,0.665386,0.0174632) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.559214,-0.612552,-0.558623) - Old Polarization: (-0.746295,0.665386,0.0174632) - New Momentum Direction: (-0.559214,0.612552,-0.558623) - New Polarization: (0.746295,0.665386,-0.0174632) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.559214,0.612552,-0.558623) - Old Polarization: (0.746295,0.665386,-0.0174632) - New Momentum Direction: (0.559214,0.612552,-0.558623) - New Polarization: (0.746295,-0.665386,0.0174632) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.559214,0.612552,-0.558623) - Old Polarization: (0.746295,-0.665386,0.0174632) - New Momentum Direction: (0.559214,0.612552,0.558623) - New Polarization: (-0.746295,0.665386,0.0174632) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.559214,0.612552,0.558623) - Old Polarization: (-0.746295,0.665386,0.0174632) - New Momentum Direction: (0.559214,-0.612552,0.558623) - New Polarization: (0.746295,0.665386,-0.0174632) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 778, parentID 1) is processed with stopping code 2 -### pop requested out of 192 stacked tracks. - -** Photon absorbed! ** -Track (trackID 777, parentID 1) is processed with stopping code 2 -### pop requested out of 191 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.853999,-0.511396,-0.0957086) - Old Polarization: (-0.422289,-0.573878,-0.701667) - New Momentum Direction: (0.706225,-0.695905,-0.13024) - New Polarization: (-0.629739,-0.533386,-0.564737) - *** FresnelRefraction *** -Track (trackID 776, parentID 1) is processed with stopping code 2 -### pop requested out of 190 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.516117,-0.531467,0.671688) - Old Polarization: (-0.790661,-0.597181,0.13502) - New Momentum Direction: (0.516117,-0.531467,-0.671688) - New Polarization: (0.790661,0.597181,0.13502) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.516117,-0.531467,-0.671688) - Old Polarization: (0.790661,0.597181,0.13502) - New Momentum Direction: (0.516117,0.531467,-0.671688) - New Polarization: (-0.790661,0.597181,-0.13502) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.516117,0.531467,-0.671688) - Old Polarization: (-0.790661,0.597181,-0.13502) - New Momentum Direction: (-0.516117,0.531467,-0.671688) - New Polarization: (-0.790661,-0.597181,0.13502) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 775, parentID 1) is processed with stopping code 2 -### pop requested out of 189 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.689404,-0.666926,0.282722) - Old Polarization: (-0.601502,-0.744536,-0.289589) - New Momentum Direction: (0.172886,-0.906825,0.38442) - New Polarization: (-0.911021,-0.295576,-0.287532) - *** FresnelRefraction *** -Track (trackID 774, parentID 1) is processed with stopping code 2 -### pop requested out of 188 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.49401,0.513681,0.701488) - Old Polarization: (-0.817074,0.550093,0.172591) - New Momentum Direction: (0.49401,0.513681,-0.701488) - New Polarization: (0.644863,-0.75764,-0.100666) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.49401,0.513681,-0.701488) - Old Polarization: (0.644863,-0.75764,-0.100666) - New Momentum Direction: (0.49401,-0.513681,-0.701488) - New Polarization: (-0.644863,-0.75764,0.100666) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.49401,-0.513681,-0.701488) - Old Polarization: (-0.644863,-0.75764,0.100666) - New Momentum Direction: (-0.49401,-0.513681,-0.701488) - New Polarization: (-0.644863,0.75764,-0.100666) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.49401,-0.513681,-0.701488) - Old Polarization: (-0.644863,0.75764,-0.100666) - New Momentum Direction: (-0.668032,-0.694632,-0.266869) - New Polarization: (-0.743703,0.635413,0.20774) - *** FresnelRefraction *** -Track (trackID 773, parentID 1) is processed with stopping code 2 -### pop requested out of 187 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.635787,-0.650151,0.416027) - Old Polarization: (-0.660663,-0.737084,-0.142238) - New Momentum Direction: (0.635787,0.650151,0.416027) - New Polarization: (0.660663,-0.737084,0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,0.650151,0.416027) - Old Polarization: (0.660663,-0.737084,0.142238) - New Momentum Direction: (-0.635787,0.650151,0.416027) - New Polarization: (0.660663,0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,0.650151,0.416027) - Old Polarization: (0.660663,0.737084,-0.142238) - New Momentum Direction: (-0.635787,0.650151,-0.416027) - New Polarization: (-0.660663,-0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,0.650151,-0.416027) - Old Polarization: (-0.660663,-0.737084,-0.142238) - New Momentum Direction: (-0.635787,-0.650151,-0.416027) - New Polarization: (0.660663,-0.737084,0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,-0.650151,-0.416027) - Old Polarization: (0.660663,-0.737084,0.142238) - New Momentum Direction: (0.635787,-0.650151,-0.416027) - New Polarization: (0.660663,0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,-0.650151,-0.416027) - Old Polarization: (0.660663,0.737084,-0.142238) - New Momentum Direction: (0.635787,-0.650151,0.416027) - New Polarization: (-0.660663,-0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,-0.650151,0.416027) - Old Polarization: (-0.660663,-0.737084,-0.142238) - New Momentum Direction: (0.635787,0.650151,0.416027) - New Polarization: (0.660663,-0.737084,0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,0.650151,0.416027) - Old Polarization: (0.660663,-0.737084,0.142238) - New Momentum Direction: (-0.635787,0.650151,0.416027) - New Polarization: (0.660663,0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,0.650151,0.416027) - Old Polarization: (0.660663,0.737084,-0.142238) - New Momentum Direction: (-0.635787,-0.650151,0.416027) - New Polarization: (-0.660663,0.737084,0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,-0.650151,0.416027) - Old Polarization: (-0.660663,0.737084,0.142238) - New Momentum Direction: (0.635787,-0.650151,0.416027) - New Polarization: (-0.660663,-0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,-0.650151,0.416027) - Old Polarization: (-0.660663,-0.737084,-0.142238) - New Momentum Direction: (0.635787,-0.650151,-0.416027) - New Polarization: (0.660663,0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,-0.650151,-0.416027) - Old Polarization: (0.660663,0.737084,-0.142238) - New Momentum Direction: (0.635787,0.650151,-0.416027) - New Polarization: (-0.660663,0.737084,0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,0.650151,-0.416027) - Old Polarization: (-0.660663,0.737084,0.142238) - New Momentum Direction: (-0.635787,0.650151,-0.416027) - New Polarization: (-0.660663,-0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,0.650151,-0.416027) - Old Polarization: (-0.660663,-0.737084,-0.142238) - New Momentum Direction: (-0.635787,0.650151,0.416027) - New Polarization: (0.660663,0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,0.650151,0.416027) - Old Polarization: (0.660663,0.737084,-0.142238) - New Momentum Direction: (-0.635787,-0.650151,0.416027) - New Polarization: (-0.660663,0.737084,0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,-0.650151,0.416027) - Old Polarization: (-0.660663,0.737084,0.142238) - New Momentum Direction: (0.635787,-0.650151,0.416027) - New Polarization: (-0.660663,-0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,-0.650151,0.416027) - Old Polarization: (-0.660663,-0.737084,-0.142238) - New Momentum Direction: (0.635787,0.650151,0.416027) - New Polarization: (0.660663,-0.737084,0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.635787,0.650151,0.416027) - Old Polarization: (0.660663,-0.737084,0.142238) - New Momentum Direction: (-0.635787,0.650151,0.416027) - New Polarization: (0.660663,0.737084,-0.142238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.635787,0.650151,0.416027) - Old Polarization: (0.660663,0.737084,-0.142238) - New Momentum Direction: (-0.635787,0.650151,-0.416027) - New Polarization: (-0.660663,-0.737084,-0.142238) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 772, parentID 1) is processed with stopping code 2 -### pop requested out of 186 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.404645,-0.0098005,0.914421) - Old Polarization: (-0.914222,-0.0278218,0.404259) - New Momentum Direction: (0.548447,-0.0132834,0.83608) - New Polarization: (0.834401,-0.0565997,-0.548245) - *** FresnelRefraction *** -Track (trackID 771, parentID 1) is processed with stopping code 2 -### pop requested out of 185 stacked tracks. - -** Photon absorbed! ** -Track (trackID 770, parentID 1) is processed with stopping code 2 -### pop requested out of 184 stacked tracks. - -** Photon absorbed! ** -Track (trackID 769, parentID 1) is processed with stopping code 2 -### pop requested out of 183 stacked tracks. - -** Photon absorbed! ** -Track (trackID 768, parentID 1) is processed with stopping code 2 -### pop requested out of 182 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.67881,0.682115,0.271911) - Old Polarization: (-0.61304,0.730259,-0.301505) - New Momentum Direction: (0.67881,-0.682115,0.271911) - New Polarization: (-0.656201,-0.729675,-0.192289) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.67881,-0.682115,0.271911) - Old Polarization: (-0.656201,-0.729675,-0.192289) - New Momentum Direction: (-0.67881,-0.682115,0.271911) - New Polarization: (-0.633428,0.731245,0.253079) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.67881,-0.682115,0.271911) - Old Polarization: (-0.633428,0.731245,0.253079) - New Momentum Direction: (-0.67881,-0.682115,-0.271911) - New Polarization: (0.633428,-0.731245,0.253079) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.67881,-0.682115,-0.271911) - Old Polarization: (0.633428,-0.731245,0.253079) - New Momentum Direction: (-0.67881,0.682115,-0.271911) - New Polarization: (0.632918,0.731245,0.254353) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.67881,0.682115,-0.271911) - Old Polarization: (0.632918,0.731245,0.254353) - New Momentum Direction: (-0.0833676,0.925681,-0.369004) - New Polarization: (0.942976,0.193025,0.271179) - *** FresnelRefraction *** -Track (trackID 767, parentID 1) is processed with stopping code 2 -### pop requested out of 181 stacked tracks. - -** Photon absorbed! ** -Track (trackID 766, parentID 1) is processed with stopping code 2 -### pop requested out of 180 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.592365,0.650746,0.475009) - Old Polarization: (-0.708477,0.701469,-0.0774738) - New Momentum Direction: (0.592365,-0.650746,0.475009) - New Polarization: (0.708477,0.701469,0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.592365,-0.650746,0.475009) - Old Polarization: (0.708477,0.701469,0.0774738) - New Momentum Direction: (-0.592365,-0.650746,0.475009) - New Polarization: (0.708477,-0.701469,-0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.592365,-0.650746,0.475009) - Old Polarization: (0.708477,-0.701469,-0.0774738) - New Momentum Direction: (-0.592365,-0.650746,-0.475009) - New Polarization: (-0.708477,0.701469,-0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.592365,-0.650746,-0.475009) - Old Polarization: (-0.708477,0.701469,-0.0774738) - New Momentum Direction: (-0.592365,0.650746,-0.475009) - New Polarization: (0.708477,0.701469,0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.592365,0.650746,-0.475009) - Old Polarization: (0.708477,0.701469,0.0774738) - New Momentum Direction: (0.592365,0.650746,-0.475009) - New Polarization: (0.708477,-0.701469,-0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.592365,0.650746,-0.475009) - Old Polarization: (0.708477,-0.701469,-0.0774738) - New Momentum Direction: (0.592365,0.650746,0.475009) - New Polarization: (-0.708477,0.701469,-0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.592365,0.650746,0.475009) - Old Polarization: (-0.708477,0.701469,-0.0774738) - New Momentum Direction: (0.592365,-0.650746,0.475009) - New Polarization: (0.708477,0.701469,0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.592365,-0.650746,0.475009) - Old Polarization: (0.708477,0.701469,0.0774738) - New Momentum Direction: (-0.592365,-0.650746,0.475009) - New Polarization: (0.708477,-0.701469,-0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.592365,-0.650746,0.475009) - Old Polarization: (0.708477,-0.701469,-0.0774738) - New Momentum Direction: (-0.592365,-0.650746,-0.475009) - New Polarization: (-0.708477,0.701469,-0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.592365,-0.650746,-0.475009) - Old Polarization: (-0.708477,0.701469,-0.0774738) - New Momentum Direction: (-0.592365,0.650746,-0.475009) - New Polarization: (0.708477,0.701469,0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.592365,0.650746,-0.475009) - Old Polarization: (0.708477,0.701469,0.0774738) - New Momentum Direction: (0.592365,0.650746,-0.475009) - New Polarization: (0.708477,-0.701469,-0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.592365,0.650746,-0.475009) - Old Polarization: (0.708477,-0.701469,-0.0774738) - New Momentum Direction: (0.592365,-0.650746,-0.475009) - New Polarization: (-0.708477,-0.701469,0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.592365,-0.650746,-0.475009) - Old Polarization: (-0.708477,-0.701469,0.0774738) - New Momentum Direction: (0.592365,-0.650746,0.475009) - New Polarization: (0.708477,0.701469,0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.592365,-0.650746,0.475009) - Old Polarization: (0.708477,0.701469,0.0774738) - New Momentum Direction: (-0.592365,-0.650746,0.475009) - New Polarization: (0.708477,-0.701469,-0.0774738) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.592365,-0.650746,0.475009) - Old Polarization: (0.708477,-0.701469,-0.0774738) - New Momentum Direction: (-0.592365,0.650746,0.475009) - New Polarization: (-0.708477,-0.701469,0.0774738) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 765, parentID 1) is processed with stopping code 2 -### pop requested out of 179 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.570237,-0.609094,0.551212) - Old Polarization: (-0.731555,-0.681774,0.00343924) - New Momentum Direction: (0.570237,0.609094,0.551212) - New Polarization: (0.731555,-0.681774,-0.00343924) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.570237,0.609094,0.551212) - Old Polarization: (0.731555,-0.681774,-0.00343924) - New Momentum Direction: (-0.570237,0.609094,0.551212) - New Polarization: (0.731555,0.681774,0.00343924) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.570237,0.609094,0.551212) - Old Polarization: (0.731555,0.681774,0.00343924) - New Momentum Direction: (-0.570237,0.609094,-0.551212) - New Polarization: (-0.731555,-0.681774,0.00343924) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.570237,0.609094,-0.551212) - Old Polarization: (-0.731555,-0.681774,0.00343924) - New Momentum Direction: (-0.570237,-0.609094,-0.551212) - New Polarization: (0.731555,-0.681774,-0.00343924) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.570237,-0.609094,-0.551212) - Old Polarization: (0.731555,-0.681774,-0.00343924) - New Momentum Direction: (0.570237,-0.609094,-0.551212) - New Polarization: (0.731555,0.681774,0.00343924) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.570237,-0.609094,-0.551212) - Old Polarization: (0.731555,0.681774,0.00343924) - New Momentum Direction: (0.570237,-0.609094,0.551212) - New Polarization: (-0.731555,-0.681774,0.00343924) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 764, parentID 1) is processed with stopping code 2 -### pop requested out of 178 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.614455,0.6658,0.423269) - Old Polarization: (-0.683974,0.716939,-0.134823) - New Momentum Direction: (0.614455,-0.6658,0.423269) - New Polarization: (0.683974,0.716939,0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.614455,-0.6658,0.423269) - Old Polarization: (0.683974,0.716939,0.134823) - New Momentum Direction: (-0.614455,-0.6658,0.423269) - New Polarization: (0.683974,-0.716939,-0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.614455,-0.6658,0.423269) - Old Polarization: (0.683974,-0.716939,-0.134823) - New Momentum Direction: (-0.614455,-0.6658,-0.423269) - New Polarization: (-0.683974,0.716939,-0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.614455,-0.6658,-0.423269) - Old Polarization: (-0.683974,0.716939,-0.134823) - New Momentum Direction: (-0.614455,0.6658,-0.423269) - New Polarization: (0.683974,0.716939,0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.614455,0.6658,-0.423269) - Old Polarization: (0.683974,0.716939,0.134823) - New Momentum Direction: (0.614455,0.6658,-0.423269) - New Polarization: (0.683974,-0.716939,-0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.614455,0.6658,-0.423269) - Old Polarization: (0.683974,-0.716939,-0.134823) - New Momentum Direction: (0.614455,0.6658,0.423269) - New Polarization: (-0.683974,0.716939,-0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.614455,0.6658,0.423269) - Old Polarization: (-0.683974,0.716939,-0.134823) - New Momentum Direction: (0.614455,-0.6658,0.423269) - New Polarization: (0.683974,0.716939,0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.614455,-0.6658,0.423269) - Old Polarization: (0.683974,0.716939,0.134823) - New Momentum Direction: (-0.614455,-0.6658,0.423269) - New Polarization: (0.683974,-0.716939,-0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.614455,-0.6658,0.423269) - Old Polarization: (0.683974,-0.716939,-0.134823) - New Momentum Direction: (-0.614455,0.6658,0.423269) - New Polarization: (-0.683974,-0.716939,0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.614455,0.6658,0.423269) - Old Polarization: (-0.683974,-0.716939,0.134823) - New Momentum Direction: (0.614455,0.6658,0.423269) - New Polarization: (-0.683974,0.716939,-0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.614455,0.6658,0.423269) - Old Polarization: (-0.683974,0.716939,-0.134823) - New Momentum Direction: (0.614455,0.6658,-0.423269) - New Polarization: (0.683974,-0.716939,-0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.614455,0.6658,-0.423269) - Old Polarization: (0.683974,-0.716939,-0.134823) - New Momentum Direction: (0.614455,-0.6658,-0.423269) - New Polarization: (-0.683974,-0.716939,0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.614455,-0.6658,-0.423269) - Old Polarization: (-0.683974,-0.716939,0.134823) - New Momentum Direction: (-0.614455,-0.6658,-0.423269) - New Polarization: (-0.683974,0.716939,-0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.614455,-0.6658,-0.423269) - Old Polarization: (-0.683974,0.716939,-0.134823) - New Momentum Direction: (-0.614455,0.6658,-0.423269) - New Polarization: (0.683974,0.716939,0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.614455,0.6658,-0.423269) - Old Polarization: (0.683974,0.716939,0.134823) - New Momentum Direction: (-0.614455,0.6658,0.423269) - New Polarization: (-0.683974,-0.716939,0.134823) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.614455,0.6658,0.423269) - Old Polarization: (-0.683974,-0.716939,0.134823) - New Momentum Direction: (0.614455,0.6658,0.423269) - New Polarization: (-0.683974,0.716939,-0.134823) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 763, parentID 1) is processed with stopping code 2 -### pop requested out of 177 stacked tracks. - -** Photon absorbed! ** -Track (trackID 762, parentID 1) is processed with stopping code 2 -### pop requested out of 176 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.835702,0.544582,-0.0709411) - Old Polarization: (-0.439395,0.585543,-0.681228) - New Momentum Direction: (0.67052,0.735676,-0.0958343) - New Polarization: (-0.653575,0.524625,-0.545535) - *** FresnelRefraction *** -Track (trackID 761, parentID 1) is processed with stopping code 2 -### pop requested out of 175 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.749982,0.649343,0.126016) - Old Polarization: (-0.533697,0.706587,-0.464653) - New Momentum Direction: (0.454602,0.874381,0.169689) - New Polarization: (-0.794832,0.484222,-0.365748) - *** FresnelRefraction *** -Track (trackID 760, parentID 1) is processed with stopping code 2 -### pop requested out of 174 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.46492,-0.400056,0.789813) - Old Polarization: (-0.848211,-0.456943,0.267845) - New Momentum Direction: (0.629889,-0.54201,0.556296) - New Polarization: (-0.295929,-0.829699,-0.473313) - *** FresnelRefraction *** -Track (trackID 759, parentID 1) is processed with stopping code 2 -### pop requested out of 173 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.785122,-0.61486,0.074369) - Old Polarization: (-0.495673,-0.695799,-0.519781) - New Momentum Direction: (0.546233,-0.831573,0.100581) - New Polarization: (-0.741663,-0.535959,-0.403341) - *** FresnelRefraction *** -Track (trackID 758, parentID 1) is processed with stopping code 2 -### pop requested out of 172 stacked tracks. - -** Photon absorbed! ** -Track (trackID 757, parentID 1) is processed with stopping code 2 -### pop requested out of 171 stacked tracks. - -** Photon absorbed! ** -Track (trackID 756, parentID 1) is processed with stopping code 2 -### pop requested out of 170 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.482743,-0.461238,0.744459) - Old Polarization: (-0.8269,-0.520037,0.214006) - New Momentum Direction: (0.656457,-0.627215,0.419125) - New Polarization: (-0.48184,-0.776123,-0.406773) - *** FresnelRefraction *** -Track (trackID 755, parentID 1) is processed with stopping code 2 -### pop requested out of 169 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.686004,-0.663784,0.297976) - Old Polarization: (-0.605106,-0.747892,-0.272954) - New Momentum Direction: (0.171465,-0.898784,0.403469) - New Polarization: (-0.911072,-0.300499,-0.28222) - *** FresnelRefraction *** -Track (trackID 754, parentID 1) is processed with stopping code 2 -### pop requested out of 168 stacked tracks. - -** Photon absorbed! ** -Track (trackID 753, parentID 1) is processed with stopping code 2 -### pop requested out of 167 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.422542,-0.221273,0.878918) -Old Polarization: (-0.894224,-0.259834,0.364485) -New Polarization: (-0.5848,-0.519634,-0.622888) -Polarization Change: (-0.5848,-0.519634,-0.622888) -New Momentum Direction: (0.711688,0.0397943,-0.701368) -Momentum Change: (0.711688,0.0397943,-0.701368) - Photon at Boundary! - Old Momentum Direction: (0.711688,0.0397943,-0.701368) - Old Polarization: (-0.5848,-0.519634,-0.622888) - New Momentum Direction: (0.304009,0.0539659,-0.951139) - New Polarization: (-0.873702,-0.382201,-0.300943) - *** FresnelRefraction *** -Track (trackID 752, parentID 1) is processed with stopping code 2 -### pop requested out of 166 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.56781,0.632614,0.526679) - Old Polarization: (-0.734948,0.677774,-0.0217568) - New Momentum Direction: (0.56781,-0.632614,0.526679) - New Polarization: (0.734948,0.677774,0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.56781,-0.632614,0.526679) - Old Polarization: (0.734948,0.677774,0.0217568) - New Momentum Direction: (-0.56781,-0.632614,0.526679) - New Polarization: (0.734948,-0.677774,-0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.56781,-0.632614,0.526679) - Old Polarization: (0.734948,-0.677774,-0.0217568) - New Momentum Direction: (-0.56781,-0.632614,-0.526679) - New Polarization: (-0.734948,0.677774,-0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.56781,-0.632614,-0.526679) - Old Polarization: (-0.734948,0.677774,-0.0217568) - New Momentum Direction: (-0.56781,0.632614,-0.526679) - New Polarization: (0.734948,0.677774,0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.56781,0.632614,-0.526679) - Old Polarization: (0.734948,0.677774,0.0217568) - New Momentum Direction: (0.56781,0.632614,-0.526679) - New Polarization: (0.734948,-0.677774,-0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.56781,0.632614,-0.526679) - Old Polarization: (0.734948,-0.677774,-0.0217568) - New Momentum Direction: (0.56781,0.632614,0.526679) - New Polarization: (-0.734948,0.677774,-0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.56781,0.632614,0.526679) - Old Polarization: (-0.734948,0.677774,-0.0217568) - New Momentum Direction: (0.56781,-0.632614,0.526679) - New Polarization: (0.734948,0.677774,0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.56781,-0.632614,0.526679) - Old Polarization: (0.734948,0.677774,0.0217568) - New Momentum Direction: (-0.56781,-0.632614,0.526679) - New Polarization: (0.734948,-0.677774,-0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.56781,-0.632614,0.526679) - Old Polarization: (0.734948,-0.677774,-0.0217568) - New Momentum Direction: (-0.56781,-0.632614,-0.526679) - New Polarization: (-0.734948,0.677774,-0.0217568) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.56781,-0.632614,-0.526679) - Old Polarization: (-0.734948,0.677774,-0.0217568) - New Momentum Direction: (-0.56781,0.632614,-0.526679) - New Polarization: (0.734948,0.677774,0.0217568) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 751, parentID 1) is processed with stopping code 2 -### pop requested out of 165 stacked tracks. - -** Photon absorbed! ** -Track (trackID 750, parentID 1) is processed with stopping code 2 -### pop requested out of 164 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.519752,0.559203,0.645871) - Old Polarization: (-0.789491,0.603269,0.113009) - New Momentum Direction: (0.519752,0.559203,-0.645871) - New Polarization: (0.789491,-0.603269,0.113009) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.519752,0.559203,-0.645871) - Old Polarization: (0.789491,-0.603269,0.113009) - New Momentum Direction: (0.519752,-0.559203,-0.645871) - New Polarization: (-0.789491,-0.603269,-0.113009) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.519752,-0.559203,-0.645871) - Old Polarization: (-0.789491,-0.603269,-0.113009) - New Momentum Direction: (-0.519752,-0.559203,-0.645871) - New Polarization: (-0.789491,0.603269,0.113009) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 749, parentID 1) is processed with stopping code 2 -### pop requested out of 163 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.949889,-0.0627789,-0.306219) - Old Polarization: (-0.310871,-0.0871685,-0.946447) - New Momentum Direction: (0.907099,-0.0845352,-0.412341) - New Polarization: (-0.419654,-0.105797,-0.901497) - *** FresnelRefraction *** -Track (trackID 748, parentID 1) is processed with stopping code 2 -### pop requested out of 162 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.911219,-0.355244,-0.208523) - Old Polarization: (-0.353392,-0.414084,-0.838837) - New Momentum Direction: (0.832439,-0.477873,-0.280504) - New Polarization: (-0.507316,-0.453653,-0.732686) - *** FresnelRefraction *** -Track (trackID 747, parentID 1) is processed with stopping code 2 -### pop requested out of 161 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.410147,0.175208,0.895032) - Old Polarization: (-0.907587,0.175053,0.381632) - New Momentum Direction: (0.556414,0.237691,0.796182) - New Polarization: (0.513055,0.655445,-0.554226) - *** FresnelRefraction *** -Track (trackID 746, parentID 1) is processed with stopping code 2 -### pop requested out of 160 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.911693,-0.339941,-0.230773) -Old Polarization: (-0.359339,-0.387345,-0.849022) -New Polarization: (-0.10921,0.248293,-0.962509) -Polarization Change: (-0.10921,0.248293,-0.962509) -New Momentum Direction: (0.425343,0.886847,0.180514) -Momentum Change: (0.425343,0.886847,0.180514) - -** Photon absorbed! ** -Track (trackID 745, parentID 1) is processed with stopping code 2 -### pop requested out of 159 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.856426,-0.507652,-0.0939336) - Old Polarization: (-0.417886,-0.574808,-0.703539) - New Momentum Direction: (0.714431,-0.688026,-0.127309) - New Polarization: (-0.62057,-0.539001,-0.569535) - *** FresnelRefraction *** -Track (trackID 744, parentID 1) is processed with stopping code 2 -### pop requested out of 158 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.51403,0.560378,0.649423) - Old Polarization: (-0.793795,0.597676,0.112576) - New Momentum Direction: (0.51403,0.560378,-0.649423) - New Polarization: (0.793795,-0.597676,0.112576) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.51403,0.560378,-0.649423) - Old Polarization: (0.793795,-0.597676,0.112576) - New Momentum Direction: (0.51403,-0.560378,-0.649423) - New Polarization: (-0.793795,-0.597676,-0.112576) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.51403,-0.560378,-0.649423) - Old Polarization: (-0.793795,-0.597676,-0.112576) - New Momentum Direction: (-0.51403,-0.560378,-0.649423) - New Polarization: (-0.793795,0.597676,0.112576) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.51403,-0.560378,-0.649423) - Old Polarization: (-0.793795,0.597676,0.112576) - New Momentum Direction: (-0.51403,-0.560378,0.649423) - New Polarization: (0.793795,-0.597676,0.112576) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.51403,-0.560378,0.649423) - Old Polarization: (0.793795,-0.597676,0.112576) - New Momentum Direction: (-0.51403,0.560378,0.649423) - New Polarization: (-0.793795,-0.597676,-0.112576) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.51403,0.560378,0.649423) - Old Polarization: (-0.793795,-0.597676,-0.112576) - New Momentum Direction: (0.51403,0.560378,0.649423) - New Polarization: (-0.793795,0.597676,0.112576) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.51403,0.560378,0.649423) - Old Polarization: (-0.793795,0.597676,0.112576) - New Momentum Direction: (0.51403,0.560378,-0.649423) - New Polarization: (0.793795,-0.597676,0.112576) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.51403,0.560378,-0.649423) - Old Polarization: (0.793795,-0.597676,0.112576) - New Momentum Direction: (0.51403,-0.560378,-0.649423) - New Polarization: (-0.793795,-0.597676,-0.112576) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.51403,-0.560378,-0.649423) - Old Polarization: (-0.793795,-0.597676,-0.112576) - New Momentum Direction: (-0.51403,-0.560378,-0.649423) - New Polarization: (-0.793795,0.597676,0.112576) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 743, parentID 1) is processed with stopping code 2 -### pop requested out of 157 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.937202,-0.197719,-0.287331) - Old Polarization: (-0.329745,-0.233809,-0.914659) - New Momentum Direction: (0.880972,-0.268229,-0.389797) - New Polarization: (-0.458854,-0.283197,-0.842171) - *** FresnelRefraction *** -Track (trackID 742, parentID 1) is processed with stopping code 2 -### pop requested out of 156 stacked tracks. ** Photon absorbed! ** Track (trackID 741, parentID 1) is processed with stopping code 2 -### pop requested out of 155 stacked tracks. +### pop requested out of 279 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.408922,-0.119961,0.90465) - Old Polarization: (-0.908388,-0.148295,0.390947) - New Momentum Direction: (0.555221,-0.162879,0.815598) - New Polarization: (0.662091,-0.506932,-0.551957) + Old Momentum Direction: (0.820503,0.555716,-0.133992) + Old Polarization: (-0.541772,0.830744,0.127858) + New Momentum Direction: (0.628669,0.756008,-0.182285) + New Polarization: (-0.756605,0.648788,0.0813812) *** FresnelRefraction *** Track (trackID 740, parentID 1) is processed with stopping code 2 -### pop requested out of 154 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.847171,-0.526939,-0.0681) - Old Polarization: (-0.427074,-0.599088,-0.677275) - New Momentum Direction: (0.695627,-0.712478,-0.0920785) - New Polarization: (-0.634364,-0.54903,-0.544195) - *** FresnelRefraction *** -Track (trackID 739, parentID 1) is processed with stopping code 2 -### pop requested out of 153 stacked tracks. +### pop requested out of 278 stacked tracks. ** Photon absorbed! ** -Track (trackID 738, parentID 1) is processed with stopping code 2 -### pop requested out of 152 stacked tracks. +Track (trackID 739, parentID 1) is processed with stopping code 2 +### pop requested out of 277 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.408187,-0.0398257,0.912029) - Old Polarization: (-0.91204,-0.0611136,0.405523) - New Momentum Direction: (0.551809,-0.0538385,0.832231) - New Polarization: (0.81267,-0.189388,-0.55109) + Old Momentum Direction: (0.584487,-0.147515,-0.797881) + Old Polarization: (-0.799345,0.0642154,-0.597432) + New Momentum Direction: (0.794278,-0.200463,-0.57353) + New Polarization: (0.530691,-0.230664,0.815574) *** FresnelRefraction *** +Track (trackID 738, parentID 1) is processed with stopping code 2 +### pop requested out of 276 stacked tracks. + +** Photon absorbed! ** Track (trackID 737, parentID 1) is processed with stopping code 2 -### pop requested out of 151 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.625581,-0.653254,0.426507) - Old Polarization: (-0.671107,-0.729372,-0.132783) - New Momentum Direction: (0.625581,0.653254,0.426507) - New Polarization: (0.671107,-0.729372,0.132783) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.625581,0.653254,0.426507) - Old Polarization: (0.671107,-0.729372,0.132783) - New Momentum Direction: (-0.625581,0.653254,0.426507) - New Polarization: (0.671107,0.729372,-0.132783) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.625581,0.653254,0.426507) - Old Polarization: (0.671107,0.729372,-0.132783) - New Momentum Direction: (-0.625581,0.653254,-0.426507) - New Polarization: (-0.671107,-0.729372,-0.132783) - *** TotalInternalReflection *** +### pop requested out of 275 stacked tracks. ** Photon absorbed! ** Track (trackID 736, parentID 1) is processed with stopping code 2 -### pop requested out of 150 stacked tracks. +### pop requested out of 274 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.943309,0.105431,-0.314726) - Old Polarization: (-0.3248,0.0979225,-0.9407) - New Momentum Direction: (-0.943309,0.105431,-0.314726) - New Polarization: (0.317773,0.560711,-0.764607) - *** FresnelReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.741215,-0.562935,0.365656) + Old Polarization: (-0.628126,-0.389514,0.6736) + New Momentum Direction: (0.409515,-0.765072,0.496954) + New Polarization: (-0.884219,-0.198734,0.422684) + *** FresnelRefraction *** Track (trackID 735, parentID 1) is processed with stopping code 2 -### pop requested out of 149 stacked tracks. +### pop requested out of 273 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.492344,0.499792,0.712605) - Old Polarization: (-0.820662,0.53935,0.188723) - New Momentum Direction: (0.663265,0.6733,0.32672) - New Polarization: (-0.568036,0.737158,-0.365969) + Old Momentum Direction: (0.879197,0.260521,0.398924) + Old Polarization: (-0.476097,0.512937,0.714302) + New Momentum Direction: (0.763878,0.352875,0.540342) + New Polarization: (-0.645105,0.441062,0.623942) *** FresnelRefraction *** Track (trackID 734, parentID 1) is processed with stopping code 2 -### pop requested out of 148 stacked tracks. - -** Photon absorbed! ** -Track (trackID 733, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. +### pop requested out of 272 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.815646,-0.578542,-0.00335078) - Old Polarization: (-0.463381,-0.649799,-0.602527) - New Momentum Direction: (0.618581,-0.785708,-0.00455064) - New Polarization: (-0.694828,-0.544309,-0.470044) + Old Momentum Direction: (0.876327,0.382532,0.29278) + Old Polarization: (-0.480137,0.644444,0.595113) + New Momentum Direction: (0.756509,0.51933,0.397481) + New Polarization: (-0.652869,0.564246,0.505361) + *** FresnelRefraction *** +Track (trackID 733, parentID 1) is processed with stopping code 2 +### pop requested out of 271 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.618963,0.0405849,-0.784371) +Old Polarization: (-0.762434,0.270887,-0.587635) +New Polarization: (-0.319043,0.286212,-0.90349) +Polarization Change: (-0.319043,0.286212,-0.90349) +New Momentum Direction: (0.936413,-0.0517517,-0.347063) +Momentum Change: (0.936413,-0.0517517,-0.347063) + Photon at Boundary! + Old Momentum Direction: (0.936413,-0.0517517,-0.347063) + Old Polarization: (-0.319043,0.286212,-0.90349) + New Momentum Direction: (0.879803,-0.0701041,-0.47014) + New Polarization: (-0.450737,0.191027,-0.871978) *** FresnelRefraction *** Track (trackID 732, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. +### pop requested out of 270 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.871474,0.107424,0.478533) +Old Polarization: (-0.484065,0.345237,0.804047) +New Polarization: (-0.257367,0.385126,0.88625) +Polarization Change: (-0.257367,0.385126,0.88625) +New Momentum Direction: (0.966194,0.117011,0.229734) +Momentum Change: (0.966194,0.117011,0.229734) Photon at Boundary! - Old Momentum Direction: (0.522546,-0.541728,0.65839) - Old Polarization: (-0.783835,-0.609075,0.120956) - New Momentum Direction: (0.522546,-0.541728,-0.65839) - New Polarization: (0.783835,0.609075,0.120956) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.522546,-0.541728,-0.65839) - Old Polarization: (0.783835,0.609075,0.120956) - New Momentum Direction: (0.522546,0.541728,-0.65839) - New Polarization: (-0.783835,0.609075,-0.120956) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.522546,0.541728,-0.65839) - Old Polarization: (-0.783835,0.609075,-0.120956) - New Momentum Direction: (-0.522546,0.541728,-0.65839) - New Polarization: (-0.783835,-0.609075,0.120956) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.966194,0.117011,0.229734) + Old Polarization: (-0.257367,0.385126,0.88625) + New Momentum Direction: (0.937229,0.158266,0.310731) + New Polarization: (-0.348384,0.386206,0.854092) + *** FresnelRefraction *** Track (trackID 731, parentID 1) is processed with stopping code 2 -### pop requested out of 145 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.584355,0.643132,0.494884) - Old Polarization: (-0.717514,0.694359,-0.0551278) - New Momentum Direction: (0.584355,-0.643132,0.494884) - New Polarization: (0.717514,0.694359,0.0551278) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.584355,-0.643132,0.494884) - Old Polarization: (0.717514,0.694359,0.0551278) - New Momentum Direction: (-0.584355,-0.643132,0.494884) - New Polarization: (0.717514,-0.694359,-0.0551278) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.584355,-0.643132,0.494884) - Old Polarization: (0.717514,-0.694359,-0.0551278) - New Momentum Direction: (-0.584355,-0.643132,-0.494884) - New Polarization: (-0.717514,0.694359,-0.0551278) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.584355,-0.643132,-0.494884) - Old Polarization: (-0.717514,0.694359,-0.0551278) - New Momentum Direction: (-0.584355,0.643132,-0.494884) - New Polarization: (0.717514,0.694359,0.0551278) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.584355,0.643132,-0.494884) - Old Polarization: (0.717514,0.694359,0.0551278) - New Momentum Direction: (0.584355,0.643132,-0.494884) - New Polarization: (0.717514,-0.694359,-0.0551278) - *** TotalInternalReflection *** +### pop requested out of 269 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.838147,-0.13852,0.527562) +Old Polarization: (-0.522435,0.0740887,0.849454) +New Polarization: (-0.0275487,-0.662108,0.748902) +Polarization Change: (-0.0275487,-0.662108,0.748902) +New Momentum Direction: (0.633221,-0.59126,-0.499443) +Momentum Change: (0.633221,-0.59126,-0.499443) +Scattering Photon! +Old Momentum Direction: (0.633221,-0.59126,-0.499443) +Old Polarization: (-0.0275487,-0.662108,0.748902) +New Polarization: (-0.121358,-0.340995,0.932199) +Polarization Change: (-0.121358,-0.340995,0.932199) +New Momentum Direction: (0.226942,-0.923797,-0.308378) +Momentum Change: (0.226942,-0.923797,-0.308378) ** Photon absorbed! ** Track (trackID 730, parentID 1) is processed with stopping code 2 -### pop requested out of 144 stacked tracks. +### pop requested out of 268 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.403279,0.0635712,0.912866) - Old Polarization: (-0.914799,0.0525959,0.400471) - New Momentum Direction: (0.547362,0.0862837,0.832436) - New Polarization: (0.791697,0.269078,-0.548465) + Old Momentum Direction: (0.758395,-0.506788,0.409882) + Old Polarization: (-0.60937,-0.328118,0.721808) + New Momentum Direction: (0.463864,-0.688816,0.557102) + New Polarization: (-0.857501,-0.191138,0.477659) *** FresnelRefraction *** Track (trackID 729, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. +### pop requested out of 267 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.477863,-0.427028,0.767655) - Old Polarization: (-0.835681,-0.490306,0.247464) - New Momentum Direction: (0.64518,-0.576546,0.501336) - New Polarization: (-0.378234,-0.811145,-0.446074) + Old Momentum Direction: (0.592709,-0.122284,-0.79608) + Old Polarization: (-0.791928,0.0916583,-0.603696) + New Momentum Direction: (0.801313,-0.165323,-0.574949) + New Polarization: (0.552381,-0.164582,0.817183) *** FresnelRefraction *** Track (trackID 728, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. +### pop requested out of 266 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.425298,0.288407,0.857871) - Old Polarization: (-0.891091,0.299288,0.34115) - New Momentum Direction: (0.576859,0.391185,0.717083) - New Polarization: (0.108735,0.833284,-0.542047) + Old Momentum Direction: (0.875911,0.383111,0.293268) + Old Polarization: (-0.480895,0.644139,0.594832) + New Momentum Direction: (0.75517,0.520527,0.398458) + New Polarization: (-0.654416,0.563234,0.504487) *** FresnelRefraction *** Track (trackID 727, parentID 1) is processed with stopping code 2 -### pop requested out of 141 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.882644,0.432732,-0.183528) - Old Polarization: (-0.390046,0.456403,-0.799725) - New Momentum Direction: (0.769799,0.587622,-0.249218) - New Polarization: (-0.574289,0.467232,-0.672225) - *** FresnelRefraction *** -Track (trackID 726, parentID 1) is processed with stopping code 2 -### pop requested out of 140 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.664384,0.684539,0.3) - Old Polarization: (-0.628783,0.728924,-0.270743) - New Momentum Direction: (0.903843,0.128457,0.408127) - New Polarization: (0.114124,-0.99169,0.0593898) - *** FresnelRefraction *** -Track (trackID 725, parentID 1) is processed with stopping code 2 -### pop requested out of 139 stacked tracks. +### pop requested out of 265 stacked tracks. ** Photon absorbed! ** -Track (trackID 724, parentID 1) is processed with stopping code 2 -### pop requested out of 138 stacked tracks. +Track (trackID 726, parentID 1) is processed with stopping code 2 +### pop requested out of 264 stacked tracks. + +** Photon absorbed! ** +Track (trackID 725, parentID 1) is processed with stopping code 2 +### pop requested out of 263 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.947245,-0.0433495,-0.317565) - Old Polarization: (-0.319851,-0.0643507,-0.94528) - New Momentum Direction: (0.900164,-0.058909,-0.431549) - New Polarization: (-0.435073,-0.0752019,-0.897249) + Old Momentum Direction: (0.769168,-0.486695,0.414136) + Old Polarization: (-0.596515,-0.314337,0.738486) + New Momentum Direction: (0.508844,-0.655626,0.557881) + New Polarization: (-0.831391,-0.206163,0.516028) + *** FresnelRefraction *** +Track (trackID 724, parentID 1) is processed with stopping code 2 +### pop requested out of 262 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.877548,0.26185,0.401676) + Old Polarization: (-0.479123,0.511569,0.713259) + New Momentum Direction: (0.758648,0.355787,0.545774) + New Polarization: (-0.651244,0.437687,0.619929) *** FresnelRefraction *** Track (trackID 723, parentID 1) is processed with stopping code 2 -### pop requested out of 137 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.733338,0.663851,0.146686) - Old Polarization: (-0.55348,0.708247,-0.438231) - New Momentum Direction: (-0.733338,0.663851,0.146686) - New Polarization: (-0.321035,-0.528318,0.786013) - *** FresnelReflection *** +### pop requested out of 261 stacked tracks. ** Photon absorbed! ** Track (trackID 722, parentID 1) is processed with stopping code 2 -### pop requested out of 136 stacked tracks. +### pop requested out of 260 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.410155,0.0721464,0.909158) - Old Polarization: (-0.911586,0.0630145,0.406251) - New Momentum Direction: (0.553033,0.0972786,0.827461) - New Polarization: (0.775894,0.30171,-0.554039) - *** FresnelRefraction *** + Old Momentum Direction: (0.558772,-0.570463,-0.601952) + Old Polarization: (-0.829058,-0.402523,-0.388122) + New Momentum Direction: (0.558772,-0.570463,0.601952) + New Polarization: (0.829058,0.402523,-0.388122) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.558772,-0.570463,0.601952) + Old Polarization: (0.829058,0.402523,-0.388122) + New Momentum Direction: (0.558772,0.570463,0.601952) + New Polarization: (-0.829058,0.402523,0.388122) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.558772,0.570463,0.601952) + Old Polarization: (-0.829058,0.402523,0.388122) + New Momentum Direction: (-0.558772,0.570463,0.601952) + New Polarization: (-0.829058,-0.402523,-0.388122) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.558772,0.570463,0.601952) + Old Polarization: (-0.829058,-0.402523,-0.388122) + New Momentum Direction: (-0.558772,0.570463,-0.601952) + New Polarization: (0.829058,0.402523,-0.388122) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.558772,0.570463,-0.601952) + Old Polarization: (0.829058,0.402523,-0.388122) + New Momentum Direction: (-0.558772,-0.570463,-0.601952) + New Polarization: (-0.829058,0.402523,0.388122) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.558772,-0.570463,-0.601952) + Old Polarization: (-0.829058,0.402523,0.388122) + New Momentum Direction: (0.558772,-0.570463,-0.601952) + New Polarization: (-0.829058,-0.402523,-0.388122) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 721, parentID 1) is processed with stopping code 2 -### pop requested out of 135 stacked tracks. +### pop requested out of 259 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.473558,-0.435511,0.765555) - Old Polarization: (-0.83719,-0.49258,0.23765) - New Momentum Direction: (0.643601,-0.591892,0.485223) - New Polarization: (-0.407151,-0.801607,-0.437783) - *** FresnelRefraction *** + Old Momentum Direction: (0.55751,-0.570955,-0.602654) + Old Polarization: (-0.829909,-0.401528,-0.387334) + New Momentum Direction: (0.55751,-0.570955,0.602654) + New Polarization: (0.829909,0.401528,-0.387334) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.55751,-0.570955,0.602654) + Old Polarization: (0.829909,0.401528,-0.387334) + New Momentum Direction: (0.55751,0.570955,0.602654) + New Polarization: (-0.829909,0.401528,0.387334) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.55751,0.570955,0.602654) + Old Polarization: (-0.829909,0.401528,0.387334) + New Momentum Direction: (-0.55751,0.570955,0.602654) + New Polarization: (-0.829909,-0.401528,-0.387334) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 720, parentID 1) is processed with stopping code 2 -### pop requested out of 134 stacked tracks. +### pop requested out of 258 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.451487,0.399266,0.797964) - Old Polarization: (-0.863117,0.422184,0.277108) - New Momentum Direction: (0.611538,0.540805,0.577539) - New Polarization: (-0.277101,0.8301,-0.483889) + Old Momentum Direction: (0.835066,-0.177395,0.520765) + Old Polarization: (-0.524188,0.0307969,0.851046) + New Momentum Direction: (0.668248,-0.239882,0.704203) + New Polarization: (-0.725339,0.000254232,0.688391) *** FresnelRefraction *** Track (trackID 719, parentID 1) is processed with stopping code 2 -### pop requested out of 133 stacked tracks. +### pop requested out of 257 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.492205,0.519895,0.698171) - Old Polarization: (-0.8173,0.552052,0.165102) - New Momentum Direction: (0.492205,0.519895,-0.698171) - New Polarization: (0.648928,-0.753738,-0.103785) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.492205,0.519895,-0.698171) - Old Polarization: (0.648928,-0.753738,-0.103785) - New Momentum Direction: (0.492205,-0.519895,-0.698171) - New Polarization: (-0.648928,-0.753738,0.103785) + Old Momentum Direction: (0.55494,-0.592038,-0.584409) + Old Polarization: (-0.831327,-0.420534,-0.363383) + New Momentum Direction: (0.55494,0.592038,-0.584409) + New Polarization: (0.831327,-0.420534,0.363383) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.492205,-0.519895,-0.698171) - Old Polarization: (-0.648928,-0.753738,0.103785) - New Momentum Direction: (-0.492205,-0.519895,-0.698171) - New Polarization: (-0.648928,0.753738,-0.103785) + Old Momentum Direction: (0.55494,0.592038,-0.584409) + Old Polarization: (0.831327,-0.420534,0.363383) + New Momentum Direction: (0.55494,0.592038,0.584409) + New Polarization: (-0.831327,0.420534,0.363383) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.492205,-0.519895,-0.698171) - Old Polarization: (-0.648928,0.753738,-0.103785) - New Momentum Direction: (-0.492205,-0.519895,0.698171) - New Polarization: (0.766518,-0.638967,0.0645798) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.492205,-0.519895,0.698171) - Old Polarization: (0.766518,-0.638967,0.0645798) - New Momentum Direction: (-0.492205,0.519895,0.698171) - New Polarization: (-0.766518,-0.638967,-0.0645798) + Old Momentum Direction: (0.55494,0.592038,0.584409) + Old Polarization: (-0.831327,0.420534,0.363383) + New Momentum Direction: (-0.55494,0.592038,0.584409) + New Polarization: (-0.831327,-0.420534,-0.363383) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.492205,0.519895,0.698171) - Old Polarization: (-0.766518,-0.638967,-0.0645798) - New Momentum Direction: (0.492205,0.519895,0.698171) - New Polarization: (-0.766518,0.638967,0.0645798) + Old Momentum Direction: (-0.55494,0.592038,0.584409) + Old Polarization: (-0.831327,-0.420534,-0.363383) + New Momentum Direction: (-0.55494,-0.592038,0.584409) + New Polarization: (0.831327,-0.420534,0.363383) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.492205,0.519895,0.698171) - Old Polarization: (-0.766518,0.638967,0.0645798) - New Momentum Direction: (0.492205,0.519895,-0.698171) - New Polarization: (0.698212,-0.714772,-0.0400236) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.492205,0.519895,-0.698171) - Old Polarization: (0.698212,-0.714772,-0.0400236) - New Momentum Direction: (0.492205,-0.519895,-0.698171) - New Polarization: (-0.698212,-0.714772,0.0400236) + Old Momentum Direction: (-0.55494,-0.592038,0.584409) + Old Polarization: (0.831327,-0.420534,0.363383) + New Momentum Direction: (-0.55494,-0.592038,-0.584409) + New Polarization: (-0.831327,0.420534,0.363383) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.492205,-0.519895,-0.698171) - Old Polarization: (-0.698212,-0.714772,0.0400236) - New Momentum Direction: (0.668223,-0.705816,-0.235162) - New Polarization: (-0.709127,-0.699869,0.0855738) + Old Momentum Direction: (-0.55494,-0.592038,-0.584409) + Old Polarization: (-0.831327,0.420534,0.363383) + New Momentum Direction: (0.55494,-0.592038,-0.584409) + New Polarization: (-0.831327,-0.420534,-0.363383) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (0.55494,-0.592038,-0.584409) +Old Polarization: (-0.831327,-0.420534,-0.363383) +New Polarization: (-0.7925,-0.210108,-0.572536) +Polarization Change: (-0.7925,-0.210108,-0.572536) +New Momentum Direction: (0.251151,0.743049,-0.620324) +Momentum Change: (0.251151,0.743049,-0.620324) + Photon at Boundary! + Old Momentum Direction: (0.251151,0.743049,-0.620324) + Old Polarization: (-0.7925,-0.210108,-0.572536) + New Momentum Direction: (0.341562,0.414271,-0.843632) + New Polarization: (-0.763752,-0.400776,-0.506025) *** FresnelRefraction *** Track (trackID 718, parentID 1) is processed with stopping code 2 -### pop requested out of 132 stacked tracks. +### pop requested out of 256 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.941257,0.147783,-0.303637) - Old Polarization: (-0.324357,0.145483,-0.93468) - New Momentum Direction: (0.889238,0.20019,-0.411314) - New Polarization: (-0.447497,0.194205,-0.872944) + Old Momentum Direction: (0.839761,0.541794,-0.0354963) + Old Polarization: (-0.51975,0.821059,0.236055) + New Momentum Direction: (0.6769,0.7345,-0.0481217) + New Polarization: (-0.719518,0.674047,0.167197) *** FresnelRefraction *** Track (trackID 717, parentID 1) is processed with stopping code 2 -### pop requested out of 131 stacked tracks. +### pop requested out of 255 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.557103,-0.539961,-0.630934) + Old Polarization: (-0.830422,-0.36763,-0.418625) + New Momentum Direction: (0.557103,-0.539961,0.630934) + New Polarization: (0.830422,0.36763,-0.418625) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557103,-0.539961,0.630934) + Old Polarization: (0.830422,0.36763,-0.418625) + New Momentum Direction: (-0.557103,-0.539961,0.630934) + New Polarization: (0.830422,-0.36763,0.418625) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557103,-0.539961,0.630934) + Old Polarization: (0.830422,-0.36763,0.418625) + New Momentum Direction: (-0.557103,0.539961,0.630934) + New Polarization: (-0.830422,-0.36763,-0.418625) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 716, parentID 1) is processed with stopping code 2 -### pop requested out of 130 stacked tracks. +### pop requested out of 254 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.401143,-0.00202886,0.916013) - Old Polarization: (-0.915862,-0.0191995,0.401034) - New Momentum Direction: (0.545522,-0.00275909,0.838092) - New Polarization: (0.837868,-0.0215284,-0.545448) - *** FresnelRefraction *** + Old Momentum Direction: (0.559337,-0.486868,-0.670896) + Old Polarization: (-0.82875,-0.311077,-0.465194) + New Momentum Direction: (0.559337,-0.486868,0.670896) + New Polarization: (0.82875,0.311077,-0.465194) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.559337,-0.486868,0.670896) + Old Polarization: (0.82875,0.311077,-0.465194) + New Momentum Direction: (-0.559337,-0.486868,0.670896) + New Polarization: (0.82875,-0.311077,0.465194) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.559337,-0.486868,0.670896) + Old Polarization: (0.82875,-0.311077,0.465194) + New Momentum Direction: (-0.559337,0.486868,0.670896) + New Polarization: (-0.82875,-0.311077,-0.465194) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 715, parentID 1) is processed with stopping code 2 -### pop requested out of 129 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.454595,-0.377608,0.806694) - Old Polarization: (-0.857858,-0.429281,0.282484) - New Momentum Direction: (0.617876,-0.513236,0.595666) - New Polarization: (-0.224668,-0.841236,-0.491779) - *** FresnelRefraction *** +### pop requested out of 253 stacked tracks. + +** Photon absorbed! ** Track (trackID 714, parentID 1) is processed with stopping code 2 -### pop requested out of 128 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.94937,-0.0171182,-0.313694) - Old Polarization: (-0.314122,-0.0360189,-0.948699) - New Momentum Direction: (0.90532,-0.0231429,-0.424099) - New Polarization: (-0.424702,-0.0377917,-0.904544) - *** FresnelRefraction *** +### pop requested out of 252 stacked tracks. + +** Photon absorbed! ** Track (trackID 713, parentID 1) is processed with stopping code 2 -### pop requested out of 127 stacked tracks. +### pop requested out of 251 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.491509,0.520394,0.69829) - Old Polarization: (-0.817714,0.551628,0.164473) - New Momentum Direction: (0.667806,0.707052,0.232621) - New Polarization: (-0.625124,0.702405,-0.340362) + Old Momentum Direction: (0.604387,-0.0804987,-0.792613) + Old Polarization: (-0.780729,0.138305,-0.609372) + New Momentum Direction: (0.812349,-0.108197,-0.573046) + New Polarization: (0.571053,-0.0516958,0.819284) *** FresnelRefraction *** Track (trackID 712, parentID 1) is processed with stopping code 2 -### pop requested out of 126 stacked tracks. - -** Photon absorbed! ** -Track (trackID 711, parentID 1) is processed with stopping code 2 -### pop requested out of 125 stacked tracks. - -** Photon absorbed! ** -Track (trackID 710, parentID 1) is processed with stopping code 2 -### pop requested out of 124 stacked tracks. +### pop requested out of 250 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.45812,-0.356042,0.814469) - Old Polarization: (-0.858797,-0.413687,0.302211) - New Momentum Direction: (0.617132,-0.479624,0.623786) - New Polarization: (-0.146409,-0.848903,-0.507866) + Old Momentum Direction: (0.747325,0.478437,-0.46109) + Old Polarization: (-0.621397,0.748979,-0.229991) + New Momentum Direction: (0.430955,0.649744,-0.626187) + New Polarization: (-0.873974,0.473263,-0.11042) *** FresnelRefraction *** -Track (trackID 709, parentID 1) is processed with stopping code 2 -### pop requested out of 123 stacked tracks. +Track (trackID 711, parentID 1) is processed with stopping code 2 +### pop requested out of 249 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.448404,0.400285,0.799191) - Old Polarization: (-0.864791,0.420344,0.274676) - New Momentum Direction: (0.609265,0.543884,0.577049) - New Polarization: (-0.28252,0.828841,-0.482912) + Old Momentum Direction: (0.860664,0.497445,0.108656) + Old Polarization: (-0.49663,0.77305,0.394654) + New Momentum Direction: (0.723856,0.674058,0.147233) + New Polarization: (-0.681005,0.663761,0.30928) + *** FresnelRefraction *** +Track (trackID 710, parentID 1) is processed with stopping code 2 +### pop requested out of 248 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.558605,-0.596586,-0.576234) + Old Polarization: (-0.828742,-0.429817,-0.35839) + New Momentum Direction: (0.558605,0.596586,-0.576234) + New Polarization: (0.828742,-0.429817,0.35839) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.558605,0.596586,-0.576234) + Old Polarization: (0.828742,-0.429817,0.35839) + New Momentum Direction: (0.558605,0.596586,0.576234) + New Polarization: (-0.828742,0.429817,0.35839) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.558605,0.596586,0.576234) + Old Polarization: (-0.828742,0.429817,0.35839) + New Momentum Direction: (-0.558605,0.596586,0.576234) + New Polarization: (-0.828742,-0.429817,-0.35839) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 709, parentID 1) is processed with stopping code 2 +### pop requested out of 247 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.867501,0.0698673,0.492505) + Old Polarization: (-0.488807,0.303341,0.817956) + New Momentum Direction: (0.739208,0.0945932,0.666801) + New Polarization: (-0.667327,0.236382,0.706257) *** FresnelRefraction *** Track (trackID 708, parentID 1) is processed with stopping code 2 -### pop requested out of 122 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.544743,-0.571754,0.613476) - Old Polarization: (-0.760348,-0.645318,0.0737296) - New Momentum Direction: (0.544743,-0.571754,-0.613476) - New Polarization: (0.760348,0.645318,0.0737296) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.544743,-0.571754,-0.613476) - Old Polarization: (0.760348,0.645318,0.0737296) - New Momentum Direction: (0.544743,0.571754,-0.613476) - New Polarization: (-0.760348,0.645318,-0.0737296) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.544743,0.571754,-0.613476) - Old Polarization: (-0.760348,0.645318,-0.0737296) - New Momentum Direction: (-0.544743,0.571754,-0.613476) - New Polarization: (-0.760348,-0.645318,0.0737296) - *** TotalInternalReflection *** +### pop requested out of 246 stacked tracks. ** Photon absorbed! ** Track (trackID 707, parentID 1) is processed with stopping code 2 -### pop requested out of 121 stacked tracks. +### pop requested out of 245 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.874582,-0.466173,-0.133375) - Old Polarization: (-0.397195,-0.531022,-0.7485) - New Momentum Direction: (0.754635,-0.630834,-0.180486) - New Polarization: (-0.585438,-0.523129,-0.619354) + Old Momentum Direction: (0.630506,0.0788734,-0.772167) + Old Polarization: (-0.750658,0.314992,-0.580769) + New Momentum Direction: (0.850512,0.106395,-0.515082) + New Polarization: (0.451395,0.35498,0.818677) *** FresnelRefraction *** Track (trackID 706, parentID 1) is processed with stopping code 2 -### pop requested out of 120 stacked tracks. +### pop requested out of 244 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.874024,-0.466862,-0.134617) - Old Polarization: (-0.398471,-0.530187,-0.748414) - New Momentum Direction: (0.752658,-0.632637,-0.182417) - New Polarization: (-0.588085,-0.521361,-0.618335) + Old Momentum Direction: (0.620041,0.0475076,-0.783129) + Old Polarization: (-0.761171,0.278379,-0.585768) + New Momentum Direction: (0.840191,0.0643755,-0.538456) + New Polarization: (0.502567,0.280591,0.817738) *** FresnelRefraction *** Track (trackID 705, parentID 1) is processed with stopping code 2 -### pop requested out of 119 stacked tracks. +### pop requested out of 243 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.407932,-0.0408344,0.912099) - Old Polarization: (-0.912128,-0.0621928,0.405161) - New Momentum Direction: (0.551625,-0.0552183,0.832262) - New Polarization: (0.811753,-0.193841,-0.550893) + Old Momentum Direction: (0.57891,-0.224284,-0.783939) + Old Polarization: (-0.807118,-0.0210043,-0.590017) + New Momentum Direction: (0.782788,-0.303271,-0.543387) + New Polarization: (0.413109,-0.399784,0.818238) *** FresnelRefraction *** Track (trackID 704, parentID 1) is processed with stopping code 2 -### pop requested out of 118 stacked tracks. +### pop requested out of 242 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.557098,-0.530248,-0.639124) + Old Polarization: (-0.830446,-0.356993,-0.427687) + New Momentum Direction: (0.557098,-0.530248,0.639124) + New Polarization: (0.830446,0.356993,-0.427687) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557098,-0.530248,0.639124) + Old Polarization: (0.830446,0.356993,-0.427687) + New Momentum Direction: (-0.557098,-0.530248,0.639124) + New Polarization: (0.830446,-0.356993,0.427687) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557098,-0.530248,0.639124) + Old Polarization: (0.830446,-0.356993,0.427687) + New Momentum Direction: (-0.557098,0.530248,0.639124) + New Polarization: (-0.830446,-0.356993,-0.427687) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557098,0.530248,0.639124) + Old Polarization: (-0.830446,-0.356993,-0.427687) + New Momentum Direction: (-0.557098,0.530248,-0.639124) + New Polarization: (0.830446,0.356993,-0.427687) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557098,0.530248,-0.639124) + Old Polarization: (0.830446,0.356993,-0.427687) + New Momentum Direction: (0.557098,0.530248,-0.639124) + New Polarization: (0.830446,-0.356993,0.427687) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557098,0.530248,-0.639124) + Old Polarization: (0.830446,-0.356993,0.427687) + New Momentum Direction: (0.557098,-0.530248,-0.639124) + New Polarization: (-0.830446,-0.356993,-0.427687) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 703, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. - -** Photon absorbed! ** -Track (trackID 702, parentID 1) is processed with stopping code 2 -### pop requested out of 116 stacked tracks. +### pop requested out of 241 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.885375,-0.436157,-0.160871) - Old Polarization: (-0.38591,-0.496621,-0.777458) - New Momentum Direction: (0.776723,-0.590929,-0.217957) - New Polarization: (-0.566469,-0.504128,-0.651896) + Old Momentum Direction: (0.842011,-0.122923,0.525269) + Old Polarization: (-0.517483,0.0910389,0.850837) + New Momentum Direction: (0.681484,-0.166758,0.712581) + New Polarization: (-0.71617,0.0484083,0.696245) + *** FresnelRefraction *** +Track (trackID 702, parentID 1) is processed with stopping code 2 +### pop requested out of 240 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.723148,-0.627575,0.288456) + Old Polarization: (-0.647776,-0.471316,0.598539) + New Momentum Direction: (-0.723148,-0.627575,0.288456) + New Polarization: (-0.516053,0.213346,-0.829562) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.723148,-0.627575,0.288456) + Old Polarization: (-0.516053,0.213346,-0.829562) + New Momentum Direction: (-0.723148,0.627575,0.288456) + New Polarization: (0.516053,0.213346,0.829562) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.723148,0.627575,0.288456) + Old Polarization: (0.516053,0.213346,0.829562) + New Momentum Direction: (-0.723148,0.627575,-0.288456) + New Polarization: (-0.516053,-0.213346,0.829562) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.723148,0.627575,-0.288456) + Old Polarization: (-0.516053,-0.213346,0.829562) + New Momentum Direction: (-0.366569,0.845368,-0.388562) + New Polarization: (0.798,0.5004,0.335852) *** FresnelRefraction *** Track (trackID 701, parentID 1) is processed with stopping code 2 -### pop requested out of 115 stacked tracks. +### pop requested out of 239 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.902394,-0.383134,-0.197215) - Old Polarization: (-0.366093,-0.440243,-0.819855) - New Momentum Direction: (0.812723,-0.518048,-0.266661) - New Polarization: (-0.530927,-0.469943,-0.705174) + Old Momentum Direction: (0.769196,-0.484255,0.416934) + Old Polarization: (-0.596619,-0.310548,0.740004) + New Momentum Direction: (0.507231,-0.653094,0.562302) + New Polarization: (-0.832512,-0.202643,0.515615) *** FresnelRefraction *** Track (trackID 700, parentID 1) is processed with stopping code 2 -### pop requested out of 114 stacked tracks. - -** Photon absorbed! ** -Track (trackID 699, parentID 1) is processed with stopping code 2 -### pop requested out of 113 stacked tracks. +### pop requested out of 238 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.689103,-0.695217,0.204476) +Old Polarization: (-0.684992,-0.532829,0.49687) +New Polarization: (0.591932,-0.27032,-0.759305) +Polarization Change: (0.591932,-0.27032,-0.759305) +New Momentum Direction: (0.398882,0.916872,-0.0154585) +Momentum Change: (0.398882,0.916872,-0.0154585) Photon at Boundary! - Old Momentum Direction: (0.737438,0.661504,0.136374) - Old Polarization: (-0.549092,0.704741,-0.449264) - New Momentum Direction: (0.395865,0.899395,0.185418) - New Polarization: (-0.827701,0.436911,-0.352165) + Old Momentum Direction: (0.398882,0.916872,-0.0154585) + Old Polarization: (0.591932,-0.27032,-0.759305) + New Momentum Direction: (-0.398882,0.916872,-0.0154585) + New Polarization: (0.591932,0.27032,0.759305) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.398882,0.916872,-0.0154585) + Old Polarization: (0.591932,0.27032,0.759305) + New Momentum Direction: (-0.542566,0.83975,-0.0210269) + New Polarization: (-0.682994,-0.426437,0.593019) + *** FresnelRefraction *** +Track (trackID 699, parentID 1) is processed with stopping code 2 +### pop requested out of 237 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.645106,0.175628,-0.743635) + Old Polarization: (-0.733034,0.416907,-0.537447) + New Momentum Direction: (0.87709,0.238785,-0.416766) + New Polarization: (0.242384,0.529066,0.813228) *** FresnelRefraction *** Track (trackID 698, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. +### pop requested out of 236 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.951041,0.0260016,-0.307968) - Old Polarization: (-0.308345,0.0118708,-0.951201) - New Momentum Direction: (0.909635,0.0349484,-0.413936) - New Polarization: (-0.41488,0.0261485,-0.9095) + Old Momentum Direction: (0.602184,-0.0803223,-0.794307) + Old Polarization: (-0.782442,0.138296,-0.607173) + New Momentum Direction: (0.811403,-0.108229,-0.574379) + New Polarization: (0.572323,-0.0523211,0.818357) *** FresnelRefraction *** Track (trackID 697, parentID 1) is processed with stopping code 2 -### pop requested out of 111 stacked tracks. +### pop requested out of 235 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.80107,0.598559,-0.00376438) - Old Polarization: (-0.479318,0.637693,-0.602994) - New Momentum Direction: (0.582413,0.812877,-0.00511224) - New Polarization: (-0.719744,0.512741,-0.468045) + Old Momentum Direction: (0.870976,0.137888,0.47158) + Old Polarization: (-0.486538,0.375726,0.78874) + New Momentum Direction: (0.744157,0.187472,0.641158) + New Polarization: (-0.664623,0.304234,0.682435) *** FresnelRefraction *** Track (trackID 696, parentID 1) is processed with stopping code 2 -### pop requested out of 110 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.5677,0.631967,0.527574) - Old Polarization: (-0.735159,0.677582,-0.020584) - New Momentum Direction: (0.5677,-0.631967,0.527574) - New Polarization: (0.735159,0.677582,0.020584) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.5677,-0.631967,0.527574) - Old Polarization: (0.735159,0.677582,0.020584) - New Momentum Direction: (-0.5677,-0.631967,0.527574) - New Polarization: (0.735159,-0.677582,-0.020584) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.5677,-0.631967,0.527574) - Old Polarization: (0.735159,-0.677582,-0.020584) - New Momentum Direction: (-0.5677,-0.631967,-0.527574) - New Polarization: (-0.735159,0.677582,-0.020584) - *** TotalInternalReflection *** +### pop requested out of 234 stacked tracks. ** Photon absorbed! ** Track (trackID 695, parentID 1) is processed with stopping code 2 -### pop requested out of 109 stacked tracks. +### pop requested out of 233 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.863534,-0.492151,-0.10998) - Old Polarization: (-0.409957,-0.558098,-0.721431) - New Momentum Direction: (0.730147,-0.666842,-0.149018) - New Polarization: (-0.607337,-0.533432,-0.588721) - *** FresnelRefraction *** + Old Momentum Direction: (0.555899,-0.607502,-0.567378) + Old Polarization: (-0.830348,-0.43761,-0.344992) + New Momentum Direction: (0.555899,0.607502,-0.567378) + New Polarization: (0.830348,-0.43761,0.344992) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.555899,0.607502,-0.567378) + Old Polarization: (0.830348,-0.43761,0.344992) + New Momentum Direction: (0.555899,0.607502,0.567378) + New Polarization: (-0.830348,0.43761,0.344992) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.555899,0.607502,0.567378) + Old Polarization: (-0.830348,0.43761,0.344992) + New Momentum Direction: (-0.555899,0.607502,0.567378) + New Polarization: (-0.830348,-0.43761,-0.344992) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.555899,0.607502,0.567378) + Old Polarization: (-0.830348,-0.43761,-0.344992) + New Momentum Direction: (-0.555899,-0.607502,0.567378) + New Polarization: (0.830348,-0.43761,0.344992) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.555899,-0.607502,0.567378) + Old Polarization: (0.830348,-0.43761,0.344992) + New Momentum Direction: (-0.555899,-0.607502,-0.567378) + New Polarization: (-0.830348,0.43761,0.344992) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.555899,-0.607502,-0.567378) + Old Polarization: (-0.830348,0.43761,0.344992) + New Momentum Direction: (0.555899,-0.607502,-0.567378) + New Polarization: (-0.830348,-0.43761,-0.344992) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.555899,-0.607502,-0.567378) + Old Polarization: (-0.830348,-0.43761,-0.344992) + New Momentum Direction: (0.555899,0.607502,-0.567378) + New Polarization: (0.830348,-0.43761,0.344992) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 694, parentID 1) is processed with stopping code 2 -### pop requested out of 108 stacked tracks. +### pop requested out of 232 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.415667,0.208614,0.885269) - Old Polarization: (-0.902807,0.212654,0.373789) - New Momentum Direction: (0.56277,0.282442,0.776863) - New Polarization: (0.399942,0.729453,-0.554928) + Old Momentum Direction: (0.587581,-0.177009,-0.789567) + Old Polarization: (-0.798544,0.0307321,-0.601151) + New Momentum Direction: (0.792091,-0.238617,-0.561831) + New Polarization: (0.49109,-0.297531,0.818723) *** FresnelRefraction *** Track (trackID 693, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. +### pop requested out of 231 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.518208,0.560552,0.645943) - Old Polarization: (-0.790475,0.602257,0.111517) - New Momentum Direction: (0.518208,0.560552,-0.645943) - New Polarization: (0.790475,-0.602257,0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.518208,0.560552,-0.645943) - Old Polarization: (0.790475,-0.602257,0.111517) - New Momentum Direction: (0.518208,-0.560552,-0.645943) - New Polarization: (-0.790475,-0.602257,-0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.518208,-0.560552,-0.645943) - Old Polarization: (-0.790475,-0.602257,-0.111517) - New Momentum Direction: (-0.518208,-0.560552,-0.645943) - New Polarization: (-0.790475,0.602257,0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.518208,-0.560552,-0.645943) - Old Polarization: (-0.790475,0.602257,0.111517) - New Momentum Direction: (-0.518208,-0.560552,0.645943) - New Polarization: (0.790475,-0.602257,0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.518208,-0.560552,0.645943) - Old Polarization: (0.790475,-0.602257,0.111517) - New Momentum Direction: (-0.518208,0.560552,0.645943) - New Polarization: (-0.790475,-0.602257,-0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.518208,0.560552,0.645943) - Old Polarization: (-0.790475,-0.602257,-0.111517) - New Momentum Direction: (0.518208,0.560552,0.645943) - New Polarization: (-0.790475,0.602257,0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.518208,0.560552,0.645943) - Old Polarization: (-0.790475,0.602257,0.111517) - New Momentum Direction: (0.518208,0.560552,-0.645943) - New Polarization: (0.790475,-0.602257,0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.518208,0.560552,-0.645943) - Old Polarization: (0.790475,-0.602257,0.111517) - New Momentum Direction: (0.518208,-0.560552,-0.645943) - New Polarization: (-0.790475,-0.602257,-0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.518208,-0.560552,-0.645943) - Old Polarization: (-0.790475,-0.602257,-0.111517) - New Momentum Direction: (-0.518208,-0.560552,-0.645943) - New Polarization: (-0.790475,0.602257,0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.518208,-0.560552,-0.645943) - Old Polarization: (-0.790475,0.602257,0.111517) - New Momentum Direction: (-0.518208,-0.560552,0.645943) - New Polarization: (0.790475,-0.602257,0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.518208,-0.560552,0.645943) - Old Polarization: (0.790475,-0.602257,0.111517) - New Momentum Direction: (-0.518208,0.560552,0.645943) - New Polarization: (-0.790475,-0.602257,-0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.518208,0.560552,0.645943) - Old Polarization: (-0.790475,-0.602257,-0.111517) - New Momentum Direction: (0.518208,0.560552,0.645943) - New Polarization: (-0.790475,0.602257,0.111517) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.518208,0.560552,0.645943) - Old Polarization: (-0.790475,0.602257,0.111517) - New Momentum Direction: (0.518208,0.560552,-0.645943) - New Polarization: (0.790475,-0.602257,0.111517) - *** TotalInternalReflection *** + Old Momentum Direction: (0.733494,0.452101,-0.507535) + Old Polarization: (-0.636575,0.718663,-0.279815) + New Momentum Direction: (0.382171,0.614661,-0.690027) + New Polarization: (-0.896487,0.427757,-0.115482) + *** FresnelRefraction *** +Track (trackID 692, parentID 1) is processed with stopping code 2 +### pop requested out of 230 stacked tracks. ** Photon absorbed! ** -Track (trackID 692, parentID 1) is processed with stopping code 2 -### pop requested out of 106 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.938358,0.187369,-0.290478) - Old Polarization: (-0.324859,0.190872,-0.926302) - New Momentum Direction: (0.884637,0.252749,-0.391836) - New Polarization: (-0.450478,0.246346,-0.858128) - *** FresnelRefraction *** Track (trackID 691, parentID 1) is processed with stopping code 2 -### pop requested out of 105 stacked tracks. +### pop requested out of 229 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.94046,0.15478,-0.302617) - Old Polarization: (-0.325438,0.153066,-0.933092) - New Momentum Direction: (0.887614,0.209736,-0.410063) - New Polarization: (-0.44978,0.20297,-0.869771) + Old Momentum Direction: (0.871138,0.131379,0.473136) + Old Polarization: (-0.485927,0.369303,0.792143) + New Momentum Direction: (0.745206,0.178414,0.642524) + New Polarization: (-0.663218,0.298516,0.686317) *** FresnelRefraction *** Track (trackID 690, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.945565,-0.120092,-0.302463) - Old Polarization: (-0.318434,-0.149727,-0.936046) - New Momentum Direction: (0.897977,-0.162386,-0.408983) - New Polarization: (-0.434869,-0.185394,-0.881203) - *** FresnelRefraction *** +### pop requested out of 228 stacked tracks. + +** Photon absorbed! ** Track (trackID 689, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. +### pop requested out of 227 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.88865,-0.426518,-0.168476) - Old Polarization: (-0.382286,-0.48607,-0.785871) - New Momentum Direction: (0.78358,-0.577844,-0.22825) - New Polarization: (-0.560131,-0.498095,-0.661933) + Old Momentum Direction: (0.573487,-0.264255,-0.775423) + Old Polarization: (-0.812742,-0.0647761,-0.579012) + New Momentum Direction: (0.77625,-0.357685,-0.519131) + New Polarization: (0.329935,-0.471189,0.818) *** FresnelRefraction *** Track (trackID 688, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. +### pop requested out of 226 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.403396,0.0140098,0.914918) - Old Polarization: (-0.914997,-0.00167647,0.403457) - New Momentum Direction: (0.547249,0.0190058,0.836754) - New Polarization: (0.83529,0.050905,-0.547447) + Old Momentum Direction: (0.72545,-0.613535,0.311924) + Old Polarization: (-0.645282,-0.448618,0.618347) + New Momentum Direction: (0.361287,-0.8312,0.422585) + New Polarization: (-0.905129,-0.203708,0.373155) *** FresnelRefraction *** Track (trackID 687, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. +### pop requested out of 225 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.511665,-0.501705,0.697489) - Old Polarization: (-0.799184,-0.575959,0.171979) - New Momentum Direction: (0.689233,-0.675817,0.261207) - New Polarization: (-0.58782,-0.73234,-0.343724) + Old Momentum Direction: (0.570934,-0.249094,-0.782295) + Old Polarization: (-0.813875,-0.0464984,-0.579176) + New Momentum Direction: (0.776478,-0.338771,-0.531334) + New Polarization: (0.363731,-0.447589,0.816923) *** FresnelRefraction *** Track (trackID 686, parentID 1) is processed with stopping code 2 -### pop requested out of 100 stacked tracks. +### pop requested out of 224 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.456216,-0.35365,0.816577) - Old Polarization: (-0.860271,-0.409979,0.303071) - New Momentum Direction: (0.61528,-0.476953,0.627651) - New Polarization: (-0.138854,-0.849323,-0.509283) - *** FresnelRefraction *** + Old Momentum Direction: (0.554285,-0.541108,-0.632433) + Old Polarization: (-0.832307,-0.365692,-0.416575) + New Momentum Direction: (0.554285,-0.541108,0.632433) + New Polarization: (0.832307,0.365692,-0.416575) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 685, parentID 1) is processed with stopping code 2 -### pop requested out of 99 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.541061,-0.573446,0.615152) -Old Polarization: (-0.763209,-0.64204,0.0727743) -New Polarization: (-0.995908,-0.0107861,0.0897254) -Polarization Change: (-0.995908,-0.0107861,0.0897254) -New Momentum Direction: (-0.0113084,0.999922,-0.00531448) -Momentum Change: (-0.0113084,0.999922,-0.00531448) +### pop requested out of 223 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0113084,0.999922,-0.00531448) - Old Polarization: (-0.995908,-0.0107861,0.0897254) - New Momentum Direction: (-0.0153818,0.999856,-0.00722884) - New Polarization: (-0.999325,-0.0156141,-0.0332476) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.0153818,0.999856,-0.00722884) - Old Polarization: (-0.999325,-0.0156141,-0.0332476) - New Momentum Direction: (-0.0113084,0.999922,-0.00531448) - New Polarization: (-0.995909,-0.0107862,0.0897166) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.0113084,0.999922,-0.00531448) - Old Polarization: (-0.995909,-0.0107862,0.0897166) - New Momentum Direction: (-0.0153818,0.999856,-0.00722884) - New Polarization: (-0.999325,-0.0156141,-0.033255) + Old Momentum Direction: (0.589801,-0.749662,-0.300236) + Old Polarization: (-0.7955,-0.603338,-0.0562441) + New Momentum Direction: (0.79649,-0.448568,-0.405451) + New Polarization: (0.247635,0.853734,-0.458055) *** FresnelRefraction *** Track (trackID 684, parentID 1) is processed with stopping code 2 -### pop requested out of 98 stacked tracks. +### pop requested out of 222 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.920506,0.285012,-0.267276) - Old Polarization: (-0.349349,0.293978,-0.889681) - New Momentum Direction: (0.847224,0.387504,-0.36339) - New Polarization: (-0.499225,0.346894,-0.794002) + Old Momentum Direction: (0.730875,-0.59378,0.336522) + Old Polarization: (-0.639417,-0.423281,0.641855) + New Momentum Direction: (0.373767,-0.806938,0.457329) + New Polarization: (-0.900059,-0.196451,0.388974) *** FresnelRefraction *** Track (trackID 683, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. +### pop requested out of 221 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.950186,0.0258238,-0.310612) - Old Polarization: (-0.310979,0.0115641,-0.950346) - New Momentum Direction: (0.907536,0.0347958,-0.41853) - New Polarization: (-0.419457,0.0256732,-0.907412) + Old Momentum Direction: (0.832611,-0.172442,0.526329) + Old Polarization: (-0.528467,0.0370844,0.848143) + New Momentum Direction: (0.657806,-0.234503,0.715751) + New Polarization: (-0.735198,0.00653664,0.677821) *** FresnelRefraction *** Track (trackID 682, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. +### pop requested out of 220 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.42082,0.27643,0.864) - Old Polarization: (-0.894548,0.28462,0.344637) - New Momentum Direction: (0.572145,0.375833,0.728971) - New Polarization: (0.151156,0.825277,-0.544123) + Old Momentum Direction: (0.704974,0.378945,-0.59951) + Old Polarization: (-0.667718,0.63958,-0.380908) + New Momentum Direction: (0.267241,0.51487,-0.814549) + New Polarization: (-0.939158,0.328449,-0.100514) *** FresnelRefraction *** Track (trackID 681, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 219 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.83998,-0.147816,0.522096) + Old Polarization: (-0.518752,0.063462,0.852566) + New Momentum Direction: (0.67944,-0.199878,0.705981) + New Polarization: (-0.71662,0.0258076,0.696986) + *** FresnelRefraction *** Track (trackID 680, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 218 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.859607,0.00703048,0.510908) + Old Polarization: (-0.498203,0.233536,0.835018) + New Momentum Direction: (0.720749,0.009538,0.69313) + New Polarization: (-0.684119,0.17107,0.709025) + *** FresnelRefraction *** Track (trackID 679, parentID 1) is processed with stopping code 2 -### pop requested out of 93 stacked tracks. +### pop requested out of 217 stacked tracks. ** Photon absorbed! ** Track (trackID 678, parentID 1) is processed with stopping code 2 -### pop requested out of 92 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.819835,0.570629,-0.0474728) - Old Polarization: (-0.459179,0.605646,-0.649883) - New Momentum Direction: (0.62766,0.775808,-0.0645425) - New Polarization: (-0.68892,0.514923,-0.510141) - *** FresnelRefraction *** +### pop requested out of 216 stacked tracks. + +** Photon absorbed! ** Track (trackID 677, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. +### pop requested out of 215 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.815833,0.577903,-0.0211142) - Old Polarization: (-0.460319,0.626871,-0.628601) - New Momentum Direction: (0.627336,0.778229,-0.0284333) - New Polarization: (-0.684279,0.533437,-0.497199) + Old Momentum Direction: (0.641758,0.164725,-0.749007) + Old Polarization: (-0.736546,0.404473,-0.542127) + New Momentum Direction: (0.873245,0.224142,-0.432671) + New Polarization: (0.271624,0.513272,0.814108) *** FresnelRefraction *** Track (trackID 676, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. +### pop requested out of 214 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.420982,0.270025,0.865945) - Old Polarization: (-0.895081,0.278362,0.348346) - New Momentum Direction: (0.571698,0.366697,0.733958) - New Polarization: (0.17552,0.819193,-0.545999) + Old Momentum Direction: (0.580138,-0.709184,-0.400623) + Old Polarization: (-0.807653,-0.564582,-0.170129) + New Momentum Direction: (0.780238,-0.317678,-0.538804) + New Polarization: (-0.0188379,0.849095,-0.527904) *** FresnelRefraction *** Track (trackID 675, parentID 1) is processed with stopping code 2 -### pop requested out of 89 stacked tracks. +### pop requested out of 213 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.492912,0.494735,0.715733) - Old Polarization: (-0.821123,0.536545,0.194617) - New Momentum Direction: (0.662494,0.664944,0.344891) - New Polarization: (-0.553705,0.744811,-0.372381) + Old Momentum Direction: (0.606316,-0.778613,-0.161685) + Old Polarization: (-0.775291,-0.624009,0.0976579) + New Momentum Direction: (0.824588,-0.521251,-0.21989) + New Polarization: (0.483448,0.851116,-0.204647) *** FresnelRefraction *** Track (trackID 674, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. +### pop requested out of 212 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.941934,-0.160474,-0.294973) - Old Polarization: (-0.323106,-0.193899,-0.926286) - New Momentum Direction: (0.890734,-0.217212,-0.399263) - New Polarization: (-0.445057,-0.238454,-0.863171) + Old Momentum Direction: (0.688389,-0.69697,0.200881) + Old Polarization: (-0.685791,-0.535194,0.493212) + New Momentum Direction: (0.936054,-0.221788,0.273153) + New Polarization: (0.048899,0.850787,0.523231) *** FresnelRefraction *** Track (trackID 673, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. +### pop requested out of 211 stacked tracks. ** Photon absorbed! ** Track (trackID 672, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. +### pop requested out of 210 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.94163,-0.145892,-0.303394) - Old Polarization: (-0.326492,-0.17606,-0.928658) - New Momentum Direction: (0.889031,-0.198415,-0.412619) - New Polarization: (-0.45035,-0.216558,-0.866191) + Old Momentum Direction: (0.729266,-0.600572,0.327849) + Old Polarization: (-0.641131,-0.432414,0.63401) + New Momentum Direction: (0.371323,-0.814979,0.444892) + New Polarization: (-0.90101,-0.200536,0.384663) *** FresnelRefraction *** Track (trackID 671, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. +### pop requested out of 209 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.869931,0.451374,0.1987) + Old Polarization: (-0.486773,0.721169,0.492917) + New Momentum Direction: (0.743377,0.612182,0.269489) + New Polarization: (-0.66433,0.628874,0.40396) + *** FresnelRefraction *** +Track (trackID 670, parentID 1) is processed with stopping code 2 +### pop requested out of 208 stacked tracks. ** Photon absorbed! ** -Track (trackID 670, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.75395,-0.639955,0.148378) - Old Polarization: (-0.529803,-0.725879,-0.438643) - New Momentum Direction: (0.461488,-0.864221,0.200376) - New Polarization: (-0.791808,-0.503111,-0.346294) - *** FresnelRefraction *** Track (trackID 669, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. +### pop requested out of 207 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.485982,-0.467435,0.738462) - Old Polarization: (-0.823653,-0.527518,0.208136) - New Momentum Direction: (0.485982,-0.467435,-0.738462) - New Polarization: (0.628193,0.774269,-0.0766857) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.485982,-0.467435,-0.738462) - Old Polarization: (0.628193,0.774269,-0.0766857) - New Momentum Direction: (-0.485982,-0.467435,-0.738462) - New Polarization: (0.628193,-0.774269,0.0766857) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.485982,-0.467435,-0.738462) - Old Polarization: (0.628193,-0.774269,0.0766857) - New Momentum Direction: (-0.485982,0.467435,-0.738462) - New Polarization: (-0.628193,-0.774269,-0.0766857) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.485982,0.467435,-0.738462) - Old Polarization: (-0.628193,-0.774269,-0.0766857) - New Momentum Direction: (-0.660442,0.635237,-0.400362) - New Polarization: (-0.731821,-0.663909,0.153827) + Old Momentum Direction: (0.607657,-0.772865,-0.182844) + Old Polarization: (-0.775394,-0.627135,0.0739271) + New Momentum Direction: (0.821568,-0.513724,-0.24721) + New Polarization: (0.458307,0.853037,-0.249566) *** FresnelRefraction *** Track (trackID 668, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. +### pop requested out of 206 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.402094,-0.0363942,0.914875) - Old Polarization: (-0.914838,-0.0566779,0.399824) - New Momentum Direction: (0.546805,-0.0494922,0.835796) - New Polarization: (0.818994,-0.175759,-0.546221) - *** FresnelRefraction *** -Track (trackID 667, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.859017,0.494417,-0.132821) - Old Polarization: (-0.416141,0.523236,-0.743674) - New Momentum Direction: (0.718451,0.67176,-0.180463) - New Polarization: (-0.618821,0.49881,-0.606835) - *** FresnelRefraction *** -Track (trackID 666, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.407028,-0.0108574,0.913351) - Old Polarization: (-0.913147,-0.0290934,0.406591) - New Momentum Direction: (0.550385,-0.0146814,0.834782) - New Polarization: (0.832809,-0.0612415,-0.550162) - *** FresnelRefraction *** -Track (trackID 665, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.407628,0.145199,0.90153) - Old Polarization: (-0.910328,0.142143,0.388713) - New Momentum Direction: (0.553014,0.196987,0.80955) - New Polarization: (0.606566,0.570931,-0.553277) - *** FresnelRefraction *** -Track (trackID 664, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.937891,0.18618,-0.292743) - Old Polarization: (-0.326545,0.18875,-0.926143) - New Momentum Direction: (0.883281,0.251604,-0.395614) - New Polarization: (-0.453407,0.243663,-0.857351) - *** FresnelRefraction *** -Track (trackID 663, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.737492,-0.651385,0.178335) - Old Polarization: (-0.548641,-0.731837,-0.404237) - New Momentum Direction: (-0.737492,-0.651385,0.178335) - New Polarization: (-0.297641,0.550522,0.779958) + Old Momentum Direction: (0.69685,0.348469,-0.626873) + Old Polarization: (-0.676717,0.609006,-0.413722) + New Momentum Direction: (-0.69685,0.348469,-0.626873) + New Polarization: (-0.624105,-0.725292,0.290595) *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (-0.737492,-0.651385,0.178335) - Old Polarization: (-0.297641,0.550522,0.779958) - New Momentum Direction: (-0.737492,0.651385,0.178335) - New Polarization: (0.297641,0.550522,-0.779958) + Old Momentum Direction: (-0.69685,0.348469,-0.626873) + Old Polarization: (-0.624105,-0.725292,0.290595) + New Momentum Direction: (-0.69685,0.348469,0.626873) + New Polarization: (0.624105,0.725292,0.290595) *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 667, parentID 1) is processed with stopping code 2 +### pop requested out of 205 stacked tracks. + +** Photon absorbed! ** +Track (trackID 666, parentID 1) is processed with stopping code 2 +### pop requested out of 204 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.737492,0.651385,0.178335) - Old Polarization: (0.297641,0.550522,-0.779958) - New Momentum Direction: (-0.401571,0.883321,0.241835) - New Polarization: (0.538969,0.44143,-0.717392) + Old Momentum Direction: (0.577967,-0.244365,-0.778614) + Old Polarization: (-0.808704,-0.0436889,-0.586591) + New Momentum Direction: (0.780298,-0.32991,-0.531314) + New Polarization: (0.372808,-0.436742,0.818701) + *** FresnelRefraction *** +Track (trackID 665, parentID 1) is processed with stopping code 2 +### pop requested out of 203 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.584256,-0.194251,-0.78798) + Old Polarization: (-0.801831,0.0117999,-0.597435) + New Momentum Direction: (0.788561,-0.262178,-0.556268) + New Polarization: (0.465423,-0.336781,0.818511) + *** FresnelRefraction *** +Track (trackID 664, parentID 1) is processed with stopping code 2 +### pop requested out of 202 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.562716,-0.364416,-0.741992) + Old Polarization: (-0.823894,-0.173998,-0.539374) + New Momentum Direction: (0.76312,-0.494197,-0.416434) + New Polarization: (0.0695645,-0.577818,0.813196) + *** FresnelRefraction *** +Track (trackID 663, parentID 1) is processed with stopping code 2 +### pop requested out of 201 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.691899,0.312106,-0.65105) + Old Polarization: (-0.682654,0.576396,-0.449167) + New Momentum Direction: (0.23613,0.420059,-0.876238) + New Polarization: (-0.948766,0.294509,-0.114491) *** FresnelRefraction *** Track (trackID 662, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 200 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.658388,0.2255,-0.718105) + Old Polarization: (-0.718648,0.471967,-0.510678) + New Momentum Direction: (0.894447,0.306351,-0.325751) + New Polarization: (0.0950515,0.581569,0.807925) + *** FresnelRefraction *** Track (trackID 661, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 199 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.849685,0.527104,0.01402) + Old Polarization: (-0.507688,0.810626,0.291785) + New Momentum Direction: (0.70194,0.711984,0.0189375) + New Polarization: (-0.69815,0.682553,0.216119) + *** FresnelRefraction *** Track (trackID 660, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. +### pop requested out of 198 stacked tracks. ** Photon absorbed! ** Track (trackID 659, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. +### pop requested out of 197 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.542763,-0.575268,0.611944) - Old Polarization: (-0.761456,-0.644478,0.06952) - New Momentum Direction: (0.542763,-0.575268,-0.611944) - New Polarization: (0.761456,0.644478,0.06952) + Old Momentum Direction: (0.559651,-0.622565,-0.546995) + Old Polarization: (-0.827361,-0.457637,-0.325642) + New Momentum Direction: (0.559651,0.622565,-0.546995) + New Polarization: (0.827361,-0.457637,0.325642) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.542763,-0.575268,-0.611944) - Old Polarization: (0.761456,0.644478,0.06952) - New Momentum Direction: (0.542763,0.575268,-0.611944) - New Polarization: (-0.761456,0.644478,-0.06952) + Old Momentum Direction: (0.559651,0.622565,-0.546995) + Old Polarization: (0.827361,-0.457637,0.325642) + New Momentum Direction: (-0.559651,0.622565,-0.546995) + New Polarization: (0.827361,0.457637,-0.325642) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.542763,0.575268,-0.611944) - Old Polarization: (-0.761456,0.644478,-0.06952) - New Momentum Direction: (-0.542763,0.575268,-0.611944) - New Polarization: (-0.761456,-0.644478,0.06952) + Old Momentum Direction: (-0.559651,0.622565,-0.546995) + Old Polarization: (0.827361,0.457637,-0.325642) + New Momentum Direction: (-0.559651,0.622565,0.546995) + New Polarization: (-0.827361,-0.457637,-0.325642) *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 658, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. +### pop requested out of 196 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.828582,0.557499,-0.0514479) - Old Polarization: (-0.446523,0.602604,-0.661427) - New Momentum Direction: (0.655971,0.751593,-0.0693594) - New Polarization: (-0.663574,0.53047,-0.527513) + Old Momentum Direction: (0.871189,0.0669866,0.486356) + Old Polarization: (-0.482167,0.303265,0.821916) + New Momentum Direction: (0.751183,0.0900656,0.653921) + New Polarization: (-0.653762,0.2384,0.718165) *** FresnelRefraction *** Track (trackID 657, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. +### pop requested out of 195 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.490539,-0.474339,0.731009) - Old Polarization: (-0.819323,-0.536751,0.201513) - New Momentum Direction: (0.490539,-0.474339,-0.731009) - New Polarization: (0.626887,0.774776,-0.0820699) - *** FresnelReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.574201,-0.221175,-0.788273) + Old Polarization: (-0.810326,-0.016061,-0.585759) + New Momentum Direction: (0.780889,-0.300789,-0.547484) + New Polarization: (0.420015,-0.395923,0.816598) + *** FresnelRefraction *** Track (trackID 656, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. +### pop requested out of 194 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.557027,-0.490216,-0.67038) + Old Polarization: (-0.830327,-0.312502,-0.461411) + New Momentum Direction: (0.557027,-0.490216,0.67038) + New Polarization: (0.830327,0.312502,-0.461411) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557027,-0.490216,0.67038) + Old Polarization: (0.830327,0.312502,-0.461411) + New Momentum Direction: (-0.557027,-0.490216,0.67038) + New Polarization: (0.830327,-0.312502,0.461411) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557027,-0.490216,0.67038) + Old Polarization: (0.830327,-0.312502,0.461411) + New Momentum Direction: (-0.557027,0.490216,0.67038) + New Polarization: (-0.830327,-0.312502,-0.461411) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557027,0.490216,0.67038) + Old Polarization: (-0.830327,-0.312502,-0.461411) + New Momentum Direction: (-0.557027,0.490216,-0.67038) + New Polarization: (0.830327,0.312502,-0.461411) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557027,0.490216,-0.67038) + Old Polarization: (0.830327,0.312502,-0.461411) + New Momentum Direction: (0.557027,0.490216,-0.67038) + New Polarization: (0.830327,-0.312502,0.461411) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557027,0.490216,-0.67038) + Old Polarization: (0.830327,-0.312502,0.461411) + New Momentum Direction: (0.557027,-0.490216,-0.67038) + New Polarization: (-0.830327,-0.312502,-0.461411) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557027,-0.490216,-0.67038) + Old Polarization: (-0.830327,-0.312502,-0.461411) + New Momentum Direction: (0.557027,-0.490216,0.67038) + New Polarization: (0.830327,0.312502,-0.461411) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557027,-0.490216,0.67038) + Old Polarization: (0.830327,0.312502,-0.461411) + New Momentum Direction: (-0.557027,-0.490216,0.67038) + New Polarization: (0.830327,-0.312502,0.461411) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 655, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. +### pop requested out of 193 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.420682,0.202337,0.884356) - Old Polarization: (-0.900846,0.208414,0.380842) - New Momentum Direction: (0.566388,0.272417,0.777813) - New Polarization: (0.423817,0.713151,-0.558386) + Old Momentum Direction: (0.574047,-0.256893,-0.777481) + Old Polarization: (-0.812032,-0.056569,-0.580866) + New Momentum Direction: (0.777213,-0.347812,-0.524372) + New Polarization: (0.346343,-0.459289,0.817985) *** FresnelRefraction *** Track (trackID 654, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. +### pop requested out of 192 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.705199,-0.660729,0.25716) - Old Polarization: (-0.583872,-0.746955,-0.318045) - New Momentum Direction: (-0.705199,-0.660729,0.25716) - New Polarization: (-0.439324,0.691892,0.572957) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.705199,-0.660729,0.25716) - Old Polarization: (-0.439324,0.691892,0.572957) - New Momentum Direction: (-0.705199,0.660729,0.25716) - New Polarization: (0.439324,0.691892,-0.572957) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.705199,0.660729,0.25716) - Old Polarization: (0.439324,0.691892,-0.572957) - New Momentum Direction: (-0.705199,0.660729,-0.25716) - New Polarization: (-0.439324,-0.691892,-0.572957) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.705199,0.660729,-0.25716) - Old Polarization: (-0.439324,-0.691892,-0.572957) - New Momentum Direction: (0.705199,0.660729,-0.25716) - New Polarization: (0.279715,0.0740176,0.957226) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.705199,0.660729,-0.25716) - Old Polarization: (0.279715,0.0740176,0.957226) - New Momentum Direction: (0.705199,-0.660729,-0.25716) - New Polarization: (-0.279715,0.0740176,-0.957226) - *** TotalInternalReflection *** + Old Momentum Direction: (0.800207,0.545931,-0.248252) + Old Polarization: (-0.563093,0.82639,0.0022595) + New Momentum Direction: (0.582775,0.739742,-0.336384) + New Polarization: (-0.786873,0.617084,-0.00620256) + *** FresnelRefraction *** +Track (trackID 653, parentID 1) is processed with stopping code 2 +### pop requested out of 191 stacked tracks. ** Photon absorbed! ** -Track (trackID 653, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.872187,0.463209,-0.157247) - Old Polarization: (-0.400584,0.491834,-0.773067) - New Momentum Direction: (0.748619,0.627812,-0.213125) - New Polarization: (-0.591736,0.487705,-0.641867) - *** FresnelRefraction *** Track (trackID 652, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. +### pop requested out of 190 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.822145,0.566778,-0.0532987) - Old Polarization: (-0.456795,0.600927,-0.655915) - New Momentum Direction: (0.632854,0.77087,-0.0724912) - New Polarization: (-0.685388,0.514189,-0.515609) + Old Momentum Direction: (0.631935,0.0740512,-0.771476) + Old Polarization: (-0.749676,0.310889,-0.584238) + New Momentum Direction: (0.850159,0.0996232,-0.517015) + New Polarization: (0.457815,0.345142,0.819319) *** FresnelRefraction *** Track (trackID 651, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.944595,-0.140093,-0.296841) - Old Polarization: (-0.318487,-0.172383,-0.932121) - New Momentum Direction: (0.896449,-0.189136,-0.400757) - New Polarization: (-0.435887,-0.213327,-0.874353) - *** FresnelRefraction *** -Track (trackID 650, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.947992,-0.0895575,-0.305436) - Old Polarization: (-0.314532,-0.116451,-0.942077) - New Momentum Direction: (0.90302,-0.120874,-0.412243) - New Polarization: (-0.426828,-0.143628,-0.892854) - *** FresnelRefraction *** -Track (trackID 649, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.92827,-0.261286,-0.26466) - Old Polarization: (-0.339323,-0.303731,-0.890285) - New Momentum Direction: (0.863495,-0.354339,-0.358915) - New Polarization: (-0.479347,-0.355255,-0.802509) - *** FresnelRefraction *** -Track (trackID 648, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. +### pop requested out of 189 stacked tracks. ** Photon absorbed! ** -Track (trackID 647, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. +Track (trackID 650, parentID 1) is processed with stopping code 2 +### pop requested out of 188 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.909849,0.336215,-0.243177) - Old Polarization: (-0.360535,0.35046,-0.864403) - New Momentum Direction: (0.82597,0.456762,-0.330366) - New Polarization: (-0.520982,0.394707,-0.756825) + Old Momentum Direction: (0.780909,-0.430635,0.452476) + Old Polarization: (-0.584286,-0.24743,0.772909) + New Momentum Direction: (0.532756,-0.583424,0.613015) + New Polarization: (-0.818317,-0.17052,0.54889) + *** FresnelRefraction *** +Track (trackID 649, parentID 1) is processed with stopping code 2 +### pop requested out of 187 stacked tracks. + +** Photon absorbed! ** +Track (trackID 648, parentID 1) is processed with stopping code 2 +### pop requested out of 186 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.877689,0.365806,0.309593) + Old Polarization: (-0.478251,0.62731,0.61462) + New Momentum Direction: (0.759981,0.496116,0.419879) + New Polarization: (-0.649253,0.549679,0.525664) + *** FresnelRefraction *** +Track (trackID 647, parentID 1) is processed with stopping code 2 +### pop requested out of 185 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.593934,-0.103268,-0.797858) + Old Polarization: (-0.790006,0.112628,-0.602666) + New Momentum Direction: (0.804461,-0.139873,-0.577302) + New Polarization: (0.565749,-0.115769,0.816411) *** FresnelRefraction *** Track (trackID 646, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.608241,0.660084,0.440831) - Old Polarization: (-0.691136,0.713544,-0.114832) - New Momentum Direction: (0.608241,-0.660084,0.440831) - New Polarization: (0.691136,0.713544,0.114832) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.608241,-0.660084,0.440831) - Old Polarization: (0.691136,0.713544,0.114832) - New Momentum Direction: (-0.608241,-0.660084,0.440831) - New Polarization: (0.691136,-0.713544,-0.114832) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.608241,-0.660084,0.440831) - Old Polarization: (0.691136,-0.713544,-0.114832) - New Momentum Direction: (-0.608241,-0.660084,-0.440831) - New Polarization: (-0.691136,0.713544,-0.114832) - *** TotalInternalReflection *** +### pop requested out of 184 stacked tracks. ** Photon absorbed! ** Track (trackID 645, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. +### pop requested out of 183 stacked tracks. ** Photon absorbed! ** Track (trackID 644, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 182 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.739739,-0.568662,0.359735) + Old Polarization: (-0.629697,-0.396563,0.667996) + New Momentum Direction: (0.406048,-0.772295,0.488554) + New Polarization: (-0.885752,-0.201047,0.418358) + *** FresnelRefraction *** Track (trackID 643, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 181 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.786254,0.532609,-0.31326) +Old Polarization: (-0.578318,0.812845,-0.0695156) +New Polarization: (0.206995,-0.787065,0.581103) +Polarization Change: (0.206995,-0.787065,0.581103) +New Momentum Direction: (0.687711,-0.305405,-0.658621) +Momentum Change: (0.687711,-0.305405,-0.658621) + Photon at Boundary! + Old Momentum Direction: (0.687711,-0.305405,-0.658621) + Old Polarization: (0.206995,-0.787065,0.581103) + New Momentum Direction: (0.183456,-0.413537,-0.891813) + New Polarization: (-0.42511,-0.851368,0.307333) + *** FresnelRefraction *** Track (trackID 642, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 180 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.566744,-0.397548,-0.721635) + Old Polarization: (-0.822109,-0.215249,-0.527072) + New Momentum Direction: (0.763231,-0.535375,-0.361735) + New Polarization: (-0.0286287,-0.587324,0.808846) + *** FresnelRefraction *** Track (trackID 641, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. +### pop requested out of 179 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.900694,-0.386821,-0.197788) - Old Polarization: (-0.369316,-0.441935,-0.817496) - New Momentum Direction: (0.808211,-0.524327,-0.268098) - New Polarization: (-0.53709,-0.469588,-0.70073) - *** FresnelRefraction *** -Track (trackID 640, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. + Old Momentum Direction: (0.556133,-0.587458,-0.587885) + Old Polarization: (-0.8306,-0.417246,-0.368796) + New Momentum Direction: (0.556133,-0.587458,0.587885) + New Polarization: (0.8306,0.417246,-0.368796) + *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.942523,-0.153106,-0.297001) - Old Polarization: (-0.322629,-0.185675,-0.928135) - New Momentum Direction: (0.891814,-0.207293,-0.402116) - New Polarization: (-0.443835,-0.22874,-0.866423) - *** FresnelRefraction *** -Track (trackID 639, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. + Old Momentum Direction: (0.556133,-0.587458,0.587885) + Old Polarization: (0.8306,0.417246,-0.368796) + New Momentum Direction: (0.556133,0.587458,0.587885) + New Polarization: (-0.8306,0.417246,0.368796) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.556133,0.587458,0.587885) + Old Polarization: (-0.8306,0.417246,0.368796) + New Momentum Direction: (-0.556133,0.587458,0.587885) + New Polarization: (-0.8306,-0.417246,-0.368796) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.556133,0.587458,0.587885) + Old Polarization: (-0.8306,-0.417246,-0.368796) + New Momentum Direction: (-0.556133,0.587458,-0.587885) + New Polarization: (0.8306,0.417246,-0.368796) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.556133,0.587458,-0.587885) + Old Polarization: (0.8306,0.417246,-0.368796) + New Momentum Direction: (-0.556133,-0.587458,-0.587885) + New Polarization: (-0.8306,0.417246,0.368796) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.556133,-0.587458,-0.587885) + Old Polarization: (-0.8306,0.417246,0.368796) + New Momentum Direction: (0.556133,-0.587458,-0.587885) + New Polarization: (-0.8306,-0.417246,-0.368796) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 638, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. +Track (trackID 640, parentID 1) is processed with stopping code 2 +### pop requested out of 178 stacked tracks. + +** Photon absorbed! ** +Track (trackID 639, parentID 1) is processed with stopping code 2 +### pop requested out of 177 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.635871,0.673766,0.37644) - Old Polarization: (-0.660468,0.727386,-0.186259) - New Momentum Direction: (0.859586,0.0463941,0.50888) - New Polarization: (-0.0119114,-0.99378,0.110722) + Old Momentum Direction: (0.678283,0.295259,-0.672871) + Old Polarization: (-0.69694,0.548655,-0.461793) + New Momentum Direction: (0.0659956,0.400945,-0.913722) + New Polarization: (-0.980033,0.198178,0.0161763) + *** FresnelRefraction *** +Track (trackID 638, parentID 1) is processed with stopping code 2 +### pop requested out of 176 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.844301,-0.128519,0.52023) + Old Polarization: (-0.51332,0.0846932,0.854008) + New Momentum Direction: (0.690805,-0.173409,0.701939) + New Polarization: (-0.706805,0.0426259,0.706124) *** FresnelRefraction *** Track (trackID 637, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.939802,0.182844,-0.288687) - Old Polarization: (-0.321523,0.187012,-0.928251) - New Momentum Direction: (-0.939802,0.182844,-0.288687) - New Polarization: (0.302321,0.83869,-0.452991) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.939802,0.182844,-0.288687) - Old Polarization: (0.302321,0.83869,-0.452991) - New Momentum Direction: (-0.888062,0.245985,-0.388378) - New Polarization: (0.428536,0.748801,-0.505622) - *** FresnelRefraction *** -Track (trackID 636, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. +### pop requested out of 175 stacked tracks. ** Photon absorbed! ** -Track (trackID 635, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. +Track (trackID 636, parentID 1) is processed with stopping code 2 +### pop requested out of 174 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.438089,-0.299079,0.847721) - Old Polarization: (-0.877727,-0.345932,0.33155) - New Momentum Direction: (0.593523,-0.405192,0.695378) - New Polarization: (0.0520203,-0.842898,-0.535552) + Old Momentum Direction: (0.794552,-0.373188,0.478976) + Old Polarization: (-0.569382,-0.183902,0.801239) + New Momentum Direction: (0.567929,-0.50587,0.64927) + New Polarization: (-0.796612,-0.139405,0.588197) *** FresnelRefraction *** +Track (trackID 635, parentID 1) is processed with stopping code 2 +### pop requested out of 173 stacked tracks. + +** Photon absorbed! ** Track (trackID 634, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. +### pop requested out of 172 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.560021,-0.581342,-0.590269) + Old Polarization: (-0.828052,-0.415611,-0.376294) + New Momentum Direction: (0.560021,-0.581342,0.590269) + New Polarization: (0.828052,0.415611,-0.376294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.560021,-0.581342,0.590269) + Old Polarization: (0.828052,0.415611,-0.376294) + New Momentum Direction: (0.560021,0.581342,0.590269) + New Polarization: (-0.828052,0.415611,0.376294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.560021,0.581342,0.590269) + Old Polarization: (-0.828052,0.415611,0.376294) + New Momentum Direction: (-0.560021,0.581342,0.590269) + New Polarization: (-0.828052,-0.415611,-0.376294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.560021,0.581342,0.590269) + Old Polarization: (-0.828052,-0.415611,-0.376294) + New Momentum Direction: (-0.560021,0.581342,-0.590269) + New Polarization: (0.828052,0.415611,-0.376294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.560021,0.581342,-0.590269) + Old Polarization: (0.828052,0.415611,-0.376294) + New Momentum Direction: (-0.560021,-0.581342,-0.590269) + New Polarization: (-0.828052,0.415611,0.376294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.560021,-0.581342,-0.590269) + Old Polarization: (-0.828052,0.415611,0.376294) + New Momentum Direction: (0.560021,-0.581342,-0.590269) + New Polarization: (-0.828052,-0.415611,-0.376294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.560021,-0.581342,-0.590269) + Old Polarization: (-0.828052,-0.415611,-0.376294) + New Momentum Direction: (0.560021,-0.581342,0.590269) + New Polarization: (0.828052,0.415611,-0.376294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.560021,-0.581342,0.590269) + Old Polarization: (0.828052,0.415611,-0.376294) + New Momentum Direction: (0.560021,0.581342,0.590269) + New Polarization: (-0.828052,0.415611,0.376294) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.560021,0.581342,0.590269) + Old Polarization: (-0.828052,0.415611,0.376294) + New Momentum Direction: (-0.560021,0.581342,0.590269) + New Polarization: (-0.828052,-0.415611,-0.376294) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 633, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. +### pop requested out of 171 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.486128,0.503503,0.714258) - Old Polarization: (-0.824419,0.535328,0.183734) - New Momentum Direction: (0.486128,0.503503,-0.714258) - New Polarization: (0.646853,-0.756885,-0.0933008) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.486128,0.503503,-0.714258) - Old Polarization: (0.646853,-0.756885,-0.0933008) - New Momentum Direction: (0.486128,-0.503503,-0.714258) - New Polarization: (-0.646853,-0.756885,0.0933008) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.486128,-0.503503,-0.714258) - Old Polarization: (-0.646853,-0.756885,0.0933008) - New Momentum Direction: (-0.486128,-0.503503,-0.714258) - New Polarization: (-0.646853,0.756885,-0.0933008) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.871634,0.141941,0.469156) + Old Polarization: (-0.485581,0.380537,0.787021) + New Momentum Direction: (0.745961,0.192858,0.637454) + New Polarization: (-0.662755,0.309183,0.682027) + *** FresnelRefraction *** Track (trackID 632, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. +### pop requested out of 170 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.94871,0.00185379,-0.316142) - Old Polarization: (-0.31608,-0.0150296,-0.948613) - New Momentum Direction: (0.90368,0.00251089,-0.428202) - New Polarization: (-0.42816,-0.00979491,-0.90365) + Old Momentum Direction: (0.828971,0.547936,-0.112129) + Old Polarization: (-0.530594,0.833864,0.152122) + New Momentum Direction: (0.655285,0.740045,-0.151442) + New Polarization: (-0.734802,0.670969,0.0993257) *** FresnelRefraction *** Track (trackID 631, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. +### pop requested out of 169 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.940042,0.152774,-0.304928) - Old Polarization: (-0.327055,0.150229,-0.932988) - New Momentum Direction: (0.886362,0.207394,-0.413945) - New Polarization: (-0.452563,0.199388,-0.869156) + Old Momentum Direction: (0.8747,0.167291,0.454877) + Old Polarization: (-0.481323,0.409852,0.774822) + New Momentum Direction: (0.753929,0.226761,0.616579) + New Polarization: (-0.654587,0.338923,0.675757) *** FresnelRefraction *** Track (trackID 630, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.500304,-0.502668,0.704997) - Old Polarization: (-0.807544,-0.564627,0.170494) - New Momentum Direction: (0.500304,-0.502668,-0.704997) - New Polarization: (0.631711,0.76875,-0.0998276) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.500304,-0.502668,-0.704997) - Old Polarization: (0.631711,0.76875,-0.0998276) - New Momentum Direction: (0.500304,0.502668,-0.704997) - New Polarization: (-0.631711,0.76875,0.0998276) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.500304,0.502668,-0.704997) - Old Polarization: (-0.631711,0.76875,0.0998276) - New Momentum Direction: (-0.500304,0.502668,-0.704997) - New Polarization: (-0.631711,-0.76875,-0.0998276) - *** TotalInternalReflection *** +### pop requested out of 168 stacked tracks. ** Photon absorbed! ** Track (trackID 629, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. +### pop requested out of 167 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.476514,-0.441361,0.760352) - Old Polarization: (-0.834306,-0.49975,0.232772) - New Momentum Direction: (0.64715,-0.599409,0.471068) - New Polarization: (-0.424073,-0.796523,-0.430945) + Old Momentum Direction: (0.761361,0.497938,-0.415196) + Old Polarization: (-0.605732,0.774633,-0.181749) + New Momentum Direction: (0.478852,0.674253,-0.562213) + New Polarization: (-0.849,0.518624,-0.101138) *** FresnelRefraction *** Track (trackID 628, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. +### pop requested out of 166 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.741358,0.657369,0.13511) - Old Polarization: (-0.544166,0.706644,-0.452259) - New Momentum Direction: (0.417396,0.890118,0.182947) - New Polarization: (-0.816014,0.455728,-0.355574) - *** FresnelRefraction *** -Track (trackID 627, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.924648,-0.293448,-0.242724) - Old Polarization: (-0.339068,-0.344205,-0.875531) - New Momentum Direction: (0.858477,-0.395184,-0.326875) - New Polarization: (-0.480111,-0.395194,-0.783144) - *** FresnelRefraction *** -Track (trackID 626, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.86685,-0.483471,-0.121767) -Old Polarization: (-0.407331,-0.545933,-0.732147) -New Polarization: (-0.70267,-0.321429,-0.634774) -Polarization Change: (-0.70267,-0.321429,-0.634774) -New Momentum Direction: (0.647281,-0.659211,-0.382711) -Momentum Change: (0.647281,-0.659211,-0.382711) - Photon at Boundary! - Old Momentum Direction: (0.647281,-0.659211,-0.382711) - Old Polarization: (-0.70267,-0.321429,-0.634774) - New Momentum Direction: (-0.647281,-0.659211,-0.382711) - New Polarization: (-0.70267,0.321429,0.634774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647281,-0.659211,-0.382711) - Old Polarization: (-0.70267,0.321429,0.634774) - New Momentum Direction: (-0.647281,0.659211,-0.382711) - New Polarization: (0.70267,0.321429,-0.634774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647281,0.659211,-0.382711) - Old Polarization: (0.70267,0.321429,-0.634774) - New Momentum Direction: (-0.647281,0.659211,0.382711) - New Polarization: (-0.70267,-0.321429,-0.634774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647281,0.659211,0.382711) - Old Polarization: (-0.70267,-0.321429,-0.634774) - New Momentum Direction: (0.647281,0.659211,0.382711) - New Polarization: (-0.70267,0.321429,0.634774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.647281,0.659211,0.382711) - Old Polarization: (-0.70267,0.321429,0.634774) - New Momentum Direction: (0.647281,-0.659211,0.382711) - New Polarization: (0.70267,0.321429,-0.634774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.647281,-0.659211,0.382711) - Old Polarization: (0.70267,0.321429,-0.634774) - New Momentum Direction: (0.647281,-0.659211,-0.382711) - New Polarization: (-0.70267,-0.321429,-0.634774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.647281,-0.659211,-0.382711) - Old Polarization: (-0.70267,-0.321429,-0.634774) - New Momentum Direction: (-0.647281,-0.659211,-0.382711) - New Polarization: (-0.70267,0.321429,0.634774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647281,-0.659211,-0.382711) - Old Polarization: (-0.70267,0.321429,0.634774) - New Momentum Direction: (-0.647281,0.659211,-0.382711) - New Polarization: (0.70267,0.321429,-0.634774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647281,0.659211,-0.382711) - Old Polarization: (0.70267,0.321429,-0.634774) - New Momentum Direction: (-0.647281,0.659211,0.382711) - New Polarization: (-0.70267,-0.321429,-0.634774) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.647281,0.659211,0.382711) -Old Polarization: (-0.70267,-0.321429,-0.634774) -New Polarization: (0.732563,-0.465526,0.496626) -Polarization Change: (0.732563,-0.465526,0.496626) -New Momentum Direction: (0.278714,0.870754,0.4051) -Momentum Change: (0.278714,0.870754,0.4051) - Photon at Boundary! - Old Momentum Direction: (0.278714,0.870754,0.4051) - Old Polarization: (0.732563,-0.465526,0.496626) - New Momentum Direction: (0.378479,0.744405,0.550105) - New Polarization: (0.605601,-0.648607,0.461038) - *** FresnelRefraction *** -Track (trackID 625, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - -** Photon absorbed! ** -Track (trackID 624, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - -** Photon absorbed! ** -Track (trackID 623, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.408892,0.00890355,0.912539) - Old Polarization: (-0.912525,-0.00726966,0.408957) - New Momentum Direction: (0.551712,0.0120134,0.833948) - New Polarization: (0.833514,0.0273644,-0.55182) - *** FresnelRefraction *** -Track (trackID 622, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.476079,-0.43794,0.762599) -Old Polarization: (-0.835139,-0.496808,0.236061) -New Polarization: (0.771914,-0.239339,-0.588953) -Polarization Change: (0.771914,-0.239339,-0.588953) -New Momentum Direction: (-0.431017,-0.878019,-0.208104) -Momentum Change: (-0.431017,-0.878019,-0.208104) - Photon at Boundary! - Old Momentum Direction: (-0.431017,-0.878019,-0.208104) - Old Polarization: (0.771914,-0.239339,-0.588953) - New Momentum Direction: (-0.584926,-0.760331,-0.282415) - New Polarization: (-0.0886383,0.40603,-0.909551) - *** FresnelRefraction *** -Track (trackID 621, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.426115,-0.24035,0.872157) - Old Polarization: (-0.890563,-0.281025,0.357662) - New Momentum Direction: (0.577615,-0.325804,0.748473) - New Polarization: (0.266644,-0.7913,-0.550222) - *** FresnelRefraction *** -Track (trackID 620, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.678001,-0.660124,0.323343) - Old Polarization: (-0.613921,-0.750452,-0.244792) - New Momentum Direction: (0.131515,-0.890253,0.436066) - New Polarization: (-0.920629,-0.272814,-0.27931) - *** FresnelRefraction *** -Track (trackID 619, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.870501,-0.476782,-0.122093) - Old Polarization: (-0.401245,-0.543847,-0.737043) - New Momentum Direction: (0.746509,-0.644576,-0.165062) - New Polarization: (-0.591903,-0.530004,-0.607245) - *** FresnelRefraction *** -Track (trackID 618, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.422161,0.280553,0.862015) - Old Polarization: (-0.893472,0.289535,0.343334) - New Momentum Direction: (0.573601,0.381195,0.725032) - New Polarization: (0.136406,0.82831,-0.543411) - *** FresnelRefraction *** -Track (trackID 617, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.659965,0.67811,0.32344) - Old Polarization: (-0.633886,0.733673,-0.244769) - New Momentum Direction: (0.891351,0.121101,0.43684) - New Polarization: (0.0930089,-0.992011,0.0852248) - *** FresnelRefraction *** -Track (trackID 616, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - -** Photon absorbed! ** -Track (trackID 615, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.478579,0.492237,0.727093) -Old Polarization: (-0.831517,0.52006,0.195235) -New Polarization: (0.979078,-0.0313067,0.201062) -Polarization Change: (0.979078,-0.0313067,0.201062) -New Momentum Direction: (-0.0930671,0.809795,0.579284) -Momentum Change: (-0.0930671,0.809795,0.579284) - Photon at Boundary! - Old Momentum Direction: (-0.0930671,0.809795,0.579284) - Old Polarization: (0.979078,-0.0313067,0.201062) - New Momentum Direction: (-0.0930671,-0.809795,0.579284) - New Polarization: (-0.987484,0.000665925,-0.157717) + Old Momentum Direction: (0.695715,0.34421,-0.630476) + Old Polarization: (-0.67798,0.604646,-0.418026) + New Momentum Direction: (-0.695715,0.34421,-0.630476) + New Polarization: (-0.627451,-0.718498,0.30011) *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (-0.0930671,-0.809795,0.579284) - Old Polarization: (-0.987484,0.000665925,-0.157717) - New Momentum Direction: (-0.0930671,-0.809795,-0.579284) - New Polarization: (0.987484,-0.000665925,-0.157717) + Old Momentum Direction: (-0.695715,0.34421,-0.630476) + Old Polarization: (-0.627451,-0.718498,0.30011) + New Momentum Direction: (-0.695715,0.34421,0.630476) + New Polarization: (0.627451,0.718498,0.30011) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.0930671,-0.809795,-0.579284) - Old Polarization: (0.987484,-0.000665925,-0.157717) - New Momentum Direction: (-0.126536,-0.603042,-0.78761) - New Polarization: (0.987183,0.00128718,-0.159585) - *** FresnelRefraction *** -Track (trackID 614, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.78374,0.619786,0.0402057) - Old Polarization: (-0.497511,0.665235,-0.556728) - New Momentum Direction: (0.541018,0.839247,0.0544422) - New Polarization: (-0.745459,0.508512,-0.430936) - *** FresnelRefraction *** -Track (trackID 613, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.873903,0.458847,-0.160479) - Old Polarization: (-0.398562,0.487356,-0.776938) - New Momentum Direction: (0.75245,0.621721,-0.217443) - New Polarization: (-0.588208,0.485757,-0.646569) - *** FresnelRefraction *** -Track (trackID 612, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. + Old Momentum Direction: (-0.695715,0.34421,0.630476) + Old Polarization: (0.627451,0.718498,0.30011) + New Momentum Direction: (-0.695715,-0.34421,0.630476) + New Polarization: (-0.627451,0.718498,-0.30011) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 611, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. +Track (trackID 627, parentID 1) is processed with stopping code 2 +### pop requested out of 165 stacked tracks. + +** Photon absorbed! ** +Track (trackID 626, parentID 1) is processed with stopping code 2 +### pop requested out of 164 stacked tracks. + +** Photon absorbed! ** +Track (trackID 625, parentID 1) is processed with stopping code 2 +### pop requested out of 163 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.913149,0.323073,-0.248559) - Old Polarization: (-0.35639,0.336806,-0.87152) - New Momentum Direction: (0.833012,0.438496,-0.337361) - New Polarization: (-0.513087,0.384184,-0.767558) + Old Momentum Direction: (0.883296,0.321451,0.341257) + Old Polarization: (-0.468676,0.58778,0.659437) + New Momentum Direction: (0.776254,0.432259,0.458892) + New Polarization: (-0.630321,0.519259,0.577118) + *** FresnelRefraction *** +Track (trackID 624, parentID 1) is processed with stopping code 2 +### pop requested out of 162 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.791375,-0.378878,0.479768) + Old Polarization: (-0.573448,-0.188097,0.797356) + New Momentum Direction: (0.555759,-0.515232,0.652432) + New Polarization: (-0.80507,-0.13781,0.576949) + *** FresnelRefraction *** +Track (trackID 623, parentID 1) is processed with stopping code 2 +### pop requested out of 161 stacked tracks. + +** Photon absorbed! ** +Track (trackID 622, parentID 1) is processed with stopping code 2 +### pop requested out of 160 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.571465,-0.665456,-0.480203) + Old Polarization: (-0.817175,-0.515069,-0.258707) + New Momentum Direction: (0.571465,0.665456,-0.480203) + New Polarization: (0.817175,-0.515069,0.258707) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.571465,0.665456,-0.480203) + Old Polarization: (0.817175,-0.515069,0.258707) + New Momentum Direction: (-0.571465,0.665456,-0.480203) + New Polarization: (0.817175,0.515069,-0.258707) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 621, parentID 1) is processed with stopping code 2 +### pop requested out of 159 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.881301,0.282545,0.378782) + Old Polarization: (-0.472488,0.540337,0.696269) + New Momentum Direction: (0.770047,0.381459,0.511387) + New Polarization: (-0.637939,0.470166,0.609899) + *** FresnelRefraction *** +Track (trackID 620, parentID 1) is processed with stopping code 2 +### pop requested out of 158 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.641365,-0.7671,-0.0144436) + Old Polarization: (-0.738326,-0.622208,0.260255) + New Momentum Direction: (0.866365,-0.49903,-0.0195107) + New Polarization: (0.495346,0.853681,0.160811) + *** FresnelRefraction *** +Track (trackID 619, parentID 1) is processed with stopping code 2 +### pop requested out of 157 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.608183,-0.0549789,-0.791891) + Old Polarization: (-0.77635,0.166809,-0.607828) + New Momentum Direction: (0.817815,-0.0739294,-0.570713) + New Polarization: (0.573221,0.0168493,0.819227) + *** FresnelRefraction *** +Track (trackID 618, parentID 1) is processed with stopping code 2 +### pop requested out of 156 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.877396,0.240544,0.415109) +Old Polarization: (-0.478972,0.488982,0.729028) +New Polarization: (-0.557317,0.277787,0.782453) +Polarization Change: (-0.557317,0.277787,0.782453) +New Momentum Direction: (0.275755,0.950809,-0.141145) +Momentum Change: (0.275755,0.950809,-0.141145) + +** Photon absorbed! ** +Track (trackID 617, parentID 1) is processed with stopping code 2 +### pop requested out of 155 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.658945,-0.747034,0.0879299) + Old Polarization: (-0.717906,-0.589707,0.369942) + New Momentum Direction: (0.89608,-0.427484,0.119573) + New Polarization: (0.355723,0.852681,0.382618) + *** FresnelRefraction *** +Track (trackID 616, parentID 1) is processed with stopping code 2 +### pop requested out of 154 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.5636,-0.402075,-0.721589) + Old Polarization: (-0.824363,-0.218007,-0.522397) + New Momentum Direction: (0.761423,-0.543203,-0.353787) + New Polarization: (-0.0428197,-0.586706,0.808667) + *** FresnelRefraction *** +Track (trackID 615, parentID 1) is processed with stopping code 2 +### pop requested out of 153 stacked tracks. + +** Photon absorbed! ** +Track (trackID 614, parentID 1) is processed with stopping code 2 +### pop requested out of 152 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.849181,0.527997,0.0105515) + Old Polarization: (-0.50824,0.81165,0.287953) + New Momentum Direction: (0.700842,0.713175,0.0142521) + New Polarization: (-0.699043,0.682703,0.212731) + *** FresnelRefraction *** +Track (trackID 613, parentID 1) is processed with stopping code 2 +### pop requested out of 151 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.870493,0.452773,0.192972) + Old Polarization: (-0.48546,0.72529,0.488142) + New Momentum Direction: (0.74571,0.612924,0.261229) + New Polarization: (-0.661484,0.634165,0.400342) + *** FresnelRefraction *** +Track (trackID 612, parentID 1) is processed with stopping code 2 +### pop requested out of 150 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.856707,0.512447,0.0587375) + Old Polarization: (-0.499566,0.795996,0.341796) + New Momentum Direction: (0.718043,0.691472,0.0792576) + New Polarization: (-0.684318,0.680624,0.261646) + *** FresnelRefraction *** +Track (trackID 611, parentID 1) is processed with stopping code 2 +### pop requested out of 149 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.88136,0.361872,0.303731) + Old Polarization: (-0.471418,0.631253,0.615861) + New Momentum Direction: (0.771504,0.487321,0.409024) + New Polarization: (-0.635491,0.559378,0.53221) *** FresnelRefraction *** Track (trackID 610, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. +### pop requested out of 148 stacked tracks. ** Photon absorbed! ** Track (trackID 609, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. +### pop requested out of 147 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.423882,-0.246493,0.87153) - Old Polarization: (-0.891078,-0.285806,0.352556) - New Momentum Direction: (0.576433,-0.335203,0.745227) - New Polarization: (0.242601,-0.800668,-0.547792) + Old Momentum Direction: (0.850938,-0.0538179,0.522501) + Old Polarization: (-0.508278,0.166566,0.844931) + New Momentum Direction: (0.70028,-0.0731418,0.710111) + New Polarization: (-0.701802,0.11158,0.703579) *** FresnelRefraction *** Track (trackID 608, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. +### pop requested out of 146 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.793725,0.608165,0.0117044) - Old Polarization: (-0.48749,0.647503,-0.585742) - New Momentum Direction: (0.562974,0.826322,0.015903) - New Polarization: (-0.732794,0.507966,-0.452751) + Old Momentum Direction: (0.873636,0.416631,0.251354) + Old Polarization: (-0.483151,0.681551,0.549594) + New Momentum Direction: (0.750646,0.565723,0.341302) + New Polarization: (-0.65828,0.596165,0.459625) *** FresnelRefraction *** Track (trackID 607, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - -** Photon absorbed! ** -Track (trackID 606, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. +### pop requested out of 145 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.461522,0.421482,0.780609) - Old Polarization: (-0.853809,0.449929,0.261865) - New Momentum Direction: (0.623092,0.569035,0.536615) - New Polarization: (-0.345377,0.815739,-0.463987) + Old Momentum Direction: (0.855251,-0.0354806,0.516999) + Old Polarization: (-0.502479,0.187202,0.844079) + New Momentum Direction: (0.71219,-0.048063,0.70034) + New Polarization: (-0.690747,0.129838,0.711345) + *** FresnelRefraction *** +Track (trackID 606, parentID 1) is processed with stopping code 2 +### pop requested out of 144 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.84578,-0.105403,0.523017) + Old Polarization: (-0.512761,0.110285,0.851419) + New Momentum Direction: (0.691461,-0.142718,0.708176) + New Polarization: (-0.707554,0.0640131,0.703754) *** FresnelRefraction *** Track (trackID 605, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. +### pop requested out of 143 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.63637,-0.650676,0.414312) - Old Polarization: (-0.659994,-0.737302,-0.1442) - New Momentum Direction: (0.63637,0.650676,0.414312) - New Polarization: (0.659994,-0.737302,0.1442) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.63637,0.650676,0.414312) - Old Polarization: (0.659994,-0.737302,0.1442) - New Momentum Direction: (-0.63637,0.650676,0.414312) - New Polarization: (0.659994,0.737302,-0.1442) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.63637,0.650676,0.414312) - Old Polarization: (0.659994,0.737302,-0.1442) - New Momentum Direction: (-0.63637,0.650676,-0.414312) - New Polarization: (-0.659994,-0.737302,-0.1442) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.87524,0.383787,0.294383) + Old Polarization: (-0.482125,0.643333,0.594709) + New Momentum Direction: (0.752986,0.522125,0.400496) + New Polarization: (-0.656936,0.561288,0.503379) + *** FresnelRefraction *** Track (trackID 604, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. +### pop requested out of 142 stacked tracks. ** Photon absorbed! ** Track (trackID 603, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 141 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.700807,-0.675812,0.228358) + Old Polarization: (-0.672448,-0.519019,0.527668) + New Momentum Direction: (0.261922,-0.914303,0.308945) + New Polarization: (-0.9409,-0.170698,0.292521) + *** FresnelRefraction *** Track (trackID 602, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. +### pop requested out of 140 stacked tracks. ** Photon absorbed! ** Track (trackID 601, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. +### pop requested out of 139 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.922702,-0.298432,-0.244048) - Old Polarization: (-0.34316,-0.34733,-0.872698) - New Momentum Direction: (0.853661,-0.403182,-0.329709) - New Polarization: (-0.487738,-0.396798,-0.777601) + Old Momentum Direction: (0.855583,-0.0404521,0.516083) + Old Polarization: (-0.501551,0.18203,0.845761) + New Momentum Direction: (0.714083,-0.0547051,0.697921) + New Polarization: (-0.688514,0.125443,0.714291) *** FresnelRefraction *** Track (trackID 600, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - -** Photon absorbed! ** -Track (trackID 599, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. +### pop requested out of 138 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.609672,0.660906,0.437611) - Old Polarization: (-0.689557,0.71449,-0.118388) - New Momentum Direction: (0.609672,-0.660906,0.437611) - New Polarization: (0.689557,0.71449,0.118388) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.609672,-0.660906,0.437611) - Old Polarization: (0.689557,0.71449,0.118388) - New Momentum Direction: (-0.609672,-0.660906,0.437611) - New Polarization: (0.689557,-0.71449,-0.118388) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.609672,-0.660906,0.437611) - Old Polarization: (0.689557,-0.71449,-0.118388) - New Momentum Direction: (-0.609672,-0.660906,-0.437611) - New Polarization: (-0.689557,0.71449,-0.118388) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.609672,-0.660906,-0.437611) - Old Polarization: (-0.689557,0.71449,-0.118388) - New Momentum Direction: (-0.609672,0.660906,-0.437611) - New Polarization: (0.689557,0.71449,0.118388) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.609672,0.660906,-0.437611) - Old Polarization: (0.689557,0.71449,0.118388) - New Momentum Direction: (0.609672,0.660906,-0.437611) - New Polarization: (0.689557,-0.71449,-0.118388) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 598, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - -** Photon absorbed! ** -Track (trackID 597, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.590664,0.646468,0.482902) - Old Polarization: (-0.710818,0.700101,-0.0677948) - New Momentum Direction: (0.590664,-0.646468,0.482902) - New Polarization: (0.710818,0.700101,0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.590664,-0.646468,0.482902) - Old Polarization: (0.710818,0.700101,0.0677948) - New Momentum Direction: (-0.590664,-0.646468,0.482902) - New Polarization: (0.710818,-0.700101,-0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.590664,-0.646468,0.482902) - Old Polarization: (0.710818,-0.700101,-0.0677948) - New Momentum Direction: (-0.590664,-0.646468,-0.482902) - New Polarization: (-0.710818,0.700101,-0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.590664,-0.646468,-0.482902) - Old Polarization: (-0.710818,0.700101,-0.0677948) - New Momentum Direction: (-0.590664,0.646468,-0.482902) - New Polarization: (0.710818,0.700101,0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.590664,0.646468,-0.482902) - Old Polarization: (0.710818,0.700101,0.0677948) - New Momentum Direction: (0.590664,0.646468,-0.482902) - New Polarization: (0.710818,-0.700101,-0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.590664,0.646468,-0.482902) - Old Polarization: (0.710818,-0.700101,-0.0677948) - New Momentum Direction: (0.590664,0.646468,0.482902) - New Polarization: (-0.710818,0.700101,-0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.590664,0.646468,0.482902) - Old Polarization: (-0.710818,0.700101,-0.0677948) - New Momentum Direction: (0.590664,-0.646468,0.482902) - New Polarization: (0.710818,0.700101,0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.590664,-0.646468,0.482902) - Old Polarization: (0.710818,0.700101,0.0677948) - New Momentum Direction: (-0.590664,-0.646468,0.482902) - New Polarization: (0.710818,-0.700101,-0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.590664,-0.646468,0.482902) - Old Polarization: (0.710818,-0.700101,-0.0677948) - New Momentum Direction: (-0.590664,-0.646468,-0.482902) - New Polarization: (-0.710818,0.700101,-0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.590664,-0.646468,-0.482902) - Old Polarization: (-0.710818,0.700101,-0.0677948) - New Momentum Direction: (-0.590664,0.646468,-0.482902) - New Polarization: (0.710818,0.700101,0.0677948) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.590664,0.646468,-0.482902) - Old Polarization: (0.710818,0.700101,0.0677948) - New Momentum Direction: (0.590664,0.646468,-0.482902) - New Polarization: (0.710818,-0.700101,-0.0677948) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 596, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.492979,0.500272,0.711828) - Old Polarization: (-0.820126,0.540335,0.188234) - New Momentum Direction: (0.663878,0.6737,0.324646) - New Polarization: (-0.569141,0.736759,-0.365055) + Old Momentum Direction: (0.863009,0.0381334,0.503748) + Old Polarization: (-0.494523,0.267589,0.826948) + New Momentum Direction: (0.728102,0.0517415,0.683513) + New Polarization: (-0.677885,0.202263,0.706796) *** FresnelRefraction *** -Track (trackID 595, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. +Track (trackID 599, parentID 1) is processed with stopping code 2 +### pop requested out of 137 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.402689,0.112143,0.908441) - Old Polarization: (-0.913882,0.105194,0.392115) - New Momentum Direction: (0.547874,0.152574,0.82253) - New Polarization: (0.696171,0.462047,-0.549416) + Old Momentum Direction: (0.856537,0.508304,0.0892877) + Old Polarization: (-0.502111,0.780786,0.37183) + New Momentum Direction: (0.712883,0.690708,0.121329) + New Polarization: (-0.69136,0.663197,0.286689) + *** FresnelRefraction *** +Track (trackID 598, parentID 1) is processed with stopping code 2 +### pop requested out of 136 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.879026,0.37543,0.29388) + Old Polarization: (-0.475337,0.642282,0.601273) + New Momentum Direction: (0.764838,0.507286,0.397094) + New Polarization: (-0.6432,0.5666,0.515032) + *** FresnelRefraction *** +Track (trackID 597, parentID 1) is processed with stopping code 2 +### pop requested out of 135 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.662017,-0.744569,0.0857373) + Old Polarization: (-0.715096,-0.593237,0.36974) + New Momentum Direction: (0.896593,-0.427362,0.116117) + New Polarization: (0.357333,0.85302,0.380356) + *** FresnelRefraction *** +Track (trackID 596, parentID 1) is processed with stopping code 2 +### pop requested out of 134 stacked tracks. + +** Photon absorbed! ** +Track (trackID 595, parentID 1) is processed with stopping code 2 +### pop requested out of 133 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.828741,0.549904,-0.103893) + Old Polarization: (-0.531587,0.831558,0.161017) + New Momentum Direction: (0.652334,0.744756,-0.140707) + New Polarization: (-0.737926,0.666447,0.106365) *** FresnelRefraction *** Track (trackID 594, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. +### pop requested out of 132 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.40254,0.0836665,0.911571) - Old Polarization: (-0.91475,0.0743669,0.397118) - New Momentum Direction: (0.547076,0.113708,0.829324) - New Polarization: (0.758198,0.352549,-0.548494) + Old Momentum Direction: (0.863209,0.494985,0.0992949) + Old Polarization: (-0.491661,0.779587,0.387961) + New Momentum Direction: (0.733323,0.6666,0.133721) + New Polarization: (-0.670373,0.67617,0.305604) *** FresnelRefraction *** Track (trackID 593, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - -** Photon absorbed! ** -Track (trackID 592, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. +### pop requested out of 131 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.406591,0.102505,0.907842) - Old Polarization: (-0.912447,0.0956807,0.39785) - New Momentum Direction: (0.550779,0.138856,0.82302) - New Polarization: (0.718108,0.423734,-0.55206) + Old Momentum Direction: (0.833754,-0.19239,0.517533) + Old Polarization: (-0.525033,0.0138109,0.85097) + New Momentum Direction: (0.667053,-0.259597,0.698319) + New Polarization: (-0.725519,-0.013349,0.688073) + *** FresnelRefraction *** +Track (trackID 592, parentID 1) is processed with stopping code 2 +### pop requested out of 130 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.845538,-0.123988,0.51932) + Old Polarization: (-0.511665,0.0896977,0.85449) + New Momentum Direction: (0.694238,-0.167142,0.70007) + New Polarization: (-0.703697,0.0466323,0.708968) *** FresnelRefraction *** Track (trackID 591, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. +### pop requested out of 129 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.405279,0.0319292,0.913635) - Old Polarization: (-0.914186,0.0180783,0.404891) - New Momentum Direction: (0.548756,0.0432327,0.834864) - New Polarization: (0.825344,0.130795,-0.549272) + Old Momentum Direction: (0.847075,0.531249,0.0154692) + Old Polarization: (-0.512028,0.807935,0.291664) + New Momentum Direction: (0.692702,0.720918,0.0209922) + New Polarization: (-0.70737,0.673432,0.214749) *** FresnelRefraction *** Track (trackID 590, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.490238,0.520942,0.698774) - Old Polarization: (-0.818529,0.550631,0.163754) - New Momentum Direction: (0.490238,0.520942,-0.698774) - New Polarization: (0.650881,-0.752022,-0.104002) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.490238,0.520942,-0.698774) - Old Polarization: (0.650881,-0.752022,-0.104002) - New Momentum Direction: (0.490238,-0.520942,-0.698774) - New Polarization: (-0.650881,-0.752022,0.104002) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.490238,-0.520942,-0.698774) - Old Polarization: (-0.650881,-0.752022,0.104002) - New Momentum Direction: (-0.490238,-0.520942,-0.698774) - New Polarization: (-0.650881,0.752022,-0.104002) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.490238,-0.520942,-0.698774) - Old Polarization: (-0.650881,0.752022,-0.104002) - New Momentum Direction: (-0.490238,-0.520942,0.698774) - New Polarization: (0.768981,-0.635917,0.0654114) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.490238,-0.520942,0.698774) - Old Polarization: (0.768981,-0.635917,0.0654114) - New Momentum Direction: (-0.490238,0.520942,0.698774) - New Polarization: (-0.768981,-0.635917,-0.0654114) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.490238,0.520942,0.698774) - Old Polarization: (-0.768981,-0.635917,-0.0654114) - New Momentum Direction: (0.490238,0.520942,0.698774) - New Polarization: (-0.768981,0.635917,0.0654114) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.490238,0.520942,0.698774) - Old Polarization: (-0.768981,0.635917,0.0654114) - New Momentum Direction: (0.666947,0.708719,0.229997) - New Polarization: (-0.697885,0.702314,-0.140397) - *** FresnelRefraction *** -Track (trackID 589, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. +### pop requested out of 128 stacked tracks. ** Photon absorbed! ** +Track (trackID 589, parentID 1) is processed with stopping code 2 +### pop requested out of 127 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.692657,-0.693417,0.19849) + Old Polarization: (-0.681466,-0.539013,0.495045) + New Momentum Direction: (0.22041,-0.937745,0.268429) + New Polarization: (-0.952722,-0.147965,0.265381) + *** FresnelRefraction *** Track (trackID 588, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.53432,-0.552545,0.639684) - Old Polarization: (-0.772401,-0.62657,0.10396) - New Momentum Direction: (0.53432,-0.552545,-0.639684) - New Polarization: (0.772401,0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,-0.552545,-0.639684) - Old Polarization: (0.772401,0.62657,0.10396) - New Momentum Direction: (0.53432,0.552545,-0.639684) - New Polarization: (-0.772401,0.62657,-0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,0.552545,-0.639684) - Old Polarization: (-0.772401,0.62657,-0.10396) - New Momentum Direction: (-0.53432,0.552545,-0.639684) - New Polarization: (-0.772401,-0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,0.552545,-0.639684) - Old Polarization: (-0.772401,-0.62657,0.10396) - New Momentum Direction: (-0.53432,0.552545,0.639684) - New Polarization: (0.772401,0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,0.552545,0.639684) - Old Polarization: (0.772401,0.62657,0.10396) - New Momentum Direction: (-0.53432,-0.552545,0.639684) - New Polarization: (-0.772401,0.62657,-0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,-0.552545,0.639684) - Old Polarization: (-0.772401,0.62657,-0.10396) - New Momentum Direction: (0.53432,-0.552545,0.639684) - New Polarization: (-0.772401,-0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,-0.552545,0.639684) - Old Polarization: (-0.772401,-0.62657,0.10396) - New Momentum Direction: (0.53432,-0.552545,-0.639684) - New Polarization: (0.772401,0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,-0.552545,-0.639684) - Old Polarization: (0.772401,0.62657,0.10396) - New Momentum Direction: (0.53432,0.552545,-0.639684) - New Polarization: (-0.772401,0.62657,-0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,0.552545,-0.639684) - Old Polarization: (-0.772401,0.62657,-0.10396) - New Momentum Direction: (-0.53432,0.552545,-0.639684) - New Polarization: (-0.772401,-0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,0.552545,-0.639684) - Old Polarization: (-0.772401,-0.62657,0.10396) - New Momentum Direction: (-0.53432,0.552545,0.639684) - New Polarization: (0.772401,0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,0.552545,0.639684) - Old Polarization: (0.772401,0.62657,0.10396) - New Momentum Direction: (-0.53432,-0.552545,0.639684) - New Polarization: (-0.772401,0.62657,-0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,-0.552545,0.639684) - Old Polarization: (-0.772401,0.62657,-0.10396) - New Momentum Direction: (0.53432,-0.552545,0.639684) - New Polarization: (-0.772401,-0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,-0.552545,0.639684) - Old Polarization: (-0.772401,-0.62657,0.10396) - New Momentum Direction: (0.53432,-0.552545,-0.639684) - New Polarization: (0.772401,0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,-0.552545,-0.639684) - Old Polarization: (0.772401,0.62657,0.10396) - New Momentum Direction: (0.53432,0.552545,-0.639684) - New Polarization: (-0.772401,0.62657,-0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,0.552545,-0.639684) - Old Polarization: (-0.772401,0.62657,-0.10396) - New Momentum Direction: (-0.53432,0.552545,-0.639684) - New Polarization: (-0.772401,-0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,0.552545,-0.639684) - Old Polarization: (-0.772401,-0.62657,0.10396) - New Momentum Direction: (-0.53432,0.552545,0.639684) - New Polarization: (0.772401,0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,0.552545,0.639684) - Old Polarization: (0.772401,0.62657,0.10396) - New Momentum Direction: (-0.53432,-0.552545,0.639684) - New Polarization: (-0.772401,0.62657,-0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,-0.552545,0.639684) - Old Polarization: (-0.772401,0.62657,-0.10396) - New Momentum Direction: (-0.53432,-0.552545,-0.639684) - New Polarization: (0.772401,-0.62657,-0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.53432,-0.552545,-0.639684) - Old Polarization: (0.772401,-0.62657,-0.10396) - New Momentum Direction: (0.53432,-0.552545,-0.639684) - New Polarization: (0.772401,0.62657,0.10396) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.53432,-0.552545,-0.639684) - Old Polarization: (0.772401,0.62657,0.10396) - New Momentum Direction: (0.53432,0.552545,-0.639684) - New Polarization: (-0.772401,0.62657,-0.10396) - *** TotalInternalReflection *** +### pop requested out of 126 stacked tracks. ** Photon absorbed! ** Track (trackID 587, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 196 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 198 stacked tracks. -Track (trackID 1065, parentID 1) is processed with stopping code 2 -### pop requested out of 197 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1064, parentID 1) is processed with stopping code 2 -### pop requested out of 196 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.299462,-0.647364,0.700887) - Old Polarization: (-0.747903,-0.615398,-0.248853) - New Momentum Direction: (0.407365,-0.880623,0.241985) - New Polarization: (-0.730989,-0.47324,-0.491629) - *** FresnelRefraction *** -Track (trackID 1063, parentID 1) is processed with stopping code 2 -### pop requested out of 195 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.899549,0.40623,0.160591) - Old Polarization: (-0.092146,0.535832,-0.839281) - New Momentum Direction: (0.804409,0.552473,0.218404) - New Polarization: (-0.169941,0.566268,-0.806511) - *** FresnelRefraction *** -Track (trackID 1062, parentID 1) is processed with stopping code 2 -### pop requested out of 194 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.294454,0.487895,0.821739) - Old Polarization: (-0.760492,0.640355,-0.107693) - New Momentum Direction: (0.39584,0.655886,0.642748) - New Polarization: (-0.740918,0.641612,-0.198428) - *** FresnelRefraction *** -Track (trackID 1061, parentID 1) is processed with stopping code 2 -### pop requested out of 193 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.931398,-0.359021,0.0600178) - Old Polarization: (-0.055196,-0.302276,-0.951621) - New Momentum Direction: (0.869499,-0.487175,0.0814413) - New Polarization: (-0.101673,-0.337883,-0.93568) - *** FresnelRefraction *** -Track (trackID 1060, parentID 1) is processed with stopping code 2 -### pop requested out of 192 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.314425,-0.649108,0.692673) - Old Polarization: (-0.735477,-0.62791,-0.254563) - New Momentum Direction: (0.314425,-0.649108,-0.692673) - New Polarization: (0.804822,0.569218,-0.168084) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.314425,-0.649108,-0.692673) - Old Polarization: (0.804822,0.569218,-0.168084) - New Momentum Direction: (0.314425,0.649108,-0.692673) - New Polarization: (-0.804822,0.569218,0.168084) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.314425,0.649108,-0.692673) - Old Polarization: (-0.804822,0.569218,0.168084) - New Momentum Direction: (-0.314425,0.649108,-0.692673) - New Polarization: (-0.804822,-0.569218,-0.168084) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.314425,0.649108,-0.692673) - Old Polarization: (-0.804822,-0.569218,-0.168084) - New Momentum Direction: (-0.424644,0.876645,-0.22621) - New Polarization: (-0.87697,-0.336202,0.343353) - *** FresnelRefraction *** -Track (trackID 1059, parentID 1) is processed with stopping code 2 -### pop requested out of 191 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.57052,0.626202,0.531392) - Old Polarization: (-0.451599,0.779624,-0.433871) - New Momentum Direction: (0.57052,-0.626202,0.531392) - New Polarization: (0.451599,0.779624,0.433871) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.57052,-0.626202,0.531392) - Old Polarization: (0.451599,0.779624,0.433871) - New Momentum Direction: (-0.57052,-0.626202,0.531392) - New Polarization: (0.451599,-0.779624,-0.433871) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.57052,-0.626202,0.531392) - Old Polarization: (0.451599,-0.779624,-0.433871) - New Momentum Direction: (-0.57052,-0.626202,-0.531392) - New Polarization: (-0.451599,0.779624,-0.433871) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.57052,-0.626202,-0.531392) - Old Polarization: (-0.451599,0.779624,-0.433871) - New Momentum Direction: (-0.57052,0.626202,-0.531392) - New Polarization: (0.451599,0.779624,0.433871) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.57052,0.626202,-0.531392) -Old Polarization: (0.451599,0.779624,0.433871) -New Polarization: (0.290456,-0.903391,-0.315469) -Polarization Change: (0.290456,-0.903391,-0.315469) -New Momentum Direction: (-0.934155,-0.196266,-0.298051) -Momentum Change: (-0.934155,-0.196266,-0.298051) - Photon at Boundary! - Old Momentum Direction: (-0.934155,-0.196266,-0.298051) - Old Polarization: (0.290456,-0.903391,-0.315469) - New Momentum Direction: (-0.874883,-0.266368,-0.404509) - New Polarization: (0.429572,-0.812525,-0.394045) - *** FresnelRefraction *** -Track (trackID 1058, parentID 1) is processed with stopping code 2 -### pop requested out of 190 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.199898,-0.542737,0.815768) - Old Polarization: (-0.856602,-0.501001,-0.123415) - New Momentum Direction: (0.271949,-0.738358,0.617148) - New Polarization: (-0.833146,-0.501589,-0.232974) - *** FresnelRefraction *** -Track (trackID 1057, parentID 1) is processed with stopping code 2 -### pop requested out of 189 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.937931,-0.342657,0.0535851) - Old Polarization: (-0.0489107,-0.283643,-0.957682) - New Momentum Direction: (-0.937931,-0.342657,0.0535851) - New Polarization: (0.0329609,0.0657362,0.997293) - *** FresnelReflection *** -Scattering Photon! -Old Momentum Direction: (-0.937931,-0.342657,0.0535851) -Old Polarization: (0.0329609,0.0657362,0.997293) -New Polarization: (-0.783724,0.128755,-0.607617) -Polarization Change: (-0.783724,0.128755,-0.607617) -New Momentum Direction: (-0.582602,0.186705,0.791022) -Momentum Change: (-0.582602,0.186705,0.791022) -Scattering Photon! -Old Momentum Direction: (-0.582602,0.186705,0.791022) -Old Polarization: (-0.783724,0.128755,-0.607617) -New Polarization: (0.346447,0.850744,0.395233) -Polarization Change: (0.346447,0.850744,0.395233) -New Momentum Direction: (-0.703823,0.51428,-0.490051) -Momentum Change: (-0.703823,0.51428,-0.490051) - Photon at Boundary! - Old Momentum Direction: (-0.703823,0.51428,-0.490051) - Old Polarization: (0.346447,0.850744,0.395233) - New Momentum Direction: (-0.262871,0.698494,-0.665586) - New Polarization: (0.633986,0.645062,0.426565) - *** FresnelRefraction *** -Track (trackID 1056, parentID 1) is processed with stopping code 2 -### pop requested out of 188 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1055, parentID 1) is processed with stopping code 2 -### pop requested out of 187 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.124241,-0.382014,0.915767) - Old Polarization: (-0.944129,-0.329443,-0.00933877) - New Momentum Direction: (0.168196,-0.517167,0.839195) - New Polarization: (-0.942213,-0.334565,-0.0173374) - *** FresnelRefraction *** -Track (trackID 1054, parentID 1) is processed with stopping code 2 -### pop requested out of 186 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.935518,-0.349059,0.054446) - Old Polarization: (-0.0525526,-0.289903,-0.955612) - New Momentum Direction: (0.877093,-0.474582,0.0740251) - New Polarization: (-0.0971572,-0.326225,-0.940286) - *** FresnelRefraction *** -Track (trackID 1053, parentID 1) is processed with stopping code 2 -### pop requested out of 185 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.989428,0.138955,0.0415146) - Old Polarization: (0.00644498,0.243847,-0.969792) - New Momentum Direction: (0.98037,0.188917,0.0564416) - New Polarization: (-0.0119196,0.342524,-0.939433) - *** FresnelRefraction *** -Track (trackID 1052, parentID 1) is processed with stopping code 2 -### pop requested out of 184 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.675647,0.607685,0.417398) - Old Polarization: (-0.336458,0.757944,-0.558853) - New Momentum Direction: (-0.675647,0.607685,0.417398) - New Polarization: (-0.336458,-0.757944,0.558853) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.675647,0.607685,0.417398) - Old Polarization: (-0.336458,-0.757944,0.558853) - New Momentum Direction: (-0.675647,-0.607685,0.417398) - New Polarization: (0.336458,-0.757944,-0.558853) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.675647,-0.607685,0.417398) - Old Polarization: (0.336458,-0.757944,-0.558853) - New Momentum Direction: (-0.675647,-0.607685,-0.417398) - New Polarization: (-0.336458,0.757944,-0.558853) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.675647,-0.607685,-0.417398) -Old Polarization: (-0.336458,0.757944,-0.558853) -New Polarization: (-0.0558546,0.934408,-0.351798) -Polarization Change: (-0.0558546,0.934408,-0.351798) -New Momentum Direction: (0.743208,0.274197,0.610294) -Momentum Change: (0.743208,0.274197,0.610294) - Photon at Boundary! - Old Momentum Direction: (0.743208,0.274197,0.610294) - Old Polarization: (-0.0558546,0.934408,-0.351798) - New Momentum Direction: (0.743208,0.274197,-0.610294) - New Polarization: (0.0558546,-0.934408,-0.351798) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1051, parentID 1) is processed with stopping code 2 -### pop requested out of 183 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1050, parentID 1) is processed with stopping code 2 -### pop requested out of 182 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1049, parentID 1) is processed with stopping code 2 -### pop requested out of 181 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1048, parentID 1) is processed with stopping code 2 -### pop requested out of 180 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1047, parentID 1) is processed with stopping code 2 -### pop requested out of 179 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.965887,0.243671,0.0876778) - Old Polarization: (-0.00789484,0.366119,-0.930535) - New Momentum Direction: (0.937389,0.327715,0.117918) - New Polarization: (-0.0143374,0.374592,-0.927079) - *** FresnelRefraction *** -Track (trackID 1046, parentID 1) is processed with stopping code 2 -### pop requested out of 178 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1045, parentID 1) is processed with stopping code 2 -### pop requested out of 177 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.999784,0.00505175,0.0201809) - Old Polarization: (0.0195919,0.0975876,-0.995034) - New Momentum Direction: (0.999601,0.00685699,0.0273925) - New Polarization: (-0.0273085,0.481548,0.875994) - *** FresnelRefraction *** -Track (trackID 1044, parentID 1) is processed with stopping code 2 -### pop requested out of 176 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0914267,0.0451139,0.994789) - Old Polarization: (-0.986095,0.143313,0.0841284) - New Momentum Direction: (0.123135,0.0607602,0.990528) - New Polarization: (0.591568,0.796907,-0.122423) - *** FresnelRefraction *** -Track (trackID 1043, parentID 1) is processed with stopping code 2 -### pop requested out of 175 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.68287,0.605408,0.408865) - Old Polarization: (-0.328763,0.75447,-0.568059) - New Momentum Direction: (0.118609,0.822862,0.555724) - New Polarization: (-0.64282,0.490195,-0.588635) - *** FresnelRefraction *** -Track (trackID 1042, parentID 1) is processed with stopping code 2 -### pop requested out of 174 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.293328,-0.642181,0.70821) - Old Polarization: (-0.754795,-0.610206,-0.240692) - New Momentum Direction: (0.398889,-0.873286,0.279748) - New Polarization: (-0.735594,-0.486879,-0.471009) - *** FresnelRefraction *** -Track (trackID 1041, parentID 1) is processed with stopping code 2 -### pop requested out of 173 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.370831,-0.679837,0.632698) - Old Polarization: (-0.673866,-0.665766,-0.320408) - New Momentum Direction: (0.499635,-0.153882,0.852458) - New Polarization: (-0.161082,0.950425,0.265978) - *** FresnelRefraction *** -Track (trackID 1040, parentID 1) is processed with stopping code 2 -### pop requested out of 172 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.894865,0.412637,0.17014) - Old Polarization: (-0.0940469,0.546953,-0.831864) - New Momentum Direction: (0.796401,0.559107,0.230533) - New Polarization: (-0.172306,0.575165,-0.799685) - *** FresnelRefraction *** -Track (trackID 1039, parentID 1) is processed with stopping code 2 -### pop requested out of 171 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.18193,0.352677,0.917889) - Old Polarization: (-0.877853,0.478826,-0.00998214) - New Momentum Direction: (0.247032,0.478878,0.842408) - New Polarization: (-0.874828,0.484075,-0.0186402) - *** FresnelRefraction *** -Track (trackID 1038, parentID 1) is processed with stopping code 2 -### pop requested out of 170 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.341452,-0.661878,0.667329) - Old Polarization: (-0.707516,-0.648393,-0.281083) - New Momentum Direction: (0.341452,-0.661878,-0.667329) - New Polarization: (0.707516,0.648393,-0.281083) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.341452,-0.661878,-0.667329) - Old Polarization: (0.707516,0.648393,-0.281083) - New Momentum Direction: (0.341452,0.661878,-0.667329) - New Polarization: (-0.707516,0.648393,0.281083) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1037, parentID 1) is processed with stopping code 2 -### pop requested out of 169 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.103023,-0.333288,0.93718) -Old Polarization: (-0.962224,-0.272109,0.00900587) -New Polarization: (0.930042,-0.225116,-0.29042) -Polarization Change: (0.930042,-0.225116,-0.29042) -New Momentum Direction: (-0.336408,-0.839595,-0.426508) -Momentum Change: (-0.336408,-0.839595,-0.426508) - Photon at Boundary! - Old Momentum Direction: (-0.336408,-0.839595,-0.426508) - Old Polarization: (0.930042,-0.225116,-0.29042) - New Momentum Direction: (-0.457744,-0.673553,-0.580342) - New Polarization: (0.436063,0.398758,-0.806747) - *** FresnelRefraction *** -Track (trackID 1036, parentID 1) is processed with stopping code 2 -### pop requested out of 168 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1035, parentID 1) is processed with stopping code 2 -### pop requested out of 167 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.224124,0.417259,0.880718) - Old Polarization: (-0.832765,0.551424,-0.049328) - New Momentum Direction: (0.303846,0.565681,0.766604) - New Polarization: (-0.819803,0.565187,-0.0921223) - *** FresnelRefraction *** -Track (trackID 1034, parentID 1) is processed with stopping code 2 -### pop requested out of 166 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.716212,-0.645513,0.26524) - Old Polarization: (-0.290297,-0.621188,-0.72791) - New Momentum Direction: (0.329199,-0.873404,0.358879) - New Polarization: (-0.537164,-0.485794,-0.689536) - *** FresnelRefraction *** -Track (trackID 1033, parentID 1) is processed with stopping code 2 -### pop requested out of 165 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1032, parentID 1) is processed with stopping code 2 -### pop requested out of 164 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.725323,-0.640927,0.251235) - Old Polarization: (-0.282245,-0.609734,-0.74065) - New Momentum Direction: (0.353163,-0.871033,0.341433) - New Polarization: (-0.525345,-0.486613,-0.698012) - *** FresnelRefraction *** -Track (trackID 1031, parentID 1) is processed with stopping code 2 -### pop requested out of 163 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1030, parentID 1) is processed with stopping code 2 -### pop requested out of 162 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1029, parentID 1) is processed with stopping code 2 -### pop requested out of 161 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1028, parentID 1) is processed with stopping code 2 -### pop requested out of 160 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.0783471,-0.0191055,0.996743) -Old Polarization: (-0.994287,0.0712114,0.079519) -New Polarization: (-0.962044,0.239609,-0.130609) -Polarization Change: (-0.962044,0.239609,-0.130609) -New Momentum Direction: (-0.251665,-0.593923,0.764147) -Momentum Change: (-0.251665,-0.593923,0.764147) - Photon at Boundary! - Old Momentum Direction: (-0.251665,-0.593923,0.764147) - Old Polarization: (-0.962044,0.239609,-0.130609) - New Momentum Direction: (-0.340858,-0.804414,0.486553) - New Polarization: (-0.936511,0.245266,-0.250582) - *** FresnelRefraction *** -Track (trackID 1027, parentID 1) is processed with stopping code 2 -### pop requested out of 159 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.786949,-0.584429,0.197875) - Old Polarization: (-0.210935,-0.556192,-0.803839) - New Momentum Direction: (0.55288,-0.78925,0.267222) - New Polarization: (-0.382999,-0.525514,-0.759702) - *** FresnelRefraction *** -Track (trackID 1026, parentID 1) is processed with stopping code 2 -### pop requested out of 158 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.717039,0.590364,0.370574) - Old Polarization: (-0.291658,0.736982,-0.609749) - New Momentum Direction: (-0.717039,0.590364,0.370574) - New Polarization: (-0.152509,-0.651641,0.743038) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.717039,0.590364,0.370574) - Old Polarization: (-0.152509,-0.651641,0.743038) - New Momentum Direction: (-0.717039,-0.590364,0.370574) - New Polarization: (0.152509,-0.651641,-0.743038) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1025, parentID 1) is processed with stopping code 2 -### pop requested out of 157 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.916203,-0.392933,0.0785833) - Old Polarization: (-0.0671446,-0.343876,-0.936611) - New Momentum Direction: (0.841038,-0.530472,0.10609) - New Polarization: (-0.12246,-0.377705,-0.917792) - *** FresnelRefraction *** -Track (trackID 1024, parentID 1) is processed with stopping code 2 -### pop requested out of 156 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.935558,-0.348795,0.0554347) -Old Polarization: (-0.0516097,-0.290297,-0.955544) -New Polarization: (0.0966116,-0.578139,0.810198) -Polarization Change: (0.0966116,-0.578139,0.810198) -New Momentum Direction: (-0.00941689,0.813439,0.581574) -Momentum Change: (-0.00941689,0.813439,0.581574) - Photon at Boundary! - Old Momentum Direction: (-0.00941689,0.813439,0.581574) - Old Polarization: (0.0966116,-0.578139,0.810198) - New Momentum Direction: (-0.00941689,0.813439,-0.581574) - New Polarization: (-0.0966116,0.578139,0.810198) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.00941689,0.813439,-0.581574) - Old Polarization: (-0.0966116,0.578139,0.810198) - New Momentum Direction: (-0.0127913,0.613008,-0.789973) - New Polarization: (-0.0875151,-0.787693,-0.609821) - *** FresnelRefraction *** -Track (trackID 1023, parentID 1) is processed with stopping code 2 -### pop requested out of 155 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.980323,-0.19569,0.025918) - Old Polarization: (0.00150701,-0.123874,-0.992297) - New Momentum Direction: (0.963661,-0.264814,0.0350731) - New Polarization: (-0.00276675,-0.141185,-0.989979) - *** FresnelRefraction *** -Track (trackID 1022, parentID 1) is processed with stopping code 2 -### pop requested out of 154 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.183805,0.355746,0.91633) - Old Polarization: (-0.875915,0.482326,-0.011555) - New Momentum Direction: (0.249543,0.482979,0.839321) - New Polarization: (-0.872433,0.488258,-0.0215758) - *** FresnelRefraction *** -Track (trackID 1021, parentID 1) is processed with stopping code 2 -### pop requested out of 153 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.319039,0.526879,0.78779) - Old Polarization: (-0.72719,0.669159,-0.15304) - New Momentum Direction: (0.433435,0.715798,0.547511) - New Polarization: (-0.704786,0.647862,-0.289053) - *** FresnelRefraction *** -Track (trackID 1020, parentID 1) is processed with stopping code 2 -### pop requested out of 152 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1019, parentID 1) is processed with stopping code 2 -### pop requested out of 151 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.392935,0.573523,0.7188) - Old Polarization: (-0.647894,0.727373,-0.22619) - New Momentum Direction: (0.531317,0.775503,0.341025) - New Polarization: (-0.643988,0.631265,-0.432186) - *** FresnelRefraction *** -Track (trackID 1018, parentID 1) is processed with stopping code 2 -### pop requested out of 150 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1017, parentID 1) is processed with stopping code 2 -### pop requested out of 149 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.124957,-0.399327,0.908253) - Old Polarization: (-0.938543,-0.34444,-0.0223139) - New Momentum Direction: (0.169981,-0.54321,0.82221) - New Polarization: (-0.933719,-0.355551,-0.0418684) - *** FresnelRefraction *** -Track (trackID 1016, parentID 1) is processed with stopping code 2 -### pop requested out of 148 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.400149,-0.697394,0.594577) - Old Polarization: (-0.639414,-0.677231,-0.364017) - New Momentum Direction: (0.400149,0.697394,0.594577) - New Polarization: (0.070544,0.623419,-0.778699) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.400149,0.697394,0.594577) - Old Polarization: (0.070544,0.623419,-0.778699) - New Momentum Direction: (0.400149,0.697394,-0.594577) - New Polarization: (-0.070544,-0.623419,-0.778699) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.400149,0.697394,-0.594577) - Old Polarization: (-0.070544,-0.623419,-0.778699) - New Momentum Direction: (-0.400149,0.697394,-0.594577) - New Polarization: (-0.070544,0.623419,0.778699) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.400149,0.697394,-0.594577) - Old Polarization: (-0.070544,0.623419,0.778699) - New Momentum Direction: (-0.54186,0.241102,-0.805144) - New Polarization: (-0.408771,-0.912635,0.00181108) - *** FresnelRefraction *** -Track (trackID 1015, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.484678,-0.718385,0.499009) - Old Polarization: (-0.54566,-0.694203,-0.469401) - New Momentum Direction: (0.65882,-0.325369,0.6783) - New Polarization: (0.19617,0.944742,0.262641) - *** FresnelRefraction *** -Track (trackID 1014, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.872962,-0.474533,0.11294) - Old Polarization: (-0.118283,-0.430557,-0.894779) - New Momentum Direction: (0.750373,-0.643052,0.153048) - New Polarization: (-0.216426,-0.457781,-0.86232) - *** FresnelRefraction *** -Track (trackID 1013, parentID 1) is processed with stopping code 2 -### pop requested out of 145 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.847408,0.479191,0.228639) - Old Polarization: (-0.14481,0.622898,-0.768783) - New Momentum Direction: (0.696091,0.647974,0.309172) - New Polarization: (-0.263624,0.631231,-0.729417) - *** FresnelRefraction *** -Track (trackID 1012, parentID 1) is processed with stopping code 2 -### pop requested out of 144 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.621445,-0.696509,0.358721) - Old Polarization: (-0.395498,-0.674142,-0.62379) - New Momentum Direction: (0.842648,-0.230981,0.486407) - New Polarization: (0.30742,0.948,-0.0823918) - *** FresnelRefraction *** -Track (trackID 1011, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.792043,0.537952,0.288575) -Old Polarization: (-0.208421,0.682603,-0.700438) -New Polarization: (0.616256,0.494171,-0.613207) -Polarization Change: (0.616256,0.494171,-0.613207) -New Momentum Direction: (-0.781902,0.476968,-0.40141) -Momentum Change: (-0.781902,0.476968,-0.40141) - Photon at Boundary! - Old Momentum Direction: (-0.781902,0.476968,-0.40141) - Old Polarization: (0.616256,0.494171,-0.613207) - New Momentum Direction: (-0.781902,-0.476968,-0.40141) - New Polarization: (-0.616256,0.494171,0.613207) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.781902,-0.476968,-0.40141) - Old Polarization: (-0.616256,0.494171,0.613207) - New Momentum Direction: (-0.532959,-0.647388,-0.544833) - New Polarization: (0.841406,-0.473514,-0.260423) - *** FresnelRefraction *** -Track (trackID 1010, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.158009,-0.447521,0.880204) - Old Polarization: (-0.912213,-0.407414,-0.0433862) - New Momentum Direction: (0.212702,-0.602427,0.769311) - New Polarization: (-0.903515,-0.421043,-0.0799003) - *** FresnelRefraction *** -Track (trackID 1009, parentID 1) is processed with stopping code 2 -### pop requested out of 141 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1008, parentID 1) is processed with stopping code 2 -### pop requested out of 140 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.425922,0.59728,0.679593) - Old Polarization: (-0.609775,0.74441,-0.272082) - New Momentum Direction: (0.425922,0.59728,-0.679593) - New Polarization: (0.636164,-0.731802,-0.244462) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.425922,0.59728,-0.679593) - Old Polarization: (0.636164,-0.731802,-0.244462) - New Momentum Direction: (0.425922,-0.59728,-0.679593) - New Polarization: (-0.636164,-0.731802,0.244462) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.425922,-0.59728,-0.679593) -Old Polarization: (-0.636164,-0.731802,0.244462) -New Polarization: (-0.881967,-0.266135,-0.388981) -Polarization Change: (-0.881967,-0.266135,-0.388981) -New Momentum Direction: (-0.0711563,-0.740668,0.668092) -Momentum Change: (-0.0711563,-0.740668,0.668092) - Photon at Boundary! - Old Momentum Direction: (-0.0711563,-0.740668,0.668092) - Old Polarization: (-0.881967,-0.266135,-0.388981) - New Momentum Direction: (-0.0711563,-0.740668,-0.668092) - New Polarization: (0.881967,0.266135,-0.388981) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.0711563,-0.740668,-0.668092) -Old Polarization: (0.881967,0.266135,-0.388981) -New Polarization: (-0.183107,-0.365174,-0.912754) -Polarization Change: (-0.183107,-0.365174,-0.912754) -New Momentum Direction: (0.903818,0.302734,-0.302432) -Momentum Change: (0.903818,0.302734,-0.302432) - Photon at Boundary! - Old Momentum Direction: (0.903818,0.302734,-0.302432) - Old Polarization: (-0.183107,-0.365174,-0.912754) - New Momentum Direction: (0.813147,0.411782,-0.411372) - New Polarization: (-0.318733,-0.276356,-0.906662) - *** FresnelRefraction *** -Track (trackID 1007, parentID 1) is processed with stopping code 2 -### pop requested out of 139 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1006, parentID 1) is processed with stopping code 2 -### pop requested out of 138 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1005, parentID 1) is processed with stopping code 2 -### pop requested out of 137 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1004, parentID 1) is processed with stopping code 2 -### pop requested out of 136 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.399096,-0.692494,0.600978) - Old Polarization: (-0.642121,-0.678963,-0.355936) - New Momentum Direction: (0.399096,0.692494,0.600978) - New Polarization: (0.08194,0.62588,-0.775603) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.399096,0.692494,0.600978) - Old Polarization: (0.08194,0.62588,-0.775603) - New Momentum Direction: (0.399096,0.692494,-0.600978) - New Polarization: (-0.08194,-0.62588,-0.775603) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.399096,0.692494,-0.600978) - Old Polarization: (-0.08194,-0.62588,-0.775603) - New Momentum Direction: (-0.399096,0.692494,-0.600978) - New Polarization: (-0.08194,0.62588,0.775603) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.399096,0.692494,-0.600978) - Old Polarization: (-0.08194,0.62588,0.775603) - New Momentum Direction: (-0.538027,0.232654,-0.810185) - New Polarization: (-0.407741,-0.913057,0.00857777) - *** FresnelRefraction *** -Track (trackID 1003, parentID 1) is processed with stopping code 2 -### pop requested out of 135 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1002, parentID 1) is processed with stopping code 2 -### pop requested out of 134 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.337108,-0.659001,0.672366) - Old Polarization: (-0.712464,-0.645417,-0.275376) - New Momentum Direction: (0.337108,-0.659001,-0.672366) - New Polarization: (0.746041,0.622607,-0.236184) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.337108,-0.659001,-0.672366) - Old Polarization: (0.746041,0.622607,-0.236184) - New Momentum Direction: (0.337108,0.659001,-0.672366) - New Polarization: (-0.746041,0.622607,0.236184) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1001, parentID 1) is processed with stopping code 2 -### pop requested out of 133 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.105927,-0.333872,0.936648) -Old Polarization: (-0.961548,-0.274419,0.0109254) -New Polarization: (0.918152,0.360385,0.164678) -Polarization Change: (0.918152,0.360385,0.164678) -New Momentum Direction: (-0.310182,0.395139,0.864669) -Momentum Change: (-0.310182,0.395139,0.864669) - Photon at Boundary! - Old Momentum Direction: (-0.310182,0.395139,0.864669) - Old Polarization: (0.918152,0.360385,0.164678) - New Momentum Direction: (-0.310182,0.395139,-0.864669) - New Polarization: (-0.837239,-0.544401,0.0515603) - *** FresnelReflection *** -Scattering Photon! -Old Momentum Direction: (-0.310182,0.395139,-0.864669) -Old Polarization: (-0.837239,-0.544401,0.0515603) -New Polarization: (-0.798518,-0.571327,0.189616) -Polarization Change: (-0.798518,-0.571327,0.189616) -New Momentum Direction: (-0.324523,0.143268,-0.934965) -Momentum Change: (-0.324523,0.143268,-0.934965) - -** Photon absorbed! ** -Track (trackID 1000, parentID 1) is processed with stopping code 2 -### pop requested out of 132 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.693649,-0.660481,0.287429) - Old Polarization: (-0.315368,-0.637225,-0.703198) - New Momentum Direction: (-0.693649,-0.660481,0.287429) - New Polarization: (-0.214233,0.570143,0.793121) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.693649,-0.660481,0.287429) - Old Polarization: (-0.214233,0.570143,0.793121) - New Momentum Direction: (-0.693649,0.660481,0.287429) - New Polarization: (0.214233,0.570143,-0.793121) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 999, parentID 1) is processed with stopping code 2 -### pop requested out of 131 stacked tracks. - -** Photon absorbed! ** -Track (trackID 998, parentID 1) is processed with stopping code 2 -### pop requested out of 130 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.163676,-0.472779,0.865846) - Old Polarization: (-0.900657,-0.429733,-0.0643907) - New Momentum Direction: (0.221567,-0.639996,0.73574) - New Polarization: (-0.887376,-0.445157,-0.119996) - *** FresnelRefraction *** -Track (trackID 997, parentID 1) is processed with stopping code 2 -### pop requested out of 129 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0796855,-0.0640868,0.994758) - Old Polarization: (-0.996467,0.0214541,0.0812045) - New Momentum Direction: (0.107578,-0.0865195,0.990425) - New Polarization: (0.362579,-0.92418,-0.120115) - *** FresnelRefraction *** -Track (trackID 996, parentID 1) is processed with stopping code 2 -### pop requested out of 128 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0912144,-0.28139,0.955249) - Old Polarization: (-0.975967,-0.215899,0.029595) - New Momentum Direction: (0.124015,-0.382576,0.915563) - New Polarization: (-0.903905,-0.424205,-0.0548224) - *** FresnelRefraction *** -Track (trackID 995, parentID 1) is processed with stopping code 2 -### pop requested out of 127 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.657471,0.614116,0.436571) - Old Polarization: (-0.356559,0.764006,-0.537737) - New Momentum Direction: (-0.657471,0.614116,0.436571) - New Polarization: (-0.356559,-0.764006,0.537737) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.657471,0.614116,0.436571) - Old Polarization: (-0.356559,-0.764006,0.537737) - New Momentum Direction: (-0.657471,-0.614116,0.436571) - New Polarization: (0.356559,-0.764006,-0.537737) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.657471,-0.614116,0.436571) - Old Polarization: (0.356559,-0.764006,-0.537737) - New Momentum Direction: (-0.657471,-0.614116,-0.436571) - New Polarization: (-0.356559,0.764006,-0.537737) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.657471,-0.614116,-0.436571) -Old Polarization: (-0.356559,0.764006,-0.537737) -New Polarization: (0.00702181,-0.53927,0.842103) -Polarization Change: (0.00702181,-0.53927,0.842103) -New Momentum Direction: (0.704153,-0.595268,-0.387072) -Momentum Change: (0.704153,-0.595268,-0.387072) - Photon at Boundary! - Old Momentum Direction: (0.704153,-0.595268,-0.387072) - Old Polarization: (0.00702181,-0.53927,0.842103) - New Momentum Direction: (0.704153,0.595268,-0.387072) - New Polarization: (-0.00702181,-0.53927,-0.842103) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.704153,0.595268,-0.387072) -Old Polarization: (-0.00702181,-0.53927,-0.842103) -New Polarization: (0.408698,0.210645,-0.888028) -Polarization Change: (0.408698,0.210645,-0.888028) -New Momentum Direction: (-0.341782,-0.866874,-0.362926) -Momentum Change: (-0.341782,-0.866874,-0.362926) - Photon at Boundary! - Old Momentum Direction: (-0.341782,-0.866874,-0.362926) - Old Polarization: (0.408698,0.210645,-0.888028) - New Momentum Direction: (-0.464544,-0.735439,-0.493283) - New Polarization: (0.335787,0.369148,-0.866589) - *** FresnelRefraction *** -Track (trackID 994, parentID 1) is processed with stopping code 2 -### pop requested out of 126 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.44778,0.598718,0.664101) - Old Polarization: (-0.587415,0.756936,-0.28634) - New Momentum Direction: (0.44778,0.598718,-0.664101) - New Polarization: (0.587415,-0.756936,-0.28634) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.44778,0.598718,-0.664101) - Old Polarization: (0.587415,-0.756936,-0.28634) - New Momentum Direction: (0.44778,-0.598718,-0.664101) - New Polarization: (-0.587415,-0.756936,0.28634) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.44778,-0.598718,-0.664101) - Old Polarization: (-0.587415,-0.756936,0.28634) - New Momentum Direction: (-0.44778,-0.598718,-0.664101) - New Polarization: (-0.587415,0.756936,-0.28634) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.44778,-0.598718,-0.664101) - Old Polarization: (-0.587415,0.756936,-0.28634) - New Momentum Direction: (-0.44778,-0.598718,0.664101) - New Polarization: (0.587415,-0.756936,-0.28634) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.44778,-0.598718,0.664101) - Old Polarization: (0.587415,-0.756936,-0.28634) - New Momentum Direction: (-0.44778,0.598718,0.664101) - New Polarization: (-0.587415,-0.756936,0.28634) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.44778,0.598718,0.664101) - Old Polarization: (-0.587415,-0.756936,0.28634) - New Momentum Direction: (0.44778,0.598718,0.664101) - New Polarization: (-0.587415,0.756936,-0.28634) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.44778,0.598718,0.664101) - Old Polarization: (-0.587415,0.756936,-0.28634) - New Momentum Direction: (0.44778,0.598718,-0.664101) - New Polarization: (0.587415,-0.756936,-0.28634) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.44778,0.598718,-0.664101) - Old Polarization: (0.587415,-0.756936,-0.28634) - New Momentum Direction: (0.44778,-0.598718,-0.664101) - New Polarization: (-0.587415,-0.756936,0.28634) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 993, parentID 1) is processed with stopping code 2 ### pop requested out of 125 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0769438,-0.18178,0.980324) - Old Polarization: (-0.992539,-0.107241,0.058017) - New Momentum Direction: (0.104521,-0.246932,0.963379) - New Polarization: (-0.704347,-0.702258,-0.103584) - *** FresnelRefraction *** -Track (trackID 992, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 586, parentID 1) is processed with stopping code 2 ### pop requested out of 124 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.895187,-0.435168,0.0962812) - Old Polarization: (-0.0911033,-0.390129,-0.916242) - New Momentum Direction: (0.79841,-0.587897,0.130073) - New Polarization: (-0.16608,-0.42267,-0.890936) + Old Momentum Direction: (0.783938,0.529609,-0.323968) + Old Polarization: (-0.580828,0.809944,-0.0814243) + New Momentum Direction: (0.541907,0.716939,-0.438561) + New Polarization: (-0.812602,0.580154,-0.0556797) *** FresnelRefraction *** -Track (trackID 991, parentID 1) is processed with stopping code 2 +Track (trackID 585, parentID 1) is processed with stopping code 2 ### pop requested out of 123 stacked tracks. - -** Photon absorbed! ** -Track (trackID 990, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.597556,-0.0762162,-0.798197) + Old Polarization: (-0.785807,0.142333,-0.601871) + New Momentum Direction: (0.809955,-0.103307,-0.577322) + New Polarization: (0.576151,-0.0438782,0.816165) + *** FresnelRefraction *** +Track (trackID 584, parentID 1) is processed with stopping code 2 ### pop requested out of 122 stacked tracks. - -** Photon absorbed! ** -Track (trackID 989, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.618087,0.0314967,-0.785479) + Old Polarization: (-0.763642,0.261239,-0.590428) + New Momentum Direction: (0.836442,0.0426237,-0.546396) + New Polarization: (0.522008,0.241743,0.817966) + *** FresnelRefraction *** +Track (trackID 583, parentID 1) is processed with stopping code 2 ### pop requested out of 121 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.341037,0.544299,0.766441) - Old Polarization: (-0.703259,0.688752,-0.176204) - New Momentum Direction: (0.463154,0.739201,0.488948) - New Polarization: (-0.683495,0.649111,-0.333901) + Old Momentum Direction: (0.861041,0.493427,0.123035) + Old Polarization: (-0.497006,0.765296,0.409032) + New Momentum Direction: (0.723181,0.67014,0.167098) + New Polarization: (-0.682473,0.65624,0.321839) *** FresnelRefraction *** -Track (trackID 988, parentID 1) is processed with stopping code 2 +Track (trackID 582, parentID 1) is processed with stopping code 2 ### pop requested out of 120 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.506474,0.622027,0.597133) - Old Polarization: (-0.521806,0.772426,-0.362045) - New Momentum Direction: (0.506474,-0.622027,0.597133) - New Polarization: (0.521806,0.772426,0.362045) + Old Momentum Direction: (0.557351,-0.556949,-0.615766) + Old Polarization: (-0.830159,-0.386337,-0.401971) + New Momentum Direction: (0.557351,-0.556949,0.615766) + New Polarization: (0.830159,0.386337,-0.401971) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.506474,-0.622027,0.597133) - Old Polarization: (0.521806,0.772426,0.362045) - New Momentum Direction: (0.506474,-0.622027,-0.597133) - New Polarization: (-0.521806,-0.772426,0.362045) + Old Momentum Direction: (0.557351,-0.556949,0.615766) + Old Polarization: (0.830159,0.386337,-0.401971) + New Momentum Direction: (-0.557351,-0.556949,0.615766) + New Polarization: (0.830159,-0.386337,0.401971) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.506474,-0.622027,-0.597133) - Old Polarization: (-0.521806,-0.772426,0.362045) - New Momentum Direction: (-0.506474,-0.622027,-0.597133) - New Polarization: (-0.521806,0.772426,-0.362045) + Old Momentum Direction: (-0.557351,-0.556949,0.615766) + Old Polarization: (0.830159,-0.386337,0.401971) + New Momentum Direction: (-0.557351,0.556949,0.615766) + New Polarization: (-0.830159,-0.386337,-0.401971) *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.557351,0.556949,0.615766) +Old Polarization: (-0.830159,-0.386337,-0.401971) +New Polarization: (-0.827724,-0.436559,-0.352547) +Polarization Change: (-0.827724,-0.436559,-0.352547) +New Momentum Direction: (-0.0637524,0.697368,-0.713872) +Momentum Change: (-0.0637524,0.697368,-0.713872) Photon at Boundary! - Old Momentum Direction: (-0.506474,-0.622027,-0.597133) - Old Polarization: (-0.521806,0.772426,-0.362045) - New Momentum Direction: (-0.506474,0.622027,-0.597133) - New Polarization: (0.521806,0.772426,0.362045) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.506474,0.622027,-0.597133) - Old Polarization: (0.521806,0.772426,0.362045) - New Momentum Direction: (-0.506474,0.622027,0.597133) - New Polarization: (-0.521806,-0.772426,0.362045) - *** TotalInternalReflection *** + Old Momentum Direction: (-0.0637524,0.697368,-0.713872) + Old Polarization: (-0.827724,-0.436559,-0.352547) + New Momentum Direction: (-0.0637524,-0.697368,-0.713872) + New Polarization: (0.927448,-0.305521,0.215632) + *** FresnelReflection *** ** Photon absorbed! ** -Track (trackID 987, parentID 1) is processed with stopping code 2 +Track (trackID 581, parentID 1) is processed with stopping code 2 ### pop requested out of 119 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.302984,-0.640175,0.705958) - Old Polarization: (-0.748368,-0.618474,-0.239658) - New Momentum Direction: (0.409058,-0.864301,0.292669) - New Polarization: (-0.731957,-0.502307,-0.460354) + Old Momentum Direction: (0.690929,-0.697276,0.190846) + Old Polarization: (-0.683405,-0.543903,0.486958) + New Momentum Direction: (0.933971,-0.247276,0.257979) + New Polarization: (0.080395,0.848814,0.522544) *** FresnelRefraction *** -Track (trackID 986, parentID 1) is processed with stopping code 2 +Track (trackID 580, parentID 1) is processed with stopping code 2 ### pop requested out of 118 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.0753625,-0.0184039,0.996986) -Old Polarization: (-0.994481,0.071801,0.0764985) -New Polarization: (-0.938734,-0.0975347,0.330554) -Polarization Change: (-0.938734,-0.0975347,0.330554) -New Momentum Direction: (0.329283,-0.536971,0.776682) -Momentum Change: (0.329283,-0.536971,0.776682) - Photon at Boundary! - Old Momentum Direction: (0.329283,-0.536971,0.776682) - Old Polarization: (-0.938734,-0.0975347,0.330554) - New Momentum Direction: (0.447217,-0.72929,0.517816) - New Polarization: (-0.456948,-0.683976,-0.568661) - *** FresnelRefraction *** -Track (trackID 985, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 579, parentID 1) is processed with stopping code 2 ### pop requested out of 117 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.636193,-0.689238,0.346712) - Old Polarization: (-0.378614,-0.670452,-0.63808) - New Momentum Direction: (0.860288,-0.200239,0.468839) - New Polarization: (0.289353,0.948939,-0.125655) + Old Momentum Direction: (0.610981,-0.002349,-0.791642) + Old Polarization: (-0.771261,0.2237,-0.595915) + New Momentum Direction: (0.827504,-0.00318146,-0.561452) + New Polarization: (0.555106,0.154658,0.817275) *** FresnelRefraction *** -Track (trackID 984, parentID 1) is processed with stopping code 2 +Track (trackID 578, parentID 1) is processed with stopping code 2 ### pop requested out of 116 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.213224,-0.558695,0.801495) - Old Polarization: (-0.842976,-0.519909,-0.138151) - New Momentum Direction: (0.28973,-0.759157,0.582869) - New Polarization: (-0.8183,-0.512347,-0.260549) + Old Momentum Direction: (0.879915,0.302341,0.366522) + Old Polarization: (-0.47513,0.559411,0.679199) + New Momentum Direction: (0.765637,0.409336,0.49623) + New Polarization: (-0.643273,0.486832,0.590927) *** FresnelRefraction *** -Track (trackID 983, parentID 1) is processed with stopping code 2 +Track (trackID 577, parentID 1) is processed with stopping code 2 ### pop requested out of 115 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.265775,0.476242,0.838187) - Old Polarization: (-0.784662,0.611982,-0.0989133) - New Momentum Direction: (0.361563,0.647884,0.670462) - New Polarization: (-0.763133,0.618775,-0.186399) + Old Momentum Direction: (0.813162,0.555426,-0.173981) + Old Polarization: (-0.549671,0.831123,0.0842359) + New Momentum Direction: (0.611207,0.755284,-0.236584) + New Polarization: (-0.768697,0.637669,0.0498246) *** FresnelRefraction *** -Track (trackID 982, parentID 1) is processed with stopping code 2 +Track (trackID 576, parentID 1) is processed with stopping code 2 ### pop requested out of 114 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.211252,-0.557664,0.802735) - Old Polarization: (-0.844453,-0.517702,-0.13742) - New Momentum Direction: (0.287301,-0.75842,0.585027) - New Polarization: (-0.819617,-0.510726,-0.259591) + Old Momentum Direction: (0.817926,-0.2534,0.516513) + Old Polarization: (-0.544526,-0.0511698,0.837182) + New Momentum Direction: (0.622643,-0.344653,0.702517) + New Polarization: (-0.760797,-0.0566293,0.646514) *** FresnelRefraction *** -Track (trackID 981, parentID 1) is processed with stopping code 2 +Track (trackID 575, parentID 1) is processed with stopping code 2 ### pop requested out of 113 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.752036,-0.619913,0.223941) - Old Polarization: (-0.253429,-0.585592,-0.769971) - New Momentum Direction: (0.443047,-0.843168,0.304592) - New Polarization: (-0.46856,-0.507444,-0.723154) + Old Momentum Direction: (0.668194,-0.735059,0.114911) + Old Polarization: (-0.708157,-0.581029,0.401146) + New Momentum Direction: (0.906002,-0.393554,0.155807) + New Polarization: (0.295939,0.852146,0.431587) *** FresnelRefraction *** -Track (trackID 980, parentID 1) is processed with stopping code 2 +Track (trackID 574, parentID 1) is processed with stopping code 2 ### pop requested out of 112 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.275263,-0.623318,0.731919) - Old Polarization: (-0.776215,-0.59328,-0.213328) - New Momentum Direction: (0.373332,-0.84539,0.38202) - New Polarization: (-0.752816,-0.516715,-0.407766) - *** FresnelRefraction *** -Track (trackID 979, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 573, parentID 1) is processed with stopping code 2 ### pop requested out of 111 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0881465,-0.250795,0.964019) - Old Polarization: (-0.982084,-0.1837,0.0420076) - New Momentum Direction: (0.119538,-0.340112,0.932756) - New Polarization: (-0.855847,-0.511492,-0.0768238) + Old Momentum Direction: (0.876877,0.401134,0.264914) + Old Polarization: (-0.478045,0.669638,0.568382) + New Momentum Direction: (0.759844,0.542481,0.358261) + New Polarization: (-0.648206,0.590105,0.481254) *** FresnelRefraction *** -Track (trackID 978, parentID 1) is processed with stopping code 2 +Track (trackID 572, parentID 1) is processed with stopping code 2 ### pop requested out of 110 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.856511,-0.498747,0.132817) - Old Polarization: (-0.133057,-0.462005,-0.876839) - New Momentum Direction: (0.717621,-0.67298,0.179216) - New Polarization: (-0.241438,-0.481779,-0.842375) + Old Momentum Direction: (0.731018,0.429165,-0.530501) + Old Polarization: (-0.639056,0.703135,-0.311782) + New Momentum Direction: (0.389461,0.579284,-0.716066) + New Polarization: (-0.892859,0.428308,-0.139123) *** FresnelRefraction *** -Track (trackID 977, parentID 1) is processed with stopping code 2 +Track (trackID 571, parentID 1) is processed with stopping code 2 ### pop requested out of 109 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.303305,0.512614,0.803264) - Old Polarization: (-0.744475,0.653646,-0.136027) - New Momentum Direction: (0.412024,0.696359,0.587639) - New Polarization: (-0.721489,0.643223,-0.256354) + Old Momentum Direction: (0.564791,-0.684343,-0.461178) + Old Polarization: (-0.820971,-0.522677,-0.229817) + New Momentum Direction: (0.564791,0.684343,-0.461178) + New Polarization: (0.166724,0.452696,0.875939) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.564791,0.684343,-0.461178) + Old Polarization: (0.166724,0.452696,0.875939) + New Momentum Direction: (-0.564791,0.684343,-0.461178) + New Polarization: (0.166724,-0.452696,-0.875939) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.564791,0.684343,-0.461178) + Old Polarization: (0.166724,-0.452696,-0.875939) + New Momentum Direction: (-0.564791,0.684343,0.461178) + New Polarization: (-0.166724,0.452696,-0.875939) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.564791,0.684343,0.461178) + Old Polarization: (-0.166724,0.452696,-0.875939) + New Momentum Direction: (-0.767284,0.136914,0.626522) + New Polarization: (-0.466696,-0.789264,-0.399071) *** FresnelRefraction *** -Track (trackID 976, parentID 1) is processed with stopping code 2 +Track (trackID 570, parentID 1) is processed with stopping code 2 ### pop requested out of 108 stacked tracks. ** Photon absorbed! ** -Track (trackID 975, parentID 1) is processed with stopping code 2 +Track (trackID 569, parentID 1) is processed with stopping code 2 ### pop requested out of 107 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.439762,0.590883,0.676363) - Old Polarization: (-0.597348,0.7548,-0.271021) - New Momentum Direction: (0.439762,0.590883,-0.676363) - New Polarization: (0.647994,-0.730198,-0.216597) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.439762,0.590883,-0.676363) - Old Polarization: (0.647994,-0.730198,-0.216597) - New Momentum Direction: (0.439762,-0.590883,-0.676363) - New Polarization: (-0.647994,-0.730198,0.216597) + Old Momentum Direction: (0.559515,-0.655107,-0.507718) + Old Polarization: (-0.826255,-0.489036,-0.279547) + New Momentum Direction: (0.559515,0.655107,-0.507718) + New Polarization: (0.826255,-0.489036,0.279547) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.439762,-0.590883,-0.676363) - Old Polarization: (-0.647994,-0.730198,0.216597) - New Momentum Direction: (-0.439762,-0.590883,-0.676363) - New Polarization: (-0.647994,0.730198,-0.216597) + Old Momentum Direction: (0.559515,0.655107,-0.507718) + Old Polarization: (0.826255,-0.489036,0.279547) + New Momentum Direction: (-0.559515,0.655107,-0.507718) + New Polarization: (0.826255,0.489036,-0.279547) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.439762,-0.590883,-0.676363) - Old Polarization: (-0.647994,0.730198,-0.216597) - New Momentum Direction: (-0.439762,-0.590883,0.676363) - New Polarization: (0.874146,-0.454428,0.17136) - *** FresnelReflection *** + Old Momentum Direction: (-0.559515,0.655107,-0.507718) + Old Polarization: (0.826255,0.489036,-0.279547) + New Momentum Direction: (-0.559515,0.655107,0.507718) + New Polarization: (-0.826255,-0.489036,-0.279547) + *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.439762,-0.590883,0.676363) - Old Polarization: (0.874146,-0.454428,0.17136) - New Momentum Direction: (-0.439762,0.590883,0.676363) - New Polarization: (-0.874146,-0.454428,-0.17136) + Old Momentum Direction: (-0.559515,0.655107,0.507718) + Old Polarization: (-0.826255,-0.489036,-0.279547) + New Momentum Direction: (-0.559515,0.655107,-0.507718) + New Polarization: (0.826255,0.489036,-0.279547) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.559515,0.655107,-0.507718) + Old Polarization: (0.826255,0.489036,-0.279547) + New Momentum Direction: (-0.559515,-0.655107,-0.507718) + New Polarization: (-0.826255,0.489036,0.279547) *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 974, parentID 1) is processed with stopping code 2 +Track (trackID 568, parentID 1) is processed with stopping code 2 ### pop requested out of 106 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.750868,0.568965,0.335376) - Old Polarization: (-0.253449,0.717149,-0.6492) - New Momentum Direction: (0.443792,0.771995,0.455052) - New Polarization: (-0.466402,0.632582,-0.618312) + Old Momentum Direction: (0.575964,-0.240245,-0.781375) + Old Polarization: (-0.809943,-0.0382535,-0.58526) + New Momentum Direction: (0.779758,-0.325251,-0.534968) + New Polarization: (0.381712,-0.430317,0.818) *** FresnelRefraction *** -Track (trackID 973, parentID 1) is processed with stopping code 2 +Track (trackID 567, parentID 1) is processed with stopping code 2 ### pop requested out of 105 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.138201,-0.427953,0.893173) - Old Polarization: (-0.925444,-0.377028,-0.0374543) - New Momentum Direction: (0.187727,-0.581316,0.791726) - New Polarization: (-0.917367,-0.391809,-0.0701634) - *** FresnelRefraction *** -Track (trackID 972, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.723507,0.58511,0.366311) -Old Polarization: (-0.283305,0.73557,-0.615366) -New Polarization: (-0.200915,0.648379,-0.734328) -Polarization Change: (-0.200915,0.648379,-0.734328) -New Momentum Direction: (0.506458,-0.572908,-0.64442) -Momentum Change: (0.506458,-0.572908,-0.64442) + Old Momentum Direction: (0.557617,-0.55882,-0.613827) + Old Polarization: (-0.829963,-0.388664,-0.400127) + New Momentum Direction: (0.557617,-0.55882,0.613827) + New Polarization: (0.829963,0.388664,-0.400127) + *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.506458,-0.572908,-0.64442) - Old Polarization: (-0.200915,0.648379,-0.734328) - New Momentum Direction: (-0.506458,-0.572908,-0.64442) - New Polarization: (-0.200915,-0.648379,0.734328) + Old Momentum Direction: (0.557617,-0.55882,0.613827) + Old Polarization: (0.829963,0.388664,-0.400127) + New Momentum Direction: (-0.557617,-0.55882,0.613827) + New Polarization: (0.829963,-0.388664,0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557617,-0.55882,0.613827) + Old Polarization: (0.829963,-0.388664,0.400127) + New Momentum Direction: (-0.557617,0.55882,0.613827) + New Polarization: (-0.829963,-0.388664,-0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557617,0.55882,0.613827) + Old Polarization: (-0.829963,-0.388664,-0.400127) + New Momentum Direction: (-0.557617,0.55882,-0.613827) + New Polarization: (0.829963,0.388664,-0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557617,0.55882,-0.613827) + Old Polarization: (0.829963,0.388664,-0.400127) + New Momentum Direction: (-0.557617,-0.55882,-0.613827) + New Polarization: (-0.829963,0.388664,0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557617,-0.55882,-0.613827) + Old Polarization: (-0.829963,0.388664,0.400127) + New Momentum Direction: (0.557617,-0.55882,-0.613827) + New Polarization: (-0.829963,-0.388664,-0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557617,-0.55882,-0.613827) + Old Polarization: (-0.829963,-0.388664,-0.400127) + New Momentum Direction: (0.557617,-0.55882,0.613827) + New Polarization: (0.829963,0.388664,-0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557617,-0.55882,0.613827) + Old Polarization: (0.829963,0.388664,-0.400127) + New Momentum Direction: (0.557617,0.55882,0.613827) + New Polarization: (-0.829963,0.388664,0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.557617,0.55882,0.613827) + Old Polarization: (-0.829963,0.388664,0.400127) + New Momentum Direction: (-0.557617,0.55882,0.613827) + New Polarization: (-0.829963,-0.388664,-0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557617,0.55882,0.613827) + Old Polarization: (-0.829963,-0.388664,-0.400127) + New Momentum Direction: (-0.557617,0.55882,-0.613827) + New Polarization: (0.829963,0.388664,-0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557617,0.55882,-0.613827) + Old Polarization: (0.829963,0.388664,-0.400127) + New Momentum Direction: (-0.557617,-0.55882,-0.613827) + New Polarization: (-0.829963,0.388664,0.400127) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.557617,-0.55882,-0.613827) + Old Polarization: (-0.829963,0.388664,0.400127) + New Momentum Direction: (0.557617,-0.55882,-0.613827) + New Polarization: (-0.829963,-0.388664,-0.400127) *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 971, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. +Track (trackID 566, parentID 1) is processed with stopping code 2 +### pop requested out of 104 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.753543,-0.614369,0.233932) - Old Polarization: (-0.24637,-0.593827,-0.765945) - New Momentum Direction: (0.465506,-0.827114,0.314938) - New Polarization: (-0.446058,-0.526601,-0.723687) + Old Momentum Direction: (0.594809,-0.771415,-0.226099) + Old Polarization: (-0.787708,-0.615434,0.0275042) + New Momentum Direction: (0.809311,-0.500376,-0.307636) + New Polarization: (0.396974,0.851969,-0.341409) *** FresnelRefraction *** -Track (trackID 970, parentID 1) is processed with stopping code 2 +Track (trackID 565, parentID 1) is processed with stopping code 2 +### pop requested out of 103 stacked tracks. + +** Photon absorbed! ** +Track (trackID 564, parentID 1) is processed with stopping code 2 ### pop requested out of 102 stacked tracks. ** Photon absorbed! ** -Track (trackID 969, parentID 1) is processed with stopping code 2 +Track (trackID 563, parentID 1) is processed with stopping code 2 ### pop requested out of 101 stacked tracks. - -** Photon absorbed! ** -Track (trackID 968, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.786766,-0.412431,0.459239) + Old Polarization: (-0.577474,-0.229052,0.783619) + New Momentum Direction: (0.551194,-0.557508,0.620782) + New Polarization: (-0.806551,-0.16547,0.567535) + *** FresnelRefraction *** +Track (trackID 562, parentID 1) is processed with stopping code 2 ### pop requested out of 100 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.39187,0.578118,0.715693) - Old Polarization: (-0.647544,0.725912,-0.231817) - New Momentum Direction: (0.532162,0.785088,0.316924) - New Polarization: (-0.644981,0.618423,-0.448946) + Old Momentum Direction: (0.57825,-0.213124,-0.787531) + Old Polarization: (-0.807071,-0.00812295,-0.590399) + New Momentum Direction: (0.783665,-0.288833,-0.54995) + New Polarization: (0.43422,-0.378389,0.817481) *** FresnelRefraction *** -Track (trackID 967, parentID 1) is processed with stopping code 2 +Track (trackID 561, parentID 1) is processed with stopping code 2 ### pop requested out of 99 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.998241,-0.0551391,0.0217829) - Old Polarization: (0.0235391,0.0314034,-0.99923) - New Momentum Direction: (0.996789,-0.0744694,0.0294194) - New Polarization: (-0.0403994,-0.784979,-0.618203) + Old Momentum Direction: (0.746478,0.46311,-0.477808) + Old Polarization: (-0.621905,0.740944,-0.253448) + New Momentum Direction: (0.43987,0.625029,-0.644867) + New Polarization: (-0.868937,0.477596,-0.129807) *** FresnelRefraction *** -Track (trackID 966, parentID 1) is processed with stopping code 2 +Track (trackID 560, parentID 1) is processed with stopping code 2 ### pop requested out of 98 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.979699,0.192137,0.0572071) - Old Polarization: (-0.00363056,0.302319,-0.9532) - New Momentum Direction: (0.962181,0.261083,0.0777353) - New Polarization: (-0.00672111,0.308027,-0.951354) - *** FresnelRefraction *** -Track (trackID 965, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 559, parentID 1) is processed with stopping code 2 ### pop requested out of 97 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.983718,0.168993,0.0611653) - Old Polarization: (0.0112026,0.282014,-0.959345) - New Momentum Direction: (0.970301,0.227459,0.0823265) - New Polarization: (-0.0203038,0.415714,-0.909269) + Old Momentum Direction: (0.611197,-0.77278,-0.171028) + Old Polarization: (-0.771932,-0.629746,0.0868443) + New Momentum Direction: (0.824979,-0.515866,-0.23085) + New Polarization: (0.471397,0.853407,-0.222443) *** FresnelRefraction *** -Track (trackID 964, parentID 1) is processed with stopping code 2 +Track (trackID 558, parentID 1) is processed with stopping code 2 ### pop requested out of 96 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.409486,0.579957,0.704252) - Old Polarization: (-0.630285,0.737939,-0.24122) - New Momentum Direction: (0.409486,0.579957,-0.704252) - New Polarization: (0.723736,-0.676487,-0.136277) - *** FresnelReflection *** + Old Momentum Direction: (0.818233,0.556236,-0.145242) + Old Polarization: (-0.544313,0.830879,0.115602) + New Momentum Direction: (0.622902,0.756921,-0.197645) + New Polarization: (-0.760767,0.644973,0.0724077) + *** FresnelRefraction *** +Track (trackID 557, parentID 1) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + +** Photon absorbed! ** +Track (trackID 556, parentID 1) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.583158,-0.7534,-0.303832) +Old Polarization: (-0.800549,-0.596515,-0.0573731) +New Polarization: (-0.690279,-0.0524788,0.721638) +Polarization Change: (-0.690279,-0.0524788,0.721638) +New Momentum Direction: (0.507194,0.676201,0.534328) +Momentum Change: (0.507194,0.676201,0.534328) Photon at Boundary! - Old Momentum Direction: (0.409486,0.579957,-0.704252) - Old Polarization: (0.723736,-0.676487,-0.136277) - New Momentum Direction: (0.409486,-0.579957,-0.704252) - New Polarization: (-0.723736,-0.676487,0.136277) + Old Momentum Direction: (0.507194,0.676201,0.534328) + Old Polarization: (-0.690279,-0.0524788,0.721638) + New Momentum Direction: (0.507194,-0.676201,0.534328) + New Polarization: (0.690279,-0.0524788,-0.721638) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.507194,-0.676201,0.534328) + Old Polarization: (0.690279,-0.0524788,-0.721638) + New Momentum Direction: (0.507194,-0.676201,-0.534328) + New Polarization: (-0.690279,0.0524788,-0.721638) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.507194,-0.676201,-0.534328) + Old Polarization: (-0.690279,0.0524788,-0.721638) + New Momentum Direction: (-0.507194,-0.676201,-0.534328) + New Polarization: (-0.690279,-0.0524788,0.721638) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.507194,-0.676201,-0.534328) + Old Polarization: (-0.690279,-0.0524788,0.721638) + New Momentum Direction: (-0.507194,0.676201,-0.534328) + New Polarization: (0.690279,-0.0524788,-0.721638) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.507194,0.676201,-0.534328) + Old Polarization: (0.690279,-0.0524788,-0.721638) + New Momentum Direction: (-0.507194,0.676201,0.534328) + New Polarization: (-0.690279,0.0524788,-0.721638) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.507194,0.676201,0.534328) + Old Polarization: (-0.690279,0.0524788,-0.721638) + New Momentum Direction: (0.507194,0.676201,0.534328) + New Polarization: (-0.690279,-0.0524788,0.721638) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.507194,0.676201,0.534328) + Old Polarization: (-0.690279,-0.0524788,0.721638) + New Momentum Direction: (0.507194,-0.676201,0.534328) + New Polarization: (0.690279,-0.0524788,-0.721638) *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 963, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0869618,0.0560323,0.994635) - Old Polarization: (-0.98501,0.154137,0.0774371) - New Momentum Direction: (0.117758,0.075875,0.990139) - New Polarization: (0.400299,0.908852,-0.117254) - *** FresnelRefraction *** -Track (trackID 962, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.994552,-0.102724,0.0176973) - Old Polarization: (0.0156255,-0.0209381,-0.999659) - New Momentum Direction: (0.989973,-0.139209,0.023983) - New Polarization: (-0.0284495,-0.362784,-0.931439) - *** FresnelRefraction *** -Track (trackID 961, parentID 1) is processed with stopping code 2 +Track (trackID 555, parentID 1) is processed with stopping code 2 ### pop requested out of 93 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.913318,-0.399837,0.0773341) - Old Polarization: (-0.0734863,-0.348584,-0.934392) - New Momentum Direction: (0.834064,-0.54163,0.104759) - New Polarization: (-0.134774,-0.384197,-0.913361) + Old Momentum Direction: (0.729877,0.442832,-0.52075) + Old Polarization: (-0.640507,0.70917,-0.294668) + New Momentum Direction: (0.370241,0.601777,-0.707662) + New Polarization: (-0.901545,0.416402,-0.117581) *** FresnelRefraction *** -Track (trackID 960, parentID 1) is processed with stopping code 2 +Track (trackID 554, parentID 1) is processed with stopping code 2 ### pop requested out of 92 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.380468,-0.694141,0.611075) -Old Polarization: (-0.659499,-0.666872,-0.346904) -New Polarization: (-0.937081,0.11139,0.330865) -Polarization Change: (-0.937081,0.11139,0.330865) -New Momentum Direction: (-0.285106,-0.791129,-0.541137) -Momentum Change: (-0.285106,-0.791129,-0.541137) - -** Photon absorbed! ** -Track (trackID 959, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.438582,-0.70321,0.55959) - Old Polarization: (-0.598449,-0.693062,-0.4019) - New Momentum Direction: (0.438582,0.70321,0.55959) - New Polarization: (-0.0920807,0.654558,-0.750383) + Old Momentum Direction: (0.7989,-0.35914,0.482469) + Old Polarization: (-0.564226,-0.169636,0.808005) + New Momentum Direction: (-0.7989,-0.35914,0.482469) + New Polarization: (-0.042703,-0.766266,-0.641103) *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (0.438582,0.70321,0.55959) - Old Polarization: (-0.0920807,0.654558,-0.750383) - New Momentum Direction: (0.438582,0.70321,-0.55959) - New Polarization: (0.0920807,-0.654558,-0.750383) + Old Momentum Direction: (-0.7989,-0.35914,0.482469) + Old Polarization: (-0.042703,-0.766266,-0.641103) + New Momentum Direction: (-0.7989,-0.35914,-0.482469) + New Polarization: (0.042703,0.766266,-0.641103) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.438582,0.70321,-0.55959) - Old Polarization: (0.0920807,-0.654558,-0.750383) - New Momentum Direction: (-0.438582,0.70321,-0.55959) - New Polarization: (0.0920807,0.654558,0.750383) + Old Momentum Direction: (-0.7989,-0.35914,-0.482469) + Old Polarization: (0.042703,0.766266,-0.641103) + New Momentum Direction: (-0.7989,0.35914,-0.482469) + New Polarization: (-0.042703,0.766266,0.641103) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.438582,0.70321,-0.55959) - Old Polarization: (0.0920807,0.654558,0.750383) - New Momentum Direction: (-0.590484,0.289331,-0.753403) - New Polarization: (-0.383064,-0.922148,-0.0539053) + Old Momentum Direction: (-0.7989,0.35914,-0.482469) + Old Polarization: (-0.042703,0.766266,0.641103) + New Momentum Direction: (-0.581248,0.485885,-0.652738) + New Polarization: (0.0817413,0.832965,0.547254) *** FresnelRefraction *** -Track (trackID 958, parentID 1) is processed with stopping code 2 +Track (trackID 553, parentID 1) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.770974,-0.460971,0.439438) + Old Polarization: (-0.595674,-0.277819,0.75365) + New Momentum Direction: (0.500236,-0.626739,0.597463) + New Polarization: (-0.837878,-0.17628,0.516609) + *** FresnelRefraction *** +Track (trackID 552, parentID 1) is processed with stopping code 2 ### pop requested out of 90 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.167276,0.327744,0.92984) - Old Polarization: (-0.892837,0.450376,0.00187393) - New Momentum Direction: (0.227413,0.445569,0.865882) - New Polarization: (-0.887919,0.459986,-0.00350126) + Old Momentum Direction: (0.856055,-0.0264194,0.51621) + Old Polarization: (-0.501799,0.197043,0.842242) + New Momentum Direction: (0.71354,-0.0358102,0.699699) + New Polarization: (-0.689851,0.13847,0.710585) *** FresnelRefraction *** -Track (trackID 957, parentID 1) is processed with stopping code 2 +Track (trackID 551, parentID 1) is processed with stopping code 2 ### pop requested out of 89 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0806982,-0.109861,0.990666) - Old Polarization: (-0.996523,-0.0295622,0.077897) - New Momentum Direction: (0.108833,-0.148163,0.982956) - New Polarization: (-0.188559,-0.973954,-0.125929) - *** FresnelRefraction *** -Track (trackID 956, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.554763,-0.509322,-0.657897) + Old Polarization: (-0.831964,-0.331416,-0.444971) + New Momentum Direction: (0.554763,-0.509322,0.657897) + New Polarization: (0.831964,0.331416,-0.444971) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.554763,-0.509322,0.657897) + Old Polarization: (0.831964,0.331416,-0.444971) + New Momentum Direction: (-0.554763,-0.509322,0.657897) + New Polarization: (0.831964,-0.331416,0.444971) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.554763,-0.509322,0.657897) + Old Polarization: (0.831964,-0.331416,0.444971) + New Momentum Direction: (-0.554763,0.509322,0.657897) + New Polarization: (-0.831964,-0.331416,-0.444971) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 550, parentID 1) is processed with stopping code 2 ### pop requested out of 88 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.194624,-0.532157,0.823972) - Old Polarization: (-0.863625,-0.491244,-0.113277) - New Momentum Direction: (0.264366,-0.722852,0.638432) - New Polarization: (-0.841774,-0.496016,-0.213037) + Old Momentum Direction: (0.628671,0.0846215,-0.773053) + Old Polarization: (-0.751939,0.319743,-0.5765) + New Momentum Direction: (0.85089,0.114533,-0.512706) + New Polarization: (0.443511,0.366477,0.81792) *** FresnelRefraction *** -Track (trackID 955, parentID 1) is processed with stopping code 2 +Track (trackID 549, parentID 1) is processed with stopping code 2 ### pop requested out of 87 stacked tracks. ** Photon absorbed! ** -Track (trackID 954, parentID 1) is processed with stopping code 2 +Track (trackID 548, parentID 1) is processed with stopping code 2 ### pop requested out of 86 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.483513,-0.715254,0.504605) - Old Polarization: (-0.547424,-0.69691,-0.463296) - New Momentum Direction: (0.654758,-0.323054,0.683321) - New Polarization: (0.18762,0.945228,0.267099) + Old Momentum Direction: (0.567102,-0.692937,-0.445234) + Old Polarization: (-0.818736,-0.533204,-0.212989) + New Momentum Direction: (0.769798,-0.205294,-0.604372) + New Polarization: (-0.164833,0.850808,-0.498955) *** FresnelRefraction *** -Track (trackID 953, parentID 1) is processed with stopping code 2 +Track (trackID 547, parentID 1) is processed with stopping code 2 ### pop requested out of 85 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.969057,-0.244838,0.0313403) - Old Polarization: (-0.012959,-0.177258,-0.984079) - New Momentum Direction: (0.942337,-0.331957,0.0424919) - New Polarization: (-0.0238948,-0.193382,-0.980833) - *** FresnelRefraction *** -Track (trackID 952, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. + Old Momentum Direction: (0.679506,0.295744,-0.671422) + Old Polarization: (-0.695705,0.550312,-0.461683) + New Momentum Direction: (-0.679506,0.295744,-0.671422) + New Polarization: (-0.680638,-0.595727,0.42643) + *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (0.523692,-0.715874,0.461812) - Old Polarization: (-0.503084,-0.697351,-0.510498) - New Momentum Direction: (0.709273,-0.325154,0.625465) - New Polarization: (0.265627,0.945143,0.190123) - *** FresnelRefraction *** -Track (trackID 951, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.97097,-0.236767,0.0340388) - Old Polarization: (-0.00693442,-0.170104,-0.985402) - New Momentum Direction: (0.946358,-0.319832,0.0459807) - New Polarization: (-0.0126976,-0.179003,-0.983767) - *** FresnelRefraction *** -Track (trackID 950, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.520648,0.624831,0.581817) - Old Polarization: (-0.506279,0.774674,-0.378895) - New Momentum Direction: (0.520648,-0.624831,0.581817) - New Polarization: (0.506279,0.774674,0.378895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.520648,-0.624831,0.581817) - Old Polarization: (0.506279,0.774674,0.378895) - New Momentum Direction: (0.520648,-0.624831,-0.581817) - New Polarization: (-0.506279,-0.774674,0.378895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.520648,-0.624831,-0.581817) - Old Polarization: (-0.506279,-0.774674,0.378895) - New Momentum Direction: (-0.520648,-0.624831,-0.581817) - New Polarization: (-0.506279,0.774674,-0.378895) + Old Momentum Direction: (-0.679506,0.295744,-0.671422) + Old Polarization: (-0.680638,-0.595727,0.42643) + New Momentum Direction: (-0.679506,0.295744,0.671422) + New Polarization: (0.680638,0.595727,0.42643) *** TotalInternalReflection *** Scattering Photon! -Old Momentum Direction: (-0.520648,-0.624831,-0.581817) -Old Polarization: (-0.506279,0.774674,-0.378895) -New Polarization: (-0.75537,0.648347,0.0951973) -Polarization Change: (-0.75537,0.648347,0.0951973) -New Momentum Direction: (0.254702,0.424334,-0.868946) -Momentum Change: (0.254702,0.424334,-0.868946) +Old Momentum Direction: (-0.679506,0.295744,0.671422) +Old Polarization: (0.680638,0.595727,0.42643) +New Polarization: (-0.483784,-0.865128,0.132311) +Polarization Change: (-0.483784,-0.865128,0.132311) +New Momentum Direction: (-0.486375,0.140082,-0.862448) +Momentum Change: (-0.486375,0.140082,-0.862448) Photon at Boundary! - Old Momentum Direction: (0.254702,0.424334,-0.868946) - Old Polarization: (-0.75537,0.648347,0.0951973) - New Momentum Direction: (0.346414,0.577127,-0.739542) - New Polarization: (-0.726775,0.66357,0.177405) + Old Momentum Direction: (-0.486375,0.140082,-0.862448) + Old Polarization: (-0.483784,-0.865128,0.132311) + New Momentum Direction: (-0.659716,0.190006,-0.727099) + New Polarization: (-0.505412,-0.828206,0.242146) *** FresnelRefraction *** -Track (trackID 949, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. +Track (trackID 546, parentID 1) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.578109,0.621009,0.52928) - Old Polarization: (-0.442688,0.783604,-0.435881) - New Momentum Direction: (0.578109,-0.621009,0.52928) - New Polarization: (0.442688,0.783604,0.435881) - *** TotalInternalReflection *** + Old Momentum Direction: (0.872424,0.140561,0.468102) + Old Polarization: (-0.484124,0.379996,0.78818) + New Momentum Direction: (0.748598,0.190682,0.635013) + New Polarization: (-0.659746,0.309357,0.684861) + *** FresnelRefraction *** +Track (trackID 545, parentID 1) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.578109,-0.621009,0.52928) - Old Polarization: (0.442688,0.783604,0.435881) - New Momentum Direction: (-0.578109,-0.621009,0.52928) - New Polarization: (0.442688,-0.783604,-0.435881) - *** TotalInternalReflection *** + Old Momentum Direction: (0.87777,0.334494,0.342977) + Old Polarization: (-0.478865,0.591001,0.649158) + New Momentum Direction: (0.759143,0.454474,0.466) + New Polarization: (-0.65077,0.514369,0.5585) + *** FresnelRefraction *** +Track (trackID 544, parentID 1) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. ** Photon absorbed! ** -Track (trackID 948, parentID 1) is processed with stopping code 2 +Track (trackID 543, parentID 1) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.780711,0.532994,-0.326202) + Old Polarization: (-0.585053,0.806851,-0.0818835) + New Momentum Direction: (0.52737,0.724686,-0.443521) + New Polarization: (-0.822261,0.566761,-0.0516596) + *** FresnelRefraction *** +Track (trackID 542, parentID 1) is processed with stopping code 2 ### pop requested out of 80 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.109671,-0.347076,0.931402) - Old Polarization: (-0.957359,-0.288856,0.0050893) - New Momentum Direction: (0.14888,-0.471159,0.869393) - New Polarization: (-0.948329,-0.317146,-0.00947638) + Old Momentum Direction: (0.728614,-0.599668,0.330939) + Old Polarization: (-0.641899,-0.429294,0.635352) + New Momentum Direction: (0.364665,-0.815234,0.449903) + New Polarization: (-0.903894,-0.193907,0.381281) *** FresnelRefraction *** -Track (trackID 947, parentID 1) is processed with stopping code 2 +Track (trackID 541, parentID 1) is processed with stopping code 2 ### pop requested out of 79 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0741868,-0.0575037,0.995585) - Old Polarization: (-0.996693,0.0289141,0.0759394) - New Momentum Direction: (0.100674,-0.0780344,0.991855) - New Polarization: (0.402199,-0.908637,-0.112311) + Old Momentum Direction: (0.803475,0.54822,-0.232128) + Old Polarization: (-0.559545,0.828557,0.0200376) + New Momentum Direction: (0.590732,0.743007,-0.314605) + New Polarization: (-0.781654,0.62369,0.0052702) *** FresnelRefraction *** -Track (trackID 946, parentID 1) is processed with stopping code 2 +Track (trackID 540, parentID 1) is processed with stopping code 2 ### pop requested out of 78 stacked tracks. ** Photon absorbed! ** -Track (trackID 945, parentID 1) is processed with stopping code 2 +Track (trackID 539, parentID 1) is processed with stopping code 2 ### pop requested out of 77 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.174598,-0.495076,0.851126) - Old Polarization: (-0.887669,-0.453208,-0.0815241) - New Momentum Direction: (0.236598,-0.67088,0.702809) - New Polarization: (-0.871131,-0.46682,-0.152349) + Old Momentum Direction: (0.873049,0.149216,0.464242) + Old Polarization: (-0.483436,0.389491,0.783956) + New Momentum Direction: (0.749941,0.202421,0.629773) + New Polarization: (-0.658531,0.318615,0.681778) *** FresnelRefraction *** -Track (trackID 944, parentID 1) is processed with stopping code 2 +Track (trackID 538, parentID 1) is processed with stopping code 2 ### pop requested out of 76 stacked tracks. - -** Photon absorbed! ** -Track (trackID 943, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.873114,0.438184,0.213697) + Old Polarization: (-0.482101,0.710902,0.512051) + New Momentum Direction: (0.75203,0.592431,0.288922) + New Polarization: (-0.655268,0.624601,0.424849) + *** FresnelRefraction *** +Track (trackID 537, parentID 1) is processed with stopping code 2 ### pop requested out of 75 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.968891,-0.245685,0.0298237) - Old Polarization: (-0.0147109,-0.177464,-0.984017) - New Momentum Direction: (0.941843,-0.333605,0.0404964) - New Polarization: (-0.0271992,-0.195784,-0.98027) + Old Momentum Direction: (0.721883,0.404561,-0.56144) + Old Polarization: (-0.649184,0.676896,-0.346946) + New Momentum Direction: (0.359055,0.545629,-0.757211) + New Polarization: (-0.905927,0.398855,-0.142167) *** FresnelRefraction *** -Track (trackID 942, parentID 1) is processed with stopping code 2 +Track (trackID 536, parentID 1) is processed with stopping code 2 ### pop requested out of 74 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.981858,0.181178,0.0559398) - Old Polarization: (0.000741529,0.291343,-0.956618) - New Momentum Direction: (0.966364,0.245734,0.0758716) - New Polarization: (-0.00136737,0.299919,-0.953964) + Old Momentum Direction: (0.834029,0.544731,-0.0875417) + Old Polarization: (-0.524674,0.832166,0.179492) + New Momentum Direction: (0.667838,0.734878,-0.1181) + New Polarization: (-0.724849,0.678183,0.121085) *** FresnelRefraction *** -Track (trackID 941, parentID 1) is processed with stopping code 2 +Track (trackID 535, parentID 1) is processed with stopping code 2 ### pop requested out of 73 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.202078,-0.523676,0.827603) - Old Polarization: (-0.863714,-0.493661,-0.101475) - New Momentum Direction: (0.271779,-0.704303,0.655815) - New Polarization: (-0.845345,-0.500396,-0.18707) + Old Momentum Direction: (0.579664,-0.212815,-0.786575) + Old Polarization: (-0.806042,-0.00816223,-0.591802) + New Momentum Direction: (0.784363,-0.287967,-0.549409) + New Polarization: (0.434463,-0.377134,0.817932) *** FresnelRefraction *** -Track (trackID 940, parentID 1) is processed with stopping code 2 +Track (trackID 534, parentID 1) is processed with stopping code 2 ### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.587132,-0.702314,0.402531) - Old Polarization: (-0.432376,-0.692472,-0.577523) - New Momentum Direction: (0.790286,-0.28616,0.541812) - New Polarization: (0.320539,0.946679,0.0324541) - *** FresnelRefraction *** -Track (trackID 939, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 533, parentID 1) is processed with stopping code 2 ### pop requested out of 71 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.169053,0.314591,0.934052) - Old Polarization: (-0.896954,0.441918,0.0134999) - New Momentum Direction: (0.228285,0.424816,0.876024) - New Polarization: (-0.858344,0.512472,-0.0248384) - *** FresnelRefraction *** -Track (trackID 938, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 532, parentID 1) is processed with stopping code 2 ### pop requested out of 70 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0796745,0.0354871,0.996189) - Old Polarization: (-0.988628,0.130679,0.0744147) - New Momentum Direction: (0.108321,0.0482463,0.992945) - New Polarization: (0.660516,0.74298,-0.108157) - *** FresnelRefraction *** -Track (trackID 937, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 531, parentID 1) is processed with stopping code 2 ### pop requested out of 69 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.852863,-0.505965,0.128935) - Old Polarization: (-0.142172,-0.462642,-0.875071) - New Momentum Direction: (0.705035,-0.687211,0.175122) - New Polarization: (-0.260873,-0.480943,-0.837042) + Old Momentum Direction: (0.845048,-0.11063,0.52312) + Old Polarization: (-0.513539,0.104529,0.851676) + New Momentum Direction: (0.689887,-0.149781,0.708252) + New Polarization: (-0.708783,0.0592481,0.702934) *** FresnelRefraction *** -Track (trackID 936, parentID 1) is processed with stopping code 2 +Track (trackID 530, parentID 1) is processed with stopping code 2 ### pop requested out of 68 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.742321,-0.623259,0.245981) - Old Polarization: (-0.258465,-0.605052,-0.753065) - New Momentum Direction: (-0.742321,-0.623259,0.245981) - New Polarization: (-0.0847574,0.451507,0.888233) - *** FresnelReflection *** + Old Momentum Direction: (0.694349,0.332099,-0.638428) + Old Polarization: (-0.679645,0.594248,-0.430059) + New Momentum Direction: (0.233032,0.448775,-0.862726) + New Polarization: (-0.94937,0.297197,-0.101839) + *** FresnelRefraction *** +Track (trackID 529, parentID 1) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.742321,-0.623259,0.245981) - Old Polarization: (-0.0847574,0.451507,0.888233) - New Momentum Direction: (-0.742321,0.623259,0.245981) - New Polarization: (0.0847574,0.451507,-0.888233) + Old Momentum Direction: (0.841222,-0.13842,0.522671) + Old Polarization: (-0.517512,0.0738684,0.852482) + New Momentum Direction: (0.681897,-0.187256,0.707073) + New Polarization: (-0.714844,0.0341995,0.698448) + *** FresnelRefraction *** +Track (trackID 528, parentID 1) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.85625,0.511182,0.0743543) + Old Polarization: (-0.501494,0.788104,0.356926) + New Momentum Direction: (0.714157,0.692696,0.100756) + New Polarization: (-0.68923,0.670726,0.274024) + *** FresnelRefraction *** +Track (trackID 527, parentID 1) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + +** Photon absorbed! ** +Track (trackID 526, parentID 1) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.844321,-0.112903,0.523808) + Old Polarization: (-0.514541,0.102026,0.851374) + New Momentum Direction: (0.687749,-0.15296,0.709651) + New Polarization: (-0.71073,0.0572395,0.701133) + *** FresnelRefraction *** +Track (trackID 525, parentID 1) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + +** Photon absorbed! ** +Track (trackID 524, parentID 1) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.568611,-0.630763,-0.528034) + Old Polarization: (-0.820785,-0.477731,-0.313186) + New Momentum Direction: (0.568611,0.630763,-0.528034) + New Polarization: (0.820785,-0.477731,0.313186) *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 935, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. - -** Photon absorbed! ** -Track (trackID 934, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.223503,0.416617,0.881179) - Old Polarization: (-0.833351,0.550574,-0.0489364) - New Momentum Direction: (0.303044,0.564883,0.76751) - New Polarization: (-0.820457,0.564353,-0.0914114) - *** FresnelRefraction *** -Track (trackID 933, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.856133,0.470833,0.212962) - Old Polarization: (-0.139228,0.607041,-0.782379) - New Momentum Direction: (0.711733,0.640025,0.289489) - New Polarization: (-0.255874,0.620016,-0.741693) - *** FresnelRefraction *** -Track (trackID 932, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.233196,0.424998,0.874641) - Old Polarization: (-0.824737,0.562965,-0.0536615) - New Momentum Direction: (0.315318,0.574666,0.755204) - New Polarization: (-0.811216,0.576178,-0.0997333) - *** FresnelRefraction *** -Track (trackID 931, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0813622,-0.218383,0.972466) - Old Polarization: (-0.987835,-0.147402,0.0495467) - New Momentum Direction: (0.110509,-0.296616,0.948581) - New Polarization: (-0.8042,-0.587503,-0.0900198) - *** FresnelRefraction *** -Track (trackID 930, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.603793,-0.702991,0.375816) - Old Polarization: (-0.415073,-0.679762,-0.604681) - New Momentum Direction: (0.819489,-0.261277,0.510071) - New Polarization: (0.319877,0.947021,-0.0288218) - *** FresnelRefraction *** -Track (trackID 929, parentID 1) is processed with stopping code 2 +Track (trackID 523, parentID 1) is processed with stopping code 2 ### pop requested out of 61 stacked tracks. - -** Photon absorbed! ** -Track (trackID 928, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.777402,-0.438493,0.450965) + Old Polarization: (-0.588522,-0.254017,0.76754) + New Momentum Direction: (0.519611,-0.595624,0.612565) + New Polarization: (-0.826621,-0.169116,0.536747) + *** FresnelRefraction *** +Track (trackID 522, parentID 1) is processed with stopping code 2 ### pop requested out of 60 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.148887,-0.430624,0.890166) - Old Polarization: (-0.921298,-0.387427,-0.0333264) - New Momentum Direction: (0.20065,-0.580338,0.78927) - New Polarization: (-0.914539,-0.399799,-0.0614697) + Old Momentum Direction: (0.770327,-0.467214,0.433943) + Old Polarization: (-0.596144,-0.28618,0.750142) + New Momentum Direction: (0.501119,-0.634075,0.588922) + New Polarization: (-0.837059,-0.182491,0.51578) *** FresnelRefraction *** -Track (trackID 927, parentID 1) is processed with stopping code 2 +Track (trackID 521, parentID 1) is processed with stopping code 2 ### pop requested out of 59 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.239124,-0.579673,0.778973) - Old Polarization: (-0.819216,-0.551109,-0.158631) - New Momentum Direction: (0.32288,-0.78271,0.532085) - New Polarization: (-0.795024,-0.52933,-0.29622) + Old Momentum Direction: (0.84503,-0.135511,0.517263) + Old Polarization: (-0.511555,0.0767597,0.855815) + New Momentum Direction: (0.694761,-0.182274,0.695761) + New Polarization: (-0.702466,0.0357416,0.710819) *** FresnelRefraction *** -Track (trackID 926, parentID 1) is processed with stopping code 2 +Track (trackID 520, parentID 1) is processed with stopping code 2 ### pop requested out of 58 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.430022,0.599234,0.675277) -Old Polarization: (-0.60526,0.746333,-0.276853) -New Polarization: (-0.748823,0.0260291,-0.662259) -Polarization Change: (-0.748823,0.0260291,-0.662259) -New Momentum Direction: (-0.151079,0.966218,0.208802) -Momentum Change: (-0.151079,0.966218,0.208802) - Photon at Boundary! - Old Momentum Direction: (-0.151079,0.966218,0.208802) - Old Polarization: (-0.748823,0.0260291,-0.662259) - New Momentum Direction: (-0.205527,0.936521,0.284054) - New Polarization: (-0.877934,-0.0481889,-0.476351) - *** FresnelRefraction *** -Track (trackID 925, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 519, parentID 1) is processed with stopping code 2 ### pop requested out of 57 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.456677,-0.71486,0.529549) - Old Polarization: (-0.576397,-0.691166,-0.435954) - New Momentum Direction: (0.620442,-0.312168,0.719446) - New Polarization: (0.127264,0.945283,0.300408) + Old Momentum Direction: (0.876256,0.428107,0.221134) + Old Polarization: (-0.476974,0.705557,0.524105) + New Momentum Direction: (0.761079,0.576316,0.297689) + New Polarization: (-0.645162,0.624961,0.439533) *** FresnelRefraction *** -Track (trackID 924, parentID 1) is processed with stopping code 2 +Track (trackID 518, parentID 1) is processed with stopping code 2 ### pop requested out of 56 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.820211,-0.549303,0.159749) - Old Polarization: (-0.177877,-0.510301,-0.8414) - New Momentum Direction: (0.629643,-0.745979,0.216947) - New Polarization: (-0.326055,-0.507213,-0.797761) + Old Momentum Direction: (0.684556,-0.706817,0.178303) + Old Polarization: (-0.690177,-0.549729,0.470588) + New Momentum Direction: (0.928376,-0.282215,0.24181) + New Polarization: (0.124811,0.849624,0.512408) *** FresnelRefraction *** -Track (trackID 923, parentID 1) is processed with stopping code 2 +Track (trackID 517, parentID 1) is processed with stopping code 2 ### pop requested out of 55 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.226936,-0.566822,0.791968) - Old Polarization: (-0.83198,-0.53555,-0.144899) - New Momentum Direction: (0.306728,-0.766122,0.564778) - New Polarization: (-0.80817,-0.52308,-0.270645) + Old Momentum Direction: (0.680766,-0.717241,0.148739) + Old Polarization: (-0.694766,-0.567912,0.441335) + New Momentum Direction: (0.919033,-0.339204,0.200797) + New Polarization: (0.208196,0.850261,0.483436) *** FresnelRefraction *** -Track (trackID 922, parentID 1) is processed with stopping code 2 +Track (trackID 516, parentID 1) is processed with stopping code 2 ### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.825541,0.506955,0.247948) - Old Polarization: (-0.173152,0.645703,-0.743697) - New Momentum Direction: (0.640887,0.689576,0.337266) - New Polarization: (-0.318308,0.638532,-0.700683) - *** FresnelRefraction *** -Track (trackID 921, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. ** Photon absorbed! ** -Track (trackID 920, parentID 1) is processed with stopping code 2 +Track (trackID 515, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67226,-0.730647,0.119252) + Old Polarization: (-0.704074,-0.581219,0.408) + New Momentum Direction: (0.908477,-0.385616,0.161154) + New Polarization: (0.283523,0.851939,0.440244) + *** FresnelRefraction *** +Track (trackID 514, parentID 1) is processed with stopping code 2 ### pop requested out of 52 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.989294,-0.144344,0.0215037) - Old Polarization: (0.0118762,-0.0672316,-0.997667) - New Momentum Direction: (0.980322,-0.195251,0.0290876) - New Polarization: (-0.0217001,-0.253043,-0.967212) + Old Momentum Direction: (0.574139,-0.303462,-0.760444) + Old Polarization: (-0.81389,-0.110408,-0.570432) + New Momentum Direction: (0.773139,-0.408643,-0.485043) + New Polarization: (0.235644,-0.524944,0.817866) *** FresnelRefraction *** -Track (trackID 919, parentID 1) is processed with stopping code 2 +Track (trackID 513, parentID 1) is processed with stopping code 2 ### pop requested out of 51 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.424146,-0.703369,0.570415) - Old Polarization: (-0.613403,-0.686518,-0.390423) - New Momentum Direction: (0.573397,-0.2767,0.771137) - New Polarization: (0.0248691,0.946685,0.321198) + Old Momentum Direction: (0.656711,0.223625,-0.720224) + Old Polarization: (-0.720299,0.468881,-0.511195) + New Momentum Direction: (0.893319,0.304195,-0.330826) + New Polarization: (0.10197,0.579726,0.808406) *** FresnelRefraction *** -Track (trackID 918, parentID 1) is processed with stopping code 2 +Track (trackID 512, parentID 1) is processed with stopping code 2 ### pop requested out of 50 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.789005,0.541439,-0.290371) + Old Polarization: (-0.575971,0.816346,-0.0428496) + New Momentum Direction: (-0.789005,0.541439,-0.290371) + New Polarization: (-0.13506,-0.61391,-0.777736) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.789005,0.541439,-0.290371) + Old Polarization: (-0.13506,-0.61391,-0.777736) + New Momentum Direction: (-0.789005,-0.541439,-0.290371) + New Polarization: (0.13506,-0.61391,0.777736) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 917, parentID 1) is processed with stopping code 2 +Track (trackID 511, parentID 1) is processed with stopping code 2 ### pop requested out of 49 stacked tracks. ** Photon absorbed! ** -Track (trackID 916, parentID 1) is processed with stopping code 2 +Track (trackID 510, parentID 1) is processed with stopping code 2 ### pop requested out of 48 stacked tracks. - -** Photon absorbed! ** -Track (trackID 915, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.852981,-0.0397315,0.520427) + Old Polarization: (-0.505947,0.182005,0.843144) + New Momentum Direction: (0.705073,-0.0539811,0.707077) + New Polarization: (-0.69777,0.124986,0.705334) + *** FresnelRefraction *** +Track (trackID 509, parentID 1) is processed with stopping code 2 ### pop requested out of 47 stacked tracks. ** Photon absorbed! ** -Track (trackID 914, parentID 1) is processed with stopping code 2 +Track (trackID 508, parentID 1) is processed with stopping code 2 ### pop requested out of 46 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0832444,0.0438709,0.995563) - Old Polarization: (-0.987156,0.140331,0.0763575) - New Momentum Direction: (0.112923,0.0595121,0.99182) - New Polarization: (0.556567,0.823115,-0.112757) + Old Momentum Direction: (0.832926,0.545492,-0.0931288) + Old Polarization: (-0.525955,0.832676,0.173266) + New Momentum Direction: (0.665155,0.736055,-0.125663) + New Polarization: (-0.726984,0.676774,0.11607) *** FresnelRefraction *** -Track (trackID 913, parentID 1) is processed with stopping code 2 +Track (trackID 507, parentID 1) is processed with stopping code 2 ### pop requested out of 45 stacked tracks. - -** Photon absorbed! ** -Track (trackID 912, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.842591,0.538152,-0.0208043) + Old Polarization: (-0.516405,0.818299,0.252413) + New Momentum Direction: (0.683945,0.728989,-0.0281818) + New Polarization: (-0.713704,0.676608,0.181186) + *** FresnelRefraction *** +Track (trackID 506, parentID 1) is processed with stopping code 2 ### pop requested out of 44 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.948605,-0.312669,0.0488542) - Old Polarization: (-0.0336276,-0.253093,-0.966857) - New Momentum Direction: (0.903644,-0.423149,0.0661167) - New Polarization: (-0.0617426,-0.281474,-0.95758) + Old Momentum Direction: (0.574214,-0.729576,-0.37148) + Old Polarization: (-0.810404,-0.570966,-0.131317) + New Momentum Direction: (0.780696,-0.368002,-0.505062) + New Polarization: (0.064795,0.851528,-0.52029) *** FresnelRefraction *** -Track (trackID 911, parentID 1) is processed with stopping code 2 +Track (trackID 505, parentID 1) is processed with stopping code 2 ### pop requested out of 43 stacked tracks. ** Photon absorbed! ** -Track (trackID 910, parentID 1) is processed with stopping code 2 +Track (trackID 504, parentID 1) is processed with stopping code 2 ### pop requested out of 42 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.236686,0.431429,0.870545) -Old Polarization: (-0.820202,0.569023,-0.0590006) -New Polarization: (0.784782,-0.156444,-0.599702) -Polarization Change: (0.784782,-0.156444,-0.599702) -New Momentum Direction: (0.380824,-0.64168,0.665748) -Momentum Change: (0.380824,-0.64168,0.665748) Photon at Boundary! - Old Momentum Direction: (0.380824,-0.64168,0.665748) - Old Polarization: (0.784782,-0.156444,-0.599702) - New Momentum Direction: (0.380824,-0.64168,-0.665748) - New Polarization: (-0.784782,0.156444,-0.599702) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.380824,-0.64168,-0.665748) - Old Polarization: (-0.784782,0.156444,-0.599702) - New Momentum Direction: (0.380824,0.64168,-0.665748) - New Polarization: (0.784782,0.156444,0.599702) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.380824,0.64168,-0.665748) - Old Polarization: (0.784782,0.156444,0.599702) - New Momentum Direction: (-0.380824,0.64168,-0.665748) - New Polarization: (0.784782,-0.156444,-0.599702) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 909, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.569972,-0.706038,-0.420289) + Old Polarization: (-0.81567,-0.547863,-0.185818) + New Momentum Direction: (0.773526,-0.276257,-0.570386) + New Polarization: (-0.0807188,0.849722,-0.521015) + *** FresnelRefraction *** +Track (trackID 503, parentID 1) is processed with stopping code 2 ### pop requested out of 41 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.492728,0.615985,0.61464) - Old Polarization: (-0.537189,0.770995,-0.342044) - New Momentum Direction: (0.492728,-0.615985,0.61464) - New Polarization: (0.537189,0.770995,0.342044) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.492728,-0.615985,0.61464) - Old Polarization: (0.537189,0.770995,0.342044) - New Momentum Direction: (0.492728,-0.615985,-0.61464) - New Polarization: (-0.537189,-0.770995,0.342044) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.492728,-0.615985,-0.61464) - Old Polarization: (-0.537189,-0.770995,0.342044) - New Momentum Direction: (-0.492728,-0.615985,-0.61464) - New Polarization: (-0.537189,0.770995,-0.342044) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.492728,-0.615985,-0.61464) - Old Polarization: (-0.537189,0.770995,-0.342044) - New Momentum Direction: (-0.492728,0.615985,-0.61464) - New Polarization: (0.537189,0.770995,0.342044) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.492728,0.615985,-0.61464) - Old Polarization: (0.537189,0.770995,0.342044) - New Momentum Direction: (-0.492728,0.615985,0.61464) - New Polarization: (-0.537189,-0.770995,0.342044) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.492728,0.615985,0.61464) - Old Polarization: (-0.537189,-0.770995,0.342044) - New Momentum Direction: (0.492728,0.615985,0.61464) - New Polarization: (-0.537189,0.770995,-0.342044) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.492728,0.615985,0.61464) - Old Polarization: (-0.537189,0.770995,-0.342044) - New Momentum Direction: (0.492728,-0.615985,0.61464) - New Polarization: (0.537189,0.770995,0.342044) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.492728,-0.615985,0.61464) - Old Polarization: (0.537189,0.770995,0.342044) - New Momentum Direction: (0.492728,-0.615985,-0.61464) - New Polarization: (-0.537189,-0.770995,0.342044) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.492728,-0.615985,-0.61464) - Old Polarization: (-0.537189,-0.770995,0.342044) - New Momentum Direction: (-0.492728,-0.615985,-0.61464) - New Polarization: (-0.537189,0.770995,-0.342044) - *** TotalInternalReflection *** + Old Momentum Direction: (0.845581,-0.110238,0.522342) + Old Polarization: (-0.512701,0.104966,0.852127) + New Momentum Direction: (0.691696,-0.14913,0.706624) + New Polarization: (-0.707036,0.0595481,0.704666) + *** FresnelRefraction *** +Track (trackID 502, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. ** Photon absorbed! ** -Track (trackID 908, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0832462,-0.185993,0.979018) - Old Polarization: (-0.991536,-0.113677,0.0627142) - New Momentum Direction: (0.0832462,-0.185993,-0.979018) - New Polarization: (0.987671,0.146099,0.0562261) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.0832462,-0.185993,-0.979018) - Old Polarization: (0.987671,0.146099,0.0562261) - New Momentum Direction: (0.112482,-0.251314,-0.961347) - New Polarization: (0.993032,0.0626643,0.0998079) - *** FresnelRefraction *** -Track (trackID 907, parentID 1) is processed with stopping code 2 +Track (trackID 501, parentID 1) is processed with stopping code 2 ### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.753957,-0.615443,0.229738) - Old Polarization: (-0.247704,-0.590244,-0.768281) - New Momentum Direction: (0.461022,-0.831355,0.310336) - New Polarization: (-0.451489,-0.520819,-0.724503) - *** FresnelRefraction *** -Track (trackID 906, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 500, parentID 1) is processed with stopping code 2 ### pop requested out of 38 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739254,-0.62988,0.238232) - Old Polarization: (-0.266648,-0.598633,-0.755339) - New Momentum Direction: (0.404462,-0.855416,0.323534) - New Polarization: (-0.493036,-0.501898,-0.710644) + Old Momentum Direction: (0.872252,0.121982,0.4736) + Old Polarization: (-0.483482,0.360885,0.797501) + New Momentum Direction: (0.749531,0.165111,0.641048) + New Polarization: (-0.658002,0.291703,0.694221) *** FresnelRefraction *** -Track (trackID 905, parentID 1) is processed with stopping code 2 +Track (trackID 499, parentID 1) is processed with stopping code 2 ### pop requested out of 37 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.076802,-0.0607623,0.995193) - Old Polarization: (-0.996598,0.0252456,0.0784518) - New Momentum Direction: (0.103965,-0.0822527,0.991174) - New Polarization: (0.38095,-0.91728,-0.116079) + Old Momentum Direction: (0.743731,0.473631,-0.471739) + Old Polarization: (-0.625399,0.742226,-0.240784) + New Momentum Direction: (0.417233,0.643904,-0.64133) + New Polarization: (-0.880649,0.460743,-0.110335) *** FresnelRefraction *** -Track (trackID 904, parentID 1) is processed with stopping code 2 +Track (trackID 498, parentID 1) is processed with stopping code 2 ### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.807325,0.549281,-0.215678) + Old Polarization: (-0.555159,0.830877,0.0379778) + New Momentum Direction: (0.601061,0.74391,-0.292101) + New Polarization: (-0.774494,0.632359,0.0167768) + *** FresnelRefraction *** +Track (trackID 497, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. ** Photon absorbed! ** -Track (trackID 903, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.135886,-0.409263,0.902241) - Old Polarization: (-0.932441,-0.360582,-0.0231278) - New Momentum Direction: (0.183744,-0.553401,0.812395) - New Polarization: (-0.927648,-0.370984,-0.0429015) - *** FresnelRefraction *** -Track (trackID 902, parentID 1) is processed with stopping code 2 +Track (trackID 496, parentID 1) is processed with stopping code 2 ### pop requested out of 34 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.998344,0.0509066,0.0267774) - Old Polarization: (0.0189681,0.148123,-0.988787) - New Momentum Direction: (0.996953,0.069039,0.0363152) - New Polarization: (-0.0334021,0.798506,-0.60106) + Old Momentum Direction: (0.809608,-0.301289,0.503746) + Old Polarization: (-0.553118,-0.104357,0.826541) + New Momentum Direction: (0.604449,-0.408912,0.68369) + New Polarization: (-0.772778,-0.0924725,0.627904) *** FresnelRefraction *** -Track (trackID 901, parentID 1) is processed with stopping code 2 +Track (trackID 495, parentID 1) is processed with stopping code 2 ### pop requested out of 33 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.094974,-0.270875,0.957918) - Old Polarization: (-0.97753,-0.207286,0.0383033) - New Momentum Direction: (0.128446,-0.366341,0.921572) - New Polarization: (-0.8733,-0.482137,-0.0699397) + Old Momentum Direction: (0.685898,-0.707912,0.168539) + Old Polarization: (-0.689065,-0.557365,0.463178) + New Momentum Direction: (0.92609,-0.300956,0.227559) + New Polarization: (0.151642,0.849153,0.505909) *** FresnelRefraction *** -Track (trackID 900, parentID 1) is processed with stopping code 2 +Track (trackID 494, parentID 1) is processed with stopping code 2 ### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.923039,-0.377385,0.0747026) - Old Polarization: (-0.0578317,-0.32809,-0.942875) - New Momentum Direction: (0.855118,-0.508565,0.100669) - New Polarization: (-0.105205,-0.360365,-0.92686) + Old Momentum Direction: (0.88181,0.264835,0.390223) + Old Polarization: (-0.471352,0.522056,0.710834) + New Momentum Direction: (0.771862,0.357034,0.526075) + New Polarization: (-0.635609,0.453062,0.625089) *** FresnelRefraction *** -Track (trackID 899, parentID 1) is processed with stopping code 2 +Track (trackID 493, parentID 1) is processed with stopping code 2 ### pop requested out of 31 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.545144,-0.710738,0.444601) - Old Polarization: (-0.479352,-0.699347,-0.530221) - New Momentum Direction: (0.734892,-0.317349,0.599353) - New Polarization: (0.290616,0.945868,0.144488) + Old Momentum Direction: (0.630511,-0.772578,-0.0746883) + Old Polarization: (-0.75078,-0.631463,0.193865) + New Momentum Direction: (0.85004,-0.517003,-0.100693) + New Polarization: (0.520638,0.853695,0.0119188) *** FresnelRefraction *** -Track (trackID 898, parentID 1) is processed with stopping code 2 +Track (trackID 492, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.104475,0.113775,0.987998) - Old Polarization: (-0.972352,0.220304,0.0774506) - New Momentum Direction: (0.140602,0.153118,0.978154) - New Polarization: (-0.17324,0.976531,-0.127962) + Old Momentum Direction: (0.707492,-0.662314,0.246567) + Old Polarization: (-0.665116,-0.506062,0.549109) + New Momentum Direction: (0.297411,-0.894757,0.333101) + New Polarization: (-0.929359,-0.191385,0.315696) *** FresnelRefraction *** -Track (trackID 897, parentID 1) is processed with stopping code 2 +Track (trackID 491, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.283015,-0.632549,0.720961) - Old Polarization: (-0.766606,-0.600921,-0.226296) - New Momentum Direction: (0.384525,-0.859428,0.336933) - New Polarization: (-0.744539,-0.504515,-0.437179) + Old Momentum Direction: (0.776983,0.52289,-0.350549) + Old Polarization: (-0.588646,0.800852,-0.110143) + New Momentum Direction: (0.521709,0.708616,-0.475061) + New Polarization: (-0.824941,0.560969,-0.0691843) *** FresnelRefraction *** -Track (trackID 896, parentID 1) is processed with stopping code 2 +Track (trackID 490, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.965807,0.247182,0.07822) - Old Polarization: (-0.0175831,0.363456,-0.931446) - New Momentum Direction: (0.936049,0.335472,0.106159) - New Polarization: (-0.0324773,0.382785,-0.923267) - *** FresnelRefraction *** -Track (trackID 895, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0967706,0.109141,0.989305) - Old Polarization: (-0.974444,0.212832,0.0718371) - New Momentum Direction: (0.131009,0.147757,0.980308) - New Polarization: (-0.197814,0.972843,-0.120195) - *** FresnelRefraction *** -Track (trackID 894, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.935929,0.332262,0.116783) - Old Polarization: (-0.0511006,0.456198,-0.88841) - New Momentum Direction: (0.878175,0.451276,0.158613) - New Polarization: (-0.0943103,0.48843,-0.867492) - *** FresnelRefraction *** -Track (trackID 893, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.762601,0.560319,0.323236) - Old Polarization: (-0.240012,0.709119,-0.662982) - New Momentum Direction: (0.48081,0.759508,0.438143) - New Polarization: (-0.439895,0.641202,-0.628771) - *** FresnelRefraction *** -Track (trackID 892, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.742301,-0.624089,0.243929) - Old Polarization: (-0.259418,-0.603313,-0.754133) - New Momentum Direction: (0.429729,-0.841001,0.32871) - New Polarization: (-0.471548,-0.519471,-0.712596) - *** FresnelRefraction *** -Track (trackID 891, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0738969,-0.167971,0.983018) - Old Polarization: (-0.99404,-0.0916225,0.0590697) - New Momentum Direction: (0.100549,-0.228552,0.968325) - New Polarization: (-0.666385,-0.738173,-0.105034) - *** FresnelRefraction *** -Track (trackID 890, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.998896,-0.0396178,0.0252506) - Old Polarization: (0.0271697,0.0486725,-0.998445) - New Momentum Direction: (0.997995,-0.053371,0.0340163) - New Polarization: (-0.0437133,-0.969951,-0.239343) - *** FresnelRefraction *** -Track (trackID 889, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.159044,0.312906,0.936373) - Old Polarization: (-0.901132,0.433468,0.00820657) - New Momentum Direction: (0.216391,0.425732,0.878594) - New Polarization: (-0.878211,0.478027,-0.0153365) - *** FresnelRefraction *** -Track (trackID 888, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.182609,0.344271,0.92094) - Old Polarization: (-0.880739,0.473597,-0.00240475) - New Momentum Direction: (0.246917,0.46551,0.849902) - New Polarization: (-0.880024,0.474909,-0.00444975) - *** FresnelRefraction *** -Track (trackID 887, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. ** Photon absorbed! ** -Track (trackID 886, parentID 1) is processed with stopping code 2 +Track (trackID 489, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.870373,0.46312,0.167244) + Old Polarization: (-0.484062,0.742567,0.462902) + New Momentum Direction: (0.747909,0.624339,0.225464) + New Polarization: (-0.657822,0.651621,0.377704) + *** FresnelRefraction *** +Track (trackID 488, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.563455,-0.355573,-0.745712) + Old Polarization: (-0.823113,-0.164341,-0.543578) + New Momentum Direction: (0.563455,-0.355573,0.745712) + New Polarization: (0.239684,0.934174,0.264331) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.563455,-0.355573,0.745712) + Old Polarization: (0.239684,0.934174,0.264331) + New Momentum Direction: (-0.563455,-0.355573,0.745712) + New Polarization: (0.239684,-0.934174,-0.264331) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.563455,-0.355573,0.745712) + Old Polarization: (0.239684,-0.934174,-0.264331) + New Momentum Direction: (-0.563455,0.355573,0.745712) + New Polarization: (-0.239684,-0.934174,0.264331) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.563455,0.355573,0.745712) + Old Polarization: (-0.239684,-0.934174,0.264331) + New Momentum Direction: (-0.764059,0.482165,0.428637) + New Polarization: (-0.644851,-0.590858,-0.484823) + *** FresnelRefraction *** +Track (trackID 487, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + +** Photon absorbed! ** +Track (trackID 486, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.822741,0.545425,-0.160028) + Old Polarization: (-0.536414,0.838147,0.0988375) + New Momentum Direction: (0.644735,0.733487,-0.215206) + New Polarization: (-0.741316,0.668643,0.0580329) + *** FresnelRefraction *** +Track (trackID 485, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.667333,-0.734859,0.121034) +Old Polarization: (-0.708781,-0.57675,0.406187) +New Polarization: (-0.0206581,-0.999484,-0.0245961) +Polarization Change: (-0.0206581,-0.999484,-0.0245961) +New Momentum Direction: (0.856171,-0.00498143,-0.516669) +Momentum Change: (0.856171,-0.00498143,-0.516669) +Scattering Photon! +Old Momentum Direction: (0.856171,-0.00498143,-0.516669) +Old Polarization: (-0.0206581,-0.999484,-0.0245961) +New Polarization: (-0.384052,0.911969,-0.144282) +Polarization Change: (-0.384052,0.911969,-0.144282) +New Momentum Direction: (-0.840436,-0.409992,-0.354364) +Momentum Change: (-0.840436,-0.409992,-0.354364) + Photon at Boundary! + Old Momentum Direction: (-0.840436,-0.409992,-0.354364) + Old Polarization: (-0.384052,0.911969,-0.144282) + New Momentum Direction: (-0.676146,-0.557415,-0.481784) + New Polarization: (0.601193,-0.0394091,-0.798131) + *** FresnelRefraction *** +Track (trackID 484, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.877689,0.306833,0.368124) + Old Polarization: (-0.479229,0.560054,0.67578) + New Momentum Direction: (0.758572,0.417187,0.500522) + New Polarization: (-0.651588,0.484321,0.583838) + *** FresnelRefraction *** +Track (trackID 483, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.575797,-0.708333,-0.408316) + Old Polarization: (-0.811074,-0.557811,-0.176084) + New Momentum Direction: (0.777445,-0.302717,-0.55131) + New Polarization: (-0.0425991,0.849197,-0.526355) + *** FresnelRefraction *** +Track (trackID 482, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.741062,0.443517,-0.504104) +Old Polarization: (-0.62775,0.72405,-0.2858) +New Polarization: (0.285202,-0.444881,0.848964) +Polarization Change: (0.285202,-0.444881,0.848964) +New Momentum Direction: (0.621797,-0.588186,-0.517113) +Momentum Change: (0.621797,-0.588186,-0.517113) + +** Photon absorbed! ** +Track (trackID 481, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.595241,-0.0834759,-0.799199) + Old Polarization: (-0.787967,0.134267,-0.6009) + New Momentum Direction: (0.807863,-0.113294,-0.578379) + New Polarization: (0.57499,-0.0639551,0.815657) + *** FresnelRefraction *** +Track (trackID 480, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. ** Photon absorbed! ** -Track (trackID 885, parentID 1) is processed with stopping code 2 +Track (trackID 479, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.573543,0.626286,0.528028) - Old Polarization: (-0.448294,0.779463,-0.437573) - New Momentum Direction: (0.573543,-0.626286,0.528028) - New Polarization: (0.448294,0.779463,0.437573) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.573543,-0.626286,0.528028) - Old Polarization: (0.448294,0.779463,0.437573) - New Momentum Direction: (-0.573543,-0.626286,0.528028) - New Polarization: (0.448294,-0.779463,-0.437573) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.573543,-0.626286,0.528028) - Old Polarization: (0.448294,-0.779463,-0.437573) - New Momentum Direction: (-0.573543,-0.626286,-0.528028) - New Polarization: (-0.448294,0.779463,-0.437573) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 884, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.569047,-0.328113,-0.754008) + Old Polarization: (-0.818353,-0.136178,-0.558349) + New Momentum Direction: (0.768744,-0.443259,-0.461036) + New Polarization: (0.171239,-0.551895,0.816143) + *** FresnelRefraction *** +Track (trackID 478, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.730062,-0.637219,0.246903) - Old Polarization: (-0.276902,-0.606144,-0.745597) - New Momentum Direction: (0.371528,-0.865708,0.335436) - New Polarization: (-0.514007,-0.49267,-0.702192) + Old Momentum Direction: (0.566912,-0.324542,-0.757155) + Old Polarization: (-0.819692,-0.130803,-0.55767) + New Momentum Direction: (0.767965,-0.439639,-0.465777) + New Polarization: (0.180772,-0.548872,0.816125) *** FresnelRefraction *** -Track (trackID 883, parentID 1) is processed with stopping code 2 +Track (trackID 477, parentID 1) is processed with stopping code 2 ### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0846812,0.0740623,0.993652) - Old Polarization: (-0.982426,0.17268,0.0708538) - New Momentum Direction: (0.115205,0.100759,0.988218) - New Polarization: (0.109365,0.987508,-0.113436) - *** FresnelRefraction *** -Track (trackID 882, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 476, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.998798,0.0360738,0.0331944) - Old Polarization: (0.0281079,0.133354,-0.99067) - New Momentum Direction: (0.997821,0.0485525,0.0446771) - New Polarization: (-0.0452429,0.996354,-0.0723249) + Old Momentum Direction: (0.823796,0.54939,-0.139753) + Old Polarization: (-0.53637,0.835187,0.121531) + New Momentum Direction: (0.643111,0.742138,-0.188784) + New Polarization: (-0.74393,0.663945,0.0757972) *** FresnelRefraction *** -Track (trackID 881, parentID 1) is processed with stopping code 2 +Track (trackID 475, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.415391,0.586915,0.694968) - Old Polarization: (-0.622686,0.740407,-0.253102) - New Momentum Direction: (0.415391,0.586915,-0.694968) - New Polarization: (0.70185,-0.692811,-0.165589) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.415391,0.586915,-0.694968) - Old Polarization: (0.70185,-0.692811,-0.165589) - New Momentum Direction: (0.415391,-0.586915,-0.694968) - New Polarization: (-0.70185,-0.692811,0.165589) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.415391,-0.586915,-0.694968) - Old Polarization: (-0.70185,-0.692811,0.165589) - New Momentum Direction: (-0.415391,-0.586915,-0.694968) - New Polarization: (-0.70185,0.692811,-0.165589) - *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 880, parentID 1) is processed with stopping code 2 +Track (trackID 474, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.103064,-0.331857,0.937683) - Old Polarization: (-0.96258,-0.270813,0.0099561) - New Momentum Direction: (0.140182,-0.451378,0.881253) - New Polarization: (-0.943987,-0.329459,-0.0185875) + Old Momentum Direction: (0.641134,-0.767354,-0.0107257) + Old Polarization: (-0.738353,-0.620593,0.264005) + New Momentum Direction: (0.867074,-0.497968,-0.0145055) + New Polarization: (0.492962,0.853427,0.169267) *** FresnelRefraction *** -Track (trackID 879, parentID 1) is processed with stopping code 2 +Track (trackID 473, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.713026,0.58906,0.380267) - Old Polarization: (-0.293845,0.743487,-0.600735) - New Momentum Direction: (0.316116,0.797066,0.514545) - New Polarization: (-0.544744,0.596536,-0.589406) + Old Momentum Direction: (0.867998,0.464342,0.175974) + Old Polarization: (-0.488719,0.736073,0.468348) + New Momentum Direction: (0.739505,0.629465,0.238551) + New Polarization: (-0.66757,0.64024,0.380057) *** FresnelRefraction *** -Track (trackID 878, parentID 1) is processed with stopping code 2 +Track (trackID 472, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.711219,0.590324,0.381687) - Old Polarization: (-0.29608,0.744007,-0.598991) - New Momentum Direction: (0.306923,0.799225,0.516757) - New Polarization: (-0.55023,0.592035,-0.588847) + Old Momentum Direction: (0.793194,-0.393129,0.465073) + Old Polarization: (-0.569835,-0.209792,0.794529) + New Momentum Direction: (0.571329,-0.529829,0.626789) + New Polarization: (-0.793038,-0.159711,0.587863) *** FresnelRefraction *** -Track (trackID 877, parentID 1) is processed with stopping code 2 +Track (trackID 471, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.999623,-0.0085773,0.0260782) - Old Polarization: (0.0267023,0.0832176,-0.996174) - New Momentum Direction: (0.999314,-0.0115678,0.0351704) - New Polarization: (-0.0364572,-0.47301,0.880302) - *** FresnelRefraction *** -Track (trackID 876, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.562024,-0.63058,-0.535256) + Old Polarization: (-0.825449,-0.468735,-0.314517) + New Momentum Direction: (0.562024,0.63058,-0.535256) + New Polarization: (0.825449,-0.468735,0.314517) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.562024,0.63058,-0.535256) + Old Polarization: (0.825449,-0.468735,0.314517) + New Momentum Direction: (-0.562024,0.63058,-0.535256) + New Polarization: (0.825449,0.468735,-0.314517) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.562024,0.63058,-0.535256) + Old Polarization: (0.825449,0.468735,-0.314517) + New Momentum Direction: (-0.562024,0.63058,0.535256) + New Polarization: (-0.825449,-0.468735,-0.314517) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 470, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.349672,-0.676002,0.648653) - Old Polarization: (-0.69454,-0.651709,-0.304777) - New Momentum Direction: (0.349672,0.676002,0.648653) - New Polarization: (0.15733,0.640158,-0.751961) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.349672,0.676002,0.648653) - Old Polarization: (0.15733,0.640158,-0.751961) - New Momentum Direction: (0.349672,0.676002,-0.648653) - New Polarization: (-0.15733,-0.640158,-0.751961) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.349672,0.676002,-0.648653) - Old Polarization: (-0.15733,-0.640158,-0.751961) - New Momentum Direction: (-0.349672,0.676002,-0.648653) - New Polarization: (-0.15733,0.640158,0.751961) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.349672,0.676002,-0.648653) - Old Polarization: (-0.15733,0.640158,0.751961) - New Momentum Direction: (-0.349672,-0.676002,-0.648653) - New Polarization: (0.734772,-0.627423,0.25778) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.349672,-0.676002,-0.648653) - Old Polarization: (0.734772,-0.627423,0.25778) - New Momentum Direction: (-0.349672,-0.676002,0.648653) - New Polarization: (-0.734772,0.627423,0.25778) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.349672,-0.676002,0.648653) - Old Polarization: (-0.734772,0.627423,0.25778) - New Momentum Direction: (-0.474098,-0.0420635,0.879467) - New Polarization: (-0.30772,0.943785,-0.120744) + Old Momentum Direction: (0.881106,0.316724,0.351195) + Old Polarization: (-0.472855,0.577817,0.665233) + New Momentum Direction: (0.769438,0.427765,0.474323) + New Polarization: (-0.638676,0.50642,0.579337) *** FresnelRefraction *** -Track (trackID 875, parentID 1) is processed with stopping code 2 +Track (trackID 469, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.087072,-0.259888,0.961705) - Old Polarization: (-0.980619,-0.19244,0.0367802) - New Momentum Direction: (0.118369,-0.353303,0.92799) - New Polarization: (-0.878705,-0.472523,-0.0678153) + Old Momentum Direction: (0.871845,0.10759,0.477819) + Old Polarization: (-0.48342,0.345762,0.80421) + New Momentum Direction: (0.749464,0.145431,0.645874) + New Polarization: (-0.657504,0.277571,0.700459) *** FresnelRefraction *** -Track (trackID 874, parentID 1) is processed with stopping code 2 +Track (trackID 468, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.915027,-0.394584,0.0838379) - Old Polarization: (-0.064864,-0.349048,-0.934857) - New Momentum Direction: (-0.915027,-0.394584,0.0838379) - New Polarization: (0.036441,0.126127,0.991345) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.915027,-0.394584,0.0838379) - Old Polarization: (0.036441,0.126127,0.991345) - New Momentum Direction: (-0.915027,0.394584,0.0838379) - New Polarization: (-0.036441,0.126127,-0.991345) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.915027,0.394584,0.0838379) - Old Polarization: (-0.036441,0.126127,-0.991345) - New Momentum Direction: (-0.840047,0.530668,0.112752) - New Polarization: (0.0665128,0.307006,-0.94938) + Old Momentum Direction: (0.874385,0.445351,0.192649) + Old Polarization: (-0.478637,0.726363,0.493257) + New Momentum Direction: (0.757798,0.59886,0.259054) + New Polarization: (-0.64774,0.642636,0.40921) *** FresnelRefraction *** -Track (trackID 873, parentID 1) is processed with stopping code 2 +Track (trackID 467, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0824135,-0.171365,0.981755) - Old Polarization: (-0.993013,-0.0976088,0.066321) - New Momentum Direction: (0.111303,-0.231435,0.966462) - New Polarization: (-0.61638,-0.778926,-0.115541) - *** FresnelRefraction *** -Track (trackID 872, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.655334,0.613487,0.440648) - Old Polarization: (-0.358399,0.766078,-0.533549) - New Momentum Direction: (-0.655334,0.613487,0.440648) - New Polarization: (-0.358399,-0.766078,0.533549) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.655334,0.613487,0.440648) - Old Polarization: (-0.358399,-0.766078,0.533549) - New Momentum Direction: (-0.655334,-0.613487,0.440648) - New Polarization: (0.358399,-0.766078,-0.533549) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.655334,-0.613487,0.440648) - Old Polarization: (0.358399,-0.766078,-0.533549) - New Momentum Direction: (-0.655334,-0.613487,-0.440648) - New Polarization: (-0.358399,0.766078,-0.533549) - *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 871, parentID 1) is processed with stopping code 2 +Track (trackID 466, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + +** Photon absorbed! ** +Track (trackID 465, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.882744,0.433379,0.181508) - Old Polarization: (-0.110008,0.566204,-0.816891) - New Momentum Direction: (0.769526,0.58904,0.246701) - New Polarization: (-0.202435,0.591381,-0.780569) + Old Momentum Direction: (0.85528,-0.0352912,0.516962) + Old Polarization: (-0.502443,0.187413,0.844054) + New Momentum Direction: (0.712262,-0.0478059,0.700284) + New Polarization: (-0.690682,0.130024,0.711373) *** FresnelRefraction *** -Track (trackID 870, parentID 1) is processed with stopping code 2 +Track (trackID 464, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.574277,-0.708348,0.410426) -Old Polarization: (-0.447162,-0.691354,-0.567517) -New Polarization: (-0.250207,0.783493,0.568802) -Polarization Change: (-0.250207,0.783493,0.568802) -New Momentum Direction: (0.96504,0.15445,0.21176) -Momentum Change: (0.96504,0.15445,0.21176) Photon at Boundary! - Old Momentum Direction: (0.96504,0.15445,0.21176) - Old Polarization: (-0.250207,0.783493,0.568802) - New Momentum Direction: (0.935064,0.208886,0.286395) - New Polarization: (-0.345491,0.71783,0.604447) + Old Momentum Direction: (0.681791,-0.711696,0.169261) + Old Polarization: (-0.693181,-0.554558,0.460397) + New Momentum Direction: (0.924962,-0.302846,0.22963) + New Polarization: (0.153124,0.849937,0.504142) *** FresnelRefraction *** -Track (trackID 869, parentID 1) is processed with stopping code 2 +Track (trackID 463, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 197 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 191 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 198 stacked tracks. +### pop requested out of 193 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 7 +Track (trackID 933, parentID 1) is processed with stopping code 4 +### pop requested out of 200 stacked tracks. ** Photon absorbed! ** -Track (trackID 1262, parentID 1) is processed with stopping code 2 -### pop requested out of 197 stacked tracks. +Track (trackID 940, parentID 933) is processed with stopping code 2 +### pop requested out of 199 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.208884,-0.67283,0.709695) - Old Polarization: (-0.730737,-0.589671,-0.343964) - New Momentum Direction: (0.281373,-0.906324,0.315287) - New Polarization: (-0.669336,-0.420804,-0.612302) + Old Momentum Direction: (0.84413,-0.53373,0.0507637) + Old Polarization: (0.470932,0.783389,0.405617) + New Momentum Direction: (0.687917,-0.722528,0.0687205) + New Polarization: (-0.676224,-0.603669,0.422262) *** FresnelRefraction *** -Track (trackID 1261, parentID 1) is processed with stopping code 2 -### pop requested out of 196 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.206995,-0.682357,0.701101) -Old Polarization: (-0.726833,-0.586946,-0.356662) -New Polarization: (0.265366,0.771708,0.577968) -Polarization Change: (0.265366,0.771708,0.577968) -New Momentum Direction: (-0.956369,0.134693,0.259261) -Momentum Change: (-0.956369,0.134693,0.259261) +Track (trackID 939, parentID 933) is processed with stopping code 2 +### pop requested out of 198 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.266813,-0.91634,0.298548) + Old Polarization: (-0.546434,0.111334,0.830069) + New Momentum Direction: (0.362907,-0.838692,0.406072) + New Polarization: (-0.485365,0.201861,0.85069) + *** FresnelRefraction *** +Track (trackID 938, parentID 933) is processed with stopping code 2 +### pop requested out of 197 stacked tracks. ** Photon absorbed! ** -Track (trackID 1260, parentID 1) is processed with stopping code 2 +Track (trackID 937, parentID 933) is processed with stopping code 2 +### pop requested out of 196 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.837257,-0.480938,-0.260189) + Old Polarization: (0.458446,0.876751,-0.145378) + New Momentum Direction: (0.672264,-0.65113,-0.352264) + New Polarization: (-0.671374,-0.33571,-0.660724) + *** FresnelRefraction *** +Track (trackID 936, parentID 933) is processed with stopping code 2 ### pop requested out of 195 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.942144,0.255042,0.217528) - Old Polarization: (0.0850821,0.445739,-0.891111) - New Momentum Direction: (0.891127,0.345236,0.294456) - New Polarization: (-0.153012,0.839558,-0.521276) - *** FresnelRefraction *** -Track (trackID 1259, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.450051,-0.650197,-0.612126) + Old Polarization: (-0.227185,0.579551,-0.782629) + New Momentum Direction: (0.450051,0.650197,-0.612126) + New Polarization: (0.227185,0.579551,0.782629) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.450051,0.650197,-0.612126) + Old Polarization: (0.227185,0.579551,0.782629) + New Momentum Direction: (0.450051,0.650197,0.612126) + New Polarization: (-0.227185,-0.579551,0.782629) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.450051,0.650197,0.612126) + Old Polarization: (-0.227185,-0.579551,0.782629) + New Momentum Direction: (-0.450051,0.650197,0.612126) + New Polarization: (-0.227185,0.579551,-0.782629) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.450051,0.650197,0.612126) + Old Polarization: (-0.227185,0.579551,-0.782629) + New Momentum Direction: (-0.450051,-0.650197,0.612126) + New Polarization: (0.227185,0.579551,0.782629) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.450051,-0.650197,0.612126) + Old Polarization: (0.227185,0.579551,0.782629) + New Momentum Direction: (-0.450051,-0.650197,-0.612126) + New Polarization: (-0.227185,-0.579551,0.782629) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 935, parentID 933) is processed with stopping code 2 ### pop requested out of 194 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.990632,-0.0271935,0.133823) -Old Polarization: (0.136266,0.132726,-0.981741) -New Polarization: (-0.160673,-0.101228,0.981803) -Polarization Change: (-0.160673,-0.101228,0.981803) -New Momentum Direction: (-0.609443,0.792625,-0.0180133) -Momentum Change: (-0.609443,0.792625,-0.0180133) Photon at Boundary! - Old Momentum Direction: (-0.609443,0.792625,-0.0180133) - Old Polarization: (-0.160673,-0.101228,0.981803) - New Momentum Direction: (-0.826632,0.562213,-0.0244327) - New Polarization: (-0.160091,-0.193318,0.967987) + Old Momentum Direction: (0.0427131,-0.999068,0.0061936) + Old Polarization: (-0.944923,-0.0383832,0.325033) + New Momentum Direction: (0.0579119,-0.998286,0.0083975) + New Polarization: (0.872893,0.054716,0.484834) *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.826632,0.562213,-0.0244327) - Old Polarization: (-0.160091,-0.193318,0.967987) - New Momentum Direction: (-0.909872,0.414497,-0.0180133) - New Polarization: (0.0899056,0.239367,0.966758) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.909872,0.414497,-0.0180133) - Old Polarization: (0.0899056,0.239367,0.966758) - New Momentum Direction: (-0.826632,0.562213,-0.0244327) - New Polarization: (0.164404,0.282794,0.944986) - *** FresnelRefraction *** -Track (trackID 1258, parentID 1) is processed with stopping code 2 +Track (trackID 934, parentID 933) is processed with stopping code 2 ### pop requested out of 193 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 6 +Track (trackID 933, parentID 1) is processed with stopping code 4 +### pop requested out of 199 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0159202,0.157916,0.987324) - Old Polarization: (-0.940455,0.33769,-0.0388468) - New Momentum Direction: (0.0215657,0.213915,0.976614) - New Polarization: (-0.909532,0.409753,-0.0696667) + Old Momentum Direction: (0.489957,-0.242748,0.837267) + Old Polarization: (0.0789088,0.968854,0.234722) + New Momentum Direction: (0.662448,-0.328208,0.673381) + New Polarization: (0.70358,0.581201,-0.408877) *** FresnelRefraction *** -Track (trackID 1257, parentID 1) is processed with stopping code 2 +Track (trackID 946, parentID 933) is processed with stopping code 2 +### pop requested out of 198 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.46312,-0.757719,0.459764) + Old Polarization: (-0.000228802,-0.51885,-0.854866) + New Momentum Direction: (0.626761,-0.469056,0.622219) + New Polarization: (0.622292,0.781891,-0.0374109) + *** FresnelRefraction *** +Track (trackID 945, parentID 933) is processed with stopping code 2 +### pop requested out of 197 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.701592,-0.380977,0.602184) + Old Polarization: (0.691676,0.567285,-0.446959) + New Momentum Direction: (0.267378,-0.51518,0.814309) + New Polarization: (-0.951469,-0.00752864,0.307651) + *** FresnelRefraction *** +Track (trackID 944, parentID 933) is processed with stopping code 2 +### pop requested out of 196 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.475976,-0.241129,0.845756) + Old Polarization: (0.0366914,0.966286,0.254843) + New Momentum Direction: (0.475976,-0.241129,-0.845756) + New Polarization: (-0.365202,-0.929035,0.0593428) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.475976,-0.241129,-0.845756) + Old Polarization: (-0.365202,-0.929035,0.0593428) + New Momentum Direction: (-0.475976,-0.241129,-0.845756) + New Polarization: (-0.365202,0.929035,-0.0593428) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.475976,-0.241129,-0.845756) + Old Polarization: (-0.365202,0.929035,-0.0593428) + New Momentum Direction: (-0.644178,-0.32634,-0.691764) + New Polarization: (-0.541678,0.833177,0.111365) + *** FresnelRefraction *** +Track (trackID 943, parentID 933) is processed with stopping code 2 +### pop requested out of 195 stacked tracks. + +** Photon absorbed! ** +Track (trackID 942, parentID 933) is processed with stopping code 2 +### pop requested out of 194 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.206759,-0.395516,0.894884) + Old Polarization: (-0.74626,0.527755,0.405674) + New Momentum Direction: (0.279373,-0.534422,0.797712) + New Polarization: (0.0700983,-0.817223,-0.572043) + *** FresnelRefraction *** +Track (trackID 941, parentID 933) is processed with stopping code 2 +### pop requested out of 193 stacked tracks. +Track (trackID 933, parentID 1) is processed with stopping code 2 ### pop requested out of 192 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0292013,-0.440954,0.897055) - Old Polarization: (-0.934087,-0.331526,-0.132557) - New Momentum Direction: (0.0392648,-0.592916,0.804307) - New Polarization: (-0.895806,-0.37751,-0.23456) + Old Momentum Direction: (0.537177,0.218192,-0.814759) + Old Polarization: (-0.703504,0.648796,-0.290079) + New Momentum Direction: (0.729739,0.296407,-0.616136) + New Polarization: (0.0704699,0.86374,0.498986) *** FresnelRefraction *** -Track (trackID 1256, parentID 1) is processed with stopping code 2 +Track (trackID 932, parentID 1) is processed with stopping code 2 ### pop requested out of 191 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.827215,0.446695,0.340851) - Old Polarization: (-0.0437114,0.655941,-0.753545) - New Momentum Direction: (0.647738,0.605675,0.462162) - New Polarization: (-0.0831266,0.659184,-0.747373) + Old Momentum Direction: (0.326286,-0.686728,-0.649571) + Old Polarization: (-0.93366,-0.341505,-0.107946) + New Momentum Direction: (0.443821,-0.149474,-0.883561) + New Polarization: (-0.626045,0.653749,-0.425065) *** FresnelRefraction *** -Track (trackID 1255, parentID 1) is processed with stopping code 2 +Track (trackID 931, parentID 1) is processed with stopping code 2 ### pop requested out of 190 stacked tracks. ** Photon absorbed! ** -Track (trackID 1254, parentID 1) is processed with stopping code 2 +Track (trackID 930, parentID 1) is processed with stopping code 2 ### pop requested out of 189 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.655563,-0.680849,0.326621) - Old Polarization: (-0.231932,-0.593164,-0.77095) - New Momentum Direction: (0.8863,-0.139564,0.441581) - New Polarization: (0.293783,0.906531,-0.303139) + Old Momentum Direction: (0.975928,0.0948899,0.196368) + Old Polarization: (-0.21683,0.518918,0.826867) + New Momentum Direction: (0.955757,0.127985,0.264857) + New Polarization: (-0.293224,0.486225,0.823168) *** FresnelRefraction *** -Track (trackID 1253, parentID 1) is processed with stopping code 2 +Track (trackID 929, parentID 1) is processed with stopping code 2 ### pop requested out of 188 stacked tracks. ** Photon absorbed! ** -Track (trackID 1252, parentID 1) is processed with stopping code 2 +Track (trackID 928, parentID 1) is processed with stopping code 2 ### pop requested out of 187 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.708113,0.541506,0.453153) - Old Polarization: (-0.176498,0.757138,-0.62896) - New Momentum Direction: (-0.708113,0.541506,0.453153) - New Polarization: (-0.0984713,-0.71123,0.696028) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.708113,0.541506,0.453153) - Old Polarization: (-0.0984713,-0.71123,0.696028) - New Momentum Direction: (-0.708113,-0.541506,0.453153) - New Polarization: (0.0984713,-0.71123,-0.696028) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.708113,-0.541506,0.453153) - Old Polarization: (0.0984713,-0.71123,-0.696028) - New Momentum Direction: (-0.708113,-0.541506,-0.453153) - New Polarization: (-0.0984713,0.71123,-0.696028) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.708113,-0.541506,-0.453153) - Old Polarization: (-0.0984713,0.71123,-0.696028) - New Momentum Direction: (0.708113,-0.541506,-0.453153) - New Polarization: (0.0540905,-0.598283,0.799457) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.708113,-0.541506,-0.453153) - Old Polarization: (0.0540905,-0.598283,0.799457) - New Momentum Direction: (0.708113,0.541506,-0.453153) - New Polarization: (-0.0540905,-0.598283,-0.799457) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.708113,0.541506,-0.453153) - Old Polarization: (-0.0540905,-0.598283,-0.799457) - New Momentum Direction: (0.708113,0.541506,0.453153) - New Polarization: (0.0540905,0.598283,-0.799457) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.708113,0.541506,0.453153) - Old Polarization: (0.0540905,0.598283,-0.799457) - New Momentum Direction: (-0.708113,0.541506,0.453153) - New Polarization: (-0.0295694,-0.663947,0.747195) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.708113,0.541506,0.453153) - Old Polarization: (-0.0295694,-0.663947,0.747195) - New Momentum Direction: (-0.708113,-0.541506,0.453153) - New Polarization: (0.0295694,-0.663947,-0.747195) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.708113,-0.541506,0.453153) - Old Polarization: (0.0295694,-0.663947,-0.747195) - New Momentum Direction: (-0.281367,-0.735916,0.615842) - New Polarization: (0.0622087,-0.654407,-0.753579) + Old Momentum Direction: (0.563827,-0.823815,-0.0585465) + Old Polarization: (-0.675265,-0.500651,0.541632) + New Momentum Direction: (0.762201,-0.642484,-0.0791452) + New Polarization: (0.634225,0.716671,0.290071) *** FresnelRefraction *** -Track (trackID 1251, parentID 1) is processed with stopping code 2 +Track (trackID 927, parentID 1) is processed with stopping code 2 ### pop requested out of 186 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.835377,0.437182,0.333193) - Old Polarization: (-0.0341368,0.646253,-0.762359) - New Momentum Direction: (0.66725,0.592398,0.451489) - New Polarization: (-0.0647101,0.649975,-0.757196) + Old Momentum Direction: (0.455842,-0.84692,-0.273742) + Old Polarization: (-0.794764,-0.525765,0.303184) + New Momentum Direction: (0.616411,-0.694991,-0.370167) + New Polarization: (0.536878,0.714833,-0.448081) *** FresnelRefraction *** -Track (trackID 1250, parentID 1) is processed with stopping code 2 +Track (trackID 926, parentID 1) is processed with stopping code 2 ### pop requested out of 185 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1249, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.334941,-0.700426,-0.630253) + Old Polarization: (-0.927719,-0.362122,-0.0905849) + New Momentum Direction: (0.453461,-0.257493,-0.85327) + New Polarization: (-0.569456,0.652765,-0.499617) + *** FresnelRefraction *** +Track (trackID 925, parentID 1) is processed with stopping code 2 ### pop requested out of 184 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.604804,-0.706813,0.366915) - Old Polarization: (-0.287997,-0.623671,-0.726699) - New Momentum Direction: (0.816806,-0.295428,0.495529) - New Polarization: (0.409974,0.901553,-0.138288) + Old Momentum Direction: (0.450397,-0.847244,-0.281637) + Old Polarization: (-0.799859,-0.523053,0.294349) + New Momentum Direction: (0.610237,-0.694264,-0.381586) + New Polarization: (0.517197,0.71399,-0.471938) *** FresnelRefraction *** -Track (trackID 1248, parentID 1) is processed with stopping code 2 +Track (trackID 924, parentID 1) is processed with stopping code 2 ### pop requested out of 183 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.141271,0.38039,0.913973) - Old Polarization: (-0.80242,0.584709,-0.119324) - New Momentum Direction: (0.191218,0.51488,0.835664) - New Polarization: (-0.750524,0.625378,-0.21358) + Old Momentum Direction: (0.710336,0.40502,-0.575658) + Old Polarization: (-0.513272,0.857705,-0.0298927) + New Momentum Direction: (0.30139,0.548667,-0.779826) + New Polarization: (-0.812853,0.575369,0.0906613) *** FresnelRefraction *** -Track (trackID 1247, parentID 1) is processed with stopping code 2 +Track (trackID 923, parentID 1) is processed with stopping code 2 ### pop requested out of 182 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.107082,0.341315,0.933829) - Old Polarization: (-0.8371,0.53773,-0.100551) - New Momentum Direction: (0.145457,0.463633,0.874006) - New Polarization: (-0.787762,0.588726,-0.181197) + Old Momentum Direction: (0.947919,-0.118328,0.295716) + Old Polarization: (-0.25391,0.279803,0.925872) + New Momentum Direction: (0.901379,-0.160872,0.402039) + New Polarization: (-0.378979,0.15611,0.912143) *** FresnelRefraction *** -Track (trackID 1246, parentID 1) is processed with stopping code 2 +Track (trackID 922, parentID 1) is processed with stopping code 2 ### pop requested out of 181 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.759906,-0.599587,0.251075) - Old Polarization: (-0.115188,-0.504343,-0.855786) - New Momentum Direction: (0.47899,-0.809697,0.339057) - New Polarization: (-0.221017,-0.485046,-0.846098) + Old Momentum Direction: (0.431972,-0.835413,-0.339832) + Old Polarization: (-0.823277,-0.519113,0.229645) + New Momentum Direction: (0.581868,-0.672227,-0.457756) + New Polarization: (0.362522,0.718222,-0.593914) *** FresnelRefraction *** -Track (trackID 1245, parentID 1) is processed with stopping code 2 +Track (trackID 921, parentID 1) is processed with stopping code 2 ### pop requested out of 180 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.706229,0.540783,0.456941) - Old Polarization: (-0.177245,0.759909,-0.625398) - New Momentum Direction: (0.280343,0.733205,0.61953) - New Polarization: (-0.356117,0.678795,-0.642198) + Old Momentum Direction: (0.841976,0.432907,-0.321975) + Old Polarization: (-0.365583,0.896685,0.249612) + New Momentum Direction: (0.686569,0.583397,-0.433903) + New Polarization: (-0.572888,0.80155,0.171225) *** FresnelRefraction *** -Track (trackID 1244, parentID 1) is processed with stopping code 2 +Track (trackID 920, parentID 1) is processed with stopping code 2 ### pop requested out of 179 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1243, parentID 1) is processed with stopping code 2 +Scattering Photon! +Old Momentum Direction: (0.313571,-0.576312,-0.754677) +Old Polarization: (-0.948791,-0.222227,-0.224522) +New Polarization: (-0.933702,-0.272757,0.231956) +Polarization Change: (-0.933702,-0.272757,0.231956) +New Momentum Direction: (-0.254161,0.0485951,-0.96594) +Momentum Change: (-0.254161,0.0485951,-0.96594) + Photon at Boundary! + Old Momentum Direction: (-0.254161,0.0485951,-0.96594) + Old Polarization: (-0.933702,-0.272757,0.231956) + New Momentum Direction: (-0.345177,0.0659973,-0.936214) + New Polarization: (-0.928525,-0.169331,0.330406) + *** FresnelRefraction *** +Track (trackID 919, parentID 1) is processed with stopping code 2 ### pop requested out of 178 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.348242,0.540018,0.76623) - Old Polarization: (-0.574549,0.768823,-0.280721) - New Momentum Direction: (0.469181,0.727558,0.500528) - New Polarization: (-0.534702,0.685124,-0.49467) + Old Momentum Direction: (0.90746,0.394524,-0.144454) + Old Polarization: (-0.296429,0.84488,0.445317) + New Momentum Direction: (0.821898,0.534906,-0.195855) + New Polarization: (-0.460127,0.826109,0.32531) *** FresnelRefraction *** -Track (trackID 1242, parentID 1) is processed with stopping code 2 +Track (trackID 918, parentID 1) is processed with stopping code 2 ### pop requested out of 177 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.940294,-0.31143,0.137324) - Old Polarization: (0.0828562,-0.181883,-0.979823) - New Momentum Direction: (0.887504,-0.42163,0.185916) - New Polarization: (-0.149411,-0.644972,-0.749458) - *** FresnelRefraction *** -Track (trackID 1241, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 917, parentID 1) is processed with stopping code 2 ### pop requested out of 176 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.983298,0.0956759,0.154827) - Old Polarization: (0.124492,0.266989,-0.955625) - New Momentum Direction: (0.968862,0.13016,0.210631) - New Polarization: (-0.195031,0.925269,0.325332) + Old Momentum Direction: (0.884708,0.416156,-0.210014) + Old Polarization: (-0.3208,0.870432,0.373409) + New Momentum Direction: (0.775549,0.563588,-0.284416) + New Polarization: (-0.501832,0.823732,0.263874) *** FresnelRefraction *** -Track (trackID 1240, parentID 1) is processed with stopping code 2 +Track (trackID 916, parentID 1) is processed with stopping code 2 ### pop requested out of 175 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.135177,0.363749,0.921637) - Old Polarization: (-0.813453,0.57182,-0.106374) - New Momentum Direction: (0.182059,0.489902,0.852555) - New Polarization: (-0.766282,0.614017,-0.189196) + Old Momentum Direction: (0.321277,-0.644461,-0.693867) + Old Polarization: (-0.941205,-0.298142,-0.158887) + New Momentum Direction: (0.435846,-0.874279,-0.213716) + New Polarization: (-0.809651,-0.484574,0.33114) *** FresnelRefraction *** -Track (trackID 1239, parentID 1) is processed with stopping code 2 +Track (trackID 915, parentID 1) is processed with stopping code 2 ### pop requested out of 174 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.153598,-0.640789,0.752195) - Old Polarization: (-0.785369,-0.541134,-0.300616) - New Momentum Direction: (0.208799,-0.871084,0.44454) - New Polarization: (-0.714201,-0.446344,-0.53916) - *** FresnelRefraction *** -Track (trackID 1238, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 914, parentID 1) is processed with stopping code 2 ### pop requested out of 173 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.630306,0.566315,0.531038) - Old Polarization: (-0.258708,0.798142,-0.544095) - New Momentum Direction: (-0.630306,0.566315,0.531038) - New Polarization: (-0.258708,-0.798142,0.544095) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.630306,0.566315,0.531038) - Old Polarization: (-0.258708,-0.798142,0.544095) - New Momentum Direction: (-0.630306,-0.566315,0.531038) - New Polarization: (0.258708,-0.798142,-0.544095) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.630306,-0.566315,0.531038) - Old Polarization: (0.258708,-0.798142,-0.544095) - New Momentum Direction: (-0.630306,-0.566315,-0.531038) - New Polarization: (-0.258708,0.798142,-0.544095) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.630306,-0.566315,-0.531038) - Old Polarization: (-0.258708,0.798142,-0.544095) - New Momentum Direction: (0.630306,-0.566315,-0.531038) - New Polarization: (-0.258708,-0.798142,0.544095) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.630306,-0.566315,-0.531038) - Old Polarization: (-0.258708,-0.798142,0.544095) - New Momentum Direction: (0.630306,0.566315,-0.531038) - New Polarization: (0.258708,-0.798142,-0.544095) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.630306,0.566315,-0.531038) - Old Polarization: (0.258708,-0.798142,-0.544095) - New Momentum Direction: (0.630306,0.566315,0.531038) - New Polarization: (-0.258708,0.798142,-0.544095) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1237, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.314812,-0.584715,-0.747664) + Old Polarization: (-0.948024,-0.23213,-0.217638) + New Momentum Direction: (0.42723,-0.793512,-0.433374) + New Polarization: (-0.690891,-0.595703,0.409644) + *** FresnelRefraction *** +Track (trackID 913, parentID 1) is processed with stopping code 2 ### pop requested out of 172 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1236, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.618325,0.316494,-0.719379) + Old Polarization: (-0.614995,0.764763,-0.192143) + New Momentum Direction: (0.834577,0.427185,-0.347841) + New Polarization: (-0.295879,0.880204,0.371076) + *** FresnelRefraction *** +Track (trackID 912, parentID 1) is processed with stopping code 2 ### pop requested out of 171 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1235, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.349637,-0.269907,-0.897165) + Old Polarization: (-0.913853,0.112776,-0.390069) + New Momentum Direction: (0.471834,-0.364239,-0.802933) + New Polarization: (0.372041,-0.743382,0.55585) + *** FresnelRefraction *** +Track (trackID 911, parentID 1) is processed with stopping code 2 ### pop requested out of 170 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.813633,0.456474,0.360044) - Old Polarization: (-0.0533525,0.675306,-0.735605) - New Momentum Direction: (0.621696,0.614983,0.485068) - New Polarization: (-0.10034,0.676724,-0.729367) + Old Momentum Direction: (0.974674,0.161486,0.154705) + Old Polarization: (-0.221012,0.589963,0.776593) + New Momentum Direction: (0.953096,0.218558,0.209381) + New Polarization: (-0.300729,0.605642,0.736723) *** FresnelRefraction *** -Track (trackID 1234, parentID 1) is processed with stopping code 2 +Track (trackID 910, parentID 1) is processed with stopping code 2 ### pop requested out of 169 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.902625,-0.399665,0.159799) - Old Polarization: (0.0446684,-0.282275,-0.958293) - New Momentum Direction: (0.814056,-0.539278,0.215621) - New Polarization: (-0.0821966,-0.474496,-0.876411) + Old Momentum Direction: (0.321496,-0.410354,-0.853376) + Old Polarization: (-0.941356,-0.041031,-0.334911) + New Momentum Direction: (0.435925,-0.55641,-0.707374) + New Polarization: (-0.180058,-0.824014,0.537196) *** FresnelRefraction *** -Track (trackID 1233, parentID 1) is processed with stopping code 2 +Track (trackID 909, parentID 1) is processed with stopping code 2 ### pop requested out of 168 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.910942,0.326296,0.252422) - Old Polarization: (0.0485401,0.522851,-0.851041) - New Momentum Direction: (-0.910942,0.326296,0.252422) - New Polarization: (0.0259417,-0.565359,0.824437) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.910942,0.326296,0.252422) - Old Polarization: (0.0259417,-0.565359,0.824437) - New Momentum Direction: (-0.910942,-0.326296,0.252422) - New Polarization: (-0.0259417,-0.565359,-0.824437) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.910942,-0.326296,0.252422) - Old Polarization: (-0.0259417,-0.565359,-0.824437) - New Momentum Direction: (-0.828861,-0.442502,0.342318) - New Polarization: (0.0483098,-0.666204,-0.744203) + Old Momentum Direction: (0.491536,-0.8469,-0.202863) + Old Polarization: (-0.756431,-0.530631,0.382417) + New Momentum Direction: (0.662642,-0.697218,-0.273481) + New Polarization: (0.661648,0.716072,-0.222402) *** FresnelRefraction *** -Track (trackID 1232, parentID 1) is processed with stopping code 2 +Track (trackID 908, parentID 1) is processed with stopping code 2 ### pop requested out of 167 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.781163,-0.580947,0.22866) - Old Polarization: (-0.0969377,-0.47467,-0.87481) - New Momentum Direction: (0.527993,-0.79024,0.311037) - New Polarization: (-0.187841,-0.465848,-0.864697) - *** FresnelRefraction *** -Track (trackID 1231, parentID 1) is processed with stopping code 2 -### pop requested out of 166 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.985576,-0.102301,0.134812) - Old Polarization: (0.140396,0.0494686,-0.988859) - New Momentum Direction: (0.973711,-0.137698,0.181457) - New Polarization: (-0.203809,-0.882411,0.424044) - *** FresnelRefraction *** -Track (trackID 1230, parentID 1) is processed with stopping code 2 -### pop requested out of 165 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.320574,-0.635527,-0.70238) +Old Polarization: (-0.942382,-0.28886,-0.168747) +New Polarization: (0.516369,0.85129,-0.0930988) +Polarization Change: (0.516369,0.85129,-0.0930988) +New Momentum Direction: (-0.820694,0.460876,-0.33772) +Momentum Change: (-0.820694,0.460876,-0.33772) ** Photon absorbed! ** -Track (trackID 1229, parentID 1) is processed with stopping code 2 +Track (trackID 907, parentID 1) is processed with stopping code 2 +### pop requested out of 166 stacked tracks. + +** Photon absorbed! ** +Track (trackID 906, parentID 1) is processed with stopping code 2 +### pop requested out of 165 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.959364,0.280457,0.0310581) + Old Polarization: (-0.233694,0.728033,0.64448) + New Momentum Direction: (0.925063,0.377506,0.0418055) + New Polarization: (-0.339712,0.773138,0.535587) + *** FresnelRefraction *** +Track (trackID 905, parentID 1) is processed with stopping code 2 ### pop requested out of 164 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.140549,-0.627606,0.76574) - Old Polarization: (-0.800186,-0.527469,-0.285446) - New Momentum Direction: (0.190945,-0.852644,0.486353) - New Polarization: (-0.729766,-0.454676,-0.510599) + Old Momentum Direction: (0.975122,0.174766,0.13636) + Old Polarization: (-0.215938,0.609951,0.76245) + New Momentum Direction: (0.954463,0.235205,0.183517) + New Polarization: (-0.294023,0.637506,0.712136) *** FresnelRefraction *** -Track (trackID 1228, parentID 1) is processed with stopping code 2 +Track (trackID 904, parentID 1) is processed with stopping code 2 ### pop requested out of 163 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.621059,-0.701758,0.34903) - Old Polarization: (-0.271655,-0.610458,-0.744006) - New Momentum Direction: (0.842923,-0.255099,0.473715) - New Polarization: (0.38346,0.902444,-0.196351) + Old Momentum Direction: (0.460167,-0.845154,-0.271957) + Old Polarization: (-0.791575,-0.529272,0.305419) + New Momentum Direction: (0.620126,-0.693634,-0.366492) + New Polarization: (0.542568,0.716627,-0.438254) *** FresnelRefraction *** -Track (trackID 1227, parentID 1) is processed with stopping code 2 +Track (trackID 903, parentID 1) is processed with stopping code 2 ### pop requested out of 162 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.185186,0.431525,0.882888) - Old Polarization: (-0.752829,0.639758,-0.154786) - New Momentum Direction: (0.250982,0.584845,0.771339) - New Polarization: (-0.695239,0.663362,-0.276755) + Old Momentum Direction: (0.868097,-0.388093,0.309502) + Old Polarization: (-0.341714,-0.0149608,0.939685) + New Momentum Direction: (0.737397,-0.52809,0.421149) + New Polarization: (-0.538989,-0.0842444,0.838089) *** FresnelRefraction *** -Track (trackID 1226, parentID 1) is processed with stopping code 2 +Track (trackID 902, parentID 1) is processed with stopping code 2 ### pop requested out of 161 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.78728,-0.574027,0.225129) - Old Polarization: (-0.0897258,-0.467883,-0.879224) - New Momentum Direction: (0.54541,-0.780304,0.306029) - New Polarization: (-0.173284,-0.462201,-0.869679) + Old Momentum Direction: (0.824561,0.440965,-0.354469) + Old Polarization: (-0.387492,0.896669,0.214093) + New Momentum Direction: (0.641929,0.597619,-0.480395) + New Polarization: (-0.611626,0.776943,0.149243) *** FresnelRefraction *** -Track (trackID 1225, parentID 1) is processed with stopping code 2 +Track (trackID 901, parentID 1) is processed with stopping code 2 ### pop requested out of 160 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.560129,0.583609,0.587925) - Old Polarization: (-0.338335,0.808982,-0.480704) - New Momentum Direction: (0.560129,0.583609,-0.587925) - New Polarization: (0.338335,-0.808982,-0.480704) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560129,0.583609,-0.587925) - Old Polarization: (0.338335,-0.808982,-0.480704) - New Momentum Direction: (0.560129,-0.583609,-0.587925) - New Polarization: (-0.338335,-0.808982,0.480704) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560129,-0.583609,-0.587925) - Old Polarization: (-0.338335,-0.808982,0.480704) - New Momentum Direction: (-0.560129,-0.583609,-0.587925) - New Polarization: (-0.338335,0.808982,-0.480704) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560129,-0.583609,-0.587925) - Old Polarization: (-0.338335,0.808982,-0.480704) - New Momentum Direction: (-0.560129,-0.583609,0.587925) - New Polarization: (0.338335,-0.808982,-0.480704) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560129,-0.583609,0.587925) - Old Polarization: (0.338335,-0.808982,-0.480704) - New Momentum Direction: (-0.560129,0.583609,0.587925) - New Polarization: (-0.338335,-0.808982,0.480704) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560129,0.583609,0.587925) - Old Polarization: (-0.338335,-0.808982,0.480704) - New Momentum Direction: (0.560129,0.583609,0.587925) - New Polarization: (-0.338335,0.808982,-0.480704) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560129,0.583609,0.587925) - Old Polarization: (-0.338335,0.808982,-0.480704) - New Momentum Direction: (0.560129,0.583609,-0.587925) - New Polarization: (0.338335,-0.808982,-0.480704) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560129,0.583609,-0.587925) - Old Polarization: (0.338335,-0.808982,-0.480704) - New Momentum Direction: (0.560129,-0.583609,-0.587925) - New Polarization: (-0.338335,-0.808982,0.480704) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1224, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.336155,-0.304157,-0.891341) + Old Polarization: (-0.924085,0.0762126,-0.37451) + New Momentum Direction: (0.456496,-0.413044,-0.788039) + New Polarization: (0.227452,-0.802103,0.552174) + *** FresnelRefraction *** +Track (trackID 900, parentID 1) is processed with stopping code 2 ### pop requested out of 159 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.983945,0.0901632,0.154025) - Old Polarization: (0.125882,0.261177,-0.957048) - New Momentum Direction: (0.97011,0.122593,0.209424) - New Polarization: (-0.19529,0.906681,0.373886) + Old Momentum Direction: (0.481397,-0.848781,-0.218694) + Old Polarization: (-0.76669,-0.528688,0.364245) + New Momentum Direction: (0.650616,-0.699528,-0.295568) + New Polarization: (0.64117,0.714567,-0.279813) *** FresnelRefraction *** -Track (trackID 1223, parentID 1) is processed with stopping code 2 +Track (trackID 899, parentID 1) is processed with stopping code 2 ### pop requested out of 158 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.974206,0.140751,0.176383) - Old Polarization: (0.123731,0.320487,-0.939137) - New Momentum Direction: (0.952452,0.190045,0.238157) - New Polarization: (-0.202345,0.978912,0.0280759) + Old Momentum Direction: (0.780687,-0.577376,0.239091) + Old Polarization: (-0.435044,-0.227471,0.871202) + New Momentum Direction: (0.534897,-0.780633,0.32326) + New Polarization: (-0.685283,-0.177028,0.706433) *** FresnelRefraction *** -Track (trackID 1222, parentID 1) is processed with stopping code 2 +Track (trackID 898, parentID 1) is processed with stopping code 2 ### pop requested out of 157 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.000184444,-0.376776,0.926304) - Old Polarization: (-0.961144,-0.255637,-0.104172) - New Momentum Direction: (-0.000249244,-0.509146,0.86068) - New Polarization: (-0.93084,-0.314397,-0.186255) + Old Momentum Direction: (0.956425,0.290203,0.03214) + Old Polarization: (-0.242848,0.729549,0.639361) + New Momentum Direction: (0.918235,0.393629,0.0435945) + New Polarization: (-0.355766,0.771492,0.527475) *** FresnelRefraction *** -Track (trackID 1221, parentID 1) is processed with stopping code 2 +Track (trackID 897, parentID 1) is processed with stopping code 2 ### pop requested out of 156 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.985171,0.070378,0.156476) - Old Polarization: (0.13533,0.241879,-0.960823) - New Momentum Direction: (0.972769,0.0950725,0.211381) - New Polarization: (-0.200857,0.800886,0.564126) - *** FresnelRefraction *** -Track (trackID 1220, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 896, parentID 1) is processed with stopping code 2 ### pop requested out of 155 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.439299,0.573304,0.69162) - Old Polarization: (-0.472348,0.802281,-0.365011) - New Momentum Direction: (0.593238,0.7742,0.220642) - New Polarization: (-0.49233,0.565763,-0.661456) + Old Momentum Direction: (0.408351,-0.0447653,-0.911727) + Old Polarization: (-0.844548,0.36049,-0.395962) + New Momentum Direction: (0.55488,-0.0608285,-0.829704) + New Polarization: (0.830094,0.106705,0.547318) *** FresnelRefraction *** -Track (trackID 1219, parentID 1) is processed with stopping code 2 +Track (trackID 895, parentID 1) is processed with stopping code 2 ### pop requested out of 154 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.989432,-0.0694468,0.127287) - Old Polarization: (0.133062,0.0860719,-0.987363) - New Momentum Direction: (0.98041,-0.0943373,0.172908) - New Polarization: (-0.187691,-0.713696,0.674841) + Old Momentum Direction: (0.323043,-0.425314,-0.84543) + Old Polarization: (-0.942052,-0.0591364,-0.330213) + New Momentum Direction: (0.436696,-0.574948,-0.691905) + New Polarization: (-0.227723,-0.814716,0.533272) *** FresnelRefraction *** -Track (trackID 1218, parentID 1) is processed with stopping code 2 +Track (trackID 894, parentID 1) is processed with stopping code 2 ### pop requested out of 153 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.84205,-0.502877,0.195108) - Old Polarization: (-0.0239808,-0.396256,-0.917827) - New Momentum Direction: (0.684874,-0.679323,0.263566) - New Polarization: (-0.0450853,-0.400526,-0.915176) + Old Momentum Direction: (0.325987,-0.455146,-0.828598) + Old Polarization: (-0.943078,-0.0955099,-0.318563) + New Momentum Direction: (0.438337,-0.612009,-0.65826) + New Polarization: (-0.320022,-0.790643,0.521987) *** FresnelRefraction *** -Track (trackID 1217, parentID 1) is processed with stopping code 2 +Track (trackID 893, parentID 1) is processed with stopping code 2 ### pop requested out of 152 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.976508,-0.177551,0.122094) - Old Polarization: (0.118151,-0.0326529,-0.992459) - New Momentum Direction: (0.95615,-0.241327,0.165949) - New Polarization: (-0.195206,-0.947519,-0.253184) + Old Momentum Direction: (0.640475,-0.764539,0.0726005) + Old Polarization: (-0.590296,-0.429616,0.68336) + New Momentum Direction: (0.869213,-0.484522,0.0985288) + New Polarization: (0.312736,0.693106,0.649462) *** FresnelRefraction *** -Track (trackID 1216, parentID 1) is processed with stopping code 2 +Track (trackID 892, parentID 1) is processed with stopping code 2 ### pop requested out of 151 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.432555,0.574108,0.695195) - Old Polarization: (-0.479605,0.799435,-0.361778) - New Momentum Direction: (0.585474,0.77707,0.231044) - New Polarization: (-0.494795,0.568275,-0.657451) + Old Momentum Direction: (0.564488,-0.823216,-0.060574) + Old Polarization: (-0.674873,-0.50253,0.540379) + New Momentum Direction: (0.761828,-0.6426,-0.0817502) + New Polarization: (0.635662,0.717307,0.285314) *** FresnelRefraction *** -Track (trackID 1215, parentID 1) is processed with stopping code 2 +Track (trackID 891, parentID 1) is processed with stopping code 2 ### pop requested out of 150 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.409987,-0.74956,0.519683) - Old Polarization: (-0.50397,-0.661063,-0.555887) - New Momentum Direction: (0.557152,-0.436841,0.706223) - New Polarization: (0.243,0.898991,0.364372) - *** FresnelRefraction *** -Track (trackID 1214, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 890, parentID 1) is processed with stopping code 2 ### pop requested out of 149 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.510887,-0.739679,0.438029) - Old Polarization: (-0.392919,-0.654128,-0.646321) - New Momentum Direction: (0.510887,0.739679,0.438029) - New Polarization: (-0.835026,0.548076,0.0484068) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.510887,0.739679,0.438029) - Old Polarization: (-0.835026,0.548076,0.0484068) - New Momentum Direction: (-0.510887,0.739679,0.438029) - New Polarization: (-0.835026,-0.548076,-0.0484068) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.510887,0.739679,0.438029) - Old Polarization: (-0.835026,-0.548076,-0.0484068) - New Momentum Direction: (-0.510887,0.739679,-0.438029) - New Polarization: (0.835026,0.548076,-0.0484068) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.510887,0.739679,-0.438029) - Old Polarization: (0.835026,0.548076,-0.0484068) - New Momentum Direction: (-0.692578,0.409545,-0.593809) - New Polarization: (0.00247074,-0.821847,-0.569703) + Old Momentum Direction: (0.964859,-0.0145916,0.262364) + Old Polarization: (-0.235729,0.393094,0.888768) + New Momentum Direction: (0.933948,-0.019847,0.356858) + New Polarization: (-0.336249,0.289665,0.89612) *** FresnelRefraction *** -Track (trackID 1213, parentID 1) is processed with stopping code 2 +Track (trackID 889, parentID 1) is processed with stopping code 2 ### pop requested out of 148 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.043723,-0.499999,0.864922) - Old Polarization: (-0.905319,-0.385937,-0.17734) - New Momentum Direction: (0.0594745,-0.680127,0.730678) - New Polarization: (-0.851577,-0.416489,-0.31836) + Old Momentum Direction: (0.39877,-0.819486,-0.411613) + Old Polarization: (-0.856924,-0.49283,0.150994) + New Momentum Direction: (0.540153,-0.630377,-0.557548) + New Polarization: (0.12537,0.715393,-0.687383) *** FresnelRefraction *** -Track (trackID 1212, parentID 1) is processed with stopping code 2 +Track (trackID 888, parentID 1) is processed with stopping code 2 ### pop requested out of 147 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.674784,0.381303,-0.631882) + Old Polarization: (-0.552634,0.82853,-0.0901889) + New Momentum Direction: (-0.674784,0.381303,-0.631882) + New Polarization: (-0.552634,-0.82853,0.0901889) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.674784,0.381303,-0.631882) + Old Polarization: (-0.552634,-0.82853,0.0901889) + New Momentum Direction: (-0.674784,0.381303,0.631882) + New Polarization: (0.552634,0.82853,0.0901889) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.674784,0.381303,0.631882) + Old Polarization: (0.552634,0.82853,0.0901889) + New Momentum Direction: (-0.674784,-0.381303,0.631882) + New Polarization: (-0.552634,0.82853,-0.0901889) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.674784,-0.381303,0.631882) + Old Polarization: (-0.552634,0.82853,-0.0901889) + New Momentum Direction: (0.674784,-0.381303,0.631882) + New Polarization: (-0.552634,-0.82853,0.0901889) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.674784,-0.381303,0.631882) + Old Polarization: (-0.552634,-0.82853,0.0901889) + New Momentum Direction: (0.674784,-0.381303,-0.631882) + New Polarization: (0.552634,0.82853,0.0901889) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (0.674784,-0.381303,-0.631882) +Old Polarization: (0.552634,0.82853,0.0901889) +New Polarization: (-0.00217877,-0.665847,-0.746085) +Polarization Change: (-0.00217877,-0.665847,-0.746085) +New Momentum Direction: (-0.702746,-0.529776,0.474853) +Momentum Change: (-0.702746,-0.529776,0.474853) + Photon at Boundary! + Old Momentum Direction: (-0.702746,-0.529776,0.474853) + Old Polarization: (-0.00217877,-0.665847,-0.746085) + New Momentum Direction: (-0.702746,0.529776,0.474853) + New Polarization: (0.00217877,-0.665847,0.746085) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.702746,0.529776,0.474853) + Old Polarization: (0.00217877,-0.665847,0.746085) + New Momentum Direction: (0.702746,0.529776,0.474853) + New Polarization: (0.00126555,0.666521,-0.745485) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.702746,0.529776,0.474853) + Old Polarization: (0.00126555,0.666521,-0.745485) + New Momentum Direction: (0.702746,0.529776,-0.474853) + New Polarization: (-0.00126555,-0.666521,-0.745485) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1211, parentID 1) is processed with stopping code 2 +Track (trackID 887, parentID 1) is processed with stopping code 2 ### pop requested out of 146 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1210, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.543085,-0.834484,-0.093248) + Old Polarization: (-0.697899,-0.510343,0.502481) + New Momentum Direction: (0.73517,-0.666026,-0.126229) + New Polarization: (0.677563,0.716253,0.167004) + *** FresnelRefraction *** +Track (trackID 886, parentID 1) is processed with stopping code 2 ### pop requested out of 145 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1209, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.388753,-0.803296,-0.451205) + Old Polarization: (-0.870454,-0.480728,0.105883) + New Momentum Direction: (0.524535,-0.595169,-0.6088) + New Polarization: (-0.00389394,0.713382,-0.700764) + *** FresnelRefraction *** +Track (trackID 885, parentID 1) is processed with stopping code 2 ### pop requested out of 144 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0134995,-0.40741,0.913146) - Old Polarization: (-0.949299,-0.29208,-0.116281) - New Momentum Direction: (0.0181894,-0.548949,0.835658) - New Polarization: (-0.915519,-0.345075,-0.206754) - *** FresnelRefraction *** -Track (trackID 1208, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. ** Photon absorbed! ** -Track (trackID 1207, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. +Track (trackID 884, parentID 1) is processed with stopping code 2 +### pop requested out of 143 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.22386,0.471524,0.852966) - Old Polarization: (-0.708248,0.67992,-0.189984) - New Momentum Direction: (0.304309,0.640977,0.70466) - New Polarization: (-0.647589,0.681711,-0.340438) + Old Momentum Direction: (0.942408,-0.144725,0.301531) + Old Polarization: (-0.259817,0.250947,0.932481) + New Momentum Direction: (0.890674,-0.196727,0.409876) + New Polarization: (-0.391353,0.127091,0.911422) *** FresnelRefraction *** -Track (trackID 1206, parentID 1) is processed with stopping code 2 +Track (trackID 883, parentID 1) is processed with stopping code 2 +### pop requested out of 142 stacked tracks. + +** Photon absorbed! ** +Track (trackID 882, parentID 1) is processed with stopping code 2 ### pop requested out of 141 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.955807,0.214549,0.201) - Old Polarization: (0.101285,0.401525,-0.91023) - New Momentum Direction: (0.917557,0.290162,0.271838) - New Polarization: (-0.177633,0.910818,-0.372636) + Old Momentum Direction: (0.923488,0.372014,-0.0936723) + Old Polarization: (-0.279208,0.819232,0.500901) + New Momentum Direction: (0.853889,0.504701,-0.127082) + New Polarization: (-0.429109,0.820885,0.376846) *** FresnelRefraction *** -Track (trackID 1205, parentID 1) is processed with stopping code 2 +Track (trackID 881, parentID 1) is processed with stopping code 2 ### pop requested out of 140 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.914603,-0.375311,0.150474) - Old Polarization: (0.0550545,-0.253087,-0.965876) - New Momentum Direction: (0.837067,-0.507806,0.203596) - New Polarization: (-0.101312,-0.509576,-0.85444) + Old Momentum Direction: (0.77557,0.434,-0.458406) + Old Polarization: (-0.440829,0.892136,0.0988066) + New Momentum Direction: (0.520598,0.586999,-0.620008) + New Polarization: (-0.694721,0.713364,0.0920535) *** FresnelRefraction *** -Track (trackID 1204, parentID 1) is processed with stopping code 2 +Track (trackID 880, parentID 1) is processed with stopping code 2 +### pop requested out of 139 stacked tracks. + +** Photon absorbed! ** +Track (trackID 879, parentID 1) is processed with stopping code 2 +### pop requested out of 138 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.404892,-0.0809779,-0.910772) + Old Polarization: (-0.853615,0.323534,-0.408249) + New Momentum Direction: (0.545308,-0.109061,-0.83111) + New Polarization: (0.831634,-0.0537987,0.552712) + *** FresnelRefraction *** +Track (trackID 878, parentID 1) is processed with stopping code 2 +### pop requested out of 137 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.922853,0.371463,-0.101775) + Old Polarization: (-0.277257,0.824131,0.4939) + New Momentum Direction: (0.853867,0.501991,-0.137537) + New Polarization: (-0.425345,0.825276,0.371485) + *** FresnelRefraction *** +Track (trackID 877, parentID 1) is processed with stopping code 2 +### pop requested out of 136 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.31549,-0.59974,-0.735376) + Old Polarization: (-0.947006,-0.248304,-0.203777) + New Momentum Direction: (0.428297,-0.814183,-0.392005) + New Polarization: (-0.723554,-0.568865,0.390976) + *** FresnelRefraction *** +Track (trackID 876, parentID 1) is processed with stopping code 2 +### pop requested out of 135 stacked tracks. + +** Photon absorbed! ** +Track (trackID 875, parentID 1) is processed with stopping code 2 +### pop requested out of 134 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.565038,-0.823634,-0.04856) + Old Polarization: (-0.673115,-0.494214,0.550153) + New Momentum Direction: (0.766993,-0.638261,-0.0659162) + New Polarization: (0.622368,0.715004,0.318476) + *** FresnelRefraction *** +Track (trackID 874, parentID 1) is processed with stopping code 2 +### pop requested out of 133 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.426346,-0.84173,-0.331239) + Old Polarization: (-0.82472,-0.512136,0.239901) + New Momentum Direction: (0.579461,-0.679373,-0.450197) + New Polarization: (0.380083,0.713907,-0.58811) + *** FresnelRefraction *** +Track (trackID 873, parentID 1) is processed with stopping code 2 +### pop requested out of 132 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.92676,-0.219485,0.304865) + Old Polarization: (-0.271687,0.168844,0.947459) + New Momentum Direction: (0.862093,-0.29608,0.411257) + New Polarization: (-0.41509,0.0529372,0.908239) + *** FresnelRefraction *** +Track (trackID 872, parentID 1) is processed with stopping code 2 +### pop requested out of 131 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.480699,-0.845655,-0.231941) + Old Polarization: (-0.76967,-0.533636,0.350488) + New Momentum Direction: (0.646267,-0.696492,-0.311829) + New Polarization: (0.621321,0.717498,-0.314892) + *** FresnelRefraction *** +Track (trackID 871, parentID 1) is processed with stopping code 2 +### pop requested out of 130 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.969669,0.0279554,0.242817) + Old Polarization: (-0.230061,0.439889,0.868084) + New Momentum Direction: (0.943181,0.0380041,0.330099) + New Polarization: (-0.321366,0.356847,0.877145) + *** FresnelRefraction *** +Track (trackID 870, parentID 1) is processed with stopping code 2 +### pop requested out of 129 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.802523,-0.540007,0.253672) + Old Polarization: (-0.409421,-0.189191,0.892514) + New Momentum Direction: (0.595104,-0.727389,0.341695) + New Polarization: (-0.641957,-0.174477,0.746625) + *** FresnelRefraction *** +Track (trackID 869, parentID 1) is processed with stopping code 2 +### pop requested out of 128 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.971881,0.20024,0.1239) + Old Polarization: (-0.22476,0.631967,0.741687) + New Momentum Direction: (0.947769,0.271233,0.167827) + New Polarization: (-0.310857,0.66767,0.676451) + *** FresnelRefraction *** +Track (trackID 868, parentID 1) is processed with stopping code 2 +### pop requested out of 127 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.343219,-0.281533,-0.896069) + Old Polarization: (-0.918145,0.100564,-0.383271) + New Momentum Direction: (0.46494,-0.381377,-0.798988) + New Polarization: (0.321166,-0.768336,0.553636) + *** FresnelRefraction *** +Track (trackID 867, parentID 1) is processed with stopping code 2 +### pop requested out of 126 stacked tracks. + +** Photon absorbed! ** +Track (trackID 866, parentID 1) is processed with stopping code 2 +### pop requested out of 125 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.338689,-0.711411,-0.61578) + Old Polarization: (-0.924003,-0.374951,-0.0750354) + New Momentum Direction: (0.458278,-0.309429,-0.833208) + New Polarization: (-0.528536,0.658811,-0.535367) + *** FresnelRefraction *** +Track (trackID 865, parentID 1) is processed with stopping code 2 +### pop requested out of 124 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.503191,0.156072,-0.849965) + Old Polarization: (-0.741613,0.582906,-0.332011) + New Momentum Direction: (0.681855,0.211487,-0.700248) + New Polarization: (0.305213,0.787724,0.535103) + *** FresnelRefraction *** +Track (trackID 864, parentID 1) is processed with stopping code 2 +### pop requested out of 123 stacked tracks. + +** Photon absorbed! ** +Track (trackID 863, parentID 1) is processed with stopping code 2 +### pop requested out of 122 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.446525,-0.847483,-0.287034) + Old Polarization: (-0.803402,-0.52096,0.288349) + New Momentum Direction: (0.605901,-0.693675,-0.389485) + New Polarization: (0.503036,0.713352,-0.487938) + *** FresnelRefraction *** +Track (trackID 862, parentID 1) is processed with stopping code 2 +### pop requested out of 121 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.615765,-0.787076,0.0366719) + Old Polarization: (-0.617373,-0.453035,0.643125) + New Momentum Direction: (0.836469,-0.545745,0.0498159) + New Polarization: (0.425868,0.70455,0.567667) + *** FresnelRefraction *** +Track (trackID 861, parentID 1) is processed with stopping code 2 +### pop requested out of 120 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.964034,-0.0232345,0.264761) + Old Polarization: (-0.235904,0.384056,0.892665) + New Momentum Direction: (0.932503,-0.0315731,0.35978) + New Polarization: (-0.337613,0.277629,0.899411) + *** FresnelRefraction *** +Track (trackID 860, parentID 1) is processed with stopping code 2 +### pop requested out of 119 stacked tracks. + +** Photon absorbed! ** +Track (trackID 859, parentID 1) is processed with stopping code 2 +### pop requested out of 118 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.895121,0.407259,-0.181383) + Old Polarization: (-0.3094,0.860394,0.404962) + New Momentum Direction: (0.797094,0.551619,-0.245677) + New Polarization: (-0.482459,0.826429,0.290255) + *** FresnelRefraction *** +Track (trackID 858, parentID 1) is processed with stopping code 2 +### pop requested out of 117 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.863395,-0.402475,0.304241) + Old Polarization: (-0.345402,-0.0319709,0.93791) + New Momentum Direction: (0.728865,-0.546169,0.412863) + New Polarization: (-0.543845,-0.0955255,0.833731) + *** FresnelRefraction *** +Track (trackID 857, parentID 1) is processed with stopping code 2 +### pop requested out of 116 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.729272,-0.657666,0.188776) + Old Polarization: (-0.49259,-0.313156,0.811966) + New Momentum Direction: (0.373071,-0.891792,0.25598) + New Polarization: (-0.779769,-0.151869,0.607368) + *** FresnelRefraction *** +Track (trackID 856, parentID 1) is processed with stopping code 2 +### pop requested out of 115 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.806738,0.438857,-0.3957) + Old Polarization: (-0.406162,0.898206,0.1681) + New Momentum Direction: (0.601498,0.593308,-0.534963) + New Polarization: (-0.639635,0.758864,0.12244) + *** FresnelRefraction *** +Track (trackID 855, parentID 1) is processed with stopping code 2 +### pop requested out of 114 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.387254,-0.800582,-0.457277) + Old Polarization: (-0.872482,-0.47853,0.098913) + New Momentum Direction: (0.522222,-0.589089,-0.616651) + New Polarization: (-0.0237786,0.712743,-0.701022) + *** FresnelRefraction *** +Track (trackID 854, parentID 1) is processed with stopping code 2 +### pop requested out of 113 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.43484,0.0224286,-0.900229) + Old Polarization: (-0.815428,0.433978,-0.383066) + New Momentum Direction: (0.590997,0.030483,-0.806098) + New Polarization: (0.731004,0.402319,0.551155) + *** FresnelRefraction *** +Track (trackID 853, parentID 1) is processed with stopping code 2 +### pop requested out of 112 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.81063,0.442961,-0.382968) +Old Polarization: (-0.403443,0.89652,0.182993) +New Polarization: (-0.425691,-0.901872,0.0735746) +Polarization Change: (-0.425691,-0.901872,0.0735746) +New Momentum Direction: (-0.855289,0.42758,0.292672) +Momentum Change: (-0.855289,0.42758,0.292672) +Scattering Photon! +Old Momentum Direction: (-0.855289,0.42758,0.292672) +Old Polarization: (-0.425691,-0.901872,0.0735746) +New Polarization: (-0.632811,0.75762,0.159883) +Polarization Change: (-0.632811,0.75762,0.159883) +New Momentum Direction: (-0.742876,-0.652273,0.15058) +Momentum Change: (-0.742876,-0.652273,0.15058) + Photon at Boundary! + Old Momentum Direction: (-0.742876,-0.652273,0.15058) + Old Polarization: (-0.632811,0.75762,0.159883) + New Momentum Direction: (-0.41767,-0.885314,0.204378) + New Polarization: (0.884793,-0.345151,0.31307) + *** FresnelRefraction *** +Track (trackID 852, parentID 1) is processed with stopping code 2 +### pop requested out of 111 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.847947,0.438987,-0.297114) + Old Polarization: (-0.363324,0.889451,0.277259) + New Momentum Direction: (0.693225,0.596865,-0.403969) + New Polarization: (-0.574419,0.796087,0.190497) + *** FresnelRefraction *** +Track (trackID 851, parentID 1) is processed with stopping code 2 +### pop requested out of 110 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.950589,0.310298,0.00981948) + Old Polarization: (-0.250835,0.74902,0.61323) + New Momentum Direction: (0.906601,0.421777,0.0133473) + New Polarization: (-0.372445,0.784892,0.495205) + *** FresnelRefraction *** +Track (trackID 850, parentID 1) is processed with stopping code 2 +### pop requested out of 109 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.840639,-0.457273,0.29022) + Old Polarization: (-0.369752,-0.0930081,0.924464) + New Momentum Direction: (0.679193,-0.619686,0.3933) + New Polarization: (-0.582981,-0.129935,0.802029) + *** FresnelRefraction *** +Track (trackID 849, parentID 1) is processed with stopping code 2 +### pop requested out of 108 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.956547,0.290822,0.0210037) + Old Polarization: (-0.238121,0.737572,0.631891) + New Momentum Direction: (0.919485,0.392105,0.0283185) + New Polarization: (-0.348634,0.780016,0.519644) + *** FresnelRefraction *** +Track (trackID 848, parentID 1) is processed with stopping code 2 +### pop requested out of 107 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.830084,0.443384,-0.338187) + Old Polarization: (-0.382914,0.894089,0.232338) + New Momentum Direction: (0.651938,0.602911,-0.459864) + New Polarization: (-0.606461,0.778629,0.161065) + *** FresnelRefraction *** +Track (trackID 847, parentID 1) is processed with stopping code 2 +### pop requested out of 106 stacked tracks. + +** Photon absorbed! ** +Track (trackID 846, parentID 1) is processed with stopping code 2 +### pop requested out of 105 stacked tracks. + +** Photon absorbed! ** +Track (trackID 845, parentID 1) is processed with stopping code 2 +### pop requested out of 104 stacked tracks. + +** Photon absorbed! ** +Track (trackID 844, parentID 1) is processed with stopping code 2 +### pop requested out of 103 stacked tracks. + +** Photon absorbed! ** +Track (trackID 843, parentID 1) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.4569,-0.846898,-0.272041) + Old Polarization: (-0.793733,-0.526219,0.30509) + New Momentum Direction: (0.617656,-0.695167,-0.367755) + New Polarization: (0.540922,0.714958,-0.442987) + *** FresnelRefraction *** +Track (trackID 842, parentID 1) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.961314,0.2713,0.0476739) + Old Polarization: (-0.234168,0.713747,0.660099) + New Momentum Direction: (0.928218,0.366422,0.0643891) + New Polarization: (-0.33847,0.759888,0.554985) + *** FresnelRefraction *** +Track (trackID 841, parentID 1) is processed with stopping code 2 +### pop requested out of 100 stacked tracks. + +** Photon absorbed! ** +Track (trackID 840, parentID 1) is processed with stopping code 2 +### pop requested out of 99 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.650062,0.356708,-0.670953) + Old Polarization: (-0.57975,0.803624,-0.134457) + New Momentum Direction: (0.650062,0.356708,0.670953) + New Polarization: (0.57975,-0.803624,-0.134457) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650062,0.356708,0.670953) + Old Polarization: (0.57975,-0.803624,-0.134457) + New Momentum Direction: (-0.650062,0.356708,0.670953) + New Polarization: (0.57975,0.803624,0.134457) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650062,0.356708,0.670953) + Old Polarization: (0.57975,0.803624,0.134457) + New Momentum Direction: (-0.650062,-0.356708,0.670953) + New Polarization: (-0.57975,0.803624,-0.134457) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650062,-0.356708,0.670953) + Old Polarization: (-0.57975,0.803624,-0.134457) + New Momentum Direction: (-0.650062,-0.356708,-0.670953) + New Polarization: (0.57975,-0.803624,-0.134457) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650062,-0.356708,-0.670953) + Old Polarization: (0.57975,-0.803624,-0.134457) + New Momentum Direction: (0.650062,-0.356708,-0.670953) + New Polarization: (0.57975,0.803624,0.134457) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 839, parentID 1) is processed with stopping code 2 +### pop requested out of 98 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.896204,0.407656,-0.175031) + Old Polarization: (-0.30965,0.857318,0.411246) + New Momentum Direction: (0.798254,0.553462,-0.237635) + New Polarization: (-0.483575,0.824105,0.29497) + *** FresnelRefraction *** +Track (trackID 838, parentID 1) is processed with stopping code 2 +### pop requested out of 97 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.973926,0.154634,0.166002) + Old Polarization: (-0.225462,0.578443,0.783945) + New Momentum Direction: (0.951245,0.210233,0.22569) + New Polarization: (-0.307408,0.586467,0.749371) + *** FresnelRefraction *** +Track (trackID 837, parentID 1) is processed with stopping code 2 +### pop requested out of 96 stacked tracks. + +** Photon absorbed! ** +Track (trackID 836, parentID 1) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.975474,0.158108,0.153139) + Old Polarization: (-0.217646,0.588971,0.778295) + New Momentum Direction: (0.954879,0.213334,0.206629) + New Polarization: (-0.295166,0.604542,0.739869) + *** FresnelRefraction *** +Track (trackID 835, parentID 1) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.549973,0.227028,-0.803734) + Old Polarization: (-0.690809,0.664497,-0.285003) + New Momentum Direction: (0.742872,0.306656,-0.595065) + New Polarization: (0.0335179,0.870756,0.490572) + *** FresnelRefraction *** +Track (trackID 834, parentID 1) is processed with stopping code 2 +### pop requested out of 93 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.418619,-0.833984,-0.359485) + Old Polarization: (-0.835112,-0.509046,0.208471) + New Momentum Direction: (0.566955,-0.664471,-0.486868) + New Polarization: (0.296682,0.716087,-0.631822) + *** FresnelRefraction *** +Track (trackID 833, parentID 1) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.513716,0.181025,-0.838645) + Old Polarization: (-0.729022,0.607475,-0.315439) + New Momentum Direction: (0.698307,0.246072,-0.672172) + New Polarization: (0.212794,0.825233,0.523173) + *** FresnelRefraction *** +Track (trackID 832, parentID 1) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.904035,0.397247,-0.157844) + Old Polarization: (-0.298742,0.851269,0.431386) + New Momentum Direction: (-0.904035,0.397247,-0.157844) + New Polarization: (0.187039,0.035578,-0.981708) + *** FresnelReflection *** + +** Photon absorbed! ** +Track (trackID 831, parentID 1) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.486841,-0.851316,-0.195569) + Old Polarization: (-0.758594,-0.523066,0.388506) + New Momentum Direction: (0.661497,-0.701291,-0.26573) + New Polarization: (0.670478,0.711771,-0.209383) + *** FresnelRefraction *** +Track (trackID 830, parentID 1) is processed with stopping code 2 +### pop requested out of 89 stacked tracks. + +** Photon absorbed! ** +Track (trackID 829, parentID 1) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.860973,-0.411773,0.298611) + Old Polarization: (-0.346109,-0.0440637,0.937159) + New Momentum Direction: (0.725996,-0.55672,0.403723) + New Polarization: (-0.543165,-0.10414,0.833142) + *** FresnelRefraction *** +Track (trackID 828, parentID 1) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. + +** Photon absorbed! ** +Track (trackID 827, parentID 1) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.63416,-0.770515,0.0643999) + Old Polarization: (-0.597217,-0.435218,0.673733) + New Momentum Direction: (0.861245,-0.500607,0.0874608) + New Polarization: (0.340569,0.696298,0.631808) + *** FresnelRefraction *** +Track (trackID 826, parentID 1) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.633901,-0.771859,0.049029) + Old Polarization: (-0.597766,-0.448727,0.664319) + New Momentum Direction: (0.853511,-0.516876,0.0660147) + New Polarization: (0.377193,0.700263,0.6061) + *** FresnelRefraction *** +Track (trackID 825, parentID 1) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + +** Photon absorbed! ** +Track (trackID 824, parentID 1) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.971437,0.0136865,0.236901) + Old Polarization: (-0.219615,0.429999,0.875711) + New Momentum Direction: (0.947692,0.0184096,0.318654) + New Polarization: (-0.305457,0.34195,0.888688) + *** FresnelRefraction *** +Track (trackID 823, parentID 1) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.912559,-0.271453,0.305859) + Old Polarization: (-0.286096,0.110644,0.951792) + New Momentum Direction: (0.83484,-0.36541,0.411725) + New Polarization: (-0.440637,0.00474221,0.897673) + *** FresnelRefraction *** +Track (trackID 822, parentID 1) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + +** Photon absorbed! ** +Track (trackID 821, parentID 1) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.972768,0.0644693,0.222633) + Old Polarization: (-0.225788,0.480563,0.847396) + New Momentum Direction: (0.949176,0.087546,0.302324) + New Polarization: (-0.310286,0.421374,0.852154) + *** FresnelRefraction *** +Track (trackID 820, parentID 1) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.515963,0.178601,-0.837785) + Old Polarization: (-0.727517,0.607678,-0.318506) + New Momentum Direction: (0.699206,0.242031,-0.672705) + New Polarization: (0.220204,0.822295,0.52473) + *** FresnelRefraction *** +Track (trackID 819, parentID 1) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.539436,0.211734,-0.814971) + Old Polarization: (-0.702365,0.646982,-0.296812) + New Momentum Direction: (0.729021,0.286147,-0.62181) + New Polarization: (0.0921192,0.859148,0.503368) + *** FresnelRefraction *** +Track (trackID 818, parentID 1) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.418473,-0.838491,-0.349017) + Old Polarization: (-0.832955,-0.507501,0.220521) + New Momentum Direction: (0.569167,-0.671349,-0.474699) + New Polarization: (0.32523,0.714075,-0.619937) + *** FresnelRefraction *** +Track (trackID 817, parentID 1) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.547114,-0.831985,-0.0920177) + Old Polarization: (-0.694216,-0.512421,0.505458) + New Momentum Direction: (0.738315,-0.662927,-0.124175) + New Polarization: (0.673901,0.717628,0.175691) + *** FresnelRefraction *** +Track (trackID 816, parentID 1) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + +** Photon absorbed! ** +Track (trackID 815, parentID 1) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.387862,-0.80729,-0.4448) + Old Polarization: (-0.869483,-0.480606,0.114094) + New Momentum Direction: (0.524939,-0.601693,-0.602) + New Polarization: (0.0139411,0.71327,-0.70075) + *** FresnelRefraction *** +Track (trackID 814, parentID 1) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.840545,0.43116,-0.328002) + Old Polarization: (-0.366092,0.898361,0.242745) + New Momentum Direction: (0.685132,0.579732,-0.441027) + New Polarization: (-0.572325,0.802966,0.166399) + *** FresnelRefraction *** +Track (trackID 813, parentID 1) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.942953,0.331384,-0.0320009) + Old Polarization: (-0.254753,0.780085,0.571461) + New Momentum Direction: (0.89314,0.447696,-0.0432329) + New Polarization: (-0.382655,0.806848,0.45008) + *** FresnelRefraction *** +Track (trackID 812, parentID 1) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.858495,0.433626,-0.273778) + Old Polarization: (-0.350953,0.886053,0.302888) + New Momentum Direction: (0.717909,0.588631,-0.371644) + New Polarization: (-0.553186,0.806479,0.208751) + *** FresnelRefraction *** +Track (trackID 811, parentID 1) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + +** Photon absorbed! ** +Track (trackID 810, parentID 1) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.94784,-0.124827,0.293288) + Old Polarization: (-0.251296,0.273399,0.928495) + New Momentum Direction: (0.901986,-0.169087,0.397279) + New Polarization: (-0.374823,0.150064,0.914871) + *** FresnelRefraction *** +Track (trackID 809, parentID 1) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + +** Photon absorbed! ** +Track (trackID 808, parentID 1) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.831025,-0.4791,0.282598) + Old Polarization: (-0.379886,-0.117739,0.91751) + New Momentum Direction: (0.657979,-0.648609,0.382583) + New Polarization: (-0.598701,-0.142424,0.788208) + *** FresnelRefraction *** +Track (trackID 807, parentID 1) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + +** Photon absorbed! ** +Track (trackID 806, parentID 1) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.758009,0.434516,-0.486434) + Old Polarization: (-0.461772,0.884211,0.0702585) + New Momentum Direction: (0.46173,0.590921,-0.661527) + New Polarization: (-0.733124,0.674059,0.0904118) + *** FresnelRefraction *** +Track (trackID 805, parentID 1) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.387583,-0.795317,-0.466101) + Old Polarization: (-0.874251,-0.477477,0.0877502) + New Momentum Direction: (0.520973,-0.579713,-0.626514) + New Polarization: (-0.0495156,0.712229,-0.700199) + *** FresnelRefraction *** +Track (trackID 804, parentID 1) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.335298,-0.318587,-0.88661) + Old Polarization: (-0.926359,0.0598917,-0.37185) + New Momentum Direction: (0.454523,-0.431871,-0.779035) + New Polarization: (0.172962,-0.81516,0.55281) + *** FresnelRefraction *** +Track (trackID 803, parentID 1) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.692734,0.397172,-0.601975) + Old Polarization: (-0.533076,0.84418,-0.0564741) + New Momentum Direction: (-0.692734,0.397172,-0.601975) + New Polarization: (-0.429409,-0.897758,-0.0981722) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.692734,0.397172,-0.601975) + Old Polarization: (-0.429409,-0.897758,-0.0981722) + New Momentum Direction: (-0.692734,0.397172,0.601975) + New Polarization: (0.429409,0.897758,-0.0981722) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.692734,0.397172,0.601975) + Old Polarization: (0.429409,0.897758,-0.0981722) + New Momentum Direction: (-0.692734,-0.397172,0.601975) + New Polarization: (-0.429409,0.897758,0.0981722) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.692734,-0.397172,0.601975) + Old Polarization: (-0.429409,0.897758,0.0981722) + New Momentum Direction: (-0.19779,-0.539835,0.818204) + New Polarization: (0.751377,0.452563,0.480228) + *** FresnelRefraction *** +Track (trackID 802, parentID 1) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + +** Photon absorbed! ** +Track (trackID 801, parentID 1) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.456822,0.0474701,-0.888291) + Old Polarization: (-0.796006,0.46758,-0.384375) + New Momentum Direction: (0.614728,0.0638787,-0.786148) + New Polarization: (0.661135,0.501812,0.557749) + *** FresnelRefraction *** +Track (trackID 800, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + +** Photon absorbed! ** +Track (trackID 799, parentID 1) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.867625,-0.398856,0.296885) + Old Polarization: (-0.336585,-0.0316526,0.941121) + New Momentum Direction: (0.742721,-0.537136,0.399813) + New Polarization: (-0.525653,-0.097833,0.845055) + *** FresnelRefraction *** +Track (trackID 798, parentID 1) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + +** Photon absorbed! ** +Track (trackID 797, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.347881,-0.743188,-0.571534) + Old Polarization: (-0.91266,-0.407951,-0.0250435) + New Momentum Direction: (0.471478,-0.421563,-0.774592) + New Polarization: (-0.400864,0.679909,-0.614029) + *** FresnelRefraction *** +Track (trackID 796, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.873491,-0.381588,0.302332) + Old Polarization: (-0.331446,-0.0112497,0.943407) + New Momentum Direction: (0.75365,-0.515176,0.408174) + New Polarization: (-0.518366,-0.0840561,0.851017) + *** FresnelRefraction *** +Track (trackID 795, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + +** Photon absorbed! ** +Track (trackID 794, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.430989,-0.837869,-0.334999) + Old Polarization: (-0.822817,-0.517316,0.235279) + New Momentum Direction: (0.582219,-0.675443,-0.452546) + New Polarization: (0.374346,0.716811,-0.588257) + *** FresnelRefraction *** +Track (trackID 793, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.371944,-0.166967,-0.913115) + Old Polarization: (-0.886748,0.226953,-0.402703) + New Momentum Direction: (0.503639,-0.226085,-0.833807) + New Polarization: (0.708845,-0.443575,0.548434) + *** FresnelRefraction *** +Track (trackID 792, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.974663,0.139301,0.175006) + Old Polarization: (-0.223339,0.563033,0.795685) + New Momentum Direction: (0.952799,0.189076,0.237539) + New Polarization: (-0.303355,0.561268,0.770035) + *** FresnelRefraction *** +Track (trackID 791, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + +** Photon absorbed! ** +Track (trackID 790, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.963987,-0.0248484,0.264787) + Old Polarization: (-0.235544,0.382518,0.89342) + New Momentum Direction: (0.932487,-0.0337482,0.359624) + New Polarization: (-0.337191,0.275629,0.900184) + *** FresnelRefraction *** +Track (trackID 789, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.96442,0.252144,0.0794843) + Old Polarization: (-0.23591,0.68506,0.689231) + New Momentum Direction: (0.933162,0.342825,0.10807) + New Polarization: (-0.3371,0.730266,0.594202) + *** FresnelRefraction *** +Track (trackID 788, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + +** Photon absorbed! ** +Track (trackID 787, parentID 1) is processed with stopping code 2 +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.974565,0.0760187,0.210818) + Old Polarization: (-0.220367,0.496169,0.839795) + New Momentum Direction: (0.952984,0.102788,0.285055) + New Polarization: (-0.300243,0.447379,0.84244) + *** FresnelRefraction *** +Track (trackID 786, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.441539,0.0265206,-0.89685) + Old Polarization: (-0.810317,0.440987,-0.385897) + New Momentum Direction: (0.597406,0.0358826,-0.801136) + New Polarization: (0.718051,0.420894,0.554302) + *** FresnelRefraction *** +Track (trackID 785, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.953126,-0.0971438,0.286554) +Old Polarization: (-0.245773,0.303825,0.920481) +New Polarization: (-0.123547,-0.00937529,0.992294) +Polarization Change: (-0.123547,-0.00937529,0.992294) +New Momentum Direction: (0.382457,-0.923154,0.0388962) +Momentum Change: (0.382457,-0.923154,0.0388962) + Photon at Boundary! + Old Momentum Direction: (0.382457,-0.923154,0.0388962) + Old Polarization: (-0.123547,-0.00937529,0.992294) + New Momentum Direction: (0.518276,-0.853587,0.0527092) + New Polarization: (-0.0727319,0.0174164,0.997199) + *** FresnelRefraction *** +Track (trackID 784, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.433479,0.00550945,-0.901147) + Old Polarization: (-0.819603,0.41812,-0.391697) + New Momentum Direction: (0.586084,0.00744904,-0.810216) + New Polarization: (0.761653,0.336036,0.554044) + *** FresnelRefraction *** +Track (trackID 783, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.314377,-0.586991,-0.746062) + Old Polarization: (-0.948069,-0.234126,-0.215291) + New Momentum Direction: (0.314377,-0.586991,0.746062) + New Polarization: (0.839873,0.538299,0.0696196) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.314377,-0.586991,0.746062) + Old Polarization: (0.839873,0.538299,0.0696196) + New Momentum Direction: (0.314377,0.586991,0.746062) + New Polarization: (-0.839873,0.538299,-0.0696196) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.314377,0.586991,0.746062) + Old Polarization: (-0.839873,0.538299,-0.0696196) + New Momentum Direction: (-0.314377,0.586991,0.746062) + New Polarization: (-0.839873,-0.538299,0.0696196) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 782, parentID 1) is processed with stopping code 2 +### pop requested out of 41 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.473347,0.105756,-0.874505) + Old Polarization: (-0.773312,0.525289,-0.355049) + New Momentum Direction: (0.643264,0.143719,-0.752035) + New Polarization: (0.488651,0.679105,0.547756) + *** FresnelRefraction *** +Track (trackID 781, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.499642,0.136229,-0.855453) + Old Polarization: (-0.747794,0.566292,-0.346581) + New Momentum Direction: (0.67285,0.183455,-0.71667) + New Polarization: (0.374322,0.751166,0.54372) + *** FresnelRefraction *** +Track (trackID 780, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + +** Photon absorbed! ** +Track (trackID 779, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.508706,-0.847095,-0.153778) + Old Polarization: (-0.735036,-0.520328,0.434718) + New Momentum Direction: (0.690368,-0.692704,-0.208693) + New Polarization: (0.698386,0.713397,-0.0576414) + *** FresnelRefraction *** +Track (trackID 778, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. + +** Photon absorbed! ** +Track (trackID 777, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.91531,-0.250723,0.315192) + Old Polarization: (-0.289377,0.134914,0.94766) + New Momentum Direction: (0.836883,-0.34076,0.428381) + New Polarization: (-0.447883,0.0236309,0.89378) + *** FresnelRefraction *** +Track (trackID 776, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.474456,0.0945864,-0.875183) + Old Polarization: (-0.77453,0.517322,-0.36398) + New Momentum Direction: (0.641016,0.127792,-0.756814) + New Polarization: (0.522072,0.650199,0.551981) + *** FresnelRefraction *** +Track (trackID 775, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. + +** Photon absorbed! ** +Track (trackID 774, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.967179,-0.0136899,0.253726) + Old Polarization: (-0.227586,0.397399,0.888976) + New Momentum Direction: (0.939279,-0.0184882,0.342657) + New Polarization: (-0.322244,0.295727,0.89928) + *** FresnelRefraction *** +Track (trackID 773, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. + +** Photon absorbed! ** +Track (trackID 772, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.691883,0.395852,-0.603821) + Old Polarization: (-0.53395,0.843465,-0.0588638) + New Momentum Direction: (0.194712,0.537771,-0.820299) + New Polarization: (-0.854073,0.504204,0.127816) + *** FresnelRefraction *** +Track (trackID 771, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.930651,0.360099,-0.064942) + Old Polarization: (-0.273348,0.802182,0.530834) + New Momentum Direction: (0.867256,0.489958,-0.0883613) + New Polarization: (-0.417997,0.812989,0.405373) + *** FresnelRefraction *** +Track (trackID 770, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.93421,-0.178999,0.308563) + Old Polarization: (-0.269297,0.21339,0.939118) + New Momentum Direction: (0.874375,-0.243493,0.419738) + New Polarization: (-0.410158,0.0913766,0.907425) + *** FresnelRefraction *** +Track (trackID 769, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.732963,-0.653382,0.18936) + Old Polarization: (-0.48801,-0.3111,0.815514) + New Momentum Direction: (-0.732963,-0.653382,0.18936) + New Polarization: (-0.243018,-0.00849903,-0.969985) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.732963,-0.653382,0.18936) + Old Polarization: (-0.243018,-0.00849903,-0.969985) + New Momentum Direction: (-0.732963,0.653382,0.18936) + New Polarization: (0.243018,-0.00849903,0.969985) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.732963,0.653382,0.18936) + Old Polarization: (0.243018,-0.00849903,0.969985) + New Momentum Direction: (-0.391427,0.883839,0.25615) + New Polarization: (0.453726,-0.056799,0.889329) + *** FresnelRefraction *** +Track (trackID 768, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.946892,-0.139558,0.289689) + Old Polarization: (-0.247637,0.258181,0.933819) + New Momentum Direction: (0.901482,-0.187849,0.389928) + New Polarization: (-0.369347,0.135787,0.919317) + *** FresnelRefraction *** +Track (trackID 767, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.950913,-0.109971,0.28926) + Old Polarization: (-0.247694,0.289851,0.924464) + New Momentum Direction: (0.907957,-0.14892,0.391711) + New Polarization: (-0.367311,0.167163,0.914953) + *** FresnelRefraction *** +Track (trackID 766, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + +** Photon absorbed! ** +Track (trackID 765, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + +** Photon absorbed! ** +Track (trackID 764, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.970129,0.210772,0.120106) + Old Polarization: (-0.229784,0.639651,0.733516) + New Momentum Direction: (0.944021,0.286618,0.163326) + New Polarization: (-0.320196,0.676986,0.662695) + *** FresnelRefraction *** +Track (trackID 763, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.751201,-0.625932,0.209537) + Old Polarization: (-0.467794,-0.28088,0.838018) + New Momentum Direction: (0.450529,-0.846585,0.283403) + New Polarization: (-0.737275,-0.173808,0.652852) + *** FresnelRefraction *** +Track (trackID 762, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + +** Photon absorbed! ** +Track (trackID 761, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.322806,-0.627556,-0.708498) + Old Polarization: (-0.942305,-0.283205,-0.178483) + New Momentum Direction: (0.436381,-0.848353,-0.299782) + New Polarization: (-0.775112,-0.523642,0.353554) + *** FresnelRefraction *** +Track (trackID 760, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.336873,-0.308445,-0.889595) + Old Polarization: (-0.924406,0.071133,-0.374719) + New Momentum Direction: (0.456792,-0.418245,-0.78512) + New Polarization: (0.21289,-0.805536,0.552983) + *** FresnelRefraction *** +Track (trackID 759, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.645595,0.356132,-0.675557) + Old Polarization: (-0.58468,0.799572,-0.137239) + New Momentum Direction: (0.645595,0.356132,0.675557) + New Polarization: (0.58468,-0.799572,-0.137239) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.645595,0.356132,0.675557) + Old Polarization: (0.58468,-0.799572,-0.137239) + New Momentum Direction: (-0.645595,0.356132,0.675557) + New Polarization: (0.58468,0.799572,0.137239) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.645595,0.356132,0.675557) +Old Polarization: (0.58468,0.799572,0.137239) +New Polarization: (-0.0385989,0.998138,0.047239) +Polarization Change: (-0.0385989,0.998138,0.047239) +New Momentum Direction: (0.986495,0.0305328,0.16092) +Momentum Change: (0.986495,0.0305328,0.16092) + Photon at Boundary! + Old Momentum Direction: (0.986495,0.0305328,0.16092) + Old Polarization: (-0.0385989,0.998138,0.047239) + New Momentum Direction: (0.974916,0.0414904,0.21867) + New Polarization: (-0.0697692,0.989922,0.123231) + *** FresnelRefraction *** +Track (trackID 758, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.950106,0.311853,0.00676235) + Old Polarization: (-0.25097,0.751383,0.610277) + New Momentum Direction: (0.905772,0.423665,0.00918692) + New Polarization: (-0.372973,0.78673,0.491882) + *** FresnelRefraction *** +Track (trackID 757, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + +** Photon absorbed! ** +Track (trackID 756, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + +** Photon absorbed! ** +Track (trackID 755, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + +** Photon absorbed! ** +Track (trackID 754, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.319944,-0.43246,-0.842979) + Old Polarization: (-0.943628,-0.0657564,-0.32441) + New Momentum Direction: (0.433512,-0.585968,-0.684624) + New Polarization: (-0.256761,-0.808551,0.529452) + *** FresnelRefraction *** +Track (trackID 753, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.722253,0.405935,-0.559971) + Old Polarization: (-0.499187,0.86635,-0.0158187) + New Momentum Direction: (0.361931,0.547135,-0.754751) + New Polarization: (-0.783488,0.617251,0.0717473) + *** FresnelRefraction *** +Track (trackID 752, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + +** Photon absorbed! ** +Track (trackID 751, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.323889,-0.424791,-0.845369) + Old Polarization: (-0.941725,-0.0589723,-0.331173) + New Momentum Direction: (0.437505,-0.573801,-0.692345) + New Polarization: (-0.22451,-0.815262,0.533801) + *** FresnelRefraction *** +Track (trackID 750, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.603341,-0.797396,0.011815) + Old Polarization: (-0.631279,-0.468492,0.618063) + New Momentum Direction: (0.817236,-0.57608,0.0160037) + New Polarization: (0.490467,0.709829,0.505554) + *** FresnelRefraction *** +Track (trackID 749, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.52371,0.199363,-0.82824) +Old Polarization: (-0.717855,0.626777,-0.303042) +New Polarization: (-0.270332,0.18037,-0.945721) +Polarization Change: (-0.270332,0.18037,-0.945721) +New Momentum Direction: (-0.692643,0.645832,0.321165) +Momentum Change: (-0.692643,0.645832,0.321165) + Photon at Boundary! + Old Momentum Direction: (-0.692643,0.645832,0.321165) + Old Polarization: (-0.270332,0.18037,-0.945721) + New Momentum Direction: (-0.692643,-0.645832,0.321165) + New Polarization: (0.270332,0.18037,0.945721) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.692643,-0.645832,0.321165) + Old Polarization: (0.270332,0.18037,0.945721) + New Momentum Direction: (-0.192813,-0.878595,0.436915) + New Polarization: (0.5369,0.278236,0.796444) + *** FresnelRefraction *** +Track (trackID 748, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.836831,-0.463279,0.291696) + Old Polarization: (-0.375375,-0.0977092,0.921708) + New Momentum Direction: (0.667981,-0.629747,0.39651) + New Polarization: (-0.593986,-0.130202,0.793869) + *** FresnelRefraction *** +Track (trackID 747, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + +** Photon absorbed! ** +Track (trackID 746, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.358933,-0.77379,-0.521934) + Old Polarization: (-0.898541,-0.437785,0.0311096) + New Momentum Direction: (0.487827,-0.508753,-0.709362) + New Polarization: (-0.24888,0.697828,-0.671636) + *** FresnelRefraction *** +Track (trackID 745, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.590136,0.284084,-0.755669) + Old Polarization: (-0.646172,0.727331,-0.231194) + New Momentum Direction: (0.797449,0.383882,-0.465522) + New Polarization: (-0.179092,0.887333,0.424931) + *** FresnelRefraction *** +Track (trackID 744, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.506979,-0.847262,-0.158491) + Old Polarization: (-0.737139,-0.521476,0.429754) + New Momentum Direction: (0.6876,-0.693542,-0.214956) + New Polarization: (0.69665,0.713592,-0.0739214) + *** FresnelRefraction *** +Track (trackID 743, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.516716,0.179556,-0.837117) +Old Polarization: (-0.726739,0.608882,-0.317983) +New Polarization: (-0.811705,0.55716,-0.175235) +Polarization Change: (-0.811705,0.55716,-0.175235) +New Momentum Direction: (0.419326,0.347061,-0.838877) +Momentum Change: (0.419326,0.347061,-0.838877) + +** Photon absorbed! ** +Track (trackID 742, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 141 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 142 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.859257,-0.332787,0.388498) + Old Polarization: (-0.504714,-0.427836,0.749813) + New Momentum Direction: (0.723404,-0.449158,0.524351) + New Polarization: (-0.68557,-0.377398,0.622547) + *** FresnelRefraction *** +Track (trackID 1087, parentID 1) is processed with stopping code 2 +### pop requested out of 141 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.616278,0.512455,-0.597989) + Old Polarization: (-0.776993,0.519446,-0.35561) + New Momentum Direction: (-0.616278,0.512455,-0.597989) + New Polarization: (-0.776993,-0.519446,0.35561) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.616278,0.512455,-0.597989) + Old Polarization: (-0.776993,-0.519446,0.35561) + New Momentum Direction: (-0.616278,0.512455,0.597989) + New Polarization: (0.776993,0.519446,0.35561) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.616278,0.512455,0.597989) + Old Polarization: (0.776993,0.519446,0.35561) + New Momentum Direction: (-0.616278,-0.512455,0.597989) + New Polarization: (-0.776993,0.519446,-0.35561) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.616278,-0.512455,0.597989) + Old Polarization: (-0.776993,0.519446,-0.35561) + New Momentum Direction: (0.616278,-0.512455,0.597989) + New Polarization: (-0.776993,-0.519446,0.35561) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.616278,-0.512455,0.597989) + Old Polarization: (-0.776993,-0.519446,0.35561) + New Momentum Direction: (0.616278,-0.512455,-0.597989) + New Polarization: (0.776993,0.519446,0.35561) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.616278,-0.512455,-0.597989) + Old Polarization: (0.776993,0.519446,0.35561) + New Momentum Direction: (0.616278,0.512455,-0.597989) + New Polarization: (-0.776993,0.519446,-0.35561) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1086, parentID 1) is processed with stopping code 2 +### pop requested out of 140 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.868596,-0.165398,0.467103) + Old Polarization: (-0.494826,-0.239576,0.835315) + New Momentum Direction: (0.742467,-0.223597,0.631464) + New Polarization: (-0.669391,-0.211531,0.712159) + *** FresnelRefraction *** +Track (trackID 1085, parentID 1) is processed with stopping code 2 +### pop requested out of 139 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.591385,0.342403,-0.730085) +Old Polarization: (-0.803582,0.32572,-0.49816) +New Polarization: (0.140243,-0.15424,0.97803) +Polarization Change: (0.140243,-0.15424,0.97803) +New Momentum Direction: (0.937612,-0.296708,-0.18124) +Momentum Change: (0.937612,-0.296708,-0.18124) + Photon at Boundary! + Old Momentum Direction: (0.937612,-0.296708,-0.18124) + Old Polarization: (0.140243,-0.15424,0.97803) + New Momentum Direction: (0.882214,-0.401816,-0.245443) + New Polarization: (-0.24298,-0.835023,0.493658) + *** FresnelRefraction *** +Track (trackID 1084, parentID 1) is processed with stopping code 2 +### pop requested out of 138 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.615391,-0.291484,-0.732346) + Old Polarization: (-0.777145,-0.379592,-0.501952) + New Momentum Direction: (0.832648,-0.39439,-0.388786) + New Polarization: (0.0738819,-0.616647,0.783766) + *** FresnelRefraction *** +Track (trackID 1083, parentID 1) is processed with stopping code 2 +### pop requested out of 137 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.596167,-0.110328,-0.795244) + Old Polarization: (-0.799019,-0.178309,-0.57426) + New Momentum Direction: (0.805502,-0.149068,-0.573537) + New Polarization: (0.506277,-0.329887,0.79678) + *** FresnelRefraction *** +Track (trackID 1082, parentID 1) is processed with stopping code 2 +### pop requested out of 136 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.587079,-0.00847634,-0.809485) + Old Polarization: (-0.808161,-0.0642509,-0.585446) + New Momentum Direction: (0.795525,-0.0114859,-0.605811) + New Polarization: (0.604098,-0.0624468,0.794459) + *** FresnelRefraction *** +Track (trackID 1081, parentID 1) is processed with stopping code 2 +### pop requested out of 135 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.868498,0.0462942,0.493526) + Old Polarization: (-0.493924,-0.00320339,0.869499) + New Momentum Direction: (0.743985,0.0624048,0.665275) + New Polarization: (-0.666939,0.00832649,0.745065) + *** FresnelRefraction *** +Track (trackID 1080, parentID 1) is processed with stopping code 2 +### pop requested out of 134 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.61041,0.509481,-0.606489) + Old Polarization: (-0.78198,0.509537,-0.358999) + New Momentum Direction: (-0.61041,0.509481,-0.606489) + New Polarization: (-0.78198,-0.509537,0.358999) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.61041,0.509481,-0.606489) + Old Polarization: (-0.78198,-0.509537,0.358999) + New Momentum Direction: (-0.61041,0.509481,0.606489) + New Polarization: (0.78198,0.509537,0.358999) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.61041,0.509481,0.606489) + Old Polarization: (0.78198,0.509537,0.358999) + New Momentum Direction: (-0.61041,-0.509481,0.606489) + New Polarization: (-0.78198,0.509537,-0.358999) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1079, parentID 1) is processed with stopping code 2 +### pop requested out of 133 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.685853,0.689931,-0.231519) + Old Polarization: (-0.698653,0.713275,0.0558843) + New Momentum Direction: (0.173755,0.933625,-0.313295) + New Polarization: (-0.969199,0.218503,0.113622) + *** FresnelRefraction *** +Track (trackID 1078, parentID 1) is processed with stopping code 2 +### pop requested out of 132 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.585278,0.0614127,-0.808504) + Old Polarization: (-0.810443,0.0133995,-0.585664) + New Momentum Direction: (0.792445,0.0831505,-0.604249) + New Polarization: (0.592259,0.131923,0.794874) + *** FresnelRefraction *** +Track (trackID 1077, parentID 1) is processed with stopping code 2 +### pop requested out of 131 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.673672,-0.553192,-0.490046) + Old Polarization: (-0.711641,-0.664431,-0.228253) + New Momentum Direction: (-0.673672,-0.553192,-0.490046) + New Polarization: (-0.711641,0.664431,0.228253) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.673672,-0.553192,-0.490046) + Old Polarization: (-0.711641,0.664431,0.228253) + New Momentum Direction: (-0.673672,0.553192,-0.490046) + New Polarization: (0.711641,0.664431,-0.228253) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.673672,0.553192,-0.490046) + Old Polarization: (0.711641,0.664431,-0.228253) + New Momentum Direction: (-0.673672,0.553192,0.490046) + New Polarization: (-0.711641,-0.664431,-0.228253) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.673672,0.553192,0.490046) +Old Polarization: (-0.711641,-0.664431,-0.228253) +New Polarization: (-0.882334,0.207925,-0.4222) +Polarization Change: (-0.882334,0.207925,-0.4222) +New Momentum Direction: (0.240039,0.970474,-0.0237067) +Momentum Change: (0.240039,0.970474,-0.0237067) + Photon at Boundary! + Old Momentum Direction: (0.240039,0.970474,-0.0237067) + Old Polarization: (-0.882334,0.207925,-0.4222) + New Momentum Direction: (0.326293,0.944719,-0.0322253) + New Polarization: (0.824544,-0.301126,-0.479009) + *** FresnelRefraction *** +Track (trackID 1076, parentID 1) is processed with stopping code 2 +### pop requested out of 130 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.866871,0.0452513,0.496475) + Old Polarization: (-0.496801,-0.0045105,0.867853) + New Momentum Direction: (0.738685,0.061183,0.671269) + New Polarization: (-0.672827,0.0069471,0.739767) + *** FresnelRefraction *** +Track (trackID 1075, parentID 1) is processed with stopping code 2 +### pop requested out of 129 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.74666,0.661956,0.0656699) + Old Polarization: (-0.631225,0.67391,0.383928) + New Momentum Direction: (0.425607,0.900488,0.0893336) + New Polarization: (-0.882873,0.391561,0.259258) + *** FresnelRefraction *** +Track (trackID 1074, parentID 1) is processed with stopping code 2 +### pop requested out of 128 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.866562,-0.197321,0.458404) + Old Polarization: (-0.497719,-0.274194,0.822857) + New Momentum Direction: (0.737003,-0.267233,0.620816) + New Polarization: (-0.674938,-0.242279,0.696964) + *** FresnelRefraction *** +Track (trackID 1073, parentID 1) is processed with stopping code 2 +### pop requested out of 127 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.694603,-0.594243,-0.405465) + Old Polarization: (-0.688687,-0.712185,-0.136024) + New Momentum Direction: (-0.694603,-0.594243,-0.405465) + New Polarization: (-0.651963,0.75823,0.00562783) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.694603,-0.594243,-0.405465) + Old Polarization: (-0.651963,0.75823,0.00562783) + New Momentum Direction: (-0.694603,0.594243,-0.405465) + New Polarization: (0.651963,0.75823,-0.00562783) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.694603,0.594243,-0.405465) + Old Polarization: (0.651963,0.75823,-0.00562783) + New Momentum Direction: (-0.694603,0.594243,0.405465) + New Polarization: (-0.651963,-0.75823,-0.00562783) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.694603,0.594243,0.405465) + Old Polarization: (-0.651963,-0.75823,-0.00562783) + New Momentum Direction: (-0.216472,0.806447,0.550257) + New Polarization: (0.936884,0.0130848,0.349395) + *** FresnelRefraction *** +Track (trackID 1072, parentID 1) is processed with stopping code 2 +### pop requested out of 126 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1071, parentID 1) is processed with stopping code 2 +### pop requested out of 125 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.857822,0.167544,0.485871) + Old Polarization: (-0.507831,0.130916,0.851451) + New Momentum Direction: (0.717182,0.227181,0.658816) + New Polarization: (-0.692576,0.12737,0.710011) + *** FresnelRefraction *** +Track (trackID 1070, parentID 1) is processed with stopping code 2 +### pop requested out of 124 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1069, parentID 1) is processed with stopping code 2 +### pop requested out of 123 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.753453,-0.640327,-0.149299) +Old Polarization: (-0.623383,-0.767892,0.147432) +New Polarization: (-0.318744,-0.762199,0.563432) +Polarization Change: (-0.318744,-0.762199,0.563432) +New Momentum Direction: (0.696516,0.214816,0.684631) +Momentum Change: (0.696516,0.214816,0.684631) + Photon at Boundary! + Old Momentum Direction: (0.696516,0.214816,0.684631) + Old Polarization: (-0.318744,-0.762199,0.563432) + New Momentum Direction: (0.239089,0.290696,0.926462) + New Polarization: (-0.595879,-0.709418,0.37637) + *** FresnelRefraction *** +Track (trackID 1068, parentID 1) is processed with stopping code 2 +### pop requested out of 122 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.715694,0.69416,-0.0769645) + Old Polarization: (-0.665326,0.711152,0.227168) + New Momentum Direction: (0.315178,0.943253,-0.104582) + New Polarization: (-0.929009,0.329166,0.169092) + *** FresnelRefraction *** +Track (trackID 1067, parentID 1) is processed with stopping code 2 +### pop requested out of 121 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.860588,0.108703,0.497566) + Old Polarization: (-0.505625,0.0651791,0.860288) + New Momentum Direction: (-0.860588,0.108703,0.497566) + New Polarization: (0.466457,0.560439,0.684344) + *** FresnelReflection *** + +** Photon absorbed! ** +Track (trackID 1066, parentID 1) is processed with stopping code 2 +### pop requested out of 120 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.867723,-0.0377587,0.495611) + Old Polarization: (-0.496811,-0.0966715,0.862458) + New Momentum Direction: (0.738838,-0.0511922,0.671936) + New Polarization: (-0.673717,-0.0782811,0.734832) + *** FresnelRefraction *** +Track (trackID 1065, parentID 1) is processed with stopping code 2 +### pop requested out of 119 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.673124,0.67219,-0.308327) + Old Polarization: (-0.713388,0.700075,-0.0311844) + New Momentum Direction: (-0.673124,0.67219,-0.308327) + New Polarization: (-0.704986,-0.709186,-0.00702034) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.673124,0.67219,-0.308327) + Old Polarization: (-0.704986,-0.709186,-0.00702034) + New Momentum Direction: (-0.673124,-0.67219,-0.308327) + New Polarization: (0.712266,-0.701436,-0.0257689) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.673124,-0.67219,-0.308327) + Old Polarization: (0.712266,-0.701436,-0.0257689) + New Momentum Direction: (-0.673124,-0.67219,0.308327) + New Polarization: (-0.712266,0.701436,-0.0257689) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1064, parentID 1) is processed with stopping code 2 +### pop requested out of 118 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1063, parentID 1) is processed with stopping code 2 +### pop requested out of 117 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.787449,-0.616198,0.0149787) + Old Polarization: (-0.585597,-0.740319,0.330156) + New Momentum Direction: (0.551052,-0.834225,0.0202786) + New Polarization: (-0.813225,-0.531414,0.237202) + *** FresnelRefraction *** +Track (trackID 1062, parentID 1) is processed with stopping code 2 +### pop requested out of 116 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1061, parentID 1) is processed with stopping code 2 +### pop requested out of 115 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1060, parentID 1) is processed with stopping code 2 +### pop requested out of 114 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (-0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,-0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,-0.62204,0.219731) + New Momentum Direction: (-0.639037,-0.603683,-0.476653) + New Polarization: (0.751522,-0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,-0.603683,-0.476653) + Old Polarization: (0.751522,-0.62204,-0.219731) + New Momentum Direction: (-0.639037,-0.603683,0.476653) + New Polarization: (-0.751522,0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,-0.603683,0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (0.639037,-0.603683,0.476653) + New Polarization: (-0.751522,-0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,-0.603683,0.476653) + Old Polarization: (-0.751522,-0.62204,0.219731) + New Momentum Direction: (0.639037,0.603683,0.476653) + New Polarization: (0.751522,-0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,0.603683,0.476653) + Old Polarization: (0.751522,-0.62204,-0.219731) + New Momentum Direction: (0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (-0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,-0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,-0.62204,0.219731) + New Momentum Direction: (-0.639037,-0.603683,-0.476653) + New Polarization: (0.751522,-0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,-0.603683,-0.476653) + Old Polarization: (0.751522,-0.62204,-0.219731) + New Momentum Direction: (-0.639037,-0.603683,0.476653) + New Polarization: (-0.751522,0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,-0.603683,0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (0.639037,-0.603683,0.476653) + New Polarization: (-0.751522,-0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,-0.603683,0.476653) + Old Polarization: (-0.751522,-0.62204,0.219731) + New Momentum Direction: (0.639037,0.603683,0.476653) + New Polarization: (0.751522,-0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,0.603683,0.476653) + Old Polarization: (0.751522,-0.62204,-0.219731) + New Momentum Direction: (-0.639037,0.603683,0.476653) + New Polarization: (0.751522,0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,0.603683,0.476653) + Old Polarization: (0.751522,0.62204,0.219731) + New Momentum Direction: (-0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,-0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,-0.62204,0.219731) + New Momentum Direction: (-0.639037,-0.603683,-0.476653) + New Polarization: (0.751522,-0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,-0.603683,-0.476653) + Old Polarization: (0.751522,-0.62204,-0.219731) + New Momentum Direction: (0.639037,-0.603683,-0.476653) + New Polarization: (0.751522,0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,-0.603683,-0.476653) + Old Polarization: (0.751522,0.62204,0.219731) + New Momentum Direction: (0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (0.639037,0.603683,0.476653) + New Polarization: (0.751522,-0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,0.603683,0.476653) + Old Polarization: (0.751522,-0.62204,-0.219731) + New Momentum Direction: (-0.639037,0.603683,0.476653) + New Polarization: (0.751522,0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,0.603683,0.476653) + Old Polarization: (0.751522,0.62204,0.219731) + New Momentum Direction: (-0.639037,-0.603683,0.476653) + New Polarization: (-0.751522,0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,-0.603683,0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (-0.639037,-0.603683,-0.476653) + New Polarization: (0.751522,-0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,-0.603683,-0.476653) + Old Polarization: (0.751522,-0.62204,-0.219731) + New Momentum Direction: (0.639037,-0.603683,-0.476653) + New Polarization: (0.751522,0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,-0.603683,-0.476653) + Old Polarization: (0.751522,0.62204,0.219731) + New Momentum Direction: (0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (-0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,-0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,-0.62204,0.219731) + New Momentum Direction: (-0.639037,0.603683,0.476653) + New Polarization: (0.751522,0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,0.603683,0.476653) + Old Polarization: (0.751522,0.62204,0.219731) + New Momentum Direction: (-0.639037,-0.603683,0.476653) + New Polarization: (-0.751522,0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639037,-0.603683,0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (0.639037,-0.603683,0.476653) + New Polarization: (-0.751522,-0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,-0.603683,0.476653) + Old Polarization: (-0.751522,-0.62204,0.219731) + New Momentum Direction: (0.639037,-0.603683,-0.476653) + New Polarization: (0.751522,0.62204,0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,-0.603683,-0.476653) + Old Polarization: (0.751522,0.62204,0.219731) + New Momentum Direction: (0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,0.62204,-0.219731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639037,0.603683,-0.476653) + Old Polarization: (-0.751522,0.62204,-0.219731) + New Momentum Direction: (-0.639037,0.603683,-0.476653) + New Polarization: (-0.751522,-0.62204,0.219731) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.639037,0.603683,-0.476653) +Old Polarization: (-0.751522,-0.62204,0.219731) +New Polarization: (-0.0396295,0.998576,0.0357252) +Polarization Change: (-0.0396295,0.998576,0.0357252) +New Momentum Direction: (0.953883,0.0484542,-0.296242) +Momentum Change: (0.953883,0.0484542,-0.296242) + +** Photon absorbed! ** +Track (trackID 1059, parentID 1) is processed with stopping code 2 +### pop requested out of 113 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.828372,-0.519501,0.209568) + Old Polarization: (-0.539147,-0.63783,0.549995) + New Momentum Direction: (0.655047,-0.700721,0.282673) + New Polarization: (-0.740635,-0.5214,0.423794) + *** FresnelRefraction *** +Track (trackID 1058, parentID 1) is processed with stopping code 2 +### pop requested out of 112 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.60258,0.431787,-0.671161) + Old Polarization: (-0.791921,0.427616,-0.435896) + New Momentum Direction: (0.60258,0.431787,0.671161) + New Polarization: (0.791921,-0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,0.431787,0.671161) + Old Polarization: (0.791921,-0.427616,-0.435896) + New Momentum Direction: (-0.60258,0.431787,0.671161) + New Polarization: (0.791921,0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,0.431787,0.671161) + Old Polarization: (0.791921,0.427616,0.435896) + New Momentum Direction: (-0.60258,-0.431787,0.671161) + New Polarization: (-0.791921,0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,-0.431787,0.671161) + Old Polarization: (-0.791921,0.427616,-0.435896) + New Momentum Direction: (-0.60258,-0.431787,-0.671161) + New Polarization: (0.791921,-0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,-0.431787,-0.671161) + Old Polarization: (0.791921,-0.427616,-0.435896) + New Momentum Direction: (0.60258,-0.431787,-0.671161) + New Polarization: (0.791921,0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,-0.431787,-0.671161) + Old Polarization: (0.791921,0.427616,0.435896) + New Momentum Direction: (0.60258,0.431787,-0.671161) + New Polarization: (-0.791921,0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,0.431787,-0.671161) + Old Polarization: (-0.791921,0.427616,-0.435896) + New Momentum Direction: (0.60258,0.431787,0.671161) + New Polarization: (0.791921,-0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,0.431787,0.671161) + Old Polarization: (0.791921,-0.427616,-0.435896) + New Momentum Direction: (-0.60258,0.431787,0.671161) + New Polarization: (0.791921,0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,0.431787,0.671161) + Old Polarization: (0.791921,0.427616,0.435896) + New Momentum Direction: (-0.60258,0.431787,-0.671161) + New Polarization: (-0.791921,-0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,0.431787,-0.671161) + Old Polarization: (-0.791921,-0.427616,0.435896) + New Momentum Direction: (-0.60258,-0.431787,-0.671161) + New Polarization: (0.791921,-0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,-0.431787,-0.671161) + Old Polarization: (0.791921,-0.427616,-0.435896) + New Momentum Direction: (0.60258,-0.431787,-0.671161) + New Polarization: (0.791921,0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,-0.431787,-0.671161) + Old Polarization: (0.791921,0.427616,0.435896) + New Momentum Direction: (0.60258,-0.431787,0.671161) + New Polarization: (-0.791921,-0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,-0.431787,0.671161) + Old Polarization: (-0.791921,-0.427616,0.435896) + New Momentum Direction: (-0.60258,-0.431787,0.671161) + New Polarization: (-0.791921,0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,-0.431787,0.671161) + Old Polarization: (-0.791921,0.427616,-0.435896) + New Momentum Direction: (-0.60258,0.431787,0.671161) + New Polarization: (0.791921,0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,0.431787,0.671161) + Old Polarization: (0.791921,0.427616,0.435896) + New Momentum Direction: (-0.60258,0.431787,-0.671161) + New Polarization: (-0.791921,-0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60258,0.431787,-0.671161) + Old Polarization: (-0.791921,-0.427616,0.435896) + New Momentum Direction: (0.60258,0.431787,-0.671161) + New Polarization: (-0.791921,0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,0.431787,-0.671161) + Old Polarization: (-0.791921,0.427616,-0.435896) + New Momentum Direction: (0.60258,0.431787,0.671161) + New Polarization: (0.791921,-0.427616,-0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,0.431787,0.671161) + Old Polarization: (0.791921,-0.427616,-0.435896) + New Momentum Direction: (0.60258,-0.431787,0.671161) + New Polarization: (-0.791921,-0.427616,0.435896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60258,-0.431787,0.671161) + Old Polarization: (-0.791921,-0.427616,0.435896) + New Momentum Direction: (-0.60258,-0.431787,0.671161) + New Polarization: (-0.791921,0.427616,-0.435896) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.60258,-0.431787,0.671161) +Old Polarization: (-0.791921,0.427616,-0.435896) +New Polarization: (0.871362,-0.432746,0.231211) +Polarization Change: (0.871362,-0.432746,0.231211) +New Momentum Direction: (-0.267653,-0.0243054,0.963209) +Momentum Change: (-0.267653,-0.0243054,0.963209) + Photon at Boundary! + Old Momentum Direction: (-0.267653,-0.0243054,0.963209) + Old Polarization: (0.871362,-0.432746,0.231211) + New Momentum Direction: (-0.361558,-0.0328329,0.931771) + New Polarization: (-0.814289,-0.475629,-0.332731) + *** FresnelRefraction *** +Track (trackID 1057, parentID 1) is processed with stopping code 2 +### pop requested out of 111 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68378,-0.575977,-0.44799) + Old Polarization: (-0.700527,-0.689998,-0.182111) + New Momentum Direction: (0.129468,-0.782704,-0.60878) + New Polarization: (-0.976871,-0.206048,0.0571656) + *** FresnelRefraction *** +Track (trackID 1056, parentID 1) is processed with stopping code 2 +### pop requested out of 110 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.820075,0.45372,0.348733) + Old Polarization: (-0.548933,0.451501,0.703434) + New Momentum Direction: (0.633811,0.613269,0.471364) + New Polarization: (-0.757014,0.36672,0.540783) + *** FresnelRefraction *** +Track (trackID 1055, parentID 1) is processed with stopping code 2 +### pop requested out of 109 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1054, parentID 1) is processed with stopping code 2 +### pop requested out of 108 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.835618,-0.474926,0.276023) + Old Polarization: (-0.53292,-0.579067,0.616991) + New Momentum Direction: (0.665787,-0.645102,0.374928) + New Polarization: (-0.734623,-0.478791,0.480716) + *** FresnelRefraction *** +Track (trackID 1053, parentID 1) is processed with stopping code 2 +### pop requested out of 107 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.765516,-0.636889,-0.0914243) + Old Polarization: (-0.609981,-0.76358,0.211825) + New Momentum Direction: (-0.765516,-0.636889,-0.0914243) + New Polarization: (-0.325349,0.505749,-0.798978) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.765516,-0.636889,-0.0914243) + Old Polarization: (-0.325349,0.505749,-0.798978) + New Momentum Direction: (-0.765516,0.636889,-0.0914243) + New Polarization: (0.325349,0.505749,0.798978) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.765516,0.636889,-0.0914243) + Old Polarization: (0.325349,0.505749,0.798978) + New Momentum Direction: (-0.491378,0.862109,-0.123754) + New Polarization: (0.56296,0.422812,0.710145) + *** FresnelRefraction *** +Track (trackID 1052, parentID 1) is processed with stopping code 2 +### pop requested out of 106 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.829111,-0.50899,0.231309) + Old Polarization: (-0.539495,-0.619819,0.569885) + New Momentum Direction: (0.652704,-0.689731,0.313446) + New Polarization: (-0.743804,-0.50476,0.438146) + *** FresnelRefraction *** +Track (trackID 1051, parentID 1) is processed with stopping code 2 +### pop requested out of 105 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.584707,0.256868,-0.769504) + Old Polarization: (-0.810346,0.229569,-0.539108) + New Momentum Direction: (0.793334,0.34852,-0.499155) + New Polarization: (0.25686,0.551741,0.793477) + *** FresnelRefraction *** +Track (trackID 1050, parentID 1) is processed with stopping code 2 +### pop requested out of 104 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.591491,0.040553,-0.805291) + Old Polarization: (-0.805686,-0.00959151,-0.592265) + New Momentum Direction: (0.7959,0.0545674,-0.602964) + New Polarization: (0.599015,0.0736026,0.797348) + *** FresnelRefraction *** +Track (trackID 1049, parentID 1) is processed with stopping code 2 +### pop requested out of 103 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.807303,0.497564,0.317319) + Old Polarization: (-0.564356,0.493733,0.661612) + New Momentum Direction: (0.596957,0.676423,0.431386) + New Polarization: (-0.784376,0.379147,0.490919) + *** FresnelRefraction *** +Track (trackID 1048, parentID 1) is processed with stopping code 2 +### pop requested out of 102 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1047, parentID 1) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1046, parentID 1) is processed with stopping code 2 +### pop requested out of 100 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.830026,0.394702,0.39404) + Old Polarization: (-0.538494,0.383229,0.750439) + New Momentum Direction: (0.654786,0.53489,0.533993) + New Polarization: (-0.742257,0.321861,0.587759) + *** FresnelRefraction *** +Track (trackID 1045, parentID 1) is processed with stopping code 2 +### pop requested out of 99 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.798273,-0.598428,0.0681425) + Old Polarization: (-0.573537,-0.720734,0.389357) + New Momentum Direction: (0.579027,-0.810074,0.0922424) + New Polarization: (-0.795289,-0.536264,0.282732) + *** FresnelRefraction *** +Track (trackID 1044, parentID 1) is processed with stopping code 2 +### pop requested out of 98 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.590529,-0.110296,-0.799444) + Old Polarization: (-0.803232,-0.176152,-0.569024) + New Momentum Direction: (0.80287,-0.149956,-0.576986) + New Polarization: (0.509548,-0.329776,0.794738) + *** FresnelRefraction *** +Track (trackID 1043, parentID 1) is processed with stopping code 2 +### pop requested out of 97 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.827939,-0.509689,0.233953) + Old Polarization: (-0.541385,-0.617519,0.570589) + New Momentum Direction: (0.647892,-0.692286,0.317767) + New Polarization: (-0.748098,-0.499712,0.43662) + *** FresnelRefraction *** +Track (trackID 1042, parentID 1) is processed with stopping code 2 +### pop requested out of 96 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1041, parentID 1) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1040, parentID 1) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.867044,0.0646425,0.494021) + Old Polarization: (-0.495955,0.0172972,0.868176) + New Momentum Direction: (0.740201,0.0872378,0.666702) + New Polarization: (-0.670771,0.0271261,0.741169) + *** FresnelRefraction *** +Track (trackID 1039, parentID 1) is processed with stopping code 2 +### pop requested out of 93 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1038, parentID 1) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.834986,-0.486917,0.256339) + Old Polarization: (-0.532501,-0.597563,0.599468) + New Momentum Direction: (0.667774,-0.658664,0.346755) + New Polarization: (-0.731779,-0.495607,0.467838) + *** FresnelRefraction *** +Track (trackID 1037, parentID 1) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.640844,0.624741,-0.446114) + Old Polarization: (-0.74837,0.637907,-0.181706) + New Momentum Direction: (-0.640844,0.624741,-0.446114) + New Polarization: (-0.74837,-0.637907,0.181706) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.640844,0.624741,-0.446114) + Old Polarization: (-0.74837,-0.637907,0.181706) + New Momentum Direction: (-0.640844,-0.624741,-0.446114) + New Polarization: (0.74837,-0.637907,-0.181706) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.640844,-0.624741,-0.446114) + Old Polarization: (0.74837,-0.637907,-0.181706) + New Momentum Direction: (-0.640844,-0.624741,0.446114) + New Polarization: (-0.74837,0.637907,-0.181706) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.640844,-0.624741,0.446114) + Old Polarization: (-0.74837,0.637907,-0.181706) + New Momentum Direction: (0.640844,-0.624741,0.446114) + New Polarization: (-0.74837,-0.637907,0.181706) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.640844,-0.624741,0.446114) + Old Polarization: (-0.74837,-0.637907,0.181706) + New Momentum Direction: (0.640844,0.624741,0.446114) + New Polarization: (0.74837,-0.637907,-0.181706) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1036, parentID 1) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1035, parentID 1) is processed with stopping code 2 +### pop requested out of 89 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.717131,-0.611107,-0.335068) + Old Polarization: (-0.664009,-0.745138,-0.0621451) + New Momentum Direction: (0.348189,-0.821977,-0.450687) + New Polarization: (-0.916662,-0.399171,0.0198306) + *** FresnelRefraction *** +Track (trackID 1034, parentID 1) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.825895,0.435533,0.358062) + Old Polarization: (-0.541432,0.43544,0.719196) + New Momentum Direction: (0.651126,0.586276,0.481991) + New Polarization: (-0.742999,0.362797,0.562432) + *** FresnelRefraction *** +Track (trackID 1033, parentID 1) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.864986,0.0698207,0.496916) + Old Polarization: (-0.499382,0.0227511,0.866083) + New Momentum Direction: (0.733761,0.0945337,0.672798) + New Polarization: (-0.677704,0.0317652,0.734648) + *** FresnelRefraction *** +Track (trackID 1032, parentID 1) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.867784,0.000558766,0.496941) + Old Polarization: (-0.496182,-0.0542922,0.866519) + New Momentum Direction: (0.739948,0.000756351,0.672664) + New Polarization: (-0.672129,-0.0390629,0.739403) + *** FresnelRefraction *** +Track (trackID 1031, parentID 1) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.695312,-0.593579,-0.405223) + Old Polarization: (-0.687969,-0.712825,-0.136309) + New Momentum Direction: (0.224465,-0.804822,-0.549433) + New Polarization: (-0.957193,-0.287831,0.0305701) + *** FresnelRefraction *** +Track (trackID 1030, parentID 1) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.613929,0.531109,-0.583964) + Old Polarization: (-0.777901,0.532676,-0.333354) + New Momentum Direction: (-0.613929,0.531109,-0.583964) + New Polarization: (-0.777901,-0.532676,0.333354) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.613929,0.531109,-0.583964) + Old Polarization: (-0.777901,-0.532676,0.333354) + New Momentum Direction: (-0.613929,0.531109,0.583964) + New Polarization: (0.777901,0.532676,0.333354) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.613929,0.531109,0.583964) + Old Polarization: (0.777901,0.532676,0.333354) + New Momentum Direction: (-0.613929,-0.531109,0.583964) + New Polarization: (-0.777901,0.532676,-0.333354) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.613929,-0.531109,0.583964) + Old Polarization: (-0.777901,0.532676,-0.333354) + New Momentum Direction: (0.613929,-0.531109,0.583964) + New Polarization: (-0.777901,-0.532676,0.333354) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.613929,-0.531109,0.583964) + Old Polarization: (-0.777901,-0.532676,0.333354) + New Momentum Direction: (0.613929,-0.531109,-0.583964) + New Polarization: (0.777901,0.532676,0.333354) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.613929,-0.531109,-0.583964) + Old Polarization: (0.777901,0.532676,0.333354) + New Momentum Direction: (0.613929,0.531109,-0.583964) + New Polarization: (-0.777901,0.532676,-0.333354) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.613929,0.531109,-0.583964) + Old Polarization: (-0.777901,0.532676,-0.333354) + New Momentum Direction: (-0.613929,0.531109,-0.583964) + New Polarization: (-0.777901,-0.532676,0.333354) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.613929,0.531109,-0.583964) + Old Polarization: (-0.777901,-0.532676,0.333354) + New Momentum Direction: (-0.613929,0.531109,0.583964) + New Polarization: (0.777901,0.532676,0.333354) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.613929,0.531109,0.583964) + Old Polarization: (0.777901,0.532676,0.333354) + New Momentum Direction: (-0.613929,-0.531109,0.583964) + New Polarization: (-0.777901,0.532676,-0.333354) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1029, parentID 1) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.828202,0.424028,0.366444) +Old Polarization: (-0.538807,0.422579,0.728776) +New Polarization: (0.140169,-0.00369016,0.990121) +Polarization Change: (0.140169,-0.00369016,0.990121) +New Momentum Direction: (0.82283,-0.555783,-0.118557) +Momentum Change: (0.82283,-0.555783,-0.118557) + Photon at Boundary! + Old Momentum Direction: (0.82283,-0.555783,-0.118557) + Old Polarization: (0.140169,-0.00369016,0.990121) + New Momentum Direction: (0.64415,-0.748069,-0.159575) + New Polarization: (-0.255958,-0.407404,0.876646) + *** FresnelRefraction *** +Track (trackID 1028, parentID 1) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.648586,0.642834,-0.407556) + Old Polarization: (-0.739824,0.658269,-0.139076) + New Momentum Direction: (-0.648586,0.642834,-0.407556) + New Polarization: (-0.739824,-0.658269,0.139076) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.648586,0.642834,-0.407556) + Old Polarization: (-0.739824,-0.658269,0.139076) + New Momentum Direction: (-0.648586,-0.642834,-0.407556) + New Polarization: (0.739824,-0.658269,-0.139076) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.648586,-0.642834,-0.407556) + Old Polarization: (0.739824,-0.658269,-0.139076) + New Momentum Direction: (-0.648586,-0.642834,0.407556) + New Polarization: (-0.739824,0.658269,-0.139076) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1027, parentID 1) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1026, parentID 1) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.713096,0.694949,-0.0924086) + Old Polarization: (-0.668218,0.713629,0.210282) + New Momentum Direction: (0.307025,0.943398,-0.125445) + New Polarization: (-0.931911,0.324759,0.161472) + *** FresnelRefraction *** +Track (trackID 1025, parentID 1) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.604427,-0.168687,-0.778597) + Old Polarization: (-0.790824,-0.245137,-0.560808) + New Momentum Direction: (0.813997,-0.227176,-0.534602) + New Polarization: (0.396121,-0.456047,0.796937) + *** FresnelRefraction *** +Track (trackID 1024, parentID 1) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.614673,0.520397,-0.59276) + Old Polarization: (-0.777886,0.524407,-0.346254) + New Momentum Direction: (-0.614673,0.520397,-0.59276) + New Polarization: (-0.777886,-0.524407,0.346254) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.614673,0.520397,-0.59276) + Old Polarization: (-0.777886,-0.524407,0.346254) + New Momentum Direction: (-0.614673,0.520397,0.59276) + New Polarization: (0.777886,0.524407,0.346254) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.614673,0.520397,0.59276) + Old Polarization: (0.777886,0.524407,0.346254) + New Momentum Direction: (-0.614673,-0.520397,0.59276) + New Polarization: (-0.777886,0.524407,-0.346254) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.614673,-0.520397,0.59276) + Old Polarization: (-0.777886,0.524407,-0.346254) + New Momentum Direction: (0.614673,-0.520397,0.59276) + New Polarization: (-0.777886,-0.524407,0.346254) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.614673,-0.520397,0.59276) + Old Polarization: (-0.777886,-0.524407,0.346254) + New Momentum Direction: (0.614673,-0.520397,-0.59276) + New Polarization: (0.777886,0.524407,0.346254) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.614673,-0.520397,-0.59276) + Old Polarization: (0.777886,0.524407,0.346254) + New Momentum Direction: (0.614673,0.520397,-0.59276) + New Polarization: (-0.777886,0.524407,-0.346254) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1023, parentID 1) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.859015,0.139926,0.492457) + Old Polarization: (-0.507055,0.0998436,0.856111) + New Momentum Direction: (0.718692,0.190047,0.668853) + New Polarization: (-0.691891,0.0999215,0.715054) + *** FresnelRefraction *** +Track (trackID 1022, parentID 1) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.865599,-0.164628,0.472901) + Old Polarization: (-0.500087,-0.236087,0.833172) + New Momentum Direction: (0.732568,-0.223793,0.642854) + New Polarization: (-0.680238,-0.206147,0.703405) + *** FresnelRefraction *** +Track (trackID 1021, parentID 1) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.779504,-0.626299,-0.01112) + Old Polarization: (-0.594915,-0.745767,0.299846) + New Momentum Direction: (0.525032,-0.850949,-0.0151086) + New Polarization: (-0.829678,-0.515703,0.21374) + *** FresnelRefraction *** +Track (trackID 1020, parentID 1) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.650075,-0.461699,-0.603521) + Old Polarization: (-0.738681,-0.570227,-0.359432) + New Momentum Direction: (-0.650075,-0.461699,-0.603521) + New Polarization: (-0.738681,0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650075,-0.461699,-0.603521) + Old Polarization: (-0.738681,0.570227,0.359432) + New Momentum Direction: (-0.650075,-0.461699,0.603521) + New Polarization: (0.738681,-0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650075,-0.461699,0.603521) + Old Polarization: (0.738681,-0.570227,0.359432) + New Momentum Direction: (-0.650075,0.461699,0.603521) + New Polarization: (-0.738681,-0.570227,-0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650075,0.461699,0.603521) + Old Polarization: (-0.738681,-0.570227,-0.359432) + New Momentum Direction: (0.650075,0.461699,0.603521) + New Polarization: (-0.738681,0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,0.461699,0.603521) + Old Polarization: (-0.738681,0.570227,0.359432) + New Momentum Direction: (0.650075,0.461699,-0.603521) + New Polarization: (0.738681,-0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,0.461699,-0.603521) + Old Polarization: (0.738681,-0.570227,0.359432) + New Momentum Direction: (0.650075,-0.461699,-0.603521) + New Polarization: (-0.738681,-0.570227,-0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,-0.461699,-0.603521) + Old Polarization: (-0.738681,-0.570227,-0.359432) + New Momentum Direction: (-0.650075,-0.461699,-0.603521) + New Polarization: (-0.738681,0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650075,-0.461699,-0.603521) + Old Polarization: (-0.738681,0.570227,0.359432) + New Momentum Direction: (-0.650075,-0.461699,0.603521) + New Polarization: (0.738681,-0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650075,-0.461699,0.603521) + Old Polarization: (0.738681,-0.570227,0.359432) + New Momentum Direction: (0.650075,-0.461699,0.603521) + New Polarization: (0.738681,0.570227,-0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,-0.461699,0.603521) + Old Polarization: (0.738681,0.570227,-0.359432) + New Momentum Direction: (0.650075,0.461699,0.603521) + New Polarization: (-0.738681,0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,0.461699,0.603521) + Old Polarization: (-0.738681,0.570227,0.359432) + New Momentum Direction: (0.650075,0.461699,-0.603521) + New Polarization: (0.738681,-0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,0.461699,-0.603521) + Old Polarization: (0.738681,-0.570227,0.359432) + New Momentum Direction: (-0.650075,0.461699,-0.603521) + New Polarization: (0.738681,0.570227,-0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650075,0.461699,-0.603521) + Old Polarization: (0.738681,0.570227,-0.359432) + New Momentum Direction: (-0.650075,0.461699,0.603521) + New Polarization: (-0.738681,-0.570227,-0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650075,0.461699,0.603521) + Old Polarization: (-0.738681,-0.570227,-0.359432) + New Momentum Direction: (-0.650075,-0.461699,0.603521) + New Polarization: (0.738681,-0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650075,-0.461699,0.603521) + Old Polarization: (0.738681,-0.570227,0.359432) + New Momentum Direction: (0.650075,-0.461699,0.603521) + New Polarization: (0.738681,0.570227,-0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,-0.461699,0.603521) + Old Polarization: (0.738681,0.570227,-0.359432) + New Momentum Direction: (0.650075,-0.461699,-0.603521) + New Polarization: (-0.738681,-0.570227,-0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,-0.461699,-0.603521) + Old Polarization: (-0.738681,-0.570227,-0.359432) + New Momentum Direction: (0.650075,0.461699,-0.603521) + New Polarization: (0.738681,-0.570227,0.359432) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.650075,0.461699,-0.603521) + Old Polarization: (0.738681,-0.570227,0.359432) + New Momentum Direction: (-0.650075,0.461699,-0.603521) + New Polarization: (0.738681,0.570227,-0.359432) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1019, parentID 1) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.659908,-0.502947,-0.558181) +Old Polarization: (-0.727391,-0.613752,-0.306937) +New Polarization: (0.534435,0.843431,0.0548099) +Polarization Change: (0.534435,0.843431,0.0548099) +New Momentum Direction: (-0.608928,0.429194,-0.667083) +Momentum Change: (-0.608928,0.429194,-0.667083) + Photon at Boundary! + Old Momentum Direction: (-0.608928,0.429194,-0.667083) + Old Polarization: (0.534435,0.843431,0.0548099) + New Momentum Direction: (-0.608928,0.429194,0.667083) + New Polarization: (-0.534435,-0.843431,0.0548099) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1018, parentID 1) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1017, parentID 1) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.745032,-0.64337,-0.176073) + Old Polarization: (-0.632935,-0.765189,0.117807) + New Momentum Direction: (0.423353,-0.873832,-0.239144) + New Polarization: (-0.883825,-0.456358,0.102913) + *** FresnelRefraction *** +Track (trackID 1016, parentID 1) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.704068,-0.608154,-0.366656) + Old Polarization: (-0.678257,-0.72885,-0.0935107) + New Momentum Direction: (0.269732,-0.824654,-0.497183) + New Polarization: (-0.944263,-0.327703,0.031263) + *** FresnelRefraction *** +Track (trackID 1015, parentID 1) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.815679,-0.557106,0.155889) + Old Polarization: (-0.554132,-0.675017,0.487124) + New Momentum Direction: (0.622065,-0.754003,0.210985) + New Polarization: (-0.765824,-0.529862,0.364361) + *** FresnelRefraction *** +Track (trackID 1014, parentID 1) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67992,-0.550099,-0.484871) + Old Polarization: (-0.705546,-0.67092,-0.228191) + New Momentum Direction: (0.141662,-0.742618,-0.654562) + New Polarization: (-0.975514,-0.217103,0.0351865) + *** FresnelRefraction *** +Track (trackID 1013, parentID 1) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1012, parentID 1) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.581332,0.201389,-0.78835) + Old Polarization: (-0.813427,0.167362,-0.55707) + New Momentum Direction: (0.790228,0.273756,-0.548267) + New Polarization: (0.3909,0.463843,0.795014) + *** FresnelRefraction *** +Track (trackID 1011, parentID 1) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.64507,0.64328,-0.412403) + Old Polarization: (-0.743091,0.653862,-0.142408) + New Momentum Direction: (-0.64507,0.64328,-0.412403) + New Polarization: (-0.743091,-0.653862,0.142408) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.64507,0.64328,-0.412403) + Old Polarization: (-0.743091,-0.653862,0.142408) + New Momentum Direction: (-0.64507,-0.64328,-0.412403) + New Polarization: (0.743091,-0.653862,-0.142408) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.64507,-0.64328,-0.412403) + Old Polarization: (0.743091,-0.653862,-0.142408) + New Momentum Direction: (-0.64507,-0.64328,0.412403) + New Polarization: (-0.743091,0.653862,-0.142408) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.64507,-0.64328,0.412403) + Old Polarization: (-0.743091,0.653862,-0.142408) + New Momentum Direction: (0.64507,-0.64328,0.412403) + New Polarization: (-0.743091,-0.653862,0.142408) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.64507,-0.64328,0.412403) + Old Polarization: (-0.743091,-0.653862,0.142408) + New Momentum Direction: (0.64507,0.64328,0.412403) + New Polarization: (0.743091,-0.653862,-0.142408) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.64507,0.64328,0.412403) + Old Polarization: (0.743091,-0.653862,-0.142408) + New Momentum Direction: (0.64507,0.64328,-0.412403) + New Polarization: (-0.743091,0.653862,-0.142408) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.64507,0.64328,-0.412403) + Old Polarization: (-0.743091,0.653862,-0.142408) + New Momentum Direction: (-0.64507,0.64328,-0.412403) + New Polarization: (-0.743091,-0.653862,0.142408) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.64507,0.64328,-0.412403) + Old Polarization: (-0.743091,-0.653862,0.142408) + New Momentum Direction: (-0.64507,-0.64328,-0.412403) + New Polarization: (0.743091,-0.653862,-0.142408) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1010, parentID 1) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.584867,0.122001,-0.801902) + Old Polarization: (-0.811109,0.0809171,-0.579271) + New Momentum Direction: (0.791422,0.165087,-0.588556) + New Polarization: (0.53139,0.290075,0.795915) + *** FresnelRefraction *** +Track (trackID 1009, parentID 1) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.644231,-0.451837,-0.617098) +Old Polarization: (-0.744515,-0.555213,-0.370724) +New Polarization: (0.221893,0.850341,-0.477163) +Polarization Change: (0.221893,0.850341,-0.477163) +New Momentum Direction: (0.723613,0.184402,0.665117) +Momentum Change: (0.723613,0.184402,0.665117) + Photon at Boundary! + Old Momentum Direction: (0.723613,0.184402,0.665117) + Old Polarization: (0.221893,0.850341,-0.477163) + New Momentum Direction: (0.351419,0.250129,0.902186) + New Polarization: (-0.426289,0.900709,-0.0836717) + *** FresnelRefraction *** +Track (trackID 1008, parentID 1) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.827794,0.403685,0.389609) + Old Polarization: (-0.541285,0.392044,0.74385) + New Momentum Direction: (0.64847,0.547743,0.528644) + New Polarization: (-0.74736,0.32608,0.5789) + *** FresnelRefraction *** +Track (trackID 1007, parentID 1) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.814182,-0.561605,0.147336) + Old Polarization: (-0.555749,-0.680351,0.477772) + New Momentum Direction: (0.618685,-0.759923,0.199365) + New Polarization: (-0.76816,-0.531888,0.356405) + *** FresnelRefraction *** +Track (trackID 1006, parentID 1) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.585277,-0.026375,-0.810404) +Old Polarization: (-0.809131,-0.0837241,-0.581633) +New Polarization: (-0.461781,-0.819773,0.338718) +Polarization Change: (-0.461781,-0.819773,0.338718) +New Momentum Direction: (-0.717797,0.121036,-0.685652) +Momentum Change: (-0.717797,0.121036,-0.685652) + Photon at Boundary! + Old Momentum Direction: (-0.717797,0.121036,-0.685652) + Old Polarization: (-0.461781,-0.819773,0.338718) + New Momentum Direction: (-0.975577,0.164503,-0.145563) + New Polarization: (-0.219656,-0.727545,0.649946) + *** FresnelRefraction *** +Track (trackID 1005, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.581175,0.206205,-0.78722) +Old Polarization: (-0.8135,0.172545,-0.55538) +New Polarization: (-0.68226,0.679702,0.269308) +Polarization Change: (-0.68226,0.679702,0.269308) +New Momentum Direction: (-0.53591,-0.214376,-0.816605) +Momentum Change: (-0.53591,-0.214376,-0.816605) + Photon at Boundary! + Old Momentum Direction: (-0.53591,-0.214376,-0.816605) + Old Polarization: (-0.68226,0.679702,0.269308) + New Momentum Direction: (-0.728694,-0.291494,-0.619707) + New Polarization: (-0.642035,0.605672,0.470056) + *** FresnelRefraction *** +Track (trackID 1004, parentID 1) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.835057,-0.482252,0.264787) + Old Polarization: (-0.532977,-0.589758,0.60673) + New Momentum Direction: (0.666225,-0.653697,0.358921) + New Polarization: (-0.733627,-0.488064,0.472847) + *** FresnelRefraction *** +Track (trackID 1003, parentID 1) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1002, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1001, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.658508,0.661142,-0.359525) + Old Polarization: (-0.728884,0.679214,-0.0860009) + New Momentum Direction: (-0.658508,0.661142,-0.359525) + New Polarization: (-0.728884,-0.679214,0.0860009) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.658508,0.661142,-0.359525) + Old Polarization: (-0.728884,-0.679214,0.0860009) + New Momentum Direction: (-0.658508,-0.661142,-0.359525) + New Polarization: (0.728884,-0.679214,-0.0860009) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.658508,-0.661142,-0.359525) +Old Polarization: (0.728884,-0.679214,-0.0860009) +New Polarization: (-0.968384,-0.192977,-0.15809) +Polarization Change: (-0.968384,-0.192977,-0.15809) +New Momentum Direction: (0.224061,-0.951441,-0.211087) +Momentum Change: (0.224061,-0.951441,-0.211087) + Photon at Boundary! + Old Momentum Direction: (0.224061,-0.951441,-0.211087) + Old Polarization: (-0.968384,-0.192977,-0.15809) + New Momentum Direction: (0.224061,-0.951441,0.211087) + New Polarization: (0.968384,0.192977,-0.15809) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.224061,-0.951441,0.211087) + Old Polarization: (0.968384,0.192977,-0.15809) + New Momentum Direction: (0.303588,-0.908863,0.28601) + New Polarization: (0.950821,0.30834,-0.029437) + *** FresnelRefraction *** +Track (trackID 1000, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + +** Photon absorbed! ** +Track (trackID 999, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.863175,-0.272644,0.424964) + Old Polarization: (-0.501057,-0.35885,0.787507) + New Momentum Direction: (0.73048,-0.368778,0.574806) + New Polarization: (-0.680214,-0.317826,0.660527) + *** FresnelRefraction *** +Track (trackID 998, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + +** Photon absorbed! ** +Track (trackID 997, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.639778,0.631918,-0.437452) + Old Polarization: (-0.748827,0.640677,-0.169682) + New Momentum Direction: (-0.639778,0.631918,-0.437452) + New Polarization: (-0.748827,-0.640677,0.169682) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639778,0.631918,-0.437452) + Old Polarization: (-0.748827,-0.640677,0.169682) + New Momentum Direction: (-0.639778,-0.631918,-0.437452) + New Polarization: (0.748827,-0.640677,-0.169682) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 996, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + +** Photon absorbed! ** +Track (trackID 995, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.684058,-0.564357,-0.462131) + Old Polarization: (-0.700729,-0.684396,-0.201448) + New Momentum Direction: (0.164638,-0.763141,-0.624908) + New Polarization: (-0.971106,-0.236382,0.0328244) + *** FresnelRefraction *** +Track (trackID 994, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.797758,-0.599272,0.0667471) + Old Polarization: (-0.574168,-0.721165,0.387624) + New Momentum Direction: (0.577347,-0.811481,0.090383) + New Polarization: (-0.796463,-0.535347,0.281158) + *** FresnelRefraction *** +Track (trackID 993, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.829303,-0.51127,0.225522) + Old Polarization: (-0.53883,-0.624721,0.565142) + New Momentum Direction: (0.6547,-0.691595,0.305064) + New Polarization: (-0.741763,-0.510163,0.43534) + *** FresnelRefraction *** +Track (trackID 992, parentID 1) is processed with stopping code 2 +### pop requested out of 46 stacked tracks. + +** Photon absorbed! ** +Track (trackID 991, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.67114,0.679879,-0.295526) + Old Polarization: (-0.714789,0.699184,-0.0147649) + New Momentum Direction: (0.909822,0.10827,-0.400626) + New Polarization: (0.0232179,-0.977136,-0.211346) + *** FresnelRefraction *** +Track (trackID 990, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.630176,-0.400666,-0.66509) + Old Polarization: (-0.759521,-0.495996,-0.420851) + New Momentum Direction: (0.630176,-0.400666,0.66509) + New Polarization: (0.759521,0.495996,-0.420851) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.630176,-0.400666,0.66509) + Old Polarization: (0.759521,0.495996,-0.420851) + New Momentum Direction: (-0.630176,-0.400666,0.66509) + New Polarization: (0.759521,-0.495996,0.420851) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.630176,-0.400666,0.66509) + Old Polarization: (0.759521,-0.495996,0.420851) + New Momentum Direction: (-0.630176,0.400666,0.66509) + New Polarization: (-0.759521,-0.495996,-0.420851) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 989, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + +** Photon absorbed! ** +Track (trackID 988, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.768974,0.625601,0.131539) +Old Polarization: (-0.605721,0.647226,0.462817) +New Polarization: (0.281604,-0.947939,0.148695) +Polarization Change: (0.281604,-0.947939,0.148695) +New Momentum Direction: (0.578529,0.0441046,-0.814469) +Momentum Change: (0.578529,0.0441046,-0.814469) + Photon at Boundary! + Old Momentum Direction: (0.578529,0.0441046,-0.814469) + Old Polarization: (0.281604,-0.947939,0.148695) + New Momentum Direction: (-0.578529,0.0441046,-0.814469) + New Polarization: (0.281604,0.947939,-0.148695) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.578529,0.0441046,-0.814469) + Old Polarization: (0.281604,0.947939,-0.148695) + New Momentum Direction: (-0.779977,0.0594621,-0.622977) + New Polarization: (-0.145258,0.951086,0.272645) + *** FresnelRefraction *** +Track (trackID 987, parentID 1) is processed with stopping code 2 +### pop requested out of 41 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.662176,-0.493116,-0.564233) + Old Polarization: (-0.725727,-0.609581,-0.318955) + New Momentum Direction: (-0.662176,-0.493116,-0.564233) + New Polarization: (-0.725727,0.609581,0.318955) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.662176,-0.493116,-0.564233) + Old Polarization: (-0.725727,0.609581,0.318955) + New Momentum Direction: (-0.662176,-0.493116,0.564233) + New Polarization: (0.725727,-0.609581,0.318955) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.662176,-0.493116,0.564233) + Old Polarization: (0.725727,-0.609581,0.318955) + New Momentum Direction: (-0.662176,0.493116,0.564233) + New Polarization: (-0.725727,-0.609581,-0.318955) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 986, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.68805,0.690902,-0.221903) + Old Polarization: (-0.696227,0.714729,0.0665534) + New Momentum Direction: (0.190145,0.934728,-0.300215) + New Polarization: (-0.965693,0.233164,0.11433) + *** FresnelRefraction *** +Track (trackID 985, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.590714,0.34626,-0.728808) + Old Polarization: (-0.803975,0.329176,-0.495246) + New Momentum Direction: (0.800814,0.469414,-0.371951) + New Polarization: (-0.00170044,0.622823,0.782361) + *** FresnelRefraction *** +Track (trackID 984, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.718638,-0.623238,-0.308437) + Old Polarization: (-0.662146,-0.748784,-0.0297382) + New Momentum Direction: (0.338236,-0.843426,-0.417407) + New Polarization: (-0.920461,-0.388807,0.0397612) + *** FresnelRefraction *** +Track (trackID 983, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. + +** Photon absorbed! ** +Track (trackID 982, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + +** Photon absorbed! ** +Track (trackID 981, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.690302,0.696761,-0.194956) + Old Polarization: (-0.69334,0.714053,0.0969965) + New Momentum Direction: (0.937991,0.223599,-0.264909) + New Polarization: (0.198488,-0.972925,-0.118402) + *** FresnelRefraction *** +Track (trackID 980, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.589483,-0.0821904,-0.803589) + Old Polarization: (-0.804775,-0.1455,-0.575471) + New Momentum Direction: (0.800499,-0.111612,-0.58885) + New Polarization: (0.548239,-0.260594,0.794685) + *** FresnelRefraction *** +Track (trackID 979, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.771296,-0.63346,-0.0619026) +Old Polarization: (-0.603611,-0.758849,0.244543) +New Polarization: (-0.827249,-0.552574,0.101587) +Polarization Change: (-0.827249,-0.552574,0.101587) +New Momentum Direction: (-0.533837,0.716702,-0.448728) +Momentum Change: (-0.533837,0.716702,-0.448728) + Photon at Boundary! + Old Momentum Direction: (-0.533837,0.716702,-0.448728) + Old Polarization: (-0.827249,-0.552574,0.101587) + New Momentum Direction: (-0.723017,0.328464,-0.607747) + New Polarization: (-0.515692,-0.841998,0.158434) + *** FresnelRefraction *** +Track (trackID 978, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.607222,-0.234185,-0.759236) + Old Polarization: (-0.786146,-0.31556,-0.53141) + New Momentum Direction: (0.821863,-0.316965,-0.473365) + New Polarization: (0.239439,-0.561776,0.791882) + *** FresnelRefraction *** +Track (trackID 977, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.821358,-0.537635,0.190576) + Old Polarization: (-0.548129,-0.651447,0.524568) + New Momentum Direction: (0.634336,-0.728635,0.25828) + New Polarization: (-0.757391,-0.518847,0.39643) + *** FresnelRefraction *** +Track (trackID 976, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + +** Photon absorbed! ** +Track (trackID 975, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.786965,0.577842,0.216297) + Old Polarization: (-0.585903,0.589995,0.55554) + New Momentum Direction: (0.551758,0.781077,0.292372) + New Polarization: (-0.812481,0.424279,0.399827) + *** FresnelRefraction *** +Track (trackID 974, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.867187,-0.181279,0.463815) + Old Polarization: (-0.496994,-0.256409,0.829006) + New Momentum Direction: (0.738404,-0.245484,0.62809) + New Polarization: (-0.673662,-0.226208,0.703569) + *** FresnelRefraction *** +Track (trackID 973, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + +** Photon absorbed! ** +Track (trackID 972, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.859224,0.177737,0.479733) + Old Polarization: (-0.504934,0.143743,0.851105) + New Momentum Direction: (0.722966,0.240023,0.64785) + New Polarization: (-0.686151,0.139876,0.713885) + *** FresnelRefraction *** +Track (trackID 971, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.778997,-0.626388,-0.0283273) + Old Polarization: (-0.594922,-0.752626,0.282175) + New Momentum Direction: (0.529387,-0.847514,-0.0383273) + New Polarization: (-0.826363,-0.525347,0.202818) + *** FresnelRefraction *** +Track (trackID 970, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.778225,-0.626906,-0.0367953) + Old Polarization: (-0.59561,-0.755407,0.273145) + New Momentum Direction: (0.529142,-0.847076,-0.0497178) + New Polarization: (-0.826284,-0.527711,0.196915) + *** FresnelRefraction *** +Track (trackID 969, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.620823,-0.329086,-0.711534) + Old Polarization: (-0.77094,-0.420954,-0.477963) + New Momentum Direction: (0.840489,-0.445527,-0.308359) + New Polarization: (-0.0477873,-0.627842,0.776873) + *** FresnelRefraction *** +Track (trackID 968, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.841493,-0.449416,0.299858) + Old Polarization: (-0.525782,-0.553561,0.64585) + New Momentum Direction: (0.681095,-0.609069,0.406381) + New Polarization: (-0.721966,-0.466193,0.511302) + *** FresnelRefraction *** +Track (trackID 967, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.859861,-0.28405,0.424212) + Old Polarization: (-0.506316,-0.367937,0.779914) + New Momentum Direction: (0.720164,-0.386021,0.5765) + New Polarization: (-0.690849,-0.322367,0.647153) + *** FresnelRefraction *** +Track (trackID 966, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.772064,0.620001,0.139701) + Old Polarization: (-0.602095,0.643166,0.473095) + New Momentum Direction: (0.517666,0.834657,0.188068) + New Polarization: (-0.832554,0.440757,0.335541) + *** FresnelRefraction *** +Track (trackID 965, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.587634,-0.0573411,-0.807092) + Old Polarization: (-0.806745,-0.118002,-0.578998) + New Momentum Direction: (0.798161,-0.0778841,-0.597389) + New Polarization: (0.575274,-0.195905,0.794154) + *** FresnelRefraction *** +Track (trackID 964, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + +** Photon absorbed! ** +Track (trackID 963, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.8597,-0.288442,0.421564) + Old Polarization: (-0.506387,-0.373029,0.777446) + New Momentum Direction: (0.720024,-0.391865,0.572719) + New Polarization: (-0.690852,-0.326888,0.644878) + *** FresnelRefraction *** +Track (trackID 962, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + +** Photon absorbed! ** +Track (trackID 961, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.710078,-0.607776,-0.355524) + Old Polarization: (-0.671801,-0.736005,-0.083552) + New Momentum Direction: (0.311519,-0.820216,-0.479793) + New Polarization: (-0.930497,-0.365697,0.021014) + *** FresnelRefraction *** +Track (trackID 960, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.791871,0.553387,0.258269) + Old Polarization: (-0.581511,0.554122,0.595646) + New Momentum Direction: (0.556354,0.752977,0.351419) + New Polarization: (-0.810945,0.399785,0.427248) + *** FresnelRefraction *** +Track (trackID 959, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.870998,0.012603,0.491124) + Old Polarization: (-0.490296,-0.0411309,0.870585) + New Momentum Direction: (0.750612,0.0169501,0.660526) + New Polarization: (-0.660038,-0.0269522,0.750749) + *** FresnelRefraction *** +Track (trackID 958, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.700454,-0.588156,-0.404273) + Old Polarization: (-0.682735,-0.717234,-0.139456) + New Momentum Direction: (0.275902,-0.792111,-0.544462) + New Polarization: (-0.94273,-0.333473,0.00743184) + *** FresnelRefraction *** +Track (trackID 957, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.711983,-0.618631,-0.332229) + Old Polarization: (-0.669491,-0.740749,-0.0554319) + New Momentum Direction: (0.306083,-0.83871,-0.450421) + New Polarization: (-0.932269,-0.359904,0.0366408) + *** FresnelRefraction *** +Track (trackID 956, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.809121,0.491551,0.322026) + Old Polarization: (-0.562192,0.487978,0.667696) + New Momentum Direction: (0.602303,0.667736,0.437448) + New Polarization: (-0.780556,0.377839,0.497966) + *** FresnelRefraction *** +Track (trackID 955, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + +** Photon absorbed! ** +Track (trackID 954, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.63049,-0.361998,-0.686615) + Old Polarization: (-0.76118,-0.46152,-0.455636) + New Momentum Direction: (0.85013,-0.488105,-0.197568) + New Polarization: (-0.171846,-0.611824,0.772101) + *** FresnelRefraction *** +Track (trackID 953, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.60115,0.460172,-0.653346) + Old Polarization: (-0.791811,0.453433,-0.409186) + New Momentum Direction: (0.60115,0.460172,0.653346) + New Polarization: (0.791811,-0.453433,-0.409186) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60115,0.460172,0.653346) + Old Polarization: (0.791811,-0.453433,-0.409186) + New Momentum Direction: (-0.60115,0.460172,0.653346) + New Polarization: (0.791811,0.453433,0.409186) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60115,0.460172,0.653346) + Old Polarization: (0.791811,0.453433,0.409186) + New Momentum Direction: (-0.60115,-0.460172,0.653346) + New Polarization: (-0.791811,0.453433,-0.409186) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 952, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.617662,0.535396,-0.57606) + Old Polarization: (-0.774548,0.541054,-0.327622) + New Momentum Direction: (-0.617662,0.535396,-0.57606) + New Polarization: (-0.774548,-0.541054,0.327622) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.617662,0.535396,-0.57606) + Old Polarization: (-0.774548,-0.541054,0.327622) + New Momentum Direction: (-0.617662,0.535396,0.57606) + New Polarization: (0.774548,0.541054,0.327622) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.617662,0.535396,0.57606) + Old Polarization: (0.774548,0.541054,0.327622) + New Momentum Direction: (-0.617662,-0.535396,0.57606) + New Polarization: (-0.774548,0.541054,-0.327622) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.617662,-0.535396,0.57606) + Old Polarization: (-0.774548,0.541054,-0.327622) + New Momentum Direction: (0.617662,-0.535396,0.57606) + New Polarization: (-0.774548,-0.541054,0.327622) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.617662,-0.535396,0.57606) + Old Polarization: (-0.774548,-0.541054,0.327622) + New Momentum Direction: (0.617662,-0.535396,-0.57606) + New Polarization: (0.774548,0.541054,0.327622) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.617662,-0.535396,-0.57606) + Old Polarization: (0.774548,0.541054,0.327622) + New Momentum Direction: (0.617662,0.535396,-0.57606) + New Polarization: (-0.774548,0.541054,-0.327622) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.617662,0.535396,-0.57606) + Old Polarization: (-0.774548,0.541054,-0.327622) + New Momentum Direction: (-0.617662,0.535396,-0.57606) + New Polarization: (-0.774548,-0.541054,0.327622) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.617662,0.535396,-0.57606) + Old Polarization: (-0.774548,-0.541054,0.327622) + New Momentum Direction: (-0.617662,0.535396,0.57606) + New Polarization: (0.774548,0.541054,0.327622) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.617662,0.535396,0.57606) + Old Polarization: (0.774548,0.541054,0.327622) + New Momentum Direction: (-0.617662,-0.535396,0.57606) + New Polarization: (-0.774548,0.541054,-0.327622) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 951, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.659427,0.667346,-0.346129) + Old Polarization: (-0.727496,0.682525,-0.0700626) + New Momentum Direction: (0.659427,-0.667346,-0.346129) + New Polarization: (0.727496,0.682525,0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.659427,-0.667346,-0.346129) + Old Polarization: (0.727496,0.682525,0.0700626) + New Momentum Direction: (-0.659427,-0.667346,-0.346129) + New Polarization: (0.727496,-0.682525,-0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.659427,-0.667346,-0.346129) + Old Polarization: (0.727496,-0.682525,-0.0700626) + New Momentum Direction: (-0.659427,-0.667346,0.346129) + New Polarization: (-0.727496,0.682525,-0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.659427,-0.667346,0.346129) + Old Polarization: (-0.727496,0.682525,-0.0700626) + New Momentum Direction: (-0.659427,0.667346,0.346129) + New Polarization: (0.727496,0.682525,0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.659427,0.667346,0.346129) + Old Polarization: (0.727496,0.682525,0.0700626) + New Momentum Direction: (0.659427,0.667346,0.346129) + New Polarization: (0.727496,-0.682525,-0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.659427,0.667346,0.346129) + Old Polarization: (0.727496,-0.682525,-0.0700626) + New Momentum Direction: (0.659427,-0.667346,0.346129) + New Polarization: (-0.727496,-0.682525,0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.659427,-0.667346,0.346129) + Old Polarization: (-0.727496,-0.682525,0.0700626) + New Momentum Direction: (-0.659427,-0.667346,0.346129) + New Polarization: (-0.727496,0.682525,-0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.659427,-0.667346,0.346129) + Old Polarization: (-0.727496,0.682525,-0.0700626) + New Momentum Direction: (-0.659427,-0.667346,-0.346129) + New Polarization: (0.727496,-0.682525,-0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.659427,-0.667346,-0.346129) + Old Polarization: (0.727496,-0.682525,-0.0700626) + New Momentum Direction: (-0.659427,0.667346,-0.346129) + New Polarization: (-0.727496,-0.682525,0.0700626) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.659427,0.667346,-0.346129) + Old Polarization: (-0.727496,-0.682525,0.0700626) + New Momentum Direction: (0.659427,0.667346,-0.346129) + New Polarization: (-0.727496,0.682525,-0.0700626) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (0.659427,0.667346,-0.346129) +Old Polarization: (-0.727496,0.682525,-0.0700626) +New Polarization: (0.347703,-0.847,-0.40211) +Polarization Change: (0.347703,-0.847,-0.40211) +New Momentum Direction: (-0.752056,0.0041704,-0.659085) +Momentum Change: (-0.752056,0.0041704,-0.659085) + +** Photon absorbed! ** +Track (trackID 950, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.654741,-0.478442,-0.585155) + Old Polarization: (-0.733497,-0.589075,-0.339077) + New Momentum Direction: (-0.654741,-0.478442,-0.585155) + New Polarization: (-0.733497,0.589075,0.339077) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.654741,-0.478442,-0.585155) + Old Polarization: (-0.733497,0.589075,0.339077) + New Momentum Direction: (-0.654741,-0.478442,0.585155) + New Polarization: (0.733497,-0.589075,0.339077) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.654741,-0.478442,0.585155) + Old Polarization: (0.733497,-0.589075,0.339077) + New Momentum Direction: (-0.654741,0.478442,0.585155) + New Polarization: (-0.733497,-0.589075,-0.339077) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.654741,0.478442,0.585155) + Old Polarization: (-0.733497,-0.589075,-0.339077) + New Momentum Direction: (0.654741,0.478442,0.585155) + New Polarization: (-0.733497,0.589075,0.339077) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.654741,0.478442,0.585155) + Old Polarization: (-0.733497,0.589075,0.339077) + New Momentum Direction: (0.654741,0.478442,-0.585155) + New Polarization: (0.733497,-0.589075,0.339077) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.654741,0.478442,-0.585155) + Old Polarization: (0.733497,-0.589075,0.339077) + New Momentum Direction: (0.654741,-0.478442,-0.585155) + New Polarization: (-0.733497,-0.589075,-0.339077) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.654741,-0.478442,-0.585155) + Old Polarization: (-0.733497,-0.589075,-0.339077) + New Momentum Direction: (-0.654741,-0.478442,-0.585155) + New Polarization: (-0.733497,0.589075,0.339077) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 949, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.595659,0.387682,-0.703487) + Old Polarization: (-0.798947,0.376367,-0.469076) + New Momentum Direction: (0.595659,0.387682,0.703487) + New Polarization: (0.2281,-0.921399,0.314633) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.595659,0.387682,0.703487) + Old Polarization: (0.2281,-0.921399,0.314633) + New Momentum Direction: (-0.595659,0.387682,0.703487) + New Polarization: (0.2281,0.921399,-0.314633) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.595659,0.387682,0.703487) + Old Polarization: (0.2281,0.921399,-0.314633) + New Momentum Direction: (-0.595659,-0.387682,0.703487) + New Polarization: (-0.2281,0.921399,0.314633) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.595659,-0.387682,0.703487) + Old Polarization: (-0.2281,0.921399,0.314633) + New Momentum Direction: (-0.595659,-0.387682,-0.703487) + New Polarization: (0.683265,-0.705014,-0.190013) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.595659,-0.387682,-0.703487) + Old Polarization: (0.683265,-0.705014,-0.190013) + New Momentum Direction: (0.595659,-0.387682,-0.703487) + New Polarization: (0.683265,0.705014,0.190013) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.595659,-0.387682,-0.703487) + Old Polarization: (0.683265,0.705014,0.190013) + New Momentum Direction: (0.595659,-0.387682,0.703487) + New Polarization: (-0.62981,-0.768993,0.109493) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.595659,-0.387682,0.703487) + Old Polarization: (-0.62981,-0.768993,0.109493) + New Momentum Direction: (0.595659,0.387682,0.703487) + New Polarization: (0.62981,-0.768993,-0.109493) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.595659,0.387682,0.703487) + Old Polarization: (0.62981,-0.768993,-0.109493) + New Momentum Direction: (-0.595659,0.387682,0.703487) + New Polarization: (0.62981,0.768993,0.109493) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.595659,0.387682,0.703487) + Old Polarization: (0.62981,0.768993,0.109493) + New Momentum Direction: (-0.806382,0.52483,0.272582) + New Polarization: (0.476749,0.849624,-0.225497) + *** FresnelRefraction *** +Track (trackID 948, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.609459,-0.242006,-0.754979) + Old Polarization: (-0.784055,-0.325175,-0.528696) + New Momentum Direction: (0.823776,-0.327108,-0.463026) + New Polarization: (0.217658,-0.571662,0.791093) + *** FresnelRefraction *** +Track (trackID 947, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 146 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 147 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.841897,0.0374902,-0.538335) + Old Polarization: (-0.501573,0.422391,-0.75499) + New Momentum Direction: (0.680824,0.0508851,-0.730677) + New Polarization: (-0.704731,0.317338,-0.634548) + *** FresnelRefraction *** +Track (trackID 1233, parentID 1) is processed with stopping code 2 +### pop requested out of 146 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.53433,-0.771478,0.345417) + Old Polarization: (-0.845198,-0.482063,0.230774) + New Momentum Direction: (0.723436,-0.507869,0.467664) + New Polarization: (0.0874212,0.739325,0.66765) + *** FresnelRefraction *** +Track (trackID 1232, parentID 1) is processed with stopping code 2 +### pop requested out of 145 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.662741,-0.601607,-0.445919) + Old Polarization: (-0.701049,-0.289107,-0.65188) + New Momentum Direction: (-0.662741,-0.601607,-0.445919) + New Polarization: (-0.701049,0.289107,0.65188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.662741,-0.601607,-0.445919) + Old Polarization: (-0.701049,0.289107,0.65188) + New Momentum Direction: (-0.662741,0.601607,-0.445919) + New Polarization: (0.701049,0.289107,-0.65188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.662741,0.601607,-0.445919) + Old Polarization: (0.701049,0.289107,-0.65188) + New Momentum Direction: (-0.662741,0.601607,0.445919) + New Polarization: (-0.701049,-0.289107,-0.65188) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1231, parentID 1) is processed with stopping code 2 +### pop requested out of 144 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1230, parentID 1) is processed with stopping code 2 +### pop requested out of 143 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.543144,-0.828218,0.138022) + Old Polarization: (-0.83613,-0.548531,-0.00118751) + New Momentum Direction: (0.734038,-0.652988,0.186531) + New Polarization: (0.589527,0.749052,0.302289) + *** FresnelRefraction *** +Track (trackID 1229, parentID 1) is processed with stopping code 2 +### pop requested out of 142 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1228, parentID 1) is processed with stopping code 2 +### pop requested out of 141 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1227, parentID 1) is processed with stopping code 2 +### pop requested out of 140 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.893952,0.312187,-0.321541) + Old Polarization: (-0.441982,0.732879,-0.517243) + New Momentum Direction: (0.795409,0.422187,-0.434837) + New Polarization: (-0.601617,0.636851,-0.48216) + *** FresnelRefraction *** +Track (trackID 1226, parentID 1) is processed with stopping code 2 ### pop requested out of 139 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.189269,0.435009,0.880309) - Old Polarization: (-0.748589,0.644097,-0.157335) - New Momentum Direction: (0.256417,0.58934,0.766113) - New Polarization: (-0.690944,0.666023,-0.281087) + Old Momentum Direction: (0.533028,-0.79222,0.297101) + Old Polarization: (-0.846037,-0.503259,0.17593) + New Momentum Direction: (0.72264,-0.561742,0.402788) + New Polarization: (0.231405,0.745696,0.624811) *** FresnelRefraction *** -Track (trackID 1203, parentID 1) is processed with stopping code 2 +Track (trackID 1225, parentID 1) is processed with stopping code 2 ### pop requested out of 138 stacked tracks. ** Photon absorbed! ** -Track (trackID 1202, parentID 1) is processed with stopping code 2 +Track (trackID 1224, parentID 1) is processed with stopping code 2 ### pop requested out of 137 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.63004,-0.696388,0.343647) - Old Polarization: (-0.261201,-0.606778,-0.750729) - New Momentum Direction: (0.63004,0.696388,0.343647) - New Polarization: (-0.770262,0.504156,0.390541) + Old Momentum Direction: (0.67825,-0.555729,-0.480773) + Old Polarization: (-0.683739,-0.237573,-0.689971) + New Momentum Direction: (-0.67825,-0.555729,-0.480773) + New Polarization: (-0.672085,0.204597,0.711647) *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (0.63004,0.696388,0.343647) - Old Polarization: (-0.770262,0.504156,0.390541) - New Momentum Direction: (-0.63004,0.696388,0.343647) - New Polarization: (-0.770262,-0.504156,-0.390541) + Old Momentum Direction: (-0.67825,-0.555729,-0.480773) + Old Polarization: (-0.672085,0.204597,0.711647) + New Momentum Direction: (-0.67825,0.555729,-0.480773) + New Polarization: (0.672085,0.204597,-0.711647) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.67825,0.555729,-0.480773) + Old Polarization: (0.672085,0.204597,-0.711647) + New Momentum Direction: (-0.67825,0.555729,0.480773) + New Polarization: (-0.672085,-0.204597,-0.711647) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.67825,0.555729,0.480773) + Old Polarization: (-0.672085,-0.204597,-0.711647) + New Momentum Direction: (0.67825,0.555729,0.480773) + New Polarization: (0.65821,-0.750339,-0.0612454) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.67825,0.555729,0.480773) + Old Polarization: (0.65821,-0.750339,-0.0612454) + New Momentum Direction: (0.67825,-0.555729,0.480773) + New Polarization: (-0.65821,-0.750339,0.0612454) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.67825,-0.555729,0.480773) + Old Polarization: (-0.65821,-0.750339,0.0612454) + New Momentum Direction: (0.67825,-0.555729,-0.480773) + New Polarization: (0.65821,0.750339,0.0612454) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.67825,-0.555729,-0.480773) + Old Polarization: (0.65821,0.750339,0.0612454) + New Momentum Direction: (-0.67825,-0.555729,-0.480773) + New Polarization: (-0.641884,0.12956,0.755777) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.67825,-0.555729,-0.480773) + Old Polarization: (-0.641884,0.12956,0.755777) + New Momentum Direction: (-0.67825,0.555729,-0.480773) + New Polarization: (0.641884,0.12956,-0.755777) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.67825,0.555729,-0.480773) + Old Polarization: (0.641884,0.12956,-0.755777) + New Momentum Direction: (-0.0625363,0.754787,-0.652983) + New Polarization: (0.95102,-0.153393,-0.268388) + *** FresnelRefraction *** +Track (trackID 1223, parentID 1) is processed with stopping code 2 +### pop requested out of 136 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.645583,-0.198035,0.737567) + Old Polarization: (-0.721081,0.16002,0.674118) + New Momentum Direction: (0.871864,-0.267448,0.410273) + New Polarization: (0.380248,-0.158283,-0.91124) + *** FresnelRefraction *** +Track (trackID 1222, parentID 1) is processed with stopping code 2 +### pop requested out of 135 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.838554,0.0138038,-0.544644) + Old Polarization: (-0.504409,0.397492,-0.766532) + New Momentum Direction: (0.675518,0.0186817,-0.737107) + New Polarization: (-0.70778,0.296663,-0.641123) + *** FresnelRefraction *** +Track (trackID 1221, parentID 1) is processed with stopping code 2 +### pop requested out of 134 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.55784,-0.609327,0.563503) + Old Polarization: (-0.821093,-0.30626,0.481675) + New Momentum Direction: (0.55784,0.609327,0.563503) + New Polarization: (0.821093,-0.30626,-0.481675) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.55784,0.609327,0.563503) + Old Polarization: (0.821093,-0.30626,-0.481675) + New Momentum Direction: (0.55784,0.609327,-0.563503) + New Polarization: (-0.821093,0.30626,-0.481675) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.55784,0.609327,-0.563503) + Old Polarization: (-0.821093,0.30626,-0.481675) + New Momentum Direction: (-0.55784,0.609327,-0.563503) + New Polarization: (-0.821093,-0.30626,0.481675) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1220, parentID 1) is processed with stopping code 2 +### pop requested out of 133 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.530685,-0.804598,0.266449) + Old Polarization: (-0.847239,-0.512361,0.14026) + New Momentum Direction: (0.721682,-0.589814,0.362346) + New Polarization: (0.316939,0.746903,0.584539) + *** FresnelRefraction *** +Track (trackID 1219, parentID 1) is processed with stopping code 2 +### pop requested out of 132 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.618087,-0.717072,-0.322142) + Old Polarization: (-0.750527,-0.41639,-0.513156) + New Momentum Direction: (0.839851,-0.321011,-0.437724) + New Polarization: (-0.0914906,0.711144,-0.697068) + *** FresnelRefraction *** +Track (trackID 1218, parentID 1) is processed with stopping code 2 +### pop requested out of 131 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.75182,-0.31567,-0.578894) + Old Polarization: (-0.602001,0.0295602,-0.797948) + New Momentum Direction: (0.443719,-0.429037,-0.786792) + New Polarization: (-0.857433,0.0520731,-0.511954) + *** FresnelRefraction *** +Track (trackID 1217, parentID 1) is processed with stopping code 2 +### pop requested out of 130 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.654453,-0.622639,-0.428966) + Old Polarization: (-0.710102,-0.311275,-0.631557) + New Momentum Direction: (-0.654453,-0.622639,-0.428966) + New Polarization: (-0.710102,0.311275,0.631557) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.654453,-0.622639,-0.428966) + Old Polarization: (-0.710102,0.311275,0.631557) + New Momentum Direction: (-0.654453,0.622639,-0.428966) + New Polarization: (0.710102,0.311275,-0.631557) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.654453,0.622639,-0.428966) + Old Polarization: (0.710102,0.311275,-0.631557) + New Momentum Direction: (-0.654453,0.622639,0.428966) + New Polarization: (-0.710102,-0.311275,-0.631557) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1216, parentID 1) is processed with stopping code 2 +### pop requested out of 129 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1215, parentID 1) is processed with stopping code 2 +### pop requested out of 128 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.883293,0.254587,-0.393674) + Old Polarization: (-0.45569,0.663574,-0.593309) + New Momentum Direction: (0.771151,0.345725,-0.534602) + New Polarization: (-0.627182,0.556824,-0.544601) + *** FresnelRefraction *** +Track (trackID 1214, parentID 1) is processed with stopping code 2 +### pop requested out of 127 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.632649,-0.682499,-0.365991) + Old Polarization: (-0.734531,-0.379063,-0.562829) + New Momentum Direction: (0.632649,0.682499,-0.365991) + New Polarization: (0.196047,0.316055,0.928264) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.632649,0.682499,-0.365991) + Old Polarization: (0.196047,0.316055,0.928264) + New Momentum Direction: (-0.632649,0.682499,-0.365991) + New Polarization: (0.196047,-0.316055,-0.928264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.632649,0.682499,-0.365991) + Old Polarization: (0.196047,-0.316055,-0.928264) + New Momentum Direction: (-0.632649,0.682499,0.365991) + New Polarization: (-0.196047,0.316055,-0.928264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.632649,0.682499,0.365991) + Old Polarization: (-0.196047,0.316055,-0.928264) + New Momentum Direction: (-0.632649,-0.682499,0.365991) + New Polarization: (0.677672,-0.259128,0.688196) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.632649,-0.682499,0.365991) + Old Polarization: (0.677672,-0.259128,0.688196) + New Momentum Direction: (0.632649,-0.682499,0.365991) + New Polarization: (0.677672,0.259128,-0.688196) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1213, parentID 1) is processed with stopping code 2 +### pop requested out of 126 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.884175,0.248074,-0.395845) + Old Polarization: (-0.453419,0.659686,-0.599354) + New Momentum Direction: (0.774602,0.335851,-0.535907) + New Polarization: (-0.622491,0.554636,-0.552163) + *** FresnelRefraction *** +Track (trackID 1212, parentID 1) is processed with stopping code 2 +### pop requested out of 125 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.617584,-0.302924,0.725828) + Old Polarization: (-0.752111,0.0424587,0.657667) + New Momentum Direction: (0.835689,-0.409905,0.365517) + New Polarization: (0.232967,-0.338116,-0.911814) + *** FresnelRefraction *** +Track (trackID 1211, parentID 1) is processed with stopping code 2 +### pop requested out of 124 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.685666,-0.531496,-0.497367) + Old Polarization: (-0.67542,-0.209764,-0.706971) + New Momentum Direction: (0.143457,-0.722609,-0.676208) + New Polarization: (-0.961891,0.0589075,-0.267014) + *** FresnelRefraction *** +Track (trackID 1210, parentID 1) is processed with stopping code 2 +### pop requested out of 123 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.69022,-0.519293,-0.503916) + Old Polarization: (-0.670416,-0.196881,-0.715388) + New Momentum Direction: (0.18359,-0.705454,-0.684565) + New Polarization: (-0.953532,0.0414409,-0.298429) + *** FresnelRefraction *** +Track (trackID 1209, parentID 1) is processed with stopping code 2 +### pop requested out of 122 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.899317,0.363475,-0.243134) + Old Polarization: (-0.435796,0.790955,-0.429502) + New Momentum Direction: (0.806547,0.491373,-0.328686) + New Polarization: (-0.590093,0.702715,-0.397468) + *** FresnelRefraction *** +Track (trackID 1208, parentID 1) is processed with stopping code 2 +### pop requested out of 121 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.700842,1.889e-05,0.713316) + Old Polarization: (-0.658864,0.383222,0.647332) + New Momentum Direction: (0.946187,2.55028e-05,0.32362) + New Polarization: (0.312049,0.264937,-0.912378) + *** FresnelRefraction *** +Track (trackID 1207, parentID 1) is processed with stopping code 2 +### pop requested out of 120 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.62607,-0.701611,-0.340263) + Old Polarization: (-0.742218,-0.402413,-0.535889) + New Momentum Direction: (0.848574,-0.259277,-0.461192) + New Polarization: (-0.160564,0.704378,-0.691426) + *** FresnelRefraction *** +Track (trackID 1206, parentID 1) is processed with stopping code 2 +### pop requested out of 119 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1205, parentID 1) is processed with stopping code 2 +### pop requested out of 118 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.535637,-0.712093,0.45389) + Old Polarization: (-0.842174,-0.411041,0.348982) + New Momentum Direction: (0.727717,-0.300275,0.616655) + New Polarization: (-0.262375,0.708816,0.654782) + *** FresnelRefraction *** +Track (trackID 1204, parentID 1) is processed with stopping code 2 +### pop requested out of 117 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.564528,-0.823449,-0.0569245) + Old Polarization: (-0.811611,-0.541206,-0.219965) + New Momentum Direction: (0.763869,-0.640758,-0.0770253) + New Polarization: (0.600155,0.749161,-0.280306) + *** FresnelRefraction *** +Track (trackID 1203, parentID 1) is processed with stopping code 2 +### pop requested out of 116 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.840798,0.00847782,-0.541282) + Old Polarization: (-0.500288,0.394149,-0.770946) + New Momentum Direction: (0.684647,0.0114146,-0.728785) + New Polarization: (-0.698541,0.295728,-0.651603) + *** FresnelRefraction *** +Track (trackID 1202, parentID 1) is processed with stopping code 2 +### pop requested out of 115 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.543072,-0.665754,0.511708) + Old Polarization: (-0.834704,-0.361743,0.415223) + New Momentum Direction: (0.543072,0.665754,0.511708) + New Polarization: (0.834704,-0.361743,-0.415223) *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1201, parentID 1) is processed with stopping code 2 -### pop requested out of 136 stacked tracks. +### pop requested out of 114 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.862411,0.399247,0.311206) - Old Polarization: (0.00198459,0.612106,-0.790773) - New Momentum Direction: (0.731829,0.53749,0.418964) - New Polarization: (-0.00368488,0.61789,-0.786256) + Old Momentum Direction: (0.72857,0.101529,0.677406) + Old Polarization: (-0.627721,0.494766,0.600977) + New Momentum Direction: (0.371717,0.137602,0.918091) + New Polarization: (-0.891091,0.330236,0.31129) *** FresnelRefraction *** Track (trackID 1200, parentID 1) is processed with stopping code 2 -### pop requested out of 135 stacked tracks. +### pop requested out of 113 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.558192,-0.606113,0.566611) + Old Polarization: (-0.820606,-0.302395,0.484936) + New Momentum Direction: (0.558192,0.606113,0.566611) + New Polarization: (0.820606,-0.302395,-0.484936) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.558192,0.606113,0.566611) + Old Polarization: (0.820606,-0.302395,-0.484936) + New Momentum Direction: (0.558192,0.606113,-0.566611) + New Polarization: (-0.820606,0.302395,-0.484936) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.558192,0.606113,-0.566611) + Old Polarization: (-0.820606,0.302395,-0.484936) + New Momentum Direction: (-0.558192,0.606113,-0.566611) + New Polarization: (-0.820606,-0.302395,0.484936) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1199, parentID 1) is processed with stopping code 2 -### pop requested out of 134 stacked tracks. +### pop requested out of 112 stacked tracks. ** Photon absorbed! ** Track (trackID 1198, parentID 1) is processed with stopping code 2 -### pop requested out of 133 stacked tracks. +### pop requested out of 111 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.387723,-0.747907,0.5388) - Old Polarization: (-0.528432,-0.659283,-0.534888) - New Momentum Direction: (0.526885,-0.43162,0.732186) - New Polarization: (0.186948,0.899215,0.395554) + Old Momentum Direction: (0.90035,0.421949,-0.106437) + Old Polarization: (-0.434433,0.857338,-0.276114) + New Momentum Direction: (0.808836,0.570173,-0.143827) + New Polarization: (-0.587507,0.773222,-0.238668) *** FresnelRefraction *** Track (trackID 1197, parentID 1) is processed with stopping code 2 -### pop requested out of 132 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.116058,0.354868,0.927685) - Old Polarization: (-0.826788,0.552096,-0.107758) - New Momentum Direction: (0.15773,0.482288,0.861695) - New Polarization: (-0.775561,0.600653,-0.19422) - *** FresnelRefraction *** +### pop requested out of 110 stacked tracks. + +** Photon absorbed! ** Track (trackID 1196, parentID 1) is processed with stopping code 2 -### pop requested out of 131 stacked tracks. +### pop requested out of 109 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.702688,0.539431,0.463945) - Old Polarization: (-0.178762,0.765002,-0.618721) - New Momentum Direction: (0.278152,0.728242,0.626334) - New Polarization: (-0.355753,0.6838,-0.63707) + Old Momentum Direction: (0.777798,-0.225606,-0.586628) + Old Polarization: (-0.572895,0.129393,-0.809351) + New Momentum Direction: (0.522277,-0.306105,-0.795944) + New Polarization: (-0.813764,0.100181,-0.572497) *** FresnelRefraction *** Track (trackID 1195, parentID 1) is processed with stopping code 2 -### pop requested out of 130 stacked tracks. +### pop requested out of 108 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.1357,0.378706,0.915515) - Old Polarization: (-0.806087,0.579458,-0.120214) - New Momentum Direction: (0.18423,0.514141,0.837687) - New Polarization: (-0.752728,0.621846,-0.216121) + Old Momentum Direction: (0.643346,-0.187843,0.742173) + Old Polarization: (-0.72254,0.171473,0.669727) + New Momentum Direction: (0.873827,-0.255138,0.413922) + New Polarization: (0.390023,-0.14056,-0.910014) *** FresnelRefraction *** Track (trackID 1194, parentID 1) is processed with stopping code 2 -### pop requested out of 129 stacked tracks. +### pop requested out of 107 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.55681,-0.723108,0.408752) - Old Polarization: (-0.34075,-0.647628,-0.681519) - New Momentum Direction: (0.749289,-0.368797,0.55005) - New Polarization: (0.432154,0.901661,0.0158574) + Old Momentum Direction: (0.880733,0.454585,0.1329) + Old Polarization: (-0.457764,0.889043,-0.00735761) + New Momentum Direction: (0.766744,0.616161,0.180137) + New Polarization: (-0.630465,0.775617,0.0305332) *** FresnelRefraction *** Track (trackID 1193, parentID 1) is processed with stopping code 2 -### pop requested out of 128 stacked tracks. +### pop requested out of 106 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.622582,0.574224,0.531657) - Old Polarization: (-0.269952,0.795275,-0.542829) - New Momentum Direction: (-0.622582,0.574224,0.531657) - New Polarization: (-0.269952,-0.795275,0.542829) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.622582,0.574224,0.531657) - Old Polarization: (-0.269952,-0.795275,0.542829) - New Momentum Direction: (-0.622582,-0.574224,0.531657) - New Polarization: (0.269952,-0.795275,-0.542829) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.622582,-0.574224,0.531657) - Old Polarization: (0.269952,-0.795275,-0.542829) - New Momentum Direction: (-0.622582,-0.574224,-0.531657) - New Polarization: (-0.269952,0.795275,-0.542829) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.830538,0.375711,0.411154) + Old Polarization: (-0.513555,0.802307,0.304244) + New Momentum Direction: (0.65664,0.508766,0.556759) + New Polarization: (-0.722544,0.635998,0.270992) + *** FresnelRefraction *** Track (trackID 1192, parentID 1) is processed with stopping code 2 -### pop requested out of 127 stacked tracks. +### pop requested out of 105 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.952203,0.228079,0.203199) - Old Polarization: (0.0939276,0.414366,-0.90525) - New Momentum Direction: (0.910137,0.309346,0.275601) - New Polarization: (-0.167266,0.882942,-0.438675) + Old Momentum Direction: (0.532961,-0.742091,0.406514) + Old Polarization: (-0.845228,-0.444618,0.296487) + New Momentum Direction: (0.723951,-0.413495,0.552192) + New Polarization: (-0.105962,0.724299,0.681296) *** FresnelRefraction *** Track (trackID 1191, parentID 1) is processed with stopping code 2 -### pop requested out of 126 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 104 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.546623,-0.702231,0.456153) + Old Polarization: (-0.834834,-0.414565,0.362199) + New Momentum Direction: (0.734451,-0.29145,0.612894) + New Polarization: (-0.269232,0.703862,0.657337) + *** FresnelRefraction *** Track (trackID 1190, parentID 1) is processed with stopping code 2 -### pop requested out of 125 stacked tracks. +### pop requested out of 103 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.544302,-0.646838,0.534168) + Old Polarization: (-0.83259,-0.338653,0.438302) + New Momentum Direction: (0.544302,0.646838,0.534168) + New Polarization: (0.83259,-0.338653,-0.438302) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.544302,0.646838,0.534168) + Old Polarization: (0.83259,-0.338653,-0.438302) + New Momentum Direction: (-0.544302,0.646838,0.534168) + New Polarization: (0.83259,0.338653,0.438302) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.544302,0.646838,0.534168) + Old Polarization: (0.83259,0.338653,0.438302) + New Momentum Direction: (-0.544302,0.646838,-0.534168) + New Polarization: (-0.83259,-0.338653,0.438302) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.544302,0.646838,-0.534168) + Old Polarization: (-0.83259,-0.338653,0.438302) + New Momentum Direction: (-0.544302,-0.646838,-0.534168) + New Polarization: (0.83259,-0.338653,-0.438302) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.544302,-0.646838,-0.534168) + Old Polarization: (0.83259,-0.338653,-0.438302) + New Momentum Direction: (0.544302,-0.646838,-0.534168) + New Polarization: (0.83259,0.338653,0.438302) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.544302,-0.646838,-0.534168) + Old Polarization: (0.83259,0.338653,0.438302) + New Momentum Direction: (0.544302,-0.646838,0.534168) + New Polarization: (-0.83259,-0.338653,0.438302) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.544302,-0.646838,0.534168) + Old Polarization: (-0.83259,-0.338653,0.438302) + New Momentum Direction: (0.544302,0.646838,0.534168) + New Polarization: (0.83259,-0.338653,-0.438302) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1189, parentID 1) is processed with stopping code 2 -### pop requested out of 124 stacked tracks. +### pop requested out of 102 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.738185,0.137306,0.660477) + Old Polarization: (-0.6171,0.532967,0.578907) + New Momentum Direction: (0.400559,0.186495,0.897091) + New Polarization: (-0.878323,0.357,0.317963) + *** FresnelRefraction *** +Track (trackID 1188, parentID 1) is processed with stopping code 2 +### pop requested out of 101 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.658209,-0.62516,-0.419447) + Old Polarization: (-0.706973,-0.321791,-0.629794) + New Momentum Direction: (-0.658209,-0.62516,-0.419447) + New Polarization: (-0.706973,0.321791,0.629794) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1188, parentID 1) is processed with stopping code 2 -### pop requested out of 123 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.893429,-0.419089,0.161708) - Old Polarization: (0.0311543,-0.301312,-0.953016) - New Momentum Direction: (0.793913,-0.567267,0.218884) - New Polarization: (-0.0579749,-0.428971,-0.901456) - *** FresnelRefraction *** Track (trackID 1187, parentID 1) is processed with stopping code 2 -### pop requested out of 122 stacked tracks. +### pop requested out of 100 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.597423,-0.375724,0.708462) +Old Polarization: (-0.773645,-0.0374854,0.63251) +New Polarization: (0.775672,0.594239,0.212636) +Polarization Change: (0.775672,0.594239,0.212636) +New Momentum Direction: (0.452753,-0.289179,-0.843439) +Momentum Change: (0.452753,-0.289179,-0.843439) Photon at Boundary! - Old Momentum Direction: (0.248725,0.48293,0.839592) - Old Polarization: (-0.684408,0.701,-0.20046) - New Momentum Direction: (0.248725,0.48293,-0.839592) - New Polarization: (0.913799,-0.404374,0.0381145) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.248725,0.48293,-0.839592) - Old Polarization: (0.913799,-0.404374,0.0381145) - New Momentum Direction: (0.248725,-0.48293,-0.839592) - New Polarization: (-0.913799,-0.404374,-0.0381145) + Old Momentum Direction: (0.452753,-0.289179,-0.843439) + Old Polarization: (0.775672,0.594239,0.212636) + New Momentum Direction: (-0.452753,-0.289179,-0.843439) + New Polarization: (0.775672,-0.594239,-0.212636) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.248725,-0.48293,-0.839592) - Old Polarization: (-0.913799,-0.404374,-0.0381145) - New Momentum Direction: (0.336026,-0.652436,-0.679275) - New Polarization: (-0.854417,-0.514627,0.0716274) + Old Momentum Direction: (-0.452753,-0.289179,-0.843439) + Old Polarization: (0.775672,-0.594239,-0.212636) + New Momentum Direction: (-0.452753,0.289179,-0.843439) + New Polarization: (-0.775672,-0.594239,0.212636) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.452753,0.289179,-0.843439) + Old Polarization: (-0.775672,-0.594239,0.212636) + New Momentum Direction: (-0.61485,0.392713,-0.683912) + New Polarization: (-0.758781,-0.530957,0.377274) *** FresnelRefraction *** Track (trackID 1186, parentID 1) is processed with stopping code 2 -### pop requested out of 121 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0337662,-0.128229,0.99117) - Old Polarization: (-0.999293,0.0207618,-0.0313569) - New Momentum Direction: (-0.0456006,-0.173171,0.983836) - New Polarization: (-0.99689,-0.0554812,-0.0559713) - *** FresnelRefraction *** -Track (trackID 1185, parentID 1) is processed with stopping code 2 -### pop requested out of 120 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.964729,-0.232132,0.124143) - Old Polarization: (0.10514,-0.0925644,-0.99014) - New Momentum Direction: (0.93379,-0.315533,0.168746) - New Polarization: (-0.182997,-0.826372,-0.532562) - *** FresnelRefraction *** -Track (trackID 1184, parentID 1) is processed with stopping code 2 -### pop requested out of 119 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.266019,-0.707176,0.655085) - Old Polarization: (-0.666034,-0.626115,-0.405436) - New Momentum Direction: (0.3588,-0.300972,0.88356) - New Polarization: (-0.195147,0.901483,0.386323) - *** FresnelRefraction *** -Track (trackID 1183, parentID 1) is processed with stopping code 2 -### pop requested out of 118 stacked tracks. +### pop requested out of 99 stacked tracks. ** Photon absorbed! ** -Track (trackID 1182, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. +Track (trackID 1185, parentID 1) is processed with stopping code 2 +### pop requested out of 98 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1184, parentID 1) is processed with stopping code 2 +### pop requested out of 97 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1183, parentID 1) is processed with stopping code 2 +### pop requested out of 96 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.355869,-0.737911,0.57345) - Old Polarization: (-0.565319,-0.658597,-0.496653) - New Momentum Direction: (0.480527,-0.411721,0.774325) - New Polarization: (0.086658,0.900916,0.425254) + Old Momentum Direction: (0.885033,0.458517,0.0804892) + Old Polarization: (-0.454275,0.888419,-0.0659225) + New Momentum Direction: (0.774186,0.623425,0.109438) + New Polarization: (-0.624872,0.780334,-0.0247826) + *** FresnelRefraction *** +Track (trackID 1182, parentID 1) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.856463,0.422099,0.297159) + Old Polarization: (-0.483931,0.856895,0.177598) + New Momentum Direction: (0.716275,0.570599,0.401704) + New Polarization: (-0.67413,0.714526,0.187088) *** FresnelRefraction *** Track (trackID 1181, parentID 1) is processed with stopping code 2 -### pop requested out of 116 stacked tracks. +### pop requested out of 94 stacked tracks. ** Photon absorbed! ** Track (trackID 1180, parentID 1) is processed with stopping code 2 -### pop requested out of 115 stacked tracks. +### pop requested out of 93 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.590881,0.574259,0.566644) - Old Polarization: (-0.302543,0.808841,-0.504226) - New Momentum Direction: (-0.590881,0.574259,0.566644) - New Polarization: (-0.302543,-0.808841,0.504226) + Old Momentum Direction: (0.574661,-0.488672,0.656479) + Old Polarization: (-0.799641,-0.16455,0.577492) + New Momentum Direction: (0.574661,-0.488672,-0.656479) + New Polarization: (0.799641,0.16455,0.577492) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.590881,0.574259,0.566644) - Old Polarization: (-0.302543,-0.808841,0.504226) - New Momentum Direction: (-0.590881,-0.574259,0.566644) - New Polarization: (0.302543,-0.808841,-0.504226) + Old Momentum Direction: (0.574661,-0.488672,-0.656479) + Old Polarization: (0.799641,0.16455,0.577492) + New Momentum Direction: (-0.574661,-0.488672,-0.656479) + New Polarization: (0.799641,-0.16455,-0.577492) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.590881,-0.574259,0.566644) - Old Polarization: (0.302543,-0.808841,-0.504226) - New Momentum Direction: (-0.590881,-0.574259,-0.566644) - New Polarization: (-0.302543,0.808841,-0.504226) + Old Momentum Direction: (-0.574661,-0.488672,-0.656479) + Old Polarization: (0.799641,-0.16455,-0.577492) + New Momentum Direction: (-0.574661,0.488672,-0.656479) + New Polarization: (-0.799641,-0.16455,0.577492) *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1179, parentID 1) is processed with stopping code 2 -### pop requested out of 114 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.987993,-0.076857,0.134029) - Old Polarization: (0.139972,0.0779954,-0.987079) - New Momentum Direction: (0.978029,-0.103703,0.180844) - New Polarization: (-0.19702,-0.743322,0.639261) - *** FresnelRefraction *** -Track (trackID 1178, parentID 1) is processed with stopping code 2 -### pop requested out of 113 stacked tracks. +### pop requested out of 92 stacked tracks. ** Photon absorbed! ** -Track (trackID 1177, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. +Track (trackID 1178, parentID 1) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.526817,-0.735223,0.426511) - Old Polarization: (-0.375156,-0.651398,-0.659499) - New Momentum Direction: (0.713201,-0.397423,0.577407) - New Polarization: (0.423228,0.90079,0.097241) + Old Momentum Direction: (0.806784,-0.10553,-0.581346) + Old Polarization: (-0.541245,0.262616,-0.798803) + New Momentum Direction: (0.594686,-0.143593,-0.791031) + New Polarization: (-0.768508,0.18742,-0.611775) + *** FresnelRefraction *** +Track (trackID 1177, parentID 1) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.735794,-0.386318,-0.556207) + Old Polarization: (-0.619477,-0.0521371,-0.783281) + New Momentum Direction: (0.404903,-0.521605,-0.750987) + New Polarization: (-0.875798,0.0147675,-0.482453) *** FresnelRefraction *** Track (trackID 1176, parentID 1) is processed with stopping code 2 -### pop requested out of 111 stacked tracks. +### pop requested out of 89 stacked tracks. ** Photon absorbed! ** Track (trackID 1175, parentID 1) is processed with stopping code 2 -### pop requested out of 110 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1174, parentID 1) is processed with stopping code 2 -### pop requested out of 109 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.454867,0.579482,0.676237) - Old Polarization: (-0.45483,0.804002,-0.383028) - New Momentum Direction: (0.616199,0.785013,0.0636558) - New Polarization: (-0.51133,0.460222,-0.725766) - *** FresnelRefraction *** -Track (trackID 1173, parentID 1) is processed with stopping code 2 -### pop requested out of 108 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.982634,-0.140373,0.121353) - Old Polarization: (0.123731,0.00830653,-0.992281) - New Momentum Direction: (0.967612,-0.190973,0.165096) - New Polarization: (-0.195248,-0.980704,0.00991389) - *** FresnelRefraction *** -Track (trackID 1172, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.939416,-0.315304,0.134467) - Old Polarization: (0.0783494,-0.184387,-0.979726) - New Momentum Direction: (0.885037,-0.428206,0.182616) - New Polarization: (-0.142585,-0.622781,-0.769294) - *** FresnelRefraction *** -Track (trackID 1171, parentID 1) is processed with stopping code 2 -### pop requested out of 106 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1170, parentID 1) is processed with stopping code 2 -### pop requested out of 105 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.614377,-0.704979,0.354324) - Old Polarization: (-0.278981,-0.61416,-0.738225) - New Momentum Direction: (0.83377,-0.271311,0.480852) - New Polarization: (0.39443,0.902125,-0.174914) - *** FresnelRefraction *** -Track (trackID 1169, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.411407,-0.743645,0.527007) - Old Polarization: (-0.503679,-0.667391,-0.548541) - New Momentum Direction: (0.554716,-0.432854,0.710583) - New Polarization: (0.233953,0.900712,0.366038) - *** FresnelRefraction *** -Track (trackID 1168, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1167, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1166, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1165, parentID 1) is processed with stopping code 2 -### pop requested out of 100 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.161658,-0.647124,0.745049) -Old Polarization: (-0.776983,-0.548923,-0.308189) -New Polarization: (-0.851581,0.146591,0.503311) -Polarization Change: (-0.851581,0.146591,0.503311) -New Momentum Direction: (-0.457773,-0.675797,-0.577705) -Momentum Change: (-0.457773,-0.675797,-0.577705) - Photon at Boundary! - Old Momentum Direction: (-0.457773,-0.675797,-0.577705) - Old Polarization: (-0.851581,0.146591,0.503311) - New Momentum Direction: (-0.457773,0.675797,-0.577705) - New Polarization: (0.851581,0.146591,-0.503311) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.457773,0.675797,-0.577705) - Old Polarization: (0.851581,0.146591,-0.503311) - New Momentum Direction: (-0.457773,0.675797,0.577705) - New Polarization: (-0.851581,-0.146591,-0.503311) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.457773,0.675797,0.577705) - Old Polarization: (-0.851581,-0.146591,-0.503311) - New Momentum Direction: (0.457773,0.675797,0.577705) - New Polarization: (-0.851581,0.146591,0.503311) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.457773,0.675797,0.577705) - Old Polarization: (-0.851581,0.146591,0.503311) - New Momentum Direction: (0.457773,-0.675797,0.577705) - New Polarization: (0.851581,0.146591,-0.503311) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1164, parentID 1) is processed with stopping code 2 -### pop requested out of 99 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.989669,-0.0294858,0.140308) - Old Polarization: (0.142984,0.130983,-0.981019) - New Momentum Direction: (0.981144,-0.0397496,0.189148) - New Polarization: (-0.192992,-0.254885,0.947517) - *** FresnelRefraction *** -Track (trackID 1163, parentID 1) is processed with stopping code 2 -### pop requested out of 98 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.961275,-0.240404,0.134743) - Old Polarization: (0.112191,-0.105213,-0.988101) - New Momentum Direction: (0.928542,-0.323831,0.181503) - New Polarization: (-0.191801,-0.837107,-0.512312) - *** FresnelRefraction *** -Track (trackID 1162, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.435907,-0.750251,0.4971) - Old Polarization: (-0.475446,-0.660941,-0.580611) - New Momentum Direction: (0.592698,-0.438025,0.675902) - New Polarization: (0.301683,0.89883,0.31795) - *** FresnelRefraction *** -Track (trackID 1161, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.893782,0.359113,0.268684) - Old Polarization: (0.0264762,0.55578,-0.830908) - New Momentum Direction: (0.792322,0.488507,0.365495) - New Polarization: (-0.0498217,0.648877,-0.759261) - *** FresnelRefraction *** -Track (trackID 1160, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.289869,-0.719127,0.631532) - Old Polarization: (-0.638609,-0.636814,-0.432025) - New Momentum Direction: (0.391617,-0.344485,0.853209) - New Polarization: (-0.115886,0.901423,0.417142) - *** FresnelRefraction *** -Track (trackID 1159, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0378886,-0.100339,0.994232) - Old Polarization: (-0.998107,0.0520443,-0.0327839) - New Momentum Direction: (-0.0514009,-0.136123,0.989358) - New Polarization: (-0.99725,-0.045968,-0.0581356) - *** FresnelRefraction *** -Track (trackID 1158, parentID 1) is processed with stopping code 2 -### pop requested out of 93 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.17114,0.421239,0.890656) - Old Polarization: (-0.766336,0.62507,-0.148378) - New Momentum Direction: (0.232575,0.572455,0.78626) - New Polarization: (-0.708165,0.653802,-0.266541) - *** FresnelRefraction *** -Track (trackID 1157, parentID 1) is processed with stopping code 2 -### pop requested out of 92 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.470915,-0.744446,0.473327) - Old Polarization: (-0.437098,-0.662952,-0.607816) - New Momentum Direction: (0.637003,-0.429289,0.640265) - New Polarization: (0.359447,0.900174,0.245938) - *** FresnelRefraction *** -Track (trackID 1156, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.37848,-0.746332,0.547487) - Old Polarization: (-0.538739,-0.658598,-0.525366) - New Momentum Direction: (0.513991,-0.427792,0.74351) - New Polarization: (0.161078,0.899484,0.406181) - *** FresnelRefraction *** -Track (trackID 1155, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1154, parentID 1) is processed with stopping code 2 -### pop requested out of 89 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.626968,0.574236,0.526463) - Old Polarization: (-0.265678,0.792873,-0.548423) - New Momentum Direction: (-0.626968,0.574236,0.526463) - New Polarization: (-0.265678,-0.792873,0.548423) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.626968,0.574236,0.526463) - Old Polarization: (-0.265678,-0.792873,0.548423) - New Momentum Direction: (-0.626968,-0.574236,0.526463) - New Polarization: (0.265678,-0.792873,-0.548423) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.626968,-0.574236,0.526463) - Old Polarization: (0.265678,-0.792873,-0.548423) - New Momentum Direction: (-0.626968,-0.574236,-0.526463) - New Polarization: (-0.265678,0.792873,-0.548423) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.626968,-0.574236,-0.526463) - Old Polarization: (-0.265678,0.792873,-0.548423) - New Momentum Direction: (0.626968,-0.574236,-0.526463) - New Polarization: (-0.265678,-0.792873,0.548423) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.626968,-0.574236,-0.526463) - Old Polarization: (-0.265678,-0.792873,0.548423) - New Momentum Direction: (0.626968,0.574236,-0.526463) - New Polarization: (0.265678,-0.792873,-0.548423) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.626968,0.574236,-0.526463) -Old Polarization: (0.265678,-0.792873,-0.548423) -New Polarization: (0.75858,-0.529841,-0.379244) -Polarization Change: (0.75858,-0.529841,-0.379244) -New Momentum Direction: (0.651328,0.632794,0.41874) -Momentum Change: (0.651328,0.632794,0.41874) - Photon at Boundary! - Old Momentum Direction: (0.651328,0.632794,0.41874) - Old Polarization: (0.75858,-0.529841,-0.379244) - New Momentum Direction: (-0.651328,0.632794,0.41874) - New Polarization: (0.75858,0.529841,0.379244) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.651328,0.632794,0.41874) - Old Polarization: (0.75858,0.529841,0.379244) - New Momentum Direction: (-0.651328,-0.632794,0.41874) - New Polarization: (-0.75858,0.529841,-0.379244) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.651328,-0.632794,0.41874) - Old Polarization: (-0.75858,0.529841,-0.379244) - New Momentum Direction: (-0.651328,-0.632794,-0.41874) - New Polarization: (0.75858,-0.529841,-0.379244) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1153, parentID 1) is processed with stopping code 2 ### pop requested out of 88 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.88579,-0.433461,0.165795) - Old Polarization: (0.0223669,-0.316961,-0.948175) - New Momentum Direction: (0.777911,-0.586907,0.224487) - New Polarization: (-0.0417695,-0.404758,-0.91347) + Old Momentum Direction: (0.538863,-0.824015,0.175002) + Old Polarization: (-0.840128,-0.540915,0.039948) + New Momentum Direction: (0.729563,-0.641561,0.236934) + New Polarization: (0.528871,0.748889,0.399325) *** FresnelRefraction *** -Track (trackID 1152, parentID 1) is processed with stopping code 2 +Track (trackID 1174, parentID 1) is processed with stopping code 2 ### pop requested out of 87 stacked tracks. ** Photon absorbed! ** -Track (trackID 1151, parentID 1) is processed with stopping code 2 +Track (trackID 1173, parentID 1) is processed with stopping code 2 ### pop requested out of 86 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.00997298,0.0416784,0.999081) - Old Polarization: (-0.977277,0.211153,-0.0185639) - New Momentum Direction: (-0.0134193,0.0560811,0.998336) - New Polarization: (-0.9428,0.331885,-0.0313163) + Old Momentum Direction: (0.559721,-0.828201,-0.0281898) + Old Polarization: (-0.816772,-0.545612,-0.187592) + New Momentum Direction: (0.757799,-0.651371,-0.0381658) + New Polarization: (0.633346,0.748372,-0.19701) *** FresnelRefraction *** -Track (trackID 1150, parentID 1) is processed with stopping code 2 +Track (trackID 1172, parentID 1) is processed with stopping code 2 ### pop requested out of 85 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1149, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.879913,0.232743,-0.414227) + Old Polarization: (-0.459356,0.639518,-0.616449) + New Momentum Direction: (0.764118,0.315988,-0.562384) + New Polarization: (-0.63367,0.530904,-0.562675) + *** FresnelRefraction *** +Track (trackID 1171, parentID 1) is processed with stopping code 2 ### pop requested out of 84 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0386599,-0.219176,0.974919) - Old Polarization: (-0.995321,-0.0780159,-0.057008) - New Momentum Direction: (-0.0526005,-0.298209,0.95305) - New Polarization: (-0.982375,-0.155965,-0.103021) + Old Momentum Direction: (0.58299,-0.791017,-0.185511) + Old Polarization: (-0.789188,-0.497041,-0.360738) + New Momentum Direction: (0.792952,-0.554582,-0.252322) + New Polarization: (0.33704,0.744254,-0.57662) *** FresnelRefraction *** -Track (trackID 1148, parentID 1) is processed with stopping code 2 +Track (trackID 1170, parentID 1) is processed with stopping code 2 ### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0553486,-0.508895,0.859048) - Old Polarization: (-0.898104,-0.401316,-0.179872) - New Momentum Direction: (0.0748844,-0.688514,0.721347) - New Polarization: (-0.845517,-0.427346,-0.32012) - *** FresnelRefraction *** -Track (trackID 1147, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1169, parentID 1) is processed with stopping code 2 ### pop requested out of 82 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.97166,-0.196315,0.131669) - Old Polarization: (0.123029,-0.0556322,-0.990843) - New Momentum Direction: (0.947883,-0.264612,0.177476) - New Polarization: (-0.202705,-0.930581,-0.304843) - *** FresnelRefraction *** -Track (trackID 1146, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1168, parentID 1) is processed with stopping code 2 ### pop requested out of 81 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.369856,-0.743031,0.557773) - Old Polarization: (-0.548893,-0.659123,-0.514076) - New Momentum Direction: (0.500993,-0.422101,0.755538) - New Polarization: (0.132646,0.900134,0.414927) + Old Momentum Direction: (0.799487,0.31111,0.513839) + Old Polarization: (-0.549087,0.725365,0.415148) + New Momentum Direction: (0.577452,0.422849,0.69839) + New Polarization: (-0.779655,0.539437,0.318035) *** FresnelRefraction *** -Track (trackID 1145, parentID 1) is processed with stopping code 2 +Track (trackID 1167, parentID 1) is processed with stopping code 2 ### pop requested out of 80 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.980725,-0.14363,0.132475) - Old Polarization: (0.134317,0.00316512,-0.990933) - New Momentum Direction: (0.96476,-0.193423,0.1784) - New Polarization: (-0.207215,-0.976326,0.062048) + Old Momentum Direction: (0.546264,-0.836603,0.0411107) + Old Polarization: (-0.829799,-0.547204,-0.109549) + New Momentum Direction: (0.743167,-0.666765,0.0559292) + New Polarization: (0.667018,0.744853,0.0167333) *** FresnelRefraction *** -Track (trackID 1144, parentID 1) is processed with stopping code 2 +Track (trackID 1166, parentID 1) is processed with stopping code 2 ### pop requested out of 79 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1143, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.86629,0.12741,-0.483021) + Old Polarization: (-0.471221,0.529369,-0.705492) + New Momentum Direction: (0.740277,0.171473,-0.650066) + New Polarization: (-0.651381,0.422273,-0.630388) + *** FresnelRefraction *** +Track (trackID 1165, parentID 1) is processed with stopping code 2 ### pop requested out of 78 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.894421,-0.417762,0.159641) - Old Polarization: (0.0307638,-0.298641,-0.95387) - New Momentum Direction: (0.79529,-0.566292,0.216399) - New Polarization: (-0.0574152,-0.425713,-0.903035) + Old Momentum Direction: (0.79322,-0.173918,-0.583571) + Old Polarization: (-0.555191,0.1871,-0.810405) + New Momentum Direction: (0.566595,-0.235341,-0.789674) + New Polarization: (-0.785545,0.135065,-0.603885) *** FresnelRefraction *** -Track (trackID 1142, parentID 1) is processed with stopping code 2 +Track (trackID 1164, parentID 1) is processed with stopping code 2 ### pop requested out of 77 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.977703,-0.17067,0.12235) -Old Polarization: (0.119807,-0.0251581,-0.992478) -New Polarization: (-0.266393,-0.524429,-0.808708) -Polarization Change: (-0.266393,-0.524429,-0.808708) -New Momentum Direction: (0.529301,0.621604,-0.577451) -Momentum Change: (0.529301,0.621604,-0.577451) Photon at Boundary! - Old Momentum Direction: (0.529301,0.621604,-0.577451) - Old Polarization: (-0.266393,-0.524429,-0.808708) - New Momentum Direction: (-0.529301,0.621604,-0.577451) - New Polarization: (-0.266393,0.524429,0.808708) + Old Momentum Direction: (0.898364,0.430607,-0.0867145) + Old Polarization: (-0.43793,0.862738,-0.252783) + New Momentum Direction: (0.803582,0.583481,-0.1175) + New Polarization: (-0.59425,0.775399,-0.213595) + *** FresnelRefraction *** +Track (trackID 1163, parentID 1) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.817406,-0.0795699,-0.57054) + Old Polarization: (-0.527867,0.29311,-0.797147) + New Momentum Direction: (0.627183,-0.107584,-0.771406) + New Polarization: (-0.7438,0.211126,-0.634182) + *** FresnelRefraction *** +Track (trackID 1162, parentID 1) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.714479,-0.447921,-0.537482) + Old Polarization: (-0.643462,-0.119025,-0.756167) + New Momentum Direction: (0.317295,-0.607119,-0.728512) + New Polarization: (-0.913107,0.0118272,-0.407549) + *** FresnelRefraction *** +Track (trackID 1161, parentID 1) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.726035,0.0814042,0.682823) + Old Polarization: (-0.630464,0.475274,0.613702) + New Momentum Direction: (0.372712,0.109849,0.921422) + New Polarization: (-0.890444,0.321778,0.32182) + *** FresnelRefraction *** +Track (trackID 1160, parentID 1) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1159, parentID 1) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.564731,-0.823287,-0.0572506) + Old Polarization: (-0.811445,-0.541283,-0.220385) + New Momentum Direction: (0.764021,-0.640525,-0.077454) + New Polarization: (0.599618,0.749237,-0.281251) + *** FresnelRefraction *** +Track (trackID 1158, parentID 1) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.897003,0.441464,-0.0222454) + Old Polarization: (-0.437852,0.880512,-0.181616) + New Momentum Direction: (0.802356,0.59609,-0.0300371) + New Polarization: (-0.593837,0.792252,-0.140337) + *** FresnelRefraction *** +Track (trackID 1157, parentID 1) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.649015,-0.655049,-0.386899) + Old Polarization: (-0.717872,-0.358935,-0.596511) + New Momentum Direction: (0.649015,0.655049,-0.386899) + New Polarization: (0.717872,-0.358935,0.596511) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.529301,0.621604,-0.577451) - Old Polarization: (-0.266393,0.524429,0.808708) - New Momentum Direction: (-0.529301,-0.621604,-0.577451) - New Polarization: (0.266393,0.524429,-0.808708) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.529301,-0.621604,-0.577451) - Old Polarization: (0.266393,0.524429,-0.808708) - New Momentum Direction: (-0.529301,-0.621604,0.577451) - New Polarization: (-0.266393,-0.524429,-0.808708) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.529301,-0.621604,0.577451) - Old Polarization: (-0.266393,-0.524429,-0.808708) - New Momentum Direction: (0.529301,-0.621604,0.577451) - New Polarization: (-0.266393,0.524429,0.808708) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.529301,-0.621604,0.577451) - Old Polarization: (-0.266393,0.524429,0.808708) - New Momentum Direction: (0.529301,0.621604,0.577451) - New Polarization: (0.266393,0.524429,-0.808708) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.529301,0.621604,0.577451) - Old Polarization: (0.266393,0.524429,-0.808708) - New Momentum Direction: (0.529301,0.621604,-0.577451) - New Polarization: (-0.266393,-0.524429,-0.808708) + Old Momentum Direction: (0.649015,0.655049,-0.386899) + Old Polarization: (0.717872,-0.358935,0.596511) + New Momentum Direction: (-0.649015,0.655049,-0.386899) + New Polarization: (0.717872,0.358935,-0.596511) *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1141, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.686175,0.550643,0.475349) - Old Polarization: (-0.199386,0.770799,-0.605074) - New Momentum Direction: (0.165127,0.746572,0.644487) - New Polarization: (-0.415961,0.645214,-0.640839) - *** FresnelRefraction *** -Track (trackID 1140, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.880207,0.37451,0.291508) -Old Polarization: (0.0208558,0.583115,-0.812122) -New Polarization: (-0.0397956,-0.928671,0.368762) -Polarization Change: (-0.0397956,-0.928671,0.368762) -New Momentum Direction: (-0.0234287,-0.368086,-0.929497) -Momentum Change: (-0.0234287,-0.368086,-0.929497) - Photon at Boundary! - Old Momentum Direction: (-0.0234287,-0.368086,-0.929497) - Old Polarization: (-0.0397956,-0.928671,0.368762) - New Momentum Direction: (-0.0315752,-0.496073,-0.867706) - New Polarization: (-0.0409825,-0.866766,0.497027) - *** FresnelRefraction *** -Track (trackID 1139, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0348531,-0.169345,0.98494) - Old Polarization: (-0.998909,-0.0247633,-0.039605) - New Momentum Direction: (-0.0471273,-0.228984,0.972289) - New Polarization: (-0.992727,-0.0972147,-0.071013) - *** FresnelRefraction *** -Track (trackID 1138, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.812696,0.462757,0.354092) - Old Polarization: (-0.060895,0.671811,-0.738215) - New Momentum Direction: (0.611584,0.628336,0.48079) - New Polarization: (-0.116546,0.672605,-0.730766) - *** FresnelRefraction *** -Track (trackID 1137, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0842398,0.304361,0.948824) - Old Polarization: (-0.863166,0.498032,-0.0831225) - New Momentum Direction: (0.114315,0.413024,0.903517) - New Polarization: (-0.818772,0.55424,-0.149767) - *** FresnelRefraction *** -Track (trackID 1136, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.950501,-0.283121,0.128022) - Old Polarization: (0.0885444,-0.148132,-0.984996) - New Momentum Direction: (0.906263,-0.385168,0.174165) - New Polarization: (-0.159486,-0.693119,-0.702958) - *** FresnelRefraction *** -Track (trackID 1135, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.990922,-0.00249751,0.134418) - Old Polarization: (0.133093,0.159438,-0.978195) - New Momentum Direction: (0.983139,-0.00339701,0.182829) - New Polarization: (-0.181866,0.0860127,0.979554) - *** FresnelRefraction *** -Track (trackID 1134, parentID 1) is processed with stopping code 2 +Track (trackID 1156, parentID 1) is processed with stopping code 2 ### pop requested out of 69 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.842796,0.426969,0.327709) - Old Polarization: (-0.0238387,0.637874,-0.769772) - New Momentum Direction: (0.685962,0.577218,0.443029) - New Polarization: (-0.044885,0.641268,-0.766003) + Old Momentum Direction: (0.824449,0.349015,0.445502) + Old Polarization: (-0.51875,0.780734,0.348359) + New Momentum Direction: (0.647864,0.469778,0.59965) + New Polarization: (-0.72703,0.616295,0.302668) + *** FresnelRefraction *** +Track (trackID 1155, parentID 1) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.653528,-0.173002,0.736866) + Old Polarization: (-0.712405,0.188284,0.676038) + New Momentum Direction: (0.881181,-0.233266,0.411227) + New Polarization: (0.397483,-0.105429,-0.911533) + *** FresnelRefraction *** +Track (trackID 1154, parentID 1) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1153, parentID 1) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.672886,-0.569042,-0.472668) + Old Polarization: (-0.689574,-0.251198,-0.679255) + New Momentum Direction: (-0.672886,-0.569042,-0.472668) + New Polarization: (-0.689574,0.251198,0.679255) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.672886,-0.569042,-0.472668) + Old Polarization: (-0.689574,0.251198,0.679255) + New Momentum Direction: (-0.672886,0.569042,-0.472668) + New Polarization: (0.689574,0.251198,-0.679255) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.672886,0.569042,-0.472668) + Old Polarization: (0.689574,0.251198,-0.679255) + New Momentum Direction: (-0.672886,0.569042,0.472668) + New Polarization: (-0.689574,-0.251198,-0.679255) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1152, parentID 1) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.807792,0.325356,0.491545) + Old Polarization: (-0.539235,0.744707,0.393239) + New Momentum Direction: (0.601354,0.440997,0.666255) + New Polarization: (-0.762788,0.56502,0.314495) + *** FresnelRefraction *** +Track (trackID 1151, parentID 1) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.543702,-0.823467,0.162146) + Old Polarization: (-0.836606,-0.547166,0.0264673) + New Momentum Direction: (0.732992,-0.644157,0.218597) + New Polarization: (0.550733,0.750588,0.365117) + *** FresnelRefraction *** +Track (trackID 1150, parentID 1) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.887951,0.258909,-0.380144) + Old Polarization: (-0.447744,0.675653,-0.585678) + New Momentum Direction: (0.784132,0.349345,-0.512928) + New Polarization: (-0.611719,0.574371,-0.543965) + *** FresnelRefraction *** +Track (trackID 1149, parentID 1) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1148, parentID 1) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1147, parentID 1) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1146, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.53652,-0.827694,0.164525) + Old Polarization: (-0.841298,-0.53987,0.0275108) + New Momentum Direction: (0.728742,-0.6473,0.22347) + New Polarization: (0.548844,0.747251,0.374681) + *** FresnelRefraction *** +Track (trackID 1145, parentID 1) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1144, parentID 1) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.899048,0.381516,-0.214848) + Old Polarization: (-0.437274,0.807534,-0.39583) + New Momentum Direction: (0.804881,0.517082,-0.291191) + New Polarization: (-0.593023,0.719128,-0.362186) + *** FresnelRefraction *** +Track (trackID 1143, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.583418,-0.790956,-0.184426) + Old Polarization: (-0.788936,-0.497992,-0.359979) + New Momentum Direction: (0.792991,-0.555273,-0.250675) + New Polarization: (0.339585,0.744474,-0.57484) + *** FresnelRefraction *** +Track (trackID 1142, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.862042,0.431071,0.266574) + Old Polarization: (-0.47771,0.866774,0.143167) + New Momentum Direction: (0.728319,0.582804,0.360405) + New Polarization: (-0.663882,0.730425,0.16044) + *** FresnelRefraction *** +Track (trackID 1141, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.539334,-0.683855,0.491387) + Old Polarization: (-0.838224,-0.38011,0.39102) + New Momentum Direction: (0.539334,0.683855,0.491387) + New Polarization: (0.392986,0.311692,-0.865107) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.539334,0.683855,0.491387) + Old Polarization: (0.392986,0.311692,-0.865107) + New Momentum Direction: (-0.539334,0.683855,0.491387) + New Polarization: (0.392986,-0.311692,0.865107) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1140, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.532045,-0.779705,0.330134) + Old Polarization: (-0.846705,-0.487908,0.212218) + New Momentum Direction: (0.721981,-0.527304,0.447989) + New Polarization: (0.133816,0.741653,0.657301) + *** FresnelRefraction *** +Track (trackID 1139, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.882098,0.243651,-0.403158) + Old Polarization: (-0.456657,0.65235,-0.6049) + New Momentum Direction: (0.769089,0.330586,-0.547005) + New Polarization: (-0.628726,0.545192,-0.554499) + *** FresnelRefraction *** +Track (trackID 1138, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1137, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1136, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.867862,0.441285,0.228218) + Old Polarization: (-0.471674,0.876133,0.0995729) + New Momentum Direction: (0.740039,0.597402,0.308956) + New Polarization: (-0.654207,0.745987,0.124565) + *** FresnelRefraction *** +Track (trackID 1135, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.858785,0.100384,-0.502405) + Old Polarization: (-0.480862,0.496332,-0.72279) + New Momentum Direction: (0.722193,0.135526,-0.678285) + New Polarization: (-0.668544,0.388331,-0.63423) + *** FresnelRefraction *** +Track (trackID 1134, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.545531,-0.836555,0.0507068) + Old Polarization: (-0.830768,-0.547755,-0.0989438) + New Momentum Direction: (0.74189,-0.666967,0.0689582) + New Polarization: (0.665448,0.745,0.046417) *** FresnelRefraction *** Track (trackID 1133, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.681274,-0.553784,-0.478738) + Old Polarization: (-0.680685,-0.238629,-0.692621) + New Momentum Direction: (-0.681274,-0.553784,-0.478738) + New Polarization: (-0.651762,0.161128,0.74111) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.681274,-0.553784,-0.478738) + Old Polarization: (-0.651762,0.161128,0.74111) + New Momentum Direction: (-0.681274,0.553784,-0.478738) + New Polarization: (0.651762,0.161128,-0.74111) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.681274,0.553784,-0.478738) + Old Polarization: (0.651762,0.161128,-0.74111) + New Momentum Direction: (-0.681274,0.553784,0.478738) + New Polarization: (-0.651762,-0.161128,-0.74111) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1132, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. +### pop requested out of 45 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.00613899,0.143119,0.989686) - Old Polarization: (-0.946831,0.319199,-0.0402865) - New Momentum Direction: (0.00834831,0.194625,0.980842) - New Polarization: (-0.912341,0.403014,-0.0722035) + Old Momentum Direction: (0.755972,0.177341,0.630124) + Old Polarization: (-0.596826,0.582142,0.552186) + New Momentum Direction: (0.466287,0.23966,0.851551) + New Polarization: (-0.844825,0.406152,0.348297) *** FresnelRefraction *** Track (trackID 1131, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. +### pop requested out of 44 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.94914,0.232071,0.212782) - Old Polarization: (0.0982143,0.423863,-0.900385) - New Momentum Direction: (0.905543,0.312707,0.286715) - New Polarization: (-0.172643,0.888933,-0.424255) + Old Momentum Direction: (0.74309,0.152455,0.651594) + Old Polarization: (-0.611652,0.549742,0.568915) + New Momentum Direction: (0.416797,0.207089,0.885096) + New Polarization: (-0.870674,0.370706,0.32327) *** FresnelRefraction *** Track (trackID 1130, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. +### pop requested out of 43 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.628025,-0.254733,0.73532) +Old Polarization: (-0.740034,0.0967621,0.665572) +New Polarization: (0.55141,0.152589,-0.820161) +Polarization Change: (0.55141,0.152589,-0.820161) +New Momentum Direction: (0.646875,-0.69901,0.304858) +Momentum Change: (0.646875,-0.69901,0.304858) Photon at Boundary! - Old Momentum Direction: (0.465996,-0.748586,0.471664) - Old Polarization: (-0.442427,-0.658797,-0.608477) - New Momentum Direction: (0.633734,-0.432357,0.641442) - New Polarization: (0.357592,0.899041,0.252693) - *** FresnelRefraction *** -Track (trackID 1129, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.682196,0.553037,0.478288) - Old Polarization: (-0.20418,0.77221,-0.601666) - New Momentum Direction: (-0.682196,0.553037,0.478288) - New Polarization: (-0.163562,-0.752991,0.637379) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.682196,0.553037,0.478288) - Old Polarization: (-0.163562,-0.752991,0.637379) - New Momentum Direction: (-0.682196,-0.553037,0.478288) - New Polarization: (0.163562,-0.752991,-0.637379) + Old Momentum Direction: (0.646875,-0.69901,0.304858) + Old Polarization: (0.55141,0.152589,-0.820161) + New Momentum Direction: (-0.646875,-0.69901,0.304858) + New Polarization: (0.55141,-0.152589,0.820161) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.682196,-0.553037,0.478288) - Old Polarization: (0.163562,-0.752991,-0.637379) - New Momentum Direction: (-0.682196,-0.553037,-0.478288) - New Polarization: (-0.163562,0.752991,-0.637379) + Old Momentum Direction: (-0.646875,-0.69901,0.304858) + Old Polarization: (0.55141,-0.152589,0.820161) + New Momentum Direction: (-0.646875,-0.69901,-0.304858) + New Polarization: (-0.55141,0.152589,0.820161) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1129, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.565144,-0.540925,0.622907) + Old Polarization: (-0.810604,-0.223688,0.541188) + New Momentum Direction: (0.565144,-0.540925,-0.622907) + New Polarization: (0.810604,0.223688,0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565144,-0.540925,-0.622907) + Old Polarization: (0.810604,0.223688,0.541188) + New Momentum Direction: (-0.565144,-0.540925,-0.622907) + New Polarization: (0.810604,-0.223688,-0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565144,-0.540925,-0.622907) + Old Polarization: (0.810604,-0.223688,-0.541188) + New Momentum Direction: (-0.565144,0.540925,-0.622907) + New Polarization: (-0.810604,-0.223688,0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565144,0.540925,-0.622907) + Old Polarization: (-0.810604,-0.223688,0.541188) + New Momentum Direction: (-0.565144,0.540925,0.622907) + New Polarization: (0.810604,0.223688,0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565144,0.540925,0.622907) + Old Polarization: (0.810604,0.223688,0.541188) + New Momentum Direction: (0.565144,0.540925,0.622907) + New Polarization: (0.810604,-0.223688,-0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565144,0.540925,0.622907) + Old Polarization: (0.810604,-0.223688,-0.541188) + New Momentum Direction: (0.565144,-0.540925,0.622907) + New Polarization: (-0.810604,-0.223688,0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565144,-0.540925,0.622907) + Old Polarization: (-0.810604,-0.223688,0.541188) + New Momentum Direction: (0.565144,-0.540925,-0.622907) + New Polarization: (0.810604,0.223688,0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565144,-0.540925,-0.622907) + Old Polarization: (0.810604,0.223688,0.541188) + New Momentum Direction: (-0.565144,-0.540925,-0.622907) + New Polarization: (0.810604,-0.223688,-0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565144,-0.540925,-0.622907) + Old Polarization: (0.810604,-0.223688,-0.541188) + New Momentum Direction: (-0.565144,0.540925,-0.622907) + New Polarization: (-0.810604,-0.223688,0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565144,0.540925,-0.622907) + Old Polarization: (-0.810604,-0.223688,0.541188) + New Momentum Direction: (-0.565144,0.540925,0.622907) + New Polarization: (0.810604,0.223688,0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.565144,0.540925,0.622907) + Old Polarization: (0.810604,0.223688,0.541188) + New Momentum Direction: (0.565144,0.540925,0.622907) + New Polarization: (0.810604,-0.223688,-0.541188) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.565144,0.540925,0.622907) + Old Polarization: (0.810604,-0.223688,-0.541188) + New Momentum Direction: (0.565144,-0.540925,0.622907) + New Polarization: (-0.810604,-0.223688,0.541188) *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1128, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. +### pop requested out of 41 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.136622,0.376562,0.916262) - Old Polarization: (-0.806633,0.579202,-0.117763) - New Momentum Direction: (0.185133,0.510271,0.839851) - New Polarization: (-0.75456,0.621327,-0.211169) + Old Momentum Direction: (0.732293,-0.398763,-0.552028) + Old Polarization: (-0.623411,-0.0663258,-0.779076) + New Momentum Direction: (0.393834,-0.53824,-0.745113) + New Polarization: (-0.88095,0.0103348,-0.473097) *** FresnelRefraction *** Track (trackID 1127, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.00627741,0.0903025,0.995895) -Old Polarization: (-0.964421,0.262677,-0.0298972) -New Polarization: (0.948904,-0.118678,-0.292397) -Polarization Change: (0.948904,-0.118678,-0.292397) -New Momentum Direction: (0.214938,-0.43535,0.874227) -Momentum Change: (0.214938,-0.43535,0.874227) +### pop requested out of 40 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.214938,-0.43535,0.874227) - Old Polarization: (0.948904,-0.118678,-0.292397) - New Momentum Direction: (0.291303,-0.590026,0.753002) - New Polarization: (0.860655,-0.181995,-0.475554) + Old Momentum Direction: (0.819009,-0.0579062,-0.570851) + Old Polarization: (-0.52745,0.315671,-0.788763) + New Momentum Direction: (0.625823,-0.0787145,-0.775983) + New Polarization: (-0.746564,0.227575,-0.625182) *** FresnelRefraction *** Track (trackID 1126, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. +### pop requested out of 39 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.379095,-0.73974,0.555943) - Old Polarization: (-0.540058,-0.664722,-0.516219) - New Momentum Direction: (0.510626,-0.422508,0.748832) - New Polarization: (0.148189,0.901147,0.407398) - *** FresnelRefraction *** + Old Momentum Direction: (0.571831,-0.533748,0.622995) + Old Polarization: (-0.805446,-0.221077,0.549892) + New Momentum Direction: (0.571831,-0.533748,-0.622995) + New Polarization: (0.805446,0.221077,0.549892) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.571831,-0.533748,-0.622995) + Old Polarization: (0.805446,0.221077,0.549892) + New Momentum Direction: (-0.571831,-0.533748,-0.622995) + New Polarization: (0.805446,-0.221077,-0.549892) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.571831,-0.533748,-0.622995) + Old Polarization: (0.805446,-0.221077,-0.549892) + New Momentum Direction: (-0.571831,0.533748,-0.622995) + New Polarization: (-0.805446,-0.221077,0.549892) + *** TotalInternalReflection *** + +** Photon absorbed! ** Track (trackID 1125, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.538487,-0.776056,0.328282) + Old Polarization: (-0.842623,-0.493949,0.214478) + New Momentum Direction: (0.725775,-0.526764,0.44246) + New Polarization: (0.139887,0.742743,0.654801) + *** FresnelRefraction *** Track (trackID 1124, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. +### pop requested out of 37 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.472434,0.578999,0.664505) - Old Polarization: (-0.435437,0.80884,-0.395186) - New Momentum Direction: (0.472434,0.578999,-0.664505) - New Polarization: (0.435437,-0.80884,-0.395186) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.472434,0.578999,-0.664505) - Old Polarization: (0.435437,-0.80884,-0.395186) - New Momentum Direction: (0.472434,-0.578999,-0.664505) - New Polarization: (-0.435437,-0.80884,0.395186) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.472434,-0.578999,-0.664505) - Old Polarization: (-0.435437,-0.80884,0.395186) - New Momentum Direction: (-0.472434,-0.578999,-0.664505) - New Polarization: (-0.435437,0.80884,-0.395186) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.472434,-0.578999,-0.664505) - Old Polarization: (-0.435437,0.80884,-0.395186) - New Momentum Direction: (-0.472434,-0.578999,0.664505) - New Polarization: (0.435437,-0.80884,-0.395186) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.705242,-0.470172,-0.530633) + Old Polarization: (-0.653696,-0.141518,-0.743407) + New Momentum Direction: (0.265199,-0.639434,-0.721661) + New Polarization: (-0.931153,0.0244085,-0.363811) + *** FresnelRefraction *** Track (trackID 1123, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. +### pop requested out of 36 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.276721,-0.719677,0.636781) - Old Polarization: (-0.650327,-0.628107,-0.427266) - New Momentum Direction: (0.376081,-0.331059,0.865426) - New Polarization: (-0.14526,0.90138,0.407938) + Old Momentum Direction: (0.896843,0.441756,-0.0229035) + Old Polarization: (-0.438213,0.8802,-0.182256) + New Momentum Direction: (0.801852,0.596721,-0.0309379) + New Polarization: (-0.594542,0.791615,-0.140947) *** FresnelRefraction *** Track (trackID 1122, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. +### pop requested out of 35 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.973165,-0.194388,0.123141) - Old Polarization: (0.115273,-0.0513222,-0.992007) - New Momentum Direction: (0.949899,-0.264038,0.167262) - New Polarization: (-0.193619,-0.917181,-0.348269) + Old Momentum Direction: (0.754637,0.16503,0.635049) + Old Polarization: (-0.598043,0.571174,0.562232) + New Momentum Direction: (-0.754637,0.16503,0.635049) + New Polarization: (-0.311448,-0.941965,-0.125309) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.754637,0.16503,0.635049) + Old Polarization: (-0.311448,-0.941965,-0.125309) + New Momentum Direction: (-0.754637,0.16503,-0.635049) + New Polarization: (0.311448,0.941965,-0.125309) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.754637,0.16503,-0.635049) + Old Polarization: (0.311448,0.941965,-0.125309) + New Momentum Direction: (-0.467639,0.22232,-0.855505) + New Polarization: (0.54311,0.835875,-0.0796574) *** FresnelRefraction *** Track (trackID 1121, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1120, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. +### pop requested out of 34 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0164895,0.0371031,0.999175) - Old Polarization: (-0.978564,0.20457,-0.0237458) - New Momentum Direction: (-0.0222956,0.0501676,0.998492) - New Polarization: (-0.937385,0.346179,-0.0383243) + Old Momentum Direction: (0.813358,-0.0799808,-0.576239) + Old Polarization: (-0.533848,0.291036,-0.793917) + New Momentum Direction: (0.61153,-0.108777,-0.783708) + New Polarization: (-0.75681,0.208519,-0.619483) + *** FresnelRefraction *** +Track (trackID 1120, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.895068,0.444493,-0.0357655) + Old Polarization: (-0.442462,0.875263,-0.195301) + New Momentum Direction: (0.795931,0.603437,-0.0485546) + New Polarization: (-0.602908,0.782868,-0.153689) *** FresnelRefraction *** Track (trackID 1119, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0200665,-0.00920967,0.999756) - Old Polarization: (-0.987915,0.1539,-0.0184111) - New Momentum Direction: (-0.0270157,-0.0123991,0.999558) - New Polarization: (-0.999284,0.0268198,-0.0266756) - *** FresnelRefraction *** +### pop requested out of 32 stacked tracks. + +** Photon absorbed! ** Track (trackID 1118, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. +### pop requested out of 31 stacked tracks. ** Photon absorbed! ** Track (trackID 1117, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.139459,-0.621986,0.770509) - Old Polarization: (-0.803942,-0.525404,-0.278617) - New Momentum Direction: (0.188876,-0.842386,0.50469) - New Polarization: (-0.735707,-0.461796,-0.495459) - *** FresnelRefraction *** -Track (trackID 1116, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.534184,-0.73435,0.418781) - Old Polarization: (-0.367229,-0.647777,-0.667478) - New Momentum Direction: (0.724371,-0.390895,0.56788) - New Polarization: (0.428109,0.9007,0.0739058) - *** FresnelRefraction *** -Track (trackID 1115, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.647261,0.568716,0.507558) - Old Polarization: (-0.24379,0.785325,-0.569062) - New Momentum Direction: (-0.647261,0.568716,0.507558) - New Polarization: (-0.24379,-0.785325,0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647261,0.568716,0.507558) - Old Polarization: (-0.24379,-0.785325,0.569062) - New Momentum Direction: (-0.647261,-0.568716,0.507558) - New Polarization: (0.24379,-0.785325,-0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647261,-0.568716,0.507558) - Old Polarization: (0.24379,-0.785325,-0.569062) - New Momentum Direction: (-0.647261,-0.568716,-0.507558) - New Polarization: (-0.24379,0.785325,-0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647261,-0.568716,-0.507558) - Old Polarization: (-0.24379,0.785325,-0.569062) - New Momentum Direction: (0.647261,-0.568716,-0.507558) - New Polarization: (-0.24379,-0.785325,0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.647261,-0.568716,-0.507558) - Old Polarization: (-0.24379,-0.785325,0.569062) - New Momentum Direction: (0.647261,0.568716,-0.507558) - New Polarization: (0.24379,-0.785325,-0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.647261,0.568716,-0.507558) - Old Polarization: (0.24379,-0.785325,-0.569062) - New Momentum Direction: (0.647261,0.568716,0.507558) - New Polarization: (-0.24379,0.785325,-0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.647261,0.568716,0.507558) - Old Polarization: (-0.24379,0.785325,-0.569062) - New Momentum Direction: (-0.647261,0.568716,0.507558) - New Polarization: (-0.24379,-0.785325,0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647261,0.568716,0.507558) - Old Polarization: (-0.24379,-0.785325,0.569062) - New Momentum Direction: (-0.647261,-0.568716,0.507558) - New Polarization: (0.24379,-0.785325,-0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647261,-0.568716,0.507558) - Old Polarization: (0.24379,-0.785325,-0.569062) - New Momentum Direction: (-0.647261,-0.568716,-0.507558) - New Polarization: (-0.24379,0.785325,-0.569062) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.647261,-0.568716,-0.507558) - Old Polarization: (-0.24379,0.785325,-0.569062) - New Momentum Direction: (0.647261,-0.568716,-0.507558) - New Polarization: (-0.24379,-0.785325,0.569062) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1114, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.93904,0.260324,0.224577) - Old Polarization: (0.0859287,0.454766,-0.886456) - New Momentum Direction: (0.886014,0.351074,0.302864) - New Polarization: (-0.153608,0.838573,-0.522685) - *** FresnelRefraction *** -Track (trackID 1113, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.977191,0.126678,0.170442) - Old Polarization: (0.125299,0.304072,-0.944373) - New Momentum Direction: (0.957888,0.171285,0.23046) - New Polarization: (-0.202128,0.972286,0.117495) - *** FresnelRefraction *** -Track (trackID 1112, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1111, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0206898,0.170055,0.985217) - Old Polarization: (-0.935389,0.351237,-0.0409823) - New Momentum Direction: (0.0280214,0.230315,0.972713) - New Polarization: (-0.904205,0.420715,-0.0735676) - *** FresnelRefraction *** -Track (trackID 1110, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.970915,0.163237,0.175149) - Old Polarization: (0.111044,0.34109,-0.933449) - New Momentum Direction: (0.945478,0.22205,0.238253) - New Polarization: (-0.189428,0.970008,-0.152318) - *** FresnelRefraction *** -Track (trackID 1109, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0069971,-0.416078,0.909302) - Old Polarization: (-0.946952,-0.294929,-0.127667) - New Momentum Direction: (0.00950633,-0.565288,0.824839) - New Polarization: (-0.908044,-0.350326,-0.229624) - *** FresnelRefraction *** -Track (trackID 1108, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.97463,-0.184703,0.126413) - Old Polarization: (0.12078,-0.0414822,-0.991812) - New Momentum Direction: (0.952976,-0.250083,0.17116) - New Polarization: (-0.199011,-0.942388,-0.268886) - *** FresnelRefraction *** -Track (trackID 1107, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.31683,-0.731218,0.604102) - Old Polarization: (-0.607448,-0.645586,-0.462846) - New Momentum Direction: (0.429291,-0.381727,0.818531) - New Polarization: (-0.0249455,0.900934,0.433239) - *** FresnelRefraction *** -Track (trackID 1106, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0223014,-0.303699,0.952507) - Old Polarization: (-0.981891,-0.172631,-0.0780313) - New Momentum Direction: (-0.0302308,-0.41168,0.910827) - New Polarization: (-0.960518,-0.240172,-0.140434) - *** FresnelRefraction *** -Track (trackID 1105, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.563926,0.580546,0.587328) - Old Polarization: (-0.333463,0.810719,-0.481183) - New Momentum Direction: (0.563926,0.580546,-0.587328) - New Polarization: (0.333463,-0.810719,-0.481183) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.563926,0.580546,-0.587328) - Old Polarization: (0.333463,-0.810719,-0.481183) - New Momentum Direction: (0.563926,-0.580546,-0.587328) - New Polarization: (-0.333463,-0.810719,0.481183) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.563926,-0.580546,-0.587328) - Old Polarization: (-0.333463,-0.810719,0.481183) - New Momentum Direction: (-0.563926,-0.580546,-0.587328) - New Polarization: (-0.333463,0.810719,-0.481183) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.563926,-0.580546,-0.587328) - Old Polarization: (-0.333463,0.810719,-0.481183) - New Momentum Direction: (-0.563926,-0.580546,0.587328) - New Polarization: (0.333463,-0.810719,-0.481183) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.563926,-0.580546,0.587328) - Old Polarization: (0.333463,-0.810719,-0.481183) - New Momentum Direction: (-0.563926,0.580546,0.587328) - New Polarization: (-0.333463,-0.810719,0.481183) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.563926,0.580546,0.587328) - Old Polarization: (-0.333463,-0.810719,0.481183) - New Momentum Direction: (0.563926,0.580546,0.587328) - New Polarization: (-0.333463,0.810719,-0.481183) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.563926,0.580546,0.587328) -Old Polarization: (-0.333463,0.810719,-0.481183) -New Polarization: (0.209383,0.207756,-0.955508) -Polarization Change: (0.209383,0.207756,-0.955508) -New Momentum Direction: (-0.542898,0.837423,0.0631141) -Momentum Change: (-0.542898,0.837423,0.0631141) - Photon at Boundary! - Old Momentum Direction: (-0.542898,0.837423,0.0631141) - Old Polarization: (0.209383,0.207756,-0.955508) - New Momentum Direction: (0.542898,0.837423,0.0631141) - New Polarization: (0.209383,-0.207756,0.955508) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.542898,0.837423,0.0631141) - Old Polarization: (0.209383,-0.207756,0.955508) - New Momentum Direction: (0.542898,-0.837423,0.0631141) - New Polarization: (0.172205,0.0374525,-0.984349) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.542898,-0.837423,0.0631141) - Old Polarization: (0.172205,0.0374525,-0.984349) - New Momentum Direction: (-0.542898,-0.837423,0.0631141) - New Polarization: (0.172205,-0.0374525,0.984349) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.542898,-0.837423,0.0631141) - Old Polarization: (0.172205,-0.0374525,0.984349) - New Momentum Direction: (-0.542898,0.837423,0.0631141) - New Polarization: (-0.125017,-0.00627387,-0.992135) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.542898,0.837423,0.0631141) - Old Polarization: (-0.125017,-0.00627387,-0.992135) - New Momentum Direction: (-0.732975,0.674897,0.0852114) - New Polarization: (-0.126188,-0.0118075,-0.991936) - *** FresnelRefraction *** -Track (trackID 1104, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.147499,-0.635407,0.757959) - Old Polarization: (-0.79192,-0.534983,-0.294375) - New Momentum Direction: (0.200545,-0.863923,0.461972) - New Polarization: (-0.720717,-0.449506,-0.527742) - *** FresnelRefraction *** -Track (trackID 1103, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0171962,-0.282879,0.959001) - Old Polarization: (-0.986115,-0.153646,-0.0630038) - New Momentum Direction: (-0.0231254,-0.380415,0.924527) - New Polarization: (-0.970384,-0.213889,-0.112281) - *** FresnelRefraction *** -Track (trackID 1102, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0167018,-0.340325,0.940159) - Old Polarization: (-0.972842,-0.211582,-0.0938722) - New Momentum Direction: (-0.0226943,-0.462431,0.886365) - New Polarization: (-0.945501,-0.278135,-0.169316) - *** FresnelRefraction *** -Track (trackID 1101, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.377522,0.549875,0.74506) - Old Polarization: (-0.542341,0.783459,-0.303411) - New Momentum Direction: (0.507489,0.739178,0.4428) - New Polarization: (-0.513627,0.672122,-0.533329) - *** FresnelRefraction *** -Track (trackID 1100, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.562728,-0.727094,0.393283) -Old Polarization: (-0.336239,-0.635951,-0.694629) -New Polarization: (0.0675699,-0.752285,-0.655363) -Polarization Change: (0.0675699,-0.752285,-0.655363) -New Momentum Direction: (0.964206,-0.119569,0.236664) -Momentum Change: (0.964206,-0.119569,0.236664) - Photon at Boundary! - Old Momentum Direction: (0.964206,-0.119569,0.236664) - Old Polarization: (0.0675699,-0.752285,-0.655363) - New Momentum Direction: (0.932786,-0.162533,0.321704) - New Polarization: (-0.122097,-0.982272,-0.142247) - *** FresnelRefraction *** -Track (trackID 1099, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0537021,-0.510499,0.8582) - Old Polarization: (-0.897789,-0.400921,-0.182308) - New Momentum Direction: (0.0728063,-0.692106,0.718115) - New Polarization: (-0.843918,-0.42647,-0.325463) - *** FresnelRefraction *** -Track (trackID 1098, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.78957,0.484317,0.376851) - Old Polarization: (-0.0862962,0.695631,-0.713197) - New Momentum Direction: (0.553003,0.657567,0.511658) - New Polarization: (-0.1661,0.688784,-0.705682) - *** FresnelRefraction *** -Track (trackID 1097, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.00483685,0.0813424,0.996674) - Old Polarization: (-0.966837,0.254126,-0.0254323) - New Momentum Direction: (-0.00653334,0.109873,0.993924) - New Polarization: (-0.936314,0.348312,-0.0446585) - *** FresnelRefraction *** -Track (trackID 1096, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.963951,-0.235489,0.123866) -Old Polarization: (0.103737,-0.0960757,-0.989954) -New Polarization: (0.513141,0.280865,0.81105) -Polarization Change: (0.513141,0.280865,0.81105) -New Momentum Direction: (-0.797346,-0.193767,0.571572) -Momentum Change: (-0.797346,-0.193767,0.571572) - -** Photon absorbed! ** -Track (trackID 1095, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.911378,-0.381566,0.154266) - Old Polarization: (0.0536333,-0.261519,-0.963707) - New Momentum Direction: (0.831346,-0.515238,0.208309) - New Polarization: (-0.0984141,-0.505382,-0.857265) + Old Momentum Direction: (0.85312,0.0920393,-0.513532) + Old Polarization: (-0.489309,0.482658,-0.726373) + New Momentum Direction: (0.70561,0.125009,-0.697486) + New Polarization: (-0.685019,0.372158,-0.626296) *** FresnelRefraction *** -Track (trackID 1094, parentID 1) is processed with stopping code 2 +Track (trackID 1116, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.012538,0.0834315,0.996435) - Old Polarization: (-0.966749,0.253538,-0.0333932) - New Momentum Direction: (-0.0170585,0.113512,0.99339) - New Polarization: (-0.927649,0.368908,-0.0580837) - *** FresnelRefraction *** -Track (trackID 1093, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1115, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. ** Photon absorbed! ** -Track (trackID 1092, parentID 1) is processed with stopping code 2 +Track (trackID 1114, parentID 1) is processed with stopping code 2 ### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.959358,-0.249622,0.131609) - Old Polarization: (0.105834,-0.114067,-0.98782) - New Momentum Direction: (0.92439,-0.337424,0.177901) - New Polarization: (-0.183808,-0.802687,-0.567369) + Old Momentum Direction: (0.810685,-0.0998297,-0.576909) + Old Polarization: (-0.53604,0.269753,-0.799934) + New Momentum Direction: (0.608302,-0.135333,-0.782083) + New Polarization: (-0.75803,0.193038,-0.622998) *** FresnelRefraction *** -Track (trackID 1091, parentID 1) is processed with stopping code 2 +Track (trackID 1113, parentID 1) is processed with stopping code 2 ### pop requested out of 26 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.942209,0.252044,0.220719) - Old Polarization: (0.0894915,0.44553,-0.890783) - New Momentum Direction: (0.892115,0.3399,0.297656) - New Polarization: (-0.159327,0.853162,-0.496719) + Old Momentum Direction: (0.652401,-0.165308,0.739626) + Old Polarization: (-0.713055,0.196746,0.672937) + New Momentum Direction: (0.882907,-0.223715,0.412828) + New Polarization: (0.402755,-0.091147,-0.910758) *** FresnelRefraction *** -Track (trackID 1090, parentID 1) is processed with stopping code 2 +Track (trackID 1112, parentID 1) is processed with stopping code 2 ### pop requested out of 25 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.369299,0.556966,0.743914) - Old Polarization: (-0.54907,0.776609,-0.308871) - New Momentum Direction: (0.501078,0.755711,0.421689) - New Polarization: (-0.518634,0.652308,-0.552732) + Old Momentum Direction: (0.547179,-0.833505,0.0765807) + Old Polarization: (-0.83092,-0.551938,-0.0702666) + New Momentum Direction: (0.740642,-0.663856,0.103657) + New Polarization: (0.652586,0.747464,0.124215) *** FresnelRefraction *** -Track (trackID 1089, parentID 1) is processed with stopping code 2 +Track (trackID 1111, parentID 1) is processed with stopping code 2 ### pop requested out of 24 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.232394,-0.698217,0.677116) - Old Polarization: (-0.698831,-0.604074,-0.383053) - New Momentum Direction: (0.315936,-0.229809,0.920528) - New Polarization: (-0.282784,0.903318,0.322567) + Old Momentum Direction: (0.863866,0.435687,0.252811) + Old Polarization: (-0.476082,0.870153,0.1272) + New Momentum Direction: (0.731536,0.589715,0.342187) + New Polarization: (-0.661587,0.735279,0.147199) *** FresnelRefraction *** -Track (trackID 1088, parentID 1) is processed with stopping code 2 +Track (trackID 1110, parentID 1) is processed with stopping code 2 ### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.658552,0.563355,0.498939) - Old Polarization: (-0.230634,0.782198,-0.57877) - New Momentum Direction: (-0.658552,0.563355,0.498939) - New Polarization: (-0.230634,-0.782198,0.57877) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.658552,0.563355,0.498939) - Old Polarization: (-0.230634,-0.782198,0.57877) - New Momentum Direction: (-0.658552,-0.563355,0.498939) - New Polarization: (0.230634,-0.782198,-0.57877) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.658552,-0.563355,0.498939) - Old Polarization: (0.230634,-0.782198,-0.57877) - New Momentum Direction: (-0.658552,-0.563355,-0.498939) - New Polarization: (-0.230634,0.782198,-0.57877) - *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1087, parentID 1) is processed with stopping code 2 +Track (trackID 1109, parentID 1) is processed with stopping code 2 ### pop requested out of 22 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1086, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.640995,-0.205806,0.739438) + Old Polarization: (-0.725662,0.15139,0.671189) + New Momentum Direction: (0.86827,-0.278778,0.410353) + New Polarization: (0.374054,-0.175452,-0.910659) + *** FresnelRefraction *** +Track (trackID 1108, parentID 1) is processed with stopping code 2 ### pop requested out of 21 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.677404,0.55146,0.486843) - Old Polarization: (-0.207074,0.778009,-0.593145) - New Momentum Direction: (0.115192,0.744672,0.657415) - New Polarization: (-0.436962,0.632336,-0.6397) + Old Momentum Direction: (0.886136,0.458472,0.0675736) + Old Polarization: (-0.453207,0.887787,-0.08024) + New Momentum Direction: (0.776329,0.62359,0.0919103) + New Polarization: (-0.622996,0.781274,-0.0385679) *** FresnelRefraction *** -Track (trackID 1085, parentID 1) is processed with stopping code 2 +Track (trackID 1107, parentID 1) is processed with stopping code 2 ### pop requested out of 20 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.748494,-0.612422,0.254354) - Old Polarization: (-0.131008,-0.51256,-0.848598) - New Momentum Direction: (0.436545,-0.830871,0.345081) - New Polarization: (-0.255437,-0.482239,-0.837972) + Old Momentum Direction: (0.783604,0.263792,0.562475) + Old Polarization: (-0.566303,0.675595,0.472094) + New Momentum Direction: (0.538958,0.35766,0.762629) + New Polarization: (-0.803499,0.490027,0.338028) *** FresnelRefraction *** -Track (trackID 1084, parentID 1) is processed with stopping code 2 +Track (trackID 1106, parentID 1) is processed with stopping code 2 ### pop requested out of 19 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.963906,-0.234497,0.126085) - Old Polarization: (0.106164,-0.0957665,-0.989726) - New Momentum Direction: (0.932444,-0.31823,0.171106) - New Polarization: (-0.184303,-0.82624,-0.532315) + Old Momentum Direction: (0.533095,-0.775963,0.337182) + Old Polarization: (-0.84602,-0.485298,0.220761) + New Momentum Direction: (0.722639,-0.518539,0.457068) + New Polarization: (0.112518,0.740666,0.662385) *** FresnelRefraction *** -Track (trackID 1083, parentID 1) is processed with stopping code 2 +Track (trackID 1105, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. ** Photon absorbed! ** -Track (trackID 1082, parentID 1) is processed with stopping code 2 +Track (trackID 1104, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1081, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.608466,-0.338725,0.71766) + Old Polarization: (-0.762146,0.00257751,0.6474) + New Momentum Direction: (0.823915,-0.458662,0.332857) + New Polarization: (0.157993,-0.378157,-0.91216) + *** FresnelRefraction *** +Track (trackID 1103, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.48756,0.587453,0.645898) - Old Polarization: (-0.418777,0.806481,-0.417389) - New Momentum Direction: (0.48756,0.587453,-0.645898) - New Polarization: (0.418777,-0.806481,-0.417389) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.48756,0.587453,-0.645898) - Old Polarization: (0.418777,-0.806481,-0.417389) - New Momentum Direction: (0.48756,-0.587453,-0.645898) - New Polarization: (-0.418777,-0.806481,0.417389) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.48756,-0.587453,-0.645898) - Old Polarization: (-0.418777,-0.806481,0.417389) - New Momentum Direction: (-0.48756,-0.587453,-0.645898) - New Polarization: (-0.418777,0.806481,-0.417389) - *** TotalInternalReflection *** + Old Momentum Direction: (0.865399,0.442225,0.23563) + Old Polarization: (-0.475356,0.873276,0.106895) + New Momentum Direction: (0.733183,0.600153,0.319778) + New Polarization: (-0.661312,0.738823,0.12964) + *** FresnelRefraction *** +Track (trackID 1102, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. ** Photon absorbed! ** -Track (trackID 1080, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.980953,0.106012,0.162767) - Old Polarization: (0.127555,0.2804,-0.95137) - New Momentum Direction: (0.964782,0.143563,0.220422) - New Polarization: (-0.200829,0.943182,0.264717) - *** FresnelRefraction *** -Track (trackID 1079, parentID 1) is processed with stopping code 2 +Track (trackID 1101, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.310169,-0.726788,0.612842) - Old Polarization: (-0.61585,-0.644697,-0.452874) - New Momentum Direction: (0.419211,-0.371749,0.82829) - New Polarization: (-0.0508666,0.901275,0.430251) - *** FresnelRefraction *** -Track (trackID 1078, parentID 1) is processed with stopping code 2 +Scattering Photon! +Old Momentum Direction: (0.737402,-0.371911,-0.563845) +Old Polarization: (-0.61786,-0.0341034,-0.785548) +New Polarization: (-0.308225,0.691585,-0.653228) +Polarization Change: (-0.308225,0.691585,-0.653228) +New Momentum Direction: (-0.556819,-0.687901,-0.465559) +Momentum Change: (-0.556819,-0.687901,-0.465559) + +** Photon absorbed! ** +Track (trackID 1100, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.487719,0.58569,0.647378) - Old Polarization: (-0.418544,0.807646,-0.415365) - New Momentum Direction: (0.487719,0.58569,-0.647378) - New Polarization: (0.418544,-0.807646,-0.415365) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.487719,0.58569,-0.647378) - Old Polarization: (0.418544,-0.807646,-0.415365) - New Momentum Direction: (0.487719,-0.58569,-0.647378) - New Polarization: (-0.418544,-0.807646,0.415365) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.487719,-0.58569,-0.647378) - Old Polarization: (-0.418544,-0.807646,0.415365) - New Momentum Direction: (-0.487719,-0.58569,-0.647378) - New Polarization: (-0.418544,0.807646,-0.415365) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.487719,-0.58569,-0.647378) - Old Polarization: (-0.418544,0.807646,-0.415365) - New Momentum Direction: (-0.487719,-0.58569,0.647378) - New Polarization: (0.418544,-0.807646,-0.415365) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.487719,-0.58569,0.647378) - Old Polarization: (0.418544,-0.807646,-0.415365) - New Momentum Direction: (-0.487719,0.58569,0.647378) - New Polarization: (-0.418544,-0.807646,0.415365) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.487719,0.58569,0.647378) - Old Polarization: (-0.418544,-0.807646,0.415365) - New Momentum Direction: (0.487719,0.58569,0.647378) - New Polarization: (-0.418544,0.807646,-0.415365) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.487719,0.58569,0.647378) - Old Polarization: (-0.418544,0.807646,-0.415365) - New Momentum Direction: (0.487719,0.58569,-0.647378) - New Polarization: (0.418544,-0.807646,-0.415365) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.487719,0.58569,-0.647378) - Old Polarization: (0.418544,-0.807646,-0.415365) - New Momentum Direction: (0.487719,-0.58569,-0.647378) - New Polarization: (-0.418544,-0.807646,0.415365) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.487719,-0.58569,-0.647378) -Old Polarization: (-0.418544,-0.807646,0.415365) -New Polarization: (0.882549,0.344588,-0.319947) -Polarization Change: (0.882549,0.344588,-0.319947) -New Momentum Direction: (0.432545,-0.861798,0.264969) -Momentum Change: (0.432545,-0.861798,0.264969) - Photon at Boundary! - Old Momentum Direction: (0.432545,-0.861798,0.264969) - Old Polarization: (0.882549,0.344588,-0.319947) - New Momentum Direction: (-0.432545,-0.861798,0.264969) - New Polarization: (0.882549,-0.344588,0.319947) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1077, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.684706,-0.0451211,0.727421) + Old Polarization: (-0.676759,0.331085,0.657556) + New Momentum Direction: (0.927588,-0.0611266,0.368571) + New Polarization: (0.37353,0.171457,-0.911635) + *** FresnelRefraction *** +Track (trackID 1099, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.989753,0.00619429,0.142655) - Old Polarization: (0.13953,0.170278,-0.975467) - New Momentum Direction: (0.981193,0.00837368,0.192847) - New Polarization: (-0.190586,0.200451,0.960987) + Old Momentum Direction: (0.534535,-0.793717,0.29032) + Old Polarization: (-0.845047,-0.507226,0.169168) + New Momentum Direction: (0.72359,-0.567422,0.393001) + New Polarization: (0.250807,0.746605,0.61618) *** FresnelRefraction *** -Track (trackID 1076, parentID 1) is processed with stopping code 2 +Track (trackID 1098, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.038014,-0.187537,0.981522) - Old Polarization: (-0.997921,-0.0440402,-0.0470638) - New Momentum Direction: (-0.0515844,-0.254485,0.9657) - New Polarization: (-0.989026,-0.121031,-0.0847249) - *** FresnelRefraction *** -Track (trackID 1075, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.588005,-0.445378,0.675195) + Old Polarization: (-0.786403,-0.119462,0.606052) + New Momentum Direction: (0.588005,-0.445378,-0.675195) + New Polarization: (-0.0248528,0.82441,-0.565448) + *** FresnelReflection *** + +** Photon absorbed! ** +Track (trackID 1097, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1074, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.721359,-0.420377,-0.550386) + Old Polarization: (-0.635811,-0.0869168,-0.766935) + New Momentum Direction: (0.338697,-0.571113,-0.747739) + New Polarization: (-0.904915,0.0199429,-0.425124) + *** FresnelRefraction *** +Track (trackID 1096, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.977999,-0.164748,0.127967) - Old Polarization: (0.12645,-0.0197055,-0.991777) - New Momentum Direction: (0.959412,-0.222716,0.172993) - New Polarization: (-0.202645,-0.971071,-0.126321) - *** FresnelRefraction *** -Track (trackID 1073, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.396274,-0.749701,0.530015) - Old Polarization: (-0.518789,-0.659122,-0.544441) - New Momentum Direction: (0.539215,-0.43488,0.721198) - New Polarization: (0.211263,0.898825,0.384034) - *** FresnelRefraction *** -Track (trackID 1072, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. ** Photon absorbed! ** -Track (trackID 1071, parentID 1) is processed with stopping code 2 +Track (trackID 1095, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1094, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.685605,-0.537699,-0.490739) + Old Polarization: (-0.675707,-0.219223,-0.703819) + New Momentum Direction: (0.161932,-0.728876,-0.66522) + New Polarization: (-0.958397,0.0444126,-0.281962) + *** FresnelRefraction *** +Track (trackID 1093, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Scattering Photon! -Old Momentum Direction: (0.961459,-0.245118,0.124551) -Old Polarization: (0.100957,-0.106621,-0.989161) -New Polarization: (-0.900019,0.162449,-0.404444) -Polarization Change: (-0.900019,0.162449,-0.404444) -New Momentum Direction: (-0.380208,0.161049,0.910772) -Momentum Change: (-0.380208,0.161049,0.910772) +Old Momentum Direction: (0.54984,-0.833902,0.0477906) +Old Polarization: (-0.82775,-0.551657,-0.102491) +New Polarization: (0.882729,0.468503,0.0359723) +Polarization Change: (0.882729,0.468503,0.0359723) +New Momentum Direction: (0.406603,-0.723241,-0.558209) +Momentum Change: (0.406603,-0.723241,-0.558209) Photon at Boundary! - Old Momentum Direction: (-0.380208,0.161049,0.910772) - Old Polarization: (-0.900019,0.162449,-0.404444) - New Momentum Direction: (-0.51707,0.219022,0.827447) - New Polarization: (-0.811085,0.183473,-0.555409) + Old Momentum Direction: (0.406603,-0.723241,-0.558209) + Old Polarization: (0.882729,0.468503,0.0359723) + New Momentum Direction: (0.406603,0.723241,-0.558209) + New Polarization: (-0.908547,0.255893,-0.330244) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.406603,0.723241,-0.558209) + Old Polarization: (-0.908547,0.255893,-0.330244) + New Momentum Direction: (-0.406603,0.723241,-0.558209) + New Polarization: (-0.908547,-0.255893,0.330244) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.406603,0.723241,-0.558209) + Old Polarization: (-0.908547,-0.255893,0.330244) + New Momentum Direction: (-0.406603,0.723241,0.558209) + New Polarization: (0.908547,0.255893,0.330244) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.406603,0.723241,0.558209) +Old Polarization: (0.908547,0.255893,0.330244) +New Polarization: (0.979056,0.152782,0.134566) +Polarization Change: (0.979056,0.152782,0.134566) +New Momentum Direction: (0.19137,-0.465034,-0.864361) +Momentum Change: (0.19137,-0.465034,-0.864361) + Photon at Boundary! + Old Momentum Direction: (0.19137,-0.465034,-0.864361) + Old Polarization: (0.979056,0.152782,0.134566) + New Momentum Direction: (0.259148,-0.629735,-0.732309) + New Polarization: (0.963101,0.111454,0.244977) *** FresnelRefraction *** -Track (trackID 1070, parentID 1) is processed with stopping code 2 +Track (trackID 1092, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1069, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.897447,0.43687,-0.0610997) + Old Polarization: (-0.438842,0.870135,-0.22424) + New Momentum Direction: (0.801809,0.59182,-0.0827707) + New Polarization: (-0.595947,0.781676,-0.18393) + *** FresnelRefraction *** +Track (trackID 1091, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.913462,0.323056,0.24743) - Old Polarization: (0.0487114,0.516867,-0.854679) - New Momentum Direction: (0.833051,0.439182,0.336371) - New Polarization: (-0.0907137,0.708269,-0.70009) + Old Momentum Direction: (0.707415,-0.467977,-0.529681) + Old Polarization: (-0.651327,-0.140602,-0.745656) + New Momentum Direction: (0.282931,-0.635054,-0.718788) + New Polarization: (-0.925356,0.0164152,-0.378744) *** FresnelRefraction *** -Track (trackID 1068, parentID 1) is processed with stopping code 2 +Track (trackID 1090, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1067, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.96005,-0.249775,0.126161) - Old Polarization: (0.100722,-0.112185,-0.98857) - New Momentum Direction: (0.924932,-0.339307,0.171383) - New Polarization: (-0.177243,-0.783788,-0.595198) + Old Momentum Direction: (0.899743,0.347411,-0.264137) + Old Polarization: (-0.43389,0.777161,-0.455807) + New Momentum Direction: (0.808742,0.468206,-0.355978) + New Polarization: (-0.586338,0.689456,-0.425274) *** FresnelRefraction *** -Track (trackID 1066, parentID 1) is processed with stopping code 2 +Track (trackID 1089, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.89273,0.450114,0.0207372) +Old Polarization: (-0.443759,0.886247,-0.132833) +New Polarization: (0.417116,-0.878493,0.232946) +Polarization Change: (0.417116,-0.878493,0.232946) +New Momentum Direction: (-0.278498,0.120431,0.952856) +Momentum Change: (-0.278498,0.120431,0.952856) + Photon at Boundary! + Old Momentum Direction: (-0.278498,0.120431,0.952856) + Old Polarization: (0.417116,-0.878493,0.232946) + New Momentum Direction: (-0.376973,0.163014,0.911766) + New Polarization: (-0.920954,-0.170834,-0.350228) + *** FresnelRefraction *** +Track (trackID 1088, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 158 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 99 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 159 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.348144,-0.449973,0.822387) - Old Polarization: (-0.8376,-0.543267,0.0573336) - New Momentum Direction: (0.467956,-0.604828,0.644361) - New Polarization: (-0.72807,-0.677126,-0.106835) - *** FresnelRefraction *** -Track (trackID 1420, parentID 1) is processed with stopping code 2 -### pop requested out of 158 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1419, parentID 1) is processed with stopping code 2 -### pop requested out of 157 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.3258,-0.414004,0.849974) - Old Polarization: (-0.861456,-0.500419,0.0864573) - New Momentum Direction: (0.3258,-0.414004,-0.849974) - New Polarization: (0.805494,0.592258,0.0202742) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.3258,-0.414004,-0.849974) - Old Polarization: (0.805494,0.592258,0.0202742) - New Momentum Direction: (0.3258,0.414004,-0.849974) - New Polarization: (-0.805494,0.592258,-0.0202742) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.3258,0.414004,-0.849974) - Old Polarization: (-0.805494,0.592258,-0.0202742) - New Momentum Direction: (-0.3258,0.414004,-0.849974) - New Polarization: (-0.805494,-0.592258,0.0202742) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.3258,0.414004,-0.849974) - Old Polarization: (-0.805494,-0.592258,0.0202742) - New Momentum Direction: (-0.438775,0.557565,-0.704697) - New Polarization: (-0.807936,-0.588058,0.0377769) - *** FresnelRefraction *** -Track (trackID 1418, parentID 1) is processed with stopping code 2 -### pop requested out of 156 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.960228,-0.271829,-0.0638018) - Old Polarization: (-0.156013,-0.332832,-0.929991) - New Momentum Direction: (0.925006,-0.3699,-0.0868202) - New Polarization: (-0.257561,-0.442462,-0.859005) - *** FresnelRefraction *** -Track (trackID 1417, parentID 1) is processed with stopping code 2 -### pop requested out of 155 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.96382,-0.259089,-0.0626389) - Old Polarization: (-0.147429,-0.322374,-0.935061) - New Momentum Direction: (0.932634,-0.350719,-0.0847921) - New Polarization: (-0.24184,-0.433189,-0.868251) - *** FresnelRefraction *** -Track (trackID 1416, parentID 1) is processed with stopping code 2 -### pop requested out of 154 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1415, parentID 1) is processed with stopping code 2 -### pop requested out of 153 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.560783,-0.644236,0.520079) - Old Polarization: (-0.596099,-0.750092,-0.286406) - New Momentum Direction: (0.560783,0.644236,0.520079) - New Polarization: (0.596099,-0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560783,0.644236,0.520079) - Old Polarization: (0.596099,-0.750092,0.286406) - New Momentum Direction: (-0.560783,0.644236,0.520079) - New Polarization: (0.596099,0.750092,-0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,0.644236,0.520079) - Old Polarization: (0.596099,0.750092,-0.286406) - New Momentum Direction: (-0.560783,0.644236,-0.520079) - New Polarization: (-0.596099,-0.750092,-0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,0.644236,-0.520079) - Old Polarization: (-0.596099,-0.750092,-0.286406) - New Momentum Direction: (-0.560783,-0.644236,-0.520079) - New Polarization: (0.596099,-0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,-0.644236,-0.520079) - Old Polarization: (0.596099,-0.750092,0.286406) - New Momentum Direction: (0.560783,-0.644236,-0.520079) - New Polarization: (0.596099,0.750092,-0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560783,-0.644236,-0.520079) - Old Polarization: (0.596099,0.750092,-0.286406) - New Momentum Direction: (0.560783,-0.644236,0.520079) - New Polarization: (-0.596099,-0.750092,-0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560783,-0.644236,0.520079) - Old Polarization: (-0.596099,-0.750092,-0.286406) - New Momentum Direction: (0.560783,0.644236,0.520079) - New Polarization: (0.596099,-0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560783,0.644236,0.520079) - Old Polarization: (0.596099,-0.750092,0.286406) - New Momentum Direction: (-0.560783,0.644236,0.520079) - New Polarization: (0.596099,0.750092,-0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,0.644236,0.520079) - Old Polarization: (0.596099,0.750092,-0.286406) - New Momentum Direction: (-0.560783,-0.644236,0.520079) - New Polarization: (-0.596099,0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,-0.644236,0.520079) - Old Polarization: (-0.596099,0.750092,0.286406) - New Momentum Direction: (-0.560783,-0.644236,-0.520079) - New Polarization: (0.596099,-0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,-0.644236,-0.520079) - Old Polarization: (0.596099,-0.750092,0.286406) - New Momentum Direction: (-0.560783,0.644236,-0.520079) - New Polarization: (-0.596099,-0.750092,-0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,0.644236,-0.520079) - Old Polarization: (-0.596099,-0.750092,-0.286406) - New Momentum Direction: (0.560783,0.644236,-0.520079) - New Polarization: (-0.596099,0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560783,0.644236,-0.520079) - Old Polarization: (-0.596099,0.750092,0.286406) - New Momentum Direction: (0.560783,0.644236,0.520079) - New Polarization: (0.596099,-0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560783,0.644236,0.520079) - Old Polarization: (0.596099,-0.750092,0.286406) - New Momentum Direction: (0.560783,-0.644236,0.520079) - New Polarization: (-0.596099,-0.750092,-0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.560783,-0.644236,0.520079) - Old Polarization: (-0.596099,-0.750092,-0.286406) - New Momentum Direction: (-0.560783,-0.644236,0.520079) - New Polarization: (-0.596099,0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,-0.644236,0.520079) - Old Polarization: (-0.596099,0.750092,0.286406) - New Momentum Direction: (-0.560783,-0.644236,-0.520079) - New Polarization: (0.596099,-0.750092,0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,-0.644236,-0.520079) - Old Polarization: (0.596099,-0.750092,0.286406) - New Momentum Direction: (-0.560783,0.644236,-0.520079) - New Polarization: (-0.596099,-0.750092,-0.286406) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.560783,0.644236,-0.520079) - Old Polarization: (-0.596099,-0.750092,-0.286406) - New Momentum Direction: (0.560783,0.644236,-0.520079) - New Polarization: (-0.596099,0.750092,0.286406) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.560783,0.644236,-0.520079) -Old Polarization: (-0.596099,0.750092,0.286406) -New Polarization: (-0.205836,0.978082,0.0314083) -Polarization Change: (-0.205836,0.978082,0.0314083) -New Momentum Direction: (-0.833998,-0.192123,0.517238) -Momentum Change: (-0.833998,-0.192123,0.517238) - Photon at Boundary! - Old Momentum Direction: (-0.833998,-0.192123,0.517238) - Old Polarization: (-0.205836,0.978082,0.0314083) - New Momentum Direction: (-0.664361,-0.260246,0.70064) - New Polarization: (0.366938,0.703103,0.609099) - *** FresnelRefraction *** -Track (trackID 1414, parentID 1) is processed with stopping code 2 -### pop requested out of 152 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1413, parentID 1) is processed with stopping code 2 -### pop requested out of 151 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.566977,-0.648644,0.507738) - Old Polarization: (-0.588934,-0.750159,-0.300696) - New Momentum Direction: (0.566977,0.648644,0.507738) - New Polarization: (0.588934,-0.750159,0.300696) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.566977,0.648644,0.507738) - Old Polarization: (0.588934,-0.750159,0.300696) - New Momentum Direction: (-0.566977,0.648644,0.507738) - New Polarization: (0.588934,0.750159,-0.300696) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.566977,0.648644,0.507738) - Old Polarization: (0.588934,0.750159,-0.300696) - New Momentum Direction: (-0.566977,0.648644,-0.507738) - New Polarization: (-0.588934,-0.750159,-0.300696) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.566977,0.648644,-0.507738) -Old Polarization: (-0.588934,-0.750159,-0.300696) -New Polarization: (0.172607,0.956374,-0.235701) -Polarization Change: (0.172607,0.956374,-0.235701) -New Momentum Direction: (0.693015,0.0521329,0.719036) -Momentum Change: (0.693015,0.0521329,0.719036) -Scattering Photon! -Old Momentum Direction: (0.693015,0.0521329,0.719036) -Old Polarization: (0.172607,0.956374,-0.235701) -New Polarization: (-0.750348,0.452919,-0.4815) -Polarization Change: (-0.750348,0.452919,-0.4815) -New Momentum Direction: (-0.534308,-0.844419,0.0383466) -Momentum Change: (-0.534308,-0.844419,0.0383466) - Photon at Boundary! - Old Momentum Direction: (-0.534308,-0.844419,0.0383466) - Old Polarization: (-0.750348,0.452919,-0.4815) - New Momentum Direction: (-0.725895,-0.68583,0.0520966) - New Polarization: (-0.653114,0.663551,-0.364886) - *** FresnelRefraction *** -Track (trackID 1412, parentID 1) is processed with stopping code 2 -### pop requested out of 150 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.217995,-0.0202782,0.975739) - Old Polarization: (-0.974647,-0.0561736,0.216583) - New Momentum Direction: (0.296076,-0.0275414,0.954767) - New Polarization: (0.935133,-0.195279,-0.295621) - *** FresnelRefraction *** -Track (trackID 1411, parentID 1) is processed with stopping code 2 -### pop requested out of 149 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.460286,0.635028,0.620384) - Old Polarization: (-0.710339,0.6826,-0.171686) - New Momentum Direction: (0.460286,-0.635028,0.620384) - New Polarization: (0.710339,0.6826,0.171686) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.460286,-0.635028,0.620384) - Old Polarization: (0.710339,0.6826,0.171686) - New Momentum Direction: (0.460286,-0.635028,-0.620384) - New Polarization: (-0.710339,-0.6826,0.171686) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.460286,-0.635028,-0.620384) - Old Polarization: (-0.710339,-0.6826,0.171686) - New Momentum Direction: (-0.460286,-0.635028,-0.620384) - New Polarization: (-0.710339,0.6826,-0.171686) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1410, parentID 1) is processed with stopping code 2 -### pop requested out of 148 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1409, parentID 1) is processed with stopping code 2 -### pop requested out of 147 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.686968,0.668174,0.285692) - Old Polarization: (-0.456598,0.702728,-0.545611) - New Momentum Direction: (-0.686968,0.668174,0.285692) - New Polarization: (-0.374391,-0.662378,0.648912) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.686968,0.668174,0.285692) - Old Polarization: (-0.374391,-0.662378,0.648912) - New Momentum Direction: (-0.686968,-0.668174,0.285692) - New Polarization: (0.374391,-0.662378,-0.648912) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1408, parentID 1) is processed with stopping code 2 -### pop requested out of 146 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.895766,-0.441962,0.0476811) - Old Polarization: (-0.219172,-0.532425,-0.817611) - New Momentum Direction: (0.80119,-0.594957,0.0641869) - New Polarization: (-0.366731,-0.572931,-0.732979) - *** FresnelRefraction *** -Track (trackID 1407, parentID 1) is processed with stopping code 2 -### pop requested out of 145 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.736999,-0.61914,0.271103) - Old Polarization: (-0.400051,-0.722889,-0.563375) - New Momentum Direction: (-0.736999,-0.61914,0.271103) - New Polarization: (-0.168724,0.556935,0.813238) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.736999,-0.61914,0.271103) - Old Polarization: (-0.168724,0.556935,0.813238) - New Momentum Direction: (-0.736999,0.61914,0.271103) - New Polarization: (0.168724,0.556935,-0.813238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.736999,0.61914,0.271103) - Old Polarization: (0.168724,0.556935,-0.813238) - New Momentum Direction: (-0.736999,0.61914,-0.271103) - New Polarization: (-0.168724,-0.556935,-0.813238) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.736999,0.61914,-0.271103) - Old Polarization: (-0.168724,-0.556935,-0.813238) - New Momentum Direction: (-0.403118,0.838306,-0.367069) - New Polarization: (0.325977,-0.24326,-0.913544) - *** FresnelRefraction *** -Track (trackID 1406, parentID 1) is processed with stopping code 2 -### pop requested out of 144 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1405, parentID 1) is processed with stopping code 2 -### pop requested out of 143 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.873021,0.486545,0.0332991) - Old Polarization: (-0.250033,0.505173,-0.826004) - New Momentum Direction: (0.7498,0.66012,0.0451785) - New Polarization: (-0.422291,0.52999,-0.735378) - *** FresnelRefraction *** -Track (trackID 1404, parentID 1) is processed with stopping code 2 -### pop requested out of 142 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.685264,0.663724,0.299806) - Old Polarization: (-0.45672,0.712286,-0.532969) - New Momentum Direction: (0.191314,0.894506,0.404051) - New Polarization: (-0.774068,0.390611,-0.498239) - *** FresnelRefraction *** -Track (trackID 1403, parentID 1) is processed with stopping code 2 -### pop requested out of 141 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.949244,0.308435,-0.0616797) - Old Polarization: (-0.161907,0.311008,-0.936515) - New Momentum Direction: (0.905234,0.416664,-0.0833232) - New Polarization: (-0.268806,0.409674,-0.871728) - *** FresnelRefraction *** -Track (trackID 1402, parentID 1) is processed with stopping code 2 -### pop requested out of 140 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1401, parentID 1) is processed with stopping code 2 -### pop requested out of 139 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.808841,-0.562695,0.170739) - Old Polarization: (-0.318857,-0.663661,-0.676671) - New Momentum Direction: (-0.808841,-0.562695,0.170739) - New Polarization: (0.00968286,0.277574,0.960656) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.808841,-0.562695,0.170739) - Old Polarization: (0.00968286,0.277574,0.960656) - New Momentum Direction: (-0.808841,0.562695,0.170739) - New Polarization: (-0.00968286,0.277574,-0.960656) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.808841,0.562695,0.170739) - Old Polarization: (-0.00968286,0.277574,-0.960656) - New Momentum Direction: (-0.607636,0.759999,0.230607) - New Polarization: (0.0184261,0.30377,-0.952567) - *** FresnelRefraction *** -Track (trackID 1400, parentID 1) is processed with stopping code 2 -### pop requested out of 138 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.277504,0.386913,0.879369) - Old Polarization: (-0.911102,0.396353,0.113127) - New Momentum Direction: (0.375869,0.524058,0.764255) - New Polarization: (-0.626973,0.75112,-0.206699) - *** FresnelRefraction *** -Track (trackID 1399, parentID 1) is processed with stopping code 2 -### pop requested out of 137 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743829,0.632527,0.215936) - Old Polarization: (-0.391521,0.674201,-0.626231) - New Momentum Direction: (0.430683,0.854104,0.29158) - New Polarization: (-0.655523,0.518109,-0.549411) - *** FresnelRefraction *** -Track (trackID 1398, parentID 1) is processed with stopping code 2 -### pop requested out of 136 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.639356,-0.647845,0.414151) - Old Polarization: (-0.508451,-0.760263,-0.404323) - New Momentum Direction: (0.639356,0.647845,0.414151) - New Polarization: (0.508451,-0.760263,0.404323) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.639356,0.647845,0.414151) - Old Polarization: (0.508451,-0.760263,0.404323) - New Momentum Direction: (-0.639356,0.647845,0.414151) - New Polarization: (0.508451,0.760263,-0.404323) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.639356,0.647845,0.414151) - Old Polarization: (0.508451,0.760263,-0.404323) - New Momentum Direction: (-0.639356,0.647845,-0.414151) - New Polarization: (-0.508451,-0.760263,-0.404323) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.639356,0.647845,-0.414151) - Old Polarization: (-0.508451,-0.760263,-0.404323) - New Momentum Direction: (-0.639356,-0.647845,-0.414151) - New Polarization: (0.508451,-0.760263,0.404323) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.639356,-0.647845,-0.414151) - Old Polarization: (0.508451,-0.760263,0.404323) - New Momentum Direction: (0.639356,-0.647845,-0.414151) - New Polarization: (0.508451,0.760263,-0.404323) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.639356,-0.647845,-0.414151) - Old Polarization: (0.508451,0.760263,-0.404323) - New Momentum Direction: (0.639356,-0.647845,0.414151) - New Polarization: (-0.508451,-0.760263,-0.404323) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.639356,-0.647845,0.414151) - Old Polarization: (-0.508451,-0.760263,-0.404323) - New Momentum Direction: (0.639356,0.647845,0.414151) - New Polarization: (0.508451,-0.760263,0.404323) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.639356,0.647845,0.414151) - Old Polarization: (0.508451,-0.760263,0.404323) - New Momentum Direction: (-0.639356,0.647845,0.414151) - New Polarization: (0.508451,0.760263,-0.404323) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1397, parentID 1) is processed with stopping code 2 -### pop requested out of 135 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.724984,-0.625415,0.288539) - Old Polarization: (-0.413367,-0.730172,-0.544038) - New Momentum Direction: (0.361422,-0.846642,0.390604) - New Polarization: (-0.696416,-0.523673,-0.490685) - *** FresnelRefraction *** -Track (trackID 1396, parentID 1) is processed with stopping code 2 -### pop requested out of 134 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.887831,0.459932,0.0147814) - Old Polarization: (-0.232904,0.476827,-0.84758) - New Momentum Direction: (0.781673,0.623367,0.0200339) - New Polarization: (-0.392792,0.516985,-0.760553) - *** FresnelRefraction *** -Track (trackID 1395, parentID 1) is processed with stopping code 2 -### pop requested out of 133 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.353256,-0.466641,0.810837) - Old Polarization: (-0.829286,-0.557353,0.0405339) - New Momentum Direction: (0.476663,-0.629658,0.613452) - New Polarization: (-0.75756,-0.64824,-0.076727) - *** FresnelRefraction *** -Track (trackID 1394, parentID 1) is processed with stopping code 2 -### pop requested out of 132 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.401647,-0.544456,0.736375) - Old Polarization: (-0.771348,-0.634566,-0.0484584) - New Momentum Direction: (0.545872,-0.739961,0.393042) - New Polarization: (-0.775313,-0.623945,-0.0978866) - *** FresnelRefraction *** -Track (trackID 1393, parentID 1) is processed with stopping code 2 -### pop requested out of 131 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.495432,0.665675,0.558053) - Old Polarization: (-0.668139,0.702575,-0.244903) - New Momentum Direction: (0.495432,-0.665675,0.558053) - New Polarization: (0.668139,0.702575,0.244903) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.495432,-0.665675,0.558053) - Old Polarization: (0.668139,0.702575,0.244903) - New Momentum Direction: (0.495432,-0.665675,-0.558053) - New Polarization: (-0.668139,-0.702575,0.244903) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.495432,-0.665675,-0.558053) - Old Polarization: (-0.668139,-0.702575,0.244903) - New Momentum Direction: (-0.495432,-0.665675,-0.558053) - New Polarization: (-0.668139,0.702575,-0.244903) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1392, parentID 1) is processed with stopping code 2 -### pop requested out of 130 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.391087,0.582135,0.71286) - Old Polarization: (-0.785368,0.614911,-0.0712819) - New Momentum Direction: (0.529155,0.78765,0.315597) - New Polarization: (-0.793247,0.591243,-0.145572) - *** FresnelRefraction *** -Track (trackID 1391, parentID 1) is processed with stopping code 2 -### pop requested out of 129 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.337757,0.517309,0.786328) - Old Polarization: (-0.842585,0.538509,0.00764722) - New Momentum Direction: (0.337757,0.517309,-0.786328) - New Polarization: (0.836821,-0.547476,-0.000726976) - *** FresnelReflection *** - -** Photon absorbed! ** -Track (trackID 1390, parentID 1) is processed with stopping code 2 -### pop requested out of 128 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1389, parentID 1) is processed with stopping code 2 -### pop requested out of 127 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.96858,-0.238472,-0.0705998) - Old Polarization: (-0.142438,-0.299202,-0.943499) - New Momentum Direction: (0.941585,-0.322922,-0.0956011) - New Polarization: (-0.231967,-0.416074,-0.879246) - *** FresnelRefraction *** -Track (trackID 1388, parentID 1) is processed with stopping code 2 -### pop requested out of 126 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.88965,-0.453813,0.0507567) - Old Polarization: (-0.229382,-0.540232,-0.80965) - New Momentum Direction: (0.7865,-0.613764,0.0686463) - New Polarization: (-0.385897,-0.575175,-0.721288) - *** FresnelRefraction *** -Track (trackID 1387, parentID 1) is processed with stopping code 2 -### pop requested out of 125 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1386, parentID 1) is processed with stopping code 2 -### pop requested out of 124 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.95923,-0.277472,-0.053727) - Old Polarization: (-0.151365,-0.343825,-0.926754) - New Momentum Direction: (0.924133,-0.375103,-0.0726314) - New Polarization: (-0.249478,-0.448442,-0.858289) - *** FresnelRefraction *** -Track (trackID 1385, parentID 1) is processed with stopping code 2 -### pop requested out of 123 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.21772,0.0180965,0.975844) - Old Polarization: (-0.975857,-0.0137598,0.217978) - New Momentum Direction: (0.295421,0.024555,0.955051) - New Polarization: (0.946521,0.1282,-0.296079) - *** FresnelRefraction *** -Track (trackID 1384, parentID 1) is processed with stopping code 2 -### pop requested out of 122 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.524596,0.667489,0.528448) - Old Polarization: (-0.63776,0.7193,-0.275445) - New Momentum Direction: (0.524596,-0.667489,0.528448) - New Polarization: (0.63776,0.7193,0.275445) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.524596,-0.667489,0.528448) - Old Polarization: (0.63776,0.7193,0.275445) - New Momentum Direction: (0.524596,-0.667489,-0.528448) - New Polarization: (-0.63776,-0.7193,0.275445) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.524596,-0.667489,-0.528448) - Old Polarization: (-0.63776,-0.7193,0.275445) - New Momentum Direction: (-0.524596,-0.667489,-0.528448) - New Polarization: (-0.63776,0.7193,-0.275445) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1383, parentID 1) is processed with stopping code 2 -### pop requested out of 121 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.889027,-0.454473,0.0555487) - Old Polarization: (-0.227943,-0.544551,-0.807159) - New Momentum Direction: (0.786675,-0.612807,0.0749013) - New Polarization: (-0.382165,-0.578658,-0.720489) - *** FresnelRefraction *** -Track (trackID 1382, parentID 1) is processed with stopping code 2 -### pop requested out of 120 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1381, parentID 1) is processed with stopping code 2 -### pop requested out of 119 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.226249,-0.113457,0.967439) - Old Polarization: (-0.965302,-0.159076,0.207093) - New Momentum Direction: (0.30736,-0.154132,0.939028) - New Polarization: (0.541089,-0.783434,-0.305701) - *** FresnelRefraction *** -Track (trackID 1380, parentID 1) is processed with stopping code 2 -### pop requested out of 118 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1379, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.693391,-0.638728,0.333519) - Old Polarization: (-0.448556,-0.744861,-0.493942) - New Momentum Direction: (-0.693391,-0.638728,0.333519) - New Polarization: (-0.328315,0.692077,0.642836) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.693391,-0.638728,0.333519) - Old Polarization: (-0.328315,0.692077,0.642836) - New Momentum Direction: (-0.693391,0.638728,0.333519) - New Polarization: (0.328315,0.692077,-0.642836) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.693391,0.638728,0.333519) - Old Polarization: (0.328315,0.692077,-0.642836) - New Momentum Direction: (-0.693391,0.638728,-0.333519) - New Polarization: (-0.328315,-0.692077,-0.642836) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1378, parentID 1) is processed with stopping code 2 -### pop requested out of 116 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.878404,0.477127,0.0274891) - Old Polarization: (-0.243327,0.495995,-0.833535) - New Momentum Direction: (0.761894,0.64663,0.0372548) - New Polarization: (-0.410416,0.526471,-0.744572) - *** FresnelRefraction *** -Track (trackID 1377, parentID 1) is processed with stopping code 2 -### pop requested out of 115 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.937417,-0.347429,-0.0232912) - Old Polarization: (-0.177694,-0.419778,-0.890062) - New Momentum Direction: (0.881676,-0.470798,-0.0315617) - New Polarization: (-0.297341,-0.502411,-0.811894) - *** FresnelRefraction *** -Track (trackID 1376, parentID 1) is processed with stopping code 2 -### pop requested out of 114 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1375, parentID 1) is processed with stopping code 2 -### pop requested out of 113 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.982185,0.156379,-0.104204) - Old Polarization: (-0.126532,0.14038,-0.981979) - New Momentum Direction: (0.967137,0.211583,-0.140989) - New Polarization: (-0.197606,0.276574,-0.940456) - *** FresnelRefraction *** -Track (trackID 1374, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.224252,0.0147774,0.974419) - Old Polarization: (-0.974319,-0.0174668,0.224494) - New Momentum Direction: (0.30248,0.0199324,0.952947) - New Polarization: (0.948052,0.0970258,-0.302956) - *** FresnelRefraction *** -Track (trackID 1373, parentID 1) is processed with stopping code 2 -### pop requested out of 111 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.729662,0.644811,0.227622) - Old Polarization: (-0.409245,0.678463,-0.610088) - New Momentum Direction: (0.370136,0.875999,0.309233) - New Polarization: (-0.693238,0.482046,-0.535773) - *** FresnelRefraction *** -Track (trackID 1372, parentID 1) is processed with stopping code 2 -### pop requested out of 110 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1371, parentID 1) is processed with stopping code 2 -### pop requested out of 109 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.231233,-0.149291,0.961376) - Old Polarization: (-0.959484,-0.198519,0.19995) - New Momentum Direction: (0.314239,-0.202882,0.927412) - New Polarization: (0.331864,-0.891789,-0.307536) - *** FresnelRefraction *** -Track (trackID 1370, parentID 1) is processed with stopping code 2 -### pop requested out of 108 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.991285,-0.0858724,-0.0999032) - Old Polarization: (-0.11065,-0.131178,-0.985164) - New Momentum Direction: (0.984177,-0.115501,-0.134373) - New Polarization: (-0.159749,-0.250296,-0.954899) - *** FresnelRefraction *** -Track (trackID 1369, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.252414,0.279773,0.926291) - Old Polarization: (-0.9441,0.280986,0.172399) - New Momentum Direction: (0.339946,0.376793,0.861664) - New Polarization: (-0.277013,0.915699,-0.291134) - *** FresnelRefraction *** -Track (trackID 1368, parentID 1) is processed with stopping code 2 -### pop requested out of 106 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.420944,-0.558114,0.715063) - Old Polarization: (-0.751962,-0.655583,-0.0690231) - New Momentum Direction: (0.420944,-0.558114,-0.715063) - New Polarization: (0.776927,0.628707,-0.0333503) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.420944,-0.558114,-0.715063) - Old Polarization: (0.776927,0.628707,-0.0333503) - New Momentum Direction: (0.420944,0.558114,-0.715063) - New Polarization: (-0.776927,0.628707,0.0333503) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.420944,0.558114,-0.715063) - Old Polarization: (-0.776927,0.628707,0.0333503) - New Momentum Direction: (-0.420944,0.558114,-0.715063) - New Polarization: (-0.776927,-0.628707,-0.0333503) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.420944,0.558114,-0.715063) - Old Polarization: (-0.776927,-0.628707,-0.0333503) - New Momentum Direction: (-0.56971,0.755357,-0.32383) - New Polarization: (-0.810373,-0.581918,0.0683112) - *** FresnelRefraction *** -Track (trackID 1367, parentID 1) is processed with stopping code 2 -### pop requested out of 105 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.218821,-0.021446,0.975529) - Old Polarization: (-0.974407,-0.0575309,0.217305) - New Momentum Direction: (0.296988,-0.0291068,0.954438) - New Polarization: (0.932894,-0.204415,-0.296518) - *** FresnelRefraction *** -Track (trackID 1366, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1365, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.272299,-0.29519,0.915815) - Old Polarization: (-0.918436,-0.363555,0.155896) - New Momentum Direction: (0.368136,-0.399084,0.839766) - New Polarization: (-0.352154,-0.895755,-0.271314) - *** FresnelRefraction *** -Track (trackID 1364, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.917288,-0.398151,0.00759484) - Old Polarization: (-0.199749,-0.476527,-0.856167) - New Momentum Direction: (0.842038,-0.539319,0.0102877) - New Polarization: (-0.335832,-0.539068,-0.772413) - *** FresnelRefraction *** -Track (trackID 1363, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.910718,-0.412218,0.0258908) - Old Polarization: (-0.202038,-0.499285,-0.842553) - New Momentum Direction: (0.83131,-0.554716,0.034841) - New Polarization: (-0.337687,-0.553866,-0.761052) - *** FresnelRefraction *** -Track (trackID 1362, parentID 1) is processed with stopping code 2 ### pop requested out of 100 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.488627,-0.615193,0.618693) - Old Polarization: (-0.675859,-0.715335,-0.177512) - New Momentum Direction: (0.488627,-0.615193,-0.618693) - New Polarization: (0.675859,0.715335,-0.177512) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.488627,-0.615193,-0.618693) - Old Polarization: (0.675859,0.715335,-0.177512) - New Momentum Direction: (0.488627,0.615193,-0.618693) - New Polarization: (-0.675859,0.715335,0.177512) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.488627,0.615193,-0.618693) - Old Polarization: (-0.675859,0.715335,0.177512) - New Momentum Direction: (-0.488627,0.615193,-0.618693) - New Polarization: (-0.675859,-0.715335,-0.177512) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1361, parentID 1) is processed with stopping code 2 -### pop requested out of 99 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.224019,-0.0373854,0.973867) - Old Polarization: (-0.972383,-0.0757036,0.220771) - New Momentum Direction: (0.302852,-0.0505414,0.951697) - New Polarization: (0.895338,-0.327096,-0.302288) - *** FresnelRefraction *** -Track (trackID 1360, parentID 1) is processed with stopping code 2 -### pop requested out of 98 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.505531,-0.625689,0.594097) -Old Polarization: (-0.656911,-0.725528,-0.205129) -New Polarization: (-0.766731,-0.552105,-0.327573) -Polarization Change: (-0.766731,-0.552105,-0.327573) -New Momentum Direction: (-0.370493,0.797266,-0.476552) -Momentum Change: (-0.370493,0.797266,-0.476552) - -** Photon absorbed! ** -Track (trackID 1359, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1358, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1357, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.811232,-0.560485,0.166608) - Old Polarization: (-0.316447,-0.660433,-0.680948) - New Momentum Direction: (0.612895,-0.757409,0.225145) - New Polarization: (-0.530746,-0.605699,-0.592822) - *** FresnelRefraction *** -Track (trackID 1356, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.234611,0.227867,0.945005) - Old Polarization: (-0.95801,0.219053,0.18502) - New Momentum Direction: (0.318042,0.3089,0.896343) - New Polarization: (-0.0685387,0.95045,-0.303227) - *** FresnelRefraction *** -Track (trackID 1355, parentID 1) is processed with stopping code 2 -### pop requested out of 93 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.707577,0.656125,0.262363) - Old Polarization: (-0.432847,0.695918,-0.573011) - New Momentum Direction: (0.29015,0.888576,0.355312) - New Polarization: (-0.732777,0.445093,-0.514713) - *** FresnelRefraction *** -Track (trackID 1354, parentID 1) is processed with stopping code 2 -### pop requested out of 92 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.977348,-0.192019,-0.0889916) - Old Polarization: (-0.135689,-0.245831,-0.959768) - New Momentum Direction: (0.957773,-0.260871,-0.120901) - New Polarization: (-0.216025,-0.375399,-0.901337) - *** FresnelRefraction *** -Track (trackID 1353, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.522902,-0.634601,0.569083) -Old Polarization: (-0.63757,-0.734307,-0.233016) -New Polarization: (-0.980083,-0.102595,0.170036) -Polarization Change: (-0.980083,-0.102595,0.170036) -New Momentum Direction: (-0.0131326,0.887825,0.459993) -Momentum Change: (-0.0131326,0.887825,0.459993) - Photon at Boundary! - Old Momentum Direction: (-0.0131326,0.887825,0.459993) - Old Polarization: (-0.980083,-0.102595,0.170036) - New Momentum Direction: (-0.0178453,0.780367,0.625067) - New Polarization: (-0.959611,-0.188919,0.20846) - *** FresnelRefraction *** -Track (trackID 1352, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.321357,-0.415138,0.851111) - Old Polarization: (-0.863545,-0.497314,0.0834822) - New Momentum Direction: (0.43453,-0.561338,0.704332) - New Polarization: (-0.67738,-0.719078,-0.155188) - *** FresnelRefraction *** -Track (trackID 1351, parentID 1) is processed with stopping code 2 -### pop requested out of 89 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.57322,-0.646014,0.504068) - Old Polarization: (-0.582368,-0.753946,-0.303996) - New Momentum Direction: (0.57322,0.646014,0.504068) - New Polarization: (0.582368,-0.753946,0.303996) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.57322,0.646014,0.504068) - Old Polarization: (0.582368,-0.753946,0.303996) - New Momentum Direction: (-0.57322,0.646014,0.504068) - New Polarization: (0.582368,0.753946,-0.303996) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.57322,0.646014,0.504068) - Old Polarization: (0.582368,0.753946,-0.303996) - New Momentum Direction: (-0.57322,0.646014,-0.504068) - New Polarization: (-0.582368,-0.753946,-0.303996) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1350, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.702672,0.659587,0.266827) - Old Polarization: (-0.438735,0.696895,-0.567317) - New Momentum Direction: (0.261045,0.894876,0.362011) - New Polarization: (-0.746837,0.424829,-0.51162) - *** FresnelRefraction *** -Track (trackID 1349, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.327864,-0.428227,0.842097) - Old Polarization: (-0.856093,-0.511621,0.0731413) - New Momentum Direction: (0.443448,-0.579193,0.684024) - New Polarization: (-0.701906,-0.699002,-0.136835) - *** FresnelRefraction *** -Track (trackID 1348, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.315602,0.473699,0.822195) - Old Polarization: (-0.868719,0.492823,0.0495254) - New Momentum Direction: (0.427482,0.641624,0.63685) - New Polarization: (-0.782917,0.614975,-0.0940575) - *** FresnelRefraction *** -Track (trackID 1347, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.975611,-0.20239,-0.0849798) - Old Polarization: (-0.136787,-0.257771,-0.956474) - New Momentum Direction: (0.954582,-0.274713,-0.115347) - New Polarization: (-0.219095,-0.384853,-0.896597) - *** FresnelRefraction *** -Track (trackID 1346, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.573371,-0.647652,0.50179) - Old Polarization: (-0.582063,-0.753032,-0.306831) - New Momentum Direction: (0.573371,0.647652,0.50179) - New Polarization: (0.582063,-0.753032,0.306831) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.573371,0.647652,0.50179) - Old Polarization: (0.582063,-0.753032,0.306831) - New Momentum Direction: (-0.573371,0.647652,0.50179) - New Polarization: (0.582063,0.753032,-0.306831) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.573371,0.647652,0.50179) - Old Polarization: (0.582063,0.753032,-0.306831) - New Momentum Direction: (-0.573371,0.647652,-0.50179) - New Polarization: (-0.582063,-0.753032,-0.306831) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.573371,0.647652,-0.50179) - Old Polarization: (-0.582063,-0.753032,-0.306831) - New Momentum Direction: (-0.573371,-0.647652,-0.50179) - New Polarization: (0.582063,-0.753032,0.306831) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.573371,-0.647652,-0.50179) - Old Polarization: (0.582063,-0.753032,0.306831) - New Momentum Direction: (0.573371,-0.647652,-0.50179) - New Polarization: (0.582063,0.753032,-0.306831) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.573371,-0.647652,-0.50179) -Old Polarization: (0.582063,0.753032,-0.306831) -New Polarization: (0.0674396,0.97213,0.224533) -Polarization Change: (0.0674396,0.97213,0.224533) -New Momentum Direction: (-0.751209,-0.0986301,0.652654) -Momentum Change: (-0.751209,-0.0986301,0.652654) - Photon at Boundary! - Old Momentum Direction: (-0.751209,-0.0986301,0.652654) - Old Polarization: (0.0674396,0.97213,0.224533) - New Momentum Direction: (0.751209,-0.0986301,0.652654) - New Polarization: (0.018639,-0.985209,-0.17034) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.751209,-0.0986301,0.652654) - Old Polarization: (0.018639,-0.985209,-0.17034) - New Momentum Direction: (0.751209,-0.0986301,-0.652654) - New Polarization: (-0.018639,0.985209,-0.17034) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.751209,-0.0986301,-0.652654) - Old Polarization: (-0.018639,0.985209,-0.17034) - New Momentum Direction: (0.446919,-0.133672,-0.884531) - New Polarization: (-0.0369468,0.985171,-0.167548) - *** FresnelRefraction *** -Track (trackID 1345, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.990108,0.0833362,-0.11288) - Old Polarization: (-0.117972,0.0589191,-0.991267) - New Momentum Direction: (0.981804,0.112787,-0.152772) - New Polarization: (-0.171519,0.181446,-0.968328) - *** FresnelRefraction *** -Track (trackID 1344, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.693146,-0.641056,0.329538) -Old Polarization: (-0.449572,-0.741858,-0.497525) -New Polarization: (0.147777,0.971176,-0.187028) -Polarization Change: (0.147777,0.971176,-0.187028) -New Momentum Direction: (-0.481921,-0.0944275,-0.871112) -Momentum Change: (-0.481921,-0.0944275,-0.871112) - -** Photon absorbed! ** -Track (trackID 1343, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1342, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1341, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1340, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.753332,0.625038,0.204494) - Old Polarization: (-0.380407,0.667807,-0.639785) - New Momentum Direction: (0.462024,0.842902,0.275772) - New Polarization: (-0.635356,0.531533,-0.560174) - *** FresnelRefraction *** -Track (trackID 1339, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.623655,0.686066,0.374656) - Old Polarization: (-0.526366,0.72291,-0.447594) - New Momentum Direction: (0.623655,-0.686066,0.374656) - New Polarization: (-0.658168,-0.719443,-0.221846) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.623655,-0.686066,0.374656) - Old Polarization: (-0.658168,-0.719443,-0.221846) - New Momentum Direction: (-0.623655,-0.686066,0.374656) - New Polarization: (-0.658168,0.719443,0.221846) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.623655,-0.686066,0.374656) - Old Polarization: (-0.658168,0.719443,0.221846) - New Momentum Direction: (-0.623655,-0.686066,-0.374656) - New Polarization: (0.658168,-0.719443,0.221846) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.623655,-0.686066,-0.374656) -Old Polarization: (0.658168,-0.719443,0.221846) -New Polarization: (-0.567232,0.480814,-0.66863) -Polarization Change: (-0.567232,0.480814,-0.66863) -New Momentum Direction: (-0.333903,0.607889,0.720402) -Momentum Change: (-0.333903,0.607889,0.720402) - -** Photon absorbed! ** -Track (trackID 1338, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1337, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.989967,-0.0909068,-0.108174) - Old Polarization: (-0.119848,-0.134688,-0.983614) - New Momentum Direction: (0.981477,-0.123255,-0.146667) - New Polarization: (-0.174048,-0.253715,-0.951491) - *** FresnelRefraction *** -Track (trackID 1336, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.469363,-0.606198,0.642046) -Old Polarization: (-0.696304,-0.701238,-0.153057) -New Polarization: (-0.404521,0.914356,0.0177724) -Polarization Change: (-0.404521,0.914356,0.0177724) -New Momentum Direction: (0.904243,0.39699,0.157302) -Momentum Change: (0.904243,0.39699,0.157302) - -** Photon absorbed! ** -Track (trackID 1335, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.399817,0.585881,0.704904) - Old Polarization: (-0.777471,0.624095,-0.0777399) - New Momentum Direction: (0.399817,0.585881,-0.704904) - New Polarization: (0.801202,-0.596939,-0.0417086) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.399817,0.585881,-0.704904) - Old Polarization: (0.801202,-0.596939,-0.0417086) - New Momentum Direction: (0.399817,-0.585881,-0.704904) - New Polarization: (-0.801202,-0.596939,0.0417086) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1334, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.904301,-0.425999,0.0276307) - Old Polarization: (-0.213826,-0.508024,-0.83438) - New Momentum Direction: (0.816057,-0.57676,0.0374092) - New Polarization: (-0.359871,-0.557695,-0.747977) - *** FresnelRefraction *** -Track (trackID 1333, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. ** Photon absorbed! ** Track (trackID 1332, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 99 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.755189,-0.0888758,-0.649454) + Old Polarization: (-0.537691,0.482709,-0.691289) + New Momentum Direction: (0.455497,-0.120701,-0.882017) + New Polarization: (-0.803743,0.370245,-0.465742) + *** FresnelRefraction *** Track (trackID 1331, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 98 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.523441,-0.716524,0.461089) +Old Polarization: (-0.798884,-0.224524,0.558009) +New Polarization: (-0.283961,-0.613913,0.73653) +Polarization Change: (-0.283961,-0.613913,0.73653) +New Momentum Direction: (-0.916807,0.398774,-0.0210788) +Momentum Change: (-0.916807,0.398774,-0.0210788) + Photon at Boundary! + Old Momentum Direction: (-0.916807,0.398774,-0.0210788) + Old Polarization: (-0.283961,-0.613913,0.73653) + New Momentum Direction: (-0.84119,0.539986,-0.0285431) + New Polarization: (0.438663,0.71231,0.547895) + *** FresnelRefraction *** Track (trackID 1330, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 97 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.46478,-0.800572,-0.378238) + Old Polarization: (-0.864585,-0.318209,-0.38889) + New Momentum Direction: (0.629954,-0.583388,-0.512656) + New Polarization: (-0.170428,0.540169,-0.824119) + *** FresnelRefraction *** Track (trackID 1329, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. +### pop requested out of 96 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.518194,-0.674194,-0.526249) + Old Polarization: (-0.806732,-0.180983,-0.562521) + New Momentum Direction: (0.518194,0.674194,-0.526249) + New Polarization: (0.597949,0.154346,0.786533) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.518194,0.674194,-0.526249) + Old Polarization: (0.597949,0.154346,0.786533) + New Momentum Direction: (0.518194,0.674194,0.526249) + New Polarization: (-0.597949,-0.154346,0.786533) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.518194,0.674194,0.526249) + Old Polarization: (-0.597949,-0.154346,0.786533) + New Momentum Direction: (-0.518194,0.674194,0.526249) + New Polarization: (-0.597949,0.154346,-0.786533) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1328, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1327, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. +### pop requested out of 95 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.691974,-0.642265,0.32965) - Old Polarization: (-0.451134,-0.741194,-0.497102) - New Momentum Direction: (0.189131,-0.873601,0.448386) - New Polarization: (-0.777537,-0.412117,-0.474969) + Old Momentum Direction: (0.820453,-0.00814879,0.571656) + Old Polarization: (-0.465108,0.571947,0.675686) + New Momentum Direction: (0.628411,-0.0110874,0.777803) + New Polarization: (-0.694503,0.442385,0.567416) + *** FresnelRefraction *** +Track (trackID 1327, parentID 1) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.451355,-0.863949,0.223318) + Old Polarization: (-0.877538,-0.384341,0.28672) + New Momentum Direction: (0.613979,-0.728524,0.30378) + New Polarization: (0.32839,0.585738,0.740994) *** FresnelRefraction *** Track (trackID 1326, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.296293,-0.372099,0.879632) - Old Polarization: (-0.88844,-0.445408,0.110845) - New Momentum Direction: (0.402246,-0.50516,0.763552) - New Polarization: (-0.59234,-0.779519,-0.203673) - *** FresnelRefraction *** +### pop requested out of 93 stacked tracks. + +** Photon absorbed! ** Track (trackID 1325, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. +### pop requested out of 92 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.945209,0.324409,-0.0365811) +Old Polarization: (-0.324756,0.94579,-0.00380505) +New Polarization: (0.167361,-0.827602,-0.535785) +Polarization Change: (0.167361,-0.827602,-0.535785) +New Momentum Direction: (-0.33626,0.462946,-0.820128) +Momentum Change: (-0.33626,0.462946,-0.820128) Photon at Boundary! - Old Momentum Direction: (0.521648,-0.630245,0.575043) - Old Polarization: (-0.639658,-0.734926,-0.225213) - New Momentum Direction: (0.521648,0.630245,0.575043) - New Polarization: (0.639658,-0.734926,0.225213) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.521648,0.630245,0.575043) - Old Polarization: (0.639658,-0.734926,0.225213) - New Momentum Direction: (0.521648,0.630245,-0.575043) - New Polarization: (-0.639658,0.734926,0.225213) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.521648,0.630245,-0.575043) - Old Polarization: (-0.639658,0.734926,0.225213) - New Momentum Direction: (-0.521648,0.630245,-0.575043) - New Polarization: (-0.639658,-0.734926,-0.225213) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (-0.33626,0.462946,-0.820128) + Old Polarization: (0.167361,-0.827602,-0.535785) + New Momentum Direction: (-0.45682,0.628928,-0.629098) + New Polarization: (-0.564658,0.341447,0.751382) + *** FresnelRefraction *** Track (trackID 1324, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1323, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. +### pop requested out of 91 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.306716,0.466608,0.82958) - Old Polarization: (-0.875492,0.480255,0.0535653) - New Momentum Direction: (0.417207,0.634698,0.650459) - New Polarization: (-0.779852,0.617536,-0.102373) + Old Momentum Direction: (0.767703,-0.148218,0.623428) + Old Polarization: (-0.522847,0.417602,0.743129) + New Momentum Direction: (0.498695,-0.200485,0.843273) + New Polarization: (-0.777885,0.325646,0.537448) + *** FresnelRefraction *** +Track (trackID 1323, parentID 1) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.945602,0.323335,-0.0359451) + Old Polarization: (-0.323649,0.946172,-0.00313745) + New Momentum Direction: (0.897254,0.438812,-0.0487828) + New Polarization: (-0.440295,0.897505,-0.0249984) *** FresnelRefraction *** Track (trackID 1322, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. +### pop requested out of 89 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.284096,0.405539,0.868808) - Old Polarization: (-0.903441,0.416663,0.100932) - New Momentum Direction: (0.384956,0.549514,0.741515) - New Polarization: (-0.668739,0.719793,-0.186242) + Old Momentum Direction: (0.893755,0.174133,0.413376) + Old Polarization: (-0.382653,0.776849,0.500083) + New Momentum Direction: (0.79268,0.236667,0.561825) + New Polarization: (-0.557619,0.653962,0.511268) *** FresnelRefraction *** Track (trackID 1321, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. +### pop requested out of 88 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.475592,-0.764874,-0.434488) +Old Polarization: (-0.850612,-0.27398,-0.448769) +New Polarization: (0.9941,-0.104189,0.0301681) +Polarization Change: (0.9941,-0.104189,0.0301681) +New Momentum Direction: (0.0447602,0.647377,0.760854) +Momentum Change: (0.0447602,0.647377,0.760854) Photon at Boundary! - Old Momentum Direction: (0.814415,0.569003,0.113857) - Old Polarization: (-0.314503,0.597712,-0.737447) - New Momentum Direction: (0.617451,0.771319,0.154341) - New Polarization: (-0.529834,0.552834,-0.643156) + Old Momentum Direction: (0.0447602,0.647377,0.760854) + Old Polarization: (0.9941,-0.104189,0.0301681) + New Momentum Direction: (0.0608688,0.88036,0.470384) + New Polarization: (0.997521,-0.0369747,-0.0598804) *** FresnelRefraction *** Track (trackID 1320, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1319, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. +### pop requested out of 87 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.856498,-0.507775,0.0926044) - Old Polarization: (-0.269761,-0.593336,-0.758407) - New Momentum Direction: (0.712273,-0.690513,0.125931) - New Polarization: (-0.456857,-0.592291,-0.663681) + Old Momentum Direction: (0.834513,0.0746039,-0.545914) + Old Polarization: (-0.445157,0.675147,-0.588227) + New Momentum Direction: (0.671322,0.100354,-0.734341) + New Polarization: (-0.656173,0.541164,-0.525908) + *** FresnelRefraction *** +Track (trackID 1319, parentID 1) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.582475,-0.574862,0.574679) +Old Polarization: (-0.731029,-0.0613421,0.679584) +New Polarization: (-0.105267,0.00714667,-0.994418) +Polarization Change: (-0.105267,0.00714667,-0.994418) +New Momentum Direction: (-0.991968,-0.0712758,0.104496) +Momentum Change: (-0.991968,-0.0712758,0.104496) + Photon at Boundary! + Old Momentum Direction: (-0.991968,-0.0712758,0.104496) + Old Polarization: (-0.105267,0.00714667,-0.994418) + New Momentum Direction: (-0.985089,-0.0969449,0.142129) + New Polarization: (0.154536,-0.861689,0.483332) *** FresnelRefraction *** Track (trackID 1318, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. +### pop requested out of 85 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.273399,-0.299077,0.914224) - Old Polarization: (-0.917083,-0.367778,0.153941) - New Momentum Direction: (0.369679,-0.404399,0.83654) - New Polarization: (-0.366414,-0.890807,-0.268709) + Old Momentum Direction: (0.432924,-0.898955,-0.0667574) + Old Polarization: (-0.901414,-0.431279,-0.0380898) + New Momentum Direction: (0.585947,-0.805297,-0.0903537) + New Polarization: (0.769804,0.587986,-0.248344) *** FresnelRefraction *** Track (trackID 1317, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.263232,-0.286975,0.921061) - Old Polarization: (-0.923792,-0.350156,0.154915) - New Momentum Direction: (0.357885,-0.390165,0.848346) - New Polarization: (-0.33884,-0.900858,-0.271372) - *** FresnelRefraction *** -Track (trackID 1316, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.721888,-0.627438,0.29189) - Old Polarization: (-0.417058,-0.731059,-0.540014) - New Momentum Direction: (-0.721888,-0.627438,0.29189) - New Polarization: (-0.219151,0.607371,0.763592) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.721888,-0.627438,0.29189) - Old Polarization: (-0.219151,0.607371,0.763592) - New Momentum Direction: (-0.721888,0.627438,0.29189) - New Polarization: (0.219151,0.607371,-0.763592) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.721888,0.627438,0.29189) - Old Polarization: (0.219151,0.607371,-0.763592) - New Momentum Direction: (-0.721888,0.627438,-0.29189) - New Polarization: (-0.219151,-0.607371,-0.763592) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.721888,0.627438,-0.29189) - Old Polarization: (-0.219151,-0.607371,-0.763592) - New Momentum Direction: (0.721888,0.627438,-0.29189) - New Polarization: (0.101042,0.321711,0.941431) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.721888,0.627438,-0.29189) - Old Polarization: (0.101042,0.321711,0.941431) - New Momentum Direction: (0.721888,-0.627438,-0.29189) - New Polarization: (-0.101042,0.321711,-0.941431) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.721888,-0.627438,-0.29189) - Old Polarization: (-0.101042,0.321711,-0.941431) - New Momentum Direction: (0.347737,-0.850104,-0.395477) - New Polarization: (-0.203399,0.343358,-0.916916) - *** FresnelRefraction *** -Track (trackID 1315, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.712743,-0.627979,0.312473) - Old Polarization: (-0.425652,-0.741313,-0.518918) - New Momentum Direction: (0.327889,-0.845795,0.420855) - New Polarization: (-0.712144,-0.514007,-0.478171) - *** FresnelRefraction *** -Track (trackID 1314, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. +### pop requested out of 84 stacked tracks. ** Photon absorbed! ** +Track (trackID 1316, parentID 1) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.618156,-0.418523,-0.665373) + Old Polarization: (-0.691855,0.112115,-0.713279) + New Momentum Direction: (0.618156,-0.418523,0.665373) + New Polarization: (0.691855,-0.112115,-0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.618156,-0.418523,0.665373) + Old Polarization: (0.691855,-0.112115,-0.713279) + New Momentum Direction: (-0.618156,-0.418523,0.665373) + New Polarization: (0.691855,0.112115,0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.618156,-0.418523,0.665373) + Old Polarization: (0.691855,0.112115,0.713279) + New Momentum Direction: (-0.618156,0.418523,0.665373) + New Polarization: (-0.691855,0.112115,-0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.618156,0.418523,0.665373) + Old Polarization: (-0.691855,0.112115,-0.713279) + New Momentum Direction: (-0.618156,0.418523,-0.665373) + New Polarization: (0.691855,-0.112115,-0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.618156,0.418523,-0.665373) + Old Polarization: (0.691855,-0.112115,-0.713279) + New Momentum Direction: (0.618156,0.418523,-0.665373) + New Polarization: (0.691855,0.112115,0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.618156,0.418523,-0.665373) + Old Polarization: (0.691855,0.112115,0.713279) + New Momentum Direction: (0.618156,-0.418523,-0.665373) + New Polarization: (-0.691855,0.112115,-0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.618156,-0.418523,-0.665373) + Old Polarization: (-0.691855,0.112115,-0.713279) + New Momentum Direction: (0.618156,-0.418523,0.665373) + New Polarization: (0.691855,-0.112115,-0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.618156,-0.418523,0.665373) + Old Polarization: (0.691855,-0.112115,-0.713279) + New Momentum Direction: (-0.618156,-0.418523,0.665373) + New Polarization: (0.691855,0.112115,0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.618156,-0.418523,0.665373) + Old Polarization: (0.691855,0.112115,0.713279) + New Momentum Direction: (-0.618156,-0.418523,-0.665373) + New Polarization: (-0.691855,-0.112115,0.713279) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.618156,-0.418523,-0.665373) + Old Polarization: (-0.691855,-0.112115,0.713279) + New Momentum Direction: (0.618156,-0.418523,-0.665373) + New Polarization: (-0.691855,0.112115,-0.713279) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1315, parentID 1) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1314, parentID 1) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.655101,-0.339051,-0.675194) + Old Polarization: (-0.650612,0.201185,-0.732276) + New Momentum Direction: (0.883341,-0.457177,-0.103432) + New Polarization: (0.0584933,-0.111424,0.99205) + *** FresnelRefraction *** Track (trackID 1313, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. +### pop requested out of 80 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.494322,-0.618281,0.611044) - Old Polarization: (-0.669607,-0.719076,-0.185895) - New Momentum Direction: (0.494322,0.618281,0.611044) - New Polarization: (0.669607,-0.719076,0.185895) + Old Momentum Direction: (0.439645,-0.892415,0.101522) + Old Polarization: (-0.893379,-0.422836,0.151929) + New Momentum Direction: (0.439645,0.892415,0.101522) + New Polarization: (0.808373,-0.34389,-0.477779) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.439645,0.892415,0.101522) + Old Polarization: (0.808373,-0.34389,-0.477779) + New Momentum Direction: (-0.439645,0.892415,0.101522) + New Polarization: (0.808373,0.34389,0.477779) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.494322,0.618281,0.611044) - Old Polarization: (0.669607,-0.719076,0.185895) - New Momentum Direction: (0.494322,0.618281,-0.611044) - New Polarization: (-0.669607,0.719076,0.185895) - *** TotalInternalReflection *** + Old Momentum Direction: (-0.439645,0.892415,0.101522) + Old Polarization: (0.808373,0.34389,0.477779) + New Momentum Direction: (-0.439645,-0.892415,0.101522) + New Polarization: (-0.598769,0.206962,-0.77372) + *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (0.494322,0.618281,-0.611044) - Old Polarization: (-0.669607,0.719076,0.185895) - New Momentum Direction: (-0.494322,0.618281,-0.611044) - New Polarization: (-0.669607,-0.719076,-0.185895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.494322,0.618281,-0.611044) - Old Polarization: (-0.669607,-0.719076,-0.185895) - New Momentum Direction: (-0.494322,-0.618281,-0.611044) - New Polarization: (0.669607,-0.719076,0.185895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.494322,-0.618281,-0.611044) - Old Polarization: (0.669607,-0.719076,0.185895) - New Momentum Direction: (-0.494322,-0.618281,0.611044) - New Polarization: (-0.669607,0.719076,0.185895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.494322,-0.618281,0.611044) - Old Polarization: (-0.669607,0.719076,0.185895) - New Momentum Direction: (0.494322,-0.618281,0.611044) - New Polarization: (-0.669607,-0.719076,-0.185895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.494322,-0.618281,0.611044) - Old Polarization: (-0.669607,-0.719076,-0.185895) - New Momentum Direction: (0.494322,0.618281,0.611044) - New Polarization: (0.669607,-0.719076,0.185895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.494322,0.618281,0.611044) - Old Polarization: (0.669607,-0.719076,0.185895) - New Momentum Direction: (0.494322,0.618281,-0.611044) - New Polarization: (-0.669607,0.719076,0.185895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.494322,0.618281,-0.611044) - Old Polarization: (-0.669607,0.719076,0.185895) - New Momentum Direction: (-0.494322,0.618281,-0.611044) - New Polarization: (-0.669607,-0.719076,-0.185895) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.494322,0.618281,-0.611044) - Old Polarization: (-0.669607,-0.719076,-0.185895) - New Momentum Direction: (-0.494322,-0.618281,-0.611044) - New Polarization: (0.669607,-0.719076,0.185895) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.494322,-0.618281,-0.611044) -Old Polarization: (0.669607,-0.719076,0.185895) -New Polarization: (-0.807086,0.584446,-0.0838774) -Polarization Change: (-0.807086,0.584446,-0.0838774) -New Momentum Direction: (-0.546603,-0.685881,0.480408) -Momentum Change: (-0.546603,-0.685881,0.480408) - Photon at Boundary! - Old Momentum Direction: (-0.546603,-0.685881,0.480408) - Old Polarization: (-0.807086,0.584446,-0.0838774) - New Momentum Direction: (0.546603,-0.685881,0.480408) - New Polarization: (-0.807086,-0.584446,0.0838774) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.546603,-0.685881,0.480408) - Old Polarization: (-0.807086,-0.584446,0.0838774) - New Momentum Direction: (0.741435,-0.160103,0.651645) - New Polarization: (-0.162823,0.899171,0.406176) + Old Momentum Direction: (-0.439645,-0.892415,0.101522) + Old Polarization: (-0.598769,0.206962,-0.77372) + New Momentum Direction: (-0.595447,-0.79154,0.1375) + New Polarization: (-0.630554,0.354393,-0.690513) *** FresnelRefraction *** Track (trackID 1312, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. +### pop requested out of 79 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.654201,-0.64589,0.393507) - Old Polarization: (-0.491777,-0.758555,-0.427493) - New Momentum Direction: (-0.654201,-0.64589,0.393507) - New Polarization: (-0.491777,0.758555,0.427493) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654201,-0.64589,0.393507) - Old Polarization: (-0.491777,0.758555,0.427493) - New Momentum Direction: (-0.654201,0.64589,0.393507) - New Polarization: (0.491777,0.758555,-0.427493) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654201,0.64589,0.393507) - Old Polarization: (0.491777,0.758555,-0.427493) - New Momentum Direction: (-0.654201,0.64589,-0.393507) - New Polarization: (-0.491777,-0.758555,-0.427493) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654201,0.64589,-0.393507) - Old Polarization: (-0.491777,-0.758555,-0.427493) - New Momentum Direction: (0.654201,0.64589,-0.393507) - New Polarization: (-0.491777,0.758555,0.427493) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.654201,0.64589,-0.393507) - Old Polarization: (-0.491777,0.758555,0.427493) - New Momentum Direction: (0.654201,-0.64589,-0.393507) - New Polarization: (0.491777,0.758555,-0.427493) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.654201,-0.64589,-0.393507) - Old Polarization: (0.491777,0.758555,-0.427493) - New Momentum Direction: (0.654201,-0.64589,0.393507) - New Polarization: (-0.491777,-0.758555,-0.427493) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.654201,-0.64589,0.393507) - Old Polarization: (-0.491777,-0.758555,-0.427493) - New Momentum Direction: (-0.654201,-0.64589,0.393507) - New Polarization: (-0.491777,0.758555,0.427493) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.654201,-0.64589,0.393507) - Old Polarization: (-0.491777,0.758555,0.427493) - New Momentum Direction: (-0.654201,0.64589,0.393507) - New Polarization: (0.491777,0.758555,-0.427493) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.46415,-0.853177,0.238019) + Old Polarization: (-0.868868,-0.38633,0.309542) + New Momentum Direction: (0.625299,-0.711463,0.320657) + New Polarization: (0.279258,0.587686,0.759368) + *** FresnelRefraction *** Track (trackID 1311, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. +### pop requested out of 78 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.521272,-0.622246,0.584025) - Old Polarization: (-0.641576,-0.737008,-0.212602) - New Momentum Direction: (0.521272,0.622246,0.584025) - New Polarization: (0.641576,-0.737008,0.212602) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.727796,-0.169464,-0.664526) + Old Polarization: (-0.567608,0.394968,-0.722372) + New Momentum Direction: (0.383601,-0.228203,-0.894859) + New Polarization: (-0.839152,0.318443,-0.440929) + *** FresnelRefraction *** Track (trackID 1310, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. +### pop requested out of 77 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.450764,-0.58754,0.672019) - Old Polarization: (-0.718104,-0.685865,-0.117969) - New Momentum Direction: (0.450764,-0.58754,-0.672019) - New Polarization: (0.718104,0.685865,-0.117969) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.450764,-0.58754,-0.672019) - Old Polarization: (0.718104,0.685865,-0.117969) - New Momentum Direction: (0.450764,0.58754,-0.672019) - New Polarization: (-0.718104,0.685865,0.117969) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (0.450764,0.58754,-0.672019) -Old Polarization: (-0.718104,0.685865,0.117969) -New Polarization: (0.363184,-0.499169,-0.786719) -Polarization Change: (0.363184,-0.499169,-0.786719) -New Momentum Direction: (0.648042,-0.471343,0.598229) -Momentum Change: (0.648042,-0.471343,0.598229) - Photon at Boundary! - Old Momentum Direction: (0.648042,-0.471343,0.598229) - Old Polarization: (0.363184,-0.499169,-0.786719) - New Momentum Direction: (-0.648042,-0.471343,0.598229) - New Polarization: (0.363184,0.499169,0.786719) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.648042,-0.471343,0.598229) - Old Polarization: (0.363184,0.499169,0.786719) - New Momentum Direction: (-0.648042,0.471343,0.598229) - New Polarization: (-0.363184,0.499169,-0.786719) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.648042,0.471343,0.598229) - Old Polarization: (-0.363184,0.499169,-0.786719) - New Momentum Direction: (-0.648042,0.471343,-0.598229) - New Polarization: (0.363184,-0.499169,-0.786719) - *** TotalInternalReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.813506,-0.0430717,0.579959) + Old Polarization: (-0.469928,0.538806,0.699182) + New Momentum Direction: (0.620781,-0.058064,0.781831) + New Polarization: (-0.695654,0.419067,0.583479) + *** FresnelRefraction *** Track (trackID 1309, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.60921,-0.440458,-0.659439) + Old Polarization: (-0.701977,0.0873135,-0.706827) + New Momentum Direction: (0.60921,-0.440458,0.659439) + New Polarization: (0.701977,-0.0873135,-0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60921,-0.440458,0.659439) + Old Polarization: (0.701977,-0.0873135,-0.706827) + New Momentum Direction: (-0.60921,-0.440458,0.659439) + New Polarization: (0.701977,0.0873135,0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60921,-0.440458,0.659439) + Old Polarization: (0.701977,0.0873135,0.706827) + New Momentum Direction: (-0.60921,0.440458,0.659439) + New Polarization: (-0.701977,0.0873135,-0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60921,0.440458,0.659439) + Old Polarization: (-0.701977,0.0873135,-0.706827) + New Momentum Direction: (-0.60921,0.440458,-0.659439) + New Polarization: (0.701977,-0.0873135,-0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60921,0.440458,-0.659439) + Old Polarization: (0.701977,-0.0873135,-0.706827) + New Momentum Direction: (0.60921,0.440458,-0.659439) + New Polarization: (0.701977,0.0873135,0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60921,0.440458,-0.659439) + Old Polarization: (0.701977,0.0873135,0.706827) + New Momentum Direction: (0.60921,-0.440458,-0.659439) + New Polarization: (-0.701977,0.0873135,-0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60921,-0.440458,-0.659439) + Old Polarization: (-0.701977,0.0873135,-0.706827) + New Momentum Direction: (0.60921,-0.440458,0.659439) + New Polarization: (0.701977,-0.0873135,-0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.60921,-0.440458,0.659439) + Old Polarization: (0.701977,-0.0873135,-0.706827) + New Momentum Direction: (-0.60921,-0.440458,0.659439) + New Polarization: (0.701977,0.0873135,0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60921,-0.440458,0.659439) + Old Polarization: (0.701977,0.0873135,0.706827) + New Momentum Direction: (-0.60921,-0.440458,-0.659439) + New Polarization: (-0.701977,-0.0873135,0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60921,-0.440458,-0.659439) + Old Polarization: (-0.701977,-0.0873135,0.706827) + New Momentum Direction: (-0.60921,0.440458,-0.659439) + New Polarization: (0.701977,-0.0873135,-0.706827) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.60921,0.440458,-0.659439) + Old Polarization: (0.701977,-0.0873135,-0.706827) + New Momentum Direction: (0.60921,0.440458,-0.659439) + New Polarization: (0.701977,0.0873135,0.706827) + *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1308, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. +### pop requested out of 75 stacked tracks. ** Photon absorbed! ** Track (trackID 1307, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.21864,0.0175559,0.975648) - Old Polarization: (-0.975642,-0.014357,0.218897) - New Momentum Direction: (0.29642,0.0238014,0.954761) - New Polarization: (0.946893,0.123116,-0.297047) - *** FresnelRefraction *** +### pop requested out of 74 stacked tracks. + +** Photon absorbed! ** Track (trackID 1306, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. +### pop requested out of 73 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.624934,-0.654953,0.424845) - Old Polarization: (-0.524976,-0.755347,-0.392239) - New Momentum Direction: (0.624934,0.654953,0.424845) - New Polarization: (0.524976,-0.755347,0.392239) + Old Momentum Direction: (0.61892,-0.428799,-0.65808) + Old Polarization: (-0.692129,0.0983683,-0.715039) + New Momentum Direction: (0.61892,-0.428799,0.65808) + New Polarization: (0.692129,-0.0983683,-0.715039) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.624934,0.654953,0.424845) - Old Polarization: (0.524976,-0.755347,0.392239) - New Momentum Direction: (-0.624934,0.654953,0.424845) - New Polarization: (0.524976,0.755347,-0.392239) + Old Momentum Direction: (0.61892,-0.428799,0.65808) + Old Polarization: (0.692129,-0.0983683,-0.715039) + New Momentum Direction: (-0.61892,-0.428799,0.65808) + New Polarization: (0.692129,0.0983683,0.715039) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.624934,0.654953,0.424845) - Old Polarization: (0.524976,0.755347,-0.392239) - New Momentum Direction: (-0.624934,0.654953,-0.424845) - New Polarization: (-0.524976,-0.755347,-0.392239) + Old Momentum Direction: (-0.61892,-0.428799,0.65808) + Old Polarization: (0.692129,0.0983683,0.715039) + New Momentum Direction: (-0.61892,0.428799,0.65808) + New Polarization: (-0.692129,0.0983683,-0.715039) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.61892,0.428799,0.65808) + Old Polarization: (-0.692129,0.0983683,-0.715039) + New Momentum Direction: (-0.61892,0.428799,-0.65808) + New Polarization: (0.692129,-0.0983683,-0.715039) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.61892,0.428799,-0.65808) + Old Polarization: (0.692129,-0.0983683,-0.715039) + New Momentum Direction: (0.61892,0.428799,-0.65808) + New Polarization: (0.692129,0.0983683,0.715039) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.61892,0.428799,-0.65808) + Old Polarization: (0.692129,0.0983683,0.715039) + New Momentum Direction: (0.61892,-0.428799,-0.65808) + New Polarization: (-0.692129,0.0983683,-0.715039) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.61892,-0.428799,-0.65808) + Old Polarization: (-0.692129,0.0983683,-0.715039) + New Momentum Direction: (0.61892,-0.428799,0.65808) + New Polarization: (0.692129,-0.0983683,-0.715039) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.61892,-0.428799,0.65808) + Old Polarization: (0.692129,-0.0983683,-0.715039) + New Momentum Direction: (-0.61892,-0.428799,0.65808) + New Polarization: (0.692129,0.0983683,0.715039) *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1305, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.772122,0.610065,0.177898) - Old Polarization: (-0.359525,0.650203,-0.669312) - New Momentum Direction: (-0.772122,0.610065,0.177898) - New Polarization: (-0.0678806,-0.357523,0.931434) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.772122,0.610065,0.177898) - Old Polarization: (-0.0678806,-0.357523,0.931434) - New Momentum Direction: (-0.772122,-0.610065,0.177898) - New Polarization: (0.0678806,-0.357523,-0.931434) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.772122,-0.610065,0.177898) - Old Polarization: (0.0678806,-0.357523,-0.931434) - New Momentum Direction: (-0.514608,-0.823142,0.240032) - New Polarization: (0.130379,-0.351811,-0.926947) - *** FresnelRefraction *** +### pop requested out of 72 stacked tracks. + +** Photon absorbed! ** Track (trackID 1304, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. +### pop requested out of 71 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.816715,0.564828,0.118092) - Old Polarization: (-0.30897,0.600888,-0.737205) - New Momentum Direction: (0.628528,0.761325,0.159175) - New Polarization: (-0.516494,0.561558,-0.646442) + Old Momentum Direction: (0.697754,-0.234968,-0.676705) + Old Polarization: (-0.602,0.319661,-0.731719) + New Momentum Direction: (0.254044,-0.317252,-0.913681) + New Polarization: (-0.893129,0.2856,-0.347496) *** FresnelRefraction *** Track (trackID 1303, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1302, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1301, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. +### pop requested out of 70 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.274841,0.391311,0.878259) - Old Polarization: (-0.911083,0.397866,0.107843) - New Momentum Direction: (0.373625,0.531957,0.759886) - New Polarization: (-0.645256,0.737573,-0.199073) + Old Momentum Direction: (0.881868,0.144839,0.448698) + Old Polarization: (-0.396276,0.743348,0.538887) + New Momentum Direction: (0.767354,0.196978,0.610219) + New Polarization: (-0.58163,0.614456,0.533058) + *** FresnelRefraction *** +Track (trackID 1302, parentID 1) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.571028,-0.526525,-0.62984) + Old Polarization: (-0.74404,-0.00774439,-0.668091) + New Momentum Direction: (0.571028,-0.526525,0.62984) + New Polarization: (0.74404,0.00774439,-0.668091) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.571028,-0.526525,0.62984) + Old Polarization: (0.74404,0.00774439,-0.668091) + New Momentum Direction: (-0.571028,-0.526525,0.62984) + New Polarization: (0.74404,-0.00774439,0.668091) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.571028,-0.526525,0.62984) + Old Polarization: (0.74404,-0.00774439,0.668091) + New Momentum Direction: (-0.571028,0.526525,0.62984) + New Polarization: (-0.74404,-0.00774439,-0.668091) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.571028,0.526525,0.62984) +Old Polarization: (-0.74404,-0.00774439,-0.668091) +New Polarization: (0.400241,0.267835,0.876397) +Polarization Change: (0.400241,0.267835,0.876397) +New Momentum Direction: (0.838252,-0.493459,-0.232015) +Momentum Change: (0.838252,-0.493459,-0.232015) + Photon at Boundary! + Old Momentum Direction: (0.838252,-0.493459,-0.232015) + Old Polarization: (0.400241,0.267835,0.876397) + New Momentum Direction: (0.671377,-0.670681,-0.315341) + New Polarization: (-0.619046,-0.741438,0.258945) + *** FresnelRefraction *** +Track (trackID 1301, parentID 1) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.819218,0.060292,-0.570303) + Old Polarization: (-0.466212,0.649124,-0.60107) + New Momentum Direction: (0.626226,0.0819662,-0.775321) + New Polarization: (-0.695684,0.507663,-0.508234) *** FresnelRefraction *** Track (trackID 1300, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.507227,-0.62798,0.590222) - Old Polarization: (-0.654743,-0.726123,-0.209899) - New Momentum Direction: (0.507227,0.62798,0.590222) - New Polarization: (0.654743,-0.726123,0.209899) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.507227,0.62798,0.590222) - Old Polarization: (0.654743,-0.726123,0.209899) - New Momentum Direction: (0.507227,0.62798,-0.590222) - New Polarization: (-0.654743,0.726123,0.209899) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.507227,0.62798,-0.590222) - Old Polarization: (-0.654743,0.726123,0.209899) - New Momentum Direction: (-0.507227,0.62798,-0.590222) - New Polarization: (-0.654743,-0.726123,-0.209899) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.507227,0.62798,-0.590222) - Old Polarization: (-0.654743,-0.726123,-0.209899) - New Momentum Direction: (-0.507227,-0.62798,-0.590222) - New Polarization: (0.654743,-0.726123,0.209899) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.507227,-0.62798,-0.590222) -Old Polarization: (0.654743,-0.726123,0.209899) -New Polarization: (0.79308,-0.608722,0.021919) -Polarization Change: (0.79308,-0.608722,0.021919) -New Momentum Direction: (0.429583,0.533451,-0.728621) -Momentum Change: (0.429583,0.533451,-0.728621) - Photon at Boundary! - Old Momentum Direction: (0.429583,0.533451,-0.728621) - Old Polarization: (0.79308,-0.608722,0.021919) - New Momentum Direction: (0.429583,-0.533451,-0.728621) - New Polarization: (-0.79308,-0.608722,-0.021919) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.429583,-0.533451,-0.728621) - Old Polarization: (-0.79308,-0.608722,-0.021919) - New Momentum Direction: (0.584068,-0.725288,-0.364447) - New Polarization: (-0.766949,-0.640141,0.0448241) - *** FresnelRefraction *** +### pop requested out of 67 stacked tracks. + +** Photon absorbed! ** Track (trackID 1299, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.682553,-0.345747,0.643879) + Old Polarization: (-0.61918,0.194459,0.76079) + New Momentum Direction: (-0.682553,-0.345747,0.643879) + New Polarization: (-0.570934,-0.297738,-0.765105) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.682553,-0.345747,0.643879) + Old Polarization: (-0.570934,-0.297738,-0.765105) + New Momentum Direction: (-0.682553,-0.345747,-0.643879) + New Polarization: (0.570934,0.297738,-0.765105) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.682553,-0.345747,-0.643879) + Old Polarization: (0.570934,0.297738,-0.765105) + New Momentum Direction: (-0.682553,0.345747,-0.643879) + New Polarization: (-0.570934,0.297738,0.765105) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.682553,0.345747,-0.643879) + Old Polarization: (-0.570934,0.297738,0.765105) + New Momentum Direction: (0.682553,0.345747,-0.643879) + New Polarization: (0.512045,-0.854865,0.0837596) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.682553,0.345747,-0.643879) + Old Polarization: (0.512045,-0.854865,0.0837596) + New Momentum Direction: (0.682553,0.345747,0.643879) + New Polarization: (-0.512045,0.854865,0.0837596) + *** TotalInternalReflection *** Scattering Photon! -Old Momentum Direction: (0.386274,0.579307,0.717772) -Old Polarization: (-0.789885,0.609594,-0.0669149) -New Polarization: (-0.943856,0.291643,-0.155177) -Polarization Change: (-0.943856,0.291643,-0.155177) -New Momentum Direction: (0.255272,0.942023,0.217781) -Momentum Change: (0.255272,0.942023,0.217781) - Photon at Boundary! - Old Momentum Direction: (0.255272,0.942023,0.217781) - Old Polarization: (-0.943856,0.291643,-0.155177) - New Momentum Direction: (0.345927,0.890639,0.295122) - New Polarization: (0.376054,-0.419782,0.826055) - *** FresnelRefraction *** +Old Momentum Direction: (0.682553,0.345747,0.643879) +Old Polarization: (-0.512045,0.854865,0.0837596) +New Polarization: (0.150788,0.923405,0.352968) +Polarization Change: (0.150788,0.923405,0.352968) +New Momentum Direction: (0.930226,-0.253379,0.265476) +Momentum Change: (0.930226,-0.253379,0.265476) + +** Photon absorbed! ** Track (trackID 1298, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. +### pop requested out of 65 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.436585,-0.893719,0.103247) +Old Polarization: (-0.894808,-0.419453,0.152898) +New Polarization: (-0.947179,-0.119135,-0.297756) +Polarization Change: (-0.947179,-0.119135,-0.297756) +New Momentum Direction: (0.16774,0.607287,-0.776573) +Momentum Change: (0.16774,0.607287,-0.776573) +Scattering Photon! +Old Momentum Direction: (0.16774,0.607287,-0.776573) +Old Polarization: (-0.947179,-0.119135,-0.297756) +New Polarization: (0.688305,-0.0133073,0.725299) +Polarization Change: (0.688305,-0.0133073,0.725299) +New Momentum Direction: (0.702496,0.261599,-0.661865) +Momentum Change: (0.702496,0.261599,-0.661865) Photon at Boundary! - Old Momentum Direction: (0.291503,0.42754,0.855708) - Old Polarization: (-0.894128,0.439688,0.0849083) - New Momentum Direction: (0.395544,0.580134,0.712032) - New Polarization: (-0.714167,0.681742,-0.158725) + Old Momentum Direction: (0.702496,0.261599,-0.661865) + Old Polarization: (0.688305,-0.0133073,0.725299) + New Momentum Direction: (-0.702496,0.261599,-0.661865) + New Polarization: (-0.649521,-0.615795,0.446003) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.702496,0.261599,-0.661865) + Old Polarization: (-0.649521,-0.615795,0.446003) + New Momentum Direction: (-0.702496,0.261599,0.661865) + New Polarization: (0.649521,0.615795,0.446003) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.702496,0.261599,0.661865) + Old Polarization: (0.649521,0.615795,0.446003) + New Momentum Direction: (-0.702496,-0.261599,0.661865) + New Polarization: (-0.649521,0.615795,-0.446003) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.702496,-0.261599,0.661865) + Old Polarization: (-0.649521,0.615795,-0.446003) + New Momentum Direction: (0.702496,-0.261599,0.661865) + New Polarization: (0.565779,-0.358885,-0.742358) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.702496,-0.261599,0.661865) + Old Polarization: (0.565779,-0.358885,-0.742358) + New Momentum Direction: (0.702496,-0.261599,-0.661865) + New Polarization: (-0.565779,0.358885,-0.742358) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.702496,-0.261599,-0.661865) + Old Polarization: (-0.565779,0.358885,-0.742358) + New Momentum Direction: (0.254991,-0.355425,-0.899251) + New Polarization: (-0.869297,0.322996,-0.37416) *** FresnelRefraction *** Track (trackID 1297, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. +### pop requested out of 64 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.528127,0.672329,0.518706) - Old Polarization: (-0.633043,0.718861,-0.287222) - New Momentum Direction: (0.713091,0.0313213,0.700371) - New Polarization: (-0.0740024,-0.990058,0.119623) + Old Momentum Direction: (0.945175,0.309063,0.105473) + Old Polarization: (-0.322697,0.933485,0.156435) + New Momentum Direction: (0.896903,0.418528,0.142829) + New Polarization: (-0.439394,0.879903,0.180842) *** FresnelRefraction *** Track (trackID 1296, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. +### pop requested out of 63 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.97758,-0.191895,-0.0866803) - Old Polarization: (-0.133543,-0.246753,-0.959833) - New Momentum Direction: (0.958386,-0.260165,-0.117519) - New Polarization: (-0.212565,-0.375552,-0.902096) + Old Momentum Direction: (0.697563,-0.23741,-0.676049) + Old Polarization: (-0.602203,0.317027,-0.732698) + New Momentum Direction: (0.256767,-0.320227,-0.91188) + New Polarization: (-0.892138,0.284337,-0.351059) *** FresnelRefraction *** Track (trackID 1295, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.542839,-0.631516,0.553636) - Old Polarization: (-0.617171,-0.747053,-0.247005) - New Momentum Direction: (0.542839,0.631516,0.553636) - New Polarization: (0.617171,-0.747053,0.247005) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.542839,0.631516,0.553636) - Old Polarization: (0.617171,-0.747053,0.247005) - New Momentum Direction: (0.542839,0.631516,-0.553636) - New Polarization: (-0.617171,0.747053,0.247005) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.542839,0.631516,-0.553636) - Old Polarization: (-0.617171,0.747053,0.247005) - New Momentum Direction: (-0.542839,0.631516,-0.553636) - New Polarization: (-0.617171,-0.747053,-0.247005) - *** TotalInternalReflection *** +### pop requested out of 62 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.864094,0.143465,-0.482452) +Old Polarization: (-0.41184,0.752568,-0.513837) +New Polarization: (0.124129,-0.888482,-0.441805) +Polarization Change: (0.124129,-0.888482,-0.441805) +New Momentum Direction: (0.402996,-0.361733,0.84068) +Momentum Change: (0.402996,-0.361733,0.84068) ** Photon absorbed! ** Track (trackID 1294, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. +### pop requested out of 61 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.930324,0.365005,-0.0356257) - Old Polarization: (-0.182072,0.375362,-0.908819) - New Momentum Direction: (0.868995,0.49248,-0.0480677) - New Polarization: (-0.304215,0.455116,-0.836853) + Old Momentum Direction: (0.523535,-0.641604,-0.560584) + Old Polarization: (-0.796735,-0.135557,-0.58893) + New Momentum Direction: (0.523535,0.641604,-0.560584) + New Polarization: (0.796735,-0.135557,0.58893) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.523535,0.641604,-0.560584) + Old Polarization: (0.796735,-0.135557,0.58893) + New Momentum Direction: (0.523535,0.641604,0.560584) + New Polarization: (-0.796735,0.135557,0.58893) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.523535,0.641604,0.560584) + Old Polarization: (-0.796735,0.135557,0.58893) + New Momentum Direction: (-0.523535,0.641604,0.560584) + New Polarization: (-0.796735,-0.135557,-0.58893) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.523535,0.641604,0.560584) +Old Polarization: (-0.796735,-0.135557,-0.58893) +New Polarization: (-0.436215,-0.512919,-0.739345) +Polarization Change: (-0.436215,-0.512919,-0.739345) +New Momentum Direction: (-0.812778,0.577176,0.0791253) +Momentum Change: (-0.812778,0.577176,0.0791253) + Photon at Boundary! + Old Momentum Direction: (-0.812778,0.577176,0.0791253) + Old Polarization: (-0.436215,-0.512919,-0.739345) + New Momentum Direction: (-0.609564,0.785391,0.10767) + New Polarization: (0.672922,0.584436,-0.453443) *** FresnelRefraction *** Track (trackID 1293, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1292, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. +### pop requested out of 60 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.215782,0.0528453,0.975011) - Old Polarization: (-0.97636,0.0245727,0.214748) - New Momentum Direction: (0.293296,0.0718286,0.95332) - New Polarization: (0.863602,0.407831,-0.296422) + Old Momentum Direction: (0.938734,0.290863,0.184872) + Old Polarization: (-0.330694,0.911249,0.245492) + New Momentum Direction: (0.884131,0.394329,0.250635) + New Polarization: (-0.456844,0.842088,0.286673) + *** FresnelRefraction *** +Track (trackID 1292, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.707649,-0.282864,0.647472) + Old Polarization: (-0.591069,0.265093,0.761816) + New Momentum Direction: (0.278163,-0.384538,0.880202) + New Polarization: (-0.88502,0.253547,0.390453) *** FresnelRefraction *** Track (trackID 1291, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. +### pop requested out of 58 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.254837,0.331864,0.908253) - Old Polarization: (-0.93278,0.331969,0.140422) - New Momentum Direction: (0.34658,0.451337,0.8223) - New Polarization: (-0.490627,0.834382,-0.251181) + Old Momentum Direction: (0.858708,0.150553,-0.489852) + Old Polarization: (-0.422357,0.74927,-0.510106) + New Momentum Direction: (0.71684,0.204836,-0.66647) + New Polarization: (-0.625775,0.610553,-0.485419) *** FresnelRefraction *** Track (trackID 1290, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. +### pop requested out of 57 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.264127,0.347114,0.89986) - Old Polarization: (-0.926019,0.352138,0.13597) - New Momentum Direction: (0.357732,0.470129,0.80685) - New Polarization: (-0.524125,0.816182,-0.243186) + Old Momentum Direction: (0.865047,0.0832112,0.494742) + Old Polarization: (-0.410732,0.683739,0.603158) + New Momentum Direction: (0.737157,0.112076,0.666363) + New Polarization: (-0.602297,0.556041,0.572763) *** FresnelRefraction *** Track (trackID 1289, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. +### pop requested out of 56 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.374966,-0.491524,0.786006) - Old Polarization: (-0.807174,-0.590095,0.0160517) - New Momentum Direction: (0.504076,-0.660768,0.556142) - New Polarization: (-0.782151,-0.622342,-0.0304957) + Old Momentum Direction: (0.482741,-0.805868,0.342838) + Old Polarization: (-0.844877,-0.325497,0.424541) + New Momentum Direction: (0.653645,-0.597709,0.464212) + New Polarization: (-0.0914304,0.546526,0.832436) *** FresnelRefraction *** Track (trackID 1288, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. +### pop requested out of 55 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.295235,0.416946,0.859647) - Old Polarization: (-0.895332,0.434796,0.0966062) - New Momentum Direction: (0.397884,0.561912,0.72522) - New Polarization: (-0.680889,0.71066,-0.177068) + Old Momentum Direction: (0.432544,-0.895766,-0.102513) + Old Polarization: (-0.901225,-0.426218,-0.0783075) + New Momentum Direction: (0.585981,-0.798335,-0.138878) + New Polarization: (0.711022,0.58877,-0.384443) *** FresnelRefraction *** Track (trackID 1287, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 54 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.468085,-0.785592,-0.404651) + Old Polarization: (-0.859284,-0.297775,-0.415886) + New Momentum Direction: (0.636225,-0.541028,-0.550005) + New Polarization: (-0.259753,0.521064,-0.813032) + *** FresnelRefraction *** Track (trackID 1286, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. +### pop requested out of 53 stacked tracks. ** Photon absorbed! ** Track (trackID 1285, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.642235,0.675378,0.36249) - Old Polarization: (-0.504951,0.728577,-0.462818) - New Momentum Direction: (0.642235,-0.675378,0.36249) - New Polarization: (-0.672441,-0.723423,-0.156468) - *** FresnelReflection *** +### pop requested out of 52 stacked tracks. ** Photon absorbed! ** Track (trackID 1284, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - -** Photon absorbed! ** +### pop requested out of 51 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.439448,-0.87019,-0.222834) + Old Polarization: (-0.892949,-0.396235,-0.213634) + New Momentum Direction: (0.595788,-0.744155,-0.30211) + New Polarization: (0.373281,0.589634,-0.716236) + *** FresnelRefraction *** Track (trackID 1283, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.487536,-0.616099,0.618652) - Old Polarization: (-0.676704,-0.714378,-0.178146) - New Momentum Direction: (0.487536,-0.616099,-0.618652) - New Polarization: (0.676704,0.714378,-0.178146) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.487536,-0.616099,-0.618652) - Old Polarization: (0.676704,0.714378,-0.178146) - New Momentum Direction: (0.487536,0.616099,-0.618652) - New Polarization: (-0.676704,0.714378,0.178146) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.487536,0.616099,-0.618652) - Old Polarization: (-0.676704,0.714378,0.178146) - New Momentum Direction: (-0.487536,0.616099,-0.618652) - New Polarization: (-0.676704,-0.714378,-0.178146) - *** TotalInternalReflection *** +### pop requested out of 50 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.692443,-0.317783,0.647717) +Old Polarization: (-0.608097,0.226059,0.760996) +New Polarization: (0.555934,-0.534577,-0.636526) +Polarization Change: (0.555934,-0.534577,-0.636526) +New Momentum Direction: (-0.252106,-0.838134,0.483708) +Momentum Change: (-0.252106,-0.838134,0.483708) ** Photon absorbed! ** Track (trackID 1282, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. +### pop requested out of 49 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.790451,0.593858,0.150063) - Old Polarization: (-0.339899,0.629076,-0.699094) - New Momentum Direction: (0.560523,0.802901,0.202887) - New Polarization: (-0.57006,0.551793,-0.608733) + Old Momentum Direction: (0.427883,-0.900756,-0.0745238) + Old Polarization: (-0.90378,-0.425501,-0.0461529) + New Momentum Direction: (0.582042,-0.806815,-0.101373) + New Polarization: (0.76117,0.58444,-0.28116) *** FresnelRefraction *** Track (trackID 1281, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1280, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. +### pop requested out of 48 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.306698,0.467282,0.829207) - Old Polarization: (-0.875302,0.480679,0.0528709) - New Momentum Direction: (0.417304,0.635799,0.64932) - New Polarization: (-0.781203,0.616029,-0.10114) + Old Momentum Direction: (0.529081,-0.705601,0.471382) + Old Polarization: (-0.792908,-0.213202,0.570826) + New Momentum Direction: (0.71576,-0.284649,0.637702) + New Polarization: (-0.50582,0.418284,0.754443) + *** FresnelRefraction *** +Track (trackID 1280, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.435753,-0.90006,0.00340618) + Old Polarization: (-0.899358,-0.435256,0.0413237) + New Momentum Direction: (0.588755,-0.808298,0.00460217) + New Polarization: (0.807496,0.588408,0.0415496) *** FresnelRefraction *** Track (trackID 1279, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. +### pop requested out of 46 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.529147,0.673144,0.516606) - Old Polarization: (-0.631804,0.718965,-0.289679) - New Momentum Direction: (0.529147,-0.673144,0.516606) - New Polarization: (-0.289431,-0.715496,-0.635842) - *** FresnelReflection *** - -** Photon absorbed! ** + Old Momentum Direction: (0.82175,-0.0292637,0.569097) + Old Polarization: (-0.459397,0.556879,0.691983) + New Momentum Direction: (0.643267,-0.0393184,0.764631) + New Polarization: (-0.677317,0.436438,0.592254) + *** FresnelRefraction *** Track (trackID 1278, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. +### pop requested out of 45 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.702895,-0.637171,0.316152) - Old Polarization: (-0.438707,-0.738214,-0.512423) - New Momentum Direction: (0.258899,-0.865249,0.42932) - New Polarization: (-0.748106,-0.46078,-0.477514) + Old Momentum Direction: (0.799334,-0.0821981,0.595238) + Old Polarization: (-0.485457,0.495439,0.720327) + New Momentum Direction: (0.588923,-0.110556,0.800592) + New Polarization: (-0.717426,0.384589,0.580854) *** FresnelRefraction *** Track (trackID 1277, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. +### pop requested out of 44 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.888624,0.458427,0.0138539) - Old Polarization: (-0.231952,0.475269,-0.848715) - New Momentum Direction: (0.783377,0.621263,0.0187749) - New Polarization: (-0.39113,0.516218,-0.761929) + Old Momentum Direction: (0.933866,0.283066,0.218558) + Old Polarization: (-0.338095,0.898001,0.281578) + New Momentum Direction: (0.873775,0.384941,0.297217) + New Polarization: (-0.471703,0.819569,0.325274) *** FresnelRefraction *** Track (trackID 1276, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. +### pop requested out of 43 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.242604,-0.21204,0.946669) - Old Polarization: (-0.946157,-0.267286,0.182605) - New Momentum Direction: (0.329981,-0.288409,0.898851) - New Polarization: (-0.0144465,-0.953616,-0.300678) - *** FresnelRefraction *** -Track (trackID 1275, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.37134,-0.499763,0.782524) - Old Polarization: (-0.807114,-0.590365,0.00596926) - New Momentum Direction: (0.37134,-0.499763,-0.782524) - New Polarization: (0.802186,0.597073,-0.000653682) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.37134,-0.499763,-0.782524) - Old Polarization: (0.802186,0.597073,-0.000653682) - New Momentum Direction: (0.37134,0.499763,-0.782524) - New Polarization: (-0.802186,0.597073,0.000653682) + Old Momentum Direction: (0.537722,-0.617385,-0.574187) + Old Polarization: (-0.782954,-0.113,-0.611731) + New Momentum Direction: (0.537722,0.617385,-0.574187) + New Polarization: (0.782954,-0.113,0.611731) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.37134,0.499763,-0.782524) - Old Polarization: (-0.802186,0.597073,0.000653682) - New Momentum Direction: (-0.37134,0.499763,-0.782524) - New Polarization: (-0.802186,-0.597073,-0.000653682) + Old Momentum Direction: (0.537722,0.617385,-0.574187) + Old Polarization: (0.782954,-0.113,0.611731) + New Momentum Direction: (0.537722,0.617385,0.574187) + New Polarization: (-0.782954,0.113,0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.537722,0.617385,0.574187) + Old Polarization: (-0.782954,0.113,0.611731) + New Momentum Direction: (-0.537722,0.617385,0.574187) + New Polarization: (-0.782954,-0.113,-0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.537722,0.617385,0.574187) + Old Polarization: (-0.782954,-0.113,-0.611731) + New Momentum Direction: (-0.537722,-0.617385,0.574187) + New Polarization: (0.782954,-0.113,0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.537722,-0.617385,0.574187) + Old Polarization: (0.782954,-0.113,0.611731) + New Momentum Direction: (-0.537722,-0.617385,-0.574187) + New Polarization: (-0.782954,0.113,0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.537722,-0.617385,-0.574187) + Old Polarization: (-0.782954,0.113,0.611731) + New Momentum Direction: (0.537722,-0.617385,-0.574187) + New Polarization: (-0.782954,-0.113,-0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.537722,-0.617385,-0.574187) + Old Polarization: (-0.782954,-0.113,-0.611731) + New Momentum Direction: (0.537722,0.617385,-0.574187) + New Polarization: (0.782954,-0.113,0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.537722,0.617385,-0.574187) + Old Polarization: (0.782954,-0.113,0.611731) + New Momentum Direction: (0.537722,0.617385,0.574187) + New Polarization: (-0.782954,0.113,0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.537722,0.617385,0.574187) + Old Polarization: (-0.782954,0.113,0.611731) + New Momentum Direction: (-0.537722,0.617385,0.574187) + New Polarization: (-0.782954,-0.113,-0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.537722,0.617385,0.574187) + Old Polarization: (-0.782954,-0.113,-0.611731) + New Momentum Direction: (-0.537722,-0.617385,0.574187) + New Polarization: (0.782954,-0.113,0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.537722,-0.617385,0.574187) + Old Polarization: (0.782954,-0.113,0.611731) + New Momentum Direction: (-0.537722,-0.617385,-0.574187) + New Polarization: (-0.782954,0.113,0.611731) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.537722,-0.617385,-0.574187) + Old Polarization: (-0.782954,0.113,0.611731) + New Momentum Direction: (0.537722,-0.617385,-0.574187) + New Polarization: (-0.782954,-0.113,-0.611731) *** TotalInternalReflection *** ** Photon absorbed! ** +Track (trackID 1275, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.44995,-0.869149,0.205243) + Old Polarization: (-0.880047,-0.392446,0.267403) + New Momentum Direction: (0.61111,-0.740837,0.278756) + New Polarization: (0.39001,0.588267,0.708403) + *** FresnelRefraction *** Track (trackID 1274, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. +### pop requested out of 41 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.439031,-0.582303,0.684233) - Old Polarization: (-0.729812,-0.675312,-0.106434) - New Momentum Direction: (0.597096,-0.79195,0.127639) - New Polarization: (-0.756629,-0.608873,-0.238297) - *** FresnelRefraction *** -Track (trackID 1273, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.944301,0.324084,-0.0571346) - Old Polarization: (-0.168625,0.327428,-0.929708) - New Momentum Direction: (0.89544,0.438422,-0.0772918) - New Polarization: (-0.280973,0.421894,-0.862009) - *** FresnelRefraction *** -Track (trackID 1272, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.217247,0.1068,0.970256) - Old Polarization: (-0.97432,0.0840022,0.208911) - New Momentum Direction: (0.29542,0.14523,0.944264) - New Polarization: (0.604985,0.736516,-0.302552) - *** FresnelRefraction *** -Track (trackID 1271, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.274842,0.359479,0.891761) - Old Polarization: (-0.918991,0.370912,0.133716) - New Momentum Direction: (0.370086,0.484053,0.792924) - New Polarization: (-0.543528,0.805017,-0.237751) - *** FresnelRefraction *** -Track (trackID 1270, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.233673,-0.103672,0.966773) - Old Polarization: (-0.964485,-0.150651,0.216965) - New Momentum Direction: (0.314943,-0.139728,0.938769) - New Polarization: (0.609919,-0.728039,-0.312982) - *** FresnelRefraction *** -Track (trackID 1269, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.336375,0.509042,0.792293) - Old Polarization: (-0.846032,0.532867,0.0168274) - New Momentum Direction: (0.455342,0.689076,0.563771) - New Polarization: (-0.821457,0.569347,-0.0324246) - *** FresnelRefraction *** -Track (trackID 1268, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.986552,-0.134438,-0.0929599) - Old Polarization: (-0.117215,-0.185549,-0.975619) - New Momentum Direction: (-0.986552,-0.134438,-0.0929599) - New Polarization: (0.112874,-0.971722,0.207403) + Old Momentum Direction: (0.719669,-0.182531,-0.669895) + Old Polarization: (-0.577118,0.379156,-0.723309) + New Momentum Direction: (-0.719669,-0.182531,-0.669895) + New Polarization: (-0.384882,-0.698143,0.603707) *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (-0.986552,-0.134438,-0.0929599) - Old Polarization: (0.112874,-0.971722,0.207403) - New Momentum Direction: (-0.975473,-0.181052,-0.125192) - New Polarization: (0.17387,-0.982542,0.0661791) + Old Momentum Direction: (-0.719669,-0.182531,-0.669895) + Old Polarization: (-0.384882,-0.698143,0.603707) + New Momentum Direction: (-0.719669,-0.182531,0.669895) + New Polarization: (0.384882,0.698143,0.603707) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.719669,-0.182531,0.669895) + Old Polarization: (0.384882,0.698143,0.603707) + New Momentum Direction: (-0.347091,-0.246549,0.904843) + New Polarization: (0.662659,0.618261,0.422653) + *** FresnelRefraction *** +Track (trackID 1273, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.499804,-0.704252,-0.504207) +Old Polarization: (-0.823879,-0.206945,-0.527634) +New Polarization: (0.315963,0.688228,0.653077) +Polarization Change: (0.315963,0.688228,0.653077) +New Momentum Direction: (-0.884558,0.462612,-0.0595567) +Momentum Change: (-0.884558,0.462612,-0.0595567) + Photon at Boundary! + Old Momentum Direction: (-0.884558,0.462612,-0.0595567) + Old Polarization: (0.315963,0.688228,0.653077) + New Momentum Direction: (-0.773472,0.628642,-0.0809314) + New Polarization: (0.499053,0.682733,0.533687) + *** FresnelRefraction *** +Track (trackID 1272, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.548997,-0.664528,0.506957) + Old Polarization: (-0.771135,-0.16873,0.613907) + New Momentum Direction: (0.548997,0.664528,0.506957) + New Polarization: (0.771135,-0.16873,-0.613907) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.548997,0.664528,0.506957) + Old Polarization: (0.771135,-0.16873,-0.613907) + New Momentum Direction: (-0.548997,0.664528,0.506957) + New Polarization: (0.771135,0.16873,0.613907) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.548997,0.664528,0.506957) + Old Polarization: (0.771135,0.16873,0.613907) + New Momentum Direction: (-0.548997,0.664528,-0.506957) + New Polarization: (-0.771135,-0.16873,0.613907) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.548997,0.664528,-0.506957) + Old Polarization: (-0.771135,-0.16873,0.613907) + New Momentum Direction: (-0.548997,0.664528,0.506957) + New Polarization: (0.771135,0.16873,0.613907) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.548997,0.664528,0.506957) + Old Polarization: (0.771135,0.16873,0.613907) + New Momentum Direction: (-0.548997,-0.664528,0.506957) + New Polarization: (-0.771135,0.16873,-0.613907) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1271, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.848229,0.123677,-0.514987) +Old Polarization: (-0.433311,0.721175,-0.540507) +New Polarization: (0.565525,-0.822814,0.0562029) +Polarization Change: (0.565525,-0.822814,0.0562029) +New Momentum Direction: (0.117197,0.0127204,-0.993027) +Momentum Change: (0.117197,0.0127204,-0.993027) + +** Photon absorbed! ** +Track (trackID 1270, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.612674,-0.429518,-0.663434) + Old Polarization: (-0.69782,0.100112,-0.709243) + New Momentum Direction: (0.612674,-0.429518,0.663434) + New Polarization: (0.69782,-0.100112,-0.709243) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.612674,-0.429518,0.663434) + Old Polarization: (0.69782,-0.100112,-0.709243) + New Momentum Direction: (-0.612674,-0.429518,0.663434) + New Polarization: (0.69782,0.100112,0.709243) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1269, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1268, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.764742,-0.163121,0.623346) + Old Polarization: (-0.525429,0.402086,0.749834) + New Momentum Direction: (0.496526,-0.21975,0.839745) + New Polarization: (-0.778007,0.316339,0.542803) *** FresnelRefraction *** Track (trackID 1267, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.487224,0.65852,0.573553) - Old Polarization: (-0.678052,0.699165,-0.226746) - New Momentum Direction: (0.487224,-0.65852,0.573553) - New Polarization: (0.678052,0.699165,0.226746) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.487224,-0.65852,0.573553) - Old Polarization: (0.678052,0.699165,0.226746) - New Momentum Direction: (0.487224,-0.65852,-0.573553) - New Polarization: (-0.678052,-0.699165,0.226746) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.487224,-0.65852,-0.573553) - Old Polarization: (-0.678052,-0.699165,0.226746) - New Momentum Direction: (-0.487224,-0.65852,-0.573553) - New Polarization: (-0.678052,0.699165,-0.226746) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.487224,-0.65852,-0.573553) - Old Polarization: (-0.678052,0.699165,-0.226746) - New Momentum Direction: (-0.487224,0.65852,-0.573553) - New Polarization: (0.678052,0.699165,0.226746) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.487224,0.65852,-0.573553) - Old Polarization: (0.678052,0.699165,0.226746) - New Momentum Direction: (-0.487224,0.65852,0.573553) - New Polarization: (-0.678052,-0.699165,0.226746) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.487224,0.65852,0.573553) - Old Polarization: (-0.678052,-0.699165,0.226746) - New Momentum Direction: (0.487224,0.65852,0.573553) - New Polarization: (-0.678052,0.699165,-0.226746) - *** TotalInternalReflection *** +### pop requested out of 34 stacked tracks. ** Photon absorbed! ** Track (trackID 1266, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.270123,-0.290993,0.9178) - Old Polarization: (-0.920262,-0.358319,0.157242) - New Momentum Direction: (0.365456,-0.393691,0.843475) - New Polarization: (-0.339017,-0.900212,-0.273285) - *** FresnelRefraction *** +### pop requested out of 33 stacked tracks. + +** Photon absorbed! ** Track (trackID 1265, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. +### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.442995,0.637331,0.630527) - Old Polarization: (-0.725342,0.668138,-0.165739) - New Momentum Direction: (0.442995,-0.637331,0.630527) - New Polarization: (0.725342,0.668138,0.165739) + Old Momentum Direction: (0.571917,-0.526186,-0.629317) + Old Polarization: (-0.743309,-0.00790633,-0.668902) + New Momentum Direction: (0.571917,-0.526186,0.629317) + New Polarization: (0.743309,0.00790633,-0.668902) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.442995,-0.637331,0.630527) - Old Polarization: (0.725342,0.668138,0.165739) - New Momentum Direction: (0.442995,-0.637331,-0.630527) - New Polarization: (-0.725342,-0.668138,0.165739) + Old Momentum Direction: (0.571917,-0.526186,0.629317) + Old Polarization: (0.743309,0.00790633,-0.668902) + New Momentum Direction: (-0.571917,-0.526186,0.629317) + New Polarization: (0.743309,-0.00790633,0.668902) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.442995,-0.637331,-0.630527) - Old Polarization: (-0.725342,-0.668138,0.165739) - New Momentum Direction: (-0.442995,-0.637331,-0.630527) - New Polarization: (-0.725342,0.668138,-0.165739) + Old Momentum Direction: (-0.571917,-0.526186,0.629317) + Old Polarization: (0.743309,-0.00790633,0.668902) + New Momentum Direction: (-0.571917,0.526186,0.629317) + New Polarization: (-0.743309,-0.00790633,-0.668902) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.442995,-0.637331,-0.630527) - Old Polarization: (-0.725342,0.668138,-0.165739) - New Momentum Direction: (-0.442995,0.637331,-0.630527) - New Polarization: (0.725342,0.668138,0.165739) + Old Momentum Direction: (-0.571917,0.526186,0.629317) + Old Polarization: (-0.743309,-0.00790633,-0.668902) + New Momentum Direction: (-0.571917,0.526186,-0.629317) + New Polarization: (0.743309,0.00790633,-0.668902) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.442995,0.637331,-0.630527) - Old Polarization: (0.725342,0.668138,0.165739) - New Momentum Direction: (-0.442995,0.637331,0.630527) - New Polarization: (-0.725342,-0.668138,0.165739) + Old Momentum Direction: (-0.571917,0.526186,-0.629317) + Old Polarization: (0.743309,0.00790633,-0.668902) + New Momentum Direction: (0.571917,0.526186,-0.629317) + New Polarization: (0.743309,-0.00790633,0.668902) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.442995,0.637331,0.630527) - Old Polarization: (-0.725342,-0.668138,0.165739) - New Momentum Direction: (0.442995,0.637331,0.630527) - New Polarization: (-0.725342,0.668138,-0.165739) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.442995,0.637331,0.630527) - Old Polarization: (-0.725342,0.668138,-0.165739) - New Momentum Direction: (0.442995,-0.637331,0.630527) - New Polarization: (0.725342,0.668138,0.165739) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.442995,-0.637331,0.630527) - Old Polarization: (0.725342,0.668138,0.165739) - New Momentum Direction: (0.442995,-0.637331,-0.630527) - New Polarization: (-0.725342,-0.668138,0.165739) + Old Momentum Direction: (0.571917,0.526186,-0.629317) + Old Polarization: (0.743309,-0.00790633,0.668902) + New Momentum Direction: (0.571917,-0.526186,-0.629317) + New Polarization: (-0.743309,-0.00790633,-0.668902) *** TotalInternalReflection *** ** Photon absorbed! ** Track (trackID 1264, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.649431,-0.652136,0.391098) - Old Polarization: (-0.497906,-0.753412,-0.429487) - New Momentum Direction: (-0.649431,-0.652136,0.391098) - New Polarization: (-0.497906,0.753412,0.429487) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.649431,-0.652136,0.391098) - Old Polarization: (-0.497906,0.753412,0.429487) - New Momentum Direction: (-0.649431,0.652136,0.391098) - New Polarization: (0.497906,0.753412,-0.429487) - *** TotalInternalReflection *** +### pop requested out of 31 stacked tracks. ** Photon absorbed! ** Track (trackID 1263, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 126 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 127 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.545156,0.833636,-0.0886347) - Old Polarization: (-0.365528,0.141217,-0.920026) - New Momentum Direction: (0.733914,0.66868,-0.119324) - New Polarization: (0.0772019,-0.256652,-0.963415) - *** FresnelRefraction *** -Track (trackID 1546, parentID 1) is processed with stopping code 2 -### pop requested out of 126 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.81616,-0.161567,0.554779) - Old Polarization: (-0.0632381,-0.979321,-0.192174) - New Momentum Direction: (0.622279,-0.218879,0.751572) - New Polarization: (-0.12016,-0.975443,-0.184588) - *** FresnelRefraction *** -Track (trackID 1545, parentID 1) is processed with stopping code 2 -### pop requested out of 125 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.568103,-0.123357,0.813659) - Old Polarization: (-0.341025,-0.935105,0.0963367) - New Momentum Direction: (0.770485,-0.167302,0.615111) - New Polarization: (-0.0674438,-0.980924,-0.182319) - *** FresnelRefraction *** -Track (trackID 1544, parentID 1) is processed with stopping code 2 -### pop requested out of 124 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.790571,-0.158935,0.591386) - Old Polarization: (-0.0871093,-0.985099,-0.148297) - New Momentum Direction: (0.565823,-0.213999,0.796272) - New Polarization: (-0.164192,-0.975634,-0.145529) - *** FresnelRefraction *** -Track (trackID 1543, parentID 1) is processed with stopping code 2 -### pop requested out of 123 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.85067,-0.144033,0.505585) - Old Polarization: (-0.0182259,-0.969237,-0.245454) - New Momentum Direction: (0.706906,-0.19379,0.680242) - New Polarization: (-0.0338844,-0.969909,-0.241099) - *** FresnelRefraction *** -Track (trackID 1542, parentID 1) is processed with stopping code 2 -### pop requested out of 122 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.447513,0.893201,-0.043868) - Old Polarization: (-0.475364,0.196045,-0.857668) - New Momentum Direction: (0.608617,0.791218,-0.0596604) - New Polarization: (0.357813,-0.34079,-0.869386) - *** FresnelRefraction *** -Track (trackID 1541, parentID 1) is processed with stopping code 2 -### pop requested out of 121 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.36374,0.931204,0.0234998) - Old Polarization: (-0.569175,0.242156,-0.785748) - New Momentum Direction: (0.49322,0.869321,0.0318651) - New Polarization: (0.711366,-0.381978,-0.589958) - *** FresnelRefraction *** -Track (trackID 1540, parentID 1) is processed with stopping code 2 -### pop requested out of 120 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.488445,0.870077,-0.0662394) - Old Polarization: (-0.429929,0.173906,-0.885956) - New Momentum Direction: (0.662314,0.743823,-0.0898183) - New Polarization: (0.222798,-0.309991,-0.924265) - *** FresnelRefraction *** -Track (trackID 1539, parentID 1) is processed with stopping code 2 -### pop requested out of 119 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1538, parentID 1) is processed with stopping code 2 -### pop requested out of 118 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.743398,0.651686,-0.15055) - Old Polarization: (-0.141737,-0.0664845,-0.987669) - New Momentum Direction: (0.431564,0.878934,-0.203048) - New Polarization: (-0.272154,-0.0877404,-0.958245) - *** FresnelRefraction *** -Track (trackID 1537, parentID 1) is processed with stopping code 2 -### pop requested out of 117 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1536, parentID 1) is processed with stopping code 2 -### pop requested out of 116 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.674558,-0.160984,0.720455) - Old Polarization: (-0.223005,-0.974776,-0.00901312) - New Momentum Direction: (0.916395,-0.218699,0.335248) - New Polarization: (-0.225655,-0.97403,-0.0185857) - *** FresnelRefraction *** -Track (trackID 1535, parentID 1) is processed with stopping code 2 -### pop requested out of 115 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.123624,0.28508,0.950498) - Old Polarization: (-0.839866,-0.480103,0.25323) - New Momentum Direction: (0.167158,0.385471,0.907453) - New Polarization: (-0.104717,0.922138,-0.372419) - *** FresnelRefraction *** -Track (trackID 1534, parentID 1) is processed with stopping code 2 -### pop requested out of 114 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1533, parentID 1) is processed with stopping code 2 -### pop requested out of 113 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.971886,-0.0226522,0.23436) - Old Polarization: (0.113769,-0.826274,-0.55166) - New Momentum Direction: (0.948004,-0.0306187,0.316782) - New Polarization: (-0.190754,-0.851425,0.488558) - *** FresnelRefraction *** -Track (trackID 1532, parentID 1) is processed with stopping code 2 -### pop requested out of 112 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1531, parentID 1) is processed with stopping code 2 -### pop requested out of 111 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.906679,-0.115851,0.4056) - Old Polarization: (0.0414991,-0.932383,-0.359083) - New Momentum Direction: (0.821917,-0.15644,0.547703) - New Polarization: (-0.0764618,-0.983145,-0.166071) - *** FresnelRefraction *** -Track (trackID 1530, parentID 1) is processed with stopping code 2 -### pop requested out of 110 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.409449,0.912313,-0.00607941) - Old Polarization: (-0.519088,0.227479,-0.823894) - New Momentum Direction: (0.552482,0.833484,-0.00820313) - New Polarization: (0.551171,-0.372695,-0.746531) - *** FresnelRefraction *** -Track (trackID 1529, parentID 1) is processed with stopping code 2 -### pop requested out of 109 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1528, parentID 1) is processed with stopping code 2 -### pop requested out of 108 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1527, parentID 1) is processed with stopping code 2 -### pop requested out of 107 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1526, parentID 1) is processed with stopping code 2 -### pop requested out of 106 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.569158,-0.123112,0.812959) - Old Polarization: (-0.339723,-0.935597,0.0961585) - New Momentum Direction: (0.771463,-0.166872,0.614003) - New Polarization: (-0.0675051,-0.981016,-0.181801) - *** FresnelRefraction *** -Track (trackID 1525, parentID 1) is processed with stopping code 2 -### pop requested out of 105 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.947725,-0.0769716,0.309666) - Old Polarization: (0.0806121,-0.881235,-0.465754) - New Momentum Direction: (0.901138,-0.104578,0.42073) - New Polarization: (-0.145933,-0.987007,0.0672329) - *** FresnelRefraction *** -Track (trackID 1524, parentID 1) is processed with stopping code 2 -### pop requested out of 104 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.0443521,0.431232,0.90115) -Old Polarization: (-0.928134,-0.31593,0.196864) -New Polarization: (0.695159,0.301046,-0.652783) -Polarization Change: (0.695159,0.301046,-0.652783) -New Momentum Direction: (-0.654711,-0.10982,-0.747859) -Momentum Change: (-0.654711,-0.10982,-0.747859) - -** Photon absorbed! ** -Track (trackID 1523, parentID 1) is processed with stopping code 2 -### pop requested out of 103 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.018005,0.748503,0.662887) - Old Polarization: (-0.996701,0.0390407,-0.0711548) - New Momentum Direction: (-0.0243897,0.439416,0.897953) - New Polarization: (-0.996948,-0.0773281,0.0107622) - *** FresnelRefraction *** -Track (trackID 1522, parentID 1) is processed with stopping code 2 -### pop requested out of 102 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1521, parentID 1) is processed with stopping code 2 -### pop requested out of 101 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1520, parentID 1) is processed with stopping code 2 -### pop requested out of 100 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1519, parentID 1) is processed with stopping code 2 -### pop requested out of 99 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0913371,0.93305,0.347959) - Old Polarization: (-0.872676,0.243311,-0.423364) - New Momentum Direction: (0.123934,0.872768,0.47214) - New Polarization: (-0.428221,-0.382181,0.81888) - *** FresnelRefraction *** -Track (trackID 1518, parentID 1) is processed with stopping code 2 -### pop requested out of 98 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.937247,0.339202,-0.0806847) - Old Polarization: (0.0738176,-0.419207,-0.904885) - New Momentum Direction: (0.88176,0.458894,-0.109155) - New Polarization: (-0.13378,0.0213832,-0.99078) - *** FresnelRefraction *** -Track (trackID 1517, parentID 1) is processed with stopping code 2 -### pop requested out of 97 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.706295,0.691498,-0.151588) - Old Polarization: (-0.186311,-0.0250106,-0.982172) - New Momentum Direction: (-0.706295,0.691498,-0.151588) - New Polarization: (-0.10427,0.110179,0.988427) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.706295,0.691498,-0.151588) - Old Polarization: (-0.10427,0.110179,0.988427) - New Momentum Direction: (-0.957082,0.204449,-0.205413) - New Polarization: (-0.251585,-0.234251,0.939059) - *** FresnelRefraction *** -Track (trackID 1516, parentID 1) is processed with stopping code 2 -### pop requested out of 96 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1515, parentID 1) is processed with stopping code 2 -### pop requested out of 95 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1514, parentID 1) is processed with stopping code 2 -### pop requested out of 94 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.919403,0.379587,-0.103014) - Old Polarization: (0.0505377,-0.373751,-0.926151) - New Momentum Direction: (0.845681,0.515058,-0.139779) - New Polarization: (-0.0935487,-0.114793,-0.988975) - *** FresnelRefraction *** -Track (trackID 1513, parentID 1) is processed with stopping code 2 -### pop requested out of 93 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1512, parentID 1) is processed with stopping code 2 -### pop requested out of 92 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.567402,-0.126304,0.813697) - Old Polarization: (-0.342368,-0.93489,0.0936217) - New Momentum Direction: (0.77161,-0.171761,0.612467) - New Polarization: (-0.0767426,-0.980958,-0.178418) - *** FresnelRefraction *** -Track (trackID 1511, parentID 1) is processed with stopping code 2 -### pop requested out of 91 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1510, parentID 1) is processed with stopping code 2 -### pop requested out of 90 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1509, parentID 1) is processed with stopping code 2 -### pop requested out of 89 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1508, parentID 1) is processed with stopping code 2 -### pop requested out of 88 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.869568,-0.140905,0.473284) - Old Polarization: (-0.00139486,-0.959123,-0.282985) - New Momentum Direction: (0.744566,-0.190478,0.639796) - New Polarization: (-0.00260875,-0.959249,-0.282549) - *** FresnelRefraction *** -Track (trackID 1507, parentID 1) is processed with stopping code 2 -### pop requested out of 87 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0116568,0.852278,0.522959) - Old Polarization: (-0.961468,0.153214,-0.228266) - New Momentum Direction: (0.0158175,0.704406,0.709621) - New Polarization: (-0.912994,-0.279186,0.297485) - *** FresnelRefraction *** -Track (trackID 1506, parentID 1) is processed with stopping code 2 -### pop requested out of 86 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.988575,0.0475527,0.143033) - Old Polarization: (0.130392,-0.74583,-0.65325) - New Momentum Direction: (-0.988575,0.0475527,0.143033) - New Polarization: (0.128222,0.764154,0.632161) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.988575,0.0475527,0.143033) - Old Polarization: (0.128222,0.764154,0.632161) - New Momentum Direction: (-0.978953,0.0643846,0.193661) - New Polarization: (0.185707,0.674563,0.714477) - *** FresnelRefraction *** -Track (trackID 1505, parentID 1) is processed with stopping code 2 -### pop requested out of 85 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1504, parentID 1) is processed with stopping code 2 -### pop requested out of 84 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.147132,0.953176,0.26421) - Old Polarization: (-0.812346,0.268842,-0.517512) - New Momentum Direction: (0.1992,0.912339,0.357711) - New Polarization: (0.106302,-0.38299,0.917616) - *** FresnelRefraction *** -Track (trackID 1503, parentID 1) is processed with stopping code 2 -### pop requested out of 83 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.432027,-0.0464248,0.900665) - Old Polarization: (-0.492816,-0.848538,0.192654) - New Momentum Direction: (0.586305,-0.0630033,0.807637) - New Polarization: (0.364412,-0.869892,-0.332404) - *** FresnelRefraction *** -Track (trackID 1502, parentID 1) is processed with stopping code 2 -### pop requested out of 82 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.187044,0.956697,0.223035) - Old Polarization: (-0.773338,0.283409,-0.567122) - New Momentum Direction: (0.251371,0.920309,0.299739) - New Polarization: (0.451801,-0.385443,0.804555) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (0.251371,0.920309,0.299739) - Old Polarization: (0.451801,-0.385443,0.804555) - New Momentum Direction: (0.187044,0.684799,0.704319) - New Polarization: (0.731772,0.381203,-0.564973) - *** FresnelRefraction *** -Scattering Photon! -Old Momentum Direction: (0.187044,0.684799,0.704319) -Old Polarization: (0.731772,0.381203,-0.564973) -New Polarization: (-0.396656,0.713742,0.577266) -Polarization Change: (-0.396656,0.713742,0.577266) -New Momentum Direction: (-0.63396,-0.667793,0.390059) -Momentum Change: (-0.63396,-0.667793,0.390059) - -** Photon absorbed! ** -Track (trackID 1501, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1500, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.963021,0.267503,-0.0321404) - Old Polarization: (0.110786,-0.501897,-0.857803) - New Momentum Direction: (0.932134,0.359529,-0.0431973) - New Polarization: (-0.188389,0.3796,-0.905767) - *** FresnelRefraction *** -Track (trackID 1499, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.799225,0.580948,-0.154073) - Old Polarization: (-0.082078,-0.14845,-0.985508) - New Momentum Direction: (0.580695,0.786917,-0.208698) - New Polarization: (-0.156473,-0.143689,-0.977174) - *** FresnelRefraction *** -Track (trackID 1498, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.031543,0.882373,0.469491) - Old Polarization: (-0.939283,0.186749,-0.287875) - New Momentum Direction: (0.0428024,0.76961,0.637078) - New Polarization: (-0.829438,-0.328103,0.452085) - *** FresnelRefraction *** -Track (trackID 1497, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.319362,0.0517796,0.946217) - Old Polarization: (-0.620422,-0.743329,0.250079) - New Momentum Direction: (0.431307,0.0699297,0.899491) - New Polarization: (0.842955,-0.38658,-0.374144) - *** FresnelRefraction *** -Track (trackID 1496, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.523548,-0.104844,0.845521) - Old Polarization: (-0.391002,-0.911289,0.129109) - New Momentum Direction: (0.711855,-0.142554,0.687707) - New Polarization: (0.0371953,-0.970158,-0.239605) - *** FresnelRefraction *** -Track (trackID 1495, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.711922,0.686367,-0.148551) - Old Polarization: (-0.178039,-0.0282183,-0.983619) - New Momentum Direction: (0.317271,0.926875,-0.200605) - New Polarization: (-0.349802,-0.0822376,-0.933207) - *** FresnelRefraction *** -Track (trackID 1494, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.77761,0.609869,-0.152917) - Old Polarization: (-0.104337,-0.114672,-0.987909) - New Momentum Direction: (0.527684,0.823935,-0.206592) - New Polarization: (-0.198802,-0.116664,-0.973071) - *** FresnelRefraction *** -Track (trackID 1493, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.987815,0.146257,0.0532007) - Old Polarization: (0.135304,-0.638141,-0.757937) - New Momentum Direction: (0.97775,0.197138,0.0717082) - New Polarization: (-0.193336,0.979497,-0.0566365) - *** FresnelRefraction *** -Track (trackID 1492, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.98993,0.123968,0.0683453) - Old Polarization: (0.133768,-0.661227,-0.738163) - New Momentum Direction: (0.981514,0.167604,0.0924027) - New Polarization: (-0.185419,0.95237,0.242098) - *** FresnelRefraction *** -Track (trackID 1491, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1490, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1489, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1488, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0114528,0.637045,0.770741) - Old Polarization: (-0.995104,-0.0829363,0.0537632) - New Momentum Direction: (-0.015444,0.859054,0.511652) - New Polarization: (-0.993676,0.0437342,-0.103423) - *** FresnelRefraction *** -Track (trackID 1487, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0469555,0.430397,0.901418) - Old Polarization: (-0.9273,-0.316711,0.199523) - New Momentum Direction: (0.0634184,0.581297,0.811216) - New Polarization: (-0.758591,0.556255,-0.339294) - *** FresnelRefraction *** -Track (trackID 1486, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.303626,0.0714219,0.950111) - Old Polarization: (-0.639622,-0.723809,0.258813) - New Momentum Direction: (0.408785,0.0961585,0.907551) - New Polarization: (0.893146,-0.246544,-0.376174) - *** FresnelRefraction *** -Track (trackID 1485, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.892059,-0.130677,0.432614) - Old Polarization: (0.021199,-0.944127,-0.3289) - New Momentum Direction: (0.790457,-0.177116,0.586351) - New Polarization: (-0.0396198,-0.970061,-0.239609) - *** FresnelRefraction *** -Track (trackID 1484, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.928561,0.361485,-0.0842814) - Old Polarization: (0.0705205,-0.394737,-0.916084) - New Momentum Direction: (0.866424,0.486267,-0.113375) - New Polarization: (-0.126991,-0.00499202,-0.991891) - *** FresnelRefraction *** -Track (trackID 1483, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.766594,0.623635,-0.153011) - Old Polarization: (-0.116637,-0.0990896,-0.988219) - New Momentum Direction: (-0.766594,0.623635,-0.153011) - New Polarization: (-0.02217,0.21244,0.976923) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.766594,0.623635,-0.153011) - Old Polarization: (-0.02217,0.21244,0.976923) - New Momentum Direction: (-0.766594,-0.623635,-0.153011) - New Polarization: (0.02217,0.21244,-0.976923) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.766594,-0.623635,-0.153011) - Old Polarization: (0.02217,0.21244,-0.976923) - New Momentum Direction: (-0.497614,-0.842413,-0.206689) - New Polarization: (0.0430789,0.213991,-0.975885) - *** FresnelRefraction *** -Track (trackID 1482, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0974369,0.315616,0.943871) - Old Polarization: (-0.863583,-0.444599,0.237815) - New Momentum Direction: (0.132526,0.429276,0.893397) - New Polarization: (-0.333798,0.868027,-0.367571) - *** FresnelRefraction *** -Track (trackID 1481, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1480, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.977839,0.209345,-0.00221454) - Old Polarization: (0.119077,-0.564841,-0.816563) - New Momentum Direction: (0.959032,0.283283,-0.00299669) - New Polarization: (-0.19387,0.648544,-0.736074) - *** FresnelRefraction *** -Track (trackID 1479, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.662085,0.736616,-0.137984) - Old Polarization: (-0.234185,0.0284552,-0.971776) - New Momentum Direction: (0.662085,-0.736616,-0.137984) - New Polarization: (0.193497,-0.00985351,0.981051) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.662085,-0.736616,-0.137984) - Old Polarization: (0.193497,-0.00985351,0.981051) - New Momentum Direction: (-0.662085,-0.736616,-0.137984) - New Polarization: (0.193497,0.00985351,-0.981051) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.662085,-0.736616,-0.137984) - Old Polarization: (0.193497,0.00985351,-0.981051) - New Momentum Direction: (-0.662085,0.736616,-0.137984) - New Polarization: (-0.200387,0.00340975,0.979711) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.662085,0.736616,-0.137984) - Old Polarization: (-0.200387,0.00340975,0.979711) - New Momentum Direction: (0.662085,0.736616,-0.137984) - New Polarization: (-0.200387,-0.00340975,-0.979711) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.662085,0.736616,-0.137984) - Old Polarization: (-0.200387,-0.00340975,-0.979711) - New Momentum Direction: (0.894042,0.407396,-0.186326) - New Polarization: (-0.201061,-0.00677465,-0.979555) - *** FresnelRefraction *** -Track (trackID 1478, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1477, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.17459,0.20364,0.963353) - Old Polarization: (-0.77923,-0.569527,0.261611) - New Momentum Direction: (0.23709,0.27654,0.931297) - New Polarization: (0.473723,0.804025,-0.359348) - *** FresnelRefraction *** -Track (trackID 1476, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.00125049,0.57543,0.81785) - Old Polarization: (-0.982513,-0.152984,0.106136) - New Momentum Direction: (-0.0016877,0.776619,0.629969) - New Polarization: (-0.967398,0.158275,-0.197712) - *** FresnelRefraction *** -Track (trackID 1475, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.604505,-0.136793,0.784769) - Old Polarization: (-0.30004,-0.951694,0.0652302) - New Momentum Direction: (0.818881,-0.185304,0.543228) - New Polarization: (-0.138887,-0.982296,-0.125714) - *** FresnelRefraction *** -Track (trackID 1474, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.0130453,0.618012,0.78606) -Old Polarization: (-0.992017,-0.106611,0.0673555) -New Polarization: (0.380019,-0.806404,-0.453098) -Polarization Change: (0.380019,-0.806404,-0.453098) -New Momentum Direction: (-0.918608,-0.386415,-0.0827229) -Momentum Change: (-0.918608,-0.386415,-0.0827229) - Photon at Boundary! - Old Momentum Direction: (-0.918608,-0.386415,-0.0827229) - Old Polarization: (0.380019,-0.806404,-0.453098) - New Momentum Direction: (-0.844894,-0.523081,-0.11198) - New Polarization: (0.523719,-0.766218,-0.372329) - *** FresnelRefraction *** -Track (trackID 1473, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.7297,-0.168511,0.662677) - Old Polarization: (-0.161218,-0.984233,-0.072756) - New Momentum Direction: (0.372117,-0.228747,0.899558) - New Polarization: (-0.317047,-0.94219,-0.108436) - *** FresnelRefraction *** -Track (trackID 1472, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.873396,-0.132425,0.468661) - Old Polarization: (0.00888998,-0.957826,-0.287211) - New Momentum Direction: (0.756138,-0.177944,0.629755) - New Polarization: (-0.0163919,-0.96717,-0.253602) - *** FresnelRefraction *** -Track (trackID 1471, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.649469,-0.150944,0.745255) - Old Polarization: (-0.249542,-0.968128,0.0213839) - New Momentum Direction: (0.879411,-0.204385,0.429958) - New Polarization: (-0.206424,-0.97754,-0.0424779) - *** FresnelRefraction *** -Track (trackID 1470, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.973571,-0.023288,0.227192) - Old Polarization: (0.110505,-0.82255,-0.557853) - New Momentum Direction: (0.950737,-0.0316103,0.308383) - New Polarization: (-0.186502,-0.852942,0.487551) - *** FresnelRefraction *** -Track (trackID 1469, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1468, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.21729,0.961904,0.165907) - Old Polarization: (-0.73108,0.272997,-0.625296) - New Momentum Direction: (0.295357,0.92839,0.225514) - New Polarization: (0.761026,-0.371324,0.531938) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (0.295357,0.92839,0.225514) - Old Polarization: (0.761026,-0.371324,0.531938) - New Momentum Direction: (-0.562946,0.812484,-0.15153) - New Polarization: (0.798664,0.581945,0.153218) - *** LambertianReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.562946,0.812484,-0.15153) - Old Polarization: (0.798664,0.581945,0.153218) - New Momentum Direction: (-0.414151,0.903356,-0.111478) - New Polarization: (-0.848831,-0.427529,-0.310973) - *** FresnelRefraction *** - Photon at Boundary! - Old Momentum Direction: (-0.414151,0.903356,-0.111478) - Old Polarization: (-0.848831,-0.427529,-0.310973) - New Momentum Direction: (-0.562946,0.812484,-0.15153) - New Polarization: (-0.768239,-0.58201,-0.266596) - *** FresnelRefraction *** -Track (trackID 1467, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.154656,0.957169,0.244762) - Old Polarization: (-0.800025,0.266695,-0.537432) - New Momentum Direction: (0.210379,0.919177,0.332949) - New Polarization: (0.219758,-0.376319,0.90005) - *** FresnelRefraction *** -Track (trackID 1466, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1465, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.383542,0.923499,0.00667438) - Old Polarization: (-0.546952,0.232968,-0.804096) - New Momentum Direction: (0.520302,0.853934,0.00905427) - New Polarization: (0.630102,-0.376721,-0.679008) - *** FresnelRefraction *** -Track (trackID 1464, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0176701,0.851488,0.524076) - Old Polarization: (-0.961272,0.158651,-0.225356) - New Momentum Direction: (0.0238459,0.706567,0.707244) - New Polarization: (-0.905065,-0.285211,0.315454) - *** FresnelRefraction *** -Track (trackID 1463, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.457339,0.888338,-0.0411825) - Old Polarization: (-0.464956,0.199382,-0.86259) - New Momentum Direction: (0.617606,0.784519,-0.0556143) - New Polarization: (0.357058,-0.34269,-0.868949) - *** FresnelRefraction *** -Track (trackID 1462, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.242115,0.128085,0.961756) - Old Polarization: (-0.70643,-0.656208,0.265232) - New Momentum Direction: (0.327526,0.17327,0.928819) - New Polarization: (0.893756,0.262049,-0.364047) - *** FresnelRefraction *** -Track (trackID 1461, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.830441,0.53705,-0.148137) -Old Polarization: (-0.0469426,-0.197503,-0.979178) -New Polarization: (-0.188499,-0.438217,0.878882) -Polarization Change: (-0.188499,-0.438217,0.878882) -New Momentum Direction: (0.296948,0.827602,0.476337) -Momentum Change: (0.296948,0.827602,0.476337) - Photon at Boundary! - Old Momentum Direction: (0.296948,0.827602,0.476337) - Old Polarization: (-0.188499,-0.438217,0.878882) - New Momentum Direction: (0.402137,0.649746,0.645071) - New Polarization: (-0.121636,-0.660391,0.741005) - *** FresnelRefraction *** -Track (trackID 1460, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.271344,0.956046,0.111125) - Old Polarization: (-0.672752,0.270963,-0.688465) - New Momentum Direction: (0.367654,0.917693,0.150568) - New Polarization: (0.922679,-0.380187,0.0642068) - *** FresnelRefraction *** -Track (trackID 1459, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.898998,-0.12833,0.418728) - Old Polarization: (0.0265086,-0.938408,-0.344511) - New Momentum Direction: (0.803734,-0.174345,0.568873) - New Polarization: (-0.0496841,-0.972433,-0.227829) - *** FresnelRefraction *** -Track (trackID 1458, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1457, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.533745,0.840966,-0.0888388) - Old Polarization: (-0.379061,0.144019,-0.914096) - New Momentum Direction: (0.72205,0.681322,-0.120181) - New Polarization: (0.0885351,-0.26328,-0.960648) - *** FresnelRefraction *** -Track (trackID 1456, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.596332,0.794415,-0.115297) - Old Polarization: (-0.308199,0.0939568,-0.946671) - New Momentum Direction: (0.804971,0.572537,-0.155636) - New Polarization: (-0.0635867,-0.177556,-0.982054) - *** FresnelRefraction *** -Track (trackID 1455, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.655089,0.742497,-0.139846) - Old Polarization: (-0.243469,0.0322306,-0.969373) - New Momentum Direction: (0.88748,0.420103,-0.189455) - New Polarization: (-0.179171,-0.0642251,-0.981719) - *** FresnelRefraction *** -Track (trackID 1454, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1453, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0239865,0.870993,0.49071) - Old Polarization: (-0.948515,0.174895,-0.264068) - New Momentum Direction: (0.0325258,0.745774,0.665404) - New Polarization: (-0.865939,-0.311421,0.391364) - *** FresnelRefraction *** -Track (trackID 1452, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.986556,0.16037,0.0314368) - Old Polarization: (0.125199,-0.618058,-0.776099) - New Momentum Direction: (0.975096,0.217641,0.0426634) - New Polarization: (-0.18874,0.915342,-0.355705) - *** FresnelRefraction *** -Track (trackID 1451, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.946416,-0.0740145,0.314353) - Old Polarization: (0.0842314,-0.88312,-0.461524) - New Momentum Direction: (0.899529,-0.100121,0.425232) - New Polarization: (-0.150967,-0.984657,0.0875148) - *** FresnelRefraction *** -Track (trackID 1450, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.937277,0.278588,0.209523) +Old Polarization: (-0.329951,0.902916,0.275454) +New Polarization: (0.492814,-0.778011,-0.389657) +Polarization Change: (0.492814,-0.778011,-0.389657) +New Momentum Direction: (0.639944,0.627496,-0.443531) +Momentum Change: (0.639944,0.627496,-0.443531) Photon at Boundary! - Old Momentum Direction: (0.226008,0.149791,0.96254) - Old Polarization: (-0.725839,-0.633105,0.268954) - New Momentum Direction: (0.305126,0.202228,0.930592) - New Polarization: (0.824065,0.4337,-0.364446) - *** FresnelRefraction *** -Track (trackID 1449, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.639944,0.627496,-0.443531) + Old Polarization: (0.492814,-0.778011,-0.389657) + New Momentum Direction: (-0.639944,0.627496,-0.443531) + New Polarization: (0.492814,0.778011,0.389657) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639944,0.627496,-0.443531) + Old Polarization: (0.492814,0.778011,0.389657) + New Momentum Direction: (-0.639944,-0.627496,-0.443531) + New Polarization: (-0.492814,0.778011,-0.389657) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639944,-0.627496,-0.443531) + Old Polarization: (-0.492814,0.778011,-0.389657) + New Momentum Direction: (-0.639944,-0.627496,0.443531) + New Polarization: (0.492814,-0.778011,-0.389657) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.639944,-0.627496,0.443531) + Old Polarization: (0.492814,-0.778011,-0.389657) + New Momentum Direction: (0.639944,-0.627496,0.443531) + New Polarization: (0.492814,0.778011,0.389657) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.639944,-0.627496,0.443531) + Old Polarization: (0.492814,0.778011,0.389657) + New Momentum Direction: (0.639944,0.627496,0.443531) + New Polarization: (-0.492814,0.778011,-0.389657) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1262, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.218567,0.149851,0.964247) - Old Polarization: (-0.730712,-0.629782,0.263504) - New Momentum Direction: (0.296621,0.203365,0.933091) - New Polarization: (0.811395,0.461612,-0.358542) + Old Momentum Direction: (0.893647,0.172191,0.414421) + Old Polarization: (-0.382335,0.775655,0.502174) + New Momentum Direction: (0.792851,0.233829,0.562771) + New Polarization: (-0.556892,0.653043,0.513231) *** FresnelRefraction *** -Track (trackID 1448, parentID 1) is processed with stopping code 2 +Track (trackID 1261, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.57903,-0.595934,0.556405) +Old Polarization: (-0.736935,-0.0905996,0.669864) +New Polarization: (-0.302284,-0.0461697,0.952099) +Polarization Change: (-0.302284,-0.0461697,0.952099) +New Momentum Direction: (0.94683,0.100897,0.305504) +Momentum Change: (0.94683,0.100897,0.305504) Photon at Boundary! - Old Momentum Direction: (0.00946826,0.847137,0.53129) - Old Polarization: (-0.964472,0.148019,-0.218826) - New Momentum Direction: (0.0128417,0.693248,0.720585) - New Polarization: (-0.921939,-0.270792,0.276949) + Old Momentum Direction: (0.94683,0.100897,0.305504) + Old Polarization: (-0.302284,-0.0461697,0.952099) + New Momentum Direction: (0.900706,0.136239,0.412514) + New Polarization: (-0.419631,0.0271131,0.90729) *** FresnelRefraction *** -Track (trackID 1447, parentID 1) is processed with stopping code 2 +Track (trackID 1260, parentID 1) is processed with stopping code 2 ### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.869248,-0.142282,0.47346) - Old Polarization: (-0.00285694,-0.95912,-0.282986) - New Momentum Direction: (0.743202,-0.192558,0.640759) - New Polarization: (-0.0053569,-0.959372,-0.282093) + Old Momentum Direction: (0.439988,-0.886406,0.143857) + Old Polarization: (-0.890405,-0.409836,0.198021) + New Momentum Direction: (0.598359,-0.776976,0.195637) + New Polarization: (0.580691,0.588773,0.562267) *** FresnelRefraction *** -Track (trackID 1446, parentID 1) is processed with stopping code 2 +Track (trackID 1259, parentID 1) is processed with stopping code 2 ### pop requested out of 26 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.941239,0.321135,-0.104603) +Old Polarization: (-0.329812,0.940664,-0.0798446) +New Polarization: (0.104758,-0.835674,0.539143) +Polarization Change: (0.104758,-0.835674,0.539143) +New Momentum Direction: (-0.474841,0.434307,0.765443) +Momentum Change: (-0.474841,0.434307,0.765443) Photon at Boundary! - Old Momentum Direction: (0.236123,0.957947,0.163042) - Old Polarization: (-0.717502,0.28503,-0.635569) - New Momentum Direction: (0.317286,0.922676,0.219085) - New Polarization: (0.805114,-0.38416,0.451899) + Old Momentum Direction: (-0.474841,0.434307,0.765443) + Old Polarization: (0.104758,-0.835674,0.539143) + New Momentum Direction: (-0.645697,0.590579,0.484036) + New Polarization: (-0.601645,-0.00313736,-0.798758) *** FresnelRefraction *** -Track (trackID 1445, parentID 1) is processed with stopping code 2 +Track (trackID 1258, parentID 1) is processed with stopping code 2 ### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.944545,0.316097,0.0889745) + Old Polarization: (-0.325935,0.93545,0.136747) + New Momentum Direction: (0.894826,0.429717,0.120956) + New Polarization: (-0.444636,0.882087,0.155632) + *** FresnelRefraction *** +Track (trackID 1257, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. ** Photon absorbed! ** -Track (trackID 1444, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.981477,0.191379,0.00878133) - Old Polarization: (0.121082,-0.584135,-0.802574) - New Momentum Direction: (0.965696,0.259402,0.0119025) - New Polarization: (-0.192782,0.746888,-0.636391) - *** FresnelRefraction *** -Track (trackID 1443, parentID 1) is processed with stopping code 2 +Track (trackID 1256, parentID 1) is processed with stopping code 2 ### pop requested out of 23 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0648764,0.392518,0.917453) - Old Polarization: (-0.907385,-0.359391,0.217924) - New Momentum Direction: (0.0876,0.530002,0.843459) - New Polarization: (-0.643362,0.676541,-0.358298) - *** FresnelRefraction *** -Track (trackID 1442, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. + Old Momentum Direction: (0.577887,-0.527745,-0.62252) + Old Polarization: (-0.738919,-0.0145129,-0.673637) + New Momentum Direction: (0.577887,-0.527745,0.62252) + New Polarization: (0.738919,0.0145129,-0.673637) + *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.300376,0.950756,0.0764075) - Old Polarization: (-0.638595,0.259963,-0.724304) - New Momentum Direction: (0.408488,0.90683,0.103908) - New Polarization: (0.899742,-0.380883,-0.213056) - *** FresnelRefraction *** -Track (trackID 1441, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.577887,-0.527745,0.62252) + Old Polarization: (0.738919,0.0145129,-0.673637) + New Momentum Direction: (-0.577887,-0.527745,0.62252) + New Polarization: (0.738919,-0.0145129,0.673637) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.577887,-0.527745,0.62252) + Old Polarization: (0.738919,-0.0145129,0.673637) + New Momentum Direction: (-0.577887,0.527745,0.62252) + New Polarization: (-0.738919,-0.0145129,-0.673637) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1255, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1254, parentID 1) is processed with stopping code 2 ### pop requested out of 21 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1440, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.667316,-0.303427,-0.680162) + Old Polarization: (-0.63648,0.241907,-0.732376) + New Momentum Direction: (0.667316,-0.303427,0.680162) + New Polarization: (-0.595431,0.331228,0.731949) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.667316,-0.303427,0.680162) + Old Polarization: (-0.595431,0.331228,0.731949) + New Momentum Direction: (-0.667316,-0.303427,0.680162) + New Polarization: (-0.595431,-0.331228,-0.731949) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.667316,-0.303427,0.680162) + Old Polarization: (-0.595431,-0.331228,-0.731949) + New Momentum Direction: (-0.667316,0.303427,0.680162) + New Polarization: (0.595431,-0.331228,0.731949) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.667316,0.303427,0.680162) + Old Polarization: (0.595431,-0.331228,0.731949) + New Momentum Direction: (-0.902726,0.410467,0.128853) + New Polarization: (-0.13097,0.023093,-0.991117) + *** FresnelRefraction *** +Track (trackID 1253, parentID 1) is processed with stopping code 2 ### pop requested out of 20 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1439, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.443929,-0.893053,0.0733688) + Old Polarization: (-0.892758,-0.433783,0.121715) + New Momentum Direction: (0.597346,-0.795884,0.0987241) + New Polarization: (0.737598,0.593537,0.321966) + *** FresnelRefraction *** +Track (trackID 1252, parentID 1) is processed with stopping code 2 ### pop requested out of 19 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.438727,0.898067,-0.0315292) - Old Polarization: (-0.485656,0.207442,-0.84918) - New Momentum Direction: (0.593825,0.803462,-0.0426753) - New Polarization: (0.417342,-0.352929,-0.837417) - *** FresnelRefraction *** -Track (trackID 1438, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.666001,-0.386167,0.638215) + Old Polarization: (-0.637823,0.148857,0.755661) + New Momentum Direction: (-0.666001,-0.386167,0.638215) + New Polarization: (-0.637823,-0.148857,-0.755661) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.666001,-0.386167,0.638215) + Old Polarization: (-0.637823,-0.148857,-0.755661) + New Momentum Direction: (-0.666001,-0.386167,-0.638215) + New Polarization: (0.637823,0.148857,-0.755661) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1251, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. ** Photon absorbed! ** -Track (trackID 1437, parentID 1) is processed with stopping code 2 +Track (trackID 1250, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.158591,0.240086,0.95771) - Old Polarization: (-0.80363,-0.532137,0.266476) - New Momentum Direction: (0.213662,0.323455,0.921805) - New Polarization: (0.246318,0.895271,-0.371238) + Old Momentum Direction: (0.452786,-0.862316,0.226707) + Old Polarization: (-0.876415,-0.383682,0.291006) + New Momentum Direction: (0.615429,-0.725463,0.308141) + New Polarization: (0.316853,0.585678,0.746046) *** FresnelRefraction *** -Track (trackID 1436, parentID 1) is processed with stopping code 2 +Track (trackID 1249, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0183153,0.757863,0.652157) - Old Polarization: (-0.995294,0.0482561,-0.0840299) - New Momentum Direction: (-0.0248445,0.465605,0.884644) - New Polarization: (-0.995216,-0.0951597,0.0221346) + Old Momentum Direction: (0.728766,-0.161972,-0.665331) + Old Polarization: (-0.566748,0.402638,-0.718804) + New Momentum Direction: (-0.728766,-0.161972,-0.665331) + New Polarization: (-0.341533,-0.756167,0.558182) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.728766,-0.161972,-0.665331) + Old Polarization: (-0.341533,-0.756167,0.558182) + New Momentum Direction: (-0.728766,-0.161972,0.665331) + New Polarization: (0.341533,0.756167,0.558182) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.728766,-0.161972,0.665331) + Old Polarization: (0.341533,0.756167,0.558182) + New Momentum Direction: (0.728766,-0.161972,0.665331) + New Polarization: (0.150025,-0.91025,-0.385925) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.728766,-0.161972,0.665331) + Old Polarization: (0.150025,-0.91025,-0.385925) + New Momentum Direction: (0.728766,-0.161972,-0.665331) + New Polarization: (-0.150025,0.91025,-0.385925) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.728766,-0.161972,-0.665331) + Old Polarization: (-0.150025,0.91025,-0.385925) + New Momentum Direction: (0.728766,0.161972,-0.665331) + New Polarization: (0.150025,0.91025,0.385925) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.728766,0.161972,-0.665331) + Old Polarization: (0.150025,0.91025,0.385925) + New Momentum Direction: (0.381051,0.218692,-0.898317) + New Polarization: (-0.292003,0.950357,0.107498) *** FresnelRefraction *** -Track (trackID 1435, parentID 1) is processed with stopping code 2 +Track (trackID 1248, parentID 1) is processed with stopping code 2 ### pop requested out of 15 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.904009,0.413687,-0.107845) - Old Polarization: (0.0412202,-0.335431,-0.941163) - New Momentum Direction: (0.817572,0.557203,-0.145259) - New Polarization: (-0.0755949,-0.146218,-0.98636) + Old Momentum Direction: (0.493636,-0.778504,0.387627) + Old Polarization: (-0.831453,-0.291797,0.4728) + New Momentum Direction: (0.669896,-0.523954,0.526034) + New Polarization: (-0.244097,0.513694,0.822518) *** FresnelRefraction *** -Track (trackID 1434, parentID 1) is processed with stopping code 2 +Track (trackID 1247, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.00679877,0.562357,0.826867) - Old Polarization: (-0.979328,-0.170917,0.108189) - New Momentum Direction: (-0.00924604,0.764781,0.644224) - New Polarization: (-0.965747,0.160246,-0.204095) + Old Momentum Direction: (0.72542,-0.170944,-0.666742) + Old Polarization: (-0.570502,0.392619,-0.721373) + New Momentum Direction: (0.37056,-0.230674,-0.899708) + New Polarization: (-0.845648,0.316838,-0.429528) *** FresnelRefraction *** -Track (trackID 1433, parentID 1) is processed with stopping code 2 +Track (trackID 1246, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.495993,-0.716679,-0.490267) + Old Polarization: (-0.828773,-0.222257,-0.513554) + New Momentum Direction: (0.495993,0.716679,-0.490267) + New Polarization: (0.612598,0.111342,0.782513) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.495993,0.716679,-0.490267) + Old Polarization: (0.612598,0.111342,0.782513) + New Momentum Direction: (-0.495993,0.716679,-0.490267) + New Polarization: (0.612598,-0.111342,-0.782513) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.495993,0.716679,-0.490267) + Old Polarization: (0.612598,-0.111342,-0.782513) + New Momentum Direction: (-0.495993,0.716679,0.490267) + New Polarization: (-0.612598,0.111342,-0.782513) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1432, parentID 1) is processed with stopping code 2 +Track (trackID 1245, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.121984,0.948097,0.293654) - Old Polarization: (-0.836727,0.25737,-0.483372) - New Momentum Direction: (0.165846,0.901721,0.399243) - New Polarization: (-0.126538,-0.382044,0.91544) + Old Momentum Direction: (0.886626,0.19161,-0.420929) + Old Polarization: (-0.385694,0.808583,-0.444335) + New Momentum Direction: (0.782646,0.257889,-0.566531) + New Polarization: (-0.560577,0.687654,-0.461396) *** FresnelRefraction *** -Track (trackID 1431, parentID 1) is processed with stopping code 2 +Track (trackID 1244, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.487592,0.87046,-0.0674737) - Old Polarization: (-0.430893,0.17271,-0.885722) - New Momentum Direction: (0.662064,0.743827,-0.0916173) - New Polarization: (0.218885,-0.30883,-0.925588) + Old Momentum Direction: (0.92462,0.29172,-0.244902) + Old Polarization: (-0.348753,0.906902,-0.236433) + New Momentum Direction: (0.855231,0.39692,-0.333219) + New Polarization: (-0.493751,0.819393,-0.291213) *** FresnelRefraction *** -Track (trackID 1430, parentID 1) is processed with stopping code 2 +Track (trackID 1243, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.820465,-0.155495,0.550144) - Old Polarization: (-0.0544074,-0.97917,-0.195615) - New Momentum Direction: (-0.820465,-0.155495,0.550144) - New Polarization: (0.00464974,0.960454,0.2784) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.820465,-0.155495,0.550144) - Old Polarization: (0.00464974,0.960454,0.2784) - New Momentum Direction: (-0.820465,-0.155495,-0.550144) - New Polarization: (-0.00464974,-0.960454,0.2784) + Old Momentum Direction: (0.588464,-0.580544,0.562743) + Old Polarization: (-0.727152,-0.0757042,0.682289) + New Momentum Direction: (-0.588464,-0.580544,0.562743) + New Polarization: (-0.727152,0.0757042,-0.682289) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.820465,-0.155495,-0.550144) - Old Polarization: (-0.00464974,-0.960454,0.2784) - New Momentum Direction: (-0.637017,-0.209662,-0.741789) - New Polarization: (0.00877491,-0.964211,0.264992) - *** FresnelRefraction *** -Track (trackID 1429, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (-0.588464,-0.580544,0.562743) + Old Polarization: (-0.727152,0.0757042,-0.682289) + New Momentum Direction: (-0.588464,0.580544,0.562743) + New Polarization: (0.727152,0.0757042,0.682289) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.588464,0.580544,0.562743) + Old Polarization: (0.727152,0.0757042,0.682289) + New Momentum Direction: (-0.588464,0.580544,-0.562743) + New Polarization: (-0.727152,-0.0757042,0.682289) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1242, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.984455,0.172442,0.0333528) - Old Polarization: (0.133208,-0.609284,-0.781683) - New Momentum Direction: (0.97165,0.232123,0.044896) - New Polarization: (-0.199389,0.906574,-0.371978) + Old Momentum Direction: (0.945972,0.31441,0.0792725) + Old Polarization: (-0.322403,0.938095,0.126623) + New Momentum Direction: (0.898244,0.42616,0.107448) + New Polarization: (-0.438151,0.88744,0.143088) *** FresnelRefraction *** -Track (trackID 1428, parentID 1) is processed with stopping code 2 +Track (trackID 1241, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.99116,0.0740885,0.110055) - Old Polarization: (0.129771,-0.713862,-0.688158) - New Momentum Direction: (0.983643,0.100591,0.149423) - New Polarization: (-0.177965,0.414577,0.892443) + Old Momentum Direction: (0.746879,-0.114082,-0.655101) + Old Polarization: (-0.546568,0.455784,-0.702513) + New Momentum Direction: (0.435145,-0.154468,-0.887011) + New Polarization: (-0.813996,0.353538,-0.460892) *** FresnelRefraction *** -Track (trackID 1427, parentID 1) is processed with stopping code 2 +Track (trackID 1240, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1239, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.57634,0.809724,-0.110362) - Old Polarization: (-0.331423,0.108153,-0.937263) - New Momentum Direction: (0.57634,-0.809724,-0.110362) - New Polarization: (0.192052,0.00293931,0.98138) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.57634,-0.809724,-0.110362) - Old Polarization: (0.192052,0.00293931,0.98138) - New Momentum Direction: (-0.57634,-0.809724,-0.110362) - New Polarization: (0.192052,-0.00293931,-0.98138) + Old Momentum Direction: (0.6215,-0.421301,-0.660487) + Old Polarization: (-0.68906,0.107158,-0.716738) + New Momentum Direction: (0.6215,-0.421301,0.660487) + New Polarization: (0.68906,-0.107158,-0.716738) *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (-0.57634,-0.809724,-0.110362) - Old Polarization: (0.192052,-0.00293931,-0.98138) - New Momentum Direction: (-0.780266,-0.607339,-0.149411) - New Polarization: (0.183843,0.00562366,-0.982939) + Old Momentum Direction: (0.6215,-0.421301,0.660487) + Old Polarization: (0.68906,-0.107158,-0.716738) + New Momentum Direction: (-0.6215,-0.421301,0.660487) + New Polarization: (0.68906,0.107158,0.716738) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.6215,-0.421301,0.660487) + Old Polarization: (0.68906,0.107158,0.716738) + New Momentum Direction: (-0.6215,0.421301,0.660487) + New Polarization: (-0.68906,0.107158,-0.716738) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.6215,0.421301,0.660487) + Old Polarization: (-0.68906,0.107158,-0.716738) + New Momentum Direction: (-0.6215,0.421301,-0.660487) + New Polarization: (0.68906,-0.107158,-0.716738) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.6215,0.421301,-0.660487) + Old Polarization: (0.68906,-0.107158,-0.716738) + New Momentum Direction: (0.6215,0.421301,-0.660487) + New Polarization: (0.68906,0.107158,0.716738) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1238, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1237, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.452302,-0.868867,0.201228) + Old Polarization: (-0.879149,-0.396392,0.264517) + New Momentum Direction: (0.612534,-0.741983,0.272515) + New Polarization: (0.403636,0.590033,0.699241) + *** FresnelRefraction *** +Track (trackID 1236, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.934749,0.277251,0.222208) + Old Polarization: (-0.334611,0.897238,0.288097) + New Momentum Direction: (0.876577,0.375533,0.300978) + New Polarization: (-0.465648,0.819817,0.333274) + *** FresnelRefraction *** +Track (trackID 1235, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.593658,-0.56079,0.577135) + Old Polarization: (-0.720088,-0.0500462,0.692075) + New Momentum Direction: (-0.593658,-0.56079,0.577135) + New Polarization: (-0.720088,0.0500462,-0.692075) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.593658,-0.56079,0.577135) + Old Polarization: (-0.720088,0.0500462,-0.692075) + New Momentum Direction: (-0.593658,-0.56079,-0.577135) + New Polarization: (0.720088,-0.0500462,-0.692075) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.593658,-0.56079,-0.577135) + Old Polarization: (0.720088,-0.0500462,-0.692075) + New Momentum Direction: (-0.593658,0.56079,-0.577135) + New Polarization: (-0.720088,-0.0500462,0.692075) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.593658,0.56079,-0.577135) + Old Polarization: (-0.720088,-0.0500462,0.692075) + New Momentum Direction: (0.593658,0.56079,-0.577135) + New Polarization: (-0.720088,0.0500462,-0.692075) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.593658,0.56079,-0.577135) + Old Polarization: (-0.720088,0.0500462,-0.692075) + New Momentum Direction: (0.593658,0.56079,0.577135) + New Polarization: (0.720088,-0.0500462,-0.692075) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.593658,0.56079,0.577135) + Old Polarization: (0.720088,-0.0500462,-0.692075) + New Momentum Direction: (0.593658,-0.56079,0.577135) + New Polarization: (-0.720088,-0.0500462,0.692075) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.593658,-0.56079,0.577135) + Old Polarization: (-0.720088,-0.0500462,0.692075) + New Momentum Direction: (-0.593658,-0.56079,0.577135) + New Polarization: (-0.720088,0.0500462,-0.692075) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.593658,-0.56079,0.577135) + Old Polarization: (-0.720088,0.0500462,-0.692075) + New Momentum Direction: (-0.593658,-0.56079,-0.577135) + New Polarization: (0.720088,-0.0500462,-0.692075) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.593658,-0.56079,-0.577135) + Old Polarization: (0.720088,-0.0500462,-0.692075) + New Momentum Direction: (-0.593658,0.56079,-0.577135) + New Polarization: (-0.720088,-0.0500462,0.692075) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1234, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 95 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 96 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1427, parentID 1) is processed with stopping code 2 +### pop requested out of 95 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.344131,-0.290413,0.89288) + Old Polarization: (-0.930749,-0.230715,0.283685) + New Momentum Direction: (0.467668,-0.394666,0.790901) + New Polarization: (0.0224884,-0.88918,-0.457005) *** FresnelRefraction *** Track (trackID 1426, parentID 1) is processed with stopping code 2 +### pop requested out of 94 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.628378,-0.705282,0.328204) + Old Polarization: (-0.609368,-0.708533,-0.355881) + New Momentum Direction: (0.849866,-0.284063,0.443888) + New Polarization: (0.261774,0.95858,0.112247) + *** FresnelRefraction *** +Track (trackID 1425, parentID 1) is processed with stopping code 2 +### pop requested out of 93 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.357389,-0.35532,0.863725) + Old Polarization: (-0.917569,-0.306059,0.253762) + New Momentum Direction: (0.484542,-0.481736,0.730171) + New Polarization: (-0.221738,-0.87508,-0.430195) + *** FresnelRefraction *** +Track (trackID 1424, parentID 1) is processed with stopping code 2 +### pop requested out of 92 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.747322,-0.654956,0.111994) + Old Polarization: (-0.474304,-0.643858,-0.600402) + New Momentum Direction: (0.430287,-0.889778,0.152147) + New Polarization: (-0.751525,-0.446475,-0.485665) + *** FresnelRefraction *** +Track (trackID 1423, parentID 1) is processed with stopping code 2 +### pop requested out of 91 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.372926,-0.382475,0.845363) + Old Polarization: (-0.906482,-0.344636,0.243962) + New Momentum Direction: (0.501266,-0.514101,0.696012) + New Polarization: (-0.302543,-0.857727,-0.415658) + *** FresnelRefraction *** +Track (trackID 1422, parentID 1) is processed with stopping code 2 +### pop requested out of 90 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.864191,0.498431,0.0688602) + Old Polarization: (-0.337178,0.675239,-0.656021) + New Momentum Direction: (0.735401,0.671257,0.0927369) + New Polarization: (-0.528333,0.653675,-0.541824) + *** FresnelRefraction *** +Track (trackID 1421, parentID 1) is processed with stopping code 2 +### pop requested out of 89 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.445807,0.389243,0.806068) + Old Polarization: (-0.817854,0.543134,0.190051) + New Momentum Direction: (0.445807,0.389243,-0.806068) + New Polarization: (0.659506,-0.751698,0.00176029) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.445807,0.389243,-0.806068) + Old Polarization: (0.659506,-0.751698,0.00176029) + New Momentum Direction: (-0.445807,0.389243,-0.806068) + New Polarization: (0.659506,0.751698,-0.00176029) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.445807,0.389243,-0.806068) + Old Polarization: (0.659506,0.751698,-0.00176029) + New Momentum Direction: (-0.445807,-0.389243,-0.806068) + New Polarization: (-0.659506,0.751698,0.00176029) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.445807,-0.389243,-0.806068) + Old Polarization: (-0.659506,0.751698,0.00176029) + New Momentum Direction: (-0.603431,-0.526868,-0.598566) + New Polarization: (-0.659594,0.751614,0.0033715) + *** FresnelRefraction *** +Track (trackID 1420, parentID 1) is processed with stopping code 2 +### pop requested out of 88 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.347598,-0.273905,0.896745) + Old Polarization: (-0.930934,-0.215023,0.295173) + New Momentum Direction: (0.469984,-0.370344,0.801224) + New Polarization: (0.0981963,-0.880151,-0.464426) + *** FresnelRefraction *** +Track (trackID 1419, parentID 1) is processed with stopping code 2 +### pop requested out of 87 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.430828,-0.562932,0.705333) + Old Polarization: (-0.835126,-0.544891,0.0752253) + New Momentum Direction: (0.430828,-0.562932,-0.705333) + New Polarization: (0.767802,0.639355,-0.0412896) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.430828,-0.562932,-0.705333) + Old Polarization: (0.767802,0.639355,-0.0412896) + New Momentum Direction: (0.430828,0.562932,-0.705333) + New Polarization: (-0.767802,0.639355,0.0412896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.430828,0.562932,-0.705333) + Old Polarization: (-0.767802,0.639355,0.0412896) + New Momentum Direction: (-0.430828,0.562932,-0.705333) + New Polarization: (-0.767802,-0.639355,-0.0412896) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.430828,0.562932,-0.705333) + Old Polarization: (-0.767802,-0.639355,-0.0412896) + New Momentum Direction: (-0.430828,0.562932,0.705333) + New Polarization: (0.807382,0.589595,0.0226003) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.430828,0.562932,0.705333) + Old Polarization: (0.807382,0.589595,0.0226003) + New Momentum Direction: (-0.430828,-0.562932,0.705333) + New Polarization: (-0.807382,0.589595,-0.0226003) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.430828,-0.562932,0.705333) + Old Polarization: (-0.807382,0.589595,-0.0226003) + New Momentum Direction: (0.430828,-0.562932,0.705333) + New Polarization: (-0.807382,-0.589595,0.0226003) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.430828,-0.562932,0.705333) + Old Polarization: (-0.807382,-0.589595,0.0226003) + New Momentum Direction: (0.582999,-0.761763,0.28254) + New Polarization: (-0.784744,-0.618032,-0.0470341) + *** FresnelRefraction *** +Track (trackID 1418, parentID 1) is processed with stopping code 2 +### pop requested out of 86 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.978414,0.0518544,-0.200043) + Old Polarization: (-0.205844,0.158881,-0.965601) + New Momentum Direction: (0.960427,0.0698901,-0.269621) + New Polarization: (-0.277932,0.176979,-0.944157) + *** FresnelRefraction *** +Track (trackID 1417, parentID 1) is processed with stopping code 2 +### pop requested out of 85 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1416, parentID 1) is processed with stopping code 2 +### pop requested out of 84 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.380271,0.218844,0.898611) + Old Polarization: (-0.891087,0.346914,0.292601) + New Momentum Direction: (0.515882,0.296887,0.803569) + New Polarization: (0.227345,0.856943,-0.46256) + *** FresnelRefraction *** +Track (trackID 1415, parentID 1) is processed with stopping code 2 +### pop requested out of 83 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.922969,-0.346713,-0.167089) + Old Polarization: (-0.276065,-0.293891,-0.915104) + New Momentum Direction: (0.85208,-0.471514,-0.227233) + New Polarization: (-0.427658,-0.376864,-0.821634) + *** FresnelRefraction *** +Track (trackID 1414, parentID 1) is processed with stopping code 2 +### pop requested out of 82 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1413, parentID 1) is processed with stopping code 2 +### pop requested out of 81 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.337182,-0.227706,0.913487) + Old Polarization: (-0.938368,-0.1596,0.306583) + New Momentum Direction: (0.458362,-0.309542,0.833119) + New Polarization: (0.284113,-0.837171,-0.467359) + *** FresnelRefraction *** +Track (trackID 1412, parentID 1) is processed with stopping code 2 +### pop requested out of 80 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1411, parentID 1) is processed with stopping code 2 +### pop requested out of 79 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.978689,0.0261665,-0.203672) + Old Polarization: (-0.205344,0.12929,-0.970112) + New Momentum Direction: (-0.978689,0.0261665,-0.203672) + New Polarization: (0.205343,0.11954,-0.971362) + *** FresnelReflection *** + +** Photon absorbed! ** +Track (trackID 1410, parentID 1) is processed with stopping code 2 +### pop requested out of 78 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1409, parentID 1) is processed with stopping code 2 +### pop requested out of 77 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1408, parentID 1) is processed with stopping code 2 +### pop requested out of 76 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.97553,-0.0441935,-0.21538) + Old Polarization: (-0.213267,0.0480164,-0.975813) + New Momentum Direction: (0.954632,-0.0598555,-0.29171) + New Polarization: (-0.292845,-0.0109627,-0.956097) + *** FresnelRefraction *** +Track (trackID 1407, parentID 1) is processed with stopping code 2 +### pop requested out of 75 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.898961,-0.420121,-0.123969) + Old Polarization: (-0.299379,-0.382694,-0.874024) + New Momentum Direction: (0.805851,-0.567909,-0.167579) + New Polarization: (-0.467496,-0.436543,-0.768686) + *** FresnelRefraction *** +Track (trackID 1406, parentID 1) is processed with stopping code 2 +### pop requested out of 74 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1405, parentID 1) is processed with stopping code 2 +### pop requested out of 73 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.955614,-0.210047,-0.206598) + Old Polarization: (-0.2385,-0.139816,-0.961025) + New Momentum Direction: (0.916373,-0.285406,-0.280719) + New Polarization: (-0.353661,-0.248603,-0.901732) + *** FresnelRefraction *** +Track (trackID 1404, parentID 1) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.852334,-0.520136,-0.0546361) + Old Polarization: (-0.353415,-0.495805,-0.793269) + New Momentum Direction: (0.706393,-0.703947,-0.073944) + New Polarization: (-0.557129,-0.488526,-0.671528) + *** FresnelRefraction *** +Track (trackID 1403, parentID 1) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.492169,0.469766,0.732864) + Old Polarization: (-0.764935,0.635238,0.10652) + New Momentum Direction: (0.666125,0.635803,0.389914) + New Polarization: (-0.607545,0.7658,-0.210807) + *** FresnelRefraction *** +Track (trackID 1402, parentID 1) is processed with stopping code 2 +### pop requested out of 70 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1401, parentID 1) is processed with stopping code 2 +### pop requested out of 69 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.453777,-0.593385,0.664816) + Old Polarization: (-0.81073,-0.584566,0.0316146) + New Momentum Direction: (0.453777,-0.593385,-0.664816) + New Polarization: (0.81073,0.584566,0.0316146) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.453777,-0.593385,-0.664816) + Old Polarization: (0.81073,0.584566,0.0316146) + New Momentum Direction: (0.453777,0.593385,-0.664816) + New Polarization: (-0.81073,0.584566,-0.0316146) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.453777,0.593385,-0.664816) + Old Polarization: (-0.81073,0.584566,-0.0316146) + New Momentum Direction: (-0.453777,0.593385,-0.664816) + New Polarization: (-0.81073,-0.584566,0.0316146) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.453777,0.593385,-0.664816) + Old Polarization: (-0.81073,-0.584566,0.0316146) + New Momentum Direction: (-0.453777,0.593385,0.664816) + New Polarization: (0.81073,0.584566,0.0316146) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.453777,0.593385,0.664816) + Old Polarization: (0.81073,0.584566,0.0316146) + New Momentum Direction: (-0.453777,-0.593385,0.664816) + New Polarization: (-0.81073,0.584566,-0.0316146) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1400, parentID 1) is processed with stopping code 2 +### pop requested out of 68 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1399, parentID 1) is processed with stopping code 2 +### pop requested out of 67 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.38121,0.230703,0.89524) + Old Polarization: (-0.888531,0.358874,0.285872) + New Momentum Direction: (0.518241,0.313632,0.795652) + New Polarization: (0.176662,0.871009,-0.458403) + *** FresnelRefraction *** +Track (trackID 1398, parentID 1) is processed with stopping code 2 +### pop requested out of 66 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.970883,0.162312,-0.176182) + Old Polarization: (-0.217026,0.284615,-0.933753) + New Momentum Direction: (0.946111,0.219425,-0.238175) + New Polarization: (-0.3062,0.366677,-0.878515) + *** FresnelRefraction *** +Track (trackID 1397, parentID 1) is processed with stopping code 2 +### pop requested out of 65 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.505394,-0.664364,0.550634) + Old Polarization: (-0.748478,-0.655054,-0.103368) + New Momentum Direction: (0.505394,0.664364,0.550634) + New Polarization: (0.748478,-0.655054,0.103368) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.505394,0.664364,0.550634) + Old Polarization: (0.748478,-0.655054,0.103368) + New Momentum Direction: (0.505394,0.664364,-0.550634) + New Polarization: (-0.748478,0.655054,0.103368) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.505394,0.664364,-0.550634) + Old Polarization: (-0.748478,0.655054,0.103368) + New Momentum Direction: (-0.505394,0.664364,-0.550634) + New Polarization: (-0.748478,-0.655054,-0.103368) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1396, parentID 1) is processed with stopping code 2 +### pop requested out of 64 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1395, parentID 1) is processed with stopping code 2 +### pop requested out of 63 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1394, parentID 1) is processed with stopping code 2 +### pop requested out of 62 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.894407,0.447212,-0.00609367) + Old Polarization: (-0.307509,0.605,-0.734447) + New Momentum Direction: (0.794376,0.60737,-0.00827597) + New Polarization: (-0.482733,0.622977,-0.615523) + *** FresnelRefraction *** +Track (trackID 1393, parentID 1) is processed with stopping code 2 +### pop requested out of 61 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1392, parentID 1) is processed with stopping code 2 +### pop requested out of 60 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.362885,0.118216,0.924305) + Old Polarization: (-0.914665,0.234724,0.32908) + New Momentum Direction: (0.489882,0.159588,0.857057) + New Polarization: (0.626134,0.619653,-0.473272) + *** FresnelRefraction *** +Track (trackID 1391, parentID 1) is processed with stopping code 2 +### pop requested out of 59 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.375546,-0.435838,0.81793) + Old Polarization: (-0.895986,-0.39642,0.20015) + New Momentum Direction: (0.5098,-0.591647,0.624546) + New Polarization: (-0.481443,-0.79785,-0.362833) + *** FresnelRefraction *** +Track (trackID 1390, parentID 1) is processed with stopping code 2 +### pop requested out of 58 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1389, parentID 1) is processed with stopping code 2 +### pop requested out of 57 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.827595,0.546485,0.128219) + Old Polarization: (-0.38336,0.71712,-0.582043) + New Momentum Direction: (0.646927,0.742392,0.174183) + New Polarization: (-0.607545,0.639842,-0.470629) + *** FresnelRefraction *** +Track (trackID 1388, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.380634,-0.425727,0.820899) + Old Polarization: (-0.895293,-0.391847,0.211913) + New Momentum Direction: (0.513137,-0.573928,0.638199) + New Polarization: (-0.443107,-0.813945,-0.3757) + *** FresnelRefraction *** +Track (trackID 1387, parentID 1) is processed with stopping code 2 +### pop requested out of 55 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1386, parentID 1) is processed with stopping code 2 +### pop requested out of 54 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.716907,0.611014,0.335718) + Old Polarization: (-0.508979,0.787786,-0.34689) + New Momentum Direction: (0.316928,0.831242,0.456721) + New Polarization: (-0.80923,0.488146,-0.326894) + *** FresnelRefraction *** +Track (trackID 1385, parentID 1) is processed with stopping code 2 +### pop requested out of 53 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1384, parentID 1) is processed with stopping code 2 +### pop requested out of 52 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.42286,-0.555754,0.71577) +Old Polarization: (-0.842273,-0.532437,0.0841882) +New Polarization: (-0.967766,-0.0572138,0.245265) +Polarization Change: (-0.967766,-0.0572138,0.245265) +New Momentum Direction: (0.0079262,0.966452,0.256723) +Momentum Change: (0.0079262,0.966452,0.256723) + Photon at Boundary! + Old Momentum Direction: (0.0079262,0.966452,0.256723) + Old Polarization: (-0.967766,-0.0572138,0.245265) + New Momentum Direction: (0.0079262,0.966452,-0.256723) + New Polarization: (0.967766,0.0572138,0.245265) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.0079262,0.966452,-0.256723) + Old Polarization: (0.967766,0.0572138,0.245265) + New Momentum Direction: (0.0107602,0.937242,-0.348514) + New Polarization: (0.962863,-0.103743,-0.249262) + *** FresnelRefraction *** +Track (trackID 1383, parentID 1) is processed with stopping code 2 +### pop requested out of 51 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.618658,-0.704113,0.348549) + Old Polarization: (-0.620665,-0.71001,-0.332659) + New Momentum Direction: (0.835366,-0.284006,0.470641) + New Polarization: (0.242678,0.958778,0.147827) + *** FresnelRefraction *** +Track (trackID 1382, parentID 1) is processed with stopping code 2 +### pop requested out of 50 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.852118,-0.519752,-0.0612662) + Old Polarization: (-0.355976,-0.4898,-0.79585) + New Momentum Direction: (0.702669,-0.706625,-0.083294) + New Polarization: (-0.563808,-0.481558,-0.670986) + *** FresnelRefraction *** +Track (trackID 1381, parentID 1) is processed with stopping code 2 +### pop requested out of 49 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1380, parentID 1) is processed with stopping code 2 +### pop requested out of 48 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1379, parentID 1) is processed with stopping code 2 +### pop requested out of 47 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.566622,-0.7012,0.432734) + Old Polarization: (-0.678814,-0.694935,-0.237229) + New Momentum Direction: (0.77037,-0.245742,0.588337) + New Polarization: (0.105815,0.959221,0.262103) + *** FresnelRefraction *** +Track (trackID 1378, parentID 1) is processed with stopping code 2 +### pop requested out of 46 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.690601,-0.690463,0.215246) + Old Polarization: (-0.538267,-0.689466,-0.48467) + New Momentum Direction: (0.202032,-0.934999,0.291478) + New Polarization: (-0.853829,-0.313938,-0.415233) + *** FresnelRefraction *** +Track (trackID 1377, parentID 1) is processed with stopping code 2 +### pop requested out of 45 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1376, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.343607,-0.26037,0.902298) + Old Polarization: (-0.933643,-0.198269,0.29833) + New Momentum Direction: (0.343607,-0.26037,-0.902298) + New Polarization: (0.851825,0.490925,0.182723) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.343607,-0.26037,-0.902298) + Old Polarization: (0.851825,0.490925,0.182723) + New Momentum Direction: (-0.343607,-0.26037,-0.902298) + New Polarization: (0.851825,-0.490925,-0.182723) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.343607,-0.26037,-0.902298) + Old Polarization: (0.851825,-0.490925,-0.182723) + New Momentum Direction: (-0.465635,-0.352838,-0.811597) + New Polarization: (0.157321,-0.935478,0.316435) + *** FresnelRefraction *** +Track (trackID 1375, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.357387,-0.365151,0.859615) + Old Polarization: (-0.916183,-0.315777,0.246768) + New Momentum Direction: (0.485407,-0.495952,0.720008) + New Polarization: (-0.259242,-0.868147,-0.423219) + *** FresnelRefraction *** +Track (trackID 1374, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1373, parentID 1) is processed with stopping code 2 +### pop requested out of 41 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.527203,-0.680529,0.508858) + Old Polarization: (-0.723757,-0.673393,-0.150722) + New Momentum Direction: (0.715973,-0.0990913,0.69106) + New Polarization: (-0.10029,0.965009,0.242279) + *** FresnelRefraction *** +Track (trackID 1372, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.935934,-0.302826,-0.179787) + Old Polarization: (-0.259113,-0.246383,-0.933893) + New Momentum Direction: (0.878671,-0.410528,-0.24373) + New Polarization: (-0.396164,-0.34204,-0.852093) + *** FresnelRefraction *** +Track (trackID 1371, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.862348,0.502785,0.0596848) + Old Polarization: (-0.343827,0.66805,-0.659918) + New Momentum Direction: (0.726078,0.682818,0.0810563) + New Polarization: (-0.543369,0.642005,-0.540907) + *** FresnelRefraction *** +Track (trackID 1370, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.644712,0.604599,0.467767) + Old Polarization: (-0.590528,0.782485,-0.197469) + New Momentum Direction: (-0.644712,0.604599,0.467767) + New Polarization: (-0.590528,-0.782485,0.197469) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.644712,0.604599,0.467767) + Old Polarization: (-0.590528,-0.782485,0.197469) + New Momentum Direction: (-0.644712,-0.604599,0.467767) + New Polarization: (0.590528,-0.782485,-0.197469) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.644712,-0.604599,0.467767) + Old Polarization: (0.590528,-0.782485,-0.197469) + New Momentum Direction: (-0.644712,-0.604599,-0.467767) + New Polarization: (-0.590528,0.782485,-0.197469) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.644712,-0.604599,-0.467767) + Old Polarization: (-0.590528,0.782485,-0.197469) + New Momentum Direction: (0.644712,-0.604599,-0.467767) + New Polarization: (-0.590528,-0.782485,0.197469) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.644712,-0.604599,-0.467767) + Old Polarization: (-0.590528,-0.782485,0.197469) + New Momentum Direction: (0.644712,0.604599,-0.467767) + New Polarization: (0.590528,-0.782485,-0.197469) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.644712,0.604599,-0.467767) + Old Polarization: (0.590528,-0.782485,-0.197469) + New Momentum Direction: (0.644712,0.604599,0.467767) + New Polarization: (-0.590528,0.782485,-0.197469) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.644712,0.604599,0.467767) + Old Polarization: (-0.590528,0.782485,-0.197469) + New Momentum Direction: (-0.644712,0.604599,0.467767) + New Polarization: (-0.590528,-0.782485,0.197469) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.644712,0.604599,0.467767) + Old Polarization: (-0.590528,-0.782485,0.197469) + New Momentum Direction: (-0.644712,-0.604599,0.467767) + New Polarization: (0.590528,-0.782485,-0.197469) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1369, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.466077,0.437835,0.768813) + Old Polarization: (-0.79248,0.592959,0.142737) + New Momentum Direction: (0.633702,0.595303,0.494) + New Polarization: (-0.536002,0.798349,-0.274482) + *** FresnelRefraction *** +Track (trackID 1368, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.975323,-0.0267024,-0.219162) + Old Polarization: (-0.216971,0.0677295,-0.973826) + New Momentum Direction: (0.953851,-0.0363171,-0.298075) + New Polarization: (-0.297463,0.0213731,-0.954494) + *** FresnelRefraction *** +Track (trackID 1367, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.51741,-0.663448,0.540484) + Old Polarization: (-0.737595,-0.665991,-0.111402) + New Momentum Direction: (0.51741,0.663448,0.540484) + New Polarization: (0.737595,-0.665991,0.111402) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.51741,0.663448,0.540484) + Old Polarization: (0.737595,-0.665991,0.111402) + New Momentum Direction: (0.51741,0.663448,-0.540484) + New Polarization: (-0.737595,0.665991,0.111402) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.51741,0.663448,-0.540484) + Old Polarization: (-0.737595,0.665991,0.111402) + New Momentum Direction: (-0.51741,0.663448,-0.540484) + New Polarization: (-0.737595,-0.665991,-0.111402) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.51741,0.663448,-0.540484) + Old Polarization: (-0.737595,-0.665991,-0.111402) + New Momentum Direction: (0.51741,0.663448,-0.540484) + New Polarization: (-0.737595,0.665991,0.111402) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1366, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.589698,-0.707842,0.388864) + Old Polarization: (-0.652606,-0.701286,-0.286884) + New Momentum Direction: (0.802292,-0.276456,0.529055) + New Polarization: (0.187542,0.95815,0.216278) + *** FresnelRefraction *** +Track (trackID 1365, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1364, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.438232,0.386301,0.811618) + Old Polarization: (-0.82367,0.534106,0.190523) + New Momentum Direction: (0.596156,0.525511,0.606989) + New Polarization: (-0.393192,0.850256,-0.349949) + *** FresnelRefraction *** +Track (trackID 1363, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.754879,0.599025,0.267071) + Old Polarization: (-0.465784,0.776321,-0.4247) + New Momentum Direction: (0.453707,0.813921,0.362881) + New Polarization: (-0.738184,0.571379,-0.358624) + *** FresnelRefraction *** +Track (trackID 1362, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.963055,-0.16395,-0.213648) + Old Polarization: (-0.229947,-0.0876683,-0.969247) + New Momentum Direction: (0.930668,-0.222735,-0.290253) + New Polarization: (-0.33409,-0.193992,-0.922362) + *** FresnelRefraction *** +Track (trackID 1361, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.887855,-0.445634,-0.114561) + Old Polarization: (-0.314939,-0.407051,-0.857393) + New Momentum Direction: (0.780698,-0.605229,-0.155589) + New Polarization: (-0.495346,-0.447557,-0.74453) + *** FresnelRefraction *** +Track (trackID 1360, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1359, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.653111,-0.701748,0.284597) + Old Polarization: (-0.581071,-0.705411,-0.405896) + New Momentum Direction: (0.882845,-0.269421,0.384705) + New Polarization: (0.282372,0.959014,0.0236227) + *** FresnelRefraction *** +Track (trackID 1358, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.589911,0.57963,0.562169) + Old Polarization: (-0.65238,0.752387,-0.0911826) + New Momentum Direction: (-0.589911,0.57963,0.562169) + New Polarization: (-0.65238,-0.752387,0.0911826) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.589911,0.57963,0.562169) + Old Polarization: (-0.65238,-0.752387,0.0911826) + New Momentum Direction: (-0.589911,-0.57963,0.562169) + New Polarization: (0.65238,-0.752387,-0.0911826) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.589911,-0.57963,0.562169) + Old Polarization: (0.65238,-0.752387,-0.0911826) + New Momentum Direction: (-0.589911,-0.57963,-0.562169) + New Polarization: (-0.65238,0.752387,-0.0911826) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1357, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.888387,0.458901,0.0133331) + Old Polarization: (-0.311649,0.624138,-0.716468) + New Momentum Direction: (0.784007,0.620491,0.018028) + New Polarization: (-0.488234,0.634312,-0.599397) + *** FresnelRefraction *** +Track (trackID 1356, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1355, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.622214,0.593908,0.510022) + Old Polarization: (-0.616156,0.773416,-0.148928) + New Momentum Direction: (-0.622214,0.593908,0.510022) + New Polarization: (-0.616156,-0.773416,0.148928) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.622214,0.593908,0.510022) + Old Polarization: (-0.616156,-0.773416,0.148928) + New Momentum Direction: (-0.622214,-0.593908,0.510022) + New Polarization: (0.616156,-0.773416,-0.148928) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.622214,-0.593908,0.510022) + Old Polarization: (0.616156,-0.773416,-0.148928) + New Momentum Direction: (-0.622214,-0.593908,-0.510022) + New Polarization: (-0.616156,0.773416,-0.148928) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1354, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.898515,0.438831,-0.00990662) + Old Polarization: (-0.30092,0.599395,-0.741737) + New Momentum Direction: (0.804231,0.594165,-0.0134133) + New Polarization: (-0.470585,0.62285,-0.624986) + *** FresnelRefraction *** +Track (trackID 1353, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.524596,0.520242,0.673905) + Old Polarization: (-0.726375,0.686378,0.0355696) + New Momentum Direction: (0.524596,0.520242,-0.673905) + New Polarization: (0.726375,-0.686378,0.0355696) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1352, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.419165,-0.550257,0.722162) +Old Polarization: (-0.846048,-0.525316,0.0908035) +New Polarization: (-0.654166,-0.598692,-0.462206) +Polarization Change: (-0.654166,-0.598692,-0.462206) +New Momentum Direction: (0.542348,0.054646,-0.838375) +Momentum Change: (0.542348,0.054646,-0.838375) + Photon at Boundary! + Old Momentum Direction: (0.542348,0.054646,-0.838375) + Old Polarization: (-0.654166,-0.598692,-0.462206) + New Momentum Direction: (-0.542348,0.054646,-0.838375) + New Polarization: (-0.654166,0.598692,0.462206) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.542348,0.054646,-0.838375) + Old Polarization: (-0.654166,0.598692,0.462206) + New Momentum Direction: (-0.736765,0.074235,-0.672062) + New Polarization: (-0.570147,0.4661,0.676523) + *** FresnelRefraction *** +Track (trackID 1351, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.449512,0.393968,0.801703) + Old Polarization: (-0.81423,0.549822,0.186345) + New Momentum Direction: (0.607774,0.532675,0.588954) + New Polarization: (-0.411228,0.845583,-0.340413) + *** FresnelRefraction *** +Track (trackID 1350, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.803039,0.569363,0.175936) + Old Polarization: (-0.411169,0.743074,-0.527998) + New Momentum Direction: (0.587067,0.773454,0.239001) + New Polarization: (-0.651786,0.626698,-0.427112) + *** FresnelRefraction *** +Track (trackID 1349, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.830498,0.543691,0.121132) +Old Polarization: (-0.380489,0.712543,-0.5895) +New Polarization: (-0.611525,0.789621,0.050363) +Polarization Change: (-0.611525,0.789621,0.050363) +New Momentum Direction: (0.13635,0.167868,-0.976334) +Momentum Change: (0.13635,0.167868,-0.976334) +Scattering Photon! +Old Momentum Direction: (0.13635,0.167868,-0.976334) +Old Polarization: (-0.611525,0.789621,0.050363) +New Polarization: (0.460021,-0.257062,0.849883) +Polarization Change: (0.460021,-0.257062,0.849883) +New Momentum Direction: (-0.455194,0.753545,0.474308) +Momentum Change: (-0.455194,0.753545,0.474308) + Photon at Boundary! + Old Momentum Direction: (-0.455194,0.753545,0.474308) + Old Polarization: (0.460021,-0.257062,0.849883) + New Momentum Direction: (-0.618945,0.448291,0.644936) + New Polarization: (0.447667,-0.473343,0.758644) + *** FresnelRefraction *** +Track (trackID 1348, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1347, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1346, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.764254,0.589718,0.261052) + Old Polarization: (-0.452969,0.778977,-0.433606) + New Momentum Direction: (0.494059,0.795016,0.351931) + New Polarization: (-0.710471,0.602493,-0.363639) + *** FresnelRefraction *** +Track (trackID 1345, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.398903,-0.490693,0.774659) + Old Polarization: (-0.87232,-0.463521,0.155584) + New Momentum Direction: (0.539244,-0.663327,0.518858) + New Polarization: (-0.617168,-0.730467,-0.29244) + *** FresnelRefraction *** +Track (trackID 1344, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1343, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.491082,-0.653286,0.576243) + Old Polarization: (-0.764192,-0.640613,-0.0750086) + New Momentum Direction: (0.491082,0.653286,0.576243) + New Polarization: (0.764192,-0.640613,0.0750086) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.491082,0.653286,0.576243) + Old Polarization: (0.764192,-0.640613,0.0750086) + New Momentum Direction: (0.491082,0.653286,-0.576243) + New Polarization: (-0.764192,0.640613,0.0750086) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.491082,0.653286,-0.576243) + Old Polarization: (-0.764192,0.640613,0.0750086) + New Momentum Direction: (-0.491082,0.653286,-0.576243) + New Polarization: (-0.764192,-0.640613,-0.0750086) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1342, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.37199,0.144386,0.916938) + Old Polarization: (-0.906992,0.266673,0.325963) + New Momentum Direction: (0.500373,0.194217,0.843746) + New Polarization: (0.531711,0.70017,-0.476493) + *** FresnelRefraction *** +Track (trackID 1341, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.800636,0.56775,0.19142) + Old Polarization: (-0.411163,0.75302,-0.513718) + New Momentum Direction: (0.58913,0.76569,0.258156) + New Polarization: (-0.646057,0.638233,-0.418651) + *** FresnelRefraction *** +Track (trackID 1340, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.439243,-0.589328,0.678055) + Old Polarization: (-0.822455,-0.567451,0.0395877) + New Momentum Direction: (0.439243,-0.589328,-0.678055) + New Polarization: (0.822455,0.567451,0.0395877) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.439243,-0.589328,-0.678055) + Old Polarization: (0.822455,0.567451,0.0395877) + New Momentum Direction: (0.439243,0.589328,-0.678055) + New Polarization: (-0.822455,0.567451,-0.0395877) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.439243,0.589328,-0.678055) + Old Polarization: (-0.822455,0.567451,-0.0395877) + New Momentum Direction: (-0.439243,0.589328,-0.678055) + New Polarization: (-0.822455,-0.567451,0.0395877) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1339, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.448969,0.396292,0.800862) + Old Polarization: (-0.814097,0.550876,0.183798) + New Momentum Direction: (0.607872,0.536551,0.585324) + New Polarization: (-0.419192,0.842904,-0.337329) + *** FresnelRefraction *** +Track (trackID 1338, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. ** Photon absorbed! ** -Track (trackID 1425, parentID 1) is processed with stopping code 2 +Track (trackID 1337, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.516127,-0.0962822,0.851083) - Old Polarization: (-0.398945,-0.906316,0.139404) - New Momentum Direction: (0.699185,-0.130431,0.702942) - New Polarization: (0.0764886,-0.963928,-0.254937) + Old Momentum Direction: (0.557991,-0.690785,0.45985) + Old Polarization: (-0.690238,-0.69396,-0.204917) + New Momentum Direction: (0.753774,-0.21433,0.621198) + New Polarization: (0.0469122,0.960454,0.274458) *** FresnelRefraction *** -Track (trackID 1424, parentID 1) is processed with stopping code 2 +Track (trackID 1336, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0153782,0.526847,0.849821) - Old Polarization: (-0.967472,-0.2068,0.145713) - New Momentum Direction: (0.0206916,0.708884,0.705022) - New Polarization: (-0.92117,0.287614,-0.262154) - *** FresnelRefraction *** -Track (trackID 1423, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.631092,0.595398,0.497217) + Old Polarization: (-0.6062,0.778476,-0.162778) + New Momentum Direction: (-0.631092,0.595398,0.497217) + New Polarization: (-0.6062,-0.778476,0.162778) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.631092,0.595398,0.497217) + Old Polarization: (-0.6062,-0.778476,0.162778) + New Momentum Direction: (-0.631092,-0.595398,0.497217) + New Polarization: (0.6062,-0.778476,-0.162778) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.631092,-0.595398,0.497217) + Old Polarization: (0.6062,-0.778476,-0.162778) + New Momentum Direction: (-0.631092,-0.595398,-0.497217) + New Polarization: (-0.6062,0.778476,-0.162778) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.631092,-0.595398,-0.497217) + Old Polarization: (-0.6062,0.778476,-0.162778) + New Momentum Direction: (0.631092,-0.595398,-0.497217) + New Polarization: (-0.6062,-0.778476,0.162778) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.631092,-0.595398,-0.497217) + Old Polarization: (-0.6062,-0.778476,0.162778) + New Momentum Direction: (0.631092,0.595398,-0.497217) + New Polarization: (0.6062,-0.778476,-0.162778) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1335, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1422, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.827331,-0.561598,-0.0114421) + Old Polarization: (-0.38102,-0.546109,-0.746049) + New Momentum Direction: (0.651577,-0.758425,-0.0154523) + New Polarization: (-0.599834,-0.502646,-0.622532) + *** FresnelRefraction *** +Track (trackID 1334, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1421, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.760729,-0.641519,0.0987136) + Old Polarization: (-0.457507,-0.637855,-0.619538) + New Momentum Direction: (0.481276,-0.866372,0.133313) + New Polarization: (-0.719198,-0.477225,-0.504986) + *** FresnelRefraction *** +Track (trackID 1333, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 84 Track (trackID 1, parentID 0) is processed with stopping code 4 ### pop requested out of 85 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.116798,-0.121156,0.985738) - Old Polarization: (-0.712594,-0.701574,-0.00179635) - New Momentum Direction: (0.157788,-0.163676,0.973814) - New Polarization: (-0.710099,-0.704094,-0.00328425) + Old Momentum Direction: (0.801244,-0.590791,0.0947302) + Old Polarization: (-0.551475,-0.790597,-0.266143) + New Momentum Direction: (0.582948,-0.802262,0.128638) + New Polarization: (-0.779207,-0.596866,-0.19128) *** FresnelRefraction *** -Track (trackID 1630, parentID 1) is processed with stopping code 2 +Track (trackID 1511, parentID 1) is processed with stopping code 2 ### pop requested out of 84 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.213901,-0.214689,0.952972) - Old Polarization: (-0.598391,-0.799889,-0.0458895) - New Momentum Direction: (0.290872,-0.291944,0.911133) - New Polarization: (-0.561312,-0.823269,-0.0845964) + Old Momentum Direction: (0.678745,-0.478707,0.556907) + Old Polarization: (-0.693351,-0.667639,0.27115) + New Momentum Direction: (0.118796,-0.647241,0.752972) + New Polarization: (-0.971907,-0.230982,-0.0452107) *** FresnelRefraction *** -Track (trackID 1629, parentID 1) is processed with stopping code 2 +Track (trackID 1510, parentID 1) is processed with stopping code 2 ### pop requested out of 83 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.125694,0.352677,0.927265) - Old Polarization: (-0.984196,-0.161847,-0.0718547) - New Momentum Direction: (-0.170402,0.478118,0.861607) - New Polarization: (-0.984735,-0.114129,-0.131421) + Old Momentum Direction: (0.894588,0.0127462,-0.44671) + Old Polarization: (-0.443657,-0.0947215,-0.891177) + New Momentum Direction: (0.795007,0.0173014,-0.606353) + New Polarization: (-0.604289,-0.0645892,-0.794143) *** FresnelRefraction *** -Track (trackID 1628, parentID 1) is processed with stopping code 2 +Track (trackID 1509, parentID 1) is processed with stopping code 2 ### pop requested out of 82 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.90367,0.408204,0.129421) - Old Polarization: (0.184321,-0.0979793,-0.97797) - New Momentum Direction: (0.815509,0.55168,0.17491) - New Polarization: (-0.316912,0.678565,-0.662659) - *** FresnelRefraction *** -Track (trackID 1627, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1508, parentID 1) is processed with stopping code 2 ### pop requested out of 81 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.131017,0.459853,0.878277) - Old Polarization: (-0.991116,-0.0402943,-0.126753) - New Momentum Direction: (-0.177506,0.62302,0.761799) - New Polarization: (-0.973087,0.00447396,-0.230397) + Old Momentum Direction: (0.815615,0.511555,-0.270339) + Old Polarization: (-0.533972,0.485569,-0.692168) + New Momentum Direction: (0.622666,0.691824,-0.365605) + New Polarization: (-0.750229,0.39505,-0.530181) *** FresnelRefraction *** -Track (trackID 1626, parentID 1) is processed with stopping code 2 +Track (trackID 1507, parentID 1) is processed with stopping code 2 ### pop requested out of 80 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1625, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.636712,-0.35837,0.682765) + Old Polarization: (-0.741948,-0.525894,0.415871) + New Momentum Direction: (0.636712,-0.35837,-0.682765) + New Polarization: (0.1582,0.927316,-0.339201) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.636712,-0.35837,-0.682765) + Old Polarization: (0.1582,0.927316,-0.339201) + New Momentum Direction: (-0.636712,-0.35837,-0.682765) + New Polarization: (0.1582,-0.927316,0.339201) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.636712,-0.35837,-0.682765) + Old Polarization: (0.1582,-0.927316,0.339201) + New Momentum Direction: (-0.636712,0.35837,-0.682765) + New Polarization: (-0.1582,-0.927316,-0.339201) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.636712,0.35837,-0.682765) + Old Polarization: (-0.1582,-0.927316,-0.339201) + New Momentum Direction: (-0.862071,0.485212,-0.146295) + New Polarization: (-0.454667,-0.612975,0.646174) + *** FresnelRefraction *** +Track (trackID 1506, parentID 1) is processed with stopping code 2 ### pop requested out of 79 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1624, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.856059,-0.502754,-0.120008) + Old Polarization: (-0.485393,-0.702148,-0.520942) + New Momentum Direction: (0.718118,-0.676904,-0.161578) + New Polarization: (-0.672722,-0.615761,-0.410224) + *** FresnelRefraction *** +Track (trackID 1505, parentID 1) is processed with stopping code 2 ### pop requested out of 78 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.334496,0.889775,0.310503) - Old Polarization: (-0.46305,0.442144,-0.768175) - New Momentum Direction: (0.334496,-0.889775,0.310503) - New Polarization: (0.205671,0.390465,0.89735) - *** FresnelReflection *** + Old Momentum Direction: (0.651938,-0.394215,0.647744) + Old Polarization: (-0.725326,-0.573274,0.381129) + New Momentum Direction: (-0.651938,-0.394215,0.647744) + New Polarization: (-0.725326,0.573274,-0.381129) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.651938,-0.394215,0.647744) + Old Polarization: (-0.725326,0.573274,-0.381129) + New Momentum Direction: (-0.651938,-0.394215,-0.647744) + New Polarization: (0.725326,-0.573274,-0.381129) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.651938,-0.394215,-0.647744) + Old Polarization: (0.725326,-0.573274,-0.381129) + New Momentum Direction: (-0.651938,0.394215,-0.647744) + New Polarization: (-0.725326,-0.573274,0.381129) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1623, parentID 1) is processed with stopping code 2 +Track (trackID 1504, parentID 1) is processed with stopping code 2 ### pop requested out of 77 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1622, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.882917,-0.384201,-0.269903) + Old Polarization: (-0.455094,-0.558805,-0.693272) + New Momentum Direction: (0.77319,-0.518925,-0.364547) + New Polarization: (-0.623674,-0.518024,-0.58539) + *** FresnelRefraction *** +Track (trackID 1503, parentID 1) is processed with stopping code 2 ### pop requested out of 76 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1621, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.767452,0.627825,-0.12982) + Old Polarization: (-0.590515,0.613403,-0.524432) + New Momentum Direction: (0.490858,0.85319,-0.176421) + New Polarization: (-0.836557,0.404989,-0.368993) + *** FresnelRefraction *** +Track (trackID 1502, parentID 1) is processed with stopping code 2 ### pop requested out of 75 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0738289,0.688435,0.72153) - Old Polarization: (-0.927053,0.219303,-0.304103) - New Momentum Direction: (-0.0999679,0.932175,0.347933) - New Polarization: (-0.822997,0.119054,-0.55543) + Old Momentum Direction: (0.804097,-0.585692,0.101943) + Old Polarization: (-0.546924,-0.796008,-0.259317) + New Momentum Direction: (0.597195,-0.790215,0.137541) + New Polarization: (-0.767796,-0.612799,-0.186994) *** FresnelRefraction *** -Track (trackID 1620, parentID 1) is processed with stopping code 2 +Track (trackID 1501, parentID 1) is processed with stopping code 2 ### pop requested out of 74 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.667999,-0.469035,0.57774) + Old Polarization: (-0.704835,-0.647824,0.289018) + New Momentum Direction: (-0.667999,-0.469035,0.57774) + New Polarization: (-0.704835,0.647824,-0.289018) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.667999,-0.469035,0.57774) + Old Polarization: (-0.704835,0.647824,-0.289018) + New Momentum Direction: (-0.667999,-0.469035,-0.57774) + New Polarization: (0.704835,-0.647824,-0.289018) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.667999,-0.469035,-0.57774) + Old Polarization: (0.704835,-0.647824,-0.289018) + New Momentum Direction: (-0.667999,0.469035,-0.57774) + New Polarization: (-0.704835,-0.647824,0.289018) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1619, parentID 1) is processed with stopping code 2 +Track (trackID 1500, parentID 1) is processed with stopping code 2 ### pop requested out of 73 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.954909,-0.013208,0.296604) - Old Polarization: (0.235582,-0.574288,-0.784024) - New Momentum Direction: (0.915061,-0.0179422,0.402916) - New Polarization: (-0.351749,-0.524271,0.775508) - *** FresnelRefraction *** -Track (trackID 1618, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.265037,-0.243108,0.933088) - Old Polarization: (-0.542609,-0.837537,-0.0640889) - New Momentum Direction: (0.358873,-0.32918,0.873413) - New Polarization: (-0.501406,-0.857255,-0.11707) - *** FresnelRefraction *** -Track (trackID 1617, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. ** Photon absorbed! ** -Track (trackID 1616, parentID 1) is processed with stopping code 2 +Track (trackID 1499, parentID 1) is processed with stopping code 2 +### pop requested out of 72 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.816213,-0.575616,0.0496155) +Old Polarization: (-0.532869,-0.783212,-0.320359) +New Polarization: (-0.290131,-0.764562,-0.57556) +Polarization Change: (-0.290131,-0.764562,-0.57556) +New Momentum Direction: (0.751165,0.190697,-0.631969) +Momentum Change: (0.751165,0.190697,-0.631969) + Photon at Boundary! + Old Momentum Direction: (0.751165,0.190697,-0.631969) + Old Polarization: (-0.290131,-0.764562,-0.57556) + New Momentum Direction: (0.453738,0.257436,-0.85314) + New Polarization: (-0.516369,-0.704305,-0.487153) + *** FresnelRefraction *** +Track (trackID 1498, parentID 1) is processed with stopping code 2 +### pop requested out of 71 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.620948,-0.300189,0.724093) + Old Polarization: (-0.75989,-0.457191,0.462108) + New Momentum Direction: (0.841733,-0.406924,0.354822) + New Polarization: (-0.00108302,-0.658477,-0.7526) + *** FresnelRefraction *** +Track (trackID 1497, parentID 1) is processed with stopping code 2 ### pop requested out of 70 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.550158,-0.340198,0.762622) - Old Polarization: (-0.220788,-0.940013,-0.260053) - New Momentum Direction: (0.748552,-0.462878,0.474778) - New Polarization: (-0.224665,-0.850721,-0.475183) + Old Momentum Direction: (0.83417,0.443731,-0.327511) + Old Polarization: (-0.512731,0.405226,-0.7569) + New Momentum Direction: (0.665019,0.60088,-0.443501) + New Polarization: (-0.71864,0.353255,-0.598972) *** FresnelRefraction *** -Track (trackID 1615, parentID 1) is processed with stopping code 2 +Track (trackID 1496, parentID 1) is processed with stopping code 2 ### pop requested out of 69 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.827943,0.549742,0.110879) - Old Polarization: (0.0931945,0.0600929,-0.993833) - New Momentum Direction: (0.648294,0.746361,0.150536) - New Polarization: (-0.175866,0.339152,-0.924147) + Old Momentum Direction: (0.884477,0.16158,-0.437712) + Old Polarization: (-0.453627,0.0782595,-0.887749) + New Momentum Direction: (0.775997,0.218428,-0.591708) + New Polarization: (-0.621336,0.103364,-0.776696) *** FresnelRefraction *** -Track (trackID 1614, parentID 1) is processed with stopping code 2 +Track (trackID 1495, parentID 1) is processed with stopping code 2 ### pop requested out of 68 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.895965,-0.15673,0.41555) - Old Polarization: (0.172689,-0.739091,-0.651093) - New Momentum Direction: (0.798795,-0.212304,0.562897) - New Polarization: (-0.302478,-0.950528,0.0707349) + Old Momentum Direction: (0.854348,-0.499424,-0.143751) + Old Polarization: (-0.490582,-0.683728,-0.540227) + New Momentum Direction: (0.707767,-0.678884,-0.195406) + New Polarization: (-0.685362,-0.592779,-0.422956) *** FresnelRefraction *** -Track (trackID 1613, parentID 1) is processed with stopping code 2 +Track (trackID 1494, parentID 1) is processed with stopping code 2 ### pop requested out of 67 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.559148,-0.329257,0.760883) - Old Polarization: (-0.206905,-0.944137,-0.256508) - New Momentum Direction: (0.752932,-0.443367,0.486332) - New Polarization: (-0.211126,-0.862669,-0.459596) + Old Momentum Direction: (0.564922,0.370987,0.737042) + Old Polarization: (-0.823069,0.316666,0.471467) + New Momentum Direction: (0.768708,0.504814,0.392748) + New Polarization: (-0.0405172,0.651254,-0.757778) *** FresnelRefraction *** -Track (trackID 1612, parentID 1) is processed with stopping code 2 +Track (trackID 1493, parentID 1) is processed with stopping code 2 ### pop requested out of 66 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.343054,-0.289923,0.893453) - Old Polarization: (-0.453255,-0.884204,-0.112888) - New Momentum Direction: (0.466569,-0.394308,0.791729) - New Polarization: (-0.402695,-0.891673,-0.206775) + Old Momentum Direction: (0.818091,0.500678,-0.282929) + Old Polarization: (-0.531547,0.470523,-0.704319) + New Momentum Direction: (0.626687,0.678441,-0.383382) + New Polarization: (-0.747867,0.385353,-0.540554) *** FresnelRefraction *** -Track (trackID 1611, parentID 1) is processed with stopping code 2 +Track (trackID 1492, parentID 1) is processed with stopping code 2 ### pop requested out of 65 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.12427,0.48085,0.867952) - Old Polarization: (-0.990853,-0.0137651,-0.134241) - New Momentum Direction: (-0.167494,0.648099,0.742909) - New Polarization: (-0.969992,0.0263751,-0.2417) + Old Momentum Direction: (0.878958,0.186278,-0.439014) + Old Polarization: (-0.46211,0.105203,-0.880561) + New Momentum Direction: (0.761641,0.253111,-0.596522) + New Polarization: (-0.637342,0.126336,-0.760154) *** FresnelRefraction *** -Track (trackID 1610, parentID 1) is processed with stopping code 2 +Track (trackID 1491, parentID 1) is processed with stopping code 2 ### pop requested out of 64 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1609, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.822684,-0.568493,0.00262198) + Old Polarization: (-0.526862,-0.764154,-0.372135) + New Momentum Direction: (0.635223,-0.772321,0.00356206) + New Polarization: (-0.742375,-0.611852,-0.272979) + *** FresnelRefraction *** +Track (trackID 1490, parentID 1) is processed with stopping code 2 ### pop requested out of 63 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.757351,0.641767,0.120643) - Old Polarization: (0.016007,0.166449,-0.98592) - New Momentum Direction: (0.467262,0.868899,0.16334) - New Polarization: (-0.031499,0.200993,-0.979086) + Old Momentum Direction: (0.801688,0.551054,-0.231593) + Old Polarization: (-0.550459,0.52958,-0.645399) + New Momentum Direction: (0.587037,0.746328,-0.313661) + New Polarization: (-0.775775,0.407838,-0.481499) *** FresnelRefraction *** -Track (trackID 1608, parentID 1) is processed with stopping code 2 +Track (trackID 1489, parentID 1) is processed with stopping code 2 ### pop requested out of 62 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.739082,0.661695,0.126167) - Old Polarization: (-0.00326074,0.19081,-0.981622) - New Momentum Direction: (0.413678,0.894312,0.17052) - New Polarization: (-0.00648111,0.190186,-0.981727) + Old Momentum Direction: (0.846309,-0.522633,-0.10303) + Old Polarization: (-0.49959,-0.711614,-0.493978) + New Momentum Direction: (0.690273,-0.709886,-0.139944) + New Polarization: (-0.699558,-0.605391,-0.379631) *** FresnelRefraction *** -Track (trackID 1607, parentID 1) is processed with stopping code 2 +Track (trackID 1488, parentID 1) is processed with stopping code 2 ### pop requested out of 61 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.957386,0.232839,0.170873) - Old Polarization: (0.237329,-0.297108,-0.924879) - New Momentum Direction: (0.919698,0.316535,0.232295) - New Polarization: (-0.35019,0.928861,0.12076) + Old Momentum Direction: (0.818567,-0.574059,0.0201224) + Old Polarization: (-0.531627,-0.770399,-0.351933) + New Momentum Direction: (0.625235,-0.779958,0.0273398) + New Polarization: (-0.749726,-0.609993,-0.256554) *** FresnelRefraction *** -Track (trackID 1606, parentID 1) is processed with stopping code 2 +Track (trackID 1487, parentID 1) is processed with stopping code 2 ### pop requested out of 60 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.262899,-0.237818,0.935054) - Old Polarization: (-0.546247,-0.835549,-0.0589276) - New Momentum Direction: (0.354921,-0.321061,0.878038) - New Polarization: (-0.508034,-0.854646,-0.10715) + Old Momentum Direction: (0.764111,-0.599315,0.238654) + Old Polarization: (-0.594427,-0.797858,-0.100397) + New Momentum Direction: (0.479987,-0.815032,0.324555) + New Polarization: (-0.842761,-0.531137,-0.0874418) *** FresnelRefraction *** -Track (trackID 1605, parentID 1) is processed with stopping code 2 +Track (trackID 1486, parentID 1) is processed with stopping code 2 ### pop requested out of 59 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.437876,0.865195,0.244341) - Old Polarization: (-0.346751,0.413282,-0.841999) - New Momentum Direction: (0.595489,0.73142,0.332292) - New Polarization: (0.788278,-0.611761,-0.0660756) - *** FresnelRefraction *** -Track (trackID 1604, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1485, parentID 1) is processed with stopping code 2 ### pop requested out of 58 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.298488,0.893273,0.336108) - Old Polarization: (-0.503665,0.44656,-0.739531) - New Momentum Direction: (0.405479,0.791908,0.456583) - New Polarization: (0.586089,-0.608534,0.534964) - *** FresnelRefraction *** -Track (trackID 1603, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1484, parentID 1) is processed with stopping code 2 ### pop requested out of 57 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0422529,0.0928971,0.994779) - Old Polarization: (-0.890041,-0.455856,0.00476576) - New Momentum Direction: (-0.0572697,0.125913,0.990387) - New Polarization: (-0.93439,-0.356146,-0.00875307) - *** FresnelRefraction *** -Track (trackID 1602, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. + Old Momentum Direction: (0.663554,-0.456367,0.592812) + Old Polarization: (-0.710015,-0.633847,0.306785) + New Momentum Direction: (-0.663554,-0.456367,0.592812) + New Polarization: (-0.710015,0.633847,-0.306785) + *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.94524,-0.0513482,0.322311) - Old Polarization: (0.223838,-0.616708,-0.754697) - New Momentum Direction: (0.896205,-0.0697973,0.438115) - New Polarization: (-0.35077,-0.71611,0.603446) - *** FresnelRefraction *** -Track (trackID 1601, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (-0.663554,-0.456367,0.592812) + Old Polarization: (-0.710015,0.633847,-0.306785) + New Momentum Direction: (-0.663554,-0.456367,-0.592812) + New Polarization: (0.710015,-0.633847,-0.306785) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.663554,-0.456367,-0.592812) + Old Polarization: (0.710015,-0.633847,-0.306785) + New Momentum Direction: (-0.663554,0.456367,-0.592812) + New Polarization: (-0.710015,-0.633847,0.306785) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.663554,0.456367,-0.592812) +Old Polarization: (-0.710015,-0.633847,0.306785) +New Polarization: (0.54107,0.716599,-0.440147) +Polarization Change: (0.54107,0.716599,-0.440147) +New Momentum Direction: (-0.800359,0.278088,-0.531123) +Momentum Change: (-0.800359,0.278088,-0.531123) + +** Photon absorbed! ** +Track (trackID 1483, parentID 1) is processed with stopping code 2 +### pop requested out of 56 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1482, parentID 1) is processed with stopping code 2 ### pop requested out of 55 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.586149,0.792397,0.168929) - Old Polarization: (-0.180389,0.330904,-0.926262) - New Momentum Direction: (0.797499,0.557826,0.22984) - New Polarization: (0.567428,-0.564053,-0.599891) + Old Momentum Direction: (0.69527,0.70619,0.133772) + Old Polarization: (-0.673684,0.705157,-0.221144) + New Momentum Direction: (0.69527,-0.70619,0.133772) + New Polarization: (-0.714794,-0.69886,0.0257629) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.69527,-0.70619,0.133772) + Old Polarization: (-0.714794,-0.69886,0.0257629) + New Momentum Direction: (0.218276,-0.958836,0.18163) + New Polarization: (-0.973756,-0.226286,-0.0243562) *** FresnelRefraction *** -Track (trackID 1600, parentID 1) is processed with stopping code 2 +Track (trackID 1481, parentID 1) is processed with stopping code 2 ### pop requested out of 54 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.829225,0.548043,0.1097) - Old Polarization: (0.0935257,0.0574465,-0.993958) - New Momentum Direction: (-0.829225,0.548043,0.1097) - New Polarization: (0.0112906,-0.179808,0.983637) - *** FresnelReflection *** -Scattering Photon! -Old Momentum Direction: (-0.829225,0.548043,0.1097) -Old Polarization: (0.0112906,-0.179808,0.983637) -New Polarization: (-0.570383,-0.484595,0.663198) -Polarization Change: (-0.570383,-0.484595,0.663198) -New Momentum Direction: (-0.631304,-0.2579,-0.731398) -Momentum Change: (-0.631304,-0.2579,-0.731398) - Photon at Boundary! - Old Momentum Direction: (-0.631304,-0.2579,-0.731398) - Old Polarization: (-0.570383,-0.484595,0.663198) - New Momentum Direction: (-0.858001,-0.35051,-0.375469) - New Polarization: (-0.283568,-0.286262,0.915228) + Old Momentum Direction: (0.819618,-0.5722,0.0285195) + Old Polarization: (-0.529403,-0.775464,-0.344075) + New Momentum Direction: (0.631841,-0.774137,0.0385844) + New Polarization: (-0.743602,-0.619461,-0.251643) *** FresnelRefraction *** -Track (trackID 1599, parentID 1) is processed with stopping code 2 +Track (trackID 1480, parentID 1) is processed with stopping code 2 ### pop requested out of 53 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1598, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.562339,0.270865,0.781285) + Old Polarization: (-0.826748,0.202695,0.524789) + New Momentum Direction: (0.763967,0.367985,0.530039) + New Polarization: (0.258795,0.577735,-0.77411) + *** FresnelRefraction *** +Track (trackID 1479, parentID 1) is processed with stopping code 2 ### pop requested out of 52 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.126047,0.368767,0.920936) - Old Polarization: (-0.986627,-0.143306,-0.0776549) - New Momentum Direction: (-0.170634,0.499211,0.849513) - New Polarization: (-0.985276,-0.0958133,-0.141599) + Old Momentum Direction: (0.889078,0.119508,-0.441879) + Old Polarization: (-0.448036,0.0293269,-0.893534) + New Momentum Direction: (0.785808,0.161467,-0.597021) + New Polarization: (-0.611432,0.0576002,-0.789198) *** FresnelRefraction *** -Track (trackID 1597, parentID 1) is processed with stopping code 2 +Track (trackID 1478, parentID 1) is processed with stopping code 2 ### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.913363,-0.123435,0.387984) - Old Polarization: (0.195163,-0.703591,-0.68328) - New Momentum Direction: (0.834943,-0.166846,0.524435) - New Polarization: (-0.329705,-0.914643,0.233928) - *** FresnelRefraction *** -Track (trackID 1596, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1477, parentID 1) is processed with stopping code 2 ### pop requested out of 50 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.402029,0.874632,0.27091) - Old Polarization: (-0.387191,0.430512,-0.815318) - New Momentum Direction: (0.544377,0.754379,0.366832) - New Polarization: (0.7817,-0.614855,0.104391) + Old Momentum Direction: (0.686678,0.7019,0.189235) + Old Polarization: (-0.68443,0.711947,-0.157121) + New Momentum Direction: (0.92618,0.277571,0.255236) + New Polarization: (0.262284,-0.960517,0.0928129) *** FresnelRefraction *** -Track (trackID 1595, parentID 1) is processed with stopping code 2 +Track (trackID 1476, parentID 1) is processed with stopping code 2 ### pop requested out of 49 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.043941,0.110956,0.992853) - Old Polarization: (-0.898949,-0.437957,0.00915877) - New Momentum Direction: (-0.059215,0.149525,0.986983) - New Polarization: (-0.962303,-0.271472,-0.0166072) + Old Momentum Direction: (0.713845,0.697545,0.0621004) + Old Polarization: (-0.652242,0.694519,-0.303685) + New Momentum Direction: (0.308544,0.947463,0.0843498) + New Polarization: (-0.921693,0.319711,-0.219696) *** FresnelRefraction *** -Track (trackID 1594, parentID 1) is processed with stopping code 2 +Track (trackID 1475, parentID 1) is processed with stopping code 2 ### pop requested out of 48 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.82592,0.471368,-0.309303) +Old Polarization: (-0.522818,0.435038,-0.733078) +New Polarization: (-0.72586,0.621017,-0.295745) +Polarization Change: (-0.72586,0.621017,-0.295745) +New Momentum Direction: (0.212549,-0.206412,-0.955101) +Momentum Change: (0.212549,-0.206412,-0.955101) Photon at Boundary! - Old Momentum Direction: (0.579859,0.796077,0.173274) - Old Polarization: (-0.186843,0.336952,-0.922796) - New Momentum Direction: (0.787796,0.569175,0.23541) - New Polarization: (0.583991,-0.56874,-0.579215) + Old Momentum Direction: (0.212549,-0.206412,-0.955101) + Old Polarization: (-0.72586,0.621017,-0.295745) + New Momentum Direction: (0.212549,-0.206412,0.955101) + New Polarization: (0.738106,-0.606601,-0.295355) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.212549,-0.206412,0.955101) + Old Polarization: (0.738106,-0.606601,-0.295355) + New Momentum Direction: (-0.212549,-0.206412,0.955101) + New Polarization: (0.738106,0.606601,0.295355) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.212549,-0.206412,0.955101) + Old Polarization: (0.738106,0.606601,0.295355) + New Momentum Direction: (-0.288401,-0.280074,0.915633) + New Polarization: (-0.615369,-0.678415,-0.40134) *** FresnelRefraction *** -Track (trackID 1593, parentID 1) is processed with stopping code 2 +Track (trackID 1474, parentID 1) is processed with stopping code 2 ### pop requested out of 47 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.570369,-0.339186,0.748085) - Old Polarization: (-0.19766,-0.940672,-0.275802) - New Momentum Direction: (0.775165,-0.460974,0.431998) - New Polarization: (-0.2164,-0.836178,-0.503961) - *** FresnelRefraction *** -Track (trackID 1592, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.583233,0.508529,0.633433) + Old Polarization: (-0.803133,0.47785,0.35586) + New Momentum Direction: (0.583233,0.508529,-0.633433) + New Polarization: (0.803133,-0.47785,0.35586) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.583233,0.508529,-0.633433) + Old Polarization: (0.803133,-0.47785,0.35586) + New Momentum Direction: (-0.583233,0.508529,-0.633433) + New Polarization: (0.803133,0.47785,-0.35586) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1473, parentID 1) is processed with stopping code 2 ### pop requested out of 46 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.853206,0.508064,0.117942) - Old Polarization: (0.127471,0.0161492,-0.991711) - New Momentum Direction: (0.70971,0.686246,0.159305) - New Polarization: (-0.232663,0.441754,-0.866442) - *** FresnelRefraction *** -Track (trackID 1591, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.619403,0.633222,0.464079) + Old Polarization: (-0.762265,0.626533,0.162506) + New Momentum Direction: (0.619403,-0.633222,0.464079) + New Polarization: (0.762265,0.626533,-0.162506) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.619403,-0.633222,0.464079) + Old Polarization: (0.762265,0.626533,-0.162506) + New Momentum Direction: (-0.619403,-0.633222,0.464079) + New Polarization: (0.762265,-0.626533,0.162506) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1472, parentID 1) is processed with stopping code 2 ### pop requested out of 45 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.088788,0.850751,0.518014) - Old Polarization: (-0.742434,0.403226,-0.534977) - New Momentum Direction: (0.120241,0.70243,0.701523) - New Polarization: (-0.405222,-0.610373,0.680617) - *** FresnelRefraction *** -Track (trackID 1590, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. + Old Momentum Direction: (0.576487,0.437447,0.690147) + Old Polarization: (-0.812226,0.398963,0.42558) + New Momentum Direction: (0.576487,0.437447,-0.690147) + New Polarization: (0.30327,-0.898842,-0.316403) + *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (0.794583,-0.268482,0.544568) - Old Polarization: (0.0548453,-0.861512,-0.504767) - New Momentum Direction: (0.565231,-0.364783,0.739897) - New Polarization: (-0.106125,-0.921619,-0.373304) + Old Momentum Direction: (0.576487,0.437447,-0.690147) + Old Polarization: (0.30327,-0.898842,-0.316403) + New Momentum Direction: (-0.576487,0.437447,-0.690147) + New Polarization: (0.30327,0.898842,0.316403) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.576487,0.437447,-0.690147) + Old Polarization: (0.30327,0.898842,0.316403) + New Momentum Direction: (-0.576487,-0.437447,-0.690147) + New Polarization: (-0.30327,0.898842,-0.316403) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.576487,-0.437447,-0.690147) + Old Polarization: (-0.30327,0.898842,-0.316403) + New Momentum Direction: (-0.576487,-0.437447,0.690147) + New Polarization: (0.744829,-0.628639,0.223702) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.576487,-0.437447,0.690147) + Old Polarization: (0.744829,-0.628639,0.223702) + New Momentum Direction: (0.576487,-0.437447,0.690147) + New Polarization: (0.744829,0.628639,-0.223702) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.576487,-0.437447,0.690147) + Old Polarization: (0.744829,0.628639,-0.223702) + New Momentum Direction: (0.576487,0.437447,0.690147) + New Polarization: (-0.744829,0.628639,0.223702) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.576487,0.437447,0.690147) + Old Polarization: (-0.744829,0.628639,0.223702) + New Momentum Direction: (0.779885,0.591788,0.203879) + New Polarization: (-0.462103,0.764071,-0.450174) *** FresnelRefraction *** -Track (trackID 1589, parentID 1) is processed with stopping code 2 +Track (trackID 1471, parentID 1) is processed with stopping code 2 +### pop requested out of 44 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1470, parentID 1) is processed with stopping code 2 ### pop requested out of 43 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0984652,0.245462,0.964392) - Old Polarization: (-0.958631,-0.283486,-0.0257227) - New Momentum Direction: (-0.132969,0.331476,0.934046) - New Polarization: (-0.965768,-0.255123,-0.0469463) + Old Momentum Direction: (0.802475,-0.589285,0.0936813) + Old Polarization: (-0.549789,-0.791247,-0.267695) + New Momentum Direction: (0.5876,-0.799116,0.127039) + New Polarization: (-0.775705,-0.600999,-0.192569) *** FresnelRefraction *** -Track (trackID 1588, parentID 1) is processed with stopping code 2 +Track (trackID 1469, parentID 1) is processed with stopping code 2 ### pop requested out of 42 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1587, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.829793,-0.557957,-0.0112745) + Old Polarization: (-0.517194,-0.761268,-0.391127) + New Momentum Direction: (0.656923,-0.753804,-0.0152319) + New Polarization: (-0.724161,-0.62521,-0.291039) + *** FresnelRefraction *** +Track (trackID 1468, parentID 1) is processed with stopping code 2 ### pop requested out of 41 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0249472,0.758467,0.651234) - Old Polarization: (-0.873265,0.300558,-0.383502) - New Momentum Direction: (-0.033731,0.472791,0.880529) - New Polarization: (-0.809024,-0.530205,0.253696) + Old Momentum Direction: (0.662919,0.690294,0.289885) + Old Polarization: (-0.71252,0.700576,-0.0388427) + New Momentum Direction: (0.893012,0.223694,0.390501) + New Polarization: (0.137128,-0.961706,0.237314) *** FresnelRefraction *** -Track (trackID 1586, parentID 1) is processed with stopping code 2 +Track (trackID 1467, parentID 1) is processed with stopping code 2 ### pop requested out of 40 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.352825,0.885644,0.301909) - Old Polarization: (-0.442935,0.442304,-0.779856) - New Momentum Direction: (0.477964,0.777353,0.40899) - New Polarization: (0.722025,-0.612864,0.321058) + Old Momentum Direction: (0.895311,-0.275247,-0.350225) + Old Polarization: (-0.440602,-0.431618,-0.787132) + New Momentum Direction: (0.798786,-0.371749,-0.473014) + New Polarization: (-0.598124,-0.406142,-0.690867) *** FresnelRefraction *** -Track (trackID 1585, parentID 1) is processed with stopping code 2 +Track (trackID 1466, parentID 1) is processed with stopping code 2 ### pop requested out of 39 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.916217,-0.12408,0.380987) - Old Polarization: (0.191811,-0.698992,-0.688926) - New Momentum Direction: (0.838836,-0.16858,0.517624) - New Polarization: (-0.326851,-0.916349,0.231241) + Old Momentum Direction: (0.567197,0.230429,0.790689) + Old Polarization: (-0.823582,0.158716,0.544538) + New Momentum Direction: (0.766395,0.311355,0.561869) + New Polarization: (0.361571,0.513875,-0.777945) *** FresnelRefraction *** -Track (trackID 1584, parentID 1) is processed with stopping code 2 +Track (trackID 1465, parentID 1) is processed with stopping code 2 ### pop requested out of 38 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.132748,0.48773,0.862843) - Old Polarization: (-0.98917,-0.0101972,-0.146419) - New Momentum Direction: (-0.180348,0.662617,0.726921) - New Polarization: (-0.963208,0.0307413,-0.266992) - *** FresnelRefraction *** -Track (trackID 1583, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. + Old Momentum Direction: (0.59104,0.55762,0.582865) + Old Polarization: (-0.793439,0.532093,0.29552) + New Momentum Direction: (-0.59104,0.55762,0.582865) + New Polarization: (-0.793439,-0.532093,-0.29552) + *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.124648,0.868046,0.480582) - Old Polarization: (-0.700383,0.42006,-0.577073) - New Momentum Direction: (0.169113,0.739102,0.652019) - New Polarization: (-0.230591,-0.613517,0.755265) - *** FresnelRefraction *** -Track (trackID 1582, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.370169,0.883264,0.287784) - Old Polarization: (-0.423002,0.436074,-0.794298) - New Momentum Direction: (0.502598,0.771179,0.39074) - New Polarization: (0.753771,-0.612228,0.23876) - *** FresnelRefraction *** -Track (trackID 1581, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.142325,-0.150775,0.978269) - Old Polarization: (-0.681265,-0.731909,-0.0136897) - New Momentum Direction: (0.192866,-0.204316,0.959717) - New Polarization: (-0.665262,-0.746186,-0.025165) - *** FresnelRefraction *** -Track (trackID 1580, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. + Old Momentum Direction: (-0.59104,0.55762,0.582865) + Old Polarization: (-0.793439,-0.532093,-0.29552) + New Momentum Direction: (-0.59104,0.55762,-0.582865) + New Polarization: (0.793439,0.532093,-0.29552) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1579, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. +Track (trackID 1464, parentID 1) is processed with stopping code 2 +### pop requested out of 37 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.176745,0.88439,0.431991) - Old Polarization: (-0.640762,0.436543,-0.631549) - New Momentum Direction: (0.2401,0.773286,0.58684) - New Polarization: (0.0388051,-0.611686,0.790149) + Old Momentum Direction: (0.879189,-0.41057,-0.241784) + Old Polarization: (-0.458698,-0.592009,-0.662662) + New Momentum Direction: (0.766411,-0.553504,-0.325957) + New Polarization: (-0.629351,-0.545466,-0.55352) *** FresnelRefraction *** -Track (trackID 1578, parentID 1) is processed with stopping code 2 +Track (trackID 1463, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.796607,-0.593722,0.11363) + Old Polarization: (-0.556832,-0.793874,-0.244339) + New Momentum Direction: (0.57104,-0.806289,0.154313) + New Polarization: (-0.787177,-0.591146,-0.175781) + *** FresnelRefraction *** +Track (trackID 1462, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.891861,-0.29944,-0.338999) +Old Polarization: (-0.445953,-0.456923,-0.769641) +New Polarization: (0.663551,0.0958778,-0.741962) +Polarization Change: (0.663551,0.0958778,-0.741962) +New Momentum Direction: (-0.61616,-0.492458,-0.61468) +Momentum Change: (-0.61616,-0.492458,-0.61468) + Photon at Boundary! + Old Momentum Direction: (-0.61616,-0.492458,-0.61468) + Old Polarization: (0.663551,0.0958778,-0.741962) + New Momentum Direction: (-0.61616,-0.492458,0.61468) + New Polarization: (-0.663551,-0.0958778,-0.741962) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.61616,-0.492458,0.61468) + Old Polarization: (-0.663551,-0.0958778,-0.741962) + New Momentum Direction: (-0.61616,0.492458,0.61468) + New Polarization: (0.663551,-0.0958778,0.741962) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.61616,0.492458,0.61468) + Old Polarization: (0.663551,-0.0958778,0.741962) + New Momentum Direction: (0.61616,0.492458,0.61468) + New Polarization: (0.663551,0.0958778,-0.741962) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.61616,0.492458,0.61468) + Old Polarization: (0.663551,0.0958778,-0.741962) + New Momentum Direction: (0.61616,0.492458,-0.61468) + New Polarization: (-0.663551,-0.0958778,-0.741962) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1461, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.897317,-0.167359,-0.408427) + Old Polarization: (-0.441013,-0.301928,-0.84519) + New Momentum Direction: (0.800148,-0.227426,-0.555014) + New Polarization: (-0.599538,-0.275751,-0.751342) + *** FresnelRefraction *** +Track (trackID 1460, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1459, parentID 1) is processed with stopping code 2 ### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.958132,0.223476,0.179001) - Old Polarization: (0.243682,-0.308191,-0.919585) - New Momentum Direction: (0.921783,0.302603,0.24238) - New Polarization: (-0.353163,0.9133,0.202875) + Old Momentum Direction: (0.565423,0.268309,0.77994) + Old Polarization: (-0.824656,0.201638,0.528474) + New Momentum Direction: (0.765656,0.363325,0.530817) + New Polarization: (0.265086,0.573659,-0.775012) *** FresnelRefraction *** -Track (trackID 1577, parentID 1) is processed with stopping code 2 +Track (trackID 1458, parentID 1) is processed with stopping code 2 ### pop requested out of 31 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.00337322,0.789958,0.613151) - Old Polarization: (-0.839902,0.335016,-0.427) - New Momentum Direction: (0.00456565,0.557891,0.829902) - New Polarization: (-0.730225,-0.565134,0.383921) + Old Momentum Direction: (0.810581,-0.581919,0.0657982) + Old Polarization: (-0.539988,-0.786163,-0.3006) + New Momentum Direction: (0.60977,-0.78756,0.0890502) + New Polarization: (-0.759727,-0.612807,-0.217448) *** FresnelRefraction *** -Track (trackID 1576, parentID 1) is processed with stopping code 2 +Track (trackID 1457, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.035522,0.0958013,0.994766) - Old Polarization: (-0.890074,-0.455656,0.0120986) - New Momentum Direction: (-0.0478387,0.129019,0.990488) - New Polarization: (-0.98038,-0.195904,-0.0218325) + Old Momentum Direction: (0.663113,0.703721,0.255066) + Old Polarization: (-0.710437,0.699015,-0.0815902) + New Momentum Direction: (0.902054,0.256723,0.346975) + New Polarization: (0.196669,-0.960055,0.199038) *** FresnelRefraction *** -Track (trackID 1575, parentID 1) is processed with stopping code 2 +Track (trackID 1456, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. ** Photon absorbed! ** -Track (trackID 1574, parentID 1) is processed with stopping code 2 +Track (trackID 1455, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.58404,0.793736,0.169941) - Old Polarization: (-0.182714,0.332536,-0.925222) - New Momentum Direction: (0.794551,0.56146,0.231195) - New Polarization: (0.572375,-0.565477,-0.59382) + Old Momentum Direction: (0.565396,0.165178,0.808111) + Old Polarization: (-0.824395,0.0817398,0.560081) + New Momentum Direction: (0.766112,0.223816,0.602477) + New Polarization: (0.500735,0.379797,-0.777829) *** FresnelRefraction *** -Track (trackID 1573, parentID 1) is processed with stopping code 2 +Track (trackID 1454, parentID 1) is processed with stopping code 2 ### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.445371,0.859116,0.25212) - Old Polarization: (-0.337619,0.421948,-0.841412) - New Momentum Direction: (0.599505,0.724858,0.339374) - New Polarization: (0.784174,-0.616828,-0.0677804) + Old Momentum Direction: (0.830452,-0.55623,-0.0309531) + Old Polarization: (-0.517868,-0.75031,-0.410911) + New Momentum Direction: (0.653763,-0.75553,-0.0420437) + New Polarization: (-0.728382,-0.613269,-0.305549) *** FresnelRefraction *** -Track (trackID 1572, parentID 1) is processed with stopping code 2 +Track (trackID 1453, parentID 1) is processed with stopping code 2 ### pop requested out of 26 stacked tracks. ** Photon absorbed! ** -Track (trackID 1571, parentID 1) is processed with stopping code 2 +Track (trackID 1452, parentID 1) is processed with stopping code 2 ### pop requested out of 25 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1570, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.859986,0.496768,0.116811) - Old Polarization: (0.133282,0.00231074,-0.991075) - New Momentum Direction: (0.72339,0.672109,0.158042) - New Polarization: (-0.242807,0.461919,-0.853039) - *** FresnelRefraction *** -Track (trackID 1569, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1568, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0698679,0.842946,0.533442) - Old Polarization: (-0.761504,0.390497,-0.517325) - New Momentum Direction: (0.0948713,0.68288,0.724344) - New Polarization: (-0.481862,-0.605203,0.633671) - *** FresnelRefraction *** -Track (trackID 1567, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.951286,-0.0235054,0.307411) - Old Polarization: (0.235495,-0.588141,-0.773713) - New Momentum Direction: (0.908631,-0.0318378,0.416384) - New Polarization: (-0.354992,-0.584013,0.730006) - *** FresnelRefraction *** -Track (trackID 1566, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.455793,-0.32622,0.828151) - Old Polarization: (-0.326511,-0.926834,-0.185389) - New Momentum Direction: (0.619148,-0.443137,0.648294) - New Polarization: (-0.288291,-0.896186,-0.337251) - *** FresnelRefraction *** -Track (trackID 1565, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.46055,-0.318943,0.828353) - Old Polarization: (-0.320352,-0.930043,-0.179987) - New Momentum Direction: (0.621037,-0.430084,0.655241) - New Polarization: (-0.283962,-0.902668,-0.32335) - *** FresnelRefraction *** -Track (trackID 1564, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.406898,0.873281,0.267983) - Old Polarization: (-0.381669,0.429063,-0.818678) - New Momentum Direction: (0.550941,0.751535,0.36285) - New Polarization: (0.784221,-0.614921,0.0828853) - *** FresnelRefraction *** -Track (trackID 1563, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.11908,0.348249,0.929808) - Old Polarization: (-0.984069,-0.16591,-0.0638894) - New Momentum Direction: (-0.160592,0.469652,0.868123) - New Polarization: (-0.985642,-0.12279,-0.115902) - *** FresnelRefraction *** -Track (trackID 1562, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0432943,0.820714,0.569697) - Old Polarization: (-0.796431,0.372626,-0.476286) - New Momentum Direction: (0.0584879,0.635813,0.769624) - New Polarization: (-0.598986,-0.594396,0.536571) - *** FresnelRefraction *** -Track (trackID 1561, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.323443,-0.268132,0.907464) - Old Polarization: (-0.477776,-0.874066,-0.0879725) - New Momentum Direction: (0.435489,-0.361018,0.824631) - New Polarization: (-0.434375,-0.886629,-0.158766) - *** FresnelRefraction *** -Track (trackID 1560, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.132055,0.37802,0.916331) - Old Polarization: (-0.987162,-0.133945,-0.0870051) - New Momentum Direction: (-0.179564,0.514019,0.838773) - New Polarization: (-0.983668,-0.0830361,-0.159696) - *** FresnelRefraction *** -Track (trackID 1559, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.966986,0.130425,0.218921) - Old Polarization: (0.253747,-0.413758,-0.874309) - New Momentum Direction: (0.938584,0.176603,0.296431) - New Polarization: (-0.344257,0.53752,0.769779) - *** FresnelRefraction *** -Track (trackID 1558, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.92997,0.337958,0.144707) - Old Polarization: (0.214149,-0.178037,-0.960439) - New Momentum Direction: (0.867805,0.456792,0.19559) - New Polarization: (-0.34756,0.839298,-0.418069) - *** FresnelRefraction *** -Track (trackID 1557, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.0999559,-0.107386,0.98918) - Old Polarization: (-0.729895,-0.683559,-0.000452161) - New Momentum Direction: (0.135345,-0.145405,0.980071) - New Polarization: (-0.729179,-0.684323,-0.000830161) - *** FresnelRefraction *** -Track (trackID 1556, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.708269,0.692092,0.139157) - Old Polarization: (-0.0345636,0.230883,-0.972367) - New Momentum Direction: (-0.708269,0.692092,0.139157) - New Polarization: (-0.0173499,-0.214128,0.976651) + Old Momentum Direction: (0.721732,-0.557654,0.410031) + Old Polarization: (-0.643268,-0.759099,0.0998764) + New Momentum Direction: (-0.721732,-0.557654,0.410031) + New Polarization: (-0.512234,0.828724,0.225459) *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (-0.708269,0.692092,0.139157) - Old Polarization: (-0.0173499,-0.214128,0.976651) - New Momentum Direction: (-0.952504,0.240237,0.187143) - New Polarization: (0.0713449,-0.421392,0.904068) + Old Momentum Direction: (-0.721732,-0.557654,0.410031) + Old Polarization: (-0.512234,0.828724,0.225459) + New Momentum Direction: (-0.721732,0.557654,0.410031) + New Polarization: (0.512234,0.828724,-0.225459) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.721732,0.557654,0.410031) + Old Polarization: (0.512234,0.828724,-0.225459) + New Momentum Direction: (-0.721732,0.557654,-0.410031) + New Polarization: (-0.512234,-0.828724,-0.225459) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.721732,0.557654,-0.410031) + Old Polarization: (-0.512234,-0.828724,-0.225459) + New Momentum Direction: (0.721732,0.557654,-0.410031) + New Polarization: (0.300027,0.281797,0.911358) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.721732,0.557654,-0.410031) + Old Polarization: (0.300027,0.281797,0.911358) + New Momentum Direction: (0.721732,-0.557654,-0.410031) + New Polarization: (-0.300027,0.281797,-0.911358) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.721732,-0.557654,-0.410031) + Old Polarization: (-0.300027,0.281797,-0.911358) + New Momentum Direction: (0.351628,-0.754208,-0.554552) + New Polarization: (-0.547692,0.314678,-0.775249) *** FresnelRefraction *** -Track (trackID 1555, parentID 1) is processed with stopping code 2 +Track (trackID 1451, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.834018,-0.549314,-0.0516509) + Old Polarization: (-0.514182,-0.739889,-0.433798) + New Momentum Direction: (0.660794,-0.747271,-0.0702644) + New Polarization: (-0.723499,-0.609252,-0.324593) + *** FresnelRefraction *** +Track (trackID 1450, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.772792,-0.599883,0.207203) + Old Polarization: (-0.584357,-0.799936,-0.136492) + New Momentum Direction: (0.506238,-0.815139,0.281553) + New Polarization: (-0.82767,-0.550941,-0.106893) + *** FresnelRefraction *** +Track (trackID 1449, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1448, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.895144,-0.236635,-0.377785) + Old Polarization: (-0.443239,-0.382162,-0.810858) + New Momentum Direction: (0.795927,-0.321364,-0.513055) + New Polarization: (-0.603582,-0.355743,-0.713538) + *** FresnelRefraction *** +Track (trackID 1447, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.607599,-0.232402,0.759482) + Old Polarization: (-0.775639,-0.379382,0.504434) + New Momentum Direction: (0.822922,-0.314761,0.472995) + New Polarization: (0.210663,-0.604127,-0.768539) + *** FresnelRefraction *** +Track (trackID 1446, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1445, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1444, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.712314,0.698738,0.0661394) +Old Polarization: (-0.653981,0.694976,-0.298861) +New Polarization: (-0.110388,-0.992305,0.0560771) +Polarization Change: (-0.110388,-0.992305,0.0560771) +New Momentum Direction: (-0.936387,0.0849224,-0.340541) +Momentum Change: (-0.936387,0.0849224,-0.340541) + Photon at Boundary! + Old Momentum Direction: (-0.936387,0.0849224,-0.340541) + Old Polarization: (-0.110388,-0.992305,0.0560771) + New Momentum Direction: (-0.87892,0.11541,-0.462796) + New Polarization: (0.197408,-0.795262,-0.573226) + *** FresnelRefraction *** +Track (trackID 1443, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1442, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.897024,-0.270926,-0.349208) + Old Polarization: (-0.437289,-0.429208,-0.79029) + New Momentum Direction: (0.803576,-0.364848,-0.470269) + New Polarization: (-0.591805,-0.405464,-0.696682) + *** FresnelRefraction *** +Track (trackID 1441, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.563227,0.22926,0.793861) + Old Polarization: (-0.826302,0.155374,0.541372) + New Momentum Direction: (0.764192,0.311062,0.565023) + New Polarization: (0.365499,0.512941,-0.776725) + *** FresnelRefraction *** +Track (trackID 1440, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.655591,0.697346,0.289669) + Old Polarization: (-0.719279,0.693477,-0.0415658) + New Momentum Direction: (0.890898,0.226607,0.393637) + New Polarization: (0.138916,-0.961066,0.238861) + *** FresnelRefraction *** +Track (trackID 1439, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1438, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.896301,0.0150245,-0.443192) + Old Polarization: (-0.440097,-0.0924697,-0.893176) + New Momentum Direction: (0.800155,0.0203216,-0.599448) + New Polarization: (-0.597386,-0.0624379,-0.799519) + *** FresnelRefraction *** +Track (trackID 1437, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.886791,-0.356418,-0.294225) + Old Polarization: (-0.450706,-0.525995,-0.721244) + New Momentum Direction: (0.781074,-0.481555,-0.397527) + New Polarization: (-0.616122,-0.49078,-0.616058) + *** FresnelRefraction *** +Track (trackID 1436, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. ** Photon absorbed! ** -Track (trackID 1554, parentID 1) is processed with stopping code 2 +Track (trackID 1435, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.0770296,0.692669,0.717131) - Old Polarization: (-0.924789,0.219161,-0.31102) - New Momentum Direction: (-0.104788,0.942276,0.318019) - New Polarization: (-0.811376,0.103905,-0.575215) + Old Momentum Direction: (0.886001,0.144598,-0.44056) + Old Polarization: (-0.452097,0.0583238,-0.89006) + New Momentum Direction: (0.778872,0.195585,-0.595907) + New Polarization: (-0.618794,0.0847526,-0.780968) *** FresnelRefraction *** -Track (trackID 1553, parentID 1) is processed with stopping code 2 +Track (trackID 1434, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.920171,0.367264,0.135653) - Old Polarization: (0.200723,-0.145051,-0.96885) - New Momentum Direction: (0.847936,0.497263,0.183669) - New Polarization: (-0.335753,0.771918,-0.539827) - *** FresnelRefraction *** -Track (trackID 1552, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1433, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.638371,-0.324469,0.697999) - Old Polarization: (-0.116432,-0.937082,-0.329122) - New Momentum Direction: (0.860442,-0.437343,0.261479) - New Polarization: (-0.208668,-0.770588,-0.602206) + Old Momentum Direction: (0.693609,-0.516647,0.501978) + Old Polarization: (-0.675776,-0.708012,0.205052) + New Momentum Direction: (0.216184,-0.700255,0.680372) + New Polarization: (-0.951009,-0.308769,-0.0156146) *** FresnelRefraction *** -Track (trackID 1551, parentID 1) is processed with stopping code 2 +Track (trackID 1432, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.72538,-0.304195,0.617486) - Old Polarization: (-0.0206493,-0.906267,-0.422201) - New Momentum Direction: (-0.72538,-0.304195,0.617486) - New Polarization: (-0.00867576,0.901024,0.433683) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.72538,-0.304195,0.617486) - Old Polarization: (-0.00867576,0.901024,0.433683) - New Momentum Direction: (-0.72538,-0.304195,-0.617486) - New Polarization: (0.00867576,-0.901024,0.433683) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.72538,-0.304195,-0.617486) - Old Polarization: (0.00867576,-0.901024,0.433683) - New Momentum Direction: (-0.72538,0.304195,-0.617486) - New Polarization: (-0.00867576,-0.901024,-0.433683) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.72538,0.304195,-0.617486) - Old Polarization: (-0.00867576,-0.901024,-0.433683) - New Momentum Direction: (-0.361406,0.41205,-0.836421) - New Polarization: (0.0176077,-0.893879,-0.447963) - *** FresnelRefraction *** -Track (trackID 1550, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1431, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.0806454,0.673423,0.734845) - Old Polarization: (-0.935663,0.202966,-0.288685) - New Momentum Direction: (-0.109124,0.911231,0.397178) - New Polarization: (-0.841878,0.127723,-0.524336) - *** FresnelRefraction *** -Track (trackID 1549, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1430, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.0762409,0.846031,0.527655) - Old Polarization: (-0.75479,0.394758,-0.523887) - New Momentum Direction: (0.103469,0.690287,0.716099) - New Polarization: (-0.455755,-0.60703,0.651001) + Old Momentum Direction: (0.629924,0.662422,0.405453) + Old Polarization: (-0.749241,0.655789,0.0926264) + New Momentum Direction: (0.629924,-0.662422,0.405453) + New Polarization: (0.749241,0.655789,-0.0926264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.629924,-0.662422,0.405453) + Old Polarization: (0.749241,0.655789,-0.0926264) + New Momentum Direction: (-0.629924,-0.662422,0.405453) + New Polarization: (0.749241,-0.655789,0.0926264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.629924,-0.662422,0.405453) + Old Polarization: (0.749241,-0.655789,0.0926264) + New Momentum Direction: (-0.629924,-0.662422,-0.405453) + New Polarization: (-0.749241,0.655789,0.0926264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.629924,-0.662422,-0.405453) + Old Polarization: (-0.749241,0.655789,0.0926264) + New Momentum Direction: (-0.629924,0.662422,-0.405453) + New Polarization: (0.749241,0.655789,-0.0926264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.629924,0.662422,-0.405453) + Old Polarization: (0.749241,0.655789,-0.0926264) + New Momentum Direction: (0.629924,0.662422,-0.405453) + New Polarization: (0.749241,-0.655789,0.0926264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.629924,0.662422,-0.405453) + Old Polarization: (0.749241,-0.655789,0.0926264) + New Momentum Direction: (0.629924,0.662422,0.405453) + New Polarization: (-0.749241,0.655789,0.0926264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.629924,0.662422,0.405453) + Old Polarization: (-0.749241,0.655789,0.0926264) + New Momentum Direction: (0.629924,-0.662422,0.405453) + New Polarization: (0.749241,0.655789,-0.0926264) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.629924,-0.662422,0.405453) + Old Polarization: (0.749241,0.655789,-0.0926264) + New Momentum Direction: (-0.629924,-0.662422,0.405453) + New Polarization: (0.749241,-0.655789,0.0926264) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1429, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.683988,0.705006,0.18742) + Old Polarization: (-0.687071,0.708923,-0.159254) + New Momentum Direction: (0.925989,0.279579,0.253731) + New Polarization: (0.264799,-0.959965,0.0913766) + *** FresnelRefraction *** +Track (trackID 1428, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 43 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 44 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.919273,0.161824,-0.358818) + Old Polarization: (-0.362717,0.702321,-0.61252) + New Momentum Direction: (0.846677,0.218758,-0.485059) + New Polarization: (-0.508534,0.600983,-0.616614) + *** FresnelRefraction *** +Track (trackID 1554, parentID 1) is processed with stopping code 2 +### pop requested out of 43 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.498762,-0.740682,0.450141) + Old Polarization: (-0.861808,-0.368481,0.34858) + New Momentum Direction: (0.678044,-0.407159,0.611946) + New Polarization: (-0.268966,0.637369,0.722092) + *** FresnelRefraction *** +Track (trackID 1553, parentID 1) is processed with stopping code 2 +### pop requested out of 42 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.511984,-0.702657,0.494111) + Old Polarization: (-0.8502,-0.332409,0.408246) + New Momentum Direction: (0.691338,-0.277292,0.667204) + New Polarization: (-0.413253,0.605724,0.679942) + *** FresnelRefraction *** +Track (trackID 1552, parentID 1) is processed with stopping code 2 +### pop requested out of 41 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.940069,0.315128,-0.130251) + Old Polarization: (-0.340883,0.877883,-0.336335) + New Momentum Direction: (0.886285,0.428021,-0.176912) + New Polarization: (-0.463067,0.825777,-0.321964) + *** FresnelRefraction *** +Track (trackID 1551, parentID 1) is processed with stopping code 2 +### pop requested out of 40 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.907146,0.351601,0.231219) + Old Polarization: (-0.379919,0.920563,0.0906986) + New Momentum Direction: (0.820456,0.477677,0.314128) + New Polarization: (-0.540402,0.827302,0.153416) + *** FresnelRefraction *** +Track (trackID 1550, parentID 1) is processed with stopping code 2 +### pop requested out of 39 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.497054,-0.814296,0.299766) + Old Polarization: (-0.867715,-0.46525,0.174968) + New Momentum Direction: (0.497054,0.814296,0.299766) + New Polarization: (0.563741,-0.0404207,-0.824962) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.497054,0.814296,0.299766) + Old Polarization: (0.563741,-0.0404207,-0.824962) + New Momentum Direction: (-0.497054,0.814296,0.299766) + New Polarization: (0.563741,0.0404207,0.824962) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.497054,0.814296,0.299766) + Old Polarization: (0.563741,0.0404207,0.824962) + New Momentum Direction: (-0.497054,0.814296,-0.299766) + New Polarization: (-0.563741,-0.0404207,0.824962) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.497054,0.814296,-0.299766) + Old Polarization: (-0.563741,-0.0404207,0.824962) + New Momentum Direction: (-0.671569,0.620451,-0.405013) + New Polarization: (-0.565889,-0.076644,0.820911) + *** FresnelRefraction *** +Track (trackID 1549, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.942057,0.301783,-0.14648) + Old Polarization: (-0.334907,0.87104,-0.359341) + New Momentum Direction: (0.891475,0.407593,-0.197838) + New Polarization: (-0.452671,0.819604,-0.351195) *** FresnelRefraction *** Track (trackID 1548, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. +### pop requested out of 37 stacked tracks. ** Photon absorbed! ** Track (trackID 1547, parentID 1) is processed with stopping code 2 +### pop requested out of 36 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.727715,-0.00216709,0.685877) + Old Polarization: (-0.591784,0.503542,0.629474) + New Momentum Direction: (0.365516,-0.00294095,0.930801) + New Polarization: (-0.867051,0.362646,0.341628) + *** FresnelRefraction *** +Track (trackID 1546, parentID 1) is processed with stopping code 2 +### pop requested out of 35 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.538456,-0.835577,-0.108979) + Old Polarization: (-0.816541,-0.485443,-0.312418) + New Momentum Direction: (0.729782,-0.667534,-0.147701) + New Polarization: (0.541877,0.696489,-0.470395) + *** FresnelRefraction *** +Track (trackID 1545, parentID 1) is processed with stopping code 2 +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.938117,0.274218,-0.211519) + Old Polarization: (-0.341577,0.833356,-0.434561) + New Momentum Direction: (0.883101,0.371505,-0.286561) + New Polarization: (-0.465714,0.768214,-0.439269) + *** FresnelRefraction *** +Track (trackID 1544, parentID 1) is processed with stopping code 2 +### pop requested out of 33 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1543, parentID 1) is processed with stopping code 2 +### pop requested out of 32 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.806975,0.183424,0.561379) + Old Polarization: (-0.498255,0.72177,0.480405) + New Momentum Direction: (0.596685,0.249233,0.762791) + New Polarization: (-0.732489,0.557395,0.390859) + *** FresnelRefraction *** +Track (trackID 1542, parentID 1) is processed with stopping code 2 +### pop requested out of 31 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.561584,-0.485811,0.669785) + Old Polarization: (-0.788632,-0.0693304,0.610945) + New Momentum Direction: (0.561584,-0.485811,-0.669785) + New Polarization: (0.788632,0.0693304,0.610945) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.561584,-0.485811,-0.669785) + Old Polarization: (0.788632,0.0693304,0.610945) + New Momentum Direction: (-0.561584,-0.485811,-0.669785) + New Polarization: (0.788632,-0.0693304,-0.610945) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.561584,-0.485811,-0.669785) + Old Polarization: (0.788632,-0.0693304,-0.610945) + New Momentum Direction: (-0.561584,0.485811,-0.669785) + New Polarization: (-0.788632,-0.0693304,0.610945) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.561584,0.485811,-0.669785) + Old Polarization: (-0.788632,-0.0693304,0.610945) + New Momentum Direction: (-0.561584,0.485811,0.669785) + New Polarization: (0.788632,0.0693304,0.610945) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.561584,0.485811,0.669785) + Old Polarization: (0.788632,0.0693304,0.610945) + New Momentum Direction: (0.561584,0.485811,0.669785) + New Polarization: (0.788632,-0.0693304,-0.610945) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.561584,0.485811,0.669785) + Old Polarization: (0.788632,-0.0693304,-0.610945) + New Momentum Direction: (0.561584,-0.485811,0.669785) + New Polarization: (-0.788632,-0.0693304,0.610945) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.561584,-0.485811,0.669785) + Old Polarization: (-0.788632,-0.0693304,0.610945) + New Momentum Direction: (0.561584,-0.485811,-0.669785) + New Polarization: (0.788632,0.0693304,0.610945) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1541, parentID 1) is processed with stopping code 2 +### pop requested out of 30 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1540, parentID 1) is processed with stopping code 2 +### pop requested out of 29 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.831037,0.219577,0.511041) + Old Polarization: (-0.467799,0.772957,0.428604) + New Momentum Direction: (0.660274,0.296482,0.690027) + New Polarization: (-0.682196,0.621004,0.385956) + *** FresnelRefraction *** +Track (trackID 1539, parentID 1) is processed with stopping code 2 +### pop requested out of 28 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.940969,0.319041,-0.11309) + Old Polarization: (-0.33849,0.885873,-0.31726) + New Momentum Direction: (0.88854,0.432435,-0.153285) + New Polarization: (-0.458797,0.836733,-0.29897) + *** FresnelRefraction *** +Track (trackID 1538, parentID 1) is processed with stopping code 2 +### pop requested out of 27 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.924016,0.354179,0.144057) + Old Polarization: (-0.356355,0.934282,-0.0112839) + New Momentum Direction: (0.856423,0.47823,0.194513) + New Polarization: (-0.496532,0.866169,0.0566226) + *** FresnelRefraction *** +Track (trackID 1537, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.874458,0.306095,0.376337) + Old Polarization: (-0.417755,0.86952,0.263468) + New Momentum Direction: (0.753086,0.415144,0.510409) + New Polarization: (-0.605395,0.741005,0.290533) + *** FresnelRefraction *** +Track (trackID 1536, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.519622,-0.643529,0.562018) + Old Polarization: (-0.837954,-0.255416,0.482283) + New Momentum Direction: (0.519622,0.643529,0.562018) + New Polarization: (0.837954,-0.255416,-0.482283) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.519622,0.643529,0.562018) + Old Polarization: (0.837954,-0.255416,-0.482283) + New Momentum Direction: (0.519622,0.643529,-0.562018) + New Polarization: (-0.837954,0.255416,-0.482283) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.519622,0.643529,-0.562018) + Old Polarization: (-0.837954,0.255416,-0.482283) + New Momentum Direction: (-0.519622,0.643529,-0.562018) + New Polarization: (-0.837954,-0.255416,0.482283) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.519622,0.643529,-0.562018) + Old Polarization: (-0.837954,-0.255416,0.482283) + New Momentum Direction: (-0.519622,-0.643529,-0.562018) + New Polarization: (0.837954,-0.255416,-0.482283) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.519622,-0.643529,-0.562018) + Old Polarization: (0.837954,-0.255416,-0.482283) + New Momentum Direction: (-0.519622,-0.643529,0.562018) + New Polarization: (-0.837954,0.255416,-0.482283) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.519622,-0.643529,0.562018) + Old Polarization: (-0.837954,0.255416,-0.482283) + New Momentum Direction: (0.519622,-0.643529,0.562018) + New Polarization: (-0.837954,-0.255416,0.482283) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.519622,-0.643529,0.562018) + Old Polarization: (-0.837954,-0.255416,0.482283) + New Momentum Direction: (0.519622,0.643529,0.562018) + New Polarization: (0.837954,-0.255416,-0.482283) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.519622,0.643529,0.562018) + Old Polarization: (0.837954,-0.255416,-0.482283) + New Momentum Direction: (0.519622,0.643529,-0.562018) + New Polarization: (-0.837954,0.255416,-0.482283) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.519622,0.643529,-0.562018) + Old Polarization: (-0.837954,0.255416,-0.482283) + New Momentum Direction: (0.519622,-0.643529,-0.562018) + New Polarization: (0.837954,0.255416,0.482283) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1535, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.512195,-0.858691,0.0175025) + Old Polarization: (-0.846082,-0.507967,-0.161599) + New Momentum Direction: (0.696169,-0.717484,0.0237892) + New Polarization: (0.717055,0.693401,-0.0709019) + *** FresnelRefraction *** +Track (trackID 1534, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.530987,-0.61319,0.584851) + Old Polarization: (-0.826922,-0.224218,0.51568) + New Momentum Direction: (0.530987,0.61319,0.584851) + New Polarization: (0.826922,-0.224218,-0.51568) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.530987,0.61319,0.584851) + Old Polarization: (0.826922,-0.224218,-0.51568) + New Momentum Direction: (0.530987,0.61319,-0.584851) + New Polarization: (-0.826922,0.224218,-0.51568) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.530987,0.61319,-0.584851) + Old Polarization: (-0.826922,0.224218,-0.51568) + New Momentum Direction: (-0.530987,0.61319,-0.584851) + New Polarization: (-0.826922,-0.224218,0.51568) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.530987,0.61319,-0.584851) + Old Polarization: (-0.826922,-0.224218,0.51568) + New Momentum Direction: (-0.530987,-0.61319,-0.584851) + New Polarization: (0.826922,-0.224218,-0.51568) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.530987,-0.61319,-0.584851) + Old Polarization: (0.826922,-0.224218,-0.51568) + New Momentum Direction: (-0.530987,-0.61319,0.584851) + New Polarization: (-0.826922,0.224218,-0.51568) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.530987,-0.61319,0.584851) + Old Polarization: (-0.826922,0.224218,-0.51568) + New Momentum Direction: (0.530987,-0.61319,0.584851) + New Polarization: (-0.826922,-0.224218,0.51568) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1533, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.740484,-0.413235,-0.530019) + Old Polarization: (-0.576416,0.0150247,-0.817018) + New Momentum Direction: (0.41769,-0.55866,-0.716543) + New Polarization: (-0.841274,0.0601019,-0.537258) + *** FresnelRefraction *** +Track (trackID 1532, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.534241,-0.61417,0.580847) + Old Polarization: (-0.825096,-0.229411,0.51632) + New Momentum Direction: (0.534241,0.61417,0.580847) + New Polarization: (0.825096,-0.229411,-0.51632) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.534241,0.61417,0.580847) + Old Polarization: (0.825096,-0.229411,-0.51632) + New Momentum Direction: (0.534241,0.61417,-0.580847) + New Polarization: (-0.825096,0.229411,-0.51632) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.534241,0.61417,-0.580847) + Old Polarization: (-0.825096,0.229411,-0.51632) + New Momentum Direction: (-0.534241,0.61417,-0.580847) + New Polarization: (-0.825096,-0.229411,0.51632) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.534241,0.61417,-0.580847) +Old Polarization: (-0.825096,-0.229411,0.51632) +New Polarization: (-0.480076,-0.766936,0.425835) +Polarization Change: (-0.480076,-0.766936,0.425835) +New Momentum Direction: (0.728621,-0.618942,-0.293295) +Momentum Change: (0.728621,-0.618942,-0.293295) + Photon at Boundary! + Old Momentum Direction: (0.728621,-0.618942,-0.293295) + Old Polarization: (-0.480076,-0.766936,0.425835) + New Momentum Direction: (0.386685,-0.83338,-0.394909) + New Polarization: (-0.758958,-0.53084,0.377083) + *** FresnelRefraction *** +Track (trackID 1531, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1530, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.938665,0.343901,0.0252838) + Old Polarization: (-0.336215,0.929038,-0.154426) + New Momentum Direction: (0.885974,0.462487,0.0340023) + New Polarization: (-0.457328,0.883528,-0.101143) + *** FresnelRefraction *** +Track (trackID 1529, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.650864,-0.621541,-0.435962) + Old Polarization: (-0.682297,-0.227054,-0.694922) + New Momentum Direction: (-0.650864,-0.621541,-0.435962) + New Polarization: (-0.682297,0.227054,0.694922) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.650864,-0.621541,-0.435962) + Old Polarization: (-0.682297,0.227054,0.694922) + New Momentum Direction: (-0.650864,0.621541,-0.435962) + New Polarization: (0.682297,0.227054,-0.694922) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1528, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.830311,0.218342,0.512748) + Old Polarization: (-0.468702,0.77134,0.430527) + New Momentum Direction: (0.658519,0.294843,0.692402) + New Polarization: (-0.683632,0.619038,0.386575) + *** FresnelRefraction *** +Track (trackID 1527, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.940685,0.284887,-0.184261) + Old Polarization: (-0.336736,0.850351,-0.404366) + New Momentum Direction: (0.88876,0.384884,-0.248938) + New Polarization: (-0.456511,0.792146,-0.405095) + *** FresnelRefraction *** +Track (trackID 1526, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.870523,-0.0344159,-0.490924) + Old Polarization: (-0.419385,0.470079,-0.776622) + New Momentum Direction: (0.748749,-0.0463552,-0.66123) + New Polarization: (-0.605411,0.358375,-0.710665) + *** FresnelRefraction *** +Track (trackID 1525, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.762568,-0.356227,-0.539993) + Old Polarization: (-0.549875,0.0827827,-0.831135) + New Momentum Direction: (0.486788,-0.481013,-0.729153) + New Polarization: (-0.802558,0.0832811,-0.590733) + *** FresnelRefraction *** +Track (trackID 1524, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.494283,-0.775864,0.392072) + Old Polarization: (-0.867454,-0.410832,0.280606) + New Momentum Direction: (0.671563,-0.515015,0.532693) + New Polarization: (-0.0761199,0.667177,0.741) + *** FresnelRefraction *** +Track (trackID 1523, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1522, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1521, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1520, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.589922,-0.399008,0.701986) + Old Polarization: (-0.756022,0.0323953,0.653745) + New Momentum Direction: (0.589922,-0.399008,-0.701986) + New Polarization: (-0.125344,0.813585,-0.567775) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.589922,-0.399008,-0.701986) + Old Polarization: (-0.125344,0.813585,-0.567775) + New Momentum Direction: (-0.589922,-0.399008,-0.701986) + New Polarization: (-0.125344,-0.813585,0.567775) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.589922,-0.399008,-0.701986) + Old Polarization: (-0.125344,-0.813585,0.567775) + New Momentum Direction: (-0.589922,0.399008,-0.701986) + New Polarization: (0.125344,-0.813585,-0.567775) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1519, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.703655,-0.0754556,0.706524) + Old Polarization: (-0.620481,0.419263,0.662738) + New Momentum Direction: (-0.703655,-0.0754556,0.706524) + New Polarization: (-0.498548,-0.656069,-0.56659) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.703655,-0.0754556,0.706524) + Old Polarization: (-0.498548,-0.656069,-0.56659) + New Momentum Direction: (-0.950198,-0.101893,0.29452) + New Polarization: (-0.216029,-0.465799,-0.858116) + *** FresnelRefraction *** +Track (trackID 1518, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.803266,-0.240874,-0.544741) + Old Polarization: (-0.501117,0.221032,-0.836676) + New Momentum Direction: (0.594181,-0.325279,-0.735624) + New Polarization: (-0.732117,0.160035,-0.662113) + *** FresnelRefraction *** +Track (trackID 1517, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.918166,0.35939,0.166765) + Old Polarization: (-0.36676,0.930201,0.0146374) + New Momentum Direction: (0.842864,0.488135,0.226506) + New Polarization: (-0.515862,0.852751,0.0818657) + *** FresnelRefraction *** +Track (trackID 1516, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.754792,0.0643026,0.652805) + Old Polarization: (-0.559753,0.582,0.589875) + New Momentum Direction: (0.455078,0.0872888,0.886163) + New Polarization: (-0.821711,0.424584,0.380157) + *** FresnelRefraction *** +Track (trackID 1515, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.833211,-0.140122,-0.534907) + Old Polarization: (-0.466818,0.340247,-0.81628) + New Momentum Direction: (0.661105,-0.190128,-0.725804) + New Polarization: (-0.683731,0.245672,-0.687137) + *** FresnelRefraction *** +Track (trackID 1514, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1513, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.555002,-0.813027,-0.175957) + Old Polarization: (-0.797047,-0.459205,-0.392233) + New Momentum Direction: (0.751952,-0.614601,-0.238398) + New Polarization: (0.366983,0.690694,-0.623109) + *** FresnelRefraction *** +Track (trackID 1512, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 81 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 44 Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 82 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.972625,-0.139503,-0.185848) - Old Polarization: (-0.205608,-0.889299,-0.408502) - New Momentum Direction: (0.949349,-0.188634,-0.251302) - New Polarization: (-0.292936,-0.820656,-0.490624) - *** FresnelRefraction *** -Track (trackID 1711, parentID 1) is processed with stopping code 2 -### pop requested out of 81 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.941798,-0.211264,0.261504) - Old Polarization: (-0.245472,-0.96364,0.105553) - New Momentum Direction: (0.889395,-0.287278,0.355594) - New Polarization: (-0.377641,-0.900073,0.217385) - *** FresnelRefraction *** -Track (trackID 1710, parentID 1) is processed with stopping code 2 -### pop requested out of 80 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1709, parentID 1) is processed with stopping code 2 -### pop requested out of 79 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1708, parentID 1) is processed with stopping code 2 -### pop requested out of 78 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.975801,-0.154842,-0.15439) - Old Polarization: (-0.202572,-0.90599,-0.371682) - New Momentum Direction: (0.955223,-0.20953,-0.208918) - New Polarization: (-0.283459,-0.850511,-0.443037) - *** FresnelRefraction *** -Track (trackID 1707, parentID 1) is processed with stopping code 2 -### pop requested out of 77 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.973321,-0.155088,-0.169095) -Old Polarization: (-0.210059,-0.898788,-0.38478) -New Polarization: (0.0643366,-0.985629,-0.156195) -Polarization Change: (0.0643366,-0.985629,-0.156195) -New Momentum Direction: (0.747482,-0.0561026,0.661909) -Momentum Change: (0.747482,-0.0561026,0.661909) - Photon at Boundary! - Old Momentum Direction: (0.747482,-0.0561026,0.661909) - Old Polarization: (0.0643366,-0.985629,-0.156195) - New Momentum Direction: (0.427847,-0.0763356,0.900622) - New Polarization: (-0.128722,-0.991417,-0.0228811) - *** FresnelRefraction *** -Track (trackID 1706, parentID 1) is processed with stopping code 2 -### pop requested out of 76 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1705, parentID 1) is processed with stopping code 2 -### pop requested out of 75 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.335639,0.904333,0.263681) - Old Polarization: (-0.941843,0.317216,0.110931) - New Momentum Direction: (0.453457,0.816988,0.35624) - New Polarization: (0.198118,-0.482091,0.853427) - *** FresnelRefraction *** -Track (trackID 1704, parentID 1) is processed with stopping code 2 -### pop requested out of 74 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.858896,0.157798,-0.487235) - Old Polarization: (-0.333649,-0.549368,-0.766076) - New Momentum Direction: (0.725352,0.212096,-0.654889) - New Polarization: (-0.525731,-0.443454,-0.725917) - *** FresnelRefraction *** -Track (trackID 1703, parentID 1) is processed with stopping code 2 -### pop requested out of 73 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.366392,0.779024,0.5088) -Old Polarization: (-0.904324,0.169448,0.391772) -New Polarization: (-0.431318,-0.385549,0.815669) -Polarization Change: (-0.431318,-0.385549,0.815669) -New Momentum Direction: (0.819093,-0.546356,0.174878) -Momentum Change: (0.819093,-0.546356,0.174878) - Photon at Boundary! - Old Momentum Direction: (0.819093,-0.546356,0.174878) - Old Polarization: (-0.431318,-0.385549,0.815669) - New Momentum Direction: (0.629557,-0.739972,0.236851) - New Polarization: (-0.659612,-0.347944,0.666218) - *** FresnelRefraction *** -Track (trackID 1702, parentID 1) is processed with stopping code 2 -### pop requested out of 72 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1701, parentID 1) is processed with stopping code 2 -### pop requested out of 71 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.659732,0.19027,0.727015) - Old Polarization: (-0.566879,-0.509106,0.647657) - New Momentum Direction: (0.890967,0.256959,0.374366) - New Polarization: (0.413902,-0.120572,-0.902301) - *** FresnelRefraction *** -Track (trackID 1700, parentID 1) is processed with stopping code 2 -### pop requested out of 70 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.9799,-0.163264,-0.114633) - Old Polarization: (-0.19254,-0.924371,-0.329343) - New Momentum Direction: (0.963332,-0.21959,-0.154181) - New Polarization: (-0.263049,-0.886195,-0.381396) - *** FresnelRefraction *** -Track (trackID 1699, parentID 1) is processed with stopping code 2 -### pop requested out of 69 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.577121,0.661061,-0.47951) - Old Polarization: (-0.662378,0.0354573,-0.748331) - New Momentum Direction: (0.577121,-0.661061,-0.47951) - New Polarization: (0.662378,0.0354573,0.748331) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.577121,-0.661061,-0.47951) - Old Polarization: (0.662378,0.0354573,0.748331) - New Momentum Direction: (-0.577121,-0.661061,-0.47951) - New Polarization: (0.662378,-0.0354573,-0.748331) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.577121,-0.661061,-0.47951) - Old Polarization: (0.662378,-0.0354573,-0.748331) - New Momentum Direction: (-0.577121,-0.661061,0.47951) - New Polarization: (-0.662378,0.0354573,-0.748331) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.577121,-0.661061,0.47951) - Old Polarization: (-0.662378,0.0354573,-0.748331) - New Momentum Direction: (-0.577121,0.661061,0.47951) - New Polarization: (0.662378,0.0354573,0.748331) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.577121,0.661061,0.47951) - Old Polarization: (0.662378,0.0354573,0.748331) - New Momentum Direction: (0.577121,0.661061,0.47951) - New Polarization: (0.662378,-0.0354573,-0.748331) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1698, parentID 1) is processed with stopping code 2 -### pop requested out of 68 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.839554,-0.0867566,0.536304) - Old Polarization: (-0.358557,-0.830117,0.427016) - New Momentum Direction: (0.679618,-0.117144,0.724152) - New Polarization: (-0.568083,-0.708607,0.418518) - *** FresnelRefraction *** -Track (trackID 1697, parentID 1) is processed with stopping code 2 -### pop requested out of 67 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.45073,0.584943,0.674303) - Old Polarization: (-0.808664,-0.0523308,0.585938) - New Momentum Direction: (0.45073,0.584943,-0.674303) - New Polarization: (0.208519,-0.80348,-0.557619) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,0.584943,-0.674303) - Old Polarization: (0.208519,-0.80348,-0.557619) - New Momentum Direction: (0.45073,-0.584943,-0.674303) - New Polarization: (-0.208519,-0.80348,0.557619) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,-0.584943,-0.674303) - Old Polarization: (-0.208519,-0.80348,0.557619) - New Momentum Direction: (-0.45073,-0.584943,-0.674303) - New Polarization: (-0.208519,0.80348,-0.557619) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.45073,-0.584943,-0.674303) - Old Polarization: (-0.208519,0.80348,-0.557619) - New Momentum Direction: (-0.45073,-0.584943,0.674303) - New Polarization: (0.848758,-0.04685,0.526701) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.45073,-0.584943,0.674303) - Old Polarization: (0.848758,-0.04685,0.526701) - New Momentum Direction: (-0.45073,0.584943,0.674303) - New Polarization: (-0.848758,-0.04685,-0.526701) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.45073,0.584943,0.674303) - Old Polarization: (-0.848758,-0.04685,-0.526701) - New Momentum Direction: (0.45073,0.584943,0.674303) - New Polarization: (-0.848758,0.04685,0.526701) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,0.584943,0.674303) - Old Polarization: (-0.848758,0.04685,0.526701) - New Momentum Direction: (0.45073,0.584943,-0.674303) - New Polarization: (0.313897,-0.811002,-0.493705) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,0.584943,-0.674303) - Old Polarization: (0.313897,-0.811002,-0.493705) - New Momentum Direction: (0.45073,-0.584943,-0.674303) - New Polarization: (-0.313897,-0.811002,0.493705) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,-0.584943,-0.674303) - Old Polarization: (-0.313897,-0.811002,0.493705) - New Momentum Direction: (0.45073,-0.584943,0.674303) - New Polarization: (0.364288,0.810154,0.459287) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,-0.584943,0.674303) - Old Polarization: (0.364288,0.810154,0.459287) - New Momentum Direction: (-0.45073,-0.584943,0.674303) - New Polarization: (0.364288,-0.810154,-0.459287) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.45073,-0.584943,0.674303) - Old Polarization: (0.364288,-0.810154,-0.459287) - New Momentum Direction: (-0.45073,0.584943,0.674303) - New Polarization: (-0.364288,-0.810154,0.459287) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.45073,0.584943,0.674303) - Old Polarization: (-0.364288,-0.810154,0.459287) - New Momentum Direction: (-0.45073,0.584943,-0.674303) - New Polarization: (0.884814,0.192822,-0.424175) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.45073,0.584943,-0.674303) - Old Polarization: (0.884814,0.192822,-0.424175) - New Momentum Direction: (-0.45073,-0.584943,-0.674303) - New Polarization: (-0.884814,0.192822,0.424175) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.45073,-0.584943,-0.674303) - Old Polarization: (-0.884814,0.192822,0.424175) - New Momentum Direction: (0.45073,-0.584943,-0.674303) - New Polarization: (-0.884814,-0.192822,-0.424175) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,-0.584943,-0.674303) - Old Polarization: (-0.884814,-0.192822,-0.424175) - New Momentum Direction: (0.45073,-0.584943,0.674303) - New Polarization: (0.456371,0.800203,0.389102) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,-0.584943,0.674303) - Old Polarization: (0.456371,0.800203,0.389102) - New Momentum Direction: (0.45073,0.584943,0.674303) - New Polarization: (-0.456371,0.800203,-0.389102) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,0.584943,0.674303) - Old Polarization: (-0.456371,0.800203,-0.389102) - New Momentum Direction: (0.45073,0.584943,-0.674303) - New Polarization: (0.497021,-0.791915,-0.354741) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.45073,0.584943,-0.674303) - Old Polarization: (0.497021,-0.791915,-0.354741) - New Momentum Direction: (-0.45073,0.584943,-0.674303) - New Polarization: (0.497021,0.791915,0.354741) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1696, parentID 1) is processed with stopping code 2 -### pop requested out of 66 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1695, parentID 1) is processed with stopping code 2 -### pop requested out of 65 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.810805,0.245094,-0.53153) - Old Polarization: (-0.393152,-0.444704,-0.804779) - New Momentum Direction: (0.609478,0.331977,-0.71995) - New Polarization: (-0.62505,-0.357416,-0.693949) - *** FresnelRefraction *** -Track (trackID 1694, parentID 1) is processed with stopping code 2 -### pop requested out of 64 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.893419,0.0650763,-0.444486) - Old Polarization: (-0.300579,-0.64873,-0.699144) - New Momentum Direction: (0.791764,0.0884866,-0.604384) - New Polarization: (-0.476522,-0.529546,-0.701789) - *** FresnelRefraction *** -Track (trackID 1693, parentID 1) is processed with stopping code 2 -### pop requested out of 63 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.459276,0.836112,-0.299971) -Old Polarization: (-0.801303,0.244217,-0.546142) -New Polarization: (0.406248,0.194219,0.892884) -Polarization Change: (0.406248,0.194219,0.892884) -New Momentum Direction: (-0.76222,0.610955,0.213904) -Momentum Change: (-0.76222,0.610955,0.213904) - -** Photon absorbed! ** -Track (trackID 1692, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1691, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.882465,-0.144447,0.44765) - Old Polarization: (-0.309996,-0.894365,0.322512) - New Momentum Direction: (0.771409,-0.195411,0.605592) - New Polarization: (-0.490429,-0.788978,0.370127) - *** FresnelRefraction *** -Track (trackID 1690, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.967501,-0.218837,0.126694) - Old Polarization: (-0.214389,-0.975573,-0.0479133) - New Momentum Direction: (0.939298,-0.296931,0.171906) - New Polarization: (-0.311839,-0.947784,0.066796) - *** FresnelRefraction *** -Track (trackID 1689, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.485888,0.499102,0.717503) - Old Polarization: (-0.765075,-0.154029,0.625248) - New Momentum Direction: (0.485888,0.499102,-0.717503) - New Polarization: (0.159958,-0.857836,-0.488397) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.485888,0.499102,-0.717503) - Old Polarization: (0.159958,-0.857836,-0.488397) - New Momentum Direction: (0.485888,-0.499102,-0.717503) - New Polarization: (-0.159958,-0.857836,0.488397) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.485888,-0.499102,-0.717503) - Old Polarization: (-0.159958,-0.857836,0.488397) - New Momentum Direction: (-0.485888,-0.499102,-0.717503) - New Polarization: (-0.159958,0.857836,-0.488397) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1688, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1687, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1686, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.392248,0.909402,-0.138311) - Old Polarization: (-0.876943,0.324304,-0.354681) - New Momentum Direction: (0.529501,0.827508,-0.186709) - New Polarization: (0.50491,-0.484292,-0.714512) - *** FresnelRefraction *** -Track (trackID 1685, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.588627,0.309365,0.746868) - Old Polarization: (-0.648598,-0.37073,0.66474) - New Momentum Direction: (0.797627,0.41921,0.433653) - New Polarization: (0.392177,0.185783,-0.900934) - *** FresnelRefraction *** -Track (trackID 1684, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.936501,-0.203358,0.285678) - Old Polarization: (-0.249306,-0.959026,0.134592) - New Momentum Direction: (0.879756,-0.275708,0.387317) - New Polarization: (-0.385325,-0.890703,0.241191) - *** FresnelRefraction *** -Track (trackID 1683, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.349117,0.936589,0.0303183) - Old Polarization: (-0.923489,0.349364,-0.158472) - New Momentum Direction: (0.473245,0.879972,0.0410979) - New Polarization: (0.880181,-0.474252,0.0191535) - *** FresnelRefraction *** -Track (trackID 1682, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1681, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.974895,-0.153562,-0.161241) - Old Polarization: (-0.204798,-0.902608,-0.378626) - New Momentum Direction: (0.953394,-0.208087,-0.218492) - New Polarization: (-0.28788,-0.844188,-0.452185) - *** FresnelRefraction *** -Track (trackID 1680, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.57301,0.662417,-0.482559) - Old Polarization: (-0.666151,0.0334725,-0.745066) - New Momentum Direction: (0.57301,-0.662417,-0.482559) - New Polarization: (0.666151,0.0334725,0.745066) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.57301,-0.662417,-0.482559) - Old Polarization: (0.666151,0.0334725,0.745066) - New Momentum Direction: (-0.57301,-0.662417,-0.482559) - New Polarization: (0.666151,-0.0334725,-0.745066) - *** TotalInternalReflection *** -Scattering Photon! -Old Momentum Direction: (-0.57301,-0.662417,-0.482559) -Old Polarization: (0.666151,-0.0334725,-0.745066) -New Polarization: (-0.706188,-0.400562,0.583823) -Polarization Change: (-0.706188,-0.400562,0.583823) -New Momentum Direction: (-0.0801443,0.864504,0.496196) -Momentum Change: (-0.0801443,0.864504,0.496196) - Photon at Boundary! - Old Momentum Direction: (-0.0801443,0.864504,0.496196) - Old Polarization: (-0.706188,-0.400562,0.583823) - New Momentum Direction: (-0.108794,0.731066,0.673577) - New Polarization: (-0.574393,-0.599263,0.557635) - *** FresnelRefraction *** -Track (trackID 1679, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.956893,-0.214897,0.195385) - Old Polarization: (-0.225084,-0.973838,0.0312499) - New Momentum Direction: (0.919379,-0.291056,0.264628) - New Polarization: (-0.337536,-0.929169,0.150715) - *** FresnelRefraction *** -Track (trackID 1678, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.38496,0.727906,0.567414) - Old Polarization: (-0.882219,0.109633,0.457897) - New Momentum Direction: (0.52192,0.368506,0.769287) - New Polarization: (-0.755466,-0.219063,0.61748) - *** FresnelRefraction *** -Track (trackID 1677, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.8757,-0.137182,0.462958) - Old Polarization: (-0.318169,-0.885142,0.339546) - New Momentum Direction: (0.756812,-0.1857,0.626698) - New Polarization: (-0.504186,-0.776028,0.378916) - *** FresnelRefraction *** -Track (trackID 1676, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1675, parentID 1) is processed with stopping code 2 ### pop requested out of 45 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.58186,-0.547178,-0.601693) +Old Polarization: (-0.389185,0.462287,-0.796759) +New Polarization: (-0.179599,0.710491,-0.680402) +Polarization Change: (-0.179599,0.710491,-0.680402) +New Momentum Direction: (-0.648085,-0.605796,-0.461517) +Momentum Change: (-0.648085,-0.605796,-0.461517) Photon at Boundary! - Old Momentum Direction: (0.356049,0.80632,0.47231) - Old Polarization: (-0.915569,0.199873,0.348977) - New Momentum Direction: (0.482619,0.597672,0.640209) - New Polarization: (-0.548436,-0.363688,0.75296) - *** FresnelRefraction *** -Track (trackID 1674, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (-0.648085,-0.605796,-0.461517) + Old Polarization: (-0.179599,0.710491,-0.680402) + New Momentum Direction: (-0.648085,0.605796,-0.461517) + New Polarization: (0.179599,0.710491,0.680402) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1598, parentID 1) is processed with stopping code 2 ### pop requested out of 44 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.473063,0.814393,-0.336117) - Old Polarization: (-0.783188,0.213989,-0.583802) - New Momentum Direction: (0.638689,0.621406,-0.453797) - New Polarization: (-0.259238,-0.381503,-0.887272) + Old Momentum Direction: (0.98845,-0.122512,-0.0892017) + Old Polarization: (0.105612,0.979011,-0.174306) + New Momentum Direction: (0.978547,-0.166554,-0.121269) + New Polarization: (-0.164361,-0.276187,-0.946946) *** FresnelRefraction *** -Track (trackID 1673, parentID 1) is processed with stopping code 2 +Track (trackID 1597, parentID 1) is processed with stopping code 2 ### pop requested out of 43 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.336389,0.914967,0.222885) - Old Polarization: (-0.941601,0.330597,0.0639781) - New Momentum Direction: (0.454145,0.838575,0.300907) - New Polarization: (0.370674,-0.484971,0.792088) + Old Momentum Direction: (0.695418,-0.445804,-0.563607) + Old Polarization: (-0.246224,0.589008,-0.769704) + New Momentum Direction: (0.253316,-0.600139,-0.758726) + New Polarization: (-0.474904,0.606146,-0.638007) *** FresnelRefraction *** -Track (trackID 1672, parentID 1) is processed with stopping code 2 +Track (trackID 1596, parentID 1) is processed with stopping code 2 ### pop requested out of 42 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1671, parentID 1) is processed with stopping code 2 +Scattering Photon! +Old Momentum Direction: (0.280693,-0.841439,-0.461727) +Old Polarization: (-0.762137,0.0970095,-0.640106) +New Polarization: (0.322806,0.635415,0.701458) +Polarization Change: (0.322806,0.635415,0.701458) +New Momentum Direction: (0.720666,-0.645455,0.253039) +Momentum Change: (0.720666,-0.645455,0.253039) + Photon at Boundary! + Old Momentum Direction: (0.720666,-0.645455,0.253039) + Old Polarization: (0.322806,0.635415,0.701458) + New Momentum Direction: (0.720666,0.645455,0.253039) + New Polarization: (-0.322806,0.635415,-0.701458) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.720666,0.645455,0.253039) + Old Polarization: (-0.322806,0.635415,-0.701458) + New Momentum Direction: (0.355173,0.870311,0.34119) + New Polarization: (-0.577089,0.49127,-0.652397) + *** FresnelRefraction *** +Track (trackID 1595, parentID 1) is processed with stopping code 2 ### pop requested out of 41 stacked tracks. ** Photon absorbed! ** -Track (trackID 1670, parentID 1) is processed with stopping code 2 +Track (trackID 1594, parentID 1) is processed with stopping code 2 ### pop requested out of 40 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1669, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.190437,-0.871544,0.451824) + Old Polarization: (-0.869792,0.0636094,0.489302) + New Momentum Direction: (0.257824,-0.747892,0.611706) + New Polarization: (-0.854916,0.118387,0.505078) + *** FresnelRefraction *** +Track (trackID 1593, parentID 1) is processed with stopping code 2 ### pop requested out of 39 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.423994,0.653121,0.627425) - Old Polarization: (-0.842395,0.0300101,0.538025) - New Momentum Direction: (0.423994,-0.653121,0.627425) - New Polarization: (0.842395,0.0300101,-0.538025) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.423994,-0.653121,0.627425) - Old Polarization: (0.842395,0.0300101,-0.538025) - New Momentum Direction: (0.423994,-0.653121,-0.627425) - New Polarization: (-0.842395,-0.0300101,-0.538025) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.423994,-0.653121,-0.627425) - Old Polarization: (-0.842395,-0.0300101,-0.538025) - New Momentum Direction: (-0.423994,-0.653121,-0.627425) - New Polarization: (-0.842395,0.0300101,0.538025) - *** TotalInternalReflection *** + Old Momentum Direction: (0.251119,-0.808344,0.532465) + Old Polarization: (-0.795614,0.140935,0.589182) + New Momentum Direction: (0.339818,-0.604442,0.720537) + New Polarization: (-0.769264,0.262123,0.582687) + *** FresnelRefraction *** +Track (trackID 1592, parentID 1) is processed with stopping code 2 +### pop requested out of 38 stacked tracks. ** Photon absorbed! ** -Track (trackID 1668, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.906226,-0.178421,0.383303) - Old Polarization: (-0.285857,-0.926543,0.244549) - New Momentum Direction: (0.818307,-0.242559,0.521093) - New Polarization: (-0.451187,-0.832737,0.320905) - *** FresnelRefraction *** -Track (trackID 1667, parentID 1) is processed with stopping code 2 +Track (trackID 1591, parentID 1) is processed with stopping code 2 ### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.847302,0.178406,-0.500251) - Old Polarization: (-0.348523,-0.523959,-0.777173) - New Momentum Direction: (0.698446,0.240398,-0.674079) - New Polarization: (-0.550858,-0.420704,-0.720808) - *** FresnelRefraction *** -Track (trackID 1666, parentID 1) is processed with stopping code 2 +Scattering Photon! +Old Momentum Direction: (0.65384,-0.407347,0.637622) +Old Polarization: (-0.300946,0.633176,0.713106) +New Polarization: (0.141311,-0.973365,-0.180532) +Polarization Change: (0.141311,-0.973365,-0.180532) +New Momentum Direction: (-0.307769,-0.21652,0.926497) +Momentum Change: (-0.307769,-0.21652,0.926497) + +** Photon absorbed! ** +Track (trackID 1590, parentID 1) is processed with stopping code 2 ### pop requested out of 36 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.542663,0.707424,-0.452845) - Old Polarization: (-0.700417,0.0835452,-0.708827) - New Momentum Direction: (0.737799,0.276744,-0.615683) - New Polarization: (-0.591372,-0.174783,-0.78723) - *** FresnelRefraction *** -Track (trackID 1665, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.481205,-0.578258,0.658832) + Old Polarization: (-0.512582,0.424082,0.746602) + New Momentum Direction: (0.481205,-0.578258,-0.658832) + New Polarization: (0.512582,-0.424082,0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.481205,-0.578258,-0.658832) + Old Polarization: (0.512582,-0.424082,0.746602) + New Momentum Direction: (0.481205,0.578258,-0.658832) + New Polarization: (-0.512582,-0.424082,-0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.481205,0.578258,-0.658832) + Old Polarization: (-0.512582,-0.424082,-0.746602) + New Momentum Direction: (-0.481205,0.578258,-0.658832) + New Polarization: (-0.512582,0.424082,0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.481205,0.578258,-0.658832) + Old Polarization: (-0.512582,0.424082,0.746602) + New Momentum Direction: (-0.481205,0.578258,0.658832) + New Polarization: (0.512582,-0.424082,0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.481205,0.578258,0.658832) + Old Polarization: (0.512582,-0.424082,0.746602) + New Momentum Direction: (-0.481205,-0.578258,0.658832) + New Polarization: (-0.512582,-0.424082,-0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.481205,-0.578258,0.658832) + Old Polarization: (-0.512582,-0.424082,-0.746602) + New Momentum Direction: (0.481205,-0.578258,0.658832) + New Polarization: (-0.512582,0.424082,0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.481205,-0.578258,0.658832) + Old Polarization: (-0.512582,0.424082,0.746602) + New Momentum Direction: (0.481205,-0.578258,-0.658832) + New Polarization: (0.512582,-0.424082,0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.481205,-0.578258,-0.658832) + Old Polarization: (0.512582,-0.424082,0.746602) + New Momentum Direction: (0.481205,0.578258,-0.658832) + New Polarization: (-0.512582,-0.424082,-0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.481205,0.578258,-0.658832) + Old Polarization: (-0.512582,-0.424082,-0.746602) + New Momentum Direction: (-0.481205,0.578258,-0.658832) + New Polarization: (-0.512582,0.424082,0.746602) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.481205,0.578258,-0.658832) + Old Polarization: (-0.512582,0.424082,0.746602) + New Momentum Direction: (-0.481205,0.578258,0.658832) + New Polarization: (0.512582,-0.424082,0.746602) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1589, parentID 1) is processed with stopping code 2 ### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.45331,0.835335,-0.311007) - Old Polarization: (-0.803183,0.231494,-0.548916) - New Momentum Direction: (0.615279,0.665761,-0.42213) - New Polarization: (-0.174013,-0.407574,-0.896439) - *** FresnelRefraction *** -Track (trackID 1664, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1588, parentID 1) is processed with stopping code 2 ### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.937928,-0.0388431,-0.344648) - Old Polarization: (-0.248013,-0.769754,-0.588191) - New Momentum Direction: (0.882431,-0.052687,-0.467482) - New Polarization: (-0.382851,-0.657899,-0.648532) - *** FresnelRefraction *** -Track (trackID 1663, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1587, parentID 1) is processed with stopping code 2 ### pop requested out of 33 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.50792,0.76429,-0.397339) - Old Polarization: (-0.742078,0.153998,-0.652384) - New Momentum Direction: (0.686965,0.489159,-0.537404) - New Polarization: (-0.451641,-0.291955,-0.843079) + Old Momentum Direction: (0.437742,-0.696755,-0.568256) + Old Polarization: (-0.567631,0.275981,-0.775648) + New Momentum Direction: (0.589241,-0.260163,-0.764925) + New Polarization: (-0.580844,0.521685,-0.624872) *** FresnelRefraction *** -Track (trackID 1662, parentID 1) is processed with stopping code 2 +Track (trackID 1586, parentID 1) is processed with stopping code 2 ### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.93994,-0.0394738,-0.339048) - Old Polarization: (-0.243537,-0.773531,-0.585098) - New Momentum Direction: (0.887052,-0.0533893,-0.458572) - New Polarization: (-0.374693,-0.663545,-0.647544) + Old Momentum Direction: (0.136035,-0.965981,-0.219942) + Old Polarization: (-0.939417,-0.0552691,-0.338291) + New Momentum Direction: (0.183771,-0.936988,-0.297122) + New Polarization: (-0.675026,0.0994304,-0.731063) *** FresnelRefraction *** -Track (trackID 1661, parentID 1) is processed with stopping code 2 +Track (trackID 1585, parentID 1) is processed with stopping code 2 ### pop requested out of 31 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.673956,0.166416,0.719784) - Old Polarization: (-0.550403,-0.536786,0.639466) - New Momentum Direction: (0.910077,0.22472,0.348224) - New Polarization: (0.390448,-0.183183,-0.902216) + Old Momentum Direction: (0.95825,-0.136149,0.251438) + Old Polarization: (0.073746,0.96729,0.242719) + New Momentum Direction: (0.921979,-0.184388,0.340524) + New Polarization: (-0.132335,0.676392,0.724556) *** FresnelRefraction *** -Track (trackID 1660, parentID 1) is processed with stopping code 2 +Track (trackID 1584, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.887137,0.0820447,-0.454156) - Old Polarization: (-0.306602,-0.630742,-0.712854) - New Momentum Direction: (0.779531,0.111352,-0.616386) - New Polarization: (-0.48604,-0.513185,-0.707394) - *** FresnelRefraction *** -Track (trackID 1659, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.50378,-0.549739,0.666328) + Old Polarization: (-0.484103,0.459182,0.744846) + New Momentum Direction: (0.50378,-0.549739,-0.666328) + New Polarization: (0.484103,-0.459182,0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.50378,-0.549739,-0.666328) + Old Polarization: (0.484103,-0.459182,0.744846) + New Momentum Direction: (0.50378,0.549739,-0.666328) + New Polarization: (-0.484103,-0.459182,-0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.50378,0.549739,-0.666328) + Old Polarization: (-0.484103,-0.459182,-0.744846) + New Momentum Direction: (-0.50378,0.549739,-0.666328) + New Polarization: (-0.484103,0.459182,0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.50378,0.549739,-0.666328) + Old Polarization: (-0.484103,0.459182,0.744846) + New Momentum Direction: (-0.50378,0.549739,0.666328) + New Polarization: (0.484103,-0.459182,0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.50378,0.549739,0.666328) + Old Polarization: (0.484103,-0.459182,0.744846) + New Momentum Direction: (-0.50378,-0.549739,0.666328) + New Polarization: (-0.484103,-0.459182,-0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.50378,-0.549739,0.666328) + Old Polarization: (-0.484103,-0.459182,-0.744846) + New Momentum Direction: (0.50378,-0.549739,0.666328) + New Polarization: (-0.484103,0.459182,0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.50378,-0.549739,0.666328) + Old Polarization: (-0.484103,0.459182,0.744846) + New Momentum Direction: (0.50378,-0.549739,-0.666328) + New Polarization: (0.484103,-0.459182,0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.50378,-0.549739,-0.666328) + Old Polarization: (0.484103,-0.459182,0.744846) + New Momentum Direction: (0.50378,0.549739,-0.666328) + New Polarization: (-0.484103,-0.459182,-0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.50378,0.549739,-0.666328) + Old Polarization: (-0.484103,-0.459182,-0.744846) + New Momentum Direction: (-0.50378,0.549739,-0.666328) + New Polarization: (-0.484103,0.459182,0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.50378,0.549739,-0.666328) + Old Polarization: (-0.484103,0.459182,0.744846) + New Momentum Direction: (-0.50378,0.549739,0.666328) + New Polarization: (0.484103,-0.459182,0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.50378,0.549739,0.666328) + Old Polarization: (0.484103,-0.459182,0.744846) + New Momentum Direction: (-0.50378,0.549739,-0.666328) + New Polarization: (-0.484103,0.459182,0.744846) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.50378,0.549739,-0.666328) + Old Polarization: (-0.484103,0.459182,0.744846) + New Momentum Direction: (-0.50378,-0.549739,-0.666328) + New Polarization: (0.484103,0.459182,-0.744846) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1583, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.737749,0.394694,-0.547671) - Old Polarization: (-0.47555,-0.271962,-0.836594) - New Momentum Direction: (0.420065,0.530581,-0.736226) - New Polarization: (-0.746435,-0.259387,-0.612824) + Old Momentum Direction: (0.987583,-0.111544,0.110626) + Old Polarization: (0.104354,0.992158,0.0687994) + New Momentum Direction: (0.97692,-0.151665,0.150418) + New Polarization: (-0.164668,-0.086178,0.982577) *** FresnelRefraction *** -Track (trackID 1658, parentID 1) is processed with stopping code 2 +Track (trackID 1582, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. +Scattering Photon! +Old Momentum Direction: (0.131357,-0.938211,0.320164) +Old Polarization: (-0.944222,-0.02003,0.328699) +New Polarization: (-0.886091,-0.461868,-0.0389974) +Polarization Change: (-0.886091,-0.461868,-0.0389974) +New Momentum Direction: (-0.372467,0.659441,0.652998) +Momentum Change: (-0.372467,0.659441,0.652998) Photon at Boundary! - Old Momentum Direction: (0.882612,0.0943627,-0.460535) - Old Polarization: (-0.31088,-0.617693,-0.722364) - New Momentum Direction: (0.770801,0.127879,-0.62411) - New Polarization: (-0.492603,-0.50159,-0.71116) - *** FresnelRefraction *** -Track (trackID 1657, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (-0.372467,0.659441,0.652998) + Old Polarization: (-0.886091,-0.461868,-0.0389974) + New Momentum Direction: (-0.372467,0.659441,-0.652998) + New Polarization: (0.886091,0.461868,-0.0389974) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1581, parentID 1) is processed with stopping code 2 ### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.350721,0.936476,-0.00286949) - Old Polarization: (-0.91859,0.343423,-0.195581) - New Momentum Direction: (0.477237,0.878766,-0.00390461) - New Polarization: (0.867672,-0.471906,-0.156367) - *** FresnelRefraction *** -Track (trackID 1656, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.932617,-0.0285129,-0.359739) -Old Polarization: (-0.25567,-0.755725,-0.60292) -New Polarization: (-0.00348073,-0.603801,-0.797128) -Polarization Change: (-0.00348073,-0.603801,-0.797128) -New Momentum Direction: (0.727033,0.545782,-0.416588) -Momentum Change: (0.727033,0.545782,-0.416588) + Old Momentum Direction: (0.403057,-0.72255,-0.561664) + Old Polarization: (-0.607884,0.247405,-0.754498) + New Momentum Direction: (0.403057,0.72255,-0.561664) + New Polarization: (0.731201,0.114821,0.672429) + *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (0.727033,0.545782,-0.416588) - Old Polarization: (-0.00348073,-0.603801,-0.797128) - New Momentum Direction: (0.359081,0.741887,-0.566273) - New Polarization: (-0.00713106,-0.60454,-0.796543) + Old Momentum Direction: (0.403057,0.72255,-0.561664) + Old Polarization: (0.731201,0.114821,0.672429) + New Momentum Direction: (0.403057,0.72255,0.561664) + New Polarization: (-0.731201,-0.114821,0.672429) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.403057,0.72255,0.561664) + Old Polarization: (-0.731201,-0.114821,0.672429) + New Momentum Direction: (-0.403057,0.72255,0.561664) + New Polarization: (-0.731201,0.114821,-0.672429) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.403057,0.72255,0.561664) + Old Polarization: (-0.731201,0.114821,-0.672429) + New Momentum Direction: (-0.546339,0.349128,0.76133) + New Polarization: (-0.83756,-0.230392,-0.495391) *** FresnelRefraction *** -Track (trackID 1655, parentID 1) is processed with stopping code 2 +Track (trackID 1580, parentID 1) is processed with stopping code 2 +### pop requested out of 26 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1579, parentID 1) is processed with stopping code 2 ### pop requested out of 25 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.736535,0.0539846,0.674241) - Old Polarization: (-0.479322,-0.661664,0.576585) - New Momentum Direction: (0.393349,0.0733781,0.916456) - New Polarization: (-0.764593,-0.527449,0.3704) + Old Momentum Direction: (0.339438,-0.78057,-0.524873) + Old Polarization: (-0.684899,0.177379,-0.706718) + New Momentum Direction: (0.460831,-0.529016,-0.712585) + New Polarization: (-0.659992,0.332519,-0.673678) *** FresnelRefraction *** -Track (trackID 1654, parentID 1) is processed with stopping code 2 +Track (trackID 1578, parentID 1) is processed with stopping code 2 ### pop requested out of 24 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1653, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.204109,-0.852708,0.480863) + Old Polarization: (-0.849335,0.0900091,0.520124) + New Momentum Direction: (0.277319,-0.704443,0.65334) + New Polarization: (-0.828733,0.168664,0.533624) + *** FresnelRefraction *** +Track (trackID 1577, parentID 1) is processed with stopping code 2 ### pop requested out of 23 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.576633,0.330157,0.747322) - Old Polarization: (-0.662248,-0.346794,0.664199) - New Momentum Direction: (0.781854,0.447658,0.433943) - New Polarization: (0.367009,0.232181,-0.900775) + Old Momentum Direction: (0.506763,-0.623964,-0.594862) + Old Polarization: (-0.480801,0.368178,-0.795786) + New Momentum Direction: (0.506763,0.623964,-0.594862) + New Polarization: (0.480801,0.368178,0.795786) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.506763,0.623964,-0.594862) + Old Polarization: (0.480801,0.368178,0.795786) + New Momentum Direction: (0.506763,0.623964,0.594862) + New Polarization: (-0.480801,-0.368178,0.795786) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.506763,0.623964,0.594862) + Old Polarization: (-0.480801,-0.368178,0.795786) + New Momentum Direction: (-0.506763,0.623964,0.594862) + New Polarization: (-0.480801,0.368178,-0.795786) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.506763,0.623964,0.594862) + Old Polarization: (-0.480801,0.368178,-0.795786) + New Momentum Direction: (-0.506763,-0.623964,0.594862) + New Polarization: (0.480801,0.368178,0.795786) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.506763,-0.623964,0.594862) + Old Polarization: (0.480801,0.368178,0.795786) + New Momentum Direction: (-0.506763,-0.623964,-0.594862) + New Polarization: (-0.480801,-0.368178,0.795786) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.506763,-0.623964,-0.594862) +Old Polarization: (-0.480801,-0.368178,0.795786) +New Polarization: (0.556054,0.295594,-0.776807) +Polarization Change: (0.556054,0.295594,-0.776807) +New Momentum Direction: (0.679592,-0.699766,0.220187) +Momentum Change: (0.679592,-0.699766,0.220187) + Photon at Boundary! + Old Momentum Direction: (0.679592,-0.699766,0.220187) + Old Polarization: (0.556054,0.295594,-0.776807) + New Momentum Direction: (0.679592,-0.699766,-0.220187) + New Polarization: (-0.556054,-0.295594,-0.776807) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.679592,-0.699766,-0.220187) + Old Polarization: (-0.556054,-0.295594,-0.776807) + New Momentum Direction: (0.679592,0.699766,-0.220187) + New Polarization: (0.123721,0.186521,0.97463) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.679592,0.699766,-0.220187) + Old Polarization: (0.123721,0.186521,0.97463) + New Momentum Direction: (0.108767,0.948233,-0.298369) + New Polarization: (-0.27571,0.317151,0.907414) *** FresnelRefraction *** -Track (trackID 1652, parentID 1) is processed with stopping code 2 +Track (trackID 1576, parentID 1) is processed with stopping code 2 ### pop requested out of 22 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.33929,0.928211,0.152666) - Old Polarization: (-0.938151,0.345788,-0.0174149) - New Momentum Direction: (0.458107,0.864667,0.206128) - New Polarization: (0.642453,-0.482335,0.595489) + Old Momentum Direction: (0.738734,-0.327324,0.589179) + Old Polarization: (-0.197384,0.730764,0.65347) + New Momentum Direction: (0.403422,-0.444372,0.799865) + New Polarization: (-0.37865,0.714721,0.588046) *** FresnelRefraction *** -Track (trackID 1651, parentID 1) is processed with stopping code 2 +Track (trackID 1575, parentID 1) is processed with stopping code 2 ### pop requested out of 21 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.940201,-0.0488723,-0.337096) -Old Polarization: (-0.247254,-0.778615,-0.576736) -New Polarization: (-0.593336,0.45159,0.666348) -Polarization Change: (-0.593336,0.45159,0.666348) -New Momentum Direction: (0.738708,0.634339,0.22787) -Momentum Change: (0.738708,0.634339,0.22787) + Photon at Boundary! + Old Momentum Direction: (0.448936,-0.603991,0.658523) + Old Polarization: (-0.550938,0.393118,0.736156) + New Momentum Direction: (0.448936,-0.603991,-0.658523) + New Polarization: (0.550938,-0.393118,0.736156) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.448936,-0.603991,-0.658523) + Old Polarization: (0.550938,-0.393118,0.736156) + New Momentum Direction: (0.448936,0.603991,-0.658523) + New Polarization: (-0.550938,-0.393118,-0.736156) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.448936,0.603991,-0.658523) + Old Polarization: (-0.550938,-0.393118,-0.736156) + New Momentum Direction: (-0.448936,0.603991,-0.658523) + New Polarization: (-0.550938,0.393118,0.736156) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1650, parentID 1) is processed with stopping code 2 +Track (trackID 1574, parentID 1) is processed with stopping code 2 ### pop requested out of 20 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.978587,-0.202969,0.0342216) - Old Polarization: (-0.195431,-0.968385,-0.155038) - New Momentum Direction: (0.960791,-0.273416,0.0460992) - New Polarization: (-0.269326,-0.959782,-0.079262) + Old Momentum Direction: (0.171317,-0.941444,-0.290403) + Old Polarization: (-0.90194,-0.0312641,-0.430728) + New Momentum Direction: (0.230232,-0.89145,-0.39027) + New Polarization: (-0.797829,0.056715,-0.600211) *** FresnelRefraction *** -Track (trackID 1649, parentID 1) is processed with stopping code 2 +Track (trackID 1573, parentID 1) is processed with stopping code 2 ### pop requested out of 19 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1648, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.301592,-0.818711,-0.488625) + Old Polarization: (-0.733433,0.128235,-0.667556) + New Momentum Direction: (0.408148,-0.629403,-0.661262) + New Polarization: (-0.70843,0.238494,-0.664265) + *** FresnelRefraction *** +Track (trackID 1572, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.785894,-0.00427196,0.618346) - Old Polarization: (-0.419325,-0.738613,0.527843) - New Momentum Direction: (0.555399,-0.00574502,0.831564) - New Polarization: (-0.660106,-0.611218,0.43666) + Old Momentum Direction: (0.875377,-0.253095,-0.411896) + Old Polarization: (-0.0302656,0.821646,-0.569194) + New Momentum Direction: (0.754642,-0.343506,-0.559034) + New Polarization: (-0.0569133,0.814528,-0.577326) *** FresnelRefraction *** -Track (trackID 1647, parentID 1) is processed with stopping code 2 +Track (trackID 1571, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1646, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.10743,-0.984264,-0.140297) + Old Polarization: (-0.968742,-0.0718935,-0.237425) + New Momentum Direction: (0.145786,-0.970824,-0.190386) + New Polarization: (-0.373346,0.124225,-0.919337) + *** FresnelRefraction *** +Track (trackID 1570, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.487259,0.794858,-0.361635) - Old Polarization: (-0.766612,0.191032,-0.613035) - New Momentum Direction: (0.658033,0.573128,-0.488381) - New Polarization: (-0.343542,-0.348644,-0.872024) + Old Momentum Direction: (0.0864579,-0.992964,0.0809129) + Old Polarization: (-0.995914,-0.0840165,0.0331132) + New Momentum Direction: (0.117195,-0.987034,0.109679) + New Polarization: (0.177885,0.129517,0.975491) *** FresnelRefraction *** -Track (trackID 1645, parentID 1) is processed with stopping code 2 +Track (trackID 1569, parentID 1) is processed with stopping code 2 ### pop requested out of 15 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.514376,0.455276,0.726733) - Old Polarization: (-0.735138,-0.202268,0.647039) - New Momentum Direction: (0.694782,0.614954,0.372974) - New Polarization: (0.11708,0.414959,-0.902275) + Old Momentum Direction: (0.137357,-0.931046,0.338062) + Old Polarization: (-0.936488,-0.0108825,0.350531) + New Momentum Direction: (0.185748,-0.869771,0.45716) + New Polarization: (-0.912345,0.0200971,0.408928) *** FresnelRefraction *** -Track (trackID 1644, parentID 1) is processed with stopping code 2 +Track (trackID 1568, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.344471,0.935835,0.0745114) - Old Polarization: (-0.930159,0.350967,-0.10783) - New Momentum Direction: (0.466199,0.878914,0.100842) - New Polarization: (0.842971,-0.475911,0.250816) + Old Momentum Direction: (0.921773,-0.201267,-0.331399) + Old Polarization: (0.0242567,0.882978,-0.468786) + New Momentum Direction: (0.849731,-0.273674,-0.450622) + New Polarization: (-0.0453292,0.813629,-0.579614) *** FresnelRefraction *** -Track (trackID 1643, parentID 1) is processed with stopping code 2 +Track (trackID 1567, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.358909,0.790154,0.496831) - Old Polarization: (-0.910095,0.178123,0.374163) - New Momentum Direction: (0.487858,0.553098,0.675334) - New Polarization: (-0.613791,-0.332747,0.715919) - *** FresnelRefraction *** -Track (trackID 1642, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.884243,-0.138238,0.446099) - Old Polarization: (-0.304453,-0.894949,0.32615) - New Momentum Direction: (0.778033,-0.185951,0.600072) - New Polarization: (-0.478988,-0.793641,0.375105) - *** FresnelRefraction *** -Track (trackID 1641, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.35284,0.935639,0.00916056) - Old Polarization: (-0.919321,0.348476,-0.182791) - New Momentum Direction: (0.478228,0.878148,0.0124159) - New Polarization: (0.874876,-0.475116,-0.0941138) - *** FresnelRefraction *** -Track (trackID 1640, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.44786,0.588476,0.67314) - Old Polarization: (-0.811267,-0.0490246,0.582618) - New Momentum Direction: (0.44786,0.588476,-0.67314) - New Polarization: (0.811267,0.0490246,0.582618) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.44786,0.588476,-0.67314) - Old Polarization: (0.811267,0.0490246,0.582618) - New Momentum Direction: (0.44786,-0.588476,-0.67314) - New Polarization: (-0.811267,0.0490246,-0.582618) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.44786,-0.588476,-0.67314) - Old Polarization: (-0.811267,0.0490246,-0.582618) - New Momentum Direction: (-0.44786,-0.588476,-0.67314) - New Polarization: (-0.811267,-0.0490246,0.582618) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.44786,-0.588476,-0.67314) - Old Polarization: (-0.811267,-0.0490246,0.582618) - New Momentum Direction: (-0.44786,-0.588476,0.67314) - New Polarization: (0.811267,0.0490246,0.582618) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.44786,-0.588476,0.67314) - Old Polarization: (0.811267,0.0490246,0.582618) - New Momentum Direction: (-0.44786,0.588476,0.67314) - New Polarization: (-0.811267,0.0490246,-0.582618) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.44786,0.588476,0.67314) - Old Polarization: (-0.811267,0.0490246,-0.582618) - New Momentum Direction: (0.44786,0.588476,0.67314) - New Polarization: (-0.811267,-0.0490246,0.582618) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.44786,0.588476,0.67314) - Old Polarization: (-0.811267,-0.0490246,0.582618) - New Momentum Direction: (0.44786,0.588476,-0.67314) - New Polarization: (0.811267,0.0490246,0.582618) - *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1639, parentID 1) is processed with stopping code 2 +Track (trackID 1566, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.129867,-0.932222,0.337783) + Old Polarization: (-0.938624,-0.00578996,0.344894) + New Momentum Direction: (0.176617,-0.870505,0.459378) + New Polarization: (-0.926298,0.01082,0.376637) + *** FresnelRefraction *** +Track (trackID 1565, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.137711,-0.959499,-0.245758) + Old Polarization: (-0.930079,-0.0399541,-0.36518) + New Momentum Direction: (0.187131,-0.923828,-0.333953) + New Polarization: (-0.769333,0.0735632,-0.634598) + *** FresnelRefraction *** +Track (trackID 1564, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.977689,-0.137073,-0.159173) + Old Polarization: (0.0925371,0.961312,-0.259452) + New Momentum Direction: (0.958358,-0.186347,-0.216391) + New Polarization: (-0.158811,0.281987,-0.946183) + *** FresnelRefraction *** +Track (trackID 1563, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.966696,-0.209134,0.14752) - Old Polarization: (-0.20806,-0.977849,-0.0228495) - New Momentum Direction: (0.938876,-0.281312,0.198433) - New Polarization: (-0.304148,-0.947843,0.0953313) + Old Momentum Direction: (0.088217,-0.99604,-0.0110914) + Old Polarization: (-0.993019,-0.0870633,-0.0795806) + New Momentum Direction: (0.119644,-0.992703,-0.0150426) + New Polarization: (0.954844,0.119205,-0.272144) *** FresnelRefraction *** -Track (trackID 1638, parentID 1) is processed with stopping code 2 +Track (trackID 1562, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.376906,0.923884,-0.0661797) - Old Polarization: (-0.897505,0.346613,-0.272662) - New Momentum Direction: (0.506971,0.857354,-0.0890174) - New Polarization: (0.742245,-0.48673,-0.460615) - *** FresnelRefraction *** -Track (trackID 1637, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1561, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.68297,0.15184,0.71449) - Old Polarization: (-0.539943,-0.553835,0.633821) - New Momentum Direction: (0.921982,0.204978,0.328531) - New Polarization: (0.370589,-0.221015,-0.902118) + Old Momentum Direction: (0.794406,-0.344901,-0.499963) + Old Polarization: (-0.123442,0.71428,-0.688888) + New Momentum Direction: (0.574711,-0.464698,-0.673619) + New Polarization: (-0.230296,0.698033,-0.678022) *** FresnelRefraction *** -Track (trackID 1636, parentID 1) is processed with stopping code 2 +Track (trackID 1560, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.882971,0.0897482,-0.460768) - Old Polarization: (-0.312002,-0.621178,-0.718883) - New Momentum Direction: (0.770217,0.121935,-0.626018) - New Polarization: (-0.495495,-0.503604,-0.70772) + Old Momentum Direction: (0.866144,-0.211901,0.452651) + Old Polarization: (-0.0413328,0.872202,0.487396) + New Momentum Direction: (0.734889,-0.287535,0.614216) + New Polarization: (-0.0777696,0.86397,0.497501) *** FresnelRefraction *** -Track (trackID 1635, parentID 1) is processed with stopping code 2 +Track (trackID 1559, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.964464,-0.211717,0.158069) - Old Polarization: (-0.212691,-0.977058,-0.0109284) - New Momentum Direction: (0.934385,-0.285476,0.213137) - New Polarization: (-0.31295,-0.943597,0.108107) + Old Momentum Direction: (0.212092,-0.845805,0.489521) + Old Polarization: (-0.840862,0.0972997,0.532431) + New Momentum Direction: (0.287802,-0.689872,0.664264) + New Polarization: (-0.819239,0.181884,0.543843) *** FresnelRefraction *** -Track (trackID 1634, parentID 1) is processed with stopping code 2 +Track (trackID 1558, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.397527,0.904755,-0.15294) - Old Polarization: (-0.871311,0.319932,-0.372103) - New Momentum Direction: (0.536259,0.81845,-0.206315) - New Polarization: (0.448871,-0.483537,-0.75147) + Old Momentum Direction: (0.788345,-0.286236,0.544593) + Old Polarization: (-0.13359,0.78442,0.605672) + New Momentum Direction: (0.55519,-0.386958,0.736225) + New Polarization: (-0.251151,0.765861,0.591928) *** FresnelRefraction *** -Track (trackID 1633, parentID 1) is processed with stopping code 2 +Track (trackID 1557, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.431716,0.86935,-0.240523) - Old Polarization: (-0.833051,0.282019,-0.475911) - New Momentum Direction: (0.581045,0.746721,-0.32372) - New Polarization: (0.0991635,-0.459744,-0.882498) - *** FresnelRefraction *** -Track (trackID 1632, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1556, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.926929,-0.191193,0.322875) - Old Polarization: (-0.258186,-0.949359,0.179044) - New Momentum Direction: (0.861792,-0.258463,0.436477) - New Polarization: (-0.40159,-0.873313,0.275771) + Old Momentum Direction: (0.816441,-0.318264,-0.4818) + Old Polarization: (-0.0993068,0.744565,-0.660122) + New Momentum Direction: (0.624571,-0.43045,-0.651631) + New Polarization: (-0.186366,0.728134,-0.659613) *** FresnelRefraction *** +Track (trackID 1555, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 33 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 34 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.175773,0.959607,0.219676) + Old Polarization: (0.747016,-0.275353,0.605101) + New Momentum Direction: (0.236341,0.925688,0.295373) + New Polarization: (0.6912,-0.373817,0.618469) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.236341,0.925688,0.295373) + Old Polarization: (0.6912,-0.373817,0.618469) + New Momentum Direction: (0.175773,0.688457,0.703656) + New Polarization: (0.890144,0.194105,-0.41227) + *** FresnelRefraction *** + +** Photon absorbed! ** Track (trackID 1631, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 62 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 63 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.216436,0.785445,0.579855) - Old Polarization: (-0.962986,0.0740104,0.259192) - New Momentum Direction: (0.29445,0.539439,0.788863) - New Polarization: (-0.890855,-0.143874,0.430903) - *** FresnelRefraction *** -Track (trackID 1773, parentID 1) is processed with stopping code 2 -### pop requested out of 62 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.640823,0.658757,-0.394189) - Old Polarization: (-0.466869,-0.0731909,-0.881292) - New Momentum Direction: (0.640823,-0.658757,-0.394189) - New Polarization: (0.466869,-0.0731909,0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.640823,-0.658757,-0.394189) - Old Polarization: (0.466869,-0.0731909,0.881292) - New Momentum Direction: (-0.640823,-0.658757,-0.394189) - New Polarization: (0.466869,0.0731909,-0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.640823,-0.658757,-0.394189) - Old Polarization: (0.466869,0.0731909,-0.881292) - New Momentum Direction: (-0.640823,-0.658757,0.394189) - New Polarization: (-0.466869,-0.0731909,-0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.640823,-0.658757,0.394189) - Old Polarization: (-0.466869,-0.0731909,-0.881292) - New Momentum Direction: (-0.640823,0.658757,0.394189) - New Polarization: (0.466869,-0.0731909,0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.640823,0.658757,0.394189) - Old Polarization: (0.466869,-0.0731909,0.881292) - New Momentum Direction: (0.640823,0.658757,0.394189) - New Polarization: (0.466869,0.0731909,-0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.640823,0.658757,0.394189) - Old Polarization: (0.466869,0.0731909,-0.881292) - New Momentum Direction: (0.640823,-0.658757,0.394189) - New Polarization: (-0.466869,0.0731909,0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.640823,-0.658757,0.394189) - Old Polarization: (-0.466869,0.0731909,0.881292) - New Momentum Direction: (0.640823,-0.658757,-0.394189) - New Polarization: (0.466869,-0.0731909,0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.640823,-0.658757,-0.394189) - Old Polarization: (0.466869,-0.0731909,0.881292) - New Momentum Direction: (-0.640823,-0.658757,-0.394189) - New Polarization: (0.466869,0.0731909,-0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.640823,-0.658757,-0.394189) - Old Polarization: (0.466869,0.0731909,-0.881292) - New Momentum Direction: (-0.640823,0.658757,-0.394189) - New Polarization: (-0.466869,0.0731909,0.881292) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.640823,0.658757,-0.394189) - Old Polarization: (-0.466869,0.0731909,0.881292) - New Momentum Direction: (0.640823,0.658757,-0.394189) - New Polarization: (-0.466869,-0.0731909,-0.881292) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1772, parentID 1) is processed with stopping code 2 -### pop requested out of 61 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.785139,-0.0381152,0.618146) - Old Polarization: (-0.292869,-0.902303,0.316351) - New Momentum Direction: (0.552316,-0.0513049,0.832054) - New Polarization: (-0.504622,-0.815044,0.284711) - *** FresnelRefraction *** -Track (trackID 1771, parentID 1) is processed with stopping code 2 -### pop requested out of 60 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.965723,0.111518,-0.234398) - Old Polarization: (-0.0859287,-0.714751,-0.69408) - New Momentum Direction: (0.935752,0.151508,-0.318453) - New Polarization: (-0.152324,-0.640787,-0.752456) - *** FresnelRefraction *** -Track (trackID 1770, parentID 1) is processed with stopping code 2 -### pop requested out of 59 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1769, parentID 1) is processed with stopping code 2 -### pop requested out of 58 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.938384,-0.11718,0.325123) - Old Polarization: (-0.1116,-0.993107,-0.035827) - New Momentum Direction: (0.884586,-0.158133,0.43875) - New Polarization: (-0.196474,-0.979563,0.0430709) - *** FresnelRefraction *** -Track (trackID 1768, parentID 1) is processed with stopping code 2 -### pop requested out of 57 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.218162,0.819645,0.529705) - Old Polarization: (-0.970218,0.123611,0.208318) - New Momentum Direction: (0.294286,0.634691,0.714537) - New Polarization: (-0.811816,-0.228524,0.537338) - *** FresnelRefraction *** -Track (trackID 1767, parentID 1) is processed with stopping code 2 -### pop requested out of 56 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.940676,0.178659,-0.28846) - Old Polarization: (-0.112393,-0.638086,-0.761718) - New Momentum Direction: (0.88814,0.241985,-0.390705) - New Polarization: (-0.198746,-0.564302,-0.801288) - *** FresnelRefraction *** -Track (trackID 1766, parentID 1) is processed with stopping code 2 -### pop requested out of 55 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1765, parentID 1) is processed with stopping code 2 -### pop requested out of 54 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.5673,0.743727,-0.353611) - Old Polarization: (-0.552998,0.025863,-0.832781) - New Momentum Direction: (0.771264,0.417175,-0.480747) - New Polarization: (-0.507836,-0.0520384,-0.859881) - *** FresnelRefraction *** -Track (trackID 1764, parentID 1) is processed with stopping code 2 -### pop requested out of 53 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.466474,0.319592,0.824781) - Old Polarization: (-0.675232,-0.473658,0.565429) - New Momentum Direction: (0.62743,0.429867,0.649265) - New Polarization: (0.539299,0.361561,-0.760546) - *** FresnelRefraction *** -Track (trackID 1763, parentID 1) is processed with stopping code 2 -### pop requested out of 52 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.454357,0.32985,0.827501) - Old Polarization: (-0.68794,-0.460232,0.561181) - New Momentum Direction: (0.613696,0.445526,0.651831) - New Polarization: (0.514031,0.401186,-0.75817) - *** FresnelRefraction *** -Track (trackID 1762, parentID 1) is processed with stopping code 2 -### pop requested out of 51 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.27078,0.66056,0.700242) - Old Polarization: (-0.908358,-0.0654888,0.413035) - New Momentum Direction: (0.364927,0.890229,0.272617) - New Polarization: (-0.549638,0.442334,-0.708688) - *** FresnelRefraction *** -Track (trackID 1761, parentID 1) is processed with stopping code 2 -### pop requested out of 50 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.981613,-0.105874,0.158828) - Old Polarization: (-0.0669238,-0.970151,-0.233086) - New Momentum Direction: (0.965813,-0.14379,0.215708) - New Polarization: (-0.117723,-0.984601,-0.129237) - *** FresnelRefraction *** -Track (trackID 1760, parentID 1) is processed with stopping code 2 -### pop requested out of 49 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.252372,0.682053,0.686376) - Old Polarization: (-0.921829,-0.0461831,0.384837) - New Momentum Direction: (0.252372,0.682053,-0.686376) - New Polarization: (0.749275,-0.586593,-0.3074) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.252372,0.682053,-0.686376) - Old Polarization: (0.749275,-0.586593,-0.3074) - New Momentum Direction: (0.34304,0.109074,-0.932967) - New Polarization: (0.411669,-0.910224,0.0449505) - *** FresnelRefraction *** -Track (trackID 1759, parentID 1) is processed with stopping code 2 -### pop requested out of 48 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1758, parentID 1) is processed with stopping code 2 -### pop requested out of 47 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.364272,0.922684,-0.12633) - Old Polarization: (-0.790243,0.234468,-0.566163) - New Momentum Direction: (0.495549,0.851408,-0.171857) - New Polarization: (0.358411,-0.38067,-0.852427) - *** FresnelRefraction *** -Track (trackID 1757, parentID 1) is processed with stopping code 2 -### pop requested out of 46 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1756, parentID 1) is processed with stopping code 2 -### pop requested out of 45 stacked tracks. -Scattering Photon! -Old Momentum Direction: (0.297341,0.954569,0.0196649) -Old Polarization: (-0.873309,0.280239,-0.398495) -New Polarization: (-0.851431,0.484658,-0.20043) -Polarization Change: (-0.851431,0.484658,-0.20043) -New Momentum Direction: (0.200218,0.653583,0.729892) -Momentum Change: (0.200218,0.653583,0.729892) - Photon at Boundary! - Old Momentum Direction: (0.200218,0.653583,0.729892) - Old Polarization: (-0.851431,0.484658,-0.20043) - New Momentum Direction: (0.200218,-0.653583,0.729892) - New Polarization: (0.851431,0.484658,0.20043) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.200218,-0.653583,0.729892) - Old Polarization: (0.851431,0.484658,0.20043) - New Momentum Direction: (0.270839,-0.884115,0.380772) - New Polarization: (0.916259,0.115485,-0.38358) - *** FresnelRefraction *** -Track (trackID 1755, parentID 1) is processed with stopping code 2 -### pop requested out of 44 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.717411,0.0216554,0.696314) - Old Polarization: (-0.373851,-0.831435,0.411036) - New Momentum Direction: (0.34909,0.0291294,0.936636) - New Polarization: (-0.644377,-0.718242,0.262501) - *** FresnelRefraction *** -Track (trackID 1754, parentID 1) is processed with stopping code 2 -### pop requested out of 43 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1753, parentID 1) is processed with stopping code 2 -### pop requested out of 42 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.716713,0.558932,-0.417034) - Old Polarization: (-0.378328,-0.190724,-0.90581) - New Momentum Direction: (0.315996,0.760419,-0.56737) - New Polarization: (-0.667256,-0.247007,-0.702679) - *** FresnelRefraction *** -Track (trackID 1752, parentID 1) is processed with stopping code 2 -### pop requested out of 41 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.269459,0.959547,0.0816191) - Old Polarization: (-0.903309,0.281222,-0.323955) - New Momentum Direction: (0.365676,0.924128,0.110764) - New Polarization: (0.894132,-0.381845,0.233927) - *** FresnelRefraction *** -Track (trackID 1751, parentID 1) is processed with stopping code 2 -### pop requested out of 40 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.440155,0.349719,0.827019) - Old Polarization: (-0.704545,-0.436489,0.559549) - New Momentum Direction: (0.594869,0.472645,0.650183) - New Polarization: (0.464874,0.457585,-0.757963) - *** FresnelRefraction *** -Track (trackID 1750, parentID 1) is processed with stopping code 2 -### pop requested out of 39 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.751615,0.511677,-0.416246) - Old Polarization: (-0.336509,-0.245298,-0.90917) - New Momentum Direction: (-0.751615,0.511677,-0.416246) - New Polarization: (-0.106569,0.528564,0.842178) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.751615,0.511677,-0.416246) - Old Polarization: (-0.106569,0.528564,0.842178) - New Momentum Direction: (-0.751615,-0.511677,-0.416246) - New Polarization: (0.106569,0.528564,-0.842178) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.751615,-0.511677,-0.416246) - Old Polarization: (0.106569,0.528564,-0.842178) - New Momentum Direction: (-0.751615,-0.511677,0.416246) - New Polarization: (-0.106569,-0.528564,-0.842178) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.751615,-0.511677,0.416246) - Old Polarization: (-0.106569,-0.528564,-0.842178) - New Momentum Direction: (0.751615,-0.511677,0.416246) - New Polarization: (0.0297747,0.656733,0.753535) - *** FresnelReflection *** - -** Photon absorbed! ** -Track (trackID 1749, parentID 1) is processed with stopping code 2 -### pop requested out of 38 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.208623,0.921397,0.327879) - Old Polarization: (-0.97192,0.232642,-0.0353504) - New Momentum Direction: (0.283873,0.848748,0.446143) - New Polarization: (-0.26092,-0.379352,0.887701) - *** FresnelRefraction *** -Track (trackID 1748, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.232076,0.778014,0.583811) - Old Polarization: (-0.957724,0.0778608,0.276953) - New Momentum Direction: (0.232076,-0.778014,0.583811) - New Polarization: (0.924865,-0.00939989,-0.380179) - *** FresnelReflection *** - -** Photon absorbed! ** -Track (trackID 1747, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1746, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1745, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.220359,0.938093,0.267252) - Old Polarization: (-0.960917,0.255846,-0.105746) - New Momentum Direction: (0.299076,0.882603,0.362721) - New Polarization: (0.0394617,-0.391234,0.919445) - *** FresnelRefraction *** -Track (trackID 1744, parentID 1) is processed with stopping code 2 ### pop requested out of 33 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.994091,0.00973269,-0.108112) - Old Polarization: (-0.0513197,-0.835493,-0.547099) - New Momentum Direction: (0.989093,0.0132066,-0.1467) - New Polarization: (-0.086736,-0.752754,-0.652563) + Old Momentum Direction: (0.0363095,0.933144,0.357664) + Old Polarization: (0.555767,-0.316303,0.768814) + New Momentum Direction: (0.0492811,0.87288,0.485439) + New Polarization: (0.446718,-0.45397,0.770944) *** FresnelRefraction *** -Track (trackID 1743, parentID 1) is processed with stopping code 2 +Track (trackID 1630, parentID 1) is processed with stopping code 2 ### pop requested out of 32 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.221555,0.941916,0.252405) - Old Polarization: (-0.958123,0.258424,-0.12336) - New Momentum Direction: (0.301093,0.889764,0.343019) - New Polarization: (0.112826,-0.390425,0.913695) + Old Momentum Direction: (-0.00251128,0.697859,-0.71623) + Old Polarization: (0.507835,-0.616111,-0.602089) + New Momentum Direction: (-0.00340222,0.945445,-0.325765) + New Polarization: (0.359285,0.30517,0.881921) *** FresnelRefraction *** -Track (trackID 1742, parentID 1) is processed with stopping code 2 +Track (trackID 1629, parentID 1) is processed with stopping code 2 ### pop requested out of 31 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.798115,0.440884,-0.410651) - Old Polarization: (-0.282254,-0.328562,-0.901321) - New Momentum Direction: (0.574816,0.598779,-0.557719) - New Polarization: (-0.493734,-0.289729,-0.819929) + Old Momentum Direction: (-0.768176,0.621522,0.153677) + Old Polarization: (-0.475503,-0.714573,0.513111) + New Momentum Direction: (-0.500783,0.840268,0.207764) + New Polarization: (0.733631,0.284658,0.617053) *** FresnelRefraction *** -Track (trackID 1741, parentID 1) is processed with stopping code 2 +Track (trackID 1628, parentID 1) is processed with stopping code 2 ### pop requested out of 30 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.233611,0.759586,0.607005) - Old Polarization: (-0.952201,0.0523503,0.300952) - New Momentum Direction: (0.315006,0.480447,0.8185) - New Polarization: (-0.907056,-0.10141,0.408613) + Old Momentum Direction: (-0.642534,0.697533,0.317171) + Old Polarization: (-0.312918,-0.616694,0.722337) + New Momentum Direction: (-0.869283,0.245399,0.429099) + New Polarization: (-0.0490478,-0.906605,0.419119) *** FresnelRefraction *** -Track (trackID 1740, parentID 1) is processed with stopping code 2 +Track (trackID 1627, parentID 1) is processed with stopping code 2 ### pop requested out of 29 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.393642,0.422096,0.816628) - Old Polarization: (-0.759857,-0.350559,0.547472) - New Momentum Direction: (0.531927,0.570377,0.625879) - New Polarization: (0.246371,0.6029,-0.758823) + Old Momentum Direction: (-0.410028,0.799545,0.438869) + Old Polarization: (-0.0129944,-0.486249,0.873724) + New Momentum Direction: (-0.556087,0.580089,0.595201) + New Polarization: (-0.0211434,-0.725782,0.6876) *** FresnelRefraction *** -Track (trackID 1739, parentID 1) is processed with stopping code 2 -### pop requested out of 28 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.322019,0.549116,0.771217) - Old Polarization: (-0.845684,-0.199352,0.495053) - New Momentum Direction: (0.434735,0.741324,0.511316) - New Polarization: (-0.19826,0.632632,-0.748645) - *** FresnelRefraction *** -Track (trackID 1738, parentID 1) is processed with stopping code 2 -### pop requested out of 27 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.263438,0.665083,0.698759) - Old Polarization: (-0.912368,-0.0635053,0.404415) - New Momentum Direction: (0.356766,0.9007,0.247907) - New Polarization: (-0.567609,0.419766,-0.708249) - *** FresnelRefraction *** -Track (trackID 1737, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.989077,-0.0906586,0.11622) - Old Polarization: (-0.0543763,-0.957288,-0.283978) - New Momentum Direction: (0.9799,-0.122697,0.157292) - New Polarization: (-0.0945032,-0.979907,-0.175647) - *** FresnelRefraction *** -Track (trackID 1736, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.354232,0.929375,-0.103832) - Old Polarization: (-0.803656,0.245763,-0.541976) - New Momentum Direction: (0.480717,0.86548,-0.140908) - New Polarization: (0.465216,-0.387937,-0.795663) - *** FresnelRefraction *** -Track (trackID 1735, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.993443,0.0212475,-0.112341) - Old Polarization: (-0.04533,-0.828855,-0.557624) - New Momentum Direction: (0.98804,0.0286562,-0.151512) - New Polarization: (-0.077656,-0.75641,-0.649472) - *** FresnelRefraction *** -Track (trackID 1734, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.999168,-0.0388942,-0.0122496) - Old Polarization: (-0.0403342,-0.898477,-0.437163) - New Momentum Direction: (0.998482,-0.0525411,-0.0165477) - New Polarization: (-0.0547547,-0.913787,-0.402486) - *** FresnelRefraction *** -Track (trackID 1733, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.244636,0.955124,0.167006) - Old Polarization: (-0.93405,0.278362,-0.223752) - New Momentum Direction: (0.331476,0.915924,0.226289) - New Polarization: (0.585577,-0.387791,0.711841) - *** FresnelRefraction *** -Track (trackID 1732, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.29339,0.593429,0.749509) - Old Polarization: (-0.874895,-0.149341,0.460713) - New Momentum Direction: (0.398282,0.805593,0.438624) - New Polarization: (-0.355981,0.576461,-0.735507) - *** FresnelRefraction *** -Track (trackID 1731, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.304179,0.580102,0.755617) - Old Polarization: (-0.865405,-0.163276,0.473725) - New Momentum Direction: (0.304179,0.580102,-0.755617) - New Polarization: (0.769697,-0.617024,-0.163854) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.304179,0.580102,-0.755617) - Old Polarization: (0.769697,-0.617024,-0.163854) - New Momentum Direction: (0.304179,-0.580102,-0.755617) - New Polarization: (-0.769697,-0.617024,0.163854) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.304179,-0.580102,-0.755617) - Old Polarization: (-0.769697,-0.617024,0.163854) - New Momentum Direction: (-0.304179,-0.580102,-0.755617) - New Polarization: (-0.769697,0.617024,-0.163854) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.304179,-0.580102,-0.755617) - Old Polarization: (-0.769697,0.617024,-0.163854) - New Momentum Direction: (-0.304179,-0.580102,0.755617) - New Polarization: (0.906162,-0.420874,0.0416683) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.304179,-0.580102,0.755617) - Old Polarization: (0.906162,-0.420874,0.0416683) - New Momentum Direction: (-0.304179,0.580102,0.755617) - New Polarization: (-0.906162,-0.420874,-0.0416683) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1730, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.947237,0.163233,-0.275856) - Old Polarization: (-0.10445,-0.656448,-0.747105) - New Momentum Direction: (0.900884,0.221048,-0.373559) - New Polarization: (-0.184727,-0.583543,-0.790793) - *** FresnelRefraction *** -Track (trackID 1729, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1728, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.923203,-0.123798,0.363828) - Old Polarization: (-0.135742,-0.990717,0.00733417) - New Momentum Direction: (0.852881,-0.168185,0.494274) - New Polarization: (-0.240552,-0.966809,0.0861053) - *** FresnelRefraction *** -Track (trackID 1727, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.840266,0.375588,-0.391007) - Old Polarization: (-0.230302,-0.40563,-0.884548) - New Momentum Direction: (0.679574,0.508202,-0.529066) - New Polarization: (-0.402112,-0.34515,-0.848043) - *** FresnelRefraction *** -Track (trackID 1726, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.869469,-0.106934,0.482275) - Old Polarization: (-0.199729,-0.96903,0.145219) - New Momentum Direction: (0.740565,-0.145466,0.656051) - New Polarization: (-0.352537,-0.915253,0.195014) - *** FresnelRefraction *** -Track (trackID 1725, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.960904,-0.122109,0.248501) - Old Polarization: (-0.0923836,-0.987463,-0.127993) - New Momentum Direction: (0.926427,-0.166031,0.337886) - New Polarization: (-0.163996,-0.985848,-0.0347787) - *** FresnelRefraction *** -Track (trackID 1724, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.880737,-0.10153,0.462594) - Old Polarization: (-0.179854,-0.975281,0.128372) - New Momentum Direction: (0.769392,-0.136939,0.623926) - New Polarization: (-0.314174,-0.931568,0.182962) - *** FresnelRefraction *** -Track (trackID 1723, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.66292,0.634046,-0.398148) - Old Polarization: (-0.440335,-0.0999034,-0.892258) - New Momentum Direction: (-0.66292,0.634046,-0.398148) - New Polarization: (-0.440335,0.0999034,0.892258) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66292,0.634046,-0.398148) - Old Polarization: (-0.440335,0.0999034,0.892258) - New Momentum Direction: (-0.66292,-0.634046,-0.398148) - New Polarization: (0.440335,0.0999034,-0.892258) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.66292,-0.634046,-0.398148) - Old Polarization: (0.440335,0.0999034,-0.892258) - New Momentum Direction: (-0.66292,-0.634046,0.398148) - New Polarization: (-0.440335,-0.0999034,-0.892258) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1722, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.926805,-0.120569,0.355661) - Old Polarization: (-0.128653,-0.991689,-0.000931147) - New Momentum Direction: (0.861011,-0.163284,0.481662) - New Polarization: (-0.227202,-0.970796,0.0770417) - *** FresnelRefraction *** -Track (trackID 1721, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.982022,0.064428,-0.177432) - Old Polarization: (-0.0632582,-0.773281,-0.6309) - New Momentum Direction: (0.966782,0.0872399,-0.240255) - New Polarization: (-0.111121,-0.703027,-0.702428) - *** FresnelRefraction *** -Track (trackID 1720, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.982051,-0.0947798,0.163073) - Old Polarization: (-0.0556948,-0.971741,-0.229384) - New Momentum Direction: (0.9673,-0.127452,0.219287) - New Polarization: (-0.0975236,-0.985006,-0.142307) - *** FresnelRefraction *** -Track (trackID 1719, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.614289,0.118145,0.780186) - Old Polarization: (-0.497888,-0.709028,0.499387) - New Momentum Direction: (0.832543,0.160121,0.530314) - New Polarization: (0.548851,-0.36814,-0.75049) - *** FresnelRefraction *** -Track (trackID 1718, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.548955,0.763762,-0.339581) - Old Polarization: (-0.574531,0.0497051,-0.816972) - New Momentum Direction: (0.746021,0.480087,-0.461485) - New Polarization: (-0.477133,-0.0980724,-0.873342) - *** FresnelRefraction *** -Track (trackID 1717, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.967204,-0.11468,0.226636) - Old Polarization: (-0.0808385,-0.984858,-0.153359) - New Momentum Direction: (0.938986,-0.155296,0.306901) - New Polarization: (-0.142874,-0.987754,-0.0626811) - *** FresnelRefraction *** -Track (trackID 1716, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.561222,0.752807,-0.343964) - Old Polarization: (-0.560535,0.0399417,-0.827167) - New Momentum Direction: (0.760199,0.452793,-0.465914) - New Polarization: (-0.486374,-0.0788264,-0.870188) - *** FresnelRefraction *** -Track (trackID 1715, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.766051,0.494575,-0.410562) - Old Polarization: (-0.317383,-0.264397,-0.910693) - New Momentum Direction: (0.496108,0.668067,-0.554584) - New Polarization: (-0.549568,-0.252886,-0.796256) - *** FresnelRefraction *** -Track (trackID 1714, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.418329,0.387729,0.821381) - Old Polarization: (-0.731912,-0.391614,0.557622) - New Momentum Direction: (0.563847,0.522603,0.639502) - New Polarization: (0.360221,0.54117,-0.759852) - *** FresnelRefraction *** -Track (trackID 1713, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.429824,0.878011,-0.21059) - Old Polarization: (-0.716412,0.189681,-0.671397) - New Momentum Direction: (0.58137,0.762152,-0.284839) - New Polarization: (-0.027356,-0.331572,-0.943033) - *** FresnelRefraction *** -Track (trackID 1712, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 37 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 38 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.251738,0.640938,0.725139) - Old Polarization: (-0.947403,0.316208,0.0494075) - New Momentum Direction: (0.341907,0.870514,0.353984) - New Polarization: (-0.911397,0.398977,-0.100858) - *** FresnelRefraction *** -Track (trackID 1810, parentID 1) is processed with stopping code 2 -### pop requested out of 37 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.234996,0.433395,0.870026) - Old Polarization: (-0.97106,0.0654049,0.229705) - New Momentum Direction: (0.318266,0.586966,0.744431) - New Polarization: (-0.500775,0.770857,-0.393706) - *** FresnelRefraction *** -Track (trackID 1809, parentID 1) is processed with stopping code 2 -### pop requested out of 36 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.379906,0.817481,0.432893) - Old Polarization: (-0.790908,0.529758,-0.306302) - New Momentum Direction: (0.516361,0.622239,0.58838) - New Polarization: (0.176236,-0.749567,0.638037) - *** FresnelRefraction *** -Track (trackID 1808, parentID 1) is processed with stopping code 2 -### pop requested out of 35 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.317831,0.0659686,0.94585) - Old Polarization: (-0.867015,-0.383541,0.31809) - New Momentum Direction: (0.431652,0.0895932,0.89758) - New Polarization: (0.899174,0.0365205,-0.436064) - *** FresnelRefraction *** -Track (trackID 1807, parentID 1) is processed with stopping code 2 -### pop requested out of 34 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.998724,0.0151527,-0.0481698) - Old Polarization: (-0.0363482,-0.446461,-0.894064) - New Momentum Direction: (0.997653,0.0205449,-0.0653118) - New Polarization: (-0.0557965,-0.30887,-0.949466) - *** FresnelRefraction *** -Track (trackID 1806, parentID 1) is processed with stopping code 2 -### pop requested out of 33 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.444859,0.831526,0.332664) - Old Polarization: (-0.713901,0.553521,-0.428906) - New Momentum Direction: (0.602438,0.658876,0.450501) - New Polarization: (0.49075,-0.750895,0.441951) - *** FresnelRefraction *** -Track (trackID 1805, parentID 1) is processed with stopping code 2 -### pop requested out of 32 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.643264,0.762494,0.0693899) - Old Polarization: (-0.470857,0.465432,-0.749444) - New Momentum Direction: (0.872975,0.478589,0.0941691) - New Polarization: (0.455745,-0.731524,-0.507118) - *** FresnelRefraction *** -Track (trackID 1804, parentID 1) is processed with stopping code 2 -### pop requested out of 31 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.490113,-0.202894,0.847717) - Old Polarization: (-0.660397,-0.721186,0.209203) - New Momentum Direction: (0.660448,-0.273408,0.699326) - New Polarization: (0.00168327,-0.93081,-0.365499) - *** FresnelRefraction *** -Track (trackID 1803, parentID 1) is processed with stopping code 2 -### pop requested out of 30 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1802, parentID 1) is processed with stopping code 2 -### pop requested out of 29 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.622777,-0.32911,0.709813) - Old Polarization: (-0.495812,-0.867816,0.0326464) - New Momentum Direction: (0.622777,-0.32911,-0.709813) - New Polarization: (0.451895,0.891908,-0.0170559) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.622777,-0.32911,-0.709813) - Old Polarization: (0.451895,0.891908,-0.0170559) - New Momentum Direction: (-0.622777,-0.32911,-0.709813) - New Polarization: (0.451895,-0.891908,0.0170559) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.622777,-0.32911,-0.709813) - Old Polarization: (0.451895,-0.891908,0.0170559) - New Momentum Direction: (-0.622777,0.32911,-0.709813) - New Polarization: (-0.451895,-0.891908,-0.0170559) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.622777,0.32911,-0.709813) - Old Polarization: (-0.451895,-0.891908,-0.0170559) - New Momentum Direction: (-0.622777,0.32911,0.709813) - New Polarization: (0.475125,0.879873,0.00890567) - *** FresnelReflection *** - -** Photon absorbed! ** -Track (trackID 1801, parentID 1) is processed with stopping code 2 +Track (trackID 1626, parentID 1) is processed with stopping code 2 ### pop requested out of 28 stacked tracks. ** Photon absorbed! ** -Track (trackID 1800, parentID 1) is processed with stopping code 2 +Track (trackID 1625, parentID 1) is processed with stopping code 2 ### pop requested out of 27 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.974857,0.196171,-0.105693) - Old Polarization: (-0.0599978,-0.225725,-0.972342) - New Momentum Direction: (0.953743,0.264655,-0.142591) - New Polarization: (-0.106395,-0.146461,-0.983478) + Old Momentum Direction: (0.339398,0.919659,-0.197576) + Old Polarization: (0.940599,-0.333832,0.0618804) + New Momentum Direction: (0.460909,0.845915,-0.268313) + New Polarization: (0.873193,-0.486253,-0.0330441) *** FresnelRefraction *** -Track (trackID 1799, parentID 1) is processed with stopping code 2 +Track (trackID 1624, parentID 1) is processed with stopping code 2 ### pop requested out of 26 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.236741,0.394918,0.88769) - Old Polarization: (-0.968024,0.0178536,0.250222) - New Momentum Direction: (0.320876,0.535269,0.781361) - New Polarization: (-0.371431,0.830017,-0.416067) - *** FresnelRefraction *** -Track (trackID 1798, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.306033,0.749515,0.587002) - Old Polarization: (-0.88392,0.45271,-0.117213) - New Momentum Direction: (0.414508,0.442774,0.795069) - New Polarization: (-0.356923,-0.724562,0.58959) - *** FresnelRefraction *** -Track (trackID 1797, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.796605,0.600642,-0.0681815) - Old Polarization: (-0.282708,0.270478,-0.920281) - New Momentum Direction: (0.574317,0.813409,-0.0923336) - New Polarization: (-0.492168,0.25295,-0.832938) - *** FresnelRefraction *** -Track (trackID 1796, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.986682,0.130917,-0.0965391) - Old Polarization: (-0.0526401,-0.304566,-0.951035) - New Momentum Direction: (0.975306,0.177754,-0.131077) - New Polarization: (-0.0931556,-0.207023,-0.973891) - *** FresnelRefraction *** -Track (trackID 1795, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. ** Photon absorbed! ** -Track (trackID 1794, parentID 1) is processed with stopping code 2 +Track (trackID 1623, parentID 1) is processed with stopping code 2 +### pop requested out of 25 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1622, parentID 1) is processed with stopping code 2 +### pop requested out of 24 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.0413861,0.715216,-0.697677) + Old Polarization: (0.562426,-0.593814,-0.57538) + New Momentum Direction: (0.05616,0.317089,-0.946732) + New Polarization: (0.393643,-0.87845,-0.270869) + *** FresnelRefraction *** +Track (trackID 1621, parentID 1) is processed with stopping code 2 +### pop requested out of 23 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.0851265,0.909212,0.407538) + Old Polarization: (0.405608,-0.341975,0.847664) + New Momentum Direction: (-0.114616,0.828112,0.54872) + New Polarization: (0.292879,-0.49964,0.815219) + *** FresnelRefraction *** +Track (trackID 1620, parentID 1) is processed with stopping code 2 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.169448,0.955298,0.242265) + Old Polarization: (0.727117,-0.287118,0.62359) + New Momentum Direction: (0.229685,0.916191,0.328388) + New Polarization: (0.661965,-0.394404,0.637376) + *** FresnelRefraction *** +Track (trackID 1619, parentID 1) is processed with stopping code 2 ### pop requested out of 21 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.277616,0.213416,0.936687) - Old Polarization: (-0.92485,-0.204471,0.320694) - New Momentum Direction: (0.373861,0.287404,0.881832) - New Polarization: (0.478168,0.754954,-0.448776) + Old Momentum Direction: (0.277434,0.959322,0.052259) + Old Polarization: (0.880083,-0.275581,0.386664) + New Momentum Direction: (0.372964,0.925182,0.0702537) + New Polarization: (0.867077,-0.374488,0.328536) *** FresnelRefraction *** -Track (trackID 1793, parentID 1) is processed with stopping code 2 +Track (trackID 1618, parentID 1) is processed with stopping code 2 ### pop requested out of 20 stacked tracks. ** Photon absorbed! ** -Track (trackID 1792, parentID 1) is processed with stopping code 2 +Track (trackID 1617, parentID 1) is processed with stopping code 2 ### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.240876,0.587541,0.772512) - Old Polarization: (-0.961627,0.252192,0.108037) - New Momentum Direction: (0.326864,0.797282,0.507445) - New Polarization: (-0.851157,0.481697,-0.208565) - *** FresnelRefraction *** -Track (trackID 1791, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. ** Photon absorbed! ** -Track (trackID 1790, parentID 1) is processed with stopping code 2 +Track (trackID 1616, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.828637,0.523302,-0.198784) + Old Polarization: (-0.543307,-0.837355,0.0604423) + New Momentum Direction: (-0.649128,0.711102,-0.270123) + New Polarization: (0.749166,0.536087,-0.389051) + *** FresnelRefraction *** +Track (trackID 1615, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.975977,0.190149,-0.10636) - Old Polarization: (-0.0603816,-0.232986,-0.970604) - New Momentum Direction: (0.955682,0.256938,-0.143718) - New Polarization: (-0.107202,-0.150943,-0.982713) - *** FresnelRefraction *** -Track (trackID 1789, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. + Old Momentum Direction: (-0.699164,0.663501,0.266337) + Old Polarization: (-0.37802,-0.659252,0.64999) + New Momentum Direction: (0.699164,0.663501,0.266337) + New Polarization: (0.257027,0.114358,-0.959614) + *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (0.615799,0.781665,0.0989559) - Old Polarization: (-0.504349,0.487552,-0.712688) - New Momentum Direction: (0.836329,0.5315,0.134394) - New Polarization: (0.535885,-0.740829,-0.404969) - *** FresnelRefraction *** -Track (trackID 1788, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. + Old Momentum Direction: (0.699164,0.663501,0.266337) + Old Polarization: (0.257027,0.114358,-0.959614) + New Momentum Direction: (0.699164,-0.663501,0.266337) + New Polarization: (-0.257027,0.114358,0.959614) + *** TotalInternalReflection *** Photon at Boundary! - Old Momentum Direction: (0.963739,-0.229589,0.136004) - Old Polarization: (-0.0825209,-0.741101,-0.666303) - New Momentum Direction: (0.931795,-0.312302,0.185001) - New Polarization: (-0.147469,-0.791412,-0.593228) - *** FresnelRefraction *** -Track (trackID 1787, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. + Old Momentum Direction: (0.699164,-0.663501,0.266337) + Old Polarization: (-0.257027,0.114358,0.959614) + New Momentum Direction: (0.699164,-0.663501,-0.266337) + New Polarization: (0.257027,-0.114358,0.959614) + *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1786, parentID 1) is processed with stopping code 2 +Track (trackID 1614, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.80388,0.510093,-0.30591) + Old Polarization: (-0.513457,-0.854745,-0.0759764) + New Momentum Direction: (-0.589787,0.692563,-0.41534) + New Polarization: (0.74692,0.272288,-0.606605) + *** FresnelRefraction *** +Track (trackID 1613, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.704496,0.504669,-0.498993) + Old Polarization: (-0.389068,-0.862662,-0.323173) + New Momentum Direction: (0.704496,0.504669,-0.498993) + New Polarization: (0.245238,0.486681,0.838451) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.704496,0.504669,-0.498993) + Old Polarization: (0.245238,0.486681,0.838451) + New Momentum Direction: (0.704496,-0.504669,-0.498993) + New Polarization: (-0.245238,0.486681,-0.838451) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.704496,-0.504669,-0.498993) + Old Polarization: (-0.245238,0.486681,-0.838451) + New Momentum Direction: (0.704496,-0.504669,0.498993) + New Polarization: (0.245238,-0.486681,-0.838451) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.704496,-0.504669,0.498993) + Old Polarization: (0.245238,-0.486681,-0.838451) + New Momentum Direction: (0.272017,-0.68428,0.676585) + New Polarization: (-0.477087,-0.706502,-0.522727) + *** FresnelRefraction *** +Track (trackID 1612, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.772281,0.617847,0.147805) + Old Polarization: (-0.478556,-0.71881,0.504278) + New Momentum Direction: (-0.51039,0.836344,0.200075) + New Polarization: (0.735253,0.303746,0.605923) + *** FresnelRefraction *** +Track (trackID 1611, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.540433,-0.269414,0.797087) - Old Polarization: (-0.596007,-0.791266,0.136653) - New Momentum Direction: (0.734207,-0.366012,0.571818) - New Polarization: (-0.262277,-0.929762,-0.258367) + Old Momentum Direction: (-0.15591,0.884496,0.439726) + Old Polarization: (0.310771,-0.37864,0.87181) + New Momentum Direction: (-0.21177,0.773576,0.597272) + New Polarization: (0.204972,-0.562386,0.801067) *** FresnelRefraction *** -Track (trackID 1785, parentID 1) is processed with stopping code 2 +Track (trackID 1610, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.53125,0.82295,0.201311) - Old Polarization: (-0.606928,0.535463,-0.587297) - New Momentum Direction: (0.722443,0.634925,0.273761) - New Polarization: (0.662059,-0.749396,-0.00909425) + Old Momentum Direction: (0.300834,0.867657,-0.395816) + Old Polarization: (0.896671,-0.398683,-0.192441) + New Momentum Direction: (0.407406,0.739382,-0.536037) + New Polarization: (0.770848,-0.593154,-0.232296) *** FresnelRefraction *** -Track (trackID 1784, parentID 1) is processed with stopping code 2 +Track (trackID 1609, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (0.938689,0.318945,-0.13091) - Old Polarization: (-0.112375,-0.0759244,-0.990761) - New Momentum Direction: (0.883344,0.433621,-0.177978) - New Polarization: (-0.20045,0.00623692,-0.979684) - *** FresnelRefraction *** -Track (trackID 1783, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1608, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.613329,-0.314168,0.724656) - Old Polarization: (-0.50746,-0.859805,0.0567399) - New Momentum Direction: (0.826247,-0.423232,0.37174) - New Polarization: (-0.412319,-0.904028,-0.112811) + Old Momentum Direction: (-0.480639,0.771549,0.416771) + Old Polarization: (-0.103569,-0.521886,0.846705) + New Momentum Direction: (-0.65145,0.506477,0.564884) + New Polarization: (-0.0595811,-0.776403,0.627414) *** FresnelRefraction *** -Track (trackID 1782, parentID 1) is processed with stopping code 2 +Track (trackID 1607, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. ** Photon absorbed! ** -Track (trackID 1781, parentID 1) is processed with stopping code 2 +Track (trackID 1606, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.964596,0.233782,-0.122069) - Old Polarization: (-0.080623,-0.179304,-0.980485) - New Momentum Direction: (0.933547,0.317747,-0.165911) - New Polarization: (-0.143968,-0.0915131,-0.985342) + Old Momentum Direction: (-0.250267,0.854849,0.454533) + Old Polarization: (0.190869,-0.416697,0.888782) + New Momentum Direction: (-0.340246,0.708779,0.617952) + New Polarization: (0.108496,-0.623181,0.774515) *** FresnelRefraction *** -Track (trackID 1780, parentID 1) is processed with stopping code 2 +Track (trackID 1605, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1779, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.332606,0.914995,-0.22838) + Old Polarization: (0.941326,-0.336814,0.0214906) + New Momentum Direction: (0.449533,0.83824,-0.308666) + New Polarization: (0.868194,-0.491293,-0.0697821) + *** FresnelRefraction *** +Track (trackID 1604, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.603909,-0.313289,0.732901) - Old Polarization: (-0.518988,-0.852437,0.0632584) - New Momentum Direction: (0.816574,-0.423613,0.39212) - New Polarization: (-0.408479,-0.90403,-0.125996) + Old Momentum Direction: (0.132097,0.768091,-0.626567) + Old Polarization: (0.689271,-0.525445,-0.498812) + New Momentum Direction: (0.177711,0.507835,-0.842925) + New Polarization: (0.522978,-0.774326,-0.356249) *** FresnelRefraction *** -Track (trackID 1778, parentID 1) is processed with stopping code 2 +Track (trackID 1603, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.698106,0.715808,0.0163285) - Old Polarization: (-0.403387,0.412049,-0.817003) - New Momentum Direction: (0.698106,-0.715808,0.0163285) - New Polarization: (-0.258012,-0.230227,0.93831) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (0.698106,-0.715808,0.0163285) - Old Polarization: (-0.258012,-0.230227,0.93831) - New Momentum Direction: (0.245618,-0.969115,0.0221068) - New Polarization: (-0.501338,-0.107477,0.85855) + Old Momentum Direction: (-0.72457,0.653453,0.219086) + Old Polarization: (-0.426238,-0.674668,0.602615) + New Momentum Direction: (-0.372821,0.879773,0.294965) + New Polarization: (0.704047,0.061142,0.707516) *** FresnelRefraction *** -Track (trackID 1777, parentID 1) is processed with stopping code 2 +Track (trackID 1602, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.931517,0.342447,-0.122496) - Old Polarization: (-0.114029,-0.0448339,-0.992465) - New Momentum Direction: (0.871238,0.462182,-0.165326) - New Polarization: (-0.20146,0.0295493,-0.979051) + Old Momentum Direction: (-0.834299,0.541876,-0.101567) + Old Polarization: (-0.551051,-0.813956,0.183896) + New Momentum Direction: (-0.662625,0.736132,-0.137977) + New Polarization: (0.748771,0.655162,-0.100521) *** FresnelRefraction *** -Track (trackID 1776, parentID 1) is processed with stopping code 2 +Track (trackID 1601, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. ** Photon absorbed! ** -Track (trackID 1775, parentID 1) is processed with stopping code 2 +Track (trackID 1600, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.662612,-0.351308,0.661459) - Old Polarization: (-0.447157,-0.894051,-0.0269036) - New Momentum Direction: (-0.662612,-0.351308,0.661459) - New Polarization: (-0.447157,0.894051,0.0269036) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.662612,-0.351308,0.661459) - Old Polarization: (-0.447157,0.894051,0.0269036) - New Momentum Direction: (-0.662612,-0.351308,-0.661459) - New Polarization: (0.447157,-0.894051,0.0269036) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1774, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (-0.825711,0.521995,-0.213831) + Old Polarization: (-0.541492,-0.839699,0.0411401) + New Momentum Direction: (-0.643107,0.708626,-0.290282) + New Polarization: (0.749867,0.505877,-0.426367) + *** FresnelRefraction *** +Track (trackID 1599, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 26 Track (trackID 1, parentID 0) is processed with stopping code 4 ### pop requested out of 27 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1836, parentID 1) is processed with stopping code 2 -### pop requested out of 26 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.515204,0.016564,-0.856908) - Old Polarization: (0.732105,0.528358,-0.429954) - New Momentum Direction: (-0.694083,0.0223151,-0.719549) - New Polarization: (-0.634894,0.452188,0.626447) - *** FresnelRefraction *** -Track (trackID 1835, parentID 1) is processed with stopping code 2 -### pop requested out of 25 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.97252,0.226986,-0.0517988) - Old Polarization: (0.151246,0.785082,0.600642) - New Momentum Direction: (-0.948548,0.308697,-0.0704453) - New Polarization: (0.240392,0.846903,0.474307) - *** FresnelRefraction *** -Track (trackID 1834, parentID 1) is processed with stopping code 2 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.754965,0.319826,-0.572485) - Old Polarization: (0.42497,0.903493,-0.055682) - New Momentum Direction: (-0.453811,0.434601,-0.777932) - New Polarization: (0.695262,0.718745,-0.00404908) - *** FresnelRefraction *** -Track (trackID 1833, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1832, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1831, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.874985,-0.430907,0.220726) - Old Polarization: (0.26723,-0.0496774,0.962351) - New Momentum Direction: (-0.758383,-0.580129,0.297163) - New Polarization: (0.438727,-0.117155,0.890951) - *** FresnelRefraction *** -Track (trackID 1830, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.363701,-0.47427,-0.801741) - Old Polarization: (0.927559,-0.105144,-0.358578) - New Momentum Direction: (-0.490028,-0.639003,-0.592915) - New Polarization: (0.283573,-0.760036,0.584749) - *** FresnelRefraction *** -Track (trackID 1829, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.673865,-0.737177,0.0497591) - Old Polarization: (0.527297,-0.432649,0.731282) - New Momentum Direction: (-0.914388,-0.399169,0.0675197) - New Polarization: (-0.263383,0.713215,0.64958) - *** FresnelRefraction *** -Track (trackID 1828, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.991975,0.0956886,0.0826439) - Old Polarization: (0.124413,0.622215,0.772897) - New Momentum Direction: (-0.985172,0.129846,0.112145) - New Polarization: (0.170066,0.652651,0.738325) - *** FresnelRefraction *** -Track (trackID 1827, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1826, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.855881,-0.468061,0.219968) - Old Polarization: (0.295439,-0.0934017,0.950785) - New Momentum Direction: (-0.713899,-0.633753,0.297836) - New Polarization: (0.487132,-0.143921,0.861388) - *** FresnelRefraction *** -Track (trackID 1825, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.356488,-0.507571,-0.784403) - Old Polarization: (0.932731,-0.144708,-0.330261) - New Momentum Direction: (-0.356488,-0.507571,0.784403) - New Polarization: (-0.788865,0.613366,0.0383811) + Old Momentum Direction: (-0.0366211,0.998051,0.050522) + Old Polarization: (0.827032,0.0586473,-0.559087) + New Momentum Direction: (-0.0366211,-0.998051,0.050522) + New Polarization: (-0.828945,0.0585741,0.556254) *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (-0.356488,-0.507571,0.784403) - Old Polarization: (-0.788865,0.613366,0.0383811) - New Momentum Direction: (-0.356488,0.507571,0.784403) - New Polarization: (0.788865,0.613366,-0.0383811) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.356488,0.507571,0.784403) - Old Polarization: (0.788865,0.613366,-0.0383811) - New Momentum Direction: (0.356488,0.507571,0.784403) - New Polarization: (0.788865,-0.613366,0.0383811) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.356488,0.507571,0.784403) - Old Polarization: (0.788865,-0.613366,0.0383811) - New Momentum Direction: (0.482147,0.686486,0.544308) - New Polarization: (0.842728,-0.533233,-0.0739689) + Old Momentum Direction: (-0.0366211,-0.998051,0.050522) + Old Polarization: (-0.828945,0.0585741,0.556254) + New Momentum Direction: (-0.0496234,-0.996419,0.0684599) + New Polarization: (-0.77617,0.0816109,0.62522) *** FresnelRefraction *** -Track (trackID 1824, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.375052,-0.365284,-0.852) - Old Polarization: (0.908631,0.0372185,-0.415938) - New Momentum Direction: (-0.507449,-0.494233,-0.705853) - New Polarization: (-0.107285,-0.776545,0.62086) - *** FresnelRefraction *** -Track (trackID 1823, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.953639,-0.200015,0.224871) - Old Polarization: (0.172831,0.247728,0.953289) - New Momentum Direction: (-0.912836,-0.271375,0.305099) - New Polarization: (0.282482,0.119836,0.951758) - *** FresnelRefraction *** -Track (trackID 1822, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.614035,0.172987,-0.770089) - Old Polarization: (0.604543,0.730356,-0.317975) - New Momentum Direction: (-0.827181,0.233034,-0.511339) - New Polarization: (-0.10313,0.831547,0.545796) - *** FresnelRefraction *** -Track (trackID 1821, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.47436,-0.830724,-0.291341) - Old Polarization: (0.779647,-0.550123,0.299191) - New Momentum Direction: (-0.64401,-0.654829,-0.395537) - New Polarization: (-0.497379,0.751239,-0.433883) - *** FresnelRefraction *** -Track (trackID 1820, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.977452,-0.0852839,0.193168) -Old Polarization: (0.145374,0.391691,0.90854) -New Polarization: (-0.351634,-0.528247,0.772858) -Polarization Change: (-0.351634,-0.528247,0.772858) -New Momentum Direction: (-0.336568,-0.69904,-0.630924) -Momentum Change: (-0.336568,-0.69904,-0.630924) - Photon at Boundary! - Old Momentum Direction: (-0.336568,-0.69904,-0.630924) - Old Polarization: (-0.351634,-0.528247,0.772858) - New Momentum Direction: (0.336568,-0.69904,-0.630924) - New Polarization: (-0.351634,0.528247,-0.772858) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.336568,-0.69904,-0.630924) - Old Polarization: (-0.351634,0.528247,-0.772858) - New Momentum Direction: (0.457881,-0.23153,-0.858335) - New Polarization: (-0.345394,0.843316,-0.41173) - *** FresnelRefraction *** -Track (trackID 1819, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.360323,-0.611335,-0.704583) - Old Polarization: (0.931141,-0.281121,-0.232268) - New Momentum Direction: (-0.485825,-0.824266,-0.29079) - New Polarization: (0.692704,-0.565984,0.447016) - *** FresnelRefraction *** -Track (trackID 1818, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.589471,0.14785,-0.794144) - Old Polarization: (0.635055,0.692397,-0.342477) - New Momentum Direction: (-0.797371,0.199994,-0.569388) - New Polarization: (-0.209765,0.792815,0.572227) - *** FresnelRefraction *** -Track (trackID 1817, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.987764,0.152079,0.0345679) -Old Polarization: (0.131342,0.691641,0.710198) -New Polarization: (-0.992266,0.014989,-0.123222) -Polarization Change: (-0.992266,0.014989,-0.123222) -New Momentum Direction: (0.0761821,-0.710204,-0.699862) -Momentum Change: (0.0761821,-0.710204,-0.699862) - Photon at Boundary! - Old Momentum Direction: (0.0761821,-0.710204,-0.699862) - Old Polarization: (-0.992266,0.014989,-0.123222) - New Momentum Direction: (0.103535,-0.965203,-0.240131) - New Polarization: (-0.951564,-0.166393,0.258535) - *** FresnelRefraction *** -Track (trackID 1816, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1815, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.413238,-0.795731,-0.442771) - Old Polarization: (0.856466,-0.504806,0.107879) - New Momentum Direction: (-0.561355,-0.568427,-0.601474) - New Polarization: (-0.0441832,0.74634,-0.664097) - *** FresnelRefraction *** -Track (trackID 1814, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.46434,-0.829713,-0.309782) - Old Polarization: (0.791243,-0.545779,0.275789) - New Momentum Direction: (-0.631414,-0.651053,-0.421245) - New Polarization: (-0.452026,0.750411,-0.48224) - *** FresnelRefraction *** -Track (trackID 1813, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.370446,-0.669264,-0.644093) - Old Polarization: (0.920235,-0.358687,-0.156562) - New Momentum Direction: (-0.370446,0.669264,-0.644093) - New Polarization: (-0.608717,0.348847,0.712579) - *** FresnelReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.370446,0.669264,-0.644093) - Old Polarization: (-0.608717,0.348847,0.712579) - New Momentum Direction: (-0.370446,0.669264,0.644093) - New Polarization: (0.608717,-0.348847,0.712579) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1812, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.704751,-0.705428,0.0754791) - Old Polarization: (0.4874,-0.404113,0.774037) - New Momentum Direction: (-0.94914,-0.297993,0.101653) - New Polarization: (-0.141651,0.692482,0.707392) - *** FresnelRefraction *** -Track (trackID 1811, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 25 -Track (trackID 1, parentID 0) is processed with stopping code 4 +Track (trackID 1657, parentID 1) is processed with stopping code 2 ### pop requested out of 26 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.948167,-0.315919,-0.0342637) - Old Polarization: (0.317635,-0.945392,-0.0730915) - New Momentum Direction: (-0.90371,-0.42565,-0.0461648) - New Polarization: (0.428046,-0.900558,-0.0759698) + Old Momentum Direction: (-0.54734,0.797212,-0.254699) + Old Polarization: (0.137656,-0.214431,-0.96699) + New Momentum Direction: (-0.743349,0.572519,-0.34591) + New Polarization: (0.123367,-0.390916,-0.912121) *** FresnelRefraction *** -Track (trackID 1861, parentID 1) is processed with stopping code 2 +Track (trackID 1656, parentID 1) is processed with stopping code 2 ### pop requested out of 25 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.841657,-0.0248534,0.53944) - Old Polarization: (0.462521,-0.548776,0.696362) - New Momentum Direction: (-0.683656,-0.0335883,0.729031) - New Polarization: (0.669887,-0.425275,0.608599) + Old Momentum Direction: (-0.0245554,0.997235,0.0701357) + Old Polarization: (0.8441,0.0582714,-0.53301) + New Momentum Direction: (-0.0332572,0.994923,0.09499) + New Polarization: (0.192138,-0.0869052,0.977512) *** FresnelRefraction *** -Track (trackID 1860, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (-0.0332572,0.994923,0.09499) + Old Polarization: (0.192138,-0.0869052,0.977512) + New Momentum Direction: (-0.0245554,0.997235,0.0701357) + New Polarization: (0.326965,-0.0582871,0.943237) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (-0.0245554,0.997235,0.0701357) + Old Polarization: (0.326965,-0.0582871,0.943237) + New Momentum Direction: (-0.0332572,0.994923,0.09499) + New Polarization: (0.19184,-0.0869207,0.97757) + *** FresnelRefraction *** +Track (trackID 1655, parentID 1) is processed with stopping code 2 ### pop requested out of 24 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.577315,0.815525,0.0403291) - Old Polarization: (0.816521,0.576666,0.0273831) - New Momentum Direction: (-0.780541,0.622722,0.0545257) - New Polarization: (-0.615914,-0.781036,0.103116) + Old Momentum Direction: (0.00585415,0.991131,0.132759) + Old Polarization: (0.89107,0.0550816,-0.450511) + New Momentum Direction: (0.00790093,0.983785,0.179176) + New Polarization: (0.873544,-0.0939972,0.477582) *** FresnelRefraction *** -Track (trackID 1859, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.00790093,0.983785,0.179176) + Old Polarization: (0.873544,-0.0939972,0.477582) + New Momentum Direction: (0.00585415,0.991131,0.132759) + New Polarization: (0.926953,-0.0551826,0.371098) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.00585415,0.991131,0.132759) + Old Polarization: (0.926953,-0.0551826,0.371098) + New Momentum Direction: (0.00790093,0.983785,0.179176) + New Polarization: (0.873063,-0.0941481,0.478432) + *** FresnelRefraction *** +Track (trackID 1654, parentID 1) is processed with stopping code 2 ### pop requested out of 23 stacked tracks. ** Photon absorbed! ** -Track (trackID 1858, parentID 1) is processed with stopping code 2 +Track (trackID 1653, parentID 1) is processed with stopping code 2 ### pop requested out of 22 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.655026,0.562453,0.504566) - Old Polarization: (0.714178,0.242778,0.656512) - New Momentum Direction: (0.655026,0.562453,0.504566) - New Polarization: (0.714178,-0.242778,-0.656512) - *** TotalInternalReflection *** + Old Momentum Direction: (-0.284815,0.440394,0.85143) + Old Polarization: (0.491584,-0.695427,0.524144) + New Momentum Direction: (-0.385861,0.596637,0.703659) + New Polarization: (-0.36084,0.60436,-0.710312) + *** FresnelRefraction *** +Track (trackID 1652, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.655026,0.562453,0.504566) - Old Polarization: (0.714178,-0.242778,-0.656512) - New Momentum Direction: (0.655026,-0.562453,0.504566) - New Polarization: (-0.714178,-0.242778,0.656512) - *** TotalInternalReflection *** + Old Momentum Direction: (-0.833224,0.245596,0.495399) + Old Polarization: (-0.257268,-0.965253,0.0458217) + New Momentum Direction: (-0.666118,0.331281,0.668237) + New Polarization: (0.440896,-0.547746,0.711045) + *** FresnelRefraction *** +Track (trackID 1651, parentID 1) is processed with stopping code 2 +### pop requested out of 20 stacked tracks. Photon at Boundary! - Old Momentum Direction: (0.655026,-0.562453,0.504566) - Old Polarization: (-0.714178,-0.242778,0.656512) - New Momentum Direction: (0.655026,-0.562453,-0.504566) - New Polarization: (0.714178,0.242778,0.656512) - *** TotalInternalReflection *** + Old Momentum Direction: (0.0437255,0.97907,0.198773) + Old Polarization: (0.933163,0.0310292,-0.358112) + New Momentum Direction: (0.0593344,0.961106,0.269729) + New Polarization: (0.998237,-0.056738,-0.0174194) + *** FresnelRefraction *** Photon at Boundary! - Old Momentum Direction: (0.655026,-0.562453,-0.504566) - Old Polarization: (0.714178,0.242778,0.656512) - New Momentum Direction: (-0.655026,-0.562453,-0.504566) - New Polarization: (0.714178,-0.242778,-0.656512) + Old Momentum Direction: (0.0593344,0.961106,0.269729) + Old Polarization: (0.998237,-0.056738,-0.0174194) + New Momentum Direction: (0.0437255,0.708272,0.704584) + New Polarization: (0.998646,-0.0508762,-0.0108321) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.0437255,0.708272,0.704584) + Old Polarization: (0.998646,-0.0508762,-0.0108321) + New Momentum Direction: (0.0593344,0.286963,0.956102) + New Polarization: (0.993904,-0.106138,-0.0298242) + *** FresnelRefraction *** +Track (trackID 1650, parentID 1) is processed with stopping code 2 +### pop requested out of 19 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.893421,0.275899,0.35451) + Old Polarization: (-0.344524,-0.927258,-0.146612) + New Momentum Direction: (-0.796685,0.371204,0.47697) + New Polarization: (0.515629,0.00573594,0.856793) + *** FresnelRefraction *** +Track (trackID 1649, parentID 1) is processed with stopping code 2 +### pop requested out of 18 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.803467,0.577504,-0.144672) + Old Polarization: (-0.217324,-0.510738,-0.831816) + New Momentum Direction: (0.803467,0.577504,-0.144672) + New Polarization: (-0.000344145,0.243455,0.969912) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.803467,0.577504,-0.144672) + Old Polarization: (-0.000344145,0.243455,0.969912) + New Momentum Direction: (0.803467,-0.577504,-0.144672) + New Polarization: (0.000344145,0.243455,-0.969912) *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1857, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. +Track (trackID 1648, parentID 1) is processed with stopping code 2 +### pop requested out of 17 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.93812,-0.312915,0.148374) - Old Polarization: (0.335919,-0.926389,0.170182) - New Momentum Direction: (-0.882697,-0.424625,0.201344) - New Polarization: (0.462264,-0.861678,0.209339) + Old Momentum Direction: (-0.660484,0.713047,-0.235212) + Old Polarization: (-0.0162262,-0.326746,-0.944973) + New Momentum Direction: (-0.895173,0.311509,-0.318789) + New Polarization: (0.0776784,-0.595248,-0.799779) *** FresnelRefraction *** -Track (trackID 1856, parentID 1) is processed with stopping code 2 +Track (trackID 1647, parentID 1) is processed with stopping code 2 +### pop requested out of 16 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.120908,0.581452,0.804547) + Old Polarization: (0.721063,-0.505591,0.473757) + New Momentum Direction: (-0.162724,0.782544,0.600954) + New Polarization: (0.35626,0.614582,-0.703823) + *** FresnelRefraction *** +Track (trackID 1646, parentID 1) is processed with stopping code 2 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.100286,0.587515,0.802975) + Old Polarization: (0.739175,-0.496225,0.455392) + New Momentum Direction: (-0.136093,0.797285,0.58806) + New Polarization: (0.418173,0.584342,-0.695468) + *** FresnelRefraction *** +Track (trackID 1645, parentID 1) is processed with stopping code 2 +### pop requested out of 14 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.434557,0.344374,0.832206) + Old Polarization: (0.289235,-0.821707,0.491061) + New Momentum Direction: (-0.590799,0.468191,0.657079) + New Polarization: (-0.699241,0.109176,-0.7065) + *** FresnelRefraction *** +Track (trackID 1644, parentID 1) is processed with stopping code 2 +### pop requested out of 13 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.878189,0.253666,0.405508) + Old Polarization: (-0.310245,-0.947346,-0.0792705) + New Momentum Direction: (-0.761364,0.343829,0.549642) + New Polarization: (0.494644,-0.239987,0.835305) + *** FresnelRefraction *** +Track (trackID 1643, parentID 1) is processed with stopping code 2 +### pop requested out of 12 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.624064,0.741243,-0.247192) + Old Polarization: (0.0347442,-0.289719,-0.956481) + New Momentum Direction: (-0.624064,-0.741243,-0.247192) + New Polarization: (-0.254298,-0.106463,0.961248) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.624064,-0.741243,-0.247192) + Old Polarization: (-0.254298,-0.106463,0.961248) + New Momentum Direction: (0.624064,-0.741243,-0.247192) + New Polarization: (-0.254298,0.106463,-0.961248) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.624064,-0.741243,-0.247192) + Old Polarization: (-0.254298,0.106463,-0.961248) + New Momentum Direction: (0.624064,-0.741243,0.247192) + New Polarization: (0.254298,-0.106463,-0.961248) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.624064,-0.741243,0.247192) + Old Polarization: (0.254298,-0.106463,-0.961248) + New Momentum Direction: (0.847724,-0.410625,0.335784) + New Polarization: (0.44668,0.211211,-0.869406) + *** FresnelRefraction *** +Track (trackID 1642, parentID 1) is processed with stopping code 2 +### pop requested out of 11 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.889016,0.457525,-0.0179026) + Old Polarization: (-0.334227,-0.675167,-0.657603) + New Momentum Direction: (-0.786618,0.616968,-0.0241415) + New Polarization: (0.510127,0.627376,-0.588361) + *** FresnelRefraction *** +Track (trackID 1641, parentID 1) is processed with stopping code 2 +### pop requested out of 10 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.884441,0.46492,-0.0401611) + Old Polarization: (-0.31677,-0.661341,-0.679915) + New Momentum Direction: (-0.773985,0.630854,-0.054495) + New Polarization: (0.498969,0.554657,-0.665872) + *** FresnelRefraction *** +Track (trackID 1640, parentID 1) is processed with stopping code 2 +### pop requested out of 9 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.90311,0.429187,0.0138279) + Old Polarization: (-0.34755,-0.711654,-0.610539) + New Momentum Direction: (-0.813975,0.580599,0.0187062) + New Polarization: (0.513667,0.734431,-0.443572) + *** FresnelRefraction *** +Track (trackID 1639, parentID 1) is processed with stopping code 2 +### pop requested out of 8 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1638, parentID 1) is processed with stopping code 2 +### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.735821,0.244084,0.631656) + Old Polarization: (-0.122181,-0.965326,0.230691) + New Momentum Direction: (0.735821,0.244084,0.631656) + New Polarization: (0.0435352,0.9138,-0.403824) + *** FresnelReflection *** + +** Photon absorbed! ** +Track (trackID 1637, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.0285997,0.980639,0.193723) + Old Polarization: (0.928444,0.0457478,-0.368646) + New Momentum Direction: (0.0384638,0.964697,0.260539) + New Polarization: (0.984553,-0.0811561,0.155145) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.0384638,0.964697,0.260539) + Old Polarization: (0.984553,-0.0811561,0.155145) + New Momentum Direction: (-0.909412,0.305156,-0.282577) + New Polarization: (0.137656,0.861999,0.487861) + *** LambertianReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.909412,0.305156,-0.282577) + Old Polarization: (0.137656,0.861999,0.487861) + New Momentum Direction: (-0.950984,0.226898,-0.21011) + New Polarization: (0.0785219,0.834349,0.545616) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (-0.950984,0.226898,-0.21011) + Old Polarization: (0.0785219,0.834349,0.545616) + New Momentum Direction: (-0.909412,0.305156,-0.282577) + New Polarization: (0.139275,0.863662,0.484448) + *** FresnelRefraction *** +Track (trackID 1636, parentID 1) is processed with stopping code 2 +### pop requested out of 5 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1635, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.074491,0.836634,0.542674) + Old Polarization: (0.981522,-0.157693,0.108384) + New Momentum Direction: (0.074491,-0.836634,0.542674) + New Polarization: (-0.984016,0.026599,0.17608) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.074491,-0.836634,0.542674) + Old Polarization: (-0.984016,0.026599,0.17608) + New Momentum Direction: (0.074491,-0.836634,-0.542674) + New Polarization: (0.984016,-0.026599,0.17608) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.074491,-0.836634,-0.542674) + Old Polarization: (0.984016,-0.026599,0.17608) + New Momentum Direction: (0.074491,0.836634,-0.542674) + New Polarization: (-0.989785,-0.0043067,-0.142504) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.074491,0.836634,-0.542674) + Old Polarization: (-0.989785,-0.0043067,-0.142504) + New Momentum Direction: (0.074491,0.836634,0.542674) + New Polarization: (0.989785,0.0043067,-0.142504) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.074491,0.836634,0.542674) + Old Polarization: (0.989785,0.0043067,-0.142504) + New Momentum Direction: (0.100713,0.671966,0.733702) + New Polarization: (0.991654,-0.00813363,-0.128672) + *** FresnelRefraction *** +Track (trackID 1634, parentID 1) is processed with stopping code 2 +### pop requested out of 3 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.492614,0.322839,0.80815) + Old Polarization: (0.209806,-0.857193,0.47032) + New Momentum Direction: (-0.665776,0.436323,0.605281) + New Polarization: (-0.704826,-0.101537,-0.702076) + *** FresnelRefraction *** +Track (trackID 1633, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.164013,0.537263,0.827314) + Old Polarization: (0.657924,-0.565314,0.49755) + New Momentum Direction: (-0.221545,0.725721,0.651343) + New Polarization: (0.157293,0.685789,-0.7106) + *** FresnelRefraction *** +Track (trackID 1632, parentID 1) is processed with stopping code 2 +### pop requested out of 1 stacked tracks. + + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 21 +Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 22 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (-0.270768,0.511415,0.815561) + Old Polarization: (0.309066,-0.756173,0.576785) + New Momentum Direction: (-0.368032,0.695125,0.617539) + New Polarization: (-0.338862,0.518205,-0.785262) + *** FresnelRefraction *** +Track (trackID 1678, parentID 1) is processed with stopping code 2 +### pop requested out of 21 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1677, parentID 1) is processed with stopping code 2 ### pop requested out of 20 stacked tracks. ** Photon absorbed! ** -Track (trackID 1855, parentID 1) is processed with stopping code 2 +Track (trackID 1676, parentID 1) is processed with stopping code 2 ### pop requested out of 19 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.840066,0.041408,-0.540901) - Old Polarization: (0.464035,-0.461625,-0.756025) - New Momentum Direction: (-0.681751,0.0558421,-0.72945) - New Polarization: (0.670768,-0.350307,-0.653724) + Old Momentum Direction: (-0.439932,0.448908,0.77778) + Old Polarization: (0.0556395,-0.850806,0.522526) + New Momentum Direction: (-0.597393,0.609581,0.521088) + New Polarization: (-0.631306,0.0432347,-0.774328) *** FresnelRefraction *** -Track (trackID 1854, parentID 1) is processed with stopping code 2 +Track (trackID 1675, parentID 1) is processed with stopping code 2 ### pop requested out of 18 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1853, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.0601993,0.997694,0.0313553) + Old Polarization: (0.80308,-0.0297531,-0.595128) + New Momentum Direction: (0.0818595,0.995731,0.0426372) + New Polarization: (0.873139,-0.0510223,-0.484794) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.0818595,0.995731,0.0426372) + Old Polarization: (0.873139,-0.0510223,-0.484794) + New Momentum Direction: (0.0601993,0.997694,0.0313553) + New Polarization: (0.80322,-0.0297675,-0.594938) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.0601993,0.997694,0.0313553) + Old Polarization: (0.80322,-0.0297675,-0.594938) + New Momentum Direction: (0.0818595,0.995731,0.0426372) + New Polarization: (0.873272,-0.0510435,-0.484552) + *** FresnelRefraction *** +Track (trackID 1674, parentID 1) is processed with stopping code 2 ### pop requested out of 17 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1852, parentID 1) is processed with stopping code 2 -### pop requested out of 16 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.85958,-0.0895348,0.503096) -Old Polarization: (0.440086,-0.630076,0.639788) -New Polarization: (0.451066,-0.829137,0.330259) -Polarization Change: (0.451066,-0.829137,0.330259) -New Momentum Direction: (0.0541381,0.39478,0.917179) -Momentum Change: (0.0541381,0.39478,0.917179) Photon at Boundary! - Old Momentum Direction: (0.0541381,0.39478,0.917179) - Old Polarization: (0.451066,-0.829137,0.330259) - New Momentum Direction: (0.0734835,0.535849,0.84111) - New Polarization: (0.539159,0.688171,-0.485519) + Old Momentum Direction: (0.153658,0.959939,0.23432) + Old Polarization: (0.952565,-0.0808595,-0.293397) + New Momentum Direction: (0.20807,0.925219,0.317296) + New Polarization: (0.966249,-0.144055,-0.213569) *** FresnelRefraction *** -Track (trackID 1851, parentID 1) is processed with stopping code 2 -### pop requested out of 15 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.621182,0.644834,0.445334) - Old Polarization: (0.754962,0.34002,0.56073) - New Momentum Direction: (-0.621182,-0.644834,0.445334) - New Polarization: (-0.754962,0.34002,-0.56073) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.621182,-0.644834,0.445334) - Old Polarization: (-0.754962,0.34002,-0.56073) - New Momentum Direction: (0.621182,-0.644834,0.445334) - New Polarization: (-0.754962,-0.34002,0.56073) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.621182,-0.644834,0.445334) - Old Polarization: (-0.754962,-0.34002,0.56073) - New Momentum Direction: (0.621182,-0.644834,-0.445334) - New Polarization: (0.754962,0.34002,0.56073) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1850, parentID 1) is processed with stopping code 2 -### pop requested out of 14 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.823253,0.0451986,0.565873) - Old Polarization: (0.48593,-0.459225,0.743629) - New Momentum Direction: (-0.646518,0.0607424,0.760477) - New Polarization: (0.69988,-0.349491,0.622916) + Old Momentum Direction: (0.20807,0.925219,0.317296) + Old Polarization: (0.966249,-0.144055,-0.213569) + New Momentum Direction: (0.153658,0.683264,0.71382) + New Polarization: (0.987674,-0.0843955,-0.131825) *** FresnelRefraction *** -Track (trackID 1849, parentID 1) is processed with stopping code 2 -### pop requested out of 13 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.94385,-0.319722,0.0832193) - Old Polarization: (0.326368,-0.94145,0.0845956) - New Momentum Direction: (-0.894523,-0.432608,0.112602) - New Polarization: (0.444083,-0.888824,0.113056) + Old Momentum Direction: (0.153658,0.683264,0.71382) + Old Polarization: (0.987674,-0.0843955,-0.131825) + New Momentum Direction: (0.20807,0.149669,0.966595) + New Polarization: (0.966131,-0.18566,-0.179223) *** FresnelRefraction *** -Track (trackID 1848, parentID 1) is processed with stopping code 2 -### pop requested out of 12 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1847, parentID 1) is processed with stopping code 2 -### pop requested out of 11 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.736482,0.34836,-0.579862) - Old Polarization: (0.603163,-0.0499023,-0.796056) - New Momentum Direction: (-0.397898,0.472455,-0.786424) - New Polarization: (0.868054,-0.083545,-0.48939) - *** FresnelRefraction *** -Track (trackID 1846, parentID 1) is processed with stopping code 2 -### pop requested out of 10 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.66658,0.564164,-0.487227) -Old Polarization: (0.69659,0.238725,-0.676589) -New Polarization: (0.259435,0.294255,-0.919841) -Polarization Change: (0.259435,0.294255,-0.919841) -New Momentum Direction: (-0.964843,0.037471,-0.26014) -Momentum Change: (-0.964843,0.037471,-0.26014) - Photon at Boundary! - Old Momentum Direction: (-0.964843,0.037471,-0.26014) - Old Polarization: (0.259435,0.294255,-0.919841) - New Momentum Direction: (-0.93457,0.0507233,-0.352144) - New Polarization: (0.353276,0.249506,-0.901634) - *** FresnelRefraction *** -Track (trackID 1845, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.783255,0.197947,-0.589345) - Old Polarization: (0.541311,-0.249088,-0.80308) - New Momentum Direction: (-0.534274,0.269144,-0.80132) - New Polarization: (0.786958,-0.187734,-0.587753) - *** FresnelRefraction *** -Track (trackID 1844, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.914061,-0.246658,0.32195) - Old Polarization: (0.367584,-0.839276,0.400622) - New Momentum Direction: (-0.835062,-0.334588,0.436719) - New Polarization: (0.521023,-0.735858,0.432491) - *** FresnelRefraction *** -Track (trackID 1843, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.944062,-0.326166,0.0486102) - Old Polarization: (0.328063,-0.943892,0.0379785) - New Momentum Direction: (-0.894281,-0.442618,0.0659657) - New Polarization: (0.446266,-0.893029,0.0578541) - *** FresnelRefraction *** -Track (trackID 1842, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.826898,0.069182,-0.55808) - Old Polarization: (0.483073,-0.420665,-0.767908) - New Momentum Direction: (-0.647106,0.0937924,-0.756609) - New Polarization: (0.701993,-0.313847,-0.6393) - *** FresnelRefraction *** -Track (trackID 1841, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1840, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.655286,0.607713,-0.448648) - Old Polarization: (0.713317,0.302397,-0.632246) - New Momentum Direction: (0.655286,0.607713,-0.448648) - New Polarization: (0.713317,-0.302397,0.632246) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.655286,0.607713,-0.448648) - Old Polarization: (0.713317,-0.302397,0.632246) - New Momentum Direction: (0.655286,-0.607713,-0.448648) - New Polarization: (-0.713317,-0.302397,-0.632246) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.655286,-0.607713,-0.448648) - Old Polarization: (-0.713317,-0.302397,-0.632246) - New Momentum Direction: (0.655286,-0.607713,0.448648) - New Polarization: (0.713317,0.302397,-0.632246) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.655286,-0.607713,0.448648) - Old Polarization: (0.713317,0.302397,-0.632246) - New Momentum Direction: (-0.655286,-0.607713,0.448648) - New Polarization: (0.713317,-0.302397,0.632246) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.655286,-0.607713,0.448648) - Old Polarization: (0.713317,-0.302397,0.632246) - New Momentum Direction: (-0.655286,0.607713,0.448648) - New Polarization: (-0.713317,-0.302397,-0.632246) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1839, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.93868,-0.310312,0.150285) - Old Polarization: (0.334054,-0.926433,0.173578) - New Momentum Direction: (-0.884216,-0.420373,0.203588) - New Polarization: (0.459124,-0.862347,0.213456) - *** FresnelRefraction *** -Track (trackID 1838, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.591545,0.77069,-0.236879) -Old Polarization: (0.793839,0.505324,-0.33833) -New Polarization: (-0.866183,-0.470586,-0.168152) -Polarization Change: (-0.866183,-0.470586,-0.168152) -New Momentum Direction: (0.0838157,0.194915,-0.977232) -Momentum Change: (0.0838157,0.194915,-0.977232) - -** Photon absorbed! ** -Track (trackID 1837, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 23 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 24 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.798985,0.348074,-0.490375) - Old Polarization: (0.598769,0.384991,-0.702324) - New Momentum Direction: (-0.588562,0.467948,-0.659257) - New Polarization: (0.806689,0.286109,-0.517102) - *** FresnelRefraction *** -Track (trackID 1884, parentID 1) is processed with stopping code 2 -### pop requested out of 23 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.850182,-0.417587,-0.320641) - Old Polarization: (0.524257,-0.727475,-0.442644) - New Momentum Direction: (-0.701472,-0.56528,-0.434046) - New Polarization: (0.711137,-0.595439,-0.373814) - *** FresnelRefraction *** -Track (trackID 1883, parentID 1) is processed with stopping code 2 -### pop requested out of 22 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.820291,0.0803784,0.56627) - Old Polarization: (0.567394,-0.0102993,0.823382) - New Momentum Direction: (-0.628281,0.109334,0.770266) - New Polarization: (0.774882,-0.000420551,0.632106) - *** FresnelRefraction *** -Track (trackID 1882, parentID 1) is processed with stopping code 2 -### pop requested out of 21 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.861575,-0.490153,0.132055) - Old Polarization: (0.507581,-0.835463,0.210625) - New Momentum Direction: (-0.727401,-0.662587,0.178511) - New Polarization: (0.686178,-0.704942,0.179491) - *** FresnelRefraction *** -Track (trackID 1881, parentID 1) is processed with stopping code 2 -### pop requested out of 20 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.814686,0.0274426,-0.579253) - Old Polarization: (0.575397,-0.08602,-0.813338) - New Momentum Direction: (-0.6187,0.037178,-0.784747) - New Polarization: (0.782547,-0.0592061,-0.61977) - *** FresnelRefraction *** -Track (trackID 1880, parentID 1) is processed with stopping code 2 -### pop requested out of 19 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.784841,0.496202,-0.371226) - Old Polarization: (0.618586,0.591454,-0.517235) - New Momentum Direction: (-0.545681,0.670995,-0.501995) - New Polarization: (0.837254,0.411404,-0.360211) - *** FresnelRefraction *** -Track (trackID 1879, parentID 1) is processed with stopping code 2 -### pop requested out of 18 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1878, parentID 1) is processed with stopping code 2 -### pop requested out of 17 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1877, parentID 1) is processed with stopping code 2 +Track (trackID 1673, parentID 1) is processed with stopping code 2 ### pop requested out of 16 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.782596,0.622168,-0.021216) - Old Polarization: (0.622457,0.782571,-0.0113843) - New Momentum Direction: (-0.54435,0.838371,-0.0285885) - New Polarization: (0.83881,0.544369,-0.00779491) + Old Momentum Direction: (-0.567505,0.799412,-0.197176) + Old Polarization: (-0.133876,-0.325876,-0.935886) + New Momentum Direction: (-0.771841,0.576495,-0.268171) + New Polarization: (-0.128058,-0.554081,-0.822554) *** FresnelRefraction *** -Track (trackID 1876, parentID 1) is processed with stopping code 2 +Track (trackID 1672, parentID 1) is processed with stopping code 2 ### pop requested out of 15 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1875, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (-0.787455,0.428963,0.442613) + Old Polarization: (-0.469138,-0.882875,0.0210017) + New Momentum Direction: (-0.549266,0.581567,0.600072) + New Polarization: (0.717949,-0.0390428,0.695) + *** FresnelRefraction *** +Track (trackID 1671, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.799386,0.363437,0.47843) - Old Polarization: (0.597115,0.392306,0.699678) - New Momentum Direction: (-0.576844,0.494119,0.65046) - New Polarization: (0.814375,0.285882,0.505039) + Old Momentum Direction: (0.101472,0.76038,0.641503) + Old Polarization: (0.867061,-0.38375,0.317713) + New Momentum Direction: (0.137827,0.470934,0.871335) + New Polarization: (0.728663,-0.644076,0.232847) *** FresnelRefraction *** -Track (trackID 1874, parentID 1) is processed with stopping code 2 +Track (trackID 1670, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1873, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (-0.159956,0.581684,0.797532) + Old Polarization: (0.484069,-0.657898,0.576928) + New Momentum Direction: (-0.215088,0.782175,0.584756) + New Polarization: (0.0531871,0.607263,-0.792718) + *** FresnelRefraction *** +Track (trackID 1669, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.824527,0.0930874,0.558113) - Old Polarization: (0.561199,0.00870637,0.827635) - New Momentum Direction: (-0.644305,0.125817,0.754348) - New Polarization: (0.761571,0.0154497,0.647898) + Old Momentum Direction: (-0.619494,0.765337,-0.174605) + Old Polarization: (-0.21126,-0.376762,-0.901898) + New Momentum Direction: (-0.842664,0.483228,-0.237506) + New Polarization: (-0.150264,-0.634624,-0.758072) *** FresnelRefraction *** -Track (trackID 1872, parentID 1) is processed with stopping code 2 +Track (trackID 1668, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.791547,0.523313,0.315589) - Old Polarization: (0.609053,0.633234,0.477566) - New Momentum Direction: (-0.564614,0.706781,0.42623) - New Polarization: (0.823975,0.452833,0.340598) + Old Momentum Direction: (-0.839688,0.511426,0.182666) + Old Polarization: (-0.540688,-0.755841,-0.36927) + New Momentum Direction: (-0.674362,0.695377,0.248368) + New Polarization: (0.736757,0.656083,0.163536) *** FresnelRefraction *** -Track (trackID 1871, parentID 1) is processed with stopping code 2 +Track (trackID 1667, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.82548,0.126064,0.550173) - Old Polarization: (0.559761,0.0577136,0.826642) - New Momentum Direction: (-0.650219,0.169687,0.740555) - New Polarization: (0.756493,0.0544809,0.651729) - *** FresnelRefraction *** -Track (trackID 1870, parentID 1) is processed with stopping code 2 + +** Photon absorbed! ** +Track (trackID 1666, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.798202,0.409485,0.441809) - Old Polarization: (0.599053,0.462491,0.653634) - New Momentum Direction: (-0.577383,0.555012,0.598824) - New Polarization: (0.814229,0.337065,0.472671) + Old Momentum Direction: (0.041952,0.713706,0.699188) + Old Polarization: (0.788476,-0.453451,0.415558) + New Momentum Direction: (0.0566575,0.324247,0.944274) + New Polarization: (0.628932,-0.746133,0.218472) *** FresnelRefraction *** -Track (trackID 1869, parentID 1) is processed with stopping code 2 +Track (trackID 1665, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.787522,0.409857,-0.460246) - Old Polarization: (0.614282,0.461847,-0.639809) - New Momentum Direction: (-0.548808,0.555942,-0.62429) - New Polarization: (0.834619,0.322294,-0.446697) + Old Momentum Direction: (0.172199,0.918881,0.354973) + Old Polarization: (0.983732,-0.141692,-0.110432) + New Momentum Direction: (0.232891,0.845744,0.480083) + New Polarization: (0.968059,-0.248747,-0.0314032) *** FresnelRefraction *** -Track (trackID 1868, parentID 1) is processed with stopping code 2 +Track (trackID 1664, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.827551,-0.0703794,-0.556961) - Old Polarization: (0.556718,-0.23061,-0.79805) - New Momentum Direction: (-0.655246,-0.0947036,-0.749455) - New Polarization: (0.752153,-0.173886,-0.635633) + Old Momentum Direction: (-0.831577,0.541746,0.122435) + Old Polarization: (-0.531204,-0.711404,-0.460137) + New Momentum Direction: (-0.656458,0.735806,0.166293) + New Polarization: (0.737223,0.672485,-0.0653209) *** FresnelRefraction *** -Track (trackID 1867, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.781444,0.529068,-0.330806) -Old Polarization: (0.623193,0.63521,-0.456222) -New Polarization: (-0.0721932,0.995798,0.0563452) -Polarization Change: (-0.0721932,0.995798,0.0563452) -New Momentum Direction: (-0.80237,-0.0915407,0.589766) -Momentum Change: (-0.80237,-0.0915407,0.589766) - Photon at Boundary! - Old Momentum Direction: (-0.80237,-0.0915407,0.589766) - Old Polarization: (-0.0721932,0.995798,0.0563452) - New Momentum Direction: (-0.588464,-0.12401,0.798956) - New Polarization: (0.137757,0.95834,0.250213) - *** FresnelRefraction *** -Track (trackID 1866, parentID 1) is processed with stopping code 2 -### pop requested out of 5 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.840934,-0.15008,0.519909) - Old Polarization: (0.537513,-0.342672,0.770491) - New Momentum Direction: (-0.681339,-0.203005,0.703254) - New Polarization: (0.72944,-0.268098,0.629318) - *** FresnelRefraction *** -Track (trackID 1865, parentID 1) is processed with stopping code 2 -### pop requested out of 4 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1864, parentID 1) is processed with stopping code 2 -### pop requested out of 3 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1863, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.784405,0.600376,0.155747) - Old Polarization: (0.619453,0.745583,0.245732) - New Momentum Direction: (-0.546394,0.810694,0.210307) - New Polarization: (0.836998,0.519619,0.171553) - *** FresnelRefraction *** -Track (trackID 1862, parentID 1) is processed with stopping code 2 -### pop requested out of 1 stacked tracks. - - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 9 -Track (trackID 1, parentID 0) is processed with stopping code 4 -### pop requested out of 10 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.932077,-0.10021,-0.348124) - Old Polarization: (0.359496,-0.374353,-0.854764) - New Momentum Direction: (-0.87131,-0.135749,-0.471584) - New Polarization: (0.488724,-0.326929,-0.808867) - *** FresnelRefraction *** -Track (trackID 1893, parentID 1) is processed with stopping code 2 -### pop requested out of 9 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.84651,-0.335547,0.413314) - Old Polarization: (0.498574,-0.771888,0.394478) - New Momentum Direction: (-0.696836,-0.452061,0.556831) - New Polarization: (0.692428,-0.626418,0.357972) - *** FresnelRefraction *** -Track (trackID 1892, parentID 1) is processed with stopping code 2 -### pop requested out of 8 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1891, parentID 1) is processed with stopping code 2 -### pop requested out of 7 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.737421,0.368977,0.565744) - Old Polarization: (0.675306,0.38644,0.628193) - New Momentum Direction: (-0.3995,0.500795,0.767857) - New Polarization: (0.916654,0.20723,0.341761) - *** FresnelRefraction *** -Track (trackID 1890, parentID 1) is processed with stopping code 2 +Track (trackID 1663, parentID 1) is processed with stopping code 2 ### pop requested out of 6 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.889118,0.289504,-0.35448) - Old Polarization: (0.429469,0.260044,-0.864831) - New Momentum Direction: (-0.784562,0.392213,-0.480241) - New Polarization: (0.599093,0.279833,-0.750187) + Old Momentum Direction: (-0.496906,0.433819,0.751589) + Old Polarization: (-0.0302949,-0.874225,0.484576) + New Momentum Direction: (-0.674355,0.588739,0.445681) + New Polarization: (-0.634579,-0.15345,-0.757471) *** FresnelRefraction *** -Track (trackID 1889, parentID 1) is processed with stopping code 2 +Track (trackID 1662, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.849173,-0.355369,0.390663) - Old Polarization: (0.494341,-0.795156,0.351218) - New Momentum Direction: (-0.700161,-0.480441,0.528158) - New Polarization: (0.689275,-0.647761,0.324509) + Old Momentum Direction: (-0.521938,0.43011,0.736604) + Old Polarization: (-0.0695459,-0.882145,0.465814) + New Momentum Direction: (-0.521938,0.43011,-0.736604) + New Polarization: (0.78422,0.581657,-0.216042) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.521938,0.43011,-0.736604) + Old Polarization: (0.78422,0.581657,-0.216042) + New Momentum Direction: (0.521938,0.43011,-0.736604) + New Polarization: (0.78422,-0.581657,0.216042) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.521938,0.43011,-0.736604) + Old Polarization: (0.78422,-0.581657,0.216042) + New Momentum Direction: (0.521938,-0.43011,-0.736604) + New Polarization: (-0.78422,-0.581657,-0.216042) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.521938,-0.43011,-0.736604) + Old Polarization: (-0.78422,-0.581657,-0.216042) + New Momentum Direction: (0.707098,-0.582693,-0.4006) + New Polarization: (-0.430898,-0.80426,0.409259) *** FresnelRefraction *** -Track (trackID 1888, parentID 1) is processed with stopping code 2 +Track (trackID 1661, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.813812,-0.237184,0.530522) - Old Polarization: (0.552232,-0.599926,0.578903) - New Momentum Direction: (-0.617964,-0.320886,0.717741) - New Polarization: (0.765784,-0.452392,0.457074) + Old Momentum Direction: (-0.197389,0.547344,0.813297) + Old Polarization: (0.41912,-0.702859,0.574741) + New Momentum Direction: (-0.26815,0.743562,0.612545) + New Polarization: (-0.102511,0.610199,-0.785588) *** FresnelRefraction *** -Track (trackID 1887, parentID 1) is processed with stopping code 2 +Track (trackID 1660, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.77187,-0.0261039,0.635244) - Old Polarization: (0.619892,-0.252872,0.742825) - New Momentum Direction: (-0.506472,-0.0354025,0.861529) - New Polarization: (0.85172,-0.176263,0.493462) + Old Momentum Direction: (-0.745573,0.664125,-0.0553056) + Old Polarization: (-0.416805,-0.529453,-0.738886) + New Momentum Direction: (-0.43829,0.895733,-0.074593) + New Polarization: (0.682717,0.277779,-0.675823) *** FresnelRefraction *** -Track (trackID 1886, parentID 1) is processed with stopping code 2 +Track (trackID 1659, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1885, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (-0.555099,0.427209,0.713693) + Old Polarization: (-0.123051,-0.890763,0.437493) + New Momentum Direction: (-0.749753,0.577017,0.323915) + New Polarization: (-0.586593,-0.353024,-0.728892) + *** FresnelRefraction *** +Track (trackID 1658, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 13 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 14 Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 15 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.30382,0.873302,0.380838) + Old Polarization: (-0.697365,-0.0685097,0.713434) + New Momentum Direction: (0.411977,0.750727,0.516414) + New Polarization: (-0.676461,-0.127714,0.72532) + *** FresnelRefraction *** +Track (trackID 1692, parentID 1) is processed with stopping code 2 ### pop requested out of 14 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.605501,0.53596,0.588316) - Old Polarization: (0.795765,0.418184,0.438041) - New Momentum Direction: (0.605501,0.53596,0.588316) - New Polarization: (0.795765,-0.418184,-0.438041) - *** TotalInternalReflection *** + Old Momentum Direction: (0.137542,0.990083,-0.0285968) + Old Polarization: (-0.990494,0.137547,-0.00179873) + New Momentum Direction: (0.186327,0.981724,-0.0387398) + New Polarization: (0.919277,-0.188118,-0.345747) + *** FresnelRefraction *** Photon at Boundary! - Old Momentum Direction: (0.605501,0.53596,0.588316) - Old Polarization: (0.795765,-0.418184,-0.438041) - New Momentum Direction: (0.605501,0.53596,-0.588316) - New Polarization: (-0.795765,0.418184,-0.438041) - *** TotalInternalReflection *** + Old Momentum Direction: (0.186327,0.981724,-0.0387398) + Old Polarization: (0.919277,-0.188118,-0.345747) + New Momentum Direction: (0.688486,0.724686,-0.0285968) + New Polarization: (-0.666359,0.616524,-0.419362) + *** FresnelRefraction *** Photon at Boundary! - Old Momentum Direction: (0.605501,0.53596,-0.588316) - Old Polarization: (-0.795765,0.418184,-0.438041) - New Momentum Direction: (0.605501,-0.53596,-0.588316) - New Polarization: (0.795765,0.418184,0.438041) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1906, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.688486,0.724686,-0.0285968) + Old Polarization: (-0.666359,0.616524,-0.419362) + New Momentum Direction: (0.932684,0.358609,-0.0387398) + New Polarization: (0.326861,-0.885722,-0.329632) + *** FresnelRefraction *** +Track (trackID 1691, parentID 1) is processed with stopping code 2 ### pop requested out of 13 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.917133,-0.170981,0.360046) - Old Polarization: (0.177684,-0.983978,-0.0146679) - New Momentum Direction: (-0.841364,-0.231846,0.488215) - New Polarization: (0.305175,-0.94933,0.0750996) - *** FresnelRefraction *** -Track (trackID 1905, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.597528,0.625364,-0.501877) + Old Polarization: (-0.182107,-0.503709,-0.844461) + New Momentum Direction: (0.597528,-0.625364,-0.501877) + New Polarization: (0.182107,-0.503709,0.844461) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.597528,-0.625364,-0.501877) + Old Polarization: (0.182107,-0.503709,0.844461) + New Momentum Direction: (-0.597528,-0.625364,-0.501877) + New Polarization: (0.182107,0.503709,-0.844461) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.597528,-0.625364,-0.501877) + Old Polarization: (0.182107,0.503709,-0.844461) + New Momentum Direction: (-0.597528,-0.625364,0.501877) + New Polarization: (-0.182107,-0.503709,-0.844461) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.597528,-0.625364,0.501877) + Old Polarization: (-0.182107,-0.503709,-0.844461) + New Momentum Direction: (-0.597528,0.625364,0.501877) + New Polarization: (0.182107,-0.503709,0.844461) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.597528,0.625364,0.501877) + Old Polarization: (0.182107,-0.503709,0.844461) + New Momentum Direction: (0.597528,0.625364,0.501877) + New Polarization: (0.182107,0.503709,-0.844461) + *** TotalInternalReflection *** + +** Photon absorbed! ** +Track (trackID 1690, parentID 1) is processed with stopping code 2 ### pop requested out of 12 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1904, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.921812,0.386864,0.0244681) + Old Polarization: (0.383314,-0.919116,0.0910845) + New Momentum Direction: (0.850852,0.524357,0.0331642) + New Polarization: (-0.522268,0.837197,0.162288) + *** FresnelRefraction *** +Track (trackID 1689, parentID 1) is processed with stopping code 2 ### pop requested out of 11 stacked tracks. - -** Photon absorbed! ** -Track (trackID 1903, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.231841,0.92481,0.301623) + Old Polarization: (-0.820133,0.0190913,0.571855) + New Momentum Direction: (0.314821,0.856232,0.409579) + New Polarization: (-0.75503,-0.0355773,0.654725) + *** FresnelRefraction *** +Track (trackID 1688, parentID 1) is processed with stopping code 2 ### pop requested out of 10 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.620464,0.609273,0.493772) - Old Polarization: (0.77376,0.578165,0.258885) - New Momentum Direction: (0.620464,0.609273,0.493772) - New Polarization: (0.77376,-0.578165,-0.258885) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.620464,0.609273,0.493772) - Old Polarization: (0.77376,-0.578165,-0.258885) - New Momentum Direction: (0.620464,-0.609273,0.493772) - New Polarization: (-0.77376,-0.578165,0.258885) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.620464,-0.609273,0.493772) - Old Polarization: (-0.77376,-0.578165,0.258885) - New Momentum Direction: (0.620464,-0.609273,-0.493772) - New Polarization: (0.77376,0.578165,0.258885) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.620464,-0.609273,-0.493772) - Old Polarization: (0.77376,0.578165,0.258885) - New Momentum Direction: (-0.620464,-0.609273,-0.493772) - New Polarization: (0.77376,-0.578165,-0.258885) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.620464,-0.609273,-0.493772) - Old Polarization: (0.77376,-0.578165,-0.258885) - New Momentum Direction: (-0.620464,0.609273,-0.493772) - New Polarization: (-0.77376,-0.578165,0.258885) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.620464,0.609273,-0.493772) - Old Polarization: (-0.77376,-0.578165,0.258885) - New Momentum Direction: (-0.620464,0.609273,0.493772) - New Polarization: (0.77376,0.578165,0.258885) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1902, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.183348,0.946964,-0.2639) + Old Polarization: (-0.908567,0.0607356,-0.413299) + New Momentum Direction: (0.248541,0.900141,-0.357734) + New Polarization: (-0.663658,-0.110763,-0.739791) + *** FresnelRefraction *** +Track (trackID 1687, parentID 1) is processed with stopping code 2 ### pop requested out of 9 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.999535,-0.0301643,0.00435897) - Old Polarization: (0.0179835,-0.699188,-0.714712) - New Momentum Direction: (-0.999142,-0.0409825,0.00592229) - New Polarization: (0.0291772,-0.798266,-0.601597) + Old Momentum Direction: (0.802258,0.468445,-0.370057) + Old Polarization: (0.176603,-0.778371,-0.602454) + New Momentum Direction: (0.589025,0.634122,-0.500938) + New Polarization: (-0.324829,-0.381814,-0.865277) *** FresnelRefraction *** -Track (trackID 1901, parentID 1) is processed with stopping code 2 +Track (trackID 1686, parentID 1) is processed with stopping code 2 ### pop requested out of 8 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.838333,-0.115863,0.532704) - Old Polarization: (0.333283,-0.882205,0.33262) - New Momentum Direction: (-0.675101,-0.156789,0.720871) - New Polarization: (0.541273,-0.769217,0.339602) + Old Momentum Direction: (0.781407,0.510533,0.358831) + Old Polarization: (0.146568,-0.709098,0.689709) + New Momentum Direction: (0.53999,0.688599,0.483986) + New Polarization: (-0.273854,-0.399998,0.874646) *** FresnelRefraction *** -Track (trackID 1900, parentID 1) is processed with stopping code 2 +Track (trackID 1685, parentID 1) is processed with stopping code 2 ### pop requested out of 7 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.587425,0.629962,-0.508016) + Old Polarization: (-0.201214,-0.494336,-0.845663) + New Momentum Direction: (0.587425,-0.629962,-0.508016) + New Polarization: (0.201214,-0.494336,0.845663) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (0.587425,-0.629962,-0.508016) + Old Polarization: (0.201214,-0.494336,0.845663) + New Momentum Direction: (-0.587425,-0.629962,-0.508016) + New Polarization: (0.201214,0.494336,-0.845663) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.587425,-0.629962,-0.508016) + Old Polarization: (0.201214,0.494336,-0.845663) + New Momentum Direction: (-0.587425,-0.629962,0.508016) + New Polarization: (-0.201214,-0.494336,-0.845663) + *** TotalInternalReflection *** +Scattering Photon! +Old Momentum Direction: (-0.587425,-0.629962,0.508016) +Old Polarization: (-0.201214,-0.494336,-0.845663) +New Polarization: (0.157876,-0.33799,-0.927814) +Polarization Change: (0.157876,-0.33799,-0.927814) +New Momentum Direction: (-0.883616,-0.467782,0.0200516) +Momentum Change: (-0.883616,-0.467782,0.0200516) + Photon at Boundary! + Old Momentum Direction: (-0.883616,-0.467782,0.0200516) + Old Polarization: (0.157876,-0.33799,-0.927814) + New Momentum Direction: (-0.883616,0.467782,0.0200516) + New Polarization: (-0.157876,-0.33799,0.927814) + *** TotalInternalReflection *** + Photon at Boundary! + Old Momentum Direction: (-0.883616,0.467782,0.0200516) + Old Polarization: (-0.157876,-0.33799,0.927814) + New Momentum Direction: (-0.773572,0.633127,0.0271391) + New Polarization: (0.280914,0.304211,0.910243) + *** FresnelRefraction *** +Track (trackID 1684, parentID 1) is processed with stopping code 2 +### pop requested out of 6 stacked tracks. ** Photon absorbed! ** -Track (trackID 1899, parentID 1) is processed with stopping code 2 -### pop requested out of 6 stacked tracks. - Photon at Boundary! - Old Momentum Direction: (-0.967809,0.220915,-0.120596) - Old Polarization: (0.0742199,-0.207341,-0.975449) - New Momentum Direction: (-0.940184,0.299014,-0.16323) - New Polarization: (0.131793,-0.122584,-0.983669) - *** FresnelRefraction *** -Track (trackID 1898, parentID 1) is processed with stopping code 2 +Track (trackID 1683, parentID 1) is processed with stopping code 2 ### pop requested out of 5 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.953811,0.277558,-0.114919) - Old Polarization: (0.0924305,-0.0928357,-0.991382) - New Momentum Direction: (-0.914748,0.373294,-0.154557) - New Polarization: (0.161969,-0.0116385,-0.986727) + Old Momentum Direction: (0.395816,0.775682,-0.491576) + Old Polarization: (-0.536365,-0.239229,-0.809371) + New Momentum Direction: (0.536897,0.516848,-0.66679) + New Polarization: (-0.505952,-0.435198,-0.744725) *** FresnelRefraction *** -Track (trackID 1897, parentID 1) is processed with stopping code 2 +Track (trackID 1682, parentID 1) is processed with stopping code 2 ### pop requested out of 4 stacked tracks. -Scattering Photon! -Old Momentum Direction: (-0.695098,0.690062,0.201624) -Old Polarization: (0.616217,0.716346,-0.3273) -New Polarization: (-0.0282555,0.853389,-0.520508) -Polarization Change: (-0.0282555,0.853389,-0.520508) -New Momentum Direction: (-0.989019,-0.0994331,-0.109335) -Momentum Change: (-0.989019,-0.0994331,-0.109335) Photon at Boundary! - Old Momentum Direction: (-0.989019,-0.0994331,-0.109335) - Old Polarization: (-0.0282555,0.853389,-0.520508) - New Momentum Direction: (-0.97964,-0.135074,-0.148526) - New Polarization: (0.0514238,0.546304,-0.836007) + Old Momentum Direction: (0.913132,0.387318,-0.127176) + Old Polarization: (0.364057,-0.915143,-0.173137) + New Momentum Direction: (0.832929,0.525763,-0.172635) + New Polarization: (-0.519656,0.635893,-0.570612) *** FresnelRefraction *** -Track (trackID 1896, parentID 1) is processed with stopping code 2 +Track (trackID 1681, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.605602,0.473672,0.639439) - Old Polarization: (0.792964,0.291807,0.534843) - New Momentum Direction: (-0.605602,0.473672,-0.639439) - New Polarization: (-0.792964,-0.291807,0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.605602,0.473672,-0.639439) - Old Polarization: (-0.792964,-0.291807,0.534843) - New Momentum Direction: (0.605602,0.473672,-0.639439) - New Polarization: (-0.792964,0.291807,-0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.605602,0.473672,-0.639439) - Old Polarization: (-0.792964,0.291807,-0.534843) - New Momentum Direction: (0.605602,-0.473672,-0.639439) - New Polarization: (0.792964,0.291807,0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.605602,-0.473672,-0.639439) - Old Polarization: (0.792964,0.291807,0.534843) - New Momentum Direction: (-0.605602,-0.473672,-0.639439) - New Polarization: (0.792964,-0.291807,-0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.605602,-0.473672,-0.639439) - Old Polarization: (0.792964,-0.291807,-0.534843) - New Momentum Direction: (0.605602,-0.473672,-0.639439) - New Polarization: (0.792964,0.291807,0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.605602,-0.473672,-0.639439) - Old Polarization: (0.792964,0.291807,0.534843) - New Momentum Direction: (0.605602,-0.473672,0.639439) - New Polarization: (-0.792964,-0.291807,0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.605602,-0.473672,0.639439) - Old Polarization: (-0.792964,-0.291807,0.534843) - New Momentum Direction: (0.605602,0.473672,0.639439) - New Polarization: (0.792964,-0.291807,-0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.605602,0.473672,0.639439) - Old Polarization: (0.792964,-0.291807,-0.534843) - New Momentum Direction: (0.605602,0.473672,-0.639439) - New Polarization: (-0.792964,0.291807,-0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.605602,0.473672,-0.639439) - Old Polarization: (-0.792964,0.291807,-0.534843) - New Momentum Direction: (-0.605602,0.473672,-0.639439) - New Polarization: (-0.792964,-0.291807,0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.605602,0.473672,-0.639439) - Old Polarization: (-0.792964,-0.291807,0.534843) - New Momentum Direction: (0.605602,0.473672,-0.639439) - New Polarization: (-0.792964,0.291807,-0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.605602,0.473672,-0.639439) - Old Polarization: (-0.792964,0.291807,-0.534843) - New Momentum Direction: (0.605602,-0.473672,-0.639439) - New Polarization: (0.792964,0.291807,0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.605602,-0.473672,-0.639439) - Old Polarization: (0.792964,0.291807,0.534843) - New Momentum Direction: (-0.605602,-0.473672,-0.639439) - New Polarization: (0.792964,-0.291807,-0.534843) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (-0.605602,-0.473672,-0.639439) - Old Polarization: (0.792964,-0.291807,-0.534843) - New Momentum Direction: (-0.605602,-0.473672,0.639439) - New Polarization: (-0.792964,0.291807,-0.534843) - *** TotalInternalReflection *** - -** Photon absorbed! ** -Track (trackID 1895, parentID 1) is processed with stopping code 2 + Old Momentum Direction: (0.513186,0.682484,-0.520438) + Old Polarization: (-0.331427,-0.401762,-0.853665) + New Momentum Direction: (0.697311,0.116945,-0.707165) + New Polarization: (-0.415673,-0.737775,-0.531887) + *** FresnelRefraction *** +Track (trackID 1680, parentID 1) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.642928,0.292805,0.707749) - Old Polarization: (0.72555,-0.0632307,0.685258) - New Momentum Direction: (-0.869632,0.396052,0.29476) - New Polarization: (-0.197732,0.267658,-0.943006) + Old Momentum Direction: (0.140987,0.986274,-0.0859481) + Old Polarization: (-0.985925,0.131995,-0.102616) + New Momentum Direction: (0.190893,0.974688,-0.116372) + New Polarization: (0.475666,-0.195553,-0.857614) *** FresnelRefraction *** -Track (trackID 1894, parentID 1) is processed with stopping code 2 + Photon at Boundary! + Old Momentum Direction: (0.190893,0.974688,-0.116372) + Old Polarization: (0.475666,-0.195553,-0.857614) + New Momentum Direction: (0.688764,0.719873,-0.0859481) + New Polarization: (-0.316508,0.191917,-0.928973) + *** FresnelRefraction *** + Photon at Boundary! + Old Momentum Direction: (0.688764,0.719873,-0.0859481) + Old Polarization: (-0.316508,0.191917,-0.928973) + New Momentum Direction: (0.932569,0.341721,-0.116372) + New Polarization: (0.0213041,-0.373901,-0.927224) + *** FresnelRefraction *** +Track (trackID 1679, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. - Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 2 + Exiting from G4Cerenkov::DoIt -- NumberOfSecondaries = 4 Track (trackID 1, parentID 0) is processed with stopping code 4 +### pop requested out of 5 stacked tracks. + +** Photon absorbed! ** +Track (trackID 1696, parentID 1) is processed with stopping code 2 +### pop requested out of 4 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.428371,0.891944,-0.144689) + Old Polarization: (-0.472462,0.0845974,-0.877282) + New Momentum Direction: (0.582305,0.78882,-0.196682) + New Polarization: (-0.118797,-0.156771,-0.980464) + *** FresnelRefraction *** +Track (trackID 1695, parentID 1) is processed with stopping code 2 ### pop requested out of 3 stacked tracks. Photon at Boundary! - Old Momentum Direction: (-0.665322,0.260052,0.699799) - Old Polarization: (-0.477895,-0.868502,-0.131606) - New Momentum Direction: (-0.902155,0.352622,0.248543) - New Polarization: (-0.414508,-0.868188,-0.272822) - *** FresnelRefraction *** -Track (trackID 1908, parentID 1) is processed with stopping code 2 -### pop requested out of 2 stacked tracks. + Old Momentum Direction: (0.769934,0.633795,-0.0742072) + Old Polarization: (0.405147,-0.575361,-0.710504) + New Momentum Direction: (-0.769934,0.633795,-0.0742072) + New Polarization: (-0.09193,0.00491017,0.995753) + *** FresnelReflection *** Photon at Boundary! - Old Momentum Direction: (-0.651249,0.497179,0.573313) - Old Polarization: (-0.46712,0.332757,-0.819189) - New Momentum Direction: (0.651249,0.497179,0.573313) - New Polarization: (-0.46712,-0.332757,0.819189) - *** TotalInternalReflection *** - Photon at Boundary! - Old Momentum Direction: (0.651249,0.497179,0.573313) - Old Polarization: (-0.46712,-0.332757,0.819189) - New Momentum Direction: (0.651249,0.497179,-0.573313) - New Polarization: (0.46712,0.332757,0.819189) + Old Momentum Direction: (-0.769934,0.633795,-0.0742072) + Old Polarization: (-0.09193,0.00491017,0.995753) + New Momentum Direction: (-0.769934,-0.633795,-0.0742072) + New Polarization: (0.09193,0.00491017,-0.995753) *** TotalInternalReflection *** ** Photon absorbed! ** -Track (trackID 1907, parentID 1) is processed with stopping code 2 +Track (trackID 1694, parentID 1) is processed with stopping code 2 +### pop requested out of 2 stacked tracks. + Photon at Boundary! + Old Momentum Direction: (0.244214,0.927442,0.283216) + Old Polarization: (-0.95858,0.186738,0.215066) + New Momentum Direction: (0.244214,-0.927442,0.283216) + New Polarization: (0.916459,0.125276,-0.380012) + *** FresnelReflection *** + Photon at Boundary! + Old Momentum Direction: (0.244214,-0.927442,0.283216) + Old Polarization: (0.916459,0.125276,-0.380012) + New Momentum Direction: (0.330848,-0.862163,0.383686) + New Polarization: (0.927389,0.221817,-0.301243) + *** FresnelRefraction *** +Track (trackID 1693, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. Track (trackID 1, parentID 0) is processed with stopping code 2 ### pop requested out of 2 stacked tracks. -Track (trackID 1910, parentID 1) is processed with stopping code 2 +Track (trackID 1698, parentID 1) is processed with stopping code 2 ### pop requested out of 1 stacked tracks. -Track (trackID 1909, parentID 1) is processed with stopping code 2 +Track (trackID 1697, parentID 1) is processed with stopping code 2 ### pop requested out of 0 stacked tracks. ### 0 waiting tracks are re-classified to 0 urgent tracks and 0 waiting tracks. NULL returned from G4StackManager. Terminate current event processing. -number of event = 1 User=2.84s Real=3.22s Sys=0.3s -exit +number of event = 1 User=2.19s Real=5.11s Sys=2.36s diff --git a/examples/novice/N06/src/ExN06DetectorConstruction.cc b/examples/novice/N06/src/ExN06DetectorConstruction.cc index 906e6b5e81..a92251c3cf 100644 --- a/examples/novice/N06/src/ExN06DetectorConstruction.cc +++ b/examples/novice/N06/src/ExN06DetectorConstruction.cc @@ -204,8 +204,8 @@ G4VPhysicalVolume* ExN06DetectorConstruction::Construct() // = new G4PVPlacement(rot2,G4ThreeVector(0,2.5*m,0),"Bubble", // bubbleAir_log,waterTank_phys,false,0); - G4VPhysicalVolume * bubbleAir_phys - = new G4PVPlacement(0,G4ThreeVector(0,2.5*m,0),"Bubble", +// G4VPhysicalVolume * bubbleAir_phys = + new G4PVPlacement(0,G4ThreeVector(0,2.5*m,0),"Bubble", bubbleAir_log,waterTank_phys,false,0); // ------------- Surfaces -------------- @@ -239,9 +239,9 @@ G4VPhysicalVolume* ExN06DetectorConstruction::Construct() if( AirSurface->GetLogicalVolume() == bubbleAir_log ) G4cout << " Equal " << G4endl; - G4LogicalBorderSurface * Tmp1Surface = WaterSurface-> - GetSurface(waterTank_phys,expHall_phys); - +// G4LogicalBorderSurface * Tmp1Surface = WaterSurface-> +// GetSurface(waterTank_phys,expHall_phys); +// // if (Tmp1Surface == *WaterSurface) G4cout << " Equal " << G4endl; G4LogicalSkinSurface * Tmp2Surface = AirSurface->GetSurface(bubbleAir_log); diff --git a/source/GNUmakefile b/source/GNUmakefile index f3ed3c5bc2..dfad4987ab 100644 --- a/source/GNUmakefile +++ b/source/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.28 2001/06/26 02:14:39 morita Exp $ +# $Id: GNUmakefile,v 1.35 2001/12/13 11:38:48 gcosmo Exp $ # ----------------------------------------------------------------- # "gmake" makes default libraries for each subdomain. # "gmake global" makes global libraries for each subdomain. @@ -16,7 +16,7 @@ MAKEFLAGS= --no-print-directory SUBDIR1 = global particles processes geometry digits+hits SUBDIR2 = event tracking track materials run graphics_reps intercoms parameterisations readout -SUBDIR3 = analysis g3tog4 interfaces visualization +SUBDIR3 = g3tog4 interfaces visualization SUBDIR4 = persistency ifndef G4INSTALL @@ -59,7 +59,7 @@ endif @for dir in $(SUBDIR2); do (cd $$dir && $(MAKE)); done;: @for dir in $(SUBDIR3); do (cd $$dir && $(MAKE)); done;: ifdef G4USE_HEPODBMS - @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE) global); done;: + @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE) && $(MAKE) global); done;: endif @@ -111,14 +111,18 @@ includes: @for dir in $(SUBDIR1); do (cd $$dir && $(MAKE) $@); done @for dir in $(SUBDIR2); do (cd $$dir && $(MAKE) $@); done @for dir in $(SUBDIR3); do (cd $$dir && $(MAKE) $@); done +ifdef G4USE_HEPODBMS @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE) $@); done +endif clean_libs: @echo Removing all libraries ... @for dir in $(SUBDIR1); do (cd $$dir && $(MAKE) clean_libs); done @for dir in $(SUBDIR2); do (cd $$dir && $(MAKE) clean_libs); done @for dir in $(SUBDIR3); do (cd $$dir && $(MAKE) clean_libs); done +ifdef G4USE_HEPODBMS @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE) $@ cleandb); done +endif @rm -rf $(G4LIBDIR)/libname.map clean: @@ -126,6 +130,10 @@ clean: @rm -rf $(G4TMPDIR) @rm -rf $(G4LIBDIR) @rm -rf $(G4BINDIR) + @rm -rf $(G4INSTALL)/.config/bin/$(G4SYSTEM) +ifdef G4USE_HEPODBMS + @for dir in $(SUBDIR4); do (cd $$dir && $(MAKE) $@ cleandb); done +endif ifdef CFRONT @rm -rf $(G4TREP) endif @@ -142,3 +150,9 @@ clean_all: @rm -rf $(G4BIN) @echo Removing $(G4INCLUDE) ... @rm -rf $(G4INCLUDE) +ifdef G4USE_HEPODBMS + @echo Removing ODBMS federations and directories ... + @rm -rf $(G4INSTALL)/exampleSchema $(G4INSTALL)/exampleFD +endif + @echo Removing installation configurations ... + @rm -rf $(G4INSTALL)/.config diff --git a/source/analysis/GNUmakefile b/source/analysis/GNUmakefile deleted file mode 100644 index ed38f86bda..0000000000 --- a/source/analysis/GNUmakefile +++ /dev/null @@ -1,51 +0,0 @@ -# $Id: GNUmakefile,v 1.4 2000/12/12 16:29:24 gunter Exp $ -# ----------------------------------------------------------------------- -# GNUmakefile for visualization and modeling. John Allison, 5/7/95. -# Modeling is always made. Others by environment. John Allison 4/7/98. -# ----------------------------------------------------------------------- - -MAKEFLAGS= --no-print-directory - -name := G4analysis - -ifndef G4INSTALL - G4INSTALL = ../.. -endif - -include $(G4INSTALL)/config/architecture.gmk -include $(G4INSTALL)/config/analysis.gmk - -G4LIBDIR := $(G4LIB)/$(G4SYSTEM) -G4TMPDIR := $(G4TMP)/$(G4SYSTEM)/$(name) - -SUBDIRS += management -SUBLIBS += G4analysis_management - -ifdef G4ANALYSIS_BUILD_LIZARD - SUBDIRS += Lizard - SUBLIBS += G4Lizard -endif - -ifdef G4ANALYSIS_BUILD_JAS - SUBDIRS += jas - SUBLIBS += G4jas -endif - -ifdef G4ANALYSIS_BUILD_LAB - SUBDIRS += Lab - SUBLIBS += G4Lab -endif - -.PHONY: granular glob global clean - -granular: - @for dir in $(SUBDIRS); do (cd $$dir; $(MAKE)); done - -includes: - @for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) $@ ); done - -glob global: - @echo "ERROR: The global target not relevant for the analysis category." - -clean: - @for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) clean); done diff --git a/source/analysis/Lab/GNUmakefile b/source/analysis/Lab/GNUmakefile deleted file mode 100644 index 9e4df2df33..0000000000 --- a/source/analysis/Lab/GNUmakefile +++ /dev/null @@ -1,19 +0,0 @@ -# $Id: GNUmakefile,v 1.1.1.1 2000/11/07 14:31:38 barrand Exp $ - -name := G4Lab - -ifndef G4INSTALL - G4INSTALL = ../../.. -endif - -include $(G4INSTALL)/config/architecture.gmk -include $(G4INSTALL)/config/analysis.gmk -include $(G4INSTALL)/config/interactivity.gmk - -CPPFLAGS += -I$(G4BASE)/global/management/include - -ifdef G4ANALYSIS_BUILD_OPEN_SCIENTIST -# CPPFLAGS += -endif - -include $(G4INSTALL)/config/common.gmk diff --git a/source/analysis/Lab/include/G4LabSystem.hh b/source/analysis/Lab/include/G4LabSystem.hh deleted file mode 100644 index 3d509d9eea..0000000000 --- a/source/analysis/Lab/include/G4LabSystem.hh +++ /dev/null @@ -1,71 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LabSystem.hh,v 1.2.4.1 2001/06/28 19:07:46 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Guy Barrand 14 September 2000 - -#ifndef G4LABSYSTEM_H -#define G4LABSYSTEM_H - -#if defined(G4ANALYSIS_BUILD_LAB) || defined(G4ANALYSIS_USE_LAB) - -#include "G4VAnalysisSystem.hh" - -class IHistogramManager; -class IStorageSystemManager; -class ICloud; -class ICloudFactory; -class ICloudManager; -class ITuple; -class ITupleManager; -class ISession; - -class G4LabSystem : public G4VAnalysisSystem { -public: // I methods : - virtual const G4String& GetName() const; - virtual IHistogramFactory* GetHistogramFactory(); - virtual ICloudFactory* GetCloudFactory(); - virtual ITuple* CreateTuple(const G4String&,const G4String&); - // - virtual void Store(IHistogram* = 0,const G4String& = ""); - virtual void Plot(IHistogram*); - virtual void Plot(ICloud*); -public: - G4LabSystem(const G4String& name = "Lab"); - virtual ~G4LabSystem(); -private: - G4String fName; - IStorageSystemManager* fStorageManager; - IHistogramManager* fHistogramManager; - ICloudManager* fCloudManager; - ITupleManager* fTupleManager; - ISession* fSession; -}; - -#endif - -#endif - diff --git a/source/analysis/Lab/src/G4LabSystem.cc b/source/analysis/Lab/src/G4LabSystem.cc deleted file mode 100644 index 0fea63ebc9..0000000000 --- a/source/analysis/Lab/src/G4LabSystem.cc +++ /dev/null @@ -1,183 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LabSystem.cc,v 1.2.4.1 2001/06/28 19:07:46 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Guy Barrand 14 September 2000 - -#ifdef G4ANALYSIS_BUILD_LAB - -#include - -#include "G4ios.hh" - -#include "G4LabSystem.hh" - -#ifdef G4ANALYSIS_LAB_VISUALIZATION -#include -#include -#include -#include -BegNameSpace(Lib) -#include -EndNameSpace -BegNameSpace(OnX) -#include -#include -#include -EndNameSpace -#endif - -G4LabSystem::G4LabSystem ( - const G4String& aName -) -:fName(aName) -,fStorageManager(0) -,fHistogramManager(0) -,fCloudManager(0) -,fTupleManager(0) -,fSession(0) -{ -#ifdef G4ANALYSIS_LAB_VISUALIZATION - fSession = new OnX::Session; - if(fSession) { - OnX::XmUI* gui = new OnX::XmUI(fSession,0,0); - if(gui) { - fSession->addManager(gui); - gui->executeCreateCallbacks(); - //gui->steer(); - } - } - fHistogramManager = - (IHistogramManager*)fSession->findManager("HistogramManager"); - if(!fHistogramManager) { - G4cout << "Can't find the histogram manager" << G4std::endl; - } - fCloudManager = - (ICloudManager*)fSession->findManager("CloudManager"); - if(!fCloudManager) { - G4cout << "Can't find the cloud manager" << G4std::endl; - } - fTupleManager = - (ITupleManager*)fSession->findManager("TupleManager"); - if(!fTupleManager) { - G4cout << "Can't find the tuple manager" << G4std::endl; - } - fStorageManager = - (IStorageSystemManager*)fSession->findManager("StorageManager"); - if(!fStorageManager) { - G4cout << "Can't find the storage manager" << G4std::endl; - } -#else - fHistogramManager = new Lab::HistogramManager(); - fCloudManager = new Lab::CloudManager(); - fTupleManager = new Lab::TupleManager(); - fStorageManager = new Lab::StorageManager(); -#endif -} -G4LabSystem::~G4LabSystem (){ -#ifdef G4ANALYSIS_LAB_VISUALIZATION - delete fSession; // Will delete the gui object and the managers. -#else - delete fHistogramManager; - delete fCloudManager; - delete fTupleManager; - delete fStorageManager; -#endif - Lib::Memory::dump(); -} -const G4String& G4LabSystem::GetName() const { - return fName; -} -IHistogramFactory* G4LabSystem::GetHistogramFactory() { - return fHistogramManager; -} -ICloudFactory* G4LabSystem::GetCloudFactory() { - return fCloudManager; -} -ITuple* G4LabSystem::CreateTuple( - const G4String& aStorage -,const G4String& aSID -){ - if(!fTupleManager) return 0; - Lab::RioStorage* storageRio = new Lab::RioStorage(aStorage, - "RECREATE", - fStorageManager); - return new Lab::RioTuple(storageRio,aSID,fTupleManager); -} - -void G4LabSystem::Store(IHistogram*,const G4String&){ - if(!fHistogramManager) return; - Lab::RioStorage* storage = new Lab::RioStorage("g4osc.root","RECREATE"); - //rioDB->createDirectory("histograms"); - //rioDB->cd("histograms"); - int number = fHistogramManager->size(); - for(int count=0;counttitle().c_str(); - //G4cout << "G4Lab : store : " << title << G4std::endl; - fHistogramManager->store(histo,storage,title); - } - storage->commit(); - delete storage; - //if(verboseLevel>1) G4cout << "Analysis is deleting." << G4endl; - //clear(); -} -void G4LabSystem::Plot(IHistogram* aHistogram){ - if(!fHistogramManager) return; -#ifdef G4ANALYSIS_LAB_VISUALIZATION - if(fSession) { - IUI* ui = (IUI*)fSession->findManager("UI_Manager"); - if(ui) { - IViewer* viewer = ui->getCurrentViewer(); - if(viewer) { - viewer->erase("region"); - fHistogramManager->visualize(aHistogram,viewer); - viewer->next(); - ui->synchronize(); - } - } - } -#endif -} -void G4LabSystem::Plot(ICloud* aCloud){ - if(!fCloudManager) return; -#ifdef G4ANALYSIS_LAB_VISUALIZATION - if(fSession) { - IUI* ui = (IUI*)fSession->findManager("UI_Manager"); - if(ui) { - IViewer* viewer = ui->getCurrentViewer(); - if(viewer) { - viewer->erase("region"); - fCloudManager->visualize(aCloud,viewer); - viewer->next(); - ui->synchronize(); - } - } - } -#endif -} - -#endif diff --git a/source/analysis/Lizard/GNUmakefile b/source/analysis/Lizard/GNUmakefile deleted file mode 100644 index 741c3e3141..0000000000 --- a/source/analysis/Lizard/GNUmakefile +++ /dev/null @@ -1,18 +0,0 @@ -# $Id: GNUmakefile,v 1.1.1.1 2000/10/31 21:42:25 barrand Exp $ - -name := G4Lizard - -ifndef G4INSTALL - G4INSTALL = ../../.. -endif - -include $(G4INSTALL)/config/architecture.gmk -include $(G4INSTALL)/config/analysis.gmk - -CPPFLAGS += -I$(G4BASE)/global/management/include - -ifdef G4ANALYSIS_BUILD_LIZARD -# CPPFLAGS += -endif - -include $(G4INSTALL)/config/common.gmk diff --git a/source/analysis/Lizard/src/G4LizardSystem.cc b/source/analysis/Lizard/src/G4LizardSystem.cc deleted file mode 100644 index cb5352dc35..0000000000 --- a/source/analysis/Lizard/src/G4LizardSystem.cc +++ /dev/null @@ -1,144 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LizardSystem.cc,v 1.8.4.1 2001/06/28 19:07:46 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Guy Barrand 14 September 2000 - -#ifdef G4ANALYSIS_BUILD_LIZARD - -#include -#include -//#include - -#ifdef AIDA_DONT_USE_STD -#define AIDA_STD -#else -#define AIDA_STD std -#endif - -// Lizard : -#include -#include "AIDA_Plotter/AIDAPlotter.h" -#include "Interfaces/IVector.h" -#include "Interfaces/IVectorFactory.h" - -#include "G4ios.hh" - -#include "G4LizardSystem.hh" - -G4LizardSystem::G4LizardSystem ( - const G4String& aName -) -:fName(aName) -,fHistogramFactory(0) -,fVectorFactory(0) -,fPlotter(0) -{ - fHistogramFactory = createIHistogramFactory(); - if (fHistogramFactory == 0) { - G4cout << "Can't find the histogram factory." << G4std::endl; - } - - fVectorFactory = createIVectorFactory(); - if (fVectorFactory == 0) { - G4cout << "Can't find the vector factory." << G4std::endl; - } - - fPlotter = createIPlotter(); // create plotter with 1 zone - if (fPlotter == 0) { - G4cout << "Can't create a plotter." << G4std::endl; - } -} -G4LizardSystem::~G4LizardSystem (){ - delete fHistogramFactory; -} -const G4String& G4LizardSystem::GetName() const { - return fName; -} -IHistogramFactory* G4LizardSystem::GetHistogramFactory() { - return fHistogramFactory; -} -void G4LizardSystem::Store(IHistogram* aHistogram,const G4String& aStorageID){ - if (!aHistogram) return; - if (aStorageID == "") return; - - if (aHistogram->dimensions()==1) { - IVector* v = - fVectorFactory->from1D(dynamic_cast(aHistogram)); - if (v == 0) { - G4cerr << "G4LizardSystem::Store> ERROR: could not create vector !" << -G4std::endl; - return; - } - v->toAscii(aStorageID.c_str()); - delete v; // don't forget this ! - } - - if(aHistogram->dimensions()==2) { - IVector* v = - fVectorFactory->from2D(dynamic_cast(aHistogram)); - if (v == 0) { - G4cerr << "G4LizardSystem::Store> ERROR: could not create vector !" << -G4std::endl; - return; - } - v->toAscii(aStorageID.c_str()); - delete v; // don't forget this ! - } -} -void G4LizardSystem::Plot(IHistogram* aHistogram){ - if(!fVectorFactory) return; - if(!fPlotter) return; - if(!aHistogram) return; - - if(aHistogram->dimensions()==1) { - IVector* v = - fVectorFactory->from1D(dynamic_cast(aHistogram)); - if (v == 0) { - G4cerr << "ERROR: could not create vector !" << G4std::endl; - return; - } - fPlotter->plot(v); - fPlotter->refresh(); - delete v; // don't forget this ! - } - - if(aHistogram->dimensions()==2) { - IVector* v = - fVectorFactory->from2D(dynamic_cast(aHistogram)); - if (v == 0) { - G4cerr << "ERROR: could not create vector !" << G4std::endl; - return; - } - fPlotter->plot(v); - fPlotter->refresh(); - delete v; // don't forget this ! - } - - //fPlotter->psPrint("posplot.ps"); -} - -#endif diff --git a/source/analysis/jas/GNUmakefile b/source/analysis/jas/GNUmakefile deleted file mode 100644 index 1e46f0cc35..0000000000 --- a/source/analysis/jas/GNUmakefile +++ /dev/null @@ -1,18 +0,0 @@ -# $Id: GNUmakefile,v 1.2 2000/09/14 12:42:32 barrand Exp $ - -name := G4jas - -ifndef G4INSTALL - G4INSTALL = ../../.. -endif - -include $(G4INSTALL)/config/architecture.gmk -include $(G4INSTALL)/config/analysis.gmk - -CPPFLAGS += -I$(G4BASE)/global/management/include - -ifdef G4ANALYSIS_BUILD_JAS -# CPPFLAGS += -endif - -include $(G4INSTALL)/config/common.gmk diff --git a/source/analysis/jas/include/JasHistogram1D.h b/source/analysis/jas/include/JasHistogram1D.h deleted file mode 100644 index f5c9adc49a..0000000000 --- a/source/analysis/jas/include/JasHistogram1D.h +++ /dev/null @@ -1,81 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -#ifndef JASHISTOGRAM1D_H -#define JASHISTOGRAM1D_H - -#if defined(G4ANALYSIS_BUILD_JAS) - -#include - -#include "JasAxis.h" - -class JasHistogramFactory; - -class JasHistogram1D : public IHistogram1D { -public: // IHistogram IMethods : - virtual std_string title() const; - virtual int dimensions() const; - virtual int entries() const; - virtual int allEntries() const; - virtual int extraEntries() const; - virtual double equivalentBinEntries() const; - virtual double sumBinHeights() const; - virtual double sumAllBinHeights() const; - virtual double sumExtraBinHeights() const; - virtual double minBinHeight() const; - virtual double maxBinHeight() const; - virtual void reset(); - virtual IAnnotation* annotation(); -public: // IHistogram1D IMethods : - // The fill : - virtual void fill(double,double = 1.0); - - // Partition : - virtual int minBin() const; - virtual int maxBin() const; - virtual int coordToIndex(double) const; - - virtual double mean() const; - virtual double rms() const; - - // Bins : - virtual int binEntries(int) const; - virtual double binHeight(int) const; - virtual double binError(int) const; - - // Axis : - virtual const IAxis& xAxis() const; -public: - JasHistogram1D(JasHistogramFactory *factory, const char *title); - virtual ~JasHistogram1D(); -private: - jmethodID fillMethod; - jobject fJasHist; - JNIEnv* fEnv; - JasAxis fAxis; - std_string fTitle; -}; - -#endif - -#endif diff --git a/source/analysis/jas/include/JasHistogram2D.h b/source/analysis/jas/include/JasHistogram2D.h deleted file mode 100644 index c9c58364a8..0000000000 --- a/source/analysis/jas/include/JasHistogram2D.h +++ /dev/null @@ -1,89 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -#ifndef JASHISTOGRAM2D_H -#define JASHISTOGRAM2D_H - -#if defined(G4ANALYSIS_BUILD_JAS) - -#include - -#include "JasAxis.h" - -class JasHistogramFactory; - -class JasHistogram2D : public IHistogram2D { -public: // IHistogram IMethods : - virtual std_string title() const; - virtual int dimensions() const; - virtual int entries() const; - virtual int allEntries() const; - virtual int extraEntries() const; - virtual double equivalentBinEntries() const; - virtual double sumBinHeights() const; - virtual double sumAllBinHeights() const; - virtual double sumExtraBinHeights() const; - virtual double minBinHeight() const; - virtual double maxBinHeight() const; - virtual void reset(); - virtual IAnnotation* annotation(); -public: // IHistogram2D IMethods : - virtual void fill( double x, double y, double weight = 1 ); - virtual int binEntries( int indexX, int indexY ) const; - virtual int binEntriesX( int indexX ) const; - virtual int binEntriesY( int indexY ) const; - virtual double binHeight( int indexX, int indexY ) const; - virtual double binHeightX( int indexX ) const; - virtual double binHeightY( int indexY ) const; - virtual double binError( int indexX, int indexY ) const; - virtual double meanX() const; - virtual double meanY() const; - virtual double rmsX() const; - virtual double rmsY() const; - virtual int minBinX() const; - virtual int minBinY() const; - virtual int maxBinX() const; - virtual int maxBinY() const; - virtual const IAxis& xAxis() const; - virtual const IAxis& yAxis() const; - virtual int coordToIndexX( double coordX ) const; - virtual int coordToIndexY( double coordY ) const; - virtual IHistogram1D* projectionX() const; - virtual IHistogram1D* projectionY() const; - virtual IHistogram1D* sliceX( int indexY ) const; - virtual IHistogram1D* sliceY( int indexX ) const; - virtual IHistogram1D* sliceX( int indexY1, int indexY2 ) const; - virtual IHistogram1D* sliceY( int indexX1, int indexX2 ) const; -public: - JasHistogram2D(JasHistogramFactory *factory, const char *title); - virtual ~JasHistogram2D(); -private: - jmethodID fillMethod; - jobject fJasHist; - JNIEnv* fEnv; - JasAxis fAxis; - std_string fTitle; -}; - -#endif - -#endif diff --git a/source/analysis/jas/src/JasHistogram1D.cc b/source/analysis/jas/src/JasHistogram1D.cc deleted file mode 100644 index fc84b0758e..0000000000 --- a/source/analysis/jas/src/JasHistogram1D.cc +++ /dev/null @@ -1,111 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// JasHistogram.cpp: implementation of the JasHistogram1D class. -////////////////////////////////////////////////////////////////////// - -#ifdef G4ANALYSIS_BUILD_JAS - -#include -#include -#include -#include "JasHistogram1D.h" -#include "JasHistogramFactory.h" - -JasHistogram1D::JasHistogram1D(JasHistogramFactory* factory, const char* title) -:fillMethod(NULL) -,fJasHist(NULL) -,fEnv(NULL) -{ - fEnv = factory->getEnv(); - if(fEnv==NULL) return; - // Create the corresponding Java histogram - jclass cls = fEnv->FindClass("hep/analysis/Histogram"); - if (cls == NULL) { - factory->error("Could not create hep.analysis.Histogram"); - fEnv = 0; - return; - } - jmethodID constructor = - fEnv->GetMethodID(cls, "", "(Ljava/lang/String;)V"); - if (constructor == NULL) { - factory->error("Could not find constructor for hep.analysis.Histogram"); - fEnv = 0; - return; - } - fillMethod = fEnv->GetMethodID(cls,"fill","(D)V"); - if (fillMethod == NULL) { - factory->error("Could not find fill method for hep.analysis.Histogram"); - fEnv = 0; - return; - } - jstring jtitle = fEnv->NewStringUTF(title); - fJasHist = fEnv->NewObject(cls,constructor,jtitle); -} - -JasHistogram1D::~JasHistogram1D() -{ - if(fEnv==NULL) return; - fEnv->DeleteLocalRef(fJasHist); -} - -void JasHistogram1D::fill(double value,double) -{ - if(fEnv==NULL) return; - fEnv->CallVoidMethod(fJasHist,fillMethod,value); -} - -// Today dummy methods.... -#define IWeight double -#define ICoordinate double -#define ISize int -#define IBin int - -// IHistogram : -std_string JasHistogram1D::title() const {return fTitle;} -int JasHistogram1D::dimensions() const {return 1;} -ISize JasHistogram1D::entries() const {return 0;} -ISize JasHistogram1D::allEntries() const {return 0;} -ISize JasHistogram1D::extraEntries() const {return 0;} -IWeight JasHistogram1D::equivalentBinEntries() const {return 0;} -IWeight JasHistogram1D::sumBinHeights() const {return 0;} -IWeight JasHistogram1D::sumAllBinHeights() const {return 0;} -IWeight JasHistogram1D::sumExtraBinHeights() const {return 0;} -IWeight JasHistogram1D::minBinHeight() const {return 0;} -IWeight JasHistogram1D::maxBinHeight() const {return 0;} -void JasHistogram1D::reset() {} -IAnnotation* JasHistogram1D::annotation() {return 0;} -// IHistogram1D : -IBin JasHistogram1D::minBin() const {return 0;} -IBin JasHistogram1D::maxBin() const {return 0;} -IBin JasHistogram1D::coordToIndex(ICoordinate) const {return 0;} -ICoordinate JasHistogram1D::mean() const {return 0;} -ICoordinate JasHistogram1D::rms() const {return 0;} - -// Bins : -ISize JasHistogram1D::binEntries(IBin) const {return 0;} -IWeight JasHistogram1D::binHeight(IBin) const {return 0;} -IWeight JasHistogram1D::binError(IBin) const {return 0;} - -const IAxis& JasHistogram1D::xAxis() const {return fAxis;} - -#endif diff --git a/source/analysis/jas/src/JasHistogram2D.cc b/source/analysis/jas/src/JasHistogram2D.cc deleted file mode 100644 index beea7ad0a3..0000000000 --- a/source/analysis/jas/src/JasHistogram2D.cc +++ /dev/null @@ -1,120 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// JasHistogram.cpp: implementation of the JasHistogram2D class. -////////////////////////////////////////////////////////////////////// - -#ifdef G4ANALYSIS_BUILD_JAS - -#include -#include -#include - -#include "JasHistogram2D.h" -#include "JasHistogramFactory.h" - -JasHistogram2D::JasHistogram2D(JasHistogramFactory* factory, const char* title) -:fillMethod(NULL) -,fJasHist(NULL) -,fEnv(NULL) -{ - fEnv = factory->getEnv(); - if(fEnv==NULL) return; - // Create the corresponding Java histogram - jclass cls = fEnv->FindClass("hep/analysis/Histogram"); - if (cls == NULL) { - factory->error("Could not create hep.analysis.Histogram"); - fEnv = 0; - return; - } - jmethodID constructor = - fEnv->GetMethodID(cls, "", "(Ljava/lang/String;)V"); - if (constructor == NULL) { - factory->error("Could not find constructor for hep.analysis.Histogram"); - fEnv = 0; - return; - } - fillMethod = fEnv->GetMethodID(cls,"fill","(D)V"); - if (fillMethod == NULL) { - factory->error("Could not find fill method for hep.analysis.Histogram"); - fEnv = 0; - return; - } - jstring jtitle = fEnv->NewStringUTF(title); - fJasHist = fEnv->NewObject(cls,constructor,jtitle); -} - -JasHistogram2D::~JasHistogram2D() -{ - if(fEnv==NULL) return; - fEnv->DeleteLocalRef(fJasHist); -} - -void JasHistogram2D::fill(double x,double y, double w) -{ - if(fEnv==NULL) return; - fEnv->CallVoidMethod(fJasHist,fillMethod,x); -} - -// IHistogram : -std_string JasHistogram2D::title() const {return fTitle;} -int JasHistogram2D::dimensions() const {return 1;} -int JasHistogram2D::entries() const {return 0;} -int JasHistogram2D::allEntries() const {return 0;} -int JasHistogram2D::extraEntries() const {return 0;} -double JasHistogram2D::equivalentBinEntries() const {return 0;} -double JasHistogram2D::sumBinHeights() const {return 0;} -double JasHistogram2D::sumAllBinHeights() const {return 0;} -double JasHistogram2D::sumExtraBinHeights() const {return 0;} -double JasHistogram2D::minBinHeight() const {return 0;} -double JasHistogram2D::maxBinHeight() const {return 0;} -void JasHistogram2D::reset() {} -IAnnotation* JasHistogram2D::annotation() {return 0;} - -// IHistogram2D : -int JasHistogram2D::binEntries( int indexX, int indexY ) const {return 0;} -int JasHistogram2D::binEntriesX( int indexX ) const {return 0;} -int JasHistogram2D::binEntriesY( int indexY ) const {return 0;} -double JasHistogram2D::binHeight( int indexX, int indexY ) const {return 0;} -double JasHistogram2D::binHeightX( int indexX ) const {return 0;} -double JasHistogram2D::binHeightY( int indexY ) const {return 0;} -double JasHistogram2D::binError( int indexX, int indexY ) const {return 0;} -double JasHistogram2D::meanX() const {return 0;} -double JasHistogram2D::meanY() const {return 0;} -double JasHistogram2D::rmsX() const {return 0;} -double JasHistogram2D::rmsY() const {return 0;} -int JasHistogram2D::minBinX() const {return 0;} -int JasHistogram2D::minBinY() const {return 0;} -int JasHistogram2D::maxBinX() const {return 0;} -int JasHistogram2D::maxBinY() const {return 0;} -const IAxis& JasHistogram2D::xAxis() const {return fAxis;} -const IAxis& JasHistogram2D::yAxis() const {return fAxis;} -int JasHistogram2D::coordToIndexX( double coordX ) const {return 0;} -int JasHistogram2D::coordToIndexY( double coordY ) const {return 0;} -IHistogram1D* JasHistogram2D::projectionX() const {return 0;} -IHistogram1D* JasHistogram2D::projectionY() const {return 0;} -IHistogram1D* JasHistogram2D::sliceX( int indexY ) const {return 0;} -IHistogram1D* JasHistogram2D::sliceY( int indexX ) const {return 0;} -IHistogram1D* JasHistogram2D::sliceX( int indexY1, int indexY2 ) const {return 0;} -IHistogram1D* JasHistogram2D::sliceY( int indexX1, int indexX2 ) const {return 0;} - -#endif diff --git a/source/analysis/jas/src/JasHistogramFactory.cc b/source/analysis/jas/src/JasHistogramFactory.cc deleted file mode 100644 index af2d5d5278..0000000000 --- a/source/analysis/jas/src/JasHistogramFactory.cc +++ /dev/null @@ -1,141 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// JasHistogramFactory.cpp: implementation of the JasHistogramFactory class. -// -////////////////////////////////////////////////////////////////////// - -#ifdef G4ANALYSIS_BUILD_JAS - -#include -#include -#include - -#include "G4ios.hh" - -#include "JasHistogramFactory.h" -#include "JasHistogram1D.h" - -static JNIEnv* env = 0; -static JavaVM* jvm = 0; - - -JasHistogramFactory::JasHistogramFactory() -:fJob(NULL) -{ - createJVM(); - - if(env==NULL) return; - - const char* title = "G4Job"; - // Create a Job to encapsulate the histograms - jclass cls = env->FindClass("jas/server/HistogramServer"); - if (cls == NULL) { - error("Could not find class jas.server.HistogramServer"); - return; - } - jmethodID constructor = - env->GetMethodID(cls,"","(Ljava/lang/String;)V"); - if (constructor == NULL) { - error("Could not find constructor"); - return; - } - jstring jtitle = env->NewStringUTF(title); - fJob = env->NewObject(cls,constructor,jtitle); - if (fJob == NULL) { - error("Could not create job"); - return; - } -} - -JasHistogramFactory::~JasHistogramFactory() -{ - destroyJVM(); -} -IHistogram1D* JasHistogramFactory::create1D( - const std_string& name -,int,double,double -,int -) -{ - return new JasHistogram1D(this,name.c_str()); -} -IHistogram2D* JasHistogramFactory::create2D( - const std_string& name -,int,double,double -,int,double,double -,int -) -{ - return 0; -} -void JasHistogramFactory::error(const char* msg) -{ - G4cerr << "G4 JasHistogramFactory : Error: " << msg << G4std::endl; - //exit(1); -} -JNIEnv* JasHistogramFactory::getEnv() -{ - return env; -} -void JasHistogramFactory::createJVM() -{ - JavaVMInitArgs vm_args; - JavaVMOption options[2]; - - char* cp = getenv("CLASSPATH"); - if(cp==NULL) { - error("env variable CLASSPATH not setted"); - return; - } - - //char* cp ="c:\\program files\\java analysis studio\\lib\\hep.jar"; - char* opt = new char[strlen(cp)+100]; - strcpy(opt,"-Djava.class.path="); - strcat(opt,cp); - G4cout << "cp=" << opt <DestroyJavaVM(); - jvm = 0; - env = 0; - fJob = 0; -} - -#endif diff --git a/source/analysis/management/GNUmakefile b/source/analysis/management/GNUmakefile deleted file mode 100644 index b28104695d..0000000000 --- a/source/analysis/management/GNUmakefile +++ /dev/null @@ -1,18 +0,0 @@ -# $Id: GNUmakefile,v 1.1.1.1 2000/06/21 12:36:24 barrand Exp $ -# ------------------------------------------------------------- -# GNUmakefile for visualization library. John Allison, 5/7/95. - -name := G4analysis_management - -ifndef G4INSTALL - G4INSTALL = ../../.. -endif - -include $(G4INSTALL)/config/architecture.gmk -include $(G4INSTALL)/config/analysis.gmk -G4TMPDIR = $(G4TMP)/$(G4SYSTEM)/$(name) - -CPPFLAGS += -I$(G4BASE)/global/management/include - -include $(G4INSTALL)/config/common.gmk - diff --git a/source/analysis/management/src/G4AnalysisManager.cc b/source/analysis/management/src/G4AnalysisManager.cc deleted file mode 100644 index 3b6b61f8d5..0000000000 --- a/source/analysis/management/src/G4AnalysisManager.cc +++ /dev/null @@ -1,121 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4AnalysisManager.cc,v 1.10.4.1 2001/06/28 19:07:48 gunter Exp $ -// GEANT4 tag $Name: $ -// -// Guy Barrand 20th Mai 2000 -// -// Class description -// -// This class is a plug-in for various analysis systems -// that follow the AIDA/Histogramming conventions. -// -#ifdef G4ANALYSIS_BUILD - -#include "globals.hh" -#include "G4ios.hh" - -#include "G4VAnalysisSystem.hh" -#include "G4AnalysisManager.hh" - -G4AnalysisManager::G4AnalysisManager(){} -G4AnalysisManager::~G4AnalysisManager(){ - int number = fSystems.size(); - for(int count=0;countGetName()) return fSystems[count]; - } - return 0; -} - -IHistogramFactory* G4AnalysisManager::GetHistogramFactory( - const G4String& aSystem -){ - G4VAnalysisSystem* analysisSystem = FindSystem(aSystem); - if(!analysisSystem) { - G4cerr << "G4AnalysisManager : " << G4std::endl; - G4cerr << " " << aSystem << " unknown analysis system." << G4std::endl; - return 0; - } - // Set it as current system. - fCurrentSystem = analysisSystem; - return analysisSystem->GetHistogramFactory(); -} -void G4AnalysisManager::Store(IHistogram* aHistogram,const G4String& aSID){ - if(!fCurrentSystem) return; - fCurrentSystem->Store(aHistogram,aSID); -} -void G4AnalysisManager::Plot(IHistogram* aHistogram){ - if(!fCurrentSystem) return; - fCurrentSystem->Plot(aHistogram); -} - -// Non AIDA things : -#ifdef G4ANALYSIS_NON_AIDA -ITuple* G4AnalysisManager::CreateTuple( - const G4String& aSystem -,const G4String& aStorage -,const G4String& aSID -){ - G4VAnalysisSystem* analysisSystem = FindSystem(aSystem); - if(!analysisSystem) { - G4cerr << "G4AnalysisManager : " << G4std::endl; - G4cerr << " " << aSystem << " unknown analysis system." << G4std::endl; - return 0; - } - // Set it as current system. - fCurrentSystem = analysisSystem; - return analysisSystem->CreateTuple(aStorage,aSID); -} -ICloudFactory* G4AnalysisManager::GetCloudFactory( - const G4String& aSystem -){ - G4VAnalysisSystem* analysisSystem = FindSystem(aSystem); - if(!analysisSystem) { - G4cerr << "G4AnalysisManager : " << G4std::endl; - G4cerr << " " << aSystem << " unknown analysis system." << G4std::endl; - return 0; - } - // Set it as current system. - fCurrentSystem = analysisSystem; - return analysisSystem->GetCloudFactory(); -} -void G4AnalysisManager::Plot(ICloud* aCloud){ - if(!fCurrentSystem) return; - fCurrentSystem->Plot(aCloud); -} -#endif - -#endif diff --git a/source/digits+hits/History b/source/digits+hits/History index 79e53b372f..8577ee5619 100644 --- a/source/digits+hits/History +++ b/source/digits+hits/History @@ -1,4 +1,4 @@ -$Id: History,v 1.4 2001/02/08 06:11:34 asaim Exp $ +$Id: History,v 1.5 2001/07/13 15:00:02 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,13 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Jul 13, 2001, G.Cosmo (digits+hits-V03-02-00) +- Cleanup of pedantic warnings in Linux-g++ ANSI setup. +- Corrected "int" to "G4int". +- Corrected "NULL" to "0". +- Synchronised with HEAD revision after inclusion of disclaimer + liability. + Feb 8, 2001, M.Asai (digits+hits-V03-00-01) - STL vector classes migration affected files : @@ -37,7 +44,6 @@ Feb 8, 2001, M.Asai (digits+hits-V03-00-01) ./digits+hits/hits/include/G4THitsCollection.hh ./digits+hits/hits/src/G4HCofThisEvent.cc - Nov 4, 99, M.Asai (tag digits+hits-V00-01-00) - Comments are enriched for software reference manual. diff --git a/source/digits+hits/detector/include/G4CollectionNameVector.hh b/source/digits+hits/detector/include/G4CollectionNameVector.hh index 904b335b83..1dc4520ccb 100644 --- a/source/digits+hits/detector/include/G4CollectionNameVector.hh +++ b/source/digits+hits/detector/include/G4CollectionNameVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CollectionNameVector.hh,v 1.1.2.1 2001/06/28 19:07:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CollectionNameVector.hh,v 1.2 2001/07/11 09:58:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4CollectionNameVector_H diff --git a/source/digits+hits/detector/include/G4HCtable.hh b/source/digits+hits/detector/include/G4HCtable.hh index f63a6c1695..3e499bb04a 100644 --- a/source/digits+hits/detector/include/G4HCtable.hh +++ b/source/digits+hits/detector/include/G4HCtable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HCtable.hh,v 1.5.2.1 2001/06/28 19:07:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HCtable.hh,v 1.6 2001/07/11 09:58:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4HCtable_H diff --git a/source/digits+hits/detector/include/G4SDManager.hh b/source/digits+hits/detector/include/G4SDManager.hh index ef6eb6d8ea..07de22c4c3 100644 --- a/source/digits+hits/detector/include/G4SDManager.hh +++ b/source/digits+hits/detector/include/G4SDManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SDManager.hh,v 1.3.2.1 2001/06/28 19:07:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SDManager.hh,v 1.4 2001/07/11 09:58:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4SDManager_h diff --git a/source/digits+hits/detector/include/G4SDStructure.hh b/source/digits+hits/detector/include/G4SDStructure.hh index 02408edb74..223689f302 100644 --- a/source/digits+hits/detector/include/G4SDStructure.hh +++ b/source/digits+hits/detector/include/G4SDStructure.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SDStructure.hh,v 1.5.2.1 2001/06/28 19:07:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SDStructure.hh,v 1.7 2001/07/13 15:00:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4SDStructure_h @@ -32,8 +32,6 @@ #include "globals.hh" // G4VSensitiveDetector #include "G4VSensitiveDetector.hh" -// G4RWTPtrOrderedVector -//#include "g4rw/tpordvec.h" #include "g4std/vector" class G4HCofThisEvent; @@ -50,7 +48,7 @@ class G4SDStructure G4SDStructure(G4String aPath); ~G4SDStructure(); - int operator==(const G4SDStructure &right) const; + G4int operator==(const G4SDStructure &right) const; void AddNewDetector(G4VSensitiveDetector*aSD, G4String treeStructure); void Activate(G4String aName, G4bool sensitiveFlag); @@ -75,9 +73,9 @@ class G4SDStructure inline void SetVerboseLevel(G4int vl) { verboseLevel = vl; - for(int i=0; iSetVerboseLevel(vl); } - for(int j=0; jSetVerboseLevel(vl); } }; diff --git a/source/digits+hits/detector/include/G4SDmessenger.hh b/source/digits+hits/detector/include/G4SDmessenger.hh index dd7b33f631..54bccc9065 100644 --- a/source/digits+hits/detector/include/G4SDmessenger.hh +++ b/source/digits+hits/detector/include/G4SDmessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SDmessenger.hh,v 1.3.2.1 2001/06/28 19:07:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SDmessenger.hh,v 1.4 2001/07/11 09:58:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4SDmessenger_h diff --git a/source/digits+hits/detector/include/G4SensitiveVolumeList.hh b/source/digits+hits/detector/include/G4SensitiveVolumeList.hh index b8f99fba4c..ddd7191bd5 100644 --- a/source/digits+hits/detector/include/G4SensitiveVolumeList.hh +++ b/source/digits+hits/detector/include/G4SensitiveVolumeList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SensitiveVolumeList.hh,v 1.5.2.2 2001/06/28 20:18:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SensitiveVolumeList.hh,v 1.6 2001/07/11 09:58:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1996 diff --git a/source/digits+hits/detector/include/G4SensitiveVolumeList.icc b/source/digits+hits/detector/include/G4SensitiveVolumeList.icc index b7f299dd8e..5d26a66dbd 100644 --- a/source/digits+hits/detector/include/G4SensitiveVolumeList.icc +++ b/source/digits+hits/detector/include/G4SensitiveVolumeList.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SensitiveVolumeList.icc,v 1.4.2.2 2001/06/28 20:18:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SensitiveVolumeList.icc,v 1.5 2001/07/11 09:58:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ----------------------------------------------------------- // Inline functions of GEANT 4 class header file. diff --git a/source/digits+hits/detector/include/G4VReadOutGeometry.hh b/source/digits+hits/detector/include/G4VReadOutGeometry.hh index be0724f709..b7c7e1b743 100644 --- a/source/digits+hits/detector/include/G4VReadOutGeometry.hh +++ b/source/digits+hits/detector/include/G4VReadOutGeometry.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VReadOutGeometry.hh,v 1.2.2.1 2001/06/28 19:07:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VReadOutGeometry.hh,v 1.3 2001/07/11 09:58:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ diff --git a/source/digits+hits/detector/include/G4VSensitiveDetector.hh b/source/digits+hits/detector/include/G4VSensitiveDetector.hh index a14af75bce..a84894a146 100644 --- a/source/digits+hits/detector/include/G4VSensitiveDetector.hh +++ b/source/digits+hits/detector/include/G4VSensitiveDetector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSensitiveDetector.hh,v 1.5.2.1 2001/06/28 19:07:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSensitiveDetector.hh,v 1.7 2001/07/13 15:00:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VSensitiveDetector_h @@ -33,7 +33,6 @@ #include "G4HCofThisEvent.hh" #include "G4VReadOutGeometry.hh" #include "G4TouchableHistory.hh" -//#include "g4rw/tvordvec.h" #include "G4CollectionNameVector.hh" // class description: @@ -60,8 +59,8 @@ class G4VSensitiveDetector const G4VSensitiveDetector & operator=(const G4VSensitiveDetector &right); - int operator==(const G4VSensitiveDetector &right) const; - int operator!=(const G4VSensitiveDetector &right) const; + G4int operator==(const G4VSensitiveDetector &right) const; + G4int operator!=(const G4VSensitiveDetector &right) const; public: // with description virtual void Initialize(G4HCofThisEvent*HCE); @@ -113,7 +112,7 @@ class G4VSensitiveDetector inline G4bool Hit(G4Step*aStep) { G4bool ack = true; - G4TouchableHistory* ROhis = NULL; + G4TouchableHistory* ROhis = 0; if(!isActive()) { ack = false; } else if(ROgeometry) diff --git a/source/digits+hits/detector/src/G4HCtable.cc b/source/digits+hits/detector/src/G4HCtable.cc index f97f865b67..f5a6151d9d 100644 --- a/source/digits+hits/detector/src/G4HCtable.cc +++ b/source/digits+hits/detector/src/G4HCtable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HCtable.cc,v 1.4.2.1 2001/06/28 19:07:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HCtable.cc,v 1.6 2001/07/13 15:00:08 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4HCtable.hh" @@ -33,7 +33,7 @@ G4HCtable::~G4HCtable() {;} G4int G4HCtable::Registor(G4String SDname,G4String HCname) { - for(int i=0;iAddNewDetector(aSD,pathName); - for(int i=0;iGetName(); G4String DCname = aSD->GetCollectionName(i); diff --git a/source/digits+hits/detector/src/G4SDStructure.cc b/source/digits+hits/detector/src/G4SDStructure.cc index d4db332de3..d5257d092d 100644 --- a/source/digits+hits/detector/src/G4SDStructure.cc +++ b/source/digits+hits/detector/src/G4SDStructure.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SDStructure.cc,v 1.4.2.1 2001/06/28 19:07:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SDStructure.cc,v 1.6 2001/07/13 15:00:08 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4SDStructure @@ -33,11 +33,11 @@ G4SDStructure::G4SDStructure(G4String aPath):verboseLevel(0) { pathName = aPath; dirName = aPath; - int i = dirName.length(); + G4int i = dirName.length(); if( i > 1 ) { dirName.remove(i-1); - int isl = dirName.last('/'); + G4int isl = dirName.last('/'); dirName.remove(0,isl+1); dirName += "/"; } @@ -47,7 +47,7 @@ G4SDStructure::~G4SDStructure() { } -int G4SDStructure::operator==(const G4SDStructure &right) const +G4int G4SDStructure::operator==(const G4SDStructure &right) const { return false; } @@ -62,7 +62,7 @@ void G4SDStructure::AddNewDetector(G4VSensitiveDetector*aSD, // First, check if the subdirectoy exists. G4String subD = ExtractDirName( remainingPath ); G4SDStructure* tgtSDS = FindSubDirectory(subD); - if( tgtSDS == NULL ) + if( tgtSDS == 0 ) { // Subdirectory not found. Create a new directory. subD.prepend(pathName); tgtSDS = new G4SDStructure(subD); @@ -73,7 +73,7 @@ void G4SDStructure::AddNewDetector(G4VSensitiveDetector*aSD, else { // The sensitive detector should be kept in this directory. G4VSensitiveDetector* tgtSD = GetSD( aSD->GetName() ); - if( tgtSD != NULL ) + if( tgtSD != 0 ) { G4cout << aSD->GetName() << " had already stored in " << pathName << G4endl; @@ -87,28 +87,28 @@ void G4SDStructure::AddNewDetector(G4VSensitiveDetector*aSD, G4SDStructure* G4SDStructure::FindSubDirectory(G4String subD) { - for( int i=0; idirName ) return structure[i]; } - return NULL; + return 0; } G4VSensitiveDetector* G4SDStructure::GetSD(G4String aSDName) { - for( int i=0; iGetName() ) return tgtSD; } - return NULL; + return 0; } G4String G4SDStructure::ExtractDirName(G4String aName) { G4String subD = aName; - int i = aName.first('/'); - if( i != G4std::string::npos ) subD.remove(i+1); + G4int i = aName.first('/'); + if( i != G4int(G4std::string::npos) ) subD.remove(i+1); return subD; } @@ -116,11 +116,11 @@ void G4SDStructure::Activate(G4String aName, G4bool sensitiveFlag) { G4String aPath = aName; aPath.remove(0,pathName.length()); - if( aPath.first('/') != G4std::string::npos ) + if( aPath.first('/') != G4int(G4std::string::npos) ) { // Command is ordered for a subdirectory. G4String subD = ExtractDirName(aPath); G4SDStructure* tgtSDS = FindSubDirectory(subD); - if( tgtSDS == NULL ) + if( tgtSDS == 0 ) { // The subdirectory is not found G4cout << subD << " is not found in " << pathName << G4endl; } @@ -131,11 +131,11 @@ void G4SDStructure::Activate(G4String aName, G4bool sensitiveFlag) } else if( aPath.isNull() ) { // Command is ordered for all detectors in this directory. - for( int i=0; iActivate(sensitiveFlag); } - for( int j=0;jActivate(G4String("/"),sensitiveFlag); } @@ -143,7 +143,7 @@ void G4SDStructure::Activate(G4String aName, G4bool sensitiveFlag) else { // Command is ordered to a particular detector. G4VSensitiveDetector* tgtSD = GetSD(aPath); - if( tgtSD == NULL ) + if( tgtSD == 0 ) { // The detector is not found. G4cout << aPath << " is not found in " << pathName << G4endl; } @@ -158,14 +158,14 @@ G4VSensitiveDetector* G4SDStructure::FindSensitiveDetector(G4String aName) { G4String aPath = aName; aPath.remove(0,pathName.length()); - if( aPath.first('/') != G4std::string::npos ) + if( aPath.first('/') != G4int(G4std::string::npos) ) { // SD exists in sub-directory G4String subD = ExtractDirName(aPath); G4SDStructure* tgtSDS = FindSubDirectory(subD); - if( tgtSDS == NULL ) + if( tgtSDS == 0 ) { // The subdirectory is not found G4cout << subD << " is not found in " << pathName << G4endl; - return NULL; + return 0; } else { @@ -175,7 +175,7 @@ G4VSensitiveDetector* G4SDStructure::FindSensitiveDetector(G4String aName) else { // SD must exist in this directory G4VSensitiveDetector* tgtSD = GetSD(aPath); - if( tgtSD == NULL ) + if( tgtSD == 0 ) { // The detector is not found. G4cout << aPath << " is not found in " << pathName << G4endl; } @@ -185,7 +185,7 @@ G4VSensitiveDetector* G4SDStructure::FindSensitiveDetector(G4String aName) void G4SDStructure::Initialize(G4HCofThisEvent*HCE) { - int i; + size_t i; // Broadcast to subdirectories. for( i=0; iGetName(); @@ -226,7 +226,7 @@ void G4SDStructure::ListTree() { G4cout << " XXX Inactive "; } G4cout << G4endl; } - for(int j=0; jListTree(); } } diff --git a/source/digits+hits/detector/src/G4SDmessenger.cc b/source/digits+hits/detector/src/G4SDmessenger.cc index ae8d355d28..5f0f349ec6 100644 --- a/source/digits+hits/detector/src/G4SDmessenger.cc +++ b/source/digits+hits/detector/src/G4SDmessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SDmessenger.cc,v 1.2.2.1 2001/06/28 19:07:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SDmessenger.cc,v 1.3 2001/07/11 09:58:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // --------------------------------------------------------------------- diff --git a/source/digits+hits/detector/src/G4SensitiveVolumeList.cc b/source/digits+hits/detector/src/G4SensitiveVolumeList.cc index 46dfb45d25..bc993b1ac8 100644 --- a/source/digits+hits/detector/src/G4SensitiveVolumeList.cc +++ b/source/digits+hits/detector/src/G4SensitiveVolumeList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SensitiveVolumeList.cc,v 1.3.2.2 2001/06/28 20:18:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SensitiveVolumeList.cc,v 1.5 2001/07/13 15:00:09 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file @@ -78,7 +78,7 @@ G4bool G4SensitiveVolumeList::CheckPV(const G4VPhysicalVolume * pvp) const { if (thePhysicalVolumeList.size()==0) return false; - for(int i=0;iGetPreStepPoint()->GetPhysicalVolume(); if((fexcludeList)&&(fexcludeList->CheckPV(PV))) @@ -142,12 +142,12 @@ G4bool G4VReadOutGeometry::FindROTouchable(G4Step*currentStep) // at the safety value only. // checks if volume is sensitive: - G4VPhysicalVolume* currentVolume; + G4VPhysicalVolume* currentVolume = touchableHistory->GetVolume(); // checks first if a physical volume exists here: - if ( currentVolume = touchableHistory->GetVolume() ) + if ( currentVolume ) { return currentVolume->GetLogicalVolume()-> - GetSensitiveDetector() != NULL; + GetSensitiveDetector() != 0; } // no sensitive volume found: returns false return false; diff --git a/source/digits+hits/detector/src/G4VSensitiveDetector.cc b/source/digits+hits/detector/src/G4VSensitiveDetector.cc index 07f8abe65d..181dbdc8c2 100644 --- a/source/digits+hits/detector/src/G4VSensitiveDetector.cc +++ b/source/digits+hits/detector/src/G4VSensitiveDetector.cc @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: G4VSensitiveDetector.cc,v 1.3.2.1 2001/06/28 19:07:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSensitiveDetector.cc,v 1.5 2001/07/13 15:00:09 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VSensitiveDetector #include "G4VSensitiveDetector.hh" #include "G4SDManager.hh" G4VSensitiveDetector::G4VSensitiveDetector(G4String name) -:verboseLevel(0),active(true),ROgeometry(NULL) +:verboseLevel(0),active(true),ROgeometry(0) { size_t sLast = name.last('/'); if(sLast==G4std::string::npos) @@ -61,12 +61,12 @@ const G4VSensitiveDetector & G4VSensitiveDetector::operator=(const G4VSensitiveD return *this; } -int G4VSensitiveDetector::operator==(const G4VSensitiveDetector &right) const +G4int G4VSensitiveDetector::operator==(const G4VSensitiveDetector &right) const { return false; } -int G4VSensitiveDetector::operator!=(const G4VSensitiveDetector &right) const +G4int G4VSensitiveDetector::operator!=(const G4VSensitiveDetector &right) const { return true; } diff --git a/source/digits+hits/digits/include/G4DCofThisEvent.hh b/source/digits+hits/digits/include/G4DCofThisEvent.hh index 31c2114400..02f01bbfcc 100644 --- a/source/digits+hits/digits/include/G4DCofThisEvent.hh +++ b/source/digits+hits/digits/include/G4DCofThisEvent.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DCofThisEvent.hh,v 1.5.2.1 2001/06/28 19:07:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DCofThisEvent.hh,v 1.7 2001/07/13 15:00:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4DCofThisEvent_h @@ -70,7 +70,7 @@ class G4DCofThisEvent inline G4int GetNumberOfCollections() const { G4int n = 0; - for(int i=0;isize();i++) + for(size_t i=0;isize();i++) { if((*DC)[i]) n++; } diff --git a/source/digits+hits/digits/include/G4TDigiCollection.hh b/source/digits+hits/digits/include/G4TDigiCollection.hh index c2288b85d7..817be7eaa7 100644 --- a/source/digits+hits/digits/include/G4TDigiCollection.hh +++ b/source/digits+hits/digits/include/G4TDigiCollection.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TDigiCollection.hh,v 1.8.2.1 2001/06/28 19:07:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TDigiCollection.hh,v 1.10 2001/07/13 15:00:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4TDigiCollection_h @@ -31,7 +31,6 @@ #include "G4VDigiCollection.hh" #include "G4Allocator.hh" #include "globals.hh" -//#include "g4rw/tpordvec.h" #include "g4std/vector" // class description: @@ -50,7 +49,7 @@ class G4DigiCollection : public G4VDigiCollection G4DigiCollection(); G4DigiCollection(G4String detName,G4String colNam); virtual ~G4DigiCollection(); - int operator==(const G4DigiCollection &right) const; + G4int operator==(const G4DigiCollection &right) const; protected: void* theCollection; @@ -67,7 +66,7 @@ template class G4TDigiCollection : public G4DigiCollection // Constructor. public: virtual ~G4TDigiCollection(); - int operator==(const G4TDigiCollection &right) const; + G4int operator==(const G4TDigiCollection &right) const; inline void *operator new(size_t); inline void operator delete(void* aDC); @@ -84,7 +83,7 @@ template class G4TDigiCollection : public G4DigiCollection inline G4std::vector* GetVector() const { return (G4std::vector*)theCollection; } // Returns a collection vector. - inline int insert(T* aHit) + inline G4int insert(T* aHit) { G4std::vector*theDigiCollection = (G4std::vector*)theCollection; @@ -93,7 +92,7 @@ template class G4TDigiCollection : public G4DigiCollection } // Insert a digi object. Total number of digi objects stored in this // collection is returned. - inline int entries() const + inline G4int entries() const { G4std::vector*theDigiCollection = (G4std::vector*)theCollection; @@ -134,21 +133,21 @@ template G4TDigiCollection::~G4TDigiCollection() G4std::vector * theDigiCollection = (G4std::vector*)theCollection; //theDigiCollection->clearAndDestroy(); - for(int i=0;isize();i++) + for(size_t i=0;isize();i++) { delete (*theDigiCollection)[i]; } theDigiCollection->clear(); delete theDigiCollection; } -template int G4TDigiCollection::operator==(const G4TDigiCollection &right) const +template G4int G4TDigiCollection::operator==(const G4TDigiCollection &right) const { return (collectionName==right.collectionName); } template void G4TDigiCollection::DrawAllDigi() { G4std::vector * theDigiCollection = (G4std::vector*)theCollection; - int n = theDigiCollection->size(); - for(int i=0;isize(); + for(size_t i=0;iDraw(); } } @@ -156,8 +155,8 @@ template void G4TDigiCollection::PrintAllDigi() { G4std::vector * theDigiCollection = (G4std::vector*)theCollection; - int n = theDigiCollection->size(); - for(int i=0;isize(); + for(size_t i=0;iPrint(); } } diff --git a/source/digits+hits/digits/include/G4VDigi.hh b/source/digits+hits/digits/include/G4VDigi.hh index e3af3f88c4..1f6df5df7e 100644 --- a/source/digits+hits/digits/include/G4VDigi.hh +++ b/source/digits+hits/digits/include/G4VDigi.hh @@ -21,13 +21,15 @@ // ******************************************************************** // // -// $Id: G4VDigi.hh,v 1.5.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDigi.hh,v 1.7 2001/07/13 15:00:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VDigi_h #define G4VDigi_h 1 +#include "globals.hh" + // class description: // // This is the base class of digi object. The user should derive this @@ -43,7 +45,7 @@ class G4VDigi G4VDigi(); virtual ~G4VDigi(); - int operator==(const G4VDigi &right) const; + G4int operator==(const G4VDigi &right) const; virtual void Draw(); virtual void Print(); diff --git a/source/digits+hits/digits/include/G4VDigiCollection.hh b/source/digits+hits/digits/include/G4VDigiCollection.hh index c72df5ad8c..bc516dec6e 100644 --- a/source/digits+hits/digits/include/G4VDigiCollection.hh +++ b/source/digits+hits/digits/include/G4VDigiCollection.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VDigiCollection.hh,v 1.5.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDigiCollection.hh,v 1.7 2001/07/13 15:00:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VDigiCollection_h @@ -45,7 +45,7 @@ class G4VDigiCollection G4VDigiCollection(); G4VDigiCollection(G4String DMnam,G4String colNam); virtual ~G4VDigiCollection(); - int operator==(const G4VDigiCollection &right) const; + G4int operator==(const G4VDigiCollection &right) const; virtual void DrawAllDigi(); virtual void PrintAllDigi(); diff --git a/source/digits+hits/digits/src/G4DCofThisEvent.cc b/source/digits+hits/digits/src/G4DCofThisEvent.cc index d2a038a45e..9604053edc 100644 --- a/source/digits+hits/digits/src/G4DCofThisEvent.cc +++ b/source/digits+hits/digits/src/G4DCofThisEvent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DCofThisEvent.cc,v 1.4.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DCofThisEvent.cc,v 1.6 2001/07/13 15:00:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4DCofThisEvent.hh" @@ -37,16 +37,16 @@ G4DCofThisEvent::G4DCofThisEvent() G4DCofThisEvent::G4DCofThisEvent(G4int cap) { DC = new G4std::vector; - for(int i=0;ipush_back((G4VDigiCollection*)NULL); + DC->push_back((G4VDigiCollection*)0); } } G4DCofThisEvent::~G4DCofThisEvent() { //DC->clearAndDestroy(); - for(G4int i=0;isize();i++) + for(size_t i=0;isize();i++) { delete (*DC)[i]; } DC->clear(); delete DC; @@ -54,7 +54,7 @@ G4DCofThisEvent::~G4DCofThisEvent() void G4DCofThisEvent::AddDigiCollection(G4int DCID,G4VDigiCollection * aDC) { - if(DCID>=0 && DCIDsize()) + if(DCID>=0 && DCIDsize())) { (*DC)[DCID] = aDC; } } diff --git a/source/digits+hits/digits/src/G4TDigiCollection.cc b/source/digits+hits/digits/src/G4TDigiCollection.cc index a7b7d51df8..032fc046ac 100644 --- a/source/digits+hits/digits/src/G4TDigiCollection.cc +++ b/source/digits+hits/digits/src/G4TDigiCollection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TDigiCollection.cc,v 1.2.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TDigiCollection.cc,v 1.4 2001/07/13 15:00:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4TDigiCollection.hh" @@ -39,6 +39,6 @@ G4DigiCollection::G4DigiCollection(G4String detName,G4String colNam) G4DigiCollection::~G4DigiCollection() {;} -int G4DigiCollection::operator==(const G4DigiCollection &right) const +G4int G4DigiCollection::operator==(const G4DigiCollection &right) const { return (collectionName==right.collectionName); } diff --git a/source/digits+hits/digits/src/G4VDigi.cc b/source/digits+hits/digits/src/G4VDigi.cc index 7f582dee1a..af0062578b 100644 --- a/source/digits+hits/digits/src/G4VDigi.cc +++ b/source/digits+hits/digits/src/G4VDigi.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VDigi.cc,v 1.4.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDigi.cc,v 1.6 2001/07/13 15:00:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VDigi @@ -35,7 +35,7 @@ G4VDigi::G4VDigi() G4VDigi::~G4VDigi() {;} -int G4VDigi::operator==(const G4VDigi &right) const +G4int G4VDigi::operator==(const G4VDigi &right) const { return false; } void G4VDigi::Draw() diff --git a/source/digits+hits/digits/src/G4VDigiCollection.cc b/source/digits+hits/digits/src/G4VDigiCollection.cc index c4d370da89..53675e9860 100644 --- a/source/digits+hits/digits/src/G4VDigiCollection.cc +++ b/source/digits+hits/digits/src/G4VDigiCollection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VDigiCollection.cc,v 1.4.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDigiCollection.cc,v 1.6 2001/07/13 15:00:15 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VDigiCollection @@ -44,7 +44,7 @@ G4VDigiCollection::G4VDigiCollection(G4String DMnam,G4String colNam) G4VDigiCollection::~G4VDigiCollection() { ; } -int G4VDigiCollection::operator==(const G4VDigiCollection &right) const +G4int G4VDigiCollection::operator==(const G4VDigiCollection &right) const { return ((collectionName==right.collectionName) &&(DMname==right.DMname)); diff --git a/source/digits+hits/hits/include/G4HCofThisEvent.hh b/source/digits+hits/hits/include/G4HCofThisEvent.hh index 59785f8933..6c6cfa19ad 100644 --- a/source/digits+hits/hits/include/G4HCofThisEvent.hh +++ b/source/digits+hits/hits/include/G4HCofThisEvent.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HCofThisEvent.hh,v 1.5.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HCofThisEvent.hh,v 1.7 2001/07/13 15:00:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4HCofThisEvent_h @@ -31,7 +31,6 @@ #include "globals.hh" #include "G4Allocator.hh" #include "G4VHitsCollection.hh" -//#include "g4rw/tpordvec.h" #include "g4std/vector" // class description: @@ -70,7 +69,7 @@ class G4HCofThisEvent inline G4int GetNumberOfCollections() { G4int n = 0; - for(int i=0;isize();i++) + for(size_t i=0;isize();i++) { if((*HC)[i]) n++; } diff --git a/source/digits+hits/hits/include/G4THitsCollection.hh b/source/digits+hits/hits/include/G4THitsCollection.hh index 6ba91354de..6a5df6d316 100644 --- a/source/digits+hits/hits/include/G4THitsCollection.hh +++ b/source/digits+hits/hits/include/G4THitsCollection.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4THitsCollection.hh,v 1.7.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4THitsCollection.hh,v 1.9 2001/07/13 15:00:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4THitsCollection_h @@ -50,7 +50,7 @@ class G4HitsCollection : public G4VHitsCollection G4HitsCollection(); G4HitsCollection(G4String detName,G4String colNam); virtual ~G4HitsCollection(); - int operator==(const G4HitsCollection &right) const; + G4int operator==(const G4HitsCollection &right) const; protected: void* theCollection; @@ -67,7 +67,7 @@ template class G4THitsCollection : public G4HitsCollection // constructor. public: virtual ~G4THitsCollection(); - int operator==(const G4THitsCollection &right) const; + G4int operator==(const G4THitsCollection &right) const; inline void *operator new(size_t); inline void operator delete(void* anHC); @@ -84,7 +84,7 @@ template class G4THitsCollection : public G4HitsCollection inline G4std::vector* GetVector() const { return (G4std::vector*)theCollection; } // Returns a collection vector. - inline int insert(T* aHit) + inline G4int insert(T* aHit) { G4std::vector*theHitsCollection = (G4std::vector*)theCollection; @@ -93,7 +93,7 @@ template class G4THitsCollection : public G4HitsCollection } // Insert a hit object. Total number of hit objects stored in this // collection is returned. - inline int entries() const + inline G4int entries() const { G4std::vector*theHitsCollection = (G4std::vector*)theCollection; @@ -135,21 +135,21 @@ template G4THitsCollection::~G4THitsCollection() G4std::vector * theHitsCollection = (G4std::vector*)theCollection; //theHitsCollection->clearAndDestroy(); - for(int i=0;isize();i++) + for(size_t i=0;isize();i++) { delete (*theHitsCollection)[i]; } theHitsCollection->clear(); delete theHitsCollection; } -template int G4THitsCollection::operator==(const G4THitsCollection &right) const +template G4int G4THitsCollection::operator==(const G4THitsCollection &right) const { return (collectionName==right.collectionName); } template void G4THitsCollection::DrawAllHits() { G4std::vector * theHitsCollection = (G4std::vector*)theCollection; - int n = theHitsCollection->size(); - for(int i=0;isize(); + for(size_t i=0;iDraw(); } } @@ -157,8 +157,8 @@ template void G4THitsCollection::PrintAllHits() { G4std::vector * theHitsCollection = (G4std::vector*)theCollection; - int n = theHitsCollection->size(); - for(int i=0;isize(); + for(size_t i=0;iPrint(); } } diff --git a/source/digits+hits/hits/include/G4VHit.hh b/source/digits+hits/hits/include/G4VHit.hh index 752a70de3d..54be84b94c 100644 --- a/source/digits+hits/hits/include/G4VHit.hh +++ b/source/digits+hits/hits/include/G4VHit.hh @@ -21,13 +21,15 @@ // ******************************************************************** // // -// $Id: G4VHit.hh,v 1.4.2.1 2001/06/28 19:07:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VHit.hh,v 1.6 2001/07/13 15:00:17 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VHit_h #define G4VHit_h 1 +#include "globals.hh" + // class description: // // This is the base class of hit object. The user should derive this @@ -43,7 +45,7 @@ class G4VHit G4VHit(); virtual ~G4VHit(); - int operator==(const G4VHit &right) const; + G4int operator==(const G4VHit &right) const; virtual void Draw(); virtual void Print(); diff --git a/source/digits+hits/hits/include/G4VHitsCollection.hh b/source/digits+hits/hits/include/G4VHitsCollection.hh index 1b1db9f539..b679d64f51 100644 --- a/source/digits+hits/hits/include/G4VHitsCollection.hh +++ b/source/digits+hits/hits/include/G4VHitsCollection.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VHitsCollection.hh,v 1.4.2.1 2001/06/28 19:07:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VHitsCollection.hh,v 1.6 2001/07/13 15:00:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VHitsCollection_h @@ -45,7 +45,7 @@ class G4VHitsCollection G4VHitsCollection(); G4VHitsCollection(G4String detName,G4String colNam); virtual ~G4VHitsCollection(); - int operator==(const G4VHitsCollection &right) const; + G4int operator==(const G4VHitsCollection &right) const; virtual void DrawAllHits(); virtual void PrintAllHits(); diff --git a/source/digits+hits/hits/src/G4HCofThisEvent.cc b/source/digits+hits/hits/src/G4HCofThisEvent.cc index 302f943689..47e479ee52 100644 --- a/source/digits+hits/hits/src/G4HCofThisEvent.cc +++ b/source/digits+hits/hits/src/G4HCofThisEvent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HCofThisEvent.cc,v 1.4.2.1 2001/06/28 19:07:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HCofThisEvent.cc,v 1.6 2001/07/13 15:00:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4HCofThisEvent.hh" @@ -37,16 +37,16 @@ G4HCofThisEvent::G4HCofThisEvent() G4HCofThisEvent::G4HCofThisEvent(G4int cap) { HC = new G4std::vector; - for(int i=0;ipush_back((G4VHitsCollection*)NULL); + HC->push_back((G4VHitsCollection*)0); } } G4HCofThisEvent::~G4HCofThisEvent() { //HC->clearAndDestroy(); - for(G4int i=0;isize();i++) + for(size_t i=0;isize();i++) { delete (*HC)[i]; } HC->clear(); delete HC; @@ -54,7 +54,7 @@ G4HCofThisEvent::~G4HCofThisEvent() void G4HCofThisEvent::AddHitsCollection(G4int HCID,G4VHitsCollection * aHC) { - if(HCID>=0 && HCIDsize()) + if(HCID>=0 && HCIDsize())) { (*HC)[HCID] = aHC; } } diff --git a/source/digits+hits/hits/src/G4THitsCollection.cc b/source/digits+hits/hits/src/G4THitsCollection.cc index e550ce53e8..817e962517 100644 --- a/source/digits+hits/hits/src/G4THitsCollection.cc +++ b/source/digits+hits/hits/src/G4THitsCollection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4THitsCollection.cc,v 1.2.2.1 2001/06/28 19:07:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4THitsCollection.cc,v 1.3 2001/07/11 09:58:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4THitsCollection.hh" diff --git a/source/digits+hits/hits/src/G4VHit.cc b/source/digits+hits/hits/src/G4VHit.cc index 34a4badfd0..e1078554b0 100644 --- a/source/digits+hits/hits/src/G4VHit.cc +++ b/source/digits+hits/hits/src/G4VHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VHit.cc,v 1.2.2.1 2001/06/28 19:07:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VHit.cc,v 1.4 2001/07/13 15:00:21 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VHit @@ -35,7 +35,7 @@ G4VHit::G4VHit() G4VHit::~G4VHit() {;} -int G4VHit::operator==(const G4VHit &right) const +G4int G4VHit::operator==(const G4VHit &right) const { return false; } void G4VHit::Draw() diff --git a/source/digits+hits/hits/src/G4VHitsCollection.cc b/source/digits+hits/hits/src/G4VHitsCollection.cc index 7ebc4e40d3..155df1af35 100644 --- a/source/digits+hits/hits/src/G4VHitsCollection.cc +++ b/source/digits+hits/hits/src/G4VHitsCollection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VHitsCollection.cc,v 1.2.2.1 2001/06/28 19:07:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VHitsCollection.cc,v 1.4 2001/07/13 15:00:21 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VHitsCollection @@ -44,7 +44,7 @@ G4VHitsCollection::G4VHitsCollection(G4String detName,G4String colNam) G4VHitsCollection::~G4VHitsCollection() { ; } -int G4VHitsCollection::operator==(const G4VHitsCollection &right) const +G4int G4VHitsCollection::operator==(const G4VHitsCollection &right) const { return ((collectionName==right.collectionName) &&(SDname==right.SDname)); diff --git a/source/event/History b/source/event/History index a0bce7f9e4..2d2f40f09c 100644 --- a/source/event/History +++ b/source/event/History @@ -1,4 +1,4 @@ -$Id: History,v 1.23 2001/06/28 15:07:28 gcosmo Exp $ +$Id: History,v 1.35 2001/11/22 19:24:35 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,79 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Nov 21 2001, M.Asai (event-V03-02-09) +- G4PrimaryTransformer.cc: now considering case where a primary is placed on the + boundary of the world volume. Added units. + +Nov 20 2001, M.Asai (event-V03-02-08) +- Add check whether the primary vertex is inside of thw world volume. +- Move set method of position and time from G4ParticleGun to G4VPrimaryGenerator + so that G4HEPEvtInterface can accept the primary vertex position + +Nov 10 2001, M.Asai (event-V03-02-07) +- Tagged. + +Oct 19 2001, F. Lei +- Code changes to remove compilation warnings un gcc-2.95.2 +- Added Beam option for generating accerlator beams + +Oct 11 2001, G.Cosmo (event-V03-02-06) +- Replaced inclusions of ctoken.h with G4Tokenizer.hh in + G4GeneralParticleSourceMessenger.cc and G4ParticleGunMessenger.cc. + Removed comment on RW wrappers. +- Co-works with tag "globals-V03-02-03" where the STLInterface + module has been removed. + +Aug 27 2001, M.Asai (event-V03-02-05) +- Convert NULL to 0 in G4EventManager.cc + +Aug 17 2001, M.Asai (event-V03-02-04) +- G4EventManager.cc is debugged according to bug report 289. + +July 19 2001, M.Asai (event-V03-02-03) +- Tagged + +July 19 2001, F.Lei +- Most commands under G4ParticleGun class are now available under GPS + + e.g.. + /gun/position => /gps/position + /gun/direction => /gps/direction + /gun/energy => /gps/energy + ... + +- Implemented co-ordinates rotation for angular distribution. User defined +co-ordinates was an option available to user in the messenger but not +implemented internally in the older version gps. +Source angular distribution coupled with positional distribution can lead to +rather strange combinations. To avoid this I used a simple scheme in this +implementation: + +- For cos-law angular distribution the default maxtheta is set to pi/2. + instead of pi. The user can of course re-set this to any number between + 0 - pi. + +- Added user defined histogram re-set method. After re-set user can + redefine all the histograms. To use + /gps/resethist 'histname' +- Bug fixed in generating theta, and in calculating the weight. + +- Added further guidance in the messenger for the definition of pre-defined + energy distributions + +Jul 18 2001, M.Asai (event-V03-02-02) +- Added a new feature for the user to increase the number of waiting stacks. + +Jul 17 2001, M.Asai (event-V03-02-01) +- G4PrimaryParticle now stores the proper trackID. + +Jul 13 2001, G.Cosmo (event-V03-02-00) +- Cleanup of pedantic warnings in Linux-g++ ANSI setup. +- Corrected "int" to "G4int". +- Corrected "NULL" to "0". +- Synchronised with HEAD revision after inclusion of disclaimer + liability. + Jun 28 2001, G.Cosmo (event-V03-01-01) - Added CVS headers to G4GeneralParticleSource[.hh.cc] and G4GeneralParticleSourceMessenger[.hh.cc]. diff --git a/source/event/include/G4ClassificationOfNewTrack.hh b/source/event/include/G4ClassificationOfNewTrack.hh index 1dd679597f..1bd9a392e0 100644 --- a/source/event/include/G4ClassificationOfNewTrack.hh +++ b/source/event/include/G4ClassificationOfNewTrack.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ClassificationOfNewTrack.hh,v 1.3.4.1 2001/06/28 19:07:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ClassificationOfNewTrack.hh,v 1.5 2001/07/19 00:14:15 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -37,10 +37,16 @@ enum G4ClassificationOfNewTrack { - fUrgent, // put into the urgent stack - fWaiting, // put into the waiting stack - fPostpone, // postpone to the next event - fKill // kill + fUrgent=0, // put into the urgent stack + fWaiting=1, // put into the waiting stack + fPostpone=-1, // postpone to the next event + fKill=-9, // kill + //---------------------------------------------------------------- + // following ENUM are available only if the user increases the + // number of waiting stacks + //---------------------------------------------------------------- + fWaiting_1=11, fWaiting_2=12, fWaiting_3=13, fWaiting_4=14, fWaiting_5=15, + fWaiting_6=16, fWaiting_7=17, fWaiting_8=18, fWaiting_9=19, fWaiting_10=20 }; #endif diff --git a/source/event/include/G4EvManMessenger.hh b/source/event/include/G4EvManMessenger.hh index 6e3be58ee9..15759b9bad 100644 --- a/source/event/include/G4EvManMessenger.hh +++ b/source/event/include/G4EvManMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EvManMessenger.hh,v 1.3.4.1 2001/06/28 19:07:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvManMessenger.hh,v 1.4 2001/07/11 09:58:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4EvManMessenger_h diff --git a/source/event/include/G4Event.hh b/source/event/include/G4Event.hh index da96dffe64..c7b6bdf016 100644 --- a/source/event/include/G4Event.hh +++ b/source/event/include/G4Event.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Event.hh,v 1.3.4.1 2001/06/28 19:07:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Event.hh,v 1.5 2001/07/13 15:01:45 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4Event_h @@ -55,8 +55,8 @@ class G4Event inline void *operator new(size_t); inline void operator delete(void* anEvent); - int operator==(const G4Event &right) const; - int operator!=(const G4Event &right) const; + G4int operator==(const G4Event &right) const; + G4int operator!=(const G4Event &right) const; public: // with description void Print() const; @@ -98,7 +98,7 @@ class G4Event // Returns the event ID inline void AddPrimaryVertex(G4PrimaryVertex* aPrimaryVertex) { - if( thePrimaryVertex == NULL ) + if( thePrimaryVertex == 0 ) { thePrimaryVertex = aPrimaryVertex; } else { thePrimaryVertex->SetNext( aPrimaryVertex ); } @@ -116,15 +116,15 @@ class G4Event else if( i > 0 && i < numberOfPrimaryVertex ) { G4PrimaryVertex* primaryVertex = thePrimaryVertex; - for( int j=0; jGetNext(); } return primaryVertex; } else - { return NULL; } + { return 0; } } // Returns i-th primary vertex of the event. inline G4HCofThisEvent* GetHCofThisEvent() const diff --git a/source/event/include/G4EventManager.hh b/source/event/include/G4EventManager.hh index 7c40690acb..ec9f6a2f9b 100644 --- a/source/event/include/G4EventManager.hh +++ b/source/event/include/G4EventManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EventManager.hh,v 1.5.4.1 2001/06/28 19:07:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EventManager.hh,v 1.9 2001/07/19 00:14:15 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -76,7 +76,7 @@ class G4EventManager // This method must be exclusively invoked by G4RunManager. private: - void StackTracks(G4TrackVector *trackVector); + void StackTracks(G4TrackVector *trackVector, G4bool IDhasAlreadySet=false); G4Event* currentEvent; @@ -84,7 +84,7 @@ class G4EventManager G4TrackingManager *trackManager; G4TrajectoryContainer *trajectoryContainer; G4int trackIDCounter; - int verboseLevel; + G4int verboseLevel; G4SDManager* sdManager; G4PrimaryTransformer* transformer; G4bool tracking; @@ -132,6 +132,8 @@ class G4EventManager // Set and get methods for user action classes. User action classes // which should belong to the other managers will be sent to the // corresponding managers. + void SetNumberOfAdditionalWaitingStacks(G4int iAdd) + { trackContainer->SetNumberOfAdditionalWaitingStacks(iAdd); } public: // with description inline G4int GetVerboseLevel() diff --git a/source/event/include/G4GeneralParticleSource.hh b/source/event/include/G4GeneralParticleSource.hh index f2e44f906c..8731949ab5 100644 --- a/source/event/include/G4GeneralParticleSource.hh +++ b/source/event/include/G4GeneralParticleSource.hh @@ -31,8 +31,8 @@ // Customer: ESA/ESTEC // /////////////////////////////////////////////////////////////////////////////// -// $Id: G4GeneralParticleSource.hh,v 1.3 2001/06/29 08:05:59 gcosmo Exp $ -// GEANT4 tag $Name: event-V03-01-01 $ +// $Id: G4GeneralParticleSource.hh,v 1.7 2001/10/19 16:48:28 flei Exp $ +// GEANT4 tag $Name: geant4-04-00 $ /////////////////////////////////////////////////////////////////////////////// // // Class Description: @@ -336,7 +336,7 @@ // // void SetVerbosity(G4int) // Sets the verbosity level. - +// /////////////////////////////////////////////////////////////////////////////// // // @@ -396,6 +396,9 @@ public: inline G4double GetRadius() { return Radius; } void SetRadius0(G4double); + void SetBeamSigmaInR(G4double); + void SetBeamSigmaInX(G4double); + void SetBeamSigmaInY(G4double); void SetParAlpha(G4double); void SetParTheta(G4double); void SetParPhi(G4double); @@ -403,6 +406,7 @@ public: void GenerateRotationMatrices(); // the following routines generate the source position void GeneratePointSource(); + void GeneratePointsInBeam(); void GeneratePointsInPlane(); void GeneratePointsOnSurface(); void GeneratePointsInVolume(); @@ -416,14 +420,23 @@ public: void SetMinPhi(G4double); void SetMaxTheta(G4double); void SetMaxPhi(G4double); + void SetBeamSigmaInAngR(G4double); + void SetBeamSigmaInAngX(G4double); + void SetBeamSigmaInAngY(G4double); void UserDefAngTheta(G4ThreeVector); void UserDefAngPhi(G4ThreeVector); + inline void SetParticleMomentumDirection + (G4ParticleMomentum aMomentumDirection) + { particle_momentum_direction = aMomentumDirection.unit(); } // These methods generate the momentum vectors for the particles. void GenerateIsotropicFlux(); void GenerateCosineLawFlux(); + void GenerateBeamFlux(); + void GeneratePlanarFlux(); void GenerateUserDefFlux(); G4double GenerateUserDefTheta(); G4double GenerateUserDefPhi(); + void SetUseUserAngAxis(G4bool); void SetUserWRTSurface(G4bool); // Energy Distribution methods @@ -443,6 +456,7 @@ public: void SetMonoEnergy(G4double); void SetAlpha(G4double); void SetTemp(G4double); + void SetBeamSigmaInE(G4double); void SetEzero(G4double); void SetGradient(G4double); void SetInterCept(G4double); @@ -467,6 +481,7 @@ public: void GenerateLinearEnergies(); void GeneratePowEnergies(); void GenerateExpEnergies(); + void GenerateGaussEnergies(); void GenerateBremEnergies(); void GenerateBbodyEnergies(); void GenerateCdgEnergies(); @@ -490,6 +505,9 @@ public: G4double GenRandPhi(); G4double GenRandEnergy(); + // method to re-set the histograms + void ReSetHist(G4String); + // Set the verbosity level. void SetVerbosity(G4int); @@ -545,6 +563,7 @@ private: G4double halfx, halfy, halfz; //half lengths G4double Radius; //Radius for circles or spheres G4double Radius0; // The inner radius of an annulus + G4double SR,SX,SY; // Standard deviation in raduial, x, y for beam type source G4ThreeVector CentreCoords; // Coords of centre of input shape G4ThreeVector Rotx, Roty, Rotz; // Unit vectors defining rotation matrix G4double ParAlpha, ParTheta, ParPhi; //Angle for Right Parallellepipeds @@ -556,6 +575,7 @@ private: G4String AngDistType; // String to hold Ang dist type iso, cos, user G4ThreeVector AngRef1, AngRef2, AngRef3; // Reference axes for ang dist G4double MinTheta, MaxTheta, MinPhi, MaxPhi; // min/max theta/phi + G4double DR,DX,DY ; // Standard deviation for beam divergence G4double Theta, Phi; // Store these for use with DEBUG G4bool IPDFThetaExist, IPDFPhiExist; // tell whether IPDF histos exist G4PhysicsOrderedFreeVector UDefThetaH; // Theta histo data @@ -565,10 +585,12 @@ private: G4String UserDistType; //String to hold user distributions G4bool UserWRTSurface; // G4bool to tell whether user wants distribution wrt // surface normals or co-ordinate system + G4bool UserAngRef; // Set to true when user defines aaa new coordinates // Energy Distribution variables G4String EnergyDisType; // energy dis type Variable - Mono,Lin,Exp,etc G4double MonoEnergy; //Mono-energteic energy + G4double SE ; // Standard deviation for Gaussion distrbution in energy G4double Emin, Emax; // emin and emax G4double alpha, Ezero, Temp; // alpha (pow), E0 (exp) and Temp (bbody,brem) G4double grad, cept; // gradient and intercept for linear spectra @@ -626,6 +648,8 @@ private: G4int verbosityLevel; private: + + G4PhysicsOrderedFreeVector ZeroPhysVector ; // for re-set only G4DataInterpolation *SplineInt; // holds Spline stuff @@ -636,4 +660,9 @@ private: }; + #endif + + + + diff --git a/source/event/include/G4GeneralParticleSourceMessenger.hh b/source/event/include/G4GeneralParticleSourceMessenger.hh index e6bdc6ee35..f31bcfff01 100644 --- a/source/event/include/G4GeneralParticleSourceMessenger.hh +++ b/source/event/include/G4GeneralParticleSourceMessenger.hh @@ -31,8 +31,8 @@ // Customer: ESA/ESTEC // /////////////////////////////////////////////////////////////////////////////// -// $Id: G4GeneralParticleSourceMessenger.hh,v 1.3 2001/06/29 08:06:00 gcosmo Exp $ -// GEANT4 tag $Name: event-V03-01-01 $ +// $Id: G4GeneralParticleSourceMessenger.hh,v 1.7 2001/10/19 16:48:28 flei Exp $ +// GEANT4 tag $Name: geant4-04-00 $ /////////////////////////////////////////////////////////////////////////////// // // Class Description: @@ -60,7 +60,7 @@ // G4String GetCurrentValue(G4UIcommand *command) // Allows the user to retrieve the current values of parameters. // Not implemented yet. - +// /////////////////////////////////////////////////////////////////////////////// // // CHANGE HISTORY @@ -125,6 +125,9 @@ private: //commands G4UIcmdWithADoubleAndUnit *halfzCmd; G4UIcmdWithADoubleAndUnit *radiusCmd; G4UIcmdWithADoubleAndUnit *radius0Cmd; + G4UIcmdWithADoubleAndUnit *possigmarCmd; + G4UIcmdWithADoubleAndUnit *possigmaxCmd; + G4UIcmdWithADoubleAndUnit *possigmayCmd; G4UIcmdWithADoubleAndUnit *paralpCmd; G4UIcmdWithADoubleAndUnit *partheCmd; G4UIcmdWithADoubleAndUnit *parphiCmd; @@ -137,12 +140,17 @@ private: //commands G4UIcmdWithADoubleAndUnit *maxthetaCmd; G4UIcmdWithADoubleAndUnit *minphiCmd; G4UIcmdWithADoubleAndUnit *maxphiCmd; + G4UIcmdWithADoubleAndUnit *angsigmarCmd; + G4UIcmdWithADoubleAndUnit *angsigmaxCmd; + G4UIcmdWithADoubleAndUnit *angsigmayCmd; + G4UIcmdWithABool *useuserangaxisCmd; G4UIcmdWithABool *surfnormCmd; G4UIcmdWithAString *energytypeCmd; G4UIcmdWithADoubleAndUnit *eminCmd; G4UIcmdWithADoubleAndUnit *emaxCmd; G4UIcmdWithADoubleAndUnit *monoenergyCmd; + G4UIcmdWithADoubleAndUnit *engsigmaCmd; G4UIcmdWithADouble *alphaCmd; G4UIcmdWithADouble *tempCmd; G4UIcmdWithADouble *ezeroCmd; @@ -156,8 +164,12 @@ private: //commands G4UIcmdWithAString *histnameCmd; G4UIcmdWithAString *arbintCmd; + G4UIcmdWithAString *resethistCmd; + G4UIcmdWithAnInteger *verbosityCmd; + // below are commands from G4ParticleGun + G4UIcommand *ionCmd; G4UIcmdWithAString *particleCmd; @@ -165,6 +177,12 @@ private: //commands G4UIcmdWith3Vector *polCmd; G4UIcmdWithAnInteger *numberCmd; + G4UIcmdWith3VectorAndUnit *positionCmd; + G4UIcmdWith3Vector *directionCmd; + G4UIcmdWithADoubleAndUnit *energyCmd; + G4UIcmdWithoutParameter *listCmd; + + private: // for ion shooting G4bool fShootIon; G4int fAtomicNumber; @@ -175,3 +193,7 @@ private: //commands }; #endif + + + + diff --git a/source/event/include/G4HEPEvtInterface.hh b/source/event/include/G4HEPEvtInterface.hh index a7e40821a0..0b9e9595cc 100644 --- a/source/event/include/G4HEPEvtInterface.hh +++ b/source/event/include/G4HEPEvtInterface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HEPEvtInterface.hh,v 1.5.2.1 2001/06/28 19:07:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPEvtInterface.hh,v 1.6 2001/07/11 09:58:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4HEPEvtInterface_h diff --git a/source/event/include/G4HEPEvtParticle.hh b/source/event/include/G4HEPEvtParticle.hh index 0392fb6e3f..6275983939 100644 --- a/source/event/include/G4HEPEvtParticle.hh +++ b/source/event/include/G4HEPEvtParticle.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HEPEvtParticle.hh,v 1.3.4.1 2001/06/28 19:07:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPEvtParticle.hh,v 1.5 2001/07/13 15:01:45 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -51,8 +51,8 @@ class G4HEPEvtParticle ~G4HEPEvtParticle(); const G4HEPEvtParticle & operator=(const G4HEPEvtParticle &right); - int operator==(const G4HEPEvtParticle &right) const; - int operator!=(const G4HEPEvtParticle &right) const; + G4int operator==(const G4HEPEvtParticle &right) const; + G4int operator!=(const G4HEPEvtParticle &right) const; private: G4PrimaryParticle * theParticle; diff --git a/source/event/include/G4ParticleGun.hh b/source/event/include/G4ParticleGun.hh index a780493bb0..1396dff398 100644 --- a/source/event/include/G4ParticleGun.hh +++ b/source/event/include/G4ParticleGun.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleGun.hh,v 1.4.4.1 2001/06/28 19:07:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleGun.hh,v 1.7 2001/11/20 23:21:41 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4ParticleGun_h @@ -73,8 +73,8 @@ class G4ParticleGun:public G4VPrimaryGenerator G4ParticleGun(const G4ParticleGun &right); const G4ParticleGun & operator=(const G4ParticleGun &right); - int operator==(const G4ParticleGun &right) const; - int operator!=(const G4ParticleGun &right) const; + G4int operator==(const G4ParticleGun &right) const; + G4int operator!=(const G4ParticleGun &right) const; public: // with description virtual void GeneratePrimaryVertex(G4Event* evt); @@ -92,10 +92,6 @@ class G4ParticleGun:public G4VPrimaryGenerator { particle_momentum_direction = aMomentumDirection.unit(); } inline void SetParticleEnergy(G4double aKineticEnergy) { particle_energy = aKineticEnergy; } - inline void SetParticlePosition(G4ThreeVector aPosition) - { particle_position = aPosition; } - inline void SetParticleTime(G4double aTime) - { particle_time = aTime; } inline void SetParticleCharge(G4double aCharge) { particle_charge = aCharge; } inline void SetParticlePolarization(G4ThreeVector aVal) @@ -112,10 +108,6 @@ class G4ParticleGun:public G4VPrimaryGenerator { return particle_energy; } inline G4double GetParticleCharge() { return particle_charge; } - inline G4ThreeVector GetParticlePosition() - { return particle_position; } - inline G4double GetParticleTime() - { return particle_time; } inline G4ThreeVector GetParticlePolarization() { return particle_polarization; } inline G4int GetNumberOfParticles() @@ -129,8 +121,6 @@ class G4ParticleGun:public G4VPrimaryGenerator G4ParticleMomentum particle_momentum_direction; G4double particle_energy; G4double particle_charge; - G4ThreeVector particle_position; - G4double particle_time; G4ThreeVector particle_polarization; private: diff --git a/source/event/include/G4ParticleGunMessenger.hh b/source/event/include/G4ParticleGunMessenger.hh index 911e959d6e..864c3f3e40 100644 --- a/source/event/include/G4ParticleGunMessenger.hh +++ b/source/event/include/G4ParticleGunMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleGunMessenger.hh,v 1.5.4.1 2001/06/28 19:07:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleGunMessenger.hh,v 1.6 2001/07/11 09:58:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/event/include/G4PrimaryParticle.hh b/source/event/include/G4PrimaryParticle.hh index 6fb1da93e8..ce41008441 100644 --- a/source/event/include/G4PrimaryParticle.hh +++ b/source/event/include/G4PrimaryParticle.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PrimaryParticle.hh,v 1.8.2.1 2001/06/28 19:07:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PrimaryParticle.hh,v 1.10 2001/07/13 15:01:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -76,8 +76,8 @@ class G4PrimaryParticle ~G4PrimaryParticle(); const G4PrimaryParticle & operator=(const G4PrimaryParticle &right); - int operator==(const G4PrimaryParticle &right) const; - int operator!=(const G4PrimaryParticle &right) const; + G4int operator==(const G4PrimaryParticle &right) const; + G4int operator!=(const G4PrimaryParticle &right) const; public: // with description void Print() const; @@ -156,14 +156,14 @@ class G4PrimaryParticle } inline void SetNext(G4PrimaryParticle * np) { - if(nextParticle == NULL) + if(nextParticle == 0) { nextParticle = np; } else { nextParticle->SetNext(np); } } inline void SetDaughter(G4PrimaryParticle * np) { - if(daughterParticle == NULL) + if(daughterParticle == 0) { daughterParticle = np; } else { daughterParticle->SetNext(np); } diff --git a/source/event/include/G4PrimaryTransformer.hh b/source/event/include/G4PrimaryTransformer.hh index 9eb8d50a78..653dae2989 100644 --- a/source/event/include/G4PrimaryTransformer.hh +++ b/source/event/include/G4PrimaryTransformer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PrimaryTransformer.hh,v 1.4.4.1 2001/06/28 19:07:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PrimaryTransformer.hh,v 1.6 2001/07/18 01:25:44 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4PromaryTransformer_h @@ -47,12 +47,13 @@ class G4PrimaryTransformer G4PrimaryTransformer(); ~G4PrimaryTransformer(); - G4TrackVector* GimmePrimaries(G4Event* anEvent); + G4TrackVector* GimmePrimaries(G4Event* anEvent, G4int trackIDCounter=0); private: G4TrackVector TV; G4ParticleTable* particleTable; G4int verboseLevel; + G4int trackID; public: inline void SetVerboseLevel(G4int vl) diff --git a/source/event/include/G4PrimaryVertex.hh b/source/event/include/G4PrimaryVertex.hh index f9f624f8eb..408e1c1c7e 100644 --- a/source/event/include/G4PrimaryVertex.hh +++ b/source/event/include/G4PrimaryVertex.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PrimaryVertex.hh,v 1.5.4.1 2001/06/28 19:07:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PrimaryVertex.hh,v 1.7 2001/07/13 15:01:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -54,8 +54,8 @@ class G4PrimaryVertex ~G4PrimaryVertex(); const G4PrimaryVertex & operator=(const G4PrimaryVertex &right); - int operator==(const G4PrimaryVertex &right) const; - int operator!=(const G4PrimaryVertex &right) const; + G4int operator==(const G4PrimaryVertex &right) const; + G4int operator!=(const G4PrimaryVertex &right) const; void Print() const; @@ -89,7 +89,7 @@ class G4PrimaryVertex { return numberOfParticle; } inline void SetPrimary(G4PrimaryParticle * pp) { - if(theParticle == NULL) + if(theParticle == 0) { theParticle = pp; theTail = pp; @@ -108,19 +108,19 @@ class G4PrimaryVertex else if( i > 0 && i < numberOfParticle ) { G4PrimaryParticle* particle = theParticle; - for( int j=0; jGetNext(); } return particle; } else - { return NULL; } + { return 0; } } inline void SetNext(G4PrimaryVertex* nv) { - if(nextVertex == NULL) + if(nextVertex == 0) { nextVertex = nv; } else { nextVertex->SetNext(nv); } diff --git a/source/event/include/G4StackManager.hh b/source/event/include/G4StackManager.hh index 22a3367ace..98f99aa4f1 100644 --- a/source/event/include/G4StackManager.hh +++ b/source/event/include/G4StackManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StackManager.hh,v 1.5.4.1 2001/06/28 19:07:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StackManager.hh,v 1.8 2001/07/19 00:14:16 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -66,11 +66,11 @@ class G4StackManager private: const G4StackManager & operator= (const G4StackManager &right); - int operator==(const G4StackManager &right) const; - int operator!=(const G4StackManager &right) const; + G4int operator==(const G4StackManager &right) const; + G4int operator!=(const G4StackManager &right) const; public: - G4int PushOneTrack(G4Track *newTrack, G4VTrajectory *newTrajectory = NULL); + G4int PushOneTrack(G4Track *newTrack, G4VTrajectory *newTrajectory = 0); G4Track * PopNextTrack(G4VTrajectory**newTrajectory); G4int PrepareNewEvent(); @@ -84,37 +84,66 @@ class G4StackManager // stack are send to the urgent stack and then the user's NewStage() // method is invoked. + void SetNumberOfAdditionalWaitingStacks(G4int iAdd); + // Set the number of additional (optional) waiting stacks. + // This method must be invoked at PreInit, Init or Idle states. + // Once the user set the number of additional waiting stacks, + // he/she can use the corresponding ENUM in G4ClassificationOfNewTrack. + // The user should invoke G4RunManager::SetNumberOfAdditionalWaitingStacks + // method, which invokes this method. + + void TransferStackedTracks(G4ClassificationOfNewTrack origin, G4ClassificationOfNewTrack destination); + // Transfter stacked track from the origin stack to the destination stack. + // The destination stack needs not be empty. + // If the destination is fKill, tracks are deleted. + // If the origin is fKill, nothing happen. + private: G4UserStackingAction * userStackingAction; - int verboseLevel; + G4int verboseLevel; G4TrackStack * urgentStack; G4TrackStack * waitingStack; G4TrackStack * postponeStack; G4StackingMessenger* theMessenger; + G4std::vector additionalWaitingStacks; + G4int numberOfAdditionalWaitingStacks; public: inline void clear() { ClearUrgentStack(); ClearWaitingStack(); + for(int i=1;i<=numberOfAdditionalWaitingStacks;i++) {ClearWaitingStack(i);} } inline void ClearUrgentStack() { urgentStack->clear(); } - inline void ClearWaitingStack() - { waitingStack->clear(); } + inline void ClearWaitingStack(int i=0) + { + if(i==0) { + waitingStack->clear(); + } else { + if(i<=numberOfAdditionalWaitingStacks) additionalWaitingStacks[i-1]->clear(); + } + } inline void ClearPostponeStack() { postponeStack->clear(); } inline G4int GetNTotalTrack() const - { return urgentStack->GetNTrack() - + waitingStack->GetNTrack() - + postponeStack->GetNTrack(); } + { int n = urgentStack->GetNTrack() + waitingStack->GetNTrack() + postponeStack->GetNTrack(); + for(int i=1;i<=numberOfAdditionalWaitingStacks;i++) {n += additionalWaitingStacks[i-1]->GetNTrack();} + return n; + } inline G4int GetNUrgentTrack() const { return urgentStack->GetNTrack(); } - inline G4int GetNWaitingTrack() const - { return waitingStack->GetNTrack(); } + inline G4int GetNWaitingTrack(int i=0) const + { if(i==0) { return waitingStack->GetNTrack(); } + else { + if(i<=numberOfAdditionalWaitingStacks) { return additionalWaitingStacks[i-1]->GetNTrack();} + } + return 0; + } inline G4int GetNPostponedTrack() const { return postponeStack->GetNTrack(); } - inline void SetVerboseLevel( int const value ) + inline void SetVerboseLevel( G4int const value ) { verboseLevel = value; } inline void SetUserStackingAction(G4UserStackingAction* value) { diff --git a/source/event/include/G4StackedTrack.hh b/source/event/include/G4StackedTrack.hh index 11b7370f83..6e2d4a843f 100644 --- a/source/event/include/G4StackedTrack.hh +++ b/source/event/include/G4StackedTrack.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StackedTrack.hh,v 1.4.4.1 2001/06/28 19:07:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StackedTrack.hh,v 1.6 2001/07/13 15:01:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Last Modification : 02/Feb/96 M.Asai @@ -54,8 +54,8 @@ class G4StackedTrack ~G4StackedTrack(); const G4StackedTrack & operator=(const G4StackedTrack &right); - int operator==(const G4StackedTrack &right) const; - int operator!=(const G4StackedTrack &right) const; + G4int operator==(const G4StackedTrack &right) const; + G4int operator!=(const G4StackedTrack &right) const; private: G4double priorityWeight; diff --git a/source/event/include/G4StackingMessenger.hh b/source/event/include/G4StackingMessenger.hh index f161bad953..b250c03d6a 100644 --- a/source/event/include/G4StackingMessenger.hh +++ b/source/event/include/G4StackingMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StackingMessenger.hh,v 1.3.4.1 2001/06/28 19:07:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StackingMessenger.hh,v 1.4 2001/07/11 09:58:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4StackingMessenger_h diff --git a/source/event/include/G4TrackStack.hh b/source/event/include/G4TrackStack.hh index db2a36e2da..2a4dbddf39 100644 --- a/source/event/include/G4TrackStack.hh +++ b/source/event/include/G4TrackStack.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackStack.hh,v 1.3.4.1 2001/06/28 19:07:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackStack.hh,v 1.5 2001/07/13 15:01:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Last Modification : 09/Dec/96 M.Asai @@ -50,8 +50,8 @@ class G4TrackStack private: const G4TrackStack & operator= (const G4TrackStack &right); - int operator==(const G4TrackStack &right) const; - int operator!=(const G4TrackStack &right) const; + G4int operator==(const G4TrackStack &right) const; + G4int operator!=(const G4TrackStack &right) const; public: void PushToStack(G4StackedTrack * aStackedTrack); diff --git a/source/event/include/G4TrajectoryContainer.hh b/source/event/include/G4TrajectoryContainer.hh index 3d5d16abc7..993d84df9f 100644 --- a/source/event/include/G4TrajectoryContainer.hh +++ b/source/event/include/G4TrajectoryContainer.hh @@ -21,26 +21,23 @@ // ******************************************************************** // // -// $Id: G4TrajectoryContainer.hh,v 1.6.2.1 2001/06/28 19:07:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrajectoryContainer.hh,v 1.8 2001/07/13 15:01:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// G4TrajectoryContainer +// G4TrajectoryContainer +// +// Class description: +// +// This is a container of G4VTrajectory objects and the object of this +// container will be associated to G4Event object. // +// ******************************************************************** #ifndef G4TrajectoryContainer_h #define G4TrajectoryContainer_h 1 #include "G4VTrajectory.hh" -// G4RWTPtrOrderedVector -//#include "g4rw/tpordvec.h" - -// class description: -// -// This is a container of G4VTrajectory objects and the object of this -// container will be associated to G4Event object. - -//typedef G4RWTPtrOrderedVector G4TrajectoryContainer; class G4TrajectoryContainer : public G4std::vector { @@ -53,11 +50,8 @@ class G4TrajectoryContainer : public G4std::vector inline G4bool insert(G4VTrajectory* p) { push_back(p); return true; } inline void clearAndDestroy() { - for(int i=0;i anEventAllocator; G4Event::G4Event() :eventID(0), - thePrimaryVertex(NULL),numberOfPrimaryVertex(0), - DC(NULL),HC(NULL),trajectoryContainer(NULL) + thePrimaryVertex(0),numberOfPrimaryVertex(0), + HC(0),DC(0),trajectoryContainer(0) {;} G4Event::G4Event(G4int evID) :eventID(evID), - thePrimaryVertex(NULL),numberOfPrimaryVertex(0), - DC(NULL),HC(NULL),trajectoryContainer(NULL) + thePrimaryVertex(0),numberOfPrimaryVertex(0), + HC(0),DC(0),trajectoryContainer(0) {;} G4Event::~G4Event() @@ -61,12 +61,12 @@ G4Event::~G4Event() } } -int G4Event::operator==(const G4Event &right) const +G4int G4Event::operator==(const G4Event &right) const { return ( eventID == right.eventID ); } -int G4Event::operator!=(const G4Event &right) const +G4int G4Event::operator!=(const G4Event &right) const { return ( eventID != right.eventID ); } @@ -84,14 +84,14 @@ void G4Event::Draw() const if(trajectoryContainer) { G4int n_traj = trajectoryContainer->entries(); - for(int i=0;iDrawTrajectory(); } } if(HC) { G4int n_HC = HC->GetCapacity(); - for(int j=0;jGetHC(j); if(VHC) VHC->DrawAllHits(); @@ -101,7 +101,7 @@ void G4Event::Draw() const if(DC) { G4int n_DC = DC->GetCapacity(); - for(int j=0;jGetDC(j); if(VDC) VDC->DrawAllDigi(); diff --git a/source/event/src/G4EventManager.cc b/source/event/src/G4EventManager.cc index dacbb4c819..f1ce164936 100644 --- a/source/event/src/G4EventManager.cc +++ b/source/event/src/G4EventManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EventManager.cc,v 1.6.2.1 2001/06/28 19:07:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EventManager.cc,v 1.11 2001/08/28 05:35:00 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // @@ -40,8 +40,8 @@ G4EventManager* G4EventManager::GetEventManager() { return fpEventManager; } G4EventManager::G4EventManager() -:verboseLevel(0),trajectoryContainer(NULL), - tracking(false),currentEvent(NULL) +:currentEvent(0),trajectoryContainer(0), + verboseLevel(0),tracking(false) { if(fpEventManager) { @@ -82,8 +82,8 @@ G4EventManager::~G4EventManager() /* const G4EventManager & G4EventManager::operator=(const G4EventManager &right) { } -int G4EventManager::operator==(const G4EventManager &right) const { } -int G4EventManager::operator!=(const G4EventManager &right) const { } +G4int G4EventManager::operator==(const G4EventManager &right) const { } +G4int G4EventManager::operator!=(const G4EventManager &right) const { } */ @@ -105,7 +105,7 @@ void G4EventManager::ProcessOneEvent(G4Event* anEvent) trackIDCounter = trackContainer->PrepareNewEvent(); #ifdef G4_STORE_TRAJECTORY - trajectoryContainer = NULL; + trajectoryContainer = 0; #endif sdManager = G4SDManager::GetSDMpointerIfExist(); @@ -122,7 +122,7 @@ void G4EventManager::ProcessOneEvent(G4Event* anEvent) } #endif - StackTracks( transformer->GimmePrimaries( currentEvent ) ); + StackTracks( transformer->GimmePrimaries( currentEvent, trackIDCounter ),true ); #ifdef G4VERBOSE if ( verboseLevel > 0 ) @@ -134,7 +134,7 @@ void G4EventManager::ProcessOneEvent(G4Event* anEvent) #endif G4VTrajectory* previousTrajectory; - while( ( track = trackContainer->PopNextTrack(&previousTrajectory) ) != NULL ) + while( ( track = trackContainer->PopNextTrack(&previousTrajectory) ) != 0 ) { #ifdef G4VERBOSE @@ -160,8 +160,9 @@ void G4EventManager::ProcessOneEvent(G4Event* anEvent) } #endif + G4VTrajectory * aTrajectory = 0; #ifdef G4_STORE_TRAJECTORY - G4VTrajectory * aTrajectory = trackManager->GimmeTrajectory(); + aTrajectory = trackManager->GimmeTrajectory(); if(previousTrajectory) { @@ -203,7 +204,7 @@ void G4EventManager::ProcessOneEvent(G4Event* anEvent) //if( secondaries ) secondaries->clearAndDestroy(); if( secondaries ) { - for(G4int i=0;isize();i++) + for(size_t i=0;isize();i++) { delete (*secondaries)[i]; } secondaries->clear(); } @@ -228,11 +229,11 @@ void G4EventManager::ProcessOneEvent(G4Event* anEvent) #endif if(userEventAction) userEventAction->EndOfEventAction(currentEvent); - currentEvent = NULL; + currentEvent = 0; } -void G4EventManager::StackTracks(G4TrackVector *trackVector) +void G4EventManager::StackTracks(G4TrackVector *trackVector,G4bool IDhasAlreadySet) { G4Track * newTrack; @@ -245,7 +246,7 @@ void G4EventManager::StackTracks(G4TrackVector *trackVector) { newTrack = (*trackVector)[ i ]; trackIDCounter++; - newTrack->SetTrackID( trackIDCounter ); + if(!IDhasAlreadySet) newTrack->SetTrackID( trackIDCounter ); trackContainer->PushOneTrack( newTrack ); #ifdef G4VERBOSE if ( verboseLevel > 1 ) diff --git a/source/event/src/G4GeneralParticleSource.cc b/source/event/src/G4GeneralParticleSource.cc index f9c459b53f..678fc9ffd4 100644 --- a/source/event/src/G4GeneralParticleSource.cc +++ b/source/event/src/G4GeneralParticleSource.cc @@ -30,7 +30,7 @@ // Organisation: University of Southampton / DERA // Customer: ESA/ESTEC // -// Documentation available at http://www.space.dera.gov.uk/space_env/gspm.html +// Documentation avaialable at http://www.space.dera.gov.uk/space_env/gspm.html // These include: // User Requirement Document (URD) // Software Specification Documents (SSD) @@ -38,12 +38,16 @@ // Technical Note (TN) on the physics and algorithms // /////////////////////////////////////////////////////////////////////////////// -// $Id: G4GeneralParticleSource.cc,v 1.9 2001/06/29 08:06:03 gcosmo Exp $ -// GEANT4 tag $Name: event-V03-01-01 $ +// $Id: G4GeneralParticleSource.cc,v 1.14 2001/10/19 16:48:28 flei Exp $ +// GEANT4 tag $Name: geant4-04-00 $ /////////////////////////////////////////////////////////////////////////////// // // CHANGE HISTORY // -------------- +// Further changes is recorded in the CVS HIstory file +// +// 9-May-2001 F. Lei +// added all the g4pariclegun commands // // 26-01-2001, F. Lei // replace: @@ -51,10 +55,10 @@ // // with: // if (posthe != 0. && posthe != pi) -// { posphi = acos(tx/sin(posthe)); } +// posphi = acos(tx/sin(posthe)); // else -// { posphi = 0.0;} -// endif +// posphi = 0.0; +// // // 10-Nov-2000, F. Lei // some bug fixing: @@ -96,8 +100,8 @@ G4GeneralParticleSource::G4GeneralParticleSource() NumberOfParticlesToBeGenerated = 1; particle_definition = NULL; G4ThreeVector zero; - particle_momentum_direction = (G4ParticleMomentum)zero; - particle_energy = 0.0; + particle_momentum_direction = G4ParticleMomentum(1,0,0); + particle_energy = 1.0*MeV; particle_position = zero; particle_time = 0.0; particle_polarization = zero; @@ -110,10 +114,13 @@ G4GeneralParticleSource::G4GeneralParticleSource() halfz = 0.; Radius = 0.; Radius0 = 0.; + SR = 0.; + SX = 0.; + SY = 0.; ParAlpha = 0.; ParTheta = 0.; ParPhi = 0.; - CentreCoords = (0.,0.,0.); + CentreCoords = G4ThreeVector(0., 0., 0.); Rotx = HepXHat; Roty = HepYHat; Rotz = HepZHat; @@ -122,18 +129,19 @@ G4GeneralParticleSource::G4GeneralParticleSource() SideRefVec1 = HepXHat; // x-axis SideRefVec2 = HepYHat; // y-axis SideRefVec3 = HepZHat; // z-axis - UserWRTSurface = false; // Any user-defined distribution is wrt co-ordinate - // axes. // Angular distribution variables. - AngDistType = "iso"; - AngRef1 = (1.,0.,0.); - AngRef2 = (0.,1.,0.); - AngRef3 = (0.,0.,1.); + AngDistType = "planar"; + AngRef1 = HepXHat; + AngRef2 = HepYHat; + AngRef3 = HepZHat; MinTheta = 0.; MaxTheta = pi; MinPhi = 0.; MaxPhi = twopi; + DR = 0.; + DX = 0.; + DY = 0.; UserDistType = "NULL"; IPDFThetaExist = false; IPDFPhiExist = false; @@ -145,12 +153,15 @@ G4GeneralParticleSource::G4GeneralParticleSource() Emax = 0.; alpha = 0.; Ezero = 0.; + SE = 0.; Temp = 0.; grad = 0.; cept = 0.; EnergySpec = true; // true - energy spectra, false - momentum spectra DiffSpec = true; // true - differential spec, false integral spec IntType = "NULL"; // Interpolation type + UserWRTSurface = false; // Any user-defined distribution is wrt co-ordinate + UserAngRef = false; // angular distribution is to mother or surface-normal co-or. IPDFEnergyExist = false; IPDFArbExist = false; @@ -247,6 +258,21 @@ void G4GeneralParticleSource::SetRadius0(G4double rad) Radius0 = rad; } +void G4GeneralParticleSource::SetBeamSigmaInR(G4double r) +{ + SR = r; +} + +void G4GeneralParticleSource::SetBeamSigmaInX(G4double r) +{ + SX = r; +} + +void G4GeneralParticleSource::SetBeamSigmaInY(G4double r) +{ + SY = r; +} + void G4GeneralParticleSource::SetParAlpha(G4double paralp) { ParAlpha = paralp; @@ -291,7 +317,7 @@ void G4GeneralParticleSource::ConfineSourceToVolume(G4String Vname) G4bool found = false; if(verbosityLevel == 2) G4cout << PVStore->size() << G4endl; - while (!found && isize()) { + while (!found && isize())) { tempPV = (*PVStore)[i]; found = tempPV->GetName() == theRequiredVolumeName; if(verbosityLevel == 2) @@ -326,13 +352,60 @@ void G4GeneralParticleSource::GeneratePointSource() G4cout << "Error SourcePosType is not set to Point" << G4endl; } +void G4GeneralParticleSource::GeneratePointsInBeam() +{ + G4double x, y, z, r, phi; + + G4ThreeVector RandPos; + G4double tempx, tempy, tempz; + z = 0.; + // Private Method to create points in a plane + if(Shape == "Circle") + { + r = G4RandGauss::shoot(0.0,SR) ; + phi = twopi * G4UniformRand(); + x = r*cos(phi) ; + y = r*sin(phi) ; + } + else + { + // all other cases default to Rectangle case + x = G4RandGauss::shoot(0.0,SX); + y = G4RandGauss::shoot(0.0,SY); + } + // Apply Rotation Matrix + // x * Rotx, y * Roty and z * Rotz + if(verbosityLevel == 2) + { + G4cout << "Raw position " << x << "," << y << "," << z << G4endl; + } + tempx = (x * Rotx.x()) + (y * Roty.x()) + (z * Rotz.x()); + tempy = (x * Rotx.y()) + (y * Roty.y()) + (z * Rotz.y()); + tempz = (x * Rotx.z()) + (y * Roty.z()) + (z * Rotz.z()); + + RandPos.setX(tempx); + RandPos.setY(tempy); + RandPos.setZ(tempz); + + // Translate + particle_position = CentreCoords + RandPos; + if(verbosityLevel >= 1) + { + if(verbosityLevel == 2) + { + G4cout << "Rotated Position " << RandPos << G4endl; + } + G4cout << "Rotated and Translated position " << particle_position << G4endl; + } +} + void G4GeneralParticleSource::GeneratePointsInPlane() { G4double x, y, z; G4double expression; G4ThreeVector RandPos; G4double tempx, tempy, tempz; - z = 0.; + x = y = z = 0.; if(SourcePosType != "Plane" && verbosityLevel >= 1) G4cout << "Error: SourcePosType is not Plane" << G4endl; @@ -448,15 +521,16 @@ void G4GeneralParticleSource::GeneratePointsOnSurface() //Private method to create points on a surface G4double theta, phi; G4double x, y, z; + x = y = z = 0.; G4ThreeVector RandPos; - G4double tempx, tempy, tempz; + // G4double tempx, tempy, tempz; if(SourcePosType != "Surface" && verbosityLevel >= 1) G4cout << "Error SourcePosType not Surface" << G4endl; if(Shape == "Sphere") { - G4double tantheta, tanphi; + G4double tantheta; theta = GenRandTheta(); phi = GenRandPhi(); @@ -483,7 +557,7 @@ void G4GeneralParticleSource::GeneratePointsOnSurface() } else if(Shape == "Ellipsoid") { - G4double testrand, theta, phi, minphi, maxphi, middlephi; + G4double theta, phi, minphi, maxphi, middlephi; G4double answer, constant; constant = pi/(halfx*halfx) + pi/(halfy*halfy) + @@ -854,7 +928,7 @@ void G4GeneralParticleSource::GeneratePointsInVolume() G4ThreeVector RandPos; G4double tempx, tempy, tempz; G4double x, y, z; - + x = y = z = 0.; if(SourcePosType != "Volume" && verbosityLevel >= 1) G4cout << "Error SourcePosType not Volume" << G4endl; //Private method to create points in a volume @@ -990,19 +1064,27 @@ G4bool G4GeneralParticleSource::IsSourceConfined() void G4GeneralParticleSource::SetAngDistType(G4String atype) { - if(atype != "iso" && atype != "cos" && atype != "user") - G4cout << "Error, distribution must be iso, cos or user" << G4endl; + if(atype != "iso" && atype != "cos" && atype != "user" && atype != "planar" + && atype != "beam1d" && atype != "beam2d") + G4cout << "Error, distribution must be iso, cos, planar, beam1d, beam2d or user" << G4endl; else AngDistType = atype; + if (AngDistType == "cos") MaxTheta = pi/2. ; + if (AngDistType == "user") { + UDefThetaH = IPDFThetaH = ZeroPhysVector ; + IPDFThetaExist = false ; + UDefPhiH = IPDFPhiH = ZeroPhysVector ; + IPDFPhiExist = false ; + } } void G4GeneralParticleSource::DefineAngRefAxes(G4String refname, G4ThreeVector ref) { if(refname == "angref1") - AngRef1 = ref; // x' + AngRef1 = ref.unit(); // x' else if(refname == "angref2") - AngRef2 = ref; // vector in x'y' plane + AngRef2 = ref.unit(); // vector in x'y' plane // User defines x' (AngRef1) and a vector in the x'y' // plane (AngRef2). Then, AngRef1 x AngRef2 = AngRef3 @@ -1011,6 +1093,7 @@ void G4GeneralParticleSource::DefineAngRefAxes(G4String refname, G4ThreeVector r AngRef3 = AngRef1.cross(AngRef2); // z' AngRef2 = AngRef3.cross(AngRef1); // y' + UserAngRef = true ; if(verbosityLevel == 2) { G4cout << "Angular distribution rotation axes " << AngRef1 << " " << AngRef2 << " " << AngRef3 << G4endl; @@ -1037,6 +1120,21 @@ void G4GeneralParticleSource::SetMaxPhi(G4double maxp) MaxPhi = maxp; } +void G4GeneralParticleSource::SetBeamSigmaInAngR(G4double r) +{ + DR = r; +} + +void G4GeneralParticleSource::SetBeamSigmaInAngX(G4double r) +{ + DX = r; +} + +void G4GeneralParticleSource::SetBeamSigmaInAngY(G4double r) +{ + DY = r; +} + void G4GeneralParticleSource::UserDefAngTheta(G4ThreeVector input) { if(UserDistType == "NULL") UserDistType = "theta"; @@ -1070,12 +1168,67 @@ void G4GeneralParticleSource::SetUserWRTSurface(G4bool wrtSurf) UserWRTSurface = wrtSurf; } +void G4GeneralParticleSource::SetUseUserAngAxis(G4bool userang) +{ + // if UserAngRef = true the angular distribution is defined wrt + // the user defined co-ordinates + UserAngRef = userang; +} + +void G4GeneralParticleSource::GenerateBeamFlux() +{ + // generates isotropic flux. + // No vectors are needed. + G4double theta, phi; + G4double px, py, pz; + if (AngDistType == "beam1d") + { + theta = G4RandGauss::shoot(0.0,DR); + phi = twopi * G4UniformRand(); + } + else + { + px = G4RandGauss::shoot(0.0,DX); + py = G4RandGauss::shoot(0.0,DY); + theta = sqrt (px*px + py*py); + if (theta != 0.) { + phi = acos(px/theta); + if ( py < 0.) phi = -phi; + } + else + { + phi = 0.0; + } + } + px = -sin(theta) * cos(phi); + py = -sin(theta) * sin(phi); + pz = -cos(theta); + // Apply Angular Rotation Matrix + // x * AngRef1, y * AngRef2 and z * AngRef3 + G4double finx, finy, finz; + finx = (px * AngRef1.x()) + (py * AngRef2.x()) + (pz * AngRef3.x()); + finy = (px * AngRef1.y()) + (py * AngRef2.y()) + (pz * AngRef3.y()); + finz = (px * AngRef1.z()) + (py * AngRef2.z()) + (pz * AngRef3.z()); + G4double ResMag = sqrt((finx*finx) + (finy*finy) + (finz*finz)); + finx = finx/ResMag; + finy = finy/ResMag; + finz = finz/ResMag; + + particle_momentum_direction.setX(finx); + particle_momentum_direction.setY(finy); + particle_momentum_direction.setZ(finz); + + // particle_momentum_direction now holds unit momentum vector. + if(verbosityLevel >= 1) + G4cout << "Generating beam vector: " << particle_momentum_direction << G4endl; +} + void G4GeneralParticleSource::GenerateIsotropicFlux() { // generates isotropic flux. // No vectors are needed. G4double rndm, rndm2; - G4double px, py, pz, pmag; + G4double px, py, pz; // generate rand nos. but make sure in theta/phi limits /* Colin's old stuff @@ -1111,21 +1264,23 @@ void G4GeneralParticleSource::GenerateIsotropicFlux() sinphi = sin(Phi); cosphi = cos(Phi); - px = sintheta * cosphi; - py = sintheta * sinphi; - pz = costheta; + px = -sintheta * cosphi; + py = -sintheta * sinphi; + pz = -costheta; // end of F.Lei implementation - px = -px; - py = -py; - pz = -pz; + // px = -px; + //py = -py; + //pz = -pz; - pmag = sqrt((px*px) + (py*py) + (pz*pz)); + // pmag = sqrt((px*px) + (py*py) + (pz*pz)); - px = px/pmag; - py = py/pmag; - pz = pz/pmag; + //px = px/pmag; + //py = py/pmag; + //pz = pz/pmag; + + /* this implmentation is commented out by f.lei //Need to rotate the particle_momentum_direction round such that the //start position is at the north pole, so that all particles go into @@ -1144,17 +1299,60 @@ void G4GeneralParticleSource::GenerateIsotropicFlux() ty = ty/tt; tz = tz/tt; // G4cout << "unit position " << tx << " " << ty << " " << tz << G4endl; - posthe = acos(tz); - if (posthe != 0. && posthe != pi) - { posphi = acos(tx/sin(posthe)); } - else - { posphi = 0.0;} + if (tt != 0.) { + posthe = acos(tz); + } + else { + posthe = 0.; + } + if (posthe != 0. && posthe != pi){ + posphi = acos(tx/sin(posthe)); + } + else{ + posphi = 0.0; + } // G4cout << "Posthe and posphi " << posthe << " " << posphi << G4endl; G4double finx, finy, finz; finx = (px*cos(posthe)*cos(posphi)) - (py*sin(posphi)) + (pz*sin(posthe)*cos(posphi)); finy = (px*cos(posthe)*sin(posphi)) + (py*cos(posphi)) + (pz*sin(posthe)*sin(posphi)); finz = (-px*sin(posthe)) + (pz*cos(posthe)); - // G4cout << "finx... " << finx << " " << finy << " " << finz << G4endl; + // G4cout << "finx... " << finx << " " << finy << " " << finz << G4endl; + */ + + // New implementation + // for volume and ponit source use mother or user defined co-ordinates + // for plane and surface source user surface-normal or userdefined co-ordinates + // + G4double finx, finy, finz; + if (SourcePosType == "Point" || SourcePosType == "Volume") { + if (UserAngRef){ + // Apply Rotation Matrix + // x * AngRef1, y * AngRef2 and z * AngRef3 + finx = (px * AngRef1.x()) + (py * AngRef2.x()) + (pz * AngRef3.x()); + finy = (px * AngRef1.y()) + (py * AngRef2.y()) + (pz * AngRef3.y()); + finz = (px * AngRef1.z()) + (py * AngRef2.z()) + (pz * AngRef3.z()); + } else { + finx = px; + finy = py; + finz = pz; + } + } else { // for plane and surface source + if (UserAngRef){ + // Apply Rotation Matrix + // x * AngRef1, y * AngRef2 and z * AngRef3 + finx = (px * AngRef1.x()) + (py * AngRef2.x()) + (pz * AngRef3.x()); + finy = (px * AngRef1.y()) + (py * AngRef2.y()) + (pz * AngRef3.y()); + finz = (px * AngRef1.z()) + (py * AngRef2.z()) + (pz * AngRef3.z()); + } else { + finx = (px*SideRefVec1.x()) + (py*SideRefVec2.x()) + (pz*SideRefVec3.x()); + finy = (px*SideRefVec1.y()) + (py*SideRefVec2.y()) + (pz*SideRefVec3.y()); + finz = (px*SideRefVec1.z()) + (py*SideRefVec2.z()) + (pz*SideRefVec3.z()); + } + } + G4double ResMag = sqrt((finx*finx) + (finy*finy) + (finz*finz)); + finx = finx/ResMag; + finy = finy/ResMag; + finz = finz/ResMag; particle_momentum_direction.setX(finx); particle_momentum_direction.setY(finy); @@ -1169,9 +1367,9 @@ void G4GeneralParticleSource::GenerateCosineLawFlux() { // Method to generate flux distributed with a cosine law // such as is in TIMM. - G4double px, py, pz, pmag; + G4double px, py, pz; G4double rndm, rndm2; - G4double resultx, resulty, resultz; + // G4double resultx, resulty, resultz; /* Colin's old implementation which is very slow @@ -1198,7 +1396,8 @@ void G4GeneralParticleSource::GenerateCosineLawFlux() // G4double sintheta, sinphi,costheta,cosphi; rndm = GenRandTheta(); - sintheta = sqrt( rndm * (sin(MaxTheta)*sin(MaxTheta) - sin(MinTheta)*sin(MinTheta) ) ); + sintheta = sqrt( rndm * (sin(MaxTheta)*sin(MaxTheta) - sin(MinTheta)*sin(MinTheta) ) + +sin(MinTheta)*sin(MinTheta) ); costheta = sqrt(1. -sintheta*sintheta); rndm2 = GenRandPhi(); @@ -1206,20 +1405,21 @@ void G4GeneralParticleSource::GenerateCosineLawFlux() sinphi = sin(Phi); cosphi = cos(Phi); - px = sintheta * cosphi; - py = sintheta * sinphi; - pz = costheta; + px = -sintheta * cosphi; + py = -sintheta * sinphi; + pz = -costheta; // end of F.Lei implementation - px = -px; - py = -py; - pz = -pz; - pmag = sqrt((px*px) + (py*py) + (pz*pz)); - G4double pxh = px/pmag; - G4double pyh = py/pmag; - G4double pzh = pz/pmag; + // px = -px; + //py = -py; + //pz = -pz; + //pmag = sqrt((px*px) + (py*py) + (pz*pz)); + //G4double pxh = px/pmag; + //G4double pyh = py/pmag; + //G4double pzh = pz/pmag; + /* commented out by F. Lei if(verbosityLevel == 2) { G4cout <<"SideRefVecs " <= 1) { @@ -1250,6 +1490,17 @@ void G4GeneralParticleSource::GenerateCosineLawFlux() } } +void G4GeneralParticleSource::GeneratePlanarFlux() +{ + // particle_momentum_direction now contains unit momentum vector. + // nothing need be done here as the m-directions have been set directly + // under this option + if(verbosityLevel >= 1) + { + G4cout << "Resultant Planar wave momentum vector " << particle_momentum_direction << G4endl; + } +} + void G4GeneralParticleSource::GenerateUserDefFlux() { G4double rndm, px, py, pz, pmag; @@ -1290,9 +1541,26 @@ void G4GeneralParticleSource::GenerateUserDefFlux() if(UserWRTSurface == false) { - particle_momentum_direction.setX(px/pmag); - particle_momentum_direction.setY(py/pmag); - particle_momentum_direction.setZ(pz/pmag); + G4double finx, finy, finz; + if (UserAngRef) { + // Apply Rotation Matrix + // x * AngRef1, y * AngRef2 and z * AngRef3 + finx = (px * AngRef1.x()) + (py * AngRef2.x()) + (pz * AngRef3.x()); + finy = (px * AngRef1.y()) + (py * AngRef2.y()) + (pz * AngRef3.y()); + finz = (px * AngRef1.z()) + (py * AngRef2.z()) + (pz * AngRef3.z()); + } else { // use mother co-ordinates + finx = px; + finy = py; + finz = pz; + } + G4double ResMag = sqrt((finx*finx) + (finy*finy) + (finz*finz)); + finx = finx/ResMag; + finy = finy/ResMag; + finz = finz/ResMag; + + particle_momentum_direction.setX(finx); + particle_momentum_direction.setY(finy); + particle_momentum_direction.setZ(finz); } else if(UserWRTSurface == true) { @@ -1323,7 +1591,7 @@ void G4GeneralParticleSource::GenerateUserDefFlux() particle_momentum_direction.setY(resulty); particle_momentum_direction.setZ(resultz); } - + // particle_momentum_direction now contains unit momentum vector. if(verbosityLevel >= 1) { @@ -1427,6 +1695,17 @@ G4double G4GeneralParticleSource::GenerateUserDefPhi() void G4GeneralParticleSource::SetEnergyDisType(G4String DisType) { EnergyDisType = DisType; + if (EnergyDisType == "User"){ + UDefEnergyH = IPDFEnergyH = ZeroPhysVector ; + IPDFEnergyExist = false ; + } else if ( EnergyDisType == "Arb"){ + ArbEnergyH =IPDFArbEnergyH = ZeroPhysVector ; + IPDFArbExist = false; + } else if (EnergyDisType == "Epn"){ + UDefEnergyH = IPDFEnergyH = ZeroPhysVector ; + IPDFEnergyExist = false ; + EpnEnergyH = ZeroPhysVector ; + } } void G4GeneralParticleSource::SetEmin(G4double emi) @@ -1446,6 +1725,10 @@ void G4GeneralParticleSource::SetMonoEnergy(G4double menergy) Emax = menergy; } +void G4GeneralParticleSource::SetBeamSigmaInE(G4double e) +{ + SE = e; +} void G4GeneralParticleSource::SetAlpha(G4double alp) { alpha = alp; @@ -1496,7 +1779,7 @@ void G4GeneralParticleSource::ArbEnergyHisto(G4ThreeVector input) void G4GeneralParticleSource::EpnEnergyHisto(G4ThreeVector input) { - G4double elo, ehi, val; + G4double ehi, val; ehi = input.x(); val = input.y(); if(verbosityLevel == 2) @@ -1625,7 +1908,7 @@ void G4GeneralParticleSource::ArbInterpolate(G4String IType) if(EnergyDisType != "Arb") G4cout << "Error: this is for arbitrary distributions" << G4endl; IntType = IType; - G4int i=0; + // Calcuate Emin and Emax, mainly for use in debugging G4int len = G4int(ArbEnergyH.GetVectorLength()); @@ -2099,9 +2382,16 @@ void G4GeneralParticleSource::GenerateMonoEnergetic() particle_energy = MonoEnergy; } +void G4GeneralParticleSource::GenerateGaussEnergies() +{ + // Method to generate Gaussian particles. + particle_energy = G4RandGauss::shoot(MonoEnergy,SE); + if (particle_energy < 0) particle_energy = 0.; +} + void G4GeneralParticleSource::GenerateLinearEnergies() { - G4double energy, rndm; + G4double rndm; G4double emaxsq = pow(Emax,2.); //Emax squared G4double eminsq = pow(Emin,2.); //Emin squared G4double intersq = pow(cept,2.); //cept squared @@ -2337,6 +2627,7 @@ void G4GeneralParticleSource::GenUserHistEnergies() G4int ii; G4int maxbin = G4int(UDefEnergyH.GetVectorLength()); G4double bins[256], vals[256], sum; + sum=0.; // UDefEnergyH.DumpValues(); G4double mass = particle_definition->GetPDGMass(); // G4cout << mass << G4endl; @@ -2631,6 +2922,56 @@ void G4GeneralParticleSource::SetEnergyBias(G4ThreeVector input) EnergyBias = true; } + +void G4GeneralParticleSource::ReSetHist(G4String atype) +{ + if (atype == "theta") { + UDefThetaH = IPDFThetaH = ZeroPhysVector ; + IPDFThetaExist = false ;} + else if (atype == "phi"){ + UDefPhiH = IPDFPhiH = ZeroPhysVector ; + IPDFPhiExist = false ;} + else if (atype == "energy"){ + UDefEnergyH = IPDFEnergyH = ZeroPhysVector ; + IPDFEnergyExist = false ;} + else if ( atype == "arb"){ + ArbEnergyH =IPDFArbEnergyH = ZeroPhysVector ; + IPDFArbExist = false;} + else if ( atype == "epn"){ + UDefEnergyH = IPDFEnergyH = ZeroPhysVector ; + IPDFEnergyExist = false ; + EpnEnergyH = ZeroPhysVector ;} + else if ( atype == "biasx") { + XBias = false ; + IPDFXBias = false; + XBiasH = IPDFXBiasH = ZeroPhysVector ;} + else if ( atype == "biasy") { + YBias = false ; + IPDFYBias = false; + YBiasH = IPDFYBiasH = ZeroPhysVector ;} + else if ( atype == "biasz") { + ZBias = false ; + IPDFZBias = false; + ZBiasH = IPDFZBiasH = ZeroPhysVector ;} + else if ( atype == "biast") { + ThetaBias = false ; + IPDFThetaBias = false; + ThetaBiasH = IPDFThetaBiasH = ZeroPhysVector ;} + else if ( atype == "biasp") { + PhiBias = false ; + IPDFPhiBias = false; + PhiBiasH = IPDFPhiBiasH = ZeroPhysVector ;} + else if ( atype == "biase") { + EnergyBias = false ; + IPDFEnergyBias = false; + EnergyBiasH = IPDFEnergyBiasH = ZeroPhysVector ;} + else { + G4cout << "Error, histtype not accepted " << G4endl; + } +} + + + G4double G4GeneralParticleSource::GenRandX() { if(verbosityLevel >= 1) @@ -3055,6 +3396,8 @@ void G4GeneralParticleSource::GeneratePrimaryVertex(G4Event *evt) { if(SourcePosType == "Point") GeneratePointSource(); + else if(SourcePosType == "Beam") + GeneratePointsInBeam(); else if(SourcePosType == "Plane") GeneratePointsInPlane(); else if(SourcePosType == "Surface") @@ -3096,6 +3439,10 @@ void G4GeneralParticleSource::GeneratePrimaryVertex(G4Event *evt) GenerateIsotropicFlux(); else if(AngDistType == "cos") GenerateCosineLawFlux(); + else if(AngDistType == "planar") + GeneratePlanarFlux(); + else if(AngDistType == "beam1d" || AngDistType == "beam2d" ) + GenerateBeamFlux(); else if(AngDistType == "user") GenerateUserDefFlux(); else @@ -3109,6 +3456,8 @@ void G4GeneralParticleSource::GeneratePrimaryVertex(G4Event *evt) GeneratePowEnergies(); else if(EnergyDisType == "Exp") GenerateExpEnergies(); + else if(EnergyDisType == "Gauss") + GenerateGaussEnergies(); else if(EnergyDisType == "Brem") GenerateBremEnergies(); else if(EnergyDisType == "Bbody") @@ -3138,6 +3487,13 @@ void G4GeneralParticleSource::GeneratePrimaryVertex(G4Event *evt) G4double py = pmom*particle_momentum_direction.y(); G4double pz = pmom*particle_momentum_direction.z(); + if(verbosityLevel > 1){ + G4cout << "Particle name: "<GetParticleName() << G4endl; + G4cout << " Energy: "<SetPrimary( particle ); // Set bweight equal to the multiple of all non-zero weights - bweight = 0.; + bweight = 1.; for(int bib=0; bib<6; bib++) { - if(bweights[bib] > 0. && bweight == 0.) - bweight = bweight + bweights[bib]; - else if(bweights[bib] > 0.) - bweight = bweight * bweights[bib]; + if(bweights[bib] > 0.) bweight = bweight * bweights[bib]; } // bweight will now contain the events final weighting. // now pass it to the primary vertex vertex->SetWeight(bweight); } - evt->AddPrimaryVertex( vertex ); + if(verbosityLevel > 1) + G4cout << " Primary Vetex generated !"<< G4endl; } + + + + + + + + diff --git a/source/event/src/G4GeneralParticleSourceMessenger.cc b/source/event/src/G4GeneralParticleSourceMessenger.cc index e3bf528131..c494e02c96 100644 --- a/source/event/src/G4GeneralParticleSourceMessenger.cc +++ b/source/event/src/G4GeneralParticleSourceMessenger.cc @@ -21,7 +21,7 @@ // ******************************************************************** // /////////////////////////////////////////////////////////////////////////////// -// +// // MODULE: G4GeneralParticleSourceMessenger.cc // // Version: 1. @@ -31,15 +31,15 @@ // Customer: ESA/ESTEC // /////////////////////////////////////////////////////////////////////////////// -// $Id: G4GeneralParticleSourceMessenger.cc,v 1.4 2001/06/29 08:06:04 gcosmo Exp $ -// GEANT4 tag $Name: event-V03-01-01 $ -/////////////////////////////////////////////////////////////////////////////// // // CHANGE HISTORY // -------------- // +// 9-May-2001 F. Lei +// added all the g4pariclegun commands +// // 10-Nov-2000 F. Lei -// changed +// changed // #include // to // #include "g4std/fstream" @@ -66,13 +66,13 @@ #include "G4UIcmdWithABool.hh" #include "G4ios.hh" +//#include #include "g4std/fstream" -#include "g4std/iomanip" -#include "g4rw/ctoken.h" -#include "g4rw/rstream.h" +#include "g4std/iomanip" #include "g4std/strstream" +#include "G4Tokenizer.hh" #include "G4GeneralParticleSourceMessenger.hh" #include "G4GeneralParticleSource.hh" /////////////////////////////////////////////////////////////////////////////// @@ -86,13 +86,106 @@ G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger gpsDirectory = new G4UIdirectory("/gps/"); gpsDirectory->SetGuidance("General Paricle Source control commands."); + gpsDirectory->SetGuidance(" The first 9 commands are the same as in G4ParticleGun "); + + // below we reproduce commands awailable in G4Particle Gun + + listCmd = new G4UIcmdWithoutParameter("/gps/List",this); + listCmd->SetGuidance("List available particles."); + listCmd->SetGuidance(" Invoke G4ParticleTable."); + + particleCmd = new G4UIcmdWithAString("/gps/particle",this); + particleCmd->SetGuidance("Set particle to be generated."); + particleCmd->SetGuidance(" (geantino is default)"); + particleCmd->SetGuidance(" (ion can be specified for shooting ions)"); + particleCmd->SetParameterName("particleName",true); + particleCmd->SetDefaultValue("geantino"); + G4String candidateList; + G4int nPtcl = particleTable->entries(); + for(G4int i=0;iGetParticleName(i); + candidateList += " "; + } + candidateList += "ion "; + particleCmd->SetCandidates(candidateList); + + + directionCmd = new G4UIcmdWith3Vector("/gps/direction",this); + directionCmd->SetGuidance("Set momentum direction."); + directionCmd->SetGuidance("Direction needs not to be a unit vector."); + directionCmd->SetParameterName("Px","Py","Pz",true,true); + directionCmd->SetRange("Px != 0 || Py != 0 || Pz != 0"); + + energyCmd = new G4UIcmdWithADoubleAndUnit("/gps/energy",this); + energyCmd->SetGuidance("Set kinetic energy."); + energyCmd->SetParameterName("Energy",true,true); + energyCmd->SetDefaultUnit("GeV"); + //energyCmd->SetUnitCategory("Energy"); + //energyCmd->SetUnitCandidates("eV keV MeV GeV TeV"); + + positionCmd = new G4UIcmdWith3VectorAndUnit("/gps/position",this); + positionCmd->SetGuidance("Set starting position of the particle."); + positionCmd->SetParameterName("X","Y","Z",true,true); + positionCmd->SetDefaultUnit("cm"); + //positionCmd->SetUnitCategory("Length"); + //positionCmd->SetUnitCandidates("microm mm cm m km"); + + // SR1.3 + // ionCmd = new UIcmdWithNucleusAndUnit("/gps/ion",this); + //ionCmd->SetGuidance("define the primary ion (a,z,e)"); + //ionCmd->SetParameterName("A","Z","E",true); + //ionCmd->SetDefaultUnit("keV"); + //ionCmd->SetUnitCandidates("keV MeV"); + + ionCmd = new G4UIcommand("/gps/ion",this); + ionCmd->SetGuidance("Set properties of ion to be generated."); + ionCmd->SetGuidance("[usage] /gun/ion Z A Q E"); + ionCmd->SetGuidance(" Z:(int) AtomicNumber"); + ionCmd->SetGuidance(" A:(int) AtomicMass"); + ionCmd->SetGuidance(" Q:(int) Charge of Ion (in unit of e)"); + ionCmd->SetGuidance(" E:(double) Excitation energy (in keV)"); + + G4UIparameter* param; + param = new G4UIparameter("Z",'i',false); + param->SetDefaultValue("1"); + ionCmd->SetParameter(param); + param = new G4UIparameter("A",'i',false); + param->SetDefaultValue("1"); + ionCmd->SetParameter(param); + param = new G4UIparameter("Q",'i',true); + param->SetDefaultValue("0"); + ionCmd->SetParameter(param); + param = new G4UIparameter("E",'d',true); + param->SetDefaultValue("0.0"); + ionCmd->SetParameter(param); + + + timeCmd = new G4UIcmdWithADoubleAndUnit("/gps/time",this); + timeCmd->SetGuidance("Set initial time of the particle."); + timeCmd->SetParameterName("t0",true,true); + timeCmd->SetDefaultUnit("ns"); + //timeCmd->SetUnitCategory("Time"); + //timeCmd->SetUnitCandidates("ns ms s"); + + polCmd = new G4UIcmdWith3Vector("/gps/polarization",this); + polCmd->SetGuidance("Set polarization."); + polCmd->SetParameterName("Px","Py","Pz",true,true); + polCmd->SetRange("Px>=-1.&&Px<=1.&&Py>=-1.&&Py<=1.&&Pz>=-1.&&Pz<=1."); + + numberCmd = new G4UIcmdWithAnInteger("/gps/number",this); + numberCmd->SetGuidance("Set number of particles to be generated."); + numberCmd->SetParameterName("N",true,true); + numberCmd->SetRange("N>0"); + + // now extended commands typeCmd = new G4UIcmdWithAString("/gps/type",this); typeCmd->SetGuidance("Sets source distribution type."); - typeCmd->SetGuidance("Either Point, Plane, Surface or Volume"); + typeCmd->SetGuidance("Either Point, Beam, Plane, Surface or Volume"); typeCmd->SetParameterName("DisType",true,true); typeCmd->SetDefaultValue("Point"); - typeCmd->SetCandidates("Point Plane Surface Volume"); + typeCmd->SetCandidates("Point Beam Plane Surface Volume"); shapeCmd = new G4UIcmdWithAString("/gps/shape",this); shapeCmd->SetGuidance("Sets source shape type."); @@ -148,6 +241,24 @@ G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger radius0Cmd->SetDefaultUnit("cm"); radius0Cmd->SetUnitCandidates("micron mm cm m km"); + possigmarCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaposr",this); + possigmarCmd->SetGuidance("Set standard deviation of beam position in radial"); + possigmarCmd->SetParameterName("Sigmar",true,true); + possigmarCmd->SetDefaultUnit("cm"); + possigmarCmd->SetUnitCandidates("micron mm cm m km"); + + possigmaxCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaposx",this); + possigmaxCmd->SetGuidance("Set standard deviation of beam position in x-dir"); + possigmaxCmd->SetParameterName("Sigmax",true,true); + possigmaxCmd->SetDefaultUnit("cm"); + possigmaxCmd->SetUnitCandidates("micron mm cm m km"); + + possigmayCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaposy",this); + possigmayCmd->SetGuidance("Set standard deviation of beam position in y-dir"); + possigmayCmd->SetParameterName("Sigmay",true,true); + possigmayCmd->SetDefaultUnit("cm"); + possigmayCmd->SetUnitCandidates("micron mm cm m km"); + paralpCmd = new G4UIcmdWithADoubleAndUnit("/gps/paralp",this); paralpCmd->SetGuidance("Angle from y-axis of y' in Para"); paralpCmd->SetParameterName("paralp",true,true); @@ -175,10 +286,10 @@ G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger // Angular distribution commands angtypeCmd = new G4UIcmdWithAString("/gps/angtype",this); angtypeCmd->SetGuidance("Sets angular source distribution type"); - angtypeCmd->SetGuidance("Possible variables are: iso, cos or user"); + angtypeCmd->SetGuidance("Possible variables are: iso, cos planar beam1d beam2d or user"); angtypeCmd->SetParameterName("AngDis",true,true); angtypeCmd->SetDefaultValue("iso"); - angtypeCmd->SetCandidates("iso cos user"); + angtypeCmd->SetCandidates("iso cos planar beam1d beam2d user"); angrot1Cmd = new G4UIcmdWith3Vector("/gps/angrot1",this); angrot1Cmd->SetGuidance("Sets the x' vector for angular distribution"); @@ -217,6 +328,30 @@ G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger maxphiCmd->SetDefaultUnit("rad"); maxphiCmd->SetUnitCandidates("rad deg"); + angsigmarCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaangr",this); + angsigmarCmd->SetGuidance("Set standard deviation of beam direction in radial."); + angsigmarCmd->SetParameterName("Sigmara",true,true); + angsigmarCmd->SetDefaultUnit("rad"); + angsigmarCmd->SetUnitCandidates("rad deg"); + + angsigmaxCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaangx",this); + angsigmaxCmd->SetGuidance("Set standard deviation of beam direction in x-direc."); + angsigmaxCmd->SetParameterName("Sigmaxa",true,true); + angsigmaxCmd->SetDefaultUnit("rad"); + angsigmaxCmd->SetUnitCandidates("rad deg"); + + angsigmayCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmaangy",this); + angsigmayCmd->SetGuidance("Set standard deviation of beam direction in y-direc."); + angsigmayCmd->SetParameterName("Sigmaya",true,true); + angsigmayCmd->SetDefaultUnit("rad"); + angsigmayCmd->SetUnitCandidates("rad deg"); + + useuserangaxisCmd = new G4UIcmdWithABool("/gps/useuserangaxis",this); + useuserangaxisCmd->SetGuidance("true for using user defined angular co-ordinates"); + useuserangaxisCmd->SetGuidance("Default is false"); + useuserangaxisCmd->SetParameterName("useuserangaxis",true); + useuserangaxisCmd->SetDefaultValue(false); + surfnormCmd = new G4UIcmdWithABool("/gps/surfnorm",this); surfnormCmd->SetGuidance("Makes a user-defined distribution with respect to surface normals rather than x,y,z axes."); surfnormCmd->SetGuidance("Default is false"); @@ -228,7 +363,7 @@ G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger energytypeCmd->SetGuidance("Sets energy distribution type"); energytypeCmd->SetParameterName("EnergyDis",true,true); energytypeCmd->SetDefaultValue("Mono"); - energytypeCmd->SetCandidates("Mono Lin Pow Exp Brem Bbody Cdg User Arb Epn"); + energytypeCmd->SetCandidates("Mono Lin Pow Exp Gauss Brem Bbody Cdg User Arb Epn"); eminCmd = new G4UIcmdWithADoubleAndUnit("/gps/emin",this); eminCmd->SetGuidance("Sets Emin"); @@ -243,42 +378,48 @@ G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger emaxCmd->SetUnitCandidates("eV keV MeV GeV TeV PeV"); monoenergyCmd = new G4UIcmdWithADoubleAndUnit("/gps/monoenergy",this); - monoenergyCmd->SetGuidance("Sets Monoenergy"); + monoenergyCmd->SetGuidance("Sets Monoenergy (obsolete, use gps/energy instead!)"); monoenergyCmd->SetParameterName("monoenergy",true,true); monoenergyCmd->SetDefaultUnit("keV"); monoenergyCmd->SetUnitCandidates("eV keV MeV GeV TeV PeV"); + engsigmaCmd = new G4UIcmdWithADoubleAndUnit("/gps/sigmae",this); + engsigmaCmd->SetGuidance("Sets the standard deviation for Gaussian energy dist."); + engsigmaCmd->SetParameterName("Sigmae",true,true); + engsigmaCmd->SetDefaultUnit("keV"); + engsigmaCmd->SetUnitCandidates("eV keV MeV GeV TeV PeV"); + alphaCmd = new G4UIcmdWithADouble("/gps/alpha",this); - alphaCmd->SetGuidance("Sets Alpha"); + alphaCmd->SetGuidance("Sets Alpha (index) for power-law energy dist."); alphaCmd->SetParameterName("alpha",true,true); tempCmd = new G4UIcmdWithADouble("/gps/temp",this); - tempCmd->SetGuidance("Sets the temperature for Brem and BBody"); + tempCmd->SetGuidance("Sets the temperature for Brem and BBody (in Kelvin)"); tempCmd->SetParameterName("temp",true,true); ezeroCmd = new G4UIcmdWithADouble("/gps/ezero",this); - ezeroCmd->SetGuidance("Sets ezero exponential distributions"); + ezeroCmd->SetGuidance("Sets ezero exponential distributions (in MeV)"); ezeroCmd->SetParameterName("ezero",true,true); gradientCmd = new G4UIcmdWithADouble("/gps/gradient",this); - gradientCmd->SetGuidance("Sets the gradient for Lin distributions"); + gradientCmd->SetGuidance("Sets the gradient for Lin distributions (in 1/MeV)"); gradientCmd->SetParameterName("gradient",true,true); interceptCmd = new G4UIcmdWithADouble("/gps/intercept",this); - interceptCmd->SetGuidance("Sets the intercept for Lin distributions"); + interceptCmd->SetGuidance("Sets the intercept for Lin distributions (in MeV)"); interceptCmd->SetParameterName("intercept",true,true); calculateCmd = new G4UIcmdWithoutParameter("/gps/calculate",this); calculateCmd->SetGuidance("Calculates distributions for Cdg and BBody"); energyspecCmd = new G4UIcmdWithABool("/gps/energyspec",this); - energyspecCmd->SetGuidance("Toggles between energy and momentum spectra"); + energyspecCmd->SetGuidance("True for energy and false for momentum spectra"); energyspecCmd->SetParameterName("energyspec",true); energyspecCmd->SetDefaultValue(true); diffspecCmd = new G4UIcmdWithABool("/gps/diffspec",this); - diffspecCmd->SetGuidance("Toggles between differential and integral spectra"); - diffspecCmd->SetParameterName("diffspec",true,true); + diffspecCmd->SetGuidance("True for differential and flase for integral spectra"); + diffspecCmd->SetParameterName("diffspec",true); diffspecCmd->SetDefaultValue(true); // Biasing + histograms in general @@ -288,6 +429,13 @@ G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger histnameCmd->SetDefaultValue("biasx"); histnameCmd->SetCandidates("biasx biasy biasz biast biasp biase theta phi energy arb epn"); + // re-set the histograms + resethistCmd = new G4UIcmdWithAString("/gps/resethist",this); + resethistCmd->SetGuidance("Re-Set the histogram "); + resethistCmd->SetParameterName("HistType",true,true); + resethistCmd->SetDefaultValue("energy"); + resethistCmd->SetCandidates("biasx biasy biasz biast biasp biase theta phi energy arb epn"); + histpointCmd = new G4UIcmdWith3Vector("/gps/histpoint",this); histpointCmd->SetGuidance("Allows user to define a histogram"); histpointCmd->SetGuidance("Enter: Ehi Weight"); @@ -309,68 +457,6 @@ G4GeneralParticleSourceMessenger::G4GeneralParticleSourceMessenger verbosityCmd->SetParameterName("level",false); verbosityCmd->SetRange("level>=0 && level <=2"); - particleCmd = new G4UIcmdWithAString("/gps/particle",this); - particleCmd->SetGuidance("Set particle to be generated."); - particleCmd->SetGuidance(" (geantino is default)"); - particleCmd->SetGuidance(" (ion can be specified for shooting ions)"); - particleCmd->SetParameterName("particleName",true); - particleCmd->SetDefaultValue("geantino"); - G4String candidateList; - G4int nPtcl = particleTable->entries(); - for(G4int i=0;iGetParticleName(i); - candidateList += " "; - } - candidateList += "ion "; - particleCmd->SetCandidates(candidateList); - - // SR1.3 - // ionCmd = new UIcmdWithNucleusAndUnit("/gps/ion",this); - //ionCmd->SetGuidance("define the primary ion (a,z,e)"); - //ionCmd->SetParameterName("A","Z","E",true); - //ionCmd->SetDefaultUnit("keV"); - //ionCmd->SetUnitCandidates("keV MeV"); - - ionCmd = new G4UIcommand("/gps/ion",this); - ionCmd->SetGuidance("Set properties of ion to be generated."); - ionCmd->SetGuidance("[usage] /gun/ion Z A Q E"); - ionCmd->SetGuidance(" Z:(int) AtomicNumber"); - ionCmd->SetGuidance(" A:(int) AtomicMass"); - ionCmd->SetGuidance(" Q:(int) Charge of Ion (in unit of e)"); - ionCmd->SetGuidance(" E:(double) Excitation energy (in keV)"); - - G4UIparameter* param; - param = new G4UIparameter("Z",'i',false); - param->SetDefaultValue("1"); - ionCmd->SetParameter(param); - param = new G4UIparameter("A",'i',false); - param->SetDefaultValue("1"); - ionCmd->SetParameter(param); - param = new G4UIparameter("Q",'i',true); - param->SetDefaultValue("0"); - ionCmd->SetParameter(param); - param = new G4UIparameter("E",'d',true); - param->SetDefaultValue("0.0"); - ionCmd->SetParameter(param); - - - timeCmd = new G4UIcmdWithADoubleAndUnit("/gps/time",this); - timeCmd->SetGuidance("Set initial time of the particle."); - timeCmd->SetParameterName("t0",true,true); - timeCmd->SetDefaultUnit("ns"); - //timeCmd->SetUnitCategory("Time"); - //timeCmd->SetUnitCandidates("ns ms s"); - - polCmd = new G4UIcmdWith3Vector("/gps/polarization",this); - polCmd->SetGuidance("Set polarization."); - polCmd->SetParameterName("Px","Py","Pz",true,true); - polCmd->SetRange("Px>=-1.&&Px<=1.&&Py>=-1.&&Py<=1.&&Pz>=-1.&&Pz<=1."); - - numberCmd = new G4UIcmdWithAnInteger("/gps/number",this); - numberCmd->SetGuidance("Set number of particles to be generated."); - numberCmd->SetParameterName("N",true,true); - numberCmd->SetRange("N>0"); } G4GeneralParticleSourceMessenger::~G4GeneralParticleSourceMessenger() @@ -385,6 +471,9 @@ G4GeneralParticleSourceMessenger::~G4GeneralParticleSourceMessenger() delete halfzCmd; delete radiusCmd; delete radius0Cmd; + delete possigmarCmd; + delete possigmaxCmd; + delete possigmayCmd; delete paralpCmd; delete partheCmd; delete parphiCmd; @@ -397,12 +486,17 @@ G4GeneralParticleSourceMessenger::~G4GeneralParticleSourceMessenger() delete maxthetaCmd; delete minphiCmd; delete maxphiCmd; + delete angsigmarCmd; + delete angsigmaxCmd; + delete angsigmayCmd; + delete useuserangaxisCmd; delete surfnormCmd; delete energytypeCmd; delete eminCmd; delete emaxCmd; delete monoenergyCmd; + delete engsigmaCmd; delete alphaCmd; delete tempCmd; delete ezeroCmd; @@ -413,6 +507,7 @@ G4GeneralParticleSourceMessenger::~G4GeneralParticleSourceMessenger() delete diffspecCmd; delete histnameCmd; + delete resethistCmd; delete histpointCmd; delete arbintCmd; @@ -423,6 +518,11 @@ G4GeneralParticleSourceMessenger::~G4GeneralParticleSourceMessenger() delete polCmd; delete numberCmd; + delete positionCmd; + delete directionCmd; + delete energyCmd; + delete listCmd; + delete gpsDirectory; } @@ -468,6 +568,18 @@ void G4GeneralParticleSourceMessenger::SetNewValue(G4UIcommand *command, G4Strin { fParticleGun->SetRadius0(radius0Cmd->GetNewDoubleValue(newValues)); } + else if(command == possigmarCmd) + { + fParticleGun->SetBeamSigmaInR(possigmarCmd->GetNewDoubleValue(newValues)); + } + else if(command == possigmaxCmd) + { + fParticleGun->SetBeamSigmaInX(possigmaxCmd->GetNewDoubleValue(newValues)); + } + else if(command == possigmayCmd) + { + fParticleGun->SetBeamSigmaInY(possigmayCmd->GetNewDoubleValue(newValues)); + } else if(command == paralpCmd) { fParticleGun->SetParAlpha(paralpCmd->GetNewDoubleValue(newValues)); @@ -514,6 +626,22 @@ void G4GeneralParticleSourceMessenger::SetNewValue(G4UIcommand *command, G4Strin { fParticleGun->SetMaxPhi(maxphiCmd->GetNewDoubleValue(newValues)); } + else if(command == angsigmarCmd) + { + fParticleGun->SetBeamSigmaInAngR(angsigmarCmd->GetNewDoubleValue(newValues)); + } + else if(command == angsigmaxCmd) + { + fParticleGun->SetBeamSigmaInAngX(angsigmaxCmd->GetNewDoubleValue(newValues)); + } + else if(command == angsigmayCmd) + { + fParticleGun->SetBeamSigmaInAngY(angsigmayCmd->GetNewDoubleValue(newValues)); + } + else if(command == useuserangaxisCmd) + { + fParticleGun->SetUseUserAngAxis(useuserangaxisCmd->GetNewBoolValue(newValues)); + } else if(command == surfnormCmd) { fParticleGun->SetUserWRTSurface(surfnormCmd->GetNewBoolValue(newValues)); @@ -534,6 +662,10 @@ void G4GeneralParticleSourceMessenger::SetNewValue(G4UIcommand *command, G4Strin { fParticleGun->SetMonoEnergy(monoenergyCmd->GetNewDoubleValue(newValues)); } + else if(command == engsigmaCmd) + { + fParticleGun->SetBeamSigmaInE(engsigmaCmd->GetNewDoubleValue(newValues)); + } else if(command == alphaCmd) { fParticleGun->SetAlpha(alphaCmd->GetNewDoubleValue(newValues)); @@ -560,7 +692,6 @@ void G4GeneralParticleSourceMessenger::SetNewValue(G4UIcommand *command, G4Strin } else if(command == energyspecCmd) { - G4cout << "here in energyspecCmd" << G4endl; fParticleGun->InputEnergySpectra(energyspecCmd->GetNewBoolValue(newValues)); } else if(command == diffspecCmd) @@ -596,6 +727,10 @@ void G4GeneralParticleSourceMessenger::SetNewValue(G4UIcommand *command, G4Strin if(histtype == "epn") fParticleGun->EpnEnergyHisto(histpointCmd->GetNew3VectorValue(newValues)); } + else if(command == resethistCmd) + { + fParticleGun->ReSetHist(newValues); + } else if(command == arbintCmd) { fParticleGun->ArbInterpolate(newValues); @@ -659,6 +794,23 @@ void G4GeneralParticleSourceMessenger::SetNewValue(G4UIcommand *command, G4Strin G4cout << G4endl; } } + else if( command==listCmd ) + { particleTable->DumpTable(); } + else if( command==directionCmd ) + { + fParticleGun->SetAngDistType("planar"); + fParticleGun->SetParticleMomentumDirection(directionCmd->GetNew3VectorValue(newValues)); + } + else if( command==energyCmd ) + { + fParticleGun->SetEnergyDisType("Mono"); + fParticleGun->SetMonoEnergy(energyCmd->GetNewDoubleValue(newValues)); + } + else if( command==positionCmd ) + { + fParticleGun->SetPosDisType("Point"); + fParticleGun->SetCentreCoords(positionCmd->GetNew3VectorValue(newValues)); + } else { G4cout << "Error entering command" << G4endl; @@ -686,3 +838,8 @@ G4String G4GeneralParticleSourceMessenger::GetCurrentValue(G4UIcommand * command return cv; } + + + + + diff --git a/source/event/src/G4HEPEvtInterface.cc b/source/event/src/G4HEPEvtInterface.cc index 995208b240..ec3bf0bdb4 100644 --- a/source/event/src/G4HEPEvtInterface.cc +++ b/source/event/src/G4HEPEvtInterface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HEPEvtInterface.cc,v 1.4.2.1 2001/06/28 19:07:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPEvtInterface.cc,v 1.7 2001/11/20 23:21:41 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- @@ -45,13 +45,25 @@ G4HEPEvtInterface::G4HEPEvtInterface(char* evfile) else { G4Exception("G4HEPEvtInterface:: cannot open file."); } + G4ThreeVector zero; + particle_position = zero; + particle_time = 0.0; + } G4HEPEvtInterface::G4HEPEvtInterface(G4String evfile) { const char* fn = evfile.data(); inputFile.open((char*)fn); - fileName = evfile; + if (inputFile) { + fileName = evfile; + } + else { + G4Exception("G4HEPEvtInterface:: cannot open file."); + } + G4ThreeVector zero; + particle_position = zero; + particle_time = 0.0; } G4HEPEvtInterface::~G4HEPEvtInterface() @@ -59,7 +71,7 @@ G4HEPEvtInterface::~G4HEPEvtInterface() void G4HEPEvtInterface::GeneratePrimaryVertex(G4Event* evt) { - int NHEP; // number of entries + G4int NHEP; // number of entries inputFile >> NHEP; if( inputFile.eof() ) { @@ -67,7 +79,7 @@ void G4HEPEvtInterface::GeneratePrimaryVertex(G4Event* evt) return; } - for( int IHEP=0; IHEPGetJDAHEP1() > 0 ) // it has daughters { - int jda1 = HPlist[i]->GetJDAHEP1()-1; // FORTRAN index starts from 1 - int jda2 = HPlist[i]->GetJDAHEP2()-1; // but C++ starts from 0. + G4int jda1 = HPlist[i]->GetJDAHEP1()-1; // FORTRAN index starts from 1 + G4int jda2 = HPlist[i]->GetJDAHEP2()-1; // but C++ starts from 0. G4PrimaryParticle* mother = HPlist[i]->GetTheParticle(); - for( int j=jda1; j<=jda2; j++ ) + for( G4int j=jda1; j<=jda2; j++ ) { G4PrimaryParticle* daughter = HPlist[j]->GetTheParticle(); if(HPlist[j]->GetISTHEP()>0) @@ -119,14 +131,10 @@ void G4HEPEvtInterface::GeneratePrimaryVertex(G4Event* evt) } // create G4PrimaryVertex object - G4double x0 = 0.; // vertex point X - G4double y0 = 0.; // vertex point Y - G4double z0 = 0.; // vertex point Z - G4double t0 = 0.; // vertex time - G4PrimaryVertex* vertex = new G4PrimaryVertex(x0,y0,z0,t0); + G4PrimaryVertex* vertex = new G4PrimaryVertex(particle_position,particle_time); // put initial particles to the vertex - for( int ii=0; iiGetISTHEP() > 0 ) // ISTHEP of daughters had been // set to negative @@ -138,7 +146,7 @@ void G4HEPEvtInterface::GeneratePrimaryVertex(G4Event* evt) // clear G4HEPEvtParticles //HPlist.clearAndDestroy(); - for(G4int iii=0;iiiFindParticle(newValues); - if(pd != NULL) + if(pd != 0) { fParticleGun->SetParticleDefinition( pd ); } } } diff --git a/source/event/src/G4PrimaryParticle.cc b/source/event/src/G4PrimaryParticle.cc index f3869f0321..499535a2e4 100644 --- a/source/event/src/G4PrimaryParticle.cc +++ b/source/event/src/G4PrimaryParticle.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PrimaryParticle.cc,v 1.5.2.1 2001/06/28 19:07:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PrimaryParticle.cc,v 1.7 2001/07/13 15:01:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PrimaryParticle.hh" @@ -33,42 +33,42 @@ G4Allocator aPrimaryParticleAllocator; G4PrimaryParticle::G4PrimaryParticle() -:PDGcode(0),G4code(NULL),Px(0.),Py(0.),Pz(0.), - nextParticle(NULL),daughterParticle(NULL),trackID(-1), +:PDGcode(0),G4code(0),Px(0.),Py(0.),Pz(0.), + nextParticle(0),daughterParticle(0),trackID(-1), mass(0.),polX(0.),polY(0.),polZ(0.),Weight0(1.0),properTime(0.0) {;} G4PrimaryParticle::G4PrimaryParticle(G4int Pcode) :PDGcode(Pcode),Px(0.),Py(0.),Pz(0.), - nextParticle(NULL),daughterParticle(NULL),trackID(-1), + nextParticle(0),daughterParticle(0),trackID(-1), mass(0.),polX(0.),polY(0.),polZ(0.),Weight0(1.0),properTime(0.0) { G4code = G4ParticleTable::GetParticleTable()->FindParticle(Pcode); } G4PrimaryParticle::G4PrimaryParticle(G4int Pcode, G4double px,G4double py,G4double pz) :PDGcode(Pcode),Px(px),Py(py),Pz(pz), - nextParticle(NULL),daughterParticle(NULL),trackID(-1), + nextParticle(0),daughterParticle(0),trackID(-1), mass(0.),polX(0.),polY(0.),polZ(0.),Weight0(1.0),properTime(0.0) { G4code = G4ParticleTable::GetParticleTable()->FindParticle(Pcode); } G4PrimaryParticle::G4PrimaryParticle(G4ParticleDefinition* Gcode) :G4code(Gcode),Px(0.),Py(0.),Pz(0.), - nextParticle(NULL),daughterParticle(NULL),trackID(-1), + nextParticle(0),daughterParticle(0),trackID(-1), mass(0.),polX(0.),polY(0.),polZ(0.),Weight0(1.0),properTime(0.0) { PDGcode = Gcode->GetPDGEncoding(); } G4PrimaryParticle::G4PrimaryParticle(G4ParticleDefinition* Gcode, G4double px,G4double py,G4double pz) :G4code(Gcode),Px(px),Py(py),Pz(pz), - nextParticle(NULL),daughterParticle(NULL),trackID(-1), + nextParticle(0),daughterParticle(0),trackID(-1), mass(0.),polX(0.),polY(0.),polZ(0.),Weight0(1.0),properTime(0.0) { PDGcode = Gcode->GetPDGEncoding(); } G4PrimaryParticle::~G4PrimaryParticle() { - if(nextParticle != NULL) + if(nextParticle != 0) { delete nextParticle; } - if(daughterParticle != NULL) + if(daughterParticle != 0) { delete daughterParticle; } } @@ -87,15 +87,15 @@ void G4PrimaryParticle::SetG4code(G4ParticleDefinition* Gcode) const G4PrimaryParticle & G4PrimaryParticle::operator=(const G4PrimaryParticle &right) { return *this; } -int G4PrimaryParticle::operator==(const G4PrimaryParticle &right) const +G4int G4PrimaryParticle::operator==(const G4PrimaryParticle &right) const { return false; } -int G4PrimaryParticle::operator!=(const G4PrimaryParticle &right) const +G4int G4PrimaryParticle::operator!=(const G4PrimaryParticle &right) const { return true; } void G4PrimaryParticle::Print() const { G4cout << "==== PDGcode " << PDGcode << " Particle name "; - if(G4code != NULL) + if(G4code != 0) { G4cout << G4code->GetParticleName() << G4endl; } else { G4cout << "is not defined in G4." << G4endl; } @@ -105,12 +105,12 @@ void G4PrimaryParticle::Print() const G4cout << " Weight : " << Weight0 << G4endl; if(properTime>0.0) { G4cout << " PreAssigned proper decay time : " << properTime/ns << " (nsec)" << G4endl; } - if(daughterParticle != NULL) + if(daughterParticle != 0) { G4cout << ">>>> Daughters" << G4endl; daughterParticle->Print(); } - if(nextParticle != NULL) + if(nextParticle != 0) { nextParticle->Print(); } else { G4cout << "<<<< End of link" << G4endl; } diff --git a/source/event/src/G4PrimaryTransformer.cc b/source/event/src/G4PrimaryTransformer.cc index 404a7fa271..b2540b659b 100644 --- a/source/event/src/G4PrimaryTransformer.cc +++ b/source/event/src/G4PrimaryTransformer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PrimaryTransformer.cc,v 1.8.2.1 2001/06/28 19:07:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PrimaryTransformer.cc,v 1.13 2001/11/22 18:53:13 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PrimaryTransformer.hh" @@ -33,10 +33,16 @@ #include "G4Track.hh" #include "G4ThreeVector.hh" #include "G4DecayProducts.hh" +#include "G4TransportationManager.hh" +#include "G4Navigator.hh" +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" +#include "G4VSolid.hh" +#include "G4UnitsTable.hh" #include "G4ios.hh" G4PrimaryTransformer::G4PrimaryTransformer() -:verboseLevel(0) +:verboseLevel(0),trackID(0) { particleTable = G4ParticleTable::GetParticleTable(); } @@ -44,15 +50,17 @@ G4PrimaryTransformer::G4PrimaryTransformer() G4PrimaryTransformer::~G4PrimaryTransformer() {;} -G4TrackVector* G4PrimaryTransformer::GimmePrimaries(G4Event* anEvent) +G4TrackVector* G4PrimaryTransformer::GimmePrimaries(G4Event* anEvent,G4int trackIDCounter) { + trackID = trackIDCounter; + //TV.clearAndDestroy(); - for( int ii=0; iiGetNumberOfPrimaryVertex(); - if(n_vertex==0) return NULL; - for( int i=0; iGetPrimaryVertex(i) ); } return &TV; } @@ -76,8 +84,20 @@ void G4PrimaryTransformer::GenerateTracks(G4PrimaryVertex* primaryVertex) } #endif + //Check whether the vertex is inside the world volume + G4Navigator* navi = + G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking(); + G4VSolid* theWorldSolid = navi->GetWorldVolume()->GetLogicalVolume()->GetSolid(); + if(theWorldSolid->Inside(G4ThreeVector(X0,Y0,Z0))==kOutside) + { + G4cerr << "Primary vertex " + << G4BestUnit(G4ThreeVector(X0,Y0,Z0),G4String("Length")) + << " is outside of the world volume." << G4endl; + G4Exception("G4PrimaryTransformer::Primary vertex outside of the world"); + } + G4PrimaryParticle* primaryParticle = primaryVertex->GetPrimary(); - while( primaryParticle != NULL ) + while( primaryParticle != 0 ) { GenerateSingleTrack( primaryParticle, X0, Y0, Z0, T0, WV ); primaryParticle = primaryParticle->GetNext(); @@ -134,6 +154,10 @@ void G4PrimaryTransformer::GenerateSingleTrack SetDecayProducts( primaryParticle, DP ); // Create G4Track object G4Track* track = new G4Track(DP,t0,G4ThreeVector(x0,y0,z0)); + // Set trackID and let primary particle know it + trackID++; + track->SetTrackID(trackID); + primaryParticle->SetTrackID(trackID); // Set parentID to 0 as a primary particle track->SetParentID(0); // Set weight ( vertex weight * particle weight ) diff --git a/source/event/src/G4PrimaryVertex.cc b/source/event/src/G4PrimaryVertex.cc index 5ad3163b30..e2af47114e 100644 --- a/source/event/src/G4PrimaryVertex.cc +++ b/source/event/src/G4PrimaryVertex.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PrimaryVertex.cc,v 1.3.4.1 2001/06/28 19:07:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PrimaryVertex.cc,v 1.5 2001/07/13 15:01:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PrimaryVertex.hh" @@ -31,19 +31,19 @@ G4Allocator aPrimaryVertexAllocator; G4PrimaryVertex::G4PrimaryVertex() -:X0(0.),Y0(0.),Z0(0.),T0(0.),numberOfParticle(0),nextVertex(NULL), - theParticle(NULL),theTail(NULL),Weight0(1.0) +:X0(0.),Y0(0.),Z0(0.),T0(0.),theParticle(0),theTail(0), + nextVertex(0),numberOfParticle(0),Weight0(1.0) {;} G4PrimaryVertex::G4PrimaryVertex( G4double x0,G4double y0,G4double z0,G4double t0) -:X0(x0),Y0(y0),Z0(z0),T0(t0),numberOfParticle(0),nextVertex(NULL), - theParticle(NULL),theTail(NULL),Weight0(1.0) +:X0(x0),Y0(y0),Z0(z0),T0(t0),theParticle(0),theTail(0), + nextVertex(0),numberOfParticle(0),Weight0(1.0) {;} G4PrimaryVertex::G4PrimaryVertex(G4ThreeVector xyz0,G4double t0) -:T0(t0),numberOfParticle(0),nextVertex(NULL), - theParticle(NULL),theTail(NULL),Weight0(1.0) +:T0(t0),theParticle(0),theTail(0), + nextVertex(0),numberOfParticle(0),Weight0(1.0) { X0=xyz0.x(); Y0=xyz0.y(); @@ -52,18 +52,18 @@ G4PrimaryVertex::G4PrimaryVertex(G4ThreeVector xyz0,G4double t0) G4PrimaryVertex::~G4PrimaryVertex() { - if(theParticle != NULL) + if(theParticle != 0) { delete theParticle; } - if(nextVertex != NULL) + if(nextVertex != 0) { delete nextVertex; } } const G4PrimaryVertex & G4PrimaryVertex::operator=(const G4PrimaryVertex &right) { return *this; } -int G4PrimaryVertex::operator==(const G4PrimaryVertex &right) const +G4int G4PrimaryVertex::operator==(const G4PrimaryVertex &right) const { return false; } -int G4PrimaryVertex::operator!=(const G4PrimaryVertex &right) const +G4int G4PrimaryVertex::operator!=(const G4PrimaryVertex &right) const { return true; } void G4PrimaryVertex::Print() const @@ -73,11 +73,9 @@ void G4PrimaryVertex::Print() const << " Weight " << Weight0 << G4endl; G4cout << "#### Primary particles" << G4endl; G4PrimaryParticle* aPrim = theParticle; - if(aPrim != NULL) + if(aPrim != 0) { aPrim->Print(); aPrim = aPrim->GetNext(); } } - - diff --git a/source/event/src/G4StackManager.cc b/source/event/src/G4StackManager.cc index d14aaf08f4..0ab790e37e 100644 --- a/source/event/src/G4StackManager.cc +++ b/source/event/src/G4StackManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StackManager.cc,v 1.3.4.1 2001/06/28 19:07:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StackManager.cc,v 1.6 2001/07/19 00:14:17 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Last Modification : 09/Dec/96 M.Asai @@ -35,7 +35,7 @@ #include "G4ios.hh" G4StackManager::G4StackManager() -:verboseLevel(0),userStackingAction(NULL) +:userStackingAction(0),verboseLevel(0),numberOfAdditionalWaitingStacks(0) { theMessenger = new G4StackingMessenger(this); urgentStack = new G4TrackStack; @@ -50,13 +50,18 @@ G4StackManager::~G4StackManager() delete waitingStack; delete postponeStack; delete theMessenger; + if(numberOfAdditionalWaitingStacks>0) { + for(int i=0;inumberOfAdditionalWaitingStacks) { + G4Exception("G4StackManager : invalid classification"); + } else { + additionalWaitingStacks[i-1]->PushToStack( newStackedTrack ); + } + break; } } @@ -120,13 +133,22 @@ G4Track * G4StackManager::PopNextTrack(G4VTrajectory**newTrajectory) << " waiting tracks are re-classified to" << G4endl; #endif waitingStack->TransferTo(urgentStack); + if(numberOfAdditionalWaitingStacks>0) { + for(int i=0;iTransferTo(waitingStack); + } else { + additionalWaitingStacks[i]->TransferTo(additionalWaitingStacks[i-1]); + } + } + } if(userStackingAction) userStackingAction->NewStage(); #ifdef G4VERBOSE if( verboseLevel > 0 ) G4cout << " " << GetNUrgentTrack() << " urgent tracks and " << GetNWaitingTrack() << " waiting tracks." << G4endl; #endif - if( ( GetNUrgentTrack()==0 ) && ( GetNWaitingTrack()==0 ) ) return NULL; + if( ( GetNUrgentTrack()==0 ) && ( GetNWaitingTrack()==0 ) ) return 0; } G4StackedTrack * selectedStackedTrack = urgentStack->PopFromStack(); @@ -157,7 +179,7 @@ void G4StackManager::ReClassify() if( GetNUrgentTrack() == 0 ) return; urgentStack->TransferTo(&tmpStack); - while( (aStackedTrack=tmpStack.PopFromStack()) != NULL ) + while( (aStackedTrack=tmpStack.PopFromStack()) != 0 ) { G4ClassificationOfNewTrack classification = userStackingAction->ClassifyNewTrack( aStackedTrack->GetTrack() ); @@ -177,6 +199,14 @@ void G4StackManager::ReClassify() case fPostpone: postponeStack->PushToStack( aStackedTrack ); break; + default: + G4int i = classification - 10; + if(i<1||i>numberOfAdditionalWaitingStacks) { + G4Exception("G4StackManager : invalid classification"); + } else { + additionalWaitingStacks[i-1]->PushToStack( aStackedTrack ); + } + break; } } } @@ -202,10 +232,9 @@ G4int G4StackManager::PrepareNewEvent() postponeStack->TransferTo(&tmpStack); - while( (aStackedTrack=tmpStack.PopFromStack()) != NULL ) + while( (aStackedTrack=tmpStack.PopFromStack()) != 0 ) { G4Track* aTrack = aStackedTrack->GetTrack(); - G4VTrajectory* aTrajectory = aStackedTrack->GetTrajectory(); aTrack->SetParentID(-1); G4ClassificationOfNewTrack classification; if(userStackingAction) @@ -234,6 +263,14 @@ G4int G4StackManager::PrepareNewEvent() break; case fKill: break; + default: + G4int i = classification - 10; + if(i<1||i>numberOfAdditionalWaitingStacks) { + G4Exception("G4StackManager : invalid classification"); + } else { + additionalWaitingStacks[i-1]->PushToStack( aStackedTrack ); + } + break; } } } @@ -242,4 +279,85 @@ G4int G4StackManager::PrepareNewEvent() return n_passedFromPrevious; } +void G4StackManager::SetNumberOfAdditionalWaitingStacks(G4int iAdd) +{ + if(iAdd > numberOfAdditionalWaitingStacks) + { + for(int i=numberOfAdditionalWaitingStacks;iiAdd;i--) + { + delete additionalWaitingStacks[i]; + } + } +} + +void G4StackManager::TransferStackedTracks(G4ClassificationOfNewTrack origin, G4ClassificationOfNewTrack destination) +{ + G4TrackStack* originStack = 0; + switch(origin) + { + case fUrgent: + originStack = urgentStack; + break; + case fWaiting: + originStack = waitingStack; + break; + case fPostpone: + originStack = postponeStack; + break; + case fKill: + break; + default: + int i = origin - 10; + if(i<=numberOfAdditionalWaitingStacks) originStack = additionalWaitingStacks[i-1]; + break; + } + if(!originStack) return; + + if(destination==fKill) + { + G4StackedTrack * aStackedTrack; + while( (aStackedTrack=originStack->PopFromStack()) != 0 ) + { + delete aStackedTrack->GetTrack(); + delete aStackedTrack; + } + } + else + { + G4TrackStack* targetStack = 0; + switch(destination) + { + case fUrgent: + targetStack = urgentStack; + break; + case fWaiting: + targetStack = waitingStack; + break; + case fPostpone: + targetStack = postponeStack; + break; + default: + int i = origin - 10; + if(i<=numberOfAdditionalWaitingStacks) targetStack = additionalWaitingStacks[i-1]; + break; + } + if(!targetStack) return; + if(originStack==targetStack) return; + originStack->TransferTo(targetStack); + } + return; +} + + + + diff --git a/source/event/src/G4StackedTrack.cc b/source/event/src/G4StackedTrack.cc index dace2996bc..1d259b58cc 100644 --- a/source/event/src/G4StackedTrack.cc +++ b/source/event/src/G4StackedTrack.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StackedTrack.cc,v 1.3.4.1 2001/06/28 19:07:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StackedTrack.cc,v 1.5 2001/07/13 15:01:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Last Modification : 02/Feb/96 M.Asai @@ -33,13 +33,13 @@ G4Allocator aStackedTrackAllocator; G4StackedTrack::G4StackedTrack() -:track(NULL),trajectory(NULL),priorityWeight(0.), - previousStackedTrack(NULL),nextStackedTrack(NULL) +:priorityWeight(0.),track(0),trajectory(0), + previousStackedTrack(0),nextStackedTrack(0) { } G4StackedTrack::G4StackedTrack(G4Track * newTrack, G4VTrajectory * aTrajectory) -:track(newTrack),trajectory(aTrajectory),priorityWeight(0.), - previousStackedTrack(NULL),nextStackedTrack(NULL) +:priorityWeight(0.),track(newTrack),trajectory(aTrajectory), + previousStackedTrack(0),nextStackedTrack(0) { } G4StackedTrack::~G4StackedTrack() @@ -47,9 +47,9 @@ G4StackedTrack::~G4StackedTrack() const G4StackedTrack & G4StackedTrack::operator=(const G4StackedTrack &right) { return *this; } -int G4StackedTrack::operator==(const G4StackedTrack &right) const +G4int G4StackedTrack::operator==(const G4StackedTrack &right) const { return false; } -int G4StackedTrack::operator!=(const G4StackedTrack &right) const +G4int G4StackedTrack::operator!=(const G4StackedTrack &right) const { return true; } diff --git a/source/event/src/G4StackingMessenger.cc b/source/event/src/G4StackingMessenger.cc index 55737575d8..67841ed2e9 100644 --- a/source/event/src/G4StackingMessenger.cc +++ b/source/event/src/G4StackingMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StackingMessenger.cc,v 1.2.4.1 2001/06/28 19:07:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StackingMessenger.cc,v 1.3 2001/07/11 09:58:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- diff --git a/source/event/src/G4TrackStack.cc b/source/event/src/G4TrackStack.cc index f955b3ab08..8804819ec1 100644 --- a/source/event/src/G4TrackStack.cc +++ b/source/event/src/G4TrackStack.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackStack.cc,v 1.2.4.1 2001/06/28 19:07:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackStack.cc,v 1.4 2001/07/13 15:01:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Last Modification : 09/Dec/96 M.Asai @@ -31,7 +31,7 @@ #include "G4TrackStack.hh" G4TrackStack::G4TrackStack() -:n_stackedTrack(0),firstStackedTrack(NULL),lastStackedTrack(NULL) +:n_stackedTrack(0),firstStackedTrack(0),lastStackedTrack(0) {;} G4TrackStack::~G4TrackStack() @@ -67,13 +67,13 @@ void G4TrackStack::TransferTo(G4TrackStack * aStack) } n_stackedTrack = 0; - firstStackedTrack = NULL; - lastStackedTrack = NULL; + firstStackedTrack = 0; + lastStackedTrack = 0; } G4StackedTrack * G4TrackStack::PopFromStack() { - if( n_stackedTrack == 0 ) return NULL; + if( n_stackedTrack == 0 ) return 0; G4StackedTrack * aStackedTrack = lastStackedTrack; GrabFromStack( aStackedTrack ); return aStackedTrack; @@ -83,7 +83,7 @@ void G4TrackStack::PushToStack( G4StackedTrack * aStackedTrack ) { if( n_stackedTrack == 0 ) { - aStackedTrack->SetPrevious( NULL ); + aStackedTrack->SetPrevious( 0 ); firstStackedTrack = aStackedTrack; } else @@ -99,22 +99,22 @@ void G4TrackStack::GrabFromStack( G4StackedTrack * aStackedTrack ) { if( n_stackedTrack == 1 ) { - firstStackedTrack = NULL; - lastStackedTrack = NULL; + firstStackedTrack = 0; + lastStackedTrack = 0; } else { if( aStackedTrack == firstStackedTrack ) { firstStackedTrack = aStackedTrack->GetNext(); - firstStackedTrack->SetPrevious( NULL ); + firstStackedTrack->SetPrevious( 0 ); } else { if( aStackedTrack == lastStackedTrack ) { lastStackedTrack = aStackedTrack->GetPrevious(); - lastStackedTrack->SetNext( NULL ); + lastStackedTrack->SetNext( 0 ); } else { @@ -136,7 +136,7 @@ void G4TrackStack::clear() if ( n_stackedTrack == 0 ) return; // delete tracks in the stack - while( aStackedTrack != NULL ) + while( aStackedTrack != 0 ) { nextStackedTrack = aStackedTrack->GetNext(); delete aStackedTrack->GetTrack(); @@ -144,8 +144,8 @@ void G4TrackStack::clear() aStackedTrack = nextStackedTrack; } n_stackedTrack = 0; - firstStackedTrack = NULL; - lastStackedTrack = NULL; + firstStackedTrack = 0; + lastStackedTrack = 0; } diff --git a/source/event/src/G4UserEventAction.cc b/source/event/src/G4UserEventAction.cc index 6ba0550cc4..6f3bb9237c 100644 --- a/source/event/src/G4UserEventAction.cc +++ b/source/event/src/G4UserEventAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserEventAction.cc,v 1.3.4.1 2001/06/28 19:07:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserEventAction.cc,v 1.4 2001/07/11 09:58:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4UserEventAction.hh" diff --git a/source/event/src/G4UserStackingAction.cc b/source/event/src/G4UserStackingAction.cc index cd9dda0bae..bcd18aaec1 100644 --- a/source/event/src/G4UserStackingAction.cc +++ b/source/event/src/G4UserStackingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserStackingAction.cc,v 1.3.4.1 2001/06/28 19:07:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserStackingAction.cc,v 1.4 2001/07/11 09:58:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4UserStackingAction.hh" diff --git a/source/event/src/G4VPrimaryGenerator.cc b/source/event/src/G4VPrimaryGenerator.cc index 26c1200e82..1d3c8eaae9 100644 --- a/source/event/src/G4VPrimaryGenerator.cc +++ b/source/event/src/G4VPrimaryGenerator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPrimaryGenerator.cc,v 1.2.4.1 2001/06/28 19:07:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPrimaryGenerator.cc,v 1.3 2001/07/11 09:58:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VPrimaryGenerator diff --git a/source/g3tog4/GNUmakefile b/source/g3tog4/GNUmakefile index 66e3c18a42..b61891abe7 100644 --- a/source/g3tog4/GNUmakefile +++ b/source/g3tog4/GNUmakefile @@ -8,10 +8,6 @@ ### make this package non-generic enough to require its ### own makefile. ### -### History: now in README file. -### !!!!! Please add -- or at least copy -- history updates !!!!! -### !!!!! to the g3tog4/README file - TW !!!!! -### ############################################################################### G4TARGET := rztog4 @@ -33,6 +29,7 @@ CPPFLAGS += \ -I$(G4BASE)/geometry/management/include \ -I$(G4BASE)/geometry/solids/CSG/include \ -I$(G4BASE)/geometry/solids/specific/include \ + -I$(G4BASE)/geometry/solids/Boolean/include \ -I$(G4BASE)/geometry/solids/BREPS/include \ -I$(G4BASE)/geometry/solids/STEP/include \ -I$(G4BASE)/graphics_reps/include \ @@ -81,18 +78,16 @@ Fdependencies = $(patsubst %.o,%.d,$(Fbinobjects) $(Flibobjects)) ifdef G3G4DEBUG CPPFLAGS += -DG3G4DEBUG endif +ifdef G3G4_NO_REFLECTION + CPPFLAGS += -DG3G4_NO_REFLECTION +endif ############################################################################### ### user beware! .rz files made with cernlib v 95a cannot be read with later ### versions. You can use cernlib -v option to specify the cernlib version ############################################################################### -ifdef SLAC - cernlibv = 95a -else - cernlibv = pro -endif - +cernlibv = pro cernlibs := $(shell cernlib -v $(cernlibv) geant321 packlib) ### .PHONY targets are executed regardless of time-stamp of any file of same diff --git a/source/g3tog4/History b/source/g3tog4/History index 205aa1fbfe..600d78a026 100644 --- a/source/g3tog4/History +++ b/source/g3tog4/History @@ -1,8 +1,32 @@ -$Id: History,v 1.44 2001/05/30 08:13:34 gcosmo Exp $ +$Id: History,v 1.48 2001/11/21 14:25:29 gcosmo Exp $ G3toG4 Modification History (reverse chronological order, please !) -------------------------------------------------------------------- +g3tog4-V03-02-03 21-Nov-2001 G.Cosmo +- Added G3G4_NO_REFLECTION flag to exclude G4ReflectionFactory if needed. +- Changed G3Division::CreatePVReplica() to return a G4PhysicalVolumesPair + (I.Hrivnacova). + +g3tog4-V03-02-02 08-Nov-2001 G.Cosmo +- Implemented reflection of CSG solids through G4ReflectionFactory class + and G4ReflectedSolid (I.Hrivnacova). +- Added limited support for MANY volumes through adoption of boolean + solids(I.Hrivnacova). New files: G3toG4MANY[.hh.cc], G4gsbool.cc. + +g3tog4-V03-02-01 11-Oct-2001 G.Cosmo +- clparse.cc: removed inclusion of RW wrapper, moved now to G4Tokenizer.hh. + This tag co-works with "global-V03-02-03", where STLInterface has been removed. + +g3tog4-V03-02-00 16-Jul-2001 G.Cosmo +- Migration to STL vector, removed references to Rogue-Wave Tools.h++ + wrappers. Modified files: + G3EleTable[.hh.cc], G3MatTable[.hh.cc], G3MedTable[.hh.cc], + G3RotTable[.hh.cc], G3VolTableEntry[.hh.cc], G3SensVolVector.hh, + G3toG4BuildTree.cc, G4gsatt.cc, clparse.cc. +- Replaced usage of "NULL" with "0". +- Replaced usage of "int" with "G4int". + g3tog4-V03-01-01 30-May-2001 G.Cosmo - Cleared pedantic warnings detected on Linux-g++ with ISO/ANSI setup. diff --git a/source/g3tog4/README b/source/g3tog4/README index 40c42fd03d..b85d1b2c25 100644 --- a/source/g3tog4/README +++ b/source/g3tog4/README @@ -84,5 +84,22 @@ gmake clean "PARA" -axis 1; axis 2,3 for a special case Unsupported shapes: "SPHE", "ELTU", "HYPE", "GTRA", "CTUB" + + the implementation (November 2001) +---------------------------------------- +- Support for G3 MANY feature: + + MANY positions are resolved in G3toG4MANY function, + which has to be processed before G3toG4BuildTree + (it is not called by default). + In order to resolve MANY user code has to provide + additional info using G4gsbool(G4String volName, G4String manyVolName) + function) for all overlapping volumes. Daughters of + overlapping volumes are then resolved automatically + and should not be specified via Gsbool. + + Limitation: a volume with a MANY position can have only this + one position; if more than one position is needed a new volume + has to be defined (gsvolu) for each position. See History file for modification history. diff --git a/source/g3tog4/include/G3DetTable.hh b/source/g3tog4/include/G3DetTable.hh index b9c4e8e60b..db726f1398 100644 --- a/source/g3tog4/include/G3DetTable.hh +++ b/source/g3tog4/include/G3DetTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3DetTable.hh,v 1.6.4.1 2001/06/28 19:08:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3DetTable.hh,v 1.7 2001/07/11 09:58:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G3DetTable class diff --git a/source/g3tog4/include/G3DetTableEntry.hh b/source/g3tog4/include/G3DetTableEntry.hh index aae99dc0cc..d194634a24 100644 --- a/source/g3tog4/include/G3DetTableEntry.hh +++ b/source/g3tog4/include/G3DetTableEntry.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3DetTableEntry.hh,v 1.3.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3DetTableEntry.hh,v 1.4 2001/07/11 09:58:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G3DetTableEntry class diff --git a/source/g3tog4/include/G3Division.hh b/source/g3tog4/include/G3Division.hh index f1df8fd6e2..de0d84e384 100644 --- a/source/g3tog4/include/G3Division.hh +++ b/source/g3tog4/include/G3Division.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3Division.hh,v 1.4.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3Division.hh,v 1.7 2001/11/21 14:25:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: @@ -63,7 +63,7 @@ class G3Division // methods void UpdateVTE(); - G4VPhysicalVolume* CreatePVReplica(); + void CreatePVReplica(); private: diff --git a/source/g3tog4/include/G3EleTable.hh b/source/g3tog4/include/G3EleTable.hh index ed3b2bb27a..1e090c3f8c 100644 --- a/source/g3tog4/include/G3EleTable.hh +++ b/source/g3tog4/include/G3EleTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3EleTable.hh,v 1.5.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3EleTable.hh,v 1.7 2001/07/16 15:38:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: @@ -39,8 +39,6 @@ #ifndef G4ELETABLE_HH #define G4ELETABLE_HH 1 -#include "g4rw/ctoken.h" -#include "g4rw/tpordvec.h" #include "globals.hh" #include "G4Element.hh" @@ -56,13 +54,13 @@ public: // with description private: void LoadUp(); - int parse(G4double& Z, char* name, char* sym, G4double& A); + G4int parse(G4double& Z, char* name, char* sym, G4double& A); private: char** _EleNames; G4Element** _Ele; - int _MaxEle; + G4int _MaxEle; }; diff --git a/source/g3tog4/include/G3G4Interface.hh b/source/g3tog4/include/G3G4Interface.hh index 39005c1b55..c8a68ae5af 100644 --- a/source/g3tog4/include/G3G4Interface.hh +++ b/source/g3tog4/include/G3G4Interface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3G4Interface.hh,v 1.7.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3G4Interface.hh,v 1.9 2001/11/08 16:07:58 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Interfaces for G3 equivalent routines // @@ -45,6 +45,8 @@ void G4gsposp(G4String name, G4int num, G4String moth, G4double x, G4double y, G4double z, G4int irot, G4String only, G4double Rpar[], G4int npar); +void G4gsbool(G4String volName, G4String manyVolName); + void G4gsrotm(G4int irot, G4double theta1, G4double phi1, G4double theta2, G4double phi2, G4double theta3, G4double phi3); diff --git a/source/g3tog4/include/G3MatTable.hh b/source/g3tog4/include/G3MatTable.hh index d865e3acb3..22c647b4dc 100644 --- a/source/g3tog4/include/G3MatTable.hh +++ b/source/g3tog4/include/G3MatTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3MatTable.hh,v 1.9.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3MatTable.hh,v 1.11 2001/07/16 15:38:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: @@ -41,11 +41,11 @@ #include "globals.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" class G4Material; -typedef G4RWTPtrOrderedVector G3MaterialVector; +typedef G4std::vector G3MaterialVector; class G3MatTable { diff --git a/source/g3tog4/include/G3MatTableEntry.hh b/source/g3tog4/include/G3MatTableEntry.hh index 39f9a97b70..406a151646 100644 --- a/source/g3tog4/include/G3MatTableEntry.hh +++ b/source/g3tog4/include/G3MatTableEntry.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3MatTableEntry.hh,v 1.4.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3MatTableEntry.hh,v 1.5 2001/07/11 09:58:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3MedTable.hh b/source/g3tog4/include/G3MedTable.hh index 00bed1c31a..06330e15c8 100644 --- a/source/g3tog4/include/G3MedTable.hh +++ b/source/g3tog4/include/G3MedTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3MedTable.hh,v 1.8.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3MedTable.hh,v 1.10 2001/07/16 15:38:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: @@ -43,13 +43,13 @@ #include "globals.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" class G4Material; class G4MagneticField; class G4UserLimits; -typedef G4RWTPtrOrderedVector G3MediumVector; +typedef G4std::vector G3MediumVector; class G3MedTable { diff --git a/source/g3tog4/include/G3MedTableEntry.hh b/source/g3tog4/include/G3MedTableEntry.hh index a54c2e6e58..49fbb87e53 100644 --- a/source/g3tog4/include/G3MedTableEntry.hh +++ b/source/g3tog4/include/G3MedTableEntry.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3MedTableEntry.hh,v 1.4.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3MedTableEntry.hh,v 1.5 2001/07/11 09:58:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3PartTable.hh b/source/g3tog4/include/G3PartTable.hh index 24226594d7..df6fdae0a6 100644 --- a/source/g3tog4/include/G3PartTable.hh +++ b/source/g3tog4/include/G3PartTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3PartTable.hh,v 1.7.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3PartTable.hh,v 1.8 2001/07/11 09:58:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3Pos.hh b/source/g3tog4/include/G3Pos.hh index ddb867fc74..35a4978ba9 100644 --- a/source/g3tog4/include/G3Pos.hh +++ b/source/g3tog4/include/G3Pos.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3Pos.hh,v 1.9.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3Pos.hh,v 1.10 2001/07/11 09:58:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3RotTable.hh b/source/g3tog4/include/G3RotTable.hh index 52e9be7d4b..8c3d82dbc0 100644 --- a/source/g3tog4/include/G3RotTable.hh +++ b/source/g3tog4/include/G3RotTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3RotTable.hh,v 1.11.4.1 2001/06/28 19:08:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3RotTable.hh,v 1.13 2001/07/16 15:38:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: @@ -41,11 +41,11 @@ #include "globals.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" class G4Material; -typedef G4RWTPtrOrderedVector G3RotMatrixVector; +typedef G4std::vector G3RotMatrixVector; class G3RotTable { diff --git a/source/g3tog4/include/G3RotTableEntry.hh b/source/g3tog4/include/G3RotTableEntry.hh index cfeaf754cc..9e59c26e2b 100644 --- a/source/g3tog4/include/G3RotTableEntry.hh +++ b/source/g3tog4/include/G3RotTableEntry.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3RotTableEntry.hh,v 1.4.4.1 2001/06/28 19:08:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3RotTableEntry.hh,v 1.5 2001/07/11 09:58:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3SensVolVector.hh b/source/g3tog4/include/G3SensVolVector.hh index 590f9bd9f5..0083ca6b4f 100644 --- a/source/g3tog4/include/G3SensVolVector.hh +++ b/source/g3tog4/include/G3SensVolVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3SensVolVector.hh,v 1.3.4.1 2001/06/28 19:08:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3SensVolVector.hh,v 1.5 2001/07/16 15:38:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // vector of logical volumes that were defined with // tracking medium with ISVOL=1 @@ -32,10 +32,10 @@ #ifndef G3SENSVOLVECTOR_HH #define G3SENSVOLVECTOR_HH 1 -#include "g4rw/tpordvec.h" +#include "g4std/vector" #include "G4LogicalVolume.hh" -typedef G4RWTPtrOrderedVector G3SensVolVector; +typedef G4std::vector G3SensVolVector; extern G3SensVolVector G3SensVol; #endif diff --git a/source/g3tog4/include/G3VolTable.hh b/source/g3tog4/include/G3VolTable.hh index 98ff5d6b14..ab84333e1c 100644 --- a/source/g3tog4/include/G3VolTable.hh +++ b/source/g3tog4/include/G3VolTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3VolTable.hh,v 1.15.4.1 2001/06/28 19:08:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3VolTable.hh,v 1.16 2001/07/11 09:58:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: diff --git a/source/g3tog4/include/G3VolTableEntry.hh b/source/g3tog4/include/G3VolTableEntry.hh index d811330bfa..c62c27416c 100644 --- a/source/g3tog4/include/G3VolTableEntry.hh +++ b/source/g3tog4/include/G3VolTableEntry.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3VolTableEntry.hh,v 1.4.4.1 2001/06/28 19:08:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3VolTableEntry.hh,v 1.7 2001/11/08 16:07:58 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class description: @@ -69,7 +69,7 @@ #include "globals.hh" #include "G3Pos.hh" #include "G3Division.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" class G4LogicalVolume; class G4Material; @@ -80,8 +80,8 @@ class G3VolTableEntry public: // with description G3VolTableEntry(G4String& vname, G4String& shape, G4double* rpar, - G4int npar, G4int nmed, G4VSolid* solid, - G4bool hasNegPars); + G4int npar, G4int nmed, G4VSolid* solid, + G4bool hasNegPars); virtual ~G3VolTableEntry(); // operators @@ -92,6 +92,7 @@ class G3VolTableEntry void AddDaughter(G3VolTableEntry* aDaughter); void AddMother(G3VolTableEntry* aDaughter); void AddClone(G3VolTableEntry* aDaughter); + void AddOverlap(G3VolTableEntry* aOverlap); void ReplaceDaughter(G3VolTableEntry* vteOld, G3VolTableEntry* vteNew); void ReplaceMother(G3VolTableEntry* vteOld, G3VolTableEntry* vteNew); G3VolTableEntry* FindDaughter(const G4String& vname); @@ -107,6 +108,7 @@ class G3VolTableEntry void SetNRpar(G4int npar, G4double* Rpar); void SetDivision(G3Division* division); void SetHasNegPars(G4bool hasNegPars); + void SetHasMANY(G4bool hasMANY); void ClearG3PosCopy(G4int copy); void ClearDivision(); @@ -120,20 +122,22 @@ class G3VolTableEntry G3Pos* GetG3PosCopy(G4int copy=0); G3Division* GetDivision(); G4bool HasNegPars(); + G4bool HasMANY(); G4VSolid* GetSolid(); G4LogicalVolume* GetLV(); G4int GetNoDaughters(); G4int GetNoMothers(); G4int GetNoClones(); + G4int GetNoOverlaps(); G3VolTableEntry* GetDaughter(G4int i); G3VolTableEntry* GetMother(G4int i); G3VolTableEntry* GetMother(); // return the first mother - to be removed G3VolTableEntry* GetClone(G4int i); G3VolTableEntry* GetMasterClone(); + G4std::vector* GetOverlaps(); private: - G4String fVname; G4String fShape; G4double* fRpar; @@ -142,10 +146,12 @@ class G3VolTableEntry G4VSolid* fSolid; G4LogicalVolume* fLV; G4bool fHasNegPars; - G4RWTPtrOrderedVector fDaughters; - G4RWTPtrOrderedVector fMothers; - G4RWTPtrOrderedVector fClones; - G4RWTPtrOrderedVector fG3Pos; + G4bool fHasMANY; + G4std::vector fDaughters; + G4std::vector fMothers; + G4std::vector fClones; + G4std::vector fOverlaps; + G4std::vector fG3Pos; G3Division* fDivision; }; diff --git a/source/g3tog4/include/G3toG4.hh b/source/g3tog4/include/G3toG4.hh index 5cd400ee74..c1d7e51023 100644 --- a/source/g3tog4/include/G3toG4.hh +++ b/source/g3tog4/include/G3toG4.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4.hh,v 1.6.4.1 2001/06/28 19:08:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4.hh,v 1.7 2001/07/11 09:58:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // modified by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/include/G3toG4.inc b/source/g3tog4/include/G3toG4.inc index 822bb05df9..21a0a9d8cd 100644 --- a/source/g3tog4/include/G3toG4.inc +++ b/source/g3tog4/include/G3toG4.inc @@ -21,8 +21,8 @@ * ******************************************************************** * * -* $Id: G3toG4.inc,v 1.2.8.1 2001/06/28 19:08:02 gunter Exp $ -* GEANT4 tag $Name: $ +* $Id: G3toG4.inc,v 1.3 2001/07/11 09:58:58 gunter Exp $ +* GEANT4 tag $Name: geant4-04-00 $ * integer maxlines parameter (maxlines = 750) ! max no. of cmd lines per C++ source file diff --git a/source/g3tog4/include/G3toG4BuildTree.hh b/source/g3tog4/include/G3toG4BuildTree.hh index d000dc708d..0fcdd2b0dd 100644 --- a/source/g3tog4/include/G3toG4BuildTree.hh +++ b/source/g3tog4/include/G3toG4BuildTree.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4BuildTree.hh,v 1.6.2.1 2001/06/28 19:08:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4BuildTree.hh,v 1.7 2001/07/11 09:58:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class Description: diff --git a/source/g3tog4/include/G3toG4MANY.hh b/source/g3tog4/include/G3toG4MANY.hh new file mode 100644 index 0000000000..a8bdab17bd --- /dev/null +++ b/source/g3tog4/include/G3toG4MANY.hh @@ -0,0 +1,82 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G3toG4MANY.hh,v 1.1 2001/11/08 16:07:59 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------------- +// Class Description: +// +// Definition of global methods: +// +// void G3toG4MANY(G3VolTableEntry* curVTE); +// +// void MakeBooleanSolids(G3VolTableEntry* curVTE, +// G3VolTableEntryVector* overlaps, +// const G4Transform3D& transform); +// +// void SubstractSolids(G3VolTableEntry* vte1, +// G3VolTableEntry* vte2, +// G4int copy, +// const G4Transform3D& transform); +// +// G4Transform3D GetTransform3D(G3Pos*); +// +// MANY positions are resolved in G3toG4MANY() function, which has to be +// processed before G3toG4BuildTree() (it is not called by default). +// In order to resolve MANY, the user code has to provide additional info +// using G4gsbool(G4String volName, G4String manyVolName) function, for +// all overlapping volumes. Daughters of overlapping volumes are then +// resolved automatically and should not be specified via Gsbool. +// +// Limitation: a volume with a MANY position can have only this one +// ---------- position; if more than one position is needed a new volume +// has to be defined (gsvolu) for each position. + +// ---------------------- +// +// By I.Hrivnacova, 22.10.01 + +#ifndef G3TOG4_MANY_HH +#define G3TOG4_MANY_HH 1 + +#include "g4std/vector" +#include "G3VolTableEntry.hh" +#include "G4Transform3D.hh" + +typedef G4std::vector G3VolTableEntryVector; + +void G3toG4MANY(G3VolTableEntry* curVTE); + +void MakeBooleanSolids(G3VolTableEntry* curVTE, + G3VolTableEntryVector* overlaps, + const G4Transform3D& transform); + +void SubstractSolids(G3VolTableEntry* vte1, + G3VolTableEntry* vte2, + G4int copy, + const G4Transform3D& transform); + +G4Transform3D GetTransform3D(G3Pos*); + +#endif diff --git a/source/g3tog4/include/G3toG4MakeSolid.hh b/source/g3tog4/include/G3toG4MakeSolid.hh index 021dbfdf77..7640c68c6c 100644 --- a/source/g3tog4/include/G3toG4MakeSolid.hh +++ b/source/g3tog4/include/G3toG4MakeSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4MakeSolid.hh,v 1.5.4.1 2001/06/28 19:08:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4MakeSolid.hh,v 1.6 2001/07/11 09:58:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------- // Class Description: diff --git a/source/g3tog4/include/G3toG4RotationMatrix.hh b/source/g3tog4/include/G3toG4RotationMatrix.hh index f1c161a9a4..0ebe1d1c95 100644 --- a/source/g3tog4/include/G3toG4RotationMatrix.hh +++ b/source/g3tog4/include/G3toG4RotationMatrix.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4RotationMatrix.hh,v 1.4.4.1 2001/06/28 19:08:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4RotationMatrix.hh,v 1.5 2001/07/11 09:58:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ---------------------- // Class description: // diff --git a/source/g3tog4/include/gcbank.inc b/source/g3tog4/include/gcbank.inc index 29307bafe2..2bb2909244 100644 --- a/source/g3tog4/include/gcbank.inc +++ b/source/g3tog4/include/gcbank.inc @@ -21,8 +21,8 @@ * ******************************************************************** * * -* $Id: gcbank.inc,v 1.2.8.1 2001/06/28 19:08:02 gunter Exp $ -* GEANT4 tag $Name: $ +* $Id: gcbank.inc,v 1.3 2001/07/11 09:58:58 gunter Exp $ +* GEANT4 tag $Name: geant4-04-00 $ * INTEGER IQ,LQ,NZEBRA,IXSTOR,IXDIV,IXCONS,LMAIN,LR1,JCG INTEGER KWBANK,KWWORK,IWS diff --git a/source/g3tog4/src/G3DetTable.cc b/source/g3tog4/src/G3DetTable.cc index e6c3f86931..bb30bfccab 100644 --- a/source/g3tog4/src/G3DetTable.cc +++ b/source/g3tog4/src/G3DetTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3DetTable.cc,v 1.9.4.1 2001/06/28 19:08:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3DetTable.cc,v 1.10 2001/07/11 09:58:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "globals.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G3DetTableEntry.cc b/source/g3tog4/src/G3DetTableEntry.cc index 8d0cf7fdb2..1fddf25df6 100644 --- a/source/g3tog4/src/G3DetTableEntry.cc +++ b/source/g3tog4/src/G3DetTableEntry.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3DetTableEntry.cc,v 1.3.4.1 2001/06/28 19:08:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3DetTableEntry.cc,v 1.4 2001/07/11 09:58:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "globals.hh" #include "G3DetTableEntry.hh" diff --git a/source/g3tog4/src/G3Division.cc b/source/g3tog4/src/G3Division.cc index 5b74d59f33..adcb26e949 100644 --- a/source/g3tog4/src/G3Division.cc +++ b/source/g3tog4/src/G3Division.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3Division.cc,v 1.10.2.1 2001/06/28 19:08:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3Division.cc,v 1.14 2001/11/21 14:25:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, V.Berejnoi 13.10.99 @@ -35,7 +35,9 @@ #include "G4VPhysicalVolume.hh" #include "G4PVPlacement.hh" #include "G4PVReplica.hh" - +#ifndef G3G4_NO_REFLECTION +#include "G4ReflectionFactory.hh" +#endif G3VolTableEntry* G4CreateVTE(G4String vname, G4String shape, G4int nmed, G4double Rpar[], G4int npar); @@ -118,7 +120,7 @@ void G3Division::UpdateVTE() } } -G4VPhysicalVolume* G3Division::CreatePVReplica() +void G3Division::CreatePVReplica() { G4String name = fVTE->GetName(); G4LogicalVolume* lv = fVTE->GetLV(); @@ -137,16 +139,20 @@ G4VPhysicalVolume* G3Division::CreatePVReplica() if (position.y()!=0.) position.setX(position.y()*((G4Para*)lv->GetSolid())->GetTanAlpha()); + #ifndef G3G4_NO_REFLECTION + G4ReflectionFactory::Instance() + ->Place(G4Translate3D(position), name, lv, mlv, 0, i); + + #else new G4PVPlacement(0, position, lv, name, mlv, 0, i); + + #endif } - // no G4PVReplica was created - return 0 - return 0; + // G4PVReplica cannot be created + return; } - G4PVReplica* pvol - = new G4PVReplica(name, lv, mlv, fAxis, fNofDivisions, fWidth, fOffset); - #ifdef G3G4DEBUG G4cout << "Create G4PVReplica name " << name << " logical volume name " << lv->GetName() << " mother logical volme name " @@ -155,7 +161,14 @@ G4VPhysicalVolume* G3Division::CreatePVReplica() << fOffset << G4endl; #endif - return pvol; + #ifndef G3G4_NO_REFLECTION + G4ReflectionFactory::Instance() + ->Replicate(name, lv, mlv, fAxis, fNofDivisions, fWidth, fOffset); + + #else + new G4PVReplica(name, lv, mlv, fAxis, fNofDivisions, fWidth, fOffset); + + #endif } // private methods @@ -306,7 +319,7 @@ void G3Division::SetRangeAndAxis() } else if ( shape == "PGON" ) { G4int i; - G4int nz = int(Rpar[3]); + G4int nz = G4int(Rpar[3]); G4double pPhi1 = Rpar[0]*deg; G4double dPhi = Rpar[1]*deg; @@ -322,9 +335,9 @@ void G3Division::SetRangeAndAxis() for(i=0; i0 && Z <=_MaxEle){ G4int z = (G4int) Z-1; G4std::istrstream in(_EleNames[z]); @@ -72,7 +72,7 @@ G3EleTable::parse(G4double& Z, char* name, char* sym, G4double& A){ void G3EleTable::LoadUp(){ - int i=0; + G4int i=0; _EleNames[i]=(char *)"Hydrogen H 1.00794"; i++; _EleNames[i]=(char *)"Helium He 4.0026"; i++; _EleNames[i]=(char *)"Lithium Li 6.941"; i++; @@ -194,7 +194,7 @@ G3EleTable::LoadUp(){ _EleNames[i]=(char *)"Meitnerium Mt 266.1378"; i++; // initialize element pointers to 0 - for (int j=0; jclearAndDestroy(); + Clear(); delete fMatVector; } G4Material* G3MatTable::get(G4int id) const { - for (size_t i=0; i< fMatVector->entries(); i++) { + for (size_t i=0; i< fMatVector->size(); i++) { G3MatTableEntry* mte = (*fMatVector)[i]; if (id == mte->GetID()) return mte->GetMaterial(); } @@ -51,10 +51,22 @@ G4Material* G3MatTable::get(G4int id) const void G3MatTable::put(G4int id, G4Material* material) { G3MatTableEntry* mte = new G3MatTableEntry(id, material); - fMatVector->insert(mte); + fMatVector->push_back(mte); } void G3MatTable::Clear() { - fMatVector->clearAndDestroy(); + G3MatTableEntry* a; + while (fMatVector->size()>0) { + a = fMatVector->back(); + fMatVector->pop_back(); + for (G3MaterialVector::iterator i=fMatVector->begin(); + i!=fMatVector->end(); i++){ + if (*i==a) { + fMatVector->erase(i); + i--; + } + } + if ( a ) delete a; + } } diff --git a/source/g3tog4/src/G3MatTableEntry.cc b/source/g3tog4/src/G3MatTableEntry.cc index 5881621f5d..d4aecf7d47 100644 --- a/source/g3tog4/src/G3MatTableEntry.cc +++ b/source/g3tog4/src/G3MatTableEntry.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3MatTableEntry.cc,v 1.2.8.1 2001/06/28 19:08:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3MatTableEntry.cc,v 1.3 2001/07/11 09:58:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3MedTable.cc b/source/g3tog4/src/G3MedTable.cc index 13910408fd..7f25422977 100644 --- a/source/g3tog4/src/G3MedTable.cc +++ b/source/g3tog4/src/G3MedTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3MedTable.cc,v 1.11.2.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3MedTable.cc,v 1.13 2001/07/16 15:38:20 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 27 Sep 99 @@ -35,13 +35,13 @@ G3MedTable::G3MedTable() G3MedTable::~G3MedTable() { - fMedVector->clearAndDestroy(); + Clear(); delete fMedVector; } G3MedTableEntry* G3MedTable::get(G4int id) const { - for (size_t i=0; i< fMedVector->entries(); i++) { + for (size_t i=0; i< fMedVector->size(); i++) { G3MedTableEntry* mte = (*fMedVector)[i]; if (id == mte->GetID()) return mte; } @@ -53,10 +53,22 @@ void G3MedTable::put(G4int id, G4Material* material, G4MagneticField* field, { G3MedTableEntry* mte = new G3MedTableEntry(id, material, field, limits, isvol); - fMedVector->insert(mte); + fMedVector->push_back(mte); } void G3MedTable::Clear() { - fMedVector->clearAndDestroy(); + G3MedTableEntry* a; + while (fMedVector->size()>0) { + a = fMedVector->back(); + fMedVector->pop_back(); + for (G3MediumVector::iterator i=fMedVector->begin(); + i!=fMedVector->end(); i++){ + if (*i==a) { + fMedVector->erase(i); + i--; + } + } + if ( a ) delete a; + } } diff --git a/source/g3tog4/src/G3MedTableEntry.cc b/source/g3tog4/src/G3MedTableEntry.cc index 601e8068c6..ac5eb1404a 100644 --- a/source/g3tog4/src/G3MedTableEntry.cc +++ b/source/g3tog4/src/G3MedTableEntry.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3MedTableEntry.cc,v 1.2.8.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3MedTableEntry.cc,v 1.3 2001/07/11 09:58:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3NegVolPars.cc b/source/g3tog4/src/G3NegVolPars.cc index 806b51795d..97d9657ebb 100644 --- a/source/g3tog4/src/G3NegVolPars.cc +++ b/source/g3tog4/src/G3NegVolPars.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3NegVolPars.cc,v 1.8.2.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3NegVolPars.cc,v 1.9 2001/07/11 09:58:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // modified by I. Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3PartTable.cc b/source/g3tog4/src/G3PartTable.cc index dc94039bf2..c8210255d8 100644 --- a/source/g3tog4/src/G3PartTable.cc +++ b/source/g3tog4/src/G3PartTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3PartTable.cc,v 1.9.4.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3PartTable.cc,v 1.10 2001/07/11 09:58:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "g4std/strstream" diff --git a/source/g3tog4/src/G3Pos.cc b/source/g3tog4/src/G3Pos.cc index 53106787fa..07f6d6ffa2 100644 --- a/source/g3tog4/src/G3Pos.cc +++ b/source/g3tog4/src/G3Pos.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3Pos.cc,v 1.7.4.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3Pos.cc,v 1.8 2001/07/11 09:58:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3RotTable.cc b/source/g3tog4/src/G3RotTable.cc index 6cd41f21fe..c672ad0756 100644 --- a/source/g3tog4/src/G3RotTable.cc +++ b/source/g3tog4/src/G3RotTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3RotTable.cc,v 1.13.2.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3RotTable.cc,v 1.15 2001/07/16 15:38:21 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 27 Sep 99 @@ -36,13 +36,12 @@ G3RotTable::G3RotTable() G3RotTable::~G3RotTable() { fRotVector->clear(); - //fRotVector->clearAndDestroy(); delete fRotVector; } G4RotationMatrix* G3RotTable::Get(G4int id) const { - for (size_t i=0; ientries(); i++) { + for (size_t i=0; isize(); i++) { G3RotTableEntry* rte = (*fRotVector)[i]; if (id == rte->GetID()) return rte->GetMatrix(); } @@ -52,10 +51,22 @@ G4RotationMatrix* G3RotTable::Get(G4int id) const void G3RotTable::Put(G4int id, G4RotationMatrix* matrix) { G3RotTableEntry* rte = new G3RotTableEntry(id, matrix); - fRotVector->insert(rte); + fRotVector->push_back(rte); } void G3RotTable::Clear() { - fRotVector->clearAndDestroy(); + G3RotTableEntry* a; + while (fRotVector->size()>0) { + a = fRotVector->back(); + fRotVector->pop_back(); + for (G3RotMatrixVector::iterator i=fRotVector->begin(); + i!=fRotVector->end(); i++){ + if (*i==a) { + fRotVector->erase(i); + i--; + } + } + if ( a ) delete a; + } } diff --git a/source/g3tog4/src/G3RotTableEntry.cc b/source/g3tog4/src/G3RotTableEntry.cc index 252862b44c..acce1c7a87 100644 --- a/source/g3tog4/src/G3RotTableEntry.cc +++ b/source/g3tog4/src/G3RotTableEntry.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3RotTableEntry.cc,v 1.2.8.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3RotTableEntry.cc,v 1.3 2001/07/11 09:58:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G3VolTable.cc b/source/g3tog4/src/G3VolTable.cc index cb18940c1f..ac8e9d72fd 100644 --- a/source/g3tog4/src/G3VolTable.cc +++ b/source/g3tog4/src/G3VolTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3VolTable.cc,v 1.19.4.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3VolTable.cc,v 1.20 2001/07/11 09:58:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // modified by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G3VolTableEntry.cc b/source/g3tog4/src/G3VolTableEntry.cc index 5462c51aec..da2d7b5202 100644 --- a/source/g3tog4/src/G3VolTableEntry.cc +++ b/source/g3tog4/src/G3VolTableEntry.cc @@ -21,29 +21,32 @@ // ******************************************************************** // // -// $Id: G3VolTableEntry.cc,v 1.7.2.1 2001/06/28 19:08:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3VolTableEntry.cc,v 1.10 2001/11/08 16:08:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // modified by I.Hrivnacova, 13.10.99 #include "globals.hh" #include "G3VolTableEntry.hh" #include "G3VolTable.hh" +#include "G3RotTable.hh" #include "G4LogicalVolume.hh" +#include "G4SubtractionSolid.hh" #include "G3Pos.hh" #include "G3toG4.hh" G3VolTableEntry::G3VolTableEntry(G4String& vname, G4String& shape, - G4double* rpar, G4int npar, G4int nmed, - G4VSolid* solid, G4bool hasNegPars) + G4double* rpar, G4int npar, G4int nmed, + G4VSolid* solid, G4bool hasNegPars) : fVname(vname), fShape(shape), fRpar(0), fNpar(npar), fNmed(nmed), - fSolid(solid), fLV(0), fHasNegPars(hasNegPars), fDivision(0) + fSolid(solid), fLV(0), fHasNegPars(hasNegPars), fHasMANY(false), + fDivision(0) { if (npar>0 && rpar!=0) { fRpar = new G4double[npar]; for (G4int i=0; iGetOnly(); + if (vonly == "MANY") SetHasMANY(true); } void G3VolTableEntry::AddDaughter(G3VolTableEntry* aDaughter){ if (FindDaughter(aDaughter->GetName()) == 0) { - fDaughters.insert(aDaughter); + fDaughters.push_back(aDaughter); } } void G3VolTableEntry::AddMother(G3VolTableEntry* itsMother){ if (FindMother(itsMother->GetName()) == 0) { - fMothers.insert(itsMother); + fMothers.push_back(itsMother); } } void G3VolTableEntry::AddClone(G3VolTableEntry* itsClone){ if (FindClone(itsClone->GetName()) == 0) { - fClones.insert(itsClone); + fClones.push_back(itsClone); } } +void +G3VolTableEntry::AddOverlap(G3VolTableEntry* overlap){ + fOverlaps.push_back(overlap); +} + void G3VolTableEntry::ReplaceDaughter(G3VolTableEntry* vteOld, G3VolTableEntry* vteNew) @@ -117,7 +131,7 @@ G3VolTableEntry::ReplaceMother(G3VolTableEntry* vteOld, G3VolTableEntry* G3VolTableEntry::FindDaughter(const G4String& Dname){ - for (int idau=0; idauGetName() == Dname) return GetDaughter(idau); } return 0; @@ -150,6 +164,7 @@ void G3VolTableEntry::PrintSolidInfo() { for (G4int i=0; i0 && copy>=0 && copy0 && copy>=0 && copy::iterator it=fG3Pos.begin(); + for(G4int j=0;j0 && copy>=0) + if (fG3Pos.size()>0 && copy>=0) return fG3Pos[copy]; else return 0; @@ -238,6 +264,11 @@ G3VolTableEntry::HasNegPars(){ return fHasNegPars; } +G4bool +G3VolTableEntry::HasMANY(){ + return fHasMANY; +} + G4VSolid* G3VolTableEntry::GetSolid() { return fSolid; @@ -250,22 +281,27 @@ G3VolTableEntry::GetLV() { G4int G3VolTableEntry::GetNoDaughters() { - return fDaughters.entries(); + return fDaughters.size(); } G4int G3VolTableEntry::GetNoMothers() { - return fMothers.entries(); + return fMothers.size(); } G4int G3VolTableEntry::GetNoClones() { - return fClones.entries(); + return fClones.size(); +} + +G4int +G3VolTableEntry::GetNoOverlaps() { + return fOverlaps.size(); } G3VolTableEntry* G3VolTableEntry::GetDaughter(G4int i) { - if (i=0) + if (i=0) return fDaughters[i]; else return 0; @@ -273,7 +309,7 @@ G3VolTableEntry::GetDaughter(G4int i) { G3VolTableEntry* G3VolTableEntry::GetMother(G4int i){ - if (i=0) + if (i=0) return fMothers[i]; else return 0; @@ -282,7 +318,7 @@ G3VolTableEntry::GetMother(G4int i){ // to be removed G3VolTableEntry* G3VolTableEntry::GetMother(){ - if (fMothers.entries()>0) + if (fMothers.size()>0) return fMothers[0]; else return 0; @@ -290,7 +326,7 @@ G3VolTableEntry::GetMother(){ G3VolTableEntry* G3VolTableEntry::GetClone(G4int i){ - if (i=0) + if (i=0) return fClones[i]; else return 0; @@ -309,3 +345,8 @@ G3VolTableEntry::GetMasterClone(){ return master; } + +G4std::vector* +G3VolTableEntry::GetOverlaps(){ + return &fOverlaps; +} diff --git a/source/g3tog4/src/G3fillParams.cc.archive b/source/g3tog4/src/G3fillParams.cc.archive index 9baed7f165..e3408b813e 100644 --- a/source/g3tog4/src/G3fillParams.cc.archive +++ b/source/g3tog4/src/G3fillParams.cc.archive @@ -6,7 +6,7 @@ // and all its terms. // // $Id: G3fillParams.cc.archive,v 1.1 1999/12/06 19:19:57 lockman Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-08 $ +// GEANT4 tag $Name: geant4-04-00 $ // // extracted from clparse.cc by I. Hrivnacova, 30.7.99 diff --git a/source/g3tog4/src/G3toG4BuildTree.cc b/source/g3tog4/src/G3toG4BuildTree.cc index ee2dfccc76..046671a98c 100644 --- a/source/g3tog4/src/G3toG4BuildTree.cc +++ b/source/g3tog4/src/G3toG4BuildTree.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4BuildTree.cc,v 1.14.2.1 2001/06/28 19:08:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4BuildTree.cc,v 1.18 2001/11/21 14:25:30 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // modified by I. Hrivnacova, 2.8.99 @@ -35,6 +35,8 @@ #include "G3Pos.hh" #include "G4LogicalVolume.hh" #include "G4PVPlacement.hh" +#include "G4ReflectionFactory.hh" +#include "G4Transform3D.hh" void G3toG4BuildTree(G3VolTableEntry* curVTE, G3VolTableEntry* motherVTE) { @@ -66,7 +68,7 @@ void G3toG4BuildLVTree(G3VolTableEntry* curVTE, G3VolTableEntry* motherVTE) // insert logical volume to G3SensVol vector // in case it is sensitive - if (mte->GetISVOL()) G3SensVol.insert(curLog); + if (mte->GetISVOL()) G3SensVol.push_back(curLog); } } else { @@ -119,25 +121,44 @@ void G3toG4BuildPVTree(G3VolTableEntry* curVTE) mothLV = 0; } - // rotation matrix - G4int irot = theG3Pos->GetIrot(); - G4RotationMatrix* theMatrix = 0; - if (irot>0) theMatrix = G3Rot.Get(irot); - // copy number // (in G3 numbering starts from 1 but in G4 from 0) G4int copyNo = theG3Pos->GetCopy() - 1; // position it if not top-level volume + if (mothLV != 0) { - new G4PVPlacement(theMatrix, // rotation matrix - *(theG3Pos->GetPos()), // its position - curLog, // its LogicalVolume - curVTE->GetName(), // PV name - mothLV, // Mother LV - 0, // only - copyNo); // copy - + + // transformation + G4int irot = theG3Pos->GetIrot(); + G4RotationMatrix* theMatrix = 0; + if (irot>0) theMatrix = G3Rot.Get(irot); + G4Rotate3D rotation; + if (theMatrix) { + rotation = G4Rotate3D(*theMatrix); + } + + #ifndef G3G4_NO_REFLECTION + G4Translate3D translation(*(theG3Pos->GetPos())); + G4Transform3D transform3D = translation * (rotation.inverse()); + + G4ReflectionFactory::Instance() + ->Place(transform3D, // transformation + curVTE->GetName(), // PV name + curLog, // its logical volume + mothLV, // mother logical volume + false, // only + copyNo); // copy + #else + new G4PVPlacement(theMatrix, // rotation matrix + *(theG3Pos->GetPos()), // its position + curLog, // its LogicalVolume + curVTE->GetName(), // PV name + mothLV, // Mother LV + 0, // only + copyNo); // copy + #endif + // verbose #ifdef G3G4DEBUG G4cout << "PV: " << i << "th copy of " << curVTE->GetName() @@ -145,7 +166,7 @@ void G3toG4BuildPVTree(G3VolTableEntry* curVTE) << copyNo << " irot: " << irot << " pos: " << *(theG3Pos->GetPos()) << G4endl; #endif - } + } } } // clear this position diff --git a/source/g3tog4/src/G3toG4MANY.cc b/source/g3tog4/src/G3toG4MANY.cc new file mode 100644 index 0000000000..595b8b9a45 --- /dev/null +++ b/source/g3tog4/src/G3toG4MANY.cc @@ -0,0 +1,155 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G3toG4MANY.cc,v 1.1 2001/11/08 16:08:01 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// By I. Hrivnacova, 22.10.01 + +//#define G3G4DEBUG 1 + +#include "globals.hh" +#include "G3toG4MANY.hh" +#include "G3Pos.hh" +#include "G3RotTable.hh" +#include "G4SubtractionSolid.hh" + +void G3toG4MANY(G3VolTableEntry* curVTE) +{ + if (curVTE->GetNoOverlaps() > 0) { + + // check consistency + if (!curVTE->HasMANY()) { + G4String text = "G3toG4MANY: volume "; + text = text + curVTE->GetName() + " has specified overlaps \n"; + text = text + " but is not defined as MANY."; + G4Exception(text); + } + + // only MANY volumes with one position are supported + if (curVTE->NPCopies() != 1) { + G4String text = "G3toG4MANY: volume "; + text = text + curVTE->GetName() + " which has MANY has not just one position."; + G4Exception(text); + } + + #ifdef G3G4DEBUG + G4cout << "G3toG4MANY " << curVTE->GetName() << " boolean" << G4endl; + #endif + + G4Transform3D transform = GetTransform3D(curVTE->GetG3PosCopy(0)); + + MakeBooleanSolids(curVTE, curVTE->GetOverlaps(), transform.inverse()); + } + + // process daughters + for (G4int i=0; iGetNoDaughters(); i++) + G3toG4MANY(curVTE->GetDaughter(i)); +} + +void MakeBooleanSolids(G3VolTableEntry* curVTE, G3VolTableEntryVector* overlaps, + const G4Transform3D& transform) +{ + // loop over overlap VTEs + for (size_t i=0; isize(); i++){ + + G3VolTableEntry* overlapVTE = (*overlaps)[i]; + + // loop over clone VTEs + for (G4int ij=0; ijGetMasterClone()->GetNoClones(); ij++){ + + G3VolTableEntry* cloneVTE = overlapVTE->GetMasterClone()->GetClone(ij); + + // loop over clone positions + for (G4int j=0; jNPCopies(); j++){ + + #ifdef G3G4DEBUG + G4cout << "From '" << curVTE->GetName() << "' " + << "cut '" << cloneVTE->GetName() << "' :" + << i << "th overlap (from " << overlaps->size() << ") " + << ij << "th clone (from " << overlapVTE->GetMasterClone()->GetNoClones() << ") " + << j << "th copy (from " << cloneVTE->NPCopies() << ") " + << G4endl; + #endif + + SubstractSolids(curVTE, cloneVTE, j, transform); + } + } + } +} + +void SubstractSolids(G3VolTableEntry* vte1, G3VolTableEntry* vte2, + G4int copy, const G4Transform3D& transform) +{ + // vte2 transformation + G4Transform3D transform2 = GetTransform3D(vte2->GetG3PosCopy(copy)); + + // compose new name + G4String newName = vte1->GetSolid()->GetName(); + newName = newName + "-" + vte2->GetSolid()->GetName(); + + #ifdef G3G4DEBUG + G4cout << " " << newName << G4endl; + #endif + + G4VSolid* newSolid + = new G4SubtractionSolid(newName, vte1->GetSolid(), vte2->GetSolid(), + transform*transform2); + + // update vte1 + vte1->SetSolid(newSolid); + + // process daughters + for (G4int k=0; kGetNoDaughters(); k++){ + + G3VolTableEntry* dVTE = vte1->GetDaughter(k); + + if (dVTE->NPCopies() != 1) { + G4String text = "G3toG4MANY: volume "; + text = text + dVTE->GetName() + " which has MANY has not just one position."; + G4Exception(text); + } + + G4Transform3D dt = GetTransform3D(dVTE->GetG3PosCopy(0)); + SubstractSolids(dVTE, vte2, copy, dt.inverse()*transform); + } +} + +G4Transform3D GetTransform3D(G3Pos* g3pos) +{ + G4int irot = g3pos->GetIrot(); + G4RotationMatrix* theMatrix = 0; + if (irot>0) theMatrix = G3Rot.Get(irot); + + G4Rotate3D rotation; + if (theMatrix) { + rotation = G4Rotate3D(*theMatrix); + } + + G4Translate3D translation(*(g3pos->GetPos())); + G4Transform3D transform3D = translation * (rotation.inverse()); + + return transform3D; +} + + diff --git a/source/g3tog4/src/G3toG4MakeSolid.cc b/source/g3tog4/src/G3toG4MakeSolid.cc index 7b1a5dfea9..f74bd387b9 100644 --- a/source/g3tog4/src/G3toG4MakeSolid.cc +++ b/source/g3tog4/src/G3toG4MakeSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G3toG4MakeSolid.cc,v 1.7.2.1 2001/06/28 19:08:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G3toG4MakeSolid.cc,v 1.9 2001/07/16 15:38:21 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // modified by I.Hrivnacova, V.Berejnoi 27 Sep 99 @@ -56,7 +56,7 @@ G4VSolid* G3toG4MakeSolid(const G4String& vname, const G4String& shape, // modified if (Deferred) return solid; - for (int i=0;i<3;i++){ + for (G4int i=0;i<3;i++){ OKAxis[i]=false; }; @@ -237,8 +237,8 @@ G4VSolid* G3toG4MakeSolid(const G4String& vname, const G4String& shape, } else if ( shape == "PGON" ) { G4int i; - G4int npdv = int(Rpar[2]); - G4int nz = int(Rpar[3]); + G4int npdv = G4int(Rpar[2]); + G4int nz = G4int(Rpar[3]); G4double pPhi1 = Rpar[0]*deg; G4double dPhi = Rpar[1]*deg; G4double *DzArray = new G4double[nz]; @@ -250,9 +250,9 @@ G4VSolid* G3toG4MakeSolid(const G4String& vname, const G4String& shape, NegVolPars = 0; for(i=0; iGetName() << " at level " << level << " contains " << ndau << " daughters." << G4endl; - for (int idau=0; idau GetDaughter(idau); _ldvol = _pdvol -> GetLogicalVolume(); G4cout << "G4VPhysical volume " << G4std::setw(5) << _pdvol -> GetName() diff --git a/source/g3tog4/src/G4ggclos.cc b/source/g3tog4/src/G4ggclos.cc index 69b9d11ac8..d333f8bdca 100644 --- a/source/g3tog4/src/G4ggclos.cc +++ b/source/g3tog4/src/G4ggclos.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ggclos.cc,v 1.6.4.1 2001/06/28 19:08:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ggclos.cc,v 1.7 2001/07/11 09:59:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G3toG4.hh" #include "G3VolTable.hh" diff --git a/source/g3tog4/src/G4gsatt.cc b/source/g3tog4/src/G4gsatt.cc index 5038103cf8..c66c24bc67 100644 --- a/source/g3tog4/src/G4gsatt.cc +++ b/source/g3tog4/src/G4gsatt.cc @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4gsatt.cc,v 1.9.2.1 2001/06/28 19:08:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsatt.cc,v 1.11 2001/07/16 15:38:22 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ -#include "g4rw/cstring.h" +#include "globals.hh" #include "G3toG4.hh" #include "G3VolTable.hh" diff --git a/source/g3tog4/src/G4gsbool.cc b/source/g3tog4/src/G4gsbool.cc new file mode 100644 index 0000000000..68673d606f --- /dev/null +++ b/source/g3tog4/src/G4gsbool.cc @@ -0,0 +1,53 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4gsbool.cc,v 1.1 2001/11/08 16:08:01 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// by I.Hrivnacova, 13.10.01 + +#include "G3G4Interface.hh" +#include "G3VolTable.hh" +#include "globals.hh" + +void G4gsbool(G4String volName, G4String manyVolName) +{ + // find VTEs + G3VolTableEntry* vte = G3Vol.GetVTE(volName); + G3VolTableEntry* manyVTE = G3Vol.GetVTE(manyVolName); + + if (vte == 0) { + G4Exception("G4gsbool: '" + volName + "' has no VolTableEntry"); + } + else if (manyVTE == 0) { + // warning + G4cerr << "G4gsbool: '" << manyVolName << "' has no VolTableEntry." + << G4endl + << " Specified overlap will be ignored." + << G4endl; + return; + } + else { + manyVTE->AddOverlap(vte); + } +} diff --git a/source/g3tog4/src/G4gsdet.cc b/source/g3tog4/src/G4gsdet.cc index 9326d6d776..1af8f5b0dc 100644 --- a/source/g3tog4/src/G4gsdet.cc +++ b/source/g3tog4/src/G4gsdet.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdet.cc,v 1.3.8.1 2001/06/28 19:08:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdet.cc,v 1.4 2001/07/11 09:59:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "globals.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdeta.cc b/source/g3tog4/src/G4gsdeta.cc index 1b3eeeca5d..22264a8263 100644 --- a/source/g3tog4/src/G4gsdeta.cc +++ b/source/g3tog4/src/G4gsdeta.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdeta.cc,v 1.4.8.1 2001/06/28 19:08:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdeta.cc,v 1.5 2001/07/11 09:59:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // modified by I.Hrivnacova, 6 Oct 99 diff --git a/source/g3tog4/src/G4gsdetd.cc b/source/g3tog4/src/G4gsdetd.cc index 504c72b641..f7de93d41d 100644 --- a/source/g3tog4/src/G4gsdetd.cc +++ b/source/g3tog4/src/G4gsdetd.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdetd.cc,v 1.5.2.1 2001/06/28 19:08:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdetd.cc,v 1.6 2001/07/11 09:59:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G3toG4.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G4gsdeth.cc b/source/g3tog4/src/G4gsdeth.cc index b633d74b04..470c394746 100644 --- a/source/g3tog4/src/G4gsdeth.cc +++ b/source/g3tog4/src/G4gsdeth.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdeth.cc,v 1.5.2.1 2001/06/28 19:08:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdeth.cc,v 1.6 2001/07/11 09:59:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G3toG4.hh" #include "G3DetTable.hh" diff --git a/source/g3tog4/src/G4gsdetu.cc b/source/g3tog4/src/G4gsdetu.cc index 5e5cf601ad..e1a2b60ad5 100644 --- a/source/g3tog4/src/G4gsdetu.cc +++ b/source/g3tog4/src/G4gsdetu.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdetu.cc,v 1.3.8.1 2001/06/28 19:08:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdetu.cc,v 1.4 2001/07/11 09:59:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdetv.cc b/source/g3tog4/src/G4gsdetv.cc index b94bc5b9ef..7cc579721f 100644 --- a/source/g3tog4/src/G4gsdetv.cc +++ b/source/g3tog4/src/G4gsdetv.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdetv.cc,v 1.6.4.1 2001/06/28 19:08:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdetv.cc,v 1.8 2001/07/16 15:38:22 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4ios.hh" #include "G3toG4.hh" @@ -53,7 +53,7 @@ void G4gsdetv(G4String chset, G4String chdet, G4int idtyp, G4int, /* // get lvol for detector chdet G4LogicalVolume *lvol = G3Vol.GetLV(chdet); - if (lvol == NULL) { + if (lvol == 0) { G4cout << "G4gsdetv: Logical volume " << chdet << " not available. Skip." << G4endl; return; } diff --git a/source/g3tog4/src/G4gsdk.cc b/source/g3tog4/src/G4gsdk.cc index 65f8a02abc..73a230c634 100644 --- a/source/g3tog4/src/G4gsdk.cc +++ b/source/g3tog4/src/G4gsdk.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdk.cc,v 1.4.2.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdk.cc,v 1.5 2001/07/11 09:59:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4Decay.hh" #include "G3toG4.hh" diff --git a/source/g3tog4/src/G4gsdvn.cc b/source/g3tog4/src/G4gsdvn.cc index 43325941dd..5b6f369315 100644 --- a/source/g3tog4/src/G4gsdvn.cc +++ b/source/g3tog4/src/G4gsdvn.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdvn.cc,v 1.6.2.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdvn.cc,v 1.7 2001/07/11 09:59:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvn2.cc b/source/g3tog4/src/G4gsdvn2.cc index cb89cf3f6c..c117610868 100644 --- a/source/g3tog4/src/G4gsdvn2.cc +++ b/source/g3tog4/src/G4gsdvn2.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdvn2.cc,v 1.6.8.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdvn2.cc,v 1.7 2001/07/11 09:59:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvt.cc b/source/g3tog4/src/G4gsdvt.cc index 6cfb748e43..93057fd8e8 100644 --- a/source/g3tog4/src/G4gsdvt.cc +++ b/source/g3tog4/src/G4gsdvt.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdvt.cc,v 1.5.8.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdvt.cc,v 1.6 2001/07/11 09:59:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvt2.cc b/source/g3tog4/src/G4gsdvt2.cc index 5c89789a58..7ccac19639 100644 --- a/source/g3tog4/src/G4gsdvt2.cc +++ b/source/g3tog4/src/G4gsdvt2.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdvt2.cc,v 1.5.8.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdvt2.cc,v 1.6 2001/07/11 09:59:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, V.Berejnoi, 29 Oct 99 diff --git a/source/g3tog4/src/G4gsdvx.cc b/source/g3tog4/src/G4gsdvx.cc index 06729d24bb..bc5fdb4782 100644 --- a/source/g3tog4/src/G4gsdvx.cc +++ b/source/g3tog4/src/G4gsdvx.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsdvx.cc,v 1.3.8.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsdvx.cc,v 1.4 2001/07/11 09:59:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, V.Berejnoi, 27 Sep 99 diff --git a/source/g3tog4/src/G4gsmate.cc b/source/g3tog4/src/G4gsmate.cc index 26e3d12d3c..a060eb0b7b 100644 --- a/source/g3tog4/src/G4gsmate.cc +++ b/source/g3tog4/src/G4gsmate.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsmate.cc,v 1.7.2.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsmate.cc,v 1.8 2001/07/11 09:59:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G4gsmixt.cc b/source/g3tog4/src/G4gsmixt.cc index 411f97280d..ab2c9ad679 100644 --- a/source/g3tog4/src/G4gsmixt.cc +++ b/source/g3tog4/src/G4gsmixt.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsmixt.cc,v 1.7.4.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsmixt.cc,v 1.8 2001/07/11 09:59:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 27 Sep 99 diff --git a/source/g3tog4/src/G4gspart.cc b/source/g3tog4/src/G4gspart.cc index 012b8b4723..40a81f206c 100644 --- a/source/g3tog4/src/G4gspart.cc +++ b/source/g3tog4/src/G4gspart.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gspart.cc,v 1.3.8.1 2001/06/28 19:08:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gspart.cc,v 1.5 2001/07/16 15:38:23 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4ProcessManager.hh" #include "G3toG4.hh" @@ -56,7 +56,7 @@ void G4gspart(G4int ipart, G4String chnpar, G4int itrtyp, G4double amass, G4double charge, G4double tlife, G4double*, G4int) { // Handle conversion of itrtyp into an appropriate ProcessManager - G4ProcessManager *mgr = NULL; + G4ProcessManager *mgr = 0; switch (itrtyp) { case 1: // gamma diff --git a/source/g3tog4/src/G4gspos.cc b/source/g3tog4/src/G4gspos.cc index 9b1322bcda..e1fd352b8e 100644 --- a/source/g3tog4/src/G4gspos.cc +++ b/source/g3tog4/src/G4gspos.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gspos.cc,v 1.11.8.1 2001/06/28 19:08:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gspos.cc,v 1.12 2001/07/11 09:59:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G4gsposp.cc b/source/g3tog4/src/G4gsposp.cc index 03322cad8f..8bf3ffe55e 100644 --- a/source/g3tog4/src/G4gsposp.cc +++ b/source/g3tog4/src/G4gsposp.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsposp.cc,v 1.13.4.1 2001/06/28 19:08:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsposp.cc,v 1.14 2001/07/11 09:59:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/G4gsrotm.cc b/source/g3tog4/src/G4gsrotm.cc index ca66a50932..79678066fa 100644 --- a/source/g3tog4/src/G4gsrotm.cc +++ b/source/g3tog4/src/G4gsrotm.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsrotm.cc,v 1.8.4.1 2001/06/28 19:08:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsrotm.cc,v 1.9 2001/07/11 09:59:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G3toG4.hh" #include "G3RotTable.hh" diff --git a/source/g3tog4/src/G4gstmed.cc b/source/g3tog4/src/G4gstmed.cc index 5f2d01861e..c345ec3c75 100644 --- a/source/g3tog4/src/G4gstmed.cc +++ b/source/g3tog4/src/G4gstmed.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gstmed.cc,v 1.4.8.1 2001/06/28 19:08:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gstmed.cc,v 1.5 2001/07/11 09:59:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // The last G4int argument of G4gstmed(..) is used for sending // info whether the Geant3 tracking medium parameters should diff --git a/source/g3tog4/src/G4gstpar.cc b/source/g3tog4/src/G4gstpar.cc index 0fcebdf0dc..a042b31d3a 100644 --- a/source/g3tog4/src/G4gstpar.cc +++ b/source/g3tog4/src/G4gstpar.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gstpar.cc,v 1.5.4.1 2001/06/28 19:08:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gstpar.cc,v 1.6 2001/07/11 09:59:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G3toG4.hh" #include "G3VolTable.hh" diff --git a/source/g3tog4/src/G4gsvolu.cc b/source/g3tog4/src/G4gsvolu.cc index 30ca604ba5..c4551ec814 100644 --- a/source/g3tog4/src/G4gsvolu.cc +++ b/source/g3tog4/src/G4gsvolu.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4gsvolu.cc,v 1.7.4.1 2001/06/28 19:08:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4gsvolu.cc,v 1.8 2001/07/11 09:59:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by I.Hrivnacova, 13.10.99 diff --git a/source/g3tog4/src/clparse.cc b/source/g3tog4/src/clparse.cc index 1c3843b112..e1ccadd254 100644 --- a/source/g3tog4/src/clparse.cc +++ b/source/g3tog4/src/clparse.cc @@ -21,16 +21,15 @@ // ******************************************************************** // // -// $Id: clparse.cc,v 1.11.4.1 2001/06/28 19:08:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: clparse.cc,v 1.14 2001/10/11 12:36:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // modified by I.Hrivnacova // added G3SensVol #include "globals.hh" #include "g4std/fstream" -#include "g4rw/rstream.h" -#include "g4rw/ctoken.h" +#include "G4Tokenizer.hh" #include "G3toG4.hh" #include "G3EleTable.hh" #include "G3VolTable.hh" @@ -92,7 +91,7 @@ void PG4gsdetd(G4String *tokens); void PG4gsdetu(G4String *tokens); void PG4ggclos(); -void G3CLRead(G4String & fname, char *select = NULL){ +void G3CLRead(G4String & fname, char *select = 0){ // // G3CLRead // Read the call List file, parse the tokens, and pass the token @@ -167,7 +166,7 @@ void G3CLEval(G4String tokens[], char *select) const char* routine = tokens[1]; // If context is selected, return unless context matches. - if (select != NULL && select != "*") if ( strcmp(select,context) ) return; + if (select != 0 && select != "*") if ( strcmp(select,context) ) return; // Branch on Geant3 routine name ofile << "Do routine " << routine << " in context " << context << G4endl; diff --git a/source/g3tog4/src/g3routines.F b/source/g3tog4/src/g3routines.F index 5fb1051acd..48932913d4 100644 --- a/source/g3tog4/src/g3routines.F +++ b/source/g3tog4/src/g3routines.F @@ -21,8 +21,8 @@ * ******************************************************************** * * -* $Id: g3routines.F,v 1.3.8.1 2001/06/28 19:08:08 gunter Exp $ -* GEANT4 tag $Name: $ +* $Id: g3routines.F,v 1.4 2001/07/11 09:59:02 gunter Exp $ +* GEANT4 tag $Name: geant4-04-00 $ * #define CALL_GEANT diff --git a/source/g3tog4/src/g3test.F.main b/source/g3tog4/src/g3test.F.main index bb4ab24be6..25b23735b9 100644 --- a/source/g3tog4/src/g3test.F.main +++ b/source/g3tog4/src/g3test.F.main @@ -6,7 +6,7 @@ * and all its terms. * * $Id: g3test.F.main,v 1.2 1999/12/05 17:50:16 gcosmo Exp $ -* GEANT4 tag $Name: $ +* GEANT4 tag $Name: geant4-04-00 $ * * * g3test diff --git a/source/g3tog4/src/g3tog4.F b/source/g3tog4/src/g3tog4.F index deb8a986b4..14d1866b8e 100644 --- a/source/g3tog4/src/g3tog4.F +++ b/source/g3tog4/src/g3tog4.F @@ -21,8 +21,8 @@ * ******************************************************************** * * -* $Id: g3tog4.F,v 1.3.8.1 2001/06/28 19:08:09 gunter Exp $ -* GEANT4 tag $Name: $ +* $Id: g3tog4.F,v 1.4 2001/07/11 09:59:02 gunter Exp $ +* GEANT4 tag $Name: geant4-04-00 $ * * * G3toG4 diff --git a/source/g3tog4/src/g4geom.cc.main b/source/g3tog4/src/g4geom.cc.main index 4c4ac7b949..bfea7ad7e7 100644 --- a/source/g3tog4/src/g4geom.cc.main +++ b/source/g3tog4/src/g4geom.cc.main @@ -6,7 +6,7 @@ // and all its terms. // // $Id: g4geom.cc.main,v 1.2 1999/12/05 17:50:17 gcosmo Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // g4geom // diff --git a/source/g3tog4/src/jshape.F b/source/g3tog4/src/jshape.F index c8923a95a2..1a0d4ff656 100644 --- a/source/g3tog4/src/jshape.F +++ b/source/g3tog4/src/jshape.F @@ -21,8 +21,8 @@ * ******************************************************************** * * -* $Id: jshape.F,v 1.2.8.1 2001/06/28 19:08:09 gunter Exp $ -* GEANT4 tag $Name: $ +* $Id: jshape.F,v 1.3 2001/07/11 09:59:03 gunter Exp $ +* GEANT4 tag $Name: geant4-04-00 $ * * *-- Author : Jouko Vuoskoski, CERN, Jouko.Vuoskoski@cern.ch diff --git a/source/g3tog4/src/mztog4.F b/source/g3tog4/src/mztog4.F index 22a629830a..2188bf72d3 100644 --- a/source/g3tog4/src/mztog4.F +++ b/source/g3tog4/src/mztog4.F @@ -21,8 +21,8 @@ * ******************************************************************** * * -* $Id: mztog4.F,v 1.2.8.1 2001/06/28 19:08:09 gunter Exp $ -* GEANT4 tag $Name: $ +* $Id: mztog4.F,v 1.3 2001/07/11 09:59:03 gunter Exp $ +* GEANT4 tag $Name: geant4-04-00 $ * subroutine mztog4 ************************************************************************ diff --git a/source/g3tog4/src/rztog4.F b/source/g3tog4/src/rztog4.F index 4a35a08084..87b848146e 100644 --- a/source/g3tog4/src/rztog4.F +++ b/source/g3tog4/src/rztog4.F @@ -21,8 +21,8 @@ * ******************************************************************** * * -* $Id: rztog4.F,v 1.2.8.1 2001/06/28 19:08:09 gunter Exp $ -* GEANT4 tag $Name: $ +* $Id: rztog4.F,v 1.3 2001/07/11 09:59:03 gunter Exp $ +* GEANT4 tag $Name: geant4-04-00 $ * program rztog4 ************************************************************************ diff --git a/source/g3tog4/src/tog4.F b/source/g3tog4/src/tog4.F index 39418e9e13..b286eb95f2 100644 --- a/source/g3tog4/src/tog4.F +++ b/source/g3tog4/src/tog4.F @@ -21,8 +21,8 @@ * ******************************************************************** * * -* $Id: tog4.F,v 1.3.8.1 2001/06/28 19:08:09 gunter Exp $ -* GEANT4 tag $Name: $ +* $Id: tog4.F,v 1.4 2001/07/11 09:59:03 gunter Exp $ +* GEANT4 tag $Name: geant4-04-00 $ * subroutine tog4 ************************************************************************ diff --git a/source/geometry/GNUmakefile b/source/geometry/GNUmakefile index b1f1798e3f..6aa406a986 100644 --- a/source/geometry/GNUmakefile +++ b/source/geometry/GNUmakefile @@ -1,13 +1,13 @@ -# $Id: GNUmakefile,v 1.2 2000/04/07 13:07:00 gcosmo Exp $ +# $Id: GNUmakefile,v 1.3 2001/10/17 12:59:48 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for geometry. Gabriele Cosmo, 16/11/96. # -------------------------------------------------------------- name := G4geometry -SUBDIRS = management volumes magneticfield +SUBDIRS = management volumes magneticfield verification SUBDIRS += solids/CSG solids/specific solids/Boolean solids/BREPS solids/STEP solids/STEPinterface -SUBLIBS = G4geometrymng G4volumes G4magneticfield +SUBLIBS = G4geometrymng G4volumes G4magneticfield G4geomver SUBLIBS += G4csg G4specsolids G4geomBoolean G4brep G4step G4stepinterface ifndef G4INSTALL diff --git a/source/geometry/History b/source/geometry/History index 57de975539..341ab2851c 100644 --- a/source/geometry/History +++ b/source/geometry/History @@ -1,4 +1,4 @@ -$Id: History,v 1.18 2001/04/20 20:31:06 gcosmo Exp $ +$Id: History,v 1.21 2001/10/22 16:40:30 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,21 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Oct 22, 2001 Gabriele Cosmo geometry-V03-02-01 +----------------------------- +- Introduced new module "verification" for geometry debugging. +- This tag includes the following tags on top of "geant4-03-02-ref-05": + geomver-V03-02-00, field-V03-02-00, geomvol-V03-02-00, + geommng-V03-02-00, geom-solid-bool-V03-02-01. + See related History files for details. + +Jul 11, 2001 Gabriele Cosmo geometry-V03-02-00 +----------------------------- +- Includes same code contents as in "geant4-03-02-ref-00" except that + CVS file revision is now synchronized with HEAD, after the update for + the disclaimer of warranty. +- Includes tag "breps-V03-02-00". + Apr 20, 2001 Gabriele Cosmo geometry-V03-01-00 ----------------------------- - Includes all geometry coworking tags after the migration to STL vector: diff --git a/source/geometry/magneticfield/History b/source/geometry/magneticfield/History index 3bfd2e39ff..fc158634f1 100644 --- a/source/geometry/magneticfield/History +++ b/source/geometry/magneticfield/History @@ -1,4 +1,4 @@ -$Id: History,v 1.37 2001/05/23 18:51:29 japost Exp $ +$Id: History,v 1.48 2001/12/04 17:42:29 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,13 +16,118 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +Dec 4th, 2001 G. Cosmo - field-V03-02-08 +----------------------- +- Fixed interface to virtual functions in the inheritance chain. + Added 'virtual' qualifier to destructor and GetFieldValue() for subclasses + of G4Field which may act as base class for user-defined fields. + Modified files: G4MagneticField.hh, G4UniformElectricField[.hh.cc], + G4UniformMagField.hh. +- G4ChordFinder.cc: the unphysical curve length exception has been moved to + inside #ifdef G4DEBUG_FIELD. Other #ifdef renamed to G4DEBUG_FIELD. +- G4LineSection[.hh.cc]: correction for A=B when the distance from P to A + is returned (V.Grichine). + +Nov 28th, 2001 J. Apostolakis - field-V03-02-07 +------------------------------ +G4FieldManager +- Added fFieldChangesEnergy data member and get/set methods + ( required to allow transportation to know how to calculate end-time, + enabling the integration of time only for electric fields. ) + +Nov 28th, 2001 J. Apostolakis - field-V03-02-06 +------------------------------ +Small fixes only: + +G4CashKarpRKF45 +- fixed deletion of unassigned pointer/array in destructor. (-> Volodya Velev) + +G4EqMagElectricField +- bug fixed in the formula for inverse velocity (-> V. Grichine) + +Nov 21st, 2001 G. Cosmo - field-V03-02-05 +------------------------ +- Protected verbose warnings with G4FIELD_DEBUG flag in G4ChordFinder.cc + (V.Grichine). +- Replaced G4DEBUG with G4DEBUG_FIELD in G4MagIntegratorDriver.cc. +- Updates to unit test field02. + +Nov 13th, 2001 G. Cosmo - field-V03-02-04 +------------------------ +- Removed warnings on gcc-2.95.2. +- Included unit tests field01, field02, field03. + +Nov 9th, 2001 J. Apostolakis - field-V03-02-03 +----------------------------- +Motivated by the use case of an Electric Field, + - in order to achieve reasonable accuracy in time integration, + - and to enable fields that vary with the global time) +we (John Ap. and V. Grichine) changed the following: + +- Modified G4Field to allow the time in the GetFieldValue method + - as 4th component of the "position" array. + +- Modified EquationOfMotion to provide the time to the GetFieldValue method + of G4Field + * as the 4th component of a position / time 4-array + * in place of only position as a 3-arry + +- Added the global time as variable to be integrated over in the + case of an Electric Field + +Support for these modifications is required in G4Transportation. + +(Better support will require either + - a modification in G4FieldTrack to indicate whether the time has been + integrated or not. + - or additionally making the time calculation a property of G4FieldTrack, + bring in code to do it in from G4Transportation.) + + +Nov 8th, 2001 J. Apostolakis - field-V03-02-02 +------------------------ +- Introduced several changes in G4MagIntegratorDriver. + + It now respects its minimum driver step size in AccurateAdvance. + * whereas before it did not. + + Modified maximum number of steps, lowering by factor of 10. + -> it should reduce the time spent integrating low energy particles, + in some cases where it is unneccessary. + + Protected printing of (nearly?) all warnings with a G4DEBUG_FIELD #ifdef. + + +Nov 05th, 2001 G. Cosmo - field-V03-02-01 +------------------------ +- Fixed trivial warnings on Linux-g++. + +Aug 27th, 2001 J. Apostolakis - field-V03-02-00 +------------------------------ +Tagged last change. +This tag is utilised in transport-V03-02-01 (which requires it). + +Aug 16th, 2001 J. Apostolakis +------------------------------ +G4ChordFinder: + Added method to erase/reset the state of the StepEstimate. + This is unwanted internal state that was carried between tracks and + events as a side effect. + + Calling this at the start of each track, it is now possible to + eliminate a non-repeatability that was possible due to this. + ( It has been observed in particular in vaccuum. ) + +May 23rd, 2001 J. Apostolakis - field-V03-01-02 +------------------------------ +- Added Exception to G4RKG3Stepper constructor: the class does not work + May 23rd, 2001 J. Apostolakis - field-V03-01-01 ------------------------------ - Fixed G4FieldManager constructors to give default values to delta parameters. -- Added Exception to G4RKG3Stepper constructor: the class does not work - - Updated testPropagateSpin (it now compiles), and some outputs of testPropagateMagField (1 to 5) diff --git a/source/geometry/magneticfield/include/G4CashKarpRKF45.hh b/source/geometry/magneticfield/include/G4CashKarpRKF45.hh index c33fa88c1e..41eab4bcc4 100644 --- a/source/geometry/magneticfield/include/G4CashKarpRKF45.hh +++ b/source/geometry/magneticfield/include/G4CashKarpRKF45.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CashKarpRKF45.hh,v 1.6.2.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CashKarpRKF45.hh,v 1.7 2001/07/11 09:59:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4CashKarpRKF45 diff --git a/source/geometry/magneticfield/include/G4ChordFinder.hh b/source/geometry/magneticfield/include/G4ChordFinder.hh index 6197289f11..1a1114b8be 100644 --- a/source/geometry/magneticfield/include/G4ChordFinder.hh +++ b/source/geometry/magneticfield/include/G4ChordFinder.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ChordFinder.hh,v 1.6.2.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ChordFinder.hh,v 1.8 2001/08/16 23:54:15 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ChordFinder @@ -84,6 +84,9 @@ class G4ChordFinder inline G4MagInt_Driver* GetIntegrationDriver(); // Access and set Driver. + inline void ResetStepEstimate(); + // Clear internal state (last step estimate) + protected: // ......................................................... inline G4bool AcceptableMissDist(G4double dChordStep) const; diff --git a/source/geometry/magneticfield/include/G4ChordFinder.icc b/source/geometry/magneticfield/include/G4ChordFinder.icc index 088ffdd373..d9515aca2c 100644 --- a/source/geometry/magneticfield/include/G4ChordFinder.icc +++ b/source/geometry/magneticfield/include/G4ChordFinder.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ChordFinder.icc,v 1.2.4.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ChordFinder.icc,v 1.4 2001/08/16 23:54:51 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4ChordFinder inline implementations // @@ -73,3 +73,10 @@ void G4ChordFinder::SetDeltaChord(G4double newval) { fDeltaChord=newval; } + +// ...................................................................... +inline +void G4ChordFinder::ResetStepEstimate() +{ + fLastStepEstimate_Unconstrained = DBL_MAX; +} diff --git a/source/geometry/magneticfield/include/G4ClassicalRK4.hh b/source/geometry/magneticfield/include/G4ClassicalRK4.hh index 75c5824c22..1b89e5e854 100644 --- a/source/geometry/magneticfield/include/G4ClassicalRK4.hh +++ b/source/geometry/magneticfield/include/G4ClassicalRK4.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ClassicalRK4.hh,v 1.4.4.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ClassicalRK4.hh,v 1.5 2001/07/11 09:59:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ClassicalRK4 diff --git a/source/geometry/magneticfield/include/G4DELPHIMagField.hh b/source/geometry/magneticfield/include/G4DELPHIMagField.hh new file mode 100644 index 0000000000..de3326c9a3 --- /dev/null +++ b/source/geometry/magneticfield/include/G4DELPHIMagField.hh @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// Class describing the DELPHI magnetic field. This axial symmetry +// field mainly directed along Z axis. The function MagneticField(yTrack,B) +// calculates the magnetic induction vector B in point corresponding to +// yTrack according to parametrization given in: +// P.Billoir, Precise tracking in a quasi-honogeneous magnetic field, DELPHI +// 87-6 PROG 65, 3 February 1987 +// +// 3.2.97 V. Grichine + +#ifndef G4DELPHIMAGFIELD_HH +#define G4DELPHIMAGFIELD_HH + +#include "globals.hh" +#include "G4MagneticField.hh" +#include "G4Mag_EqRhs.hh" + +class G4DELPHIMagField : public G4MagneticField +{ +public: + + G4DELPHIMagField() ; + + ~G4DELPHIMagField() ; + + void GetFieldValue(const G4double yTrack[] , + G4double B[] ) const ; + + +protected: + +private: + +} ; + +#endif diff --git a/source/geometry/magneticfield/include/G4ElectroMagneticField.hh b/source/geometry/magneticfield/include/G4ElectroMagneticField.hh index e40154213a..bd54e94089 100644 --- a/source/geometry/magneticfield/include/G4ElectroMagneticField.hh +++ b/source/geometry/magneticfield/include/G4ElectroMagneticField.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ElectroMagneticField.hh,v 1.4.4.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ElectroMagneticField.hh,v 1.6 2001/11/08 17:31:06 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ElectroMagneticField @@ -52,7 +52,7 @@ class G4ElectroMagneticField : public G4MagneticField G4ElectroMagneticField& operator = (const G4ElectroMagneticField &); // Copy constructor & assignment operators. - virtual void GetFieldValue(const G4double Point[3], + virtual void GetFieldValue(const G4double Point[4], G4double *Bfield ) const = 0; }; diff --git a/source/geometry/magneticfield/include/G4EqMagElectricField.hh b/source/geometry/magneticfield/include/G4EqMagElectricField.hh index 8d6dbce2b9..b146d7ed7e 100644 --- a/source/geometry/magneticfield/include/G4EqMagElectricField.hh +++ b/source/geometry/magneticfield/include/G4EqMagElectricField.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EqMagElectricField.hh,v 1.5.2.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EqMagElectricField.hh,v 1.6 2001/07/11 09:59:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4EqMagElectricField diff --git a/source/geometry/magneticfield/include/G4EquationOfMotion.hh b/source/geometry/magneticfield/include/G4EquationOfMotion.hh index e0cac4c7c9..3f61641098 100644 --- a/source/geometry/magneticfield/include/G4EquationOfMotion.hh +++ b/source/geometry/magneticfield/include/G4EquationOfMotion.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EquationOfMotion.hh,v 1.4.4.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EquationOfMotion.hh,v 1.5 2001/07/11 09:59:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4EquationOfMotion diff --git a/source/geometry/magneticfield/include/G4EquationOfMotion.icc b/source/geometry/magneticfield/include/G4EquationOfMotion.icc index ab6fde4231..5adfd6f0ea 100644 --- a/source/geometry/magneticfield/include/G4EquationOfMotion.icc +++ b/source/geometry/magneticfield/include/G4EquationOfMotion.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EquationOfMotion.icc,v 1.4.4.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EquationOfMotion.icc,v 1.5 2001/07/11 09:59:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Inline implementation diff --git a/source/geometry/magneticfield/include/G4ExplicitEuler.hh b/source/geometry/magneticfield/include/G4ExplicitEuler.hh index 35f30813ec..ce7d13a93e 100644 --- a/source/geometry/magneticfield/include/G4ExplicitEuler.hh +++ b/source/geometry/magneticfield/include/G4ExplicitEuler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExplicitEuler.hh,v 1.4.4.1 2001/06/28 19:08:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExplicitEuler.hh,v 1.5 2001/07/11 09:59:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ExplicitEuler diff --git a/source/geometry/magneticfield/include/G4Field.hh b/source/geometry/magneticfield/include/G4Field.hh index cce496825d..0212751a6b 100644 --- a/source/geometry/magneticfield/include/G4Field.hh +++ b/source/geometry/magneticfield/include/G4Field.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Field.hh,v 1.4.4.1 2001/06/28 19:08:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Field.hh,v 1.6 2001/11/08 17:31:07 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4Field @@ -43,7 +43,7 @@ class G4Field { public: // with description - virtual void GetFieldValue( const double Point[3], + virtual void GetFieldValue( const double Point[4], double *Bfield ) const = 0; G4Field(){;} virtual ~G4Field(){;} @@ -55,3 +55,10 @@ class G4Field #endif /* G4FIELD_HH */ + + + + + + + diff --git a/source/geometry/magneticfield/include/G4FieldManager.hh b/source/geometry/magneticfield/include/G4FieldManager.hh index 0c3ed79d71..88f68b4db1 100644 --- a/source/geometry/magneticfield/include/G4FieldManager.hh +++ b/source/geometry/magneticfield/include/G4FieldManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FieldManager.hh,v 1.5.4.1 2001/06/28 19:08:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FieldManager.hh,v 1.7 2001/11/28 18:44:43 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4FieldManager @@ -96,6 +96,10 @@ class G4FieldManager inline void SetDeltaOneStep(G4double valueD1step); inline void SetDeltaIntersection(G4double valueDintersection); + inline G4bool DoesFieldChangeEnergy(); + inline void SetFieldChangesEnergy(G4bool value); + // For electric field this should be true + // For magnetic field this should be false private: G4FieldManager(const G4FieldManager&); @@ -109,6 +113,7 @@ class G4FieldManager G4bool fAllocatedChordFinder; // Did we used "new" to // create fChordFinder ? + G4bool fFieldChangesEnergy; // Values for the required accuracies // diff --git a/source/geometry/magneticfield/include/G4FieldManager.icc b/source/geometry/magneticfield/include/G4FieldManager.icc index ef43a07a40..96601f773a 100644 --- a/source/geometry/magneticfield/include/G4FieldManager.icc +++ b/source/geometry/magneticfield/include/G4FieldManager.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FieldManager.icc,v 1.3.4.1 2001/06/28 19:08:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FieldManager.icc,v 1.5 2001/11/28 18:44:43 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4FieldManager inline implementation @@ -90,3 +90,9 @@ void G4FieldManager::SetAccuraciesWithDeltaOneStep(G4double valDeltaOneStep) fDelta_One_Step_Value= valDeltaOneStep; fDelta_Intersection_Val = 0.4 * fDelta_One_Step_Value; } + +inline G4bool G4FieldManager::DoesFieldChangeEnergy() +{ return fFieldChangesEnergy;} + +inline void G4FieldManager::SetFieldChangesEnergy(G4bool value) +{ fFieldChangesEnergy = value; } diff --git a/source/geometry/magneticfield/include/G4FieldTrack.hh b/source/geometry/magneticfield/include/G4FieldTrack.hh index 43d12c6e46..9e7caff107 100644 --- a/source/geometry/magneticfield/include/G4FieldTrack.hh +++ b/source/geometry/magneticfield/include/G4FieldTrack.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FieldTrack.hh,v 1.6.2.1 2001/06/28 19:08:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FieldTrack.hh,v 1.8 2001/10/25 17:02:16 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4FieldTrack @@ -113,7 +113,7 @@ class G4FieldTrack // Needed and should be used only for RK integration driver enum { ncompSVEC = 12 }; inline void DumpToArray(G4double valArr[ncompSVEC]) const; - inline void LoadFromArray(G4double valArr[ncompSVEC]); + inline void LoadFromArray(const G4double valArr[ncompSVEC]); friend G4std::ostream& operator<<( G4std::ostream& os, G4FieldTrack& SixVec); diff --git a/source/geometry/magneticfield/include/G4FieldTrack.icc b/source/geometry/magneticfield/include/G4FieldTrack.icc index 9852a57bf5..2960289590 100644 --- a/source/geometry/magneticfield/include/G4FieldTrack.icc +++ b/source/geometry/magneticfield/include/G4FieldTrack.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FieldTrack.icc,v 1.7.2.1 2001/06/28 19:08:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FieldTrack.icc,v 1.9 2001/10/25 17:02:16 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "PhysicalConstants.h" @@ -261,7 +261,7 @@ void G4FieldTrack::DumpToArray(G4double valArr[ncompSVEC] ) const // note that momentum direction must-be/is normalised inline -void G4FieldTrack::LoadFromArray(G4double valArr[ncompSVEC]) +void G4FieldTrack::LoadFromArray(const G4double valArr[ncompSVEC]) { SixVector[0]=valArr[0]; SixVector[1]=valArr[1]; diff --git a/source/analysis/management/include/G4VAnalysisSystem.hh b/source/geometry/magneticfield/include/G4HarmonicPolMagField.hh similarity index 64% rename from source/analysis/management/include/G4VAnalysisSystem.hh rename to source/geometry/magneticfield/include/G4HarmonicPolMagField.hh index fdfd4921ee..dee27c6803 100644 --- a/source/analysis/management/include/G4VAnalysisSystem.hh +++ b/source/geometry/magneticfield/include/G4HarmonicPolMagField.hh @@ -20,44 +20,37 @@ // * statement, and all its terms. * // ******************************************************************** // +// Class describing magnetic field parametrised by harmonic polynom up to +// 3rd order. The function MagneticField(yTrack,B) calculates the magnetic field +// induction vector B for the trajectory point yTrack according to formula given +// in: M.Metcalf, Analysis of the SFM Field, OM Development Note AP-10 (revised) +// 09.01.1974 // -// $Id: G4VAnalysisSystem.hh,v 1.8.4.1 2001/06/28 19:07:47 gunter Exp $ -// GEANT4 tag $Name: $ -// -// +// 3.2.97 V.Grichine -#ifndef G4VANALYSISSYSTEM_HH -#define G4VANALYSISSYSTEM_HH +#ifndef G4HARMONICPOLMAGFIELD_HH +#define G4HARMONICPOLMAGFIELD_HH -#ifdef G4ANALYSIS_BUILD +#include "globals.hh" +#include "G4MagneticField.hh" +#include "G4Mag_EqRhs.hh" -#include "g4rw/cstring.h" - -class IHistogram; -class IHistogramFactory; - -#ifdef G4ANALYSIS_NON_AIDA -class ICloudFactory; -class ICloud; -class ITuple; -#endif - -class G4VAnalysisSystem { +class G4HarmonicPolMagField : public G4MagneticField +{ public: - virtual ~G4VAnalysisSystem() {} - virtual const G4String& GetName() const = 0; - virtual IHistogramFactory* GetHistogramFactory() = 0; - // - virtual void Store(IHistogram* = 0,const G4String& = "") = 0; - virtual void Plot(IHistogram*) = 0; - // -#ifdef G4ANALYSIS_NON_AIDA - virtual ICloudFactory* GetCloudFactory() = 0; - virtual void Plot(ICloud*) = 0; - virtual ITuple* CreateTuple(const G4String&,const G4String&) = 0; -#endif -}; - -#endif + + G4HarmonicPolMagField() ; + + ~G4HarmonicPolMagField() ; + + void GetFieldValue(const G4double yTrack[] , + G4double B[] ) const ; + + +protected: + +private: + +} ; #endif diff --git a/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh b/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh index afc35b7727..edc87db7e0 100644 --- a/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh +++ b/source/geometry/magneticfield/include/G4HelixExplicitEuler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HelixExplicitEuler.hh,v 1.5.4.1 2001/06/28 19:08:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HelixExplicitEuler.hh,v 1.6 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4HelixExplicitEuler diff --git a/source/geometry/magneticfield/include/G4HelixHeum.hh b/source/geometry/magneticfield/include/G4HelixHeum.hh index 7ce501b46c..a332d85fc4 100644 --- a/source/geometry/magneticfield/include/G4HelixHeum.hh +++ b/source/geometry/magneticfield/include/G4HelixHeum.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HelixHeum.hh,v 1.5.4.1 2001/06/28 19:08:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HelixHeum.hh,v 1.6 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4HelixHeum diff --git a/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh b/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh index 826fa820e7..f8b31d7cea 100644 --- a/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh +++ b/source/geometry/magneticfield/include/G4HelixImplicitEuler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HelixImplicitEuler.hh,v 1.5.4.1 2001/06/28 19:08:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HelixImplicitEuler.hh,v 1.6 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4HelixImplicitEuler diff --git a/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh b/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh index 20599f80e8..01e1b26264 100644 --- a/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh +++ b/source/geometry/magneticfield/include/G4HelixSimpleRunge.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HelixSimpleRunge.hh,v 1.4.4.1 2001/06/28 19:08:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HelixSimpleRunge.hh,v 1.5 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // W. Wander 03/12/98 diff --git a/source/geometry/magneticfield/include/G4ImplicitEuler.hh b/source/geometry/magneticfield/include/G4ImplicitEuler.hh index 60d4af701c..796cf60f0d 100644 --- a/source/geometry/magneticfield/include/G4ImplicitEuler.hh +++ b/source/geometry/magneticfield/include/G4ImplicitEuler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ImplicitEuler.hh,v 1.3.4.1 2001/06/28 19:08:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ImplicitEuler.hh,v 1.4 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // W. Wander 12/09/97 diff --git a/source/geometry/magneticfield/include/G4LineCurrentMagField.hh b/source/geometry/magneticfield/include/G4LineCurrentMagField.hh new file mode 100644 index 0000000000..e0404c119c --- /dev/null +++ b/source/geometry/magneticfield/include/G4LineCurrentMagField.hh @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// + +// Class describing line current magnetic field. +// fFieldConstant determines the coefficient in the field law. +// The line current is directed along Z axis and crosses the XY plane in the point +// (0,0) . +// +// 3.2.97 V. Grichine + +#ifndef G4LINECURRENTMAGFIELD_HH +#define G4LINECURRENTMAGFIELD_HH + +#include "globals.hh" +#include "G4MagneticField.hh" +#include "G4Mag_EqRhs.hh" + +class G4LineCurrentMagField : public G4MagneticField +{ +public: + + G4LineCurrentMagField(G4double pFieldConstant) ; + + ~G4LineCurrentMagField() ; + + void GetFieldValue(const G4double yTrack[] , + G4double B[] ) const ; + + +protected: + +private: + G4double fFieldConstant ; + +} ; + +#endif diff --git a/source/geometry/magneticfield/include/G4LineSection.hh b/source/geometry/magneticfield/include/G4LineSection.hh index 4bec5f3d17..ca3675b52f 100644 --- a/source/geometry/magneticfield/include/G4LineSection.hh +++ b/source/geometry/magneticfield/include/G4LineSection.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LineSection.hh,v 1.4.4.1 2001/06/28 19:08:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LineSection.hh,v 1.7 2001/12/05 16:40:18 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4LineSection @@ -49,22 +49,19 @@ class G4LineSection G4LineSection( const G4ThreeVector& PntA, const G4ThreeVector& PntB ); G4double Dist( G4ThreeVector OtherPnt ) const; - G4double InvsqDistAB() const; + + G4double GetABdistanceSq() const { return fABdistanceSq ; } static G4double Distline( const G4ThreeVector& OtherPnt, const G4ThreeVector& LinePntA, const G4ThreeVector& LinePntB ); private: - G4ThreeVector EndpointA; + G4ThreeVector EndpointA; G4ThreeVector VecAtoB; - G4double inverse_square_distAB; + + G4double fABdistanceSq ; }; -inline -G4double G4LineSection::InvsqDistAB() const -{ - return inverse_square_distAB; -} #endif diff --git a/source/geometry/magneticfield/include/G4MagErrorStepper.hh b/source/geometry/magneticfield/include/G4MagErrorStepper.hh index 4b15133623..dc190c0f27 100644 --- a/source/geometry/magneticfield/include/G4MagErrorStepper.hh +++ b/source/geometry/magneticfield/include/G4MagErrorStepper.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagErrorStepper.hh,v 1.7.4.1 2001/06/28 19:08:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagErrorStepper.hh,v 1.8 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4MagErrorStepper diff --git a/source/geometry/magneticfield/include/G4MagErrorStepper.icc b/source/geometry/magneticfield/include/G4MagErrorStepper.icc index 286752c0c5..e711780250 100644 --- a/source/geometry/magneticfield/include/G4MagErrorStepper.icc +++ b/source/geometry/magneticfield/include/G4MagErrorStepper.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagErrorStepper.icc,v 1.7.4.1 2001/06/28 19:08:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagErrorStepper.icc,v 1.8 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // inline diff --git a/source/geometry/magneticfield/include/G4MagHelicalStepper.hh b/source/geometry/magneticfield/include/G4MagHelicalStepper.hh index c98b1b89a6..c65b88a887 100644 --- a/source/geometry/magneticfield/include/G4MagHelicalStepper.hh +++ b/source/geometry/magneticfield/include/G4MagHelicalStepper.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagHelicalStepper.hh,v 1.6.2.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagHelicalStepper.hh,v 1.7 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4MagHelicalStepper diff --git a/source/geometry/magneticfield/include/G4MagHelicalStepper.icc b/source/geometry/magneticfield/include/G4MagHelicalStepper.icc index 253c9030f4..a325319f9c 100644 --- a/source/geometry/magneticfield/include/G4MagHelicalStepper.icc +++ b/source/geometry/magneticfield/include/G4MagHelicalStepper.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagHelicalStepper.icc,v 1.4.4.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagHelicalStepper.icc,v 1.5 2001/07/11 09:59:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // linear Step in regions of no field diff --git a/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh b/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh index 09cf2b7103..664d6d6f61 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh +++ b/source/geometry/magneticfield/include/G4MagIntegratorDriver.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagIntegratorDriver.hh,v 1.7.4.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagIntegratorDriver.hh,v 1.10 2001/11/09 19:17:20 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4MagInt_Driver @@ -131,13 +131,17 @@ class G4MagInt_Driver inline G4int GetMaxNoSteps() const; inline void SetMaxNoSteps( G4int val); + // Modify and Get the Maximum number of Steps that can be + // taken for the integration of a single segment - + // (ie a single call to AccurateAdvance). public: // without description inline void SetHmin(G4double newval); + inline void SetVerboseLevel( int newLevel); + inline G4double GetVerboseLevel() const; - protected: - + protected: // without description void WarnSmallStepSize( G4double hnext, G4double hstep, G4double h, G4double xDone, G4int noSteps); @@ -148,6 +152,31 @@ class G4MagInt_Driver G4int debugFlag); // Issue warnings for undesirable situations + void PrintStatus( const G4double* StartArr, + G4double xstart, + const G4double* CurrentArr, + G4double xcurrent, + G4double requestStep, + G4int subStepNo); + void PrintStatus( const G4FieldTrack& StartFT, + const G4FieldTrack& CurrentFT, + G4double requestStep, + G4int subStepNo); + void PrintStat_Aux( const G4FieldTrack& aFieldTrack, + G4double requestStep, + G4double actualStep, + G4int subStepNo); + // Verbose output for debugging + +#ifdef QUICK_ADV_TWO + G4bool QuickAdvance( G4double yarrin[], // In + const G4double dydx[], + G4double hstep, + G4double yarrout[], // Out + G4double& dchord_step, // Out + G4double& dyerr ); // in length +#endif + private: G4MagInt_Driver(const G4MagInt_Driver&); @@ -174,6 +203,9 @@ class G4MagInt_Driver static const G4double max_stepping_increase; static const G4double max_stepping_decrease; // Maximum stepsize increase/decrease factors. + + G4int fVerboseLevel; + // Verbosity level for printing (debug, ..) }; #include "G4MagIntegratorDriver.icc" diff --git a/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc b/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc index 50b13a4cda..a0e41afe92 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc +++ b/source/geometry/magneticfield/include/G4MagIntegratorDriver.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagIntegratorDriver.icc,v 1.5.4.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagIntegratorDriver.icc,v 1.7 2001/10/25 09:11:09 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // inline @@ -145,3 +145,16 @@ void G4MagInt_Driver::GetDerivatives(const G4FieldTrack y_curr, // const, INput y_curr.DumpToArray( tmpValArr ); pIntStepper -> RightHandSide( tmpValArr , dydx ); } + + +inline +G4double G4MagInt_Driver::GetVerboseLevel() const +{ + return fVerboseLevel; +} + +inline +void G4MagInt_Driver::SetVerboseLevel( int newLevel) +{ + fVerboseLevel= newLevel; +} diff --git a/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh b/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh index fba587d49d..0cac197388 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh +++ b/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagIntegratorStepper.hh,v 1.6.2.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagIntegratorStepper.hh,v 1.7 2001/07/11 09:59:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4MagIntegratorStepper diff --git a/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc b/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc index 6aee8fe6e7..d4da37ac79 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc +++ b/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagIntegratorStepper.icc,v 1.4.4.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagIntegratorStepper.icc,v 1.5 2001/07/11 09:59:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // inline diff --git a/source/geometry/magneticfield/include/G4Mag_EqRhs.hh b/source/geometry/magneticfield/include/G4Mag_EqRhs.hh index 6c29d55789..9965e6c711 100644 --- a/source/geometry/magneticfield/include/G4Mag_EqRhs.hh +++ b/source/geometry/magneticfield/include/G4Mag_EqRhs.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Mag_EqRhs.hh,v 1.5.4.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Mag_EqRhs.hh,v 1.6 2001/07/11 09:59:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4Mag_EqRhs diff --git a/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh b/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh index 6f0814dc11..33c731c1ca 100644 --- a/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh +++ b/source/geometry/magneticfield/include/G4Mag_SpinEqRhs.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Mag_SpinEqRhs.hh,v 1.5.2.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Mag_SpinEqRhs.hh,v 1.7 2001/07/17 02:13:43 gum Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4Mag_SpinEqRhs @@ -35,7 +35,7 @@ // History: // - Created: J.Apostolakis, P.Gumplinger - February 8th, 1999. -// - Modified: P.Gumplinger - April 11th, 2001. +// - Modified: D. Cote-Ahern, P.Gumplinger - April 11th, 2001. #ifndef G4MAG_SPIN_EQRHS #define G4MAG_SPIN_EQRHS diff --git a/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh b/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh index 563ff27320..0edc422c56 100644 --- a/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh +++ b/source/geometry/magneticfield/include/G4Mag_UsualEqRhs.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Mag_UsualEqRhs.hh,v 1.3.4.1 2001/06/28 19:08:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Mag_UsualEqRhs.hh,v 1.4 2001/07/11 09:59:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4Mag_UsualEqRhs diff --git a/source/geometry/magneticfield/include/G4MagneticField.hh b/source/geometry/magneticfield/include/G4MagneticField.hh index 7290207ed5..325a6be084 100644 --- a/source/geometry/magneticfield/include/G4MagneticField.hh +++ b/source/geometry/magneticfield/include/G4MagneticField.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagneticField.hh,v 1.6.2.1 2001/06/28 19:08:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagneticField.hh,v 1.10 2001/12/04 17:47:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4MagneticField @@ -39,6 +39,7 @@ #ifndef G4MAGNETIC_FIELD_DEF #define G4MAGNETIC_FIELD_DEF +#include "G4Types.hh" #include "G4Field.hh" class G4MagneticField : public G4Field @@ -53,8 +54,8 @@ class G4MagneticField : public G4Field G4MagneticField& operator = (const G4MagneticField &); // Copy constructor & assignment operator. - virtual void GetFieldValue( const double Point[3], - double *Bfield ) const = 0; + virtual void GetFieldValue( const G4double Point[4], + G4double *Bfield ) const = 0; }; // Inline implementations diff --git a/source/analysis/Lizard/include/G4LizardSystem.hh b/source/geometry/magneticfield/include/G4QuadrupoleMagField.hh similarity index 64% rename from source/analysis/Lizard/include/G4LizardSystem.hh rename to source/geometry/magneticfield/include/G4QuadrupoleMagField.hh index 1eb289d0bf..45a92ea207 100644 --- a/source/analysis/Lizard/include/G4LizardSystem.hh +++ b/source/geometry/magneticfield/include/G4QuadrupoleMagField.hh @@ -20,42 +20,40 @@ // * statement, and all its terms. * // ******************************************************************** // +// Class for creation of quadrupole magnetic field +// fGradient - is gardient value for quadrupole magnetic lense. Then the magnetic +// field components are: +// Bx = B[0] = fGradient*X , +// By = B[1] = fGradient*Y , +// Bz = B[2] = 0 . +// Here X,Y,Z are the coordinates of a space point of interest. // -// $Id: G4LizardSystem.hh,v 1.5.4.1 2001/06/28 19:07:46 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Guy Barrand 14 September 2000 +// 3.2.97 V.Grichine -#ifndef G4LIZARDSYSTEM_H -#define G4LIZARDSYSTEM_H +#ifndef G4QUADRUPOLEMAGFIELD_HH +#define G4QUADRUPOLEMAGFIELD_HH -#if defined(G4ANALYSIS_BUILD_LIZARD) || defined(G4ANALYSIS_USE_LIZARD) +#include "globals.hh" +#include "G4MagneticField.hh" +#include "G4Mag_EqRhs.hh" -#include "G4VAnalysisSystem.hh" - -class IHistogramFactory; -class IVectorFactory; -class IPlotter; - -class G4LizardSystem : public G4VAnalysisSystem { -public: // I methods : - virtual const G4String& GetName() const; - virtual IHistogramFactory* GetHistogramFactory(); - // - virtual void Store(IHistogram* = 0,const G4String& = ""); - virtual void Plot(IHistogram*); +class G4QuadrupoleMagField : public G4MagneticField +{ public: - G4LizardSystem(const G4String& name = "Lizard"); - virtual ~G4LizardSystem(); + + G4QuadrupoleMagField(G4double pGradient) ; + + ~G4QuadrupoleMagField() ; + + void GetFieldValue(const G4double yTrack[] , + G4double B[] ) const ; + + +protected: + private: - G4String fName; - IHistogramFactory* fHistogramFactory; - IVectorFactory* fVectorFactory; - IPlotter* fPlotter; -}; + G4double fGradient ; + +} ; #endif - -#endif - diff --git a/source/geometry/magneticfield/include/G4RKG3_Stepper.hh b/source/geometry/magneticfield/include/G4RKG3_Stepper.hh index ae5a0f55c7..55724662c8 100644 --- a/source/geometry/magneticfield/include/G4RKG3_Stepper.hh +++ b/source/geometry/magneticfield/include/G4RKG3_Stepper.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RKG3_Stepper.hh,v 1.7.2.1 2001/06/28 19:08:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RKG3_Stepper.hh,v 1.8 2001/07/11 09:59:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4RKG3_Stepper diff --git a/source/geometry/magneticfield/include/G4SimpleHeum.hh b/source/geometry/magneticfield/include/G4SimpleHeum.hh index e3d7c7ac10..f1508238ac 100644 --- a/source/geometry/magneticfield/include/G4SimpleHeum.hh +++ b/source/geometry/magneticfield/include/G4SimpleHeum.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SimpleHeum.hh,v 1.4.4.1 2001/06/28 19:08:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SimpleHeum.hh,v 1.5 2001/07/11 09:59:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4SimpleHeum diff --git a/source/geometry/magneticfield/include/G4SimpleRunge.hh b/source/geometry/magneticfield/include/G4SimpleRunge.hh index c7386eaf11..55bac766aa 100644 --- a/source/geometry/magneticfield/include/G4SimpleRunge.hh +++ b/source/geometry/magneticfield/include/G4SimpleRunge.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SimpleRunge.hh,v 1.4.4.1 2001/06/28 19:08:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SimpleRunge.hh,v 1.5 2001/07/11 09:59:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4SimpleRunge diff --git a/source/geometry/magneticfield/include/G4UniformElectricField.hh b/source/geometry/magneticfield/include/G4UniformElectricField.hh index 0dfee7afc4..102843a011 100644 --- a/source/geometry/magneticfield/include/G4UniformElectricField.hh +++ b/source/geometry/magneticfield/include/G4UniformElectricField.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UniformElectricField.hh,v 1.4.4.1 2001/06/28 19:08:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UniformElectricField.hh,v 1.6 2001/12/04 17:35:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4UniformElectricField @@ -56,14 +56,13 @@ class G4UniformElectricField : public G4ElectroMagneticField G4double vTheta, G4double vPhi ) ; - ~G4UniformElectricField() ; + virtual ~G4UniformElectricField() ; G4UniformElectricField(const G4UniformElectricField &p); G4UniformElectricField& operator = (const G4UniformElectricField &p); // Copy constructor and assignment operator - void GetFieldValue(const G4double position[] , - G4double B[] ) const ; + virtual void GetFieldValue(const G4double pos[4], G4double *field) const; private: diff --git a/source/geometry/magneticfield/include/G4UniformMagField.hh b/source/geometry/magneticfield/include/G4UniformMagField.hh index 29c3ad8e00..d47b84fdba 100644 --- a/source/geometry/magneticfield/include/G4UniformMagField.hh +++ b/source/geometry/magneticfield/include/G4UniformMagField.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UniformMagField.hh,v 1.4.4.1 2001/06/28 19:08:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UniformMagField.hh,v 1.7 2001/12/04 17:35:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4UniformMagField @@ -56,14 +56,14 @@ class G4UniformMagField : public G4MagneticField G4double vTheta, G4double vPhi ) ; - ~G4UniformMagField() ; + virtual ~G4UniformMagField() ; G4UniformMagField(const G4UniformMagField &p); G4UniformMagField& operator = (const G4UniformMagField &p); // Copy constructor and assignment operator. - void GetFieldValue(const G4double yTrack[3] , - G4double *MagField) const ; + virtual void GetFieldValue(const G4double yTrack[4], + G4double *MagField) const ; void SetFieldValue(const G4ThreeVector& newFieldValue); @@ -76,3 +76,5 @@ class G4UniformMagField : public G4MagneticField }; #endif + + diff --git a/source/geometry/magneticfield/src/G4CashKarpRKF45.cc b/source/geometry/magneticfield/src/G4CashKarpRKF45.cc index 2e2e72e128..924e4115ba 100644 --- a/source/geometry/magneticfield/src/G4CashKarpRKF45.cc +++ b/source/geometry/magneticfield/src/G4CashKarpRKF45.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CashKarpRKF45.cc,v 1.8.2.1 2001/06/28 19:08:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CashKarpRKF45.cc,v 1.10 2001/11/21 17:56:18 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // The Cash-Karp Runge-Kutta-Fehlberg 4/5 method is an embedded fourth // order method (giving fifth-order accuracy) for the solution @@ -51,6 +51,7 @@ G4CashKarpRKF45::G4CashKarpRKF45(G4EquationOfMotion *EqRhs, G4int numberOfVariab ak4 = new G4double[fNumberOfVariables] ; ak5 = new G4double[fNumberOfVariables] ; ak6 = new G4double[fNumberOfVariables] ; + ak7 = 0; yTemp = new G4double[fNumberOfVariables] ; yIn = new G4double[fNumberOfVariables] ; @@ -77,7 +78,7 @@ G4CashKarpRKF45::~G4CashKarpRKF45() delete[] ak4; delete[] ak5; delete[] ak6; - delete[] ak7; + // delete[] ak7; delete[] yTemp; delete[] yIn; diff --git a/source/geometry/magneticfield/src/G4ChordFinder.cc b/source/geometry/magneticfield/src/G4ChordFinder.cc index 682b92ead2..4af570a1c5 100644 --- a/source/geometry/magneticfield/src/G4ChordFinder.cc +++ b/source/geometry/magneticfield/src/G4ChordFinder.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ChordFinder.cc,v 1.18.2.1 2001/06/28 19:08:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ChordFinder.cc,v 1.24 2001/11/30 17:36:18 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // 25.02.97 John Apostolakis, design and implimentation @@ -94,9 +94,9 @@ G4ChordFinder::AdvanceChordLimited( G4FieldTrack& yCurrent, G4double dyErr; G4FieldTrack yEnd( yCurrent); G4double startCurveLen= yCurrent.GetCurveLength(); - G4bool dbg= false; -#ifdef G4VERBOSE +#ifdef G4DEBUG_FIELD + static G4bool dbg= false; if( dbg ) G4cerr << "Entered AdvanceChordLimited with:\n yCurrent: " << yCurrent << " and initial Step=stepMax=" << stepMax << " mm. " << G4endl; @@ -114,7 +114,7 @@ G4ChordFinder::AdvanceChordLimited( G4FieldTrack& yCurrent, { // Advance more accurately to "end of chord" good_advance = fIntgrDriver->AccurateAdvance(yCurrent, stepPossible, epsStep); - #ifdef G4VERBOSE + #ifdef G4DEBUG_FIELD if (dbg) G4cerr << "Accurate advance to end of chord attemped" << "with result " << good_advance << G4endl ; #endif @@ -124,7 +124,7 @@ G4ChordFinder::AdvanceChordLimited( G4FieldTrack& yCurrent, } } -#ifdef G4VERBOSE +#ifdef G4DEBUG_FIELD if( dbg ) G4cerr << "Exiting FindNextChord Limited with:\n yCurrent: " << yCurrent<< G4endl; #endif @@ -212,7 +212,7 @@ G4ChordFinder::FindNextChord( const G4FieldTrack yStart, G4cout << " d-"; G4cout.precision(5); G4cout << " new_step= " << G4std::setw(10) << fLastStepEstimate_Unconstrained - << " new_step_constr= " << G4std::setw(10) << stepTrial << endl; + << " new_step_constr= " << G4std::setw(10) << stepTrial << G4endl; #endif noTrials++; } @@ -220,8 +220,9 @@ G4ChordFinder::FindNextChord( const G4FieldTrack yStart, stepOfLastGoodChord = stepTrial; #ifdef TEST_CHORD_PRINT - G4cout << "ChordF/FindNextChord: NoTrials= " << noTrials - << " StepForGoodChord=" << G4std::setw(10) << stepTrial << endl; + if( dbg ) + G4cout << "ChordF/FindNextChord: NoTrials= " << noTrials + << " StepForGoodChord=" << G4std::setw(10) << stepTrial << G4endl; #endif yEnd= yCurrent; @@ -230,12 +231,11 @@ G4ChordFinder::FindNextChord( const G4FieldTrack yStart, // ---------------------------------------------------------------------------- #if 0 - // First debug print // older OPTIONAL code // #ifdef G4VERBOSE - if( dbg ) { - G4cerr << "Returned from QuickAdvance with: yCur=" << yCurrent < Unphysical curve length."); } +#endif // Take default corrective action: // --> adjust the maximum curve length. // NOTE: this case only happens for relatively straight paths. @@ -348,18 +346,22 @@ G4FieldTrack G4ChordFinder::ApproxCurvePointV( if ( ABdist > 0.0 ){ AE_fraction = ChordAE_Vector.mag() / ABdist; }else{ - G4cerr << " Error in G4ChordFinder::ApproxCurvePoint: A and B are the same point\n" << - " Chord AB length = " << ChordAE_Vector.mag() << G4endl << G4endl; AE_fraction = 0.5; // Guess .. ?; +#ifdef G4DEBUG_FIELD + G4cout << "Warning in G4ChordFinder::ApproxCurvePoint: A and B are the same point\n" << + " Chord AB length = " << ChordAE_Vector.mag() << G4endl << G4endl; +#endif } if( (AE_fraction> 1.0 + perMillion) || (AE_fraction< 0.) ){ +#ifdef G4DEBUG_FIELD G4cerr << " G4ChordFinder::ApproxCurvePointV: Warning: Anomalous condition:AE > AB or AE/AB <= 0 " << G4endl << " AE_fraction = " << AE_fraction << G4endl << " Chord AE length = " << ChordAE_Vector.mag() << G4endl << " Chord AB length = " << ABdist << G4endl << G4endl; G4cerr << " OK if this condition occurs after a recalculation of 'B'" << G4endl << " Otherwise it is an error. " << G4endl ; +#endif // This course can now result if B has been re-evaluated, // without E being recomputed (1 July 99) // In this case this is not a "real error" - but it undesired diff --git a/source/geometry/magneticfield/src/G4ClassicalRK4.cc b/source/geometry/magneticfield/src/G4ClassicalRK4.cc index 4c97cac7bb..1595ec3bab 100644 --- a/source/geometry/magneticfield/src/G4ClassicalRK4.cc +++ b/source/geometry/magneticfield/src/G4ClassicalRK4.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ClassicalRK4.cc,v 1.3.4.1 2001/06/28 19:08:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ClassicalRK4.cc,v 1.4 2001/07/11 09:59:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4ClassicalRK4.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4DELPHIMagField.cc b/source/geometry/magneticfield/src/G4DELPHIMagField.cc new file mode 100644 index 0000000000..0cecb26d5f --- /dev/null +++ b/source/geometry/magneticfield/src/G4DELPHIMagField.cc @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#include "G4DELPHIMagField.hh" +#include "globals.hh" +#include "geomdefs.hh" + + + +G4DELPHIMagField::G4DELPHIMagField() +{ + ; +} + +//////////////////////////////////////////////////////////////////////// + +G4DELPHIMagField::~G4DELPHIMagField() +{ + ; +} + +/////////////////////////////////////////////////////////////////////// + + +void + G4DELPHIMagField::GetFieldValue( const G4double yTrack[7], + G4double B[3] ) const +{ + G4int i, n = 8 ; + G4double a = 0.001 ; // mm -> m + G4double x = a*yTrack[0], y = a*yTrack[1], z = a*yTrack[2] ; + G4double x2 = x*x, y2 = y*y, z2 = z*z, r2 = x2 + y2 ; + G4double r4 = r2*r2, z4 = z2*z2, r6 = r4*r2, z6 = z4*z2 ; + G4double r8 = r4*r4, z8 = z4*z4, r10 = r8*r2, z10 = z8*z2 ; + G4double rz = z*sqrt(r2), r = sqrt(r2+a*a) ; + G4double Br ; + G4double P[8], Q[8] ; + static G4double c[8] = { + -9.26e-5, -3.51e-5, 2.94e-6, -1.10e-6, + 6.25e-8, -1.77e-8, -6.88e-10, -7.52e-11 + } ; + P[0] = 2*rz ; + P[1] = 4*rz*(r2 - 4.0*z2/3.0) ; + P[2] = 6*rz*(r4 - 4*r2*z2 + 1.6*z4) ; + P[3] = 8*rz*(r6 - 8*r4*z2 + 9.6*r2*z4 - 64.0*z6/35.0) ; + P[4] = 10*rz*(r8 - 40.0*r6*z2/3.0 + 32*r4*z4 - 128.0*r2*z6/7.0 + 128.0*z8/63.0); + P[5] = 0 ; + P[6] = 0 ; + P[7] = 0 ; + + Q[0] = r2 - 2*z2 ; + Q[1] = r4 - 8*r2*z2 + 8.0*z4/3.0 ; + Q[2] = r6 - 18*r4*z2 + 24*r2*z4 - 3.2*z6 ; + Q[3] = r8 - 32*r6*z2 + 96*r4*z4 - 51.2*r2*z6 +128.0*z8/35.0 ; + Q[4] = r10 - 50*r8*z2 + 800.0*r6*z4/3.0 - 320*r4*z6 + + 640.0*r2*z8/7.0 - 256.0*z10/63.0 ; + Q[5] = 0 ; + Q[6] = 0 ; + Q[7] = 0 ; + + Br = 0 ; + B[2] = 1.2*tesla ; // the principal Bz value of DELPHI detector + for(i=0;i m + G4double x = a*yTrack[0], y = a*yTrack[1], z = a*yTrack[2] ; + G4double x2 = x*x, y2 = y*y, z2 = z*z ; + G4double x3 = x2*x, y3 = y2*y, z3 = z2*z ; + G4double xy = x*y, xz = x*z, yz = y*z, xyz = x*y*z ; + static G4double + c[24] = { + 0.010, 0.010, 0.010, // 3(0) + 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, // 5(1) + 0.00001, 0.00001, 0.00001, 0.00001, 0.00001, 0.00001, 0.00001, // 7(2) + 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, 0.000001, + 0.0000001, 0.0000001, 0.0000001 // 9(3) + } ; // total : 24 + + // for(i=0;i<24;i++) + // { + // c[i] = 1.0*c[i] ; + // } + B[0] = c[1] + -2*c[3]*x + c[4]*z +c[6]*y -2*c[7]*x + -6*c[8]*xz + c[9]*(z2-x2) -2*c[10]*xy + c[11]*yz - 2*c[12]*xz + +c[13]*(y2-x2) - 6*c[14]*xy + -4*c[15]*(3*x*z2-x3) +c[16]*(z3-3*x2*z) - 6*c[17]*xyz +c[18]*y*(z2-x2) + -2*c[19]*(x*z2+x*y2-2*x3/3) + c[20]*z*(y2-x2) - 6*c[21]*xyz + +c[22]*(y3-3*x2*y) - 4*c[23]*(3*x*y2-x3) ; + + B[1] = c[2] + +c[5]*z + c[6]*x + 2*c[7]*y + +c[10]*(z2-x2) + c[11]*xz +2*c[12]*yz +2*c[13]*xy + 3*c[14]*(y2-x2) + +c[17]*(z3-3*x2*z) + c[18]*(x*z2-x3/3) +2*c[19]*y*(z2-x2) + +2*c[20]*xyz + +3*c[21]*z*(y2-x2) + c[22]*(3*x*y2-x3) + 4*c[23]*(y3-3*x2*y) ; + + B[2] = c[0] + +c[3]*z + c[4]*x + c[5]*y + +3*c[8]*(z2-x2) + 2*c[9]*xz + 2*c[10]*yz + c[11]*xy + c[12]*(y2-x2) + +4*c[15]*(z3-3*x2*z) + c[16]*(3*x*z2-x3) + 3*c[17]*(y*z2-x2*y) + +2*c[18]*xyz + +2*c[19]*z*(y2-x2) + c[20]*(x*y2-x3/3) + c[21]*(y3-3*x2*y) ; + for(i=0;i<3;i++) + { + B[i] = 0.1*B[i] ; + } + + return ; +} + +// ----------------------------------------------------------------- + diff --git a/source/geometry/magneticfield/src/G4HelixExplicitEuler.cc b/source/geometry/magneticfield/src/G4HelixExplicitEuler.cc index cb22e69aa1..001d5ac6c9 100644 --- a/source/geometry/magneticfield/src/G4HelixExplicitEuler.cc +++ b/source/geometry/magneticfield/src/G4HelixExplicitEuler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HelixExplicitEuler.cc,v 1.3.4.1 2001/06/28 19:08:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HelixExplicitEuler.cc,v 1.4 2001/07/11 09:59:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4HelixExplicitEuler.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4HelixHeum.cc b/source/geometry/magneticfield/src/G4HelixHeum.cc index ac543c8ce9..840af0fe1f 100644 --- a/source/geometry/magneticfield/src/G4HelixHeum.cc +++ b/source/geometry/magneticfield/src/G4HelixHeum.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HelixHeum.cc,v 1.3.4.1 2001/06/28 19:08:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HelixHeum.cc,v 1.4 2001/07/11 09:59:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4HelixHeum.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4HelixImplicitEuler.cc b/source/geometry/magneticfield/src/G4HelixImplicitEuler.cc index fedb2ac5f0..5c28e4943c 100644 --- a/source/geometry/magneticfield/src/G4HelixImplicitEuler.cc +++ b/source/geometry/magneticfield/src/G4HelixImplicitEuler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HelixImplicitEuler.cc,v 1.3.4.1 2001/06/28 19:08:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HelixImplicitEuler.cc,v 1.4 2001/07/11 09:59:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4HelixImplicitEuler.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4HelixSimpleRunge.cc b/source/geometry/magneticfield/src/G4HelixSimpleRunge.cc index dd16421ca0..5f58e8f3cb 100644 --- a/source/geometry/magneticfield/src/G4HelixSimpleRunge.cc +++ b/source/geometry/magneticfield/src/G4HelixSimpleRunge.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HelixSimpleRunge.cc,v 1.4.4.1 2001/06/28 19:08:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HelixSimpleRunge.cc,v 1.5 2001/07/11 09:59:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4HelixSimpleRunge.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4ImplicitEuler.cc b/source/geometry/magneticfield/src/G4ImplicitEuler.cc index a8a9a41f6a..b0757115f4 100644 --- a/source/geometry/magneticfield/src/G4ImplicitEuler.cc +++ b/source/geometry/magneticfield/src/G4ImplicitEuler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ImplicitEuler.cc,v 1.3.4.1 2001/06/28 19:08:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ImplicitEuler.cc,v 1.4 2001/07/11 09:59:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Implicit Euler: diff --git a/source/analysis/jas/include/JasHistogramFactory.h b/source/geometry/magneticfield/src/G4LineCurrentMagField.cc similarity index 63% rename from source/analysis/jas/include/JasHistogramFactory.h rename to source/geometry/magneticfield/src/G4LineCurrentMagField.cc index d8ae357a84..9a20ba65f6 100644 --- a/source/analysis/jas/include/JasHistogramFactory.h +++ b/source/geometry/magneticfield/src/G4LineCurrentMagField.cc @@ -20,40 +20,41 @@ // * statement, and all its terms. * // ******************************************************************** // -// JHistogramFactory.h: interface for the JHistogramFactory class. -////////////////////////////////////////////////////////////////////// -#ifndef JASHISTOGRAMFACTORY -#define JASHISTOGRAMFACTORY +#include "G4LineCurrentMagField.hh" +#include "globals.hh" +#include "geomdefs.hh" -#if defined(G4ANALYSIS_BUILD_JAS) -#include -#include - -class JasHistogramFactory -: public IHistogramFactory +G4LineCurrentMagField::G4LineCurrentMagField(G4double pFieldConstant) { - public: // IMethods : - virtual IHistogram1D* create1D(const std_string&, - int=0,double=0,double=0, - int=0); - virtual IHistogram2D* create2D(const std_string&, - int=0,double=0,double=0, - int=0,double=0,double=0, - int=0); - virtual void destroy(IHistogram*); - public: - JasHistogramFactory(); - virtual ~JasHistogramFactory(); - JNIEnv* getEnv(); - void error(const char* message); - private: - jobject fJob; - void createJVM(); - void destroyJVM(); -}; + fFieldConstant = pFieldConstant ; +} +//////////////////////////////////////////////////////////////////////// -#endif +G4LineCurrentMagField::~G4LineCurrentMagField() +{ + ; +} + +/////////////////////////////////////////////////////////////////////////// + + +void + G4LineCurrentMagField::GetFieldValue( const G4double yTrack[7], + G4double B[3] ) const +{ + // G4double fFieldConstant = 100 ; + G4double a = 1.00*mm ; // mm -> m + G4double x = a*yTrack[0], y = a*yTrack[1] ; + G4double x2 = x*x, y2 = y*y, r2 = x2 + y2 ; + G4double r = sqrt(r2+a*a) ; + G4double Br = fFieldConstant/r; + B[0] = -Br*y/r ; + B[1] = Br*x/r ; + B[2] = 0 ; + return ; +} + +// ----------------------------------------------------------------- -#endif diff --git a/source/geometry/magneticfield/src/G4LineSection.cc b/source/geometry/magneticfield/src/G4LineSection.cc index a91e1eff81..cf55198803 100644 --- a/source/geometry/magneticfield/src/G4LineSection.cc +++ b/source/geometry/magneticfield/src/G4LineSection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LineSection.cc,v 1.4.4.1 2001/06/28 19:08:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LineSection.cc,v 1.6 2001/12/04 15:10:01 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // typedef double G4double; @@ -33,6 +33,8 @@ G4LineSection::G4LineSection( const G4ThreeVector& PntA, : EndpointA(PntA), VecAtoB(PntB-PntA) { + fABdistanceSq = VecAtoB.mag2() ; + /* G4double distABsquared = VecAtoB.mag2() ; if ( distABsquared == 0.0) { @@ -42,6 +44,7 @@ G4LineSection::G4LineSection( const G4ThreeVector& PntA, { inverse_square_distAB=1.0 / distABsquared ; } + */ } G4double G4LineSection::Dist( G4ThreeVector OtherPnt ) const @@ -57,31 +60,36 @@ G4double G4LineSection::Dist( G4ThreeVector OtherPnt ) const // Determine Projection(AZ on AB) / Length(AB) // - unit_projection= inner_prod * InvsqDistAB(); - - if( (0. <= unit_projection ) && (unit_projection <= 1.0 ) ) + if( fABdistanceSq != 0.0 ) { - dist_sq= sq_VecAZ - unit_projection * inner_prod ; - } - else - { + // unit_projection= inner_prod * InvsqDistAB(); + unit_projection = inner_prod/fABdistanceSq; + + if( (0. <= unit_projection ) && (unit_projection <= 1.0 ) ) + { + dist_sq= sq_VecAZ - unit_projection * inner_prod ; + } + else + { // The perpendicular from the point to the line AB meets the line // in a point outside the line segment! - if( unit_projection < 0. ) - { - // A is the closest point + if( unit_projection < 0. ) // A is the closest point + { dist_sq= sq_VecAZ; - } - else - { - // B is the closest point - + } + else // B is the closest point + { G4ThreeVector EndpointB = EndpointA + VecAtoB; G4ThreeVector VecBZ = OtherPnt - EndpointB; dist_sq = VecBZ.mag2(); - } + } + } } + else + { + dist_sq = (OtherPnt - EndpointA).mag2() ; + } if( dist_sq < 0.0 ) dist_sq = 0.0 ; return sqrt(dist_sq) ; diff --git a/source/geometry/magneticfield/src/G4MagErrorStepper.cc b/source/geometry/magneticfield/src/G4MagErrorStepper.cc index c9af5bf52e..839d74327a 100644 --- a/source/geometry/magneticfield/src/G4MagErrorStepper.cc +++ b/source/geometry/magneticfield/src/G4MagErrorStepper.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagErrorStepper.cc,v 1.8.4.1 2001/06/28 19:08:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagErrorStepper.cc,v 1.9 2001/07/11 09:59:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4MagErrorStepper.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4MagHelicalStepper.cc b/source/geometry/magneticfield/src/G4MagHelicalStepper.cc index cafdcee12c..cdbf9a01a9 100644 --- a/source/geometry/magneticfield/src/G4MagHelicalStepper.cc +++ b/source/geometry/magneticfield/src/G4MagHelicalStepper.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagHelicalStepper.cc,v 1.7.2.1 2001/06/28 19:08:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagHelicalStepper.cc,v 1.8 2001/07/11 09:59:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4MagHelicalStepper.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc b/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc index ef67f215c3..6ad1a29620 100644 --- a/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc +++ b/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagIntegratorDriver.cc,v 1.14.4.1 2001/06/28 19:08:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagIntegratorDriver.cc,v 1.20 2001/11/21 16:43:16 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // @@ -49,14 +49,15 @@ const G4double G4MagInt_Driver::max_stepping_decrease = 0.1; // The (default) maximum number of steps is Base divided by the order of Stepper // -const G4int G4MagInt_Driver::fMaxStepBase = 5000; +const G4int G4MagInt_Driver::fMaxStepBase = 500; // Was 5000 // Constructor // G4MagInt_Driver::G4MagInt_Driver( G4double hminimum, G4MagIntegratorStepper *pItsStepper, G4int numComponents) - : nvar(numComponents) + : nvar(numComponents), + fVerboseLevel(0) { RenewStepperAndAdjust( pItsStepper ); hminimum_val= hminimum; @@ -69,6 +70,9 @@ G4MagInt_Driver::~G4MagInt_Driver() { } +// To add much printing for debugging purposes, uncomment this: +// #define G4DEBUG_FIELD 1 + G4bool G4MagInt_Driver::AccurateAdvance(G4FieldTrack& y_current, G4double hstep, @@ -84,18 +88,23 @@ G4MagInt_Driver::AccurateAdvance(G4FieldTrack& y_current, { G4int nstp, i; - static G4int dbg=0; G4double x, hnext, hdid, h ; -#ifdef G4DEBUG + + G4int no_warnings=0; +#ifdef G4DEBUG_FIELD + static G4int dbg=0; dbg=1; + fVerboseLevel=2; #endif // G4double yscal[ncompSVEC]; G4double y[G4FieldTrack::ncompSVEC], dydx[G4FieldTrack::ncompSVEC]; - G4double ystart[G4FieldTrack::ncompSVEC]; + G4double ystart[G4FieldTrack::ncompSVEC], yEnd[G4FieldTrack::ncompSVEC]; G4double x1, x2; G4bool succeeded = true, lastStepSucceeded; + G4FieldTrack yStartFT(y_current); + // Assume that hstep > 0 // ystart = y_current.PosVelVec(); @@ -132,68 +141,133 @@ G4MagInt_Driver::AccurateAdvance(G4FieldTrack& y_current, // could otherwise force lots of small last steps. } +// static G4int nStpPr=50; // For debug printing of integrations with many steps + // Perform the Integration - // - OneGoodStep(y,dydx,x,h,eps,hdid,hnext) ; - //-------------------------------------- + // - lastStepSucceeded= (hdid == h); - -// #ifdef G4DEBUG + if( h > Hmin() ){ + OneGoodStep(y,dydx,x,h,eps,hdid,hnext) ; + //-------------------------------------- + lastStepSucceeded= (hdid == h); + }else{ +#if 0 + OneGoodStep(y,dydx,x,h,2*eps,hdid,hnext) ; + //-------------------------------------- + lastStepSucceeded= (hdid == h); +#else + G4FieldTrack yFldTrk( G4ThreeVector(0,0,0), + G4ThreeVector(0,0,0), 0., 0., 0., 0. ); + G4double dchord_step, dyerr, dyerr_len; // Must figure what to do with these + yFldTrk.LoadFromArray(y); + yFldTrk.SetCurveLength( x ); +// G4double s_start = yFldTrk.GetCurveLength(); + QuickAdvance( yFldTrk, dydx, h, dchord_step, dyerr_len ); +# ifdef G4DEBUG_FIELD + if(dbg>1) OneGoodStep(y,dydx,x,h,2*eps,hdid,hnext) ; + if(dbg>1) PrintStatus( ystart, x1, y, x, h, -nstp); + yFldTrk.DumpToArray(y); + if(dbg>1) PrintStatus( ystart, x1, y, x, h, nstp); // Only this +# endif + dyerr = dyerr_len / hstep; + hdid= h; + x += hdid; + // Compute suggested new step + hnext= ComputeNewStepSize( dyerr/eps, h); + lastStepSucceeded= (dyerr<= eps); +#endif + } +// #ifdef G4DEBUG_FIELD if(lastStepSucceeded) noFullIntegr++ ; else noSmallIntegr++ ; G4ThreeVector EndPos( y[0], y[1], y[2] ); +#ifdef G4DEBUG_FIELD + if(nstp>nStpPr) { + G4cout << "hdid=" << hdid << "hnext =" << hnext << " " << endl; + PrintStatus( ystart, x1, y, x, h, nstp==nStpPr ? -nstp: nstp); + } +#endif + // Check the endpoint G4double endPointDist= (EndPos-StartPos).mag(); - if( endPointDist >= h*(1.+perMillion) ){ + if( endPointDist >= hdid*(1.+perMillion) ){ + noBadSteps ++; // Issue a warning only for gross differences - // we understand how small difference occur. - if( endPointDist >= h*(1.+perThousand) ){ - WarnEndPointTooFar ( endPointDist, h, eps, dbg ); + if( endPointDist >= hdid*(1.+perThousand) ){ +#ifdef G4DEBUG_FIELD + WarnEndPointTooFar ( endPointDist, hdid, eps, dbg ); + G4cerr << " Total steps: bad" << noBadSteps << " good " << noGoodSteps << endl; + // G4cerr << "Mid:EndPtFar> "; + PrintStatus( ystart, x1, y, x, hstep, no_warnings?nstp:-nstp); + // Potentially add as arguments: - as Initial Force +#endif + no_warnings++; } - noBadSteps ++; } else { // ie (!dbg) noGoodSteps ++; } - // #endif // Check the proposed next stepsize if(fabs(hnext) <= Hmin()) { +#ifdef G4DEBUG_FIELD // If simply a very small interval is being integrated, do not warn if( (x < x2 * (1-eps) ) && // The last step can be small: it's OK (fabs(hstep) > Hmin()) // and if we are asked, it's OK // && (hnext < hstep * PerThousand ) - ) - // Issue WARNING - WarnSmallStepSize( hnext, hstep, h, x-x1, nstp ); - else - succeeded = false; // Meaningful only if we break out of the loop. + ){ + // Issue WARNING + WarnSmallStepSize( hnext, hstep, h, x-x1, nstp ); + // G4cerr << "Mid:SmallStep> "; + PrintStatus( ystart, x1, y, x, hstep, no_warnings?nstp:-nstp); + no_warnings++; + } +#endif + // else + // succeeded = false; // Meaningful only if we break out of the loop. + // + // lastStep = true; // Make this the last step ... Dubious now - lastStep = true; // ensure that this was the last step + // Make sure that the next step is at least Hmin. + h = Hmin(); + }else{ + h = hnext ; } - h = hnext ; - }while (((nstp++)<=fMaxNoSteps) && - (x < x2) // Have we reached the end ? - // --> a better test might be x-x2 > an_epsilon + }while ( ((nstp++)<=fMaxNoSteps) + && (x < x2) // Have we reached the end ? + // --> a better test might be x-x2 > an_epsilon && (!lastStep) ); succeeded= (x>=x2); // If it was a "forced" last step - for(i=0;i fMaxNoSteps){ - WarnTooManyStep( x1, x2, x ); // Issue WARNING - succeeded = false; - } + for(i=0;i fMaxNoSteps){ + no_warnings++; + succeeded = false; +#ifdef G4DEBUG_FIELD + WarnTooManyStep( x1, x2, x ); // Issue WARNING + PrintStatus( yEnd, x1, y, x, hstep, -nstp); +#endif + } + +#ifdef G4DEBUG_FIELD + if( no_warnings ){ + G4cerr << " Exiting status: " + << " no-steps " << nstp + < 10 ){ + G4cerr<< " Warning (G4MagIntegratorDriver::AccurateAdvance): The stepsize for the " + << " next iteration=" << hnext << " is too small " + << "- in Step number " << nstp << "." << G4endl; G4cerr << " The minimum for the driver is " << Hmin() << G4endl ; + G4cerr << " Requested integr. length was " << hstep << " ." << G4endl ; + G4cerr << " The size of this sub-step was " << h << " ." << G4endl ; G4cerr << " The integrations has already gone " << xDone << G4endl ; + }else{ + G4cerr<< " G4MagInt_Driver: Too small 'next' step " << hnext + << " step-no " << nstp ; // << G4setw(4) + G4cerr << " this sub-step " << h + << " req_tot_len " << hstep + << " done " << xDone + << " min " << Hmin() + << G4endl ; } noWarningsIssued++; } @@ -236,20 +318,22 @@ G4MagInt_Driver::WarnEndPointTooFar (G4double endPointDist, G4double eps, G4int dbg) { - static G4double maxRelError= 0.0; + static G4double maxRelError= 0.0, maxRelError_last_printed=0.0; G4bool isNewMax, prNewMax; isNewMax = endPointDist > (1.0 + maxRelError) * h; prNewMax = endPointDist > (1.0 + 1.05 * maxRelError) * h; if( isNewMax ) maxRelError= endPointDist / h - 1.0; + if( prNewMax ) + maxRelError_last_printed = maxRelError; if( dbg && (h > kCarTolerance) - && ( prNewMax || (endPointDist >= h*(1.+eps) ) ) + && ( (dbg>1) || prNewMax || (endPointDist >= h*(1.+eps) ) ) ){ static G4int noWarnings = 0; - if( (noWarnings ++ < 10) || (dbg>1) ){ + if( (noWarnings ++ < 10) || (dbg>2) ){ G4cerr << " Warning (G4MagIntegratorDriver): " << " The integration produced an endpoint which " << G4endl << " is further from the startpoint than the curve length." << G4endl; @@ -258,26 +342,29 @@ G4MagInt_Driver::WarnEndPointTooFar (G4double endPointDist, << " curve length = " << h << " Difference (curveLen-endpDist)= " << (h - endPointDist) << " relative = " << (h-endPointDist) / h + << " epsilon = " << eps << G4endl; }else{ - G4cerr << " EndpointDist = " << endPointDist - << " curve length = " << h - << " Diff (cl-ed)= " << (h - endPointDist) + G4cerr << " Warning:" + << " dist_e= " << endPointDist + << " h_step = " << h + << " Diff (hs-ed)= " << (h - endPointDist) << " rel = " << (h-endPointDist) / h - << " (from G4MagIntegratorDriver)" << G4endl; + << " eps = " << eps + << " (from G4MagInt_Driver)" << G4endl; } } } // --------------------------------------------------------- void -G4MagInt_Driver::OneGoodStep( G4double y[], +G4MagInt_Driver::OneGoodStep( G4double y[], // InOut const G4double dydx[], - G4double& x, + G4double& x, // InOut G4double htry, G4double eps_rel_max, - G4double& hdid, - G4double& hnext ) + G4double& hdid, // Out + G4double& hnext ) // Out // Driver for one Runge-Kutta Step with monitoring of local truncation error // to ensure accuracy and adjust stepsize. Input are dependent variable @@ -411,6 +498,22 @@ G4bool G4MagInt_Driver::QuickAdvance( return true; } +#ifdef QUICK_ADV_TWO +G4bool G4MagInt_Driver::QuickAdvance( + G4double yarrin[], // IN + const G4double dydx[], + G4double hstep, // In + G4double yarrout[], + G4double& dchord_step, + G4double& dyerr ) // in length +{ + G4Exception("Not implemented in current version"); + + dyerr = dchord_step = hstep * yarrin[0] * dydx[0]; + yarrout[0]= yarrin[0]; +} +#endif + // -------------------------------------------------------------------------- // This method computes new step sizes - but does not limit changes to // within certain factors @@ -436,12 +539,11 @@ G4MagInt_Driver::ComputeNewStepSize( return hnew; } -// -------------------------------------------------------------------------- -// This method computes new step sizes - but does not limit changes to -// within certain factors +// ----------------------------------------------------------------------------- +// This method computes new step sizes limiting changes within certain factors // -// It shares its logic with AccurateAdvance, so they should eventually -// be merged ?? +// It shares its logic with AccurateAdvance. +// They are kept separate currently for optimisation. G4double G4MagInt_Driver::ComputeNewStepSize_WithinLimits( @@ -469,3 +571,126 @@ G4MagInt_Driver::ComputeNewStepSize_WithinLimits( return hnew; } + + + +void G4MagInt_Driver::PrintStatus( const G4double* StartArr, + G4double xstart, + const G4double* CurrentArr, + G4double xcurrent, + G4double requestStep, + G4int subStepNo) + // Potentially add as arguments: + // - as Initial Force + // stepTaken(hdid) - last step taken + // nextStep (hnext) - proposal for size +{ + G4FieldTrack StartFT(G4ThreeVector(0,0,0), G4ThreeVector(0,0,0), 0., 0., 0., 0. ); + G4FieldTrack CurrentFT (StartFT); + + StartFT.LoadFromArray( StartArr); + StartFT.SetCurveLength( xstart); + CurrentFT.LoadFromArray( CurrentArr); + CurrentFT.SetCurveLength( xcurrent ); + + PrintStatus(StartFT, CurrentFT, requestStep, subStepNo ); +} + +#include "g4std/iomanip" + +void G4MagInt_Driver::PrintStatus( + const G4FieldTrack& StartFT, + const G4FieldTrack& CurrentFT, + G4double requestStep, + // G4double safety, + G4int subStepNo) +{ + G4int verboseLevel= fVerboseLevel; + static G4int noPrecision= 5; + G4int oldPrec= G4cout.precision(noPrecision); + // G4cout.setf(ios_base::fixed,ios_base::floatfield); + + const G4ThreeVector StartPosition= StartFT.GetPosition(); + const G4ThreeVector StartUnitVelocity= StartFT.GetMomentumDir(); + const G4ThreeVector CurrentPosition= CurrentFT.GetPosition(); + const G4ThreeVector CurrentUnitVelocity= CurrentFT.GetMomentumDir(); + + G4double step_len= CurrentFT.GetCurveLength() + - StartFT.GetCurveLength(); + + if( (subStepNo <= 0) && (verboseLevel <= 3) ) + { + subStepNo = - subStepNo; // To allow printing banner + + G4cout << G4std::setw( 6) << " " + << G4std::setw( 25) << " G4MagInt_Driver: Current Position and Direction" << " " + << G4endl; + G4cout << G4std::setw( 5) << "Step#" << " " + << G4std::setw( 7) << "s-curve" << " " + << G4std::setw( 9) << "X(mm)" << " " + << G4std::setw( 9) << "Y(mm)" << " " + << G4std::setw( 9) << "Z(mm)" << " " + << G4std::setw( 7) << " N_x " << " " + << G4std::setw( 7) << " N_y " << " " + << G4std::setw( 7) << " N_z " << " " + << G4std::setw( 7) << "KinEner " << " " + << G4std::setw( 9) << "StepLen" << " " // Add the Sub-step ?? + << G4std::setw( 9) << "ReqStep" << " " + << G4endl; + + PrintStat_Aux( StartFT, requestStep, 0., 0); + //************* + } + + if( verboseLevel <= 3 ) + { + G4cout.precision(noPrecision); + PrintStat_Aux( CurrentFT, requestStep, step_len, subStepNo); + //************* + } + + else // if( verboseLevel > 3 ) + { + // Multi-line output + + // G4cout << "Current Position is " << CurrentPosition << G4endl + // << " and UnitVelocity is " << CurrentUnitVelocity << G4endl; + // G4cout << "Step taken was " << step_len + // << " out of PhysicalStep= " << requestStep << G4endl; + // G4cout << "Final safety is: " << safety << G4endl; + + // G4cout << "Chord length = " << (CurrentPosition-StartPosition).mag() << G4endl; + // G4cout << G4endl; + } + G4cout.precision(oldPrec); +} + +void G4MagInt_Driver::PrintStat_Aux( + const G4FieldTrack& aFieldTrack, + G4double requestStep, + G4double step_len, + G4int subStepNo) +{ + const G4ThreeVector Position= aFieldTrack.GetPosition(); + const G4ThreeVector UnitVelocity= aFieldTrack.GetMomentumDir(); + + if( subStepNo >= 0) + G4cout << G4std::setw( 5) << subStepNo << " "; + else + G4cout << G4std::setw( 5) << "Start" << " "; + G4cout << G4std::setw( 7) << aFieldTrack.GetCurveLength(); + G4cout << G4std::setw( 9) << Position.x() << " " + << G4std::setw( 9) << Position.y() << " " + << G4std::setw( 9) << Position.z() << " " + << G4std::setw( 7) << UnitVelocity.x() << " " + << G4std::setw( 7) << UnitVelocity.y() << " " + << G4std::setw( 7) << UnitVelocity.z() << " "; + G4cout << G4std::setw( 7) << aFieldTrack.GetKineticEnergy(); + G4cout << G4std::setw( 9) << step_len << " "; + if( requestStep != -1.0 ) + G4cout << G4std::setw( 9) << requestStep << " "; + else + G4cout << G4std::setw( 9) << " InitialStep " << " "; + // G4cout << G4std::setw(12) << safety << " "; + G4cout << G4endl; +} diff --git a/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc b/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc index 2be9956932..e0d3474786 100644 --- a/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc +++ b/source/geometry/magneticfield/src/G4MagIntegratorStepper.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MagIntegratorStepper.cc,v 1.5.2.1 2001/06/28 19:08:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MagIntegratorStepper.cc,v 1.6 2001/07/11 09:59:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4MagIntegratorStepper.hh" diff --git a/source/geometry/magneticfield/src/G4Mag_EqRhs.cc b/source/geometry/magneticfield/src/G4Mag_EqRhs.cc index ea80b16925..a3ffc1eb4f 100644 --- a/source/geometry/magneticfield/src/G4Mag_EqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_EqRhs.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Mag_EqRhs.cc,v 1.6.2.1 2001/06/28 19:08:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Mag_EqRhs.cc,v 1.7 2001/07/11 09:59:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // This is the standard right-hand side for equation of motion // in a pure Magnetic Field . diff --git a/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc b/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc index 3ae9994685..87b1ffa0c5 100644 --- a/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc @@ -28,7 +28,7 @@ // // J. Apostolakis, February 8th, 1999 // P. Gumplinger, February 8th, 1999 -// P. Gumplinger, April 11th, 2001 +// D. Cote-Ahern, P. Gumplinger, April 11th, 2001 // #include "G4Mag_SpinEqRhs.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc b/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc index 10b3f8dd56..10d43662ae 100644 --- a/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_UsualEqRhs.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Mag_UsualEqRhs.cc,v 1.3.2.1 2001/06/28 19:08:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Mag_UsualEqRhs.cc,v 1.4 2001/07/11 09:59:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // This is the standard right-hand side for equation of motion. diff --git a/source/geometry/magneticfield/src/G4QuadrupoleMagField.cc b/source/geometry/magneticfield/src/G4QuadrupoleMagField.cc new file mode 100644 index 0000000000..bf05a5d84b --- /dev/null +++ b/source/geometry/magneticfield/src/G4QuadrupoleMagField.cc @@ -0,0 +1,56 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#include "G4QuadrupoleMagField.hh" +#include "globals.hh" +#include "geomdefs.hh" + + + +G4QuadrupoleMagField::G4QuadrupoleMagField(G4double pGradient) +{ + fGradient = pGradient ; +} + +///////////////////////////////////////////////////////////////////////// + +G4QuadrupoleMagField::~G4QuadrupoleMagField() +{ + ; +} + +//////////////////////////////////////////////////////////////////////// + + +void + G4QuadrupoleMagField::GetFieldValue( const G4double y[7], + G4double B[3] ) const +{ + // G4double fGradient = 0.001 ; // Tesla/mm + B[0] = fGradient*y[1] ; + B[1] = fGradient*y[0] ; + B[2] = 0 ; + return ; +} + + + diff --git a/source/geometry/magneticfield/src/G4RKG3_Stepper.cc b/source/geometry/magneticfield/src/G4RKG3_Stepper.cc index 5ef80e0633..8e0d9b8eaa 100644 --- a/source/geometry/magneticfield/src/G4RKG3_Stepper.cc +++ b/source/geometry/magneticfield/src/G4RKG3_Stepper.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RKG3_Stepper.cc,v 1.5.4.1 2001/06/28 19:08:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RKG3_Stepper.cc,v 1.6 2001/07/11 09:59:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4RKG3_Stepper.hh" #include "G4ThreeVector.hh" diff --git a/source/geometry/magneticfield/src/G4SimpleHeum.cc b/source/geometry/magneticfield/src/G4SimpleHeum.cc index c66281c1f3..6e6938bf1e 100644 --- a/source/geometry/magneticfield/src/G4SimpleHeum.cc +++ b/source/geometry/magneticfield/src/G4SimpleHeum.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SimpleHeum.cc,v 1.4.4.1 2001/06/28 19:08:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SimpleHeum.cc,v 1.5 2001/07/11 09:59:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Simple Heum: // x_1 = x_0 + h * diff --git a/source/geometry/magneticfield/src/G4SimpleRunge.cc b/source/geometry/magneticfield/src/G4SimpleRunge.cc index bec5301269..5c70f541fd 100644 --- a/source/geometry/magneticfield/src/G4SimpleRunge.cc +++ b/source/geometry/magneticfield/src/G4SimpleRunge.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SimpleRunge.cc,v 1.3.4.1 2001/06/28 19:08:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SimpleRunge.cc,v 1.4 2001/07/11 09:59:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Simple Runge: // diff --git a/source/geometry/magneticfield/src/G4UniformElectricField.cc b/source/geometry/magneticfield/src/G4UniformElectricField.cc index 68434e3558..66904655cb 100644 --- a/source/geometry/magneticfield/src/G4UniformElectricField.cc +++ b/source/geometry/magneticfield/src/G4UniformElectricField.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UniformElectricField.cc,v 1.3.2.1 2001/06/28 19:08:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UniformElectricField.cc,v 1.6 2001/12/04 17:35:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // @@ -86,8 +86,8 @@ G4UniformElectricField& G4UniformElectricField::operator = (const G4UniformElect // ------------------------------------------------------------------------ -void G4UniformElectricField::GetFieldValue (const G4double [3], - G4double fieldBandE[6] ) const +void G4UniformElectricField::GetFieldValue (const G4double[4], + G4double *fieldBandE ) const { fieldBandE[0]= 0.0; fieldBandE[1]= 0.0; diff --git a/source/geometry/magneticfield/src/G4UniformMagField.cc b/source/geometry/magneticfield/src/G4UniformMagField.cc index ca6d13217f..82630a4913 100644 --- a/source/geometry/magneticfield/src/G4UniformMagField.cc +++ b/source/geometry/magneticfield/src/G4UniformMagField.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UniformMagField.cc,v 1.3.4.1 2001/06/28 19:08:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UniformMagField.cc,v 1.5 2001/11/08 17:32:21 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // @@ -89,7 +89,7 @@ G4UniformMagField& G4UniformMagField::operator = (const G4UniformMagField &p) // ------------------------------------------------------------------------ -void G4UniformMagField::GetFieldValue (const G4double [3], +void G4UniformMagField::GetFieldValue (const G4double [4], G4double *B ) const { B[0]= fFieldComponents[0] ; diff --git a/source/geometry/management/History b/source/geometry/management/History index 1788feab69..27e4cd0fec 100644 --- a/source/geometry/management/History +++ b/source/geometry/management/History @@ -1,4 +1,4 @@ -$Id: History,v 1.24 2001/05/31 17:35:50 gcosmo Exp $ +$Id: History,v 1.28 2001/11/23 16:25:15 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,23 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 23, 2001 G. Cosmo geommng-V03-02-03 +- Initialise noNodes to 1 in G4SmartVoxelHeader::BuildNodes() in case + computed nodes for smartless happen to be zero (J.Apostolakis). + +November 08, 2001 G. Cosmo geommng-V03-02-02 +- Fixed comments for reference manual in G4TouchableHandle.hh. + +October 26, 2001 G. Cosmo geommng-V03-02-01 +- Improved printout in G4GeometryManager::ReportVoxelStats(). + +October 22, 2001 G. Cosmo geommng-V03-02-00 +- Added definition of G4TouchableHandle (R.Chytracek) +- Added class G4SmartVoxelStat for statistics on geometry optimisation + of volumes through voxelisation (courtesy of D.C.Williams). +- Modified G4GeometryManager to make use of G4SmartVoxelStat when run in + verbose mode. + May 31, 2001 G. Cosmo geommng-V03-01-04 - Adopt explicit initialisation for 'minExtents' and 'maxExtents' in G4SmartVoxelHeader::BuildNodes(...), to allow porting on ObjectSpace STL. diff --git a/source/geometry/management/include/G4AffineTransform.hh b/source/geometry/management/include/G4AffineTransform.hh index 474a4211d9..3c3ef1c7c7 100644 --- a/source/geometry/management/include/G4AffineTransform.hh +++ b/source/geometry/management/include/G4AffineTransform.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AffineTransform.hh,v 1.3.4.1 2001/06/28 19:08:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AffineTransform.hh,v 1.4 2001/07/11 09:59:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4AffineTransform diff --git a/source/geometry/management/include/G4AffineTransform.icc b/source/geometry/management/include/G4AffineTransform.icc index 136ee31f24..ebce6f6b69 100644 --- a/source/geometry/management/include/G4AffineTransform.icc +++ b/source/geometry/management/include/G4AffineTransform.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AffineTransform.icc,v 1.3.4.1 2001/06/28 19:08:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AffineTransform.icc,v 1.4 2001/07/11 09:59:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4AffineTransformation Inline implementation diff --git a/source/geometry/management/include/G4AssemblyTriplet.hh b/source/geometry/management/include/G4AssemblyTriplet.hh index dd59ca7325..3947507d4a 100644 --- a/source/geometry/management/include/G4AssemblyTriplet.hh +++ b/source/geometry/management/include/G4AssemblyTriplet.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AssemblyTriplet.hh,v 1.4.2.1 2001/06/28 19:08:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AssemblyTriplet.hh,v 1.5 2001/07/11 09:59:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4AssemblyTriplet diff --git a/source/geometry/management/include/G4AssemblyTriplet.icc b/source/geometry/management/include/G4AssemblyTriplet.icc index 888319282e..e2bb14e556 100644 --- a/source/geometry/management/include/G4AssemblyTriplet.icc +++ b/source/geometry/management/include/G4AssemblyTriplet.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AssemblyTriplet.icc,v 1.4.2.1 2001/06/28 19:08:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AssemblyTriplet.icc,v 1.5 2001/07/11 09:59:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4AssemblyTriplet - inline implementation diff --git a/source/geometry/management/include/G4AssemblyVolume.hh b/source/geometry/management/include/G4AssemblyVolume.hh index 4f70fb4f6a..60aa3a0db2 100644 --- a/source/geometry/management/include/G4AssemblyVolume.hh +++ b/source/geometry/management/include/G4AssemblyVolume.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AssemblyVolume.hh,v 1.4.2.1 2001/06/28 19:08:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AssemblyVolume.hh,v 1.5 2001/07/11 09:59:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4AssemblyVolume diff --git a/source/geometry/management/include/G4AssemblyVolume.icc b/source/geometry/management/include/G4AssemblyVolume.icc index 80a7952ad1..214f5b50e9 100644 --- a/source/geometry/management/include/G4AssemblyVolume.icc +++ b/source/geometry/management/include/G4AssemblyVolume.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AssemblyVolume.icc,v 1.2.2.1 2001/06/28 19:08:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AssemblyVolume.icc,v 1.3 2001/07/11 09:59:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4AssemblyVolume - inline implementation diff --git a/source/geometry/management/include/G4DrawVoxels.hh b/source/geometry/management/include/G4DrawVoxels.hh index 5559205557..50c43b443c 100644 --- a/source/geometry/management/include/G4DrawVoxels.hh +++ b/source/geometry/management/include/G4DrawVoxels.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DrawVoxels.hh,v 1.9.4.1 2001/06/28 19:08:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DrawVoxels.hh,v 1.10 2001/07/11 09:59:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4DrawVoxels diff --git a/source/geometry/management/include/G4GeometryManager.hh b/source/geometry/management/include/G4GeometryManager.hh index eae5376841..cbe8aad5c9 100644 --- a/source/geometry/management/include/G4GeometryManager.hh +++ b/source/geometry/management/include/G4GeometryManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GeometryManager.hh,v 1.3.4.1 2001/06/28 19:08:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeometryManager.hh,v 1.5 2001/10/22 16:08:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4GeometryManager // @@ -38,18 +38,20 @@ // static G4GeometryManager* fgInstance // - Ptr to the unique instance of class -// History: -// 26.07.95 P.Kent Initial version, incuding optimisation Build +// Author: +// 26.07.95 P.Kent Initial version, including optimisation Build #ifndef G4GEOMETRYMANAGER_HH #define G4GEOMETRYMANAGER_HH +#include "g4std/vector" #include "globals.hh" // Needed for building optimisations #include "geomdefs.hh" #include "G4LogicalVolumeStore.hh" #include "G4LogicalVolume.hh" +#include "G4SmartVoxelStat.hh" #include "G4SmartVoxelHeader.hh" #ifdef G4GEOMETRY_VOXELDEBUG #include "G4ios.hh" @@ -59,7 +61,7 @@ class G4GeometryManager { public: // with description - G4bool CloseGeometry(G4bool pOptimise=true); + G4bool CloseGeometry(G4bool pOptimise=true, G4bool verbose=false); // Close (`lock') the geometry: perform sanity and `completion' checks // and optionally [default=yes] build optimisation information. @@ -76,9 +78,10 @@ class G4GeometryManager private: - void BuildOptimisations(const G4bool allOpt); + void BuildOptimisations(G4bool allOpt, G4bool verbose=false); void DeleteOptimisations(); - + static void ReportVoxelStats( G4std::vector & stats, + G4double totalCpuTime ); static G4GeometryManager* fgInstance; G4bool fIsClosed; }; diff --git a/source/geometry/management/include/G4LogicalSurface.hh b/source/geometry/management/include/G4LogicalSurface.hh index 001f18bdb4..60036bd389 100644 --- a/source/geometry/management/include/G4LogicalSurface.hh +++ b/source/geometry/management/include/G4LogicalSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalSurface.hh,v 1.5.2.1 2001/06/28 19:08:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalSurface.hh,v 1.6 2001/07/11 09:59:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // Class G4LogicalSurface diff --git a/source/geometry/management/include/G4LogicalSurface.icc b/source/geometry/management/include/G4LogicalSurface.icc index 0246e466e0..a002a11a50 100644 --- a/source/geometry/management/include/G4LogicalSurface.icc +++ b/source/geometry/management/include/G4LogicalSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalSurface.icc,v 1.4.2.1 2001/06/28 19:08:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalSurface.icc,v 1.5 2001/07/11 09:59:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // Surface Class Inline Methods diff --git a/source/geometry/management/include/G4LogicalVolume.hh b/source/geometry/management/include/G4LogicalVolume.hh index ff59452581..3960b76ddb 100644 --- a/source/geometry/management/include/G4LogicalVolume.hh +++ b/source/geometry/management/include/G4LogicalVolume.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalVolume.hh,v 1.7.2.1 2001/06/28 19:08:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalVolume.hh,v 1.8 2001/07/11 09:59:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4LogicalVolume diff --git a/source/geometry/management/include/G4LogicalVolume.icc b/source/geometry/management/include/G4LogicalVolume.icc index 0f239b8db1..1982efb427 100644 --- a/source/geometry/management/include/G4LogicalVolume.icc +++ b/source/geometry/management/include/G4LogicalVolume.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalVolume.icc,v 1.5.2.1 2001/06/28 19:08:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalVolume.icc,v 1.6 2001/07/11 09:59:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4LogicalVolume Inline Implementation file diff --git a/source/geometry/management/include/G4LogicalVolumeStore.hh b/source/geometry/management/include/G4LogicalVolumeStore.hh index bd89082429..0b68c42590 100644 --- a/source/geometry/management/include/G4LogicalVolumeStore.hh +++ b/source/geometry/management/include/G4LogicalVolumeStore.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalVolumeStore.hh,v 1.5.2.1 2001/06/28 19:08:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalVolumeStore.hh,v 1.6 2001/07/11 09:59:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4LogicalVolumeStore // diff --git a/source/geometry/management/include/G4PVParameterised.hh b/source/geometry/management/include/G4PVParameterised.hh index de112ba231..eb7eb310ea 100644 --- a/source/geometry/management/include/G4PVParameterised.hh +++ b/source/geometry/management/include/G4PVParameterised.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVParameterised.hh,v 1.4.4.1 2001/06/28 19:08:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVParameterised.hh,v 1.5 2001/07/11 09:59:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PVParameterised diff --git a/source/geometry/management/include/G4PVPlacement.hh b/source/geometry/management/include/G4PVPlacement.hh index bbe4382591..95fdf6cf90 100644 --- a/source/geometry/management/include/G4PVPlacement.hh +++ b/source/geometry/management/include/G4PVPlacement.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVPlacement.hh,v 1.5.2.1 2001/06/28 19:08:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVPlacement.hh,v 1.6 2001/07/11 09:59:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PVPlacement diff --git a/source/geometry/management/include/G4PVReplica.hh b/source/geometry/management/include/G4PVReplica.hh index 42b920c437..dbc688705e 100644 --- a/source/geometry/management/include/G4PVReplica.hh +++ b/source/geometry/management/include/G4PVReplica.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVReplica.hh,v 1.4.4.1 2001/06/28 19:08:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVReplica.hh,v 1.5 2001/07/11 09:59:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PVReplica diff --git a/source/geometry/management/include/G4PhysicalVolumeStore.hh b/source/geometry/management/include/G4PhysicalVolumeStore.hh index 03da07f09d..2066c2b027 100644 --- a/source/geometry/management/include/G4PhysicalVolumeStore.hh +++ b/source/geometry/management/include/G4PhysicalVolumeStore.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicalVolumeStore.hh,v 1.6.2.1 2001/06/28 19:08:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicalVolumeStore.hh,v 1.7 2001/07/11 09:59:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PhysicalVolume // diff --git a/source/geometry/management/include/G4SmartVoxelHeader.hh b/source/geometry/management/include/G4SmartVoxelHeader.hh index 9bc34a9fb5..3ac9d6e053 100644 --- a/source/geometry/management/include/G4SmartVoxelHeader.hh +++ b/source/geometry/management/include/G4SmartVoxelHeader.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SmartVoxelHeader.hh,v 1.5.2.1 2001/06/28 19:08:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SmartVoxelHeader.hh,v 1.6 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4SmartVoxelHeader // diff --git a/source/geometry/management/include/G4SmartVoxelHeader.icc b/source/geometry/management/include/G4SmartVoxelHeader.icc index 23170653fc..cb485efeb3 100644 --- a/source/geometry/management/include/G4SmartVoxelHeader.icc +++ b/source/geometry/management/include/G4SmartVoxelHeader.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SmartVoxelHeader.icc,v 1.2.2.1 2001/06/28 19:08:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SmartVoxelHeader.icc,v 1.3 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4SmartVoxelHeader Inline implementation diff --git a/source/geometry/management/include/G4SmartVoxelNode.hh b/source/geometry/management/include/G4SmartVoxelNode.hh index 937ce7c2ec..89fd4e0dd6 100644 --- a/source/geometry/management/include/G4SmartVoxelNode.hh +++ b/source/geometry/management/include/G4SmartVoxelNode.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SmartVoxelNode.hh,v 1.5.2.1 2001/06/28 19:08:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SmartVoxelNode.hh,v 1.6 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4SmartVoxelNode // diff --git a/source/geometry/management/include/G4SmartVoxelNode.icc b/source/geometry/management/include/G4SmartVoxelNode.icc index 8113250c67..f8e83a7357 100644 --- a/source/geometry/management/include/G4SmartVoxelNode.icc +++ b/source/geometry/management/include/G4SmartVoxelNode.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SmartVoxelNode.icc,v 1.2.2.1 2001/06/28 19:08:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SmartVoxelNode.icc,v 1.3 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4SmartVoxelNode Inline implementation diff --git a/source/geometry/management/include/G4SmartVoxelProxy.hh b/source/geometry/management/include/G4SmartVoxelProxy.hh index b5e682bf9d..330fa86803 100644 --- a/source/geometry/management/include/G4SmartVoxelProxy.hh +++ b/source/geometry/management/include/G4SmartVoxelProxy.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SmartVoxelProxy.hh,v 1.4.4.1 2001/06/28 19:08:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SmartVoxelProxy.hh,v 1.5 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4SmartVoxelProxy // diff --git a/source/geometry/management/include/G4SmartVoxelProxy.icc b/source/geometry/management/include/G4SmartVoxelProxy.icc index d95b66acdc..9b3ebfad2d 100644 --- a/source/geometry/management/include/G4SmartVoxelProxy.icc +++ b/source/geometry/management/include/G4SmartVoxelProxy.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SmartVoxelProxy.icc,v 1.1.4.1 2001/06/28 19:08:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SmartVoxelProxy.icc,v 1.2 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4SmartVoxelProxy Inline implementation diff --git a/source/geometry/management/include/G4SmartVoxelStat.hh b/source/geometry/management/include/G4SmartVoxelStat.hh new file mode 100644 index 0000000000..8b72f6fdd4 --- /dev/null +++ b/source/geometry/management/include/G4SmartVoxelStat.hh @@ -0,0 +1,126 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// $Id: G4SmartVoxelStat.hh,v 1.1 2001/10/22 16:08:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4SmartVoxelStat +// +// Class description: +// +// Store information on the performance of the smart voxel algorithm +// for an individual logical volume + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4SmartVoxelStat_hh +#define G4SmartVoxelStat_hh + +#include "globals.hh" +#include "g4std/functional" + +class G4LogicalVolume; +class G4SmartVoxelHeader; + +class G4SmartVoxelStat +{ + public: // with description + + G4SmartVoxelStat( const G4LogicalVolume *theVolume, + const G4SmartVoxelHeader *theVoxel, + G4double theSysTime, + G4double theUserTime ); + // Construct information on one volume's voxels + + const G4LogicalVolume *GetVolume() const; + // Return a pointer to the logical volume + + const G4SmartVoxelHeader *GetVoxel() const; + // Return a pointer to the voxel header + + G4double GetSysTime() const; + // Get amount of system CPU time needed to build voxels + + G4double GetUserTime() const; + // Get amount of user CPU time needed to build voxels + + G4double GetTotalTime() const; + // Get total amount of CPU time needed to build voxels + + G4long GetNumberHeads() const; + // Get number of voxel headers used in the volume + + G4long GetNumberNodes() const; + // Get number of voxel slices used in the volume + + G4long GetNumberPointers() const; + // Get number of voxel proxy pointers used in the volume + + G4long GetMemoryUse() const; + // Get number of bytes needed to store voxel information + + + protected: + + void CountHeadsAndNodes( const G4SmartVoxelHeader *head ); + + const G4LogicalVolume *volume; + const G4SmartVoxelHeader *voxel; + + G4double sysTime; + G4double userTime; + + G4long heads; + G4long nodes; + G4long pointers; + + + public: + + // + // Functor objects for sorting + // + struct ByCpu : public G4std::binary_function< const G4SmartVoxelStat, + const G4SmartVoxelStat, + G4bool > + { + G4bool operator()( const G4SmartVoxelStat &a, const G4SmartVoxelStat &b ) + { + return a.GetTotalTime() > b.GetTotalTime(); + } + }; + + struct ByMemory : public G4std::binary_function< const G4SmartVoxelStat, + const G4SmartVoxelStat, + G4bool > + { + G4bool operator()( const G4SmartVoxelStat &a, const G4SmartVoxelStat &b ) + { + return a.GetMemoryUse() > b.GetMemoryUse(); + } + }; +}; + +#endif diff --git a/source/geometry/management/include/G4SolidStore.hh b/source/geometry/management/include/G4SolidStore.hh index 7b0a830684..db107a22a4 100644 --- a/source/geometry/management/include/G4SolidStore.hh +++ b/source/geometry/management/include/G4SolidStore.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SolidStore.hh,v 1.5.2.1 2001/06/28 19:08:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SolidStore.hh,v 1.6 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4SolidStore // diff --git a/source/geometry/management/include/G4TouchableHandle.hh b/source/geometry/management/include/G4TouchableHandle.hh new file mode 100644 index 0000000000..5589259a29 --- /dev/null +++ b/source/geometry/management/include/G4TouchableHandle.hh @@ -0,0 +1,50 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4TouchableHandle.hh,v 1.5 2001/11/06 17:06:47 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Class G4TouchableHandle +// +// Class description: +// +// A type providing reference counting mechanism for any kind of touchable +// objects. +// The basic rule for the use of this type is that this handle must always +// be exchanged by reference never dinamically allocated (i.e. never +// instantiated using 'new'). +// For more details see G4ReferenceCountedHandle. + +// Author: Radovan Chytracek, CERN (Radovan.Chytracek@cern.ch) +// Version: 1.0 +// Date: February 2001 +// ---------------------------------------------------------------------- +#ifndef _G4TOUCHABLEHANDLE_H_ +#define _G4TOUCHABLEHANDLE_H_ 1 + +#include "G4VTouchable.hh" +#include "G4ReferenceCountedHandle.hh" + +typedef G4ReferenceCountedHandle G4TouchableHandle; + +#endif // _G4TOUCHABLEHANDLE_H_ diff --git a/source/geometry/management/include/G4VPVParameterisation.hh b/source/geometry/management/include/G4VPVParameterisation.hh index 6c0eab5e97..0aca44d3a0 100644 --- a/source/geometry/management/include/G4VPVParameterisation.hh +++ b/source/geometry/management/include/G4VPVParameterisation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPVParameterisation.hh,v 1.3.4.1 2001/06/28 19:08:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPVParameterisation.hh,v 1.4 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4VPVParamterisation // diff --git a/source/geometry/management/include/G4VPhysicalVolume.hh b/source/geometry/management/include/G4VPhysicalVolume.hh index 10cc5f022e..4cfbebc1e8 100644 --- a/source/geometry/management/include/G4VPhysicalVolume.hh +++ b/source/geometry/management/include/G4VPhysicalVolume.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPhysicalVolume.hh,v 1.5.4.1 2001/06/28 19:08:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPhysicalVolume.hh,v 1.6 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VPhysicalVolume diff --git a/source/geometry/management/include/G4VPhysicalVolume.icc b/source/geometry/management/include/G4VPhysicalVolume.icc index 120b7571b4..b39f76b3fe 100644 --- a/source/geometry/management/include/G4VPhysicalVolume.icc +++ b/source/geometry/management/include/G4VPhysicalVolume.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPhysicalVolume.icc,v 1.4.4.1 2001/06/28 19:08:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPhysicalVolume.icc,v 1.5 2001/07/11 09:59:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VPhysicalVolume Inline Implementation diff --git a/source/geometry/management/include/G4VSolid.hh b/source/geometry/management/include/G4VSolid.hh index 22b7218673..5a77156dd0 100644 --- a/source/geometry/management/include/G4VSolid.hh +++ b/source/geometry/management/include/G4VSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSolid.hh,v 1.8.2.1 2001/06/28 19:08:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSolid.hh,v 1.9 2001/07/11 09:59:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VSolid diff --git a/source/geometry/management/include/G4VSolid.icc b/source/geometry/management/include/G4VSolid.icc index 0682b9cb2e..5dc5f77386 100644 --- a/source/geometry/management/include/G4VSolid.icc +++ b/source/geometry/management/include/G4VSolid.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSolid.icc,v 1.4.4.1 2001/06/28 19:08:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSolid.icc,v 1.5 2001/07/11 09:59:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4VSolid Inline implementation diff --git a/source/geometry/management/include/G4VTouchable.hh b/source/geometry/management/include/G4VTouchable.hh index 9e3fcf89e7..07ff67e1a0 100644 --- a/source/geometry/management/include/G4VTouchable.hh +++ b/source/geometry/management/include/G4VTouchable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTouchable.hh,v 1.4.4.1 2001/06/28 19:08:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTouchable.hh,v 1.5 2001/07/11 09:59:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VTouchable diff --git a/source/geometry/management/include/G4VTouchable.icc b/source/geometry/management/include/G4VTouchable.icc index f70ddf977e..0f7f54592e 100644 --- a/source/geometry/management/include/G4VTouchable.icc +++ b/source/geometry/management/include/G4VTouchable.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTouchable.icc,v 1.4.4.1 2001/06/28 19:08:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTouchable.icc,v 1.5 2001/07/11 09:59:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VTouchable Inline implementation diff --git a/source/geometry/management/include/G4VoxelLimits.hh b/source/geometry/management/include/G4VoxelLimits.hh index daa3e075c3..88e3ca378d 100644 --- a/source/geometry/management/include/G4VoxelLimits.hh +++ b/source/geometry/management/include/G4VoxelLimits.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VoxelLimits.hh,v 1.4.4.1 2001/06/28 19:08:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VoxelLimits.hh,v 1.5 2001/07/11 09:59:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4VoxelLimits // diff --git a/source/geometry/management/include/G4VoxelLimits.icc b/source/geometry/management/include/G4VoxelLimits.icc index bfe12ef201..f684e5f757 100644 --- a/source/geometry/management/include/G4VoxelLimits.icc +++ b/source/geometry/management/include/G4VoxelLimits.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VoxelLimits.icc,v 1.1.4.1 2001/06/28 19:08:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VoxelLimits.icc,v 1.2 2001/07/11 09:59:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4VoxelLimits Inline implementation diff --git a/source/geometry/management/include/meshdefs.hh b/source/geometry/management/include/meshdefs.hh index c40c7abe83..56e6d3ebc6 100644 --- a/source/geometry/management/include/meshdefs.hh +++ b/source/geometry/management/include/meshdefs.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: meshdefs.hh,v 1.3.4.1 2001/06/28 19:08:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: meshdefs.hh,v 1.4 2001/07/11 09:59:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Tube/Cone Meshing constants for extent calculations diff --git a/source/geometry/management/include/voxeldefs.hh b/source/geometry/management/include/voxeldefs.hh index b7ec0f573c..280690b5d5 100644 --- a/source/geometry/management/include/voxeldefs.hh +++ b/source/geometry/management/include/voxeldefs.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: voxeldefs.hh,v 1.4.4.1 2001/06/28 19:08:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: voxeldefs.hh,v 1.5 2001/07/11 09:59:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/geometry/management/src/G4AssemblyVolume.cc b/source/geometry/management/src/G4AssemblyVolume.cc index 6e51583bf3..1471e7041b 100644 --- a/source/geometry/management/src/G4AssemblyVolume.cc +++ b/source/geometry/management/src/G4AssemblyVolume.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AssemblyVolume.cc,v 1.5.2.1 2001/06/28 19:08:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AssemblyVolume.cc,v 1.6 2001/07/11 09:59:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4AssemblyVolume - implementation diff --git a/source/geometry/management/src/G4DrawVoxels.cc b/source/geometry/management/src/G4DrawVoxels.cc index 0f66e4961a..03de1b732c 100644 --- a/source/geometry/management/src/G4DrawVoxels.cc +++ b/source/geometry/management/src/G4DrawVoxels.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DrawVoxels.cc,v 1.13.2.1 2001/06/28 19:08:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DrawVoxels.cc,v 1.14 2001/07/11 09:59:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4DrawVoxels diff --git a/source/geometry/management/src/G4GeometryManager.cc b/source/geometry/management/src/G4GeometryManager.cc index 89e782af2d..595bd332be 100644 --- a/source/geometry/management/src/G4GeometryManager.cc +++ b/source/geometry/management/src/G4GeometryManager.cc @@ -21,38 +21,40 @@ // ******************************************************************** // // -// $Id: G4GeometryManager.cc,v 1.3.2.1 2001/06/28 19:08:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeometryManager.cc,v 1.6 2001/10/26 12:56:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4GeometryManager // // Implementation // -// History: -// 26.07.95 P.Kent Initial version, incuding optimisation Build +// Author: +// 26.07.95 P.Kent Initial version, including optimisation Build +#include "G4Timer.hh" #include "G4GeometryManager.hh" +#include "g4std/iomanip" // Close geometry - perform sanity checks and optionally Build optimisation // for placed volumes (always built for replicas & parameterised) // NOTE: Currently no sanity checks -G4bool G4GeometryManager::CloseGeometry(G4bool pOptimise) +G4bool G4GeometryManager::CloseGeometry(G4bool pOptimise, G4bool verbose) { - if (!fIsClosed) - { - BuildOptimisations(pOptimise); - fIsClosed=true; - } - return true; + if (!fIsClosed) + { + BuildOptimisations(pOptimise, verbose); + fIsClosed=true; + } + return true; } void G4GeometryManager::OpenGeometry() { - if (fIsClosed) - { - DeleteOptimisations(); - fIsClosed=false; - } + if (fIsClosed) + { + DeleteOptimisations(); + fIsClosed=false; + } } // Static class variable: ptr to single instance of class @@ -60,74 +62,91 @@ G4GeometryManager* G4GeometryManager::fgInstance = 0; G4GeometryManager* G4GeometryManager::GetInstance() { - static G4GeometryManager worldManager; - if (!fgInstance) - { - fgInstance = &worldManager; - } - return fgInstance; + static G4GeometryManager worldManager; + if (!fgInstance) + { + fgInstance = &worldManager; + } + return fgInstance; } // Constructor. Set the geometry to be open G4GeometryManager::G4GeometryManager() { - fIsClosed=false; + fIsClosed=false; } // // Create optimisation info. Build all voxels if allOpts=true // else only for replicated volumes // -void G4GeometryManager::BuildOptimisations(const G4bool allOpts) +void G4GeometryManager::BuildOptimisations(G4bool allOpts, G4bool verbose) { - G4LogicalVolumeStore *Store; - G4LogicalVolume *volume; - G4SmartVoxelHeader *head; - G4int nVolumes,n; - Store=G4LogicalVolumeStore::GetInstance(); - nVolumes=Store->size(); - for (n=0;nGetVoxelHeader(); - if (head) - { - delete head; - volume->SetVoxelHeader(0); - } - if ((volume->GetNoDaughters()>=kMinVoxelVolumesLevel1&&allOpts) || - (volume->GetNoDaughters()==1&& - volume->GetDaughter(0)->IsReplicated()==true)) - { -#ifdef G4GEOMETRY_VOXELDEBUG - G4cout << "**** G4GeometryManager::BuildOptimisations" << G4endl - << " Examining logical volume name = " << volume->GetName() << G4endl; -#endif - head = new G4SmartVoxelHeader(volume); - if (head) - { - volume->SetVoxelHeader(head); - } - else - { - G4Exception("G4GeometryManager::BuildOptimisations voxelheader new failed"); - } - } - else - { -// Don't create voxels for this node -#ifdef G4GEOMETRY_VOXELDEBUG - G4cout << "**** G4GeometryManager::BuildOptimisations" - << G4endl - << " Skipping logical volume name = " - << volume->GetName() << G4endl; -#endif - } + G4Timer timer; + G4Timer allTimer; + G4std::vector stats; + if (verbose) allTimer.Start(); - } + G4LogicalVolumeStore *Store; + G4LogicalVolume *volume; + G4SmartVoxelHeader *head; + G4int nVolumes,n; + Store=G4LogicalVolumeStore::GetInstance(); + nVolumes=Store->size(); + for (n=0;nGetVoxelHeader(); + if (head) + { + delete head; + volume->SetVoxelHeader(0); + } + if ((volume->GetNoDaughters()>=kMinVoxelVolumesLevel1&&allOpts) || + (volume->GetNoDaughters()==1 && + volume->GetDaughter(0)->IsReplicated()==true)) + { +#ifdef G4GEOMETRY_VOXELDEBUG + G4cout << "**** G4GeometryManager::BuildOptimisations" << G4endl + << " Examining logical volume name = " + << volume->GetName() << G4endl; +#endif + head = new G4SmartVoxelHeader(volume); + if (head) + { + volume->SetVoxelHeader(head); + } + else + { + G4Exception("G4GeometryManager::BuildOptimisations voxelheader new failed"); + } + if (verbose) + { + timer.Stop(); + stats.push_back( G4SmartVoxelStat( volume, head, + timer.GetSystemElapsed(), + timer.GetUserElapsed() ) ); + } + } + else + { + // Don't create voxels for this node +#ifdef G4GEOMETRY_VOXELDEBUG + G4cout << "**** G4GeometryManager::BuildOptimisations" << G4endl + << " Skipping logical volume name = " << volume->GetName() + << G4endl; +#endif + } + } + if (verbose) + { + allTimer.Stop(); + ReportVoxelStats( stats, allTimer.GetSystemElapsed() + + allTimer.GetUserElapsed() ); + } } // Remove all optimisation info @@ -138,29 +157,118 @@ void G4GeometryManager::BuildOptimisations(const G4bool allOpts) void G4GeometryManager::DeleteOptimisations() { - G4LogicalVolumeStore *Store=G4LogicalVolumeStore::GetInstance(); - G4LogicalVolume *volume; - G4SmartVoxelHeader *head; - G4int nVolumes,n; - nVolumes=Store->size(); - for (n=0;nGetVoxelHeader(); - if (head) - { - delete head; - volume->SetVoxelHeader(0); - } - } + G4LogicalVolumeStore *Store=G4LogicalVolumeStore::GetInstance(); + G4LogicalVolume *volume; + G4SmartVoxelHeader *head; + G4int nVolumes,n; + nVolumes=Store->size(); + for (n=0;nGetVoxelHeader(); + if (head) + { + delete head; + volume->SetVoxelHeader(0); + } + } } +// +// ReportVoxelStats +// +void +G4GeometryManager::ReportVoxelStats( G4std::vector &stats, + G4double totalCpuTime ) +{ + G4cout << "G4GeometryManager::ReportVoxelStats -- Voxel Statistics" + << G4endl << G4endl; + + // + // Get total memory use + // + G4int i, nStat = stats.size(); + G4long totalMemory = 0; + + for( i=0;i 10 ? 10 : nStat; + if (nPrint) + { + G4cout << "\n Voxelisation: top CPU users:" << G4endl; + G4cout << " Percent Total CPU System CPU Memory Volume\n" + << " ------- ---------- ---------- -------- ----------" + << G4endl; + // 12345678901.234567890123.234567890123.234567890123k . + } + for(i=0;iGetName() + << G4std::resetiosflags(G4std::ios::left) + << G4endl; + } + + // + // Second list: sort by memory use + // + G4std::sort( stats.begin(), stats.end(), G4SmartVoxelStat::ByMemory() ); + + if (nPrint) + { + G4cout << "\n Voxelisation: top memory users:" << G4endl; + G4cout << " Percent Memory Heads Nodes Pointers Total CPU Volume\n" + << " ------- -------- ------ ------ -------- ---------- ----------" + << G4endl; + // 12345678901.2345678901k .23456789.23456789.2345678901.234567890123. . + } + for(i=0;iGetName() + << G4std::resetiosflags(G4std::ios::left) + << G4endl; + } +} diff --git a/source/geometry/management/src/G4LogicalVolume.cc b/source/geometry/management/src/G4LogicalVolume.cc index ad6d79588a..8a22406d27 100644 --- a/source/geometry/management/src/G4LogicalVolume.cc +++ b/source/geometry/management/src/G4LogicalVolume.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalVolume.cc,v 1.7.2.1 2001/06/28 19:08:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalVolume.cc,v 1.8 2001/07/11 09:59:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4LogicalVolume Implementation diff --git a/source/geometry/management/src/G4LogicalVolumeStore.cc b/source/geometry/management/src/G4LogicalVolumeStore.cc index ee609f5b8a..75ca179e85 100644 --- a/source/geometry/management/src/G4LogicalVolumeStore.cc +++ b/source/geometry/management/src/G4LogicalVolumeStore.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalVolumeStore.cc,v 1.5.2.1 2001/06/28 19:08:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalVolumeStore.cc,v 1.6 2001/07/11 09:59:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4LogicalVolumeStore // diff --git a/source/geometry/management/src/G4PVParameterised.cc b/source/geometry/management/src/G4PVParameterised.cc index 78a837d44f..5d3a7ce2aa 100644 --- a/source/geometry/management/src/G4PVParameterised.cc +++ b/source/geometry/management/src/G4PVParameterised.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVParameterised.cc,v 1.3.4.1 2001/06/28 19:08:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVParameterised.cc,v 1.4 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PVParameterised diff --git a/source/geometry/management/src/G4PVPlacement.cc b/source/geometry/management/src/G4PVPlacement.cc index dd570ca944..0527aad777 100644 --- a/source/geometry/management/src/G4PVPlacement.cc +++ b/source/geometry/management/src/G4PVPlacement.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVPlacement.cc,v 1.3.4.1 2001/06/28 19:08:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVPlacement.cc,v 1.4 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PVPlacement Implementation diff --git a/source/geometry/management/src/G4PVReplica.cc b/source/geometry/management/src/G4PVReplica.cc index 9d7de7885e..794b0f5870 100644 --- a/source/geometry/management/src/G4PVReplica.cc +++ b/source/geometry/management/src/G4PVReplica.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVReplica.cc,v 1.2.4.1 2001/06/28 19:08:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVReplica.cc,v 1.3 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PVReplica Implementation diff --git a/source/geometry/management/src/G4PhysicalVolumeStore.cc b/source/geometry/management/src/G4PhysicalVolumeStore.cc index 6b6e9e0130..cc3943704b 100644 --- a/source/geometry/management/src/G4PhysicalVolumeStore.cc +++ b/source/geometry/management/src/G4PhysicalVolumeStore.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicalVolumeStore.cc,v 1.6.2.1 2001/06/28 19:08:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicalVolumeStore.cc,v 1.7 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4PhysicalVolumeStore // diff --git a/source/geometry/management/src/G4SmartVoxelHeader.cc b/source/geometry/management/src/G4SmartVoxelHeader.cc index 286de5f9df..ea62565fc4 100644 --- a/source/geometry/management/src/G4SmartVoxelHeader.cc +++ b/source/geometry/management/src/G4SmartVoxelHeader.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SmartVoxelHeader.cc,v 1.11.2.1 2001/06/28 19:08:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SmartVoxelHeader.cc,v 1.13 2001/11/23 16:22:42 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4SmartVoxelHeader @@ -841,7 +841,9 @@ G4int noNodes = ((noNodesSmart-noNodesExactI)>=0.5) ? noNodesExactI + 1 : noNodesExactI ; // // - + if( noNodes == 0 ){ + noNodes = 1; + } #ifdef G4GEOMETRY_VOXELDEBUG G4cout << " Min width = " << minWidth << " => # Nodes = " << noNodes << G4endl; diff --git a/source/geometry/management/src/G4SmartVoxelNode.cc b/source/geometry/management/src/G4SmartVoxelNode.cc index afda8d9a9a..79baf3ef1b 100644 --- a/source/geometry/management/src/G4SmartVoxelNode.cc +++ b/source/geometry/management/src/G4SmartVoxelNode.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SmartVoxelNode.cc,v 1.2.4.1 2001/06/28 19:08:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SmartVoxelNode.cc,v 1.3 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class G4SmartVoxelNode // diff --git a/source/geometry/management/src/G4SmartVoxelStat.cc b/source/geometry/management/src/G4SmartVoxelStat.cc new file mode 100644 index 0000000000..eea904f271 --- /dev/null +++ b/source/geometry/management/src/G4SmartVoxelStat.cc @@ -0,0 +1,152 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4SmartVoxelStat.cc,v 1.1 2001/10/22 16:08:05 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// class G4SmartVoxelStat +// +// Store information on the performance of the smart voxel algorithm +// for an individual logical volume +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) +// +#include "G4SmartVoxelStat.hh" + +#include "G4SmartVoxelHeader.hh" +#include "G4SmartVoxelNode.hh" +#include "G4SmartVoxelProxy.hh" + +// +// Constructor +// +G4SmartVoxelStat::G4SmartVoxelStat( const G4LogicalVolume *theVolume, + const G4SmartVoxelHeader *theVoxel, + G4double theSysTime, + G4double theUserTime ) + : volume(theVolume), + voxel(theVoxel), + sysTime(theSysTime), + userTime(theUserTime), + heads(1), + nodes(0), + pointers(0) +{ + CountHeadsAndNodes( voxel ); +} + + +// +// Simple Accessors +// +const G4LogicalVolume *G4SmartVoxelStat::GetVolume() const +{ + return volume; +} + +const G4SmartVoxelHeader *G4SmartVoxelStat::GetVoxel() const +{ + return voxel; +} + +G4double G4SmartVoxelStat::GetSysTime() const +{ + return sysTime; +} + +G4double G4SmartVoxelStat::GetUserTime() const +{ + return userTime; +} + +G4double G4SmartVoxelStat::GetTotalTime() const +{ + return sysTime + userTime; +} + +G4long G4SmartVoxelStat::GetNumberHeads() const +{ + return heads; +} + +G4long G4SmartVoxelStat::GetNumberNodes() const +{ + return nodes; +} + +G4long G4SmartVoxelStat::GetNumberPointers() const +{ + return pointers; +} + + +// +// Return approximate memory use +// +G4long G4SmartVoxelStat::GetMemoryUse() const +{ + static const G4long headSize = sizeof(G4SmartVoxelHeader) + + sizeof(G4SmartVoxelProxy); + + static const G4long nodeSize = sizeof(G4SmartVoxelNode) + + sizeof(G4SmartVoxelProxy); + + static const G4long pointerSize = sizeof(G4SmartVoxelProxy*); + + return nodes*nodeSize + heads*headSize + pointers*pointerSize; +} + + + +// +// CountHeadsAndNodes +// +// Recursively count the number of voxel headers and nodes, +// updating class member variables heads and nodes on the way. +// +void G4SmartVoxelStat::CountHeadsAndNodes( const G4SmartVoxelHeader *head ) +{ + G4int numSlices = head->GetNoSlices(); + + pointers += numSlices; + + const G4SmartVoxelProxy *lastProxy = 0; + + for(G4int i=0;iGetSlice(i); + if (proxy == lastProxy) continue; + + lastProxy = proxy; + + if (proxy->IsNode()) { + nodes++; + } + else { + heads++; + CountHeadsAndNodes(proxy->GetHeader()); + } + } +} diff --git a/source/geometry/management/src/G4SolidStore.cc b/source/geometry/management/src/G4SolidStore.cc index 7c902950b2..6bc2ff91cf 100644 --- a/source/geometry/management/src/G4SolidStore.cc +++ b/source/geometry/management/src/G4SolidStore.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SolidStore.cc,v 1.6.2.1 2001/06/28 19:08:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SolidStore.cc,v 1.7 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4SolidStore // diff --git a/source/geometry/management/src/G4VPVParameterisation.cc b/source/geometry/management/src/G4VPVParameterisation.cc index b88b5df04b..7f63d43918 100644 --- a/source/geometry/management/src/G4VPVParameterisation.cc +++ b/source/geometry/management/src/G4VPVParameterisation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPVParameterisation.cc,v 1.2.4.1 2001/06/28 19:08:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPVParameterisation.cc,v 1.3 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Default implementations for Parameterisations that do not // parameterise solid and/or material diff --git a/source/geometry/management/src/G4VPhysicalVolume.cc b/source/geometry/management/src/G4VPhysicalVolume.cc index fd5f04072e..5a52d3b79b 100644 --- a/source/geometry/management/src/G4VPhysicalVolume.cc +++ b/source/geometry/management/src/G4VPhysicalVolume.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPhysicalVolume.cc,v 1.3.4.1 2001/06/28 19:08:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPhysicalVolume.cc,v 1.4 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VPhysicalVolume Implementation diff --git a/source/geometry/management/src/G4VSolid.cc b/source/geometry/management/src/G4VSolid.cc index 18d1440fc7..08f0ce8281 100644 --- a/source/geometry/management/src/G4VSolid.cc +++ b/source/geometry/management/src/G4VSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSolid.cc,v 1.7.2.1 2001/06/28 19:08:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSolid.cc,v 1.8 2001/07/11 09:59:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4VSolid // diff --git a/source/geometry/management/src/G4VoxelLimits.cc b/source/geometry/management/src/G4VoxelLimits.cc index a87e52e432..e0e895c948 100644 --- a/source/geometry/management/src/G4VoxelLimits.cc +++ b/source/geometry/management/src/G4VoxelLimits.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VoxelLimits.cc,v 1.3.4.1 2001/06/28 19:08:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VoxelLimits.cc,v 1.4 2001/07/11 09:59:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4VoxelLimits // diff --git a/source/geometry/solids/BREPS/History b/source/geometry/solids/BREPS/History index 9256734394..247a2d9d31 100644 --- a/source/geometry/solids/BREPS/History +++ b/source/geometry/solids/BREPS/History @@ -1,4 +1,4 @@ -$Id: History,v 1.25 2001/06/15 11:59:35 gcosmo Exp $ +$Id: History,v 1.31 2001/08/13 14:08:28 gcosmo Exp $ ---------------------------------------------------------------------------- ========================================================= @@ -17,6 +17,29 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +01/08/2001 : R. Chytracek breps-V03-02-03 +- G4BREPSolidPolyhedra.cc: fixed situation when phi1 = 0 dphi1 = 2*pi and + all RMINs = 0.0. In this case the inner planes are not created. + More than 2 z-planes and inner planes are not created whenever two + consecutive RMINs are = 0.0. + Fixes problem report #266. + +20/07/2001 : G. Cosmo breps-V03-02-02 +- Still fixed for ambiguous use of casts for G4Point3D, G4ThreeVector + and G4Vector3D types. Fixed compilation warnings detected with gcc-2.95-3. + Modified files: G4Axis2Placement3D.icc, G4BREPSolid.cc, G4BREPSolidBox.cc, + G4BREPSolidPCone.cc, G4BREPSolidPolyhedra.cc + +17/07/2001 : G. Cosmo breps-V03-02-01 +- Fix in G4BSplineCurve::Init() for initialisation of point vector. Replaced + usage of 'reserve' with explicit initialisation of components in collection. + +11/07/2001 : G. Cosmo breps-V03-02-00 +- Fixes for overloading ambiguity on SUN-CC with new CLHEP-1.7, files: + G4BREPSolidPolyhedra.cc, G4BREPSolidPCone.cc, G4BREPSolidCylinder.cc + and G4BREPSolidCone.cc. +- Synchronized with HEAD. + 15/06/2001 : G. Cosmo breps-V03-01-02 - Fixes to allow -ansi compilation on Linux-g++, gcc-2.95-2 compiler: o G4Ray.cc: changed usage of hypot(x,y) to sqrt(x*x+y*y). diff --git a/source/geometry/solids/BREPS/include/G4Assembly.hh b/source/geometry/solids/BREPS/include/G4Assembly.hh index 1949de2968..1467e12a49 100644 --- a/source/geometry/solids/BREPS/include/G4Assembly.hh +++ b/source/geometry/solids/BREPS/include/G4Assembly.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Assembly.hh,v 1.7.2.1 2001/06/28 19:08:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Assembly.hh,v 1.8 2001/07/11 09:59:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Assembly diff --git a/source/geometry/solids/BREPS/include/G4Assembly.icc b/source/geometry/solids/BREPS/include/G4Assembly.icc index 1eae3f6d3f..3879086ff3 100644 --- a/source/geometry/solids/BREPS/include/G4Assembly.icc +++ b/source/geometry/solids/BREPS/include/G4Assembly.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Assembly.icc,v 1.2.4.1 2001/06/28 19:08:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Assembly.icc,v 1.3 2001/07/11 09:59:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Axis2Placement3D.hh b/source/geometry/solids/BREPS/include/G4Axis2Placement3D.hh index cfe683d28b..bfae2b4910 100644 --- a/source/geometry/solids/BREPS/include/G4Axis2Placement3D.hh +++ b/source/geometry/solids/BREPS/include/G4Axis2Placement3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2Placement3D.hh,v 1.3.4.1 2001/06/28 19:08:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2Placement3D.hh,v 1.4 2001/07/11 09:59:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2Placement3D diff --git a/source/geometry/solids/BREPS/include/G4Axis2Placement3D.icc b/source/geometry/solids/BREPS/include/G4Axis2Placement3D.icc index eb3635b5ff..f8dce124cd 100644 --- a/source/geometry/solids/BREPS/include/G4Axis2Placement3D.icc +++ b/source/geometry/solids/BREPS/include/G4Axis2Placement3D.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2Placement3D.icc,v 1.4.4.1 2001/06/28 19:08:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2Placement3D.icc,v 1.7 2001/07/20 11:52:42 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file @@ -59,9 +59,9 @@ void G4Axis2Placement3D::Init( const G4Vector3D& refDirection0 , pY = pZ.cross(pX); // normalized // basis transformation - fromPlacementCoordinates= HepTranslate3D(location) - * G4Transform3D(HepXHat, HepYHat, HepZHat, - pX, pY, pZ); + fromPlacementCoordinates = + G4Translate3D(location0) * + G4Transform3D(HepXHat, HepYHat, HepZHat, pX, pY, pZ); toPlacementCoordinates= fromPlacementCoordinates.inverse(); } diff --git a/source/geometry/solids/BREPS/include/G4BREPSolid.hh b/source/geometry/solids/BREPS/include/G4BREPSolid.hh index e61d1d8a58..ef3931bf68 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolid.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolid.hh,v 1.8.4.1 2001/06/28 19:08:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolid.hh,v 1.9 2001/07/11 09:59:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolid diff --git a/source/geometry/solids/BREPS/include/G4BREPSolid.icc b/source/geometry/solids/BREPS/include/G4BREPSolid.icc index 26dff3c7e6..f299df21d6 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolid.icc +++ b/source/geometry/solids/BREPS/include/G4BREPSolid.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolid.icc,v 1.3.4.1 2001/06/28 19:08:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolid.icc,v 1.4 2001/07/11 09:59:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh b/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh index 566c9e2f83..9f976ba377 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidBox.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidBox.hh,v 1.4.4.1 2001/06/28 19:08:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidBox.hh,v 1.5 2001/07/11 09:59:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidBox diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh b/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh index 3dff728872..973300256b 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidCone.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidCone.hh,v 1.4.4.1 2001/06/28 19:08:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidCone.hh,v 1.5 2001/07/11 09:59:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidCone diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh b/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh index dd1a6153f2..f0829f0fdd 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidCylinder.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidCylinder.hh,v 1.4.4.1 2001/06/28 19:08:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidCylinder.hh,v 1.5 2001/07/11 09:59:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidCylinder diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidOpenPCone.hh b/source/geometry/solids/BREPS/include/G4BREPSolidOpenPCone.hh index e8d6b3fb70..3fd998f812 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidOpenPCone.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidOpenPCone.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidOpenPCone.hh,v 1.4.4.1 2001/06/28 19:08:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidOpenPCone.hh,v 1.5 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidOpenPCone diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh b/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh index a9de42d22c..4e06f1987f 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidPCone.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidPCone.hh,v 1.5.4.1 2001/06/28 19:08:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidPCone.hh,v 1.6 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidPCone diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh b/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh index a9cf12a7d8..86a547d5f2 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidPolyhedra.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidPolyhedra.hh,v 1.6.4.1 2001/06/28 19:08:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidPolyhedra.hh,v 1.7 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidPolyhedra diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh b/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh index a709eab2cd..2419af96f4 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidSphere.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidSphere.hh,v 1.5.4.1 2001/06/28 19:08:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidSphere.hh,v 1.6 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidSphere diff --git a/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh b/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh index e9a38e1adf..79eed71d08 100644 --- a/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh +++ b/source/geometry/solids/BREPS/include/G4BREPSolidTorus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidTorus.hh,v 1.4.4.1 2001/06/28 19:08:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidTorus.hh,v 1.5 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BREPSolidTorus diff --git a/source/geometry/solids/BREPS/include/G4BSplineCurve.hh b/source/geometry/solids/BREPS/include/G4BSplineCurve.hh index a9fa378258..c4b374c6e9 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineCurve.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineCurve.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineCurve.hh,v 1.9.2.1 2001/06/28 19:08:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineCurve.hh,v 1.10 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineCurve diff --git a/source/geometry/solids/BREPS/include/G4BSplineCurve.icc b/source/geometry/solids/BREPS/include/G4BSplineCurve.icc index 0ec8b33c6a..ae5be3709e 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineCurve.icc +++ b/source/geometry/solids/BREPS/include/G4BSplineCurve.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineCurve.icc,v 1.5.2.1 2001/06/28 19:08:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineCurve.icc,v 1.6 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh b/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh index ee5706c056..c9101b2788 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineCurveWithKnots.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineCurveWithKnots.hh,v 1.3.4.1 2001/06/28 19:08:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineCurveWithKnots.hh,v 1.4 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineCurveWithKnots diff --git a/source/geometry/solids/BREPS/include/G4BSplineSurface.hh b/source/geometry/solids/BREPS/include/G4BSplineSurface.hh index 04713af0e4..3a79157f8f 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineSurface.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurface.hh,v 1.9.4.1 2001/06/28 19:08:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurface.hh,v 1.10 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineSurface diff --git a/source/geometry/solids/BREPS/include/G4BSplineSurface.icc b/source/geometry/solids/BREPS/include/G4BSplineSurface.icc index 0fdca88797..cd6db00109 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineSurface.icc +++ b/source/geometry/solids/BREPS/include/G4BSplineSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurface.icc,v 1.3.4.1 2001/06/28 19:08:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurface.icc,v 1.4 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh b/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh index 01f8d83ebe..64c8c665a2 100644 --- a/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh +++ b/source/geometry/solids/BREPS/include/G4BSplineSurfaceWithKnots.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurfaceWithKnots.hh,v 1.2.4.1 2001/06/28 19:08:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurfaceWithKnots.hh,v 1.3 2001/07/11 09:59:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineSurfaceWithKnots diff --git a/source/geometry/solids/BREPS/include/G4BezierSurface.hh b/source/geometry/solids/BREPS/include/G4BezierSurface.hh index 3c243f5a39..2426476e3a 100644 --- a/source/geometry/solids/BREPS/include/G4BezierSurface.hh +++ b/source/geometry/solids/BREPS/include/G4BezierSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BezierSurface.hh,v 1.5.4.1 2001/06/28 19:08:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BezierSurface.hh,v 1.6 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BezierSurface diff --git a/source/geometry/solids/BREPS/include/G4BezierSurface.icc b/source/geometry/solids/BREPS/include/G4BezierSurface.icc index 1a0a2a789e..d5aff128d1 100644 --- a/source/geometry/solids/BREPS/include/G4BezierSurface.icc +++ b/source/geometry/solids/BREPS/include/G4BezierSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BezierSurface.icc,v 1.2.4.1 2001/06/28 19:08:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BezierSurface.icc,v 1.3 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4BoundingBox3D.hh b/source/geometry/solids/BREPS/include/G4BoundingBox3D.hh index a0449d7cab..8a3293f9b7 100644 --- a/source/geometry/solids/BREPS/include/G4BoundingBox3D.hh +++ b/source/geometry/solids/BREPS/include/G4BoundingBox3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BoundingBox3D.hh,v 1.4.4.1 2001/06/28 19:08:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BoundingBox3D.hh,v 1.5 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BoundingBox3D diff --git a/source/geometry/solids/BREPS/include/G4BoundingBox3D.icc b/source/geometry/solids/BREPS/include/G4BoundingBox3D.icc index 5c9b303654..4faa1ce99e 100644 --- a/source/geometry/solids/BREPS/include/G4BoundingBox3D.icc +++ b/source/geometry/solids/BREPS/include/G4BoundingBox3D.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BoundingBox3D.icc,v 1.2.4.1 2001/06/28 19:08:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BoundingBox3D.icc,v 1.3 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CircularCurve.hh b/source/geometry/solids/BREPS/include/G4CircularCurve.hh index e2b0f7a32b..65b56f61dc 100644 --- a/source/geometry/solids/BREPS/include/G4CircularCurve.hh +++ b/source/geometry/solids/BREPS/include/G4CircularCurve.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CircularCurve.hh,v 1.6.4.1 2001/06/28 19:08:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CircularCurve.hh,v 1.7 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CircularCurve diff --git a/source/geometry/solids/BREPS/include/G4CircularCurve.icc b/source/geometry/solids/BREPS/include/G4CircularCurve.icc index ffe186c002..4501f51e07 100644 --- a/source/geometry/solids/BREPS/include/G4CircularCurve.icc +++ b/source/geometry/solids/BREPS/include/G4CircularCurve.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CircularCurve.icc,v 1.4.4.1 2001/06/28 19:08:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CircularCurve.icc,v 1.5 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CompositeCurve.hh b/source/geometry/solids/BREPS/include/G4CompositeCurve.hh index e66310f872..9d0155c101 100644 --- a/source/geometry/solids/BREPS/include/G4CompositeCurve.hh +++ b/source/geometry/solids/BREPS/include/G4CompositeCurve.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CompositeCurve.hh,v 1.5.4.1 2001/06/28 19:08:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CompositeCurve.hh,v 1.6 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CompositeCurve diff --git a/source/geometry/solids/BREPS/include/G4CompositeCurve.icc b/source/geometry/solids/BREPS/include/G4CompositeCurve.icc index 70f1a6543d..a3799a3b76 100644 --- a/source/geometry/solids/BREPS/include/G4CompositeCurve.icc +++ b/source/geometry/solids/BREPS/include/G4CompositeCurve.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CompositeCurve.icc,v 1.3.4.1 2001/06/28 19:08:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CompositeCurve.icc,v 1.4 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Conic.hh b/source/geometry/solids/BREPS/include/G4Conic.hh index a5f11f1a2c..851de6f5bd 100644 --- a/source/geometry/solids/BREPS/include/G4Conic.hh +++ b/source/geometry/solids/BREPS/include/G4Conic.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Conic.hh,v 1.5.4.1 2001/06/28 19:08:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Conic.hh,v 1.6 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Conic diff --git a/source/geometry/solids/BREPS/include/G4Conic.icc b/source/geometry/solids/BREPS/include/G4Conic.icc index 5d43ce19aa..9750d869ab 100644 --- a/source/geometry/solids/BREPS/include/G4Conic.icc +++ b/source/geometry/solids/BREPS/include/G4Conic.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Conic.icc,v 1.2.4.1 2001/06/28 19:08:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Conic.icc,v 1.3 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4ConicalSurface.hh b/source/geometry/solids/BREPS/include/G4ConicalSurface.hh index 3e21a1a65f..9dcb5331e3 100644 --- a/source/geometry/solids/BREPS/include/G4ConicalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ConicalSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConicalSurface.hh,v 1.7.4.1 2001/06/28 19:08:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConicalSurface.hh,v 1.8 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ConicalSurface diff --git a/source/geometry/solids/BREPS/include/G4ConicalSurface.icc b/source/geometry/solids/BREPS/include/G4ConicalSurface.icc index 5bae977f5b..998396ce87 100644 --- a/source/geometry/solids/BREPS/include/G4ConicalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4ConicalSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConicalSurface.icc,v 1.2.4.1 2001/06/28 19:08:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConicalSurface.icc,v 1.3 2001/07/11 09:59:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4ControlPoints.hh b/source/geometry/solids/BREPS/include/G4ControlPoints.hh index 5bdbcecd14..e20e35d875 100644 --- a/source/geometry/solids/BREPS/include/G4ControlPoints.hh +++ b/source/geometry/solids/BREPS/include/G4ControlPoints.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ControlPoints.hh,v 1.5.4.1 2001/06/28 19:08:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ControlPoints.hh,v 1.6 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ControlPoints diff --git a/source/geometry/solids/BREPS/include/G4ControlPoints.icc b/source/geometry/solids/BREPS/include/G4ControlPoints.icc index 6c74a949ff..a424eaf05c 100644 --- a/source/geometry/solids/BREPS/include/G4ControlPoints.icc +++ b/source/geometry/solids/BREPS/include/G4ControlPoints.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ControlPoints.icc,v 1.1.4.1 2001/06/28 19:08:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ControlPoints.icc,v 1.2 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4ConvexHull.hh b/source/geometry/solids/BREPS/include/G4ConvexHull.hh index c5a477b0fe..6d4d1bd9c7 100644 --- a/source/geometry/solids/BREPS/include/G4ConvexHull.hh +++ b/source/geometry/solids/BREPS/include/G4ConvexHull.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConvexHull.hh,v 1.4.4.1 2001/06/28 19:08:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConvexHull.hh,v 1.5 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ConvexHull diff --git a/source/geometry/solids/BREPS/include/G4Curve.hh b/source/geometry/solids/BREPS/include/G4Curve.hh index 0ff2d07840..364c1a87d2 100644 --- a/source/geometry/solids/BREPS/include/G4Curve.hh +++ b/source/geometry/solids/BREPS/include/G4Curve.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Curve.hh,v 1.7.4.1 2001/06/28 19:08:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Curve.hh,v 1.8 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Curve diff --git a/source/geometry/solids/BREPS/include/G4Curve.icc b/source/geometry/solids/BREPS/include/G4Curve.icc index 9954cd3397..99a28b29fe 100644 --- a/source/geometry/solids/BREPS/include/G4Curve.icc +++ b/source/geometry/solids/BREPS/include/G4Curve.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Curve.icc,v 1.4.4.1 2001/06/28 19:08:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Curve.icc,v 1.5 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CurvePoint.hh b/source/geometry/solids/BREPS/include/G4CurvePoint.hh index 92413ac55c..fb1fc8f6cc 100644 --- a/source/geometry/solids/BREPS/include/G4CurvePoint.hh +++ b/source/geometry/solids/BREPS/include/G4CurvePoint.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurvePoint.hh,v 1.4.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurvePoint.hh,v 1.5 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CurvePoint diff --git a/source/geometry/solids/BREPS/include/G4CurvePoint.icc b/source/geometry/solids/BREPS/include/G4CurvePoint.icc index e7535b3e8f..4badce1e6a 100644 --- a/source/geometry/solids/BREPS/include/G4CurvePoint.icc +++ b/source/geometry/solids/BREPS/include/G4CurvePoint.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurvePoint.icc,v 1.2.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurvePoint.icc,v 1.3 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CurveRayIntersection.hh b/source/geometry/solids/BREPS/include/G4CurveRayIntersection.hh index 8ff703d1b8..5b473c4e94 100644 --- a/source/geometry/solids/BREPS/include/G4CurveRayIntersection.hh +++ b/source/geometry/solids/BREPS/include/G4CurveRayIntersection.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurveRayIntersection.hh,v 1.3.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurveRayIntersection.hh,v 1.4 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CurveRayIntersection diff --git a/source/geometry/solids/BREPS/include/G4CurveRayIntersection.icc b/source/geometry/solids/BREPS/include/G4CurveRayIntersection.icc index 4d04d85a45..903d2d9744 100644 --- a/source/geometry/solids/BREPS/include/G4CurveRayIntersection.icc +++ b/source/geometry/solids/BREPS/include/G4CurveRayIntersection.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurveRayIntersection.icc,v 1.2.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurveRayIntersection.icc,v 1.3 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4CurveVector.hh b/source/geometry/solids/BREPS/include/G4CurveVector.hh index b5fb6f5d33..972cdbe6b3 100644 --- a/source/geometry/solids/BREPS/include/G4CurveVector.hh +++ b/source/geometry/solids/BREPS/include/G4CurveVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurveVector.hh,v 1.4.2.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurveVector.hh,v 1.5 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CurveVector diff --git a/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh b/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh index 61d8a9bb2b..b2b02894c2 100644 --- a/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4CylindricalSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CylindricalSurface.hh,v 1.7.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CylindricalSurface.hh,v 1.8 2001/07/11 09:59:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CylindricalSurface diff --git a/source/geometry/solids/BREPS/include/G4CylindricalSurface.icc b/source/geometry/solids/BREPS/include/G4CylindricalSurface.icc index a3914b960a..9a5310c84d 100644 --- a/source/geometry/solids/BREPS/include/G4CylindricalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4CylindricalSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CylindricalSurface.icc,v 1.2.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CylindricalSurface.icc,v 1.3 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Ellipse.hh b/source/geometry/solids/BREPS/include/G4Ellipse.hh index eae5265759..888df2cbec 100644 --- a/source/geometry/solids/BREPS/include/G4Ellipse.hh +++ b/source/geometry/solids/BREPS/include/G4Ellipse.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Ellipse.hh,v 1.7.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Ellipse.hh,v 1.8 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Ellipse diff --git a/source/geometry/solids/BREPS/include/G4Ellipse.icc b/source/geometry/solids/BREPS/include/G4Ellipse.icc index 9474bd7304..a7eb31408a 100644 --- a/source/geometry/solids/BREPS/include/G4Ellipse.icc +++ b/source/geometry/solids/BREPS/include/G4Ellipse.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Ellipse.icc,v 1.5.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Ellipse.icc,v 1.6 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4FConicalSurface.hh b/source/geometry/solids/BREPS/include/G4FConicalSurface.hh index 8cc77196b0..63870f1ae3 100644 --- a/source/geometry/solids/BREPS/include/G4FConicalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4FConicalSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FConicalSurface.hh,v 1.10.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FConicalSurface.hh,v 1.11 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FConicalSurface diff --git a/source/geometry/solids/BREPS/include/G4FConicalSurface.icc b/source/geometry/solids/BREPS/include/G4FConicalSurface.icc index 743d08f8e0..7b4bcb48f8 100644 --- a/source/geometry/solids/BREPS/include/G4FConicalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4FConicalSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FConicalSurface.icc,v 1.2.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FConicalSurface.icc,v 1.3 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh index b17f9e2628..82c6aaccd3 100644 --- a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FCylindricalSurface.hh,v 1.10.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FCylindricalSurface.hh,v 1.11 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FCylindricalSurface diff --git a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.icc b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.icc index 5edc9045f9..e3faf0d9c6 100644 --- a/source/geometry/solids/BREPS/include/G4FCylindricalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4FCylindricalSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FCylindricalSurface.icc,v 1.2.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FCylindricalSurface.icc,v 1.3 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4FPlane.hh b/source/geometry/solids/BREPS/include/G4FPlane.hh index 4b7fc38ab1..bf557651da 100644 --- a/source/geometry/solids/BREPS/include/G4FPlane.hh +++ b/source/geometry/solids/BREPS/include/G4FPlane.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FPlane.hh,v 1.10.4.1 2001/06/28 19:08:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FPlane.hh,v 1.11 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FPlane diff --git a/source/geometry/solids/BREPS/include/G4FPlane.icc b/source/geometry/solids/BREPS/include/G4FPlane.icc index 867024aa5c..58aeee17f5 100644 --- a/source/geometry/solids/BREPS/include/G4FPlane.icc +++ b/source/geometry/solids/BREPS/include/G4FPlane.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FPlane.icc,v 1.3.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FPlane.icc,v 1.4 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Globals.hh b/source/geometry/solids/BREPS/include/G4Globals.hh index 4a31e130f1..2e33eb2a0e 100644 --- a/source/geometry/solids/BREPS/include/G4Globals.hh +++ b/source/geometry/solids/BREPS/include/G4Globals.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Globals.hh,v 1.3.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Globals.hh,v 1.4 2001/07/11 09:59:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Author: A.Breakstone // Adaptation: J.Sulkimo, P.Urban. diff --git a/source/geometry/solids/BREPS/include/G4Hyperbola.hh b/source/geometry/solids/BREPS/include/G4Hyperbola.hh index 589425d207..b9a938b40b 100644 --- a/source/geometry/solids/BREPS/include/G4Hyperbola.hh +++ b/source/geometry/solids/BREPS/include/G4Hyperbola.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Hyperbola.hh,v 1.7.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Hyperbola.hh,v 1.8 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Hyperbola diff --git a/source/geometry/solids/BREPS/include/G4Hyperbola.icc b/source/geometry/solids/BREPS/include/G4Hyperbola.icc index 6a7fee5f23..d097e373a2 100644 --- a/source/geometry/solids/BREPS/include/G4Hyperbola.icc +++ b/source/geometry/solids/BREPS/include/G4Hyperbola.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Hyperbola.icc,v 1.6.2.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Hyperbola.icc,v 1.7 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4KnotVector.hh b/source/geometry/solids/BREPS/include/G4KnotVector.hh index 25eb34c268..876eb8755d 100644 --- a/source/geometry/solids/BREPS/include/G4KnotVector.hh +++ b/source/geometry/solids/BREPS/include/G4KnotVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KnotVector.hh,v 1.6.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KnotVector.hh,v 1.7 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4KnotVector diff --git a/source/geometry/solids/BREPS/include/G4KnotVector.icc b/source/geometry/solids/BREPS/include/G4KnotVector.icc index 4fcbe55d92..434c612f3d 100644 --- a/source/geometry/solids/BREPS/include/G4KnotVector.icc +++ b/source/geometry/solids/BREPS/include/G4KnotVector.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KnotVector.icc,v 1.2.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KnotVector.icc,v 1.3 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Line.hh b/source/geometry/solids/BREPS/include/G4Line.hh index ba05a4ebc2..5747d950e6 100644 --- a/source/geometry/solids/BREPS/include/G4Line.hh +++ b/source/geometry/solids/BREPS/include/G4Line.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Line.hh,v 1.6.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Line.hh,v 1.7 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Line diff --git a/source/geometry/solids/BREPS/include/G4Line.icc b/source/geometry/solids/BREPS/include/G4Line.icc index 05aad8ee5b..38be45696b 100644 --- a/source/geometry/solids/BREPS/include/G4Line.icc +++ b/source/geometry/solids/BREPS/include/G4Line.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Line.icc,v 1.6.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Line.icc,v 1.7 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4OsloMatrix.hh b/source/geometry/solids/BREPS/include/G4OsloMatrix.hh index 4a7f3e357f..8e7ea14726 100644 --- a/source/geometry/solids/BREPS/include/G4OsloMatrix.hh +++ b/source/geometry/solids/BREPS/include/G4OsloMatrix.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OsloMatrix.hh,v 1.4.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OsloMatrix.hh,v 1.5 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4OsloMatrix diff --git a/source/geometry/solids/BREPS/include/G4OsloMatrix.icc b/source/geometry/solids/BREPS/include/G4OsloMatrix.icc index 8584400bf9..443ce6b27d 100644 --- a/source/geometry/solids/BREPS/include/G4OsloMatrix.icc +++ b/source/geometry/solids/BREPS/include/G4OsloMatrix.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OsloMatrix.icc,v 1.2.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OsloMatrix.icc,v 1.3 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Parabola.hh b/source/geometry/solids/BREPS/include/G4Parabola.hh index ff022866b3..c06afaa0bf 100644 --- a/source/geometry/solids/BREPS/include/G4Parabola.hh +++ b/source/geometry/solids/BREPS/include/G4Parabola.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Parabola.hh,v 1.7.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Parabola.hh,v 1.8 2001/07/11 09:59:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Parabola diff --git a/source/geometry/solids/BREPS/include/G4Parabola.icc b/source/geometry/solids/BREPS/include/G4Parabola.icc index fd915e9e39..1faf655a38 100644 --- a/source/geometry/solids/BREPS/include/G4Parabola.icc +++ b/source/geometry/solids/BREPS/include/G4Parabola.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Parabola.icc,v 1.5.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Parabola.icc,v 1.6 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4PlacedSolid.hh b/source/geometry/solids/BREPS/include/G4PlacedSolid.hh index a9200311ac..40c0a5b88b 100644 --- a/source/geometry/solids/BREPS/include/G4PlacedSolid.hh +++ b/source/geometry/solids/BREPS/include/G4PlacedSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlacedSolid.hh,v 1.6.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlacedSolid.hh,v 1.7 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4PlacedSolid diff --git a/source/geometry/solids/BREPS/include/G4PlacedSolid.icc b/source/geometry/solids/BREPS/include/G4PlacedSolid.icc index c449e4c9ef..4325003ff5 100644 --- a/source/geometry/solids/BREPS/include/G4PlacedSolid.icc +++ b/source/geometry/solids/BREPS/include/G4PlacedSolid.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlacedSolid.icc,v 1.4.4.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlacedSolid.icc,v 1.5 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4PlacementVector.hh b/source/geometry/solids/BREPS/include/G4PlacementVector.hh index b32612e543..218b0c1366 100644 --- a/source/geometry/solids/BREPS/include/G4PlacementVector.hh +++ b/source/geometry/solids/BREPS/include/G4PlacementVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlacementVector.hh,v 1.4.2.1 2001/06/28 19:08:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlacementVector.hh,v 1.5 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4PlacementVector diff --git a/source/geometry/solids/BREPS/include/G4Plane.hh b/source/geometry/solids/BREPS/include/G4Plane.hh index d70335d4f1..b868b3a054 100644 --- a/source/geometry/solids/BREPS/include/G4Plane.hh +++ b/source/geometry/solids/BREPS/include/G4Plane.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Plane.hh,v 1.4.4.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Plane.hh,v 1.5 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Plane diff --git a/source/geometry/solids/BREPS/include/G4Point3DVector.hh b/source/geometry/solids/BREPS/include/G4Point3DVector.hh index 9dd58a563b..9ca8925695 100644 --- a/source/geometry/solids/BREPS/include/G4Point3DVector.hh +++ b/source/geometry/solids/BREPS/include/G4Point3DVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Point3DVector.hh,v 1.5.2.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Point3DVector.hh,v 1.6 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Point3DVector diff --git a/source/geometry/solids/BREPS/include/G4PointRat.hh b/source/geometry/solids/BREPS/include/G4PointRat.hh index e1d07984f5..22acc33ca4 100644 --- a/source/geometry/solids/BREPS/include/G4PointRat.hh +++ b/source/geometry/solids/BREPS/include/G4PointRat.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointRat.hh,v 1.8.4.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointRat.hh,v 1.9 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4PointRat diff --git a/source/geometry/solids/BREPS/include/G4PointRat.icc b/source/geometry/solids/BREPS/include/G4PointRat.icc index 360c5e51f8..cbcb91c1f6 100644 --- a/source/geometry/solids/BREPS/include/G4PointRat.icc +++ b/source/geometry/solids/BREPS/include/G4PointRat.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointRat.icc,v 1.2.4.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointRat.icc,v 1.3 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh b/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh index 35e9e855b9..41da39d321 100644 --- a/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ProjectedSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProjectedSurface.hh,v 1.5.4.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProjectedSurface.hh,v 1.6 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ProjectedSurface diff --git a/source/geometry/solids/BREPS/include/G4ProjectedSurface.icc b/source/geometry/solids/BREPS/include/G4ProjectedSurface.icc index 3ca1ad2102..02392d86f3 100644 --- a/source/geometry/solids/BREPS/include/G4ProjectedSurface.icc +++ b/source/geometry/solids/BREPS/include/G4ProjectedSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProjectedSurface.icc,v 1.2.4.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProjectedSurface.icc,v 1.3 2001/07/11 09:59:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Ray.hh b/source/geometry/solids/BREPS/include/G4Ray.hh index bd978c748e..e5f65e5831 100644 --- a/source/geometry/solids/BREPS/include/G4Ray.hh +++ b/source/geometry/solids/BREPS/include/G4Ray.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Ray.hh,v 1.5.4.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Ray.hh,v 1.6 2001/07/11 09:59:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Ray diff --git a/source/geometry/solids/BREPS/include/G4Ray.icc b/source/geometry/solids/BREPS/include/G4Ray.icc index 360074cca7..f9836ce6fb 100644 --- a/source/geometry/solids/BREPS/include/G4Ray.icc +++ b/source/geometry/solids/BREPS/include/G4Ray.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Ray.icc,v 1.4.4.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Ray.icc,v 1.5 2001/07/11 09:59:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh b/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh index e97f16b9e6..3bd7d14ed1 100644 --- a/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh +++ b/source/geometry/solids/BREPS/include/G4RectangularTrimmedSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RectangularTrimmedSurface.hh,v 1.6.4.1 2001/06/28 19:08:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RectangularTrimmedSurface.hh,v 1.7 2001/07/11 09:59:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BezierSurface diff --git a/source/geometry/solids/BREPS/include/G4STEPEntity.hh b/source/geometry/solids/BREPS/include/G4STEPEntity.hh index 617ddd4b9c..1db7605c75 100644 --- a/source/geometry/solids/BREPS/include/G4STEPEntity.hh +++ b/source/geometry/solids/BREPS/include/G4STEPEntity.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4STEPEntity.hh,v 1.5.2.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4STEPEntity.hh,v 1.6 2001/07/11 09:59:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4STEPEntity diff --git a/source/geometry/solids/BREPS/include/G4Sort.hh b/source/geometry/solids/BREPS/include/G4Sort.hh index 619f14f581..a0aa1d11ab 100644 --- a/source/geometry/solids/BREPS/include/G4Sort.hh +++ b/source/geometry/solids/BREPS/include/G4Sort.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Sort.hh,v 1.3.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Sort.hh,v 1.4 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // diff --git a/source/geometry/solids/BREPS/include/G4SphericalSurface.hh b/source/geometry/solids/BREPS/include/G4SphericalSurface.hh index 24f4b7266a..f7ed4a8088 100644 --- a/source/geometry/solids/BREPS/include/G4SphericalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4SphericalSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SphericalSurface.hh,v 1.7.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SphericalSurface.hh,v 1.8 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4SphericalSurface diff --git a/source/geometry/solids/BREPS/include/G4SphericalSurface.icc b/source/geometry/solids/BREPS/include/G4SphericalSurface.icc index fa678c59e1..dca9b5ce1b 100644 --- a/source/geometry/solids/BREPS/include/G4SphericalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4SphericalSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SphericalSurface.icc,v 1.2.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SphericalSurface.icc,v 1.3 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4Surface.hh b/source/geometry/solids/BREPS/include/G4Surface.hh index 858b68d4f5..9bba696470 100644 --- a/source/geometry/solids/BREPS/include/G4Surface.hh +++ b/source/geometry/solids/BREPS/include/G4Surface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Surface.hh,v 1.6.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Surface.hh,v 1.7 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Surface diff --git a/source/geometry/solids/BREPS/include/G4Surface.icc b/source/geometry/solids/BREPS/include/G4Surface.icc index 408bc9e1fe..6a0739d327 100644 --- a/source/geometry/solids/BREPS/include/G4Surface.icc +++ b/source/geometry/solids/BREPS/include/G4Surface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Surface.icc,v 1.2.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Surface.icc,v 1.3 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4SurfaceBoundary.hh b/source/geometry/solids/BREPS/include/G4SurfaceBoundary.hh index 59649e54fe..a9bc195936 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceBoundary.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceBoundary.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SurfaceBoundary.hh,v 1.5.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceBoundary.hh,v 1.6 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4SurfaceBoundary diff --git a/source/geometry/solids/BREPS/include/G4SurfaceBoundary.icc b/source/geometry/solids/BREPS/include/G4SurfaceBoundary.icc index a3ac649927..e3788519b1 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceBoundary.icc +++ b/source/geometry/solids/BREPS/include/G4SurfaceBoundary.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SurfaceBoundary.icc,v 1.3.2.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceBoundary.icc,v 1.4 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4SurfaceList.hh b/source/geometry/solids/BREPS/include/G4SurfaceList.hh index 3050c8d0f5..0388db46d7 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceList.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SurfaceList.hh,v 1.4.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceList.hh,v 1.5 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4SurfaceList diff --git a/source/geometry/solids/BREPS/include/G4SurfaceOfLinearExtrusion.hh b/source/geometry/solids/BREPS/include/G4SurfaceOfLinearExtrusion.hh index 03bc5016e5..9bf01f2c24 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceOfLinearExtrusion.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceOfLinearExtrusion.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SurfaceOfLinearExtrusion.hh,v 1.3.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceOfLinearExtrusion.hh,v 1.4 2001/07/11 09:59:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4SurfaceOfLinearExtrusion diff --git a/source/geometry/solids/BREPS/include/G4SurfaceOfRevolution.hh b/source/geometry/solids/BREPS/include/G4SurfaceOfRevolution.hh index f5f99822d1..9a634a9791 100644 --- a/source/geometry/solids/BREPS/include/G4SurfaceOfRevolution.hh +++ b/source/geometry/solids/BREPS/include/G4SurfaceOfRevolution.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SurfaceOfRevolution.hh,v 1.3.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceOfRevolution.hh,v 1.4 2001/07/11 09:59:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4SurfaceOfRevolution diff --git a/source/geometry/solids/BREPS/include/G4ThreeMat.hh b/source/geometry/solids/BREPS/include/G4ThreeMat.hh index 8ba054e5f4..911a776bf0 100644 --- a/source/geometry/solids/BREPS/include/G4ThreeMat.hh +++ b/source/geometry/solids/BREPS/include/G4ThreeMat.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ThreeMat.hh,v 1.7.4.1 2001/06/28 19:08:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ThreeMat.hh,v 1.8 2001/07/11 09:59:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ThreeMat diff --git a/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh b/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh index 707733ddf0..3b391c94e4 100644 --- a/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh +++ b/source/geometry/solids/BREPS/include/G4ToroidalSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ToroidalSurface.hh,v 1.5.4.1 2001/06/28 19:08:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ToroidalSurface.hh,v 1.6 2001/07/11 09:59:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ToroidalSurface diff --git a/source/geometry/solids/BREPS/include/G4ToroidalSurface.icc b/source/geometry/solids/BREPS/include/G4ToroidalSurface.icc index f5b9a831a7..db8238b1e2 100644 --- a/source/geometry/solids/BREPS/include/G4ToroidalSurface.icc +++ b/source/geometry/solids/BREPS/include/G4ToroidalSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ToroidalSurface.icc,v 1.2.4.1 2001/06/28 19:08:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ToroidalSurface.icc,v 1.3 2001/07/11 09:59:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/BREPS/include/G4UVHit.hh b/source/geometry/solids/BREPS/include/G4UVHit.hh index d5ddb42f7c..547b5e3750 100644 --- a/source/geometry/solids/BREPS/include/G4UVHit.hh +++ b/source/geometry/solids/BREPS/include/G4UVHit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UVHit.hh,v 1.5.4.1 2001/06/28 19:08:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UVHit.hh,v 1.6 2001/07/11 09:59:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4UVHit diff --git a/source/geometry/solids/BREPS/src/G4Assembly.cc b/source/geometry/solids/BREPS/src/G4Assembly.cc index c8dd3acbdb..4f79511fe4 100644 --- a/source/geometry/solids/BREPS/src/G4Assembly.cc +++ b/source/geometry/solids/BREPS/src/G4Assembly.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Assembly.cc,v 1.4.2.1 2001/06/28 19:08:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Assembly.cc,v 1.5 2001/07/11 09:59:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Axis2Placement3D.cc b/source/geometry/solids/BREPS/src/G4Axis2Placement3D.cc index 585bf4bc6e..91a962da45 100644 --- a/source/geometry/solids/BREPS/src/G4Axis2Placement3D.cc +++ b/source/geometry/solids/BREPS/src/G4Axis2Placement3D.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2Placement3D.cc,v 1.5.4.1 2001/06/28 19:08:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2Placement3D.cc,v 1.6 2001/07/11 09:59:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolid.cc b/source/geometry/solids/BREPS/src/G4BREPSolid.cc index a2f039261c..8d4257004c 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolid.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolid.cc,v 1.18.2.1 2001/06/28 19:08:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolid.cc,v 1.20 2001/07/20 11:52:43 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -784,8 +784,7 @@ G4ThreeVector G4BREPSolid::SurfaceNormal(const G4ThreeVector& Pt) const // at a point on the surface // Note : the sense of the normal depends on the sense of the surface - G4Vector3D n(0,0,0); - G4int iplane; + G4int iplane; G4Vector3D norm; G4Ray r( Pt, G4Vector3D(1, 0, 0) ); @@ -801,7 +800,7 @@ G4ThreeVector G4BREPSolid::SurfaceNormal(const G4ThreeVector& Pt) const // calcul of the normal at this point norm = SurfaceVec[iplane]->SurfaceNormal(Pt); - n = G4ThreeVector ( norm.x(), norm.y(), norm.z() ); + G4ThreeVector n( norm.x(), norm.y(), norm.z() ); n = n.unit(); return n; diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc b/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc index 57f6ebbf9f..5d7a1a7265 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidBox.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidBox.cc,v 1.4.4.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidBox.cc,v 1.6 2001/07/20 12:47:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -98,10 +98,10 @@ EInside G4BREPSolidBox::Inside(register const G4ThreeVector& Pt) const // Get the bounding box extent G4Point3D min = bbox->GetBoxMin(); - min = min + -(0.5*kCarTolerance); + min += G4Point3D(-0.5*kCarTolerance,-0.5*kCarTolerance,-0.5*kCarTolerance); G4Point3D max = bbox->GetBoxMax(); - max = max + (0.5*kCarTolerance); + max += G4Point3D(0.5*kCarTolerance,0.5*kCarTolerance,0.5*kCarTolerance); if( (Point.x() < min.x() || Point.x() > max.x()) || (Point.y() < min.y() || Point.y() > max.y()) || diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc index 714611d938..7e83b01204 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidCone.cc @@ -20,9 +20,8 @@ // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4BREPSolidCone.cc,v 1.5.2.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidCone.cc,v 1.7 2001/07/11 09:59:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -52,7 +51,7 @@ G4BREPSolidCone::G4BREPSolidCone(const G4String& name, G4Vector3D tmporigin(origin); G4Point3D tmppoint; - tmppoint= origin + (length*tmpaxis); + tmppoint= G4Point3D(origin) + (length*tmpaxis); G4Point3D origin2(tmppoint.x(), tmppoint.y(), tmppoint.z()); tmppoint= origin2 + (large_radius*tmpaxis); diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc b/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc index 8b325571e9..255a412d85 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidCylinder.cc @@ -20,9 +20,8 @@ // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4BREPSolidCylinder.cc,v 1.5.2.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidCylinder.cc,v 1.7 2001/07/11 09:59:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -72,7 +71,7 @@ G4BREPSolidCylinder::G4BREPSolidCylinder(const G4String& name, // Creation of the second circular surface G4Point3D origin2 = G4Point3D( origin + ( length*axis ) ); - G4Point3D ArcStart2 = G4Point3D( origin2 + ( radius*direction ) ); + G4Point3D ArcStart2 = origin2 + G4Point3D( radius*direction ); G4Vector3D axis2 = axis1; tmp = new G4CircularCurve; diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc index 26f8596295..17c85cb04c 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidOpenPCone.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidOpenPCone.cc,v 1.5.4.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidOpenPCone.cc,v 1.6 2001/07/11 09:59:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc b/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc index 46856b023e..19e198dc98 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidPCone.cc @@ -20,9 +20,8 @@ // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4BREPSolidPCone.cc,v 1.18.2.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidPCone.cc,v 1.21 2001/07/20 11:52:43 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -459,8 +458,8 @@ EInside G4BREPSolidPCone::Inside(register const G4ThreeVector& Pt) const // Find the point of intersection on the surface and the normal // !!!! be carefull the distance is sqrt(dist) !!!! - G4ThreeVector IntersectionPoint = Pttmp + sqrt(dist)*Vtmp; - G4ThreeVector Normal = SurfaceVec[WhichSurface]->SurfaceNormal(IntersectionPoint); + G4Vector3D IntersectionPoint = Pttmp + sqrt(dist)*Vtmp; + G4Vector3D Normal = SurfaceVec[WhichSurface]->SurfaceNormal(IntersectionPoint); if ( Normal*Vtmp > 0 ) return kInside; return kOutside; @@ -472,7 +471,7 @@ G4ThreeVector G4BREPSolidPCone::SurfaceNormal(const G4ThreeVector& Pt) const // at a point on the surface // Note : the sense of the normal depends on the sense of the surface - G4Vector3D n(0,0,0); + G4ThreeVector n(0,0,0); G4int iplane; G4int normflag = 0; diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc b/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc index 275a98fc9d..341a040ff8 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidPolyhedra.cc @@ -20,9 +20,8 @@ // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4BREPSolidPolyhedra.cc,v 1.15.4.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidPolyhedra.cc,v 1.19 2001/08/01 21:32:59 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -40,6 +39,12 @@ // // History // ------- +// Bugfix 266 by Radovan Chytracek: +// The situation when phi1 = 0 dphi1 = 2*pi and all RMINs = 0.0 is handled +// now. In this case the inner planes are not created. The fix goes even +// further this means it consideres more than 2 z-planes and inner planes +// are not created whenever two consecutive RMINs are = 0.0 . +// // Corrections by S.Giani: // - Xaxis now corresponds to phi=0 // - partial angle = phiTotal / Nsides @@ -67,7 +72,7 @@ G4BREPSolidPolyhedra::G4BREPSolidPolyhedra(const G4String& name, G4double RMAX[] ) : G4BREPSolid(name) { - G4int sections= num_z_planes - 1; + G4int sections = num_z_planes - 1; if(dphi >= 2*pi-perMillion) nb_of_surfaces = 2*(sections * sides) + 2; @@ -75,7 +80,9 @@ G4BREPSolidPolyhedra::G4BREPSolidPolyhedra(const G4String& name, nb_of_surfaces = 2*(sections * sides) + 4; - SurfaceVec = new G4Surface*[nb_of_surfaces]; + //SurfaceVec = new G4Surface*[nb_of_surfaces]; + G4int MaxNbOfSurfaces = nb_of_surfaces; + G4Surface** MaxSurfaceVec = new G4Surface*[MaxNbOfSurfaces]; G4Vector3D Axis(0,0,1); G4Vector3D XAxis(1,0,0); @@ -104,6 +111,7 @@ G4BREPSolidPolyhedra::G4BREPSolidPolyhedra(const G4String& name, for(G4int b=0;b= 2*pi-perMillion) { // Create only end planes @@ -163,13 +182,51 @@ G4BREPSolidPolyhedra::G4BREPSolidPolyhedra(const G4String& name, TmpAxis.rotateZ(-PartAngle); } - // Add to surface list and set sense - SurfaceVec[nb_of_surfaces-2] = - new G4FPlane(&EndPointList, &InnerPointList); + if( RMIN[0] != 0.0 ) + { + // Add to surface list and set sense + MaxSurfaceVec[MaxNbOfSurfaces-2] = new G4FPlane(&EndPointList, &InnerPointList); + } + else + { + // Add to surface list and set sense + MaxSurfaceVec[MaxNbOfSurfaces-2] = new G4FPlane(&EndPointList, 0); + } + + if( RMIN[sections] != 0.0 ) + { + // Add to surface list and reverse sense + MaxSurfaceVec[MaxNbOfSurfaces-1] = new G4FPlane(&EndPointList2, &InnerPointList2, 0); + } + else + { + // Add to surface list and reverse sense + MaxSurfaceVec[MaxNbOfSurfaces-1] = new G4FPlane(&EndPointList2, 0, 0); + } - // Add to surface list and reverse sense - SurfaceVec[nb_of_surfaces-1] = - new G4FPlane(&EndPointList2, &InnerPointList2, 0); + // Now let's replicate the relevant surfaces into polyhedra's vector of surfaces + SurfaceVec = new G4Surface*[nb_of_surfaces]; + G4int sf = 0; + for( G4int srf = 0; srf < MaxNbOfSurfaces; srf++ ) + { + if( MaxSurfaceVec[srf] != 0 ) + { + if( sf < nb_of_surfaces ) + { + SurfaceVec[sf] = MaxSurfaceVec[srf]; + } + sf++; + } + } + + if( sf != nb_of_surfaces ) + { + G4cerr << "Bad number of surfaces!\a\n" << "sf: " << sf << " nb_of_surfaces: " << nb_of_surfaces << G4endl; + // Should we call G4Exception here ? + } + + // Clean up the temporary vector of surfaces + delete [] MaxSurfaceVec; } else { @@ -194,7 +251,7 @@ G4BREPSolidPolyhedra::G4BREPSolidPolyhedra(const G4String& name, // Create the lateral planars TmpAxis = XAxis; - G4ThreeVector TmpAxis2 = XAxis; + G4Vector3D TmpAxis2 = XAxis; TmpAxis.rotateZ(phi1); TmpAxis2.rotateZ(phi1); TmpAxis2.rotateZ(dphi); @@ -347,7 +404,9 @@ EInside G4BREPSolidPolyhedra::Inside(register const G4ThreeVector& Pt) const // Check if point is inside the Polyhedra bounding box if( !GetBBox()->Inside(Pttmp) ) + { return kOutside; + } // Set the surfaces to active again Reset(); @@ -370,21 +429,25 @@ EInside G4BREPSolidPolyhedra::Inside(register const G4ThreeVector& Pt) const // was not found before if( (SurfaceVec[a]->Intersect(r)) & 1 ) { - // test if the point is on the surface - if(SurfaceVec[a]->GetDistance() <= kCarTolerance*kCarTolerance) - return kSurface; + // test if the point is on the surface + if(SurfaceVec[a]->GetDistance() <= kCarTolerance*kCarTolerance) + { + return kSurface; + } + + // test if this intersection was found before + for(G4int i=0; iGetDistance() == SurfaceVec[i]->GetDistance()) + { + samehit++; + break; + } - // test if this intersection was found before - for(G4int i=0; iGetDistance() == SurfaceVec[i]->GetDistance()) - { - samehit++; - break; - } - - // count the number of surfaces intersected by the ray - if(!samehit) - hits++; + // count the number of surfaces intersected by the ray + if(!samehit) + { + hits++; + } } } } @@ -392,9 +455,13 @@ EInside G4BREPSolidPolyhedra::Inside(register const G4ThreeVector& Pt) const // if the number of surfaces intersected is odd, // the point is inside the solid if(hits&1) + { return kInside; + } else + { return kOutside; + } } G4ThreeVector @@ -404,7 +471,6 @@ G4BREPSolidPolyhedra::SurfaceNormal(const G4ThreeVector& Pt) const // at a point on the surface // Note : the sense of the normal depends on the sense of the surface - G4Vector3D n(0,0,0); G4int iplane; G4Vector3D norm; @@ -421,7 +487,7 @@ G4BREPSolidPolyhedra::SurfaceNormal(const G4ThreeVector& Pt) const // calcul of the normal at this point norm = SurfaceVec[iplane]->SurfaceNormal(Pt); - n = G4ThreeVector ( norm.x(), norm.y(), norm.z() ); + G4ThreeVector n( norm.x(), norm.y(), norm.z() ); n = n.unit(); return n; @@ -439,7 +505,7 @@ G4double G4BREPSolidPolyhedra::DistanceToIn(const G4ThreeVector& Pt) const // Set the surfaces to active again Reset(); - + // compute the shortest distance of the point to each surfaces // Be careful : it's a signed value for(a=0; a< nb_of_surfaces; a++) @@ -462,11 +528,15 @@ G4double G4BREPSolidPolyhedra::DistanceToIn(const G4ThreeVector& Pt) const delete[] dists; if(Dist == kInfinity) + { // the point is inside the solid or on a surface return 0; + } else + { //return Dist; return fabs(Dist); + } } G4double @@ -500,25 +570,33 @@ G4BREPSolidPolyhedra::DistanceToIn(register const G4ThreeVector& Pt, { if(SurfaceVec[a]->IsActive()) { + G4int intersects = SurfaceVec[a]->Intersect(r); // test if the ray intersect the surface - if( (SurfaceVec[a]->Intersect(r)) ) + if( intersects != 0 ) { - // if more than 1 surface is intersected, - // take the nearest one - if( SurfaceVec[a]->GetDistance() < ShortestDistance ) - if( SurfaceVec[a]->GetDistance() > halfTolerance ) - { - ShortestDistance = SurfaceVec[a]->GetDistance(); - } - else - { - // the point is within the boundary - // ignored it if the direction is away from the boundary - G4Vector3D Norm = SurfaceVec[a]->SurfaceNormal(Pttmp); + G4double surfDistance = SurfaceVec[a]->GetDistance(); + + // if more than 1 surface is intersected, + // take the nearest one + if( surfDistance < ShortestDistance ) + { + //if( surfDistance > halfTolerance ) + if( surfDistance > halfTolerance*halfTolerance ) + { + ShortestDistance = surfDistance; + } + else + { + // the point is within the boundary + // ignored it if the direction is away from the boundary + G4Vector3D Norm = SurfaceVec[a]->SurfaceNormal(Pttmp); - if( (Norm * Vtmp) < 0 ) - ShortestDistance = SurfaceVec[a]->GetDistance(); - } + if( (Norm * Vtmp) < 0 ) + { + ShortestDistance = surfDistance; + } + } + } } } } @@ -526,10 +604,14 @@ G4BREPSolidPolyhedra::DistanceToIn(register const G4ThreeVector& Pt, // Be carreful ! // SurfaceVec->Distance is in fact the squared distance if(ShortestDistance != kInfinity) + { return sqrt(ShortestDistance); + } else + { // no intersection, return kInfinity return kInfinity; + } } G4double @@ -575,37 +657,46 @@ G4BREPSolidPolyhedra::DistanceToOut(register const G4ThreeVector& Pt, for(a=0; a< nb_of_surfaces; a++) { + double surfDistance = SurfaceVec[a]->GetDistance(); + if(SurfaceVec[a]->IsActive()) { + G4int intersects = SurfaceVec[a]->Intersect(r); // test if the ray intersects the surface - if( (SurfaceVec[a]->Intersect(r)) ) + if( intersects != 0 ) { parity += 1; - // if more than 1 surface is intersected, - // take the nearest one - if( SurfaceVec[a]->GetDistance() < ShortestDistance ) - if( SurfaceVec[a]->GetDistance() > halfTolerance*halfTolerance ) - { - ShortestDistance = SurfaceVec[a]->GetDistance(); - } - else - { - // the point is within the boundary: ignore it - parity -= 1; - } - } + // if more than 1 surface is intersected, + // take the nearest one + if( surfDistance < ShortestDistance ) + { + if( surfDistance > halfTolerance*halfTolerance ) + { + ShortestDistance = surfDistance; + } + else + { + // the point is within the boundary: ignore it + parity -= 1; + } + } + } } } // Be careful ! // SurfaceVec->Distance is in fact the squared distance if((ShortestDistance != kInfinity) && (parity&1)) + { return sqrt(ShortestDistance); + } else + { // if no intersection is found, the point is outside // so return 0 return 0; + } } G4double G4BREPSolidPolyhedra::DistanceToOut(const G4ThreeVector& Pt) const @@ -622,8 +713,9 @@ G4double G4BREPSolidPolyhedra::DistanceToOut(const G4ThreeVector& Pt) const // calcul of the shortest distance of the point to each surfaces // Be carreful : it's a signed value - for(a=0; a< nb_of_surfaces; a++) - dists[a] = SurfaceVec[a]->HowNear(Pt); + for(a=0; a< nb_of_surfaces; a++) { + dists[a] = SurfaceVec[a]->HowNear(Pt); + } G4double Dist = kInfinity; @@ -635,19 +727,22 @@ G4double G4BREPSolidPolyhedra::DistanceToOut(const G4ThreeVector& Pt) const // function. But I don`t know if it is really needed because dToOut is // called only if the point is inside ) - for(a = 0; a < nb_of_surfaces; a++) - if( fabs(Dist) > fabs(dists[a]) ) + for(a = 0; a < nb_of_surfaces; a++) { + if( fabs(Dist) > fabs(dists[a]) ) { //if( dists[a] <= 0) - Dist = dists[a]; + Dist = dists[a]; + } + } delete[] dists; - if(Dist == kInfinity) + if(Dist == kInfinity) { // the point is ouside the solid or on a surface return 0; - else + } else { // return Dist; return fabs(Dist); + } } // In graphics_reps: diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc b/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc index b7ebbc0cb6..d78bd95b00 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidSphere.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidSphere.cc,v 1.4.4.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidSphere.cc,v 1.5 2001/07/11 09:59:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc b/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc index 3bd6aff576..7de30d9edf 100644 --- a/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc +++ b/source/geometry/solids/BREPS/src/G4BREPSolidTorus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BREPSolidTorus.cc,v 1.4.4.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BREPSolidTorus.cc,v 1.5 2001/07/11 09:59:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BSplineCurve.cc b/source/geometry/solids/BREPS/src/G4BSplineCurve.cc index b8bcea1719..54e4837c06 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineCurve.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineCurve.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineCurve.cc,v 1.7.2.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineCurve.cc,v 1.9 2001/07/17 07:17:15 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file @@ -47,8 +47,7 @@ void G4BSplineCurve::Init(G4int degree0, G4Point3DVector* controlPointsList0, degree= degree0; G4int nbpoints = controlPointsList0->size(); - controlPointsList = new G4Point3DVector(); - controlPointsList->reserve(nbpoints); + controlPointsList = new G4Point3DVector(nbpoints,G4Point3D(0,0,0)); G4int a; for(a = 0; a < nbpoints; a++) @@ -57,16 +56,14 @@ void G4BSplineCurve::Init(G4int degree0, G4Point3DVector* controlPointsList0, } G4int nbknots = knots0->size(); - knots = new G4doubleVector(); - knots->reserve(nbknots); + knots = new G4doubleVector(nbknots,0.); for(a = 0; a < nbknots; a++) { (*knots)[a] = (*knots0)[a]; } G4int nbweights = weightsData0->size(); - weightsData = new G4doubleVector(); - weightsData->reserve(nbweights); + weightsData = new G4doubleVector(nbweights,0.); for(a = 0; a < nbweights; a++) { (*weightsData)[a] = (*weightsData0)[a]; diff --git a/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc b/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc index a8fd59e5bb..714cf35e94 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineCurveWithKnots.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineCurveWithKnots.cc,v 1.3.4.1 2001/06/28 19:08:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineCurveWithKnots.cc,v 1.4 2001/07/11 09:59:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BSplineSurface.cc b/source/geometry/solids/BREPS/src/G4BSplineSurface.cc index 9113286cb6..60ce4a5ab8 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineSurface.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurface.cc,v 1.10.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurface.cc,v 1.11 2001/07/11 09:59:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc b/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc index 67da79aa35..9b16438250 100644 --- a/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc +++ b/source/geometry/solids/BREPS/src/G4BSplineSurfaceWithKnots.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurfaceWithKnots.cc,v 1.2.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurfaceWithKnots.cc,v 1.3 2001/07/11 09:59:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BezierSurface.cc b/source/geometry/solids/BREPS/src/G4BezierSurface.cc index 53718b1ac8..e618579017 100644 --- a/source/geometry/solids/BREPS/src/G4BezierSurface.cc +++ b/source/geometry/solids/BREPS/src/G4BezierSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BezierSurface.cc,v 1.5.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BezierSurface.cc,v 1.6 2001/07/11 09:59:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4BoundingBox3D.cc b/source/geometry/solids/BREPS/src/G4BoundingBox3D.cc index 90b34011f9..6c8d084d72 100644 --- a/source/geometry/solids/BREPS/src/G4BoundingBox3D.cc +++ b/source/geometry/solids/BREPS/src/G4BoundingBox3D.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BoundingBox3D.cc,v 1.5.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BoundingBox3D.cc,v 1.6 2001/07/11 09:59:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4CircularCurve.cc b/source/geometry/solids/BREPS/src/G4CircularCurve.cc index 273411af87..2d55e9d10f 100644 --- a/source/geometry/solids/BREPS/src/G4CircularCurve.cc +++ b/source/geometry/solids/BREPS/src/G4CircularCurve.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CircularCurve.cc,v 1.5.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CircularCurve.cc,v 1.6 2001/07/11 09:59:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4CompositeCurve.cc b/source/geometry/solids/BREPS/src/G4CompositeCurve.cc index 95dc663076..55ca0cd0e7 100644 --- a/source/geometry/solids/BREPS/src/G4CompositeCurve.cc +++ b/source/geometry/solids/BREPS/src/G4CompositeCurve.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CompositeCurve.cc,v 1.9.2.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CompositeCurve.cc,v 1.10 2001/07/11 09:59:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Conic.cc b/source/geometry/solids/BREPS/src/G4Conic.cc index 6c609a2d2b..1803d0f94a 100644 --- a/source/geometry/solids/BREPS/src/G4Conic.cc +++ b/source/geometry/solids/BREPS/src/G4Conic.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Conic.cc,v 1.5.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Conic.cc,v 1.6 2001/07/11 09:59:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ConicalSurface.cc b/source/geometry/solids/BREPS/src/G4ConicalSurface.cc index ebd33e8e5a..a08120dc96 100644 --- a/source/geometry/solids/BREPS/src/G4ConicalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ConicalSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConicalSurface.cc,v 1.5.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConicalSurface.cc,v 1.6 2001/07/11 09:59:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ControlPoints.cc b/source/geometry/solids/BREPS/src/G4ControlPoints.cc index d606fa2a7b..9d3224bd5d 100644 --- a/source/geometry/solids/BREPS/src/G4ControlPoints.cc +++ b/source/geometry/solids/BREPS/src/G4ControlPoints.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ControlPoints.cc,v 1.5.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ControlPoints.cc,v 1.6 2001/07/11 09:59:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Curve.cc b/source/geometry/solids/BREPS/src/G4Curve.cc index 0798b9b218..8bf155cb15 100644 --- a/source/geometry/solids/BREPS/src/G4Curve.cc +++ b/source/geometry/solids/BREPS/src/G4Curve.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Curve.cc,v 1.5.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Curve.cc,v 1.6 2001/07/11 09:59:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4CurvePoint.cc b/source/geometry/solids/BREPS/src/G4CurvePoint.cc index 23571c66cc..7f3c221230 100644 --- a/source/geometry/solids/BREPS/src/G4CurvePoint.cc +++ b/source/geometry/solids/BREPS/src/G4CurvePoint.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurvePoint.cc,v 1.3.4.1 2001/06/28 19:08:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurvePoint.cc,v 1.4 2001/07/11 09:59:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4CurveRayIntersection.cc b/source/geometry/solids/BREPS/src/G4CurveRayIntersection.cc index b4847dfbbd..4c35a5d1ef 100644 --- a/source/geometry/solids/BREPS/src/G4CurveRayIntersection.cc +++ b/source/geometry/solids/BREPS/src/G4CurveRayIntersection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurveRayIntersection.cc,v 1.3.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurveRayIntersection.cc,v 1.4 2001/07/11 09:59:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc b/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc index d2ac54ceb2..711b844d92 100644 --- a/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4CylindricalSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CylindricalSurface.cc,v 1.3.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CylindricalSurface.cc,v 1.4 2001/07/11 09:59:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Ellipse.cc b/source/geometry/solids/BREPS/src/G4Ellipse.cc index 0075885135..36961e51e1 100644 --- a/source/geometry/solids/BREPS/src/G4Ellipse.cc +++ b/source/geometry/solids/BREPS/src/G4Ellipse.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Ellipse.cc,v 1.6.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Ellipse.cc,v 1.7 2001/07/11 09:59:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4FConicalSurface.cc b/source/geometry/solids/BREPS/src/G4FConicalSurface.cc index bfaef409d5..7eedfaa30f 100644 --- a/source/geometry/solids/BREPS/src/G4FConicalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4FConicalSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FConicalSurface.cc,v 1.14.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FConicalSurface.cc,v 1.15 2001/07/11 09:59:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc b/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc index 9e9062455f..80c3dc461c 100644 --- a/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4FCylindricalSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FCylindricalSurface.cc,v 1.11.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FCylindricalSurface.cc,v 1.12 2001/07/11 09:59:45 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4FPlane.cc b/source/geometry/solids/BREPS/src/G4FPlane.cc index b07fbf589c..f345d0ca80 100644 --- a/source/geometry/solids/BREPS/src/G4FPlane.cc +++ b/source/geometry/solids/BREPS/src/G4FPlane.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FPlane.cc,v 1.12.2.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FPlane.cc,v 1.13 2001/07/11 09:59:45 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Hyperbola.cc b/source/geometry/solids/BREPS/src/G4Hyperbola.cc index 6cfb8e423a..38499ac355 100644 --- a/source/geometry/solids/BREPS/src/G4Hyperbola.cc +++ b/source/geometry/solids/BREPS/src/G4Hyperbola.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Hyperbola.cc,v 1.6.2.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Hyperbola.cc,v 1.7 2001/07/11 09:59:45 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4KnotVector.cc b/source/geometry/solids/BREPS/src/G4KnotVector.cc index 21ab0b2c96..c6ab0b5ffa 100644 --- a/source/geometry/solids/BREPS/src/G4KnotVector.cc +++ b/source/geometry/solids/BREPS/src/G4KnotVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KnotVector.cc,v 1.5.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KnotVector.cc,v 1.6 2001/07/11 09:59:45 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Line.cc b/source/geometry/solids/BREPS/src/G4Line.cc index 4be11c2ba5..5f64860fdd 100644 --- a/source/geometry/solids/BREPS/src/G4Line.cc +++ b/source/geometry/solids/BREPS/src/G4Line.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Line.cc,v 1.6.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Line.cc,v 1.7 2001/07/11 09:59:45 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4OsloMatrix.cc b/source/geometry/solids/BREPS/src/G4OsloMatrix.cc index 78c6854017..2ae529b369 100644 --- a/source/geometry/solids/BREPS/src/G4OsloMatrix.cc +++ b/source/geometry/solids/BREPS/src/G4OsloMatrix.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OsloMatrix.cc,v 1.4.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OsloMatrix.cc,v 1.5 2001/07/11 09:59:45 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Parabola.cc b/source/geometry/solids/BREPS/src/G4Parabola.cc index b682228617..395eaf39ab 100644 --- a/source/geometry/solids/BREPS/src/G4Parabola.cc +++ b/source/geometry/solids/BREPS/src/G4Parabola.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Parabola.cc,v 1.4.4.1 2001/06/28 19:08:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Parabola.cc,v 1.5 2001/07/11 09:59:45 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4PlacedSolid.cc b/source/geometry/solids/BREPS/src/G4PlacedSolid.cc index 6d45734f51..9f2bd189c6 100644 --- a/source/geometry/solids/BREPS/src/G4PlacedSolid.cc +++ b/source/geometry/solids/BREPS/src/G4PlacedSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlacedSolid.cc,v 1.3.4.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlacedSolid.cc,v 1.4 2001/07/11 09:59:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4PointRat.cc b/source/geometry/solids/BREPS/src/G4PointRat.cc index 97cd09c615..dcdf277eaa 100644 --- a/source/geometry/solids/BREPS/src/G4PointRat.cc +++ b/source/geometry/solids/BREPS/src/G4PointRat.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointRat.cc,v 1.4.4.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointRat.cc,v 1.5 2001/07/11 09:59:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc b/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc index 7163e99633..b0935e80e1 100644 --- a/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ProjectedSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProjectedSurface.cc,v 1.7.2.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProjectedSurface.cc,v 1.8 2001/07/11 09:59:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Ray.cc b/source/geometry/solids/BREPS/src/G4Ray.cc index 31e00eefde..478538b6c4 100644 --- a/source/geometry/solids/BREPS/src/G4Ray.cc +++ b/source/geometry/solids/BREPS/src/G4Ray.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Ray.cc,v 1.6.2.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Ray.cc,v 1.7 2001/07/11 09:59:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc b/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc index 88c8d2ff51..a950e7e7f0 100644 --- a/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc +++ b/source/geometry/solids/BREPS/src/G4RectangularTrimmedSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RectangularTrimmedSurface.cc,v 1.5.4.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RectangularTrimmedSurface.cc,v 1.6 2001/07/11 09:59:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Sort.cc b/source/geometry/solids/BREPS/src/G4Sort.cc index 6da87443a4..8f8ba04f7c 100644 --- a/source/geometry/solids/BREPS/src/G4Sort.cc +++ b/source/geometry/solids/BREPS/src/G4Sort.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Sort.cc,v 1.3.4.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Sort.cc,v 1.4 2001/07/11 09:59:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 source file diff --git a/source/geometry/solids/BREPS/src/G4SphericalSurface.cc b/source/geometry/solids/BREPS/src/G4SphericalSurface.cc index 2a07ff875d..54c6c205be 100644 --- a/source/geometry/solids/BREPS/src/G4SphericalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4SphericalSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SphericalSurface.cc,v 1.4.4.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SphericalSurface.cc,v 1.5 2001/07/11 09:59:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4Surface.cc b/source/geometry/solids/BREPS/src/G4Surface.cc index 616cf4e668..2ebf3b074e 100644 --- a/source/geometry/solids/BREPS/src/G4Surface.cc +++ b/source/geometry/solids/BREPS/src/G4Surface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Surface.cc,v 1.8.2.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Surface.cc,v 1.9 2001/07/11 09:59:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4SurfaceBoundary.cc b/source/geometry/solids/BREPS/src/G4SurfaceBoundary.cc index 1023e2be13..a937a2938f 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceBoundary.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceBoundary.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SurfaceBoundary.cc,v 1.9.2.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceBoundary.cc,v 1.10 2001/07/11 09:59:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4SurfaceList.cc b/source/geometry/solids/BREPS/src/G4SurfaceList.cc index 863f87ba9b..03ff113474 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceList.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SurfaceList.cc,v 1.5.4.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceList.cc,v 1.6 2001/07/11 09:59:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4SurfaceOfLinearExtrusion.cc b/source/geometry/solids/BREPS/src/G4SurfaceOfLinearExtrusion.cc index b26a42655f..51a35bc080 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceOfLinearExtrusion.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceOfLinearExtrusion.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SurfaceOfLinearExtrusion.cc,v 1.2.4.1 2001/06/28 19:08:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceOfLinearExtrusion.cc,v 1.3 2001/07/11 09:59:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4SurfaceOfRevolution.cc b/source/geometry/solids/BREPS/src/G4SurfaceOfRevolution.cc index 5c6bfb043b..f2bd582561 100644 --- a/source/geometry/solids/BREPS/src/G4SurfaceOfRevolution.cc +++ b/source/geometry/solids/BREPS/src/G4SurfaceOfRevolution.cc @@ -24,8 +24,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4SurfaceOfRevolution.cc,v 1.2.4.1 2001/06/28 19:08:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SurfaceOfRevolution.cc,v 1.3 2001/07/11 09:59:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ThreeMat.cc b/source/geometry/solids/BREPS/src/G4ThreeMat.cc index 94c94d3798..84e2bbefcf 100644 --- a/source/geometry/solids/BREPS/src/G4ThreeMat.cc +++ b/source/geometry/solids/BREPS/src/G4ThreeMat.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ThreeMat.cc,v 1.5.4.1 2001/06/28 19:08:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ThreeMat.cc,v 1.6 2001/07/11 09:59:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc b/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc index 122175c09e..cd010cfa7b 100644 --- a/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc +++ b/source/geometry/solids/BREPS/src/G4ToroidalSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ToroidalSurface.cc,v 1.5.4.1 2001/06/28 19:08:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ToroidalSurface.cc,v 1.6 2001/07/11 09:59:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // GEANT 4 class source file diff --git a/source/geometry/solids/Boolean/History b/source/geometry/solids/Boolean/History index 3efd1f94f8..22309a63ae 100644 --- a/source/geometry/solids/Boolean/History +++ b/source/geometry/solids/Boolean/History @@ -1,5 +1,5 @@ -$Id: History,v 1.21 2001/05/30 14:06:05 gcosmo Exp $ +$Id: History,v 1.24 2001/11/08 15:46:31 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,6 +20,19 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + Nov 08 2001 Gabriele Cosmo geom-solid-bool-V03-02-02 + - Fix for verbosity in G4ReflectionFactory.cc. Reduced of one level. + + Oct 18 2001 Gabriele Cosmo geom-solid-bool-V03-02-01 + - Introduced first implementation of classes G4ReflectedSolid and + G4ReflectionFactory for reflections of positioned volumes + (courtesy of V.Grichine and I.Hrivnacova). + - Fixed bug in G4ReflectedSolid::CreatePolyhedron(). + + Aug 13 2001 Vladimir Grichine geom-solid-bool-V03-02-00 + - Introduced G4BOOLDEBUG flag and replaced G4Exception statements with + simple warnings to G4cerr for rare occurences of anomalous conditions. + May 30 2001 Vladimir Grichine geom-solid-bool-V03-01-00 - G4IntersectionSolid: fix in DistanceToIn(p,v) resolving bug observed in problem report #153. diff --git a/source/geometry/solids/Boolean/include/G4BooleanSolid.hh b/source/geometry/solids/Boolean/include/G4BooleanSolid.hh index 1620eb7bc9..af8b81f8f0 100644 --- a/source/geometry/solids/Boolean/include/G4BooleanSolid.hh +++ b/source/geometry/solids/Boolean/include/G4BooleanSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BooleanSolid.hh,v 1.4.4.1 2001/06/28 19:08:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BooleanSolid.hh,v 1.5 2001/07/11 09:59:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4BooleanSolid diff --git a/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh b/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh index 22f315158b..ad89f6f915 100644 --- a/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh +++ b/source/geometry/solids/Boolean/include/G4DisplacedSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DisplacedSolid.hh,v 1.10.4.1 2001/06/28 19:08:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DisplacedSolid.hh,v 1.11 2001/07/11 09:59:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4DisplacedSolid diff --git a/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh b/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh index fc033482fd..b1acaa2c91 100644 --- a/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4IntersectionSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IntersectionSolid.hh,v 1.4.4.1 2001/06/28 19:08:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IntersectionSolid.hh,v 1.5 2001/07/11 09:59:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4IntersectionSolid diff --git a/source/geometry/solids/Boolean/include/G4ReflectedSolid.hh b/source/geometry/solids/Boolean/include/G4ReflectedSolid.hh new file mode 100644 index 0000000000..bff9f807fb --- /dev/null +++ b/source/geometry/solids/Boolean/include/G4ReflectedSolid.hh @@ -0,0 +1,143 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ReflectedSolid.hh,v 1.2 2001/10/18 10:07:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// class G4ReflectedSolid +// +// Class description: +// +// A Reflected solid is a solid that has been shifted from its original +// frame of reference to a new one. + +// History: +// +// 23.07.01 V.Grichine, creation according John/Gabriele recommendations + +#ifndef G4ReflectedSolid_HH +#define G4ReflectedSolid_HH + +#include "G4VSolid.hh" +#include "G4RotationMatrix.hh" +#include "G4ThreeVector.hh" +#include "G4Transform3D.hh" +#include "G4AffineTransform.hh" + +class G4ReflectedSolid : public G4VSolid +{ + public: // with description + + G4ReflectedSolid( const G4String& pName, + G4VSolid* pSolid , + const G4Transform3D& transform ) ; + // For use in instantiating a transient instance. + + virtual ~G4ReflectedSolid() ; + // Virtual destructor. + + public: // without description + + // Includes all the methods that a solid requires. + + EInside Inside( const G4ThreeVector& p ) const ; + + G4bool CalculateExtent(const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pMin, G4double& pMax) const ; + + G4ThreeVector SurfaceNormal( const G4ThreeVector& p ) const ; + + G4double DistanceToIn( const G4ThreeVector& p, + const G4ThreeVector& v ) const ; + + G4double DistanceToIn( const G4ThreeVector& p) const ; + + G4double DistanceToOut( const G4ThreeVector& p, + const G4ThreeVector& v, + const G4bool calcNorm=false, + G4bool *validNorm=0, + G4ThreeVector *n=0 ) const ; + + G4double DistanceToOut( const G4ThreeVector& p ) const ; + + + void ComputeDimensions( G4VPVParameterisation* p, + const G4int n, + const G4VPhysicalVolume* pRep ) ; + + public: // with description + + virtual G4GeometryType GetEntityType() const; + + virtual const G4ReflectedSolid* GetReflectedSolidPtr() const; + virtual G4ReflectedSolid* GetReflectedSolidPtr(); + // If the Solid is a "G4ReflectedSolid", + // return a self pointer else return 0. + + G4VSolid* GetConstituentMovedSolid() const; + G4AffineTransform GetTransform() const; + void SetTransform(G4AffineTransform&); + G4AffineTransform GetDirectTransform() const; + void SetDirectTransform(G4AffineTransform&); + // Accessors methods. + + G4RotationMatrix GetFrameRotation() const; + void SetFrameRotation(const G4RotationMatrix&); + G4ThreeVector GetFrameTranslation() const; + void SetFrameTranslation(const G4ThreeVector&); + // Get/Set the rotation/translation, as applied to the + // frame of reference. + + G4RotationMatrix GetObjectRotation() const; + void SetObjectRotation(const G4RotationMatrix&); + G4ThreeVector GetObjectTranslation() const; + void SetObjectTranslation(const G4ThreeVector&); + // Get/Set the rotation/translation, as applied to the object. + + public: // without description + + void DescribeYourselfTo ( G4VGraphicsScene& scene ) const ; + G4Polyhedron* CreatePolyhedron () const ; + G4NURBS* CreateNURBS () const ; + // For creating graphical representations (ie for visualisation). + + protected: + + G4VSolid* fPtrSolid ; + G4AffineTransform* fPtrTransform ; + G4AffineTransform* fDirectTransform ; + + G4Transform3D* fPtrTransform3D ; + G4Transform3D* fDirectTransform3D ; + + private: + + G4ReflectedSolid(const G4ReflectedSolid&); + G4ReflectedSolid& operator=(const G4ReflectedSolid&); + // Private copy constructor and assignment operator. +} ; + +#endif diff --git a/source/geometry/solids/Boolean/include/G4ReflectionFactory.hh b/source/geometry/solids/Boolean/include/G4ReflectionFactory.hh new file mode 100644 index 0000000000..ffa12c258d --- /dev/null +++ b/source/geometry/solids/Boolean/include/G4ReflectionFactory.hh @@ -0,0 +1,195 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ReflectionFactory.hh,v 1.1 2001/10/18 10:05:08 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// class G4Reflection +// +// Class description: +// +// Class providing functions for volumes placements with a general +// transfomation that can contain reflection. +// Reflection is then applied to a solid: a new G4ReflectedSolid +// instance is created and is placed with a transformation containing +// pure rotation and translation only. +// The pair of constituent and reflected logical volumes is +// considered as a generalized logical volume that is addressed +// by user specifying the constituent logical volume. +// +// Decomposition of a general transformation that can include reflection +// in a "reflection-free" transformation: +// +// x(inM') = TG*x(inM) TG - general transformation +// = T*(R*x(inM)) T - "reflection-free" transformation +// = T* x(inReflM) +// +// Daughters transformation: +// When a volume V containing daughter D with transformation TD +// is placed in mother M with a general tranformation TGV, +// the TGV is decomposed. New reflected volume ReflV containing +// a new daughter ReflD with reflected transformation ReflTD is created: +// +// x(inV) = TD * x(inD); +// x(inM) = TGV * x(inV) +// = TV * R * x(inV) +// = TV * R * TD * x(inD) +// = TV * R*TD*R-1 * R*x(inD) +// = TV * ReflTD * x(inReflD) + +// Author: Ivana Hrivnacova, 16.10.2001 (Ivana.Hrivnacova@cern.ch) + +#ifndef G4_REFLECTION_FACTORY_HH +#define G4_REFLECTION_FACTORY_HH + +#include "G4Transform3D.hh" +#include "globals.hh" +#include "geomdefs.hh" + +#include "g4std/map" + +class G4VPhysicalVolume; +class G4LogicalVolume; +class G4VSolid; + +typedef G4std::pair G4PhysicalVolumesPair; + +class G4ReflectionFactory +{ + typedef G4std::map > LogicalVolumesMap; + typedef LogicalVolumesMap::const_iterator LogicalVolumesMapIterator; + + public: // with description + + virtual ~G4ReflectionFactory(); + // Virtual destructor. + + static G4ReflectionFactory* Instance(); + // Gets pointer to the instance of the singleton. + + G4PhysicalVolumesPair Place(const G4Transform3D& transform3D, + const G4String& name, + G4LogicalVolume* LV, + G4LogicalVolume* motherLV, + G4bool isMany, + G4int copyNo); + // Evaluates the passed transformation; if it contains reflection + // it performs its decomposition, creates new reflected solid and + // logical volume (or retrieves them from a map if the reflected + // objects were already created), transforms the daughters (if present) + // and place it in the given mother. + // The result is a pair of physical volumes; + // the second physical volume is a placement in a reflected mother + // or 0 if mother LV was not reflected. + + G4PhysicalVolumesPair Replicate(const G4String& name, + G4LogicalVolume* LV, + G4LogicalVolume* motherLV, + EAxis axis, + G4int nofReplicas, + G4double width, + G4double offset=0); + // Creates replica in the given mother. + // The result is a pair of physical volumes; + // the second physical volume is a replica in a reflected mother + // or 0 if mother LV was not reflected. + + void SetVerboseLevel(G4int verboseLevel); + G4int GetVerboseLevel() const; + // Sets/gets verbosity level. + + protected: + + G4ReflectionFactory(); + // Protected singleton constructor. + + G4ReflectionFactory(const G4ReflectionFactory&); + G4ReflectionFactory& operator=(const G4ReflectionFactory&); + // Disabled copy constructor and assignment operator. + + private: + + G4LogicalVolume* ReflectLV(G4LogicalVolume* LV); + // Gets/creates the reflected solid and logical volume + // and copies + transforms LV daughters. + + G4LogicalVolume* CreateReflectedLV(G4LogicalVolume* LV); + // Creates the reflected solid and logical volume + // and add the logical volumes pair in the maps. + + void ReflectDaughters(G4LogicalVolume* LV, G4LogicalVolume* refLV); + // Reflects daughters recursively. + + void ReflectPVPlacement(G4VPhysicalVolume* PV, G4LogicalVolume* refLV); + // Copies and transforms daughter of PVPlacement type of + // a constituent volume into a reflected volume. + + void ReflectPVReplica(G4VPhysicalVolume* PV, G4LogicalVolume* refLV); + // Copies and transforms daughter of PVReplica type of + // a constituent volume into a reflected volume. + + void ReflectPVParameterised(G4VPhysicalVolume* PV, G4LogicalVolume* refLV); + // Not implemented yet. + // Should copy and transform daughter of PVReplica type of + // a constituent volume into a reflected volume. + + G4LogicalVolume* GetConstituentLV(G4LogicalVolume* reflLV) const; + // Returns the consituent volume of the given reflected volume, + // 0 if the given reflected volume was not found. + + G4LogicalVolume* GetReflectedLV(G4LogicalVolume* lv) const; + // Returns the reflected volume of the given consituent volume, + // 0 if the given volume was not reflected. + + G4bool IsConstituent(G4LogicalVolume* lv) const; + // Returns true if the given volume has been already reflected + // (is in the map of constituent volumes). + + G4bool IsReflected(G4LogicalVolume* lv) const; + // Returns true if the given volume is a reflected volume + // (is in the map reflected volumes). + + G4bool IsReflection(const G4Scale3D& scale) const; + // Returns true if the scale is negative, false otherwise. + + void CheckScale(const G4Scale3D& scale) const; + // Checks if scale correspond to fScale, if not gives exception. + + void PrintConstituentLVMap(); + // Temporary - for debugging purpose. + + private: + + static G4ReflectionFactory* fInstance; + static const G4String fNameExtension; + static const G4Scale3D fScale; + + G4int fVerboseLevel; + LogicalVolumesMap fConstituentLVMap; + LogicalVolumesMap fReflectedLVMap; +}; + +#endif diff --git a/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh b/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh index 0ea39a0446..1676acdacd 100644 --- a/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4SubtractionSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SubtractionSolid.hh,v 1.4.4.1 2001/06/28 19:08:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SubtractionSolid.hh,v 1.5 2001/07/11 09:59:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4SubtractionSolid diff --git a/source/geometry/solids/Boolean/include/G4UnionSolid.hh b/source/geometry/solids/Boolean/include/G4UnionSolid.hh index 7f9e7ea481..3dc58b1816 100644 --- a/source/geometry/solids/Boolean/include/G4UnionSolid.hh +++ b/source/geometry/solids/Boolean/include/G4UnionSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UnionSolid.hh,v 1.5.4.1 2001/06/28 19:08:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UnionSolid.hh,v 1.6 2001/07/11 09:59:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4UnionSolid diff --git a/source/geometry/solids/Boolean/src/G4BooleanSolid.cc b/source/geometry/solids/Boolean/src/G4BooleanSolid.cc index 05b30498d0..cb94f3fa2c 100644 --- a/source/geometry/solids/Boolean/src/G4BooleanSolid.cc +++ b/source/geometry/solids/Boolean/src/G4BooleanSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BooleanSolid.cc,v 1.4.4.1 2001/06/28 19:08:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BooleanSolid.cc,v 1.5 2001/07/11 09:59:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Implementation for the abstract base class for solids created by boolean // operations between other solids diff --git a/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc b/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc index d41da040a7..92d650f18c 100644 --- a/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc +++ b/source/geometry/solids/Boolean/src/G4DisplacedSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DisplacedSolid.cc,v 1.13.4.1 2001/06/28 19:08:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DisplacedSolid.cc,v 1.14 2001/07/11 09:59:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Implementation for G4DisplacedSolid class for boolean // operations between other solids diff --git a/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc b/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc index fc21dfd701..a270a93e15 100644 --- a/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4IntersectionSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IntersectionSolid.cc,v 1.12.2.1 2001/06/28 19:08:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IntersectionSolid.cc,v 1.16 2001/10/02 08:51:48 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Implementation of methods for the class G4IntersectionSolid // @@ -164,7 +164,7 @@ G4ThreeVector G4IntersectionSolid::SurfaceNormal( const G4ThreeVector& p ) const { G4ThreeVector normal; - G4bool insideA, insideB; + EInside insideA, insideB; insideA= fPtrSolidA->Inside(p); insideB= fPtrSolidB->Inside(p); @@ -172,7 +172,12 @@ G4IntersectionSolid::SurfaceNormal( const G4ThreeVector& p ) const // if( Inside(p) == kOutside ) if( (insideA == kOutside) || (insideB == kOutside) ) { - G4Exception("Invalid call in G4IntersectionSolid::SurfaceNormal(p), point p is outside") ; + G4cerr << "WARNING - Invalid call in G4IntersectionSolid::SurfaceNormal(p)," + << " point p is outside" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4IntersectionSolid::SurfaceNormal(p), p is outside") ; + #endif } // OLD: if(fPtrSolidA->DistanceToOut(p) <= fPtrSolidB->DistanceToOut(p) ) @@ -193,13 +198,16 @@ G4IntersectionSolid::SurfaceNormal( const G4ThreeVector& p ) const // We are on neither surface, so we should generate an exception else { - G4Exception("Invalid call in G4IntersectionSolid::SurfaceNormal(p), point p is not on the surface of the volume.") ; - - // Or else if(fPtrSolidA->DistanceToOut(p) <= fPtrSolidB->DistanceToOut(p) ) normal= fPtrSolidA->SurfaceNormal(p) ; else normal= fPtrSolidB->SurfaceNormal(p) ; + G4cerr << "WARNING - Invalid call in G4IntersectionSolid::SurfaceNormal(p)," + << " point p is outsurface" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4IntersectionSolid::SurfaceNormal(p), p is outsurface") ; + #endif } return normal; @@ -216,7 +224,13 @@ G4IntersectionSolid::DistanceToIn( const G4ThreeVector& p, G4double dist = 0.0, disTmp = 0.0 ; if( Inside(p) == kInside ) { - G4Exception("Invalid call in G4IntersectionSolid::DistanceToIn(p,v), point p is inside") ; + G4cerr << "WARNING - Invalid call in G4IntersectionSolid::DistanceToIn(p,v)," + << " point p is inside" << G4endl; + G4cerr << " p = " << p << G4endl; + G4cerr << " v = " << v << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4IntersectionSolid::DistanceToIn(p,v), p is inside") ; + #endif } else { @@ -373,7 +387,12 @@ G4IntersectionSolid::DistanceToIn( const G4ThreeVector& p) const { if( Inside(p) == kInside ) { - G4Exception("Invalid call in G4IntersectionSolid::DistanceToIn(p), point p is inside") ; + G4cerr << "WARNING - Invalid call in G4IntersectionSolid::DistanceToIn(p)," + << " point p is inside" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4IntersectionSolid::DistanceToIn(p), p is inside") ; + #endif } EInside sideA = fPtrSolidA->Inside(p) ; EInside sideB = fPtrSolidB->Inside(p) ; @@ -414,6 +433,10 @@ G4IntersectionSolid::DistanceToOut( const G4ThreeVector& p, if( Inside(p) == kOutside ) { + G4cerr << "WARNING - Invalid call in G4IntersectionSolid::DistanceToOut(p,v)," + << " point p is outside" << G4endl; + G4cerr << " p = " << p << G4endl; + G4cerr << " v = " << v << G4endl; G4cout << "Position:" << G4endl << G4endl; G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl; G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl; @@ -422,7 +445,9 @@ G4IntersectionSolid::DistanceToOut( const G4ThreeVector& p, G4cout << "v.x() = " << v.x() << G4endl; G4cout << "v.y() = " << v.y() << G4endl; G4cout << "v.z() = " << v.z() << G4endl << G4endl; - G4Exception("Invalid call in G4IntersectionSolid::DistanceToOut(p,v), point p is outside") ; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4IntersectionSolid::DistanceToOut(p,v), p is outside") ; + #endif } G4double distA = fPtrSolidA->DistanceToOut(p,v,calcNorm,&validNormA,&nA) ; G4double distB = fPtrSolidB->DistanceToOut(p,v,calcNorm,&validNormB,&nB) ; @@ -453,7 +478,12 @@ G4IntersectionSolid::DistanceToOut( const G4ThreeVector& p ) const { if( Inside(p) == kOutside ) { - G4Exception("Invalid call in G4IntersectionSolid::DistanceToOut(p), point p is outside") ; + G4cerr << "WARNING - Invalid call in G4IntersectionSolid::DistanceToOut(p)," + << " point p is outside" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4IntersectionSolid::DistanceToOut(p), p is outside") ; + #endif } diff --git a/source/geometry/solids/Boolean/src/G4ReflectedSolid.cc b/source/geometry/solids/Boolean/src/G4ReflectedSolid.cc new file mode 100644 index 0000000000..958416dc75 --- /dev/null +++ b/source/geometry/solids/Boolean/src/G4ReflectedSolid.cc @@ -0,0 +1,387 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ReflectedSolid.cc,v 1.3 2001/10/18 10:07:50 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Implementation for G4ReflectedSolid class for boolean +// operations between other solids +// +// Author: Vladimir Grichine, 23.07.01 (Vladimir.Grichine@cern.ch) + +#include "G4ReflectedSolid.hh" +#include "G4Point3D.hh" +#include "G4Normal3D.hh" + +#include "G4VoxelLimits.hh" +#include "G4AffineTransform.hh" + +#include "G4VPVParameterisation.hh" + +#include "G4VGraphicsScene.hh" +#include "G4Polyhedron.hh" +#include "G4NURBS.hh" +#include "G4NURBSbox.hh" + + +///////////////////////////////////////////////////////////////////////////////// +// +// Constructor using HepTransform3D, in fact HepReflect3D + +G4ReflectedSolid::G4ReflectedSolid( const G4String& pName, + G4VSolid* pSolid , + const G4Transform3D& transform ) : + G4VSolid(pName) +{ + fPtrSolid = pSolid ; + G4RotationMatrix rotMatrix ; + + fDirectTransform = new G4AffineTransform(rotMatrix, transform.getTranslation()) ; + + fPtrTransform = new G4AffineTransform(rotMatrix, transform.getTranslation()) ; + fPtrTransform->Invert() ; + + fDirectTransform3D = new G4Transform3D(transform) ; + fPtrTransform3D = new G4Transform3D(transform.inverse()) ; +} + +/* ************************************************************** + +//////////////////////////////////////////////////////////////// +// +// Constractor for transformation like rotation of frame then translation +// in new frame. It is similar to 1st constractor in G4PVPlacement + +G4ReflectedSolid:: +G4ReflectedSolid( const G4String& pName, + G4VSolid* pSolid , + G4RotationMatrix* rotMatrix, + const G4ThreeVector& transVector ) + : G4VSolid(pName) +{ + fPtrSolid = pSolid ; + fPtrTransform = new G4AffineTransform(rotMatrix,transVector) ; + fPtrTransform->Invert() ; + fDirectTransform = new G4AffineTransform(rotMatrix,transVector) ; +} + +///////////////////////////////////////////////////////////////////////////////// +// Constructor for use with creation of Transient object from Persistent object +// + +G4ReflectedSolid::G4ReflectedSolid( const G4String& pName, + G4VSolid* pSolid , + const G4AffineTransform directTransform ) : + G4VSolid(pName) +{ + fPtrSolid = pSolid ; + fDirectTransform = new G4AffineTransform( directTransform ); + fPtrTransform = new G4AffineTransform( directTransform.Inverse() ) ; +} + +********************************************************** */ + + +/////////////////////////////////////////////////////////////////// +// + +G4ReflectedSolid::~G4ReflectedSolid() +{ + if(fPtrTransform) + { + delete fPtrTransform ; + delete fDirectTransform; + } +} + +G4GeometryType G4ReflectedSolid::GetEntityType() const +{ + return G4String("G4ReflectedSolid"); +} + +const G4ReflectedSolid* G4ReflectedSolid::GetReflectedSolidPtr() const +{ return this; } + + G4ReflectedSolid* G4ReflectedSolid::GetReflectedSolidPtr() +{ return this; } + +G4VSolid* G4ReflectedSolid::GetConstituentMovedSolid() const +{ + return fPtrSolid; +} + +///////////////////////////////////////////////////////////////////////////// + +G4AffineTransform G4ReflectedSolid::GetTransform() const +{ + G4AffineTransform aTransform = *fPtrTransform; + return aTransform; +} + +void G4ReflectedSolid::SetTransform(G4AffineTransform& transform) +{ + fPtrTransform = &transform ; +} + +////////////////////////////////////////////////////////////////////////////// + +G4AffineTransform G4ReflectedSolid::GetDirectTransform() const +{ + G4AffineTransform aTransform= *fDirectTransform; + return aTransform; +} + +void G4ReflectedSolid::SetDirectTransform(G4AffineTransform& transform) +{ + fDirectTransform = &transform ; +} + +///////////////////////////////////////////////////////////////////////////// + +G4RotationMatrix G4ReflectedSolid::GetFrameRotation() const +{ + G4RotationMatrix InvRotation= fDirectTransform->NetRotation(); + return InvRotation; +} + +void G4ReflectedSolid::SetFrameRotation(const G4RotationMatrix& matrix) +{ + fDirectTransform->SetNetRotation(matrix); +} + +///////////////////////////////////////////////////////////////////////////// + +G4ThreeVector G4ReflectedSolid::GetFrameTranslation() const +{ + return fPtrTransform->NetTranslation(); +} + +void G4ReflectedSolid::SetFrameTranslation(const G4ThreeVector& vector) +{ + fPtrTransform->SetNetTranslation(vector); +} + +/////////////////////////////////////////////////////////////// + +G4RotationMatrix G4ReflectedSolid::GetObjectRotation() const +{ + G4RotationMatrix Rotation= fPtrTransform->NetRotation(); + return Rotation; +} + +void G4ReflectedSolid::SetObjectRotation(const G4RotationMatrix& matrix) +{ + fPtrTransform->SetNetRotation(matrix); +} + +/////////////////////////////////////////////////////////////////////// + +G4ThreeVector G4ReflectedSolid::GetObjectTranslation() const +{ + return fDirectTransform->NetTranslation(); +} + +void G4ReflectedSolid::SetObjectTranslation(const G4ThreeVector& vector) +{ + fDirectTransform->SetNetTranslation(vector); +} + +/////////////////////////////////////////////////////////////// +// +// + +G4bool +G4ReflectedSolid::CalculateExtent( const EAxis pAxis, + const G4VoxelLimits& pVoxelLimit, + const G4AffineTransform& pTransform, + G4double& pMin, + G4double& pMax ) const +{ + G4AffineTransform sumTransform ; + G4bool extentR, extent ; + G4double min, max, minR, maxR ; + + sumTransform.Product(*fDirectTransform,pTransform) ; + + extent = fPtrSolid->CalculateExtent(pAxis,pVoxelLimit,pTransform, + min,max) ; + extentR = fPtrSolid->CalculateExtent(pAxis,pVoxelLimit,sumTransform, + minR,maxR) ; + if( maxR > 0 ) pMax = 2.0*maxR ; + else pMax = 0.5*maxR ; + + if( minR > 0 ) pMin = 0.5*minR ; + else pMin = 2.0*minR ; + + return extentR ; +} + +///////////////////////////////////////////////////// +// +// + +EInside G4ReflectedSolid::Inside(const G4ThreeVector& p) const +{ + // G4ThreeVector newPoint = fPtrTransform->TransformPoint(p) ; + + G4Point3D newPoint = (*fDirectTransform3D)*G4Point3D(p) ; + return fPtrSolid->Inside(G4ThreeVector(newPoint.x(),newPoint.y(),newPoint.z())) ; +} + +////////////////////////////////////////////////////////////// +// +// + +G4ThreeVector +G4ReflectedSolid::SurfaceNormal( const G4ThreeVector& p ) const +{ + G4Point3D newPoint = (*fDirectTransform3D)*G4Point3D(p) ; + G4ThreeVector normal = fPtrSolid->SurfaceNormal(G4ThreeVector(newPoint.x(), + newPoint.y(), + newPoint.z() ) ) ; + G4Point3D newN = (*fDirectTransform3D)*G4Point3D(normal) ; + newN.unit() ; + + return G4ThreeVector(newN.x(),newN.y(),newN.z()) ; + +} + +///////////////////////////////////////////////////////////// +// +// The same algorithm as in DistanceToIn(p) + +G4double +G4ReflectedSolid::DistanceToIn( const G4ThreeVector& p, + const G4ThreeVector& v ) const +{ + G4Point3D newPoint = (*fDirectTransform3D)*G4Point3D(p) ; + G4Point3D newDirection = (*fDirectTransform3D)*G4Point3D(v) ; + newDirection.unit() ; + return fPtrSolid->DistanceToIn( + G4ThreeVector(newPoint.x(),newPoint.y(),newPoint.z()), + G4ThreeVector(newDirection.x(),newDirection.y(),newDirection.z())) ; +} + +//////////////////////////////////////////////////////// +// +// Approximate nearest distance from the point p to the intersection of +// two solids + +G4double +G4ReflectedSolid::DistanceToIn( const G4ThreeVector& p) const +{ + G4Point3D newPoint = (*fDirectTransform3D)*G4Point3D(p) ; + return fPtrSolid->DistanceToIn( + G4ThreeVector(newPoint.x(),newPoint.y(),newPoint.z())) ; +} + +////////////////////////////////////////////////////////// +// +// The same algorithm as DistanceToOut(p) + +G4double +G4ReflectedSolid::DistanceToOut( const G4ThreeVector& p, + const G4ThreeVector& v, + const G4bool calcNorm, + G4bool *validNorm, + G4ThreeVector *n ) const +{ + G4ThreeVector solNorm ; + + G4Point3D newPoint = (*fDirectTransform3D)*G4Point3D(p) ; + G4Point3D newDirection = (*fDirectTransform3D)*G4Point3D(v) ; + newDirection.unit() ; + + G4double dist = fPtrSolid->DistanceToOut( + G4ThreeVector(newPoint.x(),newPoint.y(),newPoint.z()), + G4ThreeVector(newDirection.x(),newDirection.y(),newDirection.z()), + calcNorm,validNorm,&solNorm) ; + if(calcNorm) + { + G4Point3D newN = (*fDirectTransform3D)*G4Point3D(solNorm) ; + newN.unit() ; + *n = G4ThreeVector(newN.x(),newN.y(),newN.z()) ; + } + return dist ; +} + +////////////////////////////////////////////////////////////// +// +// Inverted algorithm of DistanceToIn(p) + +G4double +G4ReflectedSolid::DistanceToOut( const G4ThreeVector& p ) const +{ + G4Point3D newPoint = (*fDirectTransform3D)*G4Point3D(p) ; + return fPtrSolid->DistanceToOut( + G4ThreeVector(newPoint.x(),newPoint.y(),newPoint.z())) ; +} + +////////////////////////////////////////////////////////////// +// +// + +void +G4ReflectedSolid::ComputeDimensions( G4VPVParameterisation* p, + const G4int n, + const G4VPhysicalVolume* pRep ) +{ + // fPtrSolid->ComputeDimensions(p,n,pRep); + + G4Exception("ERROR: ComputeDimensions has no meaning for a G4ReflectedSolid. It cannot be called."); +} + +///////////////////////////////////////////////// +// +// + +void +G4ReflectedSolid::DescribeYourselfTo ( G4VGraphicsScene& scene ) const +{ + scene.AddThis (*this); +} + +//////////////////////////////////////////////////// +// +// + +G4Polyhedron* +G4ReflectedSolid::CreatePolyhedron () const +{ + G4Polyhedron* polyhedron = fPtrSolid->CreatePolyhedron(); + polyhedron->Transform(*fDirectTransform3D); + + return polyhedron; +} + +///////////////////////////////////////////////////////// +// +// + +G4NURBS* +G4ReflectedSolid::CreateNURBS () const +{ + // Take into account local transformation - see CreatePolyhedron. + // return fPtrSolid->CreateNURBS() ; + return 0; +} diff --git a/source/geometry/solids/Boolean/src/G4ReflectionFactory.cc b/source/geometry/solids/Boolean/src/G4ReflectionFactory.cc new file mode 100644 index 0000000000..3ec02389cf --- /dev/null +++ b/source/geometry/solids/Boolean/src/G4ReflectionFactory.cc @@ -0,0 +1,537 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ReflectionFactory.cc,v 1.2 2001/11/08 15:47:07 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Ivana Hrivnacova, 16.10.2001 (Ivana.Hrivnacova@cern.ch) + +// +// Class G4ReflectionFactory Implementation +// +// Decomposition of a general transformation +// that can include reflection in a "reflection-free" transformation: +// +// x(inM') = TG*x(inM) TG - general transformation +// = T*(R*x(inM)) T - "reflection-free" transformation +// = T* x(inReflM) +// +// Daughters transformation: +// When a volume V containing daughter D with transformation TD +// is placed in mother M with a general tranformation TGV, +// the TGV is decomposed, +// new reflected volume ReflV containing a new daughter ReflD +// with reflected transformation ReflTD is created: +// +// x(inV) = TD * x(inD); +// x(inM) = TGV * x(inV) +// = TV * R * x(inV) +// = TV * R * TD * x(inD) +// = TV * R*TD*R-1 * R*x(inD) +// = TV * ReflTD * x(inReflD) + + +#include "G4ReflectionFactory.hh" +#include "G4ReflectedSolid.hh" +#include "G4LogicalVolume.hh" +#include "G4PVPlacement.hh" +#include "G4PVReplica.hh" + +G4ReflectionFactory* G4ReflectionFactory::fInstance = 0; +const G4String G4ReflectionFactory::fNameExtension = "_refl"; +const G4Scale3D G4ReflectionFactory::fScale = G4ScaleZ3D(-1.0); + +//_____________________________________________________________________________ +G4ReflectionFactory* G4ReflectionFactory::Instance() +{ +// Static singleton access method. +// --- + + if (!fInstance) new G4ReflectionFactory(); + + return fInstance; +} + +//_____________________________________________________________________________ +G4ReflectionFactory::G4ReflectionFactory() + : fVerboseLevel(0) +{ +// Protected singleton constructor. +// --- + + fInstance = this; +} + +//_____________________________________________________________________________ +G4ReflectionFactory::~G4ReflectionFactory() { +} + +// +// public methods +// + +//_____________________________________________________________________________ +G4PhysicalVolumesPair G4ReflectionFactory::Place( + const G4Transform3D& transform3D, + const G4String& name, + G4LogicalVolume* LV, + G4LogicalVolume* motherLV, + G4bool isMany, + G4int copyNo) +{ +// Evaluates the passed transformation; if it contains reflection +// it performs its decomposition, creates new reflected solid and +// logical volume (or retrieves them from a map if the reflected +// objects were already created), transforms the daughters (if present) +// and place it in the given mother. +// The result is a pair of physical volumes; +// the second physical volume is a placement in a reflected mother +// - or 0 if mother LV was not reflected. +// --- + + if (fVerboseLevel>0) { + G4cout << "Place " << name << " lv " << LV << " " + << LV->GetName() << G4endl; + } + + // decompose transformation + G4Scale3D scale; + G4Rotate3D rotation; + G4Translate3D translation; + + transform3D.getDecomposition(scale, rotation, translation); + G4Transform3D pureTransform3D = translation * rotation; + + //PrintTransform(transform3D); + //PrintTransform(pureTransform3D); + + // check that scale correspond to fScale + CheckScale(scale); + + // + // reflection IS NOT present in transform3D + // + + if (! IsReflection(scale)) { + if (fVerboseLevel>0) + G4cout << "scale positive" << G4endl; + + G4VPhysicalVolume* pv1 + = new G4PVPlacement(pureTransform3D, LV, name, motherLV, isMany, copyNo); + + G4VPhysicalVolume* pv2 = 0; + if (G4LogicalVolume* reflMotherLV = GetReflectedLV(motherLV)) { + + // if mother was reflected + // reflect this LV and place it in reflected mother + + pv2 = new G4PVPlacement( + fScale * (pureTransform3D * fScale.inverse()), + ReflectLV(LV), name, reflMotherLV, isMany, copyNo); + } + + return G4PhysicalVolumesPair(pv1, pv2); + } + + // + // reflection IS present in transform3D + // + + if (fVerboseLevel>0) + G4cout << "scale negative" << G4endl; + + G4VPhysicalVolume* pv1 + = new G4PVPlacement(pureTransform3D, + ReflectLV(LV), name, motherLV, isMany, copyNo); + + G4VPhysicalVolume* pv2 = 0; + if (G4LogicalVolume* reflMotherLV = GetReflectedLV(motherLV)) { + + // if mother was reflected + // place the refLV consituent in reflected mother + + pv2 = new G4PVPlacement(fScale * (pureTransform3D * fScale.inverse()), + LV, name, reflMotherLV, isMany, copyNo); + } + + return G4PhysicalVolumesPair(pv1, pv2); +} + + +//_____________________________________________________________________________ +G4PhysicalVolumesPair G4ReflectionFactory::Replicate(const G4String& name, + G4LogicalVolume* LV, + G4LogicalVolume* motherLV, + EAxis axis, + G4int nofReplicas, + G4double width, + G4double offset) +{ +// Creates replica in given mother. +// The result is a pair of physical volumes; +// the second physical volume is a replica in a reflected mother +// - or 0 if mother LV was not reflected. +// --- + + if (fVerboseLevel>0) { + G4cout << "Replicate " << name << " lv " << LV << " " + << LV->GetName() << G4endl; + } + + G4VPhysicalVolume* pv1 + = new G4PVReplica(name, LV, motherLV, axis, nofReplicas, width, offset); + + G4VPhysicalVolume* pv2 = 0; + if (G4LogicalVolume* reflMotherLV = GetReflectedLV(motherLV)) { + + // if mother was reflected + // reflect the LV and replicate it in reflected mother + + pv2 = new G4PVReplica(name, ReflectLV(LV), reflMotherLV, + axis, nofReplicas, width, offset); + } + + return G4PhysicalVolumesPair(pv1, pv2); +} + + +// +// private methods +// + +//_____________________________________________________________________________ +G4LogicalVolume* G4ReflectionFactory::ReflectLV(G4LogicalVolume* LV) +{ +// Gets/creates the reflected solid and logical volume +// and copies + transforms LV daughters. +// --- + + G4LogicalVolume* refLV = GetReflectedLV(LV); + + if (!refLV) { + + // create new (reflected) objects + refLV = CreateReflectedLV(LV); + + // process daughters + ReflectDaughters(LV, refLV); + } + + return refLV; +} + +//_____________________________________________________________________________ +G4LogicalVolume* G4ReflectionFactory::CreateReflectedLV(G4LogicalVolume* LV) +{ +// Creates the reflected solid and logical volume +// and add the logical volumes pair in the maps. +// --- + + // consistency check + if (fReflectedLVMap.find(LV) != fReflectedLVMap.end()) { + G4Exception( + "G4ReflectionFactory::CreateReflectedLV: called for already reflected volume!"); + } + + G4VSolid* refSolid + = new G4ReflectedSolid(LV->GetSolid()->GetName() + fNameExtension, + LV->GetSolid(), fScale); + + G4LogicalVolume* refLV + = new G4LogicalVolume(refSolid, + LV->GetMaterial(), + LV->GetName() + fNameExtension, + LV->GetFieldManager(), + LV->GetSensitiveDetector(), + LV->GetUserLimits()); + + fConstituentLVMap[LV] = refLV; + fReflectedLVMap[refLV] = LV; + + return refLV; +} + +//_____________________________________________________________________________ +void G4ReflectionFactory::ReflectDaughters(G4LogicalVolume* LV, + G4LogicalVolume* refLV) +{ +// Reflects daughters recursively. +// --- + + if (fVerboseLevel>0) { + G4cout << "G4ReflectionFactory::ReflectDaughters: " + << LV->GetNoDaughters() << " of " << LV->GetName() << G4endl; + } + + for (G4int i=0; iGetNoDaughters(); i++) { + + G4VPhysicalVolume* dPV = LV->GetDaughter(i); + + if (! dPV->IsReplicated()) { + ReflectPVPlacement(dPV, refLV); + } + else if (! dPV->GetParameterisation()) { + ReflectPVReplica(dPV, refLV); + } + else { + ReflectPVParameterised(dPV, refLV); + } + } +} + +//_____________________________________________________________________________ +void G4ReflectionFactory::ReflectPVPlacement(G4VPhysicalVolume* dPV, + G4LogicalVolume* refLV) +{ +// Copies and transforms daughter of PVPlacement type of +// a constituent volume into a reflected volume. +// --- + + G4LogicalVolume* dLV = dPV->GetLogicalVolume(); + + // update daughter transformation + G4Transform3D dt(dPV->GetObjectRotationValue(), dPV->GetObjectTranslation()); + dt = fScale * (dt * fScale.inverse()); + + G4LogicalVolume* refDLV; + + if (fVerboseLevel>0) + G4cout << "Daughter: " << dPV << " " << dLV->GetName(); + + if (!IsReflected(dLV)) { + + if (fVerboseLevel>0) + G4cout << " will be reflected." << G4endl; + + // create new daughter solid and logical volume + refDLV = CreateReflectedLV(dLV); + + // create new daughter physical volume + // with updated transformation + + G4VPhysicalVolume* refDPV + = new G4PVPlacement(dt, refDLV, dPV->GetName(), refLV, + dPV->IsMany(), dPV->GetCopyNo()); + + refLV->AddDaughter(refDPV); + + // recursive call + ReflectDaughters(dLV, refDLV); + } + else { + if (fVerboseLevel>0) + G4cout << " will be reconstited." << G4endl; + + refDLV = GetConstituentLV(dLV); + + G4VPhysicalVolume* refDPV + = new G4PVPlacement(dt, refDLV, dPV->GetName(), refLV, + dPV->IsMany(), dPV->GetCopyNo()); + + refLV->AddDaughter(refDPV); + } +} + +//_____________________________________________________________________________ +void G4ReflectionFactory::ReflectPVReplica(G4VPhysicalVolume* dPV, + G4LogicalVolume* refLV) +{ +// Copies and transforms daughter of PVReplica type of +// a constituent volume into a reflected volume. +// --- + + G4LogicalVolume* dLV = dPV->GetLogicalVolume(); + + // get replication data + EAxis axis; + G4int nofReplicas; + G4double width; + G4double offset; + G4bool consuming; + + dPV->GetReplicationData(axis, nofReplicas, width, offset, consuming); + + G4LogicalVolume* refDLV; + + if (fVerboseLevel>0) + G4cout << "Daughter: " << dPV << " " << dLV->GetName(); + + if (!IsReflected(dLV)) { + + if (fVerboseLevel>0) + G4cout << " will be reflected." << G4endl; + + // create new daughter solid and logical volume + refDLV = CreateReflectedLV(dLV); + + // create new daughter replica + + G4VPhysicalVolume* refDPV + = new G4PVReplica(dPV->GetName(), refDLV, refLV, + axis, nofReplicas, width, offset); + + + refLV->AddDaughter(refDPV); + + // recursive call + ReflectDaughters(dLV, refDLV); + } + else { + if (fVerboseLevel>0) + G4cout << " will be reconstited." << G4endl; + + refDLV = GetConstituentLV(dLV); + + G4VPhysicalVolume* refDPV + = new G4PVReplica(dPV->GetName(), refDLV, refLV, + axis, nofReplicas, width, offset); + + refLV->AddDaughter(refDPV); + } +} + +//_____________________________________________________________________________ +void G4ReflectionFactory::ReflectPVParameterised(G4VPhysicalVolume* dPV, + G4LogicalVolume* refLV) +{ +// Not implemented. +// Should copy and transform daughter of PVReplica type of +// a constituent volume into a reflected volume. +// --- + + G4Exception( + "G4ReflectionFactory: Parameterised volumes cannot be reflected yet."); + +} + +//_____________________________________________________________________________ +G4LogicalVolume* G4ReflectionFactory::GetConstituentLV( + G4LogicalVolume* reflLV) const +{ +// Returns the consituent volume of the given reflected volume, +// 0 if the given reflected volume was not found. +// --- + + LogicalVolumesMapIterator it = fReflectedLVMap.find(reflLV); + + if (it == fReflectedLVMap.end()) return 0; + + return (*it).second; +} + +//_____________________________________________________________________________ +G4LogicalVolume* G4ReflectionFactory::GetReflectedLV( + G4LogicalVolume* lv) const +{ +// Returns the reflected volume of the given consituent volume, +// 0 if the given volume was not reflected. +// --- + + LogicalVolumesMapIterator it = fConstituentLVMap.find(lv); + + if (it == fConstituentLVMap.end()) return 0; + + return (*it).second; +} + +//_____________________________________________________________________________ +G4bool G4ReflectionFactory::IsConstituent(G4LogicalVolume* lv) const +{ +// Returns true if the given volume has been already reflected +// (is in the map of constituent volumes). +// --- + + return (fConstituentLVMap.find(lv) != fConstituentLVMap.end()); +} + +//_____________________________________________________________________________ +G4bool G4ReflectionFactory::IsReflected(G4LogicalVolume* lv) const +{ +// Returns true if the given volume is a reflected volume +// (is in the map reflected volumes). +// --- + + return (fReflectedLVMap.find(lv) != fReflectedLVMap.end()); +} + +//_____________________________________________________________________________ +G4bool G4ReflectionFactory::IsReflection(const G4Scale3D& scale) const +{ +// Returns true if the scale is negative, false otherwise. +// --- + + if (scale(0,0)*scale(1,1)*scale(2,2) < 0.) + return true; + else + return false; +} + +//_____________________________________________________________________________ +void G4ReflectionFactory::PrintConstituentLVMap() +{ +// temporary - for debugging purpose +// --- + + LogicalVolumesMapIterator it; + for (it = fConstituentLVMap.begin(); it != fConstituentLVMap.end(); it++) { + G4cout << "lv: " << (*it).first << " lv_refl: " << (*it).second << G4endl; + } + G4cout << G4endl; +} + +//_____________________________________________________________________________ +void G4ReflectionFactory::CheckScale(const G4Scale3D& scale) const +{ +// Check if scale correspond to fScale, +// if not give exception. +// --- + + if (!IsReflection(scale)) return; + + G4double diff = 0.; + for (G4int i=0; i<4; i++) + for (G4int j=0; j<4; j++) + diff += abs(scale(i,j) - fScale(i,j)); + + if (diff > kCarTolerance) + G4Exception("G4ReflectionFactory::CheckScale: unexpected scale has occured."); +} + +void G4ReflectionFactory::SetVerboseLevel(G4int verboseLevel) +{ + fVerboseLevel = verboseLevel; +} + +G4int G4ReflectionFactory::GetVerboseLevel() const +{ + return fVerboseLevel; +} + +/* + // placement with decomposed transformation + + G4VPhysicalVolume* pv1 + = new G4PVPlacement(new G4RotationMatrix(rotation.getRotation().inverse()), + translation.getTranslation(), + refLV, name, motherLV, isMany, copyNo); +*/ diff --git a/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc b/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc index 6bfc243af1..af86939dd6 100644 --- a/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4SubtractionSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SubtractionSolid.cc,v 1.12.2.1 2001/06/28 19:08:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SubtractionSolid.cc,v 1.15 2001/08/13 14:03:38 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Implementation of methods for the class G4IntersectionSolid // @@ -156,7 +156,13 @@ G4SubtractionSolid::SurfaceNormal( const G4ThreeVector& p ) const G4ThreeVector normal; if( Inside(p) == kOutside ) { - G4Exception("Invalid call in G4SubtractionSolid::SurfaceNormal(p), point p is outside") ; + G4cerr << "WARNING - Invalid call in G4SubtractionSolid::SurfaceNormal(p)," + << " point p is inside" << G4endl; + G4cerr << " p = " << p << G4endl; + + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4SubtractionSolid::SurfaceNormal(p), p is outside") ; + #endif } else { @@ -181,6 +187,8 @@ G4SubtractionSolid::SurfaceNormal( const G4ThreeVector& p ) const normal = -fPtrSolidB->SurfaceNormal(p) ; } G4cerr<<"G4SubtractionSolid::SurfaceNormal(p), point p is inside"<Inside(p) != kOutside) && // case1:p in both A&B @@ -274,7 +288,12 @@ G4SubtractionSolid::DistanceToIn( const G4ThreeVector& p) const G4double dist; if( Inside(p) == kInside ) { - G4Exception("Invalid call in G4SubtractionSolid::DistanceToIn(p), point p is inside") ; + G4cerr << "WARNING - Invalid call in G4SubtractionSolid::DistanceToIn(p)," + << " point p is inside" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4SubtractionSolid::DistanceToIn(p), p is inside") ; + #endif } if( ( fPtrSolidA->Inside(p) != kOutside) && // case 1 @@ -311,7 +330,13 @@ G4SubtractionSolid::DistanceToOut( const G4ThreeVector& p, G4cout << "v.x() = " << v.x() << G4endl; G4cout << "v.y() = " << v.y() << G4endl; G4cout << "v.z() = " << v.z() << G4endl << G4endl; - G4Exception("Invalid call in G4SubtractionSolid::DistanceToOut(p,v), point p is outside") ; + G4cerr << "WARNING - Invalid call in G4SubtractionSolid::DistanceToOut(p,v)," + << " point p is outside" << G4endl; + G4cerr << " p = " << p << G4endl; + G4cerr << " v = " << v << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4SubtractionSolid::DistanceToOut(p,v), p is outside") ; + #endif } G4double distout; @@ -344,7 +369,12 @@ G4SubtractionSolid::DistanceToOut( const G4ThreeVector& p ) const if( Inside(p) == kOutside ) { - G4Exception("Invalid call in G4SubtractionSolid::DistanceToOut(p), point p is outside") ; + G4cerr << "WARNING - Invalid call in G4SubtractionSolid::DistanceToOut(p)," + << " point p is outside" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4SubtractionSolid::DistanceToOut(p), p is outside") ; + #endif } else { diff --git a/source/geometry/solids/Boolean/src/G4UnionSolid.cc b/source/geometry/solids/Boolean/src/G4UnionSolid.cc index 03f735ffb1..247d9a000d 100644 --- a/source/geometry/solids/Boolean/src/G4UnionSolid.cc +++ b/source/geometry/solids/Boolean/src/G4UnionSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UnionSolid.cc,v 1.16.2.1 2001/06/28 19:08:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UnionSolid.cc,v 1.19 2001/08/13 14:03:38 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Implementation of methods for the class G4IntersectionSolid // @@ -170,7 +170,12 @@ G4UnionSolid::SurfaceNormal( const G4ThreeVector& p ) const if( Inside(p) == kOutside ) { - G4Exception("Invalid call in G4UnionSolid::SurfaceNormal(p), point p is outside") ; + G4cerr << "WARNING - Invalid call in G4UnionSolid::SurfaceNormal(p)," + << " point p is outside" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4UnionSolid::SurfaceNormal(p), p is outside") ; + #endif } if(fPtrSolidA->Inside(p) == kSurface && fPtrSolidB->Inside(p) != kInside) @@ -184,9 +189,14 @@ G4UnionSolid::SurfaceNormal( const G4ThreeVector& p ) const } else { - G4Exception("Invalid call in G4UnionSolid::SurfaceNormal(p), point p is inside") ; + normal= fPtrSolidA->SurfaceNormal(p) ; + G4cerr << "WARNING - Invalid call in G4UnionSolid::SurfaceNormal(p)," + << " point p is inside" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4UnionSolid::SurfaceNormal(p), p is inside") ; + #endif } - return normal; } @@ -200,7 +210,13 @@ G4UnionSolid::DistanceToIn( const G4ThreeVector& p, { if( Inside(p) == kInside ) { - G4Exception("Invalid call in G4UnionSolid::DistanceToIn(p,v), point p is inside") ; + G4cerr << "WARNING - Invalid call in G4UnionSolid::DistanceToIn(p,v)," + << " point p is inside" << G4endl; + G4cerr << " p = " << p << G4endl; + G4cerr << " v = " << v << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4UnionSolid::DistanceToIn(p,v), point p is intside"); + #endif } return G4std::min(fPtrSolidA->DistanceToIn(p,v), fPtrSolidB->DistanceToIn(p,v) ) ; @@ -216,12 +232,19 @@ G4UnionSolid::DistanceToIn( const G4ThreeVector& p) const { if( Inside(p) == kInside ) { - G4Exception("Invalid call in G4UnionSolid::DistanceToIn(p), point p is inside") ; + G4cerr << "WARNING - Invalid call in G4UnionSolid::DistanceToIn(p)," + << " point p is inside" << G4endl; + G4cerr << " p = " << p << G4endl; + + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4UnionSolid::DistanceToIn(p), p is inside") ; + #endif } G4double distA = fPtrSolidA->DistanceToIn(p) ; G4double distB = fPtrSolidB->DistanceToIn(p) ; - - return G4std::min(distA,distB) ; + G4double safety = G4std::min(distA,distB) ; + if(safety < 0.0) safety = 0.0 ; + return safety ; } ////////////////////////////////////////////////////////// @@ -241,15 +264,21 @@ G4UnionSolid::DistanceToOut( const G4ThreeVector& p, if( Inside(p) == kOutside ) { - G4cout << "Position:" << G4endl << G4endl; - G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl; - G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl; - G4cout << "p.z() = " << p.z()/mm << " mm" << G4endl << G4endl; - G4cout << "Direction:" << G4endl << G4endl; - G4cout << "v.x() = " << v.x() << G4endl; - G4cout << "v.y() = " << v.y() << G4endl; - G4cout << "v.z() = " << v.z() << G4endl << G4endl; - G4Exception("Invalid call in G4UnionSolid::DistanceToOut(p,v), point p is outside") ; + G4cerr << "WARNING - Invalid call in G4UnionSolid::DistanceToOut(p,v)," + << " point p is outside" << G4endl; + G4cerr << " p = " << p << G4endl; + G4cerr << " v = " << v << G4endl; + #ifdef G4BOOLDEBUG + G4cout << "Position:" << G4endl << G4endl; + G4cout << "p.x() = " << p.x()/mm << " mm" << G4endl; + G4cout << "p.y() = " << p.y()/mm << " mm" << G4endl; + G4cout << "p.z() = " << p.z()/mm << " mm" << G4endl << G4endl; + G4cout << "Direction:" << G4endl << G4endl; + G4cout << "v.x() = " << v.x() << G4endl; + G4cout << "v.y() = " << v.y() << G4endl; + G4cout << "v.z() = " << v.z() << G4endl << G4endl; + G4Exception("Invalid call in G4UnionSolid::DistanceToOut(p,v), point p is outside"); + #endif } else { @@ -313,7 +342,12 @@ G4UnionSolid::DistanceToOut( const G4ThreeVector& p ) const G4double distout = kInfinity; if( Inside(p) == kOutside ) { - G4Exception("Invalid call in G4UnionSolid::DistanceToOut(p), point p is outside") ; + G4cerr << "WARNING - Invalid call in G4UnionSolid::DistanceToOut(p)," + << " point p is outside" << G4endl; + G4cerr << " p = " << p << G4endl; + #ifdef G4BOOLDEBUG + G4Exception("Invalid call in G4UnionSolid::DistanceToOut(p), p is outtside"); + #endif } else { diff --git a/source/geometry/solids/CSG/History b/source/geometry/solids/CSG/History index 840cd30169..a7d894c8e9 100644 --- a/source/geometry/solids/CSG/History +++ b/source/geometry/solids/CSG/History @@ -1,4 +1,4 @@ -$Id: History,v 1.42 2001/05/18 08:14:43 gcosmo Exp $ +$Id: History,v 1.43 2001/08/27 13:22:22 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,10 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Aug 27, 2001 V.Grichine geom-solids-csg-V03-02-00 +- G4Sphere.cc: bug fixed in G4Sphere::SurfaceNormal for the case kNETheta. + Fixes problem report #290. + May 18, 2001 G.Cosmo geom-solids-csg-V03-01-02 - Added G4CSGDEBUG preprocessor flag to discriminate for debug verbosity specific to CSG solids. Included in G4Exception of DistanceToOut() for diff --git a/source/geometry/solids/CSG/include/G4Box.hh b/source/geometry/solids/CSG/include/G4Box.hh index 41618c865e..25eeca4cd3 100644 --- a/source/geometry/solids/CSG/include/G4Box.hh +++ b/source/geometry/solids/CSG/include/G4Box.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Box.hh,v 1.6.2.1 2001/06/28 19:08:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Box.hh,v 1.7 2001/07/11 09:59:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/solids/CSG/include/G4CSGSolid.hh b/source/geometry/solids/CSG/include/G4CSGSolid.hh index 2742c610f0..2d0a7905ec 100644 --- a/source/geometry/solids/CSG/include/G4CSGSolid.hh +++ b/source/geometry/solids/CSG/include/G4CSGSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CSGSolid.hh,v 1.4.4.1 2001/06/28 19:08:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CSGSolid.hh,v 1.5 2001/07/11 09:59:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Cons.hh b/source/geometry/solids/CSG/include/G4Cons.hh index 692d59bd60..62e453ba4e 100644 --- a/source/geometry/solids/CSG/include/G4Cons.hh +++ b/source/geometry/solids/CSG/include/G4Cons.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Cons.hh,v 1.5.4.1 2001/06/28 19:08:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Cons.hh,v 1.6 2001/07/11 09:59:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Para.hh b/source/geometry/solids/CSG/include/G4Para.hh index 593dc5265f..ad6e87f966 100644 --- a/source/geometry/solids/CSG/include/G4Para.hh +++ b/source/geometry/solids/CSG/include/G4Para.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Para.hh,v 1.6.4.1 2001/06/28 19:08:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Para.hh,v 1.7 2001/07/11 09:59:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Sphere.hh b/source/geometry/solids/CSG/include/G4Sphere.hh index 5200de704f..70d3d13070 100644 --- a/source/geometry/solids/CSG/include/G4Sphere.hh +++ b/source/geometry/solids/CSG/include/G4Sphere.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Sphere.hh,v 1.5.4.1 2001/06/28 19:08:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Sphere.hh,v 1.6 2001/07/11 09:59:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Torus.hh b/source/geometry/solids/CSG/include/G4Torus.hh index 8183799dc6..f71ffd8560 100644 --- a/source/geometry/solids/CSG/include/G4Torus.hh +++ b/source/geometry/solids/CSG/include/G4Torus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Torus.hh,v 1.12.2.1 2001/06/28 19:08:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Torus.hh,v 1.13 2001/07/11 09:59:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Trap.hh b/source/geometry/solids/CSG/include/G4Trap.hh index 334fa3bfd5..77dc2e0b5b 100644 --- a/source/geometry/solids/CSG/include/G4Trap.hh +++ b/source/geometry/solids/CSG/include/G4Trap.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Trap.hh,v 1.5.4.1 2001/06/28 19:08:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Trap.hh,v 1.6 2001/07/11 09:59:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Trd.hh b/source/geometry/solids/CSG/include/G4Trd.hh index e2b25f080f..77cc0aab43 100644 --- a/source/geometry/solids/CSG/include/G4Trd.hh +++ b/source/geometry/solids/CSG/include/G4Trd.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Trd.hh,v 1.6.4.1 2001/06/28 19:09:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Trd.hh,v 1.7 2001/07/11 09:59:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/include/G4Tubs.hh b/source/geometry/solids/CSG/include/G4Tubs.hh index c5490f52cf..7a8b83eaa0 100644 --- a/source/geometry/solids/CSG/include/G4Tubs.hh +++ b/source/geometry/solids/CSG/include/G4Tubs.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Tubs.hh,v 1.5.4.1 2001/06/28 19:09:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Tubs.hh,v 1.6 2001/07/11 09:59:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/CSG/src/G4Box.cc b/source/geometry/solids/CSG/src/G4Box.cc index 8fd88adc46..18da5d6d5c 100644 --- a/source/geometry/solids/CSG/src/G4Box.cc +++ b/source/geometry/solids/CSG/src/G4Box.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Box.cc,v 1.15.2.1 2001/06/28 19:09:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Box.cc,v 1.16 2001/07/11 09:59:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/geometry/solids/CSG/src/G4CSGSolid.cc b/source/geometry/solids/CSG/src/G4CSGSolid.cc index 5395adfcb0..3ce144e33a 100644 --- a/source/geometry/solids/CSG/src/G4CSGSolid.cc +++ b/source/geometry/solids/CSG/src/G4CSGSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CSGSolid.cc,v 1.2.4.1 2001/06/28 19:09:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CSGSolid.cc,v 1.3 2001/07/11 09:59:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4CSGSolid.hh" diff --git a/source/geometry/solids/CSG/src/G4Cons.cc b/source/geometry/solids/CSG/src/G4Cons.cc index 5cb1b59c3f..3ea163d393 100644 --- a/source/geometry/solids/CSG/src/G4Cons.cc +++ b/source/geometry/solids/CSG/src/G4Cons.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Cons.cc,v 1.18.2.1 2001/06/28 19:09:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Cons.cc,v 1.19 2001/07/11 09:59:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4Cons // diff --git a/source/geometry/solids/CSG/src/G4Para.cc b/source/geometry/solids/CSG/src/G4Para.cc index 27e7c610c9..9bf45bd8d0 100644 --- a/source/geometry/solids/CSG/src/G4Para.cc +++ b/source/geometry/solids/CSG/src/G4Para.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Para.cc,v 1.7.2.1 2001/06/28 19:09:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Para.cc,v 1.8 2001/07/11 09:59:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4Para // diff --git a/source/geometry/solids/CSG/src/G4Sphere.cc b/source/geometry/solids/CSG/src/G4Sphere.cc index ba860ab354..96719bc2a6 100644 --- a/source/geometry/solids/CSG/src/G4Sphere.cc +++ b/source/geometry/solids/CSG/src/G4Sphere.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Sphere.cc,v 1.9.2.1 2001/06/28 19:09:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Sphere.cc,v 1.11 2001/08/27 08:04:08 grichine Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4Sphere // @@ -668,7 +668,7 @@ G4ThreeVector G4Sphere::SurfaceNormal( const G4ThreeVector& p) const case kNETheta: norm=G4ThreeVector(-cos(fSTheta+fDTheta)*cos(fSPhi+fDPhi), -cos(fSTheta+fDTheta)*sin(fSPhi+fDPhi), - -sin(fSTheta+fSTheta)); + -sin(fSTheta+fDTheta)); break; default: diff --git a/source/geometry/solids/CSG/src/G4Torus.cc b/source/geometry/solids/CSG/src/G4Torus.cc index b289494381..ce083cdd25 100644 --- a/source/geometry/solids/CSG/src/G4Torus.cc +++ b/source/geometry/solids/CSG/src/G4Torus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Torus.cc,v 1.24.2.1 2001/06/28 19:09:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Torus.cc,v 1.25 2001/07/11 09:59:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4Torus diff --git a/source/geometry/solids/CSG/src/G4Trap.cc b/source/geometry/solids/CSG/src/G4Trap.cc index 2cb707bd19..2e34b528b1 100644 --- a/source/geometry/solids/CSG/src/G4Trap.cc +++ b/source/geometry/solids/CSG/src/G4Trap.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Trap.cc,v 1.11.2.1 2001/06/28 19:09:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Trap.cc,v 1.12 2001/07/11 09:59:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4Trap // diff --git a/source/geometry/solids/CSG/src/G4Trd.cc b/source/geometry/solids/CSG/src/G4Trd.cc index 7d272cb759..e08bc10888 100644 --- a/source/geometry/solids/CSG/src/G4Trd.cc +++ b/source/geometry/solids/CSG/src/G4Trd.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Trd.cc,v 1.8.2.1 2001/06/28 19:09:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Trd.cc,v 1.9 2001/07/11 09:59:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Implementation for G4Trd class diff --git a/source/geometry/solids/CSG/src/G4Tubs.cc b/source/geometry/solids/CSG/src/G4Tubs.cc index 1c602f1269..42182df317 100644 --- a/source/geometry/solids/CSG/src/G4Tubs.cc +++ b/source/geometry/solids/CSG/src/G4Tubs.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Tubs.cc,v 1.30.2.1 2001/06/28 19:09:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Tubs.cc,v 1.31 2001/07/11 09:59:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4Tubs diff --git a/source/geometry/solids/STEP/GNUmakefile b/source/geometry/solids/STEP/GNUmakefile index 064e90cd50..4a528ed212 100644 --- a/source/geometry/solids/STEP/GNUmakefile +++ b/source/geometry/solids/STEP/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.3 2000/02/14 13:44:01 gcosmo Exp $ +# $Id: GNUmakefile,v 1.5 2001/11/29 16:46:51 gcosmo Exp $ # ------------------------------------------------------------- # GNUmakefile for STEP library. Gabriele Cosmo, 15/11/96. # ------------------------------------------------------------- @@ -20,6 +20,17 @@ CPPFLAGS += \ -I$(G4BASE)/global/HEPRandom/include \ -I$(G4BASE)/global/HEPGeometry/include +# To avoid incompatibilities with ANSI standard treatment of strings, the +# NIST STEP reader on gcc-2.95.X and later must be compiled in non-ANSI mode. +# +ifneq (,$(findstring Linux-g++,$(G4SYSTEM))) + ansi_options = -Wall -ansi -pedantic + NCXX = $(filter-out $(ansi_options),$(CXXFLAGS)) + NCPP = $(CPPFLAGS) + CXXFLAGS := $(NCXX) + CPPFLAGS := $(NCPP) -w +endif + include $(G4INSTALL)/config/common.gmk # Fix for ISO AP203 geometry standard files to be always compiled without optimization. @@ -29,14 +40,18 @@ CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS)) CXXFLAGS_WITHOUT_O := $(filter-out +O% , $(CXXFLAGS_WITHOUT_O)) $(G4TMP)/$(G4SYSTEM)/$(name)/SdaiCONFIG_CONTROL_DESIGN.o: src/SdaiCONFIG_CONTROL_DESIGN.cc - $(CXX) $(CXXFLAGS_WITHOUT_O) $(CPPFLAGS) -c $(OUT_OBJ)$@ src/SdaiCONFIG_CONTROL_DESIGN.cc + @$(ECHO) Compiling SdaiCONFIG_CONTROL_DESIGN.cc ... + @$(CXX) $(CXXFLAGS_WITHOUT_O) $(CPPFLAGS) -c $(OUT_OBJ)$@ src/SdaiCONFIG_CONTROL_DESIGN.cc $(G4TMP)/$(G4SYSTEM)/$(name)/SdaiCONFIG_CONTROL_DESIGN_init.o: src/SdaiCONFIG_CONTROL_DESIGN_init.cc - $(CXX) $(CXXFLAGS_WITHOUT_O) $(CPPFLAGS) -c $(OUT_OBJ)$@ src/SdaiCONFIG_CONTROL_DESIGN_init.cc + @$(ECHO) Compiling SdaiCONFIG_CONTROL_DESIGN_init.cc ... + @$(CXX) $(CXXFLAGS_WITHOUT_O) $(CPPFLAGS) -c $(OUT_OBJ)$@ src/SdaiCONFIG_CONTROL_DESIGN_init.cc ifneq (,$(findstring WIN32-VC,$(G4SYSTEM))) CXXFLAGS_WITH_ZM = $(filter-out -Zm%,$(CXXFLAGS)) -Zm500 $(G4TMPDIR)/SdaiCONFIG_CONTROL_DESIGN.o: src/SdaiCONFIG_CONTROL_DESIGN.cc - $(CXX) $(CXXFLAGS_WITH_ZM) $(CPPFLAGS) -c $(OUT_OBJ)$@ \ + @$(ECHO) Compiling SdaiCONFIG_CONTROL_DESIGN.cc ... + @$(CXX) $(CXXFLAGS_WITH_ZM) $(CPPFLAGS) -c $(OUT_OBJ)$@ \ src/SdaiCONFIG_CONTROL_DESIGN.cc endif + diff --git a/source/geometry/solids/STEP/History b/source/geometry/solids/STEP/History index 3d825b06ac..f5d43e9f25 100644 --- a/source/geometry/solids/STEP/History +++ b/source/geometry/solids/STEP/History @@ -1,4 +1,4 @@ -$Id: History,v 1.6 2001/06/18 08:41:12 gcosmo Exp $ +$Id: History,v 1.9 2001/11/29 16:50:01 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -19,6 +19,16 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 29, 2001 Gabriele Cosmo (STEP-V03-02-01) +- Fixes for compilation on gcc-2.96.98 and gcc-3.0.2 compilers to overcome warnings + produced and fix std namespace problems in sdaiString.cc. + +September 19, 2001 Gabriele Cosmo (STEP-V03-02-00) +- SdaiCONFIG_CONTROL_DESIGN.cc: cleaned up warnings on SUN-CC. +- dirobj.cc: restored usage of strdup() and force non-ansi compilation in GNUmakefile + for Linux-g++, to avoid incompatibilities on the usage of C strings operations + when "-ansi -pedantic" is adopted. + June 18, 2001 Gabriele Cosmo (STEP-V03-01-00) - dirobj.cc: removed usage of strdup() to allow porting on Linux-g++ -ansi setup. Replaced with existing solution for __O3DB__. diff --git a/source/geometry/solids/STEP/include/classes.h b/source/geometry/solids/STEP/include/classes.h index 1941a591a4..e0ae2b5327 100644 --- a/source/geometry/solids/STEP/include/classes.h +++ b/source/geometry/solids/STEP/include/classes.h @@ -6,7 +6,7 @@ // // $Id: classes.h,v 1.3 2000/01/21 13:42:37 gcosmo Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // /* ** Fed-x parser output module for generating C++ class definitions diff --git a/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc b/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc index 7e2650a641..8dc6170bf3 100644 --- a/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc +++ b/source/geometry/solids/STEP/src/SdaiCONFIG_CONTROL_DESIGN.cc @@ -3,7 +3,7 @@ // This file was generated by fedex_plus. You probably don't want to edit // it since your modifications will be lost if fedex_plus is used to // regenerate it. -/* $Id: SdaiCONFIG_CONTROL_DESIGN.cc,v 1.6 2000/06/09 15:51:36 gcosmo Exp $ */ +/* $Id: SdaiCONFIG_CONTROL_DESIGN.cc,v 1.7 2001/09/19 11:22:32 gcosmo Exp $ */ #ifndef SCHEMA_H #include #endif @@ -1415,7 +1415,7 @@ SdaiCharacterized_product_definition::AssignEntity (SCLP23(Application_instance) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -1503,12 +1503,12 @@ SdaiCharacterized_product_definition::STEPread_content (G4std::istream& in, Inst { if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -1516,12 +1516,12 @@ SdaiCharacterized_product_definition::STEPread_content (G4std::istream& in, Inst } if (CurrentUnderlyingType () == config_control_designe_product_definition_relationship) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -1531,7 +1531,7 @@ SdaiCharacterized_product_definition::STEPread_content (G4std::istream& in, Inst severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -1548,7 +1548,7 @@ SdaiCharacterized_product_definition::StrToVal_content (const char * str, InstMg severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -1699,7 +1699,7 @@ SdaiCharacterized_product_definition::operator SdaiProduct_definition_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -1711,7 +1711,7 @@ SdaiCharacterized_product_definition::operator SdaiProduct_definition_relationsh severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -1743,7 +1743,7 @@ SdaiCharacterized_product_definition::related_product_definition_ (const SdaiPro severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_ptr @@ -1771,7 +1771,7 @@ SdaiCharacterized_product_definition::relating_product_definition_ (const SdaiPr severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -1799,7 +1799,7 @@ SdaiCharacterized_product_definition::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_context_ptr @@ -1827,7 +1827,7 @@ SdaiCharacterized_product_definition::frame_of_reference_ (const SdaiProduct_def severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_formation_ptr @@ -1855,7 +1855,7 @@ SdaiCharacterized_product_definition::formation_ (const SdaiProduct_definition_f severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -1891,7 +1891,7 @@ SdaiCharacterized_product_definition::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -1927,7 +1927,7 @@ SdaiCharacterized_product_definition::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -2029,7 +2029,7 @@ SdaiShape_definition::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -2127,12 +2127,12 @@ SdaiShape_definition::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_product_definition_shape) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -2140,12 +2140,12 @@ SdaiShape_definition::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_shape_aspect) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -2153,12 +2153,12 @@ SdaiShape_definition::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_shape_aspect_relationship) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -2168,7 +2168,7 @@ SdaiShape_definition::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -2185,7 +2185,7 @@ SdaiShape_definition::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -2355,7 +2355,7 @@ SdaiShape_definition::operator SdaiProduct_definition_shape_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -2367,7 +2367,7 @@ SdaiShape_definition::operator SdaiShape_aspect_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -2379,7 +2379,7 @@ SdaiShape_definition::operator SdaiShape_aspect_relationship_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -2411,7 +2411,7 @@ SdaiShape_definition::related_shape_aspect_ (const SdaiShape_aspect_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiShape_aspect_ptr @@ -2439,7 +2439,7 @@ SdaiShape_definition::relating_shape_aspect_ (const SdaiShape_aspect_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SCLLOG(Logical) @@ -2467,7 +2467,7 @@ SdaiShape_definition::product_definitional_ (const SCLLOG(Logical) x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_shape_ptr @@ -2495,7 +2495,7 @@ SdaiShape_definition::of_shape_ (const SdaiProduct_definition_shape_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiCharacterized_definition_ptr @@ -2523,7 +2523,7 @@ SdaiShape_definition::definition_ (const SdaiCharacterized_definition_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -2567,7 +2567,7 @@ SdaiShape_definition::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -2611,7 +2611,7 @@ SdaiShape_definition::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -2728,7 +2728,7 @@ SdaiCharacterized_definition::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -2826,7 +2826,7 @@ SdaiCharacterized_definition::STEPread_content (G4std::istream& in, InstMgr * in severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -2843,7 +2843,7 @@ SdaiCharacterized_definition::StrToVal_content (const char * str, InstMgr * inst severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -2998,12 +2998,12 @@ SdaiCharacterized_definition::operator SdaiCharacterized_product_definition_ptr( return & _sdaicharacterized_product_definition; severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiCharacterized_product_definition_ptr" ); + Error( (char*)"Underlying type is not SdaiCharacterized_product_definition_ptr" ); severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return 0; } @@ -3013,12 +3013,12 @@ SdaiCharacterized_definition::operator SdaiShape_definition_ptr() return & _sdaishape_definition; severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiShape_definition_ptr" ); + Error( (char*)"Underlying type is not SdaiShape_definition_ptr" ); severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return 0; } @@ -3112,7 +3112,7 @@ SdaiChange_request_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -3190,12 +3190,12 @@ SdaiChange_request_item::STEPread_content (G4std::istream& in, InstMgr * instanc { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -3205,7 +3205,7 @@ SdaiChange_request_item::STEPread_content (G4std::istream& in, InstMgr * instanc severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -3222,7 +3222,7 @@ SdaiChange_request_item::StrToVal_content (const char * str, InstMgr * instances severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -3354,7 +3354,7 @@ SdaiChange_request_item::operator SdaiProduct_definition_formation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -3386,7 +3386,7 @@ SdaiChange_request_item::of_product_ (const SdaiProduct_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -3414,7 +3414,7 @@ SdaiChange_request_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -3442,7 +3442,7 @@ SdaiChange_request_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -3541,7 +3541,7 @@ SdaiReversible_topology_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -3669,12 +3669,12 @@ SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * in { if (CurrentUnderlyingType () == config_control_designe_edge) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -3682,12 +3682,12 @@ SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_path) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -3695,12 +3695,12 @@ SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_face) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -3708,12 +3708,12 @@ SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_face_bound) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -3721,12 +3721,12 @@ SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_closed_shell) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -3734,12 +3734,12 @@ SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_open_shell) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -3749,7 +3749,7 @@ SdaiReversible_topology_item::STEPread_content (G4std::istream& in, InstMgr * in severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -3766,7 +3766,7 @@ SdaiReversible_topology_item::StrToVal_content (const char * str, InstMgr * inst severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -3993,7 +3993,7 @@ SdaiReversible_topology_item::operator SdaiEdge_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -4005,7 +4005,7 @@ SdaiReversible_topology_item::operator SdaiPath_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -4017,7 +4017,7 @@ SdaiReversible_topology_item::operator SdaiFace_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -4029,7 +4029,7 @@ SdaiReversible_topology_item::operator SdaiFace_bound_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -4041,7 +4041,7 @@ SdaiReversible_topology_item::operator SdaiClosed_shell_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -4053,7 +4053,7 @@ SdaiReversible_topology_item::operator SdaiOpen_shell_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -4093,7 +4093,7 @@ SdaiReversible_topology_item::cfs_faces_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SCLBOOL(Bool) @@ -4121,7 +4121,7 @@ SdaiReversible_topology_item::orientation_ (const SCLBOOL(Bool) x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLoop_ptr @@ -4149,7 +4149,7 @@ SdaiReversible_topology_item::bound_ (const SdaiLoop_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const EntityAggregate_ptr @@ -4177,7 +4177,7 @@ SdaiReversible_topology_item::bounds_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const EntityAggregate_ptr @@ -4205,7 +4205,7 @@ SdaiReversible_topology_item::edge_list_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiVertex_ptr @@ -4233,7 +4233,7 @@ SdaiReversible_topology_item::edge_end_ (const SdaiVertex_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiVertex_ptr @@ -4261,7 +4261,7 @@ SdaiReversible_topology_item::edge_start_ (const SdaiVertex_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -4329,7 +4329,7 @@ SdaiReversible_topology_item::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -4509,7 +4509,7 @@ SdaiAxis2_placement::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -4597,12 +4597,12 @@ SdaiAxis2_placement::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_axis2_placement_2d) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -4610,12 +4610,12 @@ SdaiAxis2_placement::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_axis2_placement_3d) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -4625,7 +4625,7 @@ SdaiAxis2_placement::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -4642,7 +4642,7 @@ SdaiAxis2_placement::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -4793,7 +4793,7 @@ SdaiAxis2_placement::operator SdaiAxis2_placement_2d_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -4805,7 +4805,7 @@ SdaiAxis2_placement::operator SdaiAxis2_placement_3d_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -4837,7 +4837,7 @@ SdaiAxis2_placement::axis_ (const SdaiDirection_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiDirection_ptr @@ -4873,7 +4873,7 @@ SdaiAxis2_placement::ref_direction_ (const SdaiDirection_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiCartesian_point_ptr @@ -4909,7 +4909,7 @@ SdaiAxis2_placement::location_ (const SdaiCartesian_point_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -4945,7 +4945,7 @@ SdaiAxis2_placement::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -5041,7 +5041,7 @@ SdaiSpecified_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -5129,12 +5129,12 @@ SdaiSpecified_item::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -5142,12 +5142,12 @@ SdaiSpecified_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_shape_aspect) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -5157,7 +5157,7 @@ SdaiSpecified_item::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -5174,7 +5174,7 @@ SdaiSpecified_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -5325,7 +5325,7 @@ SdaiSpecified_item::operator SdaiProduct_definition_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -5337,7 +5337,7 @@ SdaiSpecified_item::operator SdaiShape_aspect_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -5369,7 +5369,7 @@ SdaiSpecified_item::product_definitional_ (const SCLLOG(Logical) x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_shape_ptr @@ -5397,7 +5397,7 @@ SdaiSpecified_item::of_shape_ (const SdaiProduct_definition_shape_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -5425,7 +5425,7 @@ SdaiSpecified_item::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_context_ptr @@ -5453,7 +5453,7 @@ SdaiSpecified_item::frame_of_reference_ (const SdaiProduct_definition_context_pt severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_formation_ptr @@ -5481,7 +5481,7 @@ SdaiSpecified_item::formation_ (const SdaiProduct_definition_formation_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -5517,7 +5517,7 @@ SdaiSpecified_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -5545,7 +5545,7 @@ SdaiSpecified_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -5629,7 +5629,7 @@ SdaiMeasure_value::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -5816,15 +5816,15 @@ SdaiMeasure_value::STEPread_content (G4std::istream& in, InstMgr * instances, const char *utype, int addFileId, const char *currSch) { if (CurrentUnderlyingType () == config_control_designt_area_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_context_dependent_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_count_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_descriptive_measure) { @@ -5832,42 +5832,42 @@ SdaiMeasure_value::STEPread_content (G4std::istream& in, InstMgr * instances, return severity (); } if (CurrentUnderlyingType () == config_control_designt_length_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_mass_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_plane_angle_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_parameter_value) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_positive_length_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_positive_plane_angle_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_solid_angle_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } if (CurrentUnderlyingType () == config_control_designt_volume_measure) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -5886,7 +5886,7 @@ SdaiMeasure_value::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -6030,12 +6030,12 @@ SdaiMeasure_value::operator SdaiDescriptive_measure() return _string; severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiDescriptive_measure" ); + Error( (char*)"Underlying type is not SdaiDescriptive_measure" ); severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return 0; } @@ -6065,12 +6065,12 @@ SdaiMeasure_value::operator SCLP23(Real)() return _real; severity( SEVERITY_WARNING ); - Error( "Underlying type is not SCLP23(Real)" ); + Error( (char*)"Underlying type is not SCLP23(Real)" ); severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return (SCLP23(Real))0; } @@ -6307,7 +6307,7 @@ SdaiPerson_organization_select::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -6385,12 +6385,12 @@ SdaiPerson_organization_select::STEPread_content (G4std::istream& in, InstMgr * { if (CurrentUnderlyingType () == config_control_designe_person_and_organization) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -6400,7 +6400,7 @@ SdaiPerson_organization_select::STEPread_content (G4std::istream& in, InstMgr * severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -6417,7 +6417,7 @@ SdaiPerson_organization_select::StrToVal_content (const char * str, InstMgr * in severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -6549,7 +6549,7 @@ SdaiPerson_organization_select::operator SdaiPerson_and_organization_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -6581,7 +6581,7 @@ SdaiPerson_organization_select::the_organization_ (const SdaiOrganization_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiPerson_ptr @@ -6609,7 +6609,7 @@ SdaiPerson_organization_select::the_person_ (const SdaiPerson_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -6684,7 +6684,7 @@ SdaiPcurve_or_surface::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -6772,12 +6772,12 @@ SdaiPcurve_or_surface::STEPread_content (G4std::istream& in, InstMgr * instances { if (CurrentUnderlyingType () == config_control_designe_pcurve) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -6785,12 +6785,12 @@ SdaiPcurve_or_surface::STEPread_content (G4std::istream& in, InstMgr * instances } if (CurrentUnderlyingType () == config_control_designe_surface) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -6800,7 +6800,7 @@ SdaiPcurve_or_surface::STEPread_content (G4std::istream& in, InstMgr * instances severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -6817,7 +6817,7 @@ SdaiPcurve_or_surface::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -6968,7 +6968,7 @@ SdaiPcurve_or_surface::operator SdaiPcurve_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -6980,7 +6980,7 @@ SdaiPcurve_or_surface::operator SdaiSurface_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -7012,7 +7012,7 @@ SdaiPcurve_or_surface::reference_to_curve_ (const SdaiDefinitional_representatio severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiSurface_ptr @@ -7040,7 +7040,7 @@ SdaiPcurve_or_surface::basis_surface_ (const SdaiSurface_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -7076,7 +7076,7 @@ SdaiPcurve_or_surface::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -7172,7 +7172,7 @@ SdaiClassified_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -7260,12 +7260,12 @@ SdaiClassified_item::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -7273,12 +7273,12 @@ SdaiClassified_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_assembly_component_usage) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -7288,7 +7288,7 @@ SdaiClassified_item::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -7305,7 +7305,7 @@ SdaiClassified_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -7456,7 +7456,7 @@ SdaiClassified_item::operator SdaiProduct_definition_formation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -7468,7 +7468,7 @@ SdaiClassified_item::operator SdaiAssembly_component_usage_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -7500,7 +7500,7 @@ SdaiClassified_item::reference_designator_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_ptr @@ -7528,7 +7528,7 @@ SdaiClassified_item::related_product_definition_ (const SdaiProduct_definition_p severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_ptr @@ -7556,7 +7556,7 @@ SdaiClassified_item::relating_product_definition_ (const SdaiProduct_definition_ severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -7584,7 +7584,7 @@ SdaiClassified_item::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_ptr @@ -7612,7 +7612,7 @@ SdaiClassified_item::of_product_ (const SdaiProduct_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -7648,7 +7648,7 @@ SdaiClassified_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -7684,7 +7684,7 @@ SdaiClassified_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -7780,7 +7780,7 @@ SdaiVector_or_direction::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -7868,12 +7868,12 @@ SdaiVector_or_direction::STEPread_content (G4std::istream& in, InstMgr * instanc { if (CurrentUnderlyingType () == config_control_designe_vector) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -7881,12 +7881,12 @@ SdaiVector_or_direction::STEPread_content (G4std::istream& in, InstMgr * instanc } if (CurrentUnderlyingType () == config_control_designe_direction) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -7896,7 +7896,7 @@ SdaiVector_or_direction::STEPread_content (G4std::istream& in, InstMgr * instanc severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -7913,7 +7913,7 @@ SdaiVector_or_direction::StrToVal_content (const char * str, InstMgr * instances severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -8064,7 +8064,7 @@ SdaiVector_or_direction::operator SdaiVector_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -8076,7 +8076,7 @@ SdaiVector_or_direction::operator SdaiDirection_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -8108,7 +8108,7 @@ SdaiVector_or_direction::direction_ratios_ (const RealAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLength_measure @@ -8136,7 +8136,7 @@ SdaiVector_or_direction::magnitude_ (const SdaiLength_measure x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiDirection_ptr @@ -8164,7 +8164,7 @@ SdaiVector_or_direction::orientation_ (const SdaiDirection_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -8200,7 +8200,7 @@ SdaiVector_or_direction::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -8296,7 +8296,7 @@ SdaiWireframe_model::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -8384,12 +8384,12 @@ SdaiWireframe_model::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_shell_based_wireframe_model) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -8397,12 +8397,12 @@ SdaiWireframe_model::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_edge_based_wireframe_model) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -8412,7 +8412,7 @@ SdaiWireframe_model::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -8429,7 +8429,7 @@ SdaiWireframe_model::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -8580,7 +8580,7 @@ SdaiWireframe_model::operator SdaiShell_based_wireframe_model_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -8592,7 +8592,7 @@ SdaiWireframe_model::operator SdaiEdge_based_wireframe_model_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -8624,7 +8624,7 @@ SdaiWireframe_model::ebwm_boundary_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiShells_ptr @@ -8652,7 +8652,7 @@ SdaiWireframe_model::sbwm_boundary_ (const SdaiShells_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -8688,7 +8688,7 @@ SdaiWireframe_model::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -8790,7 +8790,7 @@ SdaiGeometric_set_select::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -8888,12 +8888,12 @@ SdaiGeometric_set_select::STEPread_content (G4std::istream& in, InstMgr * instan { if (CurrentUnderlyingType () == config_control_designe_point) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -8901,12 +8901,12 @@ SdaiGeometric_set_select::STEPread_content (G4std::istream& in, InstMgr * instan } if (CurrentUnderlyingType () == config_control_designe_curve) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -8914,12 +8914,12 @@ SdaiGeometric_set_select::STEPread_content (G4std::istream& in, InstMgr * instan } if (CurrentUnderlyingType () == config_control_designe_surface) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -8929,7 +8929,7 @@ SdaiGeometric_set_select::STEPread_content (G4std::istream& in, InstMgr * instan severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -8946,7 +8946,7 @@ SdaiGeometric_set_select::StrToVal_content (const char * str, InstMgr * instance severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -9116,7 +9116,7 @@ SdaiGeometric_set_select::operator SdaiPoint_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -9128,7 +9128,7 @@ SdaiGeometric_set_select::operator SdaiCurve_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -9140,7 +9140,7 @@ SdaiGeometric_set_select::operator SdaiSurface_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -9188,7 +9188,7 @@ SdaiGeometric_set_select::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -9299,7 +9299,7 @@ SdaiStart_request_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -9377,12 +9377,12 @@ SdaiStart_request_item::STEPread_content (G4std::istream& in, InstMgr * instance { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -9392,7 +9392,7 @@ SdaiStart_request_item::STEPread_content (G4std::istream& in, InstMgr * instance severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -9409,7 +9409,7 @@ SdaiStart_request_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -9541,7 +9541,7 @@ SdaiStart_request_item::operator SdaiProduct_definition_formation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -9573,7 +9573,7 @@ SdaiStart_request_item::of_product_ (const SdaiProduct_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -9601,7 +9601,7 @@ SdaiStart_request_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -9629,7 +9629,7 @@ SdaiStart_request_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -9752,7 +9752,7 @@ SdaiPerson_organization_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -9920,12 +9920,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in { if (CurrentUnderlyingType () == config_control_designe_change) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -9933,12 +9933,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_start_work) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -9946,12 +9946,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_change_request) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -9959,12 +9959,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_start_request) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -9972,12 +9972,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_configuration_item) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -9985,12 +9985,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_product) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -9998,12 +9998,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -10011,12 +10011,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -10024,12 +10024,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_contract) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -10037,12 +10037,12 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in } if (CurrentUnderlyingType () == config_control_designe_security_classification) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -10052,7 +10052,7 @@ SdaiPerson_organization_item::STEPread_content (G4std::istream& in, InstMgr * in severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -10069,7 +10069,7 @@ SdaiPerson_organization_item::StrToVal_content (const char * str, InstMgr * inst severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -10372,7 +10372,7 @@ SdaiPerson_organization_item::operator SdaiChange_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10384,7 +10384,7 @@ SdaiPerson_organization_item::operator SdaiStart_work_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10396,7 +10396,7 @@ SdaiPerson_organization_item::operator SdaiChange_request_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10408,7 +10408,7 @@ SdaiPerson_organization_item::operator SdaiStart_request_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10420,7 +10420,7 @@ SdaiPerson_organization_item::operator SdaiConfiguration_item_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10432,7 +10432,7 @@ SdaiPerson_organization_item::operator SdaiProduct_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10444,7 +10444,7 @@ SdaiPerson_organization_item::operator SdaiProduct_definition_formation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10456,7 +10456,7 @@ SdaiPerson_organization_item::operator SdaiProduct_definition_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10468,7 +10468,7 @@ SdaiPerson_organization_item::operator SdaiContract_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10480,7 +10480,7 @@ SdaiPerson_organization_item::operator SdaiSecurity_classification_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -10512,7 +10512,7 @@ SdaiPerson_organization_item::security_level_ (const SdaiSecurity_classification severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiContract_type_ptr @@ -10540,7 +10540,7 @@ SdaiPerson_organization_item::kind_ (const SdaiContract_type_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_formation_ptr @@ -10568,7 +10568,7 @@ SdaiPerson_organization_item::formation_ (const SdaiProduct_definition_formation severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_ptr @@ -10596,7 +10596,7 @@ SdaiPerson_organization_item::of_product_ (const SdaiProduct_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const EntityAggregate_ptr @@ -10627,7 +10627,7 @@ SdaiPerson_organization_item::frame_of_reference_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -10671,7 +10671,7 @@ SdaiPerson_organization_item::purpose_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_concept_ptr @@ -10699,7 +10699,7 @@ SdaiPerson_organization_item::item_concept_ (const SdaiProduct_concept_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -10751,7 +10751,7 @@ SdaiPerson_organization_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -10803,7 +10803,7 @@ SdaiPerson_organization_item::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -10855,7 +10855,7 @@ SdaiPerson_organization_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiVersioned_action_request_ptr @@ -10891,7 +10891,7 @@ SdaiPerson_organization_item::assigned_action_request_ (const SdaiVersioned_acti severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiWork_items_ptr @@ -10933,7 +10933,7 @@ SdaiPerson_organization_item::items_ (const SdaiWork_items_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiAction_ptr @@ -10969,7 +10969,7 @@ SdaiPerson_organization_item::assigned_action_ (const SdaiAction_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -11275,7 +11275,7 @@ SdaiDate_time_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -11433,12 +11433,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11446,12 +11446,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_change_request) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11459,12 +11459,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_start_request) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11472,12 +11472,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_change) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11485,12 +11485,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_start_work) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11498,12 +11498,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_approval_person_organization) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11511,12 +11511,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_contract) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11524,12 +11524,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_security_classification) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11537,12 +11537,12 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_certification) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -11552,7 +11552,7 @@ SdaiDate_time_item::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -11569,7 +11569,7 @@ SdaiDate_time_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -11853,7 +11853,7 @@ SdaiDate_time_item::operator SdaiProduct_definition_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11865,7 +11865,7 @@ SdaiDate_time_item::operator SdaiChange_request_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11877,7 +11877,7 @@ SdaiDate_time_item::operator SdaiStart_request_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11889,7 +11889,7 @@ SdaiDate_time_item::operator SdaiChange_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11901,7 +11901,7 @@ SdaiDate_time_item::operator SdaiStart_work_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11913,7 +11913,7 @@ SdaiDate_time_item::operator SdaiApproval_person_organization_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11925,7 +11925,7 @@ SdaiDate_time_item::operator SdaiContract_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11937,7 +11937,7 @@ SdaiDate_time_item::operator SdaiSecurity_classification_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11949,7 +11949,7 @@ SdaiDate_time_item::operator SdaiCertification_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -11981,7 +11981,7 @@ SdaiDate_time_item::security_level_ (const SdaiSecurity_classification_level_ptr severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiContract_type_ptr @@ -12012,7 +12012,7 @@ SdaiDate_time_item::kind_ (const SdaiContract_type_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -12056,7 +12056,7 @@ SdaiDate_time_item::purpose_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -12100,7 +12100,7 @@ SdaiDate_time_item::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiApproval_role_ptr @@ -12128,7 +12128,7 @@ SdaiDate_time_item::role_ (const SdaiApproval_role_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiApproval_ptr @@ -12156,7 +12156,7 @@ SdaiDate_time_item::authorized_approval_ (const SdaiApproval_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiPerson_organization_select_ptr @@ -12184,7 +12184,7 @@ SdaiDate_time_item::person_organization_ (const SdaiPerson_organization_select_p severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiAction_ptr @@ -12220,7 +12220,7 @@ SdaiDate_time_item::assigned_action_ (const SdaiAction_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiChange_request_items_ptr @@ -12257,7 +12257,7 @@ SdaiDate_time_item::items_ (const SdaiChange_request_items_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiVersioned_action_request_ptr @@ -12293,7 +12293,7 @@ SdaiDate_time_item::assigned_action_request_ (const SdaiVersioned_action_request severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_context_ptr @@ -12321,7 +12321,7 @@ SdaiDate_time_item::frame_of_reference_ (const SdaiProduct_definition_context_pt severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_formation_ptr @@ -12349,7 +12349,7 @@ SdaiDate_time_item::formation_ (const SdaiProduct_definition_formation_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -12377,7 +12377,7 @@ SdaiDate_time_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -12405,7 +12405,7 @@ SdaiDate_time_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -12660,7 +12660,7 @@ SdaiShell::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -12768,12 +12768,12 @@ SdaiShell::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_open_shell) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -12781,12 +12781,12 @@ SdaiShell::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_closed_shell) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -12794,12 +12794,12 @@ SdaiShell::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_vertex_shell) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -12807,12 +12807,12 @@ SdaiShell::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_wire_shell) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -12822,7 +12822,7 @@ SdaiShell::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -12839,7 +12839,7 @@ SdaiShell::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -13028,7 +13028,7 @@ SdaiShell::operator SdaiOpen_shell_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -13040,7 +13040,7 @@ SdaiShell::operator SdaiClosed_shell_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -13052,7 +13052,7 @@ SdaiShell::operator SdaiVertex_shell_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -13064,7 +13064,7 @@ SdaiShell::operator SdaiWire_shell_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -13096,7 +13096,7 @@ SdaiShell::wire_shell_extent_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiVertex_loop_ptr @@ -13124,7 +13124,7 @@ SdaiShell::vertex_shell_extent_ (const SdaiVertex_loop_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const EntityAggregate_ptr @@ -13160,7 +13160,7 @@ SdaiShell::cfs_faces_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -13212,7 +13212,7 @@ SdaiShell::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -13350,7 +13350,7 @@ SdaiTransformation::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -13438,12 +13438,12 @@ SdaiTransformation::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_item_defined_transformation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -13451,12 +13451,12 @@ SdaiTransformation::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_functionally_defined_transformation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -13466,7 +13466,7 @@ SdaiTransformation::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -13483,7 +13483,7 @@ SdaiTransformation::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -13634,7 +13634,7 @@ SdaiTransformation::operator SdaiItem_defined_transformation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -13646,7 +13646,7 @@ SdaiTransformation::operator SdaiFunctionally_defined_transformation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -13678,7 +13678,7 @@ SdaiTransformation::transform_item_2_ (const SdaiRepresentation_item_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiRepresentation_item_ptr @@ -13706,7 +13706,7 @@ SdaiTransformation::transform_item_1_ (const SdaiRepresentation_item_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -13742,7 +13742,7 @@ SdaiTransformation::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -13778,7 +13778,7 @@ SdaiTransformation::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -13868,7 +13868,7 @@ SdaiBoolean_operand::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -13946,12 +13946,12 @@ SdaiBoolean_operand::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_solid_model) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -13961,7 +13961,7 @@ SdaiBoolean_operand::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -13978,7 +13978,7 @@ SdaiBoolean_operand::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -14110,7 +14110,7 @@ SdaiBoolean_operand::operator SdaiSolid_model_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -14142,7 +14142,7 @@ SdaiBoolean_operand::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -14211,7 +14211,7 @@ SdaiCertified_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -14289,12 +14289,12 @@ SdaiCertified_item::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_supplied_part_relationship) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -14304,7 +14304,7 @@ SdaiCertified_item::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -14321,7 +14321,7 @@ SdaiCertified_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -14453,7 +14453,7 @@ SdaiCertified_item::operator SdaiSupplied_part_relationship_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -14485,7 +14485,7 @@ SdaiCertified_item::related_product_definition_ (const SdaiProduct_definition_pt severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_ptr @@ -14513,7 +14513,7 @@ SdaiCertified_item::relating_product_definition_ (const SdaiProduct_definition_p severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -14541,7 +14541,7 @@ SdaiCertified_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -14569,7 +14569,7 @@ SdaiCertified_item::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -14597,7 +14597,7 @@ SdaiCertified_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -14666,7 +14666,7 @@ SdaiDate_time_select::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -14744,12 +14744,12 @@ SdaiDate_time_select::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_date_and_time) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -14759,7 +14759,7 @@ SdaiDate_time_select::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -14776,7 +14776,7 @@ SdaiDate_time_select::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -14908,7 +14908,7 @@ SdaiDate_time_select::operator SdaiDate_and_time_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -14940,7 +14940,7 @@ SdaiDate_time_select::time_component_ (const SdaiLocal_time_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiDate_ptr @@ -14968,7 +14968,7 @@ SdaiDate_time_select::date_component_ (const SdaiDate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -15049,7 +15049,7 @@ SdaiCurve_on_surface::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -15147,12 +15147,12 @@ SdaiCurve_on_surface::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_pcurve) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -15160,12 +15160,12 @@ SdaiCurve_on_surface::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_surface_curve) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -15173,12 +15173,12 @@ SdaiCurve_on_surface::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_composite_curve_on_surface) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -15188,7 +15188,7 @@ SdaiCurve_on_surface::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -15205,7 +15205,7 @@ SdaiCurve_on_surface::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -15375,7 +15375,7 @@ SdaiCurve_on_surface::operator SdaiPcurve_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -15387,7 +15387,7 @@ SdaiCurve_on_surface::operator SdaiSurface_curve_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -15399,7 +15399,7 @@ SdaiCurve_on_surface::operator SdaiComposite_curve_on_surface_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -15431,7 +15431,7 @@ SdaiCurve_on_surface::self_intersect_ (const SCLLOG(Logical) x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const EntityAggregate_ptr @@ -15459,7 +15459,7 @@ SdaiCurve_on_surface::segments_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiPreferred_surface_curve_representation_var @@ -15487,7 +15487,7 @@ SdaiCurve_on_surface::master_representation_ (const SdaiPreferred_surface_curve_ severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiPcurve_or_surfaces_ptr @@ -15515,7 +15515,7 @@ SdaiCurve_on_surface::associated_geometry_ (const SdaiPcurve_or_surfaces_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiCurve_ptr @@ -15543,7 +15543,7 @@ SdaiCurve_on_surface::curve_3d_ (const SdaiCurve_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiDefinitional_representation_ptr @@ -15571,7 +15571,7 @@ SdaiCurve_on_surface::reference_to_curve_ (const SdaiDefinitional_representation severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiSurface_ptr @@ -15603,7 +15603,7 @@ SdaiCurve_on_surface::basis_surface_ (const SdaiSurface_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -15647,7 +15647,7 @@ SdaiCurve_on_surface::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -15758,7 +15758,7 @@ SdaiTrimming_select::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -15846,26 +15846,26 @@ SdaiTrimming_select::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_cartesian_point) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); } } if (CurrentUnderlyingType () == config_control_designt_parameter_value) { - ReadReal (_real, in, &_error, "),"); + ReadReal (_real, in, &_error, (char*)"),"); return severity (); } severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -15882,7 +15882,7 @@ SdaiTrimming_select::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -16033,7 +16033,7 @@ SdaiTrimming_select::operator SdaiCartesian_point_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -16043,12 +16043,12 @@ SdaiTrimming_select::operator SdaiParameter_value() return _real; severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiParameter_value" ); + Error( (char*)"Underlying type is not SdaiParameter_value" ); severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return 0; } @@ -16080,7 +16080,7 @@ SdaiTrimming_select::coordinates_ (const RealAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -16108,7 +16108,7 @@ SdaiTrimming_select::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -16198,7 +16198,7 @@ SdaiContracted_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -16276,12 +16276,12 @@ SdaiContracted_item::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -16291,7 +16291,7 @@ SdaiContracted_item::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -16308,7 +16308,7 @@ SdaiContracted_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -16440,7 +16440,7 @@ SdaiContracted_item::operator SdaiProduct_definition_formation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -16472,7 +16472,7 @@ SdaiContracted_item::of_product_ (const SdaiProduct_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -16500,7 +16500,7 @@ SdaiContracted_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -16528,7 +16528,7 @@ SdaiContracted_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -16597,7 +16597,7 @@ SdaiUnit::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -16675,12 +16675,12 @@ SdaiUnit::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_named_unit) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -16690,7 +16690,7 @@ SdaiUnit::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -16707,7 +16707,7 @@ SdaiUnit::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -16839,7 +16839,7 @@ SdaiUnit::operator SdaiNamed_unit_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -16871,7 +16871,7 @@ SdaiUnit::dimensions_ (const SdaiDimensional_exponents_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -16940,7 +16940,7 @@ SdaiReversible_topology::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -17056,7 +17056,7 @@ SdaiReversible_topology::STEPread_content (G4std::istream& in, InstMgr * instanc severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -17075,7 +17075,7 @@ SdaiReversible_topology::StrToVal_content (const char * str, InstMgr * instances severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -17228,12 +17228,12 @@ SdaiReversible_topology::operator SdaiReversible_topology_item_ptr() return & _sdaireversible_topology_item; severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiReversible_topology_item_ptr" ); + Error( (char*)"Underlying type is not SdaiReversible_topology_item_ptr" ); severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return 0; } @@ -17245,12 +17245,12 @@ SdaiReversible_topology::operator SdaiSet_of_reversible_topology_item_ptr() return & _sdaireversible_topology_items; severity( SEVERITY_WARNING ); - Error( "Underlying type is not SdaiSet_of_reversible_topology_item_ptr" ); + Error( (char*)"Underlying type is not SdaiSet_of_reversible_topology_item_ptr" ); severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return (SdaiSet_of_reversible_topology_item_ptr)0; } @@ -17370,7 +17370,7 @@ SdaiWork_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -17448,12 +17448,12 @@ SdaiWork_item::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -17463,7 +17463,7 @@ SdaiWork_item::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -17480,7 +17480,7 @@ SdaiWork_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -17612,7 +17612,7 @@ SdaiWork_item::operator SdaiProduct_definition_formation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -17644,7 +17644,7 @@ SdaiWork_item::of_product_ (const SdaiProduct_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -17672,7 +17672,7 @@ SdaiWork_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -17700,7 +17700,7 @@ SdaiWork_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -17781,7 +17781,7 @@ SdaiSupported_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -17879,12 +17879,12 @@ SdaiSupported_item::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_action_directive) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -17892,12 +17892,12 @@ SdaiSupported_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_action) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -17905,12 +17905,12 @@ SdaiSupported_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_action_method) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -17920,7 +17920,7 @@ SdaiSupported_item::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -17937,7 +17937,7 @@ SdaiSupported_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -18107,7 +18107,7 @@ SdaiSupported_item::operator SdaiAction_directive_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -18119,7 +18119,7 @@ SdaiSupported_item::operator SdaiAction_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -18131,7 +18131,7 @@ SdaiSupported_item::operator SdaiAction_method_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -18163,7 +18163,7 @@ SdaiSupported_item::purpose_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -18191,7 +18191,7 @@ SdaiSupported_item::consequence_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiAction_method_ptr @@ -18219,7 +18219,7 @@ SdaiSupported_item::chosen_method_ (const SdaiAction_method_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const EntityAggregate_ptr @@ -18247,7 +18247,7 @@ SdaiSupported_item::requests_ (const EntityAggregate_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -18275,7 +18275,7 @@ SdaiSupported_item::comment_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -18303,7 +18303,7 @@ SdaiSupported_item::analysis_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -18347,7 +18347,7 @@ SdaiSupported_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -18391,7 +18391,7 @@ SdaiSupported_item::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -18562,7 +18562,7 @@ SdaiApproved_item::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -18740,12 +18740,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_product_definition_formation) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18753,12 +18753,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_product_definition) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18766,12 +18766,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_configuration_effectivity) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18779,12 +18779,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_configuration_item) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18792,12 +18792,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_security_classification) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18805,12 +18805,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_change_request) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18818,12 +18818,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_change) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18831,12 +18831,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_start_request) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18844,12 +18844,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_start_work) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18857,12 +18857,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_certification) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18870,12 +18870,12 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, } if (CurrentUnderlyingType () == config_control_designe_contract) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -18885,7 +18885,7 @@ SdaiApproved_item::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -18902,7 +18902,7 @@ SdaiApproved_item::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -19224,7 +19224,7 @@ SdaiApproved_item::operator SdaiProduct_definition_formation_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19236,7 +19236,7 @@ SdaiApproved_item::operator SdaiProduct_definition_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19248,7 +19248,7 @@ SdaiApproved_item::operator SdaiConfiguration_effectivity_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19260,7 +19260,7 @@ SdaiApproved_item::operator SdaiConfiguration_item_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19272,7 +19272,7 @@ SdaiApproved_item::operator SdaiSecurity_classification_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19284,7 +19284,7 @@ SdaiApproved_item::operator SdaiChange_request_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19296,7 +19296,7 @@ SdaiApproved_item::operator SdaiChange_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19308,7 +19308,7 @@ SdaiApproved_item::operator SdaiStart_request_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19320,7 +19320,7 @@ SdaiApproved_item::operator SdaiStart_work_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19332,7 +19332,7 @@ SdaiApproved_item::operator SdaiCertification_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19344,7 +19344,7 @@ SdaiApproved_item::operator SdaiContract_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -19379,7 +19379,7 @@ SdaiApproved_item::kind_ (const SdaiCertification_type_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiAction_ptr @@ -19415,7 +19415,7 @@ SdaiApproved_item::assigned_action_ (const SdaiAction_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiChange_request_items_ptr @@ -19452,7 +19452,7 @@ SdaiApproved_item::items_ (const SdaiChange_request_items_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiVersioned_action_request_ptr @@ -19488,7 +19488,7 @@ SdaiApproved_item::assigned_action_request_ (const SdaiVersioned_action_request_ severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiSecurity_classification_level_ptr @@ -19516,7 +19516,7 @@ SdaiApproved_item::security_level_ (const SdaiSecurity_classification_level_ptr severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -19568,7 +19568,7 @@ SdaiApproved_item::purpose_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_concept_ptr @@ -19596,7 +19596,7 @@ SdaiApproved_item::item_concept_ (const SdaiProduct_concept_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -19648,7 +19648,7 @@ SdaiApproved_item::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiConfiguration_design_ptr @@ -19676,7 +19676,7 @@ SdaiApproved_item::configuration_ (const SdaiConfiguration_design_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_relationship_ptr @@ -19704,7 +19704,7 @@ SdaiApproved_item::usage_ (const SdaiProduct_definition_relationship_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_context_ptr @@ -19732,7 +19732,7 @@ SdaiApproved_item::frame_of_reference_ (const SdaiProduct_definition_context_ptr severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_definition_formation_ptr @@ -19760,7 +19760,7 @@ SdaiApproved_item::formation_ (const SdaiProduct_definition_formation_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiProduct_ptr @@ -19788,7 +19788,7 @@ SdaiApproved_item::of_product_ (const SdaiProduct_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiText @@ -19832,7 +19832,7 @@ SdaiApproved_item::description_ (const SdaiText x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiIdentifier @@ -19884,7 +19884,7 @@ SdaiApproved_item::id_ (const SdaiIdentifier x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 @@ -20163,7 +20163,7 @@ SdaiSurface_model::AssignEntity (SCLP23(Application_instance) * se) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << se -> EntityName () << G4endl; #endif @@ -20241,12 +20241,12 @@ SdaiSurface_model::STEPread_content (G4std::istream& in, InstMgr * instances, { if (CurrentUnderlyingType () == config_control_designe_shell_based_surface_model) { // set Underlying Type in Select class - _app_inst = ReadEntityRef (in, &_error, ",)", instances, addFileId); + _app_inst = ReadEntityRef (in, &_error, (char*)",)", instances, addFileId); if (_app_inst && (_app_inst != S_ENTITY_NULL) && (CurrentUnderlyingType () -> CanBe (_app_inst -> eDesc )) ) return severity (); else { - Error ("Reference to instance that is not indicated type\n"); + Error ((char*)"Reference to instance that is not indicated type\n"); _app_inst = 0; nullify (); return severity (SEVERITY_USERMSG); @@ -20256,7 +20256,7 @@ SdaiSurface_model::STEPread_content (G4std::istream& in, InstMgr * instances, severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << instances << " " << addFileId << G4endl; #endif @@ -20273,7 +20273,7 @@ SdaiSurface_model::StrToVal_content (const char * str, InstMgr * instances) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); #ifdef __SUNCPLUSPLUS__ G4cerr << str << " " << instances << G4endl; #endif @@ -20405,7 +20405,7 @@ SdaiSurface_model::operator SdaiShell_based_surface_model_ptr() severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); return NULL; } @@ -20437,7 +20437,7 @@ SdaiSurface_model::sbsm_boundary_ (const SdaiShells_ptr x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } const SdaiLabel @@ -20465,7 +20465,7 @@ SdaiSurface_model::name_ (const SdaiLabel x) severity( SEVERITY_WARNING ); G4cerr << __FILE__ << ":" << __LINE__ << ": WARNING: possible misuse of" << " SELECT TYPE from schema library.\n"; - Error( "Mismatch in underlying type." ); + Error( (char*)"Mismatch in underlying type." ); } // part 4 diff --git a/source/geometry/solids/STEP/src/dirobj.cc b/source/geometry/solids/STEP/src/dirobj.cc index b47b355998..d0fe4621ee 100644 --- a/source/geometry/solids/STEP/src/dirobj.cc +++ b/source/geometry/solids/STEP/src/dirobj.cc @@ -10,7 +10,7 @@ * and is not subject to copyright. */ -/* $Id: dirobj.cc,v 1.7 2001/06/18 08:19:40 gcosmo Exp $ */ +/* $Id: dirobj.cc,v 1.8 2001/09/19 09:52:46 gcosmo Exp $ */ /* * DirObj implementation @@ -500,12 +500,12 @@ void DirObj::InsertFile (const char* f, int index) { CheckIndex(index); spot = &fileList[index]; } -//#ifdef __O3DB__ // Removed strdup() for ANSI porting - GC +#ifdef __O3DB__ // strdup() should be removed for ANSI porting - GC char* string = new char [strlen (f)]; strcpy (string, f); -//#else -// char* string = strdup(f); -//#endif +#else + char* string = strdup(f); +#endif *spot = string; ++fileCount; } diff --git a/source/geometry/solids/STEP/src/sdaiString.cc b/source/geometry/solids/STEP/src/sdaiString.cc index 09d28c6aaf..9dbd7bfc06 100644 --- a/source/geometry/solids/STEP/src/sdaiString.cc +++ b/source/geometry/solids/STEP/src/sdaiString.cc @@ -9,7 +9,7 @@ * and is not subject to copyright. */ -/* $Id: sdaiString.cc,v 1.1 2000/01/21 13:43:19 gcosmo Exp $ */ +/* $Id: sdaiString.cc,v 1.2 2001/11/29 16:46:51 gcosmo Exp $ */ #include #include "g4std/strstream" @@ -92,7 +92,11 @@ SCLP23(String)::STEPread (G4std::istream& in, ErrorDescriptor *err) in >> c; // remember the current format state to restore the previous settings +#ifdef G4USE_STD_NAMESPACE + std::ios::fmtflags flags = in.flags(); +#else long int flags = in.flags(); +#endif in.unsetf(G4std::ios::skipws); if (c == STRING_DELIM) diff --git a/source/geometry/solids/STEPinterface/GNUmakefile b/source/geometry/solids/STEPinterface/GNUmakefile index ee25210f7e..05cc288382 100644 --- a/source/geometry/solids/STEPinterface/GNUmakefile +++ b/source/geometry/solids/STEPinterface/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:08:21 gunter Exp $ +# $Id: GNUmakefile,v 1.2 2001/11/30 10:25:58 gcosmo Exp $ # ------------------------------------------------------------- # GNUmakefile for STEP library. Gabriele Cosmo, 15/11/96. # ------------------------------------------------------------- @@ -21,5 +21,15 @@ CPPFLAGS += \ -I$(G4BASE)/global/HEPGeometry/include \ -I$(G4BASE)/graphics_reps/include +# To avoid incompatibilities with ANSI standard treatment of strings, the +# NIST STEP reader on gcc-2.95.X and later must be compiled in non-ANSI mode. +# +ifneq (,$(findstring Linux-g++,$(G4SYSTEM))) + ansi_options = -Wall -ansi -pedantic + NCXX = $(filter-out $(ansi_options),$(CXXFLAGS)) + NCPP = $(CPPFLAGS) + CXXFLAGS := $(NCXX) + CPPFLAGS := $(NCPP) -w +endif include $(G4INSTALL)/config/common.gmk diff --git a/source/geometry/solids/STEPinterface/History b/source/geometry/solids/STEPinterface/History index 2fa469ad0a..961d090cdd 100644 --- a/source/geometry/solids/STEPinterface/History +++ b/source/geometry/solids/STEPinterface/History @@ -1,4 +1,4 @@ -$Id: History,v 1.9 2001/04/20 19:17:47 gcosmo Exp $ +$Id: History,v 1.11 2001/11/30 10:25:59 gcosmo Exp $ ---------------------------------------------------------------------------- ========================================================= @@ -17,6 +17,14 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +30th November 2001 Gabriele Cosmo (stepinterface-V03-02-01) +- Fix to GNUmakefile for compilation on gcc-2.96.98 and gcc-3.0.2 compilers to + overcome warnings produced by strict ANSI compilation. + +21st Septmber 2001 Gabriele Cosmo (stepinterface-V03-02-00) +- G4Axis2Placement3dCreator::CreateG4Geometry(): added check to + attribute validity for 'direction'. + 20th April 2001 Gabriele Cosmo (stepinterface-V03-01-00) - Migration to STL vector: o G4GeometryCreator, migrated typedefs: G4PlacedSolidVector, diff --git a/source/geometry/solids/STEPinterface/include/G4AdvancedBrepShapeRepresentationCreator.hh b/source/geometry/solids/STEPinterface/include/G4AdvancedBrepShapeRepresentationCreator.hh index 469889990a..764ad22905 100644 --- a/source/geometry/solids/STEPinterface/include/G4AdvancedBrepShapeRepresentationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4AdvancedBrepShapeRepresentationCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AdvancedBrepShapeRepresentationCreator.hh,v 1.3.4.1 2001/06/28 19:09:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AdvancedBrepShapeRepresentationCreator.hh,v 1.4 2001/07/11 10:00:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4AdvancedBrepShapeRepresentationCreator diff --git a/source/geometry/solids/STEPinterface/include/G4AdvancedFaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4AdvancedFaceCreator.hh index f20e7c792b..8db89f60f4 100644 --- a/source/geometry/solids/STEPinterface/include/G4AdvancedFaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4AdvancedFaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AdvancedFaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AdvancedFaceCreator.hh,v 1.4 2001/07/11 10:00:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4AdvancedFaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4AssemblyCreator.hh b/source/geometry/solids/STEPinterface/include/G4AssemblyCreator.hh index ec1c73eab5..ed6eadcebd 100644 --- a/source/geometry/solids/STEPinterface/include/G4AssemblyCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4AssemblyCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AssemblyCreator.hh,v 1.3.4.1 2001/06/28 19:09:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AssemblyCreator.hh,v 1.4 2001/07/11 10:00:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4AssemblyCreator diff --git a/source/geometry/solids/STEPinterface/include/G4Axis1PlacementCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis1PlacementCreator.hh index b0fdd34360..b179dd9db2 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis1PlacementCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis1PlacementCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis1PlacementCreator.hh,v 1.3.4.1 2001/06/28 19:09:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis1PlacementCreator.hh,v 1.4 2001/07/11 10:00:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis1PlacementCreator diff --git a/source/geometry/solids/STEPinterface/include/G4Axis2Placement2dCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis2Placement2dCreator.hh index dd3192424a..5bea031ec4 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis2Placement2dCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis2Placement2dCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2Placement2dCreator.hh,v 1.3.4.1 2001/06/28 19:09:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2Placement2dCreator.hh,v 1.4 2001/07/11 10:00:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2Placement2dCreator diff --git a/source/geometry/solids/STEPinterface/include/G4Axis2Placement3dCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis2Placement3dCreator.hh index 1110d1dd33..499c71c173 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis2Placement3dCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis2Placement3dCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2Placement3dCreator.hh,v 1.3.4.1 2001/06/28 19:09:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2Placement3dCreator.hh,v 1.4 2001/07/11 10:00:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2Placement3dCreator diff --git a/source/geometry/solids/STEPinterface/include/G4Axis2PlacementCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis2PlacementCreator.hh index e0d80a544c..c2f5c228c8 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis2PlacementCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis2PlacementCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2PlacementCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2PlacementCreator.hh,v 1.4 2001/07/11 10:00:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2PlacementCreator diff --git a/source/geometry/solids/STEPinterface/include/G4Axis2PlacementsCreator.hh b/source/geometry/solids/STEPinterface/include/G4Axis2PlacementsCreator.hh index 7e031a6d28..92d1c1ed48 100644 --- a/source/geometry/solids/STEPinterface/include/G4Axis2PlacementsCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4Axis2PlacementsCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2PlacementsCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2PlacementsCreator.hh,v 1.4 2001/07/11 10:00:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2PlacementsCreator diff --git a/source/geometry/solids/STEPinterface/include/G4BSplineCurveWithKnotsCreator.hh b/source/geometry/solids/STEPinterface/include/G4BSplineCurveWithKnotsCreator.hh index f0d8993dd6..12d640e367 100644 --- a/source/geometry/solids/STEPinterface/include/G4BSplineCurveWithKnotsCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4BSplineCurveWithKnotsCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineCurveWithKnotsCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineCurveWithKnotsCreator.hh,v 1.4 2001/07/11 10:00:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineCurveWithKnotsCreator diff --git a/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceCreator.hh index 254e0a5e44..87d25d5ec2 100644 --- a/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurfaceCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceWithKnotsCreator.hh b/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceWithKnotsCreator.hh index 2c4839ee83..aac5ca4506 100644 --- a/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceWithKnotsCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4BSplineSurfaceWithKnotsCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurfaceWithKnotsCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurfaceWithKnotsCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineSurfaceWithKnotsCreator diff --git a/source/geometry/solids/STEPinterface/include/G4BoundedSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4BoundedSurfaceCreator.hh index 7bb5ec22d7..a8f1dc9725 100644 --- a/source/geometry/solids/STEPinterface/include/G4BoundedSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4BoundedSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BoundedSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BoundedSurfaceCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BoundedSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4CartesianPointCreator.hh b/source/geometry/solids/STEPinterface/include/G4CartesianPointCreator.hh index a045a8586c..537bcd9983 100644 --- a/source/geometry/solids/STEPinterface/include/G4CartesianPointCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4CartesianPointCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CartesianPointCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CartesianPointCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CartesianPointCreator diff --git a/source/geometry/solids/STEPinterface/include/G4CircleCreator.hh b/source/geometry/solids/STEPinterface/include/G4CircleCreator.hh index bc2c968469..eaa330461d 100644 --- a/source/geometry/solids/STEPinterface/include/G4CircleCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4CircleCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CircleCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CircleCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CircleCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ClosedShellCreator.hh b/source/geometry/solids/STEPinterface/include/G4ClosedShellCreator.hh index d0c2d33f20..9e5f232d59 100644 --- a/source/geometry/solids/STEPinterface/include/G4ClosedShellCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ClosedShellCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ClosedShellCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ClosedShellCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ClosedShellCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ConicCreator.hh b/source/geometry/solids/STEPinterface/include/G4ConicCreator.hh index 5f5c04e50e..f28d663803 100644 --- a/source/geometry/solids/STEPinterface/include/G4ConicCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ConicCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConicCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConicCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ConicCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ConicalSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4ConicalSurfaceCreator.hh index b07dcd6700..2281119115 100644 --- a/source/geometry/solids/STEPinterface/include/G4ConicalSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ConicalSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConicalSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConicalSurfaceCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ConicalSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ConnectedFaceSetCreator.hh b/source/geometry/solids/STEPinterface/include/G4ConnectedFaceSetCreator.hh index bc8c066196..63e9e211f1 100644 --- a/source/geometry/solids/STEPinterface/include/G4ConnectedFaceSetCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ConnectedFaceSetCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConnectedFaceSetCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConnectedFaceSetCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ConnectedFaceSetCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ContextDependentShapeRepresentationCreator.hh b/source/geometry/solids/STEPinterface/include/G4ContextDependentShapeRepresentationCreator.hh index 6e3e15e889..25bd4c2acf 100644 --- a/source/geometry/solids/STEPinterface/include/G4ContextDependentShapeRepresentationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ContextDependentShapeRepresentationCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ContextDependentShapeRepresentationCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ContextDependentShapeRepresentationCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ContextDependentShapeRepresentationCreator diff --git a/source/geometry/solids/STEPinterface/include/G4CurveCreator.hh b/source/geometry/solids/STEPinterface/include/G4CurveCreator.hh index 8d8526b61e..b8559bdc73 100644 --- a/source/geometry/solids/STEPinterface/include/G4CurveCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4CurveCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurveCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurveCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CurveCreator diff --git a/source/geometry/solids/STEPinterface/include/G4CylindricalSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4CylindricalSurfaceCreator.hh index b9da5da446..5f62c2f95d 100644 --- a/source/geometry/solids/STEPinterface/include/G4CylindricalSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4CylindricalSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CylindricalSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CylindricalSurfaceCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CylindricalSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4DirectionCreator.hh b/source/geometry/solids/STEPinterface/include/G4DirectionCreator.hh index a8a44419b1..e0efdac8bd 100644 --- a/source/geometry/solids/STEPinterface/include/G4DirectionCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4DirectionCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DirectionCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DirectionCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4DirectionCreator diff --git a/source/geometry/solids/STEPinterface/include/G4EdgeCurveCreator.hh b/source/geometry/solids/STEPinterface/include/G4EdgeCurveCreator.hh index 7196772f2b..e033c875fa 100644 --- a/source/geometry/solids/STEPinterface/include/G4EdgeCurveCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4EdgeCurveCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EdgeCurveCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EdgeCurveCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4EdgeCurveCreator diff --git a/source/geometry/solids/STEPinterface/include/G4EdgeLoopCreator.hh b/source/geometry/solids/STEPinterface/include/G4EdgeLoopCreator.hh index a8aadd4aac..e6c2acd2dd 100644 --- a/source/geometry/solids/STEPinterface/include/G4EdgeLoopCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4EdgeLoopCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EdgeLoopCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EdgeLoopCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4EdgeLoopCreator diff --git a/source/geometry/solids/STEPinterface/include/G4EllipseCreator.hh b/source/geometry/solids/STEPinterface/include/G4EllipseCreator.hh index f82c5c964b..31f7b0eb3a 100644 --- a/source/geometry/solids/STEPinterface/include/G4EllipseCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4EllipseCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EllipseCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EllipseCreator.hh,v 1.4 2001/07/11 10:00:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4EllipseCreator diff --git a/source/geometry/solids/STEPinterface/include/G4FaceBoundCreator.hh b/source/geometry/solids/STEPinterface/include/G4FaceBoundCreator.hh index 4a72db69bd..1aa17ecdbe 100644 --- a/source/geometry/solids/STEPinterface/include/G4FaceBoundCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4FaceBoundCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FaceBoundCreator.hh,v 1.3.4.1 2001/06/28 19:09:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FaceBoundCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FaceBoundCreator diff --git a/source/geometry/solids/STEPinterface/include/G4FaceOuterBoundCreator.hh b/source/geometry/solids/STEPinterface/include/G4FaceOuterBoundCreator.hh index 3c5361e78c..a11d4c5c1a 100644 --- a/source/geometry/solids/STEPinterface/include/G4FaceOuterBoundCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4FaceOuterBoundCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FaceOuterBoundCreator.hh,v 1.3.4.1 2001/06/28 19:09:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FaceOuterBoundCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FaceOuterBoundCreator diff --git a/source/geometry/solids/STEPinterface/include/G4FaceSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4FaceSurfaceCreator.hh index 754d009429..c448847d7a 100644 --- a/source/geometry/solids/STEPinterface/include/G4FaceSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4FaceSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FaceSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FaceSurfaceCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FaceSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4GeometricRepresentationContextCreator.hh b/source/geometry/solids/STEPinterface/include/G4GeometricRepresentationContextCreator.hh index 09d592d8a5..f304107039 100644 --- a/source/geometry/solids/STEPinterface/include/G4GeometricRepresentationContextCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4GeometricRepresentationContextCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GeometricRepresentationContextCreator.hh,v 1.3.4.1 2001/06/28 19:09:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeometricRepresentationContextCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4GeometricRepresentationContextCreator diff --git a/source/geometry/solids/STEPinterface/include/G4GeometryCreator.hh b/source/geometry/solids/STEPinterface/include/G4GeometryCreator.hh index e274100a2f..3886867259 100644 --- a/source/geometry/solids/STEPinterface/include/G4GeometryCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4GeometryCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GeometryCreator.hh,v 1.6.2.1 2001/06/28 19:09:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeometryCreator.hh,v 1.7 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4GeometryCreator diff --git a/source/geometry/solids/STEPinterface/include/G4GeometryTable.hh b/source/geometry/solids/STEPinterface/include/G4GeometryTable.hh index 63822add6e..c2c613ac7a 100644 --- a/source/geometry/solids/STEPinterface/include/G4GeometryTable.hh +++ b/source/geometry/solids/STEPinterface/include/G4GeometryTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GeometryTable.hh,v 1.5.2.1 2001/06/28 19:09:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeometryTable.hh,v 1.6 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4GeometryTable diff --git a/source/geometry/solids/STEPinterface/include/G4HyperbolaCreator.hh b/source/geometry/solids/STEPinterface/include/G4HyperbolaCreator.hh index 0f2a01dbbe..5d5b5a8573 100644 --- a/source/geometry/solids/STEPinterface/include/G4HyperbolaCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4HyperbolaCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HyperbolaCreator.hh,v 1.3.4.1 2001/06/28 19:09:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HyperbolaCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4HyperbolaCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ItemDefinedTransformationCreator.hh b/source/geometry/solids/STEPinterface/include/G4ItemDefinedTransformationCreator.hh index b07e18d9aa..3f85265582 100644 --- a/source/geometry/solids/STEPinterface/include/G4ItemDefinedTransformationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ItemDefinedTransformationCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ItemDefinedTransformationCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ItemDefinedTransformationCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ItemDefinedTransformationCreator diff --git a/source/geometry/solids/STEPinterface/include/G4LineCreator.hh b/source/geometry/solids/STEPinterface/include/G4LineCreator.hh index 1734f3228a..c1cd3089d3 100644 --- a/source/geometry/solids/STEPinterface/include/G4LineCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4LineCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LineCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LineCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4LineCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ManifoldSolidBrepCreator.hh b/source/geometry/solids/STEPinterface/include/G4ManifoldSolidBrepCreator.hh index 178213a084..086b524013 100644 --- a/source/geometry/solids/STEPinterface/include/G4ManifoldSolidBrepCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ManifoldSolidBrepCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ManifoldSolidBrepCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ManifoldSolidBrepCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ManifoldSolidBrepCreator diff --git a/source/geometry/solids/STEPinterface/include/G4NISTStepReader.hh b/source/geometry/solids/STEPinterface/include/G4NISTStepReader.hh index 388b8bcd4f..311489c4c0 100644 --- a/source/geometry/solids/STEPinterface/include/G4NISTStepReader.hh +++ b/source/geometry/solids/STEPinterface/include/G4NISTStepReader.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NISTStepReader.hh,v 1.4.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NISTStepReader.hh,v 1.5 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4NISTStepReader diff --git a/source/geometry/solids/STEPinterface/include/G4OpenShellCreator.hh b/source/geometry/solids/STEPinterface/include/G4OpenShellCreator.hh index 1a6aa49747..e7d7fe5420 100644 --- a/source/geometry/solids/STEPinterface/include/G4OpenShellCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4OpenShellCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenShellCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenShellCreator.hh,v 1.4 2001/07/11 10:00:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4OpenShellCreator diff --git a/source/geometry/solids/STEPinterface/include/G4OrientedEdgeCreator.hh b/source/geometry/solids/STEPinterface/include/G4OrientedEdgeCreator.hh index 6b84eefe1d..ba6d73e9d4 100644 --- a/source/geometry/solids/STEPinterface/include/G4OrientedEdgeCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4OrientedEdgeCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OrientedEdgeCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OrientedEdgeCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4OrientedEdgeCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ParabolaCreator.hh b/source/geometry/solids/STEPinterface/include/G4ParabolaCreator.hh index b666fa7b27..6486e6eef6 100644 --- a/source/geometry/solids/STEPinterface/include/G4ParabolaCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ParabolaCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParabolaCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParabolaCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ParabolaCreator diff --git a/source/geometry/solids/STEPinterface/include/G4PlaneCreator.hh b/source/geometry/solids/STEPinterface/include/G4PlaneCreator.hh index 406497b206..d57e71989f 100644 --- a/source/geometry/solids/STEPinterface/include/G4PlaneCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PlaneCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlaneCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlaneCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4PlaneCreator diff --git a/source/geometry/solids/STEPinterface/include/G4PointCreator.hh b/source/geometry/solids/STEPinterface/include/G4PointCreator.hh index 6c69be9fa9..933fe8c029 100644 --- a/source/geometry/solids/STEPinterface/include/G4PointCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PointCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4PointCreator diff --git a/source/geometry/solids/STEPinterface/include/G4PointOnCurveCreator.hh b/source/geometry/solids/STEPinterface/include/G4PointOnCurveCreator.hh index 0be5c045f5..704afdfcd0 100644 --- a/source/geometry/solids/STEPinterface/include/G4PointOnCurveCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PointOnCurveCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointOnCurveCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointOnCurveCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4PointOnCurveCreator diff --git a/source/geometry/solids/STEPinterface/include/G4PointOnSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4PointOnSurfaceCreator.hh index 5a4bbe0f11..6c2d122d24 100644 --- a/source/geometry/solids/STEPinterface/include/G4PointOnSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PointOnSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointOnSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointOnSurfaceCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4PointOnSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4PointReplicaCreator.hh b/source/geometry/solids/STEPinterface/include/G4PointReplicaCreator.hh index 272e7dd032..9e693ba891 100644 --- a/source/geometry/solids/STEPinterface/include/G4PointReplicaCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4PointReplicaCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointReplicaCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointReplicaCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4PointReplicaCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ProductDefinitionShapeCreator.hh b/source/geometry/solids/STEPinterface/include/G4ProductDefinitionShapeCreator.hh index 275b1c320c..a41320f75b 100644 --- a/source/geometry/solids/STEPinterface/include/G4ProductDefinitionShapeCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ProductDefinitionShapeCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProductDefinitionShapeCreator.hh,v 1.3.4.1 2001/06/28 19:09:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProductDefinitionShapeCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ProductDefinitionShapeCreator diff --git a/source/geometry/solids/STEPinterface/include/G4RationalBSplineSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4RationalBSplineSurfaceCreator.hh index 7cbc15ff60..3a1c6730e6 100644 --- a/source/geometry/solids/STEPinterface/include/G4RationalBSplineSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4RationalBSplineSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RationalBSplineSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RationalBSplineSurfaceCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4RationalBSplineSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipCreator.hh b/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipCreator.hh index b7ab9b5692..64af1d16ab 100644 --- a/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RepresentationRelationshipCreator.hh,v 1.4.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RepresentationRelationshipCreator.hh,v 1.5 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4RepresentationRelationshipCreator diff --git a/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipWithTransformationCreator.hh b/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipWithTransformationCreator.hh index fadb060bd5..7526e89384 100644 --- a/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipWithTransformationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4RepresentationRelationshipWithTransformationCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RepresentationRelationshipWithTransformationCreator.hh,v 1.3.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RepresentationRelationshipWithTransformationCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4RepresentationRelationshipWithTransformationCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ShapeDefinitionRepresentationCreator.hh b/source/geometry/solids/STEPinterface/include/G4ShapeDefinitionRepresentationCreator.hh index b794755f51..1e5468a83c 100644 --- a/source/geometry/solids/STEPinterface/include/G4ShapeDefinitionRepresentationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ShapeDefinitionRepresentationCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShapeDefinitionRepresentationCreator.hh,v 1.3.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShapeDefinitionRepresentationCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ShapeDefinitionRepresentationCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationCreator.hh b/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationCreator.hh index 9da3508dc2..c25737cfc7 100644 --- a/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShapeRepresentationCreator.hh,v 1.3.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShapeRepresentationCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ShapeRepresentationCreator diff --git a/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationRelationshipCreator.hh b/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationRelationshipCreator.hh index 17bca64ab8..0b3bd65b15 100644 --- a/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationRelationshipCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ShapeRepresentationRelationshipCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShapeRepresentationRelationshipCreator.hh,v 1.3.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShapeRepresentationRelationshipCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ShapeRepresentationRelationshipCreator diff --git a/source/geometry/solids/STEPinterface/include/G4SphericalSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4SphericalSurfaceCreator.hh index a46d3a6b15..5c13e6b7cd 100644 --- a/source/geometry/solids/STEPinterface/include/G4SphericalSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4SphericalSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SphericalSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SphericalSurfaceCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4SphericalSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4StepFileReader.hh b/source/geometry/solids/STEPinterface/include/G4StepFileReader.hh index b5b3c262a6..0741d64b8f 100644 --- a/source/geometry/solids/STEPinterface/include/G4StepFileReader.hh +++ b/source/geometry/solids/STEPinterface/include/G4StepFileReader.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StepFileReader.hh,v 1.4.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StepFileReader.hh,v 1.5 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4StepFileReader diff --git a/source/geometry/solids/STEPinterface/include/G4ToroidalSurfaceCreator.hh b/source/geometry/solids/STEPinterface/include/G4ToroidalSurfaceCreator.hh index 27a66a1fc8..ecb380fe74 100644 --- a/source/geometry/solids/STEPinterface/include/G4ToroidalSurfaceCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4ToroidalSurfaceCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ToroidalSurfaceCreator.hh,v 1.3.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ToroidalSurfaceCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ToroidalSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/include/G4VectorCreator.hh b/source/geometry/solids/STEPinterface/include/G4VectorCreator.hh index 9a5d58cf1a..9211ca6931 100644 --- a/source/geometry/solids/STEPinterface/include/G4VectorCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4VectorCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VectorCreator.hh,v 1.3.4.1 2001/06/28 19:09:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VectorCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4VectorCreator diff --git a/source/geometry/solids/STEPinterface/include/G4VertexPointCreator.hh b/source/geometry/solids/STEPinterface/include/G4VertexPointCreator.hh index 8ea5fb942f..8b65241bc9 100644 --- a/source/geometry/solids/STEPinterface/include/G4VertexPointCreator.hh +++ b/source/geometry/solids/STEPinterface/include/G4VertexPointCreator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VertexPointCreator.hh,v 1.3.4.1 2001/06/28 19:09:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VertexPointCreator.hh,v 1.4 2001/07/11 10:00:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4VertexPointCreator diff --git a/source/geometry/solids/STEPinterface/src/G4AdvancedBrepShapeRepresentationCreator.cc b/source/geometry/solids/STEPinterface/src/G4AdvancedBrepShapeRepresentationCreator.cc index 75a3613cf8..9b51e16b9b 100644 --- a/source/geometry/solids/STEPinterface/src/G4AdvancedBrepShapeRepresentationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4AdvancedBrepShapeRepresentationCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AdvancedBrepShapeRepresentationCreator.cc,v 1.5.2.1 2001/06/28 19:09:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AdvancedBrepShapeRepresentationCreator.cc,v 1.6 2001/07/11 10:00:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4AdvancedBrepShapeRepresentationCreator diff --git a/source/geometry/solids/STEPinterface/src/G4AdvancedFaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4AdvancedFaceCreator.cc index 41e2708245..3f8de41f76 100644 --- a/source/geometry/solids/STEPinterface/src/G4AdvancedFaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4AdvancedFaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AdvancedFaceCreator.cc,v 1.4.2.1 2001/06/28 19:09:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AdvancedFaceCreator.cc,v 1.5 2001/07/11 10:00:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4AdvancedFaceCreator diff --git a/source/geometry/solids/STEPinterface/src/G4AssemblyCreator.cc b/source/geometry/solids/STEPinterface/src/G4AssemblyCreator.cc index f2ce1ac6a4..d7da5c84c6 100644 --- a/source/geometry/solids/STEPinterface/src/G4AssemblyCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4AssemblyCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AssemblyCreator.cc,v 1.8.2.1 2001/06/28 19:09:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AssemblyCreator.cc,v 1.10 2001/09/21 16:12:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4AssemblyCreator @@ -160,7 +160,7 @@ void G4AssemblyCreator::CreateG4Geometry(STEPentity& sEntity) for(G4int b=0; bpush_back(ps); } } @@ -214,7 +214,7 @@ void G4AssemblyCreator::CreateG4Geometry(STEPentity& sEntity) for(G4int b=0; bpush_back(ps); } } diff --git a/source/geometry/solids/STEPinterface/src/G4Axis1PlacementCreator.cc b/source/geometry/solids/STEPinterface/src/G4Axis1PlacementCreator.cc index 7057b458eb..c87716fe9b 100644 --- a/source/geometry/solids/STEPinterface/src/G4Axis1PlacementCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4Axis1PlacementCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis1PlacementCreator.cc,v 1.2.4.1 2001/06/28 19:09:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis1PlacementCreator.cc,v 1.3 2001/07/11 10:00:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis1PlacementCreator diff --git a/source/geometry/solids/STEPinterface/src/G4Axis2Placement2dCreator.cc b/source/geometry/solids/STEPinterface/src/G4Axis2Placement2dCreator.cc index a0a9cb7a70..ee57839418 100644 --- a/source/geometry/solids/STEPinterface/src/G4Axis2Placement2dCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4Axis2Placement2dCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2Placement2dCreator.cc,v 1.2.4.1 2001/06/28 19:09:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2Placement2dCreator.cc,v 1.3 2001/07/11 10:00:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2Placement2dCreator diff --git a/source/geometry/solids/STEPinterface/src/G4Axis2Placement3dCreator.cc b/source/geometry/solids/STEPinterface/src/G4Axis2Placement3dCreator.cc index c6cee8c96a..76b44051c8 100644 --- a/source/geometry/solids/STEPinterface/src/G4Axis2Placement3dCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4Axis2Placement3dCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2Placement3dCreator.cc,v 1.4.4.1 2001/06/28 19:09:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2Placement3dCreator.cc,v 1.6 2001/09/21 16:11:29 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2Placement3dCreator @@ -70,7 +70,7 @@ void G4Axis2Placement3dCreator::CreateG4Geometry(STEPentity& Ent) // Get axis Attr = Ent.NextAttribute(); TmpEnt = *Attr->ptr.c; - tmp =G4GeometryTable::CreateObject(*TmpEnt); + tmp = G4GeometryTable::CreateObject(*TmpEnt); if (tmp) axis = *(G4Vector3D*)tmp; else @@ -81,7 +81,13 @@ void G4Axis2Placement3dCreator::CreateG4Geometry(STEPentity& Ent) // Get direction Attr = Ent.NextAttribute(); TmpEnt = *Attr->ptr.c; - tmp =G4GeometryTable::CreateObject(*TmpEnt); + if (Attr->is_null()) // No direction specified! Set it to (0,0,0) and warn. + { + tmp = 0; + dir = G4Vector3D(0.,0.,0.); + } + else + tmp = G4GeometryTable::CreateObject(*TmpEnt); if (tmp) dir = *(G4Vector3D*)tmp; else diff --git a/source/geometry/solids/STEPinterface/src/G4Axis2PlacementCreator.cc b/source/geometry/solids/STEPinterface/src/G4Axis2PlacementCreator.cc index 2f9b760134..3c182562db 100644 --- a/source/geometry/solids/STEPinterface/src/G4Axis2PlacementCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4Axis2PlacementCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2PlacementCreator.cc,v 1.2.4.1 2001/06/28 19:09:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2PlacementCreator.cc,v 1.3 2001/07/11 10:00:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2PlacementCreator diff --git a/source/geometry/solids/STEPinterface/src/G4Axis2PlacementsCreator.cc b/source/geometry/solids/STEPinterface/src/G4Axis2PlacementsCreator.cc index 8aadd203f9..ea313835bc 100644 --- a/source/geometry/solids/STEPinterface/src/G4Axis2PlacementsCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4Axis2PlacementsCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Axis2PlacementsCreator.cc,v 1.3.4.1 2001/06/28 19:09:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Axis2PlacementsCreator.cc,v 1.4 2001/07/11 10:00:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4Axis2PlacementsCreator diff --git a/source/geometry/solids/STEPinterface/src/G4BSplineCurveWithKnotsCreator.cc b/source/geometry/solids/STEPinterface/src/G4BSplineCurveWithKnotsCreator.cc index 1c88c8bc18..2e4f2ff667 100644 --- a/source/geometry/solids/STEPinterface/src/G4BSplineCurveWithKnotsCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4BSplineCurveWithKnotsCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineCurveWithKnotsCreator.cc,v 1.6.2.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineCurveWithKnotsCreator.cc,v 1.7 2001/07/11 10:00:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineCurveWithKnotsCreator diff --git a/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceCreator.cc index b4cf4f2588..dfc85a6a8b 100644 --- a/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurfaceCreator.cc,v 1.4.4.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurfaceCreator.cc,v 1.5 2001/07/11 10:00:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceWithKnotsCreator.cc b/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceWithKnotsCreator.cc index c503da1048..87bd9a6171 100644 --- a/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceWithKnotsCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4BSplineSurfaceWithKnotsCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BSplineSurfaceWithKnotsCreator.cc,v 1.4.4.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BSplineSurfaceWithKnotsCreator.cc,v 1.5 2001/07/11 10:00:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BSplineSurfaceWithKnotsCreator diff --git a/source/geometry/solids/STEPinterface/src/G4BoundedSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4BoundedSurfaceCreator.cc index 9cfccd4cb5..b18ad7313a 100644 --- a/source/geometry/solids/STEPinterface/src/G4BoundedSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4BoundedSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BoundedSurfaceCreator.cc,v 1.5.4.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BoundedSurfaceCreator.cc,v 1.6 2001/07/11 10:00:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4BoundedSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/src/G4CartesianPointCreator.cc b/source/geometry/solids/STEPinterface/src/G4CartesianPointCreator.cc index 752a802e76..bf45d61769 100644 --- a/source/geometry/solids/STEPinterface/src/G4CartesianPointCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4CartesianPointCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CartesianPointCreator.cc,v 1.2.4.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CartesianPointCreator.cc,v 1.3 2001/07/11 10:00:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CartesianPointCreator diff --git a/source/geometry/solids/STEPinterface/src/G4CircleCreator.cc b/source/geometry/solids/STEPinterface/src/G4CircleCreator.cc index 2dbb5a6ceb..963d22c83a 100644 --- a/source/geometry/solids/STEPinterface/src/G4CircleCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4CircleCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CircleCreator.cc,v 1.3.4.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CircleCreator.cc,v 1.4 2001/07/11 10:00:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CircleCreator diff --git a/source/geometry/solids/STEPinterface/src/G4ClosedShellCreator.cc b/source/geometry/solids/STEPinterface/src/G4ClosedShellCreator.cc index 986200696d..cb37fc627c 100644 --- a/source/geometry/solids/STEPinterface/src/G4ClosedShellCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ClosedShellCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ClosedShellCreator.cc,v 1.6.2.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ClosedShellCreator.cc,v 1.7 2001/07/11 10:00:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ClosedShellCreator diff --git a/source/geometry/solids/STEPinterface/src/G4ConicCreator.cc b/source/geometry/solids/STEPinterface/src/G4ConicCreator.cc index 69c08ce7b2..ad19f7bb16 100644 --- a/source/geometry/solids/STEPinterface/src/G4ConicCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ConicCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConicCreator.cc,v 1.3.4.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConicCreator.cc,v 1.4 2001/07/11 10:00:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ConicCreator diff --git a/source/geometry/solids/STEPinterface/src/G4ConicalSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4ConicalSurfaceCreator.cc index 2331018e21..3c8edf77b7 100644 --- a/source/geometry/solids/STEPinterface/src/G4ConicalSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ConicalSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConicalSurfaceCreator.cc,v 1.3.4.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConicalSurfaceCreator.cc,v 1.4 2001/07/11 10:00:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ConicalSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/src/G4ConnectedFaceSetCreator.cc b/source/geometry/solids/STEPinterface/src/G4ConnectedFaceSetCreator.cc index 14b351a707..de4382f227 100644 --- a/source/geometry/solids/STEPinterface/src/G4ConnectedFaceSetCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ConnectedFaceSetCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ConnectedFaceSetCreator.cc,v 1.2.4.1 2001/06/28 19:09:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConnectedFaceSetCreator.cc,v 1.3 2001/07/11 10:00:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ConnectedFaceSetCreator diff --git a/source/geometry/solids/STEPinterface/src/G4ContextDependentShapeRepresentationCreator.cc b/source/geometry/solids/STEPinterface/src/G4ContextDependentShapeRepresentationCreator.cc index 3cb61f6429..442d6ab2ce 100644 --- a/source/geometry/solids/STEPinterface/src/G4ContextDependentShapeRepresentationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ContextDependentShapeRepresentationCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ContextDependentShapeRepresentationCreator.cc,v 1.3.4.1 2001/06/28 19:09:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ContextDependentShapeRepresentationCreator.cc,v 1.4 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4ContextDependentShapeRepresentationCreator diff --git a/source/geometry/solids/STEPinterface/src/G4CurveCreator.cc b/source/geometry/solids/STEPinterface/src/G4CurveCreator.cc index 83e28d4365..e00b078dd3 100644 --- a/source/geometry/solids/STEPinterface/src/G4CurveCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4CurveCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CurveCreator.cc,v 1.2.4.1 2001/06/28 19:09:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CurveCreator.cc,v 1.3 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CurveCreator diff --git a/source/geometry/solids/STEPinterface/src/G4CylindricalSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4CylindricalSurfaceCreator.cc index ffba2dea7a..fb039d19a3 100644 --- a/source/geometry/solids/STEPinterface/src/G4CylindricalSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4CylindricalSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4CylindricalSurfaceCreator.cc,v 1.3.4.1 2001/06/28 19:09:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CylindricalSurfaceCreator.cc,v 1.4 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4CylindricalSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/src/G4DirectionCreator.cc b/source/geometry/solids/STEPinterface/src/G4DirectionCreator.cc index 945d0d2c13..a0cc3c6c37 100644 --- a/source/geometry/solids/STEPinterface/src/G4DirectionCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4DirectionCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DirectionCreator.cc,v 1.2.4.1 2001/06/28 19:09:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DirectionCreator.cc,v 1.3 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4DirectionCreator diff --git a/source/geometry/solids/STEPinterface/src/G4EdgeCurveCreator.cc b/source/geometry/solids/STEPinterface/src/G4EdgeCurveCreator.cc index 80d976638d..9f1c87e900 100644 --- a/source/geometry/solids/STEPinterface/src/G4EdgeCurveCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4EdgeCurveCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EdgeCurveCreator.cc,v 1.4.4.1 2001/06/28 19:09:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EdgeCurveCreator.cc,v 1.5 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4EdgeCurveCreator diff --git a/source/geometry/solids/STEPinterface/src/G4EdgeLoopCreator.cc b/source/geometry/solids/STEPinterface/src/G4EdgeLoopCreator.cc index e53279010d..141b885e21 100644 --- a/source/geometry/solids/STEPinterface/src/G4EdgeLoopCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4EdgeLoopCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EdgeLoopCreator.cc,v 1.4.2.1 2001/06/28 19:09:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EdgeLoopCreator.cc,v 1.5 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4EdgeLoopCreator diff --git a/source/geometry/solids/STEPinterface/src/G4EllipseCreator.cc b/source/geometry/solids/STEPinterface/src/G4EllipseCreator.cc index 4a282bd997..bcbf5daad2 100644 --- a/source/geometry/solids/STEPinterface/src/G4EllipseCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4EllipseCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EllipseCreator.cc,v 1.3.4.1 2001/06/28 19:09:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EllipseCreator.cc,v 1.4 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4EllipseCreator diff --git a/source/geometry/solids/STEPinterface/src/G4FaceBoundCreator.cc b/source/geometry/solids/STEPinterface/src/G4FaceBoundCreator.cc index 72424e74e3..9403b5ce7e 100644 --- a/source/geometry/solids/STEPinterface/src/G4FaceBoundCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4FaceBoundCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FaceBoundCreator.cc,v 1.4.4.1 2001/06/28 19:09:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FaceBoundCreator.cc,v 1.5 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FaceBoundCreator diff --git a/source/geometry/solids/STEPinterface/src/G4FaceOuterBoundCreator.cc b/source/geometry/solids/STEPinterface/src/G4FaceOuterBoundCreator.cc index 55c3690d34..6eac983ed0 100644 --- a/source/geometry/solids/STEPinterface/src/G4FaceOuterBoundCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4FaceOuterBoundCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FaceOuterBoundCreator.cc,v 1.2.4.1 2001/06/28 19:09:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FaceOuterBoundCreator.cc,v 1.3 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FaceOuterBoundCreator diff --git a/source/geometry/solids/STEPinterface/src/G4FaceSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4FaceSurfaceCreator.cc index d76ed8acf3..0f85e780e5 100644 --- a/source/geometry/solids/STEPinterface/src/G4FaceSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4FaceSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FaceSurfaceCreator.cc,v 1.4.4.1 2001/06/28 19:09:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FaceSurfaceCreator.cc,v 1.5 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4FaceSurfaceCreator diff --git a/source/geometry/solids/STEPinterface/src/G4GeometricRepresentationContextCreator.cc b/source/geometry/solids/STEPinterface/src/G4GeometricRepresentationContextCreator.cc index 1d0802c30f..2df40eb8a7 100644 --- a/source/geometry/solids/STEPinterface/src/G4GeometricRepresentationContextCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4GeometricRepresentationContextCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GeometricRepresentationContextCreator.cc,v 1.4.4.1 2001/06/28 19:09:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeometricRepresentationContextCreator.cc,v 1.5 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // Class G4GeometricRepresentationContextCreator diff --git a/source/geometry/solids/STEPinterface/src/G4GeometryCreator.cc b/source/geometry/solids/STEPinterface/src/G4GeometryCreator.cc index 4dfc649fa2..f81ebec5b8 100644 --- a/source/geometry/solids/STEPinterface/src/G4GeometryCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4GeometryCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GeometryCreator.cc,v 1.5.4.1 2001/06/28 19:09:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeometryCreator.cc,v 1.6 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4GeometryTable.cc b/source/geometry/solids/STEPinterface/src/G4GeometryTable.cc index 3cd6779f2e..99b7c0f688 100644 --- a/source/geometry/solids/STEPinterface/src/G4GeometryTable.cc +++ b/source/geometry/solids/STEPinterface/src/G4GeometryTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GeometryTable.cc,v 1.8.2.1 2001/06/28 19:09:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeometryTable.cc,v 1.9 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4HyperbolaCreator.cc b/source/geometry/solids/STEPinterface/src/G4HyperbolaCreator.cc index f33bf73439..0138d77ec6 100644 --- a/source/geometry/solids/STEPinterface/src/G4HyperbolaCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4HyperbolaCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HyperbolaCreator.cc,v 1.2.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HyperbolaCreator.cc,v 1.3 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4ItemDefinedTransformationCreator.cc b/source/geometry/solids/STEPinterface/src/G4ItemDefinedTransformationCreator.cc index 5793e4a7af..225cf5760e 100644 --- a/source/geometry/solids/STEPinterface/src/G4ItemDefinedTransformationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ItemDefinedTransformationCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ItemDefinedTransformationCreator.cc,v 1.4.2.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ItemDefinedTransformationCreator.cc,v 1.5 2001/07/11 10:00:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4LineCreator.cc b/source/geometry/solids/STEPinterface/src/G4LineCreator.cc index e95195c870..8ec87e5fa8 100644 --- a/source/geometry/solids/STEPinterface/src/G4LineCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4LineCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LineCreator.cc,v 1.3.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LineCreator.cc,v 1.4 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4ManifoldSolidBrepCreator.cc b/source/geometry/solids/STEPinterface/src/G4ManifoldSolidBrepCreator.cc index 1dd7736682..60e8492778 100644 --- a/source/geometry/solids/STEPinterface/src/G4ManifoldSolidBrepCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ManifoldSolidBrepCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ManifoldSolidBrepCreator.cc,v 1.3.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ManifoldSolidBrepCreator.cc,v 1.4 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4NISTStepReader.cc b/source/geometry/solids/STEPinterface/src/G4NISTStepReader.cc index abcf2f81e2..efe13fd757 100644 --- a/source/geometry/solids/STEPinterface/src/G4NISTStepReader.cc +++ b/source/geometry/solids/STEPinterface/src/G4NISTStepReader.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NISTStepReader.cc,v 1.4.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NISTStepReader.cc,v 1.5 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4OpenShellCreator.cc b/source/geometry/solids/STEPinterface/src/G4OpenShellCreator.cc index 9f99ac5a88..0147799850 100644 --- a/source/geometry/solids/STEPinterface/src/G4OpenShellCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4OpenShellCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenShellCreator.cc,v 1.2.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenShellCreator.cc,v 1.3 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4OrientedEdgeCreator.cc b/source/geometry/solids/STEPinterface/src/G4OrientedEdgeCreator.cc index 1c3f9423c9..c67d9905fc 100644 --- a/source/geometry/solids/STEPinterface/src/G4OrientedEdgeCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4OrientedEdgeCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OrientedEdgeCreator.cc,v 1.3.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OrientedEdgeCreator.cc,v 1.4 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4ParabolaCreator.cc b/source/geometry/solids/STEPinterface/src/G4ParabolaCreator.cc index c8cd22a2db..460c21df63 100644 --- a/source/geometry/solids/STEPinterface/src/G4ParabolaCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ParabolaCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParabolaCreator.cc,v 1.2.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParabolaCreator.cc,v 1.3 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4PlaneCreator.cc b/source/geometry/solids/STEPinterface/src/G4PlaneCreator.cc index 753e9424f2..0399853b99 100644 --- a/source/geometry/solids/STEPinterface/src/G4PlaneCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PlaneCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlaneCreator.cc,v 1.3.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlaneCreator.cc,v 1.4 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4PointCreator.cc b/source/geometry/solids/STEPinterface/src/G4PointCreator.cc index a48bcbcc54..2032df1e59 100644 --- a/source/geometry/solids/STEPinterface/src/G4PointCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PointCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointCreator.cc,v 1.2.4.1 2001/06/28 19:09:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointCreator.cc,v 1.3 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4PointOnCurveCreator.cc b/source/geometry/solids/STEPinterface/src/G4PointOnCurveCreator.cc index 3bfe691fe8..9337d83cc1 100644 --- a/source/geometry/solids/STEPinterface/src/G4PointOnCurveCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PointOnCurveCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointOnCurveCreator.cc,v 1.3.4.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointOnCurveCreator.cc,v 1.4 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4PointOnSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4PointOnSurfaceCreator.cc index b962d9e386..a4be7619d9 100644 --- a/source/geometry/solids/STEPinterface/src/G4PointOnSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PointOnSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointOnSurfaceCreator.cc,v 1.3.4.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointOnSurfaceCreator.cc,v 1.4 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4PointReplicaCreator.cc b/source/geometry/solids/STEPinterface/src/G4PointReplicaCreator.cc index 593cd8c986..1d4d1c1508 100644 --- a/source/geometry/solids/STEPinterface/src/G4PointReplicaCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4PointReplicaCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PointReplicaCreator.cc,v 1.2.4.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PointReplicaCreator.cc,v 1.3 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4ProductDefinitionShapeCreator.cc b/source/geometry/solids/STEPinterface/src/G4ProductDefinitionShapeCreator.cc index 8420902e29..44cbf07817 100644 --- a/source/geometry/solids/STEPinterface/src/G4ProductDefinitionShapeCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ProductDefinitionShapeCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProductDefinitionShapeCreator.cc,v 1.3.4.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProductDefinitionShapeCreator.cc,v 1.4 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4RationalBSplineSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4RationalBSplineSurfaceCreator.cc index f60fac27fd..7b1cdb58ef 100644 --- a/source/geometry/solids/STEPinterface/src/G4RationalBSplineSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4RationalBSplineSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RationalBSplineSurfaceCreator.cc,v 1.3.4.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RationalBSplineSurfaceCreator.cc,v 1.4 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipCreator.cc b/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipCreator.cc index b18ca5c24f..54e8348a64 100644 --- a/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RepresentationRelationshipCreator.cc,v 1.6.2.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RepresentationRelationshipCreator.cc,v 1.7 2001/07/11 10:00:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipWithTransformationCreator.cc b/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipWithTransformationCreator.cc index 361c9dc903..78e70333cc 100644 --- a/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipWithTransformationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4RepresentationRelationshipWithTransformationCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RepresentationRelationshipWithTransformationCreator.cc,v 1.2.4.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RepresentationRelationshipWithTransformationCreator.cc,v 1.3 2001/07/11 10:00:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4ShapeDefinitionRepresentationCreator.cc b/source/geometry/solids/STEPinterface/src/G4ShapeDefinitionRepresentationCreator.cc index 9013f1774d..c62560e27b 100644 --- a/source/geometry/solids/STEPinterface/src/G4ShapeDefinitionRepresentationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ShapeDefinitionRepresentationCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShapeDefinitionRepresentationCreator.cc,v 1.5.4.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShapeDefinitionRepresentationCreator.cc,v 1.6 2001/07/11 10:00:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationCreator.cc b/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationCreator.cc index 36644e88a4..432400c7ed 100644 --- a/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShapeRepresentationCreator.cc,v 1.4.2.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShapeRepresentationCreator.cc,v 1.5 2001/07/11 10:00:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationRelationshipCreator.cc b/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationRelationshipCreator.cc index 36dddb06be..d48aa174a7 100644 --- a/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationRelationshipCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ShapeRepresentationRelationshipCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShapeRepresentationRelationshipCreator.cc,v 1.2.4.1 2001/06/28 19:09:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShapeRepresentationRelationshipCreator.cc,v 1.3 2001/07/11 10:00:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4SphericalSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4SphericalSurfaceCreator.cc index ebc4828915..891efab60d 100644 --- a/source/geometry/solids/STEPinterface/src/G4SphericalSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4SphericalSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SphericalSurfaceCreator.cc,v 1.3.4.1 2001/06/28 19:09:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SphericalSurfaceCreator.cc,v 1.4 2001/07/11 10:00:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4ToroidalSurfaceCreator.cc b/source/geometry/solids/STEPinterface/src/G4ToroidalSurfaceCreator.cc index 3f4569a7d6..10ced07599 100644 --- a/source/geometry/solids/STEPinterface/src/G4ToroidalSurfaceCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4ToroidalSurfaceCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ToroidalSurfaceCreator.cc,v 1.3.4.1 2001/06/28 19:09:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ToroidalSurfaceCreator.cc,v 1.4 2001/07/11 10:00:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4VectorCreator.cc b/source/geometry/solids/STEPinterface/src/G4VectorCreator.cc index db7b8a52b7..305444e812 100644 --- a/source/geometry/solids/STEPinterface/src/G4VectorCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4VectorCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VectorCreator.cc,v 1.3.4.1 2001/06/28 19:09:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VectorCreator.cc,v 1.4 2001/07/11 10:00:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/STEPinterface/src/G4VertexPointCreator.cc b/source/geometry/solids/STEPinterface/src/G4VertexPointCreator.cc index e491f01331..345366d7bb 100644 --- a/source/geometry/solids/STEPinterface/src/G4VertexPointCreator.cc +++ b/source/geometry/solids/STEPinterface/src/G4VertexPointCreator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VertexPointCreator.cc,v 1.3.4.1 2001/06/28 19:09:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VertexPointCreator.cc,v 1.4 2001/07/11 10:00:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4ClippablePolygon.hh b/source/geometry/solids/specific/include/G4ClippablePolygon.hh index ecc05d57eb..40fabedf34 100644 --- a/source/geometry/solids/specific/include/G4ClippablePolygon.hh +++ b/source/geometry/solids/specific/include/G4ClippablePolygon.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ClippablePolygon.hh,v 1.5.2.1 2001/06/28 19:09:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ClippablePolygon.hh,v 1.6 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4ClippablePolygon.icc b/source/geometry/solids/specific/include/G4ClippablePolygon.icc index 96c62a49d1..af0e68c4c1 100644 --- a/source/geometry/solids/specific/include/G4ClippablePolygon.icc +++ b/source/geometry/solids/specific/include/G4ClippablePolygon.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ClippablePolygon.icc,v 1.2.2.1 2001/06/28 19:09:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ClippablePolygon.icc,v 1.3 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/specific/include/G4EllipticalTube.hh b/source/geometry/solids/specific/include/G4EllipticalTube.hh index 57655b11c9..0b4612b959 100644 --- a/source/geometry/solids/specific/include/G4EllipticalTube.hh +++ b/source/geometry/solids/specific/include/G4EllipticalTube.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EllipticalTube.hh,v 1.8.4.1 2001/06/28 19:09:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EllipticalTube.hh,v 1.9 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/solids/specific/include/G4EnclosingCylinder.hh b/source/geometry/solids/specific/include/G4EnclosingCylinder.hh index e82cf05b7d..b04b28c2ec 100644 --- a/source/geometry/solids/specific/include/G4EnclosingCylinder.hh +++ b/source/geometry/solids/specific/include/G4EnclosingCylinder.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EnclosingCylinder.hh,v 1.3.4.1 2001/06/28 19:09:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EnclosingCylinder.hh,v 1.4 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4Hype.hh b/source/geometry/solids/specific/include/G4Hype.hh index 8cb74874c2..c7e0bca555 100644 --- a/source/geometry/solids/specific/include/G4Hype.hh +++ b/source/geometry/solids/specific/include/G4Hype.hh @@ -21,9 +21,9 @@ // ******************************************************************** // // -// $Id: G4Hype.hh,v 1.4.4.1 2001/06/28 19:09:22 gunter Exp $ +// $Id: G4Hype.hh,v 1.5 2001/07/11 10:00:14 gunter Exp $ // $Original: G4Hype.hh,v 1.0 1998/06/09 16:57:50 safai Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4Hype.icc b/source/geometry/solids/specific/include/G4Hype.icc index 5378bfdddc..9cd53b6b48 100644 --- a/source/geometry/solids/specific/include/G4Hype.icc +++ b/source/geometry/solids/specific/include/G4Hype.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Hype.icc,v 1.1.4.1 2001/06/28 19:09:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Hype.icc,v 1.2 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------------- // GEANT 4 inline definitions file diff --git a/source/geometry/solids/specific/include/G4IntersectingCone.hh b/source/geometry/solids/specific/include/G4IntersectingCone.hh index 983e0798d3..320556f767 100644 --- a/source/geometry/solids/specific/include/G4IntersectingCone.hh +++ b/source/geometry/solids/specific/include/G4IntersectingCone.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IntersectingCone.hh,v 1.3.4.1 2001/06/28 19:09:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IntersectingCone.hh,v 1.4 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4PolyPhiFace.hh b/source/geometry/solids/specific/include/G4PolyPhiFace.hh index 2bf5ff5917..1f88a35457 100644 --- a/source/geometry/solids/specific/include/G4PolyPhiFace.hh +++ b/source/geometry/solids/specific/include/G4PolyPhiFace.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolyPhiFace.hh,v 1.3.4.1 2001/06/28 19:09:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolyPhiFace.hh,v 1.4 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4PolyPhiFace.icc b/source/geometry/solids/specific/include/G4PolyPhiFace.icc index 82baa27cd0..804fe43e49 100644 --- a/source/geometry/solids/specific/include/G4PolyPhiFace.icc +++ b/source/geometry/solids/specific/include/G4PolyPhiFace.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolyPhiFace.icc,v 1.2.4.1 2001/06/28 19:09:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolyPhiFace.icc,v 1.3 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4Polycone.hh b/source/geometry/solids/specific/include/G4Polycone.hh index 37b038edeb..77198a65a5 100644 --- a/source/geometry/solids/specific/include/G4Polycone.hh +++ b/source/geometry/solids/specific/include/G4Polycone.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polycone.hh,v 1.5.4.1 2001/06/28 19:09:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polycone.hh,v 1.6 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4PolyconeSide.hh b/source/geometry/solids/specific/include/G4PolyconeSide.hh index 8048821df7..43287f639e 100644 --- a/source/geometry/solids/specific/include/G4PolyconeSide.hh +++ b/source/geometry/solids/specific/include/G4PolyconeSide.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolyconeSide.hh,v 1.3.4.1 2001/06/28 19:09:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolyconeSide.hh,v 1.4 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4Polyhedra.hh b/source/geometry/solids/specific/include/G4Polyhedra.hh index 879190d785..0524633361 100644 --- a/source/geometry/solids/specific/include/G4Polyhedra.hh +++ b/source/geometry/solids/specific/include/G4Polyhedra.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polyhedra.hh,v 1.4.4.1 2001/06/28 19:09:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polyhedra.hh,v 1.5 2001/07/11 10:00:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4PolyhedraSide.hh b/source/geometry/solids/specific/include/G4PolyhedraSide.hh index fc458911d4..b2e290567b 100644 --- a/source/geometry/solids/specific/include/G4PolyhedraSide.hh +++ b/source/geometry/solids/specific/include/G4PolyhedraSide.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolyhedraSide.hh,v 1.3.4.1 2001/06/28 19:09:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolyhedraSide.hh,v 1.4 2001/07/11 10:00:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4ReduciblePolygon.hh b/source/geometry/solids/specific/include/G4ReduciblePolygon.hh index 7db1545a68..652904405f 100644 --- a/source/geometry/solids/specific/include/G4ReduciblePolygon.hh +++ b/source/geometry/solids/specific/include/G4ReduciblePolygon.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ReduciblePolygon.hh,v 1.3.4.1 2001/06/28 19:09:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReduciblePolygon.hh,v 1.4 2001/07/11 10:00:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4SolidExtentList.hh b/source/geometry/solids/specific/include/G4SolidExtentList.hh index 57c6b71d25..a66cb10ccb 100644 --- a/source/geometry/solids/specific/include/G4SolidExtentList.hh +++ b/source/geometry/solids/specific/include/G4SolidExtentList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SolidExtentList.hh,v 1.3.4.1 2001/06/28 19:09:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SolidExtentList.hh,v 1.4 2001/07/11 10:00:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4VCSGface.hh b/source/geometry/solids/specific/include/G4VCSGface.hh index 8f30b27af6..1868bc173d 100644 --- a/source/geometry/solids/specific/include/G4VCSGface.hh +++ b/source/geometry/solids/specific/include/G4VCSGface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VCSGface.hh,v 1.3.4.1 2001/06/28 19:09:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VCSGface.hh,v 1.4 2001/07/11 10:00:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/include/G4VCSGfaceted.hh b/source/geometry/solids/specific/include/G4VCSGfaceted.hh index 7980b7eb4e..4d1c3a771a 100644 --- a/source/geometry/solids/specific/include/G4VCSGfaceted.hh +++ b/source/geometry/solids/specific/include/G4VCSGfaceted.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VCSGfaceted.hh,v 1.5.4.1 2001/06/28 19:09:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VCSGfaceted.hh,v 1.6 2001/07/11 10:00:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4ClippablePolygon.cc b/source/geometry/solids/specific/src/G4ClippablePolygon.cc index 31be3b2b4e..9afbaaa07d 100644 --- a/source/geometry/solids/specific/src/G4ClippablePolygon.cc +++ b/source/geometry/solids/specific/src/G4ClippablePolygon.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ClippablePolygon.cc,v 1.5.2.1 2001/06/28 19:09:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ClippablePolygon.cc,v 1.6 2001/07/11 10:00:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4EllipticalTube.cc b/source/geometry/solids/specific/src/G4EllipticalTube.cc index 10407d7fb5..dcb5019c84 100644 --- a/source/geometry/solids/specific/src/G4EllipticalTube.cc +++ b/source/geometry/solids/specific/src/G4EllipticalTube.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EllipticalTube.cc,v 1.9.4.1 2001/06/28 19:09:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EllipticalTube.cc,v 1.10 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4EnclosingCylinder.cc b/source/geometry/solids/specific/src/G4EnclosingCylinder.cc index 048bd95ca0..f1776baa96 100644 --- a/source/geometry/solids/specific/src/G4EnclosingCylinder.cc +++ b/source/geometry/solids/specific/src/G4EnclosingCylinder.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EnclosingCylinder.cc,v 1.2.4.1 2001/06/28 19:09:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EnclosingCylinder.cc,v 1.3 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4Hype.cc b/source/geometry/solids/specific/src/G4Hype.cc index db7fab2b19..ac45914dbc 100644 --- a/source/geometry/solids/specific/src/G4Hype.cc +++ b/source/geometry/solids/specific/src/G4Hype.cc @@ -21,9 +21,9 @@ // ******************************************************************** // // -// $Id: G4Hype.cc,v 1.6.2.1 2001/06/28 19:09:25 gunter Exp $ +// $Id: G4Hype.cc,v 1.7 2001/07/11 10:00:16 gunter Exp $ // $Original: G4Hype.cc,v 1.0 1998/06/09 16:57:50 safai Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4IntersectingCone.cc b/source/geometry/solids/specific/src/G4IntersectingCone.cc index 5011917d71..1be88441f5 100644 --- a/source/geometry/solids/specific/src/G4IntersectingCone.cc +++ b/source/geometry/solids/specific/src/G4IntersectingCone.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IntersectingCone.cc,v 1.3.2.1 2001/06/28 19:09:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IntersectingCone.cc,v 1.4 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4PolyPhiFace.cc b/source/geometry/solids/specific/src/G4PolyPhiFace.cc index a3774eaa2b..a217009274 100644 --- a/source/geometry/solids/specific/src/G4PolyPhiFace.cc +++ b/source/geometry/solids/specific/src/G4PolyPhiFace.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolyPhiFace.cc,v 1.3.4.1 2001/06/28 19:09:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolyPhiFace.cc,v 1.4 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4Polycone.cc b/source/geometry/solids/specific/src/G4Polycone.cc index 5be357dfa8..3a46f87bb1 100644 --- a/source/geometry/solids/specific/src/G4Polycone.cc +++ b/source/geometry/solids/specific/src/G4Polycone.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polycone.cc,v 1.4.4.1 2001/06/28 19:09:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polycone.cc,v 1.5 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4PolyconeSide.cc b/source/geometry/solids/specific/src/G4PolyconeSide.cc index 1d2c484e95..275f0195fb 100644 --- a/source/geometry/solids/specific/src/G4PolyconeSide.cc +++ b/source/geometry/solids/specific/src/G4PolyconeSide.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolyconeSide.cc,v 1.3.4.1 2001/06/28 19:09:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolyconeSide.cc,v 1.4 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4Polyhedra.cc b/source/geometry/solids/specific/src/G4Polyhedra.cc index 42bf21d9f0..1e735b15ae 100644 --- a/source/geometry/solids/specific/src/G4Polyhedra.cc +++ b/source/geometry/solids/specific/src/G4Polyhedra.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polyhedra.cc,v 1.2.4.1 2001/06/28 19:09:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polyhedra.cc,v 1.3 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4PolyhedraSide.cc b/source/geometry/solids/specific/src/G4PolyhedraSide.cc index dea35ae925..9ce3cd8727 100644 --- a/source/geometry/solids/specific/src/G4PolyhedraSide.cc +++ b/source/geometry/solids/specific/src/G4PolyhedraSide.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolyhedraSide.cc,v 1.3.4.1 2001/06/28 19:09:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolyhedraSide.cc,v 1.4 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4ReduciblePolygon.cc b/source/geometry/solids/specific/src/G4ReduciblePolygon.cc index c159474027..7a05eb653a 100644 --- a/source/geometry/solids/specific/src/G4ReduciblePolygon.cc +++ b/source/geometry/solids/specific/src/G4ReduciblePolygon.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ReduciblePolygon.cc,v 1.3.4.1 2001/06/28 19:09:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReduciblePolygon.cc,v 1.4 2001/07/11 10:00:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4SolidExtentList.cc b/source/geometry/solids/specific/src/G4SolidExtentList.cc index 9179a8ea7e..5de79afa36 100644 --- a/source/geometry/solids/specific/src/G4SolidExtentList.cc +++ b/source/geometry/solids/specific/src/G4SolidExtentList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SolidExtentList.cc,v 1.1.4.1 2001/06/28 19:09:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SolidExtentList.cc,v 1.2 2001/07/11 10:00:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4VCSGfaceted.cc b/source/geometry/solids/specific/src/G4VCSGfaceted.cc index a644ffbb38..018e8304d1 100644 --- a/source/geometry/solids/specific/src/G4VCSGfaceted.cc +++ b/source/geometry/solids/specific/src/G4VCSGfaceted.cc @@ -26,8 +26,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4VCSGfaceted.cc,v 1.6.4.1 2001/06/28 19:09:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VCSGfaceted.cc,v 1.7 2001/07/11 10:00:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/verification/GNUmakefile b/source/geometry/verification/GNUmakefile new file mode 100644 index 0000000000..517e0d2a51 --- /dev/null +++ b/source/geometry/verification/GNUmakefile @@ -0,0 +1,19 @@ +# $Id: GNUmakefile,v 1.2 2001/10/24 15:32:14 gcosmo Exp $ +# -------------------------------------------------------------------- +# GNUmakefile for geometry/volumes library. Gabriele Cosmo, 16/11/96. +# -------------------------------------------------------------------- + +name := G4geomver + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4BASE)/graphics_reps/include \ + -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/geometry/management/include + +include $(G4INSTALL)/config/common.gmk diff --git a/source/geometry/verification/History b/source/geometry/verification/History new file mode 100644 index 0000000000..9cfee484ac --- /dev/null +++ b/source/geometry/verification/History @@ -0,0 +1,38 @@ +$Id: History,v 1.6 2001/10/24 22:12:44 gcosmo Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Category History file + --------------------- +This file should be used by G4 developers and category coordinators +to briefly summarize all major modifications introduced in the code +and keep track of all category-tags. +It DOES NOT substitute the CVS log-message one should put at every +committal in the CVS repository ! + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +Oct 24th, 2001 G.Cosmo (geomver-V03-02-02) +- Fixed compilation error and warnings on HP-aCC. Modified files: + G4GeomTestVolume.cc, G4GeomTestStreamLogger.cc. + +Oct 24th, 2001 G.Cosmo (geomver-V03-02-01) +- Moved messenger to geometry/volumes and renamed G4GeometryMessenger. +- Removed dependencies from intercoms and geometry/volumes. + +Oct 22nd, 2001 G.Cosmo (geomver-V03-02-00) +- Added "/geomtest/tolerance" command to set custom error tolerance. + Added Set/GetTolerance() methods to G4GeomTestVolume class. +- Introduced additional diagnostics in G4GeomTestStreamLogger to report + in case no intersections/overlaps are detected. + +Oct 16th, 2001 G.Cosmo +- Added messenger for geometry overlaps testing. +- General source code formatting. +- Created. + Original implementation by D.C.Williams (UCSC, BaBar). diff --git a/source/geometry/verification/include/G4GeomTestErrorList.hh b/source/geometry/verification/include/G4GeomTestErrorList.hh new file mode 100644 index 0000000000..dc6915c82e --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestErrorList.hh @@ -0,0 +1,109 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestErrorList.hh,v 1.1 2001/10/17 12:59:53 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestErrorList +// +// Class description: +// +// A list of line segments that are found inside two +// separate daughter volumes, indicating a geometry error. +// +// This class relies on the compiler generated copy constructor +// and assignment operator. + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestErrorList_hh +#define G4GeomTestErrorList_hh + +#include "g4std/vector" + +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "G4RotationMatrix.hh" + +class G4VPhysicalVolume; + +class G4GeomTestErrorList +{ + public: // with description + + G4GeomTestErrorList( const G4VPhysicalVolume *theMother ); + virtual ~G4GeomTestErrorList(); + // Constructor and virtual destructor + + void AddError( const G4ThreeVector &s1, const G4ThreeVector &s2 ); + // Declare a new instance of an error, by specifying + // two points in the coordinate system of the mother + + const G4VPhysicalVolume *GetMother() const; + // Return pointers to mother volume + + G4int NumError() const; + // Return number of errors + + void GetMotherPoints( G4int i, G4ThreeVector &s1, G4ThreeVector &s2 ) const; + void GetGlobalPoints( G4int i, G4ThreeVector &s1, G4ThreeVector &s2 ) const; + // Return start and end points in various + // coordinate systems + + void GetOneDaughtPoints( const G4VPhysicalVolume *daught, + G4int i, G4ThreeVector &s1, G4ThreeVector &s2 ) const; + // Return start and end points in the coordinate system of a + // daughter volume + + private: + + void FindGlobalCoordinateSystem(); + // Calculate the global coordinate system + + class Segment + { + public: + Segment( const G4ThreeVector &as1, const G4ThreeVector &as2 ) + : s1(as1), s2(as2) {;} + + const G4ThreeVector &GetS1() const { return s1; } + const G4ThreeVector &GetS2() const { return s2; } + + private: + G4ThreeVector s1, s2; + }; + G4std::vector segments; + // List of error segments + + const G4VPhysicalVolume *mother; + // Mother volume + + G4ThreeVector globalTranslation; + G4RotationMatrix globalRotation; + // Global coordinate system with respect to mother +}; + +#endif diff --git a/source/geometry/verification/include/G4GeomTestLogger.hh b/source/geometry/verification/include/G4GeomTestLogger.hh new file mode 100644 index 0000000000..d2498e6adf --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestLogger.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestLogger.hh,v 1.2 2001/10/22 13:04:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestLogger +// +// Class description: +// +// Abstract base class that defines the interface of a class that +// accepts error reports from the geometry test +// + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestLogger_hh +#define G4GeomTestLogger_hh + +#include "globals.hh" +#include "G4ThreeVector.hh" + +class G4VSolid; +class G4GeomTestOverlapList; +class G4GeomTestOvershootList; + +class G4GeomTestLogger +{ + public: // with description + + G4GeomTestLogger() {;} + virtual ~G4GeomTestLogger() {;} + // Constructor and virtual destructor + + virtual void SolidProblem( const G4VSolid *solid, + const G4String &message, + const G4ThreeVector &point ) = 0; + // Accept an error from a local calculation of + // a solid, probably an inconsistency in geometry + + virtual void NoProblem( const G4String &message ) = 0; + // Report a message of no error. + + virtual void OverlappingDaughters( const G4GeomTestOverlapList *) = 0; + // Accept an error due to the overlap of two volumes + + virtual void OvershootingDaughter( const G4GeomTestOvershootList *) = 0; + // Accept an error due to a daughter sticking outside + // a mother volume +}; + +#endif diff --git a/source/geometry/verification/include/G4GeomTestOverlapList.hh b/source/geometry/verification/include/G4GeomTestOverlapList.hh new file mode 100644 index 0000000000..84d058bad5 --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestOverlapList.hh @@ -0,0 +1,79 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestOverlapList.hh,v 1.1 2001/10/17 12:59:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestOverlapList +// +// Class description: +// +// A list of line segments that are found inside two +// separate daughter volumes, indicating a geometry +// overlap error. +// +// This class relies on the compiler generated copy constructor +// and assignment operator. + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestOverlapList_hh +#define G4GeomTestOverlapList_hh + +#include "G4GeomTestErrorList.hh" + +class G4VPhysicalVolume; + +class G4GeomTestOverlapList : public G4GeomTestErrorList +{ + public: // with description + + G4GeomTestOverlapList(); + G4GeomTestOverlapList( const G4VPhysicalVolume *theMother, + G4int theDaughter1, G4int theDaughter2 ); + virtual ~G4GeomTestOverlapList(); + // Constructors and virtual destructor + + G4bool operator==( const G4GeomTestOverlapList &other ) const; + G4bool operator< ( const G4GeomTestOverlapList &other ) const; + // Comparison operators, based on daughter index numbers + + const G4VPhysicalVolume *GetDaughter1() const; + const G4VPhysicalVolume *GetDaughter2() const; + G4int GetDaughter1Index() const; + G4int GetDaughter2Index() const; + // Return pointers to volumes + + void GetDaught1Points( G4int, G4ThreeVector &, G4ThreeVector & ) const; + void GetDaught2Points( G4int, G4ThreeVector &, G4ThreeVector & ) const; + // Return start and end points in various coordinate systems + + private: + + G4int daughter1, daughter2; +}; + +#endif diff --git a/source/geometry/verification/include/G4GeomTestOvershootList.hh b/source/geometry/verification/include/G4GeomTestOvershootList.hh new file mode 100644 index 0000000000..75b9df512d --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestOvershootList.hh @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestOvershootList.hh,v 1.1 2001/10/17 12:59:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestOvershootList +// +// Class description: +// +// A list of line segments inside a specific volume daughter +// but outside its mother volume, indicating a geometry error + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestOvershootList_hh +#define G4GeomTestOvershootList_hh + +#include "G4GeomTestErrorList.hh" + +class G4GeomTestOvershootList : public G4GeomTestErrorList +{ + public: // with description + + G4GeomTestOvershootList(); + G4GeomTestOvershootList( const G4VPhysicalVolume *theMother, + G4int theDaughter ); + virtual ~G4GeomTestOvershootList(); + // Constructors and virtual destructor + + G4bool operator==( const G4GeomTestOvershootList &other ) const; + G4bool operator< ( const G4GeomTestOvershootList &other ) const; + // Comparison operators, based on daughter index + + const G4VPhysicalVolume *GetDaughter() const; + G4int GetDaughterIndex() const; + // Return pointers to volumes + + void GetDaughtPoints( G4int i, G4ThreeVector &s1, G4ThreeVector &s2 ) const; + // Return start and end points in various + // coordinate systems + + private: + + G4int daughter; +}; + +#endif diff --git a/source/geometry/verification/include/G4GeomTestPoint.hh b/source/geometry/verification/include/G4GeomTestPoint.hh new file mode 100644 index 0000000000..53fbd8df2f --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestPoint.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestPoint.hh,v 1.1 2001/10/17 12:59:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestPoint +// +// Class description: +// +// A point on a line segment intersecting a solid, used +// for geometry tests + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestPoint_hh +#define G4GeomTestPoint_hh + +#include "globals.hh" +#include "G4ThreeVector.hh" + +class G4VSolid; + +class G4GeomTestPoint +{ + public: // with description + + G4GeomTestPoint(); + G4GeomTestPoint( const G4GeomTestPoint &other ); + G4GeomTestPoint( const G4ThreeVector &thePoint, + G4double theS, + G4bool isEntering ); + virtual ~G4GeomTestPoint(); + // Constructors and virtual destructor + + G4bool operator==( const G4GeomTestPoint &other ) const; + G4bool operator< ( const G4GeomTestPoint &other ) const; + G4bool operator<=( const G4GeomTestPoint &other ) const; + // Operators + + virtual const G4ThreeVector &GetPosition() const; + virtual G4double GetDistance() const; + virtual G4bool Entering() const; + // Accessors + + protected: + + G4ThreeVector p; + G4double s; + G4bool entering; +}; + +#endif diff --git a/source/geometry/verification/include/G4GeomTestSegment.hh b/source/geometry/verification/include/G4GeomTestSegment.hh new file mode 100644 index 0000000000..2f0b9732e5 --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestSegment.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestSegment.hh,v 1.1 2001/10/17 12:59:55 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestSegment +// +// Class description: +// +// Locate all points on a line that intersect a solid, +// and return them in no particular order + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestSegment_hh +#define G4GeomTestSegment_hh + +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "G4GeomTestPoint.hh" + +#include "g4std/vector" + +class G4VSolid; +class G4GeomTestLogger; + +class G4GeomTestSegment +{ + public: // with description + + G4GeomTestSegment( const G4VSolid *theSolid, + const G4ThreeVector &theP, + const G4ThreeVector &theV, + G4GeomTestLogger *logger ); + // Constructor + + const G4VSolid *GetSolid() const; + const G4ThreeVector &GetP() const; + const G4ThreeVector &GetV() const; + const G4GeomTestPoint &GetPoint( G4int i ) const; + G4int GetNumberPoints() const; + // Accessors + + private: + + void FindPoints( G4GeomTestLogger *logger ); + void FindSomePoints( G4GeomTestLogger *logger, G4bool forward ); + void PatchInconsistencies( G4GeomTestLogger *logger ); + + const G4VSolid * solid; + const G4ThreeVector p0,v; + + G4std::vector points; +}; + +#endif diff --git a/source/geometry/verification/include/G4GeomTestStreamLogger.hh b/source/geometry/verification/include/G4GeomTestStreamLogger.hh new file mode 100644 index 0000000000..6dd0b0a95c --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestStreamLogger.hh @@ -0,0 +1,109 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestStreamLogger.hh,v 1.2 2001/10/22 13:04:39 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestStreamLogger +// +// Class description: +// +// A G4GeomTestLogger that outputs to a stream. + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestStreamLogger_hh +#define G4GeomTestStreamLogger_hh + +#include "globals.hh" +#include "G4GeomTestLogger.hh" + +class G4VPhysicalVolume; + +class G4GeomTestStreamLogger : public G4GeomTestLogger +{ + public: // with description + + G4GeomTestStreamLogger( G4std::ostream &o, + G4int theMaxPointsPerError=20 ); + virtual ~G4GeomTestStreamLogger() {;} + // Constructors and virtual destructor + + virtual void SolidProblem( const G4VSolid *solid, + const G4String &message, + const G4ThreeVector &point ); + virtual void OverlappingDaughters( const G4GeomTestOverlapList *list ); + virtual void OvershootingDaughter( const G4GeomTestOvershootList *list ); + virtual void NoProblem ( const G4String &message ); + + protected: + + void PrintSegmentListHeader(); + void PrintSegmentListElement( const G4ThreeVector &s1, + const G4ThreeVector &s2 ); + // Format aides + + const char *IsAre(G4int n); + + public: // Solaris 7 insists on these guys being public + + class PrintPos + { + public: + PrintPos(const G4ThreeVector pos, G4bool useUnit=true ) + : p(pos), unit(useUnit) {;} + + void Print( G4std::ostream & ) const; + + private: + G4ThreeVector p; + G4bool unit; + }; + + class VolumeNameAndCopy + { + public: + VolumeNameAndCopy( const G4VPhysicalVolume *theVolume ) + : volume(theVolume) {;} + + void Print( G4std::ostream & ) const; + + private: + const G4VPhysicalVolume *volume; + }; + + friend G4std::ostream &operator<<( G4std::ostream &, + const G4GeomTestStreamLogger::PrintPos & ); + friend G4std::ostream &operator<<( G4std::ostream &, + const G4GeomTestStreamLogger::VolumeNameAndCopy & ); + + protected: + + G4std::ostream &out; + G4int maxPointsPerError; +}; + +#endif diff --git a/source/geometry/verification/include/G4GeomTestVolPoint.hh b/source/geometry/verification/include/G4GeomTestVolPoint.hh new file mode 100644 index 0000000000..521b3858ce --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestVolPoint.hh @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestVolPoint.hh,v 1.1 2001/10/17 12:59:56 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestVolPoint +// +// Class description: +// +// A point on a line segment intersecting a physical solid, used +// for geometry tests. +// A negative daughter index indicates the mother volume itself. + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestVolPoint_hh +#define G4GeomTestVolPoint_hh + +#include "G4GeomTestPoint.hh" +#include "G4RotationMatrix.hh" + +class G4GeomTestVolPoint : public G4GeomTestPoint +{ + public: // with description + + G4GeomTestVolPoint(); + G4GeomTestVolPoint( const G4ThreeVector &thePoint, + G4double theS, + G4bool isEntering, + G4int theDaughterIndex ); + G4GeomTestVolPoint( const G4GeomTestPoint &base, + G4int theDaughterIndex ); + G4GeomTestVolPoint( const G4GeomTestPoint &base, + G4int theDaughterIndex, + const G4ThreeVector &translation, + const G4RotationMatrix *rotation=0 ); + G4GeomTestVolPoint( const G4GeomTestVolPoint &other ); + virtual ~G4GeomTestVolPoint(); + // Constructors and virtual destructor + + G4int GetDaughterIndex() const; + // Accessors + + protected: + + G4int daughterIndex; +}; + +#endif diff --git a/source/geometry/verification/include/G4GeomTestVolume.hh b/source/geometry/verification/include/G4GeomTestVolume.hh new file mode 100644 index 0000000000..714790b1ec --- /dev/null +++ b/source/geometry/verification/include/G4GeomTestVolume.hh @@ -0,0 +1,154 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestVolume.hh,v 1.2 2001/10/22 10:41:34 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeomTestVolume +// +// Class description: +// +// Checks for inconsistencies in the geometric boundaries of a physical +// volume and the boundaries of all its immediate daughters. + +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#ifndef G4GeomTestVolume_hh +#define G4GeomTestVolume_hh + +#include "G4ThreeVector.hh" +#include "G4VisExtent.hh" +#include "G4GeomTestOverlapList.hh" +#include "G4GeomTestOvershootList.hh" + +#include "g4std/map" + +class G4VPhysicalVolume; +class G4GeomTestLogger; + +class G4GeomTestVolume +{ + public: // with description + + G4GeomTestVolume( const G4VPhysicalVolume *theTarget, + G4GeomTestLogger *theLogger, + G4double theTolerance=1E-4*mm ); + ~G4GeomTestVolume(); + // Constructor and destructor + + G4double GetTolerance() const; + void SetTolerance(G4double tolerance); + // Get/Set error tolerance (default set to 1E-4*mm) + + void TestCartGridXYZ( G4int nx=100, G4int ny=100, G4int nz=100 ); + void TestCartGridX( G4int ny=100, G4int nz=100 ); + void TestCartGridY( G4int nz=100, G4int nx=100 ); + void TestCartGridZ( G4int nx=100, G4int ny=100 ); + // Test using a grid of lines parallel to a cartesian axis + + void TestRecursiveCartGrid( G4int nx=100, G4int ny=100, G4int nz=100 ); + // Test using a grid, recursively, to all daughters, + // and their daughters, and their daughters, etc. + // Be careful: this could take a long, long time + + void TestCylinder( G4int nPhi=90, G4int nZ=50, G4int nRho=50, + G4double fracZ=0.8, G4double fracRho=0.8, + G4bool usePhi=false ); + // Test using a set of lines in a cylindrical + // pattern of gradually increasing mesh size + // nPhi = Number lines per phi + // nZ = Number of z points + // nRho = Number of rho points + // fracZ = Fraction scale for points along z + // fracRho = Fraction scale for points along rho + // usePhi = Include phi set of lines + // Define a set of rho values such that: + // rho0 = Size of volume + // rho1 = frac*rho0 + // rho2 = frac*rho1 + // ... etc + // And define a set of z values + // z0 = z size of volume + // z1 = fracZ*z0 + // z2 = fracZ*z1 + // .... etc + // And define a set of nPhi phi values, evenly + // distributed in phi + // + // Three sets of lines are tested: + // * Imagine the set of lines parallel to the z axis + // through each rho point, at a phi angle taken the + // set of phi angles + // * Imagine the set of lines running perpendicular + // to the z axis and through a point on the z axis + // at +/- each z point and at an angle taken from the + // set of phi values + // * If usePhi==true, now take each pair of lines from the + // above two sets and imagine the line through the + // intersection and perpendicular to both + + void TestCartGrid( const G4ThreeVector &g1, + const G4ThreeVector &g2, + const G4ThreeVector &v, + G4int n1, + G4int n2 ); + // Test using a grid of parallel lines + // g1 = First grid axis + // g2 = Second grid axis + // v = Direction of lines + // n1 = Number of grid points along g1 + // n2 = Number of grid points along g2 + // The spread of the grid points are automatically calculated + // based on the extent of the solid + + void TestOneLine( const G4ThreeVector &p, const G4ThreeVector &v ); + // Test using a single line, specified by a point and direction, + // in the coordinate system of the target volume + + void ReportErrors(); + // Tabulate and report all errors so far encountered + + void ClearErrors(); + // Clear list of errors + + protected: + + const G4VPhysicalVolume *target; // Target volume + G4GeomTestLogger *logger; // Error logger + G4double tolerance; // Error tolerance + G4VisExtent extent; // Geometric extent of volume + + G4std::map overlaps; + // A list of overlap errors, keyed by the + // daughter1*numDaughter+daughter2, where daughter1 + // is the smaller of the two daughter indices + + G4std::map overshoots; + // A list of overshoot errors, keyed by the + // daughter number +}; + +#endif diff --git a/source/geometry/verification/src/G4GeomTestErrorList.cc b/source/geometry/verification/src/G4GeomTestErrorList.cc new file mode 100644 index 0000000000..e78829f39e --- /dev/null +++ b/source/geometry/verification/src/G4GeomTestErrorList.cc @@ -0,0 +1,163 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestErrorList.cc,v 1.1 2001/10/17 12:59:57 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeomTestErrorList +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#include "G4GeomTestErrorList.hh" +#include "G4VPhysicalVolume.hh" + +// +// Constructor +// +G4GeomTestErrorList::G4GeomTestErrorList( const G4VPhysicalVolume *theMother ) + : mother(theMother) +{ + FindGlobalCoordinateSystem(); +} + + +// +// Destructor +// +G4GeomTestErrorList::~G4GeomTestErrorList() {;} + + +// +// AddError +// +// Add a new Error point to our list, where the point +// is given in the coordinate system of the mother +// +void G4GeomTestErrorList::AddError( const G4ThreeVector &s1, + const G4ThreeVector &s2 ) +{ + segments.push_back( Segment(s1,s2) ); +} + + +// +// Accessors +// +const G4VPhysicalVolume *G4GeomTestErrorList::GetMother() const +{ + return mother; +} + + +// +// Return number of segments +// +G4int G4GeomTestErrorList::NumError() const +{ + return segments.size(); +} + + +// +// GetMotherPoints +// +// Return start and end points in the coordinate system +// of the mother +// +void G4GeomTestErrorList::GetMotherPoints( G4int i, + G4ThreeVector &s1, + G4ThreeVector &s2 ) const +{ + s1 = segments[i].GetS1(); + s2 = segments[i].GetS2(); +} + + +// +// GetGlobalPoints +// +// Return start and end points in the global coordinate system +// +void G4GeomTestErrorList::GetGlobalPoints( G4int i, + G4ThreeVector &s1, + G4ThreeVector &s2 ) const +{ + s1 = globalTranslation + globalRotation*segments[i].GetS1(); + s2 = globalTranslation + globalRotation*segments[i].GetS2(); +} + + +// +// GetOneDaughtPoints +// +// Return start and end points in the coordinate system of +// a daughter +// +void G4GeomTestErrorList::GetOneDaughtPoints( const G4VPhysicalVolume *daught, + G4int i, + G4ThreeVector &s1, + G4ThreeVector &s2 ) const +{ + const G4RotationMatrix *rotation = daught->GetFrameRotation(); + const G4ThreeVector &translation = daught->GetFrameTranslation(); + + if (rotation) { + s1 = (*rotation)*(translation + segments[i].GetS1()); + s2 = (*rotation)*(translation + segments[i].GetS2()); + } + else { + s1 = translation + segments[i].GetS1(); + s2 = translation + segments[i].GetS2(); + } +} + + + +// +// FindGlobalCoordinateSystem +// +// Calculate translation to global coordinates +// +void G4GeomTestErrorList::FindGlobalCoordinateSystem() +{ + globalTranslation = G4ThreeVector(0,0,0); + globalRotation = G4RotationMatrix(); + + const G4VPhysicalVolume *vol = mother; + + for(;;) { + const G4VPhysicalVolume *parent = vol->GetMother(); + if (parent == 0) break; + + const G4RotationMatrix &rotation = vol->GetObjectRotationValue(); + const G4ThreeVector &translation = vol->GetObjectTranslation(); + + globalTranslation = translation + rotation*globalTranslation; + globalRotation = rotation*globalRotation; + + vol = parent; + } +} diff --git a/source/geometry/verification/src/G4GeomTestOverlapList.cc b/source/geometry/verification/src/G4GeomTestOverlapList.cc new file mode 100644 index 0000000000..bc64b448fb --- /dev/null +++ b/source/geometry/verification/src/G4GeomTestOverlapList.cc @@ -0,0 +1,137 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestOverlapList.cc,v 1.1 2001/10/17 12:59:58 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeomTestOverlapList +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#include "G4GeomTestOverlapList.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" + +// +// Constructor +// +G4GeomTestOverlapList::G4GeomTestOverlapList( + const G4VPhysicalVolume *theMother, + G4int theDaughter1, + G4int theDaughter2 ) + : G4GeomTestErrorList(theMother), + daughter1(theDaughter1), + daughter2(theDaughter2) +{;} + + +// +// Default constructor +// +G4GeomTestOverlapList::G4GeomTestOverlapList() + : G4GeomTestErrorList(0), + daughter1(0), + daughter2(0) +{;} + + +// +// Destructor +// +G4GeomTestOverlapList::~G4GeomTestOverlapList() {;} + + +// +// Comparison operators +// +G4bool +G4GeomTestOverlapList::operator==( const G4GeomTestOverlapList &other ) const +{ + return daughter1==other.daughter1 && daughter2==other.daughter2; +} + +G4bool +G4GeomTestOverlapList::operator< ( const G4GeomTestOverlapList &other ) const +{ + if (daughter1 > other.daughter1) return false; + if (daughter1 < other.daughter1) return true; + + return (daughter2 < other.daughter2); +} + + + +// +// Accessors +// +const G4VPhysicalVolume *G4GeomTestOverlapList::GetDaughter1() const +{ + return GetMother()->GetLogicalVolume()->GetDaughter(daughter1); +} + +const G4VPhysicalVolume *G4GeomTestOverlapList::GetDaughter2() const +{ + return GetMother()->GetLogicalVolume()->GetDaughter(daughter2); +} + +G4int G4GeomTestOverlapList::GetDaughter1Index() const +{ + return daughter1; +} + +G4int G4GeomTestOverlapList::GetDaughter2Index() const +{ + return daughter2; +} + + +// +// GetDaught1Points +// +// Return start and end points in the coordinate system of +// the first daughter +// +void G4GeomTestOverlapList::GetDaught1Points( G4int i, + G4ThreeVector &s1, + G4ThreeVector &s2 ) const +{ + GetOneDaughtPoints( GetDaughter1(), i, s1, s2 ); +} + + +// +// GetDaught2Points +// +// Return start and end points in the coordinate system of +// the second daughter +// +void G4GeomTestOverlapList::GetDaught2Points( G4int i, + G4ThreeVector &s1, + G4ThreeVector &s2 ) const +{ + GetOneDaughtPoints( GetDaughter2(), i, s1, s2 ); +} diff --git a/source/geometry/verification/src/G4GeomTestOvershootList.cc b/source/geometry/verification/src/G4GeomTestOvershootList.cc new file mode 100644 index 0000000000..9900ec0daf --- /dev/null +++ b/source/geometry/verification/src/G4GeomTestOvershootList.cc @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestOvershootList.cc,v 1.1 2001/10/17 12:59:58 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeomTestOvershootList +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#include "G4GeomTestOvershootList.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" + +// +// Constructor +// +G4GeomTestOvershootList::G4GeomTestOvershootList( + const G4VPhysicalVolume *theMother, + G4int theDaughterIndex ) + : G4GeomTestErrorList(theMother), + daughter(theDaughterIndex) +{;} + + +// +// Default constructor +// +G4GeomTestOvershootList::G4GeomTestOvershootList() + : G4GeomTestErrorList(0), + daughter(0) +{;} + + +// +// Destructor +// +G4GeomTestOvershootList::~G4GeomTestOvershootList() {;} + + +// +// Comparison operators +// +G4bool +G4GeomTestOvershootList::operator==( const G4GeomTestOvershootList &other ) const +{ + return daughter==other.daughter; +} + +G4bool +G4GeomTestOvershootList::operator< ( const G4GeomTestOvershootList &other ) const +{ + return (daughter < other.daughter); +} + + + +// +// Accessors +// +const G4VPhysicalVolume *G4GeomTestOvershootList::GetDaughter() const +{ + return GetMother()->GetLogicalVolume()->GetDaughter(daughter); +} + +G4int G4GeomTestOvershootList::GetDaughterIndex() const +{ + return daughter; +} + + +// +// GetDaughtPoints +// +// Return start and end points in the coordinate system of +// the daughter +// +void G4GeomTestOvershootList::GetDaughtPoints( G4int i, + G4ThreeVector &s1, + G4ThreeVector &s2 ) const +{ + GetOneDaughtPoints( GetDaughter(), i, s1, s2 ); +} diff --git a/source/geometry/verification/src/G4GeomTestPoint.cc b/source/geometry/verification/src/G4GeomTestPoint.cc new file mode 100644 index 0000000000..c09294f192 --- /dev/null +++ b/source/geometry/verification/src/G4GeomTestPoint.cc @@ -0,0 +1,123 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestPoint.cc,v 1.1 2001/10/17 12:59:58 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeomTestPoint +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#include "G4GeomTestPoint.hh" + + +// +// Default constructor +// +G4GeomTestPoint::G4GeomTestPoint() + : p(0), + s(0), + entering(false) +{;} + + +// +// Specific constructor +// +G4GeomTestPoint::G4GeomTestPoint( const G4ThreeVector &thePoint, + G4double theS, + G4bool isEntering ) + : p(thePoint), + s(theS), + entering(isEntering) +{;} + + +// +// Copy constructor +// +G4GeomTestPoint::G4GeomTestPoint( const G4GeomTestPoint &other ) + : p(other.p), + s(other.s), + entering(other.entering) +{;} + + +// +// Destructor +// +G4GeomTestPoint::~G4GeomTestPoint() {;} + + +// +// Equivalence operator +// +G4bool G4GeomTestPoint::operator==( const G4GeomTestPoint &other ) const +{ + return s == other.s; +} + + +// +// Order operators +// +G4bool G4GeomTestPoint::operator<( const G4GeomTestPoint &other ) const +{ + return s < other.s; +} + +G4bool G4GeomTestPoint::operator<=( const G4GeomTestPoint &other ) const +{ + return s <= other.s; +} + + +// +// Return position +// +const G4ThreeVector &G4GeomTestPoint::GetPosition() const +{ + return p; +} + + +// +// Return distance +// +G4double G4GeomTestPoint::GetDistance() const +{ + return s; +} + + +// +// Return true if point was entering +// +G4bool G4GeomTestPoint::Entering() const +{ + return entering; +} + diff --git a/source/geometry/verification/src/G4GeomTestSegment.cc b/source/geometry/verification/src/G4GeomTestSegment.cc new file mode 100644 index 0000000000..73775f8c75 --- /dev/null +++ b/source/geometry/verification/src/G4GeomTestSegment.cc @@ -0,0 +1,371 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestSegment.cc,v 1.1 2001/10/17 12:59:59 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeomTestSegment +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#include "G4GeomTestSegment.hh" + +#include "G4VSolid.hh" +#include "G4GeomTestLogger.hh" + +// +// Constructor +// +G4GeomTestSegment::G4GeomTestSegment( const G4VSolid *theSolid, + const G4ThreeVector &theP, + const G4ThreeVector &theV, + G4GeomTestLogger *logger ) + : solid(theSolid), + p0(theP), + v(theV) +{ + FindPoints(logger); +} + + +// +// Simple accessors +// +const G4VSolid * G4GeomTestSegment::GetSolid() const { return solid; } + +const G4ThreeVector &G4GeomTestSegment::GetP() const { return p0; } + +const G4ThreeVector &G4GeomTestSegment::GetV() const { return v; } + + +// +// Return number points +// +G4int G4GeomTestSegment::GetNumberPoints() const +{ + return points.size(); +} + + +// +// Return ith point +// +const G4GeomTestPoint &G4GeomTestSegment::GetPoint( G4int i ) const +{ + return points[i]; +} + + +// +// FindPoints +// +// Do the dirty work +// +void G4GeomTestSegment::FindPoints( G4GeomTestLogger *logger ) +{ + FindSomePoints( logger, true ); + FindSomePoints( logger, false ); + + PatchInconsistencies( logger ); +} + + +// +// PatchInconsistencies +// +// Search for inconsistancies in the hit list and patch +// them up, if possible +// +void G4GeomTestSegment::PatchInconsistencies( G4GeomTestLogger *logger ) +{ + if (points.size() == 0) return; + + // + // Sort + // + G4std::sort( points.begin(), points.end() ); + + // + // Loop over entering/leaving pairs + // + G4std::vector::iterator curr = points.begin(); + do { + G4std::vector::iterator next = curr + 1; + + // + // Is the next point close by? + // + while (next != points.end() && + next->GetDistance()-curr->GetDistance() < kCarTolerance) { + // + // Yup. If we have an entering/leaving pair, all is okay + // + if (next->Entering() != curr->Entering()) { + curr = next + 1; + next = curr + 1; + break; + } + + // + // Otherwise, they are duplicate, and just delete one + // + next = points.erase(next); + curr = next - 1; + } + + if (curr == points.end()) break; + + // + // The next point should be entering... + // + if (!curr->Entering()) { + // + // Point is out of sequence: + // Test solid just before this point + // + G4double s = curr->GetDistance(); + G4ThreeVector p = p0 + s*v; + G4ThreeVector p1 = p - 10*kCarTolerance*v; + + if (solid->Inside(p1) == kOutside) { + // + // We are missing an entrance point near the current + // point. Add one. + // + curr = points.insert(curr, G4GeomTestPoint( p, s, true ) ); + ++curr; + break; + } + + // + // Test solid just after last point + // + if (curr != points.begin()) { + G4std::vector::iterator prev = curr - 1; + + s = prev->GetDistance(); + p = p0 + s*v; + p1 = p + 10*kCarTolerance*v; + + if (solid->Inside(p1) == kOutside) { + // + // We are missing an entrance point near the previous + // point. Add one. + // + curr = points.insert(curr, G4GeomTestPoint( p, s, true ) ); + ++curr; + break; + } + } + + // + // Oh oh. No solution. Delete the current point and complain. + // + logger->SolidProblem( solid, "Spurious exiting intersection point", p ); + curr = points.erase(curr); + break; + } + + // + // The following point should be leaving + // + if (next == points.end() || next->Entering() ) { + // + // But is missing. Check immediately after this point. + // + G4double s = curr->GetDistance(); + G4ThreeVector p = p0 + s*v; + G4ThreeVector p1 = p + 10*kCarTolerance*v; + + if (solid->Inside(p1) == kOutside) { + // + // We are missing an exit point near the current + // point. Add one. + // + curr = points.insert(next, G4GeomTestPoint( p, s, false ) ); + break; + } + + if (next != points.end()) { + // + // Check just before next point + // + s = next->GetDistance(); + p = p0 + s*v; + p1 = p - 10*kCarTolerance*v; + if (solid->Inside(p1) == kOutside) { + // + // We are missing an exit point before the next + // point. Add one. + // + curr = points.insert(next, G4GeomTestPoint( p, s, false ) ); + break; + } + } + + // + // Oh oh. Hanging entering point. Delete and complain. + // + logger->SolidProblem( solid, "Spurious entering intersection point", p ); + curr = points.erase(curr); + } + + curr = next + 1; + } while( curr != points.end() ); + + // + // Double check + // + if (points.size()&1) + logger->SolidProblem( solid, + "Solid has odd number of intersection points", p0 ); + + return; +} + + +// +// Find intersections either in front or behind the point +// +void G4GeomTestSegment::FindSomePoints( G4GeomTestLogger *logger, + G4bool forward ) +{ + G4double sign = forward ? +1 : -1; + + G4ThreeVector p(p0); + G4ThreeVector vSearch(sign*v); + G4double s(0); + G4bool entering; + + // + // Look for nearest intersection point in the specified + // direction and return if there isn't one + // + G4double dist; + switch(solid->Inside(p)) { + case kInside: + dist = solid->DistanceToOut(p,vSearch); + if (dist >= kInfinity) { + logger->SolidProblem( solid, + "DistanceToOut(p,v) = kInfinity for point inside", p ); + return; + } + s += sign*dist; + entering = false; + break; + case kOutside: + dist = solid->DistanceToIn(p,vSearch); + if (dist >= kInfinity) return; + s += sign*dist; + entering = true; + break; + case kSurface: + entering = (v.dot(solid->SurfaceNormal(p)) > 0); + break; + default: + logger->SolidProblem( solid, + "Inside returns illegal enumerated value", p ); + return; + } + + // + // Loop + // + // nzero = the number of consequtive zeros + // + G4int nzero=0; + + for(;;) { + // + // Locate point + // + p = p0 + s*v; + + // + // Record point + // + points.push_back( G4GeomTestPoint( p, s, entering==forward ) ); + + if (nzero > 2) { + // + // Oops. Infinite loop. Probably a geometry bug. + // We can give the solid a little help with a push + // + G4double push = 1E-6; + s += sign*push; + for(;;) { + p = p0 + s*v; + EInside inside = solid->Inside(p); + if (inside == kInside) { + entering = false; + break; + } + else if (inside == kOutside) { + entering = true; + break; + } + + push = 2*push; + if (push > 0.1) { + logger->SolidProblem( solid, + "Push fails to fix geometry inconsistency", p ); + return; + } + s += sign*push; + } + } + + // + // Find next intersection + // + G4double dist; + if (entering) { + dist = solid->DistanceToOut(p,vSearch); + if (dist >= kInfinity) { + logger->SolidProblem( solid, + "DistanceToOut(p,v) = kInfinity for point inside", p ); + return; + } + entering = false; + } + else { + dist = solid->DistanceToIn(p,vSearch); + if (dist >= kInfinity) return; + entering = true; + } + + // + // Update s + // + if (dist <= 0) { + nzero++; + } + else { + nzero=0; + s += sign*dist; + } + } +} diff --git a/source/geometry/verification/src/G4GeomTestStreamLogger.cc b/source/geometry/verification/src/G4GeomTestStreamLogger.cc new file mode 100644 index 0000000000..457b50aa8a --- /dev/null +++ b/source/geometry/verification/src/G4GeomTestStreamLogger.cc @@ -0,0 +1,285 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestStreamLogger.cc,v 1.4 2001/10/24 22:09:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeomTestStreamLogger +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#include "G4GeomTestStreamLogger.hh" +#include "G4VSolid.hh" +#include "G4VPhysicalVolume.hh" +#include "g4std/iomanip" + +#include "G4GeomTestOverlapList.hh" +#include "G4GeomTestOvershootList.hh" + +// +// Constructor +// +G4GeomTestStreamLogger::G4GeomTestStreamLogger( G4std::ostream &o, + G4int theMaxPointsPerError ) + : out(o), maxPointsPerError(theMaxPointsPerError) +{;} + + +// +// ::PrintPos +// +// Utility class for printing a 3 vector position +// +void G4GeomTestStreamLogger::PrintPos::Print( G4std::ostream &o ) const +{ + o << G4std::setprecision(6) << G4std::setw(14) << p.x()/cm; + o << G4std::setprecision(6) << G4std::setw(14) << p.y()/cm; + o << G4std::setprecision(6) << G4std::setw(14) << p.z()/cm; + if (unit) o << " cm"; +} + +G4std::ostream &operator<<( G4std::ostream &o, + const G4GeomTestStreamLogger::PrintPos &p ) +{ + p.Print(o); + return o; +} + +// +// ::VolumeNameAndCopy +// +// Utility class for printing a volume's name and copy number +// +void +G4GeomTestStreamLogger::VolumeNameAndCopy::Print( G4std::ostream &o ) const +{ + o << volume->GetName() << "[" << volume->GetCopyNo() << "]"; +} + +G4std::ostream &operator<<( G4std::ostream &o, + const G4GeomTestStreamLogger::VolumeNameAndCopy &p ) +{ + p.Print(o); + return o; +} + + +// +// SolidProblem +// +void G4GeomTestStreamLogger::SolidProblem( const G4VSolid *solid, + const G4String &message, + const G4ThreeVector &point ) +{ + out << "GeomTest Error: SolidProblem\n" + << " " << message << "\n" + << " Solid name = " << solid->GetName() << "\n" + << " Local position = " << PrintPos(point) << G4std::endl; +} + + +// +// NoProblem +// +void G4GeomTestStreamLogger::NoProblem( const G4String &message ) +{ + out << message << G4std::endl; +} + + +// +// OverlappingDaughters +// +void +G4GeomTestStreamLogger::OverlappingDaughters(const G4GeomTestOverlapList *list) +{ + G4int n = list->NumError(); + if (n <= 0) return; + + out << "GeomTest Error: Overlapping daughter volumes\n" + << " The volumes " << VolumeNameAndCopy(list->GetDaughter1()) + << " and " << VolumeNameAndCopy(list->GetDaughter2()) << ",\n" + << " both daughters of volume " << VolumeNameAndCopy(list->GetMother()) + << ",\n" + << " appear to overlap at the following " << (n>1 ? "points" : "point") + << " in global coordinates:"; + + G4int nInterval, nStop; + + if (n <= maxPointsPerError) { + out << "\n"; + nInterval = 1; + nStop = n; + } + else { + out << " (list truncated)\n"; + nInterval = n/maxPointsPerError; + nStop = maxPointsPerError*nInterval; + } + + G4int i; + G4ThreeVector s1, s2; + + PrintSegmentListHeader(); + for(i=0;iGetGlobalPoints( i, s1, s2 ); + PrintSegmentListElement( s1, s2 ); + } + + out << " Which in the mother coordinate system " << IsAre(n) << ":\n"; + + PrintSegmentListHeader(); + for(i=0;iGetMotherPoints( i, s1, s2 ); + PrintSegmentListElement( s1, s2 ); + } + + out << " Which in the coordinate system of " + << VolumeNameAndCopy(list->GetDaughter1()) << " " << IsAre(n) << ":\n"; + + PrintSegmentListHeader(); + for(i=0;iGetDaught1Points( i, s1, s2 ); + PrintSegmentListElement( s1, s2 ); + } + + out << " Which in the coordinate system of " + << VolumeNameAndCopy(list->GetDaughter2()) << " " << IsAre(n) << ":\n"; + + PrintSegmentListHeader(); + for(i=0;iGetDaught2Points( i, s1, s2 ); + PrintSegmentListElement( s1, s2 ); + } + + out << G4std::endl; +} + + +// +// OvershootingDaughter +// +void G4GeomTestStreamLogger:: +OvershootingDaughter( const G4GeomTestOvershootList *list ) +{ + G4int n = list->NumError(); + if (n <= 0) return; + + out << "GeomTest Error: Overshooting daughter volume\n" + << " The volume " << VolumeNameAndCopy(list->GetDaughter()) + << " appears to extend outside the mother volume " + << VolumeNameAndCopy(list->GetMother()) << "\n" + << " at the following " << (n>1 ? "points" : "point") + << " in global coordinates:"; + + + G4int nInterval, nStop; + + if (n <= maxPointsPerError) { + out << "\n"; + nInterval = 1; + nStop = n; + } + else { + out << " (list truncated)\n"; + nInterval = n/maxPointsPerError; + nStop = maxPointsPerError*nInterval; + } + + G4int i; + G4ThreeVector s1, s2; + + PrintSegmentListHeader(); + for(i=0;iGetGlobalPoints( i, s1, s2 ); + PrintSegmentListElement( s1, s2 ); + } + + out << " Which in the mother coordinate system " << IsAre(n) << ":\n"; + + PrintSegmentListHeader(); + for(i=0;iGetMotherPoints( i, s1, s2 ); + PrintSegmentListElement( s1, s2 ); + } + + out << " Which in the coordinate system of " + << VolumeNameAndCopy(list->GetDaughter()) << " " << IsAre(n) << ":\n"; + + PrintSegmentListHeader(); + for(i=0;iGetDaughtPoints( i, s1, s2 ); + PrintSegmentListElement( s1, s2 ); + } + + out << G4std::endl; +} + + + +// +// PrintSegmentListHeader (protected) +// +// Print out a header for a segment list +// +void G4GeomTestStreamLogger::PrintSegmentListHeader() +{ + static const char *header = + " length (cm) ---------- start position (cm) ----------- ----------- end position (cm) ------------\n"; + // .............| .............|.............|.............| .............|.............|.............| + // 1234 1234 123 + + out << header; +} + + +// +// PrintSegmentListElement (protected) +// +// Print out one segment value +// +void G4GeomTestStreamLogger::PrintSegmentListElement( const G4ThreeVector &s1, + const G4ThreeVector &s2 ) +{ + out << " " << G4std::setprecision(6) << G4std::setw(14) + << (s1-s2).mag()/cm + << " " << PrintPos(s1,false) << " " << PrintPos(s2,false) << "\n"; +} + + +// +// IsAre (protected) +// +// Return a pointer to the string "is" if the argument +// is equal to 1, otherwise return a pointer to "are" +// +const char *G4GeomTestStreamLogger::IsAre( G4int n ) +{ + const char *is = "is"; + const char *are = "are"; + + return n > 1 ? are : is; +} diff --git a/source/geometry/verification/src/G4GeomTestVolPoint.cc b/source/geometry/verification/src/G4GeomTestVolPoint.cc new file mode 100644 index 0000000000..1a3e8134fa --- /dev/null +++ b/source/geometry/verification/src/G4GeomTestVolPoint.cc @@ -0,0 +1,105 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestVolPoint.cc,v 1.1 2001/10/17 13:00:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeomTestVolPoint +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#include "G4GeomTestVolPoint.hh" + +// +// Constructor (specific) +// +G4GeomTestVolPoint::G4GeomTestVolPoint( const G4ThreeVector &thePoint, + G4double theS, + G4bool isEntering, + G4int theDaughterIndex ) + : G4GeomTestPoint( thePoint, theS, isEntering ), + daughterIndex(theDaughterIndex) +{;} + + +// +// Constructor (from base) +// +G4GeomTestVolPoint::G4GeomTestVolPoint( const G4GeomTestPoint &base, + G4int theDaughterIndex ) + : G4GeomTestPoint( base ), daughterIndex(theDaughterIndex) +{;} + + +// +// Constructor (from base, with coordinate transformation) +// +G4GeomTestVolPoint::G4GeomTestVolPoint( const G4GeomTestPoint &base, + G4int theDaughterIndex, + const G4ThreeVector &translation, + const G4RotationMatrix *rotation ) + : G4GeomTestPoint( base ), daughterIndex(theDaughterIndex) +{ + // + // Rotate point + // + if (rotation) + p = rotation->inverse()*p - translation; + else + p = p - translation; +} + + +// +// Constructor (copy) +// +G4GeomTestVolPoint::G4GeomTestVolPoint( const G4GeomTestVolPoint &other ) + : G4GeomTestPoint( other ), daughterIndex(other.daughterIndex) +{;} + + +// +// Constructor (default) +// +G4GeomTestVolPoint::G4GeomTestVolPoint() + : daughterIndex(-1) +{;} + + + +// +// Destructor +// +G4GeomTestVolPoint::~G4GeomTestVolPoint() {;} + + +// +// Volume accessor +// +G4int G4GeomTestVolPoint::GetDaughterIndex() const +{ + return daughterIndex; +} diff --git a/source/geometry/verification/src/G4GeomTestVolume.cc b/source/geometry/verification/src/G4GeomTestVolume.cc new file mode 100644 index 0000000000..302aedc621 --- /dev/null +++ b/source/geometry/verification/src/G4GeomTestVolume.cc @@ -0,0 +1,542 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeomTestVolume.cc,v 1.4 2001/10/24 22:09:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeomTestVolume +// +// Author: D.C.Williams, UCSC (davidw@scipp.ucsc.edu) + +#include "G4GeomTestVolume.hh" + +#include "G4GeomTestLogger.hh" +#include "G4GeomTestVolPoint.hh" +#include "G4GeomTestSegment.hh" + +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" +#include "G4VSolid.hh" + +#include "g4std/vector" +#include "g4std/set" +#include "g4std/algorithm" +#include "g4std/iomanip" + +// +// Constructor +// +G4GeomTestVolume::G4GeomTestVolume( const G4VPhysicalVolume *theTarget, + G4GeomTestLogger *theLogger, + G4double theTolerance ) + : target(theTarget), + logger(theLogger), + tolerance(theTolerance), + extent(theTarget->GetLogicalVolume()->GetSolid()->GetExtent()) +{;} + + +// +// Destructor +// +G4GeomTestVolume::~G4GeomTestVolume() {;} + +// +// Get error tolerance +// +G4double G4GeomTestVolume::GetTolerance() const +{ + return tolerance; +} + +// +// Set error tolerance +// +void G4GeomTestVolume::SetTolerance(G4double val) +{ + tolerance = val; +} + +// +// TestCartGridXYZ +// +void G4GeomTestVolume::TestCartGridXYZ( G4int nx, G4int ny, G4int nz ) +{ + TestCartGridX( ny, nz ); + TestCartGridY( nz, nx ); + TestCartGridZ( nx, ny ); +} + + +// +// TestCartGridX +// +void G4GeomTestVolume::TestCartGridX( G4int ny, G4int nz ) +{ + TestCartGrid( G4ThreeVector(0,1,0), G4ThreeVector(0,0,1), + G4ThreeVector(1,0,0), ny, nz ); +} + + +// +// TestCartGridY +// +void G4GeomTestVolume::TestCartGridY( G4int nz, G4int nx ) +{ + TestCartGrid( G4ThreeVector(0,0,1), G4ThreeVector(1,0,0), + G4ThreeVector(0,1,0), nz, nx ); +} + + +// +// TestCartGridZ +// +void G4GeomTestVolume::TestCartGridZ( G4int nx, G4int ny ) +{ + TestCartGrid( G4ThreeVector(1,0,0), G4ThreeVector(0,1,0), + G4ThreeVector(0,0,1), nx, ny ); +} + + +// +// TestRecursiveCartGrid +// +void G4GeomTestVolume::TestRecursiveCartGrid( G4int nx, G4int ny, G4int nz ) +{ + // + // As long as we aren't a replica, test ourselves + // + if (!target->IsReplicated()) { + TestCartGridXYZ( nx, ny, nz ); + ReportErrors(); + } + + // + // Loop over unique daughters + // + G4std::set tested; + + const G4LogicalVolume *logical = target->GetLogicalVolume(); + G4int nDaughter = logical->GetNoDaughters(); + G4int iDaughter; + for( iDaughter=0; iDaughterGetDaughter(iDaughter); + const G4LogicalVolume *daughterLogical = + daughter->GetLogicalVolume(); + + // + // Skip empty daughters + // + if (daughterLogical->GetNoDaughters() == 0) continue; + + // + // Tested already? + // + G4std::pair::iterator,G4bool> + there = tested.insert(daughterLogical); + if (!there.second) continue; + + // + // Recurse + // + G4GeomTestVolume vTest( daughter, logger ); + vTest.TestRecursiveCartGrid(nx,ny,nz); + } +} + + +// +// TestCylinder +// +void G4GeomTestVolume::TestCylinder( G4int nPhi, G4int nZ, G4int nRho, + G4double fracZ, G4double fracRho, + G4bool usePhi ) +{ + // + // Get size of our volume + // + G4double xMax = G4std::max(extent.GetXmax(),-extent.GetXmin()); + G4double yMax = G4std::max(extent.GetYmax(),-extent.GetYmin()); + G4double rhoMax = sqrt(xMax*xMax + yMax*yMax); + + G4double zMax = extent.GetZmax(); + G4double zMin = extent.GetZmin(); + G4double zHalfLength = 0.5*(zMax-zMin); + G4double z0 = 0.5*(zMax+zMin); + + // + // Loop over phi + // + G4double deltaPhi = 2*pi/G4double(nPhi); + + G4double phi = 0; + G4int iPhi = nPhi; + if ((iPhi&1) == 0) iPhi++; // Also use odd number phi slices + do { + G4double cosPhi = cos(phi); + G4double sinPhi = sin(phi); + + // + // Loop over rho + // + G4double rho = rhoMax; + G4int iRho = nRho; + do { + G4ThreeVector p(rho*cosPhi,rho*sinPhi,0); + static G4ThreeVector v(0,0,1); + + TestOneLine( p, v ); + + if (usePhi) { + // + // Loop over z + // + G4ThreeVector v(sinPhi,-cosPhi,0); + + G4double zScale = 1.0; + G4int iZ=nZ; + do { + p.setZ( z0 + zScale*zHalfLength ); + TestOneLine(p,v); + p.setZ( z0 - zScale*zHalfLength ); + TestOneLine(p,v); + } while( zScale *= fracZ, --iZ ); + } + } while( rho *= fracRho, --iRho ); + + // + // Loop over z + // + G4ThreeVector p(0,0,0); + G4ThreeVector v(cosPhi,sinPhi,0); + + G4double zScale = 1.0; + G4int iZ=nZ; + do { + p.setZ( z0 + zScale*zHalfLength ); + + TestOneLine(p,v); + + p.setZ( z0 - zScale*zHalfLength ); + + TestOneLine(p,v); + } while( zScale *= fracZ, --iZ ); + + } while( phi += deltaPhi, --iPhi ); +} + + + +// +// TestCartGrid +// +void G4GeomTestVolume::TestCartGrid( const G4ThreeVector &theG1, + const G4ThreeVector &theG2, + const G4ThreeVector &theV, + G4int n1, G4int n2 ) +{ + if (n1 <= 0 || n2 <= 0) + G4Exception( "G4GeomTestVolume::TestCartGrid -- n1 and n2 must be >= 1" ); + + G4ThreeVector xMin( extent.GetXmin(), extent.GetYmin(), + extent.GetZmin() ); + G4ThreeVector xMax( extent.GetXmax(), extent.GetYmax(), + extent.GetZmax() ); + + G4ThreeVector g1(theG1.unit()); + G4ThreeVector g2(theG2.unit()); + G4ThreeVector v(theV.unit()); + + G4double gMin1 = g1.dot(xMin); + G4double gMax1 = g1.dot(xMax); + + G4double gMin2 = g2.dot(xMin); + G4double gMax2 = g2.dot(xMax); + + G4double delta1 = (gMax1-gMin1)/G4double(n1); + G4double delta2 = (gMax2-gMin2)/G4double(n2); + + G4int i1, i2; + + for(i1=0;i1<=n1;++i1) { + G4ThreeVector p1 = (gMin1 + G4double(i1)*delta1)*g1; + + for(i2=0;i2<=n2;++i2) { + G4ThreeVector p2 = (gMin2 + G4double(i2)*delta2)*g2; + + TestOneLine( p1+p2, v ); + } + } +} + + + +// +// TestOneLine +// +// Test geometry consistency along a single line +// +void G4GeomTestVolume::TestOneLine( const G4ThreeVector &p, + const G4ThreeVector &v ) +{ + // + // Keep track of intersection points + // + G4std::vector points; + + // + // Calculate intersections with the mother volume + // + G4GeomTestSegment targetSegment( target->GetLogicalVolume()->GetSolid(), + p, v, logger ); + + // + // Add them to our list + // + G4int n = targetSegment.GetNumberPoints(); + G4int i; + for(i=0;iGetLogicalVolume(); + G4int nDaughter = logical->GetNoDaughters(); + G4int iDaughter; + for( iDaughter=0; iDaughterGetDaughter(iDaughter); + + // + // Convert coordinates to daughter local coordinates + // + const G4RotationMatrix *rotation = daughter->GetFrameRotation(); + const G4ThreeVector &translation = daughter->GetFrameTranslation(); + + G4ThreeVector pLocal = translation + p; + G4ThreeVector vLocal = v; + + if (rotation) { + pLocal = (*rotation)*pLocal; + vLocal = (*rotation)*vLocal; + } + + // + // Find intersections + // + G4GeomTestSegment + daughterSegment( daughter->GetLogicalVolume()->GetSolid(), + pLocal, vLocal, logger ); + + // + // Add them to the list + // + G4int n = daughterSegment.GetNumberPoints(); + G4int i; + for(i=0;i checked( n, false ); + + for(i=0;i=n) { + // + // Unmatched? This shouldn't happen + // + logger->SolidProblem( logical->GetDaughter(iDaug)-> + GetLogicalVolume()->GetSolid(), + "Unmatched intersection point", + points[i].GetPosition() ); + continue; + } + + checked[j] = true; + + G4double jS = points[j].GetDistance(); + + // + // Otherwise, we could have a problem + // + G4int k = i; + while(++k::iterator overshoot = + overshoots.find(iDaug); + if (overshoot == overshoots.end()) { + G4std::pair::iterator,G4bool> + result = + overshoots.insert( G4std::pair + (iDaug,G4GeomTestOvershootList(target,iDaug)) ); + assert(result.second); + overshoot = result.first; + } + + if (kEntering) + (*overshoot).second.AddError( points[i].GetPosition(), + points[k].GetPosition() ); + else + (*overshoot).second.AddError( points[k].GetPosition(), + points[j].GetPosition() ); + } + else { + // + // Ignore small overlaps if they are within tolerance + // + if (kS-iS < tolerance && (!kEntering)) continue; + if (jS-kS < tolerance && kEntering ) continue; + + // + // We appear to overlap with another daughter + // + G4long key = iDaug < kDaug ? + (iDaug*nDaughter + kDaug) : (kDaug*nDaughter + iDaug); + + G4std::map::iterator overlap = + overlaps.find(key); + if (overlap == overlaps.end()) { + G4std::pair::iterator,G4bool> + result = + overlaps.insert( G4std::pair + (key,G4GeomTestOverlapList(target,iDaug,kDaug)) ); + assert(result.second); + overlap = result.first; + } + + if (points[k].Entering()) + (*overlap).second.AddError( points[k].GetPosition(), + points[j].GetPosition() ); + else + (*overlap).second.AddError( points[i].GetPosition(), + points[k].GetPosition() ); + } + } + } + +} + +// +// ReportErrors +// +void G4GeomTestVolume::ReportErrors() +{ + // + // Report overshoots + // + if (overshoots.empty()) + logger->NoProblem("GeomTest: no daughter volume extending outside mother detected."); + else { + G4std::map::iterator overshoot = + overshoots.begin(); + while( overshoot != overshoots.end() ) { + logger->OvershootingDaughter( &(*overshoot).second ); + ++overshoot; + } + } + + // + // Report overlaps + // + if (overlaps.empty()) + logger->NoProblem("GeomTest: no overlapping daughters detected."); + else { + G4std::map::iterator overlap = + overlaps.begin(); + while( overlap != overlaps.end() ) { + logger->OverlappingDaughters( &(*overlap).second ); + ++overlap; + } + } +} + + +// +// ClearErrors +// +void G4GeomTestVolume::ClearErrors() +{ + overshoots.clear(); + overlaps.clear(); +} diff --git a/source/geometry/volumes/GNUmakefile b/source/geometry/volumes/GNUmakefile index 854e115779..170e316b89 100644 --- a/source/geometry/volumes/GNUmakefile +++ b/source/geometry/volumes/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 1999/02/15 15:11:10 japost Exp $ +# $Id: GNUmakefile,v 1.4 2001/10/24 15:33:47 gcosmo Exp $ # -------------------------------------------------------------------- # GNUmakefile for geometry/volumes library. Gabriele Cosmo, 16/11/96. # -------------------------------------------------------------------- @@ -12,10 +12,12 @@ endif include $(G4INSTALL)/config/architecture.gmk CPPFLAGS += -I$(G4BASE)/graphics_reps/include \ + -I$(G4BASE)/intercoms/include \ -I$(G4BASE)/global/management/include \ -I$(G4BASE)/global/HEPRandom/include \ -I$(G4BASE)/global/HEPGeometry/include \ -I$(G4BASE)/geometry/magneticfield/include \ + -I$(G4BASE)/geometry/verification/include \ -I$(G4BASE)/geometry/management/include include $(G4INSTALL)/config/common.gmk @@ -23,7 +25,7 @@ include $(G4INSTALL)/config/common.gmk CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS)) CXXFLAGS_WITHOUT_O := $(filter-out +O% , $(CXXFLAGS_WITHOUT_O)) -ifeq ($(G4SYSTEM),SUN-CC) +ifeq ($(G4SYSTEM),SUN-CC4) $(G4TMP)/$(G4SYSTEM)/$(name)/G4VoxelNavigation.o: src/G4VoxelNavigation.cc $(CXX) $(CXXFLAGS_WITHOUT_O) $(CPPFLAGS) -c $(OUT_OBJ)$@ src/G4VoxelNavigation.cc endif diff --git a/source/geometry/volumes/History b/source/geometry/volumes/History index ef85223eea..bd6243bd9b 100644 --- a/source/geometry/volumes/History +++ b/source/geometry/volumes/History @@ -1,4 +1,4 @@ -$Id: History,v 1.48 2001/05/31 17:33:20 gcosmo Exp $ +$Id: History,v 1.63 2001/12/11 17:56:54 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,91 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Dec 11th, 2001 G. Cosmo - geomvol-V03-02-08 +- G4Navigator: + o Added kNormal and Copy Number to NewLevel (Navigation Level) for + Normal Navigation + Now all TouchableHistory objects should have a valid entry in ReplicaNumber: + - in the case of a placement volume it will be the copy number + - in replicated volumes it will be the replica number + o Commented out fix introduced in geomvol-V03-02-05. + +Dec 11th, 2001 J. Apostolakis - geomvol-V03-02-07 +- G4Navigator: + o Undoing the fix in geomvol-V03-02-05 -- because of problems in + several tests (mostly large N tests). + ----> Must resolve these !! <---- + +Dec 8th, 2001 J. Apostolakis - geomvol-V03-02-06 +- G4PropagatorInField: + o additional thresholds for No of steps, + get/Set methods + o Modified choice of subsequent step size in case of Zero step + - decrease quickly at first to try to ensure that the first/second + "re-steps" are enough in most cases. + - utilise addition threshold parameters (for # of steps) + to slow down the rate of decrease of the step size + for the 'difficult' cases which do not converse after + a few steps. + +Dec 6th, 2001 J. Apostolakis - geomvol-V03-02-05 +- G4Navigator: + Fix for Locate Global Point Within Volume: clear state + variables (that had erroneously been forgotten). + +Dec 6th, 2001 R. Chytracek - geomvol-V03-02-04 +- G4Navigator: + o Fixed mirroring of the input argument for global direction into + local variable in LocateGlobalPointAndSetup(). + o Cosmetics for the Software Reference Manual in .hh file. + +Dec 4th, 2001 J. Apostolakis - geomvol-V03-02-03 +- G4Navigator: + o Modified the interface + - creating a new ResetState method (that only reset state - not stack) + - adding a new optional argument to LocateGlobalPointAndSetup method + - adding direction argument to LGPAS w/ touchable history + o Modified the implementation + - to reset its state when touchable history is used to re-initialise it + - to use the direction in LocateGlobalPointAndSetup methods! +- G4PropagatorInField: + o Added use of new Largest Acceptable Step data member. + o Protected, in reseting of Proposed Step length, against + making it bigger in cases where several zero steps seen. + o Several debugging prints added. (only in G4Verbose, ...) + +Nov 28th, 2001 J. Apostolakis - geomvol-V03-02-02 +- Added GetCurrentFieldManager method to PropagatorInField +- Incorporates additions seen in "geomvol-V03-02-00a/b/c" + and in "geomvol-V03-02-01". +- This tag is required by the new tag "transport-V03-02-06" in Transportation. + +Oct 18th, 2001 J. Apostolakis - geomvol-V03-02-01 +- Added a new 'maximum' epsilon value in G4PropagatorInField, + as some ill-conditions appear to be due to large proposed relative errors. + NOTE: does NOT include changes in "geomvol-V03-02-00a/b/c". + +Nov 8th, 2001 G. Cosmo - geomvol-V03-02-00c +- Added handles for reference counting: G4GRSSolidHandle, G4GRSVolumeHandle, + G4TouchableHistoryHandle. +- Modified G4Navigator for reference counted touchables. Introduced new methods + CreateTouchableHistoryHandle() and LocateGlobalPointAndUpdateTouchableHandle(...). +- New unit tests testG4ParameterisedMaterial.cc and testG4TouchableHandle.cc. + +Nov 1st, 2001 G. Cosmo - geomvol-V03-02-00b +- G4GeometryMessenger.cc: fixed definition of unit category for tolerance. + +Oct 24th, 2001 G. Cosmo - geomvol-V03-02-00a +- Moved G4GeomTestMessenger from geometry/verification to geometry/volumes. + Renamed to G4GeometryMessenger. +- GeometryMessenger: renamed directory to geometry/test. Added directory + geometry/navigator. Added geometry/navigator/reset command + for resetting navigation history and position. +- G4PropagatorInField.icc: fixed warning on Linux-g++.... + +Oct 18th, 2001 J. Apostolakis - geomvol-V03-02-00 +- Corrected the initialisation of fEpsilonMin in G4PropagatorInField + constructor, which was forgotten. + May 31st, 2001 G. Cosmo - geomvol-V03-01-08 - Fixed usage of 'fabs', which belongs to global scope, NOT in std namespace. Detected by compilation error on DEC ISO/ANSI setup. diff --git a/source/geometry/volumes/include/G4AuxiliaryNavServices.hh b/source/geometry/volumes/include/G4AuxiliaryNavServices.hh index c501be32cb..7c0d62f9a2 100644 --- a/source/geometry/volumes/include/G4AuxiliaryNavServices.hh +++ b/source/geometry/volumes/include/G4AuxiliaryNavServices.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AuxiliaryNavServices.hh,v 1.3.4.1 2001/06/28 19:09:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AuxiliaryNavServices.hh,v 1.4 2001/07/11 10:00:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4NormalNavigation diff --git a/source/geometry/volumes/include/G4AuxiliaryNavServices.icc b/source/geometry/volumes/include/G4AuxiliaryNavServices.icc index cabe8dc819..7927c36a1f 100644 --- a/source/geometry/volumes/include/G4AuxiliaryNavServices.icc +++ b/source/geometry/volumes/include/G4AuxiliaryNavServices.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AuxiliaryNavServices.icc,v 1.3.2.1 2001/06/28 19:09:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AuxiliaryNavServices.icc,v 1.4 2001/07/11 10:00:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4AuxiliaryNavServices Inline implementation diff --git a/source/geometry/volumes/include/G4BlockingList.hh b/source/geometry/volumes/include/G4BlockingList.hh index dd64401f3c..5f9f71b4a7 100644 --- a/source/geometry/volumes/include/G4BlockingList.hh +++ b/source/geometry/volumes/include/G4BlockingList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BlockingList.hh,v 1.5.2.1 2001/06/28 19:09:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BlockingList.hh,v 1.6 2001/07/11 10:00:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4BlockingList // diff --git a/source/geometry/volumes/include/G4BlockingList.icc b/source/geometry/volumes/include/G4BlockingList.icc index 90e6f73b50..c0d16f745e 100644 --- a/source/geometry/volumes/include/G4BlockingList.icc +++ b/source/geometry/volumes/include/G4BlockingList.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BlockingList.icc,v 1.4.2.1 2001/06/28 19:09:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BlockingList.icc,v 1.5 2001/07/11 10:00:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4BlockingList Inlined Implementation diff --git a/source/geometry/volumes/include/G4GRSSolid.hh b/source/geometry/volumes/include/G4GRSSolid.hh index 235ca18f6d..961440407f 100644 --- a/source/geometry/volumes/include/G4GRSSolid.hh +++ b/source/geometry/volumes/include/G4GRSSolid.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GRSSolid.hh,v 1.4.4.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GRSSolid.hh,v 1.5 2001/07/11 10:00:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4GRSSolid diff --git a/source/geometry/volumes/include/G4GRSSolid.icc b/source/geometry/volumes/include/G4GRSSolid.icc index 6bed7bd18b..869a5f51e9 100644 --- a/source/geometry/volumes/include/G4GRSSolid.icc +++ b/source/geometry/volumes/include/G4GRSSolid.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GRSSolid.icc,v 1.4.4.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GRSSolid.icc,v 1.5 2001/07/11 10:00:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4GRSSolid inline implementation diff --git a/source/processes/electromagnetic/lowenergy/src/G4SecondLevel.cc b/source/geometry/volumes/include/G4GRSSolidHandle.hh similarity index 65% rename from source/processes/electromagnetic/lowenergy/src/G4SecondLevel.cc rename to source/geometry/volumes/include/G4GRSSolidHandle.hh index 9f24e1363f..fd0c1bbce9 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4SecondLevel.cc +++ b/source/geometry/volumes/include/G4GRSSolidHandle.hh @@ -21,42 +21,31 @@ // ******************************************************************** // // -// ------------------------------------------------------------------- -// GEANT 4 class file -// -// CERN, Geneva, Switzerland -// -// File name: G4SecondLevel.hh -// -// Author: Alessandra Forti (Alessandra.Forti@cern.ch) +// $Id: G4GRSSolidHandle.hh,v 1.3 2001/11/06 17:08:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// Creation date: 1 Giugno 1999 +// Class G4TouchableHandle // -// Modifications: 24.04.01 V.Ivanchenko remove RogueWave -// -// ------------------------------------------------------------------- +// Class description: +// +// Type providing reference counting mechanism for any kind of touchable +// objects. +// The basic rule for the use of this type is that this handle must always +// be exchanged by reference never dinamically allocated (i.e. never +// instantiated using 'new'). +// +// For more details see G4ReferenceCountedHandle. -#include "G4SecondLevel.hh" +// Author: Radovan Chytracek, CERN (Radovan.Chytracek@cern.ch) +// Version: 1.0 +// Date: March 2001 +// ---------------------------------------------------------------------- +#ifndef _G4GRSSOLIDHANDLE_H_ +#define _G4GRSSOLIDHANDLE_H_ 1 +#include "G4GRSSolid.hh" +#include "G4ReferenceCountedHandle.hh" -G4SecondLevel::~G4SecondLevel(){ - - // this->clearAndDestroy(); - this->clear(); -} - -G4bool G4SecondLevel::operator == (const G4SecondLevel& input) const{ - - // return( this->entries() == input.entries()); - return( this->size() == input.size()); - -} - -G4bool G4SecondLevel::operator < (const G4SecondLevel& input) const{ - - // return(this->entries() < input.entries()); - return(this->size() < input.size()); - -} - +typedef G4ReferenceCountedHandle G4GRSSolidHandle; +#endif // _G4GRSSOLIDHANDLE_H_ diff --git a/source/geometry/volumes/include/G4GRSVolume.hh b/source/geometry/volumes/include/G4GRSVolume.hh index 8245a3a010..f134f955dd 100644 --- a/source/geometry/volumes/include/G4GRSVolume.hh +++ b/source/geometry/volumes/include/G4GRSVolume.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GRSVolume.hh,v 1.4.4.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GRSVolume.hh,v 1.5 2001/07/11 10:00:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4GRSVolume diff --git a/source/geometry/volumes/include/G4GRSVolume.icc b/source/geometry/volumes/include/G4GRSVolume.icc index c6aac4dc79..ef2c7963b5 100644 --- a/source/geometry/volumes/include/G4GRSVolume.icc +++ b/source/geometry/volumes/include/G4GRSVolume.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GRSVolume.icc,v 1.5.4.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GRSVolume.icc,v 1.6 2001/07/11 10:00:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4GRSVolume inline implementation diff --git a/source/geometry/volumes/include/G4GRSVolumeHandle.hh b/source/geometry/volumes/include/G4GRSVolumeHandle.hh new file mode 100644 index 0000000000..ffe63dfadb --- /dev/null +++ b/source/geometry/volumes/include/G4GRSVolumeHandle.hh @@ -0,0 +1,51 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GRSVolumeHandle.hh,v 1.3 2001/11/06 17:08:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Class G4TouchableHandle +// +// Class description: +// +// Type providing reference counting mechanism for any kind of touchable +// objects. +// The basic rule for the use of this type is that this handle must always +// be exchanged by reference never dinamically allocated (i.e. never +// instantiated using 'new'). +// +// For more details see G4ReferenceCountedHandle. + +// Author: Radovan Chytracek, CERN (Radovan.Chytracek@cern.ch) +// Version: 1.0 +// Date: March 2001 +// ---------------------------------------------------------------------- +#ifndef _G4GRSVOLUMEHANDLE_H_ +#define _G4GRSVOLUMEHANDLE_H_ 1 + +#include "G4GRSVolume.hh" +#include "G4ReferenceCountedHandle.hh" + +typedef G4ReferenceCountedHandle G4GRSVolumeHandle; + +#endif // _G4GRSVOLUMEHANDLE_H_ diff --git a/source/geometry/volumes/include/G4GeometryMessenger.hh b/source/geometry/volumes/include/G4GeometryMessenger.hh new file mode 100644 index 0000000000..d4f46d90e6 --- /dev/null +++ b/source/geometry/volumes/include/G4GeometryMessenger.hh @@ -0,0 +1,90 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeometryMessenger.hh,v 1.2 2001/10/24 18:10:38 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class header file +// +// G4GeometryMessenger +// +// Class description: +// +// A messenger defining commands for debugging, verifying +// and controlling the detector geometry and navigation. + +// Author: G.Cosmo, CERN. + +#ifndef G4GeometryMessenger_hh +#define G4GeometryMessenger_hh + +#include "globals.hh" +#include "G4UImessenger.hh" +#include "G4ThreeVector.hh" + +class G4UIdirectory; +class G4UIcommand; +class G4UIcmdWith3VectorAndUnit; +class G4UIcmdWith3Vector; +class G4UIcmdWithoutParameter; +class G4UIcmdWithABool; +class G4UIcmdWithADoubleAndUnit; +class G4TransportationManager; + +class G4GeometryMessenger : public G4UImessenger +{ + public: // with description + + G4GeometryMessenger(G4TransportationManager* tman); + ~G4GeometryMessenger(); + // Constructor and destructor + + void SetNewValue( G4UIcommand* command, G4String newValues ); + G4String GetCurrentValue( G4UIcommand* command ); + + protected: + + void ResetNavigator(); + void RunTest(); + + G4UIdirectory *geodir, *navdir, *testdir; + G4UIcmdWith3VectorAndUnit *posCmd, *dirCmd; + G4UIcmdWithoutParameter *runCmd, *resCmd; + G4UIcmdWithABool *addCmd; + G4UIcmdWithADoubleAndUnit *tolCmd; + + private: + + G4bool geometryOpened; + G4ThreeVector x, p; + G4bool extra, newtol; + G4double tol; + + private: + + G4TransportationManager* tmanager; + +}; + +#endif diff --git a/source/geometry/volumes/include/G4LogicalBorderSurface.hh b/source/geometry/volumes/include/G4LogicalBorderSurface.hh index 55f9e5e268..7987efc61a 100644 --- a/source/geometry/volumes/include/G4LogicalBorderSurface.hh +++ b/source/geometry/volumes/include/G4LogicalBorderSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalBorderSurface.hh,v 1.6.2.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalBorderSurface.hh,v 1.7 2001/07/11 10:00:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // class G4LogicalBorderSurface diff --git a/source/geometry/volumes/include/G4LogicalBorderSurface.icc b/source/geometry/volumes/include/G4LogicalBorderSurface.icc index b4599aeb00..96489f5ffd 100644 --- a/source/geometry/volumes/include/G4LogicalBorderSurface.icc +++ b/source/geometry/volumes/include/G4LogicalBorderSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalBorderSurface.icc,v 1.3.2.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalBorderSurface.icc,v 1.4 2001/07/11 10:00:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4LogicalBorderSurface inline implementation diff --git a/source/geometry/volumes/include/G4LogicalSkinSurface.hh b/source/geometry/volumes/include/G4LogicalSkinSurface.hh index e0ab191560..794af82a78 100644 --- a/source/geometry/volumes/include/G4LogicalSkinSurface.hh +++ b/source/geometry/volumes/include/G4LogicalSkinSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalSkinSurface.hh,v 1.6.2.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalSkinSurface.hh,v 1.7 2001/07/11 10:00:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // class G4LogicalSkinSurface diff --git a/source/geometry/volumes/include/G4LogicalSkinSurface.icc b/source/geometry/volumes/include/G4LogicalSkinSurface.icc index 55dd8795db..e59951a096 100644 --- a/source/geometry/volumes/include/G4LogicalSkinSurface.icc +++ b/source/geometry/volumes/include/G4LogicalSkinSurface.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalSkinSurface.icc,v 1.3.2.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalSkinSurface.icc,v 1.4 2001/07/11 10:00:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4LogicalSkinSurface inline implementation diff --git a/source/geometry/volumes/include/G4NavigationHistory.hh b/source/geometry/volumes/include/G4NavigationHistory.hh index 657d51a33d..18040d87e3 100644 --- a/source/geometry/volumes/include/G4NavigationHistory.hh +++ b/source/geometry/volumes/include/G4NavigationHistory.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NavigationHistory.hh,v 1.8.2.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NavigationHistory.hh,v 1.9 2001/07/11 10:00:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4NavigationHistory // diff --git a/source/geometry/volumes/include/G4NavigationHistory.icc b/source/geometry/volumes/include/G4NavigationHistory.icc index d1556ff7ca..c4920711dc 100644 --- a/source/geometry/volumes/include/G4NavigationHistory.icc +++ b/source/geometry/volumes/include/G4NavigationHistory.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NavigationHistory.icc,v 1.4.2.1 2001/06/28 19:09:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NavigationHistory.icc,v 1.5 2001/07/11 10:00:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4NavigationHistory Inline implementation diff --git a/source/geometry/volumes/include/G4NavigationLevel.hh b/source/geometry/volumes/include/G4NavigationLevel.hh index 0d778a41be..8af8977ce8 100644 --- a/source/geometry/volumes/include/G4NavigationLevel.hh +++ b/source/geometry/volumes/include/G4NavigationLevel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NavigationLevel.hh,v 1.12.4.1 2001/06/28 19:09:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NavigationLevel.hh,v 1.13 2001/07/11 10:00:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4NavigationLevel // diff --git a/source/geometry/volumes/include/G4NavigationLevel.icc b/source/geometry/volumes/include/G4NavigationLevel.icc index 7f5b52179f..96276f5d35 100644 --- a/source/geometry/volumes/include/G4NavigationLevel.icc +++ b/source/geometry/volumes/include/G4NavigationLevel.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NavigationLevel.icc,v 1.10.4.1 2001/06/28 19:09:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NavigationLevel.icc,v 1.11 2001/07/11 10:00:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // 30.09.97 J.Apostolakis Initial version. // diff --git a/source/geometry/volumes/include/G4NavigationLevelRep.hh b/source/geometry/volumes/include/G4NavigationLevelRep.hh index 225bea656d..c31c830cc3 100644 --- a/source/geometry/volumes/include/G4NavigationLevelRep.hh +++ b/source/geometry/volumes/include/G4NavigationLevelRep.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NavigationLevelRep.hh,v 1.5.4.1 2001/06/28 19:09:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NavigationLevelRep.hh,v 1.6 2001/07/11 10:00:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4NavigationLevelRep // diff --git a/source/geometry/volumes/include/G4NavigationLevelRep.icc b/source/geometry/volumes/include/G4NavigationLevelRep.icc index 275b0175c0..26f74ac5f7 100644 --- a/source/geometry/volumes/include/G4NavigationLevelRep.icc +++ b/source/geometry/volumes/include/G4NavigationLevelRep.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NavigationLevelRep.icc,v 1.4.4.1 2001/06/28 19:09:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NavigationLevelRep.icc,v 1.5 2001/07/11 10:00:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // 1 October 1997 J.Apostolakis Initial version. // diff --git a/source/geometry/volumes/include/G4Navigator.hh b/source/geometry/volumes/include/G4Navigator.hh index 489f8f8781..36d8943862 100644 --- a/source/geometry/volumes/include/G4Navigator.hh +++ b/source/geometry/volumes/include/G4Navigator.hh @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4Navigator.hh,v 1.6.4.1 2001/06/28 19:09:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Navigator.hh,v 1.15 2001/12/06 09:35:34 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// // -// // class G4Navigator // // Class description: @@ -100,7 +100,8 @@ #include "G4GRSVolume.hh" #include "G4GRSSolid.hh" -#include "G4TouchableHistory.hh" +#include "G4TouchableHandle.hh" +#include "G4TouchableHistoryHandle.hh" #include "G4NavigationHistory.hh" #include "G4NormalNavigation.hh" @@ -139,12 +140,14 @@ class G4Navigator // is returned together with the computed isotropic safety // distance. Geometry must be closed. - G4VPhysicalVolume* LocateGlobalPointAndSetup(const G4ThreeVector &p, - const G4TouchableHistory &h); + inline G4VPhysicalVolume* LocateGlobalPointAndSetup(const G4ThreeVector &point, + const G4ThreeVector &direction, + const G4TouchableHistory &h); G4VPhysicalVolume* LocateGlobalPointAndSetup(const G4ThreeVector& point, - const G4ThreeVector* direction=0, - const G4bool pRelativeSearch=true); + const G4ThreeVector* direction=0, + const G4bool pRelativeSearch=true, + const G4bool ignoreDirection=true); // Search the geometrical hierarchy for the volumes deepest in the hierarchy // containing the point in the global coordinate space. Two main cases are: // i) If pRelativeSearch=false it makes use of no previous/state @@ -154,10 +157,12 @@ class G4Navigator // hierarchy at the location of the last located point, or the endpoint of // the previous Step if SetGeometricallyLimitedStep() has been called // immediately before. - // The direction is used (to check if a volume is entered) only if - // the Navigator has determined that it is on an edge shared by two or more - // volumes. (This is state information.) - // The geometry must be closed. + // The direction is used (to check if a volume is entered) if either + // - the argument ignoreDirection is false, or + // - the Navigator has determined that it is on an edge shared by two or more + // volumes. (This is state information.) + // + // Important Note: In order to call this the geometry MUST be closed. void LocateGlobalPointWithinVolume( const G4ThreeVector& position); // Notify the Navigator that a track has moved to the new Global point @@ -168,10 +173,10 @@ class G4Navigator // same volume as the previous position. Usually this can be guaranteed // only if the point is within safety. - inline void LocateGlobalPointAndUpdateTouchable( + void LocateGlobalPointAndUpdateTouchableHandle( const G4ThreeVector& position, const G4ThreeVector& direction, - G4VTouchable* touchableToUpdate, + G4TouchableHandle& oldTouchableToUpdate, const G4bool RelativeSearch =true); // First, search the geometrical hierarchy like the above method // LocateGlobalPointAndSetup(). Then use the volume found and its @@ -179,7 +184,16 @@ class G4Navigator inline void LocateGlobalPointAndUpdateTouchable( const G4ThreeVector& position, - G4VTouchable* touchableToUpdate, + const G4ThreeVector& direction, + G4VTouchable* touchableToUpdate, + const G4bool RelativeSearch =true); + // First, search the geometrical hierarchy like the above method + // LocateGlobalPointAndSetup(). Then use the volume found and its + // navigation history to update the touchable. + + inline void LocateGlobalPointAndUpdateTouchable( + const G4ThreeVector& position, + G4VTouchable* touchableToUpdate, const G4bool RelativeSearch =true); // Old version (missing direction). // Not recommended replace with newer version above. @@ -211,20 +225,23 @@ class G4Navigator // system of the volume that was found by LocalGlobalPointAndSetup. // The Local Coordinates of point in world coordinate system. - G4ThreeVector NetTranslation() const; - G4RotationMatrix NetRotation() const; + inline G4ThreeVector NetTranslation() const; + inline G4RotationMatrix NetRotation() const; // Compute+return the local->global translation/rotation of current volume. inline G4VPhysicalVolume* GetWorldVolume() const; // Return the current world (`topmost') volume. - void SetWorldVolume(G4VPhysicalVolume* pWorld); + inline void SetWorldVolume(G4VPhysicalVolume* pWorld); // Set the world (`topmost') volume. This must be positioned at // origin (0,0,0) and unrotated. - G4GRSVolume* CreateGRSVolume() const; - G4GRSSolid* CreateGRSSolid() const; - G4TouchableHistory* CreateTouchableHistory() const; + inline G4GRSVolume* CreateGRSVolume() const; + inline G4GRSSolid* CreateGRSSolid() const; + inline G4TouchableHistory* CreateTouchableHistory() const; + // `Touchable' creation methods: caller has deletion responsibility. + + G4TouchableHistoryHandle CreateTouchableHistoryHandle() const; // `Touchable' creation methods: caller has deletion responsibility. inline G4bool IsExitNormalValid(); @@ -251,7 +268,7 @@ class G4Navigator // This function takes full care about how to calculate this normal, // but if the surfaces are not convex it will return valid=false. - G4bool EnteredDaughterVolume(); + inline G4bool EnteredDaughterVolume(); // The purpose of this function is to inform the caller if the track is // entering a daughter volume while exiting from the current volume. // This method returns @@ -261,10 +278,8 @@ class G4Navigator // This function is not guaranteed to work if SetGeometricallyLimitedStep() // was not called when it should have been called. - // G4bool ExitedMotherVolume(); - - G4int GetVerboseLevel(); - void SetVerboseLevel(G4int level); + inline G4int GetVerboseLevel(); + inline void SetVerboseLevel(G4int level); // Get/Set Verbose(ness) level. // [if level>0 && G4VERBOSE, printout can occur] @@ -273,12 +288,13 @@ class G4Navigator // The level of detail is according to the verbosity. inline const G4AffineTransform& GetGlobalToLocalTransform() const; - const G4AffineTransform GetLocalToGlobalTransform() const; + inline const G4AffineTransform GetLocalToGlobalTransform() const; // Obtain the transformations Global/Local (and inverse). // Clients of these methods must copy the data if they need to keep it. protected: // with description + inline void ResetState(); inline void ResetStackAndState(); // Reset stack and minimum or navigator state machine necessary for reset // as needed by LocalGlobalPointAndSetup. diff --git a/source/geometry/volumes/include/G4Navigator.icc b/source/geometry/volumes/include/G4Navigator.icc index 572c4b620e..46d860265b 100644 --- a/source/geometry/volumes/include/G4Navigator.icc +++ b/source/geometry/volumes/include/G4Navigator.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Navigator.icc,v 1.3.4.1 2001/06/28 19:09:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Navigator.icc,v 1.8 2001/12/04 16:49:51 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4Navigator Inline implementation @@ -61,6 +61,26 @@ G4VPhysicalVolume* G4Navigator::GetWorldVolume() const return fTopPhysical; } +// Set the world (`topmost') volume +// +inline +void G4Navigator::SetWorldVolume(G4VPhysicalVolume* pWorld) +{ +// Setup the volume + pWorld->Setup(0); // No mother since world volume + if (!(pWorld->GetTranslation()==G4ThreeVector(0,0,0))) + { + G4Exception ("G4Navigator::SetWorldVolume - Must be centred on origin"); + } + const G4RotationMatrix* rm=pWorld->GetRotation(); + if (rm&&(!rm->isIdentity())) + { + G4Exception ("G4Navigator::SetWorldVolume - Must not be rotated"); + } + fTopPhysical=pWorld; + fHistory.SetFirstEntry(pWorld); +} + // Inform the navigator that the previous Step calculated // by the geometry was taken in its entirety // @@ -73,19 +93,35 @@ void G4Navigator::SetGeometricallyLimitedStep() // Reset stack and minimum of navigator state `machine' // inline -void G4Navigator::ResetStackAndState() +void G4Navigator::ResetState() { - fHistory.Reset(); - fWasLimitedByGeometry=false; fEntering=false; fExiting=false; + fLocatedOnEdge = false; fLastStepWasZero= false; + fEnteredDaughter = false; + fExitedMother = false; + + fValidExitNormal = false; + fExitNormal = G4ThreeVector(0,0,0); + fPreviousSftOrigin = G4ThreeVector(0,0,0); + fPreviousSafety = 0.0; + fBlockedPhysicalVolume=0; fBlockedReplicaNo=-1; } +// Reset stack and minimum of navigator state `machine' +// +inline +void G4Navigator::ResetStackAndState() +{ + fHistory.Reset(); + ResetState(); +} + inline EVolume G4Navigator::VolumeType(const G4VPhysicalVolume *pVol) const { @@ -165,6 +201,92 @@ const G4AffineTransform& G4Navigator::GetGlobalToLocalTransform() const return fHistory.GetTopTransform(); } +// Return global to local transformation +// +inline +const G4AffineTransform G4Navigator::GetLocalToGlobalTransform() const +{ + G4AffineTransform tempTransform; + tempTransform= fHistory.GetTopTransform().Inverse(); + return tempTransform; +} + +// Compute+return the local->global translation of current volume. +// +inline +G4ThreeVector G4Navigator::NetTranslation() const +{ + G4AffineTransform tf(fHistory.GetTopTransform().Inverse()); + return tf.NetTranslation(); +} + +// Compute+return the local->global rotation of current volume. +// +inline +G4RotationMatrix G4Navigator::NetRotation() const +{ + G4AffineTransform tf(fHistory.GetTopTransform().Inverse()); + return tf.NetRotation(); +} + +// `Touchable' creation method: caller has deletion responsibility. +// +inline +G4GRSVolume* G4Navigator::CreateGRSVolume() const +{ + G4AffineTransform tf(fHistory.GetTopTransform().Inverse()); + return new G4GRSVolume(fHistory.GetTopVolume(), + tf.NetRotation(), + tf.NetTranslation()); +} + +// `Touchable' creation method: caller has deletion responsibility. +// +inline +G4GRSSolid* G4Navigator::CreateGRSSolid() const +{ + G4AffineTransform tf(fHistory.GetTopTransform().Inverse()); + return new G4GRSSolid(fHistory.GetTopVolume()->GetLogicalVolume()->GetSolid(), + tf.NetRotation(), + tf.NetTranslation()); + +} + +// `Touchable' creation method: caller has deletion responsibility. +// +inline +G4TouchableHistory* G4Navigator::CreateTouchableHistory() const +{ + return new G4TouchableHistory(fHistory); +} + +// To inform the caller if the track is entering a daughter volume. +// +inline +G4bool G4Navigator::EnteredDaughterVolume() +{ + return fEnteredDaughter; +} + +// inline +// G4bool G4Navigator::ExitedVolume() +// { +// return fExitedCurrent; +// } + +inline +G4VPhysicalVolume* +G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector &p, + const G4ThreeVector &direction, + const G4TouchableHistory &h + ) +{ + ResetState(); + fHistory=*h.GetHistory(); + SetupHierarchy(); + return LocateGlobalPointAndSetup(p, &direction, true, false); +} + inline void G4Navigator::LocateGlobalPointAndUpdateTouchable( const G4ThreeVector& position, @@ -187,3 +309,42 @@ void G4Navigator::LocateGlobalPointAndUpdateTouchable( pPhysVol= LocateGlobalPointAndSetup( position, &direction, RelativeSearch); touchableToUpdate->UpdateYourself( pPhysVol, &fHistory ); } + +inline +void G4Navigator::LocateGlobalPointAndUpdateTouchableHandle( + const G4ThreeVector& position, + const G4ThreeVector& direction, + G4TouchableHandle& oldTouchableToUpdate, + const G4bool RelativeSearch ) +{ +// G4VPhysicalVolume* pPhysVol=LocateGlobalPointAndSetup( position, 0, RelativeSearch); + G4VPhysicalVolume* pPhysVol=LocateGlobalPointAndSetup( position, &direction, RelativeSearch); + if( fEnteredDaughter || fExitedMother ) + { + oldTouchableToUpdate = CreateTouchableHistory(); + if( pPhysVol == 0 ){ + // We want to ensure that the touchable is correct in this case. + // The method below should do this and recalculate a lot more .... + oldTouchableToUpdate->UpdateYourself( pPhysVol, &fHistory ); + } + } + return; +} + +inline +G4TouchableHistoryHandle G4Navigator::CreateTouchableHistoryHandle() const +{ + return G4TouchableHistoryHandle( CreateTouchableHistory() ); +} + +inline +G4int G4Navigator::GetVerboseLevel() +{ + return fVerbose; +} + +inline +void G4Navigator::SetVerboseLevel(G4int level) +{ + fVerbose=level; +} diff --git a/source/geometry/volumes/include/G4NormalNavigation.hh b/source/geometry/volumes/include/G4NormalNavigation.hh index 5bdfba29e1..095bb9e1f6 100644 --- a/source/geometry/volumes/include/G4NormalNavigation.hh +++ b/source/geometry/volumes/include/G4NormalNavigation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NormalNavigation.hh,v 1.3.4.1 2001/06/28 19:09:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NormalNavigation.hh,v 1.4 2001/07/11 10:00:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4NormalNavigation diff --git a/source/geometry/volumes/include/G4NormalNavigation.icc b/source/geometry/volumes/include/G4NormalNavigation.icc index a7bac8d973..74f0c03feb 100644 --- a/source/geometry/volumes/include/G4NormalNavigation.icc +++ b/source/geometry/volumes/include/G4NormalNavigation.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NormalNavigation.icc,v 1.3.4.1 2001/06/28 19:09:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NormalNavigation.icc,v 1.4 2001/07/11 10:00:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4NormalNavigation Inline Implementation diff --git a/source/geometry/volumes/include/G4ParameterisedNavigation.hh b/source/geometry/volumes/include/G4ParameterisedNavigation.hh index 6e6a4d9970..5d43ae50ac 100644 --- a/source/geometry/volumes/include/G4ParameterisedNavigation.hh +++ b/source/geometry/volumes/include/G4ParameterisedNavigation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParameterisedNavigation.hh,v 1.3.4.1 2001/06/28 19:09:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParameterisedNavigation.hh,v 1.4 2001/07/11 10:00:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ParameterisedNavigation diff --git a/source/geometry/volumes/include/G4ParameterisedNavigation.icc b/source/geometry/volumes/include/G4ParameterisedNavigation.icc index 1f2eed03fd..94f1fe568c 100644 --- a/source/geometry/volumes/include/G4ParameterisedNavigation.icc +++ b/source/geometry/volumes/include/G4ParameterisedNavigation.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParameterisedNavigation.icc,v 1.3.4.1 2001/06/28 19:09:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParameterisedNavigation.icc,v 1.4 2001/07/11 10:00:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ParameterisedNavigation Inline implementation diff --git a/source/geometry/volumes/include/G4PropagatorInField.hh b/source/geometry/volumes/include/G4PropagatorInField.hh index ce6eb03e33..8fb26db1d3 100644 --- a/source/geometry/volumes/include/G4PropagatorInField.hh +++ b/source/geometry/volumes/include/G4PropagatorInField.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PropagatorInField.hh,v 1.15.2.1 2001/06/28 19:09:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PropagatorInField.hh,v 1.20 2001/12/08 00:07:23 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PropagatorInField @@ -138,12 +138,22 @@ class G4PropagatorInField inline G4double GetMinimumEpsilonStep() const; inline void SetMinimumEpsilonStep(G4double newEpsMin); + inline void SetLargestAcceptableStep(G4double newBigDist); + inline G4double GetLargestAcceptableStep(); + public: // without description // void SetGlobalFieldMgr( G4FieldManager *detectorFieldMgr ); // The Field Manager of the Detector. - private: + inline G4FieldManager* GetCurrentFieldManager(); + + public: // no description + + inline void SetThresholdNoZeroStep(G4int noAct, G4int noHarsh, G4int noAbandon); + inline G4int GetThresholdNoZeroSteps(G4int i); + + protected: G4bool LocateIntersectionPoint( const G4FieldTrack& CurveStartPointTangent, // A @@ -155,7 +165,12 @@ class G4PropagatorInField // with the surface of the current volume (or of one of its daughters). // (Should use lateral displacement as measure of convergence). + void PrintStepLengthDiagnostic(G4double CurrentProposedStepLength, + G4double decreaseFactor, + G4double stepTrial, + const G4FieldTrack& aFieldTrack); + // ---------------------------------------------------------------------- // DATA Members // ---------------------------------------------------------------------- @@ -186,19 +201,24 @@ class G4PropagatorInField // Values for the small possible relative accuracy of a step // (corresponding to the greatest possible integration accuracy) - // Minimum for Relative accuracy of any Step + // Limits for the Relative accuracy of any Step G4double fEpsilonMin; - static const G4double fEpsilonMinDefault; // 1.0e-10 ; + G4double fEpsilonMax; + static const G4double fEpsilonMinDefault; // Can be 1.0e-5 to 1.0e-10 ... + static const G4double fEpsilonMaxDefault; // Can be 1.0e-1 to 1.0e-3 ... G4int fmax_loop_count; // Variables to keep track of "abnormal" case - which causes loop // G4int fNoZeroStep; // Counter of zeroStep - G4int fThresholdNo_ZeroSteps; // Threshold: above this - action + G4int fActionThreshold_NoZeroSteps; // Threshold: above this - act + G4int fSevereActionThreshold_NoZeroSteps; // Threshold to act harshly + G4int fAbandonThreshold_NoZeroSteps; // Threshold to abandon // G4double fMidPoint_CurveLen_of_LastAttempt= -1; G4double fFull_CurveLen_of_LastAttempt; G4double fLast_ProposedStepLength; + G4double fLargestAcceptableStep; }; // Defines the constructor. diff --git a/source/geometry/volumes/include/G4PropagatorInField.icc b/source/geometry/volumes/include/G4PropagatorInField.icc index 01eca149ae..e56b9c05f9 100644 --- a/source/geometry/volumes/include/G4PropagatorInField.icc +++ b/source/geometry/volumes/include/G4PropagatorInField.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PropagatorInField.icc,v 1.18.2.2 2001/06/28 20:18:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PropagatorInField.icc,v 1.25 2001/12/08 00:07:24 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------------------ @@ -48,15 +48,21 @@ G4PropagatorInField::G4PropagatorInField(G4Navigator *theNavigator, End_PointAndTangent(G4ThreeVector(0.,0.,0.), G4ThreeVector(0.,0.,0.),0.0,0.0,0.0,0.0,0.0), fVerboseLevel(0), - fmax_loop_count(10000) + fEpsilonMin(fEpsilonMinDefault), + fEpsilonMax(fEpsilonMaxDefault), + fmax_loop_count(10000), + fNoZeroStep(0) { // this->fChordFinder = new G4ChordFinder( (G4MagneticField*)0, 1e-6 ); - fNoZeroStep=0; - fThresholdNo_ZeroSteps= 2; + fActionThreshold_NoZeroSteps= 2; + fSevereActionThreshold_NoZeroSteps= 10; + fAbandonThreshold_NoZeroSteps= 50; // fMidPoint_CurveLen_of_LastAttempt= -1; fFull_CurveLen_of_LastAttempt= -1; fLast_ProposedStepLength= -1; + + fLargestAcceptableStep= 1000.0 * meter; } inline @@ -186,3 +192,39 @@ void G4PropagatorInField::SetMinimumEpsilonStep(G4double newEpsMin) if( (newEpsMin > 0.0) && (fabs(1.0+newEpsMin)>1.0) ) fEpsilonMin= newEpsMin; } + +inline void G4PropagatorInField::SetLargestAcceptableStep(G4double newBigDist) +{if(fLargestAcceptableStep>0.0) fLargestAcceptableStep= newBigDist; } + +inline G4double G4PropagatorInField::GetLargestAcceptableStep() +{return fLargestAcceptableStep;} + +inline G4FieldManager* G4PropagatorInField::GetCurrentFieldManager() +{ return fCurrentFieldMgr; } + +inline void G4PropagatorInField::SetThresholdNoZeroStep( G4int noAct, G4int noHarsh, G4int noAbandon) +{ + if(noAct>0) + fActionThreshold_NoZeroSteps= noAct; + + if( noHarsh > fActionThreshold_NoZeroSteps) + fSevereActionThreshold_NoZeroSteps= noHarsh; + else + fSevereActionThreshold_NoZeroSteps= 2*(fActionThreshold_NoZeroSteps+1); + + if( noAbandon > fSevereActionThreshold_NoZeroSteps+5) + fAbandonThreshold_NoZeroSteps= noAbandon; + else + fAbandonThreshold_NoZeroSteps= 2*(fSevereActionThreshold_NoZeroSteps+3); +} + +inline G4int G4PropagatorInField::GetThresholdNoZeroSteps(G4int i) +{ + G4int t=0; + if( i==0 ) { t = 3; } // No of parameters + else if (i==1) { t = fActionThreshold_NoZeroSteps; } + else if (i==2) { t = fSevereActionThreshold_NoZeroSteps; } + else if (i==3) { t = fAbandonThreshold_NoZeroSteps; } + + return t; +} diff --git a/source/geometry/volumes/include/G4ReplicaNavigation.hh b/source/geometry/volumes/include/G4ReplicaNavigation.hh index bdeb84f350..823a98d7c1 100644 --- a/source/geometry/volumes/include/G4ReplicaNavigation.hh +++ b/source/geometry/volumes/include/G4ReplicaNavigation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ReplicaNavigation.hh,v 1.3.4.1 2001/06/28 19:09:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReplicaNavigation.hh,v 1.4 2001/07/11 10:00:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ReplicaNavigation diff --git a/source/geometry/volumes/include/G4ReplicaNavigation.icc b/source/geometry/volumes/include/G4ReplicaNavigation.icc index a28ddf3193..413f96f2a9 100644 --- a/source/geometry/volumes/include/G4ReplicaNavigation.icc +++ b/source/geometry/volumes/include/G4ReplicaNavigation.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ReplicaNavigation.icc,v 1.4.2.1 2001/06/28 19:09:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReplicaNavigation.icc,v 1.5 2001/07/11 10:00:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ReplicaNavigation Inline implementation diff --git a/source/geometry/volumes/include/G4TouchableHistory.hh b/source/geometry/volumes/include/G4TouchableHistory.hh index 9d297dd08a..9c51f928a8 100644 --- a/source/geometry/volumes/include/G4TouchableHistory.hh +++ b/source/geometry/volumes/include/G4TouchableHistory.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TouchableHistory.hh,v 1.4.4.1 2001/06/28 19:09:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TouchableHistory.hh,v 1.5 2001/07/11 10:00:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4TouchableHistory diff --git a/source/geometry/volumes/include/G4TouchableHistory.icc b/source/geometry/volumes/include/G4TouchableHistory.icc index 8220e8a5e2..b90145387b 100644 --- a/source/geometry/volumes/include/G4TouchableHistory.icc +++ b/source/geometry/volumes/include/G4TouchableHistory.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TouchableHistory.icc,v 1.5.4.1 2001/06/28 19:09:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TouchableHistory.icc,v 1.6 2001/07/11 10:00:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4TouchableHistory inline implementation diff --git a/source/geometry/volumes/include/G4TouchableHistoryHandle.hh b/source/geometry/volumes/include/G4TouchableHistoryHandle.hh new file mode 100644 index 0000000000..5aeb5cf3be --- /dev/null +++ b/source/geometry/volumes/include/G4TouchableHistoryHandle.hh @@ -0,0 +1,51 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4TouchableHistoryHandle.hh,v 1.3 2001/11/06 17:08:14 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Class G4TouchableHandle +// +// Class description: +// +// A type providing reference counting mechanism for any kind of touchable +// history objects. +// The basic rule for the use of this type is that this handle must always +// be exchanged by reference never dinamically allocated (i.e. never +// instantiated using 'new'). +// +// For more details see G4ReferenceCountedHandle. + +// Author: Radovan Chytracek, CERN (Radovan.Chytracek@cern.ch) +// Version: 1.0 +// Date: March 2001 +// ---------------------------------------------------------------------- +#ifndef _G4TOUCHABLEHISTORYHANDLE_H_ +#define _G4TOUCHABLEHISTORYHANDLE_H_ 1 + +#include "G4TouchableHistory.hh" +#include "G4ReferenceCountedHandle.hh" + +typedef G4ReferenceCountedHandle G4TouchableHistoryHandle; + +#endif // _G4TOUCHABLEHISTORYHANDLE_H_ diff --git a/source/geometry/volumes/include/G4TransportationManager.hh b/source/geometry/volumes/include/G4TransportationManager.hh index 286f5bf5e3..93227b3836 100644 --- a/source/geometry/volumes/include/G4TransportationManager.hh +++ b/source/geometry/volumes/include/G4TransportationManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TransportationManager.hh,v 1.5.4.1 2001/06/28 19:09:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TransportationManager.hh,v 1.7 2001/10/24 15:33:48 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4TransportationManager // @@ -45,6 +45,7 @@ #include "G4Navigator.hh" class G4PropagatorInField; +class G4GeometryMessenger; class G4FieldManager; class G4TransportationManager @@ -72,6 +73,7 @@ class G4TransportationManager G4Navigator* fNavigatorForTracking ; G4PropagatorInField* fPropagatorInField; G4FieldManager* fFieldManager; + G4GeometryMessenger* fGeomMessenger; static G4TransportationManager* fTransportationManager; }; diff --git a/source/geometry/volumes/include/G4TransportationManager.icc b/source/geometry/volumes/include/G4TransportationManager.icc index 681fbc6f6e..a9a0a00140 100644 --- a/source/geometry/volumes/include/G4TransportationManager.icc +++ b/source/geometry/volumes/include/G4TransportationManager.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TransportationManager.icc,v 1.4.4.1 2001/06/28 19:09:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TransportationManager.icc,v 1.5 2001/07/11 10:00:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // GEANT 4 inlined function members implementation // ------------------------------------------------------------ diff --git a/source/geometry/volumes/include/G4VoxelNavigation.hh b/source/geometry/volumes/include/G4VoxelNavigation.hh index 6046340f7e..c18ab7ac12 100644 --- a/source/geometry/volumes/include/G4VoxelNavigation.hh +++ b/source/geometry/volumes/include/G4VoxelNavigation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VoxelNavigation.hh,v 1.8.2.1 2001/06/28 19:09:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VoxelNavigation.hh,v 1.9 2001/07/11 10:00:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VoxelNavigation diff --git a/source/geometry/volumes/include/G4VoxelNavigation.icc b/source/geometry/volumes/include/G4VoxelNavigation.icc index c6ec26f243..7f2562048b 100644 --- a/source/geometry/volumes/include/G4VoxelNavigation.icc +++ b/source/geometry/volumes/include/G4VoxelNavigation.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VoxelNavigation.icc,v 1.7.2.1 2001/06/28 19:09:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VoxelNavigation.icc,v 1.8 2001/07/11 10:00:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VoxelNavigation Inline implementation diff --git a/source/geometry/volumes/src/G4BlockingList.cc b/source/geometry/volumes/src/G4BlockingList.cc index 0ca646b0b0..fa654e516b 100644 --- a/source/geometry/volumes/src/G4BlockingList.cc +++ b/source/geometry/volumes/src/G4BlockingList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BlockingList.cc,v 1.3.2.1 2001/06/28 19:09:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BlockingList.cc,v 1.4 2001/07/11 10:00:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4BlockingList Implementation diff --git a/source/geometry/volumes/src/G4GRSSolid.cc b/source/geometry/volumes/src/G4GRSSolid.cc index 21f90754d9..881c6ffb7c 100644 --- a/source/geometry/volumes/src/G4GRSSolid.cc +++ b/source/geometry/volumes/src/G4GRSSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GRSSolid.cc,v 1.3.4.1 2001/06/28 19:09:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GRSSolid.cc,v 1.4 2001/07/11 10:00:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4GRSSolid Implementation diff --git a/source/geometry/volumes/src/G4GRSVolume.cc b/source/geometry/volumes/src/G4GRSVolume.cc index 0f9c1ba425..039967ee57 100644 --- a/source/geometry/volumes/src/G4GRSVolume.cc +++ b/source/geometry/volumes/src/G4GRSVolume.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GRSVolume.cc,v 1.3.4.1 2001/06/28 19:09:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GRSVolume.cc,v 1.4 2001/07/11 10:00:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4GRSVolume Implementation diff --git a/source/geometry/volumes/src/G4GeometryMessenger.cc b/source/geometry/volumes/src/G4GeometryMessenger.cc new file mode 100644 index 0000000000..87006b3422 --- /dev/null +++ b/source/geometry/volumes/src/G4GeometryMessenger.cc @@ -0,0 +1,244 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GeometryMessenger.cc,v 1.4 2001/11/01 19:00:11 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// -------------------------------------------------------------------- +// GEANT 4 class source file +// +// G4GeometryMessenger +// +// Author: G.Cosmo, CERN. + +#include "g4std/iomanip" +#include "G4GeometryMessenger.hh" + +#include "G4TransportationManager.hh" +#include "G4GeometryManager.hh" +#include "G4VPhysicalVolume.hh" +#include "G4Navigator.hh" + +#include "G4UIdirectory.hh" +#include "G4UIcommand.hh" +#include "G4UIcmdWith3VectorAndUnit.hh" +#include "G4UIcmdWith3Vector.hh" +#include "G4UIcmdWithoutParameter.hh" +#include "G4UIcmdWithABool.hh" +#include "G4UIcmdWithADoubleAndUnit.hh" + +#include "G4GeomTestStreamLogger.hh" +#include "G4GeomTestVolume.hh" + +// +// Constructor +// +G4GeometryMessenger::G4GeometryMessenger(G4TransportationManager* tman) + : geometryOpened(true), x(0,0,0), p(0,0,1), + extra(false), newtol(false), tol(1E-4*mm), + tmanager(tman) +{ + geodir = new G4UIdirectory( "/geometry/" ); + geodir->SetGuidance( "Geometry control commands." ); + + // + // Geometry navigator commands + // + navdir = new G4UIdirectory( "/geometry/navigator/" ); + navdir->SetGuidance( "Geometry navigator control setup." ); + + resCmd = new G4UIcmdWithoutParameter( "/geometry/navigator/reset", this ); + resCmd->SetGuidance( "Reset navigator and navigation history." ); + + // + // Geometry verification test commands + // + testdir = new G4UIdirectory( "/geometry/test/" ); + testdir->SetGuidance( "Geometry verification control setup." ); + testdir->SetGuidance( "Helps in detecting possible overlapping regions." ); + + addCmd = new G4UIcmdWithABool( "/geometry/test/line_test",this ); + addCmd->SetGuidance( "Test along a single specified direction/position?" ); + addCmd->SetGuidance( "Use position and direction commands to change default." ); + addCmd->SetGuidance( "Default: position(0,0,0), direction(0,0,1)." ); + addCmd->SetParameterName( "Extra", true, true ); + + tolCmd = new G4UIcmdWithADoubleAndUnit( "/geometry/test/tolerance",this ); + tolCmd->SetGuidance( "Set error tolerance value." ); + tolCmd->SetGuidance( "Default: 1E-4*mm." ); + tolCmd->SetParameterName( "Tolerance", true, true ); + tolCmd->SetDefaultUnit( "mm" ); + tolCmd->SetUnitCategory( "Length" ); + + posCmd = new G4UIcmdWith3VectorAndUnit( "/geometry/test/position", this ); + posCmd->SetGuidance( "Set starting position." ); + posCmd->SetParameterName( "X", "Y", "Z", true, true ); + posCmd->SetDefaultUnit( "cm" ); + + dirCmd = new G4UIcmdWith3VectorAndUnit( "/geometry/test/direction", this ); + dirCmd->SetGuidance( "Set momentum direction." ); + dirCmd->SetGuidance( "Direction needs not to be a unit vector." ); + dirCmd->SetParameterName( "Px", "Py", "Pz", true, true ); + dirCmd->SetRange( "Px != 0 || Py != 0 || Pz != 0" ); + + runCmd = new G4UIcmdWithoutParameter( "/geometry/test/run", this ); + runCmd->SetGuidance( "Start running the test." ); +} + + +// +// Destructor +// +G4GeometryMessenger::~G4GeometryMessenger() +{ + delete addCmd; + delete posCmd; + delete dirCmd; + delete runCmd; + delete resCmd; + delete tolCmd; + delete geodir; + delete navdir; + delete testdir; +} + + +// +// SetNewValue +// +void +G4GeometryMessenger::SetNewValue( G4UIcommand* command, G4String newValues ) +{ + if (command == resCmd) { + ResetNavigator(); + } + else if (command == addCmd) { + extra = addCmd->GetNewBoolValue( newValues ); + } + else if (command == posCmd) { + x = posCmd->GetNew3VectorValue( newValues ); + } + else if (command == dirCmd) { + p = dirCmd->GetNew3VectorValue( newValues ); + if (p.mag() < DBL_MIN) { + G4cerr << "Please specify non-zero momentum" << G4endl; + p = G4ThreeVector(0,0,1); + } + } + else if (command == tolCmd) { + tol = tolCmd->GetNewDoubleValue( newValues ); + newtol = true; + } + else if (command == runCmd) { + RunTest(); + } +} + + +// +// GetCurrentValue +// +G4String +G4GeometryMessenger::GetCurrentValue(G4UIcommand* command ) +{ + G4String cv = ""; + if (command == addCmd) { + cv = addCmd->ConvertToString( extra ); + } + else if (command == posCmd) { + cv = posCmd->ConvertToString( x, "cm" ); + } + else if (command == tolCmd) { + cv = tolCmd->ConvertToString( tol, "mm" ); + } + else if (command == dirCmd) { + cv = dirCmd->ConvertToString( p, "GeV" ); + } + return cv; +} + +// +// ResetNavigator +// +void +G4GeometryMessenger::ResetNavigator() +{ + // Close geometry if necessary + // + if (geometryOpened) { + G4GeometryManager* geomManager = G4GeometryManager::GetInstance(); + geomManager->OpenGeometry(); + geomManager->CloseGeometry(true); + geometryOpened = false; + } + + // Reset navigator's state + // + G4ThreeVector p(0,0,0); + tmanager->GetNavigatorForTracking()->LocateGlobalPointAndSetup(p,0,false); +} + +// +// RunTest +// +void +G4GeometryMessenger::RunTest() +{ + // Create a logger to send errors/output to cout + // + G4GeomTestStreamLogger logger(G4std::cout); + + // Close geometry if necessary + // + if (geometryOpened) { + G4GeometryManager* geomManager = G4GeometryManager::GetInstance(); + geomManager->OpenGeometry(); + geomManager->CloseGeometry(true); + geometryOpened = false; + } + + // Get the world volume + // + G4VPhysicalVolume* world = + tmanager->GetNavigatorForTracking()->GetWorldVolume(); + + // Test the actual detector... + // + G4GeomTestVolume geomTest(world, &logger); + + // Verify if error tolerance has changed + // + if (newtol) geomTest.SetTolerance(tol); + + // Run the test + // + if (extra) // Make test on single line supplied by user + geomTest.TestOneLine( x, p ); + else // Apply default set of trajectories in a 3D grid pattern + geomTest.TestCartGridXYZ(); + + // Print out any errors, if found + // + geomTest.ReportErrors(); + +} diff --git a/source/geometry/volumes/src/G4LogicalBorderSurface.cc b/source/geometry/volumes/src/G4LogicalBorderSurface.cc index 7b6778643b..5fd9b35cbc 100644 --- a/source/geometry/volumes/src/G4LogicalBorderSurface.cc +++ b/source/geometry/volumes/src/G4LogicalBorderSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalBorderSurface.cc,v 1.6.2.1 2001/06/28 19:09:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalBorderSurface.cc,v 1.7 2001/07/11 10:00:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // G4LogicalBorderSurface Implementation diff --git a/source/geometry/volumes/src/G4LogicalSkinSurface.cc b/source/geometry/volumes/src/G4LogicalSkinSurface.cc index 600e83bd54..fa5914756a 100644 --- a/source/geometry/volumes/src/G4LogicalSkinSurface.cc +++ b/source/geometry/volumes/src/G4LogicalSkinSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalSkinSurface.cc,v 1.6.2.1 2001/06/28 19:09:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalSkinSurface.cc,v 1.7 2001/07/11 10:00:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // G4LogicalSkinSurface Implementation diff --git a/source/geometry/volumes/src/G4NavigationHistory.cc b/source/geometry/volumes/src/G4NavigationHistory.cc index 6866028aa7..481145fc2b 100644 --- a/source/geometry/volumes/src/G4NavigationHistory.cc +++ b/source/geometry/volumes/src/G4NavigationHistory.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NavigationHistory.cc,v 1.3.4.1 2001/06/28 19:09:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NavigationHistory.cc,v 1.4 2001/07/11 10:00:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4NavigationHistory Implementation P.Kent August 96 diff --git a/source/geometry/volumes/src/G4Navigator.cc b/source/geometry/volumes/src/G4Navigator.cc index 9efcf19b56..cd2f4cc4b2 100644 --- a/source/geometry/volumes/src/G4Navigator.cc +++ b/source/geometry/volumes/src/G4Navigator.cc @@ -21,9 +21,8 @@ // ******************************************************************** // // -// $Id: G4Navigator.cc,v 1.11.4.1 2001/06/28 19:09:43 gunter Exp $ -// GEANT4 tag $Name: $ -// +// $Id: G4Navigator.cc,v 1.23 2001/12/11 17:46:49 gcosmo Exp $ +// GEANT4 tag $ Name: $ // // class G4Navigator Implementation Paul Kent July 95/96 @@ -42,26 +41,7 @@ G4Navigator::G4Navigator() : G4Navigator::~G4Navigator() {;} -// Set the world (`topmost') volume -void G4Navigator::SetWorldVolume(G4VPhysicalVolume* pWorld) -{ -// Setup the volume - pWorld->Setup(0); // No mother since world volume - if (!(pWorld->GetTranslation()==G4ThreeVector(0,0,0))) - { - G4Exception ("G4Navigator::SetWorldVolume - Must be centred on origin"); - } - const G4RotationMatrix* rm=pWorld->GetRotation(); - if (rm&&(!rm->isIdentity())) - { - G4Exception ("G4Navigator::SetWorldVolume - Must not be rotated"); - } - fTopPhysical=pWorld; - fHistory.SetFirstEntry(pWorld); -} - - -// define DEBUG_HIST 1 +// define G4DEBUG_NAVIGATION 1 // Locate the point in the hierarchy return 0 if outside // @@ -71,16 +51,25 @@ void G4Navigator::SetWorldVolume(G4VPhysicalVolume* pWorld) G4VPhysicalVolume* G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, const G4ThreeVector* pGlobalDirection, - const G4bool relativeSearch) + const G4bool relativeSearch, + const G4bool ignoreDirection) { G4bool notKnownContained=true,noResult; G4VPhysicalVolume *targetPhysical; G4LogicalVolume *targetLogical; - G4VSolid *targetSolid; - G4ThreeVector localPoint; + G4VSolid *targetSolid=0; + G4ThreeVector localPoint, globalDirection; EInside insideCode; + -#ifdef DEBUG_HIST + G4bool considerDirection = (!ignoreDirection) || fLocatedOnEdge; + + if( considerDirection && pGlobalDirection != 0 ) + { + globalDirection=*pGlobalDirection; + } + +#ifdef G4DEBUG_NAVIGATION G4cerr << "Upon entering LocateGlobalPointAndSetup " << G4endl; G4cerr << " History = " << G4endl << fHistory << G4endl << G4endl; #endif @@ -141,7 +130,9 @@ G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, { case kNormal: fBlockedPhysicalVolume->Setup(curPhysical); - fHistory.NewLevel(fBlockedPhysicalVolume); + fHistory.NewLevel(fBlockedPhysicalVolume, + kNormal, + fBlockedPhysicalVolume->GetCopyNo()); break; case kReplica: freplicaNav.ComputeTransformation(fBlockedReplicaNo, @@ -237,26 +228,46 @@ G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, return 0; } } - else if (insideCode==kSurface&&fExiting) - { - if (fHistory.GetDepth()) - { - fBlockedPhysicalVolume=fHistory.GetTopVolume(); - fBlockedReplicaNo=fHistory.GetTopReplicaNo(); - fHistory.BackLevel(); - // Still on surface but exited volume not necessarily convex - fValidExitNormal=false; - } - else - { - // Have exited world volume - return 0; - } - } + else if (insideCode==kSurface) + { + G4bool isExiting= fExiting; + if((!fExiting)&&considerDirection){ + // Figure out whether we are exiting this level's volume by using the direction + G4bool directionExiting= false; + G4ThreeVector localDirection; + localDirection=fHistory.GetTopTransform().TransformAxis(globalDirection); + if (fHistory.GetTopVolumeType()!=kReplica){ + G4ThreeVector normal= targetSolid->SurfaceNormal(localPoint); + directionExiting= normal.dot(localDirection) > 0.0; + + isExiting= isExiting || directionExiting; + } + } + if(isExiting) + { + if (fHistory.GetDepth()) + { + fBlockedPhysicalVolume=fHistory.GetTopVolume(); + fBlockedReplicaNo=fHistory.GetTopReplicaNo(); + fHistory.BackLevel(); + // Still on surface but exited volume not necessarily convex + fValidExitNormal=false; + } + else + { + // Have exited world volume + return 0; + } + } + else + { + notKnownContained=false; + } + } else - { - notKnownContained=false; - } + { + notKnownContained=false; + } } // @@ -272,7 +283,8 @@ G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, noResult=true; // noResult should be renamed to // something like enteredLevel, as that is its meaning. - do + + do { // Determine `type' of current mother volume @@ -288,7 +300,7 @@ G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, fBlockedReplicaNo, globalPoint, pGlobalDirection, - fLocatedOnEdge, + considerDirection, localPoint); } else @@ -298,7 +310,7 @@ G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, fBlockedReplicaNo, globalPoint, pGlobalDirection, - fLocatedOnEdge, + considerDirection, localPoint); } break; @@ -308,7 +320,7 @@ G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, fBlockedReplicaNo, globalPoint, pGlobalDirection, - fLocatedOnEdge, + considerDirection, localPoint); break; case kParameterised: @@ -317,7 +329,7 @@ G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, fBlockedReplicaNo, globalPoint, pGlobalDirection, - fLocatedOnEdge, + considerDirection, localPoint); break; } @@ -350,7 +362,7 @@ G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector& globalPoint, } #endif -#ifdef DEBUG_HIST +#ifdef G4DEBUG_NAVIGATION G4cerr << "Upon exiting LocateGlobalPointAndSetup " << G4endl; G4cerr << " History = " << G4endl << fHistory << G4endl << G4endl; #endif @@ -611,6 +623,7 @@ G4double G4Navigator::ComputeStep(const G4ThreeVector &pGlobalpoint, // We must calculate the normal anyway (in order to have it if requested) G4ThreeVector FinalPoint= fLastLocatedPointLocal + localDirection*Step; fExitNormal= motherLogical->GetSolid()->SurfaceNormal(FinalPoint); + } #ifdef G4VERBOSE @@ -624,48 +637,6 @@ G4double G4Navigator::ComputeStep(const G4ThreeVector &pGlobalpoint, return Step; } -G4VPhysicalVolume* G4Navigator::LocateGlobalPointAndSetup(const G4ThreeVector &p, - const G4TouchableHistory &h) -{ - fHistory=*h.GetHistory(); - SetupHierarchy(); - return LocateGlobalPointAndSetup(p, 0); -} - -G4ThreeVector G4Navigator::NetTranslation() const -{ - G4AffineTransform tf(fHistory.GetTopTransform().Inverse()); - return tf.NetTranslation(); -} - -G4RotationMatrix G4Navigator::NetRotation() const -{ - G4AffineTransform tf(fHistory.GetTopTransform().Inverse()); - return tf.NetRotation(); -} - -G4GRSVolume* G4Navigator::CreateGRSVolume() const -{ - G4AffineTransform tf(fHistory.GetTopTransform().Inverse()); - return new G4GRSVolume(fHistory.GetTopVolume(), - tf.NetRotation(), - tf.NetTranslation()); -} - -G4GRSSolid* G4Navigator::CreateGRSSolid() const -{ - G4AffineTransform tf(fHistory.GetTopTransform().Inverse()); - return new G4GRSSolid(fHistory.GetTopVolume()->GetLogicalVolume()->GetSolid(), - tf.NetRotation(), - tf.NetTranslation()); - -} - -G4TouchableHistory* G4Navigator::CreateTouchableHistory() const -{ - return new G4TouchableHistory(fHistory); -} - // Renavigate & reset hierarchy described by current history // o Reset volumes // o Recompute transforms and/or solids of replicated/parameterised vols @@ -719,14 +690,6 @@ G4std::ostream& operator << (G4std::ostream &os,const G4Navigator &n) return os; } -// Return global to local transformation -const G4AffineTransform G4Navigator::GetLocalToGlobalTransform() const -{ - G4AffineTransform tempTransform; - tempTransform= fHistory.GetTopTransform().Inverse(); - return tempTransform; -} - // Obtain the Normal vector to a surface (in local coordinates) // pointing out of previous volume and into current volume // @@ -842,23 +805,12 @@ G4double G4Navigator::ComputeSafety(const G4ThreeVector &pGlobalpoint, return newSafety; } -G4bool G4Navigator::EnteredDaughterVolume() -{ - return fEnteredDaughter; -} - -// G4bool G4Navigator::ExitedVolume() -// { -// return fExitedCurrent; -// } - - void G4Navigator::PrintState() { if( fVerbose >= 4 ) { G4cout.precision(3); - G4cout << " Upon exiting my state is: " << G4endl; + G4cout << "The current state of G4Navigator is: " << G4endl; G4cout << " ValidExitNormal= " << fValidExitNormal << G4endl << " ExitNormal = " << fExitNormal << G4endl << " Exiting = " << fExiting << G4endl @@ -876,7 +828,7 @@ void G4Navigator::PrintState() if( ( 1 < fVerbose) && (fVerbose < 4) ) { G4cout.precision(3); - G4cout << G4std::setw(18) << " ExitNormal " << " " + G4cout << G4std::setw(24) << " ExitNormal " << " " << G4std::setw( 5) << " Valid " << " " << G4std::setw( 9) << " Exiting " << " " << G4std::setw( 9) << " Entering" << " " @@ -884,7 +836,7 @@ void G4Navigator::PrintState() << G4std::setw( 9) << " ReplicaNo" << " " << G4std::setw( 8) << " LastStepZero " << " " << G4endl; - G4cout << G4std::setw(18) << fExitNormal << " " + G4cout << G4std::setw(24) << fExitNormal << " " << G4std::setw( 5) << fValidExitNormal << " " << G4std::setw( 9) << fExiting << " " << G4std::setw( 9) << fEntering << " "; @@ -954,6 +906,18 @@ void G4Navigator::LocateGlobalPointWithinVolume(const G4ThreeVector& pGlobalpoi } } + // Reset the state variables + // - which would have been affected + // by the 'equivalent' call to LocateGlobalPointAndSetup + // - who's values have been invalidated by the 'move'. + //fWasLimitedByGeometry= false; + //fBlockedPhysicalVolume=0; + //fBlockedReplicaNo= -1; + + //fEntering=false; + //fEnteredDaughter=false; // Boundary not encountered, did not enter + //fExiting=false; + //fExitedMother=false; // Boundary not encountered, did not exit #if 0 else { @@ -992,14 +956,3 @@ void G4Navigator::LocateGlobalPointWithinVolume(const G4ThreeVector& pGlobalpoi #endif } - -G4int G4Navigator::GetVerboseLevel() -{ - return fVerbose; -} - -void G4Navigator::SetVerboseLevel(G4int level) -{ - fVerbose=level; -} - diff --git a/source/geometry/volumes/src/G4NormalNavigation.cc b/source/geometry/volumes/src/G4NormalNavigation.cc index 9320f96457..4b0d2a8049 100644 --- a/source/geometry/volumes/src/G4NormalNavigation.cc +++ b/source/geometry/volumes/src/G4NormalNavigation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NormalNavigation.cc,v 1.3.4.1 2001/06/28 19:09:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NormalNavigation.cc,v 1.4 2001/07/11 10:00:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4NormalNavigation Implementation diff --git a/source/geometry/volumes/src/G4ParameterisedNavigation.cc b/source/geometry/volumes/src/G4ParameterisedNavigation.cc index 0ec5a84600..6aabe5ba94 100644 --- a/source/geometry/volumes/src/G4ParameterisedNavigation.cc +++ b/source/geometry/volumes/src/G4ParameterisedNavigation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParameterisedNavigation.cc,v 1.3.4.1 2001/06/28 19:09:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParameterisedNavigation.cc,v 1.4 2001/07/11 10:00:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ParameterisedNavigation Implementation diff --git a/source/geometry/volumes/src/G4PropagatorInField.cc b/source/geometry/volumes/src/G4PropagatorInField.cc index 9082532ae6..447052636b 100644 --- a/source/geometry/volumes/src/G4PropagatorInField.cc +++ b/source/geometry/volumes/src/G4PropagatorInField.cc @@ -21,14 +21,13 @@ // ******************************************************************** // // -// $Id: G4PropagatorInField.cc,v 1.19.2.1 2001/06/28 19:09:44 gunter Exp $ -// GEANT4 tag $Name: $ -// +// $Id: G4PropagatorInField.cc,v 1.28 2001/12/08 01:17:04 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// This routine implements an algorithm to track a particle in a // -// non-uniform magnetic field. It utilises an ODE solver (with // -// the Runge - Kutta method) to evolve the particle, and drives it // +// This class implements an algorithm to track a particle in a +// non-uniform magnetic field. It utilises an ODE solver (with +// the Runge - Kutta method) to evolve the particle, and drives it // until the particle has traveled a set distance or it enters a new // volume. // @@ -39,6 +38,8 @@ // 17.03.97 John Apostolakis, renaming new set functions being added // +// #define G4DEBUG_FIELD 1 + #include "G4PropagatorInField.hh" #include "G4ios.hh" #include "g4std/iomanip" @@ -48,7 +49,8 @@ //const G4double G4PropagatorInField::fDefault_Delta_Intersection_Val= 0.1 * mm; //const G4double G4PropagatorInField::fDefault_Delta_One_Step_Value = 0.25 * mm; -const G4double G4PropagatorInField::fEpsilonMinDefault = 1.0e-10 ; +const G4double G4PropagatorInField::fEpsilonMinDefault = 5.0e-7; +const G4double G4PropagatorInField::fEpsilonMaxDefault = 0.05; /////////////////////////////////////////////////////////////////////////// // @@ -84,53 +86,84 @@ G4double G4PropagatorInField:: G4FieldTrack CurrentState(pFieldTrack); -#if 0 - CurrentState.SetVelocity( pFieldTrack.GetMomentumDir() ); - // For now, must utilize unit "velocity" J.A. Nov 17, 98 - - // Problem in setting the energy in this case .... (and in E field) -#endif - - G4FieldTrack OriginalState= CurrentState; // If the Step length is "infinite", then an approximate-maximum Step lenght // (used to calculate the relative accuracy) must be guessed. // - if( CurrentProposedStepLength >= kInfinity ) + if( CurrentProposedStepLength >= fLargestAcceptableStep ) { G4ThreeVector StartPointA, VelocityUnit; StartPointA = pFieldTrack.GetPosition(); VelocityUnit= pFieldTrack.GetMomentumDir(); - CurrentProposedStepLength= 1.e3 * ( 10.0 * cm + + G4double trialProposedStep= 1.e2 * ( 10.0 * cm + fNavigator->GetWorldVolume()->GetLogicalVolume()-> GetSolid()->DistanceToOut(StartPointA, VelocityUnit) ) ; + CurrentProposedStepLength= G4std::min( trialProposedStep, fLargestAcceptableStep); } epsilon = GetDeltaOneStep() / CurrentProposedStepLength ; if( epsilon < fEpsilonMin ) epsilon = fEpsilonMin ; + if( epsilon > fEpsilonMax ) epsilon = fEpsilonMax ; this->SetEpsilonStep( epsilon ); - if( fNoZeroStep > fThresholdNo_ZeroSteps ) { + // Shorten the proposed step in case of earlier problems (zero steps) + // + if( fNoZeroStep > fActionThreshold_NoZeroSteps ) { G4double stepTrial; // = fMidPoint_CurveLen_of_LastAttempt; - stepTrial= 0.5 * fFull_CurveLen_of_LastAttempt; + + stepTrial= fFull_CurveLen_of_LastAttempt; if( (stepTrial <= 0.0) && (fLast_ProposedStepLength>0.0) ) - stepTrial=0.5 * fLast_ProposedStepLength; - if( fNoZeroStep > 2*fThresholdNo_ZeroSteps ){ - stepTrial *= 0.5; // Ensure quicker convergence. - if( (stepTrial == 0.0) - || ( fNoZeroStep > 5*fThresholdNo_ZeroSteps ) ) { - G4cerr << " G4PropagatorInField::ComputeStep " - << " ERROR : attempting a zero step= " << stepTrial << G4endl - << " and/or no progress after " << fNoZeroStep - << " trial steps. ABORTING." << G4endl; - G4Exception("G4PropagatorInField::ComputeStep No progress - Looping with zero steps"); - } + stepTrial= fLast_ProposedStepLength; + + G4double decreaseFactor=0.9; // Unused default + // G4double thisTolerance= kCarTolerance; + if( (fNoZeroStep < fSevereActionThreshold_NoZeroSteps) + && (stepTrial > 1000.0*kCarTolerance) ){ + // Ensure quicker convergence. + decreaseFactor= 0.1; + } else { + // We are in significant difficulties, probably at a boundary + // that is either geometrically sharp + // or between very different materials. + // + // Careful decreases to cope with tolerance are required. + if(stepTrial > 1000.0*kCarTolerance) + decreaseFactor= 0.25; // Try slow decreases + else if(stepTrial > 100.0*kCarTolerance) + decreaseFactor= 0.5; // Try slower decreases + else if(stepTrial > 10.0*kCarTolerance) + decreaseFactor= 0.75; // Try even slower decreases + else + decreaseFactor= 0.9; // Try very slow decreases } - CurrentProposedStepLength = stepTrial; + stepTrial *= decreaseFactor; + +#ifdef G4DEBUG_FIELD + PrintStepLengthDiagnostic(CurrentProposedStepLength, decreaseFactor, + stepTrial, pFieldTrack); +#endif + if( (stepTrial == 0.0) ) { + // || ( fNoZeroStep > fAbandonThresholdNo_ZeroSteps ) ) { + G4cout << " G4PropagatorInField::ComputeStep " + << " Particle abandoned due to lack of progress in field." + << G4endl + << " Properties : " << pFieldTrack << " " + << G4endl; + G4cerr << " G4PropagatorInField::ComputeStep " + << " ERROR : attempting a zero step= " << stepTrial << G4endl + << " while attempting to progress after " << fNoZeroStep + << " trial steps. Will abandon step." << G4endl; + // G4Exception("G4PropagatorInField::ComputeStep No progress - Looping with zero steps"); + fParticleIsLooping= true; + return 0; // = stepTrial; + } + + if( stepTrial < CurrentProposedStepLength) + CurrentProposedStepLength = stepTrial; } fLast_ProposedStepLength= CurrentProposedStepLength; @@ -215,7 +248,7 @@ G4double G4PropagatorInField:: StepTaken = TruePathLength= IntersectPointVelct_G.GetCurveLength() - OriginalState.GetCurveLength(); // which is Zero now. -#ifdef G4VERBOSE +#ifdef G4DEBUG_FIELD if( Verbose() > 0 ) G4cout << " Found intersection after Step of length " << StepTaken << G4endl; @@ -232,21 +265,30 @@ G4double G4PropagatorInField:: StepTaken += s_length_taken; } first_substep= false; - -#ifdef G4VERBOSE - if( Verbose() > 0 ) - printStatus( SubStepStartState, // or OriginalState, + +#ifdef G4DEBUG_FIELD + // if( fNoZeroStep ) + if( fNoZeroStep > fActionThreshold_NoZeroSteps ) + { + // if( Verbose() > 0 ) + //if(do_loop_count==0) + // G4cout << "G4PiF: End of Step " << do_loop_count; + printStatus( SubStepStartState, // or OriginalState, CurrentState, CurrentProposedStepLength, NewSafety, do_loop_count, pPhysVol); + // G4cout << " Step accepted taken =" << StepTaken << G4endl; + } #endif do_loop_count++; } while( (!intersects ) && (StepTaken + kCarTolerance < CurrentProposedStepLength) && ( do_loop_count < GetMaxLoopCount() ) ); + + #ifdef G4VERBOSE if( do_loop_count >= GetMaxLoopCount() ){ @@ -294,6 +336,14 @@ G4double G4PropagatorInField:: } #endif +#ifdef G4DEBUG_FIELD + if( fNoZeroStep ){ + G4cout << " PiF: Step returning=" << StepTaken << G4endl; + G4cout << " ------------------------------------------------------- " + << G4endl; + } +#endif + // In particular anomalous cases, we can get repeated zero steps // In order to correct this efficiently, we identify these cases // and only take corrective action when they occur. @@ -303,6 +353,14 @@ G4double G4PropagatorInField:: else fNoZeroStep= 0; + if( fNoZeroStep > fAbandonThreshold_NoZeroSteps ) { + G4cout << " G4PropagatorInField::ComputeStep : Warning :" + << " no progress after " << fNoZeroStep << " trial steps. " + << G4endl; + G4cout << " Particle will be abandoned." ; + fParticleIsLooping= true; + } + return TruePathLength; } @@ -512,7 +570,7 @@ G4PropagatorInField::LocateIntersectionPoint( GetChordFinder()->GetIntegrationDriver() ->AccurateAdvance(newEndpoint, curveDist, GetEpsilonStep() ); CurrentB_PointVelocity= newEndpoint; -#ifdef G4DEBUG +#ifdef G4DEBUG_FIELD static int noInaccuracyWarnings = 0; const int maxNoWarnings = 10; if( (noInaccuracyWarnings < maxNoWarnings ) @@ -528,6 +586,10 @@ G4PropagatorInField::LocateIntersectionPoint( #endif } if( curveDist < 0.0 ) { + G4cerr << "G4PropagatorInField::LocateIntersectionPoint: " + << "Error in advancing " << G4endl; + printStatus( CurrentA_PointVelocity, CurrentB_PointVelocity, + -1.0, NewSafety, substep_no, 0); // startVolume); G4Exception("G4PropagatorInField::LocateIntersectionPoint : the final curve point is not further along than the original."); } @@ -584,13 +646,13 @@ void G4PropagatorInField::printStatus( << G4std::setw( 7) << " N_y " << " " << G4std::setw( 7) << " N_z " << " " << G4std::setw( 9) << "StepLen" << " " - << G4std::setw( 9) << "PhsStep" << " " + << G4std::setw(12) << "PhsStep" << " " << G4std::setw(12) << "StartSafety" << " " << G4std::setw(18) << "NextVolume" << " " << G4endl; // Recurse to print the start values printStatus( StartFT, StartFT, // - -1.0, safety, -1, 0); // startVolume); + -1.0, safety, -1, startVolume); } if( verboseLevel <= 3 ) @@ -608,9 +670,9 @@ void G4PropagatorInField::printStatus( << G4std::setw( 7) << CurrentUnitVelocity.z() << " "; G4cout << G4std::setw( 9) << step_len << " "; if( requestStep != -1.0 ) - G4cout << G4std::setw( 9) << requestStep << " "; + G4cout << G4std::setw( 12) << requestStep << " "; else - G4cout << G4std::setw( 9) << " InitialStep " << " "; + G4cout << G4std::setw( 12) << "InitialStep" << " "; G4cout << G4std::setw(12) << safety << " "; if( startVolume != 0) { @@ -639,3 +701,22 @@ void G4PropagatorInField::printStatus( G4cout << G4endl; } } + + +void +G4PropagatorInField::PrintStepLengthDiagnostic(G4double CurrentProposedStepLength, + G4double decreaseFactor, + G4double stepTrial, + const G4FieldTrack& aFieldTrack) +{ + G4cout << " PiF: NoZeroStep= " << fNoZeroStep + << " CurrentProposedStepLength= " << CurrentProposedStepLength + << " Full_curvelen_last=" << fFull_CurveLen_of_LastAttempt + << " last proposed step-length= " << fLast_ProposedStepLength + << " decreate factor = " << decreaseFactor + << " step trial = " << stepTrial + << G4endl; + // printStatus( pFieldTrack, pFieldTrack, CurrentProposedStepLength, + // -1.0, 0, pPhysVol); + +} diff --git a/source/geometry/volumes/src/G4ReplicaNavigation.cc b/source/geometry/volumes/src/G4ReplicaNavigation.cc index e324bc1f6c..7cbddbec81 100644 --- a/source/geometry/volumes/src/G4ReplicaNavigation.cc +++ b/source/geometry/volumes/src/G4ReplicaNavigation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ReplicaNavigation.cc,v 1.9.2.1 2001/06/28 19:09:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReplicaNavigation.cc,v 1.10 2001/07/11 10:00:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4ReplicaNavigation Implementation diff --git a/source/geometry/volumes/src/G4TouchableHistory.cc b/source/geometry/volumes/src/G4TouchableHistory.cc index 8778fe010d..8087c7697b 100644 --- a/source/geometry/volumes/src/G4TouchableHistory.cc +++ b/source/geometry/volumes/src/G4TouchableHistory.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TouchableHistory.cc,v 1.4.4.1 2001/06/28 19:09:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TouchableHistory.cc,v 1.5 2001/07/11 10:00:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4TouchableHistory Implementation diff --git a/source/geometry/volumes/src/G4TransportationManager.cc b/source/geometry/volumes/src/G4TransportationManager.cc index 1970894897..0a0ac8a8ce 100644 --- a/source/geometry/volumes/src/G4TransportationManager.cc +++ b/source/geometry/volumes/src/G4TransportationManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TransportationManager.cc,v 1.6.2.1 2001/06/28 19:09:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TransportationManager.cc,v 1.9 2001/10/24 15:33:49 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4TransportationManager @@ -32,12 +32,14 @@ // The following inclusions should be left here, as only // the constructor and destructor require them. +#include "G4GeometryMessenger.hh" #include "G4PropagatorInField.hh" #include "G4FieldManager.hh" // This will ensure correct order of construction and destruption of // static objects. #include "G4NavigationLevel.hh" + G4Allocator aNavigationLevelAllocator; G4Allocator aNavigLevelRepAllocator; @@ -45,6 +47,9 @@ G4Allocator aNavigLevelRepAllocator; const G4double G4FieldManager::fDefault_Delta_Intersection_Val= 0.1 * mm; const G4double G4FieldManager::fDefault_Delta_One_Step_Value = 0.25 * mm; +// const G4double G4PropagatorInField::fDefault_Delta_Intersection_Val= 0.1 * mm; +// const G4double G4PropagatorInField::fDefault_Delta_One_Step_Value = 0.25 * mm; +// const G4double G4PropagatorInField::fEpsilonMin = 1.0e-10 ; G4TransportationManager* G4TransportationManager::fTransportationManager=0; @@ -52,6 +57,7 @@ G4TransportationManager::G4TransportationManager() { if (!fTransportationManager) { + fGeomMessenger= new G4GeometryMessenger(this); fNavigatorForTracking= new G4Navigator() ; fFieldManager= new G4FieldManager() ; fPropagatorInField= new G4PropagatorInField( fNavigatorForTracking, @@ -66,6 +72,7 @@ G4TransportationManager::G4TransportationManager() G4TransportationManager::~G4TransportationManager() { + delete fGeomMessenger; delete fNavigatorForTracking; delete fPropagatorInField; delete fFieldManager; diff --git a/source/geometry/volumes/src/G4VoxelNavigation.cc b/source/geometry/volumes/src/G4VoxelNavigation.cc index e30139ad8a..b97c3b86e9 100644 --- a/source/geometry/volumes/src/G4VoxelNavigation.cc +++ b/source/geometry/volumes/src/G4VoxelNavigation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VoxelNavigation.cc,v 1.7.2.1 2001/06/28 19:09:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VoxelNavigation.cc,v 1.8 2001/07/11 10:00:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4VoxelNavigation Implementation diff --git a/source/global/GNUmakefile b/source/global/GNUmakefile index 4a20753c5e..60f176d693 100644 --- a/source/global/GNUmakefile +++ b/source/global/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.2 2000/11/03 16:40:30 gunter Exp $ +# $Id: GNUmakefile,v 1.3 2001/10/11 14:04:04 gcosmo Exp $ # -------------------------------------------------------------- # GNUmakefile for global. Gabriele Cosmo, 26/9/96. # -------------------------------------------------------------- @@ -15,6 +15,6 @@ endif include $(G4INSTALL)/config/globlib.gmk includes:: - @for dir in STLInterface HEPGeometry HEPRandom; do \ + @for dir in HEPGeometry HEPRandom; do \ (cd $$dir && $(MAKE) $@); \ done diff --git a/source/global/HEPGeometry/include/G4LorentzRotation.hh b/source/global/HEPGeometry/include/G4LorentzRotation.hh index 21cadfe15d..8d95b456c3 100644 --- a/source/global/HEPGeometry/include/G4LorentzRotation.hh +++ b/source/global/HEPGeometry/include/G4LorentzRotation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LorentzRotation.hh,v 1.2.8.1 2001/06/28 19:09:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LorentzRotation.hh,v 1.3 2001/07/11 10:00:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4LorentzRotation_hh #define G4LorentzRotation_hh diff --git a/source/global/HEPGeometry/include/G4LorentzVector.hh b/source/global/HEPGeometry/include/G4LorentzVector.hh index 2a0356345a..5bbdfe68b8 100644 --- a/source/global/HEPGeometry/include/G4LorentzVector.hh +++ b/source/global/HEPGeometry/include/G4LorentzVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LorentzVector.hh,v 1.2.8.1 2001/06/28 19:09:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LorentzVector.hh,v 1.3 2001/07/11 10:00:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4LorentzVector_hh #define G4LorentzVector_hh diff --git a/source/global/HEPGeometry/include/G4Normal3D.hh b/source/global/HEPGeometry/include/G4Normal3D.hh index b800a8ddb8..cc44e3e5b6 100644 --- a/source/global/HEPGeometry/include/G4Normal3D.hh +++ b/source/global/HEPGeometry/include/G4Normal3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Normal3D.hh,v 1.2.8.1 2001/06/28 19:09:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Normal3D.hh,v 1.3 2001/07/11 10:00:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NORMAL3D_HH #define G4NORMAL3D_HH diff --git a/source/global/HEPGeometry/include/G4Plane3D.hh b/source/global/HEPGeometry/include/G4Plane3D.hh index 869d8ed667..e05b15335b 100644 --- a/source/global/HEPGeometry/include/G4Plane3D.hh +++ b/source/global/HEPGeometry/include/G4Plane3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Plane3D.hh,v 1.2.8.1 2001/06/28 19:09:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Plane3D.hh,v 1.3 2001/07/11 10:00:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4PLANE3D_HH #define G4PLANE3D_HH diff --git a/source/global/HEPGeometry/include/G4Point3D.hh b/source/global/HEPGeometry/include/G4Point3D.hh index 18ca244a73..dd4c4aa297 100644 --- a/source/global/HEPGeometry/include/G4Point3D.hh +++ b/source/global/HEPGeometry/include/G4Point3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Point3D.hh,v 1.2.8.1 2001/06/28 19:09:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Point3D.hh,v 1.3 2001/07/11 10:00:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4POINT3D_HH #define G4POINT3D_HH diff --git a/source/global/HEPGeometry/include/G4Transform3D.hh b/source/global/HEPGeometry/include/G4Transform3D.hh index f0bfc10969..050b3edda9 100644 --- a/source/global/HEPGeometry/include/G4Transform3D.hh +++ b/source/global/HEPGeometry/include/G4Transform3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Transform3D.hh,v 1.2.8.1 2001/06/28 19:09:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Transform3D.hh,v 1.3 2001/07/11 10:00:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4TRANSFORM3D_HH #define G4TRANSFORM3D_HH diff --git a/source/global/HEPGeometry/include/G4Vector3D.hh b/source/global/HEPGeometry/include/G4Vector3D.hh index fc7a248165..14511baaad 100644 --- a/source/global/HEPGeometry/include/G4Vector3D.hh +++ b/source/global/HEPGeometry/include/G4Vector3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Vector3D.hh,v 1.2.8.1 2001/06/28 19:09:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Vector3D.hh,v 1.3 2001/07/11 10:00:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VECTOR3D_HH #define G4VECTOR3D_HH diff --git a/source/global/HEPGeometry/include/geomdefs.hh b/source/global/HEPGeometry/include/geomdefs.hh index 7a624ac728..0a5bc0f836 100644 --- a/source/global/HEPGeometry/include/geomdefs.hh +++ b/source/global/HEPGeometry/include/geomdefs.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: geomdefs.hh,v 1.3.4.1 2001/06/28 19:09:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: geomdefs.hh,v 1.4 2001/07/11 10:00:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh b/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh index 2c9505f550..a4464dc31b 100644 --- a/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh +++ b/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ChebyshevApproximation.hh,v 1.3.4.1 2001/06/28 19:09:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ChebyshevApproximation.hh,v 1.4 2001/07/11 10:00:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4DataInterpolation.hh b/source/global/HEPNumerics/include/G4DataInterpolation.hh index 17cf73e72f..3cb85fd853 100644 --- a/source/global/HEPNumerics/include/G4DataInterpolation.hh +++ b/source/global/HEPNumerics/include/G4DataInterpolation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DataInterpolation.hh,v 1.3.4.1 2001/06/28 19:09:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DataInterpolation.hh,v 1.4 2001/07/11 10:00:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh b/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh index 6eb73fa8a6..5cc5021f0e 100644 --- a/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh +++ b/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussChebyshevQ.hh,v 1.3.4.1 2001/06/28 19:09:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussChebyshevQ.hh,v 1.4 2001/07/11 10:00:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussHermiteQ.hh b/source/global/HEPNumerics/include/G4GaussHermiteQ.hh index 85bac31ce6..fe5d6f4b39 100644 --- a/source/global/HEPNumerics/include/G4GaussHermiteQ.hh +++ b/source/global/HEPNumerics/include/G4GaussHermiteQ.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussHermiteQ.hh,v 1.3.4.1 2001/06/28 19:09:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussHermiteQ.hh,v 1.4 2001/07/11 10:00:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussJacobiQ.hh b/source/global/HEPNumerics/include/G4GaussJacobiQ.hh index f0a980104b..719d90360d 100644 --- a/source/global/HEPNumerics/include/G4GaussJacobiQ.hh +++ b/source/global/HEPNumerics/include/G4GaussJacobiQ.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussJacobiQ.hh,v 1.3.4.1 2001/06/28 19:09:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussJacobiQ.hh,v 1.4 2001/07/11 10:00:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh b/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh index 187bed7589..0de6e8dadc 100644 --- a/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh +++ b/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussLaguerreQ.hh,v 1.3.4.1 2001/06/28 19:09:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussLaguerreQ.hh,v 1.4 2001/07/11 10:00:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4GaussLegendreQ.hh b/source/global/HEPNumerics/include/G4GaussLegendreQ.hh index 96eb36e116..49c9cb58b7 100644 --- a/source/global/HEPNumerics/include/G4GaussLegendreQ.hh +++ b/source/global/HEPNumerics/include/G4GaussLegendreQ.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussLegendreQ.hh,v 1.3.4.1 2001/06/28 19:09:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussLegendreQ.hh,v 1.4 2001/07/11 10:00:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4Integrator.hh b/source/global/HEPNumerics/include/G4Integrator.hh index 49f88d62bf..3e7f6fdac1 100644 --- a/source/global/HEPNumerics/include/G4Integrator.hh +++ b/source/global/HEPNumerics/include/G4Integrator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Integrator.hh,v 1.4.4.1 2001/06/28 19:09:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Integrator.hh,v 1.5 2001/07/11 10:00:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4Integrator.icc b/source/global/HEPNumerics/include/G4Integrator.icc index 31229e9b85..b12f694307 100644 --- a/source/global/HEPNumerics/include/G4Integrator.icc +++ b/source/global/HEPNumerics/include/G4Integrator.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Integrator.icc,v 1.6.4.1 2001/06/28 19:09:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Integrator.icc,v 1.7 2001/07/11 10:00:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Implementation of G4Integrator methods. // diff --git a/source/global/HEPNumerics/include/G4PolynomialSolver.hh b/source/global/HEPNumerics/include/G4PolynomialSolver.hh index 7b32b6ff97..03c3ce6039 100644 --- a/source/global/HEPNumerics/include/G4PolynomialSolver.hh +++ b/source/global/HEPNumerics/include/G4PolynomialSolver.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolynomialSolver.hh,v 1.2.2.1 2001/06/28 19:09:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolynomialSolver.hh,v 1.3 2001/07/11 10:00:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PolynomialSolver // diff --git a/source/global/HEPNumerics/include/G4PolynomialSolver.icc b/source/global/HEPNumerics/include/G4PolynomialSolver.icc index 29d680eb12..8453d21559 100644 --- a/source/global/HEPNumerics/include/G4PolynomialSolver.icc +++ b/source/global/HEPNumerics/include/G4PolynomialSolver.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PolynomialSolver.icc,v 1.5.2.1 2001/06/28 19:09:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolynomialSolver.icc,v 1.6 2001/07/11 10:00:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PolynomialSolver // diff --git a/source/global/HEPNumerics/include/G4SimpleIntegration.hh b/source/global/HEPNumerics/include/G4SimpleIntegration.hh index a403626c4d..a042365566 100644 --- a/source/global/HEPNumerics/include/G4SimpleIntegration.hh +++ b/source/global/HEPNumerics/include/G4SimpleIntegration.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SimpleIntegration.hh,v 1.2.8.1 2001/06/28 19:09:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SimpleIntegration.hh,v 1.3 2001/07/11 10:00:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh b/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh index 62f4870ebc..9fb9db0518 100644 --- a/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh +++ b/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VGaussianQuadrature.hh,v 1.3.4.1 2001/06/28 19:09:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VGaussianQuadrature.hh,v 1.4 2001/07/11 10:00:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class description: // diff --git a/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc b/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc index 01688ebee0..c49d76fd6b 100644 --- a/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc +++ b/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ChebyshevApproximation.cc,v 1.2.8.1 2001/06/28 19:09:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ChebyshevApproximation.cc,v 1.3 2001/07/11 10:00:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4ChebyshevApproximation.hh" diff --git a/source/global/HEPNumerics/src/G4DataInterpolation.cc b/source/global/HEPNumerics/src/G4DataInterpolation.cc index 753e2681e6..0e0d3d8ddc 100644 --- a/source/global/HEPNumerics/src/G4DataInterpolation.cc +++ b/source/global/HEPNumerics/src/G4DataInterpolation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DataInterpolation.cc,v 1.3.8.1 2001/06/28 19:09:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DataInterpolation.cc,v 1.4 2001/07/11 10:00:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4DataInterpolation.hh" diff --git a/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc b/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc index 9cf23631f6..8a5233a5e5 100644 --- a/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc +++ b/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussChebyshevQ.cc,v 1.2.8.1 2001/06/28 19:09:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussChebyshevQ.cc,v 1.3 2001/07/11 10:00:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4GaussChebyshevQ.hh" diff --git a/source/global/HEPNumerics/src/G4GaussHermiteQ.cc b/source/global/HEPNumerics/src/G4GaussHermiteQ.cc index 0958cc0241..6ed1838fd3 100644 --- a/source/global/HEPNumerics/src/G4GaussHermiteQ.cc +++ b/source/global/HEPNumerics/src/G4GaussHermiteQ.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussHermiteQ.cc,v 1.3.4.1 2001/06/28 19:09:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussHermiteQ.cc,v 1.4 2001/07/11 10:00:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4GaussHermiteQ.hh" diff --git a/source/global/HEPNumerics/src/G4GaussJacobiQ.cc b/source/global/HEPNumerics/src/G4GaussJacobiQ.cc index 3814297f53..fe0f0a9fcf 100644 --- a/source/global/HEPNumerics/src/G4GaussJacobiQ.cc +++ b/source/global/HEPNumerics/src/G4GaussJacobiQ.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussJacobiQ.cc,v 1.3.4.1 2001/06/28 19:09:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussJacobiQ.cc,v 1.4 2001/07/11 10:00:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4GaussJacobiQ.hh" diff --git a/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc b/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc index 38e9ca1806..7e72eb1e16 100644 --- a/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc +++ b/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussLaguerreQ.cc,v 1.3.4.1 2001/06/28 19:09:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussLaguerreQ.cc,v 1.4 2001/07/11 10:00:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4GaussLaguerreQ.hh" diff --git a/source/global/HEPNumerics/src/G4GaussLegendreQ.cc b/source/global/HEPNumerics/src/G4GaussLegendreQ.cc index 645f72a06c..5299163ad3 100644 --- a/source/global/HEPNumerics/src/G4GaussLegendreQ.cc +++ b/source/global/HEPNumerics/src/G4GaussLegendreQ.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GaussLegendreQ.cc,v 1.2.8.1 2001/06/28 19:09:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GaussLegendreQ.cc,v 1.3 2001/07/11 10:00:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4GaussLegendreQ.hh" diff --git a/source/global/HEPNumerics/src/G4SimpleIntegration.cc b/source/global/HEPNumerics/src/G4SimpleIntegration.cc index b987bab7d7..58e43d9fbf 100644 --- a/source/global/HEPNumerics/src/G4SimpleIntegration.cc +++ b/source/global/HEPNumerics/src/G4SimpleIntegration.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SimpleIntegration.cc,v 1.2.8.1 2001/06/28 19:09:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SimpleIntegration.cc,v 1.3 2001/07/11 10:00:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Implementation file for simple integration methods // diff --git a/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc b/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc index 473556f318..a087d149c6 100644 --- a/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc +++ b/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VGaussianQuadrature.cc,v 1.2.8.1 2001/06/28 19:09:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VGaussianQuadrature.cc,v 1.3 2001/07/11 10:00:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Implementation file for G4VGaussianQuadrature virtual base class // diff --git a/source/global/HEPRandom/include/G4Poisson.hh b/source/global/HEPRandom/include/G4Poisson.hh index 047b81e7d5..dd5dc8ecc9 100644 --- a/source/global/HEPRandom/include/G4Poisson.hh +++ b/source/global/HEPRandom/include/G4Poisson.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Poisson.hh,v 1.5.4.1 2001/06/28 19:09:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Poisson.hh,v 1.6 2001/07/11 10:00:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/HEPRandom/include/Randomize.hh b/source/global/HEPRandom/include/Randomize.hh index 37cb981cac..a183dc4870 100644 --- a/source/global/HEPRandom/include/Randomize.hh +++ b/source/global/HEPRandom/include/Randomize.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: Randomize.hh,v 1.4.4.1 2001/06/28 19:09:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: Randomize.hh,v 1.5 2001/07/11 10:00:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef randomize_h #define randomize_h 1 diff --git a/source/global/History b/source/global/History index 292adf153d..38e69028c3 100644 --- a/source/global/History +++ b/source/global/History @@ -1,4 +1,4 @@ -$Id: History,v 1.81 2001/06/15 12:57:01 gcosmo Exp $ +$Id: History,v 1.92 2001/11/29 16:39:30 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,41 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +November 29, 2001 G.Cosmo (global-V03-02-07) +- Fixed warnings on gcc-3.0.2 for G4DataVector.cc and G4PhysicsVector.cc. +- Minor fixes to G4String[.hh.icc] for avoiding compilation warnings on + WIN32-VC and gcc-3.0.2. + +November 08, 2001 R.Chytracek (global-V03-02-06) +- New optimised revision of G4ReferenceCountedHandle to reflect new design. + Updated also unit test testReferenceCountedHandle.cc. + +October 23, 2001 G.Cosmo (global-V03-02-05) +- Merged changes in "global-V03-02-03" for removal of STLinterface module. + +October 22, 2001 G.Cosmo (global-V03-02-04) +- Note: this tag adds the following fearures to "global-V03-02-02" + (removal of STLinterface is NOT included here!): + o Introduced G4ReferenceCountedHandle templated class. + o Added wrapper in include/g4std. + +October 11, 2001 G.Cosmo (global-V03-02-03) +- Removed STLinterface module: + o renamed cstring[.h.icc] to G4String[.hh.icc] and placed + in management/include. + o renamed ctoken.h to G4Tokenizer.hh and placed in management/include. + +September 17, 2001 H.Kurashige (global-V03-02-02) +- Added Store/Retrieve method to G4DataVector. +- Added Store/Retrieve method to G4OrderedTable. + +July 18, 2001 M.Asai (global-V03-02-01) +- Added a feature of suppressing program abortion due to G4Exception + affected files : G4StateManager.hh G4StateManager.cc G4Exception.cc + +July 16, 2001 G.Cosmo (global-V03-02-00) +- Synchronised with CVS HEAD after inclusion liability disclaimer. + June 15, 2001 G.Cosmo (global-V03-01-02) - globals.hh: removed definition of cbrt() to allow ANSI compilation on Linux-g++ architecture with new compiler gcc-2.95-2. diff --git a/source/global/STLInterface/GNUmakefile b/source/global/STLInterface/GNUmakefile deleted file mode 100644 index b78ea92b6b..0000000000 --- a/source/global/STLInterface/GNUmakefile +++ /dev/null @@ -1,22 +0,0 @@ -# $Id: GNUmakefile,v 1.1 2000/11/03 16:39:29 gunter Exp $ -# -------------------------------------------------------------- -# GNUmakefile for STLInterface. Gunter Folger 3-Nov-2000. -# -------------------------------------------------------------- - -ifndef G4INSTALL - G4INSTALL = ../../.. -endif - -include $(G4INSTALL)/config/architecture.gmk - -G4DUMMY_VARIABLE:=$(shell [ ! -d $(G4INCLUDE)/g4rw ] && mkdir -p $(G4INCLUDE)/g4rw ) - -installed_includes:=$(foreach file,$(wildcard g4rw/*),$(shell test -f $(file) && echo $(file))) - -installed_includes:=$(foreach file,$(installed_includes),$(G4INCLUDE)/$(file)) - -includes: $(installed_includes) - -$(installed_includes): $(G4INCLUDE)/% : % - @cp -p $< $@ - diff --git a/source/global/STLInterface/History b/source/global/STLInterface/History deleted file mode 100644 index b095059bed..0000000000 --- a/source/global/STLInterface/History +++ /dev/null @@ -1,156 +0,0 @@ -$Id: History,v 1.25 2001/05/30 08:16:18 gcosmo Exp $ -------------------------------------------------------------------- - - ========================================================= - Geant4 - an Object-Oriented Toolkit for Simulation in HEP - ========================================================= - - Sub-Category History file - ------------------------- - -This file should be used by G4 developers and category coordinators -to briefly summarize all major modifications introduced in the code -and keep track of all category-tags. -It DOES NOT substitute the CVS log-message one should put at every -committal in the CVS repository ! - - ---------------------------------------------------------- - * Reverse chronological order (last date on top), please * - ---------------------------------------------------------- - - STL Interface - ------------- - -May 30, 2001 G.Cosmo -- Defined 'str_size' as G4std::string::size_type and replaced usage of 'size_t' - in G4String and G4SubString. Fixes problem report #40. - -November 20, 2000 G.Cosmo -- Fixes to remove warnings from "-Wall -ansi -pedantic" g++ compiler options: - o fixed usage of unsigned-int (size_t) for indeces. - -July 21, 2000 G.Cosmo -- STLInterface/cstring.icc: extended buffer for G4String::readLine from - 256 to 1024 characters. - -June 26, 00 G.Cosmo (STLInterface-V01-01-01) -- Fixes for problem report #104: - o defs.h: defined G4RWTHROW(a) to abort() in case G4NO_STD_EXCEPTIONS - is set. - o tpsrtvec.icc, tvordvec.icc: corrected implementation of last() in case - of call to G4RWTHROW(a). - o cstring.icc: defined function G4String::strcasecompare(a,b) which will - NOT invoke the non-ANSI function strcasecmp(a,b) when G4USE_STD_NAMESPACE - is set. -- defs.h: - o fixed memory leaks in destruction of 'str' in destructors and - copy-constructors of G4RWGeneralException and G4RWBoundsErr. - -March 21, 00 G.Cosmo (STLInterface-V01-01-00) -- Forced initialization of vectors' members also for ordered/sorted - collections. Even when using the access operator vector::operator[] - as left-hand operand, it requires the vector to be not empty. Removed - usage of vector::reserve(capacity). - -March 10, 00 G.Cosmo -- Implemented correct behavior for vectors' default constructors, as - expected by the RW interface. - o for pointer/value ordered/sorted collections, an EMPTY STL vector is - created and the vector capacity is set to a G4RWDEFAULT_CAPACITY - using vector::reserve(capacity). No element initialisation is done. - o for pointer/value simple collections, a default constructor creating - and EMPTY vector is implemented; the constructor taking the capacity - as argument, creates an STL vector of the given capacity and explicitly - initialises its elements. Pointers are initialised to zero. - -February 8, 00 G.Cosmo -- cstring.icc: fixed yet another bug in G4String::toUpper() and - G4String::toLower(). Loop over the string characters was causing - bounds overflow. -- tpvector[.h.icc]: added resize(size_t) method which was missing! - -January 28, 00 G.Cosmo (STLInterface-V01-00-00) -- Fixed bug in G4String::toUpper(). - (bug was introduced inadvertently on 20-Oct-1999). -- Added checks for bound-overflows in G4RWTPtrSortedVector::find(). -- Fixed bound-check for operators () and [] in most collections: - () access operators DO NOT perform bound-checking (except if G4DEBUG set); - [] access operators DO perform bound-checking. -- tpvector[.h.icc]: changed 'unsigned int' to 'size_t' in constructors. - Added 'rwsize' and bound-checking for operator[]. -- tvvector.icc: added call to std_vector() in default constructor. -- tpordvec.icc: added std_pvector:: scope for calls to [] operator, - where missing. -- tvordvec.icc: added std_vector:: scope for calls to [] operator, - where missing. - -November 29, 99 G.Cosmo -- Removed references to g4std/string, now removed since not anymore - needed. - -November 26, 99 G.Cosmo (STLInterface-V00-01-04) -- Backed up inline keyword for simple methods in vectors' classes - (test comparison with previous tag). -- Reorganised cstring[.h.icc], no functional changes. - -November 25, 99 G.Cosmo (STLInterface-V00-01-03) -- STLInterface: changes for ISO/ANSI C++ support: - o Reorganised method definitions on wrapper classes; made templated - vectors' methods all not inlined (test). Created .icc files accordingly. - o Changed #define to typedef for std_string and protected in class - scope. Introduced std_vector and std_pvector for collections, - replaced G4std::vector and G4std::vector accordingly. -- Added default comment header to files in STLInterface and class - descriptions for Software Reference Manual. - -November 23, 99 G.Cosmo -- Introduced changes to support ISO/ANSI code: - o Modified STLInterface wrappers to invoke STL containers from G4std - namespace. - o Modified #include statements to invoke g4std wrappers. - o Introduced G4endl and G4cin in G4ios.hh. Modified code accordingly. -- Made destructors for vector wrappers collections in STLInterface virtual. - -16th November 1999 Gabriele Cosmo (STLInterface-V00-01-02) -- Includes global migration RWT->G4RWT: - o Moved all wrapper files from STLInterface/rw to STLInterface/g4rw. - o Changed RW to G4RW everywhere, except: RWBoolean to G4Bool, - RWCString to G4String, RWTokenizer to G4Tokenizer. - o Removed definition of RW_NPOS from defs.h. -- Removed wrappers for Dictionaries: tvhdict.h, tphdict.h, rwstlhash.h. - Removed also hash_map wrappers. - -6th October 1999 Frank Behner (STLInterface-V00-01-01) -- Changed tolower/toupper to old implementation in cstring.h. - -4th August 1999 Frank Behner (STLInterface-V00-01-00) -- Implementation of RWCString::hash(const RWCString&). - -6th July 1999 Gunter Folger -- name for hash_map for WIN32 is hashmap.h ONLY with Object space; - other implementations on WIN32 should use hash_map.h - -5th July 1999 Gunter Folger, John Allison (STLInterface-23) -- Added operator= to tpsrtvec and tvvector. - -28th June 1999 John Allison (STLInterface-21a) -- Fixed rwsize=N in tvalvec::resize(N) (Gunter). - -24th June 1999 John Allison (STLInterface-21) -- Fixed clear problem (which wrongly made STL size 0). -- Added bounds checking. - -23rd June 1999 John Allison (STLInterface-20) -- Tagged Frank's fixes to tpordvec re insertAt(0,...) and similar. - -20th June 1999 John Allison (STLInterface-18) -- Removed G4RWTPtrHashDictionary(size_t n):fhm(n){}. -- Implemented G4RWTPtrHashDictionary::clearAndDestroy of values *and* - keys, protecting against duplicate entries. -- Reimplemented G4RWTPtrOrderedVector::clearAndDestroy with vector - instead of set. -- Prevented G4RWTPtrOrderedVector::resize and G4RWTValOrderedVector::resize - from reducing the size below the number if items. - -20th June 1999 John Allison -- Started this file. diff --git a/source/global/STLInterface/g4rw/defs.h b/source/global/STLInterface/g4rw/defs.h deleted file mode 100644 index 75c4c0130d..0000000000 --- a/source/global/STLInterface/g4rw/defs.h +++ /dev/null @@ -1,139 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: defs.h,v 1.8.4.1 2001/06/28 19:09:57 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// GEANT 4 class header file -// -// G4RWBoundsErr, G4RWGeneralException -// -// Class description: -// -// STL wrapper classes for Errors and Exceptions utilities. -// It implements Rogue Wave RWBoundsErr and RWGeneralException -// signatures but intrinsically decoupled from Rogue Wave. - -//--------------------------------------------------------------- - -#ifndef __defs -#define __defs - -#include -#include -#include "G4Types.hh" - -#define G4RWDEFAULT_CAPACITY (64) - -#ifndef FALSE - #define FALSE 0 -#endif -#ifndef TRUE - #define TRUE 1 -#endif - -#define CLHEP_MAX_MIN_DEFINED -#include - -class G4RWBoundsErr -{ -public: - - G4RWBoundsErr(const char* s,int b=0,int v=0) - { - char btmp[80],vtmp[80]; - sprintf(btmp,"%d",b); - sprintf(vtmp,"%d",v); - str=new char[strlen(s)+8+strlen(btmp)+7+strlen(vtmp)+1]; - strcpy(str,s); - strcat(str,": bound:"); - strcat(str,btmp); - strcat(str," value:"); - strcat(str,vtmp); - } - - G4RWBoundsErr(const G4RWBoundsErr&e) - { - delete [] str; - str=new char[strlen(e.str)+1]; - strcpy(str,e.str); - } - - ~G4RWBoundsErr() - { - delete [] str; - } - - const char * why() const - { - return str; - } - -private: - - char* str; - -}; - -class G4RWGeneralException -{ -public: - - G4RWGeneralException(const char* s) - { - str=new char[strlen(s)+1]; - strcpy(str,s); - } - - G4RWGeneralException(const G4RWGeneralException&e) - { - delete [] str; - str=new char[strlen(e.str)+1]; - strcpy(str,e.str); - } - - ~G4RWGeneralException() - { - delete [] str; - } - - const char * why() const - { - return str; - } - -private: - - char* str; - -}; - -#ifndef G4NO_STD_EXCEPTIONS - #define G4RWTHROW(a) throw a -#else - #define G4RWTHROW(a) abort() -#endif - -#endif diff --git a/source/global/STLInterface/g4rw/tpordvec.h b/source/global/STLInterface/g4rw/tpordvec.h deleted file mode 100644 index 4432e2d105..0000000000 --- a/source/global/STLInterface/g4rw/tpordvec.h +++ /dev/null @@ -1,107 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: tpordvec.h,v 1.7.8.1 2001/06/28 19:09:58 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// GEANT 4 class header file -// -// G4RWTPtrOrderedVector -// -// Class description: -// -// STL wrapper class for Pointer Ordered arrays. It implements -// Rogue Wave RWTPtrOrderedVector signature but intrinsically -// using STL vector. - -//--------------------------------------------------------------- - -#ifndef __tpordvec -#define __tpordvec - -#include "g4std/vector" -#include "g4std/set" -#include "g4std/functional" -#include "g4rw/defs.h" - -template -class G4RWTPtrOrderedVector : public G4std::vector -{ - typedef G4std::vector std_pvector; - typedef typename std_pvector::iterator iterator; - typedef typename std_pvector::const_iterator const_iterator; - -public: - - G4RWTPtrOrderedVector(size_t capacity=G4RWDEFAULT_CAPACITY); - G4RWTPtrOrderedVector(const G4RWTPtrOrderedVector&); - virtual ~G4RWTPtrOrderedVector(); - - inline G4RWTPtrOrderedVector& operator=(const G4RWTPtrOrderedVector&); - - inline T*& operator()(size_t); - inline T* const& operator()(size_t) const; - inline T*& operator[](size_t); - inline T* const& operator[](size_t) const; - - void clearAndDestroy(); - void clear(); - - size_t index (const T*) const; - void resize (size_t); - inline void insert (T*); - void insertAt (size_t, T*); - size_t occurrencesOf (const T*) const; - - T* remove (const T*); - size_t removeAll (const T*); - T* removeAt (size_t); - T* removeFirst (); - T* removeLast (); - - T* find (const T*) const; - inline size_t entries() const; - inline void append (T*); - inline size_t length() const; - inline T*& at (size_t); - inline T*const& at (size_t) const; - G4bool contains (const T*) const; - inline G4bool isEmpty() const; - - inline T* first() const; - inline T* last() const; - inline void prepend(T* const); - -private: - - size_t rwsize; - -}; - -// Include actual implementations of templated class methods. - -#include "g4rw/tpordvec.icc" - -#endif diff --git a/source/global/STLInterface/g4rw/tpordvec.icc b/source/global/STLInterface/g4rw/tpordvec.icc deleted file mode 100644 index d0f17a8915..0000000000 --- a/source/global/STLInterface/g4rw/tpordvec.icc +++ /dev/null @@ -1,375 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: tpordvec.icc,v 1.5.4.1 2001/06/28 19:09:58 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// GEANT 4 class implementation file -// -// G4RWTPtrOrderedVector -//--------------------------------------------------------------- - -template -G4RWTPtrOrderedVector::G4RWTPtrOrderedVector(size_t capacity) - : std_pvector(capacity,(T*)0),rwsize(0){} // Here Rogue-Wave would leave - // pointers T* uninitialised and - // would create an EMPTY vector! -template -G4RWTPtrOrderedVector::G4RWTPtrOrderedVector(const G4RWTPtrOrderedVector& v) - : std_pvector(v),rwsize(v.rwsize){} - -template -G4RWTPtrOrderedVector::~G4RWTPtrOrderedVector(){} - -template -G4RWTPtrOrderedVector& -G4RWTPtrOrderedVector::operator=(const G4RWTPtrOrderedVector& v) -{ - std_pvector::operator=(v), - rwsize=v.rwsize; - return *this; -} - -template -T*& G4RWTPtrOrderedVector::operator()(size_t i) -{ - // temporarly commented; to allow use as left-value rwsize is increased - // #ifdef G4DEBUG - // if(i>=rwsize) - // G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector []",rwsize,i)); - // #endif - if(rwsize<=i && i -T* const& G4RWTPtrOrderedVector::operator()(size_t i) const -{ - #ifdef G4DEBUG - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector []",rwsize,i)); - #endif - return std_pvector::operator[](i); -} - -template -T*& G4RWTPtrOrderedVector::operator[](size_t i) -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector []",rwsize,i)); - return std_pvector::operator[](i); -} - -template -T* const& G4RWTPtrOrderedVector::operator[](size_t i) const -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector const []",rwsize,i)); - return std_pvector::operator[](i); -} - -template -void G4RWTPtrOrderedVector::clear() -{ - // std_pvector::erase(std_pvector::begin(), std_pvector::end()); - rwsize=0; -} - -template -void G4RWTPtrOrderedVector::clearAndDestroy() -{ - G4std::set > tmp; - for (size_t sz=0;sz >::iterator it; - for(it=tmp.begin();it!=tmp.end();it++) - { - delete *it; - } - // std_pvector::erase(std_pvector::begin(), std_pvector::end()); - rwsize=0; -} - -template -size_t G4RWTPtrOrderedVector::index( const T* a ) const -{ - const_iterator i; - size_t ptn = 0; - for (i = std_pvector::begin();ptn -void G4RWTPtrOrderedVector::insert ( T* a ) -{ - if(rwsize -size_t G4RWTPtrOrderedVector::occurrencesOf( const T* a ) const -{ - const_iterator i; - size_t ptn = 0; - size_t sz=0; - for (i = std_pvector::begin();sz -G4bool G4RWTPtrOrderedVector::contains( const T* a ) const -{ - const_iterator i; - size_t ptn=0; - for (i = std_pvector::begin(); ptn -T* G4RWTPtrOrderedVector::remove( const T* a ) -{ - iterator i; - size_t ptn=0; - size_t rwsz=rwsize; - for (i = std_pvector::begin();ptn -size_t G4RWTPtrOrderedVector::removeAll( const T* a ) -{ - iterator i; - size_t ptn = 0; - size_t sz=0; - size_t rwsz=rwsize; - for (i = std_pvector::begin();sz -T* G4RWTPtrOrderedVector::removeAt( size_t i ) -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector removeAt",rwsize,i)); - iterator it=std_pvector::begin(); - for(size_t j=0;j -T* G4RWTPtrOrderedVector::find(const T* a) const -{ - const_iterator i; - size_t ptn=0; - for (i = std_pvector::begin(); ptn -void G4RWTPtrOrderedVector::resize(size_t N) -{ - if(N>std_pvector::size()) - { - size_t e=N-std_pvector::size(); - for(size_t i=0;irwsize) - { - iterator it=std_pvector::begin(); - for(size_t i=0;i -void G4RWTPtrOrderedVector::insertAt ( size_t i, T* a ) -{ - // insertAt throws an exception of type G4RWBoundsErr - // if you try to insert out of range - // - if(i>rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector insertAt",rwsize,i)); - if(rwsizei;j--) - std_pvector::operator[](j)=std_pvector::operator[](j-1); - std_pvector::operator[](i)=a; - rwsize++; - } - else - { - iterator it=std_pvector::begin(); - for(size_t j=0;j -T* G4RWTPtrOrderedVector::removeFirst () -{ - if(rwsize!=0) - { - T* tmp=std_pvector::front(); - std_pvector::erase(std_pvector::begin()); - rwsize--; - return tmp; - } - else - return 0; -} - -template -T* G4RWTPtrOrderedVector::removeLast () -{ - if(rwsize==0) return (T*) 0; - - rwsize--; - T* tmp=std_pvector::operator[](rwsize); - std_pvector::operator[](rwsize)=0; - - return tmp; -} - -template -size_t G4RWTPtrOrderedVector::entries() const -{ - return rwsize; -} - -template -void G4RWTPtrOrderedVector::append ( T* a ) -{ - insert( a ); -} - -template -size_t G4RWTPtrOrderedVector::length() const -{ - return rwsize; -} - -template -T*& G4RWTPtrOrderedVector::at ( size_t i ) -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector at",rwsize,i)); - return std_pvector::operator[](i); -} - -template -T*const& G4RWTPtrOrderedVector::at ( size_t i ) const -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector const at",rwsize,i)); - return std_pvector::operator[](i); -} - -template -G4bool G4RWTPtrOrderedVector::isEmpty() const -{ - return rwsize==0; -} - -template -T* G4RWTPtrOrderedVector::first() const -{ - if(!rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrOrderedVector front",rwsize,0)); - return std_pvector::front(); -} - -template -T* G4RWTPtrOrderedVector::last() const -{ - if(rwsize) - return std_pvector::operator[](rwsize-1); - else - return 0; -} - -template -void G4RWTPtrOrderedVector::prepend(T* const ptr) -{ - std_pvector::insert(std_pvector::begin(),ptr); - rwsize++; -} diff --git a/source/global/STLInterface/g4rw/tpsrtvec.h b/source/global/STLInterface/g4rw/tpsrtvec.h deleted file mode 100644 index f2036cc63d..0000000000 --- a/source/global/STLInterface/g4rw/tpsrtvec.h +++ /dev/null @@ -1,100 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: tpsrtvec.h,v 1.8.8.1 2001/06/28 19:09:58 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// GEANT 4 class header file -// -// G4RWTPtrSortedVector -// -// Class description: -// -// STL wrapper class for Pointer Sorted arrays. It implements -// Rogue Wave RWTPtrSortedVector signature but intrinsically -// using STL vector. - -//--------------------------------------------------------------- - -#ifndef __tpsrtvec -#define __tpsrtvec - -#include "g4rw/rw2stl_algo.h" -#include "g4std/vector" -#include "g4std/algorithm" -#include "g4rw/defs.h" - - -template -class G4RWTPtrSortedVector : public G4std::vector -{ - - typedef G4std::vector std_pvector; - typedef typename std_pvector::iterator iterator; - typedef typename std_pvector::const_iterator const_iterator; - -public: - - G4RWTPtrSortedVector(size_t n=G4RWDEFAULT_CAPACITY); - G4RWTPtrSortedVector(const G4RWTPtrSortedVector&); - virtual ~G4RWTPtrSortedVector(); - - inline G4RWTPtrSortedVector& operator=(const G4RWTPtrSortedVector&); - - inline T* const& operator [] (size_t) const; - inline T* const& operator () (size_t) const; - - inline T*& at (size_t); - inline T* at (size_t) const; - - void clear(); - void clearAndDestroy (); - - T* find (const T*) const; - inline size_t entries () const; - inline void insert (T*); - size_t index (const T* a); - inline G4bool isEmpty () const; - - inline T* const & first () const; - inline T* const & last () const; - - size_t occurrencesOf(const T*) const; - - T* remove (const T*); - size_t removeAll (const T*); - -private: - - size_t rwsize; - G4RW2STL_LessPtr sorter; - -}; - -// Include actual implementations of templated class methods. - -#include "g4rw/tpsrtvec.icc" - -#endif diff --git a/source/global/STLInterface/g4rw/tpsrtvec.icc b/source/global/STLInterface/g4rw/tpsrtvec.icc deleted file mode 100644 index b46bb89054..0000000000 --- a/source/global/STLInterface/g4rw/tpsrtvec.icc +++ /dev/null @@ -1,254 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: tpsrtvec.icc,v 1.7.4.1 2001/06/28 19:09:58 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// GEANT 4 class implementation file -// -// G4RWTPtrSortedVector -//--------------------------------------------------------------- - -template -G4RWTPtrSortedVector::G4RWTPtrSortedVector(size_t n) - : std_pvector(n,(T*)0),rwsize(0){} // Here Rogue-Wave would leave - // pointers T* uninitialised and - // would create an EMPTY vector! -template -G4RWTPtrSortedVector::G4RWTPtrSortedVector(const G4RWTPtrSortedVector& v) - : std_pvector(v), rwsize(v.rwsize){} - -template -G4RWTPtrSortedVector::~G4RWTPtrSortedVector(){} - -template -G4RWTPtrSortedVector& -G4RWTPtrSortedVector::operator=(const G4RWTPtrSortedVector& v) -{ - std_pvector::operator=(v); - rwsize=v.rwsize; - return *this; -} - -template -T* const& G4RWTPtrSortedVector::operator [] (size_t n) const -{ - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrSortedVector",rwsize,n)); - return std_pvector::operator[](n); -} - -template -T* const& G4RWTPtrSortedVector::operator () (size_t n) const -{ - #ifdef G4DEBUG - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrSortedVector",rwsize,n)); - #endif - return std_pvector::operator[](n); -} - -template -T*& G4RWTPtrSortedVector::at(size_t n ) -{ - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrSortedVector",rwsize,n)); - return std_pvector::operator[](n); -} - -template -T* G4RWTPtrSortedVector::at(size_t n ) const -{ - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrSortedVector",rwsize,n)); - return std_pvector::operator[](n); -} - -template -void G4RWTPtrSortedVector::clear() -{ - std_pvector::erase(std_pvector::begin(),std_pvector::end()); - rwsize=0; -} - -template -void G4RWTPtrSortedVector::clearAndDestroy () -{ - size_t sz=0; - for(iterator it=std_pvector::begin();sz -T* G4RWTPtrSortedVector::find (const T* a) const -{ - if(!a || std_pvector::empty() || (rwsize==0)) return 0; - //We are sorted, so try a n log n search - size_t t,d; - size_t u=rwsize,l=0; - do - { - d=(u-l)/2; - t=d+l; - //this asks *a <= (*(*this)[t] whithout requiring operator<= - if(sorter(a,(*this)[t]) || *a==*(*this)[t]) - u=t; - else - l=t; - } - while(d>0); - - if ((u -size_t G4RWTPtrSortedVector::entries () const -{ - return rwsize; -} - -template -void G4RWTPtrSortedVector::insert ( T* a ) -{ - if(rwsize -size_t G4RWTPtrSortedVector::index ( const T* a ) -{ - T*const* ii = std_pvector::begin(); - size_t cnt = 0; - for (T*const* it = ii;cnt -G4bool G4RWTPtrSortedVector::isEmpty () const -{ - return rwsize==0; -} - -template -T* const & G4RWTPtrSortedVector::first () const -{ - if(!rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrSortedVector first()",rwsize,0)); - return std_pvector::front(); -} - -template -T* const & G4RWTPtrSortedVector::last () const -{ - if(!rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrSortedVector last()",rwsize,0)); - return std_pvector::operator[](rwsize-1); -} - -template -size_t G4RWTPtrSortedVector::occurrencesOf(const T* a) const -{ - size_t cnt = 0; - size_t sz = 0; - for (const_iterator it = std_pvector::begin();sz -T* G4RWTPtrSortedVector::remove ( const T* a ) -{ - iterator retval; - size_t sz=0; - for(retval=std_pvector::begin();sz -size_t G4RWTPtrSortedVector::removeAll ( const T* a) -{ - iterator s=std_pvector::end(); - iterator e=std_pvector::end(); - iterator r; - size_t sz=0; - G4int i=0; - for(r=std_pvector::begin();sz -G4RWTPtrVector::G4RWTPtrVector () - : std_pvector(), rwsize(0){} - -template -G4RWTPtrVector::G4RWTPtrVector (size_t n) - : std_pvector(n, (T*)0), rwsize(n){} // Here Rogue-Wave would leave - // pointers T* uninitialised. -template -G4RWTPtrVector::G4RWTPtrVector (size_t n, T* const & iPtr) - : std_pvector(n, iPtr), rwsize(n){} - -template -G4RWTPtrVector::G4RWTPtrVector (const G4RWTPtrVector& iPtr) - : std_pvector(iPtr), rwsize(iPtr.rwsize){} - -template -G4RWTPtrVector::~G4RWTPtrVector(){} - -template -G4RWTPtrVector& G4RWTPtrVector::operator = (T* p) -{ - rwsize=0; - for(iterator i = std_pvector::begin(); i != std_pvector::end(); ++i) - { - *i = p; rwsize++; - } - return *this; -} - -template -T* G4RWTPtrVector::operator () ( size_t n ) const -{ - #ifdef G4DEBUG - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrVector operator()",rwsize,n)); - #endif - return std_pvector::operator[](n); -} - -template -T*& G4RWTPtrVector::operator () ( size_t n ) -{ - // temporarly commented; to allow use as left-value rwsize is increased - // #ifdef G4DEBUG - // if(n>=rwsize) - // G4RWTHROW(G4RWBoundsErr("G4RWTPtrVector operator()",rwsize,n)); - // #endif - if(rwsize<=n && n -T* G4RWTPtrVector::operator [] ( size_t n ) const -{ - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrVector",rwsize,n)); - return std_pvector::operator[](n); -} - -template -T*& G4RWTPtrVector::operator [] ( size_t n ) -{ - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTPtrVector",rwsize,n)); - return std_pvector::operator[](n); -} - -template -T* const * G4RWTPtrVector::data() const -{ - return &(std_pvector::front()); -} - -template -size_t G4RWTPtrVector::length() -{ - return std_pvector::size(); -} - -template -void G4RWTPtrVector::resize ( size_t n ) -{ - if(n>std_pvector::size()) - { - size_t e=n-std_pvector::size(); - for(size_t i=0;i -void G4RWTPtrVector::reshape( size_t n ) -{ - std_pvector::resize(n); - rwsize=n; -} diff --git a/source/global/STLInterface/g4rw/tvordvec.h b/source/global/STLInterface/g4rw/tvordvec.h deleted file mode 100644 index 1d7f33f0f5..0000000000 --- a/source/global/STLInterface/g4rw/tvordvec.h +++ /dev/null @@ -1,106 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: tvordvec.h,v 1.8.4.1 2001/06/28 19:09:59 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// GEANT 4 class header file -// -// G4RWTValOrderedVector -// -// Class description: -// -// STL wrapper class for Value Ordered arrays. It implements -// Rogue Wave RWTValOrderedVector signature but intrinsically -// using STL vector. - -//--------------------------------------------------------------- - -#ifndef __tvordvec -#define __tvordvec - -#include "g4std/vector" -#include "g4std/algorithm" - -#include "g4rw/defs.h" -#include "g4rw/tvvector.h" - -template -class G4RWTValOrderedVector : public G4std::vector -{ - - typedef G4std::vector std_vector; - typedef typename std_vector::iterator iterator; - typedef typename std_vector::const_iterator const_iterator; - -public: - - G4RWTValOrderedVector(size_t capacity=G4RWDEFAULT_CAPACITY); - G4RWTValOrderedVector(const G4RWTValOrderedVector&); - virtual ~G4RWTValOrderedVector(); - - inline G4RWTValOrderedVector& operator=(const G4RWTValOrderedVector&); - - inline T& operator()(size_t); - inline const T& operator()(size_t) const; - inline T& operator[](size_t); - inline const T& operator[](size_t) const; - - inline T& at (size_t); - inline T at (size_t) const; - - void resize (size_t); - void clear( void ); - G4bool contains(const T) const; - inline size_t length() const; - size_t index (const T&); - - inline G4bool insert (const T&); - void insertAt (size_t, const T&); - - size_t occurrencesOf (const T&) const; - - G4bool remove (const T&); - size_t removeAll (const T&); - T removeAt (size_t); - - size_t entries () const; - inline void append (const T&); - - inline T first() const; - inline T last() const; - -private: - - size_t rwsize; - -}; - -// Include actual implementations of templated class methods. - -#include "g4rw/tvordvec.icc" - -#endif - diff --git a/source/global/STLInterface/g4rw/tvordvec.icc b/source/global/STLInterface/g4rw/tvordvec.icc deleted file mode 100644 index 0062c17414..0000000000 --- a/source/global/STLInterface/g4rw/tvordvec.icc +++ /dev/null @@ -1,299 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: tvordvec.icc,v 1.6.4.1 2001/06/28 19:09:59 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// GEANT 4 class header file -// -// G4RWTValOrderedVector -//--------------------------------------------------------------- - -template -G4RWTValOrderedVector::G4RWTValOrderedVector(size_t capacity) - : std_vector(capacity, T()),rwsize(0){} // Here Rogue-Wave would leave - // members T uninitialised and - // would create an EMPTY vector! -template -G4RWTValOrderedVector::G4RWTValOrderedVector(const G4RWTValOrderedVector& v) - : std_vector(v),rwsize(v.rwsize){} - -template -G4RWTValOrderedVector::~G4RWTValOrderedVector(){} - -template -G4RWTValOrderedVector& -G4RWTValOrderedVector::operator=(const G4RWTValOrderedVector& v) -{ - std_vector::operator=(v); - rwsize=v.rwsize; - return *this; -} - -template -T& G4RWTValOrderedVector::operator()(size_t i) -{ - // temporarly commented; to allow use as left-value rwsize is increased - // #ifdef G4DEBUG - // if(i>=rwsize) - // G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector ()",rwsize,i)); - // #endif - if(rwsize<=i && i -const T& G4RWTValOrderedVector::operator()(size_t i) const -{ - #ifdef G4DEBUG - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector const()",rwsize,i)); - #endif - return std_vector::operator[](i); -} - -template -T& G4RWTValOrderedVector::operator[](size_t i) -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector []",rwsize,i)); - return std_vector::operator[](i); -} - -template -const T& G4RWTValOrderedVector::operator[](size_t i) const -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector const []",rwsize,i)); - return std_vector::operator[](i); -} - -template -T& G4RWTValOrderedVector::at(size_t n) -{ - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector at",rwsize,n)); - return std_vector::operator[](n); -} - -template -T G4RWTValOrderedVector::at(size_t n ) const -{ - if(n>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector const at",rwsize,n)); - return std_vector::operator[](n); -} - -template -void G4RWTValOrderedVector::clear( void ) -{ - //std_vector::erase(std_vector::begin(), std_vector::end()); - for(size_t i=0;i -size_t G4RWTValOrderedVector::length() const -{ - return rwsize; -} - -template -size_t G4RWTValOrderedVector::entries () const -{ - return rwsize; -} - -template -void G4RWTValOrderedVector::append ( const T& a ) -{ - insert ( a ); -} - -template -T G4RWTValOrderedVector::first() const -{ - if(!rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector first",rwsize,0)); - return std_vector::front(); -} - -template -T G4RWTValOrderedVector::last() const -{ - if(!rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector last",rwsize,0)); - return std_vector::operator[](rwsize-1); -} - -template -size_t G4RWTValOrderedVector::index( const T& a ) -{ - iterator i; - size_t ptn = 0; - for (i = std_vector::begin();ptn -size_t G4RWTValOrderedVector::occurrencesOf( const T& a ) const -{ - const_iterator i; - size_t ptn = 0; - size_t sz=0; - for (i = std_vector::begin(); sz -G4bool G4RWTValOrderedVector::remove( const T& a ) -{ - iterator i; - size_t sz=0; - size_t rwsz=rwsize; - for (i = std_vector::begin(); sz -size_t G4RWTValOrderedVector::removeAll( const T& a ) -{ - iterator i; - size_t ptn = 0; - size_t sz=0; - size_t rwsz=rwsize; - for (i = std_vector::begin();sz -T G4RWTValOrderedVector::removeAt( size_t i ) -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector removeAt",rwsize,i)); - T tmp = std_vector::operator[](i); - iterator it=std_vector::begin(); - for(size_t j=0;j -void G4RWTValOrderedVector::resize(size_t N) -{ - if(N>std_vector::size()) - { - size_t e=N-std_vector::size(); - for(size_t i=0;irwsize ) - { - iterator it=std_vector::begin(); - for(size_t i=0;i -G4bool G4RWTValOrderedVector::contains( const T a ) const -{ - const_iterator i; - size_t sz=0; - for (i = std_vector::begin();sz -G4bool G4RWTValOrderedVector::insert ( const T& a ) -{ - if(rwsizestd_vector::operator[](rwsize)=a; - rwsize++; - } - else - { - std_vector::push_back(a); - rwsize=std_vector::size(); - } - return true; -} - -// insertAt throws an exception of type G4RWBoundsErr if you try -// to insert out of range -// -template -void G4RWTValOrderedVector::insertAt ( size_t i, const T& a ) -{ - if(i>rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValOrderedVector insertAt",rwsize,i)); - if(rwsizei;j--) - std_vector::operator[](j)=this->std_vector::operator[](j-1); - std_vector::operator[](i)=a; - rwsize++; - } - else - { - iterator it=std_vector::begin(); - for(size_t j=0;j -class G4RWTValVector : public G4std::vector -{ - - typedef G4std::vector std_vector; - typedef typename std_vector::iterator iterator; - typedef typename std_vector::const_iterator const_iterator; - -public: - - G4RWTValVector (); - G4RWTValVector (size_t); - G4RWTValVector (size_t, const T&); - G4RWTValVector (const G4RWTValVector&); - virtual ~G4RWTValVector(); - - inline G4RWTValVector& operator= (const G4RWTValVector&); - - inline T& operator()(size_t); - inline const T& operator()(size_t) const; - inline T& operator[](size_t); - inline const T& operator[](size_t) const; - - inline size_t length() const; - - inline const T* data() const; - void resize(size_t); - inline void reshape(size_t); - inline const T& ref(size_t) const; - -private: - - size_t rwsize; - -}; - -// Include actual implementations of templated class methods. - -#include "g4rw/tvvector.icc" - -#endif diff --git a/source/global/STLInterface/g4rw/tvvector.icc b/source/global/STLInterface/g4rw/tvvector.icc deleted file mode 100644 index 5ab02a4a76..0000000000 --- a/source/global/STLInterface/g4rw/tvvector.icc +++ /dev/null @@ -1,141 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: tvvector.icc,v 1.4.4.1 2001/06/28 19:09:59 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -//--------------------------------------------------------------- -// GEANT 4 class header file -// -// G4RWTValVector -//--------------------------------------------------------------- - -template -G4RWTValVector::G4RWTValVector () - : std_vector(), rwsize(0){} - -template -G4RWTValVector::G4RWTValVector (size_t n) - : std_vector(n,T()), rwsize(n){} - -template -G4RWTValVector::G4RWTValVector (size_t n, const T& ival) - : std_vector(n,ival), rwsize(n){} - -template -G4RWTValVector::G4RWTValVector (const G4RWTValVector& ival) - : std_vector(ival), rwsize(ival.rwsize){} - -template -G4RWTValVector::~G4RWTValVector(){} - -template -G4RWTValVector& -G4RWTValVector::operator= (const G4RWTValVector& v) -{ - std_vector::operator=(v); - rwsize=v.rwsize; - return *this; -} - -template -size_t G4RWTValVector::length() const -{ - return std_vector::size(); -} - -template -T& G4RWTValVector::operator()(size_t i) -{ - // temporarly commented; to allow use as left-value rwsize is increased - // #ifdef G4DEBUG - // if(i>=rwsize) - // G4RWTHROW(G4RWBoundsErr("G4RWTValVector operator()",rwsize,i)); - // #endif - if(rwsize<=i && i -const T& G4RWTValVector::operator()(size_t i) const -{ - #ifdef G4DEBUG - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValVector operator()",rwsize,i)); - #endif - return std_vector::operator[](i); -} - -template -T& G4RWTValVector::operator[](size_t i) -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValVector operator[]",rwsize,i)); - return std_vector::operator[](i); -} - -template -const T& G4RWTValVector::operator[](size_t i) const -{ - if(i>=rwsize) - G4RWTHROW(G4RWBoundsErr("G4RWTValVector const operator[]",rwsize,i)); - return std_vector::operator[](i); -} - -template -const T* G4RWTValVector::data() const -{ - return &(std_vector::front()); -} - -template -void G4RWTValVector::resize(size_t N) -{ - if(N>std_vector::size()) - { - size_t e=N-std_vector::size(); - for(size_t i=0;i -void G4RWTValVector::reshape(size_t n) -{ - resize(n); -} - -template -const T& G4RWTValVector::ref(size_t i) const -{ - return std_vector::operator[](i); -} diff --git a/source/global/management/include/G4Allocator.hh b/source/global/management/include/G4Allocator.hh index d182e96905..7265babceb 100644 --- a/source/global/management/include/G4Allocator.hh +++ b/source/global/management/include/G4Allocator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Allocator.hh,v 1.6.2.1 2001/06/28 19:10:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Allocator.hh,v 1.7 2001/07/11 10:00:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4AllocatorPage.hh b/source/global/management/include/G4AllocatorPage.hh index 5bdbb56a9b..155bdfd836 100644 --- a/source/global/management/include/G4AllocatorPage.hh +++ b/source/global/management/include/G4AllocatorPage.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AllocatorPage.hh,v 1.2.8.1 2001/06/28 19:10:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AllocatorPage.hh,v 1.3 2001/07/11 10:00:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4AllocatorUnit.hh b/source/global/management/include/G4AllocatorUnit.hh index 8c55e7c2c5..25b4455066 100644 --- a/source/global/management/include/G4AllocatorUnit.hh +++ b/source/global/management/include/G4AllocatorUnit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AllocatorUnit.hh,v 1.2.8.1 2001/06/28 19:10:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AllocatorUnit.hh,v 1.3 2001/07/11 10:00:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4ApplicationState.hh b/source/global/management/include/G4ApplicationState.hh index d9cb016004..fbf7755919 100644 --- a/source/global/management/include/G4ApplicationState.hh +++ b/source/global/management/include/G4ApplicationState.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ApplicationState.hh,v 1.1.4.1 2001/06/28 19:10:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ApplicationState.hh,v 1.2 2001/07/11 10:00:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4APPLICATIONSTATE_H diff --git a/source/global/management/include/G4DataVector.hh b/source/global/management/include/G4DataVector.hh index c85cccdc7b..1f8ca87b8c 100644 --- a/source/global/management/include/G4DataVector.hh +++ b/source/global/management/include/G4DataVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DataVector.hh,v 1.8.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DataVector.hh,v 1.10 2001/09/17 08:17:56 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -41,6 +41,9 @@ #include "globals.hh" #include "g4std/vector" +#include "G4ios.hh" +#include "g4std/iostream" +#include "g4std/fstream" class G4DataVector : public G4std::vector { @@ -74,6 +77,14 @@ class G4DataVector : public G4std::vector inline size_t removeAll(const G4double&); // Remove all elements same as given value + + enum {T_G4DataVector = 100}; + + G4bool Store(G4std::ofstream& fOut, G4bool ascii=false); + G4bool Retrieve(G4std::ifstream& fIn, G4bool ascii=false); + // To store/retrieve persistent data to/from file streams. + + friend G4std::ostream& operator<<(G4std::ostream&, const G4DataVector&); }; inline @@ -155,3 +166,7 @@ size_t G4DataVector::removeAll(const G4double& a) } #endif + + + + diff --git a/source/global/management/include/G4FastVector.hh b/source/global/management/include/G4FastVector.hh index 3cf83d4450..572317e331 100644 --- a/source/global/management/include/G4FastVector.hh +++ b/source/global/management/include/G4FastVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastVector.hh,v 1.3.8.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastVector.hh,v 1.4 2001/07/11 10:00:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4LPhysicsFreeVector.hh b/source/global/management/include/G4LPhysicsFreeVector.hh index 3d4681795d..752f18fd33 100644 --- a/source/global/management/include/G4LPhysicsFreeVector.hh +++ b/source/global/management/include/G4LPhysicsFreeVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LPhysicsFreeVector.hh,v 1.6.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LPhysicsFreeVector.hh,v 1.7 2001/07/11 10:00:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------------ diff --git a/source/global/management/include/G4LPhysicsFreeVector.icc b/source/global/management/include/G4LPhysicsFreeVector.icc index be15889c40..c1e3d81bdb 100644 --- a/source/global/management/include/G4LPhysicsFreeVector.icc +++ b/source/global/management/include/G4LPhysicsFreeVector.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LPhysicsFreeVector.icc,v 1.4.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LPhysicsFreeVector.icc,v 1.5 2001/07/11 10:00:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------------ diff --git a/source/global/management/include/G4OrderedTable.hh b/source/global/management/include/G4OrderedTable.hh index 4e113ff151..a3d5877b34 100644 --- a/source/global/management/include/G4OrderedTable.hh +++ b/source/global/management/include/G4OrderedTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OrderedTable.hh,v 1.7.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OrderedTable.hh,v 1.9 2001/09/17 08:17:57 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -32,6 +32,11 @@ // Jan. 2001 : H.Kurashige // - G4ValVector is replaced with G4DataVector // - Migrated to G4std::vector. +// Sep. 2001 : H.Kurashige +// - Add +// G4bool Store(const G4String&, G4bool) +// G4bool Retrieve(const G4String&, G4bool); +// ostream& operator<<(ostream&, G4OrderedTable&) // // Class Description: // @@ -45,7 +50,7 @@ #include "globals.hh" #include "g4std/vector" -#include "G4DataVector.hh" +class G4DataVector; class G4OrderedTable : public G4std::vector { @@ -65,8 +70,20 @@ class G4OrderedTable : public G4std::vector inline void clearAndDestroy(); // Removes all elements and deletes all non-NULL pointers + G4bool Store(const G4String& filename, G4bool ascii=false); + // Stores OrderedTable in a file (returns false in case of failure). + + G4bool Retrieve(const G4String& filename, G4bool ascii=false); + // Retrieves OrderedTable from a file (returns false in case of failure). + + friend G4std::ostream& operator<<(G4std::ostream& out, G4OrderedTable& table); + }; +typedef G4OrderedTable::iterator G4OrderedTableIterator; + +#include "G4DataVector.hh" + inline G4OrderedTable::G4OrderedTable() : G4std::vector() @@ -98,3 +115,5 @@ void G4OrderedTable::clearAndDestroy() #endif + + diff --git a/source/global/management/include/G4PhysicsFreeVector.hh b/source/global/management/include/G4PhysicsFreeVector.hh index 15a820de69..6c05efdb27 100644 --- a/source/global/management/include/G4PhysicsFreeVector.hh +++ b/source/global/management/include/G4PhysicsFreeVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsFreeVector.hh,v 1.7.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsFreeVector.hh,v 1.8 2001/07/11 10:00:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsLinearVector.hh b/source/global/management/include/G4PhysicsLinearVector.hh index 1e2ce4b0da..20b4e08b0f 100644 --- a/source/global/management/include/G4PhysicsLinearVector.hh +++ b/source/global/management/include/G4PhysicsLinearVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsLinearVector.hh,v 1.6.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsLinearVector.hh,v 1.7 2001/07/11 10:00:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsLnVector.hh b/source/global/management/include/G4PhysicsLnVector.hh index d17f7dd2ae..a4194b5635 100644 --- a/source/global/management/include/G4PhysicsLnVector.hh +++ b/source/global/management/include/G4PhysicsLnVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsLnVector.hh,v 1.7.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsLnVector.hh,v 1.8 2001/07/11 10:00:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsLogVector.hh b/source/global/management/include/G4PhysicsLogVector.hh index 7d12a9b247..b9d1933236 100644 --- a/source/global/management/include/G4PhysicsLogVector.hh +++ b/source/global/management/include/G4PhysicsLogVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsLogVector.hh,v 1.6.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsLogVector.hh,v 1.7 2001/07/11 10:00:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsOrderedFreeVector.hh b/source/global/management/include/G4PhysicsOrderedFreeVector.hh index 36d0fe2453..8117bcd239 100644 --- a/source/global/management/include/G4PhysicsOrderedFreeVector.hh +++ b/source/global/management/include/G4PhysicsOrderedFreeVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsOrderedFreeVector.hh,v 1.7.2.1 2001/06/28 19:10:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsOrderedFreeVector.hh,v 1.8 2001/07/11 10:00:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // PhysicsOrderedFreeVector Class Definition diff --git a/source/global/management/include/G4PhysicsOrderedFreeVector.icc b/source/global/management/include/G4PhysicsOrderedFreeVector.icc index 9c7cf9bf05..fe7562a610 100644 --- a/source/global/management/include/G4PhysicsOrderedFreeVector.icc +++ b/source/global/management/include/G4PhysicsOrderedFreeVector.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsOrderedFreeVector.icc,v 1.5.2.1 2001/06/28 19:10:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsOrderedFreeVector.icc,v 1.6 2001/07/11 10:00:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // PhysicsOrderedFreeVector Class Inline Functions Definitions diff --git a/source/global/management/include/G4PhysicsTable.hh b/source/global/management/include/G4PhysicsTable.hh index 854b09e6b1..8a81e74b51 100644 --- a/source/global/management/include/G4PhysicsTable.hh +++ b/source/global/management/include/G4PhysicsTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsTable.hh,v 1.10.2.1 2001/06/28 19:10:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsTable.hh,v 1.11 2001/07/11 10:00:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4PhysicsTable.icc b/source/global/management/include/G4PhysicsTable.icc index 4bf0dc3203..44258c8fad 100644 --- a/source/global/management/include/G4PhysicsTable.icc +++ b/source/global/management/include/G4PhysicsTable.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsTable.icc,v 1.3.2.1 2001/06/28 19:10:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsTable.icc,v 1.4 2001/07/11 10:00:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/include/G4PhysicsVector.hh b/source/global/management/include/G4PhysicsVector.hh index 36fcb0b9fe..bcb65b3798 100644 --- a/source/global/management/include/G4PhysicsVector.hh +++ b/source/global/management/include/G4PhysicsVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsVector.hh,v 1.9.2.1 2001/06/28 19:10:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsVector.hh,v 1.10 2001/07/11 10:00:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsVector.icc b/source/global/management/include/G4PhysicsVector.icc index a2e5aa4f9d..aa6a777a67 100644 --- a/source/global/management/include/G4PhysicsVector.icc +++ b/source/global/management/include/G4PhysicsVector.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsVector.icc,v 1.6.2.1 2001/06/28 19:10:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsVector.icc,v 1.7 2001/07/11 10:00:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/global/management/include/G4PhysicsVectorType.hh b/source/global/management/include/G4PhysicsVectorType.hh index 725eadfa92..d8fcae5f14 100644 --- a/source/global/management/include/G4PhysicsVectorType.hh +++ b/source/global/management/include/G4PhysicsVectorType.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsVectorType.hh,v 1.2.2.1 2001/06/28 19:10:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsVectorType.hh,v 1.3 2001/07/11 10:00:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- // diff --git a/source/global/management/include/G4ReferenceCountedHandle.hh b/source/global/management/include/G4ReferenceCountedHandle.hh new file mode 100755 index 0000000000..01262ed5db --- /dev/null +++ b/source/global/management/include/G4ReferenceCountedHandle.hh @@ -0,0 +1,319 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ReferenceCountedHandle.hh,v 1.14 2001/11/07 09:35:24 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// Class G4ReferenceCountedHandle +// +// Class description: +// +// A class to provide reference counting mechanism. +// It is a templated class, acting as a smart pointer, +// wrapping the type to be counted. It performs the reference counting +// during the life-time of the counted object. When its count reaches zero +// the counted object is destroyed by explicit call to its destructor. +// This class provides overloaded operators *() and ->() to allow similar +// syntax as for the normal "dumb" pointers. +// The basic rule for the use of this class is that a handle must always +// be exchanged by reference never dinamically allocated (i.e. never +// instantiated using 'new'). +// The validity of a smart pointer object can be verified by using the +// operator !() or operator bool(). I.e.: +// if( !smartPtrObj ) { ... } // Problem! We must initialize it first! +// else { ... } // OK! +// Trying to 'delete' a smart pointer object will generate a compilation +// error (since we're dealing with objects, not pointers!). + +// Author: Radovan Chytracek, CERN (Radovan.Chytracek@cern.ch) +// Version: 3.0 +// Date: November 2001 +// ---------------------------------------------------------------------- +#ifndef _G4REFERENCECOUNTEDHANDLE_H_ +#define _G4REFERENCECOUNTEDHANDLE_H_ 1 + +#include "G4Allocator.hh" + +template class G4CountedObject; + +template +class G4ReferenceCountedHandle +{ + +public: // with description + + inline G4ReferenceCountedHandle( X* rep = 0 ); + // Constructor. + + inline G4ReferenceCountedHandle( const G4ReferenceCountedHandle& right ); + // Copy constructor. + + inline ~G4ReferenceCountedHandle(); + // Destructor. + + inline G4ReferenceCountedHandle& + operator =( const G4ReferenceCountedHandle& right ); + // Assignment operator by reference. + + inline G4ReferenceCountedHandle& operator =( X* objPtr ); + // Assignment operator by pointer. + + inline unsigned int Count() const; + // Forward to Counter class. + + inline X* operator ->() const; + // Operator -> allowing the access to counted object. + // The check for 0-ness is left out for performance reasons, + // see operator () below. + // May be called on initialised smart-pointer only! + + inline G4bool operator !() const; + // Validity test operator. + + inline operator bool() const; + // Boolean operator. + + inline X* operator ()() const; + // Functor operator (for convenience). + + // There is no provision that this class is subclassed. + // If it is subclassed & new data members are added then the + // following "new" & "delete" will fail and give errors. + // + inline void* operator new( size_t ); + // Operator new defined for G4Allocator. + + inline void operator delete( void *pObj ); + // Operator delete defined for G4Allocator. + +public: + +#ifdef G4RF_DEBUG + void* operator new( size_t, void *pObj ); + // This is required on some compilers (Windows/VC++, Linux/g++) when this + // class is used in the context of STL container. It generates a warning + // saying something about not existing correspondent delete... +#endif + +private: + + G4CountedObject* fObj; + // The object subject to reference counting. + + static G4Allocator > aRCHAllocator; +}; + +template +class G4CountedObject +{ + + friend class G4ReferenceCountedHandle; + +public: // with description + + G4CountedObject( X* pObj = 0 ); + // Constructor. + + ~G4CountedObject(); + // Destructor. + + inline void AddRef(); + // Increase the count. + + inline void Release(); + // Decrease the count and if zero destroy itself. + + // There is no provision that this class is subclassed. + // If it is subclassed & new data members are added then the + // following "new" & "delete" will fail and give errors. + // + inline void* operator new( size_t ); + // Operator new defined for G4Allocator. + + inline void operator delete( void *pObj ); + // operator delete defined for G4Allocator. + +private: + + unsigned int fCount; + // Reference counter. + X* fRep; + // The counted object. + + static G4Allocator > aCountedObjectAllocator; +}; + + +// --------- G4CountedObject Inline function definitions --------- + +template +G4CountedObject::G4CountedObject( X* pObj ) + : fCount(0), fRep( pObj ) +{ + if( pObj != 0 ) { + fCount = 1; + } +} + +template +G4CountedObject::~G4CountedObject() +{ + delete fRep; +} + +template +void G4CountedObject::AddRef() +{ + ++fCount; +} + +template +void G4CountedObject::Release() +{ + if( --fCount == 0 ) delete this; +} + +template +void* G4CountedObject::operator new( size_t ) +{ + return( (void *)aCountedObjectAllocator.MallocSingle() ); +} + +template +void G4CountedObject::operator delete( void *pObj ) +{ + aCountedObjectAllocator.FreeSingle( (G4CountedObject*)pObj ); +} + +// --------- G4ReferenceCountedHandle Inline function definitions --------- + +template +G4ReferenceCountedHandle:: + G4ReferenceCountedHandle( X* rep ) + : fObj( 0 ) +{ + if( rep != 0 ) { + fObj = new G4CountedObject( rep ); + } +} + +template +G4ReferenceCountedHandle:: + G4ReferenceCountedHandle( const G4ReferenceCountedHandle& right ) + : fObj( right.fObj ) +{ + fObj->AddRef(); +} + +template +G4ReferenceCountedHandle::~G4ReferenceCountedHandle() +{ + if( fObj ) fObj->Release(); +} + +template +G4ReferenceCountedHandle& G4ReferenceCountedHandle:: + operator =( const G4ReferenceCountedHandle& right ) +{ + if( fObj != right.fObj ) { + if( fObj ) + fObj->Release(); + this->fObj = right.fObj; + fObj->AddRef(); + } + return *this; +} + +template +G4ReferenceCountedHandle& G4ReferenceCountedHandle:: + operator =( X* objPtr ) +{ + if( fObj ) + fObj->Release(); + this->fObj = new G4CountedObject( objPtr ); + return *this; +} + +template +unsigned int G4ReferenceCountedHandle::Count() const +{ + return( fObj ? fObj->fCount : 0 ); +} + +template +X* G4ReferenceCountedHandle::operator ->() const +{ + return( fObj ? fObj->fRep : 0 ); +} + +template +G4bool G4ReferenceCountedHandle::operator !() const +{ + return( ( !fObj ) ? true : false ); +} + +template +G4ReferenceCountedHandle::operator bool() const +{ + return( ( fObj ) ? true : false ); +} + +template +X* G4ReferenceCountedHandle::operator ()() const +{ + return( fObj ? fObj->fRep : 0 ); +} + +template +void* G4ReferenceCountedHandle::operator new( size_t ) +{ + return( (void *)aRCHAllocator.MallocSingle() ); +} + +template +void G4ReferenceCountedHandle::operator delete( void *pObj ) +{ + aRCHAllocator.FreeSingle( (G4ReferenceCountedHandle*)pObj ); +} + +#ifdef G4RF_DEBUG +template +void* G4ReferenceCountedHandle::operator new( size_t, void *pObj ) +{ + return pObj; +} +#endif + +// ------------------ Static allocators definitions ----------------- + +template +G4Allocator > + G4CountedObject::aCountedObjectAllocator; + +template +G4Allocator > + G4ReferenceCountedHandle::aRCHAllocator; + +#endif // _G4REFERENCECOUNTEDHANDLE_H_ + diff --git a/source/global/management/include/G4RotationMatrix.hh b/source/global/management/include/G4RotationMatrix.hh index 177ca52cd4..632aa69c08 100644 --- a/source/global/management/include/G4RotationMatrix.hh +++ b/source/global/management/include/G4RotationMatrix.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RotationMatrix.hh,v 1.2.8.1 2001/06/28 19:10:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RotationMatrix.hh,v 1.3 2001/07/11 10:00:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/include/G4SIunits.hh b/source/global/management/include/G4SIunits.hh index 6757a735f8..8420a180cc 100644 --- a/source/global/management/include/G4SIunits.hh +++ b/source/global/management/include/G4SIunits.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SIunits.hh,v 1.1.2.1 2001/06/28 19:10:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SIunits.hh,v 1.2 2001/07/11 10:00:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------------------------------------------------------------- // diff --git a/source/global/management/include/G4StateManager.hh b/source/global/management/include/G4StateManager.hh index bc26c35474..fbba79e150 100644 --- a/source/global/management/include/G4StateManager.hh +++ b/source/global/management/include/G4StateManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StateManager.hh,v 1.3.2.2 2001/06/28 20:18:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StateManager.hh,v 1.5 2001/07/18 17:59:22 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -120,6 +120,11 @@ private: G4ApplicationState thePreviousState; G4std::vector theDependentsList; G4VStateDependent* theBottomDependent; + G4int suppressAbortion; + +public: + inline void SetSuppressAbortion(G4int i) { suppressAbortion = i; } + inline G4int GetSuppressAbortion() const { return suppressAbortion; } }; diff --git a/source/global/STLInterface/g4rw/cstring.h b/source/global/management/include/G4String.hh similarity index 93% rename from source/global/STLInterface/g4rw/cstring.h rename to source/global/management/include/G4String.hh index f46b08a9ab..f6ee3376bb 100644 --- a/source/global/STLInterface/g4rw/cstring.h +++ b/source/global/management/include/G4String.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: cstring.h,v 1.10.2.1 2001/06/28 19:09:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4String.hh,v 1.2 2001/11/29 14:45:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -33,25 +33,28 @@ // Class description: // // Definition of a Geant4 string. -// It's currently implemented as an STL wrapper class for Strings. -// It implements Rogue Wave RWCString signature but intrinsically -// using STL string. +// Derived from the Rogue Wave implementation of RWCString; +// it uses intrinsically STL string. //--------------------------------------------------------------- -#ifndef __cstring -#define __cstring +#ifndef __G4String +#define __G4String +#include #include #include "G4Types.hh" -#include "g4rw/defs.h" #include "g4std/iostream" #ifdef WIN32 #define strcasecmp _stricmp #endif -typedef G4std::string::size_type str_size; +#ifdef G4USE_STD_NAMESPACE + typedef G4std::string::size_type str_size; +#else + typedef size_t str_size; +#endif class G4String; @@ -185,6 +188,6 @@ public: }; -#include "g4rw/cstring.icc" +#include "G4String.icc" #endif diff --git a/source/global/STLInterface/g4rw/cstring.icc b/source/global/management/include/G4String.icc similarity index 96% rename from source/global/STLInterface/g4rw/cstring.icc rename to source/global/management/include/G4String.icc index 9e4c200387..5c2bec26bb 100644 --- a/source/global/STLInterface/g4rw/cstring.icc +++ b/source/global/management/include/G4String.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: cstring.icc,v 1.10.2.1 2001/06/28 19:09:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4String.icc,v 1.2 2001/11/29 14:45:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -253,9 +253,9 @@ G4int G4String::strcasecompare(const char* s1, const char* s2) const char* buf2 = new char[strlen(s2)+1]; for (str_size i=0; i<=strlen(s1); i++) - buf1[i] = tolower(s1[i]); + buf1[i] = tolower(char(s1[i])); for (str_size j=0; j<=strlen(s2); j++) - buf2[j] = tolower(s2[j]); + buf2[j] = tolower(char(s2[j])); G4int res = strcmp(buf1, buf2); delete [] buf1; @@ -402,7 +402,7 @@ void G4String::toLower ( void ) for (str_size i=0; i +#else + #include +#endif /* G4USE_OLDSTL */ + +#endif /* G4_DEQUE_H */ + diff --git a/source/global/management/include/g4std/fstream b/source/global/management/include/g4std/fstream index af62d1b9be..305483073b 100644 --- a/source/global/management/include/g4std/fstream +++ b/source/global/management/include/g4std/fstream @@ -6,7 +6,7 @@ // and all its terms. // // $Id: fstream,v 1.3 1999/11/16 17:43:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- fstream ---------------- // diff --git a/source/global/management/include/g4std/functional b/source/global/management/include/g4std/functional index 5fb0e2de07..976559d2b8 100644 --- a/source/global/management/include/g4std/functional +++ b/source/global/management/include/g4std/functional @@ -6,7 +6,7 @@ // and all its terms. // // $Id: functional,v 1.3 1999/11/16 17:43:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- functional ---------------- // diff --git a/source/global/management/include/g4std/iomanip b/source/global/management/include/g4std/iomanip index 01848699ae..85e651f660 100644 --- a/source/global/management/include/g4std/iomanip +++ b/source/global/management/include/g4std/iomanip @@ -6,7 +6,7 @@ // and all its terms. // // $Id: iomanip,v 1.3 1999/11/16 17:43:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- iomanip ---------------- // diff --git a/source/global/management/include/g4std/iostream b/source/global/management/include/g4std/iostream index e824b0f9d4..c36deb9fd0 100644 --- a/source/global/management/include/g4std/iostream +++ b/source/global/management/include/g4std/iostream @@ -6,7 +6,7 @@ // and all its terms. // // $Id: iostream,v 1.3 1999/11/16 17:43:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- iostream ---------------- // diff --git a/source/global/management/include/g4std/list b/source/global/management/include/g4std/list index 5a5ea3b28b..6f67461fd7 100644 --- a/source/global/management/include/g4std/list +++ b/source/global/management/include/g4std/list @@ -6,7 +6,7 @@ // and all its terms. // // $Id: list,v 1.1 2000/08/22 07:54:26 hpw Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- list ---------------- // diff --git a/source/global/management/include/g4std/map b/source/global/management/include/g4std/map index c7bb3e59af..8103c20cef 100644 --- a/source/global/management/include/g4std/map +++ b/source/global/management/include/g4std/map @@ -6,7 +6,7 @@ // and all its terms. // // $Id: map,v 1.3 1999/11/16 17:43:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- map ---------------- // diff --git a/source/global/management/include/g4std/queue b/source/global/management/include/g4std/queue index f3fd5d4594..a42c917c9b 100644 --- a/source/global/management/include/g4std/queue +++ b/source/global/management/include/g4std/queue @@ -6,7 +6,7 @@ // and all its terms. // // $Id: queue,v 1.1 2000/08/02 09:49:56 gcosmo Exp $ -// GEANT4 tag $Name: $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- queue ---------------- // diff --git a/source/global/management/include/g4std/set b/source/global/management/include/g4std/set index bd5a3858d1..6153980bec 100644 --- a/source/global/management/include/g4std/set +++ b/source/global/management/include/g4std/set @@ -6,7 +6,7 @@ // and all its terms. // // $Id: set,v 1.3 1999/11/16 17:43:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- set ---------------- // diff --git a/source/global/management/include/g4std/streambuf b/source/global/management/include/g4std/streambuf index 00e1406001..5d5e63925c 100644 --- a/source/global/management/include/g4std/streambuf +++ b/source/global/management/include/g4std/streambuf @@ -6,7 +6,7 @@ // and all its terms. // // $Id: streambuf,v 1.3 1999/11/16 17:43:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- streambuf ---------------- // diff --git a/source/global/management/include/g4std/strstream b/source/global/management/include/g4std/strstream index 938b1a9d20..4dd7dc61fe 100644 --- a/source/global/management/include/g4std/strstream +++ b/source/global/management/include/g4std/strstream @@ -6,7 +6,7 @@ // and all its terms. // // $Id: strstream,v 1.3 1999/11/16 17:43:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- strstream ---------------- // diff --git a/source/global/management/include/g4std/vector b/source/global/management/include/g4std/vector index e99bec1da6..92bd8385ea 100644 --- a/source/global/management/include/g4std/vector +++ b/source/global/management/include/g4std/vector @@ -6,7 +6,7 @@ // and all its terms. // // $Id: vector,v 1.3 1999/11/16 17:43:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-01-00-ref-01 $ +// GEANT4 tag $Name: geant4-04-00 $ // // ---------------- vector ---------------- // diff --git a/source/global/STLInterface/wrappers/AIX-xlC/cmath b/source/global/management/include/g4std/wrappers/AIX-xlC/cmath similarity index 100% rename from source/global/STLInterface/wrappers/AIX-xlC/cmath rename to source/global/management/include/g4std/wrappers/AIX-xlC/cmath diff --git a/source/global/STLInterface/wrappers/AIX-xlC/cstdio b/source/global/management/include/g4std/wrappers/AIX-xlC/cstdio similarity index 100% rename from source/global/STLInterface/wrappers/AIX-xlC/cstdio rename to source/global/management/include/g4std/wrappers/AIX-xlC/cstdio diff --git a/source/global/STLInterface/wrappers/AIX-xlC/cstdlib b/source/global/management/include/g4std/wrappers/AIX-xlC/cstdlib similarity index 100% rename from source/global/STLInterface/wrappers/AIX-xlC/cstdlib rename to source/global/management/include/g4std/wrappers/AIX-xlC/cstdlib diff --git a/source/global/STLInterface/wrappers/AIX-xlC/cstring b/source/global/management/include/g4std/wrappers/AIX-xlC/cstring similarity index 100% rename from source/global/STLInterface/wrappers/AIX-xlC/cstring rename to source/global/management/include/g4std/wrappers/AIX-xlC/cstring diff --git a/source/global/STLInterface/wrappers/DEC-cxx/cmath b/source/global/management/include/g4std/wrappers/DEC-cxx/cmath similarity index 100% rename from source/global/STLInterface/wrappers/DEC-cxx/cmath rename to source/global/management/include/g4std/wrappers/DEC-cxx/cmath diff --git a/source/global/STLInterface/wrappers/DEC-cxx/cstdio b/source/global/management/include/g4std/wrappers/DEC-cxx/cstdio similarity index 100% rename from source/global/STLInterface/wrappers/DEC-cxx/cstdio rename to source/global/management/include/g4std/wrappers/DEC-cxx/cstdio diff --git a/source/global/STLInterface/wrappers/DEC-cxx/cstdlib b/source/global/management/include/g4std/wrappers/DEC-cxx/cstdlib similarity index 100% rename from source/global/STLInterface/wrappers/DEC-cxx/cstdlib rename to source/global/management/include/g4std/wrappers/DEC-cxx/cstdlib diff --git a/source/global/STLInterface/wrappers/DEC-cxx/cstring b/source/global/management/include/g4std/wrappers/DEC-cxx/cstring similarity index 100% rename from source/global/STLInterface/wrappers/DEC-cxx/cstring rename to source/global/management/include/g4std/wrappers/DEC-cxx/cstring diff --git a/source/global/STLInterface/wrappers/HP-aCC/fstream b/source/global/management/include/g4std/wrappers/HP-aCC/fstream similarity index 100% rename from source/global/STLInterface/wrappers/HP-aCC/fstream rename to source/global/management/include/g4std/wrappers/HP-aCC/fstream diff --git a/source/global/STLInterface/wrappers/HP-aCC/iomanip b/source/global/management/include/g4std/wrappers/HP-aCC/iomanip similarity index 100% rename from source/global/STLInterface/wrappers/HP-aCC/iomanip rename to source/global/management/include/g4std/wrappers/HP-aCC/iomanip diff --git a/source/global/STLInterface/wrappers/HP-aCC/iostream b/source/global/management/include/g4std/wrappers/HP-aCC/iostream similarity index 100% rename from source/global/STLInterface/wrappers/HP-aCC/iostream rename to source/global/management/include/g4std/wrappers/HP-aCC/iostream diff --git a/source/global/STLInterface/wrappers/HP-aCC/strstream b/source/global/management/include/g4std/wrappers/HP-aCC/strstream similarity index 100% rename from source/global/STLInterface/wrappers/HP-aCC/strstream rename to source/global/management/include/g4std/wrappers/HP-aCC/strstream diff --git a/source/global/STLInterface/wrappers/SGI-CC/iostream b/source/global/management/include/g4std/wrappers/SGI-CC/iostream similarity index 100% rename from source/global/STLInterface/wrappers/SGI-CC/iostream rename to source/global/management/include/g4std/wrappers/SGI-CC/iostream diff --git a/source/global/STLInterface/wrappers/SUN-CC/cmath b/source/global/management/include/g4std/wrappers/SUN-CC4/cmath similarity index 100% rename from source/global/STLInterface/wrappers/SUN-CC/cmath rename to source/global/management/include/g4std/wrappers/SUN-CC4/cmath diff --git a/source/global/STLInterface/wrappers/SUN-CC/cstdio b/source/global/management/include/g4std/wrappers/SUN-CC4/cstdio similarity index 100% rename from source/global/STLInterface/wrappers/SUN-CC/cstdio rename to source/global/management/include/g4std/wrappers/SUN-CC4/cstdio diff --git a/source/global/STLInterface/wrappers/SUN-CC/cstdlib b/source/global/management/include/g4std/wrappers/SUN-CC4/cstdlib similarity index 100% rename from source/global/STLInterface/wrappers/SUN-CC/cstdlib rename to source/global/management/include/g4std/wrappers/SUN-CC4/cstdlib diff --git a/source/global/STLInterface/wrappers/SUN-CC/cstring b/source/global/management/include/g4std/wrappers/SUN-CC4/cstring similarity index 100% rename from source/global/STLInterface/wrappers/SUN-CC/cstring rename to source/global/management/include/g4std/wrappers/SUN-CC4/cstring diff --git a/source/global/management/include/globals.hh b/source/global/management/include/globals.hh index 76a2b6d162..bcd3c29372 100644 --- a/source/global/management/include/globals.hh +++ b/source/global/management/include/globals.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: globals.hh,v 1.16.2.1 2001/06/28 19:10:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: globals.hh,v 1.19 2001/10/12 12:18:21 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Global Constants and typedefs @@ -73,6 +73,13 @@ #define max _MAX #endif +#ifndef FALSE + #define FALSE 0 +#endif +#ifndef TRUE + #define TRUE 1 +#endif + // min, max, abs and sqr are in TemplateFunctions.h. // Includes also CLHEP.h with typedef for numeric types and // implicit inclusions of , , . @@ -82,7 +89,7 @@ #include "G4Types.hh" // Get definition of G4String -#include "g4rw/cstring.h" +#include "G4String.hh" // Includes some additional definitions #include "templates.hh" diff --git a/source/global/management/include/templates.hh b/source/global/management/include/templates.hh index 2d7cb6ae66..2db49c9ef0 100644 --- a/source/global/management/include/templates.hh +++ b/source/global/management/include/templates.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: templates.hh,v 1.5.4.1 2001/06/28 19:10:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: templates.hh,v 1.6 2001/07/11 10:00:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -*- C++ -*- diff --git a/source/global/management/src/G4DataVector.cc b/source/global/management/src/G4DataVector.cc new file mode 100644 index 0000000000..6ca92503aa --- /dev/null +++ b/source/global/management/src/G4DataVector.cc @@ -0,0 +1,112 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4DataVector.cc,v 1.3 2001/11/29 18:59:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// -------------------------------------------------------------- +// GEANT 4 class implementation file +// +// G4DataVector.cc +// +// History: +// 18 Sep. 2001, H.Kurashige : Structure created based on object model +// -------------------------------------------------------------- + +#include "G4DataVector.hh" +#include "g4std/iomanip" + +G4bool G4DataVector::Store(G4std::ofstream& fOut, G4bool ascii) +{ + // Ascii mode + if (ascii) { + fOut << *this; + return true; + } + + // Binary Mode + size_t sizeV = size(); + fOut.write((char*)(&sizeV), sizeof sizeV); + + G4double* value = new G4double[sizeV]; + size_t i=0; + for (const_iterator itr=begin(); itr!=end(); itr++, i++){ + value[i] = *itr; + } + fOut.write((char*)(value), sizeV*(sizeof (G4double)) ); + delete [] value; + + return true; +} + +G4bool G4DataVector::Retrieve(G4std::ifstream& fIn, G4bool ascii) +{ + clear(); + size_t sizeV; + + // retrieve in ascii mode + if (ascii) { + // contents + fIn >> sizeV; + if (fIn.fail()) return false; + + reserve(sizeV); + for(size_t i = 0; i < sizeV ; i++) { + G4double vData; + fIn >> vData; + if (fIn.fail()) return false; + push_back(vData); + } + return true ; + } + + // retrieve in binary mode + fIn.read((char*)(&sizeV), sizeof sizeV); + + G4double* value = new G4double[sizeV]; + fIn.read((char*)(value), sizeV*(sizeof(G4double)) ); + if (G4int(fIn.gcount()) != G4int(sizeV*(sizeof(G4double))) ){ + delete [] value; + return false; + } + + reserve(sizeV); + for(size_t i = 0; i < sizeV; i++) { + push_back(value[i]); + } + delete [] value; + return true; +} + +G4std::ostream& operator<<(G4std::ostream& out, const G4DataVector& pv) +{ + size_t i; + out << pv.size() << G4endl; + for(i = 0; i < pv.size(); i++) { + out << G4std::setprecision(12) << pv[i] << G4endl; + } + + return out; +} + diff --git a/source/global/management/src/G4Exception.cc b/source/global/management/src/G4Exception.cc index 3112e0a71d..f7c549f4e2 100644 --- a/source/global/management/src/G4Exception.cc +++ b/source/global/management/src/G4Exception.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Exception.cc,v 1.9.4.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Exception.cc,v 1.12 2001/10/11 14:04:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -36,7 +36,7 @@ #include "G4ios.hh" #include -#include "g4rw/cstring.h" +#include "G4String.hh" #include "G4StateManager.hh" void G4Exception(const char* s) @@ -45,9 +45,13 @@ void G4Exception(const char* s) { G4cerr << s << G4endl; } - G4cerr << G4endl << "*** G4Exception: Aborting execution ***" << G4endl; - G4StateManager::GetStateManager()->SetNewState(Abort); - abort(); + if(G4StateManager::GetStateManager()->SetNewState(Abort)) { + G4cerr << G4endl << "*** G4Exception: Aborting execution ***" << G4endl; + abort(); + } else { + G4cerr << G4endl << "*** G4Exception: Abortion suppressed ***" + << G4endl << "*** No guarantee for further execution ***" << G4endl; + } } void G4Exception(G4std::string s) diff --git a/source/global/management/src/G4LPhysicsFreeVector.cc b/source/global/management/src/G4LPhysicsFreeVector.cc index cff45f546d..4bdcfe86a2 100644 --- a/source/global/management/src/G4LPhysicsFreeVector.cc +++ b/source/global/management/src/G4LPhysicsFreeVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LPhysicsFreeVector.cc,v 1.7.2.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LPhysicsFreeVector.cc,v 1.8 2001/07/11 10:00:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------------- diff --git a/source/global/management/src/G4OrderedTable.cc b/source/global/management/src/G4OrderedTable.cc new file mode 100644 index 0000000000..e4341bd582 --- /dev/null +++ b/source/global/management/src/G4OrderedTable.cc @@ -0,0 +1,177 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4OrderedTable.cc,v 1.1 2001/09/17 08:17:58 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// ------------------------------------------------------------ +// GEANT 4 class implementation +// +// G4OrderedTable +// +// ------------------------------------------------------------ + +#include "G4DataVector.hh" +#include "G4OrderedTable.hh" +#include "g4std/iostream" +#include "g4std/fstream" +#include "g4std/iomanip" + + +G4bool G4OrderedTable::Store(const G4String& fileName, + G4bool ascii) +{ + G4std::ofstream fOut; + + // open output file // +#ifdef G4USE_STD_NAMESPACE + if (!ascii) + fOut.open(fileName, G4std::ios::out|G4std::ios::binary); + else +#endif + fOut.open(fileName, G4std::ios::out); + + // check if the file has been opened successfully + if (!fOut) { +#ifdef G4VERBOSE + G4cerr << "G4OrderedTable::::Store "; + G4cerr << " Can not open file " << fileName << G4endl; +#endif + fOut.close(); + return false; + } + + // Number of elements + size_t tableSize = size(); + if (!ascii){ + fOut.write( (char*)(&tableSize), sizeof tableSize); + } else { + fOut << tableSize << G4endl; + } + + // Data Vector + G4OrderedTableIterator itr; + G4int vType = G4DataVector::T_G4DataVector; + for (itr=begin(); itr!=end(); ++itr) { + if (!ascii){ + fOut.write( (char*)(&vType), sizeof vType); + } else { + fOut << vType << G4endl; + } + (*itr)->Store(fOut,ascii); + } + fOut.close(); + return true; +} + + + +G4bool G4OrderedTable::Retrieve(const G4String& fileName, + G4bool ascii) +{ + G4std::ifstream fIn; + // open input file // +#ifdef G4USE_STD_NAMESPACE + if (ascii) + fIn.open(fileName,G4std::ios::in|G4std::ios::binary); + else +#endif + fIn.open(fileName,G4std::ios::in); + + // check if the file has been opened successfully + if (!fIn) { +#ifdef G4VERBOSE + G4cerr << "G4OrderedTable::Retrieve "; + G4cerr << " Can not open file " << fileName << G4endl; +#endif + fIn.close(); + return false; + } + + // clear + clearAndDestroy(); + + // Number of elements + size_t tableSize; + if (!ascii){ + fIn.read((char*)(&tableSize), sizeof tableSize); + } else { + fIn >> tableSize; + } + reserve(tableSize); + + // Physics Vector + for (size_t idx=0; idx> vType; + } + if (vType != G4DataVector::T_G4DataVector) { +#ifdef G4VERBOSE + G4cerr << "G4OrderedTable::Retrieve "; + G4cerr << " illegal Data Vector type " << vType << " in "; + G4cerr << fileName << G4endl; +#endif + fIn.close(); + return false; + } + + G4DataVector* pVec = new G4DataVector; + + if (! (pVec->Retrieve(fIn,ascii)) ){ +#ifdef G4VERBOSE + G4cerr << "G4OrderedTable::Retrieve "; + G4cerr << " error in retreiving " << idx << "-th Physics Vector from file "; + G4cerr << fileName << G4endl; +#endif + fIn.close(); + return false; + } + + // add a PhysicsVector to this OrderedTable + push_back(pVec); + } + fIn.close(); + return true; +} + +G4std::ostream& operator<<(G4std::ostream& out, + G4OrderedTable& right) +{ + // Printout Data Vector + G4OrderedTableIterator itr; + size_t i=0; + for (itr=right.begin(); itr!=right.end(); ++itr) { + out << G4std::setw(8) << i << "-th Vector "; + out << ": Type " << G4DataVector::T_G4DataVector << G4endl; + out << *(*itr); + i +=1; + } + out << G4endl; + return out; +} + + diff --git a/source/global/management/src/G4PhysicsFreeVector.cc b/source/global/management/src/G4PhysicsFreeVector.cc index 4ca3d3d165..1f4375dc7f 100644 --- a/source/global/management/src/G4PhysicsFreeVector.cc +++ b/source/global/management/src/G4PhysicsFreeVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsFreeVector.cc,v 1.7.2.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsFreeVector.cc,v 1.8 2001/07/11 10:00:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsLinearVector.cc b/source/global/management/src/G4PhysicsLinearVector.cc index c09f3a3916..485c1c3886 100644 --- a/source/global/management/src/G4PhysicsLinearVector.cc +++ b/source/global/management/src/G4PhysicsLinearVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsLinearVector.cc,v 1.8.2.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsLinearVector.cc,v 1.9 2001/07/11 10:00:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //-------------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsLnVector.cc b/source/global/management/src/G4PhysicsLnVector.cc index 3a95ab2d1c..37189d4882 100644 --- a/source/global/management/src/G4PhysicsLnVector.cc +++ b/source/global/management/src/G4PhysicsLnVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsLnVector.cc,v 1.10.2.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsLnVector.cc,v 1.11 2001/07/11 10:00:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsLogVector.cc b/source/global/management/src/G4PhysicsLogVector.cc index aca48a232c..90964c243e 100644 --- a/source/global/management/src/G4PhysicsLogVector.cc +++ b/source/global/management/src/G4PhysicsLogVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsLogVector.cc,v 1.8.2.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsLogVector.cc,v 1.9 2001/07/11 10:00:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/global/management/src/G4PhysicsOrderedFreeVector.cc b/source/global/management/src/G4PhysicsOrderedFreeVector.cc index 0021dd2d10..2dfad38a22 100644 --- a/source/global/management/src/G4PhysicsOrderedFreeVector.cc +++ b/source/global/management/src/G4PhysicsOrderedFreeVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsOrderedFreeVector.cc,v 1.7.2.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsOrderedFreeVector.cc,v 1.8 2001/07/11 10:00:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // PhysicsOrderedFreeVector Class Implementation diff --git a/source/global/management/src/G4PhysicsTable.cc b/source/global/management/src/G4PhysicsTable.cc index d62485b845..2e53d1fe07 100644 --- a/source/global/management/src/G4PhysicsTable.cc +++ b/source/global/management/src/G4PhysicsTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsTable.cc,v 1.5.2.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsTable.cc,v 1.6 2001/07/11 10:00:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/src/G4PhysicsVector.cc b/source/global/management/src/G4PhysicsVector.cc index b659c32282..72a498c7ae 100644 --- a/source/global/management/src/G4PhysicsVector.cc +++ b/source/global/management/src/G4PhysicsVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicsVector.cc,v 1.11.2.1 2001/06/28 19:10:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicsVector.cc,v 1.14 2001/11/29 18:59:35 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -169,7 +169,7 @@ G4bool G4PhysicsVector::Retrieve(G4std::ifstream& fIn, G4bool ascii) G4double* value = new G4double[2*size]; fIn.read((char*)(value), 2*size*(sizeof(G4double)) ); - if (fIn.gcount() != 2*size*(sizeof(G4double)) ){ + if (G4int(fIn.gcount()) != G4int(2*size*(sizeof(G4double))) ){ delete [] value; return false; } diff --git a/source/global/management/src/G4StateManager.cc b/source/global/management/src/G4StateManager.cc index 7f637f8fe5..9c6b552274 100644 --- a/source/global/management/src/G4StateManager.cc +++ b/source/global/management/src/G4StateManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StateManager.cc,v 1.3.2.2 2001/06/28 20:18:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StateManager.cc,v 1.5 2001/07/18 17:59:23 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -40,7 +40,8 @@ G4StateManager* G4StateManager::theStateManager = 0; G4StateManager::G4StateManager() : theCurrentState(PreInit), thePreviousState(PreInit), - theBottomDependent(0) + theBottomDependent(0), + suppressAbortion(0) { } @@ -159,6 +160,10 @@ G4StateManager::GetPreviousState() const G4bool G4StateManager::SetNewState(G4ApplicationState requestedState) { + if(requestedState==Abort && suppressAbortion>0) { + if(suppressAbortion==2) return false; + if(theCurrentState==EventProc) return false; + } size_t i=0; G4bool ack = true; G4ApplicationState savedState = thePreviousState; diff --git a/source/global/management/src/G4Timer.cc b/source/global/management/src/G4Timer.cc index 89036b0b06..06f787d02d 100644 --- a/source/global/management/src/G4Timer.cc +++ b/source/global/management/src/G4Timer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Timer.cc,v 1.8.4.1 2001/06/28 19:10:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Timer.cc,v 1.9 2001/07/11 10:00:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/global/management/src/G4UnitsTable.cc b/source/global/management/src/G4UnitsTable.cc index 6dcc6ada70..7b9e8b8404 100644 --- a/source/global/management/src/G4UnitsTable.cc +++ b/source/global/management/src/G4UnitsTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UnitsTable.cc,v 1.14.2.1 2001/06/28 19:10:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UnitsTable.cc,v 1.15 2001/07/11 10:00:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... // diff --git a/source/global/management/src/G4VStateDependent.cc b/source/global/management/src/G4VStateDependent.cc index 96c53d1248..bc73a17b6d 100644 --- a/source/global/management/src/G4VStateDependent.cc +++ b/source/global/management/src/G4VStateDependent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VStateDependent.cc,v 1.2.4.2 2001/06/28 20:18:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VStateDependent.cc,v 1.3 2001/07/11 10:00:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/global/management/src/G4ios.cc b/source/global/management/src/G4ios.cc index 0f597d5046..0b96d3c4b9 100644 --- a/source/global/management/src/G4ios.cc +++ b/source/global/management/src/G4ios.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ios.cc,v 1.4.8.1 2001/06/28 19:10:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ios.cc,v 1.5 2001/07/11 10:00:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/graphics_reps/History b/source/graphics_reps/History index 3e5720ffa5..8e3f8d101e 100644 --- a/source/graphics_reps/History +++ b/source/graphics_reps/History @@ -1,4 +1,4 @@ -$Id: History,v 1.32 2001/05/25 13:38:51 johna Exp $ +$Id: History,v 1.37 2001/09/10 10:27:18 johna Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,24 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +10th September 2001 John Allison (greps-V03-02-04) +- Added G4Scale::GuidanceString. + +20th August 2001 John Allison (greps-V03-02-03) +- Made typedef's public in G4Point3DList.hh and G4Polyline.hh. + +14th August 2001 John Allison (greps-V03-02-02) +- Coworks with vis-V03-02-11 and intercoms-V03-02-03. +- Added G4Polyline::transform. +- Fixed pedantic warnings in G4NURBS. + +24th July May 2001 John Allison (greps-V03-02-01) +- Improvements to comments and layout in G4VisExtent. +- Cosmetic improvements to G4Scale, small change of interface. + +21st July May 2001 John Allison (greps-V03-02-00) +- Added G4Scale. + 25th May 2001 John Allison (greps-V03-01-02) - Added GetSurfaceArea() and GetVolume() to HepPolyhedron (Evgeni). - Bug fix in BooleanProcessor.src (Guy, Evgeni). diff --git a/source/graphics_reps/include/G4Circle.hh b/source/graphics_reps/include/G4Circle.hh index dbd39cf33d..fd6a735dd4 100644 --- a/source/graphics_reps/include/G4Circle.hh +++ b/source/graphics_reps/include/G4Circle.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Circle.hh,v 1.5.2.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Circle.hh,v 1.6 2001/07/11 10:01:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Color.hh b/source/graphics_reps/include/G4Color.hh index 51c96d2a8a..f14a66e838 100644 --- a/source/graphics_reps/include/G4Color.hh +++ b/source/graphics_reps/include/G4Color.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Color.hh,v 1.3.4.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Color.hh,v 1.4 2001/07/11 10:01:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/include/G4Colour.hh b/source/graphics_reps/include/G4Colour.hh index d12e274340..f5dae611a3 100644 --- a/source/graphics_reps/include/G4Colour.hh +++ b/source/graphics_reps/include/G4Colour.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Colour.hh,v 1.5.4.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Colour.hh,v 1.6 2001/07/11 10:01:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/include/G4NURBS.hh b/source/graphics_reps/include/G4NURBS.hh index b9168eeccc..665b344e0b 100644 --- a/source/graphics_reps/include/G4NURBS.hh +++ b/source/graphics_reps/include/G4NURBS.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBS.hh,v 1.5.4.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBS.hh,v 1.6 2001/07/11 10:01:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBSbox.hh b/source/graphics_reps/include/G4NURBSbox.hh index db632e586b..091c62a6cc 100644 --- a/source/graphics_reps/include/G4NURBSbox.hh +++ b/source/graphics_reps/include/G4NURBSbox.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBSbox.hh,v 1.5.4.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBSbox.hh,v 1.6 2001/07/11 10:01:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBScylinder.hh b/source/graphics_reps/include/G4NURBScylinder.hh index e9d30d6f89..9735bf1466 100644 --- a/source/graphics_reps/include/G4NURBScylinder.hh +++ b/source/graphics_reps/include/G4NURBScylinder.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBScylinder.hh,v 1.5.4.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBScylinder.hh,v 1.6 2001/07/11 10:01:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBShexahedron.hh b/source/graphics_reps/include/G4NURBShexahedron.hh index a1002cb678..46bb1334ce 100644 --- a/source/graphics_reps/include/G4NURBShexahedron.hh +++ b/source/graphics_reps/include/G4NURBShexahedron.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBShexahedron.hh,v 1.5.4.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBShexahedron.hh,v 1.6 2001/07/11 10:01:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hexa hedron builder prototype // OC 17 9 96 diff --git a/source/graphics_reps/include/G4NURBStube.hh b/source/graphics_reps/include/G4NURBStube.hh index 139d468881..780a4f0a04 100644 --- a/source/graphics_reps/include/G4NURBStube.hh +++ b/source/graphics_reps/include/G4NURBStube.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBStube.hh,v 1.5.4.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBStube.hh,v 1.6 2001/07/11 10:01:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4NURBStubesector.hh b/source/graphics_reps/include/G4NURBStubesector.hh index 651f23fa13..1d8006385f 100644 --- a/source/graphics_reps/include/G4NURBStubesector.hh +++ b/source/graphics_reps/include/G4NURBStubesector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBStubesector.hh,v 1.4.4.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBStubesector.hh,v 1.5 2001/07/11 10:01:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/include/G4PlacedPolyhedron.hh b/source/graphics_reps/include/G4PlacedPolyhedron.hh index fbfcb778bd..28bc017d79 100644 --- a/source/graphics_reps/include/G4PlacedPolyhedron.hh +++ b/source/graphics_reps/include/G4PlacedPolyhedron.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlacedPolyhedron.hh,v 1.8.2.1 2001/06/28 19:10:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlacedPolyhedron.hh,v 1.9 2001/07/11 10:01:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // Class Description: diff --git a/source/graphics_reps/include/G4Point3DList.hh b/source/graphics_reps/include/G4Point3DList.hh index 7f06815ee1..ac5cc7fed9 100644 --- a/source/graphics_reps/include/G4Point3DList.hh +++ b/source/graphics_reps/include/G4Point3DList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Point3DList.hh,v 1.7.2.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Point3DList.hh,v 1.10 2001/08/20 23:28:42 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison July 1995 @@ -39,11 +39,13 @@ #include "g4std/iostream" class G4Point3DList: public G4std::vector { - -friend G4std::ostream& operator << (G4std::ostream& os, const G4Point3DList& points); - + + friend G4std::ostream& operator << (G4std::ostream& os, const G4Point3DList& points); + public: + typedef G4std::vector::iterator iterator; + virtual ~G4Point3DList(); }; diff --git a/source/graphics_reps/include/G4Polyhedron.hh b/source/graphics_reps/include/G4Polyhedron.hh index de412fc34b..14f7b8a536 100644 --- a/source/graphics_reps/include/G4Polyhedron.hh +++ b/source/graphics_reps/include/G4Polyhedron.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polyhedron.hh,v 1.9.2.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polyhedron.hh,v 1.10 2001/07/11 10:01:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #ifndef G4POLYHEDRON_HH #define G4POLYHEDRON_HH diff --git a/source/graphics_reps/include/G4Polyline.hh b/source/graphics_reps/include/G4Polyline.hh index 2f04c79f10..768826fc2b 100644 --- a/source/graphics_reps/include/G4Polyline.hh +++ b/source/graphics_reps/include/G4Polyline.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polyline.hh,v 1.6.2.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polyline.hh,v 1.9 2001/08/20 23:28:43 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison July 1995 @@ -40,17 +40,23 @@ #include "G4VVisPrim.hh" #include "G4Point3DList.hh" +#include "G4Transform3D.hh" + class G4Polyline: public G4VVisPrim, public G4Point3DList { + friend G4std::ostream& operator << (G4std::ostream& os, const G4Polyline& line); public: // With description + typedef G4Point3DList::iterator iterator; + G4Polyline (); G4Polyline (const G4VVisPrim& prim); virtual ~G4Polyline (); virtual G4Visible& operator = (const G4Visible& right); virtual G4VVisPrim& operator = (const G4VVisPrim& right); virtual G4Polyline& operator = (const G4Polyline& right); + G4Polyline& transform (const G4Transform3D&); }; #endif diff --git a/source/graphics_reps/include/G4Polymarker.hh b/source/graphics_reps/include/G4Polymarker.hh index 47b040d03a..7f8278252c 100644 --- a/source/graphics_reps/include/G4Polymarker.hh +++ b/source/graphics_reps/include/G4Polymarker.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polymarker.hh,v 1.6.2.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polymarker.hh,v 1.7 2001/07/11 10:01:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/include/G4Polymarker.icc b/source/graphics_reps/include/G4Polymarker.icc index ed0d11f31e..5cfcd4555d 100644 --- a/source/graphics_reps/include/G4Polymarker.icc +++ b/source/graphics_reps/include/G4Polymarker.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polymarker.icc,v 1.2.4.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polymarker.icc,v 1.3 2001/07/11 10:01:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/include/G4Scale.hh b/source/graphics_reps/include/G4Scale.hh new file mode 100644 index 0000000000..e5606f511d --- /dev/null +++ b/source/graphics_reps/include/G4Scale.hh @@ -0,0 +1,90 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4Scale.hh,v 1.3 2001/09/10 10:28:24 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 21st July 2001. + +#ifndef G4SCALE_HH +#define G4SCALE_HH + +#include "G4VMarker.hh" +#include "globals.hh" + +class G4Scale: public G4VMarker { + +public: // With description + + enum Direction {x, y, z}; + + G4Scale (G4double length, const G4String& annotation = "", + Direction direction = x, + G4bool autoPlacing = true, + G4double xmid = 0., G4double ymid = 0., G4double zmid = 0.); + // This creates a representation of annotated line in the specified + // direction with tick marks at the end. If autoPlacing is true it + // is required to be centred at the front, right, bottom corner of + // the world space, comfortably outside the existing bounding + // box/sphere so that existing objects do not obscure it. Otherwise + // it is required to be drawn with mid-point at (xmid, ymid, zmid). + // + // The auto placing algorithm might be: + // x = xmin + (1 + comfort) * (xmax - xmin) + // y = ymin - comfort * (ymax - ymin) + // z = zmin + (1 + comfort) * (zmax - zmin) + // if direction == x then (x - length,y,z) to (x,y,z) + // if direction == y then (x,y,z) to (x,y + length,z) + // if direction == z then (x,y,z - length) to (x,y,z) + + // Uses compiler-generated copy constructor. + + virtual ~G4Scale (); + + virtual G4Visible& operator = (const G4Visible& from); + virtual G4VVisPrim& operator = (const G4VVisPrim& from); + virtual G4VMarker& operator = (const G4VMarker& from); + virtual G4Scale& operator = (const G4Scale& from); + + G4double GetLength() const; + const G4String& GetAnnotation() const; + Direction GetDirection() const; + G4bool GetAutoPlacing() const; + G4double GetXmid() const; + G4double GetYmid() const; + G4double GetZmid() const; + + static G4String GuidanceString; + +private: + G4double fLength; + G4String fAnnotation; + Direction fDirection; + G4bool fAutoPlacing; + G4double fXmid, fYmid, fZmid; +}; + +#include "G4Scale.icc" + +#endif diff --git a/source/graphics_reps/include/G4Scale.icc b/source/graphics_reps/include/G4Scale.icc new file mode 100644 index 0000000000..6d2b041775 --- /dev/null +++ b/source/graphics_reps/include/G4Scale.icc @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4Scale.icc,v 1.2 2001/07/24 21:41:42 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 21st July 2001. + +inline G4double G4Scale::GetLength() const { + return fLength; +} + +inline const G4String& G4Scale::GetAnnotation() const { + return fAnnotation; +} +inline G4Scale::Direction G4Scale::GetDirection() const { + return fDirection; +} + +inline G4bool G4Scale::GetAutoPlacing() const { + return fAutoPlacing; +} + +inline G4double G4Scale::GetXmid() const { + return fXmid; +} + +inline G4double G4Scale::GetYmid() const { + return fYmid; +} + +inline G4double G4Scale::GetZmid() const { + return fZmid; +} diff --git a/source/graphics_reps/include/G4Square.hh b/source/graphics_reps/include/G4Square.hh index 7fecd6f74b..fa392cc112 100644 --- a/source/graphics_reps/include/G4Square.hh +++ b/source/graphics_reps/include/G4Square.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Square.hh,v 1.4.4.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Square.hh,v 1.5 2001/07/11 10:01:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Square.icc b/source/graphics_reps/include/G4Square.icc index f19623817e..d0cffc37d2 100644 --- a/source/graphics_reps/include/G4Square.icc +++ b/source/graphics_reps/include/G4Square.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Square.icc,v 1.2.4.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Square.icc,v 1.3 2001/07/11 10:01:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Text.hh b/source/graphics_reps/include/G4Text.hh index 130bb98eca..d29327e042 100644 --- a/source/graphics_reps/include/G4Text.hh +++ b/source/graphics_reps/include/G4Text.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Text.hh,v 1.6.2.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Text.hh,v 1.7 2001/07/11 10:01:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4Text.icc b/source/graphics_reps/include/G4Text.icc index 7972fb1514..4088e62a62 100644 --- a/source/graphics_reps/include/G4Text.icc +++ b/source/graphics_reps/include/G4Text.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Text.icc,v 1.2.4.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Text.icc,v 1.3 2001/07/11 10:01:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/include/G4VMarker.hh b/source/graphics_reps/include/G4VMarker.hh index b6f8fb1df2..071b0f4dd9 100644 --- a/source/graphics_reps/include/G4VMarker.hh +++ b/source/graphics_reps/include/G4VMarker.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMarker.hh,v 1.6.4.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMarker.hh,v 1.7 2001/07/11 10:01:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4VMarker - base class for markers - circles, squares, etc. diff --git a/source/graphics_reps/include/G4VMarker.icc b/source/graphics_reps/include/G4VMarker.icc index 5827decffe..f2492aa577 100644 --- a/source/graphics_reps/include/G4VMarker.icc +++ b/source/graphics_reps/include/G4VMarker.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMarker.icc,v 1.5.2.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMarker.icc,v 1.6 2001/07/11 10:01:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/graphics_reps/include/G4VVisPrim.hh b/source/graphics_reps/include/G4VVisPrim.hh index 79ea79a7f4..82fe2445ca 100644 --- a/source/graphics_reps/include/G4VVisPrim.hh +++ b/source/graphics_reps/include/G4VVisPrim.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VVisPrim.hh,v 1.7.2.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VVisPrim.hh,v 1.8 2001/07/11 10:01:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison August 1995 diff --git a/source/graphics_reps/include/G4VisAttributes.hh b/source/graphics_reps/include/G4VisAttributes.hh index d49fcbdf52..a0d4d21683 100644 --- a/source/graphics_reps/include/G4VisAttributes.hh +++ b/source/graphics_reps/include/G4VisAttributes.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisAttributes.hh,v 1.6.4.1 2001/06/28 19:10:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisAttributes.hh,v 1.7 2001/07/11 10:01:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 23rd October 1996 diff --git a/source/graphics_reps/include/G4VisAttributes.icc b/source/graphics_reps/include/G4VisAttributes.icc index 142e7b6b83..f5391b0b68 100644 --- a/source/graphics_reps/include/G4VisAttributes.icc +++ b/source/graphics_reps/include/G4VisAttributes.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisAttributes.icc,v 1.3.4.1 2001/06/28 19:10:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisAttributes.icc,v 1.4 2001/07/11 10:01:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 18th November 1996 diff --git a/source/graphics_reps/include/G4VisExtent.hh b/source/graphics_reps/include/G4VisExtent.hh index c2ca288e5a..f3f3d7c4cf 100644 --- a/source/graphics_reps/include/G4VisExtent.hh +++ b/source/graphics_reps/include/G4VisExtent.hh @@ -21,16 +21,26 @@ // ******************************************************************** // // -// $Id: G4VisExtent.hh,v 1.4.4.1 2001/06/28 19:10:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisExtent.hh,v 1.6 2001/07/24 21:39:43 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // A.Walkden 28/11/95 // Class Description: -// G4VisExtent is a class to prototype extent functions for use in -// instantiating Visualisation windows with an appropriate field of -// view for the object(s) being drawn. +// G4VisExtent defines a bounding box in a visualisable object's local +// coordinate system which includes the object. +// WARNING: it also attempts to support the concept of a bounding +// sphere. (This is used extensively in the G4 Visualisation System +// to calculate camera parameters, etc.) Be aware that this involves +// loss of information. Given a bounding box, one can calculate the +// bounding sphere; inverting this will produce a cube which *might* +// *not* include the object. E.g., a long thin object of length l +// will have a bounding sphere of diameter l; the corresponding cube +// will have side l/sqrt(3) so that the bounding sphere diameter is +// still l. Thus the long thin object will stick out of the cube. +// So, if you once use the concept of bounding sphere you must stick +// with it and abandon the concept of bounding box. // Class Description - End: #ifndef G4VISEXTENT_HH diff --git a/source/graphics_reps/include/G4Visible.hh b/source/graphics_reps/include/G4Visible.hh index 31c7a4a15a..c94dd3eef4 100644 --- a/source/graphics_reps/include/G4Visible.hh +++ b/source/graphics_reps/include/G4Visible.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Visible.hh,v 1.6.4.1 2001/06/28 19:10:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Visible.hh,v 1.7 2001/07/11 10:01:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/include/G4Visible.icc b/source/graphics_reps/include/G4Visible.icc index b9d3427597..815c64f76a 100644 --- a/source/graphics_reps/include/G4Visible.icc +++ b/source/graphics_reps/include/G4Visible.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Visible.icc,v 1.3.4.1 2001/06/28 19:10:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Visible.icc,v 1.4 2001/07/11 10:01:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/include/HepPolyhedron.h b/source/graphics_reps/include/HepPolyhedron.h index 92666cf1c1..52286fc640 100644 --- a/source/graphics_reps/include/HepPolyhedron.h +++ b/source/graphics_reps/include/HepPolyhedron.h @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: HepPolyhedron.h,v 1.8.2.1 2001/06/28 19:10:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: HepPolyhedron.h,v 1.9 2001/07/11 10:01:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class Description: diff --git a/source/graphics_reps/src/G4Circle.cc b/source/graphics_reps/src/G4Circle.cc index 0adffeea8c..abd763ee0c 100644 --- a/source/graphics_reps/src/G4Circle.cc +++ b/source/graphics_reps/src/G4Circle.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Circle.cc,v 1.3.2.1 2001/06/28 19:10:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Circle.cc,v 1.4 2001/07/11 10:01:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/graphics_reps/src/G4Colour.cc b/source/graphics_reps/src/G4Colour.cc index c1ba01408a..13c0ff6f5c 100644 --- a/source/graphics_reps/src/G4Colour.cc +++ b/source/graphics_reps/src/G4Colour.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Colour.cc,v 1.3.4.1 2001/06/28 19:10:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Colour.cc,v 1.4 2001/07/11 10:01:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 20th October 1996 diff --git a/source/graphics_reps/src/G4NURBS.cc b/source/graphics_reps/src/G4NURBS.cc index c1b2d032f1..485e5baae9 100644 --- a/source/graphics_reps/src/G4NURBS.cc +++ b/source/graphics_reps/src/G4NURBS.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBS.cc,v 1.3.4.1 2001/06/28 19:10:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBS.cc,v 1.5 2001/08/14 18:24:29 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 @@ -121,8 +121,9 @@ G4float G4NURBS::GetfloatKnot(t_direction in_dir, t_indKnot in_index) const else { G4cerr << "\nERROR: G4NURBS::GetfloatKnot: index out of range\n" - << "\n\t in_dir : " << in_dir << ", in_index : " << in_index - << "m[in_dir].nbrKnots : " << m[in_dir].nbrKnots << G4endl; + << "\n\t in_dir : " << G4int(in_dir) + << ", in_index : " << G4int(in_index) + << "m[in_dir].nbrKnots : " << m[in_dir].nbrKnots << G4endl; return ((G4float)m[in_dir].pKnots[m[in_dir].nbrKnots-1]); }; } @@ -135,8 +136,10 @@ G4double G4NURBS::GetdoubleKnot(t_direction in_dir, t_indKnot in_index) const else { G4cerr << "\nERROR: G4NURBS::GetdoubleKnot: index out of range" - << "\n\t in_dir : " << in_dir << ", in_index : " << in_index - << "m[in_dir].nbrKnots : " << m[in_dir].nbrKnots << G4endl; + << "\n\t in_dir : " << G4int(in_dir) + << ", in_index : " << G4int(in_index) + << "m[in_dir].nbrKnots : " << m[in_dir].nbrKnots + << G4endl; return (G4double)(m[in_dir].pKnots[m[in_dir].nbrKnots-1]); }; } @@ -366,7 +369,8 @@ G4bool G4NURBS::MakeKnotVector(t_Dir & io_d, t_KnotVectorGenFlag in_KVGFlag) // central knots for (t_indKnot j=0; j < nbrCentralDistinctKnots; valKnot += stepKnot, j++) { - for (t_indKnot k=0; k < in_KVGFlag; indKnot++, k++) + for (t_indKnot k=0; k < t_indKnot(in_KVGFlag); + indKnot++, k++) io_d.pKnots[indKnot] = valKnot; }; } diff --git a/source/graphics_reps/src/G4NURBSbox.cc b/source/graphics_reps/src/G4NURBSbox.cc index ff1e9345d8..f13c3f3fb8 100644 --- a/source/graphics_reps/src/G4NURBSbox.cc +++ b/source/graphics_reps/src/G4NURBSbox.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBSbox.cc,v 1.3.4.1 2001/06/28 19:10:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBSbox.cc,v 1.4 2001/07/11 10:01:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBScylinder.cc b/source/graphics_reps/src/G4NURBScylinder.cc index 833edb0571..ac4eee56b5 100644 --- a/source/graphics_reps/src/G4NURBScylinder.cc +++ b/source/graphics_reps/src/G4NURBScylinder.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBScylinder.cc,v 1.3.4.1 2001/06/28 19:10:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBScylinder.cc,v 1.4 2001/07/11 10:01:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBShexahedron.cc b/source/graphics_reps/src/G4NURBShexahedron.cc index cd68962189..7dd0a9ee07 100644 --- a/source/graphics_reps/src/G4NURBShexahedron.cc +++ b/source/graphics_reps/src/G4NURBShexahedron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBShexahedron.cc,v 1.3.4.1 2001/06/28 19:10:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBShexahedron.cc,v 1.4 2001/07/11 10:01:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // hexahedron implementation // OC 17 9 96 diff --git a/source/graphics_reps/src/G4NURBStube.cc b/source/graphics_reps/src/G4NURBStube.cc index 90086a3918..dfffec43a0 100644 --- a/source/graphics_reps/src/G4NURBStube.cc +++ b/source/graphics_reps/src/G4NURBStube.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBStube.cc,v 1.3.4.1 2001/06/28 19:10:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBStube.cc,v 1.4 2001/07/11 10:01:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4NURBStubesector.cc b/source/graphics_reps/src/G4NURBStubesector.cc index e412a70cd8..3e37db0d2e 100644 --- a/source/graphics_reps/src/G4NURBStubesector.cc +++ b/source/graphics_reps/src/G4NURBStubesector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NURBStubesector.cc,v 1.4.4.1 2001/06/28 19:10:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NURBStubesector.cc,v 1.5 2001/07/11 10:01:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Olivier Crumeyrolle 12 September 1996 diff --git a/source/graphics_reps/src/G4PlacedPolyhedron.cc b/source/graphics_reps/src/G4PlacedPolyhedron.cc index f2180566c2..eaf7e09272 100644 --- a/source/graphics_reps/src/G4PlacedPolyhedron.cc +++ b/source/graphics_reps/src/G4PlacedPolyhedron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlacedPolyhedron.cc,v 1.2.4.1 2001/06/28 19:10:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlacedPolyhedron.cc,v 1.3 2001/07/11 10:01:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4PlacedPolyhedron.hh" diff --git a/source/graphics_reps/src/G4Point3DList.cc b/source/graphics_reps/src/G4Point3DList.cc index 463cd1129f..0f54aa459e 100644 --- a/source/graphics_reps/src/G4Point3DList.cc +++ b/source/graphics_reps/src/G4Point3DList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Point3DList.cc,v 1.4.2.1 2001/06/28 19:10:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Point3DList.cc,v 1.5 2001/07/11 10:01:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison July 1995 diff --git a/source/graphics_reps/src/G4Polyhedron.cc b/source/graphics_reps/src/G4Polyhedron.cc index e554dc77aa..63a0e95dcf 100644 --- a/source/graphics_reps/src/G4Polyhedron.cc +++ b/source/graphics_reps/src/G4Polyhedron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polyhedron.cc,v 1.10.2.1 2001/06/28 19:10:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polyhedron.cc,v 1.11 2001/07/11 10:01:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4Polyhedron.hh" diff --git a/source/graphics_reps/src/G4Polyline.cc b/source/graphics_reps/src/G4Polyline.cc index 35a54d45db..678872c7c1 100644 --- a/source/graphics_reps/src/G4Polyline.cc +++ b/source/graphics_reps/src/G4Polyline.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polyline.cc,v 1.5.2.1 2001/06/28 19:10:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polyline.cc,v 1.7 2001/08/14 18:24:58 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison July 1995 @@ -51,6 +51,11 @@ G4Polyline & G4Polyline::operator = (const G4Polyline &right) { return *this; } +G4Polyline& G4Polyline::transform (const G4Transform3D& transformation) { + for (iterator i = begin(); i != end(); ++i) i->transform(transformation); + return *this; +} + G4std::ostream& operator << (G4std::ostream& os, const G4Polyline& line) { os << "G4Polyline: "; os << '\n' << (G4VVisPrim) line; diff --git a/source/graphics_reps/src/G4Polymarker.cc b/source/graphics_reps/src/G4Polymarker.cc index 2f00649f32..528d807fe8 100644 --- a/source/graphics_reps/src/G4Polymarker.cc +++ b/source/graphics_reps/src/G4Polymarker.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Polymarker.cc,v 1.6.2.1 2001/06/28 19:10:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Polymarker.cc,v 1.7 2001/07/11 10:01:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison November 1996 diff --git a/source/graphics_reps/src/G4Scale.cc b/source/graphics_reps/src/G4Scale.cc new file mode 100644 index 0000000000..d06c01d0e6 --- /dev/null +++ b/source/graphics_reps/src/G4Scale.cc @@ -0,0 +1,85 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4Scale.cc,v 1.4 2001/09/10 10:28:56 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 21st July 2001 + +#include "G4Scale.hh" + +G4Scale::G4Scale (G4double length, const G4String& annotation, + G4Scale::Direction direction, + G4bool autoPlacing, + G4double xmid, G4double ymid, G4double zmid): + fLength(length), + fAnnotation(annotation), + fDirection(direction), + fAutoPlacing(autoPlacing), + fXmid(xmid), fYmid(ymid), fZmid(zmid) {} + +G4Scale::~G4Scale () {} + +G4Visible & G4Scale::operator = (const G4Visible &from) { + return G4Visible::operator = (from); +} + +G4VVisPrim & G4Scale::operator = (const G4VVisPrim &from) { + return G4VVisPrim::operator = (from); +} + +G4VMarker & G4Scale::operator = (const G4VMarker &from) { + return G4VMarker::operator = (from); +} + +G4Scale & G4Scale::operator = (const G4Scale &from) { + if (&from == this) return *this; + G4VMarker::operator = (from); + fLength = from.fLength; + fAnnotation = from.fAnnotation; + fDirection = from.fDirection; + fAutoPlacing = from.fAutoPlacing; + fXmid = from.fXmid; + fYmid = from.fYmid; + fZmid = from.fZmid; + return *this; +} + +G4String G4Scale::GuidanceString +( + "An annotated line in the specified direction with tick marks at the" + "\nend. If autoPlacing is true it is required to be centred at the" + "\nfront, right, bottom corner of the world space, comfortably outside" + "\nthe existing bounding box/sphere so that existing objects do not" + "\nobscure it. Otherwise it is required to be drawn with mid-point at" + "\n(xmid, ymid, zmid)." + "\n" + "\nThe auto placing algorithm might be:" + "\n x = xmin + (1 + comfort) * (xmax - xmin)" + "\n y = ymin - comfort * (ymax - ymin)" + "\n z = zmin + (1 + comfort) * (zmax - zmin)" + "\n if direction == x then (x - length,y,z) to (x,y,z)" + "\n if direction == y then (x,y,z) to (x,y + length,z)" + "\n if direction == z then (x,y,z - length) to (x,y,z)" +); diff --git a/source/graphics_reps/src/G4Square.cc b/source/graphics_reps/src/G4Square.cc index fd0885f5af..07a7f6be31 100644 --- a/source/graphics_reps/src/G4Square.cc +++ b/source/graphics_reps/src/G4Square.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Square.cc,v 1.2.4.1 2001/06/28 19:10:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Square.cc,v 1.3 2001/07/11 10:01:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/graphics_reps/src/G4Text.cc b/source/graphics_reps/src/G4Text.cc index b68c65516c..32381b4b3d 100644 --- a/source/graphics_reps/src/G4Text.cc +++ b/source/graphics_reps/src/G4Text.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Text.cc,v 1.5.2.1 2001/06/28 19:10:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Text.cc,v 1.6 2001/07/11 10:01:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 17/11/96. diff --git a/source/graphics_reps/src/G4VMarker.cc b/source/graphics_reps/src/G4VMarker.cc index 1616300bf0..d8471c3336 100644 --- a/source/graphics_reps/src/G4VMarker.cc +++ b/source/graphics_reps/src/G4VMarker.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMarker.cc,v 1.6.2.1 2001/06/28 19:10:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMarker.cc,v 1.7 2001/07/11 10:01:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/graphics_reps/src/G4VVisPrim.cc b/source/graphics_reps/src/G4VVisPrim.cc index b5e35d9a4e..dc7879b131 100644 --- a/source/graphics_reps/src/G4VVisPrim.cc +++ b/source/graphics_reps/src/G4VVisPrim.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VVisPrim.cc,v 1.6.2.1 2001/06/28 19:10:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VVisPrim.cc,v 1.7 2001/07/11 10:01:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison August 1995 diff --git a/source/graphics_reps/src/G4VisAttributes.cc b/source/graphics_reps/src/G4VisAttributes.cc index 5df9808285..d4ab5dbf07 100644 --- a/source/graphics_reps/src/G4VisAttributes.cc +++ b/source/graphics_reps/src/G4VisAttributes.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisAttributes.cc,v 1.5.4.1 2001/06/28 19:10:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisAttributes.cc,v 1.6 2001/07/11 10:01:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 23rd October 1996 diff --git a/source/graphics_reps/src/G4VisExtent.cc b/source/graphics_reps/src/G4VisExtent.cc index c3d15cfba5..2e7323f238 100644 --- a/source/graphics_reps/src/G4VisExtent.cc +++ b/source/graphics_reps/src/G4VisExtent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisExtent.cc,v 1.4.4.1 2001/06/28 19:10:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisExtent.cc,v 1.6 2001/07/24 21:39:50 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // A.Walkden 28/11/95 @@ -40,24 +40,22 @@ G4VisExtent::G4VisExtent (G4double xmin, G4double xmax, {} G4VisExtent::G4VisExtent (const G4Point3D& centre, G4double radius) { - // Use inscribed radius to define G3VisExtent so that - // GetExtentRadius gets radius back again. The one is the "inverse" - // of the other, so to speak. - G4double inscribedRadius = radius / sqrt (3.); - fXmin = centre.x () - inscribedRadius; - fXmax = centre.x () + inscribedRadius; - fYmin = centre.y () - inscribedRadius; - fYmax = centre.y () + inscribedRadius; - fZmin = centre.z () - inscribedRadius; - fZmax = centre.z () + inscribedRadius; + // Use exscribed radius ... see comments in header file. + G4double halfSide (radius / sqrt (3.)); + fXmin = centre.x () - halfSide; + fXmax = centre.x () + halfSide; + fYmin = centre.y () - halfSide; + fYmax = centre.y () + halfSide; + fZmin = centre.z () - halfSide; + fZmax = centre.z () + halfSide; } G4VisExtent::~G4VisExtent () {} G4Point3D G4VisExtent::GetExtentCentre () const { return G4Point3D (((fXmin + fXmax) / 2.), - ((fYmin + fYmax) / 2.), - ((fZmin + fZmax) / 2.)); + ((fYmin + fYmax) / 2.), + ((fZmin + fZmax) / 2.)); } G4double G4VisExtent::GetExtentRadius () const { diff --git a/source/graphics_reps/src/G4Visible.cc b/source/graphics_reps/src/G4Visible.cc index 7db724ebdb..c4b18e2b58 100644 --- a/source/graphics_reps/src/G4Visible.cc +++ b/source/graphics_reps/src/G4Visible.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Visible.cc,v 1.3.4.1 2001/06/28 19:10:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Visible.cc,v 1.4 2001/07/11 10:01:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 30th October 1996 diff --git a/source/graphics_reps/src/HepPolyhedron.cc b/source/graphics_reps/src/HepPolyhedron.cc index fed969a554..e6f0174b44 100644 --- a/source/graphics_reps/src/HepPolyhedron.cc +++ b/source/graphics_reps/src/HepPolyhedron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: HepPolyhedron.cc,v 1.8.2.1 2001/06/28 19:10:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: HepPolyhedron.cc,v 1.9 2001/07/11 10:01:10 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/intercoms/History b/source/intercoms/History index 94150cf16e..100bbb16c9 100644 --- a/source/intercoms/History +++ b/source/intercoms/History @@ -1,4 +1,4 @@ -$Id: History,v 1.18 2001/05/18 17:08:19 gcosmo Exp $ +$Id: History,v 1.38 2001/11/24 18:37:10 asaim Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,78 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Nov 23, 2001, M.Asai (intercoms-V03-02-15) +- Fix a problem with a command which has doubled slash. + +Oct 23, 2001, G.Cosmo (intercoms-V03-02-14) +- Restored inclusion of G4Tokenizer.hh for removal of STLinterface module. + Files: G4UImanager.cc, G4UIcommand.cc and G4UIparameter.cc. + +Oct 12, 2001, M.Asai (intercoms-V03-02-13) +- Rename method in G4UIcommandTree to avoid confliction. +- Temporarly replaced inclusion of G4Tokenizer.hh with old RW wrapper. (G.Cosmo) +- Replaced int/double with G4int/G4double wherever needed. (G.Cosmo) + +Oct 11, 2001, G.Cosmo (intercoms-V03-02-12) +- Replaced inclusions of ctoken.h with G4Tokenizer.hh in + G4UImanager[.hh.cc], G4UIcommand.cc and G4UIparameter.cc. + Removed comment on RW wrappers. +- Co-works with tag "globals-V03-02-03" where the STLInterface + module has been removed. + +Oct 10, 2001, M.Asai (intercoms-V03-02-11) +- Change aliasing characters from "[" and "]" to "{" and "}". + This is required to fix the crash in hadronics test code. +- Introducing /control/createHTML + +Oct 5, 2001, M.Asai (intercoms-V03-02-10) +- Introducing Loop() and Foreach() methods. +- Introducing three new UI commands + /control/shell + /control/foreach + /control/loop + +Oct 4, 2001, M.Asai (intercoms-V03-02-09) +- Correction for string parameter starting with a space. +- Recurrent variables + +Oct 1, 2001, M.Asai (intercoms-V03-02-08) +- Introducing a functionality of "shell variables". + New class : G4UIaliasList + Modified classes : G4UImanager G4UIcontrolMessenger + +Sep 28, 2001, M.Asai (intercoms-V03-02-07) +- For Batch mode, comment lines are displayed only at verbose level = 2. + +Aug 29, 2001, M.Asai (intercoms-V03-02-06) +- Corrections in G4UIbatch to ignore the blank line. + +Aug 27, 2001, M.Asai (intercoms-V03-02-05) +- G4UIbatch now displays (G4cerr) the error message. + Correction according to the bug report #294. + +Aug 17, 2001, J.Allison (intercoms-V03-02-04) +- Coworks with vis-V03-02-12 and greps-V03-02-02. +- Added G4VisManager::Draw(const G4Scale&,... + +Aug 14, 2001, J.Allison (intercoms-V03-02-03) +- Coworks with vis-V03-02-11 and greps-V03-02-02. +- Moved default value of argument G4Transform3D::Identity from + G4VSceneHandler::BeginPrimitives to + G4VGraphicsScene::BeginPrimitives. + +July 21, 2001, J.Allison (intercoms-V03-02-02) +- Added G4VGraphicsScene::AddPrimitive(const G4Scale&). + +July 18, 2001, M.Asai (intercoms-V03-02-01) +- Added a feature of suppressing program abortion due to G4Exception + affected files : G4UIcontrolMessenger.hh G4UIcontrolMessenger.cc +- This co-works with global-V03-02-01 + +July 17, 2001, J.Allison (intercoms-V03-02-00) +- Fixed parsing of quoted (") tokens in current value for null or defaulted + parameters in loop over previous parameters in G4UIcommand::DoIt(). + May 18, 2001, G.Cosmo (intercoms-V03-01-00) - Cleared pedantic warnings detected in Linux-g++ with ISO/ANSI setup. diff --git a/source/intercoms/include/G4UIaliasList.hh b/source/intercoms/include/G4UIaliasList.hh new file mode 100644 index 0000000000..ffeb2c5384 --- /dev/null +++ b/source/intercoms/include/G4UIaliasList.hh @@ -0,0 +1,68 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4UIaliasList.hh,v 1.3 2001/10/16 08:14:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#ifndef G4UIaliasList_h +#define G4UIaliasList_h 1 + + +#include "globals.hh" +#include "g4std/vector" + +// class description: +// +// This class is exclusively used by G4UImanager for handling the +// alias list. +// + +class G4UIaliasList +{ + public: + G4UIaliasList(); + ~G4UIaliasList(); + + private: + G4int operator==(const G4UIaliasList &right) const; + G4int operator!=(const G4UIaliasList &right) const; + + public: + void RemoveAlias(G4String aliasName); + void ChangeAlias(G4String aliasName, G4String aliasValue); + G4String* FindAlias(G4String aliasName); + void List(); + + private: + void AddNewAlias(G4String aliasName, G4String aliasValue); + G4int FindAliasID(G4String aliasName); + + private: + G4std::vector alias; + G4std::vector value; + +}; + +#endif + diff --git a/source/intercoms/include/G4UIbatch.hh b/source/intercoms/include/G4UIbatch.hh index c2fb44de08..9c5224fb76 100644 --- a/source/intercoms/include/G4UIbatch.hh +++ b/source/intercoms/include/G4UIbatch.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIbatch.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIbatch.hh,v 1.4 2001/07/11 10:01:11 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $id$ diff --git a/source/intercoms/include/G4UIcmdWith3Vector.hh b/source/intercoms/include/G4UIcmdWith3Vector.hh index cb645b16b8..054c9306a0 100644 --- a/source/intercoms/include/G4UIcmdWith3Vector.hh +++ b/source/intercoms/include/G4UIcmdWith3Vector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWith3Vector.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWith3Vector.hh,v 1.4 2001/07/11 10:01:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh b/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh index 0345780a1e..467baa42fe 100644 --- a/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh +++ b/source/intercoms/include/G4UIcmdWith3VectorAndUnit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWith3VectorAndUnit.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWith3VectorAndUnit.hh,v 1.4 2001/07/11 10:01:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithABool.hh b/source/intercoms/include/G4UIcmdWithABool.hh index b7233d5ae2..b180029cbc 100644 --- a/source/intercoms/include/G4UIcmdWithABool.hh +++ b/source/intercoms/include/G4UIcmdWithABool.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithABool.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithABool.hh,v 1.4 2001/07/11 10:01:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithADouble.hh b/source/intercoms/include/G4UIcmdWithADouble.hh index 91ca27938c..6ebeeea3ff 100644 --- a/source/intercoms/include/G4UIcmdWithADouble.hh +++ b/source/intercoms/include/G4UIcmdWithADouble.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithADouble.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithADouble.hh,v 1.4 2001/07/11 10:01:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh b/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh index 040d08fccd..aae92f2182 100644 --- a/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh +++ b/source/intercoms/include/G4UIcmdWithADoubleAndUnit.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithADoubleAndUnit.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithADoubleAndUnit.hh,v 1.4 2001/07/11 10:01:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithAString.hh b/source/intercoms/include/G4UIcmdWithAString.hh index 8f91a7a49e..30d9da13b5 100644 --- a/source/intercoms/include/G4UIcmdWithAString.hh +++ b/source/intercoms/include/G4UIcmdWithAString.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithAString.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithAString.hh,v 1.4 2001/07/11 10:01:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithAnInteger.hh b/source/intercoms/include/G4UIcmdWithAnInteger.hh index 2b92be4d08..868282de28 100644 --- a/source/intercoms/include/G4UIcmdWithAnInteger.hh +++ b/source/intercoms/include/G4UIcmdWithAnInteger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithAnInteger.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithAnInteger.hh,v 1.4 2001/07/11 10:01:12 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UIcmdWithoutParameter.hh b/source/intercoms/include/G4UIcmdWithoutParameter.hh index 55c28df77f..9b2ada0e36 100644 --- a/source/intercoms/include/G4UIcmdWithoutParameter.hh +++ b/source/intercoms/include/G4UIcmdWithoutParameter.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithoutParameter.hh,v 1.3.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithoutParameter.hh,v 1.4 2001/07/11 10:01:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UIcommand.hh b/source/intercoms/include/G4UIcommand.hh index b3180c69d5..4a68f6e820 100644 --- a/source/intercoms/include/G4UIcommand.hh +++ b/source/intercoms/include/G4UIcommand.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcommand.hh,v 1.6.2.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcommand.hh,v 1.10 2001/10/16 08:14:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -33,8 +33,6 @@ class G4UImessenger; #include "globals.hh" #include "G4ApplicationState.hh" -//#include "g4rw/tpordvec.h" -//#include "g4rw/tvordvec.h" #include "g4std/vector" #include "G4UItokenNum.hh" @@ -58,8 +56,8 @@ class G4UIcommand public: virtual ~G4UIcommand(); - int operator==(const G4UIcommand &right) const; - int operator!=(const G4UIcommand &right) const; + G4int operator==(const G4UIcommand &right) const; + G4int operator!=(const G4UIcommand &right) const; G4int DoIt(G4String parameterList); G4String GetCurrentValue(); @@ -108,7 +106,7 @@ class G4UIcommand { return rangeString; }; inline G4int GetGuidanceEntries() const { return commandGuidance.size(); } - inline const G4String GetGuidanceLine(int i) const + inline const G4String GetGuidanceLine(G4int i) const { return commandGuidance[i]; } inline const G4String GetCommandPath() const { return commandPath; } @@ -116,8 +114,10 @@ class G4UIcommand { return commandName; } inline G4int GetParameterEntries() const { return parameter.size(); } - inline G4UIparameter * GetParameter(int i) const + inline G4UIparameter * GetParameter(G4int i) const { return parameter[i]; } + inline G4std::vector* GetStateList() + { return &availabelStateList; } public: // with description inline void SetParameter(G4UIparameter *const newParameter) { @@ -147,15 +147,15 @@ class G4UIcommand } protected: - int CheckNewValue(G4String newValue); + G4int CheckNewValue(G4String newValue); // --- the following is used by CheckNewValue() -------- private: - int TypeCheck(G4String newValue); - int RangeCheck(G4String newValue); - int IsInt(const char* str, short maxLength); - int IsDouble(const char* str); - int ExpectExponent(const char* str); + G4int TypeCheck(G4String newValue); + G4int RangeCheck(G4String newValue); + G4int IsInt(const char* str, short maxLength); + G4int IsDouble(const char* str); + G4int ExpectExponent(const char* str); // syntax nodes yystype Expression( void ); yystype LogicalORExpression( void ); @@ -167,26 +167,26 @@ class G4UIcommand yystype UnaryExpression( void ); yystype PrimaryExpression( void ); // semantics routines - int Eval2( yystype arg1, int op, yystype arg2 ); - int CompareInt( int arg1, int op, int arg2); - int CompareDouble( double arg1, int op, double arg2); + G4int Eval2( yystype arg1, G4int op, yystype arg2 ); + G4int CompareInt( G4int arg1, G4int op, G4int arg2); + G4int CompareDouble( G4double arg1, G4int op, G4double arg2); // utility tokenNum Yylex( void ); // returns next token unsigned IndexOf( G4String ); // returns the index of the var name unsigned IsParameter( G4String ); // returns 1 or 0 - int G4UIpGetc( void ); // read one char from rangeBuf - int G4UIpUngetc( int c ); // put back - int Backslash( int c ); - int Follow( int expect, int ifyes, int ifno ); - G4String TokenToStr(int token); + G4int G4UIpGetc( void ); // read one char from rangeBuf + G4int G4UIpUngetc( G4int c ); // put back + G4int Backslash( G4int c ); + G4int Follow( G4int expect, G4int ifyes, G4int ifno ); + G4String TokenToStr(G4int token); void PrintToken(void); // for debug // data G4String rangeBuf; - int bp; // buffer pointer for rangeBuf + G4int bp; // buffer pointer for rangeBuf tokenNum token; yystype yylval; G4std::vector newVal; - int paramERR; + G4int paramERR; }; #endif diff --git a/source/intercoms/include/G4UIcommandStatus.hh b/source/intercoms/include/G4UIcommandStatus.hh index effec61cdd..0a86e3088d 100644 --- a/source/intercoms/include/G4UIcommandStatus.hh +++ b/source/intercoms/include/G4UIcommandStatus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcommandStatus.hh,v 1.2.4.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcommandStatus.hh,v 1.4 2001/10/04 23:15:27 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4UIcommandStatus_h @@ -35,7 +35,8 @@ enum G4UIcommandStatus fIllegalApplicationState = 200, fParameterOutOfRange = 300, fParameterUnreadable = 400, - fParameterOutOfCandidates = 500 + fParameterOutOfCandidates = 500, + fAliasNotFound = 600 }; #endif diff --git a/source/intercoms/include/G4UIcommandTree.hh b/source/intercoms/include/G4UIcommandTree.hh index 84f389f6e5..5d7dbba5d6 100644 --- a/source/intercoms/include/G4UIcommandTree.hh +++ b/source/intercoms/include/G4UIcommandTree.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcommandTree.hh,v 1.7.2.1 2001/06/28 19:10:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcommandTree.hh,v 1.12 2001/10/16 08:14:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4UIcommandTree_h @@ -31,7 +31,6 @@ #include "G4UIcommand.hh" #include "globals.hh" -//#include "g4rw/tpordvec.h" #include "g4std/vector" // class description: @@ -47,8 +46,8 @@ class G4UIcommandTree G4UIcommandTree(G4String thePathName); G4UIcommandTree(const char * thePathName); ~G4UIcommandTree(); - int operator==(const G4UIcommandTree &right) const; - int operator!=(const G4UIcommandTree &right) const; + G4int operator==(const G4UIcommandTree &right) const; + G4int operator!=(const G4UIcommandTree &right) const; public: void AddNewCommand(G4UIcommand * newCommand); @@ -57,8 +56,12 @@ class G4UIcommandTree void List(); void ListCurrent(); void ListCurrentWithNum(); + void CreateHTML(); private: + G4String CreateFileName(G4String pName); + G4String ModStr(G4String str); + G4std::vector command; G4std::vector tree; G4UIcommand *guidance; @@ -73,7 +76,7 @@ class G4UIcommandTree { return tree.size(); }; inline G4int GetCommandEntry() const { return command.size(); }; - inline G4UIcommandTree * GetTree(int i) + inline G4UIcommandTree * GetTree(G4int i) { return tree[i-1]; }; inline G4UIcommandTree * GetTree(G4String comName) { @@ -84,7 +87,7 @@ class G4UIcommandTree } return NULL; }; - inline G4UIcommand * GetCommand(int i) + inline G4UIcommand * GetCommand(G4int i) { return command[i-1]; }; inline const G4String GetTitle() const { diff --git a/source/intercoms/include/G4UIcontrolMessenger.hh b/source/intercoms/include/G4UIcontrolMessenger.hh index 8a9e5ad1e0..e29c6ce9d0 100644 --- a/source/intercoms/include/G4UIcontrolMessenger.hh +++ b/source/intercoms/include/G4UIcontrolMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcontrolMessenger.hh,v 1.3.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcontrolMessenger.hh,v 1.9 2001/10/11 01:37:58 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4UIcontrolMessenger_h @@ -34,6 +34,7 @@ class G4UIdirectory; class G4UIcmdWithAString; class G4UIcmdWithAnInteger; class G4UIcmdWithoutParameter; +class G4UIcommand; // class description: // This class is a concrete class of G4UImessenger which defines @@ -41,10 +42,18 @@ class G4UIcmdWithoutParameter; // this messenger are // /control/ // /control/execute +// /control/loop +// /control/foreach +// /control/suppressAbortion // /control/verbose // /control/saveHistory // /control/stopSavingHistory +// /control/alias +// /control/unalias +// /control/listAlias +// /control/shell // /control/manual +// /control/createHTML class G4UIcontrolMessenger : public G4UImessenger { @@ -57,10 +66,18 @@ class G4UIcontrolMessenger : public G4UImessenger private: G4UIdirectory * controlDirectory; G4UIcmdWithAString * ExecuteCommand; + G4UIcmdWithAnInteger * suppressAbortionCommand; G4UIcmdWithAnInteger * verboseCommand; G4UIcmdWithAString * historyCommand; G4UIcmdWithoutParameter * stopStoreHistoryCommand; + G4UIcommand * aliasCommand; + G4UIcmdWithAString * unaliasCommand; + G4UIcmdWithoutParameter * listAliasCommand; + G4UIcmdWithAString * shellCommand; + G4UIcommand * loopCommand; + G4UIcommand * foreachCommand; G4UIcmdWithAString * ManualCommand; + G4UIcmdWithAString * HTMLCommand; }; #endif diff --git a/source/intercoms/include/G4UIdirectory.hh b/source/intercoms/include/G4UIdirectory.hh index fa43a548c7..119351d869 100644 --- a/source/intercoms/include/G4UIdirectory.hh +++ b/source/intercoms/include/G4UIdirectory.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIdirectory.hh,v 1.3.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIdirectory.hh,v 1.4 2001/07/11 10:01:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/include/G4UImanager.hh b/source/intercoms/include/G4UImanager.hh index 9a258c1475..6c8cc8ac03 100644 --- a/source/intercoms/include/G4UImanager.hh +++ b/source/intercoms/include/G4UImanager.hh @@ -21,24 +21,25 @@ // ******************************************************************** // // -// $Id: G4UImanager.hh,v 1.8.2.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UImanager.hh,v 1.16 2001/10/16 08:14:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4UImanager_h #define G4UImanager_h 1 #include "globals.hh" -#include "g4rw/ctoken.h" -//#include "g4rw/tvordvec.h" + #include "g4std/vector" #include "g4std/fstream" #include "G4VStateDependent.hh" +#include "G4UIcommandStatus.hh" class G4UIcommandTree; class G4UIcommand; class G4UIsession; class G4UIcontrolMessenger; class G4UnitsMessenger; +class G4UIaliasList; // class description: // @@ -61,8 +62,8 @@ class G4UImanager : public G4VStateDependent private: G4UImanager(const G4UImanager &right); const G4UImanager & operator=(const G4UImanager &right); - int operator==(const G4UImanager &right) const; - int operator!=(const G4UImanager &right) const; + G4int operator==(const G4UImanager &right) const; + G4int operator!=(const G4UImanager &right) const; public: // with description G4String GetCurrentValues(const char * aCommand); @@ -75,8 +76,18 @@ class G4UImanager : public G4VStateDependent void RemoveCommand(G4UIcommand * aCommand); // This command remove the registered command. After invokation of this // command, that particular command cannot be applied. + void ExecuteMacroFile(const char * fileName); void ExecuteMacroFile(G4String fileName); // A macro file defined by the argument will be read by G4UIbatch object. + void Loop(const char * macroFile,const char * variableName, + G4double initialValue,G4double finalValue,G4double stepSize=1.0); + void Loop(G4String macroFile,G4String variableName, + G4double initialValue,G4double finalValue,G4double stepSize=1.0); + // Execute a macro file more than once with a loop counter. + void Foreach(const char * macroFile,const char * variableName,const char * candidates); + void Foreach(G4String macroFile,G4String variableName,G4String candidates); + // Execute a macro file more than once with an aliased variable which takes + // a value in the candidate list. G4int ApplyCommand(const char * aCommand); G4int ApplyCommand(G4String aCommand); // These two methods are identical. A command (and parameter(s)) given @@ -95,6 +106,26 @@ class G4UImanager : public G4VStateDependent void ListCommands(G4String direc); // All commands registored under the given directory will be listed to // G4cout. + void SetAlias(const char * aliasLine); + void SetAlias(G4String aliasLine); + // Define an alias. The first word of "aliasLine" string is the + // alias name and the remaining word(s) is(are) string value + // to be aliased. + void RemoveAlias(const char * aliasName); + void RemoveAlias(G4String aliasName); + // Remove the defined alias. + void ListAlias(); + // Print all aliases. + G4String SolveAlias(G4String aCmd); + // Convert a command string which contains alias(es). + void CreateHTML(const char* dir = "/"); + // Generate HTML files for defined UI commands + + + public: + void LoopS(G4String valueList); + void ForeachS(G4String valueList); + // These methods are used by G4UIcontrolMessenger to use Loop() and Foreach() methods. virtual G4bool Notify(G4ApplicationState requestedState); // This method is exclusively invoked by G4StateManager and the user // must not use this method. @@ -123,6 +154,7 @@ class G4UImanager : public G4VStateDependent G4std::ofstream historyFile; G4bool saveHistory; G4std::vector histVec; + G4UIaliasList* aliasList; G4bool pauseAtBeginOfEvent; G4bool pauseAtEndOfEvent; @@ -130,11 +162,11 @@ class G4UImanager : public G4VStateDependent public: // with description G4String GetCurrentStringValue(const char * aCommand, - int parameterNumber=1, G4bool reGet=true); + G4int parameterNumber=1, G4bool reGet=true); G4int GetCurrentIntValue(const char * aCommand, - int parameterNumber=1, G4bool reGet=true); + G4int parameterNumber=1, G4bool reGet=true); G4double GetCurrentDoubleValue(const char * aCommand, - int parameterNumber=1, G4bool reGet=true); + G4int parameterNumber=1, G4bool reGet=true); G4String GetCurrentStringValue(const char * aCommand, const char * aParameterName, G4bool reGet=true); G4int GetCurrentIntValue(const char * aCommand, @@ -165,12 +197,12 @@ class G4UImanager : public G4VStateDependent public: inline G4UIcommandTree * GetTree() const - { return treeTop; }; + { return treeTop; } inline G4UIsession * GetSession() const - { return session; }; + { return session; } public: // with description inline void SetSession(G4UIsession *const value) - { session = value; }; + { session = value; } // This method defines the active (G)UI session. void SetCoutDestination(G4UIsession *const value); // This method defines the destination of G4cout/G4cerr stream. @@ -180,11 +212,11 @@ class G4UImanager : public G4VStateDependent public: inline void SetVerboseLevel(G4int val) - { verboseLevel = val; }; + { verboseLevel = val; } inline G4int GetVerboseLevel() const - { return verboseLevel; }; + { return verboseLevel; } inline G4int GetNumberOfHistory() const - { return histVec.size(); }; + { return histVec.size(); } inline G4String GetPreviousCommand(G4int i) const { G4String st; diff --git a/source/intercoms/include/G4UImessenger.hh b/source/intercoms/include/G4UImessenger.hh index ed4fd1ec93..4491c41ffd 100644 --- a/source/intercoms/include/G4UImessenger.hh +++ b/source/intercoms/include/G4UImessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UImessenger.hh,v 1.4.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UImessenger.hh,v 1.6 2001/10/11 13:29:16 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4UImessenger_h @@ -64,8 +64,8 @@ class G4UImessenger // to value(s) of type(s) of the parameter(s). Convert methods corresponding // to the type of the command can be used if the command is an object of // G4UIcmdXXX classes. + public: - // For G4RWTPtrOrderedVector... G4bool operator == (const G4UImessenger& messenger) const; protected: diff --git a/source/intercoms/include/G4UIparameter.hh b/source/intercoms/include/G4UIparameter.hh index 962700f83d..51bd051116 100644 --- a/source/intercoms/include/G4UIparameter.hh +++ b/source/intercoms/include/G4UIparameter.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIparameter.hh,v 1.3.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIparameter.hh,v 1.5 2001/10/16 08:14:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // --------------------------------------------------------------------- @@ -63,8 +63,8 @@ class G4UIparameter // NOT to invoke this by him/herself. public: - int operator==(const G4UIparameter &right) const; - int operator!=(const G4UIparameter &right) const; + G4int operator==(const G4UIparameter &right) const; + G4int operator!=(const G4UIparameter &right) const; G4int CheckNewValue(G4String newValue); void List(); @@ -141,12 +141,12 @@ class G4UIparameter private: // --- the following is used by CheckNewValue() ------- - int TypeCheck(G4String newValue ); - int RangeCheck(G4String newValue ); - int CandidateCheck(G4String newValue ); - int IsInt(const char* str, short maxDigit); - int IsDouble(const char* str); - int ExpectExponent(const char* str); + G4int TypeCheck(G4String newValue ); + G4int RangeCheck(G4String newValue ); + G4int CandidateCheck(G4String newValue ); + G4int IsInt(const char* str, short maxDigit); + G4int IsDouble(const char* str); + G4int ExpectExponent(const char* str); // syntax nodes yystype Expression( void ); yystype LogicalORExpression( void ); @@ -158,24 +158,24 @@ class G4UIparameter yystype UnaryExpression( void ); yystype PrimaryExpression( void ); // semantics routines - int Eval2( yystype arg1, int op, yystype arg2 ); - int CompareInt( int arg1, int op, int arg2); - int CompareDouble( double arg1, int op, double arg2); + G4int Eval2( yystype arg1, G4int op, yystype arg2 ); + G4int CompareInt( G4int arg1, G4int op, G4int arg2); + G4int CompareDouble( double arg1, G4int op, double arg2); // utility tokenNum Yylex( void ); // returns next token - int G4UIpGetc( void ); // read one char from rangeBuf - int G4UIpUngetc( int c ); // put back - int Backslash( int c ); - int Follow( int expect, int ifyes, int ifno ); - G4String TokenToStr(int token); + G4int G4UIpGetc( void ); // read one char from rangeBuf + G4int G4UIpUngetc( G4int c ); // put back + G4int Backslash( G4int c ); + G4int Follow( G4int expect, G4int ifyes, G4int ifno ); + G4String TokenToStr(G4int token); //void PrintToken(void); // debug // data G4String rangeBuf; - int bp; // buffer pointer for rangeBuf + G4int bp; // buffer pointer for rangeBuf tokenNum token; yystype yylval; yystype newVal; - int paramERR; + G4int paramERR; //------------ end of CheckNewValue() related member -------------- }; diff --git a/source/intercoms/include/G4UIsession.hh b/source/intercoms/include/G4UIsession.hh index ef42b0ebe7..0ed4a9b27c 100644 --- a/source/intercoms/include/G4UIsession.hh +++ b/source/intercoms/include/G4UIsession.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIsession.hh,v 1.3.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIsession.hh,v 1.4 2001/07/11 10:01:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $id$ diff --git a/source/intercoms/include/G4UItokenNum.hh b/source/intercoms/include/G4UItokenNum.hh index 543c444435..2e87d744a2 100644 --- a/source/intercoms/include/G4UItokenNum.hh +++ b/source/intercoms/include/G4UItokenNum.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UItokenNum.hh,v 1.2.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UItokenNum.hh,v 1.4 2001/10/16 08:14:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4UItokenNum.hh @@ -51,11 +51,11 @@ enum tokenNum { typedef struct yystype { tokenNum type; - double D; - int I; + G4double D; + G4int I; char C; G4String S; - int operator==(const yystype &right) const + G4int operator==(const yystype &right) const { return (this == &right); } } yystype; diff --git a/source/intercoms/include/G4UnitsMessenger.hh b/source/intercoms/include/G4UnitsMessenger.hh index 56e0edf245..9021aa5b67 100644 --- a/source/intercoms/include/G4UnitsMessenger.hh +++ b/source/intercoms/include/G4UnitsMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UnitsMessenger.hh,v 1.3.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UnitsMessenger.hh,v 1.4 2001/07/11 10:01:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description // diff --git a/source/intercoms/include/G4VFlavoredParallelWorld.hh b/source/intercoms/include/G4VFlavoredParallelWorld.hh index 4b82577c1c..7ecb77da70 100644 --- a/source/intercoms/include/G4VFlavoredParallelWorld.hh +++ b/source/intercoms/include/G4VFlavoredParallelWorld.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VFlavoredParallelWorld.hh,v 1.2.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFlavoredParallelWorld.hh,v 1.3 2001/07/11 10:01:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Abstract interface for GEANT4 Flavored Parallel World. diff --git a/source/intercoms/include/G4VGlobalFastSimulationManager.hh b/source/intercoms/include/G4VGlobalFastSimulationManager.hh index b291197820..b3e35ff7a7 100644 --- a/source/intercoms/include/G4VGlobalFastSimulationManager.hh +++ b/source/intercoms/include/G4VGlobalFastSimulationManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VGlobalFastSimulationManager.hh,v 1.2.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VGlobalFastSimulationManager.hh,v 1.3 2001/07/11 10:01:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Abstract interface for GEANT4 Global Fast Simulation Manager. diff --git a/source/intercoms/include/G4VGraphicsScene.hh b/source/intercoms/include/G4VGraphicsScene.hh index 7c79c16357..24517a1a66 100644 --- a/source/intercoms/include/G4VGraphicsScene.hh +++ b/source/intercoms/include/G4VGraphicsScene.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VGraphicsScene.hh,v 1.5.4.1 2001/06/28 19:10:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VGraphicsScene.hh,v 1.8 2001/08/14 18:19:14 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // John Allison 19th July 1996 // // Class Description: @@ -48,6 +48,7 @@ class G4PhysicalVolumeModel; class G4Polycone; class G4Polyhedra; class G4Polyline; +class G4Scale; class G4Text; class G4Circle; class G4Square; @@ -91,7 +92,8 @@ public: // With description /////////////////////////////////////////////////////////////////// // Functions for adding graphics primitives to the scene handler. - virtual void BeginPrimitives (const G4Transform3D& objectTransformation) = 0; + virtual void BeginPrimitives + (const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; // IMPORTANT: invoke this from your polymorphic versions, e.g.: // void MyXXXSceneHandler::BeginPrimitives // (const G4Transform3D& objectTransformation) { @@ -107,6 +109,7 @@ public: // With description // } virtual void AddPrimitive (const G4Polyline&) = 0; + virtual void AddPrimitive (const G4Scale&) = 0; virtual void AddPrimitive (const G4Text&) = 0; virtual void AddPrimitive (const G4Circle&) = 0; virtual void AddPrimitive (const G4Square&) = 0; diff --git a/source/intercoms/include/G4VVisManager.hh b/source/intercoms/include/G4VVisManager.hh index e0217d6773..0661d7cd44 100644 --- a/source/intercoms/include/G4VVisManager.hh +++ b/source/intercoms/include/G4VVisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VVisManager.hh,v 1.4.4.1 2001/06/28 19:10:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VVisManager.hh,v 1.6 2001/08/17 22:49:26 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // John Allison 19/Oct/1996. // // Class Description: @@ -71,6 +71,7 @@ class G4Polyline; class G4Text; class G4Circle; +class G4Scale; class G4Square; class G4Polymarker; class G4Polyhedron; @@ -94,36 +95,50 @@ public: public: // With description - virtual void Draw (const G4Polyline&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; - - virtual void Draw (const G4Text&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + /////////////////////////////////////////////////////////////////////// + // Draw methods for Geant4 Visualization Primitives, useful + // for representing hits, digis, etc. virtual void Draw (const G4Circle&, const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; - virtual void Draw (const G4Square&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; - - virtual void Draw (const G4Polymarker&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; - - virtual void Draw (const G4Polyhedron&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; - virtual void Draw (const G4NURBS&, const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; - virtual void Draw (const G4VSolid&, const G4VisAttributes&, + virtual void Draw (const G4Polyhedron&, const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + virtual void Draw (const G4Polyline&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + + virtual void Draw (const G4Polymarker&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + + virtual void Draw (const G4Scale&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + + virtual void Draw (const G4Square&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + + virtual void Draw (const G4Text&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + + /////////////////////////////////////////////////////////////////////// + // Draw methods for Geant4 Geometry Objects as if they were + // Visualization Primitives. Useful for representing hits. + virtual void Draw (const G4LogicalVolume&, const G4VisAttributes&, const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; virtual void Draw (const G4VPhysicalVolume&, const G4VisAttributes&, const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + virtual void Draw (const G4VSolid&, const G4VisAttributes&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity) = 0; + + ////////////////////////////////////////////////////////////////////// + // Other methods... + virtual void GeometryHasChanged () = 0; // This is used by the run manager to notify a change of geometry. diff --git a/source/intercoms/src/G4UIaliasList.cc b/source/intercoms/src/G4UIaliasList.cc new file mode 100644 index 0000000000..a7596ecf8a --- /dev/null +++ b/source/intercoms/src/G4UIaliasList.cc @@ -0,0 +1,127 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4UIaliasList.cc,v 1.4 2001/10/16 08:14:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "G4UIaliasList.hh" +#include "G4ios.hh" + +G4UIaliasList::G4UIaliasList() +{ } + +G4UIaliasList::~G4UIaliasList() +{ + G4int i; + G4int n_treeEntry = alias.size(); + for( i=0; i < n_treeEntry; i++ ) + { delete alias[i]; + delete value[i]; } +} + +G4int G4UIaliasList::operator==(const G4UIaliasList &right) const +{ + return ( this == &right ); +} + +G4int G4UIaliasList::operator!=(const G4UIaliasList &right) const +{ + return ( this != &right ); +} + +void G4UIaliasList::AddNewAlias(G4String aliasName, G4String aliasValue) +{ + if(FindAlias(aliasName)) + { + G4cerr << "Alias <" << aliasName << "> already exist. Command ignored." + << G4endl; + return; + } + G4String* newAlias = new G4String(aliasName); + alias.push_back(newAlias); + G4String* newValue = new G4String(aliasValue); + value.push_back(newValue); +} + +void G4UIaliasList::RemoveAlias(G4String aliasName) +{ + G4int i = FindAliasID(aliasName); + if(i<0) + { + G4cerr << "Alias <" << aliasName << "> does not exist. Command ignored." + << G4endl; + return; + } + alias.erase(alias.begin()+i); + value.erase(value.begin()+i); +} + +void G4UIaliasList::ChangeAlias(G4String aliasName, G4String aliasValue) +{ + G4int i = FindAliasID(aliasName); + if(i<0) + { + AddNewAlias(aliasName,aliasValue); + return; + } + *(value[i]) = aliasValue; +} + +G4String* G4UIaliasList::FindAlias(G4String aliasName) +{ + G4int i = FindAliasID(aliasName); + if(i<0) + { return 0; } + return value[i]; +} + +G4int G4UIaliasList::FindAliasID(G4String aliasName) +{ + G4int i_entry = alias.size(); + for(G4int i=0;i*(alias[i2])) + { + G4String* tmp = alias[i1]; + alias[i1] = alias[i2]; + alias[i2] = tmp; + tmp = value[i1]; + value[i1] = value[i2]; + value[i2] = tmp; + } + } + + for(G4int i=0;iApplyCommand(commandLine); } + G4String commandString = commandLine; + G4String nC= commandString.strip(G4String::both); + if( commandLine[0] == '#') + { if(G4UImanager::GetUIpointer()->GetVerboseLevel()==2) + { G4cout << commandLine << G4endl; } + } + else if( nC.length() == 0 ) + { continue; } + else if(nC == "exit") + { break; } else - { G4cout << commandLine << G4endl; } + { + G4int rc = UImanager->ApplyCommand(commandLine); + if(rc) + { + switch(rc) + { + case fCommandNotFound: + G4cerr << "***** COMMAND NOT FOUND <" + << commandLine << "> *****" << G4endl; + break; + case fIllegalApplicationState: + G4cerr << "***** Illegal application state <" + << commandLine << "> *****" << G4endl; + break; + default: + G4int pn = rc%100; + G4cerr << "***** Illegal parameter (" << pn << ") <" + << commandLine << "> *****" << G4endl; + } + G4cerr << "***** Command ignored *****" << G4endl; + } + } } } return previousSession; diff --git a/source/intercoms/src/G4UIcmdWith3Vector.cc b/source/intercoms/src/G4UIcmdWith3Vector.cc index 2c21aa5c00..6b887b157f 100644 --- a/source/intercoms/src/G4UIcmdWith3Vector.cc +++ b/source/intercoms/src/G4UIcmdWith3Vector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWith3Vector.cc,v 1.2.4.1 2001/06/28 19:10:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWith3Vector.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc b/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc index 2698df8f32..5b3c7d3452 100644 --- a/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc +++ b/source/intercoms/src/G4UIcmdWith3VectorAndUnit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWith3VectorAndUnit.cc,v 1.2.4.1 2001/06/28 19:10:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWith3VectorAndUnit.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithABool.cc b/source/intercoms/src/G4UIcmdWithABool.cc index 4a76f33fe2..2da93607b1 100644 --- a/source/intercoms/src/G4UIcmdWithABool.cc +++ b/source/intercoms/src/G4UIcmdWithABool.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithABool.cc,v 1.2.4.1 2001/06/28 19:10:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithABool.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithADouble.cc b/source/intercoms/src/G4UIcmdWithADouble.cc index 6ee0335eb6..13d4074f64 100644 --- a/source/intercoms/src/G4UIcmdWithADouble.cc +++ b/source/intercoms/src/G4UIcmdWithADouble.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithADouble.cc,v 1.2.4.1 2001/06/28 19:10:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithADouble.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc b/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc index 97f6885b23..7dbd0ee057 100644 --- a/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc +++ b/source/intercoms/src/G4UIcmdWithADoubleAndUnit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithADoubleAndUnit.cc,v 1.2.4.1 2001/06/28 19:10:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithADoubleAndUnit.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithAString.cc b/source/intercoms/src/G4UIcmdWithAString.cc index b0b5b031c4..071a4ad5fc 100644 --- a/source/intercoms/src/G4UIcmdWithAString.cc +++ b/source/intercoms/src/G4UIcmdWithAString.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithAString.cc,v 1.2.4.1 2001/06/28 19:10:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithAString.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithAnInteger.cc b/source/intercoms/src/G4UIcmdWithAnInteger.cc index e86ed6b65a..321854c56e 100644 --- a/source/intercoms/src/G4UIcmdWithAnInteger.cc +++ b/source/intercoms/src/G4UIcmdWithAnInteger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithAnInteger.cc,v 1.2.4.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithAnInteger.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UIcmdWithoutParameter.cc b/source/intercoms/src/G4UIcmdWithoutParameter.cc index 9576effdb3..44f82cc72b 100644 --- a/source/intercoms/src/G4UIcmdWithoutParameter.cc +++ b/source/intercoms/src/G4UIcmdWithoutParameter.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcmdWithoutParameter.cc,v 1.2.4.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcmdWithoutParameter.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UIcommand.cc b/source/intercoms/src/G4UIcommand.cc index d210259c9c..da4cf7ab88 100644 --- a/source/intercoms/src/G4UIcommand.cc +++ b/source/intercoms/src/G4UIcommand.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIcommand.cc,v 1.8.2.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcommand.cc,v 1.18 2001/10/23 07:51:36 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -32,7 +32,7 @@ #include "G4UIcommandStatus.hh" #include "G4StateManager.hh" #include "G4UnitsTable.hh" -#include "g4rw/ctoken.h" +#include "G4Tokenizer.hh" #include "G4ios.hh" G4UIcommand::G4UIcommand():paramERR(0) { } @@ -60,6 +60,7 @@ G4UIcommand::G4UIcommand(const char * theCommandPath, availabelStateList.push_back(Idle); availabelStateList.push_back(GeomClosed); availabelStateList.push_back(EventProc); + availabelStateList.push_back(Abort); } void G4UIcommand::G4UIcommandCommonConstructorCode @@ -67,7 +68,7 @@ void G4UIcommand::G4UIcommandCommonConstructorCode { commandPath = theCommandPath; commandName = theCommandPath; - int commandNameIndex = commandName.last('/'); + G4int commandNameIndex = commandName.last('/'); commandName.remove(0,commandNameIndex+1); G4UImanager::GetUIpointer()->AddNewCommand(this); @@ -78,18 +79,18 @@ G4UIcommand::~G4UIcommand() G4UImanager* fUImanager = G4UImanager::GetUIpointer(); if(fUImanager) fUImanager->RemoveCommand(this); - int n_parameterEntry = parameter.size(); - for( int i_thParameter=0; i_thParameter < n_parameterEntry; i_thParameter++ ) + G4int n_parameterEntry = parameter.size(); + for( G4int i_thParameter=0; i_thParameter < n_parameterEntry; i_thParameter++ ) { delete parameter[i_thParameter]; } parameter.clear(); } -int G4UIcommand::operator==(const G4UIcommand &right) const +G4int G4UIcommand::operator==(const G4UIcommand &right) const { return ( commandPath == right.GetCommandPath() ); } -int G4UIcommand::operator!=(const G4UIcommand &right) const +G4int G4UIcommand::operator!=(const G4UIcommand &right) const { return ( commandPath != right.GetCommandPath() ); } @@ -97,13 +98,13 @@ int G4UIcommand::operator!=(const G4UIcommand &right) const G4int G4UIcommand::DoIt(G4String parameterList) { G4String correctParameters; - int n_parameterEntry = parameter.size(); + G4int n_parameterEntry = parameter.size(); if( n_parameterEntry != 0 ) { G4String aToken; G4String correctToken; G4Tokenizer parameterToken( parameterList ); - for( int i_thParameter=0; i_thParameter 0) { @@ -112,7 +113,8 @@ G4int G4UIcommand::DoIt(G4String parameterList) aToken = parameterToken(); if( aToken.length()>0 && aToken(0)=='"' ) { - while( aToken(aToken.length()-1) != '"' ) + while( aToken(aToken.length()-1) != '"' + || ( aToken.length()==1 && aToken(0)=='"' )) { G4String additionalToken = parameterToken(); if( additionalToken.isNull() ) @@ -120,24 +122,58 @@ G4int G4UIcommand::DoIt(G4String parameterList) aToken += " "; aToken += additionalToken; } - // aToken.strip(G4String::both,'"'); } + else if(i_thParameter==n_parameterEntry-1 && parameter[i_thParameter]->GetParameterType()=='s') + { + G4String anotherToken; + while(!((anotherToken=parameterToken()).isNull())) + { + G4int idxs = anotherToken.index("#"); + if(idxs==G4int(G4std::string::npos)) + { + aToken += " "; + aToken += anotherToken; + } + else if(idxs>0) + { + aToken += " "; + aToken += anotherToken(0,idxs); + break; + } + else + { break; } + } + } + if( aToken.isNull() || aToken == "!" ) { if(parameter[i_thParameter]->IsOmittable()) { if(parameter[i_thParameter]->GetCurrentAsDefault()) { - G4Tokenizer cvt(messenger->GetCurrentValue(this)); + G4Tokenizer cvSt(messenger->GetCurrentValue(this)); G4String parVal; - for(int ii=0;iiCheckNewValue( aToken ); + G4int stat = parameter[i_thParameter]->CheckNewValue( aToken ); if(stat) return stat+i_thParameter; correctParameters.append(aToken); } @@ -230,8 +266,8 @@ G4bool G4UIcommand::IsAvailable() G4ApplicationState currentState = G4StateManager::GetStateManager()->GetCurrentState(); - int nState = availabelStateList.size(); - for(int i=0;iGetUnitsList(); retStr = UCnt[0]->GetSymbol(); G4int je = UCnt.size(); - for(int j=1;jGetSymbol(); } - for(int k=0;kGetName(); @@ -290,15 +326,15 @@ void G4UIcommand::List() if(commandPath(commandPath.length()-1)!='/') { G4cout << "Command " << commandPath << G4endl; } G4cout << "Guidance :" << G4endl; - int n_guidanceEntry = commandGuidance.size(); - for( int i_thGuidance=0; i_thGuidance < n_guidanceEntry; i_thGuidance++ ) + G4int n_guidanceEntry = commandGuidance.size(); + for( G4int i_thGuidance=0; i_thGuidance < n_guidanceEntry; i_thGuidance++ ) { G4cout << commandGuidance[i_thGuidance] << G4endl; } if( ! rangeString.isNull() ) { G4cout << " Range of parameters : " << rangeString << G4endl; } - int n_parameterEntry = parameter.size(); + G4int n_parameterEntry = parameter.size(); if( n_parameterEntry > 0 ) { - for( int i_thParameter=0; i_thParameterList(); } } G4cout << G4endl; @@ -313,7 +349,7 @@ void G4UIcommand::List() //#include "checkNewValue_debug.icc" //#define DEBUG 1 -int G4UIcommand:: +G4int G4UIcommand:: CheckNewValue(G4String newValue) { yystype result; @@ -325,7 +361,7 @@ CheckNewValue(G4String newValue) // ------------------ type check routines ------------------- -int G4UIcommand:: +G4int G4UIcommand:: TypeCheck(G4String newValues) { G4String aNewValue; @@ -367,14 +403,14 @@ TypeCheck(G4String newValues) } -int G4UIcommand:: +G4int G4UIcommand:: IsInt(const char* buf, short maxDigits) { const char* p= buf; - int length=0; + G4int length=0; if( *p == '+' || *p == '-') { ++p; } - if( isdigit( (int)(*p) )) { - while( isdigit( (int)(*p) )) { ++p; ++length; } + if( isdigit( (G4int)(*p) )) { + while( isdigit( (G4int)(*p) )) { ++p; ++length; } if( *p == '\0' ) { if( length > maxDigits) { G4cerr <<"digit length exceeds"< arg2); opr= ">" ; break; @@ -815,10 +851,10 @@ CompareInt(int arg1, int op, int arg2) return result; } -int G4UIcommand:: -CompareDouble(double arg1, int op, double arg2) +G4int G4UIcommand:: +CompareDouble(G4double arg1, G4int op, G4double arg2) { - int result=-1; + G4int result=-1; G4String opr; switch (op) { case GT: result = ( arg1 > arg2); opr= ">"; break; @@ -877,7 +913,7 @@ IsParameter(G4String nam) tokenNum G4UIcommand:: Yylex() // reads input and returns token number, KR486 { // (returns EOF) - int c; + G4int c; G4String buf; while(( c= G4UIpGetc())==' '|| c=='\t' || c== '\n' ) @@ -932,10 +968,10 @@ Yylex() // reads input and returns token number, KR486 } -int G4UIcommand:: -Follow(int expect, int ifyes, int ifno) +G4int G4UIcommand:: +Follow(G4int expect, G4int ifyes, G4int ifno) { - int c = G4UIpGetc(); + G4int c = G4UIpGetc(); if ( c== expect) return ifyes; G4UIpUngetc(c); @@ -943,16 +979,16 @@ Follow(int expect, int ifyes, int ifno) } //------------------ low level routines ----------------------------- -int G4UIcommand:: +G4int G4UIcommand:: G4UIpGetc() { // emulation of getc() - int length = rangeString.length(); + G4int length = rangeString.length(); if( bp < length) return rangeString(bp++); else return EOF; } -int G4UIcommand:: -G4UIpUngetc(int c) { // emulation of ungetc() +G4int G4UIcommand:: +G4UIpUngetc(G4int c) { // emulation of ungetc() if (c<0) return -1; if (bp >0 && c == rangeString(bp-1)) { --bp; diff --git a/source/intercoms/src/G4UIcommandTree.cc b/source/intercoms/src/G4UIcommandTree.cc index 4d24a32708..fb180274b1 100644 --- a/source/intercoms/src/G4UIcommandTree.cc +++ b/source/intercoms/src/G4UIcommandTree.cc @@ -21,11 +21,13 @@ // ******************************************************************** // // -// $Id: G4UIcommandTree.cc,v 1.6.2.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcommandTree.cc,v 1.10 2001/10/16 08:14:32 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4UIcommandTree.hh" +#include "G4StateManager.hh" +#include "g4std/fstream" #include "G4ios.hh" G4UIcommandTree::G4UIcommandTree() @@ -46,18 +48,18 @@ G4UIcommandTree::G4UIcommandTree(const char * thePathName) G4UIcommandTree::~G4UIcommandTree() { - int i; - int n_treeEntry = tree.size(); + G4int i; + G4int n_treeEntry = tree.size(); for( i=0; i < n_treeEntry; i++ ) { delete tree[i]; } } -int G4UIcommandTree::operator==(const G4UIcommandTree &right) const +G4int G4UIcommandTree::operator==(const G4UIcommandTree &right) const { return ( pathName == right.GetPathName() ); } -int G4UIcommandTree::operator!=(const G4UIcommandTree &right) const +G4int G4UIcommandTree::operator!=(const G4UIcommandTree &right) const { return ( pathName != right.GetPathName() ); } @@ -72,12 +74,12 @@ void G4UIcommandTree::AddNewCommand(G4UIcommand *newCommand) guidance = newCommand; return; } - int i = remainingPath.first('/'); - if( i == int(G4std::string::npos) ) + G4int i = remainingPath.first('/'); + if( i == G4int(G4std::string::npos) ) { // Find command - int n_commandEntry = command.size(); - for( int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) + G4int n_commandEntry = command.size(); + for( G4int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) { if( remainingPath == command[i_thCommand]->GetCommandName() ) { return; } @@ -90,8 +92,8 @@ void G4UIcommandTree::AddNewCommand(G4UIcommand *newCommand) // Find path G4String nextPath = pathName; nextPath.append(remainingPath(0,i+1)); - int n_treeEntry = tree.size(); - for( int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) + G4int n_treeEntry = tree.size(); + for( G4int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) { if( nextPath == tree[i_thTree]->GetPathName() ) { @@ -117,12 +119,12 @@ void G4UIcommandTree::RemoveCommand(G4UIcommand *aCommand) } else { - int i = remainingPath.first('/'); - if( i == int(G4std::string::npos) ) + G4int i = remainingPath.first('/'); + if( i == G4int(G4std::string::npos) ) { // Find command - int n_commandEntry = command.size(); - for( int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) + G4int n_commandEntry = command.size(); + for( G4int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) { if( remainingPath == command[i_thCommand]->GetCommandName() ) { @@ -136,13 +138,13 @@ void G4UIcommandTree::RemoveCommand(G4UIcommand *aCommand) // Find path G4String nextPath = pathName; nextPath.append(remainingPath(0,i+1)); - int n_treeEntry = tree.size(); - for( int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) + G4int n_treeEntry = tree.size(); + for( G4int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) { if( nextPath == tree[i_thTree]->GetPathName() ) { tree[i_thTree]->RemoveCommand( aCommand ); - int n_commandRemain = tree[i_thTree]->GetCommandEntry(); + G4int n_commandRemain = tree[i_thTree]->GetCommandEntry(); if(n_commandRemain==0) { G4UIcommandTree * emptyTree = tree[i_thTree]; @@ -162,12 +164,12 @@ G4UIcommand * G4UIcommandTree::FindPath(G4String commandPath) { return NULL; } G4String remainingPath = commandPath; remainingPath.remove(0,pathName.length()); - int i = remainingPath.first('/'); - if( i == int(G4std::string::npos) ) + G4int i = remainingPath.first('/'); + if( i == G4int(G4std::string::npos) ) { // Find command - int n_commandEntry = command.size(); - for( int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) + G4int n_commandEntry = command.size(); + for( G4int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) { if( remainingPath == command[i_thCommand]->GetCommandName() ) { return command[i_thCommand]; } @@ -178,8 +180,8 @@ G4UIcommand * G4UIcommandTree::FindPath(G4String commandPath) // Find path G4String nextPath = pathName; nextPath.append(remainingPath(0,i+1)); - int n_treeEntry = tree.size(); - for( int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) + G4int n_treeEntry = tree.size(); + for( G4int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) { if( nextPath == tree[i_thTree]->GetPathName() ) { return tree[i_thTree]->FindPath( commandPath ); } @@ -193,15 +195,15 @@ void G4UIcommandTree::ListCurrent() G4cout << "Command directory path : " << pathName << G4endl; if( guidance != NULL ) guidance->List(); G4cout << " Sub-directories : " << G4endl; - int n_treeEntry = tree.size(); - for( int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) + G4int n_treeEntry = tree.size(); + for( G4int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) { G4cout << " " << tree[i_thTree]->GetPathName() << " " << tree[i_thTree]->GetTitle() << G4endl; } G4cout << " Commands : " << G4endl; - int n_commandEntry = command.size(); - for( int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) + G4int n_commandEntry = command.size(); + for( G4int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) { G4cout << " " << command[i_thCommand]->GetCommandName() << " * " << command[i_thCommand]->GetTitle() << G4endl; @@ -212,18 +214,18 @@ void G4UIcommandTree::ListCurrentWithNum() { G4cout << "Command directory path : " << pathName << G4endl; if( guidance != NULL ) guidance->List(); - int i = 0; + G4int i = 0; G4cout << " Sub-directories : " << G4endl; - int n_treeEntry = tree.size(); - for( int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) + G4int n_treeEntry = tree.size(); + for( G4int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) { i++; G4cout << " " << i << ") " << tree[i_thTree]->GetPathName() << " " << tree[i_thTree]->GetTitle() << G4endl; } G4cout << " Commands : " << G4endl; - int n_commandEntry = command.size(); - for( int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) + G4int n_commandEntry = command.size(); + for( G4int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) { i++; G4cout << " " << i << ") " << command[i_thCommand]->GetCommandName() @@ -234,16 +236,130 @@ void G4UIcommandTree::ListCurrentWithNum() void G4UIcommandTree::List() { ListCurrent(); - int n_commandEntry = command.size(); - for( int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) + G4int n_commandEntry = command.size(); + for( G4int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) { command[i_thCommand]->List(); } - int n_treeEntry = tree.size(); - for( int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) + G4int n_treeEntry = tree.size(); + for( G4int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) { tree[i_thTree]->List(); } } +G4String G4UIcommandTree::CreateFileName(G4String pName) +{ + G4String fn = pName; + G4int idxs; + while((idxs=fn.index("/"))!=G4int(G4std::string::npos)) + { fn(idxs) = '_'; } + fn += ".html"; + return fn; +} + +G4String G4UIcommandTree::ModStr(G4String str) +{ + G4String sx; + for(G4int i=0;i': + sx += ">"; break; + case '&': + sx += "&"; break; + default: + sx += c; + } + } + return sx; +} + +void G4UIcommandTree::CreateHTML() +{ + G4String ofileName = CreateFileName(pathName); + G4std::ofstream oF(ofileName, G4std::ios::out); + + oF << "Commands in " << ModStr(pathName) << "" << G4endl; + oF << "

" << ModStr(pathName) << "

" << G4endl; + + if( guidance != NULL ) + { + for(G4int i=0;iGetGuidanceEntries();i++) + { oF << ModStr(guidance->GetGuidanceLine(i)) << "
" << G4endl; } + } + + oF << "


" << G4endl; + + oF << "

Sub-directories :

" << G4endl; + for( G4int i_thTree = 0; i_thTree < G4int(tree.size()); i_thTree++ ) + { + oF << "


GetPathName()) + << "\">" << ModStr(tree[i_thTree]->GetPathName()) << "" << G4endl; + oF << "

" << ModStr(tree[i_thTree]->GetTitle()) << G4endl; + tree[i_thTree]->CreateHTML(); + } + + oF << "


" << G4endl; + + oF << "

Commands :

" << G4endl; + for( G4int i_thCommand = 0; i_thCommand < G4int(command.size()); i_thCommand++ ) + { + G4UIcommand* cmd = command[i_thCommand]; + oF << "


" << ModStr(cmd->GetCommandName()); + if(cmd->GetParameterEntries()>0) + { + for(G4int i_thParam=0;i_thParamGetParameterEntries();i_thParam++) + { oF << " [" << ModStr(cmd->GetParameter(i_thParam)->GetParameterName()) << "]"; } + } + oF << "" << G4endl; + oF << "

" << G4endl; + for(G4int i=0;iGetGuidanceEntries();i++) + { oF << ModStr(cmd->GetGuidanceLine(i)) << "
" << G4endl; } + if(!(cmd->GetRange()).isNull()) + { oF << "

Range : " << ModStr(cmd->GetRange()) << G4endl; } + G4std::vector* availabelStateList = cmd->GetStateList(); + if(availabelStateList->size()==6) + { oF << "

Available at all Geant4 states." << G4endl; } + else + { + oF << "

Available Geant4 state(s) : "; + for(G4int ias=0;iassize());ias++) + { oF << G4StateManager::GetStateManager()->GetStateString((*availabelStateList)[ias]) << " " << G4endl; } + } + if(cmd->GetParameterEntries()>0) + { + oF << "

Parameters" << G4endl; + for(G4int i_thParam=0;i_thParamGetParameterEntries();i_thParam++) + { + G4UIparameter* prm = cmd->GetParameter(i_thParam); + oF << "
" << ModStr(prm->GetParameterName()) << G4endl; + oF << "type " << prm->GetParameterType() << G4endl; + oF << ""; + if(prm->IsOmittable()) + { + oF << "Omittable : "; + if(prm->GetCurrentAsDefault()) + { oF << "current value is used as the default value." << G4endl; } + else + { oF << "default value = " << prm->GetDefaultValue() << G4endl; } + } + oF << ""; + if(!(prm->GetParameterRange()).isNull()) + { oF << "Parameter range : " << ModStr(prm->GetParameterRange()) << G4endl; } + else if(!(prm->GetParameterCandidates()).isNull()) + { oF << "Parameter candidates : " << ModStr(prm->GetParameterCandidates()) << G4endl; } + } + oF << "
" << G4endl; + } + + } + + oF << "
" << G4endl; + oF.close(); +} diff --git a/source/intercoms/src/G4UIcontrolMessenger.cc b/source/intercoms/src/G4UIcontrolMessenger.cc index e573db9b50..ba09e768dd 100644 --- a/source/intercoms/src/G4UIcontrolMessenger.cc +++ b/source/intercoms/src/G4UIcontrolMessenger.cc @@ -21,16 +21,21 @@ // ******************************************************************** // // -// $Id: G4UIcontrolMessenger.cc,v 1.2.4.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIcontrolMessenger.cc,v 1.8 2001/10/11 01:38:00 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // +#include #include "G4UIcontrolMessenger.hh" #include "G4UImanager.hh" #include "G4UIdirectory.hh" +#include "G4UIcommand.hh" +#include "G4UIparameter.hh" #include "G4UIcmdWithAString.hh" #include "G4UIcmdWithAnInteger.hh" #include "G4UIcmdWithoutParameter.hh" +#include "G4UIaliasList.hh" +#include "G4StateManager.hh" #include "G4ios.hh" G4UIcontrolMessenger::G4UIcontrolMessenger() @@ -41,7 +46,44 @@ G4UIcontrolMessenger::G4UIcontrolMessenger() ExecuteCommand = new G4UIcmdWithAString("/control/execute",this); ExecuteCommand->SetGuidance("Execute a macro file."); ExecuteCommand->SetParameterName("fileName",false); + + loopCommand = new G4UIcommand("/control/loop",this); + loopCommand->SetGuidance("Execute a macro file more than once."); + loopCommand->SetGuidance("Loop counter can be used as an aliased variable."); + G4UIparameter* param1 = new G4UIparameter("macroFile",'s',false); + loopCommand->SetParameter(param1); + G4UIparameter* param2 = new G4UIparameter("counterName",'s',false); + loopCommand->SetParameter(param2); + G4UIparameter* param3 = new G4UIparameter("initialValue",'d',false); + loopCommand->SetParameter(param3); + G4UIparameter* param4 = new G4UIparameter("finalValue",'d',false); + loopCommand->SetParameter(param4); + G4UIparameter* param5 = new G4UIparameter("stepSize",'d',true); + param5->SetDefaultValue(1.0); + loopCommand->SetParameter(param5); + + foreachCommand = new G4UIcommand("/control/foreach",this); + foreachCommand->SetGuidance("Execute a macro file more than once."); + foreachCommand->SetGuidance("Loop counter can be used as an aliased variable."); + foreachCommand->SetGuidance("Values must be separated by a space."); + G4UIparameter* param6 = new G4UIparameter("macroFile",'s',false); + foreachCommand->SetParameter(param6); + G4UIparameter* param7 = new G4UIparameter("counterName",'s',false); + foreachCommand->SetParameter(param7); + G4UIparameter* param8 = new G4UIparameter("valueList",'s',false); + foreachCommand->SetParameter(param8); + suppressAbortionCommand = new G4UIcmdWithAnInteger("/control/suppressAbortion",this); + suppressAbortionCommand->SetGuidance("Suppress the program abortion caused by G4Exception."); + suppressAbortionCommand->SetGuidance("Suppression level = 0 : no suppression"); + suppressAbortionCommand->SetGuidance(" = 1 : suppress during EventProc state"); + suppressAbortionCommand->SetGuidance(" = 2 : full suppression, i.e. no abortion by G4Exception"); + suppressAbortionCommand->SetGuidance("When abortion is suppressed, you will get error messages issued by G4Exception,"); + suppressAbortionCommand->SetGuidance("and there is NO guarantee for the correct result after the G4Exception error message."); + suppressAbortionCommand->SetParameterName("level",true); + suppressAbortionCommand->SetRange("level >= 0 && level <= 2"); + suppressAbortionCommand->SetDefaultValue(0); + verboseCommand = new G4UIcmdWithAnInteger("/control/verbose",this); verboseCommand->SetGuidance("Applied command will also be shown on screen."); verboseCommand->SetGuidance("This command is useful with MACRO file."); @@ -62,21 +104,57 @@ G4UIcontrolMessenger::G4UIcontrolMessenger() = new G4UIcmdWithoutParameter("/control/stopSavingHistory",this); stopStoreHistoryCommand->SetGuidance("Stop saving history file."); + aliasCommand = new G4UIcommand("/control/alias",this); + aliasCommand->SetGuidance("Set an alias."); + aliasCommand->SetGuidance("String can be aliased by this command."); + aliasCommand->SetGuidance("The string may contain one or more spaces,"); + aliasCommand->SetGuidance("the string must be enclosed by double quotes (\")."); + aliasCommand->SetGuidance("To use an alias, enclose the alias name with"); + aliasCommand->SetGuidance("parenthis \"{\" and \"}\"."); + G4UIparameter* aliasNameParam = new G4UIparameter("aliasName",'s',false); + aliasCommand->SetParameter(aliasNameParam); + G4UIparameter* aliasValueParam = new G4UIparameter("aliasValue",'s',false); + aliasCommand->SetParameter(aliasValueParam); + + unaliasCommand = new G4UIcmdWithAString("/control/unalias",this); + unaliasCommand->SetGuidance("Remove an alias."); + unaliasCommand->SetParameterName("aliasName",false); + + listAliasCommand = new G4UIcmdWithoutParameter("/control/listAlias",this); + listAliasCommand->SetGuidance("List aliases."); + + shellCommand = new G4UIcmdWithAString("/control/shell",this); + shellCommand->SetGuidance("Execute a (Unix) SHELL command."); + ManualCommand = new G4UIcmdWithAString("/control/manual",this); ManualCommand->SetGuidance("Display all of sub-directories and commands."); ManualCommand->SetGuidance("Directory path should be given by FULL-PATH."); ManualCommand->SetParameterName("dirPath",true); ManualCommand->SetDefaultValue("/"); + + HTMLCommand = new G4UIcmdWithAString("/control/createHTML",this); + HTMLCommand->SetGuidance("Generate HTML files for all of sub-directories and commands."); + HTMLCommand->SetGuidance("Directory path should be given by FULL-PATH."); + HTMLCommand->SetParameterName("dirPath",true); + HTMLCommand->SetDefaultValue("/"); + } G4UIcontrolMessenger::~G4UIcontrolMessenger() { delete ExecuteCommand; + delete suppressAbortionCommand; delete verboseCommand; delete historyCommand; delete stopStoreHistoryCommand; delete ManualCommand; - + delete aliasCommand; + delete unaliasCommand; + delete listAliasCommand; + delete shellCommand; + delete loopCommand; + delete foreachCommand; + delete HTMLCommand; delete controlDirectory; } @@ -88,6 +166,10 @@ void G4UIcontrolMessenger::SetNewValue(G4UIcommand * command,G4String newValue) { UI->ExecuteMacroFile(newValue); } + if(command==suppressAbortionCommand) + { + G4StateManager::GetStateManager()->SetSuppressAbortion(suppressAbortionCommand->GetNewIntValue(newValue)); + } if(command==verboseCommand) { UI->SetVerboseLevel(verboseCommand->GetNewIntValue(newValue)); @@ -104,6 +186,35 @@ void G4UIcontrolMessenger::SetNewValue(G4UIcommand * command,G4String newValue) { UI->ListCommands(newValue); } + if(command==aliasCommand) + { + UI->SetAlias(newValue); + } + if(command==unaliasCommand) + { + UI->RemoveAlias(newValue); + } + if(command==listAliasCommand) + { + UI->ListAlias(); + } + if(command==shellCommand) + { + system(newValue); + } + if(command==loopCommand) + { + UI->LoopS(newValue); + } + if(command==foreachCommand) + { + UI->ForeachS(newValue); + } + if(command==HTMLCommand) + { + UI->CreateHTML(newValue); + } + } G4String G4UIcontrolMessenger::GetCurrentValue(G4UIcommand * command) @@ -115,6 +226,10 @@ G4String G4UIcontrolMessenger::GetCurrentValue(G4UIcommand * command) { currentValue = verboseCommand->ConvertToString(UI->GetVerboseLevel()); } + if(command==suppressAbortionCommand) + { + currentValue = suppressAbortionCommand->ConvertToString(G4StateManager::GetStateManager()->GetSuppressAbortion()); + } return currentValue; } diff --git a/source/intercoms/src/G4UIdirectory.cc b/source/intercoms/src/G4UIdirectory.cc index 750f56530e..795c4bcba1 100644 --- a/source/intercoms/src/G4UIdirectory.cc +++ b/source/intercoms/src/G4UIdirectory.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIdirectory.cc,v 1.2.4.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIdirectory.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4UImanager.cc b/source/intercoms/src/G4UImanager.cc index d5e3fee4e0..146a219d72 100644 --- a/source/intercoms/src/G4UImanager.cc +++ b/source/intercoms/src/G4UImanager.cc @@ -21,14 +21,13 @@ // ******************************************************************** // // -// $Id: G4UImanager.cc,v 1.8.2.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UImanager.cc,v 1.20 2001/11/24 18:37:11 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // --------------------------------------------------------------------- #include "G4UImanager.hh" -#include "G4UIcommandStatus.hh" #include "G4UIcommandTree.hh" #include "G4UIcommand.hh" #include "G4UIsession.hh" @@ -38,9 +37,12 @@ #include "G4ios.hh" #include "G4strstreambuf.hh" #include "G4StateManager.hh" +#include "G4UIaliasList.hh" +#include "G4Tokenizer.hh" #include "g4std/strstream" + G4UImanager * G4UImanager::fUImanager = 0; G4bool G4UImanager::fUImanagerHasBeenKilled = false; @@ -62,6 +64,7 @@ G4UImanager::G4UImanager() { savedCommand = 0; treeTop = new G4UIcommandTree("/"); + aliasList = new G4UIaliasList; G4String nullString; savedParameters = nullString; verboseLevel = 0; @@ -86,6 +89,7 @@ G4UImanager::~G4UImanager() delete UImessenger; delete UnitsMessenger; delete treeTop; + delete aliasList; fUImanagerHasBeenKilled = true; fUImanager = NULL; } @@ -93,9 +97,9 @@ G4UImanager::~G4UImanager() G4UImanager::G4UImanager(const G4UImanager &right) { } const G4UImanager & G4UImanager::operator=(const G4UImanager &right) { return right; } -int G4UImanager::operator==(const G4UImanager &right) const +G4int G4UImanager::operator==(const G4UImanager &right) const { return false; } -int G4UImanager::operator!=(const G4UImanager &right) const +G4int G4UImanager::operator!=(const G4UImanager &right) const { return true; } G4String G4UImanager::GetCurrentValues(const char * aCommand) @@ -111,7 +115,7 @@ G4String G4UImanager::GetCurrentValues(const char * aCommand) } G4String G4UImanager::GetCurrentStringValue(const char * aCommand, -int parameterNumber, G4bool reGet) +G4int parameterNumber, G4bool reGet) { if(reGet || savedCommand == NULL) { @@ -119,7 +123,7 @@ int parameterNumber, G4bool reGet) } G4Tokenizer savedToken( savedParameters ); G4String token; - for(int i_thParameter=0;i_thParameterGetParameterEntries();i++) + for(G4int i=0;iGetParameterEntries();i++) { if( aParameterName == savedCommand->GetParameter(i)->GetParameterName() ) @@ -161,7 +165,7 @@ const char * aParameterName, G4bool reGet) } G4int G4UImanager::GetCurrentIntValue(const char * aCommand, -int parameterNumber, G4bool reGet) +G4int parameterNumber, G4bool reGet) { G4String targetParameter = GetCurrentStringValue( aCommand, parameterNumber, reGet ); @@ -185,7 +189,7 @@ const char * aParameterName, G4bool reGet) } G4double G4UImanager::GetCurrentDoubleValue(const char * aCommand, -int parameterNumber, G4bool reGet) +G4int parameterNumber, G4bool reGet) { G4String targetParameter = GetCurrentStringValue( aCommand, parameterNumber, reGet ); @@ -206,6 +210,12 @@ void G4UImanager::RemoveCommand(G4UIcommand * aCommand) treeTop->RemoveCommand( aCommand ); } +void G4UImanager::ExecuteMacroFile(const char * fileName) +{ + G4String fn = fileName; + ExecuteMacroFile(fn); +} + void G4UImanager::ExecuteMacroFile(G4String fileName) { G4UIsession* batchSession = new G4UIbatch(fileName,session); @@ -215,20 +225,148 @@ void G4UImanager::ExecuteMacroFile(G4String fileName) session = previousSession; } -int G4UImanager::ApplyCommand(const char * aCommand) +void G4UImanager::LoopS(G4String valueList) +{ + G4Tokenizer parameterToken( valueList ); + G4String mf = parameterToken(); + G4String vn = parameterToken(); + G4String c1 = parameterToken(); + c1 += " "; + c1 += parameterToken(); + c1 += " "; + c1 += parameterToken(); + const char* t1 = c1; + G4std::istrstream is((char*)t1); + G4double d1; + G4double d2; + G4double d3; + is >> d1 >> d2 >> d3; + Loop(mf,vn,d1,d2,d3); +} + +void G4UImanager::Loop(const char * macroFile,const char * variableName, + G4double initialValue,G4double finalValue,G4double stepSize) +{ + G4String mf = macroFile; + G4String vn = variableName; + Loop(mf,vn,initialValue,finalValue,stepSize); +} + +void G4UImanager::Loop(G4String macroFile,G4String variableName, + G4double initialValue,G4double finalValue,G4double stepSize) +{ + G4String cd; + for(G4double d=initialValue;d<=finalValue;d+=stepSize) + { + char st[20]; + G4std::ostrstream os(st,20); + os << d << '\0'; + cd += st; + cd += " "; + } + Foreach(macroFile,variableName,cd); +} + +void G4UImanager::ForeachS(G4String valueList) +{ + G4Tokenizer parameterToken( valueList ); + G4String mf = parameterToken(); + G4String vn = parameterToken(); + G4String c1 = parameterToken(); + G4String ca; + while(!((ca=parameterToken()).isNull())) + { + c1 += " "; + c1 += ca; + } + Foreach(mf,vn,c1); +} + +void G4UImanager::Foreach(const char * macroFile,const char * variableName, + const char * candidates) +{ + G4String mf = macroFile; + G4String vn = variableName; + G4String cd = candidates; + Foreach(mf,vn,cd); +} + +void G4UImanager::Foreach(G4String macroFile,G4String variableName,G4String candidates) +{ + G4Tokenizer parameterToken( candidates ); + G4String cd; + while(!((cd=parameterToken()).isNull())) + { + SetAlias(variableName+" "+cd); + ExecuteMacroFile(macroFile); + } +} + + +G4int G4UImanager::ApplyCommand(const char * aCommand) { G4String theCommand = aCommand; return ApplyCommand(theCommand); } -int G4UImanager::ApplyCommand(G4String aCommand) +G4String G4UImanager::SolveAlias(G4String aCmd) { - if(verboseLevel) G4cout << aCommand << G4endl; + G4String aCommand = aCmd; + G4int ia = aCommand.index("{"); + G4int iz = aCommand.index("#"); + while((ia != G4int(G4std::string::npos))&&((iz==G4int(G4std::string::npos))||(ia0) subs = aCommand(0,ia); + G4String alis = aCommand(ia+1,ibx-ia-1); + G4String rems = aCommand(ibx+1,aCommand.length()-ibx); + // G4cout << "<" << subs << "> <" << alis << "> <" << rems << ">" << G4endl; + G4String* alVal = aliasList->FindAlias(alis); + if(!alVal) + { + G4cerr << "Alias <" << alis << "> not found -- command ignored" << G4endl; + G4String nullStr; + return nullStr; + } + aCommand = subs+(*alVal)+rems; + ia = aCommand.index("{"); + } + return aCommand; +} +G4int G4UImanager::ApplyCommand(G4String aCommand) +{ + G4String aCmd = SolveAlias(aCommand); + if(aCmd.isNull()) return fAliasNotFound; + aCommand = aCmd; + if(verboseLevel) G4cout << aCommand << G4endl; G4String commandString; G4String commandParameter; - int i = aCommand.index(" "); - if( i != int(G4std::string::npos) ) + + G4int i = aCommand.index(" "); + if( i != G4int(G4std::string::npos) ) { commandString = aCommand(0,i); commandParameter = aCommand(i+1,aCommand.length()-(i+1)); @@ -238,12 +376,32 @@ int G4UImanager::ApplyCommand(G4String aCommand) commandString = aCommand; } + // remove doubled slash + G4int len = commandString.length(); + G4int ll = 0; + G4String a1; + G4String a2; + while(llFindPath( commandString ); if( targetCommand == NULL ) - { - // G4cout << commandString << " NOT FOUND." << G4endl; - return fCommandNotFound; - } + { return fCommandNotFound; } if(!(targetCommand->IsAvailable())) { return fIllegalApplicationState; } @@ -297,10 +455,10 @@ G4UIcommandTree* G4UImanager::FindDirectory(const char* dirName) G4UIcommandTree* comTree = treeTop; if( targetDir == "/" ) { return comTree; } - int idx = 1; - while( idx < int(targetDir.length())-1 ) + G4int idx = 1; + while( idx < G4int(targetDir.length())-1 ) { - int i = targetDir.index("/",idx); + G4int i = targetDir.index("/",idx); comTree = comTree->GetTree(targetDir(0,i+1)); if( comTree == NULL ) { return NULL; } @@ -351,10 +509,59 @@ void G4UImanager::Interact(G4String pC) - void G4UImanager::SetCoutDestination(G4UIsession *const value) +void G4UImanager::SetCoutDestination(G4UIsession *const value) { G4coutbuf.SetDestination(value); G4cerrbuf.SetDestination(value); } +void G4UImanager::SetAlias(const char * aliasLine) +{ + G4String aL = aliasLine; + SetAlias(aL); +} + +void G4UImanager::SetAlias(G4String aliasLine) +{ + G4int i = aliasLine.index(" "); + G4String aliasName = aliasLine(0,i); + G4String aliasValue = aliasLine(i+1,aliasLine.length()-(i+1)); + if(aliasValue(0)=='"') + { + G4String strippedValue; + if(aliasValue(aliasValue.length()-1)=='"') + { strippedValue = aliasValue(1,aliasValue.length()-2); } + else + { strippedValue = aliasValue(1,aliasValue.length()-1); } + aliasValue = strippedValue; + } + + aliasList->ChangeAlias(aliasName,aliasValue); +} + +void G4UImanager::RemoveAlias(const char * aliasName) +{ + G4String aL = aliasName; + RemoveAlias(aL); +} + +void G4UImanager::RemoveAlias(G4String aliasName) +{ + G4String targetAlias = aliasName.strip(G4String::both); + aliasList->RemoveAlias(targetAlias); +} + +void G4UImanager::ListAlias() +{ + aliasList->List(); +} + +void G4UImanager::CreateHTML(const char* dir) +{ + G4UIcommandTree* tr = FindDirectory(dir); + if(tr!=0) + { tr->CreateHTML(); } + else + { G4cerr << "Directory <" << dir << "> is not found." << G4endl; } +} diff --git a/source/intercoms/src/G4UImessenger.cc b/source/intercoms/src/G4UImessenger.cc index b48a0132ab..773125b215 100644 --- a/source/intercoms/src/G4UImessenger.cc +++ b/source/intercoms/src/G4UImessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UImessenger.cc,v 1.2.4.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UImessenger.cc,v 1.3 2001/07/11 10:01:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4UImessenger.hh" diff --git a/source/intercoms/src/G4UIparameter.cc b/source/intercoms/src/G4UIparameter.cc index aa31d5c508..3dbff3ec8d 100644 --- a/source/intercoms/src/G4UIparameter.cc +++ b/source/intercoms/src/G4UIparameter.cc @@ -21,14 +21,14 @@ // ******************************************************************** // // -// $Id: G4UIparameter.cc,v 1.5.2.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIparameter.cc,v 1.10 2001/10/23 07:51:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4UIparameter.hh" #include "G4UIcommandStatus.hh" -#include "g4rw/ctoken.h" +#include "G4Tokenizer.hh" #include "G4ios.hh" G4UIparameter::G4UIparameter():paramERR(0) @@ -76,12 +76,12 @@ G4UIparameter::G4UIparameter(const char * theName, char theType, G4bool theOmitt G4UIparameter::~G4UIparameter() { } -int G4UIparameter::operator==(const G4UIparameter &right) const +G4int G4UIparameter::operator==(const G4UIparameter &right) const { return ( this == &right ); } -int G4UIparameter::operator!=(const G4UIparameter &right) const +G4int G4UIparameter::operator!=(const G4UIparameter &right) const { return ( this != &right ); } @@ -130,7 +130,7 @@ void G4UIparameter::SetDefaultValue(G4double theDefaultValue) //#include "checkNewValue_debug.icc" //#define DEBUG 1 -int G4UIparameter:: +G4int G4UIparameter:: CheckNewValue( G4String newValue ) { if( TypeCheck(newValue) == 0) return fParameterUnreadable; if( ! parameterRange.isNull() ) @@ -140,11 +140,11 @@ CheckNewValue( G4String newValue ) { return 0; // succeeded } -int G4UIparameter:: +G4int G4UIparameter:: CandidateCheck(G4String newValue) { G4Tokenizer candidateTokenizer(parameterCandidate); G4String aToken; - int iToken = 0; + G4int iToken = 0; while( ! (aToken=candidateTokenizer()).isNull() ) { iToken++; @@ -154,7 +154,7 @@ CandidateCheck(G4String newValue) { return 0; } -int G4UIparameter:: +G4int G4UIparameter:: RangeCheck(G4String newValue) { yystype result; bp = 0; // reset buffer pointer for G4UIpGetc() @@ -180,7 +180,7 @@ RangeCheck(G4String newValue) { } -int G4UIparameter:: +G4int G4UIparameter:: TypeCheck(G4String newValue) { char type = toupper( parameterType ); @@ -216,14 +216,14 @@ TypeCheck(G4String newValue) } -int G4UIparameter:: +G4int G4UIparameter:: IsInt(const char* buf, short maxDigits) // do not allow any G4std::ws { const char* p= buf; - int length=0; + G4int length=0; if( *p == '+' || *p == '-') { ++p; } - if( isdigit( (int)(*p) )) { - while( isdigit( (int)(*p) )) { ++p; ++length; } + if( isdigit( (G4int)(*p) )) { + while( isdigit( (G4int)(*p) )) { ++p; ++length; } if( *p == '\0' ) { if( length > maxDigits) { G4cerr <<"digit length exceeds"< arg2); opr= ">" ; break; @@ -628,10 +628,10 @@ CompareInt(int arg1, int op, int arg2) return result; } -int G4UIparameter:: -CompareDouble(double arg1, int op, double arg2) +G4int G4UIparameter:: +CompareDouble(G4double arg1, G4int op, G4double arg2) { - int result=-1; + G4int result=-1; G4String opr; switch (op) { case GT: result = ( arg1 > arg2); opr= ">"; break; @@ -658,7 +658,7 @@ CompareDouble(double arg1, int op, double arg2) tokenNum G4UIparameter:: Yylex() // reads input and returns token number KR486 { // (returns EOF) - int c; + G4int c; G4String buf; while(( c= G4UIpGetc())==' '|| c=='\t' || c== '\n' ) @@ -713,10 +713,10 @@ Yylex() // reads input and returns token number KR486 } -int G4UIparameter:: -Follow(int expect, int ifyes, int ifno) +G4int G4UIparameter:: +Follow(G4int expect, G4int ifyes, G4int ifno) { - int c = G4UIpGetc(); + G4int c = G4UIpGetc(); if ( c== expect) return ifyes; G4UIpUngetc(c); @@ -724,16 +724,16 @@ Follow(int expect, int ifyes, int ifno) } //------------------ low level routines ----------------------------- -int G4UIparameter:: +G4int G4UIparameter:: G4UIpGetc() { // emulation of getc() - int length = parameterRange.length(); + G4int length = parameterRange.length(); if( bp < length) return parameterRange(bp++); else return EOF; } -int G4UIparameter:: -G4UIpUngetc(int c) { // emulation of ungetc() +G4int G4UIparameter:: +G4UIpUngetc(G4int c) { // emulation of ungetc() if (c<0) return -1; if (bp >0 && c == parameterRange(bp-1)) { --bp; diff --git a/source/intercoms/src/G4UIsession.cc b/source/intercoms/src/G4UIsession.cc index d21f45b74c..9a9185a87b 100644 --- a/source/intercoms/src/G4UIsession.cc +++ b/source/intercoms/src/G4UIsession.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIsession.cc,v 1.3.4.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIsession.cc,v 1.4 2001/07/11 10:01:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // --------------------------------------------------------------------- diff --git a/source/intercoms/src/G4UnitsMessenger.cc b/source/intercoms/src/G4UnitsMessenger.cc index dd67c75f29..eccaa40a63 100644 --- a/source/intercoms/src/G4UnitsMessenger.cc +++ b/source/intercoms/src/G4UnitsMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UnitsMessenger.cc,v 1.2.4.1 2001/06/28 19:10:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UnitsMessenger.cc,v 1.3 2001/07/11 10:01:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/intercoms/src/G4VGlobalFastSimulationManager.cc b/source/intercoms/src/G4VGlobalFastSimulationManager.cc index db4a9139b3..17e9469cf9 100644 --- a/source/intercoms/src/G4VGlobalFastSimulationManager.cc +++ b/source/intercoms/src/G4VGlobalFastSimulationManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VGlobalFastSimulationManager.cc,v 1.2.4.1 2001/06/28 19:10:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VGlobalFastSimulationManager.cc,v 1.3 2001/07/11 10:01:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Abstract interface for GEANT4 Global Fast Simulation Manager. diff --git a/source/intercoms/src/G4VVisManager.cc b/source/intercoms/src/G4VVisManager.cc index 61d98ae110..24d4b6e8eb 100644 --- a/source/intercoms/src/G4VVisManager.cc +++ b/source/intercoms/src/G4VVisManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VVisManager.cc,v 1.3.4.1 2001/06/28 19:10:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VVisManager.cc,v 1.4 2001/07/11 10:01:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Abstract interface for GEANT4 Visualization Manager. diff --git a/source/interfaces/GAG/include/G4UIGAG.hh b/source/interfaces/GAG/include/G4UIGAG.hh index f6e7f5bf2e..4864a1a9e6 100644 --- a/source/interfaces/GAG/include/G4UIGAG.hh +++ b/source/interfaces/GAG/include/G4UIGAG.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIGAG.hh,v 1.4.4.1 2001/06/28 19:10:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIGAG.hh,v 1.5 2001/07/11 10:01:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4UIGAG.hh // GAG(Geant4 adaptive GUI) interface class diff --git a/source/interfaces/GAG/src/G4UIGAG.cc b/source/interfaces/GAG/src/G4UIGAG.cc index c470ef1b6d..8f93d0050d 100644 --- a/source/interfaces/GAG/src/G4UIGAG.cc +++ b/source/interfaces/GAG/src/G4UIGAG.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UIGAG.cc,v 1.9.4.1 2001/06/28 19:10:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UIGAG.cc,v 1.13 2001/11/29 06:04:45 yhajime Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4UIGAG.cc // 18.Feb.98 M.Nagamatu and T.Kodama created G4UIGAG from G4UIterminal @@ -34,8 +34,9 @@ #include "G4UIcommandStatus.hh" #include "g4std/strstream" -G4UIGAG::G4UIGAG(): TVersion("T1.0a"), JVersion("J1.0a") +G4UIGAG::G4UIGAG()//: TVersion("T1.0a"), JVersion("J1.0a") { + TVersion="T1.0a"; JVersion="J1.0a"; //G4cout << "G4UIGAG: Apr15,98." << G4endl; prefix = "/"; UI = G4UImanager::GetUIpointer(); @@ -98,21 +99,31 @@ void G4UIGAG::ExecuteCommand(G4String aCommand) { G4UIcommandTree * tree = UI->GetTree(); if(aCommand.length()<2) return; - int commandStatus = UI->ApplyCommand(aCommand); + G4int returnVal = UI->ApplyCommand(aCommand); + G4int paramIndex = returnVal % 100; + G4int commandStatus = returnVal - paramIndex; + UpdateState(); if ( uiMode == terminal_mode){ switch(commandStatus) { case fCommandSucceeded: break; case fCommandNotFound: - G4cerr << "command not found" << G4endl; + // G4cerr << "command not found" << G4endl; + G4cerr << "command <" << UI->SolveAlias(aCommand) << "> not found" << G4endl; break; case fIllegalApplicationState: G4cerr << "illegal application state -- command refused" << G4endl; break; case fParameterOutOfRange: case fParameterUnreadable: + G4cerr << "Parameter is wrong type and/or is not omittable (index " << paramIndex << ")" << G4endl; + break; case fParameterOutOfCandidates: + G4cerr << "Parameter is out of candidate list (index " << paramIndex << ")" << G4endl; + // G4cerr << "Candidates : " << cmd->GetParameter(paramIndex)->GetParameterCandidates() << G4endl; + break; + case fAliasNotFound: default: G4cerr << "command refused (" << commandStatus << ")" << G4endl; } @@ -133,7 +144,7 @@ void G4UIGAG::ExecuteCommand(G4String aCommand) } break; case fCommandNotFound: - G4cout << "@@ErrResult \"command not found.\"" << G4endl; + G4cout << "@@ErrResult \" <" << UI->SolveAlias(aCommand) << "> command not found.\"" << G4endl; break; case fIllegalApplicationState: G4cout << "@@ErrResult \"Illegal application state -- command refused\"" << G4endl; @@ -142,11 +153,13 @@ void G4UIGAG::ExecuteCommand(G4String aCommand) G4cout << "@@ErrResult \"Parameter Out of Range.\"" << G4endl; break; case fParameterUnreadable: - G4cout << "@@ErrResult \"Parameter Unreadable.\"" << G4endl; + G4cout << "@@ErrResult \"Parameter is wrong type and/or is not omittable.\"" << G4endl; break; case fParameterOutOfCandidates: +// G4cout << "@@ErrResult \"Parameter Out of Candidates. Candidates : " << cmd->GetParameter(paramIndex)->GetParameterCandidates()<< "\"" << G4endl; G4cout << "@@ErrResult \"Parameter Out of Candidates.\"" << G4endl; break; + case fAliasNotFound: default: G4cout << "@@ErrResult \"command refused (" << commandStatus << ")\"" << G4endl; } @@ -294,7 +307,7 @@ G4String G4UIGAG::GetFullPath( G4String aNewCommand ) else if( newCommand(0,3) == "../" ) { G4String tmpPrefix = prefix; - G4int i_direc = 0; + /*G4int*/ unsigned i_direc = 0; while( i_direc < newCommand.length() ) { if( newCommand(i_direc,3) == "../" ) @@ -397,7 +410,7 @@ void G4UIGAG::ListDirectory( G4String newCommand ) void G4UIGAG::TerminalHelp(G4String newCommand) { G4UIcommandTree * treeTop = UI->GetTree(); - int i = newCommand.index(" "); + /*int*/unsigned i = newCommand.index(" "); if( i != G4std::string::npos ) { G4String newValue = newCommand(i+1,newCommand.length()-(i+1)); @@ -420,7 +433,7 @@ void G4UIGAG::TerminalHelp(G4String newCommand) G4UIcommandTree * floor[10]; floor[0] = treeTop; int iFloor = 0; - int prefixIndex = 1; + /*int*/ unsigned prefixIndex = 1; while( prefixIndex < prefix.length()-1 ) { int ii = prefix.index("/",prefixIndex); @@ -432,6 +445,7 @@ void G4UIGAG::TerminalHelp(G4String newCommand) floor[iFloor]->ListCurrentWithNum(); // 1998 Oct 2 non-number input while(1){ + int i; G4cout << G4endl << "Type the number ( 0:end, -n:n level back ) : "<> i; if(!G4cin.good()){ @@ -444,7 +458,7 @@ void G4UIGAG::TerminalHelp(G4String newCommand) floor[iFloor]->ListCurrentWithNum(); continue;} else if(i == 0) { break;} else if( i > 0 ) { - int n_tree = floor[iFloor]->GetTreeEntry(); + int n_tree = floor[iFloor]->GetTreeEntry(); if( i > n_tree ) { if( i <= n_tree + floor[iFloor]->GetCommandEntry() ) @@ -503,7 +517,7 @@ G4String G4UIGAG::ModifyPrefix(G4String newCommand) G4UIcommandTree * G4UIGAG::FindDirPath(G4String newCommand) { G4UIcommandTree * comTree = UI->GetTree(); - int idx = 1; + /*int*/ unsigned idx = 1; while( idx < newCommand.length()-1 ) { int i = newCommand.index("/",idx); @@ -569,7 +583,7 @@ void G4UIGAG::CodeGenJavaTree(G4UIcommandTree * tree, int level) void G4UIGAG::CodeGenJavaParams(G4UIcommandTree * tree, int level) //recursive { int treeEntry, commandEntry, i; - G4UIcommand * Comp; + //G4UIcommand * Comp; G4UIcommandTree * treeLink; treeEntry = tree->GetTreeEntry(); @@ -604,7 +618,7 @@ void G4UIGAG::SendAParamProperty(G4UIcommand * Comp) title = Comp->GetGuidanceLine(j); title2 = ""; if (title != ""){ - for(int i=0; i< title.length(); i++){ + for(int i=0; i< (int)title.length(); i++){ c[0]=title(i); c[1]= '\0'; if ( c[0] == '\n' || c[0] == '\r') { @@ -675,7 +689,7 @@ void G4UIGAG::CodeGenTclTree(G4UIcommandTree * tree, int level) j = 0; while(1){ title1 = Comp->GetGuidanceLine(j); - for(i=0; i< title1.length(); i++){ + for(i=0; i< (int)title1.length(); i++){ char c[2]; c[0]=title1(i); c[1]= '\0'; @@ -700,7 +714,7 @@ void G4UIGAG::CodeGenTclTree(G4UIcommandTree * tree, int level) pathName = t->GetPathName(); title1 = t->GetTitle(); title2 = ""; - for(int i=0; iGetParameterGuidance(); guide2 = ""; - for(int i=0; i=2; i--) G4cout << AsciiBS; - for(i=1; i<=commandLine.length(); i++) G4cout << ' '; - for(i=1; i<=commandLine.length(); i++) G4cout << AsciiBS; + for(i=1; i<=G4int(commandLine.length()); i++) G4cout << ' '; + for(i=1; i<=G4int(commandLine.length()); i++) G4cout << AsciiBS; G4cout << G4std::flush; // command line string... @@ -234,7 +234,7 @@ void G4UItcsh::ClearAfterCursor() // display... G4int i; - for(i=cursorPosition; i<=commandLine.length(); i++) G4cout << ' '; + for(i=cursorPosition; i<=G4int(commandLine.length()); i++) G4cout << ' '; for(i=commandLine.length(); i>=cursorPosition; i--) G4cout << AsciiBS; G4cout << G4std::flush; @@ -349,7 +349,7 @@ void G4UItcsh::ListMatchedCommand() G4String input= G4String(commandLine).strip(G4String::leading); // target token is last token G4int jhead= input.last(' '); - if(jhead != G4String::npos) { + if(jhead != G4int(G4String::npos)) { input.remove(0, jhead); input= input.strip(G4String::leading); } @@ -386,7 +386,7 @@ void G4UItcsh::CompleteCommand() G4String input= G4String(commandLine).strip(G4String::leading); // target token is last token G4int jhead= input.last(' '); - if(jhead != G4String::npos) { + if(jhead != G4int(G4String::npos)) { input.remove(0, jhead); input= input.strip(G4String::leading); } @@ -457,20 +457,20 @@ void G4UItcsh::CompleteCommand() input= commandLine; // target token is last token jhead= input.last(' '); - if(jhead == G4String::npos) jhead=0; + if(jhead == G4int(G4String::npos)) jhead=0; else jhead++; G4int jt= input.find_last_of('/'); if(jt SetSession(this); UI-> SetCoutDestination(this); - G4StateManager* statM= G4StateManager::GetStateManager(); iExit= FALSE; iCont= FALSE; @@ -74,7 +73,6 @@ G4UIsession* G4UIterminal::SessionStart() ///////////////////////////////////////// { iExit= TRUE; - G4StateManager* statM= G4StateManager::GetStateManager(); G4String newCommand= GetCommand(); while(iExit){ @@ -118,7 +116,7 @@ void G4UIterminal::ExecuteCommand(G4String aCommand) case fCommandSucceeded: break; case fCommandNotFound: - G4cerr << "command <" << aCommand << "> not found" << G4endl; + G4cerr << "command <" << UI->SolveAlias(aCommand) << "> not found" << G4endl; if( aCommand.index("@@") != G4String::npos) { G4cout << "@@G4UIterminal" << G4endl; } @@ -142,6 +140,7 @@ void G4UIterminal::ExecuteCommand(G4String aCommand) case fParameterUnreadable: G4cerr << "Parameter is wrong type and/or is not omittable (index " << paramIndex << ")" << G4endl; break; + case fAliasNotFound: default: G4cerr << "command refused (" << commandStatus << ")" << G4endl; } diff --git a/source/interfaces/basic/src/G4VUIshell.cc b/source/interfaces/basic/src/G4VUIshell.cc index 20e077db3d..67a2556f04 100644 --- a/source/interfaces/basic/src/G4VUIshell.cc +++ b/source/interfaces/basic/src/G4VUIshell.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VUIshell.cc,v 1.4.4.1 2001/06/28 19:10:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VUIshell.cc,v 1.6 2001/11/26 19:15:08 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4UImanager.hh" @@ -66,7 +66,7 @@ void G4VUIshell::MakePrompt(const char* msg) promptString=""; G4int i; - for(i=0; i GetTree(absPath(0,jslash+1)); } @@ -147,14 +147,14 @@ G4String G4VUIshell::GetAbsCommandDirPath(const G4String& apath) const // parsing... G4String absPath= "/"; - for(G4int indx=1; indx<=bpath.length()-1; ) { + for(G4int indx=1; indx<=G4int(bpath.length())-1; ) { G4int jslash= bpath.index("/", indx); // search index begin with "/" - if(jslash != G4String::npos) { + if(jslash != G4int(G4String::npos)) { if(bpath(indx,jslash-indx) == ".."){ // directory up if(absPath.length() >=1) { absPath.remove(absPath.length()-1); // remove last "/" G4int jpre= absPath.last('/'); - if(jpre != G4String::npos) absPath.remove(jpre+1); + if(jpre != G4int(G4String::npos)) absPath.remove(jpre+1); } } else if(bpath(indx,jslash-indx) == "."){ // nothing to do } else { // add diff --git a/source/interfaces/common/include/G4VBasicShell.hh b/source/interfaces/common/include/G4VBasicShell.hh index 63326ab677..02ba3f5cc0 100644 --- a/source/interfaces/common/include/G4VBasicShell.hh +++ b/source/interfaces/common/include/G4VBasicShell.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VBasicShell.hh,v 1.5.4.1 2001/06/28 19:10:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VBasicShell.hh,v 1.6 2001/07/11 10:01:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VBasicShell_H diff --git a/source/interfaces/common/include/G4VInteractorManager.hh b/source/interfaces/common/include/G4VInteractorManager.hh index 9e638ee544..847b129d44 100644 --- a/source/interfaces/common/include/G4VInteractorManager.hh +++ b/source/interfaces/common/include/G4VInteractorManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VInteractorManager.hh,v 1.6.4.1 2001/06/28 19:10:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VInteractorManager.hh,v 1.7 2001/07/11 10:01:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G.Barrand diff --git a/source/interfaces/common/include/G4Win32.hh b/source/interfaces/common/include/G4Win32.hh index a273a60afd..840c8b1adc 100644 --- a/source/interfaces/common/include/G4Win32.hh +++ b/source/interfaces/common/include/G4Win32.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Win32.hh,v 1.5.4.1 2001/06/28 19:10:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Win32.hh,v 1.6 2001/07/11 10:01:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // To unify Windows message treatment between // G4/interfaces Windows sessions and G4/visualizations Windows drivers. diff --git a/source/interfaces/common/include/G4Xt.hh b/source/interfaces/common/include/G4Xt.hh index 2b2404ce73..a59b67cc3d 100644 --- a/source/interfaces/common/include/G4Xt.hh +++ b/source/interfaces/common/include/G4Xt.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Xt.hh,v 1.4.4.1 2001/06/28 19:10:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Xt.hh,v 1.5 2001/07/11 10:01:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // To unify X11 event treatment between // G4/interfaces Xt sessions and G4/visualizations Xt drivers. diff --git a/source/interfaces/common/src/G4VBasicShell.cc b/source/interfaces/common/src/G4VBasicShell.cc index 2615ddd7b0..d1f577b6c6 100644 --- a/source/interfaces/common/src/G4VBasicShell.cc +++ b/source/interfaces/common/src/G4VBasicShell.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VBasicShell.cc,v 1.6.4.1 2001/06/28 19:10:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VBasicShell.cc,v 1.8 2001/10/22 08:02:58 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "g4std/vector" @@ -50,7 +50,7 @@ G4String G4VBasicShell::ModifyToFullPathCommand(const char* aCommandLine) G4String commandLine = (G4String)rawCommandLine.strip(G4String::both); G4String commandString; G4String parameterString; - int i = commandLine.index(" "); + size_t i = commandLine.index(" "); if( i != G4std::string::npos ) { commandString = (G4String)commandLine(0,i); @@ -93,10 +93,10 @@ G4UIcommandTree* G4VBasicShell::FindDirectory(const char* dirName) G4UIcommandTree* comTree = G4UImanager::GetUIpointer()->GetTree(); if( targetDir == "/" ) { return comTree; } - int idx = 1; + size_t idx = 1; while( idx < targetDir.length()-1 ) { - int i = targetDir.index("/",idx); + size_t i = targetDir.index("/",idx); comTree = comTree->GetTree((G4String)targetDir(0,i+1)); if( comTree == NULL ) { return NULL; } @@ -110,7 +110,7 @@ G4UIcommand* G4VBasicShell::FindCommand(const char* commandName) G4String rawCommandLine = (G4String)commandName; G4String commandLine = (G4String)rawCommandLine.strip(G4String::both); G4String commandString; - int i = commandLine.index(" "); + size_t i = commandLine.index(" "); if( i != G4std::string::npos ) { commandString = (G4String)commandLine(0,i); } else @@ -167,7 +167,7 @@ G4String G4VBasicShell::Complete(G4String commandName) { G4String rawCommandLine = commandName; G4String commandLine = rawCommandLine.strip(G4String::both); - int i = commandLine.index(" "); + size_t i = commandLine.index(" "); if( i != G4std::string::npos ) return rawCommandLine; // Already entering parameters, // assume command path is correct. G4String commandString = commandLine; @@ -189,12 +189,12 @@ G4String G4VBasicShell::FindMatchingPath( if( aCommandPath.index( pathName ) == G4std::string::npos ) return empty; G4String remainingPath = aCommandPath; remainingPath.remove(0,pathName.length()); - int i = remainingPath.first('/'); + size_t i = remainingPath.first('/'); if( i == G4std::string::npos ) { // Look for number of matching commands : G4std::vector commands; - int n_commandEntry = aTree->GetCommandEntry(); - for( int i_thCommand = 1; i_thCommand <= n_commandEntry; i_thCommand++ ) { + G4int n_commandEntry = aTree->GetCommandEntry(); + for( G4int i_thCommand = 1; i_thCommand <= n_commandEntry; i_thCommand++ ) { G4UIcommand* cmd = aTree->GetCommand(i_thCommand); G4String ss = cmd->GetCommandName(); ss.resize(remainingPath.length()); @@ -205,7 +205,7 @@ G4String G4VBasicShell::FindMatchingPath( return (pathName + commands[0]->GetCommandName()); } else if (n_commandEntry>=2) { G4cout << "Matching commands :" << G4endl; - for( int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) { + for( G4int i_thCommand = 0; i_thCommand < n_commandEntry; i_thCommand++ ) { G4UIcommand* cmd = commands[i_thCommand]; G4cout << cmd->GetCommandName() << G4endl; } @@ -215,8 +215,8 @@ G4String G4VBasicShell::FindMatchingPath( G4std::vector trees; G4String nextPath = pathName; nextPath.append(remainingPath); - int n_treeEntry = aTree->GetTreeEntry(); - for( int i_thTree = 1; i_thTree <= n_treeEntry; i_thTree++ ) { + G4int n_treeEntry = aTree->GetTreeEntry(); + for( G4int i_thTree = 1; i_thTree <= n_treeEntry; i_thTree++ ) { G4UIcommandTree* tree = aTree->GetTree(i_thTree); G4String ss = tree->GetPathName(); ss.resize(nextPath.length()); @@ -227,7 +227,7 @@ G4String G4VBasicShell::FindMatchingPath( return trees[0]->GetPathName(); } else if (n_treeEntry>=2) { G4cout << "Matching directories :" << G4endl; - for( int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) { + for( G4int i_thTree = 0; i_thTree < n_treeEntry; i_thTree++ ) { G4UIcommandTree* tree = trees[i_thTree]; G4cout << tree->GetPathName() << G4endl; } @@ -239,8 +239,8 @@ G4String G4VBasicShell::FindMatchingPath( // Find path G4String nextPath = pathName; nextPath.append(remainingPath(0,i+1)); - int n_treeEntry = aTree->GetTreeEntry(); - for( int i_thTree = 1; i_thTree <= n_treeEntry; i_thTree++ ) { + G4int n_treeEntry = aTree->GetTreeEntry(); + for( G4int i_thTree = 1; i_thTree <= n_treeEntry; i_thTree++ ) { G4UIcommandTree* tree = aTree->GetTree(i_thTree); if( nextPath == tree->GetPathName() ) { return FindMatchingPath(tree,aCommandPath ); @@ -263,7 +263,7 @@ void G4VBasicShell::ExecuteCommand ( if(aCommand.length()<2) return; G4UImanager* UI = G4UImanager::GetUIpointer(); if(UI==NULL) return; - int commandStatus = UI->ApplyCommand(aCommand); + G4int commandStatus = UI->ApplyCommand(aCommand); switch(commandStatus) { case fCommandSucceeded: break; @@ -321,7 +321,7 @@ void G4VBasicShell::ApplyShellCommand ( } else if( command(0,4) == "hist" ) { G4int nh = UI->GetNumberOfHistory(); - for(int i=0;iGetPreviousCommand(i) << G4endl; } @@ -407,7 +407,7 @@ void G4VBasicShell::TerminalHelp(G4String newCommand) G4UImanager* UI = G4UImanager::GetUIpointer(); if(UI==NULL) return; G4UIcommandTree * treeTop = UI->GetTree(); - int i = newCommand.index(" "); + size_t i = newCommand.index(" "); if( i != G4std::string::npos ) { G4String newValue = newCommand(i+1,newCommand.length()-(i+1)); @@ -428,12 +428,12 @@ void G4VBasicShell::TerminalHelp(G4String newCommand) G4UIcommandTree * floor[10]; floor[0] = treeTop; - int iFloor = 0; - int prefixIndex = 1; + G4int iFloor = 0; + size_t prefixIndex = 1; G4String prefix = GetCurrentWorkingDirectory(); while( prefixIndex < prefix.length()-1 ) { - int ii = prefix.index("/",prefixIndex); + size_t ii = prefix.index("/",prefixIndex); floor[iFloor+1] = floor[iFloor]->GetTree(prefix(0,ii+1)); prefixIndex = ii+1; @@ -456,7 +456,7 @@ void G4VBasicShell::TerminalHelp(G4String newCommand) } else if(i == 0) { break; } else if( i > 0 ) { - int n_tree = floor[iFloor]->GetTreeEntry(); + G4int n_tree = floor[iFloor]->GetTreeEntry(); if( i > n_tree ) { if( i <= n_tree + floor[iFloor]->GetCommandEntry() ) diff --git a/source/interfaces/common/src/G4VInteractorManager.cc b/source/interfaces/common/src/G4VInteractorManager.cc index 7aec4d8b9e..589763cd51 100644 --- a/source/interfaces/common/src/G4VInteractorManager.cc +++ b/source/interfaces/common/src/G4VInteractorManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VInteractorManager.cc,v 1.8.4.1 2001/06/28 19:10:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VInteractorManager.cc,v 1.11 2001/12/03 08:07:45 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G.Barrand @@ -59,7 +59,7 @@ G4VInteractorManager::~G4VInteractorManager ( /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ { if(argv!=NULL) { - for(int argi=0;argi::iterator it; + for (it = dispatchers.begin(); it != dispatchers.end(); it++) { + if (*it == a_dispatcher) { + dispatchers.erase(it); + break; + } + } } /***************************************************************************/ void G4VInteractorManager::DispatchEvent ( @@ -172,10 +178,9 @@ void G4VInteractorManager::DispatchEvent ( /***************************************************************************/ /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ { - int dispatchern = dispatchers.size(); + G4int dispatchern = dispatchers.size(); G4DispatchFunction func; - G4bool status; - for(int count=0;count::iterator it; + for (it = shells.begin(); it != shells.end(); it++) { + if (*it == a_shell) { + shells.erase(it); + break; + } + } } /***************************************************************************/ void G4VInteractorManager::SetParentInteractor ( diff --git a/source/interfaces/common/src/G4Win32.cc b/source/interfaces/common/src/G4Win32.cc index 253e31883f..e7f62141aa 100644 --- a/source/interfaces/common/src/G4Win32.cc +++ b/source/interfaces/common/src/G4Win32.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Win32.cc,v 1.5.4.1 2001/06/28 19:10:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Win32.cc,v 1.6 2001/07/11 10:01:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G.Barrand diff --git a/source/interfaces/common/src/G4Xt.cc b/source/interfaces/common/src/G4Xt.cc index 80c917bff2..4c45031c0a 100644 --- a/source/interfaces/common/src/G4Xt.cc +++ b/source/interfaces/common/src/G4Xt.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Xt.cc,v 1.6.4.1 2001/06/28 19:10:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Xt.cc,v 1.8 2001/12/03 08:01:47 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G.Barrand @@ -41,9 +41,9 @@ #define NewString(str) \ ((str) != NULL ? (strcpy((char*)malloc((unsigned)strlen(str) + 1), str)) : NULL) -static void XWidgetIconify (Widget); -static void XWidgetUniconify (Widget); -static void XDisplaySetWindowToNormalState (Display*,Window); +//static void XWidgetIconify (Widget); +//static void XWidgetUniconify (Widget); +//static void XDisplaySetWindowToNormalState (Display*,Window); G4Xt* G4Xt::instance = NULL; @@ -188,38 +188,22 @@ void G4Xt::FlushAndWaitExecution ( /***************************************************************************/ /******* From OPACS Xx/v3 package ******************************************/ /***************************************************************************/ -/***************************************************************************/ -void XWidgetIconify ( - Widget This -) -/***************************************************************************/ -/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ -{ +/* +void XWidgetIconify ( Widget This ) { if(This==NULL) return; if(!XtIsRealized(This)) return; XIconifyWindow(XtDisplay(This),XtWindow(This),XScreenNumberOfScreen(XtScreen(This))); } -/***************************************************************************/ -void XWidgetUniconify ( - Widget This -) -/***************************************************************************/ -/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ -{ +void XWidgetUniconify ( Widget This ) { if(This==NULL) return; if(!XtIsRealized(This)) return; XDisplaySetWindowToNormalState (XtDisplay(This),XtWindow(This)); } -/***************************************************************************/ void XDisplaySetWindowToNormalState ( Display* This ,Window a_window ) -/***************************************************************************/ -/* - Used to deiconify a window. -*/ -/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ +// Used to deiconify a window. { XWMHints wh; if(This==NULL) return; @@ -229,6 +213,7 @@ void XDisplaySetWindowToNormalState ( XSetWMHints (This,a_window,&wh); XMapWindow (This,a_window); } +*/ #endif diff --git a/source/materials/History b/source/materials/History index b787e1bf93..5a17a803dd 100644 --- a/source/materials/History +++ b/source/materials/History @@ -1,4 +1,4 @@ -$Id: History,v 1.22 2001/06/06 09:20:25 gcosmo Exp $ +$Id: History,v 1.32 2001/11/29 16:33:55 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,46 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +29.11.01 G.Cosmo - materials-V03-02-07 + Fixed declaration of ostream attributes to use standard 'fmtflags' + type for ANSI compilers. Fixes compilation error on gcc-3.0.2. + Modified files: G4Isotope.cc, G4Element.cc, G4Material.cc. + +28.11.01 G.Cosmo - materials-V03-02-06 + Fixed bug in G4MaterialPropertyVector::RemoveElement() for the + initialisation of a local pointer. Fixes compilation problem on VC++. + +31.10.01 M.Maire - materials-V03-02-05 + New function G4Materials::SetChemicalFormula(). + +17.10.01 G.Cosmo - materials-V03-02-04 + Removed all static inline methods in G4Isotope, G4Element, + G4Material and G4SandiaTable. Now placed in respective .cc files. + Fixed memory leak in G4SandiaTable::ComputeMatSandiaMatrix(), + for deletion of temporary vectors Z, tmp1, tmp2. + Moved definitions of G4IsotopeVector and G4ElementVector, + G4ElementTable and G4MaterialTable to the appropriate headers. + Replaced NULL with 0 whereever needed. + +19.09.01 G.Cosmo - materials-V03-02-03 + Fixed initialisation of STL collections in costructors and assignment + operators. Fixes warnings detected on HP-aCC. + +14.09.01 M.Maire - materials-V03-02-02 + G4Isotope,Element,Material: IndexInTable is obtained dynamically + via GetIndex(). An Isotope,Element,Material can be deleted. + fCountUse counts the nb of materials which reference a given element. + (idem for elements->isotope) + +31.08.01 P.Gumplinger - materials-V03-02-01 + Fix printing of property name and check for NULL property vector + pointer in G4MaterialPropertiesTable:DumpTable; and correct warning + message in RemoveEntry method. + Improve printing in G4MaterialPropertyVector::DumpVector. + +17.07.01 M.Verderi - materials-V03-02-00 + Complete migration to STL. Tag proposed for testing. + 06.06.01 G.Cosmo - materials-V03-01-01 Explicitly initialise to zero values of G4DataVector used to create sandia-matrix in method ComputeMatSandiaMatrix(). diff --git a/source/materials/include/G4AtomicShells.hh b/source/materials/include/G4AtomicShells.hh index 5953366643..cfda355a9c 100644 --- a/source/materials/include/G4AtomicShells.hh +++ b/source/materials/include/G4AtomicShells.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AtomicShells.hh,v 1.3.4.1 2001/06/28 19:10:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AtomicShells.hh,v 1.4 2001/07/11 10:01:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // class description // diff --git a/source/materials/include/G4Element.hh b/source/materials/include/G4Element.hh index e8df238806..519c6adb2a 100644 --- a/source/materials/include/G4Element.hh +++ b/source/materials/include/G4Element.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Element.hh,v 1.8.2.1 2001/06/28 19:10:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Element.hh,v 1.15 2001/10/17 14:02:15 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description @@ -45,7 +45,7 @@ // in volume definitions via the G4Material class. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 09-07-96, new data members added by L.Urban // 17-01-97, aesthetic rearrangement, M.Maire @@ -61,169 +61,191 @@ // 04-08-98, new method GetElement(elementName), M.Maire // 16-11-98, Subshell -> Shell, mma // 30-03-01, suppression of the warning message in GetElement +// 17-07-01, migration to STL, M. Verderi +// 13-09-01, stl migration. Suppression of the data member fIndexInTable +// 14-09-01, fCountUse: nb of materials which use this element -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4ELEMENT_HH #define G4ELEMENT_HH -#include "G4ios.hh" -#include "g4rw/tpvector.h" -#include "g4rw/tpordvec.h" #include "globals.hh" +#include "g4std/vector" +#include "G4ios.hh" #include "G4Isotope.hh" #include "G4AtomicShells.hh" #include "G4IonisParamElm.hh" +#include "G4IsotopeVector.hh" +#include "G4ElementTable.hh" -typedef G4RWTPtrVector G4IsotopeVector; - -class G4Element; //forward declaration -typedef G4RWTPtrOrderedVector G4ElementTable; - - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4Element { public: // with description - // - // Constructor to Build an element directly; no reference to isotopes - // - G4Element(const G4String& name, //its name - const G4String& symbol, //its symbol - G4double Zeff, //atomic number - G4double Aeff); //mass of mole - - // - // Constructor to Build an element from isotopes via AddIsotope - // - G4Element(const G4String& name, //its name - const G4String& symbol, //its symbol - G4int nbIsotopes); //nb of isotopes + // + // Constructor to Build an element directly; no reference to isotopes + // + G4Element(const G4String& name, //its name + const G4String& symbol, //its symbol + G4double Zeff, //atomic number + G4double Aeff); //mass of mole + + // + // Constructor to Build an element from isotopes via AddIsotope + // + G4Element(const G4String& name, //its name + const G4String& symbol, //its symbol + G4int nbIsotopes); //nb of isotopes - // - // Add an isotope to the element - // - void AddIsotope(G4Isotope* isotope, //isotope - G4double RelativeAbundance); //fraction of nb of - //atomes per volume - - virtual ~G4Element(); + // + // Add an isotope to the element + // + void AddIsotope(G4Isotope* isotope, //isotope + G4double RelativeAbundance); //fraction of nb of + //atomes per volume + virtual ~G4Element(); + + // + // retrieval methods + // + G4String GetName() const {return fName;}; + G4String GetSymbol() const {return fSymbol;}; + G4double GetZ() const {return fZeff;}; //atomic number + G4double GetN() const {return fNeff;}; //number of nucleons + G4double GetA() const {return fAeff;}; //mass of a mole + + //the number of atomic shells in this element: + // + G4int GetNbOfAtomicShells() const {return fNbOfAtomicShells;}; + + //the binding energy of the shell: + // + G4double GetAtomicShell(G4int) const; + + //number of isotopes constituing this element: + // + size_t GetNumberOfIsotopes() const {return fNumberOfIsotopes;}; - // - // retrieval methods - // - G4String GetName() const {return fName;}; - G4String GetSymbol() const {return fSymbol;}; - G4double GetZ() const {return fZeff;}; //atomic number - G4double GetN() const {return fNeff;}; //number of nucleons - G4double GetA() const {return fAeff;}; //mass of a mole + //vector of pointers to isotopes constituing this element: + // + G4IsotopeVector* GetIsotopeVector() const {return theIsotopeVector;}; - //the number of atomic shells in this element: - G4int GetNbOfAtomicShells() const {return fNbOfAtomicShells;}; - //the binding energy of the shell : - G4double GetAtomicShell(G4int) const; + //vector of relative abundance of each isotope: + // + G4double* GetRelativeAbundanceVector() const + {return fRelativeAbundanceVector;}; - //number of isotopes constituing this element: - size_t GetNumberOfIsotopes() const {return fNumberOfIsotopes;}; - - //vector of pointers to isotopes constituing this element: - G4IsotopeVector* GetIsotopeVector() const {return theIsotopeVector;}; - - //vector of relative abundance of each isotope: - G4double* GetRelativeAbundanceVector() const {return fRelativeAbundanceVector;}; - - const G4Isotope* GetIsotope(G4int iso) const {return (*theIsotopeVector)[iso];}; + const G4Isotope* GetIsotope(G4int iso) const + {return (*theIsotopeVector)[iso];}; - //the (static) Table of Elements: - static const G4ElementTable* GetElementTable() {return &theElementTable;}; - static size_t GetNumberOfElements() {return theElementTable.length();}; - //the index of this element in the Table: - size_t GetIndex() const {return fIndexInTable;}; + //the (static) Table of Elements: + // + static + const G4ElementTable* GetElementTable(); + + static + size_t GetNumberOfElements(); + + //the index of this element in the Table: + // + size_t GetIndex() const; - //return pointer to an element, given its name: - static G4Element* GetElement(G4String name); + //return pointer to an element, given its name: + // + static + G4Element* GetElement(G4String name); + + //count number of materials which use this element + // + G4int GetCountUse() const {return fCountUse;}; + void increaseCountUse() {fCountUse++;}; + void decreaseCountUse() {fCountUse--;}; + + //Coulomb correction factor: + // + G4double GetfCoulomb() const {return fCoulomb;}; + + //Tsai formula for the radiation length: + // + G4double GetfRadTsai() const {return fRadTsai;}; - //Coulomb correction factor: - G4double GetfCoulomb() const {return fCoulomb;}; + //pointer to ionisation parameters: + // + G4IonisParamElm* GetIonisation() const {return fIonisation;}; - //Tsai formula for the radiation length: - G4double GetfRadTsai() const {return fRadTsai;}; - - //pointer to ionisation parameters: - G4IonisParamElm* GetIonisation() const {return fIonisation;}; - - // - // printing methods - // - friend G4std::ostream& operator<<(G4std::ostream&, G4Element*); - friend G4std::ostream& operator<<(G4std::ostream&, G4Element&); - friend G4std::ostream& operator<<(G4std::ostream&, G4ElementTable); + // printing methods + // + friend G4std::ostream& operator<<(G4std::ostream&, G4Element*); + friend G4std::ostream& operator<<(G4std::ostream&, G4Element&); + friend G4std::ostream& operator<<(G4std::ostream&, G4ElementTable); public: // without description - G4int operator==(const G4Element&) const; - G4int operator!=(const G4Element&) const; + G4int operator==(const G4Element&) const; + G4int operator!=(const G4Element&) const; private: - G4Element(G4Element&); - const G4Element & operator=(const G4Element&); + G4Element(G4Element&); + const G4Element & operator=(const G4Element&); private: - void InitializePointers(); - void ComputeDerivedQuantities(); - void ComputeCoulombFactor(); - void ComputeLradTsaiFactor(); + void InitializePointers(); + void ComputeDerivedQuantities(); + void ComputeCoulombFactor(); + void ComputeLradTsaiFactor(); private: // // Basic data members (which define an Element) // - G4String fName; // name - G4String fSymbol; // symbol - G4double fZeff; // Effective atomic number - G4double fNeff; // Effective number of nucleons - G4double fAeff; // Effective mass of a mole + G4String fName; // name + G4String fSymbol; // symbol + G4double fZeff; // Effective atomic number + G4double fNeff; // Effective number of nucleons + G4double fAeff; // Effective mass of a mole - G4int fNbOfAtomicShells; // number of atomic shells - G4double* fAtomicShells ; // Pointer to atomic shell binding energies + G4int fNbOfAtomicShells; // number of atomic shells + G4double* fAtomicShells ; // Pointer to atomic shell binding energies - // Isotope vector contains constituent isotopes of the element - size_t fNumberOfIsotopes; // Number of isotopes added to the element - G4IsotopeVector* theIsotopeVector; - G4double* fRelativeAbundanceVector; // Fraction of nb of atomes per volume - // for each constituent - - // Set up the static Table of Elements - static G4ElementTable theElementTable; - size_t fIndexInTable; // Position of the element in the table + // Isotope vector contains constituent isotopes of the element + size_t fNumberOfIsotopes; // Number of isotopes added to the element + G4IsotopeVector* theIsotopeVector; + G4double* fRelativeAbundanceVector; // Fraction nb of atomes per volume + // for each constituent + G4int fCountUse; // nb of materials which use this element + + // Set up the static Table of Elements + static G4ElementTable theElementTable; // // Derived data members (computed from the basic data members) // - G4double fCoulomb; // Coulomb correction factor - G4double fRadTsai; // Tsai formula for the radiation length - G4IonisParamElm* fIonisation; // Pointer to ionisation parameters + G4double fCoulomb; // Coulomb correction factor + G4double fRadTsai; // Tsai formula for the radiation length + G4IonisParamElm* fIonisation; // Pointer to ionisation parameters }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline -G4Element* G4Element::GetElement(G4String elementName) +size_t G4Element::GetIndex() const { - // search the element by its name - for (size_t J=0 ; JGetName() == elementName) - return theElementTable[J]; - } - - // the element does not exist in the table - return NULL; + // return the index of this Element in theElementTable + // + size_t J=0, Jmax=theElementTable.size(); + while ((J G4ElementTable; #endif diff --git a/source/materials/include/G4ElementVector.hh b/source/materials/include/G4ElementVector.hh index bfa5735b14..e22bf47f59 100644 --- a/source/materials/include/G4ElementVector.hh +++ b/source/materials/include/G4ElementVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ElementVector.hh,v 1.2.4.2 2001/06/28 20:18:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ElementVector.hh,v 1.4 2001/10/17 07:59:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -36,6 +36,9 @@ #ifndef G4ELEMENTVECTOR_HH #define G4ELEMENTVECTOR_HH -#include "G4Material.hh" +#include "g4std/vector" +#include "G4Element.hh" + +typedef G4std::vector G4ElementVector; #endif diff --git a/source/materials/include/G4IonisParamElm.hh b/source/materials/include/G4IonisParamElm.hh index 9fac4cadac..f9e1ccb4ab 100644 --- a/source/materials/include/G4IonisParamElm.hh +++ b/source/materials/include/G4IonisParamElm.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IonisParamElm.hh,v 1.5.2.1 2001/06/28 19:10:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IonisParamElm.hh,v 1.6 2001/07/11 10:01:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description diff --git a/source/materials/include/G4IonisParamMat.hh b/source/materials/include/G4IonisParamMat.hh index 042ebb291b..4b9761a7cb 100644 --- a/source/materials/include/G4IonisParamMat.hh +++ b/source/materials/include/G4IonisParamMat.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IonisParamMat.hh,v 1.5.2.1 2001/06/28 19:10:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IonisParamMat.hh,v 1.6 2001/07/11 10:01:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description diff --git a/source/materials/include/G4Isotope.hh b/source/materials/include/G4Isotope.hh index 404f9f51f6..bd9bd6a85d 100644 --- a/source/materials/include/G4Isotope.hh +++ b/source/materials/include/G4Isotope.hh @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4Isotope.hh,v 1.7.2.1 2001/06/28 19:10:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Isotope.hh,v 1.13 2001/10/17 07:59:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // class description // @@ -39,26 +39,27 @@ // Isotopes can be assembled into elements via the G4Element class. // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -// 30.03.01: suppression of the warnig message in GetIsotope +// 14.09.01: fCountUse: nb of elements which use this isotope +// 13.09.01: stl migration. Suppression of the data member fIndexInTable +// 30.03.01: suppression of the warning message in GetIsotope // 04.08.98: new method GetIsotope(isotopeName) (mma) // 17.01.97: aesthetic rearrangement (mma) -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4ISOTOPE_HH #define G4ISOTOPE_HH -#include "G4ios.hh" -#include "g4rw/tpordvec.h" #include "globals.hh" +#include "G4ios.hh" +#include "g4std/vector" class G4Isotope; -typedef G4RWTPtrOrderedVector G4IsotopeTable; +typedef G4std::vector G4IsotopeTable; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo...... class G4Isotope { @@ -70,20 +71,28 @@ class G4Isotope G4int n, //number of nucleons G4double a); //mass of mole - virtual ~G4Isotope(); + virtual ~G4Isotope(); // Retrieval methods G4String GetName() const {return fName;}; G4int GetZ() const {return fZ;}; G4int GetN() const {return fN;}; G4double GetA() const {return fA;}; - size_t GetIndex() const {return fIndexInTable;}; - static G4Isotope* GetIsotope(G4String name); + G4int GetCountUse() const {return fCountUse;}; + void increaseCountUse() {fCountUse++;}; + void decreaseCountUse() {fCountUse--;}; - static - const G4IsotopeTable* GetIsotopeTable() {return &theIsotopeTable;}; - static size_t GetNumberOfIsotopes() {return theIsotopeTable.length();}; + static + G4Isotope* GetIsotope(G4String name); + + static const + G4IsotopeTable* GetIsotopeTable(); + + static + size_t GetNumberOfIsotopes(); + + size_t GetIndex() const; friend G4std::ostream& operator<<(G4std::ostream&, G4Isotope*); @@ -110,26 +119,28 @@ class G4Isotope G4int fZ; // atomic number G4int fN; // number of nucleons G4double fA; // mass of a mole + + G4int fCountUse; // nb of elements which use this isotope static G4IsotopeTable theIsotopeTable; - size_t fIndexInTable; // index in the Isotope Table }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline -G4Isotope* G4Isotope::GetIsotope(G4String isotopeName) +size_t G4Isotope::GetIndex() const { - // search the isotope by its name - for (size_t J=0 ; JGetName() == isotopeName) - return theIsotopeTable[J]; - } - - // the isotope does not exist in the table - return NULL; + // return the index of this isotope in theIsotopeTable + // + size_t J=0, Jmax=theIsotopeTable.size(); + while ((J G4IsotopeVector; #endif diff --git a/source/materials/include/G4MPVEntry.hh b/source/materials/include/G4MPVEntry.hh index a76927e80c..a128f6f629 100644 --- a/source/materials/include/G4MPVEntry.hh +++ b/source/materials/include/G4MPVEntry.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MPVEntry.hh,v 1.4.4.1 2001/06/28 19:10:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MPVEntry.hh,v 1.5 2001/07/11 10:01:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4Material.hh b/source/materials/include/G4Material.hh index df386b992a..75397fc88b 100644 --- a/source/materials/include/G4Material.hh +++ b/source/materials/include/G4Material.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Material.hh,v 1.11.2.1 2001/06/28 19:10:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Material.hh,v 1.19 2001/10/31 12:56:12 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description @@ -46,7 +46,7 @@ // materials (an ordered vector of materials). // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 10-07-96, new data members added by L.Urban // 12-12-96, new data members added by L.Urban @@ -71,288 +71,291 @@ // 19-07-99, new data member (chemicalFormula) added by V.Ivanchenko // 12-03-01, G4bool fImplicitElement (mma) // 30-03-01, suppression of the warning message in GetMaterial +// 17-07-01, migration to STL. M. Verderi. +// 14-09-01, Suppression of the data member fIndexInTable +// 31-10-01, new function SetChemicalFormula() (mma) -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4MATERIAL_HH #define G4MATERIAL_HH -#include "G4ios.hh" -#include "g4rw/tpvector.h" -#include "g4rw/tpordvec.h" #include "globals.hh" +#include "G4ios.hh" +#include "g4std/vector" #include "G4Element.hh" #include "G4MaterialPropertiesTable.hh" #include "G4IonisParamMat.hh" #include "G4SandiaTable.hh" - -typedef G4RWTPtrVector G4ElementVector; - -class G4Material; //forward declaration -typedef G4RWTPtrOrderedVector G4MaterialTable; +#include "G4ElementVector.hh" +#include "G4MaterialTable.hh" enum G4State { kStateUndefined, kStateSolid, kStateLiquid, kStateGas }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4Material { public: // with description - // - // Constructor to create a material from scratch. - // - G4Material(const G4String& name, //its name - G4double z, //atomic number - G4double a, //mass of mole - G4double density, //density - G4State state = kStateUndefined, //solid,liqid,gas - G4double temp = STP_Temperature, //temperature - G4double pressure = STP_Pressure); //pressure + // + // Constructor to create a material from scratch. + // + G4Material(const G4String& name, //its name + G4double z, //atomic number + G4double a, //mass of mole + G4double density, //density + G4State state = kStateUndefined, //solid,gas + G4double temp = STP_Temperature, //temperature + G4double pressure = STP_Pressure); //pressure - // - // Constructor to create a material from a combination of elements - // and/or materials subsequently added via AddElement and/or AddMaterial - // - G4Material(const G4String& name, //its name - G4double density, //density - G4int nComponents, //nb of components - G4State state = kStateUndefined, //solid,liquid,gas - G4double temp = STP_Temperature, //temperature - G4double pressure = STP_Pressure); //pressure + // + // Constructor to create a material from a combination of elements + // and/or materials subsequently added via AddElement and/or AddMaterial + // + G4Material(const G4String& name, //its name + G4double density, //density + G4int nComponents, //nbOfComponents + G4State state = kStateUndefined, //solid,gas + G4double temp = STP_Temperature, //temperature + G4double pressure = STP_Pressure); //pressure - // - // Constructor to create a material with chemical formula from scratch. - // - G4Material(const G4String& name, //its name - const G4String& chFormula, //chemical formula - G4double z, //atomic number - G4double a, //mass of mole - G4double density, //density - G4State state = kStateUndefined, //solid,liqid,gas - G4double temp = STP_Temperature, //temperature - G4double pressure = STP_Pressure); //pressure + // + // Constructor to create a material with chemical formula from scratch. + // + G4Material(const G4String& name, //its name + const G4String& chFormula, //chemicalFormul + G4double z, //atomic number + G4double a, //mass of mole + G4double density, //density + G4State state = kStateUndefined, //solid,gas + G4double temp = STP_Temperature, //temperature + G4double pressure = STP_Pressure); //pressure - // - // Constructor to create a material with chemical formula from a - // combination of elements and/or materials subsequently added via - // AddElement and/or AddMaterial - // - G4Material(const G4String& name, //its name - const G4String& chFormula, //chemical formula - G4double density, //density - G4int nComponents, //nb of components - G4State state = kStateUndefined, //solid,liquid,gas - G4double temp = STP_Temperature, //temperature - G4double pressure = STP_Pressure); //pressure + // + // Constructor to create a material with chemical formula from a + // combination of elements and/or materials subsequently added via + // AddElement and/or AddMaterial + // + G4Material(const G4String& name, //its name + const G4String& chFormula, //chemicalFormul + G4double density, //density + G4int nComponents, //nbOfComponents + G4State state = kStateUndefined, //solid,gas + G4double temp = STP_Temperature, //temperature + G4double pressure = STP_Pressure); //pressure - // - // Add an element, giving number of atoms - // - void AddElement(G4Element* element, //the element - G4int nAtoms); //nb of atoms in a molecule - - // - // Add an element or material, giving fraction of mass - // - void AddElement (G4Element* element , //the element - G4double fraction); //fraction of mass + // + // Add an element, giving number of atoms + // + void AddElement(G4Element* element, //the element + G4int nAtoms); //nb of atoms in + // a molecule + // + // Add an element or material, giving fraction of mass + // + void AddElement (G4Element* element , //the element + G4double fraction); //fractionOfMass - void AddMaterial(G4Material* material, //the material - G4double fraction); //fraction of mass + void AddMaterial(G4Material* material, //the material + G4double fraction); //fractionOfMass - virtual ~G4Material(); - - // - // retrieval methods - // - G4String GetName() const {return fName;}; - G4String GetChemicalFormula() const {return fChemicalFormula;}; - G4double GetDensity() const {return fDensity;}; + virtual ~G4Material(); + + void SetChemicalFormula(const G4String& chF) {fChemicalFormula=chF;}; + + // + // retrieval methods + // + G4String GetName() const {return fName;}; + G4String GetChemicalFormula() const {return fChemicalFormula;}; + G4double GetDensity() const {return fDensity;}; - G4State GetState() const {return fState;}; - G4double GetTemperature() const {return fTemp;}; - G4double GetPressure() const {return fPressure;}; + G4State GetState() const {return fState;}; + G4double GetTemperature() const {return fTemp;}; + G4double GetPressure() const {return fPressure;}; - //number of elements constituing this material: - size_t GetNumberOfElements() const {return fNumberOfElements;}; + //number of elements constituing this material: + size_t GetNumberOfElements() const {return fNumberOfElements;}; - //vector of pointers to elements constituing this material: - const - G4ElementVector* GetElementVector() const {return theElementVector;}; + //vector of pointers to elements constituing this material: + const + G4ElementVector* GetElementVector() const {return theElementVector;}; + + //vector of fractional mass of each element: + const G4double* GetFractionVector() const {return fMassFractionVector;}; - //vector of fractional mass of each element: - const G4double* GetFractionVector() const {return fMassFractionVector;}; - - //vector of atom count of each element: - const G4int* GetAtomsVector() const {return fAtomsVector;}; + //vector of atom count of each element: + const G4int* GetAtomsVector() const {return fAtomsVector;}; - //return a pointer to an element, given its index in the material: - const - G4Element* GetElement(G4int iel) const {return (*theElementVector)[iel];}; - - //vector of nb of atoms per volume of each element in this material: - const - G4double* GetVecNbOfAtomsPerVolume() const {return VecNbOfAtomsPerVolume;}; - //total number of atoms per volume: - G4double GetTotNbOfAtomsPerVolume() const {return TotNbOfAtomsPerVolume;}; - //total number of electrons per volume: - G4double GetTotNbOfElectPerVolume() const {return TotNbOfElectPerVolume;}; + //return a pointer to an element, given its index in the material: + const + G4Element* GetElement(G4int iel) const {return (*theElementVector)[iel];}; + + //vector of nb of atoms per volume of each element in this material: + const + G4double* GetVecNbOfAtomsPerVolume() const {return VecNbOfAtomsPerVolume;}; + //total number of atoms per volume: + G4double GetTotNbOfAtomsPerVolume() const {return TotNbOfAtomsPerVolume;}; + //total number of electrons per volume: + G4double GetTotNbOfElectPerVolume() const {return TotNbOfElectPerVolume;}; - //obsolete names (5-10-98) see the 2 functions above - const - G4double* GetAtomicNumDensityVector() const {return VecNbOfAtomsPerVolume;}; - G4double GetElectronDensity() const {return TotNbOfElectPerVolume;}; + //obsolete names (5-10-98) see the 2 functions above + const + G4double* GetAtomicNumDensityVector() const {return VecNbOfAtomsPerVolume;}; + G4double GetElectronDensity() const {return TotNbOfElectPerVolume;}; - // Radiation length: - G4double GetRadlen() const {return fRadlen;}; + // Radiation length: + G4double GetRadlen() const {return fRadlen;}; - // Nuclear interaction length: - G4double GetNuclearInterLength() const {return fNuclInterLen;}; + // Nuclear interaction length: + G4double GetNuclearInterLength() const {return fNuclInterLen;}; - // ionisation parameters: - G4IonisParamMat* GetIonisation() const {return fIonisation;}; - - // Sandia table: - G4SandiaTable* GetSandiaTable() const {return fSandiaTable;}; - - //meaningful only for single material: - G4double GetZ() const; - G4double GetA() const; - - //the MaterialPropertiesTable (if any) attached to this material: - void SetMaterialPropertiesTable(G4MaterialPropertiesTable* anMPT) - {fMaterialPropertiesTable = anMPT;}; - - G4MaterialPropertiesTable* GetMaterialPropertiesTable() const - {return fMaterialPropertiesTable;}; + // ionisation parameters: + G4IonisParamMat* GetIonisation() const {return fIonisation;}; + + // Sandia table: + G4SandiaTable* GetSandiaTable() const {return fSandiaTable;}; + + //meaningful only for single material: + G4double GetZ() const; + G4double GetA() const; + + //the MaterialPropertiesTable (if any) attached to this material: + void SetMaterialPropertiesTable(G4MaterialPropertiesTable* anMPT) + {fMaterialPropertiesTable = anMPT;}; + + G4MaterialPropertiesTable* GetMaterialPropertiesTable() const + {return fMaterialPropertiesTable;}; - //the (static) Table of Materials: - static - const G4MaterialTable* GetMaterialTable() {return &theMaterialTable;}; - static - size_t GetNumberOfMaterials() {return theMaterialTable.length();}; - //the index of this material in the Table: - size_t GetIndex() const {return fIndexInTable;}; + //the (static) Table of Materials: + // + static + const G4MaterialTable* GetMaterialTable(); + + static + size_t GetNumberOfMaterials(); + + //the index of this material in the Table: + size_t GetIndex() const; - //return pointer to a material, given its name: - static G4Material* GetMaterial(G4String name); - - // - //printing methods - // - friend G4std::ostream& operator<<(G4std::ostream&, G4Material*); - friend G4std::ostream& operator<<(G4std::ostream&, G4Material&); - friend G4std::ostream& operator<<(G4std::ostream&, G4MaterialTable); + //return pointer to a material, given its name: + static G4Material* GetMaterial(G4String name); + + // + //printing methods + // + friend G4std::ostream& operator<<(G4std::ostream&, G4Material*); + friend G4std::ostream& operator<<(G4std::ostream&, G4Material&); + friend G4std::ostream& operator<<(G4std::ostream&, G4MaterialTable); public: // without description - G4int operator==(const G4Material&) const; - G4int operator!=(const G4Material&) const; + G4int operator==(const G4Material&) const; + G4int operator!=(const G4Material&) const; private: - G4Material(const G4Material&); - const G4Material& operator=(const G4Material&); + G4Material(const G4Material&); + const G4Material& operator=(const G4Material&); - void InitializePointers(); - - // Header routine for all derived quantities - void ComputeDerivedQuantities(); - - // Compute Radiation length - void ComputeRadiationLength(); - - // Compute Nuclear interaction length - void ComputeNuclearInterLength(); - -private: - -// -// Basic data members ( To define a material) -// - - G4String fName; // Material name - G4String fChemicalFormula; // Material chemical formula - G4double fDensity; // Material density + void InitializePointers(); - G4State fState; // Material state (defaults to undefined, - // determined internally based on density) - G4double fTemp; // Temperature (defaults to STP) - G4double fPressure; // Pressure (defaults to STP) + // Header routine for all derived quantities + void ComputeDerivedQuantities(); - G4int maxNbComponents; // total number of components in the material - size_t fNumberOfComponents; // Number of components declared so far - - size_t fNumberOfElements; // Number of Elements in the material - G4ElementVector* theElementVector; // vector of constituent Elements - G4bool fImplicitElement; // implicit Element created by this? - G4double* fMassFractionVector; // composition by fractional mass - G4int* fAtomsVector; // composition by atom count - - G4MaterialPropertiesTable* fMaterialPropertiesTable; - - static - G4MaterialTable theMaterialTable; // the material table - size_t fIndexInTable; // Index of material in the material table - -// -// Derived data members (computed from the basic data members) -// - // some general atomic properties + // Compute Radiation length + void ComputeRadiationLength(); + + // Compute Nuclear interaction length + void ComputeNuclearInterLength(); - G4double* VecNbOfAtomsPerVolume; // vector of nb of atoms per volume - G4double TotNbOfAtomsPerVolume; // total nb of atoms per volume - G4double TotNbOfElectPerVolume; // total nb of electrons per volume - G4double fRadlen; // Radiation length - G4double fNuclInterLen; // Nuclear interaction length - - G4IonisParamMat* fIonisation; // ionisation parameters - G4SandiaTable* fSandiaTable; // Sandia table +private: + + // + // Basic data members ( To define a material) + // + + G4String fName; // Material name + G4String fChemicalFormula; // Material chemical formula + G4double fDensity; // Material density + + G4State fState; // Material state (determined + // internally based on density) + G4double fTemp; // Temperature (defaults: STP) + G4double fPressure; // Pressure (defaults: STP) + + G4int maxNbComponents; // totalNbOfComponentsInTheMaterial + size_t fNumberOfComponents; // Nb of components declared so far + + size_t fNumberOfElements; // Nb of Elements in the material + G4ElementVector* theElementVector; // vector of constituent Elements + G4bool fImplicitElement; // implicit Element created by this? + G4double* fMassFractionVector; // composition by fractional mass + G4int* fAtomsVector; // composition by atom count + + G4MaterialPropertiesTable* fMaterialPropertiesTable; + + static + G4MaterialTable theMaterialTable; // the material table + + // + // Derived data members (computed from the basic data members) + // + // some general atomic properties + + G4double* VecNbOfAtomsPerVolume; // vector of nb of atoms per volume + G4double TotNbOfAtomsPerVolume; // total nb of atoms per volume + G4double TotNbOfElectPerVolume; // total nb of electrons per volume + G4double fRadlen; // Radiation length + G4double fNuclInterLen; // Nuclear interaction length + + G4IonisParamMat* fIonisation; // ionisation parameters + G4SandiaTable* fSandiaTable; // Sandia table }; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... - -inline -G4Material* G4Material::GetMaterial(G4String materialName) -{ - // search the material by its name - for (size_t J=0 ; JGetName() == materialName) - return theMaterialTable[J]; - } - - // the material does not exist in the table - return NULL; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4Material::GetZ() const { if (fNumberOfElements > 1) { - G4cerr << "WARNING in GetZ. The material: " << fName << " is a mixture." << G4endl; + G4cerr << "WARNING in GetZ. The material: " << fName << " is a mixture." + << G4endl; G4Exception ( " the Atomic number is not well defined." ); } - return (*theElementVector)(0)->GetZ(); + return (*theElementVector)[0]->GetZ(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... - +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4Material::GetA() const { if (fNumberOfElements > 1) { - G4cerr << "WARNING in GetA. The material: " << fName << " is a mixture." << G4endl; + G4cerr << "WARNING in GetA. The material: " << fName << " is a mixture." + << G4endl; G4Exception ( " the Atomic mass is not well defined." ); } - return (*theElementVector)(0)->GetA(); + return (*theElementVector)[0]->GetA(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +size_t G4Material::GetIndex() const +{ + // return the index of this Material in theMaterialTable + // + size_t J=0, Jmax=theMaterialTable.size(); + while ((J MPV; + //G4RWTPtrSortedVector MPV; + G4std::vector MPV; G4int NumEntries; G4int CurrentEntry; }; @@ -168,25 +168,25 @@ private: inline G4double G4MaterialPropertyVector::GetMaxProperty() const { - return MPV.last()->GetProperty(); + return MPV.back()->GetProperty(); } inline G4double G4MaterialPropertyVector::GetMinProperty() const { - return MPV.first()->GetProperty(); + return MPV.front()->GetProperty(); } inline G4double G4MaterialPropertyVector::GetMaxPhotonMomentum() const { - return MPV.last()->GetPhotonMomentum(); + return MPV.back()->GetPhotonMomentum(); } inline G4double G4MaterialPropertyVector::GetMinPhotonMomentum() const { - return MPV.first()->GetPhotonMomentum(); + return MPV.front()->GetPhotonMomentum(); } #endif /* G4MaterialPropertyVector_h */ diff --git a/source/materials/include/G4MaterialTable.hh b/source/materials/include/G4MaterialTable.hh index 2a1a5a6f2a..c0f7fa0789 100644 --- a/source/materials/include/G4MaterialTable.hh +++ b/source/materials/include/G4MaterialTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MaterialTable.hh,v 1.2.4.2 2001/06/28 20:18:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MaterialTable.hh,v 1.4 2001/10/17 14:02:16 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -36,6 +36,8 @@ #ifndef G4MATERIALTABLE_HH #define G4MATERIALTABLE_HH -#include "G4Material.hh" +class G4Material; + +typedef G4std::vector G4MaterialTable; #endif diff --git a/source/materials/include/G4OpticalSurface.hh b/source/materials/include/G4OpticalSurface.hh index 2413aa327f..056e8cefb9 100644 --- a/source/materials/include/G4OpticalSurface.hh +++ b/source/materials/include/G4OpticalSurface.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpticalSurface.hh,v 1.4.10.1 2001/06/28 19:10:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpticalSurface.hh,v 1.5 2001/07/11 10:01:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/include/G4SandiaTable.hh b/source/materials/include/G4SandiaTable.hh index 9f34748788..0a78960513 100644 --- a/source/materials/include/G4SandiaTable.hh +++ b/source/materials/include/G4SandiaTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SandiaTable.hh,v 1.8.2.1 2001/06/28 19:10:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SandiaTable.hh,v 1.10 2001/10/17 07:59:52 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // class description // @@ -146,80 +146,6 @@ private: //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... -// Inline function implementations - - -inline -G4int G4SandiaTable::GetNbOfIntervals(G4int Z) -{ - return fNbOfIntervals[Z]; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... - -inline -G4double G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4int interval, G4int j) -{ - assert (Z>0 && Z<101 && interval>=0 && interval=0 && j<5); - - G4int row = fCumulInterval[Z-1] + interval; - if (j==0) return fSandiaTable[row][0]*keV; - G4double AoverAvo = Z*amu/fZtoAratio[Z]; - return AoverAvo*(fSandiaTable[row][j]*cm2*pow(keV,G4double(j))/g); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... - -inline -G4double* G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4double energy) -{ - assert (Z > 0); - - G4double Emin = fSandiaTable[fCumulInterval[Z-1]][0]*keV; - G4double Iopot = fIonizationPotentials[Z]*eV; - if (Iopot > Emin) Emin = Iopot; - - G4int interval = fNbOfIntervals[Z] - 1; - G4int row = fCumulInterval[Z-1] + interval; - while ((interval>0) && (energy= Emin) - { - G4double AoverAvo = Z*amu/fZtoAratio[Z]; - - fSandiaCofPerAtom[0]=AoverAvo*(fSandiaTable[row][1]*cm2*keV/g); - fSandiaCofPerAtom[1]=AoverAvo*(fSandiaTable[row][2]*cm2*keV*keV/g); - fSandiaCofPerAtom[2]=AoverAvo*(fSandiaTable[row][3]*cm2*keV*keV*keV/g); - fSandiaCofPerAtom[3]=AoverAvo*(fSandiaTable[row][4]*cm2*keV*keV*keV*keV/g); - } - else - fSandiaCofPerAtom[0] = fSandiaCofPerAtom[1] = fSandiaCofPerAtom[2] = - fSandiaCofPerAtom[3] = 0.; - - return fSandiaCofPerAtom; - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... - -inline -G4double G4SandiaTable::GetIonizationPot(G4int Z) -{ - return fIonizationPotentials[Z]*eV; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... - -inline -G4double G4SandiaTable::GetZtoA(G4int Z) -{ - return fZtoAratio[Z]; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... - /////////////////////////////////////////////////////////////////////// // // Inline methods for PAI model diff --git a/source/materials/include/G4StaticSandiaData.hh b/source/materials/include/G4StaticSandiaData.hh index f648500f6f..492e67f986 100644 --- a/source/materials/include/G4StaticSandiaData.hh +++ b/source/materials/include/G4StaticSandiaData.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StaticSandiaData.hh,v 1.4.4.1 2001/06/28 19:10:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StaticSandiaData.hh,v 1.5 2001/07/11 10:01:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... diff --git a/source/materials/src/G4AtomicShells.cc b/source/materials/src/G4AtomicShells.cc index 4aede1c7c5..20eb945405 100644 --- a/source/materials/src/G4AtomicShells.cc +++ b/source/materials/src/G4AtomicShells.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AtomicShells.cc,v 1.2.4.1 2001/06/28 19:10:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AtomicShells.cc,v 1.3 2001/07/11 10:01:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... diff --git a/source/materials/src/G4Element.cc b/source/materials/src/G4Element.cc index 834cb8f627..0575b5380c 100644 --- a/source/materials/src/G4Element.cc +++ b/source/materials/src/G4Element.cc @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4Element.cc,v 1.7.2.1 2001/06/28 19:10:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Element.cc,v 1.14 2001/11/29 15:19:15 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 26-06-96: Code uses operators (+=, *=, ++, -> etc.) correctly, P. Urban // 09-07-96: new data members added by L.Urban @@ -40,16 +40,18 @@ // 16-11-98: name Subshell -> Shell; GetBindingEnergy() (mma) // 09-03-01: assignement operator revised (mma) // 02-05-01: check identical Z in AddIsotope (marc) -// 03-05-01, flux.precision(prec) at begin/end of operator<< - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +// 03-05-01; flux.precision(prec) at begin/end of operator<< +// 13-09-01: suppression of the data member fIndexInTable +// 14-09-01: fCountUse: nb of materials which use this element + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4Element.hh" #include "g4std/iomanip" G4ElementTable G4Element::theElementTable; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Constructor to Generate an element from scratch @@ -83,13 +85,13 @@ G4Element::G4Element(const G4String& name, const G4String& symbol, ComputeDerivedQuantities(); - // Store in table and set the index - theElementTable.insert(this); - fIndexInTable = theElementTable.index(this); - + // Store in ElementTable + theElementTable.push_back(this); + + fCountUse = 0; //nb of materials which use this element } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Constructor to Generate element from a List of 'nIsotopes' isotopes, added // via AddIsotope @@ -103,22 +105,24 @@ G4Element::G4Element(const G4String& name, const G4String& symbol, G4int nIsotop fNumberOfIsotopes = 0; - theIsotopeVector = new G4IsotopeVector(n); + theIsotopeVector = new G4IsotopeVector(n,0); fRelativeAbundanceVector = new G4double[nIsotopes]; + + fCountUse = 0; //nb of materials which use this element } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Add an isotope to the element void G4Element::AddIsotope(G4Isotope* isotope, G4double abundance) { - if (theIsotopeVector == NULL) + if (theIsotopeVector == 0) G4Exception ("ERROR from G4Element::AddIsotope!" " Trying to add an Isotope before contructing the element."); // filling ... - if ( fNumberOfIsotopes < theIsotopeVector->length() ) { + if ( fNumberOfIsotopes < theIsotopeVector->size() ) { // check same Z if (fNumberOfIsotopes==0) fZeff = G4double(isotope->GetZ()); else if (G4double(isotope->GetZ()) != fZeff) @@ -126,21 +130,22 @@ void G4Element::AddIsotope(G4Isotope* isotope, G4double abundance) " Try to add isotopes with different Z"); //Z ok fRelativeAbundanceVector[fNumberOfIsotopes] = abundance; - (*theIsotopeVector)(fNumberOfIsotopes) = isotope; + (*theIsotopeVector)[fNumberOfIsotopes] = isotope; ++fNumberOfIsotopes; + isotope->increaseCountUse(); } else G4Exception ("ERROR from G4Element::AddIsotope!" " Attempt to add more than the declared number of isotopes."); // filled. - if ( fNumberOfIsotopes == theIsotopeVector->length() ) { + if ( fNumberOfIsotopes == theIsotopeVector->size() ) { // Compute Neff, Aeff G4double wtSum=0.0; fNeff = fAeff = 0.0; for (size_t i=0;iGetN(); - fAeff += fRelativeAbundanceVector[i]*(*theIsotopeVector)(i)->GetA(); + fNeff += fRelativeAbundanceVector[i]*(*theIsotopeVector)[i]->GetN(); + fAeff += fRelativeAbundanceVector[i]*(*theIsotopeVector)[i]->GetA(); wtSum += fRelativeAbundanceVector[i]; } fNeff /= wtSum; @@ -153,33 +158,46 @@ void G4Element::AddIsotope(G4Isotope* isotope, G4double abundance) ComputeDerivedQuantities(); - // Store in table and set the index - theElementTable.insert(this); - fIndexInTable = theElementTable.index(this); - } + // Store in table + theElementTable.push_back(this); + } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Element::InitializePointers() { - theIsotopeVector = NULL; - fRelativeAbundanceVector = NULL; - fAtomicShells = NULL; - fIonisation = NULL; + theIsotopeVector = 0; + fRelativeAbundanceVector = 0; + fAtomicShells = 0; + fIonisation = 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4Element::~G4Element() { - if (theIsotopeVector) delete theIsotopeVector; + if (fCountUse != 0) + G4cout << "--> warning from ~G4Element(): the element " << fName + << " is still referenced by " << fCountUse << " G4Materials \n" + << G4endl; + + if (theIsotopeVector) + { for (size_t i=0; idecreaseCountUse(); + delete theIsotopeVector; + } if (fRelativeAbundanceVector) delete [] fRelativeAbundanceVector; if (fAtomicShells) delete [] fAtomicShells; if (fIonisation) delete fIonisation; + + //remove this element from theElementTable + G4ElementTable::iterator iter = theElementTable.begin(); + while ((iter != theElementTable.end())&&(*iter != this)) iter++; + if (iter != theElementTable.end()) theElementTable.erase(iter); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Element::ComputeDerivedQuantities() { @@ -194,7 +212,7 @@ void G4Element::ComputeDerivedQuantities() fIonisation = new G4IonisParamElm(fZeff); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Element::ComputeCoulombFactor() { @@ -209,7 +227,7 @@ void G4Element::ComputeCoulombFactor() fCoulomb = (k1*az4 + k2 + 1./(1.+az2))*az2 - (k3*az4 + k4)*az4; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Element::ComputeLradTsaiFactor() { @@ -230,7 +248,7 @@ void G4Element::ComputeLradTsaiFactor() fRadTsai = 4*alpha_rcl2*fZeff*(fZeff*(Lrad-fCoulomb) + Lprad); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4Element::GetAtomicShell(G4int i) const { @@ -239,7 +257,36 @@ G4double G4Element::GetAtomicShell(G4int i) const return fAtomicShells[i]; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +const G4ElementTable* G4Element::GetElementTable() +{ + return &theElementTable; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +size_t G4Element::GetNumberOfElements() +{ + return theElementTable.size(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4Element* G4Element::GetElement(G4String elementName) +{ + // search the element by its name + for (size_t J=0 ; JGetName() == elementName) + return theElementTable[J]; + } + + // the element does not exist in the table + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4Element::G4Element(G4Element& right) { @@ -247,11 +294,10 @@ G4Element::G4Element(G4Element& right) *this = right; // Store this new element in table and set the index - theElementTable.insert(this); - fIndexInTable = theElementTable.index(this); + theElementTable.push_back(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... const G4Element& G4Element::operator=(const G4Element& right) { @@ -275,7 +321,7 @@ const G4Element& G4Element::operator=(const G4Element& right) fNumberOfIsotopes = right.fNumberOfIsotopes; if (fNumberOfIsotopes > 0) { - theIsotopeVector = new G4IsotopeVector(fNumberOfIsotopes); + theIsotopeVector = new G4IsotopeVector(fNumberOfIsotopes,0); fRelativeAbundanceVector = new G4double[fNumberOfIsotopes]; for (size_t i=0;ifName << G4std::setw(3) << element->fSymbol + << " Element: " << G4std::setw(8) << element->fName << G4std::setw(3) + << element->fSymbol << " Z = " << G4std::setw(4) << G4std::setprecision(1) << element->fZeff << " N = " << G4std::setw(5) << G4std::setprecision(1) << element->fNeff - << " A = " << G4std::setw(6) << G4std::setprecision(2) << (element->fAeff)/(g/mole) - << " g/mole"; + << " A = " << G4std::setw(6) << G4std::setprecision(2) + << (element->fAeff)/(g/mole) << " g/mole"; for (size_t i=0; ifNumberOfIsotopes; i++) flux @@ -328,7 +379,7 @@ G4std::ostream& operator<<(G4std::ostream& flux, G4Element* element) return flux; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4std::ostream& operator<<(G4std::ostream& flux, G4Element& element) { @@ -336,18 +387,18 @@ G4std::ostream& operator<<(G4std::ostream& flux, G4Element* element) return flux; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4std::ostream& operator<<(G4std::ostream& flux, G4ElementTable ElementTable) { //Dump info for all known elements - flux << "\n***** Table : Nb of elements = " << ElementTable.length() + flux << "\n***** Table : Nb of elements = " << ElementTable.size() << " *****\n" << G4endl; - for (size_t i=0; i etc.) correctly, P. Urban +// 14.09.01: fCountUse: nb of elements which use this isotope +// 13.09.01: suppression of the data member fIndexInTable +// 17.07.01: migration to STL. M. Verderi. +// 03.05.01: flux.precision(prec) at begin/end of operator<< +// 29.01.97: Forbidden to create Isotope with Z<1 or N etc.) correctly, P. Urban -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4Isotope.hh" #include "g4std/iomanip" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4IsotopeTable G4Isotope::theIsotopeTable; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + // Create an isotope +// G4Isotope::G4Isotope(const G4String& Name, G4int Z, G4int N, G4double A) -: fName(Name), fZ(Z), fN(N), fA(A) +: fName(Name), fZ(Z), fN(N), fA(A), fCountUse(0) { - if (Z<1) G4Exception - (" ERROR! It is not allowed to create an Isotope with Z < 1" ); + if (Z<1) G4Exception + (" ERROR! It is not allowed to create an Isotope with Z < 1" ); - if (N warning from ~G4Isotope(): the isotope " << fName + << " is still referenced by " << fCountUse << " G4Elements \n" + << G4endl; + + //remove this isotope from theIsotopeTable + G4IsotopeTable::iterator iter = theIsotopeTable.begin(); + while ((iter != theIsotopeTable.end())&&(*iter != this)) iter++; + if (iter != theIsotopeTable.end()) theIsotopeTable.erase(iter); +} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4Isotope::G4Isotope(G4Isotope& right) { *this = right; //insert this new isotope in table - theIsotopeTable.insert(this); - fIndexInTable = theIsotopeTable.index(this); + theIsotopeTable.push_back(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4Isotope & G4Isotope::operator=(const G4Isotope& right) { @@ -78,36 +93,40 @@ G4Isotope & G4Isotope::operator=(const G4Isotope& right) fZ = right.fZ; fN = right.fZ; fA = right.fA; - fIndexInTable = theIsotopeTable.index(this); } return *this; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4int G4Isotope::operator==(const G4Isotope &right) const { return (this == (G4Isotope *) &right); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4int G4Isotope::operator!=(const G4Isotope &right) const { return (this != (G4Isotope *) &right); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4std::ostream& operator<<(G4std::ostream& flux, G4Isotope* isotope) { +#ifdef G4USE_STD_NAMESPACE + G4std::ios::fmtflags mode = flux.flags(); + flux.setf(G4std::ios::fixed,G4std::ios::floatfield); +#else long mode = flux.setf(G4std::ios::fixed,G4std::ios::floatfield); +#endif long prec = flux.precision(3); flux << " Isotope: " << G4std::setw(5) << isotope->fName - << " Z = " << G4std::setw(2) << isotope->fZ - << " N = " << G4std::setw(3) << isotope->fN + << " Z = " << G4std::setw(2) << isotope->fZ + << " N = " << G4std::setw(3) << isotope->fN << " A = " << G4std::setw(6) << G4std::setprecision(2) << (isotope->fA)/(g/mole) << " g/mole"; @@ -116,7 +135,7 @@ G4std::ostream& operator<<(G4std::ostream& flux, G4Isotope* isotope) return flux; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4std::ostream& operator<<(G4std::ostream& flux, G4Isotope& isotope) { @@ -124,19 +143,46 @@ G4std::ostream& operator<<(G4std::ostream& flux, G4Isotope* isotope) return flux; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4std::ostream& operator<<(G4std::ostream& flux, G4IsotopeTable IsotopeTable) { //Dump info for all known isotopes flux - << "\n***** Table : Nb of isotopes = " << IsotopeTable.length() + << "\n***** Table : Nb of isotopes = " << IsotopeTable.size() << " *****\n" << G4endl; - for (size_t i=0; iGetName() == isotopeName) + return theIsotopeTable[J]; + } + + // the isotope does not exist in the table + return 0; +} diff --git a/source/materials/src/G4MPVEntry.cc b/source/materials/src/G4MPVEntry.cc index d25f7ea6ab..a20c7312fb 100644 --- a/source/materials/src/G4MPVEntry.cc +++ b/source/materials/src/G4MPVEntry.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MPVEntry.cc,v 1.5.4.1 2001/06/28 19:10:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MPVEntry.cc,v 1.6 2001/07/11 10:01:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/materials/src/G4Material.cc b/source/materials/src/G4Material.cc index 35258529a6..bf07028c6c 100644 --- a/source/materials/src/G4Material.cc +++ b/source/materials/src/G4Material.cc @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4Material.cc,v 1.10.2.1 2001/06/28 19:10:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Material.cc,v 1.18 2001/11/29 15:19:15 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // // 26-06-96, Code uses operators (+=, *=, ++, -> etc.) correctly, P. Urban // 10-07-96, new data members added by L.Urban @@ -50,8 +50,11 @@ // 12-03-01, G4bool fImplicitElement; // copy constructor and assignement operator revised (mma) // 03-05-01, flux.precision(prec) at begin/end of operator<< +// 17-07-01, migration to STL. M. Verderi. +// 14-09-01, Suppression of the data member fIndexInTable + // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4Material.hh" #include "G4UnitsTable.hh" @@ -60,7 +63,7 @@ G4MaterialTable G4Material::theMaterialTable; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Constructor to create a material from scratch @@ -69,85 +72,86 @@ G4Material::G4Material(const G4String& name, G4double z, G4State state, G4double temp, G4double pressure) :fName(name) { - InitializePointers(); + InitializePointers(); - if (density < universe_mean_density) - { G4cerr << "--- Warning from G4Material::G4Material()" + if (density < universe_mean_density) + { G4cerr << "--- Warning from G4Material::G4Material()" << " define a material with density=0 is not allowed. \n" << " The material " << name << " will be constructed with the" << " default minimal density: " << universe_mean_density/(g/cm3) << "g/cm3" << G4endl; - density = universe_mean_density; - } + density = universe_mean_density; + } - fDensity = density; - fState = state; - fTemp = temp; - fPressure = pressure; - fChemicalFormula = " "; + fDensity = density; + fState = state; + fTemp = temp; + fPressure = pressure; + fChemicalFormula = " "; - // Initialize theElementVector allocating one - // element corresponding to this material - maxNbComponents = fNumberOfComponents = fNumberOfElements = 1; - fImplicitElement = true; - theElementVector = new G4ElementVector(1); - theElementVector[0] = new G4Element(name, " ", z, a); - fMassFractionVector = new G4double[1]; - fMassFractionVector[0] = 1. ; + // Initialize theElementVector allocating one + // element corresponding to this material + maxNbComponents = fNumberOfComponents = fNumberOfElements = 1; + fImplicitElement = true; + theElementVector = new G4ElementVector(1,(G4Element*)0); + (*theElementVector)[0] = new G4Element(name, " ", z, a); + fMassFractionVector = new G4double[1]; + fMassFractionVector[0] = 1. ; + + (*theElementVector)[0] -> increaseCountUse(); + + if (fState == kStateUndefined) + { + if (fDensity > kGasThreshold) fState = kStateSolid; + else fState = kStateGas; + } - if (fState == kStateUndefined) - { - if (fDensity > kGasThreshold) fState = kStateSolid; - else fState = kStateGas; - } - - ComputeDerivedQuantities(); - - // Store in the table of Materials - theMaterialTable.insert(this); - fIndexInTable = theMaterialTable.index(this); + ComputeDerivedQuantities(); + + // Store in the table of Materials + theMaterialTable.push_back(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Constructor to create a material from a List of constituents // (elements and/or materials) added with AddElement or AddMaterial -G4Material::G4Material(const G4String& name, G4double density, G4int nComponents, +G4Material::G4Material(const G4String& name, G4double density, + G4int nComponents, G4State state, G4double temp, G4double pressure) :fName(name) { - - InitializePointers(); + InitializePointers(); - if (density < universe_mean_density) - {G4cerr << "--- Warning from G4Material::G4Material()" + if (density < universe_mean_density) + {G4cerr << "--- Warning from G4Material::G4Material()" << " define a material with density=0 is not allowed. \n" << " The material " << name << " will be constructed with the" << " default minimal density: " << universe_mean_density/(g/cm3) << "g/cm3" << G4endl; - density = universe_mean_density; - } + density = universe_mean_density; + } - fDensity = density; - fState = state; - fTemp = temp; - fPressure = pressure; - fChemicalFormula = " "; + fDensity = density; + fState = state; + fTemp = temp; + fPressure = pressure; + fChemicalFormula = " "; - maxNbComponents = nComponents; - fNumberOfComponents = fNumberOfElements = 0; - fImplicitElement = false; - theElementVector = new G4ElementVector(maxNbComponents); + maxNbComponents = nComponents; + fNumberOfComponents = fNumberOfElements = 0; + fImplicitElement = false; + theElementVector = new G4ElementVector(maxNbComponents,(G4Element*)0); - if (fState == kStateUndefined) - { - if (fDensity > kGasThreshold) fState = kStateSolid; - else fState = kStateGas; - } + if (fState == kStateUndefined) + { + if (fDensity > kGasThreshold) fState = kStateSolid; + else fState = kStateGas; + } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Constructor to create a material with chemical formula from scratch @@ -156,45 +160,51 @@ G4Material::G4Material(const G4String& name, const G4String& chFormula, G4State state, G4double temp, G4double pressure) :fName(name),fChemicalFormula(chFormula) { - InitializePointers(); + G4cout + << "---> warning from G4Material constructor with chemical formula." + " This constructor is going to be depreciated.\n" + " Use material->SetChemicalFormula(const G4String&)" << G4endl; + + InitializePointers(); - if (density < universe_mean_density) - { G4cerr << "--- Warning from G4Material::G4Material()" + if (density < universe_mean_density) + { G4cerr << "--- Warning from G4Material::G4Material()" << " define a material with density=0 is not allowed. \n" << " The material " << name << " will be constructed with the" << " default minimal density: " << universe_mean_density/(g/cm3) << "g/cm3" << G4endl; - density = universe_mean_density; - } + density = universe_mean_density; + } - fDensity = density; - fState = state; - fTemp = temp; - fPressure = pressure; + fDensity = density; + fState = state; + fTemp = temp; + fPressure = pressure; - // Initialize theElementVector allocating one - // element corresponding to this material - maxNbComponents = fNumberOfComponents = fNumberOfElements = 1; - fImplicitElement = true; - theElementVector = new G4ElementVector(1); - theElementVector[0] = new G4Element(name, " ", z, a); - fMassFractionVector = new G4double[1]; - fMassFractionVector[0] = 1. ; + // Initialize theElementVector allocating one + // element corresponding to this material + maxNbComponents = fNumberOfComponents = fNumberOfElements = 1; + fImplicitElement = true; + theElementVector = new G4ElementVector(1,(G4Element*)0); + (*theElementVector)[0] = new G4Element(name, " ", z, a); + fMassFractionVector = new G4double[1]; + fMassFractionVector[0] = 1. ; + + (*theElementVector)[0] -> increaseCountUse(); + + if (fState == kStateUndefined) + { + if (fDensity > kGasThreshold) fState = kStateSolid; + else fState = kStateGas; + } - if (fState == kStateUndefined) - { - if (fDensity > kGasThreshold) fState = kStateSolid; - else fState = kStateGas; - } + ComputeDerivedQuantities(); - ComputeDerivedQuantities(); - - // Store in the table of Materials - theMaterialTable.insert(this); - fIndexInTable = theMaterialTable.index(this); + // Store in the table of Materials + theMaterialTable.push_back(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Constructor to create a material with chemical formula from a List // of constituents (elements and/or materials) added with AddElement @@ -205,198 +215,208 @@ G4Material::G4Material(const G4String& name, const G4String& chFormula, G4State state, G4double temp, G4double pressure) :fName(name),fChemicalFormula(chFormula) { - - InitializePointers(); + G4cout + << "---> warning from G4Material constructor with chemical formula." + " This constructor is going to be depreciated.\n" + " Use material->SetChemicalFormula(const G4String&)" << G4endl; + + InitializePointers(); - if (density < universe_mean_density) - {G4cerr << "--- Warning from G4Material::G4Material()" + if (density < universe_mean_density) + {G4cerr << "--- Warning from G4Material::G4Material()" << " define a material with density=0 is not allowed. \n" << " The material " << name << " will be constructed with the" << " default minimal density: " << universe_mean_density/(g/cm3) << "g/cm3" << G4endl; - density = universe_mean_density; - } + density = universe_mean_density; + } - fDensity = density; - fState = state; - fTemp = temp; - fPressure = pressure; + fDensity = density; + fState = state; + fTemp = temp; + fPressure = pressure; - maxNbComponents = nComponents; - fNumberOfComponents = fNumberOfElements = 0; - fImplicitElement = false; - theElementVector = new G4ElementVector(maxNbComponents); + maxNbComponents = nComponents; + fNumberOfComponents = fNumberOfElements = 0; + fImplicitElement = false; + theElementVector = new G4ElementVector(maxNbComponents,(G4Element*)0); - if (fState == kStateUndefined) - { - if (fDensity > kGasThreshold) fState = kStateSolid; - else fState = kStateGas; - } + if (fState == kStateUndefined) + { + if (fDensity > kGasThreshold) fState = kStateSolid; + else fState = kStateGas; + } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // AddElement -- composition by atom count void G4Material::AddElement(G4Element* element, G4int nAtoms) { - // initialization - if ( fNumberOfElements == 0 ) { - fAtomsVector = new G4int [maxNbComponents]; - fMassFractionVector = new G4double[maxNbComponents]; - } + // initialization + if ( fNumberOfElements == 0 ) { + fAtomsVector = new G4int [maxNbComponents]; + fMassFractionVector = new G4double[maxNbComponents]; + } - // filling ... - if ( G4int(fNumberOfElements) < maxNbComponents ) { - (*theElementVector)[fNumberOfElements] = element; - fAtomsVector [fNumberOfElements] = nAtoms; - fNumberOfComponents = ++fNumberOfElements; - } - else - G4Exception - ("ERROR!!! - Attempt to add more than the declared number of elements."); + // filling ... + if ( G4int(fNumberOfElements) < maxNbComponents ) { + (*theElementVector)[fNumberOfElements] = element; + fAtomsVector [fNumberOfElements] = nAtoms; + fNumberOfComponents = ++fNumberOfElements; + element->increaseCountUse(); + } + else + G4Exception + ("ERROR!!! - Attempt to add more than the declared number of elements."); - // filled. - if ( G4int(fNumberOfElements) == maxNbComponents ) { - // compute proportion by mass - size_t i=0; - G4double Zmol(0.), Amol(0.); - for (i=0;iGetZ(); - Amol += fAtomsVector[i]*(*theElementVector)[i]->GetA(); - } - for (i=0;iGetA()/Amol; - } - - ComputeDerivedQuantities(); - - // Store in the static Table of Materials - theMaterialTable.insert(this); - fIndexInTable = theMaterialTable.index(this); + // filled. + if ( G4int(fNumberOfElements) == maxNbComponents ) { + // compute proportion by mass + size_t i=0; + G4double Zmol(0.), Amol(0.); + for (i=0;iGetZ(); + Amol += fAtomsVector[i]*(*theElementVector)[i]->GetA(); } + for (i=0;iGetA()/Amol; + } + + ComputeDerivedQuantities(); + + // Store in the static Table of Materials + theMaterialTable.push_back(this); + } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // AddElement -- composition by fraction of mass void G4Material::AddElement(G4Element* element, G4double fraction) { - // if fAtomsVector is non-NULL, complain. Apples and oranges. $$$ - if (fAtomsVector) { - G4cerr << "This material is already being defined via elements by" + // if fAtomsVector is non-NULL, complain. Apples and oranges. $$$ + if (fAtomsVector) { + G4cerr << "This material is already being defined via elements by" << "atoms." << G4endl; - G4Exception ("You are mixing apples and oranges ..."); - } + G4Exception ("You are mixing apples and oranges ..."); + } - // initialization - if (fNumberOfComponents == 0) { - fMassFractionVector = new G4double[100]; - } + // initialization + if (fNumberOfComponents == 0) { + fMassFractionVector = new G4double[100]; + } - // filling ... - if (G4int(fNumberOfComponents) < maxNbComponents) { - size_t el = 0; - while ((el=theElementVector->length()) theElementVector->resize(el+1); - (*theElementVector)[el] = element; - fMassFractionVector[el] = fraction; - fNumberOfElements ++; - } - fNumberOfComponents++; - } - else - G4Exception - ("ERROR!!! - Attempt to add more than the declared number of components."); - - // filled. - if (G4int(fNumberOfComponents) == maxNbComponents) { - // check sum of weights -- OK? - G4double wtSum(0.0); - for (size_t i=0;i perThousand) { - G4cerr << "WARNING !! - Fractional masses do not sum to 1 :the Delta is > 0.001" - << "( the weights are NOT renormalized; the results may be wrong)" + // filling ... + if (G4int(fNumberOfComponents) < maxNbComponents) { + size_t el = 0; + while ((el=theElementVector->size()) theElementVector->resize(el+1); + (*theElementVector)[el] = element; + fMassFractionVector[el] = fraction; + fNumberOfElements ++; + element->increaseCountUse(); + } + fNumberOfComponents++; + } + else + G4Exception + ("ERROR!!! - Attempt to add more than the declared number of components."); + + // filled. + if (G4int(fNumberOfComponents) == maxNbComponents) { + // check sum of weights -- OK? + G4double wtSum(0.0); + for (size_t i=0;i perThousand) { + G4cerr << "WARNING !! - Fractional masses do not sum to 1 : " + "the Delta is > 0.001" + "(the weights are NOT renormalized; the results may be wrong)" << G4endl; - } + } + + ComputeDerivedQuantities(); - ComputeDerivedQuantities(); - - // Store in the static Table of Materials - theMaterialTable.insert(this); - fIndexInTable = theMaterialTable.index(this); - } + // Store in the static Table of Materials + theMaterialTable.push_back(this); + } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // AddMaterial -- composition by fraction of mass void G4Material::AddMaterial(G4Material* material, G4double fraction) { - // if fAtomsVector is non-NULL, complain. Apples and oranges. $$$ - if (fAtomsVector) { - G4cerr << "This material is already being defined via elements by" - << "atoms." << G4endl; - G4Exception ("You are mixing apples and oranges ..."); - } - // initialization - if (fNumberOfComponents == 0) { - fMassFractionVector = new G4double[100]; - } + // if fAtomsVector is non-NULL, complain. Apples and oranges. $$$ + if (fAtomsVector) { + G4cerr << "This material is already being defined via elements by" + "atoms." << G4endl; + G4Exception ("You are mixing apples and oranges ..."); + } + + // initialization + if (fNumberOfComponents == 0) { + fMassFractionVector = new G4double[100]; + } - // filling ... - if (G4int(fNumberOfComponents) < maxNbComponents) { - for (size_t elm=0; elm < material->GetNumberOfElements(); elm++) - { G4Element* element = (*(material->GetElementVector()))[elm]; - size_t el = 0; - while ((elGetFractionVector())[elm]; - else { - if(el>=theElementVector->length()) theElementVector->resize(el+1); - (*theElementVector)[el] = element; - fMassFractionVector[el] = fraction*(material->GetFractionVector())[elm]; - fNumberOfElements ++; - } - } - fNumberOfComponents++; - } - else - G4Exception - ("ERROR!!! - Attempt to add more than the declared number of components."); - - // filled. - if (G4int(fNumberOfComponents) == maxNbComponents) { - // check sum of weights -- OK? - G4double wtSum(0.0); - for (size_t i=0;i perThousand) { - G4cerr << "WARNING !! - Fractional masses do not sum to 1 :the Delta is > 0.001" - << "( the weights are NOT renormalized; the results may be wrong)" + // filling ... + if (G4int(fNumberOfComponents) < maxNbComponents) { + for (size_t elm=0; elm < material->GetNumberOfElements(); elm++) + { + G4Element* element = (*(material->GetElementVector()))[elm]; + size_t el = 0; + while ((elGetFractionVector())[elm]; + else { + if (el >= theElementVector->size()) theElementVector->resize(el+1); + (*theElementVector)[el] = element; + fMassFractionVector[el] = fraction + *(material->GetFractionVector())[elm]; + fNumberOfElements ++; + element->increaseCountUse(); + } + } + fNumberOfComponents++; + } + else + G4Exception + ("ERROR!!! - Attempt to add more than the declared number of components."); + + // filled. + if (G4int(fNumberOfComponents) == maxNbComponents) { + // check sum of weights -- OK? + G4double wtSum(0.0); + for (size_t i=0;i perThousand) { + G4cerr << "WARNING !! - Fractional masses do not sum to 1 : " + "the Delta is > 0.001" + "(the weights are NOT renormalized; the results may be wrong)" << G4endl; - } + } + + ComputeDerivedQuantities(); - ComputeDerivedQuantities(); - - // Store in the static Table of Materials - theMaterialTable.insert(this); - fIndexInTable = theMaterialTable.index(this); - } + // Store in the static Table of Materials + theMaterialTable.push_back(this); + } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Material::ComputeDerivedQuantities() { // Header routine to compute various properties of material. // - // Atoms density vector, Electrons density + // Number of atoms per volume (per element), total nb of electrons per volume G4double Zi, Ai; TotNbOfAtomsPerVolume = 0.; if (VecNbOfAtomsPerVolume) delete [] VecNbOfAtomsPerVolume; @@ -408,44 +428,46 @@ void G4Material::ComputeDerivedQuantities() VecNbOfAtomsPerVolume[i] = Avogadro*fDensity*fMassFractionVector[i]/Ai; TotNbOfAtomsPerVolume += VecNbOfAtomsPerVolume[i]; TotNbOfElectPerVolume += VecNbOfAtomsPerVolume[i]*Zi; - } + } - //for gas, check coherence of the state conditions - if (fState == kStateGas) { - G4double ratio = TotNbOfAtomsPerVolume*k_Boltzmann*fTemp/fPressure; - if ((ratio<0.1)||(ratio>10.)) { - G4cerr << "---warning from G4Material-- The state conditions of the gas: " + //for gas, check coherence of the state conditions + if (fState == kStateGas) { + G4double ratio = TotNbOfAtomsPerVolume*k_Boltzmann*fTemp/fPressure; + if ((ratio<0.1)||(ratio>10.)) { + G4cerr << "--warning from G4Material-- The state conditions of the gas: " << fName << " are not consistent." << "\n density = " << fDensity/(mg/cm3) << " mg/cm3" << "\t pressure = " << fPressure/atmosphere << " atmosphere" << "\t temperature = " << fTemp/kelvin << " kelvin" << "\n rho*(T/P) would be of the order of: " - << (fDensity/(TotNbOfAtomsPerVolume*k_Boltzmann))/((mg/cm3)*(kelvin/atmosphere)) - << " (mg/cm3)*(kelvin/atmosphere). The energy loss calculation maybe be affected \n"; - } - } - - ComputeRadiationLength(); - ComputeNuclearInterLength(); + << (fDensity/(TotNbOfAtomsPerVolume*k_Boltzmann)) + /((mg/cm3)*(kelvin/atmosphere)) + << " (mg/cm3)*(kelvin/atmosphere)." + " The energy loss calculation maybe be affected \n"; + } + } + + ComputeRadiationLength(); + ComputeNuclearInterLength(); - if (fIonisation) delete fIonisation; - fIonisation = new G4IonisParamMat(this); - if (fSandiaTable) delete fSandiaTable; - fSandiaTable = new G4SandiaTable(this); + if (fIonisation) delete fIonisation; + fIonisation = new G4IonisParamMat(this); + if (fSandiaTable) delete fSandiaTable; + fSandiaTable = new G4SandiaTable(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Material::ComputeRadiationLength() { G4double radinv = 0.0 ; for (size_t i=0;iGetfRadTsai()); + radinv += VecNbOfAtomsPerVolume[i]*((*theElementVector)[i]->GetfRadTsai()); } fRadlen = (radinv <= 0.0 ? DBL_MAX : 1./radinv); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Material::ComputeNuclearInterLength() { @@ -453,40 +475,56 @@ void G4Material::ComputeNuclearInterLength() G4double NILinv = 0.0; for (size_t i=0;iGetN()),2./3.); + VecNbOfAtomsPerVolume[i]*pow(((*theElementVector)[i]->GetN()),0.6666667); } NILinv *= amu/lambda0; fNuclInterLen = (NILinv <= 0.0 ? DBL_MAX : 1./NILinv); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4Material::InitializePointers() { - theElementVector = NULL; - fMassFractionVector = NULL; - fAtomsVector = NULL; - fMaterialPropertiesTable = NULL; + theElementVector = 0; + fMassFractionVector = 0; + fAtomsVector = 0; + fMaterialPropertiesTable = 0; - VecNbOfAtomsPerVolume = NULL; - fIonisation = NULL; - fSandiaTable = NULL; + VecNbOfAtomsPerVolume = 0; + fIonisation = 0; + fSandiaTable = 0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4Material::~G4Material() +const G4MaterialTable* G4Material::GetMaterialTable() { - if (fImplicitElement) delete ((*theElementVector)[0]); - if (theElementVector) delete theElementVector; - if (fMassFractionVector) delete [] fMassFractionVector; - if (fAtomsVector) delete [] fAtomsVector; - if (VecNbOfAtomsPerVolume) delete [] VecNbOfAtomsPerVolume; - if (fIonisation) delete fIonisation; - if (fSandiaTable) delete fSandiaTable; + return &theMaterialTable; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +size_t G4Material::GetNumberOfMaterials() +{ + return theMaterialTable.size(); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4Material* G4Material::GetMaterial(G4String materialName) +{ + // search the material by its name + for (size_t J=0 ; JGetName() == materialName) + return theMaterialTable[J]; + } + + // the material does not exist in the table + return 0; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4Material::G4Material(const G4Material& right) { @@ -494,11 +532,31 @@ G4Material::G4Material(const G4Material& right) *this = right; // Store this new material in the table of Materials - theMaterialTable.insert(this); - fIndexInTable = theMaterialTable.index(this); + theMaterialTable.push_back(this); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4Material::~G4Material() +{ + for (size_t i=0; idecreaseCountUse(); + + if (fImplicitElement) delete ((*theElementVector)[0]); + if (theElementVector) delete theElementVector; + if (fMassFractionVector) delete [] fMassFractionVector; + if (fAtomsVector) delete [] fAtomsVector; + if (VecNbOfAtomsPerVolume) delete [] VecNbOfAtomsPerVolume; + if (fIonisation) delete fIonisation; + if (fSandiaTable) delete fSandiaTable; + + //remove this material from theMaterialTable + G4MaterialTable::iterator iter = theMaterialTable.begin(); + while ((iter != theMaterialTable.end())&&(*iter != this)) iter++; + if (iter != theMaterialTable.end()) theMaterialTable.erase(iter); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... const G4Material& G4Material::operator=(const G4Material& right) { @@ -524,12 +582,12 @@ const G4Material& G4Material::operator=(const G4Material& right) if (fImplicitElement) { G4double z = (*right.theElementVector)[0]->GetZ(); G4double a = (*right.theElementVector)[0]->GetA(); - theElementVector = new G4ElementVector(1); - theElementVector[0] = new G4Element(fName," ",z,a); - fMassFractionVector = new G4double[1]; - fMassFractionVector[0] = 1.; + theElementVector = new G4ElementVector(1,(G4Element*)0); + (*theElementVector)[0] = new G4Element(fName," ",z,a); + fMassFractionVector = new G4double[1]; + fMassFractionVector[0] = 1.; } else { - theElementVector = new G4ElementVector(fNumberOfElements); + theElementVector = new G4ElementVector(fNumberOfElements,0); fMassFractionVector = new G4double[fNumberOfElements]; for (size_t i=0; iAddElement(aPhotonMomentum, aPropertyValue); } else { @@ -179,7 +179,7 @@ void G4MaterialPropertiesTable::RemoveEntry(const char *key, targetVector->RemoveElement(aPhotonMomentum); } else { - G4Exception("G4MaterialPropertiesTable::AddEntry ==> " + G4Exception("G4MaterialPropertiesTable::RemoveEntry ==> " "Material Property Vector not found."); } } @@ -187,7 +187,12 @@ void G4MaterialPropertiesTable::DumpTable() { MPTiterator i; for (i = MPT.begin(); i != MPT.end(); ++i) { - G4cout << *(*i).first << G4endl; - (*i).second->DumpVector(); + G4cout << (*i).first << G4endl; + if ( (*i).second != 0 ) { + (*i).second->DumpVector(); + } + else { + G4cout << "NULL Material Property Vector Pointer." << G4endl; + } } } diff --git a/source/materials/src/G4MaterialPropertyVector.cc b/source/materials/src/G4MaterialPropertyVector.cc index 9bd5f0e74c..05d55767cd 100644 --- a/source/materials/src/G4MaterialPropertyVector.cc +++ b/source/materials/src/G4MaterialPropertyVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MaterialPropertyVector.cc,v 1.5.4.1 2001/06/28 19:10:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MaterialPropertyVector.cc,v 1.11 2001/11/28 15:42:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// @@ -73,7 +73,7 @@ G4MaterialPropertyVector::operator =(const G4MaterialPropertyVector& right) // clear the vector of current contents - MPV.clearAndDestroy(); + MPV.clear(); // create an actual copy (instead of the shallow copy that the // assignment operator defaults to for G4RWTPtrSortedVector) @@ -83,7 +83,7 @@ G4MaterialPropertyVector::operator =(const G4MaterialPropertyVector& right) for (G4int i = 0 ; i < right.NumEntries; i++) { G4MPVEntry *newElement = new G4MPVEntry(right.GetEntry(i)); - MPV.insert(newElement); + MPV.push_back(newElement); NumEntries++; } @@ -120,7 +120,7 @@ G4MaterialPropertyVector::G4MaterialPropertyVector for (G4int i = 0 ; i < right.NumEntries; i++) { G4MPVEntry *newElement = new G4MPVEntry(right.GetEntry(i)); - MPV.insert(newElement); + MPV.push_back(newElement); NumEntries++; } } @@ -131,7 +131,7 @@ G4MaterialPropertyVector::G4MaterialPropertyVector G4MaterialPropertyVector::~G4MaterialPropertyVector() { - MPV.clearAndDestroy(); + MPV.clear(); } //////////// @@ -143,24 +143,32 @@ void G4MaterialPropertyVector::AddElement(G4double aPhotonMomentum, G4MPVEntry *newElement; newElement = new G4MPVEntry(aPhotonMomentum, aPropertyValue); - MPV.insert(newElement); + MPV.push_back(newElement); NumEntries++; } void G4MaterialPropertyVector::RemoveElement(G4double aPhotonMomentum) { G4MPVEntry *newElement; - G4MPVEntry *success; + G4MPVEntry *success=0; newElement = new G4MPVEntry(aPhotonMomentum, DBL_MAX); - success = MPV.remove(newElement); - if(success == NULL) + G4std::vector::iterator i; + for (i = MPV.begin(); i != MPV.end(); i++) + if (**i == *newElement) {success = *i; break;} + // success = MPV.remove(newElement); + + if(success == 0) { G4Exception("G4MaterialPropertyVector::RemoveElement==>" "element not found"); return; } + else + { + MPV.erase(i); // remove done here. + } NumEntries--; } @@ -176,10 +184,10 @@ G4MaterialPropertyVector::GetProperty(G4double aPhotonMomentum) const // Establish table range ///////////////////////// - G4double PMmin = MPV.first()->GetPhotonMomentum(); - G4double minProp = MPV.first()->GetProperty(); - G4double PMmax = MPV.last()->GetPhotonMomentum(); - G4double maxProp = MPV.last()->GetProperty(); + G4double PMmin = MPV.front()->GetPhotonMomentum(); + G4double minProp = MPV.front()->GetProperty(); + G4double PMmax = MPV.back() ->GetPhotonMomentum(); + G4double maxProp = MPV.back() ->GetProperty(); /////////////////////////////////////////// // Does value fall outside range of table? @@ -203,8 +211,12 @@ G4MaterialPropertyVector::GetProperty(G4double aPhotonMomentum) const target = new G4MPVEntry(aPhotonMomentum, 0.0); - temp = MPV.find(target); - if (temp != NULL) { + temp = 0; + //temp = MPV.find(target); + G4std::vector::const_iterator i; + for (i = MPV.begin(); i != MPV.end(); i++) + if (**i == *target) {temp = *i; break;} + if (temp != 0) { //////////////////////// // Return actual value @@ -281,10 +293,10 @@ G4MaterialPropertyVector::GetPhotonMomentum(G4double aProperty) const // Establish Table range ////////////////////////// - G4double PropMin = MPV.first()->GetProperty(); - G4double PMmin= MPV.first()->GetPhotonMomentum(); - G4double PropMax = MPV.last()->GetProperty(); - G4double PMmax= MPV.last()->GetPhotonMomentum(); + G4double PropMin = MPV.front()->GetProperty(); + G4double PMmin = MPV.front()->GetPhotonMomentum(); + G4double PropMax = MPV.back() ->GetProperty(); + G4double PMmax = MPV.back() ->GetPhotonMomentum(); /////////////////////////////////////////// // Does value fall outside range of table? @@ -310,7 +322,7 @@ G4MaterialPropertyVector::GetPhotonMomentum(G4double aProperty) const ////////////////////////////// left = 0; - right = MPV.entries(); + right = MPV.size(); // was .entries() // find values in bins on either side of aProperty @@ -355,7 +367,7 @@ void G4MaterialPropertyVector::ResetIterator() void G4MaterialPropertyVector::DumpVector() { - if (MPV.isEmpty()) { + if (MPV.empty()) { G4cerr << "nothing to dump" << G4endl; G4Exception("G4MaterialPropertyVector::DumpVector ==>" "Nothing to dump! Vector is empty"); @@ -364,9 +376,8 @@ void G4MaterialPropertyVector::DumpVector() for (G4int i = 0; i < NumEntries; i++) { G4cout << "MPV["<< i << "]: "; MPV[i]->DumpEntry(); - G4cout << i << NumEntries << G4endl; } - G4cout << " Done DumpVector " << G4endl; + G4cout << " Done DumpVector of " << NumEntries << " entries " << G4endl; } @@ -383,7 +394,7 @@ G4MaterialPropertyVector::GetAdjacentBins(G4double aPhotonMomentum, G4int mid; *left = 0; - *right = (MPV.entries() - 1); + *right = (MPV.size() - 1); // was .entries() // find values in bins on either side of aPhotonMomentum diff --git a/source/materials/src/G4OpticalSurface.cc b/source/materials/src/G4OpticalSurface.cc index fbae56491d..afb668de2d 100644 --- a/source/materials/src/G4OpticalSurface.cc +++ b/source/materials/src/G4OpticalSurface.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpticalSurface.cc,v 1.5.2.1 2001/06/28 19:10:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpticalSurface.cc,v 1.7 2001/10/17 07:59:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// @@ -79,7 +79,7 @@ G4OpticalSurface::G4OpticalSurface(const G4String& name, theModel(model), theFinish(finish), theType(type), - theMaterialPropertiesTable(NULL) + theMaterialPropertiesTable(0) { if (model == glisur ){ polish = value; diff --git a/source/materials/src/G4SandiaTable.cc b/source/materials/src/G4SandiaTable.cc index 0692c5f234..d2c054b4d6 100644 --- a/source/materials/src/G4SandiaTable.cc +++ b/source/materials/src/G4SandiaTable.cc @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4SandiaTable.cc,v 1.11.2.1 2001/06/28 19:10:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SandiaTable.cc,v 1.14 2001/10/17 07:59:54 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo.... // +// 10.07.01 Migration to STL. M. Verderi. // 03.04.01 fnulcof returned if energy < emin // 22.02.01 GetsandiaCofForMaterial(energy) return 0 below lowest interval mma // 16.02.01 adapted for STL. mma @@ -98,7 +99,7 @@ void G4SandiaTable::ComputeMatSandiaMatrix() G4int MaxIntervals = 0; G4int elm; for (elm=0; elmGetZ(); + { Z[elm] = (int)(*ElementVector)[elm]->GetZ(); MaxIntervals += fNbOfIntervals[Z[elm]]; } @@ -110,10 +111,11 @@ void G4SandiaTable::ComputeMatSandiaMatrix() G4double IonizationPot; G4int interval1=0; for (elm=0; elm0 && Z<101 && interval>=0 && interval=0 && j<5); + + G4int row = fCumulInterval[Z-1] + interval; + if (j==0) return fSandiaTable[row][0]*keV; + G4double AoverAvo = Z*amu/fZtoAratio[Z]; + return AoverAvo*(fSandiaTable[row][j]*cm2*pow(keV,G4double(j))/g); +} + +/////////////////////////////////////////////////////////////////////// +// +// GetSandiaCofPerAtom(Z, energy) +// + +G4double* +G4SandiaTable::GetSandiaCofPerAtom(G4int Z, G4double energy) +{ + assert (Z > 0); + + G4double Emin = fSandiaTable[fCumulInterval[Z-1]][0]*keV; + G4double Iopot = fIonizationPotentials[Z]*eV; + if (Iopot > Emin) Emin = Iopot; + + G4int interval = fNbOfIntervals[Z] - 1; + G4int row = fCumulInterval[Z-1] + interval; + while ((interval>0) && (energy= Emin) + { + G4double AoverAvo = Z*amu/fZtoAratio[Z]; + + fSandiaCofPerAtom[0]=AoverAvo*(fSandiaTable[row][1]*cm2*keV/g); + fSandiaCofPerAtom[1]=AoverAvo*(fSandiaTable[row][2]*cm2*keV*keV/g); + fSandiaCofPerAtom[2]=AoverAvo*(fSandiaTable[row][3]*cm2*keV*keV*keV/g); + fSandiaCofPerAtom[3]=AoverAvo*(fSandiaTable[row][4]*cm2*keV*keV*keV*keV/g); + } + else + fSandiaCofPerAtom[0] = fSandiaCofPerAtom[1] = fSandiaCofPerAtom[2] = + fSandiaCofPerAtom[3] = 0.; + + return fSandiaCofPerAtom; + +} + +/////////////////////////////////////////////////////////////////////// +// +// GetIonizationPot +// + +G4double +G4SandiaTable::GetIonizationPot(G4int Z) +{ + return fIonizationPotentials[Z]*eV; +} + +/////////////////////////////////////////////////////////////////////// +// +// GetZtoA +// + +G4double +G4SandiaTable::GetZtoA(G4int Z) +{ + return fZtoAratio[Z]; +} + // G4SandiaTable class -- end of implementation file // //////////////////////////////////////////////////////////////////////////// diff --git a/source/parameterisations/History b/source/parameterisations/History index ea94cd04d7..9a66f9c34e 100644 --- a/source/parameterisations/History +++ b/source/parameterisations/History @@ -1,4 +1,4 @@ -$Id: History,v 1.1 2000/11/14 16:15:01 gcosmo Exp $ +$Id: History,v 1.4 2001/11/08 13:53:51 mverderi Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,25 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Nov 8th, 2001 M.Verderi - (parmodels-V03-02-02) +----------------------- +- Minor change in G4VClusterModel.cc + +Nov 8th, 2001 G.Cosmo - (parmodels-V03-02-01) +--------------------- +- Introduced changes in G4VClusterModel[.hh.cc] for reference-counted + touchables (R.Chytracek). + +Sep 18th, 2001 V.Grichine - (parmodels-V03-02-00) +------------------------- +- Added new classes describing X-ray transition radiation generation + inside radiators (i.e. just along incident particle track): + G4FoamXTRdEdx[.hh.cc], G4GamDistrXTRdEdx[.hh.cc], G4IrregularXTRdEdx[.hh.cc], + G4PlateIrrGasXTRdEdx[.hh.cc], G4RegularXTRdEdx[.hh.cc], G4VXTRdEdx[.hh.cc] + and G4VXrayTRadModel[.hh.cc] +- Modifications in existing classes, introducing some new parameters, + class fields and methods. + Nov 14th, 2000 G.Cosmo - (parmodels-V02-00-00) ---------------------- - Created. diff --git a/source/parameterisations/include/G4FoamXTRdEdx.hh b/source/parameterisations/include/G4FoamXTRdEdx.hh new file mode 100644 index 0000000000..f70f29109c --- /dev/null +++ b/source/parameterisations/include/G4FoamXTRdEdx.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4FoamXTRdEdx.hh,v 1.2 2001/07/11 10:01:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +/////////////////////////////////////////////////////////////////////////// +// +// Rough model describing a radiator of X-ray transition radiation. +// Thicknesses of plates and gas gaps are exponentially distributed. +// We suppose that: +// formation zone ~ mean thickness << absorption length +// for each material and in the range 1-100 keV. This allows us to simplify +// interference effects in radiator stack (GetStackFactor method). +// +// +// History: +// 27.02.01 V. Grichine, first version +// + + +#ifndef G4FoamXTRdEdx_h +#define G4FoamXTRdEdx_h 1 + +#include "G4VFastSimulationModel.hh" +// #include "G4ForwardXrayTR.hh" + +#include "G4VXTRdEdx.hh" + +class G4FoamXTRdEdx : public G4VXTRdEdx +{ +public: + + G4FoamXTRdEdx (G4LogicalVolume *anEnvelope,G4double,G4double); + ~G4FoamXTRdEdx (); + + // Pure virtual function from base class + + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); +}; + +#endif diff --git a/source/parameterisations/include/G4FoamXrayTRmodel.hh b/source/parameterisations/include/G4FoamXrayTRmodel.hh index 9f55428267..d14ee71413 100644 --- a/source/parameterisations/include/G4FoamXrayTRmodel.hh +++ b/source/parameterisations/include/G4FoamXrayTRmodel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FoamXrayTRmodel.hh,v 1.1.4.1 2001/06/28 19:10:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FoamXrayTRmodel.hh,v 1.3 2001/07/11 10:01:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -46,9 +46,9 @@ #include "G4VFastSimulationModel.hh" // #include "G4ForwardXrayTR.hh" -#include "G4VXrayTRmodel.hh" +#include "G4VXrayTRadModel.hh" -class G4FoamXrayTRmodel : public G4VXrayTRmodel +class G4FoamXrayTRmodel : public G4VXrayTRadModel { public: diff --git a/source/parameterisations/include/G4GamDistrXTRdEdx.hh b/source/parameterisations/include/G4GamDistrXTRdEdx.hh new file mode 100644 index 0000000000..dd4b04039b --- /dev/null +++ b/source/parameterisations/include/G4GamDistrXTRdEdx.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4GamDistrXTRdEdx.hh,v 1.2 2001/07/11 10:01:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +/////////////////////////////////////////////////////////////////////////// +// +// Rough model describing a radiator of X-ray transition radiation. +// Thicknesses of plates and gas gaps are distributed according to gamma +// distribution. x are thicknesses of plates or gas gaps: +// +// p(x) = (alpha/)^alpha * x^(alpha-1) * exp(-alpha*x/) / G(alpha) +// +// G(alpha) is Euler's gamma function. +// Plates have mean = fPlateThick > 0 and power alpha = fAlphaPlate > 0 : +// Gas gaps have mean = fGasThick > 0 and power alpha = fAlphaGas > 0 : +// We suppose that: +// formation zone ~ mean thickness << absorption length +// for each material and in the range 1-100 keV. This allows us to simplify +// interference effects in radiator stack (GetStackFactor method). +// +// +// History: +// 27.02.01 V. Grichine, first version +// + + +#ifndef G4GamDistrXTRdEdx_h +#define G4GamDistrXTRdEdx_h 1 + +#include "G4VFastSimulationModel.hh" +// #include "G4ForwardXrayTR.hh" + +#include "G4VXTRdEdx.hh" + +class G4GamDistrXTRdEdx : public G4VXTRdEdx +{ +public: + + G4GamDistrXTRdEdx (G4LogicalVolume *anEnvelope, + G4double,G4double, + G4double,G4double ); + ~G4GamDistrXTRdEdx (); + + // Pure virtual function from base class + + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); + +private: + + G4double fAlphaPlate, fAlphaGas ; +}; + +#endif diff --git a/source/parameterisations/include/G4GamDistrXrayTRmodel.hh b/source/parameterisations/include/G4GamDistrXrayTRmodel.hh index 9a8aaa4303..4fd3583a60 100644 --- a/source/parameterisations/include/G4GamDistrXrayTRmodel.hh +++ b/source/parameterisations/include/G4GamDistrXrayTRmodel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GamDistrXrayTRmodel.hh,v 1.1.4.1 2001/06/28 19:10:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GamDistrXrayTRmodel.hh,v 1.3 2001/07/11 10:01:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -53,9 +53,9 @@ #include "G4VFastSimulationModel.hh" // #include "G4ForwardXrayTR.hh" -#include "G4VXrayTRmodel.hh" +#include "G4VXrayTRadModel.hh" -class G4GamDistrXrayTRmodel : public G4VXrayTRmodel +class G4GamDistrXrayTRmodel : public G4VXrayTRadModel { public: diff --git a/source/parameterisations/include/G4IrregularXTRdEdx.hh b/source/parameterisations/include/G4IrregularXTRdEdx.hh new file mode 100644 index 0000000000..9ce629705d --- /dev/null +++ b/source/parameterisations/include/G4IrregularXTRdEdx.hh @@ -0,0 +1,62 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4IrregularXTRdEdx.hh,v 1.2 2001/07/11 10:01:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +/////////////////////////////////////////////////////////////////////////// +// +// Very rough model describing a radiator of X-ray transition radiation. +// Thicknesses of plates and gas gaps are exponentially distributed. +// We suppose that: +// formation zone << mean thickness << absorption length +// for each material and in the range 1-100 keV. This allows us to simplify +// essentially interference effects in radiator stack (GetStackFactor method). +// The price is decreasing of X-ray TR photon yield. +// +// History: +// 27.02.01 V. Grichine first version +// + + +#ifndef G4IrregularXTRdEdx_h +#define G4IrregularXTRdEdx_h 1 + +#include "G4VFastSimulationModel.hh" +#include "G4VXTRdEdx.hh" + +class G4IrregularXTRdEdx : public G4VXTRdEdx +{ +public: + + G4IrregularXTRdEdx (G4LogicalVolume *anEnvelope,G4double,G4double); + ~G4IrregularXTRdEdx(); + + // Pure virtual function from base class + + // void DoIt(const G4FastTrack&, G4FastStep&); + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); +}; + +#endif diff --git a/source/parameterisations/include/G4IrregularXrayTRmodel.hh b/source/parameterisations/include/G4IrregularXrayTRmodel.hh index f46678f174..ec58098b86 100644 --- a/source/parameterisations/include/G4IrregularXrayTRmodel.hh +++ b/source/parameterisations/include/G4IrregularXrayTRmodel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IrregularXrayTRmodel.hh,v 1.1.4.1 2001/06/28 19:10:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IrregularXrayTRmodel.hh,v 1.3 2001/07/11 10:01:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -47,9 +47,9 @@ #include "G4VFastSimulationModel.hh" // #include "G4ForwardXrayTR.hh" -#include "G4VXrayTRmodel.hh" +#include "G4VXrayTRadModel.hh" -class G4IrregularXrayTRmodel : public G4VXrayTRmodel +class G4IrregularXrayTRmodel : public G4VXrayTRadModel { public: diff --git a/source/parameterisations/include/G4PAIclusterModel.hh b/source/parameterisations/include/G4PAIclusterModel.hh index 919ddc4235..423c2f399b 100644 --- a/source/parameterisations/include/G4PAIclusterModel.hh +++ b/source/parameterisations/include/G4PAIclusterModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PAIclusterModel.hh,v 1.1.4.1 2001/06/28 19:10:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PAIclusterModel.hh,v 1.3 2001/09/18 09:30:26 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -46,7 +46,6 @@ #include "G4Step.hh" #include "G4VTouchable.hh" #include "G4TouchableHistory.hh" -#include class G4PAIclusterModel : public G4VClusterModel diff --git a/source/parameterisations/include/G4PhotoClusterModel.hh b/source/parameterisations/include/G4PhotoClusterModel.hh index c7ba49cc32..8913e8517f 100644 --- a/source/parameterisations/include/G4PhotoClusterModel.hh +++ b/source/parameterisations/include/G4PhotoClusterModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhotoClusterModel.hh,v 1.1.4.1 2001/06/28 19:10:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhotoClusterModel.hh,v 1.3 2001/09/18 09:30:28 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -46,7 +46,6 @@ #include "G4Step.hh" #include "G4VTouchable.hh" #include "G4TouchableHistory.hh" -#include class G4PhotoClusterModel : public G4VClusterModel diff --git a/source/parameterisations/include/G4PlateIrrGasXTRdEdx.hh b/source/parameterisations/include/G4PlateIrrGasXTRdEdx.hh new file mode 100644 index 0000000000..31098feac1 --- /dev/null +++ b/source/parameterisations/include/G4PlateIrrGasXTRdEdx.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4PlateIrrGasXTRdEdx.hh,v 1.2 2001/07/11 10:01:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +/////////////////////////////////////////////////////////////////////////// +// +// Model describing a radiator of X-ray transition radiation. +// Thicknesses of plates is fixed while gas gaps are fully irregular. +// We suppose that: +// formation zone ~ mean thickness << absorption length +// for each material and in the range 1-100 keV. This allows us to simplify +// interference effects in radiator stack (GetStackFactor method). +// +// +// History: +// 27.02.01 V. Grichine, first version +// + + +#ifndef G4PlateIrrGasXTRdEdx_h +#define G4PlateIrrGasXTRdEdx_h 1 + +#include "G4VFastSimulationModel.hh" +#include "G4VXTRdEdx.hh" + +class G4PlateIrrGasXTRdEdx : public G4VXTRdEdx +{ +public: + + G4PlateIrrGasXTRdEdx (G4LogicalVolume *anEnvelope,G4double,G4double); + ~G4PlateIrrGasXTRdEdx (); + + // Pure virtual function from base class + + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); +}; + +#endif diff --git a/source/parameterisations/include/G4PlateIrrGasXrayTRmodel.hh b/source/parameterisations/include/G4PlateIrrGasXrayTRmodel.hh index 252ffbe6d7..b1d95d48e6 100644 --- a/source/parameterisations/include/G4PlateIrrGasXrayTRmodel.hh +++ b/source/parameterisations/include/G4PlateIrrGasXrayTRmodel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PlateIrrGasXrayTRmodel.hh,v 1.1.4.1 2001/06/28 19:10:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PlateIrrGasXrayTRmodel.hh,v 1.3 2001/07/11 10:01:29 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -46,9 +46,9 @@ #include "G4VFastSimulationModel.hh" // #include "G4ForwardXrayTR.hh" -#include "G4VXrayTRmodel.hh" +#include "G4VXrayTRadModel.hh" -class G4PlateIrrGasXrayTRmodel : public G4VXrayTRmodel +class G4PlateIrrGasXrayTRmodel : public G4VXrayTRadModel { public: diff --git a/source/parameterisations/include/G4RegularXTRdEdx.hh b/source/parameterisations/include/G4RegularXTRdEdx.hh new file mode 100644 index 0000000000..117df7caa4 --- /dev/null +++ b/source/parameterisations/include/G4RegularXTRdEdx.hh @@ -0,0 +1,61 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4RegularXTRdEdx.hh,v 1.2 2001/07/11 10:01:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +/////////////////////////////////////////////////////////////////////////// +// +// Model describing a radiator of X-ray transition radiation. +// Thicknesses of plates and gas gaps are fixed. +// We suppose that: +// formation zone ~ mean thickness << absorption length +// for each material and in the range 1-100 keV. This allows us to simplify +// interference effects in radiator stack (GetStackFactor method). +// +// +// History: +// 27.02.01 V. Grichine, first version +// + + +#ifndef G4RegularXTRdEdx_h +#define G4RegularXTRdEdx_h 1 + +#include "G4VFastSimulationModel.hh" +#include "G4VXTRdEdx.hh" + +class G4RegularXTRdEdx : public G4VXTRdEdx +{ +public: + + G4RegularXTRdEdx (G4LogicalVolume *anEnvelope,G4double,G4double); + ~G4RegularXTRdEdx (); + + // Pure virtual function from base class + + G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle); +}; + +#endif diff --git a/source/parameterisations/include/G4RegularXrayTRmodel.hh b/source/parameterisations/include/G4RegularXrayTRmodel.hh index 342c9d9912..0ec5fbe7dd 100644 --- a/source/parameterisations/include/G4RegularXrayTRmodel.hh +++ b/source/parameterisations/include/G4RegularXrayTRmodel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RegularXrayTRmodel.hh,v 1.1.4.1 2001/06/28 19:10:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RegularXrayTRmodel.hh,v 1.3 2001/07/11 10:01:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -46,9 +46,9 @@ #include "G4VFastSimulationModel.hh" // #include "G4ForwardXrayTR.hh" -#include "G4VXrayTRmodel.hh" +#include "G4VXrayTRadModel.hh" -class G4RegularXrayTRmodel : public G4VXrayTRmodel +class G4RegularXrayTRmodel : public G4VXrayTRadModel { public: diff --git a/source/parameterisations/include/G4VClusterModel.hh b/source/parameterisations/include/G4VClusterModel.hh index 9959b56a3f..0409752b19 100644 --- a/source/parameterisations/include/G4VClusterModel.hh +++ b/source/parameterisations/include/G4VClusterModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VClusterModel.hh,v 1.1.4.1 2001/06/28 19:10:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VClusterModel.hh,v 1.4 2001/11/07 10:27:21 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -44,9 +44,9 @@ #include "G4PAIonisation.hh" #include "G4VFastSimulationModel.hh" #include "G4Step.hh" -#include "G4VTouchable.hh" -#include "G4TouchableHistory.hh" -#include +#include "G4TouchableHandle.hh" +#include "G4TouchableHistoryHandle.hh" +#include "g4std/vector" class G4VClusterModel : public G4VFastSimulationModel @@ -78,12 +78,13 @@ protected: G4StepPoint* fFakePreStepPoint ; G4StepPoint* fFakePostStepPoint ; - G4VTouchable* fTouchable ; + G4TouchableHandle fTouchable ; + G4Navigator* fNavigator ; G4bool fNavigatorSetup ; - G4RWTValOrderedVector fClusterPositionVector ; - G4RWTValOrderedVector fClusterEnergyVector ; + G4std::vector fClusterPositionVector ; + G4std::vector fClusterEnergyVector ; }; #endif diff --git a/source/parameterisations/include/G4VXTRdEdx.hh b/source/parameterisations/include/G4VXTRdEdx.hh new file mode 100644 index 0000000000..306015622b --- /dev/null +++ b/source/parameterisations/include/G4VXTRdEdx.hh @@ -0,0 +1,91 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VXTRdEdx.hh,v 1.5 2001/09/18 09:02:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +/////////////////////////////////////////////////////////////////////////// +// +// base class for 'fast' parametrisation model describing X-ray transition +// created in some G4Envelope. Anglur distribuiton is very rough !!! (see DoIt +// method +// +// History: +// 26.02.01 V. Grichine first version +// 26.02.01 V. Grichine, DoIt was transformed from virtual +// + + +#ifndef G4VXTRdEdx_h +#define G4VXTRdEdx_h 1 + + +#include "globals.hh" +#include "templates.hh" +#include "g4std/complex" + +#include "G4PhysicsTable.hh" +#include "G4PhysicsLogVector.hh" +#include "G4Gamma.hh" + +#include "G4VXrayTRmodel.hh" + + +class G4VXTRdEdx : public G4VXrayTRmodel +{ +public: + + G4VXTRdEdx (G4LogicalVolume *anEnvelope,G4double,G4double); + virtual ~G4VXTRdEdx (); + + // Pure virtual functions from base class + + void DoIt(const G4FastTrack&, G4FastStep&) ; + + // Pure virtuals must be implemented in inherited particular TR radiators + + virtual G4double GetStackFactor( G4double energy, G4double gamma, + G4double varAngle ) = 0 ; + +protected: + + void BuildTable() ; + void BuildEnergyTable() ; + void BuildAngleTable() ; + + G4complex OneInterfaceXTRdEdx( G4double energy, + G4double gamma, + G4double varAngle ) ; + + G4double SpectralAngleXTRdEdx(G4double varAngle) ; + + G4double SpectralXTRdEdx(G4double energy) ; + + G4double AngleSpectralXTRdEdx(G4double energy) ; + + G4double AngleXTRdEdx(G4double varAngle) ; +}; + +#endif + diff --git a/source/persistency/geometry/management/include/G4VPhysVolRefArray.hh b/source/parameterisations/include/G4VXrayTRadModel.hh similarity index 55% rename from source/persistency/geometry/management/include/G4VPhysVolRefArray.hh rename to source/parameterisations/include/G4VXrayTRadModel.hh index 16cf5bcee1..d8568fea13 100644 --- a/source/persistency/geometry/management/include/G4VPhysVolRefArray.hh +++ b/source/parameterisations/include/G4VXrayTRadModel.hh @@ -21,56 +21,59 @@ // ******************************************************************** // // -// $Id: G4VPhysVolRefArray.hh,v 1.1.4.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VXrayTRadModel.hh,v 1.2 2001/07/11 10:01:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // - -// class description: -// -// This is a class which implements G4RWTPtrVector with -// G4VPhysicalVolume. -// - +// +/////////////////////////////////////////////////////////////////////////// +// +// base class for 'fast' parametrisation model describing X-ray transition +// created in some G4Envelope. Anglur distribuiton is very rough !!! (see DoIt +// method +// // History: -// 00.11.17 Y.Morita Initial version +// 26.02.01 V. Grichine first version +// 26.02.01 V. Grichine, DoIt was transformed from virtual +// + + +#ifndef G4VXrayTRadModel_h +#define G4VXrayTRadModel_h 1 -#ifndef G4VPhysVolRefArray_hh -#define G4VPhysVolRefArray_hh 1 -#include "g4rw/tpvector.h" #include "globals.hh" +#include "templates.hh" +#include "g4std/complex" -#include "G4VPhysicalVolume.hh" +#include "G4PhysicsTable.hh" +#include "G4PhysicsLogVector.hh" +#include "G4Gamma.hh" -typedef G4RWTPtrVector G4VPhysVolRefVArray; +#include "G4VXrayTRmodel.hh" -class G4VPhysVolRefArray + +class G4VXrayTRadModel : public G4VXrayTRmodel { - public: // with description - G4VPhysVolRefArray(); - ~G4VPhysVolRefArray(); - // The constructor and the destructor. +public: - private: - G4VPhysVolRefVArray transPhysVolPtrs; + G4VXrayTRadModel (G4LogicalVolume *anEnvelope,G4double,G4double); + virtual ~G4VXrayTRadModel (); - public: // with description - inline void Insert(G4int i, G4VPhysicalVolume* aVol) - { transPhysVolPtrs[i] = aVol; } - // Insert aVol as i-th element. - inline G4VPhysicalVolume* Get(G4int i) - { return transPhysVolPtrs[i]; } - // return the i-th element. - inline void Resize(size_t n) - { transPhysVolPtrs.resize(n); } - // Resize the vector with n. + // Pure virtual functions from base class + + void DoIt(const G4FastTrack&, G4FastStep&) ; + + // Pure virtuals must be implemented in inherited particular TR radiators + + virtual G4double GetStackFactor( G4double energy, G4double gamma, + G4double varAngle ) = 0 ; + + + void BuildTable() ; + void BuildEnergyTable() ; + void BuildAngleTable() ; }; -G4VPhysVolRefArray::G4VPhysVolRefArray() -{;} - -G4VPhysVolRefArray::~G4VPhysVolRefArray() -{;} - #endif + diff --git a/source/parameterisations/include/G4VXrayTRmodel.hh b/source/parameterisations/include/G4VXrayTRmodel.hh index 17555ab6db..fbaddf598d 100644 --- a/source/parameterisations/include/G4VXrayTRmodel.hh +++ b/source/parameterisations/include/G4VXrayTRmodel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VXrayTRmodel.hh,v 1.1.4.1 2001/06/28 19:10:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VXrayTRmodel.hh,v 1.3 2001/07/11 10:01:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // /////////////////////////////////////////////////////////////////////////// @@ -43,6 +43,8 @@ #include "globals.hh" #include "templates.hh" +#include "g4std/complex" + #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" #include "G4Gamma.hh" @@ -66,7 +68,7 @@ public: // Pure virtuals must be implemented in inherited particular TR radiators - void DoIt(const G4FastTrack&, G4FastStep&) ; + virtual void DoIt(const G4FastTrack&, G4FastStep&) = 0 ; virtual G4double GetStackFactor( G4double energy, G4double gamma, G4double varAngle ) = 0 ; @@ -75,9 +77,6 @@ public: G4double gamma, G4double varAngle ) const ; - void BuildTable() ; - void BuildEnergyTable() ; - void BuildAngleTable() ; // for photon energy distribution tables @@ -95,17 +94,19 @@ public: // Auxiliary functions for plate/gas material parameters - G4double GetPlateFormationZone(G4double,G4double,G4double) ; - void ComputePlatePhotoAbsCof() ; - G4double GetPlateLinearPhotoAbs(G4double) ; - void GetPlateZmuProduct() ; - G4double GetPlateZmuProduct(G4double,G4double,G4double) ; + G4double GetPlateFormationZone(G4double,G4double,G4double) ; + G4complex GetPlateComplexFZ(G4double,G4double,G4double) ; + void ComputePlatePhotoAbsCof() ; + G4double GetPlateLinearPhotoAbs(G4double) ; + void GetPlateZmuProduct() ; + G4double GetPlateZmuProduct(G4double,G4double,G4double) ; - G4double GetGasFormationZone(G4double,G4double,G4double) ; - void ComputeGasPhotoAbsCof() ; - G4double GetGasLinearPhotoAbs(G4double) ; - void GetGasZmuProduct() ; - G4double GetGasZmuProduct(G4double,G4double,G4double) ; + G4double GetGasFormationZone(G4double,G4double,G4double) ; + G4complex GetGasComplexFZ(G4double,G4double,G4double) ; + void ComputeGasPhotoAbsCof() ; + G4double GetGasLinearPhotoAbs(G4double) ; + void GetGasZmuProduct() ; + G4double GetGasZmuProduct(G4double,G4double,G4double) ; G4double GetXTRrandomEnergy( G4double scaledTkin, G4int iTkin ) ; G4double GetXTRenergy( G4int iPlace, G4double position, G4int iTransfer ) ; diff --git a/source/parameterisations/src/G4FoamXTRdEdx.cc b/source/parameterisations/src/G4FoamXTRdEdx.cc new file mode 100644 index 0000000000..ebaa5583f7 --- /dev/null +++ b/source/parameterisations/src/G4FoamXTRdEdx.cc @@ -0,0 +1,110 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4FoamXTRdEdx.cc,v 1.3 2001/09/18 09:02:02 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "g4std/complex" + +#include "G4FoamXTRdEdx.hh" +#include "Randomize.hh" + +#include "G4Gamma.hh" + +//////////////////////////////////////////////////////////////////////////// +// +// Constructor, destructor + +G4FoamXTRdEdx::G4FoamXTRdEdx(G4Envelope *anEnvelope, + G4double a, G4double b) : + G4VXTRdEdx(anEnvelope,a,b) +{ + G4cout<<"Foam XTR dE/dx model is called"<= 100.0) return true ; - // else return false ; - - return true ; + G4double kinEnergy, mass, gamma ; + kinEnergy = fastTrack.GetPrimaryTrack()->GetKineticEnergy() ; + mass = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGMass() ; + gamma = 1.0 + kinEnergy/mass ; + if (gamma >= 1.2) return true ; + else return false ; } ////////////////////////////////////////////////////////////////////////////// @@ -95,9 +97,13 @@ void G4PAIclusterModel::DoIt( const G4FastTrack& fastTrack , G4FastStep& fastStep ) { G4double charge, charge2, kinEnergy, mass, massRatio, scaledTkin ; - G4double distance, energyTransfer, energyLoss, lambda, step, stepSum = 0.0 ; + G4double distance, energyTransfer, lambda, step, stepSum = 0.0 ; + G4double energyLoss = 0.0 ; G4ThreeVector clusterPosition ; + fClusterPositionVector.clear() ; + fClusterEnergyVector.clear() ; + charge = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGCharge() ; charge2 = charge*charge ; kinEnergy = fastTrack.GetPrimaryTrack()->GetKineticEnergy() ; @@ -123,8 +129,9 @@ void G4PAIclusterModel::DoIt( const G4FastTrack& fastTrack , step = RandExponential::shoot(lambda) ; // if (step < 0.0) step = 0.0 ; stepSum += step ; - distance -= stepSum ; - if(distance < 0.0) // no change, return + // distance -= stepSum ; + // if(distance < 0.0) // no change, return + if(stepSum > distance ) // no change, return { return ; } @@ -135,7 +142,8 @@ void G4PAIclusterModel::DoIt( const G4FastTrack& fastTrack , G4ParticleMomentum globalDirection = fastTrack.GetPrimaryTrack()-> GetMomentumDirection() ; - while(distance >= 0.0) // global (or local ?) cluster coordinates + // while(distance >= 0.0) + while(stepSum <= distance ) // global (or local ?) cluster coordinates { // clusterPosition = fastTrack.GetPrimaryTrackLocalPosition() + // stepSum*direction ; @@ -143,12 +151,13 @@ void G4PAIclusterModel::DoIt( const G4FastTrack& fastTrack , clusterPosition = globalStartPosition + stepSum*globalDirection ; energyTransfer = fPAIonisation->GetRandomEnergyTransfer(scaledTkin) ; - fClusterPositionVector.insert(clusterPosition) ; - fClusterEnergyVector.insert(energyTransfer) ; + fClusterPositionVector.push_back(clusterPosition) ; + fClusterEnergyVector.push_back(energyTransfer) ; + step = RandExponential::shoot(lambda) ; // if (step < 0.0) step = 0.0 ; stepSum += step ; - distance -= step ; + // distance -= step ; energyLoss += energyTransfer ; } kinEnergy -= energyLoss ; @@ -168,3 +177,11 @@ void G4PAIclusterModel::DoIt( const G4FastTrack& fastTrack , + + + + + + + + diff --git a/source/parameterisations/src/G4PhotoClusterModel.cc b/source/parameterisations/src/G4PhotoClusterModel.cc index 5627f59cb8..697c5052ea 100644 --- a/source/parameterisations/src/G4PhotoClusterModel.cc +++ b/source/parameterisations/src/G4PhotoClusterModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhotoClusterModel.cc,v 1.1.4.1 2001/06/28 19:10:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhotoClusterModel.cc,v 1.3 2001/09/18 09:30:31 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4Timer.hh" @@ -137,8 +137,8 @@ void G4PhotoClusterModel::DoIt( const G4FastTrack& fastTrack , // stepSum*direction ; clusterPosition = globalStartPosition + step*globalDirection ; - fClusterPositionVector.insert(clusterPosition) ; - fClusterEnergyVector.insert(energy) ; + fClusterPositionVector.push_back(clusterPosition) ; + fClusterEnergyVector.push_back(energy) ; fastStep.KillPrimaryTrack(); fastStep.SetPrimaryTrackPathLength(step); diff --git a/source/parameterisations/src/G4PlateIrrGasXTRdEdx.cc b/source/parameterisations/src/G4PlateIrrGasXTRdEdx.cc new file mode 100644 index 0000000000..a8f02f147d --- /dev/null +++ b/source/parameterisations/src/G4PlateIrrGasXTRdEdx.cc @@ -0,0 +1,100 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4PlateIrrGasXTRdEdx.cc,v 1.3 2001/09/18 09:02:03 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "g4std/complex" + +#include "G4PlateIrrGasXTRdEdx.hh" +#include "Randomize.hh" + +#include "G4Gamma.hh" + +//////////////////////////////////////////////////////////////////////////// +// +// Constructor, destructor + +G4PlateIrrGasXTRdEdx::G4PlateIrrGasXTRdEdx(G4Envelope *anEnvelope, + G4double a, G4double b) : + G4VXTRdEdx(anEnvelope,a,b) +{ + G4cout<<"PlateIrrGas X-ray TR radiator model is called"<GetPreStepPoint()-> - GetPhysicalVolume() ; + G4VPhysicalVolume* pCurrentVolume = fFakeStep->GetPreStepPoint()->GetPhysicalVolume() ; G4VSensitiveDetector* pSensitive ; if( pCurrentVolume != 0 ) @@ -116,26 +113,23 @@ void G4VClusterModel::AssignClusterHit(const G4ThreeVector& position, void G4VClusterModel::FillFakeStep(const G4ThreeVector& position, G4double energy ) { + G4ThreeVector dummyDirection; // find in which volume the spot is. if (!fNavigatorSetup) { - fNavigator->SetWorldVolume(G4TransportationManager::GetTransportationManager()-> - GetNavigatorForTracking()->GetWorldVolume()) ; - - fNavigator->LocateGlobalPointAndUpdateTouchable(position,fTouchable,false); + fNavigator->SetWorldVolume(G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume()) ; fNavigatorSetup = true; } - else - { - fNavigator->LocateGlobalPointAndUpdateTouchable(position,fTouchable); - } + + fNavigator->LocateGlobalPointAndUpdateTouchableHandle(position,dummyDirection,fTouchable, false); + // Fills attribute of the G4Step needed // by our sensitive detector: // // set touchable volume at PreStepPoint: - fFakePreStepPoint->SetTouchable(fTouchable) ; + fFakePreStepPoint->SetTouchableHandle(fTouchable) ; // set total energy deposit: diff --git a/source/parameterisations/src/G4VXTRdEdx.cc b/source/parameterisations/src/G4VXTRdEdx.cc new file mode 100644 index 0000000000..5160afbd20 --- /dev/null +++ b/source/parameterisations/src/G4VXTRdEdx.cc @@ -0,0 +1,393 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VXTRdEdx.cc,v 1.7 2001/09/18 09:02:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "G4Timer.hh" + +#include "G4VXTRdEdx.hh" +#include "Randomize.hh" +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "globals.hh" +#include "g4std/complex" +#include "G4PhysicsTable.hh" +#include "G4PhysicsVector.hh" +#include "G4PhysicsLinearVector.hh" +#include "G4PhysicsLogVector.hh" +#include "G4Integrator.hh" +#include "G4Gamma.hh" + + + + +//////////////////////////////////////////////////////////////////////////// +// +// Constructor, destructor + +G4VXTRdEdx::G4VXTRdEdx(G4Envelope *anEnvelope, G4double a, G4double b) : + G4VXrayTRmodel(anEnvelope,a,b) +{ + ; +} + +/////////////////////////////////////////////////////////////////////////// + +G4VXTRdEdx::~G4VXTRdEdx() +{ + ; +} + + +////////////////////////////////////////////////////////////////////////////// +// +// The main function which is responsible for the treatment of a particle passage +// trough G4Envelope + +void G4VXTRdEdx::DoIt( const G4FastTrack& fastTrack , + G4FastStep& fastStep ) +{ + G4int iTkin, iPlace, numOfTR, iTR ; + G4double energyTR, theta, phi, dirX, dirY, dirZ ; + G4double W, W1, W2, E1, E2 ; + + G4double charge = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGCharge() ; + + // Now we are ready to Generate TR photons + + G4double chargeSq = charge*charge ; + G4double kinEnergy = fastTrack.GetPrimaryTrack()->GetKineticEnergy() ; + G4double mass = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGMass() ; + G4double gamma = 1.0 + kinEnergy/mass ; + // G4cout<<"gamma = "< + DistanceToOut(fastTrack.GetPrimaryTrackLocalPosition(), + direction) ; + + G4ThreeVector position = fastTrack.GetPrimaryTrackLocalPosition() + + distance*direction ; + + // Set final position: + + fastStep.SetPrimaryTrackFinalPosition(position); + + + for(iTkin=0;iTkinGetLowEdgeEnergy(iTkin)) break ; + } + iPlace = iTkin - 1 ; + + // G4ParticleMomentum particleDir = fastTrack.GetPrimaryTrack()-> + // GetMomentumDirection() ; + + if(iTkin == 0) // Tkin is too small, neglect of TR photon generation + { + return ; + } + else // general case: Tkin between two vectors of the material + { + if(iTkin == fTotBin) + { + numOfTR = RandPoisson::shoot( (*(*fEnergyDistrTable)(iPlace))(0)*chargeSq ) ; + } + else + { + E1 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin - 1) ; + E2 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin) ; + W = 1.0/(E2 - E1) ; + W1 = (E2 - TkinScaled)*W ; + W2 = (TkinScaled - E1)*W ; + numOfTR = RandPoisson::shoot( ( (*(*fEnergyDistrTable)(iPlace))(0)*W1+ + (*(*fEnergyDistrTable)(iPlace+1))(0)*W2 ) + *chargeSq ) ; + } + + // G4cout<= 0.1 ) theta = 0.1 ; + + // G4cout<<" : theta = "< + GetGlobalTime() ) ; + } + kinEnergy -= sumEnergyTR ; + fastStep.SetPrimaryTrackFinalKineticEnergy(kinEnergy) ; + } + } + return ; +} + + +////////////////////////////////////////////////////////////////////////// +// +// Build integral energy distribution of XTR photons + +void G4VXTRdEdx::BuildTable() +{ + G4int iTkin, iTR, iPlace ; + G4double radiatorCof = 1.0 ; // for tuning of XTR yield + + + fEnergyDistrTable = new G4PhysicsTable(fTotBin) ; + + fGammaTkinCut = 0.0 ; + + // setting of min/max TR energies + + if(fGammaTkinCut > fTheMinEnergyTR) fMinEnergyTR = fGammaTkinCut ; + else fMinEnergyTR = fTheMinEnergyTR ; + + if(fGammaTkinCut > fTheMaxEnergyTR) fMaxEnergyTR = 2.0*fGammaTkinCut ; + else fMaxEnergyTR = fTheMaxEnergyTR ; + + G4cout.precision(4) ; + G4Timer timer ; + timer.Start() ; + + for( iTkin = 0 ; iTkin < fTotBin ; iTkin++ ) // Lorentz factor loop + { + G4PhysicsLogVector* energyVector = new G4PhysicsLogVector( fMinEnergyTR, + fMaxEnergyTR, + fBinTR ) ; + + fGamma = 1.0 + (fProtonEnergyVector-> + GetLowEdgeEnergy(iTkin)/proton_mass_c2) ; + + fMaxThetaTR = 25.0/(fGamma*fGamma) ; // theta^2 + + fTheMinAngle = 1.0e-6 ; // was 5.e-6, e-5, e-4 + + if( fMaxThetaTR > fTheMaxAngle ) fMaxThetaTR = fTheMaxAngle ; + else + { + if( fMaxThetaTR < fTheMinAngle ) fMaxThetaTR = fTheMinAngle ; + } + + G4PhysicsLinearVector* angleVector = new G4PhysicsLinearVector( 0.0, + fMaxThetaTR, + fBinTR ) ; + + G4double energySum = 0.0 ; + G4double angleSum = 0.0 ; + G4Integrator integral ; + energyVector->PutValue(fBinTR-1,energySum) ; + angleVector->PutValue(fBinTR-1,angleSum) ; + + for( iTR = fBinTR - 2 ; iTR >= 0 ; iTR-- ) + { + energySum += radiatorCof*fCofTR*integral.Legendre10( + this,&G4VXTRdEdx::SpectralXTRdEdx, + energyVector->GetLowEdgeEnergy(iTR), + energyVector->GetLowEdgeEnergy(iTR+1) ) ; + + // angleSum += fCofTR*integral.Legendre96( + // this,&G4VXTRdEdx::AngleXTRdEdx, + // angleVector->GetLowEdgeEnergy(iTR), + // angleVector->GetLowEdgeEnergy(iTR+1) ) ; + + energyVector->PutValue(iTR,energySum) ; + // angleVector ->PutValue(iTR,angleSum) ; + } + G4cout< matter2, or 2->1) +// varAngle =2* (1 - cos(theta)) or approximately = theta*theta +// + +G4complex G4VXTRdEdx::OneInterfaceXTRdEdx( G4double energy, + G4double gamma, + G4double varAngle ) +{ + G4complex Z1 = GetPlateComplexFZ(energy,gamma,varAngle) ; + G4complex Z2 = GetGasComplexFZ(energy,gamma,varAngle) ; + + G4complex zOut = (Z1 - Z2)*(Z1 - Z2) + * (varAngle*energy/hbarc/hbarc) ; + return zOut ; + +} + + +////////////////////////////////////////////////////////////////////////////// +// +// For photon energy distribution tables. Integrate first over angle +// + +G4double G4VXTRdEdx::SpectralAngleXTRdEdx(G4double varAngle) +{ + G4double result = GetStackFactor(fEnergy,fGamma,varAngle) ; + if(result < 0.0) result = 0.0 ; + return result ; +} + +///////////////////////////////////////////////////////////////////////// +// +// For second integration over energy + +G4double G4VXTRdEdx::SpectralXTRdEdx(G4double energy) +{ + fEnergy = energy ; + G4Integrator integral ; + return integral.Legendre96(this,&G4VXTRdEdx::SpectralAngleXTRdEdx, + 0.0,0.3*fMaxThetaTR) + + integral.Legendre96(this,&G4VXTRdEdx::SpectralAngleXTRdEdx, + 0.3*fMaxThetaTR,fMaxThetaTR) ; +} + +////////////////////////////////////////////////////////////////////////// +// +// for photon angle distribution tables +// + +G4double G4VXTRdEdx::AngleSpectralXTRdEdx(G4double energy) +{ + G4double result = GetStackFactor(energy,fGamma,fVarAngle) ; + if(result < 0) result = 0.0 ; + return result ; +} + +/////////////////////////////////////////////////////////////////////////// +// +// + +G4double G4VXTRdEdx::AngleXTRdEdx(G4double varAngle) +{ + fVarAngle = varAngle ; + G4Integrator integral ; + return integral.Legendre10(this,&G4VXTRdEdx::AngleSpectralXTRdEdx, + fMinEnergyTR,fMaxEnergyTR) ; +} + + +// +// +/////////////////////////////////////////////////////////////////////// + + + + diff --git a/source/parameterisations/src/G4VXrayTRadModel.cc b/source/parameterisations/src/G4VXrayTRadModel.cc new file mode 100644 index 0000000000..3eb899cb63 --- /dev/null +++ b/source/parameterisations/src/G4VXrayTRadModel.cc @@ -0,0 +1,320 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VXrayTRadModel.cc,v 1.3 2001/09/18 09:02:04 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#include "G4Timer.hh" + +#include "G4VXrayTRadModel.hh" +#include "Randomize.hh" +#include "G4Material.hh" +#include "G4MaterialTable.hh" +#include "globals.hh" +#include "g4std/complex" +#include "G4PhysicsTable.hh" +#include "G4PhysicsVector.hh" +#include "G4PhysicsLinearVector.hh" +#include "G4PhysicsLogVector.hh" +#include "G4Integrator.hh" +#include "G4Gamma.hh" + + + + +//////////////////////////////////////////////////////////////////////////// +// +// Constructor, destructor + +G4VXrayTRadModel::G4VXrayTRadModel(G4Envelope *anEnvelope, G4double a, G4double b) : + G4VXrayTRmodel(anEnvelope,a,b) +{ + ; +} + +/////////////////////////////////////////////////////////////////////////// + +G4VXrayTRadModel::~G4VXrayTRadModel() +{ + ; +} + + +////////////////////////////////////////////////////////////////////////////// +// +// The main function which is responsible for the treatment of a particle passage +// trough G4Envelope + +void G4VXrayTRadModel::DoIt( const G4FastTrack& fastTrack , + G4FastStep& fastStep ) +{ + G4int iTkin, iPlace, numOfTR, iTR ; + G4double energyTR, theta, phi, dirX, dirY, dirZ ; + G4double W, W1, W2, E1, E2 ; + + G4double charge = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGCharge() ; + + // Now we are ready to Generate TR photons + + G4double chargeSq = charge*charge ; + G4double kinEnergy = fastTrack.GetPrimaryTrack()->GetKineticEnergy() ; + G4double mass = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGMass() ; + G4double gamma = 1.0 + kinEnergy/mass ; + // G4cout<<"gamma = "< + DistanceToOut(fastTrack.GetPrimaryTrackLocalPosition(), + direction) ; + + G4ThreeVector position = fastTrack.GetPrimaryTrackLocalPosition() + + distance*direction ; + + // Set final position: + + fastStep.SetPrimaryTrackFinalPosition(position); + + + for(iTkin=0;iTkinGetLowEdgeEnergy(iTkin)) break ; + } + iPlace = iTkin - 1 ; + + // G4ParticleMomentum particleDir = fastTrack.GetPrimaryTrack()-> + // GetMomentumDirection() ; + + if(iTkin == 0) // Tkin is too small, neglect of TR photon generation + { + return ; + } + else // general case: Tkin between two vectors of the material + { + if(iTkin == fTotBin) + { + numOfTR = RandPoisson::shoot( (*(*fEnergyDistrTable)(iPlace))(0)*chargeSq ) ; + } + else + { + E1 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin - 1) ; + E2 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin) ; + W = 1.0/(E2 - E1) ; + W1 = (E2 - TkinScaled)*W ; + W2 = (TkinScaled - E1)*W ; + numOfTR = RandPoisson::shoot( ( (*(*fEnergyDistrTable)(iPlace))(0)*W1+ + (*(*fEnergyDistrTable)(iPlace+1))(0)*W2 ) + *chargeSq ) ; + } + + // G4cout<= 0.1 ) theta = 0.1 ; + + // G4cout<<" : theta = "< + DistanceToOut(positionTR,directionTR) ; + + positionTR = positionTR + distanceTR*directionTR ; + + fastStep.CreateSecondaryTrack( aPhotonTR, + positionTR, + fastTrack.GetPrimaryTrack()-> + GetGlobalTime() ) ; + } + kinEnergy -= sumEnergyTR ; + fastStep.SetPrimaryTrackFinalKineticEnergy(kinEnergy) ; + } + } + return ; +} + + +////////////////////////////////////////////////////////////////////////// +// +// Build integral energy distribution of XTR photons + +void G4VXrayTRadModel::BuildTable() +{ + G4int iTkin, iTR, iPlace ; + G4double radiatorCof = 1.0 ; // for tuning of XTR yield + + // fAngleDistrTable = new G4PhysicsTable(fTotBin) ; + fEnergyDistrTable = new G4PhysicsTable(fTotBin) ; + + fGammaTkinCut = 0.0 ; + // setting of min/max TR energies + if(fGammaTkinCut > fTheMinEnergyTR) fMinEnergyTR = fGammaTkinCut ; + else fMinEnergyTR = fTheMinEnergyTR ; + + if(fGammaTkinCut > fTheMaxEnergyTR) fMaxEnergyTR = 2.0*fGammaTkinCut ; + else fMaxEnergyTR = fTheMaxEnergyTR ; + + G4cout.precision(4) ; + + G4Timer timer ; + timer.Start() ; + for(iTkin=0;iTkin + GetLowEdgeEnergy(iTkin)/proton_mass_c2) ; + + fMaxThetaTR = 25.0/(fGamma*fGamma) ; // theta^2 + + fTheMinAngle = 1.0e-6 ; // was 5.e-6, e-5, e-4 + + if( fMaxThetaTR > fTheMaxAngle ) fMaxThetaTR = fTheMaxAngle ; + else + { + if( fMaxThetaTR < fTheMinAngle ) fMaxThetaTR = fTheMinAngle ; + } + + G4PhysicsLinearVector* angleVector = new G4PhysicsLinearVector( 0.0, + fMaxThetaTR, + fBinTR ) ; + + G4double energySum = 0.0 ; + G4double angleSum = 0.0 ; + G4Integrator integral ; + energyVector->PutValue(fBinTR-1,energySum) ; + angleVector->PutValue(fBinTR-1,angleSum) ; + + for(iTR=fBinTR-2;iTR>=0;iTR--) + { + energySum += radiatorCof*fCofTR*integral.Legendre10( + this,&G4VXrayTRmodel::XTRNSpectralDensity, + energyVector->GetLowEdgeEnergy(iTR), + energyVector->GetLowEdgeEnergy(iTR+1) ) ; + + // angleSum += fCofTR*integral.Legendre96( + // this,&G4VXrayTRmodel::XTRNSpectralDensity, + // angleVector->GetLowEdgeEnergy(iTR), + // angleVector->GetLowEdgeEnergy(iTR+1) ) ; + + energyVector->PutValue(iTR,energySum) ; + // angleVector ->PutValue(iTR,angleSum) ; + } + G4cout<GetDaughter(0)->GetLogicalVolume()-> GetMaterial()->GetIndex() ; + G4cout<<"plate material = "<GetDaughter(0)->GetLogicalVolume()-> + GetMaterial()->GetName()<GetMaterial()->GetIndex() ; + G4cout<<"gas material = "< + GetMaterial()->GetName()<GetDefinition()->GetPDGCharge() ; - - // Now we are ready to Generate TR photons - - G4double chargeSq = charge*charge ; - G4double kinEnergy = fastTrack.GetPrimaryTrack()->GetKineticEnergy() ; - G4double mass = fastTrack.GetPrimaryTrack()->GetDefinition()->GetPDGMass() ; - G4double gamma = 1.0 + kinEnergy/mass ; - // G4cout<<"gamma = "< - DistanceToOut(fastTrack.GetPrimaryTrackLocalPosition(), - direction) ; - - G4ThreeVector position = fastTrack.GetPrimaryTrackLocalPosition() + - distance*direction ; - - // Set final position: - - fastStep.SetPrimaryTrackFinalPosition(position); - - - for(iTkin=0;iTkinGetLowEdgeEnergy(iTkin)) break ; - } - iPlace = iTkin - 1 ; - - // G4ParticleMomentum particleDir = fastTrack.GetPrimaryTrack()-> - // GetMomentumDirection() ; - - if(iTkin == 0) // Tkin is too small, neglect of TR photon generation - { - return ; - } - else // general case: Tkin between two vectors of the material - { - if(iTkin == fTotBin) - { - numOfTR = RandPoisson::shoot( (*(*fEnergyDistrTable)(iPlace))(0)*chargeSq ) ; - } - else - { - E1 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin - 1) ; - E2 = fProtonEnergyVector->GetLowEdgeEnergy(iTkin) ; - W = 1.0/(E2 - E1) ; - W1 = (E2 - TkinScaled)*W ; - W2 = (TkinScaled - E1)*W ; - numOfTR = RandPoisson::shoot( ( (*(*fEnergyDistrTable)(iPlace))(0)*W1+ - (*(*fEnergyDistrTable)(iPlace+1))(0)*W2 ) - *chargeSq ) ; - } - - // G4cout<= 0.1 ) theta = 0.1 ; - - // G4cout<<" : theta = "< - DistanceToOut(positionTR,directionTR) ; - - positionTR = positionTR + distanceTR*directionTR ; - - fastStep.CreateSecondaryTrack( aPhotonTR, - positionTR, - fastTrack.GetPrimaryTrack()-> - GetGlobalTime() ) ; - } - kinEnergy -= sumEnergyTR ; - fastStep.SetPrimaryTrackFinalKineticEnergy(kinEnergy) ; - } - } - return ; -} ////////////////////////////////////////////////////////////////////////// // @@ -387,6 +250,27 @@ G4double G4VXrayTRmodel::GetPlateFormationZone( G4double omega , return cof ; } +////////////////////////////////////////////////////////////////////// +// +// Calculates complex formation zone for plates. Omega is energy !!! + +G4complex G4VXrayTRmodel::GetPlateComplexFZ( G4double omega , + G4double gamma , + G4double varAngle ) +{ + G4double cof, length,delta, real, image ; + + length = 0.5*GetPlateFormationZone(omega,gamma,varAngle) ; + delta = length*GetPlateLinearPhotoAbs(omega) ; + cof = 1.0/(1.0 + delta*delta) ; + + real = length*cof ; + image = real*delta ; + + G4complex zone(real,image); + return zone ; +} + //////////////////////////////////////////////////////////////////////// // // Computes matrix of Sandia photo absorption cross section coefficients for @@ -480,6 +364,30 @@ G4double G4VXrayTRmodel::GetGasFormationZone( G4double omega , } + +////////////////////////////////////////////////////////////////////// +// +// Calculates complex formation zone for gas gaps. Omega is energy !!! + +G4complex G4VXrayTRmodel::GetGasComplexFZ( G4double omega , + G4double gamma , + G4double varAngle ) +{ + G4double cof, length,delta, real, image ; + + length = 0.5*GetGasFormationZone(omega,gamma,varAngle) ; + delta = length*GetGasLinearPhotoAbs(omega) ; + cof = 1.0/(1.0 + delta*delta) ; + + real = length*cof ; + image = real*delta ; + + G4complex zone(real,image); + return zone ; +} + + + //////////////////////////////////////////////////////////////////////// // // Computes matrix of Sandia photo absorption cross section coefficients for @@ -581,7 +489,7 @@ void G4VXrayTRmodel::GetPlateZmuProduct() outPlate.setf( G4std::ios::scientific, G4std::ios::floatfield ); G4int i ; - G4double omega, varAngle, gamma, result ; + G4double omega, varAngle, gamma ; gamma = 10000. ; varAngle = 1/gamma/gamma ; G4cout<<"energy, keV"<<"\t"<<"Zmu for plate"< fTheMinEnergyTR) fMinEnergyTR = fGammaTkinCut ; - else fMinEnergyTR = fTheMinEnergyTR ; - - if(fGammaTkinCut > fTheMaxEnergyTR) fMaxEnergyTR = 2.0*fGammaTkinCut ; - else fMaxEnergyTR = fTheMaxEnergyTR ; - - G4cout.precision(4) ; - - G4Timer timer ; - timer.Start() ; - for(iTkin=0;iTkin - GetLowEdgeEnergy(iTkin)/proton_mass_c2) ; - - fMaxThetaTR = 25.0/(fGamma*fGamma) ; // theta^2 - - fTheMinAngle = 1.0e-6 ; // was 5.e-6, e-5, e-4 - - if( fMaxThetaTR > fTheMaxAngle ) fMaxThetaTR = fTheMaxAngle ; - else - { - if( fMaxThetaTR < fTheMinAngle ) fMaxThetaTR = fTheMinAngle ; - } - - G4PhysicsLinearVector* angleVector = new G4PhysicsLinearVector( 0.0, - fMaxThetaTR, - fBinTR ) ; - - G4double energySum = 0.0 ; - G4double angleSum = 0.0 ; - G4Integrator integral ; - energyVector->PutValue(fBinTR-1,energySum) ; - angleVector->PutValue(fBinTR-1,angleSum) ; - - for(iTR=fBinTR-2;iTR>=0;iTR--) - { - energySum += radiatorCof*fCofTR*integral.Legendre10( - this,&G4VXrayTRmodel::XTRNSpectralDensity, - energyVector->GetLowEdgeEnergy(iTR), - energyVector->GetLowEdgeEnergy(iTR+1) ) ; - - // angleSum += fCofTR*integral.Legendre96( - // this,&G4VXrayTRmodel::XTRNSpectralDensity, - // angleVector->GetLowEdgeEnergy(iTR), - // angleVector->GetLowEdgeEnergy(iTR+1) ) ; - - energyVector->PutValue(iTR,energySum) ; - // angleVector ->PutValue(iTR,angleSum) ; - } - G4cout<length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0*keV; - } - theChargedGeantinoLengthCut = theCutInMaxInteractionLength; - theChargedGeantinoKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + // Set Energy Cut values to zero for all materials + SetEnergyCutValues( 0.0*keV); +} + + +G4ChargedGeantino* G4ChargedGeantino::ChargedGeantino() +{ + return &theChargedGeantino; } diff --git a/source/particles/bosons/src/G4Gamma.cc b/source/particles/bosons/src/G4Gamma.cc index fa8ebe8862..1078ea3fed 100644 --- a/source/particles/bosons/src/G4Gamma.cc +++ b/source/particles/bosons/src/G4Gamma.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Gamma.cc,v 1.3.4.2 2001/06/28 20:18:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Gamma.cc,v 1.8 2001/10/20 01:36:37 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -96,9 +96,6 @@ G4Gamma G4Gamma::theGamma( true, 0.0, NULL ); G4Gamma* G4Gamma::GammaDefinition() {return &theGamma;} -// initialization for static cut values -G4double G4Gamma::theGammaLengthCut = -1.0; -G4double* G4Gamma::theGammaKineticEnergyCuts = NULL; // *********************************************************************** // ******************* BuildAbsorptionLengthVector *********************** @@ -134,7 +131,7 @@ void G4Gamma::BuildAbsorptionLengthVector( for (G4int iel=0; ielGetIndex(); + G4int IndEl = (*elementVector)[iel]->GetIndex(); SIGMA += atomicNumDensityVector[iel]* (*aCrossSectionTable)[IndEl]->GetValue(lowEdgeEnergy,isOut); } @@ -142,7 +139,16 @@ void G4Gamma::BuildAbsorptionLengthVector( absorptionLengthVector->PutValue(ibin, 5./SIGMA); if (absorptionLengthMax < 5./SIGMA ) absorptionLengthMax = 5./SIGMA; } - if ( theCutInMaxInteractionLength >= absorptionLengthMax ) { + + //----- Get maximum cut in length + G4int ii,siz = G4Material::GetNumberOfMaterials(); + G4double maxCut = 0; + for( ii = 0; ii < siz; ii++ ){ + if( theCutInMaxInteractionLength[ii] > maxCut ) maxCut = theCutInMaxInteractionLength[ii] +; + } + + if ( maxCut >= absorptionLengthMax ) { G4cout << "******** SetCuts for " << GetParticleName(); G4cout << " ********************" << G4endl; G4cout << "The maximal meaningful cut is "; @@ -152,6 +158,7 @@ void G4Gamma::BuildAbsorptionLengthVector( } } + // *********************************************************************** // ********************** ComputeCrossSection **************************** // *********************************************************************** @@ -214,8 +221,11 @@ G4double G4Gamma::ComputeCrossSection(G4double AtomicNumber, // ******************** ConvertCutToKineticEnergy *********************** // ********************************************************************** -G4double G4Gamma::ConvertCutToKineticEnergy( - G4RangeVector* absorptionLengthVector) const +G4double + G4Gamma::ConvertCutToKineticEnergy( + G4RangeVector* absorptionLengthVector, + size_t materialIndex + ) const { const G4double epsilon=0.01; const G4int NBIN=200; @@ -239,9 +249,9 @@ G4double G4Gamma::ConvertCutToKineticEnergy( } G4double T1 = LowestEnergy; G4double r1 = absorptionLengthVector->GetValue(T1,isOut); - if ( theCutInMaxInteractionLength <= r1 ) { + if ( theCutInMaxInteractionLength[materialIndex] <= r1 ) { return T1; - } else if ( theCutInMaxInteractionLength >= rmax ) { + } else if ( theCutInMaxInteractionLength[materialIndex] >= rmax ) { G4cout << "******** ConvertCutToKineticEnergy for " << GetParticleName(); G4cout << " ********************" << G4endl; G4cout << "The cut energy is set " << DBL_MAX/GeV << "GeV " <GetValue(T3,isOut); - while ( abs(1.-r3/theCutInMaxInteractionLength)>epsilon ) { - if ( theCutInMaxInteractionLength <= r3 ) + while ( abs(1.-r3/theCutInMaxInteractionLength[materialIndex])>epsilon ) { + if ( theCutInMaxInteractionLength[materialIndex] <= r3 ) T2 = T3; else T1 = T3; @@ -261,3 +271,9 @@ G4double G4Gamma::ConvertCutToKineticEnergy( return T3; } } + + +G4Gamma* G4Gamma::Gamma() +{ + return &theGamma; +} diff --git a/source/particles/bosons/src/G4Geantino.cc b/source/particles/bosons/src/G4Geantino.cc index 9f4e66c16e..5c7dc3cdd3 100644 --- a/source/particles/bosons/src/G4Geantino.cc +++ b/source/particles/bosons/src/G4Geantino.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Geantino.cc,v 1.4.2.1 2001/06/28 19:10:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Geantino.cc,v 1.10 2001/10/28 05:03:49 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -86,36 +86,18 @@ G4Geantino G4Geantino::theGeantino( ); G4Geantino* G4Geantino::GeantinoDefinition() {return &theGeantino;} -// initialization for static cut values -G4double G4Geantino::theGeantinoLengthCut = -1.0; -G4double* G4Geantino::theGeantinoKineticEnergyCuts = NULL; // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4Geantino::SetCuts(G4double aCut) +void G4Geantino::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - theGeantinoLengthCut = theCutInMaxInteractionLength; - theGeantinoKineticEnergyCuts = theKineticEnergyCuts; - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0*keV; - } - // Rebuild the physics tables for every process for this particle type - - + // Set Energy Cut values to zero for all materials + SetEnergyCutValues( 0.0*keV); } - - +G4Geantino* G4Geantino::Geantino() +{ + return &theGeantino; +} diff --git a/source/particles/bosons/src/G4OpticalPhoton.cc b/source/particles/bosons/src/G4OpticalPhoton.cc index 8798ce7108..cfa39eaac7 100644 --- a/source/particles/bosons/src/G4OpticalPhoton.cc +++ b/source/particles/bosons/src/G4OpticalPhoton.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpticalPhoton.cc,v 1.4.2.1 2001/06/28 19:10:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpticalPhoton.cc,v 1.8 2001/10/16 08:15:43 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -83,9 +83,6 @@ G4OpticalPhoton G4OpticalPhoton::theOpticalPhoton( "opticalphoton", 0, 0, 0, true, 0.0, NULL ); -// initialization for static cut values -G4double G4OpticalPhoton::theOpticalPhotonLengthCut = -1.0; -G4double* G4OpticalPhoton::theOpticalPhotonKineticEnergyCuts = NULL; G4OpticalPhoton* G4OpticalPhoton::OpticalPhotonDefinition() {return &theOpticalPhoton;} @@ -97,22 +94,19 @@ G4OpticalPhoton* G4OpticalPhoton::OpticalPhotonDefinition() // theKineticEnergyCuts for all materials are set to Zero. void G4OpticalPhoton::SetCuts(G4double aCut) { - theCutInMaxInteractionLength = aCut; + SetCutInMaxInteractionLength( aCut ); - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0; - } - theOpticalPhotonLengthCut = theCutInMaxInteractionLength; - theOpticalPhotonKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type - + // Set Energy Cut values to zero for all materials + SetEnergyCutValues( 0.0*keV); } + + +G4OpticalPhoton* G4OpticalPhoton::OpticalPhoton() +{ + return &theOpticalPhoton; +} + + + + + diff --git a/source/particles/bosons/src/G4VBoson.cc b/source/particles/bosons/src/G4VBoson.cc index 79cb64fbd4..44947fe305 100644 --- a/source/particles/bosons/src/G4VBoson.cc +++ b/source/particles/bosons/src/G4VBoson.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VBoson.cc,v 1.2.4.2 2001/06/28 20:18:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VBoson.cc,v 1.3 2001/07/11 10:01:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/include/G4AntiLambda.hh b/source/particles/hadrons/barions/include/G4AntiLambda.hh index 6c4b48f063..9e493c8d0a 100644 --- a/source/particles/hadrons/barions/include/G4AntiLambda.hh +++ b/source/particles/hadrons/barions/include/G4AntiLambda.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiLambda.hh,v 1.4.4.2 2001/06/28 20:18:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiLambda.hh,v 1.9 2001/10/28 05:06:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiLambda : public G4VBaryon { private: static G4AntiLambda theAntiLambda; - static G4double theAntiLambdaLengthCut; - static G4double* theAntiLambdaKineticEnergyCuts; private: G4AntiLambda( @@ -73,11 +71,9 @@ class G4AntiLambda : public G4VBaryon virtual ~G4AntiLambda(){} static G4AntiLambda* AntiLambdaDefinition(); - static G4AntiLambda* AntiLambda(){return &theAntiLambda;} - static G4double GetCuts() {return theAntiLambdaLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiLambdaKineticEnergyCuts;}; + static G4AntiLambda* AntiLambda(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh b/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh index 0cd679feb5..5afa37644b 100644 --- a/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiLambdacPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiLambdacPlus.hh,v 1.4.4.2 2001/06/28 20:18:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiLambdacPlus.hh,v 1.6 2001/10/15 10:09:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4AntiLambdacPlus : public G4VBaryon { private: static G4AntiLambdacPlus theAntiLambdacPlus; - static G4double theAntiLambdacPlusLengthCut; - static G4double* theAntiLambdacPlusKineticEnergyCuts; private: G4AntiLambdacPlus( @@ -75,17 +73,6 @@ class G4AntiLambdacPlus : public G4VBaryon static G4AntiLambdacPlus* AntiLambdacPlusDefinition(); static G4AntiLambdacPlus* AntiLambdacPlus(); - static G4double GetCuts() {return theAntiLambdacPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiLambdacPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4AntiLambdacPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiLambdacPlusLengthCut = theCutInMaxInteractionLength; - theAntiLambdacPlusKineticEnergyCuts = theKineticEnergyCuts; - -} #endif diff --git a/source/particles/hadrons/barions/include/G4AntiNeutron.hh b/source/particles/hadrons/barions/include/G4AntiNeutron.hh index 1f585ca901..5f3f684ea2 100644 --- a/source/particles/hadrons/barions/include/G4AntiNeutron.hh +++ b/source/particles/hadrons/barions/include/G4AntiNeutron.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiNeutron.hh,v 1.5.2.2 2001/06/28 20:18:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutron.hh,v 1.10 2001/10/28 05:06:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VBaryon @@ -55,8 +54,6 @@ class G4AntiNeutron : public G4VBaryon { private: static G4AntiNeutron theAntiNeutron; - static G4double theAntiNeutronLengthCut; - static G4double* theAntiNeutronKineticEnergyCuts; private: // constructors are hide as private G4AntiNeutron( @@ -75,21 +72,9 @@ class G4AntiNeutron : public G4VBaryon virtual ~G4AntiNeutron(){} static G4AntiNeutron* AntiNeutronDefinition(); - static G4AntiNeutron* AntiNeutron(){return &theAntiNeutron;} - static G4double GetCuts() {return theAntiNeutronLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiNeutronKineticEnergyCuts;}; + static G4AntiNeutron* AntiNeutron(); - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + virtual void CalcEnergyCuts( const G4Material* ); }; -inline - void G4AntiNeutron::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theAntiNeutronLengthCut = theCutInMaxInteractionLength; - theAntiNeutronKineticEnergyCuts = theKineticEnergyCuts; -} #endif diff --git a/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh b/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh index 0d9afc64d2..715d99609d 100644 --- a/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiOmegaMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiOmegaMinus.hh,v 1.4.4.2 2001/06/28 20:18:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiOmegaMinus.hh,v 1.7 2001/10/16 08:15:45 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiOmegaMinus : public G4VBaryon { private: static G4AntiOmegaMinus theAntiOmegaMinus; - static G4double theAntiOmegaMinusLengthCut; - static G4double* theAntiOmegaMinusKineticEnergyCuts; private: G4AntiOmegaMinus( @@ -73,20 +71,8 @@ class G4AntiOmegaMinus : public G4VBaryon virtual ~G4AntiOmegaMinus(){} static G4AntiOmegaMinus* AntiOmegaMinusDefinition(); - static G4AntiOmegaMinus* AntiOmegaMinus() {return &theAntiOmegaMinus;} - static G4double GetCuts() {return theAntiOmegaMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiOmegaMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); + static G4AntiOmegaMinus* AntiOmegaMinus(); }; -inline void G4AntiOmegaMinus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiOmegaMinusLengthCut = theCutInMaxInteractionLength; - theAntiOmegaMinusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh b/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh index 608f833a3a..ea6343a4cb 100644 --- a/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiOmegacZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiOmegacZero.hh,v 1.4.4.2 2001/06/28 20:18:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiOmegacZero.hh,v 1.8 2001/10/28 05:06:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4AntiOmegacZero : public G4VBaryon { private: static G4AntiOmegacZero theAntiOmegacZero; - static G4double theAntiOmegacZeroLengthCut; - static G4double* theAntiOmegacZeroKineticEnergyCuts; private: G4AntiOmegacZero( @@ -75,10 +73,8 @@ class G4AntiOmegacZero : public G4VBaryon static G4AntiOmegacZero* AntiOmegacZeroDefinition(); static G4AntiOmegacZero* AntiOmegacZero(); - static G4double GetCuts() {return theAntiOmegacZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiOmegacZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; diff --git a/source/particles/hadrons/barions/include/G4AntiProton.hh b/source/particles/hadrons/barions/include/G4AntiProton.hh index e09beed73c..6a7a5913c5 100644 --- a/source/particles/hadrons/barions/include/G4AntiProton.hh +++ b/source/particles/hadrons/barions/include/G4AntiProton.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiProton.hh,v 1.5.2.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiProton.hh,v 1.8 2001/10/16 08:15:46 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4AntiProton : public G4VBaryon { private: static G4AntiProton theAntiProton; - static G4double theAntiProtonLengthCut; - static G4double* theAntiProtonKineticEnergyCuts; private: // constructors are hide as private @@ -77,32 +75,8 @@ class G4AntiProton : public G4VBaryon static G4AntiProton* AntiProtonDefinition(); static G4AntiProton* AntiProton(); - static G4double GetCuts() {return theAntiProtonLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiProtonKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); }; -inline void G4AntiProton::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiProtonLengthCut = theCutInMaxInteractionLength; - theAntiProtonKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4AntiProton::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theAntiProtonLengthCut = theCutInMaxInteractionLength; - theAntiProtonKineticEnergyCuts = theKineticEnergyCuts; -} - -inline G4AntiProton* G4AntiProton::AntiProton() -{ return &theAntiProton; } - #endif diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh b/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh index 2d60d47de8..66f0b0fd4d 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmaMinus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmaMinus.hh,v 1.7 2001/10/16 08:15:46 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiSigmaMinus : public G4VBaryon { private: static G4AntiSigmaMinus theAntiSigmaMinus; - static G4double theAntiSigmaMinusLengthCut; - static G4double* theAntiSigmaMinusKineticEnergyCuts; private: G4AntiSigmaMinus( @@ -73,20 +71,9 @@ class G4AntiSigmaMinus : public G4VBaryon virtual ~G4AntiSigmaMinus(){} static G4AntiSigmaMinus* AntiSigmaMinusDefinition(); - static G4AntiSigmaMinus* AntiSigmaMinus() {return &theAntiSigmaMinus;} - static G4double GetCuts() {return theAntiSigmaMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiSigmaMinusKineticEnergyCuts;}; + static G4AntiSigmaMinus* AntiSigmaMinus(); - virtual void SetCuts(G4double aCut); }; -inline void G4AntiSigmaMinus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiSigmaMinusLengthCut = theCutInMaxInteractionLength; - theAntiSigmaMinusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh index e18d3ec756..4939e5ccfb 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmaPlus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmaPlus.hh,v 1.7 2001/10/16 08:15:47 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiSigmaPlus : public G4VBaryon { private: static G4AntiSigmaPlus theAntiSigmaPlus; - static G4double theAntiSigmaPlusLengthCut; - static G4double* theAntiSigmaPlusKineticEnergyCuts; private: G4AntiSigmaPlus( @@ -73,20 +71,8 @@ class G4AntiSigmaPlus : public G4VBaryon virtual ~G4AntiSigmaPlus(){} static G4AntiSigmaPlus* AntiSigmaPlusDefinition(); - static G4AntiSigmaPlus* AntiSigmaPlus() {return &theAntiSigmaPlus;} - static G4double GetCuts() {return theAntiSigmaPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiSigmaPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); + static G4AntiSigmaPlus* AntiSigmaPlus(); }; -inline void G4AntiSigmaPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiSigmaPlusLengthCut = theCutInMaxInteractionLength; - theAntiSigmaPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh b/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh index 9551949ea2..b8ae341cd4 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmaZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmaZero.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmaZero.hh,v 1.9 2001/10/28 05:08:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiSigmaZero : public G4VBaryon { private: static G4AntiSigmaZero theAntiSigmaZero; - static G4double theAntiSigmaZeroLengthCut; - static G4double* theAntiSigmaZeroKineticEnergyCuts; private: G4AntiSigmaZero( @@ -73,11 +71,9 @@ class G4AntiSigmaZero : public G4VBaryon virtual ~G4AntiSigmaZero(){} static G4AntiSigmaZero* AntiSigmaZeroDefinition(); - static G4AntiSigmaZero* AntiSigmaZero() {return &theAntiSigmaZero;} - static G4double GetCuts() {return theAntiSigmaZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiSigmaZeroKineticEnergyCuts;}; + static G4AntiSigmaZero* AntiSigmaZero(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh index fe0661ba44..d260f4c82b 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmacPlus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmacPlus.hh,v 1.6 2001/10/15 10:09:25 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4AntiSigmacPlus : public G4VBaryon { private: static G4AntiSigmacPlus theAntiSigmacPlus; - static G4double theAntiSigmacPlusLengthCut; - static G4double* theAntiSigmacPlusKineticEnergyCuts; private: G4AntiSigmacPlus( @@ -75,19 +73,7 @@ class G4AntiSigmacPlus : public G4VBaryon static G4AntiSigmacPlus* AntiSigmacPlusDefinition(); static G4AntiSigmacPlus* AntiSigmacPlus(); - static G4double GetCuts() {return theAntiSigmacPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiSigmacPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4AntiSigmacPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiSigmacPlusLengthCut = theCutInMaxInteractionLength; - theAntiSigmacPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh b/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh index c44efdf616..75c71b8cb2 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacPlusPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmacPlusPlus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmacPlusPlus.hh,v 1.6 2001/10/15 10:09:26 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4AntiSigmacPlusPlus : public G4VBaryon { private: static G4AntiSigmacPlusPlus theAntiSigmacPlusPlus; - static G4double theAntiSigmacPlusPlusLengthCut; - static G4double* theAntiSigmacPlusPlusKineticEnergyCuts; private: G4AntiSigmacPlusPlus( @@ -75,19 +73,7 @@ class G4AntiSigmacPlusPlus : public G4VBaryon static G4AntiSigmacPlusPlus* AntiSigmacPlusPlusDefinition(); static G4AntiSigmacPlusPlus* AntiSigmacPlusPlus(); - static G4double GetCuts() {return theAntiSigmacPlusPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiSigmacPlusPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4AntiSigmacPlusPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiSigmacPlusPlusLengthCut = theCutInMaxInteractionLength; - theAntiSigmacPlusPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh b/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh index 24965f7738..fe48e7af65 100644 --- a/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiSigmacZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmacZero.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmacZero.hh,v 1.8 2001/10/28 05:08:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4AntiSigmacZero : public G4VBaryon { private: static G4AntiSigmacZero theAntiSigmacZero; - static G4double theAntiSigmacZeroLengthCut; - static G4double* theAntiSigmacZeroKineticEnergyCuts; private: G4AntiSigmacZero( @@ -75,10 +73,8 @@ class G4AntiSigmacZero : public G4VBaryon static G4AntiSigmacZero* AntiSigmacZeroDefinition(); static G4AntiSigmacZero* AntiSigmacZero(); - static G4double GetCuts() {return theAntiSigmacZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiSigmacZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4AntiXiMinus.hh b/source/particles/hadrons/barions/include/G4AntiXiMinus.hh index 18629c2f85..4275546913 100644 --- a/source/particles/hadrons/barions/include/G4AntiXiMinus.hh +++ b/source/particles/hadrons/barions/include/G4AntiXiMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiXiMinus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXiMinus.hh,v 1.7 2001/10/16 08:15:47 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiXiMinus : public G4VBaryon { private: static G4AntiXiMinus theAntiXiMinus; - static G4double theAntiXiMinusLengthCut; - static G4double* theAntiXiMinusKineticEnergyCuts; private: G4AntiXiMinus( @@ -73,20 +71,9 @@ class G4AntiXiMinus : public G4VBaryon virtual ~G4AntiXiMinus(){} static G4AntiXiMinus* AntiXiMinusDefinition(); - static G4AntiXiMinus* AntiXiMinus(){return &theAntiXiMinus;} - static G4double GetCuts() {return theAntiXiMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiXiMinusKineticEnergyCuts;}; + static G4AntiXiMinus* AntiXiMinus(); - virtual void SetCuts(G4double aCut); }; -inline void G4AntiXiMinus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiXiMinusLengthCut = theCutInMaxInteractionLength; - theAntiXiMinusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4AntiXiZero.hh b/source/particles/hadrons/barions/include/G4AntiXiZero.hh index 027c8d1d88..7010253be5 100644 --- a/source/particles/hadrons/barions/include/G4AntiXiZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiXiZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiXiZero.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXiZero.hh,v 1.9 2001/10/28 05:08:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiXiZero : public G4VBaryon { private: static G4AntiXiZero theAntiXiZero; - static G4double theAntiXiZeroLengthCut; - static G4double* theAntiXiZeroKineticEnergyCuts; private: G4AntiXiZero( @@ -73,11 +71,9 @@ class G4AntiXiZero : public G4VBaryon virtual ~G4AntiXiZero(){} static G4AntiXiZero* AntiXiZeroDefinition(); - static G4AntiXiZero* AntiXiZero() {return &theAntiXiZero;} - static G4double GetCuts() {return theAntiXiZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiXiZeroKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); + static G4AntiXiZero* AntiXiZero(); + + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4AntiXicPlus.hh b/source/particles/hadrons/barions/include/G4AntiXicPlus.hh index b220ff1b4d..3860b90a32 100644 --- a/source/particles/hadrons/barions/include/G4AntiXicPlus.hh +++ b/source/particles/hadrons/barions/include/G4AntiXicPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiXicPlus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXicPlus.hh,v 1.6 2001/10/15 10:09:26 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4AntiXicPlus : public G4VBaryon { private: static G4AntiXicPlus theAntiXicPlus; - static G4double theAntiXicPlusLengthCut; - static G4double* theAntiXicPlusKineticEnergyCuts; private: G4AntiXicPlus( @@ -75,19 +73,7 @@ class G4AntiXicPlus : public G4VBaryon static G4AntiXicPlus* AntiXicPlusDefinition(); static G4AntiXicPlus* AntiXicPlus(); - static G4double GetCuts() {return theAntiXicPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiXicPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4AntiXicPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAntiXicPlusLengthCut = theCutInMaxInteractionLength; - theAntiXicPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4AntiXicZero.hh b/source/particles/hadrons/barions/include/G4AntiXicZero.hh index 6a7e5ba7d5..6825fb81c7 100644 --- a/source/particles/hadrons/barions/include/G4AntiXicZero.hh +++ b/source/particles/hadrons/barions/include/G4AntiXicZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiXicZero.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXicZero.hh,v 1.8 2001/10/28 05:08:20 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4AntiXicZero : public G4VBaryon { private: static G4AntiXicZero theAntiXicZero; - static G4double theAntiXicZeroLengthCut; - static G4double* theAntiXicZeroKineticEnergyCuts; private: G4AntiXicZero( @@ -75,10 +73,8 @@ class G4AntiXicZero : public G4VBaryon static G4AntiXicZero* AntiXicZeroDefinition(); static G4AntiXicZero* AntiXicZero(); - static G4double GetCuts() {return theAntiXicZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiXicZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4BaryonConstructor.hh b/source/particles/hadrons/barions/include/G4BaryonConstructor.hh index 0c7a1715d0..3f6907a649 100644 --- a/source/particles/hadrons/barions/include/G4BaryonConstructor.hh +++ b/source/particles/hadrons/barions/include/G4BaryonConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BaryonConstructor.hh,v 1.2.4.1 2001/06/28 19:10:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BaryonConstructor.hh,v 1.3 2001/07/11 10:01:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/include/G4Lambda.hh b/source/particles/hadrons/barions/include/G4Lambda.hh index 5f2b38e33b..e99075591f 100644 --- a/source/particles/hadrons/barions/include/G4Lambda.hh +++ b/source/particles/hadrons/barions/include/G4Lambda.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Lambda.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Lambda.hh,v 1.9 2001/10/28 05:08:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4Lambda : public G4VBaryon { private: static G4Lambda theLambda; - static G4double theLambdaLengthCut; - static G4double* theLambdaKineticEnergyCuts; private: G4Lambda( @@ -73,11 +71,10 @@ class G4Lambda : public G4VBaryon virtual ~G4Lambda(){} static G4Lambda* LambdaDefinition(); - static G4Lambda* Lambda(){return &theLambda;} - static G4double GetCuts() {return theLambdaLengthCut;} - static G4double* GetCutsInEnergy() {return theLambdaKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + static G4Lambda* Lambda(); + + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4LambdacPlus.hh b/source/particles/hadrons/barions/include/G4LambdacPlus.hh index 59f15f14d5..7b158d35c6 100644 --- a/source/particles/hadrons/barions/include/G4LambdacPlus.hh +++ b/source/particles/hadrons/barions/include/G4LambdacPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LambdacPlus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LambdacPlus.hh,v 1.6 2001/10/15 10:09:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4LambdacPlus : public G4VBaryon { private: static G4LambdacPlus theLambdacPlus; - static G4double theLambdacPlusLengthCut; - static G4double* theLambdacPlusKineticEnergyCuts; private: G4LambdacPlus( @@ -75,18 +73,6 @@ class G4LambdacPlus : public G4VBaryon static G4LambdacPlus* LambdacPlusDefinition(); static G4LambdacPlus* LambdacPlus(); - static G4double GetCuts() {return theLambdacPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theLambdacPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4LambdacPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theLambdacPlusLengthCut = theCutInMaxInteractionLength; - theLambdacPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4Neutron.hh b/source/particles/hadrons/barions/include/G4Neutron.hh index 56e70ce444..a4b28bc14e 100644 --- a/source/particles/hadrons/barions/include/G4Neutron.hh +++ b/source/particles/hadrons/barions/include/G4Neutron.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Neutron.hh,v 1.6.2.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Neutron.hh,v 1.11 2001/10/28 05:08:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 //---------------------------------------------------------------- // Each class inheriting from G4VBaryon @@ -55,8 +54,6 @@ class G4Neutron : public G4VBaryon { private: static G4Neutron theNeutron; - static G4double theNeutronLengthCut; - static G4double* theNeutronKineticEnergyCuts; private: G4Neutron( @@ -75,13 +72,7 @@ class G4Neutron : public G4VBaryon virtual ~G4Neutron(){} static G4Neutron* NeutronDefinition(); - static G4Neutron* Neutron(){return &theNeutron;} - static G4double GetCuts() {return theNeutronLengthCut;} - static G4double* GetCutsInEnergy() {return theNeutronKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4Neutron* Neutron(); public: //With Description G4int GetAtomicNumber() const; @@ -91,6 +82,8 @@ class G4Neutron : public G4VBaryon void SetExcitationEnergy(G4double ){} // These two methods are dummy because all particles derived from // G4Neutron is "groud state" nuclei + + virtual void CalcEnergyCuts( const G4Material* ); }; inline @@ -105,13 +98,4 @@ inline return 1; } -inline - void G4Neutron::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theNeutronLengthCut = theCutInMaxInteractionLength; - theNeutronKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/barions/include/G4OmegaMinus.hh b/source/particles/hadrons/barions/include/G4OmegaMinus.hh index 179fb832ea..81de888979 100644 --- a/source/particles/hadrons/barions/include/G4OmegaMinus.hh +++ b/source/particles/hadrons/barions/include/G4OmegaMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OmegaMinus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OmegaMinus.hh,v 1.7 2001/10/16 08:15:49 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4OmegaMinus : public G4VBaryon { private: static G4OmegaMinus theOmegaMinus; - static G4double theOmegaMinusLengthCut; - static G4double* theOmegaMinusKineticEnergyCuts; private: G4OmegaMinus( @@ -73,20 +71,8 @@ class G4OmegaMinus : public G4VBaryon virtual ~G4OmegaMinus(){} static G4OmegaMinus* OmegaMinusDefinition(); - static G4OmegaMinus* OmegaMinus() {return &theOmegaMinus;} - static G4double GetCuts() {return theOmegaMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theOmegaMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); + static G4OmegaMinus* OmegaMinus(); }; -inline void G4OmegaMinus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theOmegaMinusLengthCut = theCutInMaxInteractionLength; - theOmegaMinusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4OmegacZero.hh b/source/particles/hadrons/barions/include/G4OmegacZero.hh index 600c743938..567c1137c6 100644 --- a/source/particles/hadrons/barions/include/G4OmegacZero.hh +++ b/source/particles/hadrons/barions/include/G4OmegacZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OmegacZero.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OmegacZero.hh,v 1.8 2001/10/28 05:08:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4OmegacZero : public G4VBaryon { private: static G4OmegacZero theOmegacZero; - static G4double theOmegacZeroLengthCut; - static G4double* theOmegacZeroKineticEnergyCuts; private: G4OmegacZero( @@ -75,10 +73,8 @@ class G4OmegacZero : public G4VBaryon static G4OmegacZero* OmegacZeroDefinition(); static G4OmegacZero* OmegacZero(); - static G4double GetCuts() {return theOmegacZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theOmegacZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; diff --git a/source/particles/hadrons/barions/include/G4Proton.hh b/source/particles/hadrons/barions/include/G4Proton.hh index 02b35852f5..7bf2d2126a 100644 --- a/source/particles/hadrons/barions/include/G4Proton.hh +++ b/source/particles/hadrons/barions/include/G4Proton.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Proton.hh,v 1.6.2.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Proton.hh,v 1.9 2001/10/16 08:15:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4Proton : public G4VBaryon { private: static G4Proton theProton; - static G4double theProtonLengthCut; - static G4double* theProtonKineticEnergyCuts; private: G4Proton( @@ -76,12 +74,6 @@ class G4Proton : public G4VBaryon static G4Proton* ProtonDefinition(); static G4Proton* Proton(); - static G4double GetCuts() {return theProtonLengthCut;} - static G4double* GetCutsInEnergy() {return theProtonKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); public: //With Description G4int GetAtomicNumber() const; @@ -94,23 +86,6 @@ class G4Proton : public G4VBaryon }; -inline void G4Proton::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theProtonLengthCut = theCutInMaxInteractionLength; - theProtonKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4Proton::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theProtonLengthCut = theCutInMaxInteractionLength; - theProtonKineticEnergyCuts = theKineticEnergyCuts; -} - -inline G4Proton* G4Proton::Proton() -{ return &theProton; } inline G4int G4Proton::GetAtomicNumber() const diff --git a/source/particles/hadrons/barions/include/G4SigmaMinus.hh b/source/particles/hadrons/barions/include/G4SigmaMinus.hh index 3d0b092365..f4a24b59c5 100644 --- a/source/particles/hadrons/barions/include/G4SigmaMinus.hh +++ b/source/particles/hadrons/barions/include/G4SigmaMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmaMinus.hh,v 1.4.4.2 2001/06/28 20:18:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmaMinus.hh,v 1.7 2001/10/16 08:15:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4SigmaMinus : public G4VBaryon { private: static G4SigmaMinus theSigmaMinus; - static G4double theSigmaMinusLengthCut; - static G4double* theSigmaMinusKineticEnergyCuts; private: G4SigmaMinus( @@ -73,20 +71,8 @@ class G4SigmaMinus : public G4VBaryon virtual ~G4SigmaMinus(){} static G4SigmaMinus* SigmaMinusDefinition(); - static G4SigmaMinus* SigmaMinus() {return &theSigmaMinus;} - static G4double GetCuts() {return theSigmaMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theSigmaMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); + static G4SigmaMinus* SigmaMinus(); }; -inline void G4SigmaMinus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theSigmaMinusLengthCut = theCutInMaxInteractionLength; - theSigmaMinusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4SigmaPlus.hh b/source/particles/hadrons/barions/include/G4SigmaPlus.hh index 0a3a8b6b97..d822134cc8 100644 --- a/source/particles/hadrons/barions/include/G4SigmaPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmaPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmaPlus.hh,v 1.4.4.2 2001/06/28 20:18:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmaPlus.hh,v 1.7 2001/10/16 08:15:51 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4SigmaPlus : public G4VBaryon { private: static G4SigmaPlus theSigmaPlus; - static G4double theSigmaPlusLengthCut; - static G4double* theSigmaPlusKineticEnergyCuts; private: G4SigmaPlus( @@ -73,20 +71,8 @@ class G4SigmaPlus : public G4VBaryon virtual ~G4SigmaPlus(){} static G4SigmaPlus* SigmaPlusDefinition(); - static G4SigmaPlus* SigmaPlus() {return &theSigmaPlus;} - static G4double GetCuts() {return theSigmaPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theSigmaPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); + static G4SigmaPlus* SigmaPlus(); }; -inline void G4SigmaPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theSigmaPlusLengthCut = theCutInMaxInteractionLength; - theSigmaPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4SigmaZero.hh b/source/particles/hadrons/barions/include/G4SigmaZero.hh index 87d7edc494..b6ff2b8351 100644 --- a/source/particles/hadrons/barions/include/G4SigmaZero.hh +++ b/source/particles/hadrons/barions/include/G4SigmaZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmaZero.hh,v 1.4.4.2 2001/06/28 20:18:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmaZero.hh,v 1.9 2001/10/28 05:08:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4SigmaZero : public G4VBaryon { private: static G4SigmaZero theSigmaZero; - static G4double theSigmaZeroLengthCut; - static G4double* theSigmaZeroKineticEnergyCuts; private: G4SigmaZero( @@ -73,11 +71,9 @@ class G4SigmaZero : public G4VBaryon virtual ~G4SigmaZero(){} static G4SigmaZero* SigmaZeroDefinition(); - static G4SigmaZero* SigmaZero(){return &theSigmaZero;} - static G4double GetCuts() {return theSigmaZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theSigmaZeroKineticEnergyCuts;}; + static G4SigmaZero* SigmaZero(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4SigmacPlus.hh b/source/particles/hadrons/barions/include/G4SigmacPlus.hh index 58a0ef72a3..f9d420d91c 100644 --- a/source/particles/hadrons/barions/include/G4SigmacPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmacPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmacPlus.hh,v 1.4.4.2 2001/06/28 20:18:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmacPlus.hh,v 1.6 2001/10/15 10:09:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4SigmacPlus : public G4VBaryon { private: static G4SigmacPlus theSigmacPlus; - static G4double theSigmacPlusLengthCut; - static G4double* theSigmacPlusKineticEnergyCuts; private: G4SigmacPlus( @@ -75,19 +73,7 @@ class G4SigmacPlus : public G4VBaryon static G4SigmacPlus* SigmacPlusDefinition(); static G4SigmacPlus* SigmacPlus(); - static G4double GetCuts() {return theSigmacPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theSigmacPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4SigmacPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theSigmacPlusLengthCut = theCutInMaxInteractionLength; - theSigmacPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh b/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh index 856e61ff44..63e99a6cc5 100644 --- a/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh +++ b/source/particles/hadrons/barions/include/G4SigmacPlusPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmacPlusPlus.hh,v 1.4.4.2 2001/06/28 20:18:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmacPlusPlus.hh,v 1.6 2001/10/15 10:09:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4SigmacPlusPlus : public G4VBaryon { private: static G4SigmacPlusPlus theSigmacPlusPlus; - static G4double theSigmacPlusPlusLengthCut; - static G4double* theSigmacPlusPlusKineticEnergyCuts; private: G4SigmacPlusPlus( @@ -75,19 +73,7 @@ class G4SigmacPlusPlus : public G4VBaryon static G4SigmacPlusPlus* SigmacPlusPlusDefinition(); static G4SigmacPlusPlus* SigmacPlusPlus(); - static G4double GetCuts() {return theSigmacPlusPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theSigmacPlusPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4SigmacPlusPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theSigmacPlusPlusLengthCut = theCutInMaxInteractionLength; - theSigmacPlusPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4SigmacZero.hh b/source/particles/hadrons/barions/include/G4SigmacZero.hh index 7b9ad4df27..0a12aadcc6 100644 --- a/source/particles/hadrons/barions/include/G4SigmacZero.hh +++ b/source/particles/hadrons/barions/include/G4SigmacZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmacZero.hh,v 1.4.4.2 2001/06/28 20:18:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmacZero.hh,v 1.8 2001/10/28 05:08:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4SigmacZero : public G4VBaryon { private: static G4SigmacZero theSigmacZero; - static G4double theSigmacZeroLengthCut; - static G4double* theSigmacZeroKineticEnergyCuts; private: G4SigmacZero( @@ -75,10 +73,8 @@ class G4SigmacZero : public G4VBaryon static G4SigmacZero* SigmacZeroDefinition(); static G4SigmacZero* SigmacZero(); - static G4double GetCuts() {return theSigmacZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theSigmacZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4VBaryon.hh b/source/particles/hadrons/barions/include/G4VBaryon.hh index 3d5a3d5806..79d444fab2 100644 --- a/source/particles/hadrons/barions/include/G4VBaryon.hh +++ b/source/particles/hadrons/barions/include/G4VBaryon.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VBaryon.hh,v 1.2.4.2 2001/06/28 20:18:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VBaryon.hh,v 1.3 2001/07/11 10:01:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/barions/include/G4XiMinus.hh b/source/particles/hadrons/barions/include/G4XiMinus.hh index 1ca30fc119..ddf6573664 100644 --- a/source/particles/hadrons/barions/include/G4XiMinus.hh +++ b/source/particles/hadrons/barions/include/G4XiMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XiMinus.hh,v 1.4.4.2 2001/06/28 20:18:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XiMinus.hh,v 1.7 2001/10/16 08:15:51 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4XiMinus : public G4VBaryon { private: static G4XiMinus theXiMinus; - static G4double theXiMinusLengthCut; - static G4double* theXiMinusKineticEnergyCuts; private: G4XiMinus( @@ -73,20 +71,8 @@ class G4XiMinus : public G4VBaryon virtual ~G4XiMinus(){} static G4XiMinus* XiMinusDefinition(); - static G4XiMinus* XiMinus() {return &theXiMinus;} - static G4double GetCuts() {return theXiMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theXiMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); + static G4XiMinus* XiMinus(); }; -inline void G4XiMinus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theXiMinusLengthCut = theCutInMaxInteractionLength; - theXiMinusKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/barions/include/G4XiZero.hh b/source/particles/hadrons/barions/include/G4XiZero.hh index 9e19bde886..26cd3e7e69 100644 --- a/source/particles/hadrons/barions/include/G4XiZero.hh +++ b/source/particles/hadrons/barions/include/G4XiZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XiZero.hh,v 1.4.4.2 2001/06/28 20:18:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XiZero.hh,v 1.9 2001/10/28 05:08:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4XiZero : public G4VBaryon { private: static G4XiZero theXiZero; - static G4double theXiZeroLengthCut; - static G4double* theXiZeroKineticEnergyCuts; private: G4XiZero( @@ -73,11 +71,9 @@ class G4XiZero : public G4VBaryon virtual ~G4XiZero(){} static G4XiZero* XiZeroDefinition(); - static G4XiZero* XiZero() {return &theXiZero;} - static G4double GetCuts() {return theXiZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theXiZeroKineticEnergyCuts;}; + static G4XiZero* XiZero(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/include/G4XicPlus.hh b/source/particles/hadrons/barions/include/G4XicPlus.hh index 00248ccb78..7577ef1129 100644 --- a/source/particles/hadrons/barions/include/G4XicPlus.hh +++ b/source/particles/hadrons/barions/include/G4XicPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XicPlus.hh,v 1.4.4.2 2001/06/28 20:18:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XicPlus.hh,v 1.6 2001/10/15 10:09:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4XicPlus : public G4VBaryon { private: static G4XicPlus theXicPlus; - static G4double theXicPlusLengthCut; - static G4double* theXicPlusKineticEnergyCuts; private: G4XicPlus( @@ -75,19 +73,6 @@ class G4XicPlus : public G4VBaryon static G4XicPlus* XicPlusDefinition(); static G4XicPlus* XicPlus(); - static G4double GetCuts() {return theXicPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theXicPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4XicPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theXicPlusLengthCut = theCutInMaxInteractionLength; - theXicPlusKineticEnergyCuts = theKineticEnergyCuts; - -} - - #endif diff --git a/source/particles/hadrons/barions/include/G4XicZero.hh b/source/particles/hadrons/barions/include/G4XicZero.hh index 706308a8ce..bf6ac15bde 100644 --- a/source/particles/hadrons/barions/include/G4XicZero.hh +++ b/source/particles/hadrons/barions/include/G4XicZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XicZero.hh,v 1.4.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XicZero.hh,v 1.8 2001/10/28 05:08:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4XicZero : public G4VBaryon { private: static G4XicZero theXicZero; - static G4double theXicZeroLengthCut; - static G4double* theXicZeroKineticEnergyCuts; private: G4XicZero( @@ -75,10 +73,8 @@ class G4XicZero : public G4VBaryon static G4XicZero* XicZeroDefinition(); static G4XicZero* XicZero(); - static G4double GetCuts() {return theXicZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theXicZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/barions/src/G4AntiLambda.cc b/source/particles/hadrons/barions/src/G4AntiLambda.cc index 74b4367e98..396160ac25 100644 --- a/source/particles/hadrons/barions/src/G4AntiLambda.cc +++ b/source/particles/hadrons/barions/src/G4AntiLambda.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiLambda.cc,v 1.6.2.1 2001/06/28 19:10:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiLambda.cc,v 1.12 2001/10/28 05:08:22 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,34 +99,20 @@ G4AntiLambda G4AntiLambda::theAntiLambda( ); G4AntiLambda* G4AntiLambda::AntiLambdaDefinition(){return &theAntiLambda;} -// initialization for static cut values -G4double G4AntiLambda::theAntiLambdaLengthCut = -1.0; -G4double* G4AntiLambda::theAntiLambdaKineticEnergyCuts = NULL; + +G4AntiLambda* G4AntiLambda::AntiLambda(){return &theAntiLambda;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4AntiLambda::SetCuts(G4double aCut) +void G4AntiLambda::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiLambdaLengthCut = theCutInMaxInteractionLength; - theAntiLambdaKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc b/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc index ac9344bd39..37439620b2 100644 --- a/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiLambdacPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiLambdacPlus.cc,v 1.5.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiLambdacPlus.cc,v 1.7 2001/10/15 10:10:52 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,7 +85,4 @@ G4AntiLambdacPlus G4AntiLambdacPlus::theAntiLambdacPlus( G4AntiLambdacPlus* G4AntiLambdacPlus::AntiLambdacPlusDefinition(){return &theAntiLambdacPlus;} G4AntiLambdacPlus* G4AntiLambdacPlus::AntiLambdacPlus(){return &theAntiLambdacPlus;} -// initialization for static cut values -G4double G4AntiLambdacPlus::theAntiLambdacPlusLengthCut = -1.0; -G4double* G4AntiLambdacPlus::theAntiLambdacPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/barions/src/G4AntiNeutron.cc b/source/particles/hadrons/barions/src/G4AntiNeutron.cc index 3bad44c624..9c8f2980c8 100644 --- a/source/particles/hadrons/barions/src/G4AntiNeutron.cc +++ b/source/particles/hadrons/barions/src/G4AntiNeutron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiNeutron.cc,v 1.5.2.1 2001/06/28 19:10:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutron.cc,v 1.11 2001/10/28 05:08:22 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -77,33 +77,18 @@ G4AntiNeutron G4AntiNeutron::theAntiNeutron( true, -1.0, NULL ); G4AntiNeutron* G4AntiNeutron::AntiNeutronDefinition(){return &theAntiNeutron;} -// initialization for static cut values -G4double G4AntiNeutron::theAntiNeutronLengthCut = -1.0; -G4double* G4AntiNeutron::theAntiNeutronKineticEnergyCuts = NULL; +G4AntiNeutron* G4AntiNeutron::AntiNeutron(){return &theAntiNeutron;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4AntiNeutron::SetCuts(G4double aCut) +void G4AntiNeutron::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiNeutronLengthCut = theCutInMaxInteractionLength; - theAntiNeutronKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); + } diff --git a/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc b/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc index 333802b7c2..63f3a2b2ff 100644 --- a/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiOmegaMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiOmegaMinus.cc,v 1.5.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiOmegaMinus.cc,v 1.8 2001/10/16 08:15:55 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -101,6 +101,5 @@ G4AntiOmegaMinus G4AntiOmegaMinus::theAntiOmegaMinus( ); G4AntiOmegaMinus* G4AntiOmegaMinus::AntiOmegaMinusDefinition(){return &theAntiOmegaMinus;} -// initialization for static cut values -G4double G4AntiOmegaMinus::theAntiOmegaMinusLengthCut = -1.0; -G4double* G4AntiOmegaMinus::theAntiOmegaMinusKineticEnergyCuts = NULL; + +G4AntiOmegaMinus* G4AntiOmegaMinus::AntiOmegaMinus(){return &theAntiOmegaMinus;} diff --git a/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc b/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc index a7e3111f85..659d355c23 100644 --- a/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiOmegacZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiOmegacZero.cc,v 1.6.2.1 2001/06/28 19:10:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiOmegacZero.cc,v 1.11 2001/10/28 05:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,9 +85,6 @@ G4AntiOmegacZero G4AntiOmegacZero::theAntiOmegacZero( G4AntiOmegacZero* G4AntiOmegacZero::AntiOmegacZeroDefinition(){return &theAntiOmegacZero;} G4AntiOmegacZero* G4AntiOmegacZero::AntiOmegacZero(){return &theAntiOmegacZero;} -// initialization for static cut values -G4double G4AntiOmegacZero::theAntiOmegacZeroLengthCut = -1.0; -G4double* G4AntiOmegacZero::theAntiOmegacZeroKineticEnergyCuts = NULL; // ********************************************************************** @@ -95,25 +92,12 @@ G4double* G4AntiOmegacZero::theAntiOmegacZeroKineticEnergyCuts = NULL; // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4AntiOmegacZero::SetCuts(G4double aCut) +void G4AntiOmegacZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiOmegacZeroLengthCut = theCutInMaxInteractionLength; - theAntiOmegacZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); + } diff --git a/source/particles/hadrons/barions/src/G4AntiProton.cc b/source/particles/hadrons/barions/src/G4AntiProton.cc index 5173ed0cb3..67ad67ff82 100644 --- a/source/particles/hadrons/barions/src/G4AntiProton.cc +++ b/source/particles/hadrons/barions/src/G4AntiProton.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiProton.cc,v 1.4.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiProton.cc,v 1.7 2001/10/16 08:15:56 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -79,9 +79,8 @@ G4AntiProton G4AntiProton::theAntiProton( ); G4AntiProton* G4AntiProton::AntiProtonDefinition(){return &theAntiProton;} -// initialization for static cut values -G4double G4AntiProton::theAntiProtonLengthCut = -1.0; -G4double* G4AntiProton::theAntiProtonKineticEnergyCuts = NULL; +G4AntiProton* G4AntiProton::AntiProton(){return &theAntiProton;} + diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc b/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc index 44a675001c..36400962d8 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmaMinus.cc,v 1.5.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmaMinus.cc,v 1.8 2001/10/16 08:15:56 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -76,7 +76,7 @@ G4AntiSigmaMinus::G4AntiSigmaMinus( SetDecayTable(table); -} +}; // ...................................................................... // ... static member definitions ... @@ -102,6 +102,7 @@ G4AntiSigmaMinus* G4AntiSigmaMinus::AntiSigmaMinusDefinition() return &theAntiSigmaMinus; } -// initialization for static cut values -G4double G4AntiSigmaMinus::theAntiSigmaMinusLengthCut = -1.0; -G4double* G4AntiSigmaMinus::theAntiSigmaMinusKineticEnergyCuts = NULL; +G4AntiSigmaMinus* G4AntiSigmaMinus::AntiSigmaMinus() +{ + return &theAntiSigmaMinus; +} diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc index 0b1ae217f0..9ee29ed0da 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmaPlus.cc,v 1.5.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmaPlus.cc,v 1.8 2001/10/16 08:15:56 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -103,9 +103,11 @@ G4AntiSigmaPlus* G4AntiSigmaPlus::AntiSigmaPlusDefinition() return &theAntiSigmaPlus; } -// initialization for static cut values -G4double G4AntiSigmaPlus::theAntiSigmaPlusLengthCut = -1.0; -G4double* G4AntiSigmaPlus::theAntiSigmaPlusKineticEnergyCuts = NULL; +G4AntiSigmaPlus* G4AntiSigmaPlus::AntiSigmaPlus() +{ + return &theAntiSigmaPlus; +} + diff --git a/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc b/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc index 63396f812b..193a356b0c 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmaZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmaZero.cc,v 1.6.2.1 2001/06/28 19:10:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmaZero.cc,v 1.12 2001/10/28 05:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,34 +99,22 @@ G4AntiSigmaZero* G4AntiSigmaZero::AntiSigmaZeroDefinition() { return &theAntiSigmaZero; } -// initialization for static cut values -G4double G4AntiSigmaZero::theAntiSigmaZeroLengthCut = -1.0; -G4double* G4AntiSigmaZero::theAntiSigmaZeroKineticEnergyCuts = NULL; + +G4AntiSigmaZero* G4AntiSigmaZero::AntiSigmaZero() +{ + return &theAntiSigmaZero; +} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4AntiSigmaZero::SetCuts(G4double aCut) +void G4AntiSigmaZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiSigmaZeroLengthCut = theCutInMaxInteractionLength; - theAntiSigmaZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc index 26925f973b..7a8695b1d7 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmacPlus.cc,v 1.4.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmacPlus.cc,v 1.6 2001/10/15 10:10:54 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,7 +99,4 @@ G4AntiSigmacPlus G4AntiSigmacPlus::theAntiSigmacPlus( G4AntiSigmacPlus* G4AntiSigmacPlus::AntiSigmacPlusDefinition(){return &theAntiSigmacPlus;} G4AntiSigmacPlus* G4AntiSigmacPlus::AntiSigmacPlus(){return &theAntiSigmacPlus;} -// initialization for static cut values -G4double G4AntiSigmacPlus::theAntiSigmacPlusLengthCut = -1.0; -G4double* G4AntiSigmacPlus::theAntiSigmacPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc b/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc index e8463c94fc..27cdad6062 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacPlusPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmacPlusPlus.cc,v 1.4.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmacPlusPlus.cc,v 1.6 2001/10/15 10:10:54 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,9 +99,6 @@ G4AntiSigmacPlusPlus G4AntiSigmacPlusPlus::theAntiSigmacPlusPlus( G4AntiSigmacPlusPlus* G4AntiSigmacPlusPlus::AntiSigmacPlusPlusDefinition(){return &theAntiSigmacPlusPlus;} G4AntiSigmacPlusPlus* G4AntiSigmacPlusPlus::AntiSigmacPlusPlus(){return &theAntiSigmacPlusPlus;} -// initialization for static cut values -G4double G4AntiSigmacPlusPlus::theAntiSigmacPlusPlusLengthCut = -1.0; -G4double* G4AntiSigmacPlusPlus::theAntiSigmacPlusPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc b/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc index e06b4c2f53..48b1063f28 100644 --- a/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiSigmacZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiSigmacZero.cc,v 1.5.2.1 2001/06/28 19:10:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmacZero.cc,v 1.10 2001/10/28 05:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,9 +99,6 @@ G4AntiSigmacZero G4AntiSigmacZero::theAntiSigmacZero( G4AntiSigmacZero* G4AntiSigmacZero::AntiSigmacZeroDefinition(){return &theAntiSigmacZero;} G4AntiSigmacZero* G4AntiSigmacZero::AntiSigmacZero(){return &theAntiSigmacZero;} -// initialization for static cut values -G4double G4AntiSigmacZero::theAntiSigmacZeroLengthCut = -1.0; -G4double* G4AntiSigmacZero::theAntiSigmacZeroKineticEnergyCuts = NULL; // ********************************************************************** // **************************** SetCuts ********************************* @@ -109,26 +106,12 @@ G4double* G4AntiSigmacZero::theAntiSigmacZeroKineticEnergyCuts = NULL; // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4AntiSigmacZero::SetCuts(G4double aCut) +void G4AntiSigmacZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiSigmacZeroLengthCut = theCutInMaxInteractionLength; - theAntiSigmacZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/barions/src/G4AntiXiMinus.cc b/source/particles/hadrons/barions/src/G4AntiXiMinus.cc index 631cc31ae0..31bfbd44ca 100644 --- a/source/particles/hadrons/barions/src/G4AntiXiMinus.cc +++ b/source/particles/hadrons/barions/src/G4AntiXiMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiXiMinus.cc,v 1.5.4.2 2001/06/28 20:19:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXiMinus.cc,v 1.8 2001/10/16 08:15:57 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -101,6 +101,7 @@ G4AntiXiMinus* G4AntiXiMinus::AntiXiMinusDefinition() return &theAntiXiMinus; } -// initialization for static cut values -G4double G4AntiXiMinus::theAntiXiMinusLengthCut = -1.0; -G4double* G4AntiXiMinus::theAntiXiMinusKineticEnergyCuts = NULL; +G4AntiXiMinus* G4AntiXiMinus::AntiXiMinus() +{ + return &theAntiXiMinus; +} diff --git a/source/particles/hadrons/barions/src/G4AntiXiZero.cc b/source/particles/hadrons/barions/src/G4AntiXiZero.cc index 0063c930e8..26947cc9fb 100644 --- a/source/particles/hadrons/barions/src/G4AntiXiZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiXiZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiXiZero.cc,v 1.6.2.1 2001/06/28 19:10:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXiZero.cc,v 1.12 2001/10/28 05:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -97,34 +97,18 @@ G4AntiXiZero G4AntiXiZero::theAntiXiZero( ); G4AntiXiZero* G4AntiXiZero::AntiXiZeroDefinition(){return &theAntiXiZero;} -// initialization for static cut values -G4double G4AntiXiZero::theAntiXiZeroLengthCut = -1.0; -G4double* G4AntiXiZero::theAntiXiZeroKineticEnergyCuts = NULL; +G4AntiXiZero* G4AntiXiZero::AntiXiZero(){return &theAntiXiZero;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4AntiXiZero::SetCuts(G4double aCut) +void G4AntiXiZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiXiZeroLengthCut = theCutInMaxInteractionLength; - theAntiXiZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/barions/src/G4AntiXicPlus.cc b/source/particles/hadrons/barions/src/G4AntiXicPlus.cc index 9f023cc01c..3047013abb 100644 --- a/source/particles/hadrons/barions/src/G4AntiXicPlus.cc +++ b/source/particles/hadrons/barions/src/G4AntiXicPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiXicPlus.cc,v 1.5.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXicPlus.cc,v 1.7 2001/10/15 10:10:54 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -86,6 +86,3 @@ G4AntiXicPlus G4AntiXicPlus::theAntiXicPlus( G4AntiXicPlus* G4AntiXicPlus::AntiXicPlusDefinition(){return &theAntiXicPlus;} G4AntiXicPlus* G4AntiXicPlus::AntiXicPlus(){return &theAntiXicPlus;} -// initialization for static cut values -G4double G4AntiXicPlus::theAntiXicPlusLengthCut = -1.0; -G4double* G4AntiXicPlus::theAntiXicPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/barions/src/G4AntiXicZero.cc b/source/particles/hadrons/barions/src/G4AntiXicZero.cc index 48a4028a1a..4aec9bb6a6 100644 --- a/source/particles/hadrons/barions/src/G4AntiXicZero.cc +++ b/source/particles/hadrons/barions/src/G4AntiXicZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiXicZero.cc,v 1.6.2.1 2001/06/28 19:10:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXicZero.cc,v 1.11 2001/10/28 05:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -86,34 +86,18 @@ G4AntiXicZero G4AntiXicZero::theAntiXicZero( G4AntiXicZero* G4AntiXicZero::AntiXicZeroDefinition(){return &theAntiXicZero;} G4AntiXicZero* G4AntiXicZero::AntiXicZero(){return &theAntiXicZero;} -// initialization for static cut values -G4double G4AntiXicZero::theAntiXicZeroLengthCut = -1.0; -G4double* G4AntiXicZero::theAntiXicZeroKineticEnergyCuts = NULL; // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4AntiXicZero::SetCuts(G4double aCut) +void G4AntiXicZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiXicZeroLengthCut = theCutInMaxInteractionLength; - theAntiXicZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); + } diff --git a/source/particles/hadrons/barions/src/G4BaryonConstructor.cc b/source/particles/hadrons/barions/src/G4BaryonConstructor.cc index fa1cdf57d6..1c0f662b2b 100644 --- a/source/particles/hadrons/barions/src/G4BaryonConstructor.cc +++ b/source/particles/hadrons/barions/src/G4BaryonConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BaryonConstructor.cc,v 1.2.4.1 2001/06/28 19:10:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BaryonConstructor.cc,v 1.3 2001/07/11 10:01:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4Lambda.cc b/source/particles/hadrons/barions/src/G4Lambda.cc index 41aff00bf8..f110056d2a 100644 --- a/source/particles/hadrons/barions/src/G4Lambda.cc +++ b/source/particles/hadrons/barions/src/G4Lambda.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Lambda.cc,v 1.6.2.1 2001/06/28 19:10:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Lambda.cc,v 1.12 2001/10/28 05:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,34 +99,20 @@ G4Lambda G4Lambda::theLambda( ); G4Lambda* G4Lambda::LambdaDefinition(){return &theLambda;} -// initialization for static cut values -G4double G4Lambda::theLambdaLengthCut = -1.0; -G4double* G4Lambda::theLambdaKineticEnergyCuts = NULL; + +G4Lambda* G4Lambda::Lambda() {return &theLambda;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4Lambda::SetCuts(G4double aCut) +void G4Lambda::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theLambdaLengthCut = theCutInMaxInteractionLength; - theLambdaKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); + } diff --git a/source/particles/hadrons/barions/src/G4LambdacPlus.cc b/source/particles/hadrons/barions/src/G4LambdacPlus.cc index 00d17678c5..d1c3ef6638 100644 --- a/source/particles/hadrons/barions/src/G4LambdacPlus.cc +++ b/source/particles/hadrons/barions/src/G4LambdacPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LambdacPlus.cc,v 1.5.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LambdacPlus.cc,v 1.7 2001/10/15 10:10:55 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,7 +85,4 @@ G4LambdacPlus G4LambdacPlus::theLambdacPlus( G4LambdacPlus* G4LambdacPlus::LambdacPlusDefinition(){return &theLambdacPlus;} G4LambdacPlus* G4LambdacPlus::LambdacPlus(){return &theLambdacPlus;} -// initialization for static cut values -G4double G4LambdacPlus::theLambdacPlusLengthCut = -1.0; -G4double* G4LambdacPlus::theLambdacPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/barions/src/G4Neutron.cc b/source/particles/hadrons/barions/src/G4Neutron.cc index a2504c4256..6c73200c0e 100644 --- a/source/particles/hadrons/barions/src/G4Neutron.cc +++ b/source/particles/hadrons/barions/src/G4Neutron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Neutron.cc,v 1.6.2.1 2001/06/28 19:10:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Neutron.cc,v 1.13 2001/10/28 05:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -37,6 +37,8 @@ #include "g4std/iomanip" #include "G4Neutron.hh" +#include "G4NeutronBetaDecayChannel.hh" +#include "G4DecayTable.hh" // ###################################################################### // ### NEUTRON ### @@ -57,6 +59,17 @@ G4Neutron::G4Neutron( lepton,baryon,encoding,stable,lifetime,decaytable ) { SetParticleSubType("nucleon"); + + //create Decay Table + G4DecayTable* table = GetDecayTable(); + if (table!=NULL) delete table; + table = new G4DecayTable(); + + // create a decay channel + G4VDecayChannel* mode = new G4NeutronBetaDecayChannel("neutron",1.00); + table->Insert(mode); + + SetDecayTable(table); } // ...................................................................... @@ -79,35 +92,20 @@ G4Neutron G4Neutron::theNeutron( ); G4Neutron* G4Neutron::NeutronDefinition(){return &theNeutron;} -// initialization for static cut values -G4double G4Neutron::theNeutronLengthCut = -1.0; -G4double* G4Neutron::theNeutronKineticEnergyCuts = NULL; +G4Neutron* G4Neutron::Neutron(){return &theNeutron;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4Neutron::SetCuts(G4double aCut) +void G4Neutron::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theNeutronLengthCut = theCutInMaxInteractionLength; - theNeutronKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); + } diff --git a/source/particles/hadrons/barions/src/G4OmegaMinus.cc b/source/particles/hadrons/barions/src/G4OmegaMinus.cc index 72fb3931b6..b0cda1e001 100644 --- a/source/particles/hadrons/barions/src/G4OmegaMinus.cc +++ b/source/particles/hadrons/barions/src/G4OmegaMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OmegaMinus.cc,v 1.5.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OmegaMinus.cc,v 1.8 2001/10/16 08:15:58 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -101,6 +101,5 @@ G4OmegaMinus G4OmegaMinus::theOmegaMinus( ); G4OmegaMinus* G4OmegaMinus::OmegaMinusDefinition(){return &theOmegaMinus;} -// initialization for static cut values -G4double G4OmegaMinus::theOmegaMinusLengthCut = -1.0; -G4double* G4OmegaMinus::theOmegaMinusKineticEnergyCuts = NULL; + +G4OmegaMinus* G4OmegaMinus::OmegaMinus(){return &theOmegaMinus;} diff --git a/source/particles/hadrons/barions/src/G4OmegacZero.cc b/source/particles/hadrons/barions/src/G4OmegacZero.cc index f0dfa6fd3e..2864f41679 100644 --- a/source/particles/hadrons/barions/src/G4OmegacZero.cc +++ b/source/particles/hadrons/barions/src/G4OmegacZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OmegacZero.cc,v 1.6.2.1 2001/06/28 19:10:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OmegacZero.cc,v 1.11 2001/10/28 05:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,9 +85,6 @@ G4OmegacZero G4OmegacZero::theOmegacZero( G4OmegacZero* G4OmegacZero::OmegacZeroDefinition(){return &theOmegacZero;} G4OmegacZero* G4OmegacZero::OmegacZero(){return &theOmegacZero;} -// initialization for static cut values -G4double G4OmegacZero::theOmegacZeroLengthCut = -1.0; -G4double* G4OmegacZero::theOmegacZeroKineticEnergyCuts = NULL; // ********************************************************************** @@ -95,25 +92,12 @@ G4double* G4OmegacZero::theOmegacZeroKineticEnergyCuts = NULL; // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4OmegacZero::SetCuts(G4double aCut) +void G4OmegacZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theOmegacZeroLengthCut = theCutInMaxInteractionLength; - theOmegacZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/barions/src/G4Proton.cc b/source/particles/hadrons/barions/src/G4Proton.cc index 2603d72074..697f452d45 100644 --- a/source/particles/hadrons/barions/src/G4Proton.cc +++ b/source/particles/hadrons/barions/src/G4Proton.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Proton.cc,v 1.4.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Proton.cc,v 1.7 2001/10/16 08:15:59 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -82,6 +82,8 @@ G4Proton G4Proton::theProton( ); G4Proton* G4Proton::ProtonDefinition(){return &theProton;} -// initialization for static cut values -G4double G4Proton::theProtonLengthCut = -1.0; -G4double* G4Proton::theProtonKineticEnergyCuts = NULL; + +G4Proton* G4Proton::Proton() +{ + return &theProton; +} diff --git a/source/particles/hadrons/barions/src/G4SigmaMinus.cc b/source/particles/hadrons/barions/src/G4SigmaMinus.cc index ff142a66d1..6ce0d6a618 100644 --- a/source/particles/hadrons/barions/src/G4SigmaMinus.cc +++ b/source/particles/hadrons/barions/src/G4SigmaMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmaMinus.cc,v 1.5.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmaMinus.cc,v 1.8 2001/10/16 08:15:59 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -97,6 +97,5 @@ G4SigmaMinus G4SigmaMinus::theSigmaMinus( ); G4SigmaMinus* G4SigmaMinus::SigmaMinusDefinition(){return &theSigmaMinus;} -// initialization for static cut values -G4double G4SigmaMinus::theSigmaMinusLengthCut = -1.0; -G4double* G4SigmaMinus::theSigmaMinusKineticEnergyCuts = NULL; + +G4SigmaMinus* G4SigmaMinus::SigmaMinus(){return &theSigmaMinus;} diff --git a/source/particles/hadrons/barions/src/G4SigmaPlus.cc b/source/particles/hadrons/barions/src/G4SigmaPlus.cc index fd7798d305..e90d948f98 100644 --- a/source/particles/hadrons/barions/src/G4SigmaPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmaPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmaPlus.cc,v 1.5.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmaPlus.cc,v 1.8 2001/10/16 08:16:00 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,6 +99,5 @@ G4SigmaPlus G4SigmaPlus::theSigmaPlus( ); G4SigmaPlus* G4SigmaPlus::SigmaPlusDefinition(){return &theSigmaPlus;} -// initialization for static cut values -G4double G4SigmaPlus::theSigmaPlusLengthCut = -1.0; -G4double* G4SigmaPlus::theSigmaPlusKineticEnergyCuts = NULL; + +G4SigmaPlus* G4SigmaPlus::SigmaPlus(){return &theSigmaPlus;} diff --git a/source/particles/hadrons/barions/src/G4SigmaZero.cc b/source/particles/hadrons/barions/src/G4SigmaZero.cc index 3b57e733d9..89be078aa9 100644 --- a/source/particles/hadrons/barions/src/G4SigmaZero.cc +++ b/source/particles/hadrons/barions/src/G4SigmaZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmaZero.cc,v 1.6.2.1 2001/06/28 19:10:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmaZero.cc,v 1.12 2001/10/28 05:08:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -94,35 +94,20 @@ G4SigmaZero G4SigmaZero::theSigmaZero( ); G4SigmaZero* G4SigmaZero::SigmaZeroDefinition(){return &theSigmaZero;} -// initialization for static cut values -G4double G4SigmaZero::theSigmaZeroLengthCut = -1.0; -G4double* G4SigmaZero::theSigmaZeroKineticEnergyCuts = NULL; +G4SigmaZero* G4SigmaZero::SigmaZero(){return &theSigmaZero;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4SigmaZero::SetCuts(G4double aCut) +void G4SigmaZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theSigmaZeroLengthCut = theCutInMaxInteractionLength; - theSigmaZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); + } diff --git a/source/particles/hadrons/barions/src/G4SigmacPlus.cc b/source/particles/hadrons/barions/src/G4SigmacPlus.cc index 6c6399f90c..efe21db8b7 100644 --- a/source/particles/hadrons/barions/src/G4SigmacPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmacPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmacPlus.cc,v 1.4.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmacPlus.cc,v 1.6 2001/10/15 10:10:57 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,6 +99,3 @@ G4SigmacPlus G4SigmacPlus::theSigmacPlus( G4SigmacPlus* G4SigmacPlus::SigmacPlusDefinition(){return &theSigmacPlus;} G4SigmacPlus* G4SigmacPlus::SigmacPlus(){return &theSigmacPlus;} -// initialization for static cut values -G4double G4SigmacPlus::theSigmacPlusLengthCut = -1.0; -G4double* G4SigmacPlus::theSigmacPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc b/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc index f90fd77fbe..4e819bce62 100644 --- a/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc +++ b/source/particles/hadrons/barions/src/G4SigmacPlusPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmacPlusPlus.cc,v 1.4.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmacPlusPlus.cc,v 1.6 2001/10/15 10:10:57 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,6 +99,3 @@ G4SigmacPlusPlus G4SigmacPlusPlus::theSigmacPlusPlus( G4SigmacPlusPlus* G4SigmacPlusPlus::SigmacPlusPlusDefinition(){return &theSigmacPlusPlus;} G4SigmacPlusPlus* G4SigmacPlusPlus::SigmacPlusPlus(){return &theSigmacPlusPlus;} -// initialization for static cut values -G4double G4SigmacPlusPlus::theSigmacPlusPlusLengthCut = -1.0; -G4double* G4SigmacPlusPlus::theSigmacPlusPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/barions/src/G4SigmacZero.cc b/source/particles/hadrons/barions/src/G4SigmacZero.cc index 30a7438280..4ab3208465 100644 --- a/source/particles/hadrons/barions/src/G4SigmacZero.cc +++ b/source/particles/hadrons/barions/src/G4SigmacZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SigmacZero.cc,v 1.5.2.1 2001/06/28 19:10:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmacZero.cc,v 1.10 2001/10/28 05:08:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,36 +99,18 @@ G4SigmacZero G4SigmacZero::theSigmacZero( G4SigmacZero* G4SigmacZero::SigmacZeroDefinition(){return &theSigmacZero;} G4SigmacZero* G4SigmacZero::SigmacZero(){return &theSigmacZero;} -// initialization for static cut values -G4double G4SigmacZero::theSigmacZeroLengthCut = -1.0; -G4double* G4SigmacZero::theSigmacZeroKineticEnergyCuts = NULL; - // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4SigmacZero::SetCuts(G4double aCut) +void G4SigmacZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theSigmacZeroLengthCut = theCutInMaxInteractionLength; - theSigmacZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/barions/src/G4VBaryon.cc b/source/particles/hadrons/barions/src/G4VBaryon.cc index 92de50d967..49d6019963 100644 --- a/source/particles/hadrons/barions/src/G4VBaryon.cc +++ b/source/particles/hadrons/barions/src/G4VBaryon.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VBaryon.cc,v 1.2.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VBaryon.cc,v 1.3 2001/07/11 10:01:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/barions/src/G4XiMinus.cc b/source/particles/hadrons/barions/src/G4XiMinus.cc index daba4f3107..a38dcc1d59 100644 --- a/source/particles/hadrons/barions/src/G4XiMinus.cc +++ b/source/particles/hadrons/barions/src/G4XiMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XiMinus.cc,v 1.5.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XiMinus.cc,v 1.8 2001/10/16 08:16:01 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -97,6 +97,5 @@ G4XiMinus G4XiMinus::theXiMinus( ); G4XiMinus* G4XiMinus::XiMinusDefinition(){return &theXiMinus;} -// initialization for static cut values -G4double G4XiMinus::theXiMinusLengthCut = -1.0; -G4double* G4XiMinus::theXiMinusKineticEnergyCuts = NULL; + +G4XiMinus* G4XiMinus::XiMinus(){return &theXiMinus;} diff --git a/source/particles/hadrons/barions/src/G4XiZero.cc b/source/particles/hadrons/barions/src/G4XiZero.cc index e888a3f7ea..c1b722839f 100644 --- a/source/particles/hadrons/barions/src/G4XiZero.cc +++ b/source/particles/hadrons/barions/src/G4XiZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XiZero.cc,v 1.6.2.1 2001/06/28 19:10:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XiZero.cc,v 1.12 2001/10/28 05:08:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -97,34 +97,19 @@ G4XiZero G4XiZero::theXiZero( ); G4XiZero* G4XiZero::XiZeroDefinition(){return &theXiZero;} -// initialization for static cut values -G4double G4XiZero::theXiZeroLengthCut = -1.0; -G4double* G4XiZero::theXiZeroKineticEnergyCuts = NULL; +G4XiZero* G4XiZero::XiZero(){return &theXiZero;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4XiZero::SetCuts(G4double aCut) +void G4XiZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theXiZeroLengthCut = theCutInMaxInteractionLength; - theXiZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/barions/src/G4XicPlus.cc b/source/particles/hadrons/barions/src/G4XicPlus.cc index bb754610da..e3591cba15 100644 --- a/source/particles/hadrons/barions/src/G4XicPlus.cc +++ b/source/particles/hadrons/barions/src/G4XicPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XicPlus.cc,v 1.5.4.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XicPlus.cc,v 1.7 2001/10/15 10:10:58 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -86,6 +86,3 @@ G4XicPlus G4XicPlus::theXicPlus( G4XicPlus* G4XicPlus::XicPlusDefinition(){return &theXicPlus;} G4XicPlus* G4XicPlus::XicPlus(){return &theXicPlus;} -// initialization for static cut values -G4double G4XicPlus::theXicPlusLengthCut = -1.0; -G4double* G4XicPlus::theXicPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/barions/src/G4XicZero.cc b/source/particles/hadrons/barions/src/G4XicZero.cc index 4148eacb9a..946aa65b69 100644 --- a/source/particles/hadrons/barions/src/G4XicZero.cc +++ b/source/particles/hadrons/barions/src/G4XicZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XicZero.cc,v 1.6.2.1 2001/06/28 19:10:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XicZero.cc,v 1.11 2001/10/28 05:08:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -86,34 +86,18 @@ G4XicZero G4XicZero::theXicZero( G4XicZero* G4XicZero::XicZeroDefinition(){return &theXicZero;} G4XicZero* G4XicZero::XicZero(){return &theXicZero;} -// initialization for static cut values -G4double G4XicZero::theXicZeroLengthCut = -1.0; -G4double* G4XicZero::theXicZeroKineticEnergyCuts = NULL; // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4XicZero::SetCuts(G4double aCut) +void G4XicZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theXicZeroLengthCut = theCutInMaxInteractionLength; - theXicZeroKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); + } diff --git a/source/particles/hadrons/ions/include/G4Alpha.hh b/source/particles/hadrons/ions/include/G4Alpha.hh index 24c7948a49..5c182a049e 100644 --- a/source/particles/hadrons/ions/include/G4Alpha.hh +++ b/source/particles/hadrons/ions/include/G4Alpha.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Alpha.hh,v 1.4.2.2 2001/06/28 20:19:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Alpha.hh,v 1.7 2001/10/16 08:16:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4Alpha : public G4VIon { private: static G4Alpha theAlpha; - static G4double theAlphaLengthCut; - static G4double* theAlphaKineticEnergyCuts; public: G4Alpha( @@ -73,29 +71,7 @@ class G4Alpha : public G4VIon virtual ~G4Alpha(); static G4Alpha* AlphaDefinition(); - static G4Alpha* Alpha(){return &theAlpha;} - static G4double GetCuts() {return theAlphaLengthCut;} - static G4double* GetCutsInEnergy() {return theAlphaKineticEnergyCuts;}; - - void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4Alpha* Alpha(); }; -inline void G4Alpha::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theAlphaLengthCut = theCutInMaxInteractionLength; - theAlphaKineticEnergyCuts = theKineticEnergyCuts; - -} - -inline void G4Alpha::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theAlphaLengthCut = theCutInMaxInteractionLength; - theAlphaKineticEnergyCuts = theKineticEnergyCuts; - -} #endif diff --git a/source/particles/hadrons/ions/include/G4Deuteron.hh b/source/particles/hadrons/ions/include/G4Deuteron.hh index 2f6bf7c66f..1a7fbed9c3 100644 --- a/source/particles/hadrons/ions/include/G4Deuteron.hh +++ b/source/particles/hadrons/ions/include/G4Deuteron.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Deuteron.hh,v 1.4.2.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Deuteron.hh,v 1.7 2001/10/16 08:16:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4Deuteron : public G4VIon { private: static G4Deuteron theDeuteron; - static G4double theDeuteronLengthCut; - static G4double* theDeuteronKineticEnergyCuts; public: G4Deuteron( @@ -73,31 +71,9 @@ class G4Deuteron : public G4VIon virtual ~G4Deuteron(); static G4Deuteron* DeuteronDefinition(); - static G4Deuteron* Deuteron(){return &theDeuteron;} - static G4double GetCuts() {return theDeuteronLengthCut;} - static G4double* GetCutsInEnergy() {return theDeuteronKineticEnergyCuts;}; - - void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4Deuteron* Deuteron(); }; -inline void G4Deuteron::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theDeuteronLengthCut = theCutInMaxInteractionLength; - theDeuteronKineticEnergyCuts = theKineticEnergyCuts; - -} - -inline void G4Deuteron::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theDeuteronLengthCut = theCutInMaxInteractionLength; - theDeuteronKineticEnergyCuts = theKineticEnergyCuts; - -} #endif diff --git a/source/particles/hadrons/ions/include/G4GenericIon.hh b/source/particles/hadrons/ions/include/G4GenericIon.hh index 8634fefd06..d4a69c4bc3 100644 --- a/source/particles/hadrons/ions/include/G4GenericIon.hh +++ b/source/particles/hadrons/ions/include/G4GenericIon.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GenericIon.hh,v 1.4.2.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GenericIon.hh,v 1.7 2001/10/16 08:16:05 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -52,8 +52,6 @@ class G4GenericIon : public G4VIon { private: static G4GenericIon theGenericIon; - static G4double theGenericIonLengthCut; - static G4double* theGenericIonKineticEnergyCuts; public: G4GenericIon( @@ -70,29 +68,7 @@ class G4GenericIon : public G4VIon virtual ~G4GenericIon(); static G4GenericIon* GenericIonDefinition(); - static G4GenericIon* GenericIon(){return &theGenericIon;} - static G4double GetCuts() {return theGenericIonLengthCut;} - static G4double* GetCutsInEnergy() {return theGenericIonKineticEnergyCuts;}; - - void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4GenericIon* GenericIon(); }; -inline void G4GenericIon::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theGenericIonLengthCut = theCutInMaxInteractionLength; - theGenericIonKineticEnergyCuts = theKineticEnergyCuts; - -} - -inline void G4GenericIon::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theGenericIonLengthCut = theCutInMaxInteractionLength; - theGenericIonKineticEnergyCuts = theKineticEnergyCuts; - -} #endif diff --git a/source/particles/hadrons/ions/include/G4He3.hh b/source/particles/hadrons/ions/include/G4He3.hh index 22ca08c59e..b8bd889567 100644 --- a/source/particles/hadrons/ions/include/G4He3.hh +++ b/source/particles/hadrons/ions/include/G4He3.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4He3.hh,v 1.4.2.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He3.hh,v 1.7 2001/10/16 08:16:06 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -51,8 +51,6 @@ class G4He3 : public G4VIon { private: static G4He3 theHe3; - static G4double theHe3LengthCut; - static G4double* theHe3KineticEnergyCuts; public: G4He3( @@ -69,28 +67,9 @@ class G4He3 : public G4VIon virtual ~G4He3(); static G4He3* He3Definition(); - static G4He3* He3() {return &theHe3;} - static G4double GetCuts() {return theHe3LengthCut;} - static G4double* GetCutsInEnergy() {return theHe3KineticEnergyCuts;}; - - void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4He3* He3(); }; -inline void G4He3::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theHe3LengthCut = theCutInMaxInteractionLength; - theHe3KineticEnergyCuts = theKineticEnergyCuts; - -} -inline void G4He3::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theHe3LengthCut = theCutInMaxInteractionLength; - theHe3KineticEnergyCuts = theKineticEnergyCuts; -} + #endif diff --git a/source/particles/hadrons/ions/include/G4IonConstructor.hh b/source/particles/hadrons/ions/include/G4IonConstructor.hh index 7404637856..84cdeffcfb 100644 --- a/source/particles/hadrons/ions/include/G4IonConstructor.hh +++ b/source/particles/hadrons/ions/include/G4IonConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IonConstructor.hh,v 1.2.4.1 2001/06/28 19:10:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IonConstructor.hh,v 1.3 2001/07/11 10:01:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/include/G4Triton.hh b/source/particles/hadrons/ions/include/G4Triton.hh index 728a2dd6c7..794e8cbae3 100644 --- a/source/particles/hadrons/ions/include/G4Triton.hh +++ b/source/particles/hadrons/ions/include/G4Triton.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Triton.hh,v 1.4.2.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Triton.hh,v 1.7 2001/10/16 08:16:06 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4Triton : public G4VIon { private: static G4Triton theTriton; - static G4double theTritonLengthCut; - static G4double* theTritonKineticEnergyCuts; public: G4Triton( @@ -74,31 +72,9 @@ class G4Triton : public G4VIon virtual ~G4Triton(); static G4Triton* TritonDefinition(); - static G4Triton* Triton() {return &theTriton;} - static G4double GetCuts() {return theTritonLengthCut;} - static G4double* GetCutsInEnergy() {return theTritonKineticEnergyCuts;}; - - void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4Triton* Triton(); + }; -inline void G4Triton::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theTritonLengthCut = theCutInMaxInteractionLength; - theTritonKineticEnergyCuts = theKineticEnergyCuts; - -} - -inline void G4Triton::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theTritonLengthCut = theCutInMaxInteractionLength; - theTritonKineticEnergyCuts = theKineticEnergyCuts; - -} - #endif diff --git a/source/particles/hadrons/ions/include/G4VIon.hh b/source/particles/hadrons/ions/include/G4VIon.hh index 73b6dbe33b..76cd1ad3f5 100644 --- a/source/particles/hadrons/ions/include/G4VIon.hh +++ b/source/particles/hadrons/ions/include/G4VIon.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VIon.hh,v 1.3.4.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VIon.hh,v 1.4 2001/07/11 10:01:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/ions/src/G4Alpha.cc b/source/particles/hadrons/ions/src/G4Alpha.cc index 749b9024d1..752bda74d6 100644 --- a/source/particles/hadrons/ions/src/G4Alpha.cc +++ b/source/particles/hadrons/ions/src/G4Alpha.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Alpha.cc,v 1.3.4.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Alpha.cc,v 1.6 2001/10/16 08:16:07 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,6 +85,4 @@ G4Alpha G4Alpha::theAlpha( ); G4Alpha* G4Alpha::AlphaDefinition(){return &theAlpha;} -// initialization for static cut values -G4double G4Alpha::theAlphaLengthCut; -G4double* G4Alpha::theAlphaKineticEnergyCuts; +G4Alpha* G4Alpha::Alpha(){return &theAlpha;} diff --git a/source/particles/hadrons/ions/src/G4Deuteron.cc b/source/particles/hadrons/ions/src/G4Deuteron.cc index 773cc75948..592affba7b 100644 --- a/source/particles/hadrons/ions/src/G4Deuteron.cc +++ b/source/particles/hadrons/ions/src/G4Deuteron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Deuteron.cc,v 1.3.4.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Deuteron.cc,v 1.6 2001/10/16 08:16:08 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,6 +85,4 @@ G4Deuteron G4Deuteron::theDeuteron( ); G4Deuteron* G4Deuteron::DeuteronDefinition(){return &theDeuteron;} -// initialization for static cut values -G4double G4Deuteron::theDeuteronLengthCut; -G4double* G4Deuteron::theDeuteronKineticEnergyCuts; +G4Deuteron* G4Deuteron::Deuteron(){return &theDeuteron;} diff --git a/source/particles/hadrons/ions/src/G4GenericIon.cc b/source/particles/hadrons/ions/src/G4GenericIon.cc index 3a6dec714c..8270ab3991 100644 --- a/source/particles/hadrons/ions/src/G4GenericIon.cc +++ b/source/particles/hadrons/ions/src/G4GenericIon.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GenericIon.cc,v 1.3.4.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GenericIon.cc,v 1.6 2001/10/16 08:16:08 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,6 +85,4 @@ G4GenericIon G4GenericIon::theGenericIon( ); G4GenericIon* G4GenericIon::GenericIonDefinition(){return &theGenericIon;} -// initialization for static cut values -G4double G4GenericIon::theGenericIonLengthCut; -G4double* G4GenericIon::theGenericIonKineticEnergyCuts; +G4GenericIon* G4GenericIon::GenericIon(){return &theGenericIon;} diff --git a/source/particles/hadrons/ions/src/G4He3.cc b/source/particles/hadrons/ions/src/G4He3.cc index 40c714068b..4746a5707e 100644 --- a/source/particles/hadrons/ions/src/G4He3.cc +++ b/source/particles/hadrons/ions/src/G4He3.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4He3.cc,v 1.3.4.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He3.cc,v 1.6 2001/10/16 08:16:08 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -82,6 +82,4 @@ G4He3 G4He3::theHe3( ); G4He3* G4He3::He3Definition(){return &theHe3;} -// initialization for static cut values -G4double G4He3::theHe3LengthCut; -G4double* G4He3::theHe3KineticEnergyCuts; +G4He3* G4He3::He3(){return &theHe3;} diff --git a/source/particles/hadrons/ions/src/G4IonConstructor.cc b/source/particles/hadrons/ions/src/G4IonConstructor.cc index ca3dfb3e0a..c161d1da13 100644 --- a/source/particles/hadrons/ions/src/G4IonConstructor.cc +++ b/source/particles/hadrons/ions/src/G4IonConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IonConstructor.cc,v 1.2.4.1 2001/06/28 19:10:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IonConstructor.cc,v 1.3 2001/07/11 10:01:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4Triton.cc b/source/particles/hadrons/ions/src/G4Triton.cc index 627b1e7839..5a376cb218 100644 --- a/source/particles/hadrons/ions/src/G4Triton.cc +++ b/source/particles/hadrons/ions/src/G4Triton.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Triton.cc,v 1.3.4.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Triton.cc,v 1.6 2001/10/16 08:16:08 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -84,6 +84,4 @@ G4Triton G4Triton::theTriton( ); G4Triton* G4Triton::TritonDefinition(){return &theTriton;} -// initialization for static cut values -G4double G4Triton::theTritonLengthCut; -G4double* G4Triton::theTritonKineticEnergyCuts; +G4Triton* G4Triton::Triton(){return &theTriton;} diff --git a/source/particles/hadrons/ions/src/G4VIon.cc b/source/particles/hadrons/ions/src/G4VIon.cc index 60afa4d51b..bcb6a11ec0 100644 --- a/source/particles/hadrons/ions/src/G4VIon.cc +++ b/source/particles/hadrons/ions/src/G4VIon.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VIon.cc,v 1.2.4.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VIon.cc,v 1.3 2001/07/11 10:01:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh index f583833259..ba077f1926 100644 --- a/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiBMesonZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiBMesonZero.hh,v 1.3.4.2 2001/06/28 20:19:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiBMesonZero.hh,v 1.7 2001/10/28 05:01:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiBMesonZero : public G4VMeson { private: static G4AntiBMesonZero theAntiBMesonZero; - static G4double theAntiBMesonZeroLengthCut; - static G4double* theAntiBMesonZeroKineticEnergyCuts; private: // constructors are hide as private G4AntiBMesonZero( @@ -74,10 +72,8 @@ class G4AntiBMesonZero : public G4VMeson static G4AntiBMesonZero* AntiBMesonZeroDefinition(); static G4AntiBMesonZero* AntiBMesonZero(); - static G4double GetCuts() {return theAntiBMesonZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiBMesonZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; diff --git a/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh index a32fdf964e..edaaa44fc5 100644 --- a/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiBsMesonZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiBsMesonZero.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiBsMesonZero.hh,v 1.7 2001/10/28 05:01:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiBsMesonZero : public G4VMeson { private: static G4AntiBsMesonZero theAntiBsMesonZero; - static G4double theAntiBsMesonZeroLengthCut; - static G4double* theAntiBsMesonZeroKineticEnergyCuts; private: // constructors are hide as private G4AntiBsMesonZero( @@ -74,10 +72,8 @@ class G4AntiBsMesonZero : public G4VMeson static G4AntiBsMesonZero* AntiBsMesonZeroDefinition(); static G4AntiBsMesonZero* AntiBsMesonZero(); - static G4double GetCuts() {return theAntiBsMesonZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiBsMesonZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; diff --git a/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh b/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh index 4cdfe56168..c8257ffe5f 100644 --- a/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiDMesonZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiDMesonZero.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiDMesonZero.hh,v 1.7 2001/10/28 05:01:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4AntiDMesonZero : public G4VMeson { private: static G4AntiDMesonZero theAntiDMesonZero; - static G4double theAntiDMesonZeroLengthCut; - static G4double* theAntiDMesonZeroKineticEnergyCuts; private: // constructors are hide as private G4AntiDMesonZero( @@ -74,10 +72,8 @@ class G4AntiDMesonZero : public G4VMeson static G4AntiDMesonZero* AntiDMesonZeroDefinition(); static G4AntiDMesonZero* AntiDMesonZero(); - static G4double GetCuts() {return theAntiDMesonZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiDMesonZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; diff --git a/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh b/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh index 04273e81f8..ed124c1475 100644 --- a/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh +++ b/source/particles/hadrons/mesons/include/G4AntiKaonZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiKaonZero.hh,v 1.4.2.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiKaonZero.hh,v 1.9 2001/10/28 05:01:27 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -56,9 +55,6 @@ class G4AntiKaonZero : public G4VMeson { private: static G4AntiKaonZero theAntiKaonZero; - static G4double theAntiKaonZeroLengthCut; - static G4double* theAntiKaonZeroKineticEnergyCuts; - private: // constructors are hide as private @@ -78,20 +74,17 @@ class G4AntiKaonZero : public G4VMeson virtual ~G4AntiKaonZero() {} static G4AntiKaonZero* AntiKaonZeroDefinition(); - static G4AntiKaonZero* AntiKaonZero() {return &theAntiKaonZero;} - static G4double GetCuts() {return theAntiKaonZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiKaonZeroKineticEnergyCuts;}; + static G4AntiKaonZero* AntiKaonZero(); - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + void CalcEnergyCuts( const G4Material* ); }; -inline void G4AntiKaonZero::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theAntiKaonZeroLengthCut = theCutInMaxInteractionLength; - theAntiKaonZeroKineticEnergyCuts = theKineticEnergyCuts; -} #endif + + + + + + + + diff --git a/source/particles/hadrons/mesons/include/G4BMesonMinus.hh b/source/particles/hadrons/mesons/include/G4BMesonMinus.hh index 2e097c42c0..4de25b5473 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BMesonMinus.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BMesonMinus.hh,v 1.5 2001/10/15 10:06:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4BMesonMinus : public G4VMeson { private: static G4BMesonMinus theBMesonMinus; - static G4double theBMesonMinusLengthCut; - static G4double* theBMesonMinusKineticEnergyCuts; private: // constructors are hide as private G4BMesonMinus( @@ -74,17 +72,6 @@ class G4BMesonMinus : public G4VMeson static G4BMesonMinus* BMesonMinusDefinition(); static G4BMesonMinus* BMesonMinus(); - static G4double GetCuts() {return theBMesonMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theBMesonMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4BMesonMinus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theBMesonMinusLengthCut = theCutInMaxInteractionLength; - theBMesonMinusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4BMesonPlus.hh b/source/particles/hadrons/mesons/include/G4BMesonPlus.hh index 3679994e1a..47c1a5effd 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BMesonPlus.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BMesonPlus.hh,v 1.5 2001/10/15 10:06:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4BMesonPlus : public G4VMeson { private: static G4BMesonPlus theBMesonPlus; - static G4double theBMesonPlusLengthCut; - static G4double* theBMesonPlusKineticEnergyCuts; private: // constructors are hide as private G4BMesonPlus( @@ -74,17 +72,6 @@ class G4BMesonPlus : public G4VMeson static G4BMesonPlus* BMesonPlusDefinition(); static G4BMesonPlus* BMesonPlus(); - static G4double GetCuts() {return theBMesonPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theBMesonPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4BMesonPlus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theBMesonPlusLengthCut = theCutInMaxInteractionLength; - theBMesonPlusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4BMesonZero.hh b/source/particles/hadrons/mesons/include/G4BMesonZero.hh index bff2b04f62..d4de1dd7a7 100644 --- a/source/particles/hadrons/mesons/include/G4BMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4BMesonZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BMesonZero.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BMesonZero.hh,v 1.7 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4BMesonZero : public G4VMeson { private: static G4BMesonZero theBMesonZero; - static G4double theBMesonZeroLengthCut; - static G4double* theBMesonZeroKineticEnergyCuts; private: // constructors are hide as private G4BMesonZero( @@ -74,10 +72,8 @@ class G4BMesonZero : public G4VMeson static G4BMesonZero* BMesonZeroDefinition(); static G4BMesonZero* BMesonZero(); - static G4double GetCuts() {return theBMesonZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theBMesonZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/mesons/include/G4BsMesonZero.hh b/source/particles/hadrons/mesons/include/G4BsMesonZero.hh index 8ade2fd949..7d953b89e7 100644 --- a/source/particles/hadrons/mesons/include/G4BsMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4BsMesonZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BsMesonZero.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BsMesonZero.hh,v 1.7 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4BsMesonZero : public G4VMeson { private: static G4BsMesonZero theBsMesonZero; - static G4double theBsMesonZeroLengthCut; - static G4double* theBsMesonZeroKineticEnergyCuts; private: // constructors are hide as private G4BsMesonZero( @@ -74,10 +72,8 @@ class G4BsMesonZero : public G4VMeson static G4BsMesonZero* BsMesonZeroDefinition(); static G4BsMesonZero* BsMesonZero(); - static G4double GetCuts() {return theBsMesonZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theBsMesonZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/mesons/include/G4DMesonMinus.hh b/source/particles/hadrons/mesons/include/G4DMesonMinus.hh index b600014f49..0139661720 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DMesonMinus.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DMesonMinus.hh,v 1.5 2001/10/15 10:06:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4DMesonMinus : public G4VMeson { private: static G4DMesonMinus theDMesonMinus; - static G4double theDMesonMinusLengthCut; - static G4double* theDMesonMinusKineticEnergyCuts; private: // constructors are hide as private G4DMesonMinus( @@ -74,17 +72,6 @@ class G4DMesonMinus : public G4VMeson static G4DMesonMinus* DMesonMinusDefinition(); static G4DMesonMinus* DMesonMinus(); - static G4double GetCuts() {return theDMesonMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theDMesonMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4DMesonMinus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theDMesonMinusLengthCut = theCutInMaxInteractionLength; - theDMesonMinusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4DMesonPlus.hh b/source/particles/hadrons/mesons/include/G4DMesonPlus.hh index e2baaf0a10..24617c93f8 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DMesonPlus.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DMesonPlus.hh,v 1.5 2001/10/15 10:06:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4DMesonPlus : public G4VMeson { private: static G4DMesonPlus theDMesonPlus; - static G4double theDMesonPlusLengthCut; - static G4double* theDMesonPlusKineticEnergyCuts; private: // constructors are hide as private G4DMesonPlus( @@ -74,17 +72,6 @@ class G4DMesonPlus : public G4VMeson static G4DMesonPlus* DMesonPlusDefinition(); static G4DMesonPlus* DMesonPlus(); - static G4double GetCuts() {return theDMesonPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theDMesonPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4DMesonPlus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theDMesonPlusLengthCut = theCutInMaxInteractionLength; - theDMesonPlusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4DMesonZero.hh b/source/particles/hadrons/mesons/include/G4DMesonZero.hh index 8610cc09e4..7284a87397 100644 --- a/source/particles/hadrons/mesons/include/G4DMesonZero.hh +++ b/source/particles/hadrons/mesons/include/G4DMesonZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DMesonZero.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DMesonZero.hh,v 1.7 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4DMesonZero : public G4VMeson { private: static G4DMesonZero theDMesonZero; - static G4double theDMesonZeroLengthCut; - static G4double* theDMesonZeroKineticEnergyCuts; private: // constructors are hide as private G4DMesonZero( @@ -74,10 +72,8 @@ class G4DMesonZero : public G4VMeson static G4DMesonZero* DMesonZeroDefinition(); static G4DMesonZero* DMesonZero(); - static G4double GetCuts() {return theDMesonZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theDMesonZeroKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh b/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh index 456e78135b..28f8722bda 100644 --- a/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4DsMesonMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DsMesonMinus.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DsMesonMinus.hh,v 1.5 2001/10/15 10:06:13 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4DsMesonMinus : public G4VMeson { private: static G4DsMesonMinus theDsMesonMinus; - static G4double theDsMesonMinusLengthCut; - static G4double* theDsMesonMinusKineticEnergyCuts; private: // constructors are hide as private G4DsMesonMinus( @@ -74,17 +72,6 @@ class G4DsMesonMinus : public G4VMeson static G4DsMesonMinus* DsMesonMinusDefinition(); static G4DsMesonMinus* DsMesonMinus(); - static G4double GetCuts() {return theDsMesonMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theDsMesonMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4DsMesonMinus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theDsMesonMinusLengthCut = theCutInMaxInteractionLength; - theDsMesonMinusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh b/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh index 07e2ec8bab..ae3f4ab73f 100644 --- a/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4DsMesonPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DsMesonPlus.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DsMesonPlus.hh,v 1.5 2001/10/15 10:06:13 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4DsMesonPlus : public G4VMeson { private: static G4DsMesonPlus theDsMesonPlus; - static G4double theDsMesonPlusLengthCut; - static G4double* theDsMesonPlusKineticEnergyCuts; private: // constructors are hide as private G4DsMesonPlus( @@ -74,17 +72,6 @@ class G4DsMesonPlus : public G4VMeson static G4DsMesonPlus* DsMesonPlusDefinition(); static G4DsMesonPlus* DsMesonPlus(); - static G4double GetCuts() {return theDsMesonPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theDsMesonPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); }; -inline void G4DsMesonPlus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theDsMesonPlusLengthCut = theCutInMaxInteractionLength; - theDsMesonPlusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4Eta.hh b/source/particles/hadrons/mesons/include/G4Eta.hh index 926f4ba47b..075e4c0b87 100644 --- a/source/particles/hadrons/mesons/include/G4Eta.hh +++ b/source/particles/hadrons/mesons/include/G4Eta.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Eta.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Eta.hh,v 1.8 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -55,8 +54,6 @@ class G4Eta : public G4VMeson { private: static G4Eta theEta; - static G4double theEtaLengthCut; - static G4double* theEtaKineticEnergyCuts; private: // constructors are hide as private G4Eta( @@ -75,11 +72,9 @@ class G4Eta : public G4VMeson virtual ~G4Eta(){} static G4Eta* EtaDefinition(); - static G4Eta* Eta(){return &theEta;} - static G4double GetCuts() {return theEtaLengthCut;} - static G4double* GetCutsInEnergy() {return theEtaKineticEnergyCuts;}; + static G4Eta* Eta(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/mesons/include/G4EtaPrime.hh b/source/particles/hadrons/mesons/include/G4EtaPrime.hh index e161813b9e..7d57f9e67d 100644 --- a/source/particles/hadrons/mesons/include/G4EtaPrime.hh +++ b/source/particles/hadrons/mesons/include/G4EtaPrime.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EtaPrime.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EtaPrime.hh,v 1.8 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -51,8 +51,6 @@ class G4EtaPrime : public G4VMeson { private: static G4EtaPrime theEtaPrime; - static G4double theEtaPrimeLengthCut; - static G4double* theEtaPrimeKineticEnergyCuts; private: // constructors are hide as private G4EtaPrime( @@ -71,11 +69,9 @@ class G4EtaPrime : public G4VMeson virtual ~G4EtaPrime(){} static G4EtaPrime* EtaPrimeDefinition(); - static G4EtaPrime* EtaPrime(){return &theEtaPrime;} - static G4double GetCuts() {return theEtaPrimeLengthCut;} - static G4double* GetCutsInEnergy() {return theEtaPrimeKineticEnergyCuts;}; + static G4EtaPrime* EtaPrime(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/mesons/include/G4JPsi.hh b/source/particles/hadrons/mesons/include/G4JPsi.hh index 0fbea829d2..9aafbe77ed 100644 --- a/source/particles/hadrons/mesons/include/G4JPsi.hh +++ b/source/particles/hadrons/mesons/include/G4JPsi.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4JPsi.hh,v 1.3.4.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4JPsi.hh,v 1.7 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4JPsi : public G4VMeson { private: static G4JPsi theJPsi; - static G4double theJPsiLengthCut; - static G4double* theJPsiKineticEnergyCuts; private: // constructors are hide as private G4JPsi( @@ -75,10 +73,8 @@ class G4JPsi : public G4VMeson static G4JPsi* JPsiDefinition(); static G4JPsi* JPsi(); - static G4double GetCuts() {return theJPsiLengthCut;} - static G4double* GetCutsInEnergy() {return theJPsiKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/mesons/include/G4KaonMinus.hh b/source/particles/hadrons/mesons/include/G4KaonMinus.hh index a9ed4a54fc..0c1927862d 100644 --- a/source/particles/hadrons/mesons/include/G4KaonMinus.hh +++ b/source/particles/hadrons/mesons/include/G4KaonMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonMinus.hh,v 1.4.2.2 2001/06/28 20:19:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonMinus.hh,v 1.7 2001/10/16 08:16:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -55,8 +54,6 @@ class G4KaonMinus : public G4VMeson { private: static G4KaonMinus theKaonMinus; - static G4double theKaonMinusLengthCut; - static G4double* theKaonMinusKineticEnergyCuts; private: // constructors are hide as private G4KaonMinus( @@ -75,28 +72,7 @@ class G4KaonMinus : public G4VMeson virtual ~G4KaonMinus(){} static G4KaonMinus* KaonMinusDefinition(); - static G4KaonMinus* KaonMinus() {return &theKaonMinus;} - static G4double GetCuts() {return theKaonMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theKaonMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4KaonMinus* KaonMinus(); }; -inline void G4KaonMinus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theKaonMinusLengthCut = theCutInMaxInteractionLength; - theKaonMinusKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4KaonMinus::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theKaonMinusLengthCut = theCutInMaxInteractionLength; - theKaonMinusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4KaonPlus.hh b/source/particles/hadrons/mesons/include/G4KaonPlus.hh index 7643331459..dc2871b673 100644 --- a/source/particles/hadrons/mesons/include/G4KaonPlus.hh +++ b/source/particles/hadrons/mesons/include/G4KaonPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonPlus.hh,v 1.4.2.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonPlus.hh,v 1.7 2001/10/16 08:16:09 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -55,8 +54,6 @@ class G4KaonPlus : public G4VMeson { private: static G4KaonPlus theKaonPlus; - static G4double theKaonPlusLengthCut; - static G4double* theKaonPlusKineticEnergyCuts; private: // constructors are hide as private G4KaonPlus( @@ -74,29 +71,8 @@ class G4KaonPlus : public G4VMeson public: virtual ~G4KaonPlus(){} static G4KaonPlus* KaonPlusDefinition(); - static G4KaonPlus* KaonPlus() {return &theKaonPlus;} - static G4double GetCuts() {return theKaonPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theKaonPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4KaonPlus* KaonPlus(); }; -inline void G4KaonPlus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - theKaonPlusLengthCut = theCutInMaxInteractionLength; - theKaonPlusKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4KaonPlus::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theKaonPlusLengthCut = theCutInMaxInteractionLength; - theKaonPlusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4KaonZero.hh b/source/particles/hadrons/mesons/include/G4KaonZero.hh index f1c2d6673d..31eb3e9c92 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZero.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonZero.hh,v 1.4.2.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonZero.hh,v 1.9 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4KaonZero : public G4VMeson { private: static G4KaonZero theKaonZero; - static G4double theKaonZeroLengthCut; - static G4double* theKaonZeroKineticEnergyCuts; private: // constructors are hide as private G4KaonZero( @@ -75,21 +73,10 @@ class G4KaonZero : public G4VMeson virtual ~G4KaonZero() {} static G4KaonZero* KaonZeroDefinition(); - static G4KaonZero* KaonZero() {return &theKaonZero;} - static G4double GetCuts() {return theKaonZeroLengthCut;} - static G4double* GetCutsInEnergy() {return theKaonZeroKineticEnergyCuts;}; + static G4KaonZero* KaonZero(); - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + void CalcEnergyCuts( const G4Material* ); }; -inline void G4KaonZero::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theKaonZeroLengthCut = theCutInMaxInteractionLength; - theKaonZeroKineticEnergyCuts = theKineticEnergyCuts; -} #endif diff --git a/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh b/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh index 76aac4e585..57a3d8bd7d 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZeroLong.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonZeroLong.hh,v 1.3.4.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonZeroLong.hh,v 1.8 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -55,8 +54,6 @@ class G4KaonZeroLong : public G4VMeson { private: static G4KaonZeroLong theKaonZeroLong; - static G4double theKaonZeroLongLengthCut; - static G4double* theKaonZeroLongKineticEnergyCuts; private: // constructors are hide as private G4KaonZeroLong( @@ -75,11 +72,9 @@ class G4KaonZeroLong : public G4VMeson virtual ~G4KaonZeroLong() {} static G4KaonZeroLong* KaonZeroLongDefinition(); - static G4KaonZeroLong* KaonZeroLong(){return &theKaonZeroLong;} - static G4double GetCuts() {return theKaonZeroLongLengthCut;} - static G4double* GetCutsInEnergy() {return theKaonZeroLongKineticEnergyCuts;}; + static G4KaonZeroLong* KaonZeroLong(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh b/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh index 7d54396b7d..80c12ab930 100644 --- a/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh +++ b/source/particles/hadrons/mesons/include/G4KaonZeroShort.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonZeroShort.hh,v 1.3.4.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonZeroShort.hh,v 1.8 2001/10/28 05:01:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -55,8 +54,6 @@ class G4KaonZeroShort : public G4VMeson { private: static G4KaonZeroShort theKaonZeroShort; - static G4double theKaonZeroShortLengthCut; - static G4double* theKaonZeroShortKineticEnergyCuts; public: private: // constructors are hide as private @@ -75,11 +72,9 @@ class G4KaonZeroShort : public G4VMeson public: virtual ~G4KaonZeroShort() {} static G4KaonZeroShort* KaonZeroShortDefinition(); - static G4KaonZeroShort* KaonZeroShort(){return &theKaonZeroShort;} - static G4double GetCuts() {return theKaonZeroShortLengthCut;} - static G4double* GetCutsInEnergy() {return theKaonZeroShortKineticEnergyCuts;}; + static G4KaonZeroShort* KaonZeroShort(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/hadrons/mesons/include/G4MesonConstructor.hh b/source/particles/hadrons/mesons/include/G4MesonConstructor.hh index 4e92f7a044..e5c9d0e2fa 100644 --- a/source/particles/hadrons/mesons/include/G4MesonConstructor.hh +++ b/source/particles/hadrons/mesons/include/G4MesonConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MesonConstructor.hh,v 1.2.4.1 2001/06/28 19:10:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MesonConstructor.hh,v 1.3 2001/07/11 10:01:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/include/G4PionMinus.hh b/source/particles/hadrons/mesons/include/G4PionMinus.hh index eab2aeb78f..7b280b088a 100644 --- a/source/particles/hadrons/mesons/include/G4PionMinus.hh +++ b/source/particles/hadrons/mesons/include/G4PionMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PionMinus.hh,v 1.4.2.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionMinus.hh,v 1.7 2001/10/16 08:16:10 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -55,8 +54,6 @@ class G4PionMinus : public G4VMeson { private: static G4PionMinus thePionMinus; - static G4double thePionMinusLengthCut; - static G4double* thePionMinusKineticEnergyCuts; private: // constructors are hide as private G4PionMinus( @@ -74,28 +71,8 @@ class G4PionMinus : public G4VMeson public: virtual ~G4PionMinus(){} static G4PionMinus* PionMinusDefinition(); - static G4PionMinus* PionMinus(){return &thePionMinus;} - static G4double GetCuts() {return thePionMinusLengthCut;} - static G4double* GetCutsInEnergy() {return thePionMinusKineticEnergyCuts;}; + static G4PionMinus* PionMinus(); - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); }; -inline void G4PionMinus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - thePionMinusLengthCut = theCutInMaxInteractionLength; - thePionMinusKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4PionMinus::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - thePionMinusLengthCut = theCutInMaxInteractionLength; - thePionMinusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4PionPlus.hh b/source/particles/hadrons/mesons/include/G4PionPlus.hh index 766ccc6357..34dcc99da5 100644 --- a/source/particles/hadrons/mesons/include/G4PionPlus.hh +++ b/source/particles/hadrons/mesons/include/G4PionPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PionPlus.hh,v 1.4.2.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionPlus.hh,v 1.7 2001/10/16 08:16:10 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -55,8 +54,6 @@ class G4PionPlus : public G4VMeson { private: static G4PionPlus thePionPlus; - static G4double thePionPlusLengthCut; - static G4double* thePionPlusKineticEnergyCuts; private: G4PionPlus( @@ -75,29 +72,8 @@ class G4PionPlus : public G4VMeson virtual ~G4PionPlus(){} static G4PionPlus* PionPlusDefinition(); - static G4PionPlus* PionPlus() {return &thePionPlus;} - static G4double GetCuts() {return thePionPlusLengthCut;} - static G4double* GetCutsInEnergy() {return thePionPlusKineticEnergyCuts;}; - - void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4PionPlus* PionPlus(); }; -inline void G4PionPlus::SetCuts(G4double aCut) -{ - G4ParticleWithCuts::SetCuts(aCut); - thePionPlusLengthCut = theCutInMaxInteractionLength; - thePionPlusKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4PionPlus::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - thePionPlusLengthCut = theCutInMaxInteractionLength; - thePionPlusKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/hadrons/mesons/include/G4PionZero.hh b/source/particles/hadrons/mesons/include/G4PionZero.hh index e0e59c59e4..83a89e4888 100644 --- a/source/particles/hadrons/mesons/include/G4PionZero.hh +++ b/source/particles/hadrons/mesons/include/G4PionZero.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PionZero.hh,v 1.4.2.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionZero.hh,v 1.9 2001/10/28 05:01:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -33,7 +33,6 @@ // **************************************************************** // Added particle definitions, H.Kurashige, 19 April 1996 // Revised, G.Cosmo, 6 June 1996 -// Added not static GetEnergyCuts() and GetLengthCuts(), G.Cosmo, 11 July 1996 // ---------------------------------------------------------------- // Each class inheriting from G4VMeson @@ -55,8 +54,6 @@ class G4PionZero : public G4VMeson { private: static G4PionZero thePionZero; - static G4double thePionZeroLengthCut; - static G4double* thePionZeroKineticEnergyCuts; private: // constructors are hide as private G4PionZero( @@ -75,20 +72,8 @@ class G4PionZero : public G4VMeson virtual ~G4PionZero() {} static G4PionZero* PionZeroDefinition(); - static G4PionZero* PionZero() {return &thePionZero;} - static G4double GetCuts() {return thePionZeroLengthCut;} - static G4double* GetCutsInEnergy() {return thePionZeroKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); + static G4PionZero* PionZero(); + void CalcEnergyCuts( const G4Material* ); }; -inline void G4PionZero::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - thePionZeroLengthCut = theCutInMaxInteractionLength; - thePionZeroKineticEnergyCuts = theKineticEnergyCuts; -} #endif diff --git a/source/particles/hadrons/mesons/include/G4VMeson.hh b/source/particles/hadrons/mesons/include/G4VMeson.hh index b498b0d093..ef9dcfc29e 100644 --- a/source/particles/hadrons/mesons/include/G4VMeson.hh +++ b/source/particles/hadrons/mesons/include/G4VMeson.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMeson.hh,v 1.2.4.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMeson.hh,v 1.3 2001/07/11 10:01:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc index 107a11ec8d..fcba1eabae 100644 --- a/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiBMesonZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiBMesonZero.cc,v 1.5.2.1 2001/06/28 19:10:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiBMesonZero.cc,v 1.10 2001/10/28 05:01:31 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -83,28 +83,14 @@ G4AntiBMesonZero G4AntiBMesonZero::theAntiBMesonZero( G4AntiBMesonZero* G4AntiBMesonZero::AntiBMesonZeroDefinition(){return &theAntiBMesonZero;} G4AntiBMesonZero* G4AntiBMesonZero::AntiBMesonZero(){return &theAntiBMesonZero;} -// initialization for static cut values -G4double G4AntiBMesonZero::theAntiBMesonZeroLengthCut = -1.0; -G4double* G4AntiBMesonZero::theAntiBMesonZeroKineticEnergyCuts = NULL; -void G4AntiBMesonZero::SetCuts(G4double aCut) +void G4AntiBMesonZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiBMesonZeroLengthCut = theCutInMaxInteractionLength; - theAntiBMesonZeroKineticEnergyCuts = theKineticEnergyCuts; } diff --git a/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc index fe7395c98b..dff54f43d7 100644 --- a/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiBsMesonZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiBsMesonZero.cc,v 1.5.2.1 2001/06/28 19:10:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiBsMesonZero.cc,v 1.10 2001/10/28 05:01:31 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -83,28 +83,14 @@ G4AntiBsMesonZero G4AntiBsMesonZero::theAntiBsMesonZero( G4AntiBsMesonZero* G4AntiBsMesonZero::AntiBsMesonZeroDefinition(){return &theAntiBsMesonZero;} G4AntiBsMesonZero* G4AntiBsMesonZero::AntiBsMesonZero(){return &theAntiBsMesonZero;} -// initialization for static cut values -G4double G4AntiBsMesonZero::theAntiBsMesonZeroLengthCut = -1.0; -G4double* G4AntiBsMesonZero::theAntiBsMesonZeroKineticEnergyCuts = NULL; -void G4AntiBsMesonZero::SetCuts(G4double aCut) +void G4AntiBsMesonZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiBsMesonZeroLengthCut = theCutInMaxInteractionLength; - theAntiBsMesonZeroKineticEnergyCuts = theKineticEnergyCuts; } diff --git a/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc b/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc index a6d8aac027..68cf751d4d 100644 --- a/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiDMesonZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiDMesonZero.cc,v 1.5.2.1 2001/06/28 19:10:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiDMesonZero.cc,v 1.10 2001/10/28 05:01:31 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -83,28 +83,12 @@ G4AntiDMesonZero G4AntiDMesonZero::theAntiDMesonZero( G4AntiDMesonZero* G4AntiDMesonZero::AntiDMesonZeroDefinition(){return &theAntiDMesonZero;} G4AntiDMesonZero* G4AntiDMesonZero::AntiDMesonZero(){return &theAntiDMesonZero;} -// initialization for static cut values -G4double G4AntiDMesonZero::theAntiDMesonZeroLengthCut = -1.0; -G4double* G4AntiDMesonZero::theAntiDMesonZeroKineticEnergyCuts = NULL; -void G4AntiDMesonZero::SetCuts(G4double aCut) +void G4AntiDMesonZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiDMesonZeroLengthCut = theCutInMaxInteractionLength; - theAntiDMesonZeroKineticEnergyCuts = theKineticEnergyCuts; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc b/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc index 7ab3aac5b8..b226cc21be 100644 --- a/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc +++ b/source/particles/hadrons/mesons/src/G4AntiKaonZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiKaonZero.cc,v 1.4.2.1 2001/06/28 19:10:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiKaonZero.cc,v 1.10 2001/10/28 05:01:32 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,33 +99,19 @@ G4AntiKaonZero G4AntiKaonZero::theAntiKaonZero( ); G4AntiKaonZero* G4AntiKaonZero::AntiKaonZeroDefinition(){return &theAntiKaonZero;} -// initialization for static cut values -G4double G4AntiKaonZero::theAntiKaonZeroLengthCut = -1.0; -G4double* G4AntiKaonZero::theAntiKaonZeroKineticEnergyCuts = NULL; - +G4AntiKaonZero* G4AntiKaonZero::AntiKaonZero(){return &theAntiKaonZero;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4AntiKaonZero::SetCuts(G4double aCut) +void G4AntiKaonZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theAntiKaonZeroLengthCut = theCutInMaxInteractionLength; - theAntiKaonZeroKineticEnergyCuts = theKineticEnergyCuts; } diff --git a/source/particles/hadrons/mesons/src/G4BMesonMinus.cc b/source/particles/hadrons/mesons/src/G4BMesonMinus.cc index 93c648f4cd..e811110dc8 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BMesonMinus.cc,v 1.4.4.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BMesonMinus.cc,v 1.6 2001/10/15 10:08:22 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,9 +85,6 @@ G4BMesonMinus G4BMesonMinus::theBMesonMinus G4BMesonMinus* G4BMesonMinus::BMesonMinusDefinition(){return &theBMesonMinus;} G4BMesonMinus* G4BMesonMinus::BMesonMinus(){return &theBMesonMinus;} -// initialization for static cut values -G4double G4BMesonMinus::theBMesonMinusLengthCut = -1.0; -G4double* G4BMesonMinus::theBMesonMinusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/mesons/src/G4BMesonPlus.cc b/source/particles/hadrons/mesons/src/G4BMesonPlus.cc index 2594faa852..33152e2d66 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BMesonPlus.cc,v 1.4.4.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BMesonPlus.cc,v 1.6 2001/10/15 10:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -84,9 +84,6 @@ G4BMesonPlus G4BMesonPlus::theBMesonPlus( G4BMesonPlus* G4BMesonPlus::BMesonPlusDefinition(){return &theBMesonPlus;} G4BMesonPlus* G4BMesonPlus::BMesonPlus(){return &theBMesonPlus;} -// initialization for static cut values -G4double G4BMesonPlus::theBMesonPlusLengthCut = -1.0; -G4double* G4BMesonPlus::theBMesonPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/mesons/src/G4BMesonZero.cc b/source/particles/hadrons/mesons/src/G4BMesonZero.cc index 571839c0fa..beeda26707 100644 --- a/source/particles/hadrons/mesons/src/G4BMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4BMesonZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BMesonZero.cc,v 1.5.2.1 2001/06/28 19:10:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BMesonZero.cc,v 1.10 2001/10/28 05:01:33 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -84,9 +84,6 @@ G4BMesonZero G4BMesonZero::theBMesonZero( G4BMesonZero* G4BMesonZero::BMesonZeroDefinition(){return &theBMesonZero;} G4BMesonZero* G4BMesonZero::BMesonZero(){return &theBMesonZero;} -// initialization for static cut values -G4double G4BMesonZero::theBMesonZeroLengthCut = -1.0; -G4double* G4BMesonZero::theBMesonZeroKineticEnergyCuts = NULL; // ********************************************************************** // **************************** SetCuts ********************************* @@ -94,24 +91,13 @@ G4double* G4BMesonZero::theBMesonZeroKineticEnergyCuts = NULL; // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4BMesonZero::SetCuts(G4double aCut) +void G4BMesonZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theBMesonZeroLengthCut = theCutInMaxInteractionLength; - theBMesonZeroKineticEnergyCuts = theKineticEnergyCuts; } diff --git a/source/particles/hadrons/mesons/src/G4BsMesonZero.cc b/source/particles/hadrons/mesons/src/G4BsMesonZero.cc index a81827e9ea..0f77d7f6b3 100644 --- a/source/particles/hadrons/mesons/src/G4BsMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4BsMesonZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BsMesonZero.cc,v 1.5.2.1 2001/06/28 19:10:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BsMesonZero.cc,v 1.10 2001/10/28 05:01:33 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -83,9 +83,6 @@ G4BsMesonZero G4BsMesonZero::theBsMesonZero( G4BsMesonZero* G4BsMesonZero::BsMesonZeroDefinition(){return &theBsMesonZero;} G4BsMesonZero* G4BsMesonZero::BsMesonZero(){return &theBsMesonZero;} -// initialization for static cut values -G4double G4BsMesonZero::theBsMesonZeroLengthCut = -1.0; -G4double* G4BsMesonZero::theBsMesonZeroKineticEnergyCuts = NULL; // ********************************************************************** // **************************** SetCuts ********************************* @@ -93,27 +90,14 @@ G4double* G4BsMesonZero::theBsMesonZeroKineticEnergyCuts = NULL; // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4BsMesonZero::SetCuts(G4double aCut) +void G4BsMesonZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theBsMesonZeroLengthCut = theCutInMaxInteractionLength; - theBsMesonZeroKineticEnergyCuts = theKineticEnergyCuts; + + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } - diff --git a/source/particles/hadrons/mesons/src/G4DMesonMinus.cc b/source/particles/hadrons/mesons/src/G4DMesonMinus.cc index 48434e7d7f..2e9bba8086 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DMesonMinus.cc,v 1.4.4.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DMesonMinus.cc,v 1.6 2001/10/15 10:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -85,9 +85,6 @@ G4DMesonMinus G4DMesonMinus::theDMesonMinus G4DMesonMinus* G4DMesonMinus::DMesonMinusDefinition(){return &theDMesonMinus;} G4DMesonMinus* G4DMesonMinus::DMesonMinus(){return &theDMesonMinus;} -// initialization for static cut values -G4double G4DMesonMinus::theDMesonMinusLengthCut = -1.0; -G4double* G4DMesonMinus::theDMesonMinusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/mesons/src/G4DMesonPlus.cc b/source/particles/hadrons/mesons/src/G4DMesonPlus.cc index 88d6fd28e7..1ed56185ce 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DMesonPlus.cc,v 1.4.4.2 2001/06/28 20:19:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DMesonPlus.cc,v 1.6 2001/10/15 10:08:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -84,9 +84,6 @@ G4DMesonPlus G4DMesonPlus::theDMesonPlus( G4DMesonPlus* G4DMesonPlus::DMesonPlusDefinition(){return &theDMesonPlus;} G4DMesonPlus* G4DMesonPlus::DMesonPlus(){return &theDMesonPlus;} -// initialization for static cut values -G4double G4DMesonPlus::theDMesonPlusLengthCut = -1.0; -G4double* G4DMesonPlus::theDMesonPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/mesons/src/G4DMesonZero.cc b/source/particles/hadrons/mesons/src/G4DMesonZero.cc index dc10a53dd5..a71f287159 100644 --- a/source/particles/hadrons/mesons/src/G4DMesonZero.cc +++ b/source/particles/hadrons/mesons/src/G4DMesonZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DMesonZero.cc,v 1.5.2.1 2001/06/28 19:10:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DMesonZero.cc,v 1.10 2001/10/28 05:01:33 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -83,9 +83,6 @@ G4DMesonZero G4DMesonZero::theDMesonZero( G4DMesonZero* G4DMesonZero::DMesonZeroDefinition(){return &theDMesonZero;} G4DMesonZero* G4DMesonZero::DMesonZero(){return &theDMesonZero;} -// initialization for static cut values -G4double G4DMesonZero::theDMesonZeroLengthCut = -1.0; -G4double* G4DMesonZero::theDMesonZeroKineticEnergyCuts = NULL; // ********************************************************************** // **************************** SetCuts ********************************* @@ -93,24 +90,13 @@ G4double* G4DMesonZero::theDMesonZeroKineticEnergyCuts = NULL; // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4DMesonZero::SetCuts(G4double aCut) +void G4DMesonZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theDMesonZeroLengthCut = theCutInMaxInteractionLength; - theDMesonZeroKineticEnergyCuts = theKineticEnergyCuts; } diff --git a/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc b/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc index e2b1c90081..89e9b62f15 100644 --- a/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4DsMesonMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DsMesonMinus.cc,v 1.4.4.2 2001/06/28 20:19:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DsMesonMinus.cc,v 1.6 2001/10/15 10:08:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -84,9 +84,6 @@ G4DsMesonMinus G4DsMesonMinus::theDsMesonMinus( G4DsMesonMinus* G4DsMesonMinus::DsMesonMinusDefinition(){return &theDsMesonMinus;} G4DsMesonMinus* G4DsMesonMinus::DsMesonMinus(){return &theDsMesonMinus;} -// initialization for static cut values -G4double G4DsMesonMinus::theDsMesonMinusLengthCut = -1.0; -G4double* G4DsMesonMinus::theDsMesonMinusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc b/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc index 2cf092605b..06360739e1 100644 --- a/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4DsMesonPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DsMesonPlus.cc,v 1.4.4.2 2001/06/28 20:19:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DsMesonPlus.cc,v 1.6 2001/10/15 10:08:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -84,9 +84,6 @@ G4DsMesonPlus G4DsMesonPlus::theDsMesonPlus( G4DsMesonPlus* G4DsMesonPlus::DsMesonPlusDefinition(){return &theDsMesonPlus;} G4DsMesonPlus* G4DsMesonPlus::DsMesonPlus(){return &theDsMesonPlus;} -// initialization for static cut values -G4double G4DsMesonPlus::theDsMesonPlusLengthCut = -1.0; -G4double* G4DsMesonPlus::theDsMesonPlusKineticEnergyCuts = NULL; diff --git a/source/particles/hadrons/mesons/src/G4Eta.cc b/source/particles/hadrons/mesons/src/G4Eta.cc index 3d05420348..4c03955a2e 100644 --- a/source/particles/hadrons/mesons/src/G4Eta.cc +++ b/source/particles/hadrons/mesons/src/G4Eta.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Eta.cc,v 1.5.2.1 2001/06/28 19:10:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Eta.cc,v 1.11 2001/10/28 05:01:33 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -107,32 +107,18 @@ G4Eta G4Eta::theEta( ); G4Eta* G4Eta::EtaDefinition(){return &theEta;} -// initialization for static cut values -G4double G4Eta::theEtaLengthCut = -1.0; -G4double* G4Eta::theEtaKineticEnergyCuts = NULL; +G4Eta* G4Eta::Eta(){return &theEta;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4Eta::SetCuts(G4double aCut) +void G4Eta::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theEtaLengthCut = theCutInMaxInteractionLength; - theEtaKineticEnergyCuts = theKineticEnergyCuts; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/mesons/src/G4EtaPrime.cc b/source/particles/hadrons/mesons/src/G4EtaPrime.cc index e55cec727b..c20a6fb122 100644 --- a/source/particles/hadrons/mesons/src/G4EtaPrime.cc +++ b/source/particles/hadrons/mesons/src/G4EtaPrime.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EtaPrime.cc,v 1.5.2.1 2001/06/28 19:10:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EtaPrime.cc,v 1.11 2001/10/28 05:01:33 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------- @@ -104,32 +104,18 @@ G4EtaPrime G4EtaPrime::theEtaPrime( ); G4EtaPrime* G4EtaPrime::EtaPrimeDefinition(){return &theEtaPrime;} -// initialization for static cut values -G4double G4EtaPrime::theEtaPrimeLengthCut = -1.0; -G4double* G4EtaPrime::theEtaPrimeKineticEnergyCuts = NULL; +G4EtaPrime* G4EtaPrime::EtaPrime(){return &theEtaPrime;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4EtaPrime::SetCuts(G4double aCut) +void G4EtaPrime::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theEtaPrimeLengthCut = theCutInMaxInteractionLength; - theEtaPrimeKineticEnergyCuts = theKineticEnergyCuts; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/mesons/src/G4JPsi.cc b/source/particles/hadrons/mesons/src/G4JPsi.cc index 0041685edf..effb5b2926 100644 --- a/source/particles/hadrons/mesons/src/G4JPsi.cc +++ b/source/particles/hadrons/mesons/src/G4JPsi.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4JPsi.cc,v 1.5.2.1 2001/06/28 19:10:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4JPsi.cc,v 1.10 2001/10/28 05:01:33 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -87,9 +87,6 @@ G4JPsi G4JPsi::theJPsi( G4JPsi* G4JPsi::JPsiDefinition(){return &theJPsi;} G4JPsi* G4JPsi::JPsi(){return &theJPsi;} -// initialization for static cut values -G4double G4JPsi::theJPsiLengthCut = -1.0; -G4double* G4JPsi::theJPsiKineticEnergyCuts = NULL; // ********************************************************************** // **************************** SetCuts ********************************* @@ -97,24 +94,13 @@ G4double* G4JPsi::theJPsiKineticEnergyCuts = NULL; // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4JPsi::SetCuts(G4double aCut) +void G4JPsi::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theJPsiLengthCut = theCutInMaxInteractionLength; - theJPsiKineticEnergyCuts = theKineticEnergyCuts; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); + } diff --git a/source/particles/hadrons/mesons/src/G4KaonMinus.cc b/source/particles/hadrons/mesons/src/G4KaonMinus.cc index 9cf62f30dc..d8f91d0835 100644 --- a/source/particles/hadrons/mesons/src/G4KaonMinus.cc +++ b/source/particles/hadrons/mesons/src/G4KaonMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonMinus.cc,v 1.4.4.2 2001/06/28 20:19:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonMinus.cc,v 1.7 2001/10/16 08:16:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -107,6 +107,4 @@ G4KaonMinus G4KaonMinus::theKaonMinus( ); G4KaonMinus* G4KaonMinus::KaonMinusDefinition(){return &theKaonMinus;} -// initialization for static cut values -G4double G4KaonMinus::theKaonMinusLengthCut = -1.0; -G4double* G4KaonMinus::theKaonMinusKineticEnergyCuts = NULL; +G4KaonMinus* G4KaonMinus::KaonMinus(){return &theKaonMinus;} diff --git a/source/particles/hadrons/mesons/src/G4KaonPlus.cc b/source/particles/hadrons/mesons/src/G4KaonPlus.cc index 617363b033..ac1083b67d 100644 --- a/source/particles/hadrons/mesons/src/G4KaonPlus.cc +++ b/source/particles/hadrons/mesons/src/G4KaonPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonPlus.cc,v 1.4.4.2 2001/06/28 20:19:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonPlus.cc,v 1.7 2001/10/16 08:16:12 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -109,9 +109,8 @@ G4KaonPlus G4KaonPlus::theKaonPlus( ); G4KaonPlus* G4KaonPlus::KaonPlusDefinition(){return &theKaonPlus;} -// initialization for static cut values -G4double G4KaonPlus::theKaonPlusLengthCut = -1.0; -G4double* G4KaonPlus::theKaonPlusKineticEnergyCuts = NULL; + +G4KaonPlus* G4KaonPlus::KaonPlus(){return &theKaonPlus;} diff --git a/source/particles/hadrons/mesons/src/G4KaonZero.cc b/source/particles/hadrons/mesons/src/G4KaonZero.cc index a2263a875b..7072ab0852 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZero.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonZero.cc,v 1.4.2.1 2001/06/28 19:10:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonZero.cc,v 1.10 2001/10/28 05:01:33 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -99,32 +99,18 @@ G4KaonZero G4KaonZero::theKaonZero( ); G4KaonZero* G4KaonZero::KaonZeroDefinition(){return &theKaonZero;} -// initialization for static cut values -G4double G4KaonZero::theKaonZeroLengthCut = -1.0; -G4double* G4KaonZero::theKaonZeroKineticEnergyCuts; +G4KaonZero* G4KaonZero::KaonZero(){return &theKaonZero;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4KaonZero::SetCuts(G4double aCut) +void G4KaonZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theKaonZeroLengthCut = theCutInMaxInteractionLength; - theKaonZeroKineticEnergyCuts = theKineticEnergyCuts; + + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc b/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc index 0f2bd90744..9b27b684f3 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZeroLong.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonZeroLong.cc,v 1.5.2.1 2001/06/28 19:10:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonZeroLong.cc,v 1.11 2001/10/28 05:01:33 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -108,9 +108,7 @@ G4KaonZeroLong G4KaonZeroLong::theKaonZeroLong( ); G4KaonZeroLong* G4KaonZeroLong::KaonZeroLongDefinition(){return &theKaonZeroLong;} -// initialization for static cut values -G4double G4KaonZeroLong::theKaonZeroLongLengthCut = -1.0; -G4double* G4KaonZeroLong::theKaonZeroLongKineticEnergyCuts = NULL; +G4KaonZeroLong* G4KaonZeroLong::KaonZeroLong(){return &theKaonZeroLong;} // ********************************************************************** // **************************** SetCuts ********************************* @@ -118,22 +116,10 @@ G4double* G4KaonZeroLong::theKaonZeroLongKineticEnergyCuts = NULL; // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4KaonZeroLong::SetCuts(G4double aCut) +void G4KaonZeroLong::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theKaonZeroLongLengthCut = theCutInMaxInteractionLength; - theKaonZeroLongKineticEnergyCuts = theKineticEnergyCuts; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc b/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc index d0cca595d0..693a8622bf 100644 --- a/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc +++ b/source/particles/hadrons/mesons/src/G4KaonZeroShort.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KaonZeroShort.cc,v 1.5.2.1 2001/06/28 19:10:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonZeroShort.cc,v 1.11 2001/10/28 05:01:34 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -101,10 +101,8 @@ G4KaonZeroShort G4KaonZeroShort::theKaonZeroShort( ); G4KaonZeroShort* G4KaonZeroShort::KaonZeroShortDefinition(){return &theKaonZeroShort;} -// initialization for static cut values -G4double G4KaonZeroShort::theKaonZeroShortLengthCut = -1.0; -G4double* G4KaonZeroShort::theKaonZeroShortKineticEnergyCuts = NULL; +G4KaonZeroShort* G4KaonZeroShort::KaonZeroShort(){return &theKaonZeroShort;} // ********************************************************************** // **************************** SetCuts ********************************* @@ -112,23 +110,11 @@ G4double* G4KaonZeroShort::theKaonZeroShortKineticEnergyCuts = NULL; // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4KaonZeroShort::SetCuts(G4double aCut) +void G4KaonZeroShort::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - theKaonZeroShortLengthCut = theCutInMaxInteractionLength; - theKaonZeroShortKineticEnergyCuts = theKineticEnergyCuts; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); } diff --git a/source/particles/hadrons/mesons/src/G4MesonConstructor.cc b/source/particles/hadrons/mesons/src/G4MesonConstructor.cc index 8493161b8b..9f6b2bf066 100644 --- a/source/particles/hadrons/mesons/src/G4MesonConstructor.cc +++ b/source/particles/hadrons/mesons/src/G4MesonConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MesonConstructor.cc,v 1.3.4.1 2001/06/28 19:10:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MesonConstructor.cc,v 1.4 2001/07/11 10:01:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/hadrons/mesons/src/G4PionMinus.cc b/source/particles/hadrons/mesons/src/G4PionMinus.cc index a5e39dacb3..886829081c 100644 --- a/source/particles/hadrons/mesons/src/G4PionMinus.cc +++ b/source/particles/hadrons/mesons/src/G4PionMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PionMinus.cc,v 1.4.4.2 2001/06/28 20:19:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionMinus.cc,v 1.7 2001/10/16 08:16:14 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -97,9 +97,9 @@ G4PionMinus G4PionMinus::thePionMinus( ); G4PionMinus* G4PionMinus::PionMinusDefinition(){return &thePionMinus;} -// initialization for static cut values -G4double G4PionMinus::thePionMinusLengthCut = -1.0; -G4double* G4PionMinus::thePionMinusKineticEnergyCuts = NULL; + +G4PionMinus* G4PionMinus::PionMinus(){return &thePionMinus;} + diff --git a/source/particles/hadrons/mesons/src/G4PionPlus.cc b/source/particles/hadrons/mesons/src/G4PionPlus.cc index 4375956075..1640cdc6a6 100644 --- a/source/particles/hadrons/mesons/src/G4PionPlus.cc +++ b/source/particles/hadrons/mesons/src/G4PionPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PionPlus.cc,v 1.5.4.2 2001/06/28 20:19:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionPlus.cc,v 1.8 2001/10/16 08:16:14 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -98,10 +98,8 @@ G4PionPlus G4PionPlus::thePionPlus( ); G4PionPlus* G4PionPlus::PionPlusDefinition(){return &thePionPlus;} -// initialization for static cut values -G4double G4PionPlus::thePionPlusLengthCut = -1.0; -G4double* G4PionPlus::thePionPlusKineticEnergyCuts = NULL; - + +G4PionPlus* G4PionPlus::PionPlus(){return &thePionPlus;} diff --git a/source/particles/hadrons/mesons/src/G4PionZero.cc b/source/particles/hadrons/mesons/src/G4PionZero.cc index d2402f0ae8..f0d6499a6e 100644 --- a/source/particles/hadrons/mesons/src/G4PionZero.cc +++ b/source/particles/hadrons/mesons/src/G4PionZero.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PionZero.cc,v 1.5.2.1 2001/06/28 19:10:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionZero.cc,v 1.11 2001/10/28 05:01:34 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -107,33 +107,20 @@ G4PionZero G4PionZero::thePionZero( ); G4PionZero* G4PionZero::PionZeroDefinition(){return &thePionZero;} -// initialization for static cut values -G4double G4PionZero::thePionZeroLengthCut = -1.0; -G4double* G4PionZero::thePionZeroKineticEnergyCuts = NULL; +G4PionZero* G4PionZero::PionZero(){return &thePionZero;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** // In this version Input Cut Value is meaning less // theKineticEnergyCuts for all materials are set to LowestEnergy -void G4PionZero::SetCuts(G4double aCut) +void G4PionZero::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; + - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(LowestEnergy); - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = LowestEnergy; - } - thePionZeroLengthCut = theCutInMaxInteractionLength; - thePionZeroKineticEnergyCuts = theKineticEnergyCuts; } diff --git a/source/particles/hadrons/mesons/src/G4VMeson.cc b/source/particles/hadrons/mesons/src/G4VMeson.cc index 30fbb71757..1f66483795 100644 --- a/source/particles/hadrons/mesons/src/G4VMeson.cc +++ b/source/particles/hadrons/mesons/src/G4VMeson.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMeson.cc,v 1.2.4.2 2001/06/28 20:19:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMeson.cc,v 1.3 2001/07/11 10:01:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/leptons/include/G4AntiNeutrinoE.hh b/source/particles/leptons/include/G4AntiNeutrinoE.hh index 92f8ad243b..69ad4c51e6 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoE.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoE.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiNeutrinoE.hh,v 1.3.4.2 2001/06/28 20:19:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutrinoE.hh,v 1.8 2001/10/28 05:05:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4AntiNeutrinoE : public G4VLepton { private: static G4AntiNeutrinoE theAntiNeutrinoE; - static G4double theAntiNeutrinoELengthCut; - static G4double* theAntiNeutrinoEKineticEnergyCuts; private: // constructors are hide as private G4AntiNeutrinoE( @@ -75,11 +73,9 @@ class G4AntiNeutrinoE : public G4VLepton virtual ~G4AntiNeutrinoE(){} static G4AntiNeutrinoE* AntiNeutrinoEDefinition(); - static G4AntiNeutrinoE* AntiNeutrinoE(){return &theAntiNeutrinoE;} - static G4double GetCuts() {return theAntiNeutrinoELengthCut;} - static G4double* GetCutsInEnergy() {return theAntiNeutrinoEKineticEnergyCuts;}; + static G4AntiNeutrinoE* AntiNeutrinoE(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/leptons/include/G4AntiNeutrinoMu.hh b/source/particles/leptons/include/G4AntiNeutrinoMu.hh index 3c4715ad6e..ae1c583f9c 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoMu.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoMu.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiNeutrinoMu.hh,v 1.3.4.2 2001/06/28 20:19:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutrinoMu.hh,v 1.8 2001/10/28 05:05:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4AntiNeutrinoMu : public G4VLepton { private: static G4AntiNeutrinoMu theAntiNeutrinoMu; - static G4double theAntiNeutrinoMuLengthCut; - static G4double* theAntiNeutrinoMuKineticEnergyCuts; private: // constructors are hide as private G4AntiNeutrinoMu( @@ -75,11 +73,9 @@ class G4AntiNeutrinoMu : public G4VLepton virtual ~G4AntiNeutrinoMu(){} static G4AntiNeutrinoMu* AntiNeutrinoMuDefinition(); - static G4AntiNeutrinoMu* AntiNeutrinoMu() {return &theAntiNeutrinoMu;} - static G4double GetCuts() {return theAntiNeutrinoMuLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiNeutrinoMuKineticEnergyCuts;}; + static G4AntiNeutrinoMu* AntiNeutrinoMu(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/leptons/include/G4AntiNeutrinoTau.hh b/source/particles/leptons/include/G4AntiNeutrinoTau.hh index cc149cfe64..6e27f32c03 100644 --- a/source/particles/leptons/include/G4AntiNeutrinoTau.hh +++ b/source/particles/leptons/include/G4AntiNeutrinoTau.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiNeutrinoTau.hh,v 1.3.4.2 2001/06/28 20:19:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutrinoTau.hh,v 1.8 2001/10/28 05:05:28 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4AntiNeutrinoTau : public G4VLepton { private: static G4AntiNeutrinoTau theAntiNeutrinoTau; - static G4double theAntiNeutrinoTauLengthCut; - static G4double* theAntiNeutrinoTauKineticEnergyCuts; private: // constructors are hide as private G4AntiNeutrinoTau( @@ -74,11 +72,9 @@ class G4AntiNeutrinoTau : public G4VLepton virtual ~G4AntiNeutrinoTau(){} static G4AntiNeutrinoTau* AntiNeutrinoTauDefinition(); - static G4AntiNeutrinoTau* AntiNeutrinoTau(){return &theAntiNeutrinoTau;} - static G4double GetCuts() {return theAntiNeutrinoTauLengthCut;} - static G4double* GetCutsInEnergy() {return theAntiNeutrinoTauKineticEnergyCuts;}; + static G4AntiNeutrinoTau* AntiNeutrinoTau(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/leptons/include/G4Electron.hh b/source/particles/leptons/include/G4Electron.hh index 89af29e7a0..51d1e73305 100644 --- a/source/particles/leptons/include/G4Electron.hh +++ b/source/particles/leptons/include/G4Electron.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Electron.hh,v 1.4.2.2 2001/06/28 20:19:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Electron.hh,v 1.7 2001/10/16 08:16:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -56,8 +56,6 @@ class G4Electron : public G4VLepton friend class G4Positron; private: static G4Electron theElectron; - static G4double theElectronLengthCut; - static G4double* theElectronKineticEnergyCuts; protected: G4double ComputeLoss(G4double AtomicNumber, G4double KineticEnergy) const; @@ -87,34 +85,9 @@ class G4Electron : public G4VLepton static G4Electron* ElectronDefinition(); static G4Electron* Electron(); - static G4double GetCuts() {return theElectronLengthCut;} - static G4double* GetCutsInEnergy() {return theElectronKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); - }; -inline void G4Electron::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theElectronLengthCut = theCutInMaxInteractionLength; - theElectronKineticEnergyCuts = theKineticEnergyCuts; - -} - -inline void G4Electron::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theElectronLengthCut = theCutInMaxInteractionLength; - theElectronKineticEnergyCuts = theKineticEnergyCuts; -} - -inline G4Electron* G4Electron::Electron() -{ return &theElectron; } - #endif @@ -126,3 +99,4 @@ inline G4Electron* G4Electron::Electron() + diff --git a/source/particles/leptons/include/G4LeptonConstructor.hh b/source/particles/leptons/include/G4LeptonConstructor.hh index 0c80e2b9a8..9e0950decc 100644 --- a/source/particles/leptons/include/G4LeptonConstructor.hh +++ b/source/particles/leptons/include/G4LeptonConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LeptonConstructor.hh,v 1.2.4.1 2001/06/28 19:10:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LeptonConstructor.hh,v 1.3 2001/07/11 10:01:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/leptons/include/G4MuonMinus.hh b/source/particles/leptons/include/G4MuonMinus.hh index 64d76aa281..37bb11c20d 100644 --- a/source/particles/leptons/include/G4MuonMinus.hh +++ b/source/particles/leptons/include/G4MuonMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuonMinus.hh,v 1.4.2.2 2001/06/28 20:19:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonMinus.hh,v 1.7 2001/10/16 08:16:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4MuonMinus : public G4VLepton { private: static G4MuonMinus theMuonMinus; - static G4double theMuonMinusLengthCut; - static G4double* theMuonMinusKineticEnergyCuts; private: // constructors are hide as private G4MuonMinus( @@ -75,33 +73,9 @@ class G4MuonMinus : public G4VLepton static G4MuonMinus* MuonMinusDefinition(); static G4MuonMinus* MuonMinus(); - static G4double GetCuts() {return theMuonMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theMuonMinusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); }; -inline void G4MuonMinus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theMuonMinusLengthCut = theCutInMaxInteractionLength; - theMuonMinusKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4MuonMinus::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theMuonMinusLengthCut = theCutInMaxInteractionLength; - theMuonMinusKineticEnergyCuts = theKineticEnergyCuts; -} - - -inline G4MuonMinus* G4MuonMinus::MuonMinus() -{ return &theMuonMinus; } #endif diff --git a/source/particles/leptons/include/G4MuonPlus.hh b/source/particles/leptons/include/G4MuonPlus.hh index 56e8586c8a..8705bfd756 100644 --- a/source/particles/leptons/include/G4MuonPlus.hh +++ b/source/particles/leptons/include/G4MuonPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuonPlus.hh,v 1.4.2.2 2001/06/28 20:19:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonPlus.hh,v 1.7 2001/10/16 08:16:15 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4MuonPlus : public G4VLepton { private: static G4MuonPlus theMuonPlus; - static G4double theMuonPlusLengthCut; - static G4double* theMuonPlusKineticEnergyCuts; private: // constructors are hide as private G4MuonPlus( @@ -76,32 +74,9 @@ class G4MuonPlus : public G4VLepton static G4MuonPlus* MuonPlusDefinition(); static G4MuonPlus* MuonPlus(); - static G4double GetCuts() {return theMuonPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theMuonPlusKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); - }; -inline void G4MuonPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theMuonPlusLengthCut = theCutInMaxInteractionLength; - theMuonPlusKineticEnergyCuts = theKineticEnergyCuts; -} -inline void G4MuonPlus::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theMuonPlusLengthCut = theCutInMaxInteractionLength; - theMuonPlusKineticEnergyCuts = theKineticEnergyCuts; -} - -inline G4MuonPlus* G4MuonPlus::MuonPlus() -{ return &theMuonPlus; } #endif diff --git a/source/particles/leptons/include/G4NeutrinoE.hh b/source/particles/leptons/include/G4NeutrinoE.hh index 0f16f462b3..1a5a17640a 100644 --- a/source/particles/leptons/include/G4NeutrinoE.hh +++ b/source/particles/leptons/include/G4NeutrinoE.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NeutrinoE.hh,v 1.3.4.2 2001/06/28 20:19:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutrinoE.hh,v 1.8 2001/10/28 05:05:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4NeutrinoE : public G4VLepton { private: static G4NeutrinoE theNeutrinoE; - static G4double theNeutrinoELengthCut; - static G4double* theNeutrinoEKineticEnergyCuts; private: G4NeutrinoE( @@ -75,11 +73,9 @@ class G4NeutrinoE : public G4VLepton virtual ~G4NeutrinoE(){} static G4NeutrinoE* NeutrinoEDefinition(); - static G4NeutrinoE* NeutrinoE(){return &theNeutrinoE;} - static G4double GetCuts() {return theNeutrinoELengthCut;} - static G4double* GetCutsInEnergy() {return theNeutrinoEKineticEnergyCuts;}; + static G4NeutrinoE* NeutrinoE(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/leptons/include/G4NeutrinoMu.hh b/source/particles/leptons/include/G4NeutrinoMu.hh index ae77eb391e..ba85db0957 100644 --- a/source/particles/leptons/include/G4NeutrinoMu.hh +++ b/source/particles/leptons/include/G4NeutrinoMu.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NeutrinoMu.hh,v 1.3.4.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutrinoMu.hh,v 1.8 2001/10/28 05:05:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -54,8 +54,6 @@ class G4NeutrinoMu : public G4VLepton { private: static G4NeutrinoMu theNeutrinoMu; - static G4double theNeutrinoMuLengthCut; - static G4double* theNeutrinoMuKineticEnergyCuts; private: G4NeutrinoMu( @@ -74,11 +72,9 @@ class G4NeutrinoMu : public G4VLepton virtual ~G4NeutrinoMu(){} static G4NeutrinoMu* NeutrinoMuDefinition(); - static G4NeutrinoMu* NeutrinoMu() {return &theNeutrinoMu;} - static G4double GetCuts() {return theNeutrinoMuLengthCut;} - static G4double* GetCutsInEnergy() {return theNeutrinoMuKineticEnergyCuts;}; + static G4NeutrinoMu* NeutrinoMu(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/leptons/include/G4NeutrinoTau.hh b/source/particles/leptons/include/G4NeutrinoTau.hh index e10e7280f3..4a7364598d 100644 --- a/source/particles/leptons/include/G4NeutrinoTau.hh +++ b/source/particles/leptons/include/G4NeutrinoTau.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NeutrinoTau.hh,v 1.3.4.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutrinoTau.hh,v 1.8 2001/10/28 05:05:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,8 +53,6 @@ class G4NeutrinoTau : public G4VLepton { private: static G4NeutrinoTau theNeutrinoTau; - static G4double theNeutrinoTauLengthCut; - static G4double* theNeutrinoTauKineticEnergyCuts; private: G4NeutrinoTau( @@ -73,11 +71,9 @@ class G4NeutrinoTau : public G4VLepton virtual ~G4NeutrinoTau(){} static G4NeutrinoTau* NeutrinoTauDefinition(); - static G4NeutrinoTau* NeutrinoTau() {return &theNeutrinoTau;} - static G4double GetCuts() {return theNeutrinoTauLengthCut;} - static G4double* GetCutsInEnergy() {return theNeutrinoTauKineticEnergyCuts;}; + static G4NeutrinoTau* NeutrinoTau(); - virtual void SetCuts(G4double aCut); + virtual void CalcEnergyCuts( const G4Material* ); }; #endif diff --git a/source/particles/leptons/include/G4Positron.hh b/source/particles/leptons/include/G4Positron.hh index 57ee0b03a6..4d17f1c479 100644 --- a/source/particles/leptons/include/G4Positron.hh +++ b/source/particles/leptons/include/G4Positron.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Positron.hh,v 1.4.2.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Positron.hh,v 1.7 2001/10/16 08:16:16 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -59,9 +59,7 @@ class G4Positron : public G4VLepton { private: static G4Positron thePositron; - static G4double thePositronLengthCut; - static G4double* thePositronKineticEnergyCuts; - + protected: G4double ComputeLoss(G4double AtomicNumber, G4double KineticEnergy) const; @@ -99,31 +97,8 @@ class G4Positron : public G4VLepton static G4Positron* PositronDefinition(); static G4Positron* Positron(); - static G4double GetCuts() {return thePositronLengthCut;} - static G4double* GetCutsInEnergy() {return thePositronKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); }; -inline void G4Positron::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - thePositronLengthCut = theCutInMaxInteractionLength; - thePositronKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4Positron::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - thePositronLengthCut = theCutInMaxInteractionLength; - thePositronKineticEnergyCuts = theKineticEnergyCuts; -} - -inline G4Positron* G4Positron::Positron() -{ return &thePositron; } #endif diff --git a/source/particles/leptons/include/G4TauMinus.hh b/source/particles/leptons/include/G4TauMinus.hh index a1ee1e60bd..6011ed4f37 100644 --- a/source/particles/leptons/include/G4TauMinus.hh +++ b/source/particles/leptons/include/G4TauMinus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TauMinus.hh,v 1.4.2.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TauMinus.hh,v 1.7 2001/10/16 08:16:16 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,8 +55,6 @@ class G4TauMinus : public G4VLepton { private: static G4TauMinus theTauMinus; - static G4double theTauMinusLengthCut; - static G4double* theTauMinusKineticEnergyCuts; private: // constructors are hide as private G4TauMinus( @@ -76,32 +74,10 @@ class G4TauMinus : public G4VLepton static G4TauMinus* TauMinusDefinition(); static G4TauMinus* TauMinus(); - static G4double GetCuts() {return theTauMinusLengthCut;} - static G4double* GetCutsInEnergy() {return theTauMinusKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); }; -inline void G4TauMinus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theTauMinusLengthCut = theCutInMaxInteractionLength; - theTauMinusKineticEnergyCuts = theKineticEnergyCuts; -} -inline void G4TauMinus::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theTauMinusLengthCut = theCutInMaxInteractionLength; - theTauMinusKineticEnergyCuts = theKineticEnergyCuts; -} - - -inline G4TauMinus* G4TauMinus::TauMinus() -{ return &theTauMinus; } #endif diff --git a/source/particles/leptons/include/G4TauPlus.hh b/source/particles/leptons/include/G4TauPlus.hh index ad45faacb1..fc99c24d6c 100644 --- a/source/particles/leptons/include/G4TauPlus.hh +++ b/source/particles/leptons/include/G4TauPlus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TauPlus.hh,v 1.4.2.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TauPlus.hh,v 1.7 2001/10/16 08:16:16 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -56,8 +56,6 @@ class G4TauPlus : public G4VLepton { private: static G4TauPlus theTauPlus; - static G4double theTauPlusLengthCut; - static G4double* theTauPlusKineticEnergyCuts; private: // constructors are hide as private G4TauPlus( @@ -77,32 +75,9 @@ class G4TauPlus : public G4VLepton static G4TauPlus* TauPlusDefinition(); static G4TauPlus* TauPlus(); - static G4double GetCuts() {return theTauPlusLengthCut;} - static G4double* GetCutsInEnergy() {return theTauPlusKineticEnergyCuts;}; - virtual void SetCuts(G4double aCut); - virtual void RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ); }; -inline void G4TauPlus::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theTauPlusLengthCut = theCutInMaxInteractionLength; - theTauPlusKineticEnergyCuts = theKineticEnergyCuts; -} - -inline void G4TauPlus::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) -{ - G4ParticleWithCuts::RestoreCuts(cutInLength, cutInEnergy); - theTauPlusLengthCut = theCutInMaxInteractionLength; - theTauPlusKineticEnergyCuts = theKineticEnergyCuts; -} - - -inline G4TauPlus* G4TauPlus::TauPlus() -{ return &theTauPlus; } #endif diff --git a/source/particles/leptons/include/G4VLepton.hh b/source/particles/leptons/include/G4VLepton.hh index 4149e3901d..878b674397 100644 --- a/source/particles/leptons/include/G4VLepton.hh +++ b/source/particles/leptons/include/G4VLepton.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VLepton.hh,v 1.2.4.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VLepton.hh,v 1.3 2001/07/11 10:01:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/leptons/src/G4AntiNeutrinoE.cc b/source/particles/leptons/src/G4AntiNeutrinoE.cc index b53edb2261..42c8aba500 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoE.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoE.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiNeutrinoE.cc,v 1.4.2.1 2001/06/28 19:11:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutrinoE.cc,v 1.10 2001/10/28 05:05:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -80,31 +80,18 @@ G4AntiNeutrinoE* G4AntiNeutrinoE::AntiNeutrinoEDefinition() { return &theAntiNeutrinoE; } -// initialization for static cut values -G4double G4AntiNeutrinoE::theAntiNeutrinoELengthCut = -1.0; -G4double* G4AntiNeutrinoE::theAntiNeutrinoEKineticEnergyCuts = NULL; +G4AntiNeutrinoE* G4AntiNeutrinoE::AntiNeutrinoE() +{ + return &theAntiNeutrinoE; +} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4AntiNeutrinoE::SetCuts(G4double aCut) +void G4AntiNeutrinoE::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0*keV; - } - theAntiNeutrinoELengthCut = theCutInMaxInteractionLength; - theAntiNeutrinoEKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(0.0*keV); } diff --git a/source/particles/leptons/src/G4AntiNeutrinoMu.cc b/source/particles/leptons/src/G4AntiNeutrinoMu.cc index eb4517d523..8fcbfe68e4 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoMu.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoMu.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiNeutrinoMu.cc,v 1.4.2.1 2001/06/28 19:11:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutrinoMu.cc,v 1.10 2001/10/28 05:05:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -82,32 +82,20 @@ G4AntiNeutrinoMu* G4AntiNeutrinoMu::AntiNeutrinoMuDefinition() { return &theAntiNeutrinoMu; } -// initialization for static cut values -G4double G4AntiNeutrinoMu::theAntiNeutrinoMuLengthCut = -1.0; -G4double* G4AntiNeutrinoMu::theAntiNeutrinoMuKineticEnergyCuts = NULL; + +G4AntiNeutrinoMu* G4AntiNeutrinoMu::AntiNeutrinoMu() +{ + return &theAntiNeutrinoMu; +} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4AntiNeutrinoMu::SetCuts(G4double aCut) +void G4AntiNeutrinoMu::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0*keV; - } - theAntiNeutrinoMuLengthCut = theCutInMaxInteractionLength; - theAntiNeutrinoMuKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(0.0*keV); } diff --git a/source/particles/leptons/src/G4AntiNeutrinoTau.cc b/source/particles/leptons/src/G4AntiNeutrinoTau.cc index d4afd24b06..35040eb27a 100644 --- a/source/particles/leptons/src/G4AntiNeutrinoTau.cc +++ b/source/particles/leptons/src/G4AntiNeutrinoTau.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AntiNeutrinoTau.cc,v 1.4.2.1 2001/06/28 19:11:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutrinoTau.cc,v 1.10 2001/10/28 05:05:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -82,32 +82,21 @@ G4AntiNeutrinoTau* G4AntiNeutrinoTau::AntiNeutrinoTauDefinition() { return &theAntiNeutrinoTau; } -// initialization for static cut values -G4double G4AntiNeutrinoTau::theAntiNeutrinoTauLengthCut = -1.0; -G4double* G4AntiNeutrinoTau::theAntiNeutrinoTauKineticEnergyCuts = NULL; + +G4AntiNeutrinoTau* G4AntiNeutrinoTau::AntiNeutrinoTau() +{ + return &theAntiNeutrinoTau; +} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4AntiNeutrinoTau::SetCuts(G4double aCut) +void G4AntiNeutrinoTau::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0*keV; - } - theAntiNeutrinoTauLengthCut = theCutInMaxInteractionLength; - theAntiNeutrinoTauKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(0.0*keV); + } diff --git a/source/particles/leptons/src/G4Electron.cc b/source/particles/leptons/src/G4Electron.cc index 8d9d4303d1..e4926bac11 100644 --- a/source/particles/leptons/src/G4Electron.cc +++ b/source/particles/leptons/src/G4Electron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Electron.cc,v 1.3.4.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Electron.cc,v 1.7 2001/10/16 08:16:17 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -83,9 +83,6 @@ G4Electron G4Electron::theElectron( ); G4Electron* G4Electron::ElectronDefinition(){return &theElectron;} -// initialization for static cut values -G4double G4Electron::theElectronLengthCut = -1.0; -G4double* G4Electron::theElectronKineticEnergyCuts = NULL; // ********************************************************************** // ************************* ComputeLoss ******************************** @@ -171,7 +168,7 @@ void G4Electron::BuildRangeVector(const G4Material* aMaterial, for (i=0; iGetIndex(); + G4int IndEl = (*elementVector)[i]->GetIndex(); loss += atomicNumDensityVector[i]* (*aLossTable)[IndEl]->GetValue(tlim,isOut); } @@ -205,6 +202,11 @@ void G4Electron::BuildRangeVector(const G4Material* aMaterial, } } +G4Electron* G4Electron::Electron() +{ + return &theElectron; +} + diff --git a/source/particles/leptons/src/G4LeptonConstructor.cc b/source/particles/leptons/src/G4LeptonConstructor.cc index dd33530ef2..fc235236de 100644 --- a/source/particles/leptons/src/G4LeptonConstructor.cc +++ b/source/particles/leptons/src/G4LeptonConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LeptonConstructor.cc,v 1.2.4.1 2001/06/28 19:11:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LeptonConstructor.cc,v 1.3 2001/07/11 10:01:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/leptons/src/G4MuonMinus.cc b/source/particles/leptons/src/G4MuonMinus.cc index 447ec17c69..cfa7743189 100644 --- a/source/particles/leptons/src/G4MuonMinus.cc +++ b/source/particles/leptons/src/G4MuonMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuonMinus.cc,v 1.4.4.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonMinus.cc,v 1.7 2001/10/16 08:16:17 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -97,5 +97,8 @@ G4MuonMinus G4MuonMinus::theMuonMinus( ); G4MuonMinus* G4MuonMinus::MuonMinusDefinition() {return &theMuonMinus;} -G4double G4MuonMinus::theMuonMinusLengthCut = -1.0; -G4double* G4MuonMinus::theMuonMinusKineticEnergyCuts = NULL; + +G4MuonMinus* G4MuonMinus::MuonMinus() +{ + return &theMuonMinus; +} diff --git a/source/particles/leptons/src/G4MuonPlus.cc b/source/particles/leptons/src/G4MuonPlus.cc index eef3d6584d..614b5f4787 100644 --- a/source/particles/leptons/src/G4MuonPlus.cc +++ b/source/particles/leptons/src/G4MuonPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuonPlus.cc,v 1.4.4.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonPlus.cc,v 1.7 2001/10/16 08:16:18 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -97,12 +97,11 @@ G4MuonPlus G4MuonPlus::theMuonPlus( ); G4MuonPlus* G4MuonPlus::MuonPlusDefinition() {return &theMuonPlus;} -// initialization for static cut values -G4double G4MuonPlus::theMuonPlusLengthCut = -1.0; -G4double* G4MuonPlus::theMuonPlusKineticEnergyCuts = NULL; - - - + +G4MuonPlus* G4MuonPlus::MuonPlus() +{ + return &theMuonPlus; +} diff --git a/source/particles/leptons/src/G4NeutrinoE.cc b/source/particles/leptons/src/G4NeutrinoE.cc index c4e208275e..9cca1e821b 100644 --- a/source/particles/leptons/src/G4NeutrinoE.cc +++ b/source/particles/leptons/src/G4NeutrinoE.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NeutrinoE.cc,v 1.4.2.1 2001/06/28 19:11:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutrinoE.cc,v 1.10 2001/10/28 05:05:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -79,36 +79,19 @@ G4NeutrinoE G4NeutrinoE::theNeutrinoE( ); G4NeutrinoE* G4NeutrinoE::NeutrinoEDefinition() {return &theNeutrinoE;} -// initialization for static cut values -G4double G4NeutrinoE::theNeutrinoELengthCut = -1.0; -G4double* G4NeutrinoE::theNeutrinoEKineticEnergyCuts = NULL; - +G4NeutrinoE* G4NeutrinoE::NeutrinoE() {return &theNeutrinoE;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4NeutrinoE::SetCuts(G4double aCut) +void G4NeutrinoE::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0*keV; - } - theNeutrinoELengthCut = theCutInMaxInteractionLength; - theNeutrinoEKineticEnergyCuts = theKineticEnergyCuts; - - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(0.0*keV); + } diff --git a/source/particles/leptons/src/G4NeutrinoMu.cc b/source/particles/leptons/src/G4NeutrinoMu.cc index e0bbae44f9..619eba688d 100644 --- a/source/particles/leptons/src/G4NeutrinoMu.cc +++ b/source/particles/leptons/src/G4NeutrinoMu.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NeutrinoMu.cc,v 1.4.2.1 2001/06/28 19:11:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutrinoMu.cc,v 1.10 2001/10/28 05:05:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -82,31 +82,20 @@ G4NeutrinoMu* G4NeutrinoMu::NeutrinoMuDefinition() { return &theNeutrinoMu; } -G4double G4NeutrinoMu::theNeutrinoMuLengthCut = -1.0; -G4double* G4NeutrinoMu::theNeutrinoMuKineticEnergyCuts = NULL; + +G4NeutrinoMu* G4NeutrinoMu::NeutrinoMu() +{ + return &theNeutrinoMu; +} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4NeutrinoMu::SetCuts(G4double aCut) +void G4NeutrinoMu::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0*keV; - } - theNeutrinoMuLengthCut = theCutInMaxInteractionLength; - theNeutrinoMuKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type + + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(0.0*keV); } diff --git a/source/particles/leptons/src/G4NeutrinoTau.cc b/source/particles/leptons/src/G4NeutrinoTau.cc index be2042b4c4..b94730a7b0 100644 --- a/source/particles/leptons/src/G4NeutrinoTau.cc +++ b/source/particles/leptons/src/G4NeutrinoTau.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NeutrinoTau.cc,v 1.4.2.1 2001/06/28 19:11:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutrinoTau.cc,v 1.10 2001/10/28 05:05:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -79,32 +79,16 @@ G4NeutrinoTau G4NeutrinoTau::theNeutrinoTau( ); G4NeutrinoTau* G4NeutrinoTau::NeutrinoTauDefinition(){return &theNeutrinoTau;} -G4double G4NeutrinoTau::theNeutrinoTauLengthCut = -1.0; -G4double* G4NeutrinoTau::theNeutrinoTauKineticEnergyCuts = NULL; +G4NeutrinoTau* G4NeutrinoTau::NeutrinoTau(){return &theNeutrinoTau;} // ********************************************************************** // **************************** SetCuts ********************************* // ********************************************************************** -void G4NeutrinoTau::SetCuts(G4double aCut) +void G4NeutrinoTau::CalcEnergyCuts( const G4Material* ) { - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - - // Build range vector for every material, convert cut into energy-cut, - // fill theKineticEnergyCuts and delete the range vector - for (size_t J=0; Jlength(); J++) - { - theKineticEnergyCuts[J] = 0.0*keV; - } - theNeutrinoTauLengthCut = theCutInMaxInteractionLength; - theNeutrinoTauKineticEnergyCuts = theKineticEnergyCuts; - // Rebuild the physics tables for every process for this particle type -} + // Set Energy Cut values to lowest for all materials + SetEnergyCutValues(0.0*keV); +} diff --git a/source/particles/leptons/src/G4Positron.cc b/source/particles/leptons/src/G4Positron.cc index ab2594bbe4..8867636955 100644 --- a/source/particles/leptons/src/G4Positron.cc +++ b/source/particles/leptons/src/G4Positron.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Positron.cc,v 1.3.4.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Positron.cc,v 1.6 2001/10/16 08:16:18 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -83,9 +83,6 @@ G4Positron G4Positron::thePositron( ); G4Positron* G4Positron::PositronDefinition() {return &thePositron;} -// initialization for static cut values -G4double G4Positron::thePositronLengthCut = -1.0; -G4double* G4Positron::thePositronKineticEnergyCuts = NULL; // ********************************************************************** // ************************* ComputeLoss ******************************** @@ -163,3 +160,8 @@ void G4Positron::BuildRangeVector(const G4Material* aMaterial, aMass, rangeVector); } + +G4Positron* G4Positron::Positron() +{ + return &thePositron; +} diff --git a/source/particles/leptons/src/G4TauMinus.cc b/source/particles/leptons/src/G4TauMinus.cc index 081dd53dc0..2f5f7242d2 100644 --- a/source/particles/leptons/src/G4TauMinus.cc +++ b/source/particles/leptons/src/G4TauMinus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TauMinus.cc,v 1.4.4.2 2001/06/28 20:19:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TauMinus.cc,v 1.7 2001/10/16 08:16:18 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -122,9 +122,10 @@ G4TauMinus G4TauMinus::theTauMinus( ); G4TauMinus* G4TauMinus::TauMinusDefinition() {return &theTauMinus;} -// initialization for static cut values -G4double G4TauMinus::theTauMinusLengthCut = -1.0; -G4double* G4TauMinus::theTauMinusKineticEnergyCuts = NULL; - + +G4TauMinus* G4TauMinus::TauMinus() +{ + return &theTauMinus; +} diff --git a/source/particles/leptons/src/G4TauPlus.cc b/source/particles/leptons/src/G4TauPlus.cc index 19d7dab21e..c64991314a 100644 --- a/source/particles/leptons/src/G4TauPlus.cc +++ b/source/particles/leptons/src/G4TauPlus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TauPlus.cc,v 1.4.4.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TauPlus.cc,v 1.7 2001/10/16 08:16:19 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- @@ -123,12 +123,9 @@ G4TauPlus G4TauPlus::theTauPlus( ); G4TauPlus* G4TauPlus::TauPlusDefinition(){return &theTauPlus;} -// initialization for static cut values -G4double G4TauPlus::theTauPlusLengthCut = -1.0; -G4double* G4TauPlus::theTauPlusKineticEnergyCuts = NULL; - - - - +G4TauPlus* G4TauPlus::TauPlus() +{ + return &theTauPlus; +} diff --git a/source/particles/leptons/src/G4VLepton.cc b/source/particles/leptons/src/G4VLepton.cc index d48c9c2882..56f48cc559 100644 --- a/source/particles/leptons/src/G4VLepton.cc +++ b/source/particles/leptons/src/G4VLepton.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VLepton.cc,v 1.2.4.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VLepton.cc,v 1.3 2001/07/11 10:01:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/include/G4DalitzDecayChannel.hh b/source/particles/management/include/G4DalitzDecayChannel.hh index 36632f563c..7a8b3cbdba 100644 --- a/source/particles/management/include/G4DalitzDecayChannel.hh +++ b/source/particles/management/include/G4DalitzDecayChannel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DalitzDecayChannel.hh,v 1.3.4.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DalitzDecayChannel.hh,v 1.4 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DecayProducts.hh b/source/particles/management/include/G4DecayProducts.hh index 138a74cce7..55d306584f 100644 --- a/source/particles/management/include/G4DecayProducts.hh +++ b/source/particles/management/include/G4DecayProducts.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DecayProducts.hh,v 1.7.2.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DecayProducts.hh,v 1.8 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DecayTable.hh b/source/particles/management/include/G4DecayTable.hh index c929217fdc..6f877cd17f 100644 --- a/source/particles/management/include/G4DecayTable.hh +++ b/source/particles/management/include/G4DecayTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DecayTable.hh,v 1.6.2.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DecayTable.hh,v 1.7 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DecayTableMessenger.hh b/source/particles/management/include/G4DecayTableMessenger.hh index 6afd1ccd5e..7f6176b131 100644 --- a/source/particles/management/include/G4DecayTableMessenger.hh +++ b/source/particles/management/include/G4DecayTableMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DecayTableMessenger.hh,v 1.5.4.1 2001/06/28 19:11:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DecayTableMessenger.hh,v 1.6 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4DynamicParticle.hh b/source/particles/management/include/G4DynamicParticle.hh index 516553a19d..35985227e0 100644 --- a/source/particles/management/include/G4DynamicParticle.hh +++ b/source/particles/management/include/G4DynamicParticle.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DynamicParticle.hh,v 1.10.2.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DynamicParticle.hh,v 1.11 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DynamicParticle.icc b/source/particles/management/include/G4DynamicParticle.icc index 0d886de9c1..71cd5f3cbb 100644 --- a/source/particles/management/include/G4DynamicParticle.icc +++ b/source/particles/management/include/G4DynamicParticle.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DynamicParticle.icc,v 1.7.2.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DynamicParticle.icc,v 1.8 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4DynamicParticleFastVector.hh b/source/particles/management/include/G4DynamicParticleFastVector.hh index 4b6a1932d3..f88c5b3e79 100644 --- a/source/particles/management/include/G4DynamicParticleFastVector.hh +++ b/source/particles/management/include/G4DynamicParticleFastVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DynamicParticleFastVector.hh,v 1.2.4.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DynamicParticleFastVector.hh,v 1.3 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ElectronOccupancy.hh b/source/particles/management/include/G4ElectronOccupancy.hh index 0fc7c63f8f..6c18d996ed 100644 --- a/source/particles/management/include/G4ElectronOccupancy.hh +++ b/source/particles/management/include/G4ElectronOccupancy.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ElectronOccupancy.hh,v 1.4.4.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ElectronOccupancy.hh,v 1.5 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4IonTable.hh b/source/particles/management/include/G4IonTable.hh index b8bc92639e..c90d0f1eec 100644 --- a/source/particles/management/include/G4IonTable.hh +++ b/source/particles/management/include/G4IonTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IonTable.hh,v 1.17.4.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IonTable.hh,v 1.18 2001/07/11 10:01:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4Ions.hh b/source/particles/management/include/G4Ions.hh index d507c35aea..b216f642e5 100644 --- a/source/particles/management/include/G4Ions.hh +++ b/source/particles/management/include/G4Ions.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Ions.hh,v 1.7.2.2 2001/06/28 20:19:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Ions.hh,v 1.9 2001/10/15 09:58:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -53,9 +53,6 @@ class G4Ions : public G4ParticleWithCuts // This class has Excitation Energy in addition to the normal particle // - private: - G4double theIonsLengthCut; - G4double* theIonsKineticEnergyCuts; public: //With Description G4Ions( @@ -75,13 +72,6 @@ class G4Ions : public G4ParticleWithCuts G4Ions* IonsDefinition(); G4Ions* Ions(); - public: //With Description - virtual G4double GetCuts() {return theIonsLengthCut;} - virtual const G4double* GetCutsInEnergy() {return theIonsKineticEnergyCuts;}; - - virtual void SetCuts(G4double aCut); - - public: //With Description G4int GetAtomicNumber() const; G4int GetAtomicMass() const; @@ -112,12 +102,4 @@ inline theExcitationEnergy = value; } -inline - void G4Ions::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); - theIonsLengthCut = theCutInMaxInteractionLength; - theIonsKineticEnergyCuts = theKineticEnergyCuts; -} - #endif diff --git a/source/particles/management/include/G4IsotopeProperty.hh b/source/particles/management/include/G4IsotopeProperty.hh index 4a75789863..edbfd8ab8d 100644 --- a/source/particles/management/include/G4IsotopeProperty.hh +++ b/source/particles/management/include/G4IsotopeProperty.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IsotopeProperty.hh,v 1.2.10.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IsotopeProperty.hh,v 1.3 2001/07/11 10:01:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4KL3DecayChannel.hh b/source/particles/management/include/G4KL3DecayChannel.hh index 7c1586789c..c28022c7f7 100644 --- a/source/particles/management/include/G4KL3DecayChannel.hh +++ b/source/particles/management/include/G4KL3DecayChannel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KL3DecayChannel.hh,v 1.3.4.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KL3DecayChannel.hh,v 1.4 2001/07/11 10:01:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4MuonDecayChannel.hh b/source/particles/management/include/G4MuonDecayChannel.hh index 2befa79636..01bff92c75 100644 --- a/source/particles/management/include/G4MuonDecayChannel.hh +++ b/source/particles/management/include/G4MuonDecayChannel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuonDecayChannel.hh,v 1.4.4.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonDecayChannel.hh,v 1.5 2001/07/11 10:01:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/persistency/geometry/management/include/G4LogVolRefArray.hh b/source/particles/management/include/G4NeutronBetaDecayChannel.hh similarity index 57% rename from source/persistency/geometry/management/include/G4LogVolRefArray.hh rename to source/particles/management/include/G4NeutronBetaDecayChannel.hh index 64fc77d5da..024d5ec75f 100644 --- a/source/persistency/geometry/management/include/G4LogVolRefArray.hh +++ b/source/particles/management/include/G4NeutronBetaDecayChannel.hh @@ -21,56 +21,44 @@ // ******************************************************************** // // -// $Id: G4LogVolRefArray.hh,v 1.1.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronBetaDecayChannel.hh,v 1.1 2001/09/18 02:15:10 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // - -// class description: // -// This is a class which implements G4RWTPtrVector with -// G4LogicalVolume. +// ------------------------------------------------------------ +// GEANT 4 class header file // +// History: first implementation, based on object model of +// 18 Sep. 2001 H.Kurashige +// ------------------------------------------------------------ +#ifndef G4NeutronBetaDecayChannel_h +#define G4NeutronBetaDecayChannel_h 1 -// History: -// 00.11.17 Y.Morita Initial version - -#ifndef G4LogVolRefArray_hh -#define G4LogVolRefArray_hh 1 - -#include "g4rw/tpvector.h" +#include "G4ios.hh" #include "globals.hh" +#include "G4VDecayChannel.hh" -#include "G4LogicalVolume.hh" - -typedef G4RWTPtrVector G4LogVolRefVArray; - -class G4LogVolRefArray +class G4NeutronBetaDecayChannel :public G4VDecayChannel { - public: // with description - G4LogVolRefArray(); - ~G4LogVolRefArray(); - // The constructor and the destructor. + // Class Decription + // This class describes free neutron beta decay kinemtics. + // This version neglects neutron/electron polarization + // without Coulomb effect - private: - G4LogVolRefVArray transLogVolPtrs; + public: // With Description + //Constructors + G4NeutronBetaDecayChannel(const G4String& theParentName, + G4double theBR); + // Destructor + virtual ~G4NeutronBetaDecayChannel(); - public: // with description - inline void Insert(G4int i, G4LogicalVolume* aVol) - { transLogVolPtrs[i] = aVol; } - // Insert aVol as i-th element. - inline G4LogicalVolume* Get(G4int i) - { return transLogVolPtrs[i]; } - // return the i-th element. - inline void Resize(size_t n) - { transLogVolPtrs.resize(n); } - // Resize the vector with n. + public: // With Description + virtual G4DecayProducts *DecayIt(G4double); + + protected: + // e-neutrino angular correlation parameter + const G4double aENuCorr; +}; -}; - -G4LogVolRefArray::G4LogVolRefArray() -{;} - -G4LogVolRefArray::~G4LogVolRefArray() -{;} #endif diff --git a/source/particles/management/include/G4NucleiProperties.hh b/source/particles/management/include/G4NucleiProperties.hh index 07d6fded16..a3adc3e269 100644 --- a/source/particles/management/include/G4NucleiProperties.hh +++ b/source/particles/management/include/G4NucleiProperties.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NucleiProperties.hh,v 1.10.4.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NucleiProperties.hh,v 1.13 2001/10/16 08:16:19 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -80,71 +80,19 @@ private: static G4double BindingEnergy(G4double A, G4double Z); - static G4double MassExcess(G4double A, G4double Z) {return GetAtomicMass(A,Z) - A*amu_c2;} + static G4double MassExcess(G4double A, G4double Z); }; -inline - G4double G4NucleiProperties::GetMassExcess(const G4int A, const G4int Z) -{ - if (A < 1 || Z < 0 || Z > A) { - G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " << A - << " and Z = " << Z << G4endl; - return 0.0; - } else { - - if (G4NucleiPropertiesTable::IsInTable(Z,A)){ - return G4NucleiPropertiesTable::GetMassExcess(Z,A); - } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)){ - return G4NucleiPropertiesTheoreticalTable::GetMassExcess(Z,A); - } else { - return MassExcess(A,Z); - } - } - -} - -inline - G4double G4NucleiProperties::GetAtomicMass(const G4double A, const G4double Z) -{ - if (Z < 0 || Z > A) { - G4cout << "G4NucleiProperties::GetAtomicMass: Wrong values for A = " << A - << " and Z = " << Z << G4endl; return 0.0; - - } else if (abs(A - G4int(A)) > 1.e-10) { - return AtomicMass(A,Z); - - } else { - if (G4NucleiPropertiesTable::IsInTable(Z,A)) { - return G4NucleiPropertiesTable::GetAtomicMass(Z,A); - } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)){ - return G4NucleiPropertiesTheoreticalTable::GetAtomicMass(Z,A); - } else { - return AtomicMass(A,Z); - } - } -} - -inline - G4double G4NucleiProperties::GetBindingEnergy(const G4int A, const G4int Z) -{ - if (A < 1 || Z < 0 || Z > A) { - G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " << A - << " and Z = " << Z << G4endl; - return 0.0; - - } else { - if (G4NucleiPropertiesTable::IsInTable(Z,A)) { - return G4NucleiPropertiesTable::GetBindingEnergy(Z,A); - } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)) { - return G4NucleiPropertiesTheoreticalTable::GetBindingEnergy(Z,A); - }else { - return BindingEnergy(A,Z); - } - - } -} #endif + + + + + + + + diff --git a/source/particles/management/include/G4NucleiPropertiesTable.hh b/source/particles/management/include/G4NucleiPropertiesTable.hh index e3822771a6..d6f49595d6 100644 --- a/source/particles/management/include/G4NucleiPropertiesTable.hh +++ b/source/particles/management/include/G4NucleiPropertiesTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NucleiPropertiesTable.hh,v 1.8.4.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NucleiPropertiesTable.hh,v 1.10 2001/10/15 09:58:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 @@ -142,52 +142,6 @@ private: }; - -inline G4double G4NucleiPropertiesTable::GetMassExcess(G4int Z, G4int A) -{ - G4int i=GetIndex(Z, A); - if (i >= 0) { - return MassExcess[i]*keV; - } else { - return 0.0; - } -} - -inline G4double G4NucleiPropertiesTable::GetBindingEnergy(G4int Z, G4int A) -{ - G4int i=GetIndex(Z, A); - if (i >= 0){ - return (G4double(A-Z)*MassExcess[0] + G4double(Z)*MassExcess[1] - MassExcess[i])*keV; - } else { - return 0.0; - } -} - -inline G4double G4NucleiPropertiesTable::GetBetaDecayEnergy(G4int Z, G4int A) -{ - G4int i=GetIndex(Z, A); - if (i >= 0){ - return BetaEnergy[i]*keV; - } else { - return 0.0; - } -} - -inline G4double G4NucleiPropertiesTable::GetAtomicMass(G4int Z, G4int A) -{ - G4int i=GetIndex(Z, A); - if (i >= 0){ - return MassExcess[i]*keV + G4double(A)*amu_c2; - } else { - return 0.0; - } -} - - -inline G4bool G4NucleiPropertiesTable::IsInTable(G4int Z, G4int A) -{ - return (Z <= A && A >= 1 && A <= 273 && Z >= 0 && Z <= 110 && GetIndex(Z, A) >= 0); -} #endif diff --git a/source/particles/management/include/G4NucleiPropertiesTheoreticalTable.hh b/source/particles/management/include/G4NucleiPropertiesTheoreticalTable.hh index 9918800df3..8503bf62d7 100644 --- a/source/particles/management/include/G4NucleiPropertiesTheoreticalTable.hh +++ b/source/particles/management/include/G4NucleiPropertiesTheoreticalTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NucleiPropertiesTheoreticalTable.hh,v 1.3.2.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NucleiPropertiesTheoreticalTable.hh,v 1.5 2001/10/15 09:58:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -105,62 +105,6 @@ private: }; -inline G4double G4NucleiPropertiesTheoreticalTable::GetMassExcess(G4int Z, G4int A) -{ - G4int i=GetIndex(Z, A); - if (i >= 0) { - return AtomicMassExcess[i]*MeV; - } else { - return 0.0; - } -} - -inline G4double G4NucleiPropertiesTheoreticalTable::GetBindingEnergy(G4int Z, G4int A) -{ - G4int i=GetIndex(Z, A); - if (i >= 0){ - const G4double Mh = 7.289034*MeV; // hydrogen atom mass excess - const G4double Mn = 8.071431*MeV; // neutron mass excess - return G4double(Z)*Mh + G4double(A-Z)*Mn - AtomicMassExcess[i]*MeV; - } else { - return 0.0; - } -} - - - -inline G4double G4NucleiPropertiesTheoreticalTable::GetAtomicMass(G4int Z, G4int A) -{ - G4int i=GetIndex(Z, A); - if (i >= 0) { - return AtomicMassExcess[i]*MeV + A*amu_c2; - } else { - return 0.0; - } -} - - - -inline G4double G4NucleiPropertiesTheoreticalTable::GetNuclearMass(G4int Z, G4int A) -{ - G4int i=GetIndex(Z, A); - if (i >= 0) { - return GetAtomicMass(Z,A) - G4double(Z)*electron_mass_c2 + ElectronicBindingEnergy(Z); - } else { - return 0.0; - } -} - -inline G4double G4NucleiPropertiesTheoreticalTable::ElectronicBindingEnergy(G4int Z) { - const G4double ael = 1.433e-5*MeV; // electronic-binding constant - return ael*pow(G4double(Z),2.39); -} - -inline G4bool G4NucleiPropertiesTheoreticalTable::IsInTable(G4int Z, G4int A) -{ - return (Z <= A && A >= 16 && A <= 339 && Z <= 136 && Z >= 8 && GetIndex(Z, A) >= 0); -} - #endif diff --git a/source/particles/management/include/G4PDGCodeChecker.hh b/source/particles/management/include/G4PDGCodeChecker.hh index 449b4b8403..68f75c1063 100644 --- a/source/particles/management/include/G4PDGCodeChecker.hh +++ b/source/particles/management/include/G4PDGCodeChecker.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PDGCodeChecker.hh,v 1.5.4.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PDGCodeChecker.hh,v 1.6 2001/07/11 10:01:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleDefinition.hh b/source/particles/management/include/G4ParticleDefinition.hh index a9d5d4a17e..384efcc124 100644 --- a/source/particles/management/include/G4ParticleDefinition.hh +++ b/source/particles/management/include/G4ParticleDefinition.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleDefinition.hh,v 1.10.2.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleDefinition.hh,v 1.12 2001/10/15 09:58:30 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -51,6 +51,7 @@ #include "globals.hh" #include "G4ios.hh" +#include "g4std/vector" class G4ProcessManager; class G4DecayTable; @@ -101,12 +102,18 @@ class G4ParticleDefinition // to invoke corresponding methods for each particle type. // Actual implementation can be seen in the class // G4ParticleWithCuts - virtual void ResetCuts(); - virtual void SetCuts(G4double ); - virtual void ReCalcCuts(); - virtual G4double GetLengthCuts() const; - virtual G4double* GetEnergyCuts() const; - virtual G4double GetEnergyThreshold(const G4Material* ) const; + virtual void SetCuts(G4double ); + virtual void SetRangeCut(G4double ,const G4Material*); + virtual void SetRangeCutVector(G4std::vector&); + + virtual G4double* GetEnergyCuts() const; + virtual G4double GetEnergyThreshold(const G4Material* ) const; + + virtual G4double* GetLengthCuts() const; + virtual G4double GetRangeThreshold(const G4Material* ) const; + + virtual void ResetCuts(); + virtual void ReCalcCuts(); // applyCuts flag G4bool GetApplyCutsFlag() const; @@ -116,7 +123,7 @@ class G4ParticleDefinition // This method concerning cut values is supposed to be used by // G4VUserPhysicsList to restore cutvalues witout calculation // Actual implementation can be seen in the class G4ParticleWithCuts - virtual void RestoreCuts(G4double cutInLength, + virtual void RestoreCuts(const G4double* cutInLength, const G4double* cutInEnergy ){} @@ -322,111 +329,6 @@ class G4ParticleDefinition G4int verboseLevel; }; -inline -G4ParticleTable* G4ParticleDefinition::GetParticleTable() -{ - return theParticleTable; -} - -inline -G4DecayTable* G4ParticleDefinition::GetDecayTable() -{ - return theDecayTable; -} - -inline -void G4ParticleDefinition::SetDecayTable(G4DecayTable* aDecayTable) -{ - theDecayTable = aDecayTable; -} - -inline -void G4ParticleDefinition::SetApplyCutsFlag(G4bool flag) -{ - fApplyCutsFlag = flag; -} - -inline -G4bool G4ParticleDefinition::GetApplyCutsFlag() const -{ - return fApplyCutsFlag; -} - -inline -void G4ParticleDefinition::SetVerboseLevel(G4int value) -{ - verboseLevel = value; -} - -inline -G4int G4ParticleDefinition::GetVerboseLevel() const -{ - return verboseLevel; -} - -inline -G4ProcessManager* G4ParticleDefinition::GetProcessManager() const -{ - return theProcessManager; -} - -inline -void G4ParticleDefinition::SetProcessManager(G4ProcessManager *aProcessManager) -{ - theProcessManager = aProcessManager; -} - -inline -G4int G4ParticleDefinition::GetQuarkContent(G4int flavor) const -{ - if ((flavor>0) && (flavor0) { - G4cout << "Invalid Quark Flavor for G4ParticleDefinition::GetQuarkContent"; - G4cout << ": flavor=" << flavor <0) && (flavor0) { - G4cout <<"Invalid Quark Flavor for G4ParticleDefinition::GetAntiQuarkContent"; - G4cout << ": flavor=" << flavor <0) && (flavor0) { + G4cout << "Invalid Quark Flavor for G4ParticleDefinition::GetQuarkContent"; + G4cout << ": flavor=" << flavor <0) && (flavor0) { + G4cout <<"Invalid Quark Flavor for G4ParticleDefinition::GetAntiQuarkContent"; + G4cout << ": flavor=" << flavor <&){} + +inline + void G4ParticleDefinition::ReCalcCuts(){} + +inline + G4double* G4ParticleDefinition::GetLengthCuts() const {return 0;} + +inline + G4double G4ParticleDefinition::GetRangeThreshold(const G4Material* ) const +{ + return -1.0 * mm; +} + +inline + G4double* G4ParticleDefinition::GetEnergyCuts() const {return 0;} + +inline + G4double G4ParticleDefinition::GetEnergyThreshold(const G4Material* ) const +{ + return -1.0 * eV; +} + +inline + void G4ParticleDefinition::SetAntiPDGEncoding(G4int aEncoding) +{ + theAntiPDGEncoding = aEncoding; +} diff --git a/source/particles/management/include/G4ParticleMessenger.hh b/source/particles/management/include/G4ParticleMessenger.hh index e0c704ea3d..e14a48fa57 100644 --- a/source/particles/management/include/G4ParticleMessenger.hh +++ b/source/particles/management/include/G4ParticleMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleMessenger.hh,v 1.4.4.1 2001/06/28 19:11:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleMessenger.hh,v 1.5 2001/07/11 10:01:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4ParticleMomentum.hh b/source/particles/management/include/G4ParticleMomentum.hh index c7fe0f65ac..c21d9755c6 100644 --- a/source/particles/management/include/G4ParticleMomentum.hh +++ b/source/particles/management/include/G4ParticleMomentum.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleMomentum.hh,v 1.4.4.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleMomentum.hh,v 1.5 2001/07/11 10:01:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticlePropertyMessenger.hh b/source/particles/management/include/G4ParticlePropertyMessenger.hh index e1d11701fa..9fef3edb89 100644 --- a/source/particles/management/include/G4ParticlePropertyMessenger.hh +++ b/source/particles/management/include/G4ParticlePropertyMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticlePropertyMessenger.hh,v 1.4.4.1 2001/06/28 19:11:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticlePropertyMessenger.hh,v 1.5 2001/07/11 10:01:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/include/G4ParticleTable.hh b/source/particles/management/include/G4ParticleTable.hh index a1f87d5ce5..17e99e13af 100644 --- a/source/particles/management/include/G4ParticleTable.hh +++ b/source/particles/management/include/G4ParticleTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleTable.hh,v 1.14.4.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleTable.hh,v 1.15 2001/07/11 10:01:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleTable.icc b/source/particles/management/include/G4ParticleTable.icc index 3374722576..b3b1adb312 100644 --- a/source/particles/management/include/G4ParticleTable.icc +++ b/source/particles/management/include/G4ParticleTable.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleTable.icc,v 1.7.4.1 2001/06/28 19:11:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleTable.icc,v 1.8 2001/07/11 10:01:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleTableIterator.hh b/source/particles/management/include/G4ParticleTableIterator.hh index 3d4ac7f8b3..b2e3125c08 100644 --- a/source/particles/management/include/G4ParticleTableIterator.hh +++ b/source/particles/management/include/G4ParticleTableIterator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleTableIterator.hh,v 1.4.4.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleTableIterator.hh,v 1.5 2001/07/11 10:01:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4ParticleWithCuts.hh b/source/particles/management/include/G4ParticleWithCuts.hh index b51f558565..46b7151ab2 100644 --- a/source/particles/management/include/G4ParticleWithCuts.hh +++ b/source/particles/management/include/G4ParticleWithCuts.hh @@ -21,25 +21,20 @@ // ******************************************************************** // // -// $Id: G4ParticleWithCuts.hh,v 1.7.2.2 2001/06/28 20:19:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleWithCuts.hh,v 1.14 2001/10/30 20:08:46 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ // GEANT 4 class header file // -// History: first implementation, based on object model of -// Hisaya Kurashige, 21 Oct 1996 -// Calculation of Range Table is based on -// implementeation for Muon by L.Urban, 10 May 1996 -// ---------------------------------------------------------------- -// modified by Hisaya Kurashige, 04 Jan 1997 -// added verboseLevel by Hisaya Kurashige 13 Nov 1997 -// added ReCalcCuts() and ResetCuts H.Kurashige 15 Nov.1996 -// BuildPhysicsTable() becomes dummy H.Kurashige 06 June 1998 -// added GetEnergyThreshold H.Kurashige 08 June 1998 -// change Lowest/HighestEnergy as static H.Kurashige 18 June 1998 -// added RestoreCuts H.Kurashige 09 Mar. 2001 +// History: +// first implementation, based on object model of Hisaya Kurashige, +// 21 Oct 1996 +// calculation of Range Table is based on implementeation for Muon +// by L.Urban, 10 May 1996 +// added RestoreCuts H.Kurashige 09 Mar. 2001 +// introduced material dependent range cuts 08 Sep. 2001 // ---------------------------------------------------------------- // Class Description // "theCutInMaxInteractionLength", for charged particles, is @@ -53,25 +48,30 @@ // Sets the cuts values relative to this particle type in stopping // range (or absorption length) and converts those cuts into energy cuts // for all the materials defined in the Material table. -// [in protected method of CalcEnergyCuts(G4double aCut) ; // It also triggers the recomputation of the physics tables of the +// void SetRangeCut(G4double aCut, const G4Material*): +// Set a cut value in range for the specified material and converts +// it into an energy cut. // void ReCalcCuts(): // Re calculate energy cut values with the previous cut value in range // void ResetCuts(): // Reset alll cut values in energy, though theCutInMaxInteractionLength // remains unchanged -// G4double GetCuts(): -// Returns value of the cut in interaction length for all the -// processes of this particle type. -// const G4double* GetCutsInEnergy(); -// Returns vector of energy cuts (ordered per material) -// corresponding to the current stopping range or absorption length +// const G4double* GetLengthCuts(): +// Returns an array of cuts in range (ordered per material) +// G4double GetRangeThreshold(const G4Material* ) const: +// Returns a range cut for a material +// const G4double* GetEnergyCuts(): +// Returns an array of energy cuts (ordered per material) +// G4double GetEnergyThreshold(const G4Material* ) const: +// Returns a energy cut for a material // #ifndef G4ParticleWithCuts_h #define G4ParticleWithCuts_h 1 #include "globals.hh" +#include "g4std/vector" #include "G4ios.hh" #include "G4ParticleDefinition.hh" @@ -106,38 +106,72 @@ class G4ParticleWithCuts : public G4ParticleDefinition //--------------for SetCuts------------------------------------------- protected: - G4double theCutInMaxInteractionLength; - G4double* theKineticEnergyCuts; + G4double* theCutInMaxInteractionLength; + G4double* theKineticEnergyCuts; public: // With Description + // G4ParticleWithCuts // virtual methods derived from G4ParticleDefinition - virtual void ResetCuts(); - // Reset alll cut values in energy - // but theCutInMaxInteractionLength remain unchanged - virtual void ReCalcCuts(); - // Set cut values in energy derived from theCutInMaxInteractionLength - virtual void SetCuts(G4double aCut); - // Set cut values in energy derived from the cut range of aCut - virtual G4double GetLengthCuts() const; - virtual G4double* GetEnergyCuts() const; - - virtual G4double GetEnergyThreshold(const G4Material* aMaterial) const; - static void SetEnergyRange(G4double, G4double); + // Set Cuts methods + virtual void SetCuts(G4double aCut); + // Set the range of aCut for all materials + virtual void SetRangeCut(G4double aCut, const G4Material*); + // Set the cut range of aCut for a material + virtual void SetRangeCutVector(G4std::vector&); + // Set the vector of range cuts for all material + + // Get cuts methods + virtual G4double* GetLengthCuts() const; + // Get an array of range cuts for all materials + virtual G4double GetRangeThreshold(const G4Material* ) const; + // Get a range cut for a material + virtual G4double* GetEnergyCuts() const; + // Get an array of energy cuts for all materials + virtual G4double GetEnergyThreshold(const G4Material* ) const; + // Get a energy cut for a material + + // Other methods related with cuts + virtual void ResetCuts(); + // Reset alll cut values in energy + // but theCutInMaxInteractionLength remain unchanged + virtual void ReCalcCuts(); + // Set cut values in energy derived from theCutInMaxInteractionLength + + // set energy range + static void SetEnergyRange(G4double lowedge, G4double highedge) ; public: // With Description // This method concerning cut values is supposed to be used by // G4VUserPhysicsList to restore cutvalues witout calculation - virtual void RestoreCuts(G4double cutInLength, + virtual void RestoreCuts(const G4double* cutInLength, const G4double* cutInEnergy ); protected: - virtual void CalcEnergyCuts(G4double aCut); + void SetCutInMaxInteractionLength(G4double aCut); + // Set a value of theCutInMaxInteractionLength for all materials + void SetCutInMaxInteractionLength(G4double aCut , G4int matrialIndex); + // Set a value of theCutInMaxInteractionLength for a material + void SetCutInMaxInteractionLength(G4double aCut , + const G4Material* aMaterial); + // Set a value of theCutInMaxInteractionLength for a material + void SetEnergyCutValues(G4double energyCuts); + // Set a energy cut value for all materials + + virtual void CalcEnergyCuts(const G4Material* material=0); + // Calculate energy cut values by using range cuts // BuildPhysicsTable is defined as a dummy routine void BuildPhysicsTable() {}; + protected: + // cut values for proton is used for all heavy charged particles + static G4ParticleDefinition* theProton; + G4bool UseProtonCut(); + + G4bool CheckEnergyBinSetting() const; + //-------------- Loss Table ------------------------------------------ // theLossTable is a collection of loss vectors for all elements. // Each loss vector has energy loss values (cross section values @@ -158,8 +192,9 @@ class G4ParticleWithCuts : public G4ParticleDefinition virtual G4double ComputeLoss(G4double AtomicNumber, G4double KineticEnergy ) const; + //-------------- Range Table ------------------------------------------ - protected: + protected: typedef G4PhysicsLogVector G4RangeVector; virtual void BuildRangeVector(const G4Material* aMaterial, const G4LossTable* aLossTable, @@ -169,8 +204,9 @@ class G4ParticleWithCuts : public G4ParticleDefinition protected: G4double ConvertCutToKineticEnergy( - G4RangeVector* theRangeVector - ) const; + G4RangeVector* theRangeVector, + size_t materialIndex + ) const; static G4double RangeLinSimpson( const G4ElementVector* elementVector, @@ -188,16 +224,17 @@ class G4ParticleWithCuts : public G4ParticleDefinition G4double ltaulow, G4double ltauhigh, G4int nbin, G4int NumEl ); + }; -inline G4double G4ParticleWithCuts::GetLengthCuts() const +inline G4double* G4ParticleWithCuts::GetLengthCuts() const { - return theCutInMaxInteractionLength; + return theCutInMaxInteractionLength; } -inline G4double* G4ParticleWithCuts::GetEnergyCuts() const +inline G4double* G4ParticleWithCuts::GetEnergyCuts() const { - return theKineticEnergyCuts; + return theKineticEnergyCuts; } inline void G4ParticleWithCuts::ResetCuts() @@ -208,8 +245,8 @@ inline void G4ParticleWithCuts::ResetCuts() inline void G4ParticleWithCuts::ReCalcCuts() { - if (theCutInMaxInteractionLength>0.0) { - CalcEnergyCuts(theCutInMaxInteractionLength); + if (theCutInMaxInteractionLength != 0) { + CalcEnergyCuts(); } else { if (GetVerboseLevel()>0) { G4cout << "G4ParticleWithCuts::ReCalcCuts() :"; @@ -218,18 +255,6 @@ inline void G4ParticleWithCuts::ReCalcCuts() } } -inline void G4ParticleWithCuts::SetCuts(G4double aCut) -{ - CalcEnergyCuts(aCut); -} - -inline - void G4ParticleWithCuts::SetEnergyRange(G4double lowedge, G4double highedge) -{ - LowestEnergy = lowedge; - HighestEnergy = highedge; -} - #include "G4Material.hh" inline @@ -237,6 +262,14 @@ inline { return theKineticEnergyCuts[aMaterial->GetIndex()]; } + +inline + G4double G4ParticleWithCuts::GetRangeThreshold(const G4Material* aMaterial) const +{ + return theCutInMaxInteractionLength[aMaterial->GetIndex()]; +} + + #endif diff --git a/source/particles/management/include/G4PhaseSpaceDecayChannel.hh b/source/particles/management/include/G4PhaseSpaceDecayChannel.hh index 4d0acd15dd..feb9a68040 100644 --- a/source/particles/management/include/G4PhaseSpaceDecayChannel.hh +++ b/source/particles/management/include/G4PhaseSpaceDecayChannel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhaseSpaceDecayChannel.hh,v 1.3.4.2 2001/06/28 20:19:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhaseSpaceDecayChannel.hh,v 1.5 2001/10/15 09:58:31 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -69,13 +69,5 @@ class G4PhaseSpaceDecayChannel :public G4VDecayChannel G4DecayProducts *ManyBodyDecayIt(); }; -inline - G4double G4PhaseSpaceDecayChannel::Pmx(G4double e, G4double p1, G4double p2) -{ - // calcurate momentum of daughter particles in two-body decay - G4double ppp = (e+p1+p2)*(e+p1-p2)*(e-p1+p2)*(e-p1-p2)/(4.0*e*e); - if (ppp>0) return sqrt(ppp); - else return -1.; -} #endif diff --git a/source/particles/management/include/G4ShortLivedTable.hh b/source/particles/management/include/G4ShortLivedTable.hh index 7756805b2a..c7bac04d52 100644 --- a/source/particles/management/include/G4ShortLivedTable.hh +++ b/source/particles/management/include/G4ShortLivedTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShortLivedTable.hh,v 1.9.4.2 2001/06/28 20:19:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShortLivedTable.hh,v 1.10 2001/07/11 10:01:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4VDecayChannel.hh b/source/particles/management/include/G4VDecayChannel.hh index 48f8302c7d..750ec75bab 100644 --- a/source/particles/management/include/G4VDecayChannel.hh +++ b/source/particles/management/include/G4VDecayChannel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VDecayChannel.hh,v 1.8.2.2 2001/06/28 20:19:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDecayChannel.hh,v 1.9 2001/07/11 10:01:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/include/G4VIsotopeTable.hh b/source/particles/management/include/G4VIsotopeTable.hh index 07992548b9..cef04b47d7 100644 --- a/source/particles/management/include/G4VIsotopeTable.hh +++ b/source/particles/management/include/G4VIsotopeTable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VIsotopeTable.hh,v 1.4.2.2 2001/06/28 20:19:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VIsotopeTable.hh,v 1.5 2001/07/11 10:01:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4DalitzDecayChannel.cc b/source/particles/management/src/G4DalitzDecayChannel.cc index dcbe5eb811..2de1b8a73c 100644 --- a/source/particles/management/src/G4DalitzDecayChannel.cc +++ b/source/particles/management/src/G4DalitzDecayChannel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DalitzDecayChannel.cc,v 1.4.4.2 2001/06/28 20:19:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DalitzDecayChannel.cc,v 1.5 2001/07/11 10:01:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4DecayProducts.cc b/source/particles/management/src/G4DecayProducts.cc index 6dcbf97447..e22390ef91 100644 --- a/source/particles/management/src/G4DecayProducts.cc +++ b/source/particles/management/src/G4DecayProducts.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DecayProducts.cc,v 1.7.2.1 2001/06/28 19:11:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DecayProducts.cc,v 1.9 2001/07/11 10:01:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -65,7 +65,16 @@ G4DecayProducts::G4DecayProducts(const G4DecayProducts &right) //copy daughters (Deep Copy) for (G4int index=0; index < right.numberOfProducts; index++) { - PushProducts( new G4DynamicParticle(*right.theProductVector[index]) ); + G4DynamicParticle* daughter = right.theProductVector[index]; + const G4DecayProducts* pPreAssigned = daughter->GetPreAssignedDecayProducts(); + G4DynamicParticle* pDaughter = new G4DynamicParticle(*daughter); + + if (pPreAssigned) { + G4DecayProducts* pPA = new G4DecayProducts(*pPreAssigned); + pDaughter->SetPreAssignedDecayProducts(pPA); + } + + PushProducts( pDaughter ); } } diff --git a/source/particles/management/src/G4DecayTable.cc b/source/particles/management/src/G4DecayTable.cc index 5a0470df46..05ad9bdb70 100644 --- a/source/particles/management/src/G4DecayTable.cc +++ b/source/particles/management/src/G4DecayTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DecayTable.cc,v 1.6.4.2 2001/06/28 20:19:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DecayTable.cc,v 1.7 2001/07/11 10:01:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4DecayTableMessenger.cc b/source/particles/management/src/G4DecayTableMessenger.cc index 528c9f060f..b8ec19abb8 100644 --- a/source/particles/management/src/G4DecayTableMessenger.cc +++ b/source/particles/management/src/G4DecayTableMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DecayTableMessenger.cc,v 1.3.4.1 2001/06/28 19:11:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DecayTableMessenger.cc,v 1.4 2001/07/11 10:01:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/src/G4DynamicParticle.cc b/source/particles/management/src/G4DynamicParticle.cc index 8aba49b62b..d1ffae3a26 100644 --- a/source/particles/management/src/G4DynamicParticle.cc +++ b/source/particles/management/src/G4DynamicParticle.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DynamicParticle.cc,v 1.10.2.1 2001/06/28 19:11:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DynamicParticle.cc,v 1.11 2001/07/11 10:01:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/src/G4ElectronOccupancy.cc b/source/particles/management/src/G4ElectronOccupancy.cc index db1f19397f..aa6ed5a743 100644 --- a/source/particles/management/src/G4ElectronOccupancy.cc +++ b/source/particles/management/src/G4ElectronOccupancy.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ElectronOccupancy.cc,v 1.5.4.2 2001/06/28 20:19:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ElectronOccupancy.cc,v 1.6 2001/07/11 10:01:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4IonTable.cc b/source/particles/management/src/G4IonTable.cc index 11f405fa67..7c9af083b4 100644 --- a/source/particles/management/src/G4IonTable.cc +++ b/source/particles/management/src/G4IonTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IonTable.cc,v 1.28.2.2 2001/06/28 20:19:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IonTable.cc,v 1.30 2001/10/15 09:58:34 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -472,7 +472,8 @@ void G4IonTable::AddProcessManager(const G4String& name) // retreive /control/verbose G4UImanager::GetUIpointer()->SetVerboseLevel(tempVerboseLevel); } - + +#include "g4std/vector" ///////////////// void G4IonTable::SetCuts(G4ParticleDefinition* ion) { @@ -483,13 +484,11 @@ void G4IonTable::SetCuts(G4ParticleDefinition* ion) } if (genericIon->GetEnergyCuts() != 0) { - ion->SetCuts( genericIon->GetLengthCuts()); -#ifdef G4VERBOSE - if (GetVerboseLevel()> 1) { - G4cout << "G4IonTable::GetIon() : cut value ="; - G4cout << genericIon->GetLengthCuts()/mm << "[mm]" < cuts; + for (size_t j=0; jGetLengthCuts())[j] ); + } + ion->SetRangeCutVector(cuts); G4String name = ion->GetParticleName(); diff --git a/source/particles/management/src/G4Ions.cc b/source/particles/management/src/G4Ions.cc index b880b933f5..c312e09ae9 100644 --- a/source/particles/management/src/G4Ions.cc +++ b/source/particles/management/src/G4Ions.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Ions.cc,v 1.5.2.1 2001/06/28 19:11:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Ions.cc,v 1.6 2001/07/11 10:02:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4IsotopeProperty.cc b/source/particles/management/src/G4IsotopeProperty.cc index bd33a99afb..e7f19b6e8d 100644 --- a/source/particles/management/src/G4IsotopeProperty.cc +++ b/source/particles/management/src/G4IsotopeProperty.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IsotopeProperty.cc,v 1.2.4.2 2001/06/28 20:19:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IsotopeProperty.cc,v 1.3 2001/07/11 10:02:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4KL3DecayChannel.cc b/source/particles/management/src/G4KL3DecayChannel.cc index eb82e44f0b..a2e3779889 100644 --- a/source/particles/management/src/G4KL3DecayChannel.cc +++ b/source/particles/management/src/G4KL3DecayChannel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4KL3DecayChannel.cc,v 1.4.4.2 2001/06/28 20:19:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KL3DecayChannel.cc,v 1.5 2001/07/11 10:02:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4MuonDecayChannel.cc b/source/particles/management/src/G4MuonDecayChannel.cc index 703268adb3..7a1534fdaf 100644 --- a/source/particles/management/src/G4MuonDecayChannel.cc +++ b/source/particles/management/src/G4MuonDecayChannel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuonDecayChannel.cc,v 1.8.2.2 2001/06/28 20:19:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonDecayChannel.cc,v 1.9 2001/07/11 10:02:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/management/src/G4NeutronBetaDecayChannel.cc b/source/particles/management/src/G4NeutronBetaDecayChannel.cc new file mode 100644 index 0000000000..52d81ee46c --- /dev/null +++ b/source/particles/management/src/G4NeutronBetaDecayChannel.cc @@ -0,0 +1,178 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4NeutronBetaDecayChannel.cc,v 1.3 2001/11/06 02:06:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// History: first implementation, based on object model of +// 18 Sep 2001 H.Kurashige +// +// ------------------------------------------------------------ + +#include "G4ParticleDefinition.hh" +#include "G4DecayProducts.hh" +#include "G4VDecayChannel.hh" +#include "G4NeutronBetaDecayChannel.hh" +#include "Randomize.hh" +#include "G4RotationMatrix.hh" +#include "G4LorentzVector.hh" +#include "G4LorentzRotation.hh" + + +G4NeutronBetaDecayChannel::G4NeutronBetaDecayChannel( + const G4String& theParentName, + G4double theBR) + :G4VDecayChannel("Neutron Decay"), + aENuCorr(-0.102) +{ + // set names for daughter particles + if (theParentName == "neutron") { + SetBR(theBR); + SetParent("neutron"); + SetNumberOfDaughters(3); + SetDaughter(0, "e-"); + SetDaughter(1, "anti_nu_e"); + SetDaughter(2, "proton"); + } else { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << "G4NeutronBetaDecayChannel:: constructor :"; + G4cout << " parent particle is not muon but "; + G4cout << theParentName << G4endl; + } +#endif + } +} + +G4NeutronBetaDecayChannel::~G4NeutronBetaDecayChannel() +{ +} + +G4DecayProducts *G4NeutronBetaDecayChannel::DecayIt(G4double) +{ + // This class describes free neutron beta decay kinemtics. + // This version neglects neutron/electron polarization + // without Coulomb effect + +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) G4cout << "G4NeutronBetaDecayChannel::DecayIt "; +#endif + + if (parent == 0) FillParent(); + if (daughters == 0) FillDaughters(); + + // parent mass + G4double parentmass = parent->GetPDGMass(); + + //daughters'mass + G4double daughtermass[3]; + G4double sumofdaughtermass = 0.0; + for (G4int index=0; index<3; index++){ + daughtermass[index] = daughters[index]->GetPDGMass(); + sumofdaughtermass += daughtermass[index]; + } + G4double xmax = parentmass-sumofdaughtermass; + + //create parent G4DynamicParticle at rest + G4ThreeVector dummy; + G4DynamicParticle * parentparticle = new G4DynamicParticle( parent, dummy, 0.0); + + //create G4Decayproducts + G4DecayProducts *products = new G4DecayProducts(*parentparticle); + delete parentparticle; + + // calculate daughter momentum + G4double daughtermomentum[3]; + + // calcurate electron energy + G4double x; // Ee + G4double p; // Pe + G4double m = daughtermass[0]; //Me + G4double w; // cosine of e-nu angle + G4double r; + G4double r0; + do { + do { + x = xmax*G4UniformRand(); + p = sqrt(x*(x+2.0*m)); + w = 1.0-2.0*G4UniformRand(); + r = p*(x+m)*(xmax-x)*(xmax-x)*(1.0+aENuCorr*p/(x+m)*w); + r0 = G4UniformRand()*(xmax+m)*(xmax+m)*xmax*xmax*(1.0+aENuCorr); + } while (r < r0); + } while (xmaxPushProducts(daughterparticle0); + + // daughter 1 (nutrino) in XZ plane + G4double eNu = xmax-x; + G4double cosn = w; + G4double sinn = sqrt((1.0-cosn)*(1.0+cosn)); + + G4ThreeVector direction1(sinn, 0.0, cosn); + direction1 = rm * direction1; + G4DynamicParticle * daughterparticle1 + = new G4DynamicParticle( daughters[1], direction1*eNu); + products->PushProducts(daughterparticle1); + + // daughter 2 (proton) at REST + G4ThreeVector direction2(0.0, 0.0, 0.0); + G4DynamicParticle * daughterparticle2 + = new G4DynamicParticle( daughters[2], direction2); + products->PushProducts(daughterparticle2); + + + // output message +#ifdef G4VERBOSE + if (GetVerboseLevel()>1) { + G4cout << "G4NeutronBetaDecayChannel::DecayIt "; + G4cout << " create decay products in rest frame " <DumpInfo(); + } +#endif + return products; +} + + + + + + diff --git a/source/particles/management/src/G4NucleiProperties.cc b/source/particles/management/src/G4NucleiProperties.cc index a1b8f53c35..b7711697d5 100644 --- a/source/particles/management/src/G4NucleiProperties.cc +++ b/source/particles/management/src/G4NucleiProperties.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NucleiProperties.cc,v 1.6.4.2 2001/06/28 20:19:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NucleiProperties.cc,v 1.9 2001/10/16 08:16:21 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -204,3 +204,70 @@ G4double G4NucleiProperties::GetNuclearMass(const G4double A, const G4double Z) // }; + +G4double G4NucleiProperties::GetMassExcess(const G4int A, const G4int Z) +{ + if (A < 1 || Z < 0 || Z > A) { + G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " << A + << " and Z = " << Z << G4endl; + return 0.0; + + } else { + + if (G4NucleiPropertiesTable::IsInTable(Z,A)){ + return G4NucleiPropertiesTable::GetMassExcess(Z,A); + } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)){ + return G4NucleiPropertiesTheoreticalTable::GetMassExcess(Z,A); + } else { + return MassExcess(A,Z); + } + } + +} + + +G4double G4NucleiProperties::GetAtomicMass(const G4double A, const G4double Z) +{ + if (Z < 0 || Z > A) { + G4cout << "G4NucleiProperties::GetAtomicMass: Wrong values for A = " << A + << " and Z = " << Z << G4endl; return 0.0; + + } else if (abs(A - G4int(A)) > 1.e-10) { + return AtomicMass(A,Z); + + } else { + if (G4NucleiPropertiesTable::IsInTable(Z,A)) { + return G4NucleiPropertiesTable::GetAtomicMass(Z,A); + } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)){ + return G4NucleiPropertiesTheoreticalTable::GetAtomicMass(Z,A); + } else { + return AtomicMass(A,Z); + } + } +} + +G4double G4NucleiProperties::GetBindingEnergy(const G4int A, const G4int Z) +{ + if (A < 1 || Z < 0 || Z > A) { + G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " << A + << " and Z = " << Z << G4endl; + return 0.0; + + } else { + if (G4NucleiPropertiesTable::IsInTable(Z,A)) { + return G4NucleiPropertiesTable::GetBindingEnergy(Z,A); + } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)) { + return G4NucleiPropertiesTheoreticalTable::GetBindingEnergy(Z,A); + }else { + return BindingEnergy(A,Z); + } + + } +} + + +G4double G4NucleiProperties::MassExcess(G4double A, G4double Z) +{ + return GetAtomicMass(A,Z) - A*amu_c2; +} + diff --git a/source/particles/management/src/G4NucleiPropertiesTableA.cc b/source/particles/management/src/G4NucleiPropertiesTableA.cc index f27728681f..0d6f806eea 100644 --- a/source/particles/management/src/G4NucleiPropertiesTableA.cc +++ b/source/particles/management/src/G4NucleiPropertiesTableA.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NucleiPropertiesTableA.cc,v 1.5.4.2 2001/06/28 20:19:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NucleiPropertiesTableA.cc,v 1.7 2001/10/15 09:58:34 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 @@ -115,15 +115,62 @@ G4int G4NucleiPropertiesTable::MaxZ(G4int A) G4double G4NucleiPropertiesTable::GetNuclearMass(G4int Z, G4int A) { - G4int i=GetIndex(Z, A); - if (i >= 0){ - const G4double NuclearMass = GetAtomicMass(Z,A) - G4double(Z)*electron_mass_c2 + - 1.433e-5*MeV*pow(G4double(Z),2.39); - return NuclearMass; - } else { - return 0.0; - } + G4int i=GetIndex(Z, A); + if (i >= 0){ + const G4double NuclearMass = GetAtomicMass(Z,A) - G4double(Z)*electron_mass_c2 + + 1.433e-5*MeV*pow(G4double(Z),2.39); + return NuclearMass; + } else { + return 0.0; + } } + +G4double G4NucleiPropertiesTable::GetMassExcess(G4int Z, G4int A) +{ + G4int i=GetIndex(Z, A); + if (i >= 0) { + return MassExcess[i]*keV; + } else { + return 0.0; + } +} + +G4double G4NucleiPropertiesTable::GetBindingEnergy(G4int Z, G4int A) +{ + G4int i=GetIndex(Z, A); + if (i >= 0){ + return (G4double(A-Z)*MassExcess[0] + G4double(Z)*MassExcess[1] - MassExcess[i])*keV; + } else { + return 0.0; + } +} + +G4double G4NucleiPropertiesTable::GetBetaDecayEnergy(G4int Z, G4int A) +{ + G4int i=GetIndex(Z, A); + if (i >= 0){ + return BetaEnergy[i]*keV; + } else { + return 0.0; + } +} + +G4double G4NucleiPropertiesTable::GetAtomicMass(G4int Z, G4int A) +{ + G4int i=GetIndex(Z, A); + if (i >= 0){ + return MassExcess[i]*keV + G4double(A)*amu_c2; + } else { + return 0.0; + } +} + + +G4bool G4NucleiPropertiesTable::IsInTable(G4int Z, G4int A) +{ + return (Z <= A && A >= 1 && A <= 273 && Z >= 0 && Z <= 110 && GetIndex(Z, A) >= 0); +} + diff --git a/source/particles/management/src/G4NucleiPropertiesTableB.cc b/source/particles/management/src/G4NucleiPropertiesTableB.cc index 58bf2467ae..09c8f8b5d7 100644 --- a/source/particles/management/src/G4NucleiPropertiesTableB.cc +++ b/source/particles/management/src/G4NucleiPropertiesTableB.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NucleiPropertiesTableB.cc,v 1.5.2.1 2001/06/28 19:11:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NucleiPropertiesTableB.cc,v 1.7 2001/10/15 09:58:35 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class implementation file @@ -1144,3 +1144,4 @@ G4double G4NucleiPropertiesTable::BetaEnergy[G4NucleiPropertiesTable::nEntries] -5358.000, -5990.000, 0.0 , -6204.000, -4391.000, 0.0 , -4649.000, -5624.000, 0.0 , -3635.000, 0.0 , -4517.000, 0.0 , -6675.000, 0.0 , 0.0 }; + diff --git a/source/particles/management/src/G4NucleiPropertiesTheoreticalTableA.cc b/source/particles/management/src/G4NucleiPropertiesTheoreticalTableA.cc index 7f9c000558..f33d40aac4 100644 --- a/source/particles/management/src/G4NucleiPropertiesTheoreticalTableA.cc +++ b/source/particles/management/src/G4NucleiPropertiesTheoreticalTableA.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NucleiPropertiesTheoreticalTableA.cc,v 1.2.2.1 2001/06/28 19:11:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NucleiPropertiesTheoreticalTableA.cc,v 1.4 2001/10/15 09:58:35 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -78,3 +78,59 @@ G4int G4NucleiPropertiesTheoreticalTable::GetIndex(G4int Z, G4int A) +G4double G4NucleiPropertiesTheoreticalTable::GetMassExcess(G4int Z, G4int A) +{ + G4int i=GetIndex(Z, A); + if (i >= 0) { + return AtomicMassExcess[i]*MeV; + } else { + return 0.0; + } +} + +G4double G4NucleiPropertiesTheoreticalTable::GetBindingEnergy(G4int Z, G4int A) +{ + G4int i=GetIndex(Z, A); + if (i >= 0){ + const G4double Mh = 7.289034*MeV; // hydrogen atom mass excess + const G4double Mn = 8.071431*MeV; // neutron mass excess + return G4double(Z)*Mh + G4double(A-Z)*Mn - AtomicMassExcess[i]*MeV; + } else { + return 0.0; + } +} + + + +G4double G4NucleiPropertiesTheoreticalTable::GetAtomicMass(G4int Z, G4int A) +{ + G4int i=GetIndex(Z, A); + if (i >= 0) { + return AtomicMassExcess[i]*MeV + A*amu_c2; + } else { + return 0.0; + } +} + + + +G4double G4NucleiPropertiesTheoreticalTable::GetNuclearMass(G4int Z, G4int A) +{ + G4int i=GetIndex(Z, A); + if (i >= 0) { + return GetAtomicMass(Z,A) - G4double(Z)*electron_mass_c2 + ElectronicBindingEnergy(Z); + } else { + return 0.0; + } +} + +G4double G4NucleiPropertiesTheoreticalTable::ElectronicBindingEnergy(G4int Z) { + const G4double ael = 1.433e-5*MeV; // electronic-binding constant + return ael*pow(G4double(Z),2.39); +} + +G4bool G4NucleiPropertiesTheoreticalTable::IsInTable(G4int Z, G4int A) +{ + return (Z <= A && A >= 16 && A <= 339 && Z <= 136 && Z >= 8 && GetIndex(Z, A) >= 0); +} + diff --git a/source/particles/management/src/G4PDGCodeChecker.cc b/source/particles/management/src/G4PDGCodeChecker.cc index 8b6a682d5f..2f05880119 100644 --- a/source/particles/management/src/G4PDGCodeChecker.cc +++ b/source/particles/management/src/G4PDGCodeChecker.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PDGCodeChecker.cc,v 1.4.2.2 2001/06/28 20:19:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PDGCodeChecker.cc,v 1.5 2001/07/11 10:02:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4ParticleDefinition.cc b/source/particles/management/src/G4ParticleDefinition.cc index 97db7d38ea..d5c394c8bb 100644 --- a/source/particles/management/src/G4ParticleDefinition.cc +++ b/source/particles/management/src/G4ParticleDefinition.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleDefinition.cc,v 1.11.2.1 2001/06/28 19:11:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleDefinition.cc,v 1.12 2001/07/11 10:02:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/src/G4ParticleMessenger.cc b/source/particles/management/src/G4ParticleMessenger.cc index e40e406f48..4f32f2c696 100644 --- a/source/particles/management/src/G4ParticleMessenger.cc +++ b/source/particles/management/src/G4ParticleMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleMessenger.cc,v 1.4.4.1 2001/06/28 19:11:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleMessenger.cc,v 1.6 2001/10/24 18:42:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -64,7 +64,7 @@ G4ParticleMessenger::G4ParticleMessenger(G4ParticleTable* pTable) //Directory /particle/ thisDirectory = new G4UIdirectory("/particle/"); - thisDirectory->SetGuidance("Paricle control commands."); + thisDirectory->SetGuidance("Particle control commands."); //Commnad /particle/select selectCmd = new G4UIcmdWithAString("/particle/select",this); diff --git a/source/particles/management/src/G4ParticlePropertyMessenger.cc b/source/particles/management/src/G4ParticlePropertyMessenger.cc index 3af70fb339..5bb6601baf 100644 --- a/source/particles/management/src/G4ParticlePropertyMessenger.cc +++ b/source/particles/management/src/G4ParticlePropertyMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticlePropertyMessenger.cc,v 1.3.4.1 2001/06/28 19:11:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticlePropertyMessenger.cc,v 1.4 2001/07/11 10:02:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/particles/management/src/G4ParticleTable.cc b/source/particles/management/src/G4ParticleTable.cc index cff066b28e..3471c52263 100644 --- a/source/particles/management/src/G4ParticleTable.cc +++ b/source/particles/management/src/G4ParticleTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleTable.cc,v 1.17.4.1 2001/06/28 19:11:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleTable.cc,v 1.18 2001/07/11 10:02:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4ParticleTable // diff --git a/source/particles/management/src/G4ParticleWithCuts.cc b/source/particles/management/src/G4ParticleWithCuts.cc index bf1da4c2bf..828d3929d1 100644 --- a/source/particles/management/src/G4ParticleWithCuts.cc +++ b/source/particles/management/src/G4ParticleWithCuts.cc @@ -21,24 +21,22 @@ // ******************************************************************** // // -// $Id: G4ParticleWithCuts.cc,v 1.9.2.1 2001/06/28 19:11:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleWithCuts.cc,v 1.17 2001/10/28 05:08:37 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- // GEANT 4 class implementation file // -// Hisaya Kurashige, 21 Oct 1996 -// Hisaya Kurashige, 04 Jan 1997 -// -------------------------------------------------------------- -// New Physics scheme 8 Jan. 1997 H.Kurahige -// The cut in kinetic energy is set to zero for vacuum, -// bug in ConvertCutToKineticEnergy is corrected . L.Urban 04/04/97 -// remove sprintf 10 Nov. 1997 H.Kurashige -// remove BuildPhysicTabel() 06 June 1998 H.Kurashige -// bug in CalcEnergyCuts is corrected , 22 June 1998 L.Urban -// modify CalcEnergyCuts 09 Nov. 1998, L.Urban +// History: +// first implementation, based on object model of Hisaya Kurashige, +// 21 Oct 1996 +// calculation of Range Table is based on implementeation for Muon +// by L.Urban, 10 May 1996 +// modify CalcEnergyCuts 09 Nov. 1998, L.Urban // added RestoreCuts H.Kurashige 09 Mar. 2001 +// modify for material-V03-02-02 (STL migration) H.Kurashige 19 Sep. 2001 +// introduced material dependent range cuts 08 Oct. 2001 // ------------------------------------------------------------ #include "globals.hh" #include "G4ParticleWithCuts.hh" @@ -50,9 +48,12 @@ #include "g4std/strstream" +// energy range G4double G4ParticleWithCuts::LowestEnergy = 0.99e-3*MeV; G4double G4ParticleWithCuts::HighestEnergy = 100.0e6*MeV; +// pointer to G4Proton +G4ParticleDefinition* G4ParticleWithCuts::theProton = 0; G4ParticleWithCuts::G4ParticleWithCuts( const G4String& aName, @@ -78,7 +79,7 @@ G4ParticleWithCuts::G4ParticleWithCuts( pType, lepton, baryon, encoding, stable, lifetime, decaytable, shortlived), //-- members initialisation for SetCuts ------------------------------ - theCutInMaxInteractionLength(-1.0), + theCutInMaxInteractionLength(0), theKineticEnergyCuts(0), theLossTable(0), @@ -94,6 +95,7 @@ G4ParticleWithCuts::G4ParticleWithCuts( G4ParticleWithCuts::~G4ParticleWithCuts() { + if (theCutInMaxInteractionLength) delete [] theCutInMaxInteractionLength; if (theKineticEnergyCuts) delete [] theKineticEnergyCuts; if (theLossTable) delete theLossTable; } @@ -121,7 +123,7 @@ G4double G4ParticleWithCuts::RangeLinSimpson( for (G4int j=0; jGetIndex(); + G4int IndEl = (*elementVector)[j]->GetIndex(); lossi += atomicNumDensityVector[j]* (*aLossTable)[IndEl]->GetValue(ti,isOut); } @@ -164,7 +166,7 @@ G4double G4ParticleWithCuts::RangeLogSimpson( for (G4int j=0; jGetIndex(); + G4int IndEl = (*elementVector)[j]->GetIndex(); lossi += atomicNumDensityVector[j]* (*aLossTable)[IndEl]->GetValue(ti,isOut); } @@ -233,7 +235,10 @@ void G4ParticleWithCuts::BuildLossTable() // ****************** ConvertCutToKineticEnergy ************************* // ********************************************************************** -G4double G4ParticleWithCuts::ConvertCutToKineticEnergy(G4RangeVector* rangeVector) const +G4double + G4ParticleWithCuts::ConvertCutToKineticEnergy(G4RangeVector* rangeVector, + size_t materialIndex + ) const { const G4double epsilon=0.01; const G4int NBIN=200; @@ -259,10 +264,10 @@ G4double G4ParticleWithCuts::ConvertCutToKineticEnergy(G4RangeVector* rangeVecto G4double T1 = LowestEnergy; G4double r1 = rangeVector->GetValue(T1,isOut); - if ( theCutInMaxInteractionLength <= r1 ) + if ( theCutInMaxInteractionLength[materialIndex] <= r1 ) return T1; - if ( theCutInMaxInteractionLength >= rmax ) + if ( theCutInMaxInteractionLength[materialIndex] >= rmax ) { #ifdef G4VERBOSE if (GetVerboseLevel()>0) { @@ -277,9 +282,9 @@ G4double G4ParticleWithCuts::ConvertCutToKineticEnergy(G4RangeVector* rangeVecto G4double T2 = Tmax ; G4double T3 = sqrt(T1*T2); G4double r3 = rangeVector->GetValue(T3,isOut); - while ( abs(1.-r3/theCutInMaxInteractionLength)>epsilon ) + while ( abs(1.-r3/theCutInMaxInteractionLength[materialIndex])>epsilon ) { - if ( theCutInMaxInteractionLength <= r3 ) { + if ( theCutInMaxInteractionLength[materialIndex] <= r3 ) { T2 = T3; } else { T1 = T3; @@ -295,18 +300,20 @@ G4double G4ParticleWithCuts::ConvertCutToKineticEnergy(G4RangeVector* rangeVecto // **************************** RestoreCuts ********************************* // ********************************************************************** -void G4ParticleWithCuts::RestoreCuts(G4double cutInLength, - const G4double* cutInEnergy ) +void G4ParticleWithCuts::RestoreCuts(const G4double* cutInLength, + const G4double* cutInEnergy ) { - // Set cut in stopping range - theCutInMaxInteractionLength = cutInLength; + size_t numberOfMaterials = G4Material::GetNumberOfMaterials(); - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + // Set cut in stopping range + if(theCutInMaxInteractionLength) delete [] theCutInMaxInteractionLength; + theCutInMaxInteractionLength = new G4double [numberOfMaterials]; // Restore the vector of cuts in energy corresponding to the range cut if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - for (size_t j=0; jlength(); j +=1) { + theKineticEnergyCuts = new G4double [numberOfMaterials]; + for (size_t j=0; jGetParticleName() << "]"; - errOs << " : not defined or illegal TotBin [" << TotBin << "]" << '\0'; - G4Exception(errMsg); - } - if ( (LowestEnergy<0.0)||(HighestEnergy<=LowestEnergy) ){ - errOs << "Error in G4ParticlWithCuts::G4ParticlWithCuts"; - errOs << "[" << this->GetParticleName() << "]"; - errOs << " : illegal energy range" << "(" << LowestEnergy/GeV; - errOs << "," << HighestEnergy/GeV << ") [GeV]" << '\0'; - G4Exception(errMsg); - } - - // Set cut in stopping range - theCutInMaxInteractionLength = aCut; - - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - - // Create the vector of cuts in energy - // corresponding to the stopping range cut - if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; - theKineticEnergyCuts = new G4double [materialTable->length()]; - G4double Charge = this->GetPDGCharge() ; - G4bool useProtonCut = ((GetParticleName() != "gamma" ) && (GetParticleName() != "e-" ) && @@ -356,46 +334,111 @@ void G4ParticleWithCuts::CalcEnergyCuts(G4double aCut) (GetParticleName() != "proton" ) && (GetParticleName() != "anti_proton" ) && (Charge != 0.) ); - - static G4ParticleDefinition* theProton =0; + if (!useProtonCut) return false; // check if the proton exists or not - if ((useProtonCut) && (theProton ==0)) { + if(theProton ==0) { theProton = G4ParticleTable::GetParticleTable()->FindParticle("proton"); if (theProton ==0) { #ifdef G4VERBOSE if (GetVerboseLevel()>0) { - G4cout << " G4ParticleWithCuts::CalcEnergyCuts "; - G4cout << " proton is not defined !!" << G4endl; + G4cout << " G4ParticleWithCuts::UseProtonCut "; + G4cout << " proton is not defined !!" << G4endl; } #endif - useProtonCut = false; - } - } + return false; + } + } - if (useProtonCut) { - // check if cuts for the proton are defined or not - if (theProton->GetEnergyCuts()==0) { - errOs << " G4ParticleWithCuts::CalcEnergyCuts "; - errOs << " proton energy cut is not defined !!" << '\0'; - G4Exception(errMsg); + // check if cuts for the proton are defined or not + if (theProton->GetEnergyCuts()==0) { + char errMsg[1024]; + G4std::ostrstream errOs(errMsg,1024); + errOs << " G4ParticleWithCuts::CalcEnergyCuts "; + errOs << " proton energy cut is not defined !!" << '\0'; + G4Exception(errMsg); + } + + G4double* protonCuts = theProton->GetLengthCuts(); + + // check if the cut in range is same as one fro the proton + size_t numberOfMaterials = G4Material::GetNumberOfMaterials(); + for (size_t J=0; J2) { + G4cout << " G4ParticleWithCuts: [" << GetParticleName() <<"]"; + if ( useProtonCut) { + G4cout << " uses Proton Cut " << G4endl; + } else { + G4cout << " calcurate by using its own loss table " << G4endl; } - // check if the cut in range is same as one fro the proton - useProtonCut = ( abs(aCut-theProton->GetLengthCuts())<1.*nanometer ); - } + } +#endif + + return useProtonCut; +} + +G4bool G4ParticleWithCuts::CheckEnergyBinSetting() const +{ + // check LowestEnergy/ HighestEnergy/TotBin + if (TotBin<1) { + char errMsg[1024]; + G4std::ostrstream errOs(errMsg,1024); + errOs << "Error in G4ParticlWithCuts::G4ParticlWithCuts" ; + errOs << "[" << this->GetParticleName() << "]"; + errOs << " : not defined or illegal TotBin [" << TotBin << "]" << '\0'; + G4Exception(errMsg); + } + if ( (LowestEnergy<0.0)||(HighestEnergy<=LowestEnergy) ){ + char errMsg[1024]; + G4std::ostrstream errOs(errMsg,1024); + errOs << "Error in G4ParticlWithCuts::G4ParticlWithCuts"; + errOs << "[" << this->GetParticleName() << "]"; + errOs << " : illegal energy range" << "(" << LowestEnergy/GeV; + errOs << "," << HighestEnergy/GeV << ") [GeV]" << '\0'; + G4Exception(errMsg); + } + return true; +} + + +void G4ParticleWithCuts::CalcEnergyCuts(const G4Material* theMaterial) +{ + // check LowestEnergy/ HighestEnergy/TotBin + CheckEnergyBinSetting(); + + // number of materials + size_t numberOfMaterials = G4Material::GetNumberOfMaterials(); + + // Create the vector of cuts in energy + // corresponding to the stopping range cut + if( !theMaterial) { + if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; + theKineticEnergyCuts = new G4double [numberOfMaterials]; + } else { + if(!theKineticEnergyCuts) theKineticEnergyCuts = new G4double [numberOfMaterials]; + } + + + G4double Charge = this->GetPDGCharge() ; + + G4bool useProtonCut = UseProtonCut(); if (useProtonCut) { // use energy cuts for Proton -#ifdef G4VERBOSE - if (GetVerboseLevel()>2) { - G4cout << " G4ParticleWithCuts: [" << GetParticleName() <<"]"; - G4cout << " uses Proton Cut " << G4endl; - } -#endif G4double ChargeSquare = Charge*Charge/(eplus*eplus) ; G4double massRatio = proton_mass_c2/(this->GetPDGMass()) ; - for (size_t J=0; Jlength(); J +=1) { + for (size_t J=0; JGetIndex() != J ) continue; + } + G4double protonEnergyCut = (theProton->GetEnergyCuts())[J] ; // cut energy is rescaled by using charge and mass ratio theKineticEnergyCuts[J] = ChargeSquare*protonEnergyCut/massRatio ; @@ -404,12 +447,6 @@ void G4ParticleWithCuts::CalcEnergyCuts(G4double aCut) } } } else { -#ifdef G4VERBOSE - if (GetVerboseLevel()>2) { - G4cout << " G4ParticleWithCuts: [" << GetParticleName() <<"]"; - G4cout << " calcurate by using its own loss table " << G4endl; - } -#endif // Build the energy loss table BuildLossTable(); @@ -417,9 +454,14 @@ void G4ParticleWithCuts::CalcEnergyCuts(G4double aCut) // fill theKineticEnergyCuts and delete the range vector G4double tune = 0.025*mm*g/cm3 ,lowen = 30.*keV ; G4double density ; - for (size_t J=0; Jlength(); J +=1){ + const G4MaterialTable * materialTable = G4Material::GetMaterialTable(); + for (size_t J=0; JGetIndex() != J ) continue; + } + G4RangeVector* rangeVector = new - G4RangeVector(LowestEnergy, HighestEnergy, TotBin); + G4RangeVector(LowestEnergy, HighestEnergy, TotBin); G4Material* aMaterial = (*materialTable)[J]; density = aMaterial->GetDensity() ; if(density == 0.) { @@ -428,17 +470,17 @@ void G4ParticleWithCuts::CalcEnergyCuts(G4double aCut) this->BuildRangeVector(aMaterial, this->theLossTable, this->HighestEnergy, this->GetPDGMass(), rangeVector); - theKineticEnergyCuts[J] = ConvertCutToKineticEnergy(rangeVector); + theKineticEnergyCuts[J] = ConvertCutToKineticEnergy(rangeVector, J); if( ((GetParticleName()=="e-")||(GetParticleName()=="e+")) && (theKineticEnergyCuts[J] < lowen) ) { - theKineticEnergyCuts[J] /= (1.+tune/(aCut*density)) ; + theKineticEnergyCuts[J] /= (1.+tune/(theCutInMaxInteractionLength[J]*density)); } if(theKineticEnergyCuts[J] < LowestEnergy) { theKineticEnergyCuts[J] = LowestEnergy ; + } } - } - delete rangeVector; + delete rangeVector; } // Delete energy loss table @@ -530,7 +572,7 @@ void G4ParticleWithCuts::BuildRangeVector( for (i=0; iGetIndex(); + G4int IndEl = (*elementVector)[i]->GetIndex(); loss1 += atomicNumDensityVector[i]* (*aLossTable)[IndEl]->GetValue(t1,isOut); loss2 += atomicNumDensityVector[i]* @@ -583,7 +625,7 @@ void G4ParticleWithCuts::BuildRangeVector( rangeVector->PutValue(i,Value); if (rmax < Value) rmax = Value; } - if ( theCutInMaxInteractionLength >= rmax) { + if ( theCutInMaxInteractionLength[aMaterial->GetIndex()] >= rmax) { #ifdef G4VERBOSE if (GetVerboseLevel()>0) { G4cout << "Error in G4ParticleWithCuts::BuildRangeVector()" << G4endl; @@ -595,3 +637,140 @@ void G4ParticleWithCuts::BuildRangeVector( #endif } } + +void G4ParticleWithCuts::SetCuts(G4double aCut) +{ + // set range cut values for all materials + SetCutInMaxInteractionLength(aCut); + + // calculate energy cut values + CalcEnergyCuts(); +} + +void G4ParticleWithCuts::SetRangeCut(G4double aCut, const G4Material* aMaterial) +{ + // set range cut values for all materials + SetCutInMaxInteractionLength(aCut, aMaterial); + + // calculate energy cut values + CalcEnergyCuts(aMaterial); +} + +void G4ParticleWithCuts::SetRangeCutVector(G4std::vector& cuts) +{ + // set material table pointer + size_t numberOfMaterials = G4Material::GetNumberOfMaterials(); + + // check vector + if (cuts.size() != numberOfMaterials) { +#ifdef G4VERBOSE + if (GetVerboseLevel()>0) { + G4cout << " G4ParticleWithCuts::SetRangeCutVector: "; + G4cout << " given vector size is not consistent with material table size " +; + G4cout << G4endl; + G4cout << " Cut values remain unchanged !!" << G4endl; + } +#endif + return; + } + // Create the vector of cuts in range + if(theCutInMaxInteractionLength) delete [] theCutInMaxInteractionLength; + theCutInMaxInteractionLength = new G4double [numberOfMaterials]; + + // Set cut in stopping range for all materials + for (size_t J=0; J1) { + G4cout << " G4ParticleWithCuts::SetCutInMaxInteractionLength: "; + G4cout << " Cut in range for all material is set to "; + G4cout << aCut/mm << " [mm]" << G4endl; + } +#endif + for (size_t J=0; J1) { + G4cout << " G4ParticleWithCuts::SetCutInMaxInteractionLength: "; + G4cout << " Cut in range for all material is set to "; + G4cout << aCut/mm << " [mm]" << G4endl; + } +#endif + + for (size_t J=0; JGetIndex()] = aCut; +} + + +void G4ParticleWithCuts::SetEnergyCutValues(G4double energyCut) +{ + size_t numberOfMaterials = G4Material::GetNumberOfMaterials(); + + if(theKineticEnergyCuts) delete [] theKineticEnergyCuts; + theKineticEnergyCuts = new G4double [numberOfMaterials]; + + // fill theKineticEnergyCuts and delete the range vector + for (size_t J=0; J0) return sqrt(ppp); + else return -1.; +} diff --git a/source/particles/management/src/G4ShortLivedTable.cc b/source/particles/management/src/G4ShortLivedTable.cc index 37b3aed9cd..09a26a3871 100644 --- a/source/particles/management/src/G4ShortLivedTable.cc +++ b/source/particles/management/src/G4ShortLivedTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShortLivedTable.cc,v 1.9.4.2 2001/06/28 20:19:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShortLivedTable.cc,v 1.10 2001/07/11 10:02:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/management/src/G4VDecayChannel.cc b/source/particles/management/src/G4VDecayChannel.cc index cabb968076..4dca042634 100644 --- a/source/particles/management/src/G4VDecayChannel.cc +++ b/source/particles/management/src/G4VDecayChannel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VDecayChannel.cc,v 1.9.2.1 2001/06/28 19:11:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDecayChannel.cc,v 1.12 2001/08/17 00:14:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -282,6 +282,7 @@ void G4VDecayChannel::FillDaughters() daughters = 0; G4Exception("G4VDecayChannel::FillDaughters"); } + //create and set the array of pointers to daughter particles daughters = new G4ParticleDefinition*[numberOfDaughters]; if (daughters_mass != 0) delete [] daughters_mass; @@ -312,7 +313,7 @@ void G4VDecayChannel::FillDaughters() } #endif SetBR(0.0); - // G4Exception("G4VDecayChannel::FillDaughters"); + return; } #ifdef G4VERBOSE if (verboseLevel>1) { @@ -325,23 +326,29 @@ void G4VDecayChannel::FillDaughters() } // end loop over all daughters // check sum of daghter mass - if (sumofdaughtermass > parentmass) { - // !!! illegal mass !!! + const G4double AllowanceOfMassDifference = 1.0 * MeV; + if ( (sumofdaughtermass > parentmass + AllowanceOfMassDifference) || + ( (parent->GetParticleType() != "nucleus") && + (sumofdaughtermass > parentmass ) ) ){ + // !!! illegal mass !!! #ifdef G4VERBOSE - if (GetVerboseLevel()>0) { - G4cout << "G4VDecayChannel::FillDaughters "; - G4cout << " Energy/Momentum conserevation breaks " <GetPDGMass()/GeV << "[GeV/c/c]" <0) { + G4cout << "G4VDecayChannel::FillDaughters "; + G4cout << " Energy/Momentum conserevation breaks " <1) { + G4cout << " parent:" << *parent_name; + G4cout << " mass:" << parentmass/GeV << "[GeV/c/c]" <GetPDGMass()/GeV; + G4cout << "[GeV/c/c]" < parentmass+parent->GetPDGWidth() ) { - G4Exception("G4VDecayChannel::FillDaughters"); - } + SetBR(0.0); + return; } } diff --git a/source/particles/shortlived/include/G4DiQuarks.hh b/source/particles/shortlived/include/G4DiQuarks.hh index d24e81624f..93abb1bf62 100644 --- a/source/particles/shortlived/include/G4DiQuarks.hh +++ b/source/particles/shortlived/include/G4DiQuarks.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DiQuarks.hh,v 1.3.4.2 2001/06/28 20:19:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DiQuarks.hh,v 1.4 2001/07/11 10:02:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh b/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh index edef69bdc5..76f01de304 100644 --- a/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedBaryonConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedBaryonConstructor.hh,v 1.4.4.2 2001/06/28 20:19:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedBaryonConstructor.hh,v 1.5 2001/07/11 10:02:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedBaryons.hh b/source/particles/shortlived/include/G4ExcitedBaryons.hh index c7057f7590..0c56fd0e31 100644 --- a/source/particles/shortlived/include/G4ExcitedBaryons.hh +++ b/source/particles/shortlived/include/G4ExcitedBaryons.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedBaryons.hh,v 1.4.4.2 2001/06/28 20:19:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedBaryons.hh,v 1.5 2001/07/11 10:02:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh b/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh index 5b34cc03d6..f2662ec447 100644 --- a/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedDeltaConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedDeltaConstructor.hh,v 1.4.4.2 2001/06/28 20:19:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedDeltaConstructor.hh,v 1.5 2001/07/11 10:02:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh b/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh index 16b97defbe..1ab845a0b8 100644 --- a/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedLambdaConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedLambdaConstructor.hh,v 1.5.2.2 2001/06/28 20:19:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedLambdaConstructor.hh,v 1.6 2001/07/11 10:02:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh b/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh index 343dbd3e98..c6202d0235 100644 --- a/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedMesonConstructor.hh @@ -27,8 +27,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4ExcitedMesonConstructor.hh,v 1.6.2.2 2001/06/28 20:19:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedMesonConstructor.hh,v 1.7 2001/07/11 10:02:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedMesons.hh b/source/particles/shortlived/include/G4ExcitedMesons.hh index 741878216d..0f36388965 100644 --- a/source/particles/shortlived/include/G4ExcitedMesons.hh +++ b/source/particles/shortlived/include/G4ExcitedMesons.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedMesons.hh,v 1.4.4.2 2001/06/28 20:19:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedMesons.hh,v 1.5 2001/07/11 10:02:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh b/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh index 9ca0abda26..705ee9a8b5 100644 --- a/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedNucleonConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedNucleonConstructor.hh,v 1.4.4.2 2001/06/28 20:19:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedNucleonConstructor.hh,v 1.5 2001/07/11 10:02:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh b/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh index 89588a9364..b49aae27f2 100644 --- a/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedSigmaConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedSigmaConstructor.hh,v 1.4.4.2 2001/06/28 20:19:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedSigmaConstructor.hh,v 1.5 2001/07/11 10:02:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4ExcitedXiConstructor.hh b/source/particles/shortlived/include/G4ExcitedXiConstructor.hh index dc08e02578..c24c1bfa6e 100644 --- a/source/particles/shortlived/include/G4ExcitedXiConstructor.hh +++ b/source/particles/shortlived/include/G4ExcitedXiConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedXiConstructor.hh,v 1.4.4.2 2001/06/28 20:19:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedXiConstructor.hh,v 1.5 2001/07/11 10:02:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4Gluons.hh b/source/particles/shortlived/include/G4Gluons.hh index b4a843bc60..d1204c0935 100644 --- a/source/particles/shortlived/include/G4Gluons.hh +++ b/source/particles/shortlived/include/G4Gluons.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Gluons.hh,v 1.3.4.2 2001/06/28 20:19:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Gluons.hh,v 1.4 2001/07/11 10:02:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4Quarks.hh b/source/particles/shortlived/include/G4Quarks.hh index fc9854e373..39db595fe8 100644 --- a/source/particles/shortlived/include/G4Quarks.hh +++ b/source/particles/shortlived/include/G4Quarks.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Quarks.hh,v 1.3.4.2 2001/06/28 20:19:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Quarks.hh,v 1.4 2001/07/11 10:02:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/particles/shortlived/include/G4ShortLivedConstructor.hh b/source/particles/shortlived/include/G4ShortLivedConstructor.hh index a7eee9ff26..67ad5a4902 100644 --- a/source/particles/shortlived/include/G4ShortLivedConstructor.hh +++ b/source/particles/shortlived/include/G4ShortLivedConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShortLivedConstructor.hh,v 1.3.4.1 2001/06/28 19:11:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShortLivedConstructor.hh,v 1.4 2001/07/11 10:02:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/include/G4VShortLivedParticle.hh b/source/particles/shortlived/include/G4VShortLivedParticle.hh index b1f38bf16d..9349a968dd 100644 --- a/source/particles/shortlived/include/G4VShortLivedParticle.hh +++ b/source/particles/shortlived/include/G4VShortLivedParticle.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VShortLivedParticle.hh,v 1.3.4.2 2001/06/28 20:19:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VShortLivedParticle.hh,v 1.5 2001/10/15 10:00:23 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -75,15 +75,19 @@ class G4VShortLivedParticle : public G4ParticleDefinition public: // These methods concerning cut values are not supported for shortlives - virtual void ResetCuts(); virtual void SetCuts(G4double ); + virtual void SetRangeCut(G4double ,const G4Material*); + virtual void SetRangeCutVector(G4std::vector&); + + virtual void ResetCuts(); virtual void ReCalcCuts(); - virtual G4double GetLengthCuts() const; - virtual G4double* GetEnergyCuts() const; - virtual G4double GetEnergyThreshold(const G4Material* ) const; + virtual G4double* GetLengthCuts() const; + virtual G4double GetRangeThreshold(const G4Material* ) const; + virtual G4double* GetEnergyCuts() const; + virtual G4double GetEnergyThreshold(const G4Material* ) const; }; - + #endif diff --git a/source/particles/shortlived/src/G4DiQuarks.cc b/source/particles/shortlived/src/G4DiQuarks.cc index e5175e70b7..e15d23f081 100644 --- a/source/particles/shortlived/src/G4DiQuarks.cc +++ b/source/particles/shortlived/src/G4DiQuarks.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DiQuarks.cc,v 1.3.4.2 2001/06/28 20:19:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DiQuarks.cc,v 1.4 2001/07/11 10:02:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc b/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc index c580bba5b0..c439921df8 100644 --- a/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedBaryonConstructor.cc,v 1.5.2.1 2001/06/28 19:11:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedBaryonConstructor.cc,v 1.6 2001/07/11 10:02:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedBaryons.cc b/source/particles/shortlived/src/G4ExcitedBaryons.cc index 7612ff9de6..72c8bbda32 100644 --- a/source/particles/shortlived/src/G4ExcitedBaryons.cc +++ b/source/particles/shortlived/src/G4ExcitedBaryons.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedBaryons.cc,v 1.3.4.2 2001/06/28 20:19:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedBaryons.cc,v 1.4 2001/07/11 10:02:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc b/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc index 62f8e6dee5..b2e54d583f 100644 --- a/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedDeltaConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedDeltaConstructor.cc,v 1.5.2.1 2001/06/28 19:11:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedDeltaConstructor.cc,v 1.6 2001/07/11 10:02:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc b/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc index d0d11de30b..b7479a3b44 100644 --- a/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedLambdaConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedLambdaConstructor.cc,v 1.4.2.2 2001/06/28 20:19:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedLambdaConstructor.cc,v 1.5 2001/07/11 10:02:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc b/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc index 15df0cd01f..b3f066cb50 100644 --- a/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedMesonConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedMesonConstructor.cc,v 1.9.2.2 2001/06/28 20:19:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedMesonConstructor.cc,v 1.10 2001/07/11 10:02:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedMesons.cc b/source/particles/shortlived/src/G4ExcitedMesons.cc index 23a71133f1..aed98479bd 100644 --- a/source/particles/shortlived/src/G4ExcitedMesons.cc +++ b/source/particles/shortlived/src/G4ExcitedMesons.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedMesons.cc,v 1.3.4.2 2001/06/28 20:19:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedMesons.cc,v 1.4 2001/07/11 10:02:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc b/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc index eedae0ebd4..d847a9b707 100644 --- a/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedNucleonConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedNucleonConstructor.cc,v 1.4.4.2 2001/06/28 20:19:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedNucleonConstructor.cc,v 1.5 2001/07/11 10:02:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc b/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc index 8cb5b47e36..b5d7d23ca4 100644 --- a/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedSigmaConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedSigmaConstructor.cc,v 1.5.2.1 2001/06/28 19:11:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedSigmaConstructor.cc,v 1.6 2001/07/11 10:02:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ExcitedXiConstructor.cc b/source/particles/shortlived/src/G4ExcitedXiConstructor.cc index 7a3afa8b43..9cadce6260 100644 --- a/source/particles/shortlived/src/G4ExcitedXiConstructor.cc +++ b/source/particles/shortlived/src/G4ExcitedXiConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ExcitedXiConstructor.cc,v 1.4.2.1 2001/06/28 19:11:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedXiConstructor.cc,v 1.5 2001/07/11 10:02:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4Gluons.cc b/source/particles/shortlived/src/G4Gluons.cc index 84a14c36f2..c4fb4969ce 100644 --- a/source/particles/shortlived/src/G4Gluons.cc +++ b/source/particles/shortlived/src/G4Gluons.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Gluons.cc,v 1.3.4.2 2001/06/28 20:19:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Gluons.cc,v 1.4 2001/07/11 10:02:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4Quarks.cc b/source/particles/shortlived/src/G4Quarks.cc index e5d5f9ea78..87e0112c9b 100644 --- a/source/particles/shortlived/src/G4Quarks.cc +++ b/source/particles/shortlived/src/G4Quarks.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Quarks.cc,v 1.3.4.2 2001/06/28 20:19:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Quarks.cc,v 1.4 2001/07/11 10:02:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4ShortLivedConstructor.cc b/source/particles/shortlived/src/G4ShortLivedConstructor.cc index 663a9f7d8a..38e1a16f90 100644 --- a/source/particles/shortlived/src/G4ShortLivedConstructor.cc +++ b/source/particles/shortlived/src/G4ShortLivedConstructor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ShortLivedConstructor.cc,v 1.8.2.1 2001/06/28 19:11:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ShortLivedConstructor.cc,v 1.9 2001/07/11 10:02:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/particles/shortlived/src/G4VShortLivedParticle.cc b/source/particles/shortlived/src/G4VShortLivedParticle.cc index e3f54a5696..b9daa8ec83 100644 --- a/source/particles/shortlived/src/G4VShortLivedParticle.cc +++ b/source/particles/shortlived/src/G4VShortLivedParticle.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VShortLivedParticle.cc,v 1.3.4.2 2001/06/28 20:19:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VShortLivedParticle.cc,v 1.5 2001/10/15 10:00:24 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -62,33 +62,53 @@ void G4VShortLivedParticle::ResetCuts() { G4cout << "G4VShortLivedParticle::ResetCuts() causes no effect!!" << G4endl; } + void G4VShortLivedParticle::SetCuts(G4double ) { G4cout << "G4VShortLivedParticle::SetCuts() causes no effect!!" << G4endl; } + +void G4VShortLivedParticle::SetRangeCut(G4double ,const G4Material*) +{ + G4cout << "G4VShortLivedParticle::SetRangeCut() causes no effect!!" << G4endl; +} + +void G4VShortLivedParticle::SetRangeCutVector(G4std::vector +&) +{ + G4cout << "G4VShortLivedParticle::SetRangeCutVector() causes no effect!!" << G4endl; +} + void G4VShortLivedParticle::ReCalcCuts() { G4cout << "G4VShortLivedParticle::ReCalcCuts() causes no effect!!" << G4endl; } -G4double G4VShortLivedParticle::GetLengthCuts() const -{ - G4cout << "G4VShortLivedParticle::GetLengthCuts() causes no effect!!" << G4endl; - return -1.0; -} - -G4double* G4VShortLivedParticle::GetEnergyCuts() const +G4double* G4VShortLivedParticle::GetLengthCuts() const { G4cout << "G4VShortLivedParticle::GetLengthCuts() causes no effect!!" << G4endl; return 0; } -G4double G4VShortLivedParticle::GetEnergyThreshold(const G4Material* ) const +G4double* G4VShortLivedParticle::GetEnergyCuts() const +{ + G4cout << "G4VShortLivedParticle::GetLengthCuts() causes no effect!!" << G4endl; + return 0; +} + +G4double G4VShortLivedParticle::GetRangeThreshold(const G4Material* ) const +{ + G4cout << "G4VShortLivedParticle::GetRangeThreshold() causes no effect!!" << G4endl; + return -1.0*mm; +} + +G4double G4VShortLivedParticle::GetEnergyThreshold(const G4Material* ) const { G4cout << "G4VShortLivedParticle::GetEnergyThreshold() causes no effect!!" << G4endl; - return -1.0; + return -1.0*eV; } + const G4VShortLivedParticle & G4VShortLivedParticle::operator=(const G4VShortLivedParticle& right) { if (this != &right) { diff --git a/source/persistency/GNUmakefile b/source/persistency/GNUmakefile index 2feb3fa006..8372134c84 100644 --- a/source/persistency/GNUmakefile +++ b/source/persistency/GNUmakefile @@ -33,7 +33,7 @@ include $(G4INSTALL)/config/globlib.gmk # -------------------------------------------------------------- -.PHONY : all global clean clean_libs cleandb +.PHONY : all global clean clean_libs cleandb test # if G4ODBMS flag is not defined, override the target "all" then exit ifndef G4ODBMS @@ -54,3 +54,6 @@ newdb: @$(HEP_ODBMS_DIR)/etc/getdb $(HEP_ODBMS_DIR)/schema/HEP_BASE \ $(G4SCHEMA_BOOT) $(G4SCHEMA_FDID) +test: + @echo "G4DDLX_FLAGS = $(G4DDLX_FLAGS)" + diff --git a/source/persistency/History b/source/persistency/History index a923fdf28f..3404c00392 100644 --- a/source/persistency/History +++ b/source/persistency/History @@ -15,6 +15,17 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +7 December, 01 Y.Morita (persistency-V03-02-02) +- added G4Pglobals.hh to G4PVHits and G4PVDigits for g++ 2.95.2 headers + +6 July, 01 Y.Morita (persistency-V03-02-01) +- added more SRM descriptions + +4 July, 01 Y.Morita (persistency-V03-02-00) +- STL migration: + modified: G4Pglobals.hh, G4PGeometryObjectMap.ddl, G4PGeometryObjectMap.cc + removed: G4VPhysVolRefArray.hh, G4LogVolRefArray.hh G4VSolidRefArray.hh + 21 June, 01 Y.Morita (persistency-V03-01-00) - new tag for release 3.2 diff --git a/source/persistency/digits+hits/digits/include/G4PDCofThisEvent.ddl b/source/persistency/digits+hits/digits/include/G4PDCofThisEvent.ddl index 5c4962f4f3..e0f3292d16 100644 --- a/source/persistency/digits+hits/digits/include/G4PDCofThisEvent.ddl +++ b/source/persistency/digits+hits/digits/include/G4PDCofThisEvent.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PDCofThisEvent.ddl,v 1.6.2.1 2001/06/28 19:11:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PDCofThisEvent.ddl,v 1.7 2001/07/11 10:02:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/digits+hits/digits/include/G4PVDigit.ddl b/source/persistency/digits+hits/digits/include/G4PVDigit.ddl index f2ee0785d5..9abc84b8c6 100644 --- a/source/persistency/digits+hits/digits/include/G4PVDigit.ddl +++ b/source/persistency/digits+hits/digits/include/G4PVDigit.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVDigit.ddl,v 1.3.4.1 2001/06/28 19:11:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVDigit.ddl,v 1.5 2001/12/07 03:49:10 morita Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: @@ -34,6 +34,7 @@ #ifndef G4PVDigit_h #define G4PVDigit_h 1 +#include "G4Pglobals.hh" #include "G4PersistentSchema.hh" #include "G4VDigi.hh" diff --git a/source/persistency/digits+hits/digits/include/G4PVDigitsCollection.ddl b/source/persistency/digits+hits/digits/include/G4PVDigitsCollection.ddl index 5b138507c6..417565bd29 100644 --- a/source/persistency/digits+hits/digits/include/G4PVDigitsCollection.ddl +++ b/source/persistency/digits+hits/digits/include/G4PVDigitsCollection.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVDigitsCollection.ddl,v 1.6.4.1 2001/06/28 19:11:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVDigitsCollection.ddl,v 1.7 2001/07/11 10:02:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/digits+hits/digits/include/G4PersistentDigitMan.hh b/source/persistency/digits+hits/digits/include/G4PersistentDigitMan.hh index f988a1305f..9427796870 100644 --- a/source/persistency/digits+hits/digits/include/G4PersistentDigitMan.hh +++ b/source/persistency/digits+hits/digits/include/G4PersistentDigitMan.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentDigitMan.hh,v 1.7.4.1 2001/06/28 19:11:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentDigitMan.hh,v 1.8 2001/07/11 10:02:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/digits+hits/digits/src/G4PDCofThisEvent.cc b/source/persistency/digits+hits/digits/src/G4PDCofThisEvent.cc index 7a1843fab5..0609f57016 100644 --- a/source/persistency/digits+hits/digits/src/G4PDCofThisEvent.cc +++ b/source/persistency/digits+hits/digits/src/G4PDCofThisEvent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PDCofThisEvent.cc,v 1.3.8.1 2001/06/28 19:11:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PDCofThisEvent.cc,v 1.4 2001/07/11 10:02:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PDCofThisEvent.hh" diff --git a/source/persistency/digits+hits/digits/src/G4PVDigit.cc b/source/persistency/digits+hits/digits/src/G4PVDigit.cc index ea31141980..5fd4181b22 100644 --- a/source/persistency/digits+hits/digits/src/G4PVDigit.cc +++ b/source/persistency/digits+hits/digits/src/G4PVDigit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVDigit.cc,v 1.2.8.1 2001/06/28 19:11:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVDigit.cc,v 1.3 2001/07/11 10:02:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PVDigit.hh" diff --git a/source/persistency/digits+hits/digits/src/G4PVDigitsCollection.cc b/source/persistency/digits+hits/digits/src/G4PVDigitsCollection.cc index 0c7e2dbbcf..d6303b7029 100644 --- a/source/persistency/digits+hits/digits/src/G4PVDigitsCollection.cc +++ b/source/persistency/digits+hits/digits/src/G4PVDigitsCollection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVDigitsCollection.cc,v 1.3.8.1 2001/06/28 19:11:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVDigitsCollection.cc,v 1.4 2001/07/11 10:02:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4PVDigitsCollection diff --git a/source/persistency/digits+hits/digits/src/G4PersistentDigitMan.cc b/source/persistency/digits+hits/digits/src/G4PersistentDigitMan.cc index 73dc7ee8f4..79c1671f0f 100644 --- a/source/persistency/digits+hits/digits/src/G4PersistentDigitMan.cc +++ b/source/persistency/digits+hits/digits/src/G4PersistentDigitMan.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentDigitMan.cc,v 1.5.2.1 2001/06/28 19:11:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentDigitMan.cc,v 1.6 2001/07/11 10:02:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PersistentDigitMan // diff --git a/source/persistency/digits+hits/hits/include/G4PHCofThisEvent.ddl b/source/persistency/digits+hits/hits/include/G4PHCofThisEvent.ddl index 87678846f4..a2da711c2b 100644 --- a/source/persistency/digits+hits/hits/include/G4PHCofThisEvent.ddl +++ b/source/persistency/digits+hits/hits/include/G4PHCofThisEvent.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PHCofThisEvent.ddl,v 1.10.2.1 2001/06/28 19:11:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PHCofThisEvent.ddl,v 1.11 2001/07/11 10:02:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/digits+hits/hits/include/G4PVHit.ddl b/source/persistency/digits+hits/hits/include/G4PVHit.ddl index 61c5e98cfd..641878ab11 100644 --- a/source/persistency/digits+hits/hits/include/G4PVHit.ddl +++ b/source/persistency/digits+hits/hits/include/G4PVHit.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVHit.ddl,v 1.7.4.1 2001/06/28 19:11:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVHit.ddl,v 1.9 2001/12/07 03:48:59 morita Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: @@ -34,6 +34,7 @@ #ifndef G4PVHit_h #define G4PVHit_h 1 +#include "G4Pglobals.hh" #include "G4PersistentSchema.hh" #include "G4VHit.hh" diff --git a/source/persistency/digits+hits/hits/include/G4PVHitsCollection.ddl b/source/persistency/digits+hits/hits/include/G4PVHitsCollection.ddl index 5cc1d1698d..172d42e4c6 100644 --- a/source/persistency/digits+hits/hits/include/G4PVHitsCollection.ddl +++ b/source/persistency/digits+hits/hits/include/G4PVHitsCollection.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVHitsCollection.ddl,v 1.14.4.1 2001/06/28 19:11:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVHitsCollection.ddl,v 1.15 2001/07/11 10:02:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/digits+hits/hits/include/G4PersistentHitMan.hh b/source/persistency/digits+hits/hits/include/G4PersistentHitMan.hh index 60a41c3d2b..71c0f044d8 100644 --- a/source/persistency/digits+hits/hits/include/G4PersistentHitMan.hh +++ b/source/persistency/digits+hits/hits/include/G4PersistentHitMan.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentHitMan.hh,v 1.6.4.1 2001/06/28 19:11:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentHitMan.hh,v 1.7 2001/07/11 10:02:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/digits+hits/hits/src/G4PHCofThisEvent.cc b/source/persistency/digits+hits/hits/src/G4PHCofThisEvent.cc index b182daff3b..7b1234f863 100644 --- a/source/persistency/digits+hits/hits/src/G4PHCofThisEvent.cc +++ b/source/persistency/digits+hits/hits/src/G4PHCofThisEvent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PHCofThisEvent.cc,v 1.6.8.1 2001/06/28 19:11:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PHCofThisEvent.cc,v 1.7 2001/07/11 10:02:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PHCofThisEvent.hh" diff --git a/source/persistency/digits+hits/hits/src/G4PVHit.cc b/source/persistency/digits+hits/hits/src/G4PVHit.cc index e81b369997..87efda56b9 100644 --- a/source/persistency/digits+hits/hits/src/G4PVHit.cc +++ b/source/persistency/digits+hits/hits/src/G4PVHit.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVHit.cc,v 1.4.8.1 2001/06/28 19:11:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVHit.cc,v 1.5 2001/07/11 10:02:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PVHit.hh" diff --git a/source/persistency/digits+hits/hits/src/G4PVHitsCollection.cc b/source/persistency/digits+hits/hits/src/G4PVHitsCollection.cc index 00615ba651..a93052f1fb 100644 --- a/source/persistency/digits+hits/hits/src/G4PVHitsCollection.cc +++ b/source/persistency/digits+hits/hits/src/G4PVHitsCollection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVHitsCollection.cc,v 1.8.8.1 2001/06/28 19:11:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVHitsCollection.cc,v 1.9 2001/07/11 10:02:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4PVHitsCollection diff --git a/source/persistency/digits+hits/hits/src/G4PersistentHitMan.cc b/source/persistency/digits+hits/hits/src/G4PersistentHitMan.cc index aaa720efa9..3b252776cd 100644 --- a/source/persistency/digits+hits/hits/src/G4PersistentHitMan.cc +++ b/source/persistency/digits+hits/hits/src/G4PersistentHitMan.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentHitMan.cc,v 1.5.2.1 2001/06/28 19:11:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentHitMan.cc,v 1.6 2001/07/11 10:02:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PersistentHitMan // diff --git a/source/persistency/events/include/G4PEvent.ddl b/source/persistency/events/include/G4PEvent.ddl index caf34b1249..1397a3dc5f 100644 --- a/source/persistency/events/include/G4PEvent.ddl +++ b/source/persistency/events/include/G4PEvent.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PEvent.ddl,v 1.11.2.1 2001/06/28 19:11:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PEvent.ddl,v 1.12 2001/07/11 10:02:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/events/include/G4PPrimaryParticle.ddl b/source/persistency/events/include/G4PPrimaryParticle.ddl index 63dfe6ef41..4b0a7abdcb 100644 --- a/source/persistency/events/include/G4PPrimaryParticle.ddl +++ b/source/persistency/events/include/G4PPrimaryParticle.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PPrimaryParticle.ddl,v 1.2.4.1 2001/06/28 19:11:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PPrimaryParticle.ddl,v 1.3 2001/07/11 10:02:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4PPrimaryParticle_h diff --git a/source/persistency/events/include/G4PPrimaryVertex.ddl b/source/persistency/events/include/G4PPrimaryVertex.ddl index 45867721eb..f52adc40c6 100644 --- a/source/persistency/events/include/G4PPrimaryVertex.ddl +++ b/source/persistency/events/include/G4PPrimaryVertex.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PPrimaryVertex.ddl,v 1.10.2.1 2001/06/28 19:11:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PPrimaryVertex.ddl,v 1.11 2001/07/11 10:02:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/events/include/G4PersistentEventMan.hh b/source/persistency/events/include/G4PersistentEventMan.hh index 46085dcc22..b047bc83ea 100644 --- a/source/persistency/events/include/G4PersistentEventMan.hh +++ b/source/persistency/events/include/G4PersistentEventMan.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentEventMan.hh,v 1.11.4.1 2001/06/28 19:11:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentEventMan.hh,v 1.13 2001/07/11 10:02:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: @@ -78,9 +78,10 @@ class G4PersistentEventMan G4int f_currentEventID; HepRef(G4PEvent) f_currentPEvent; - public: + public: // With description inline G4int CurrentEventID() { return f_currentEventID; } + // Returns the current event id private: G4bool Store( HepDbApplication* dbApp, diff --git a/source/persistency/events/src/G4PEvent.cc b/source/persistency/events/src/G4PEvent.cc index 19aaeac910..96726f50ec 100644 --- a/source/persistency/events/src/G4PEvent.cc +++ b/source/persistency/events/src/G4PEvent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PEvent.cc,v 1.12.2.1 2001/06/28 19:11:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PEvent.cc,v 1.13 2001/07/11 10:02:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4PEvent diff --git a/source/persistency/events/src/G4PPrimaryParticle.cc b/source/persistency/events/src/G4PPrimaryParticle.cc index 1d2f21ed09..9b1f39e638 100644 --- a/source/persistency/events/src/G4PPrimaryParticle.cc +++ b/source/persistency/events/src/G4PPrimaryParticle.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PPrimaryParticle.cc,v 1.2.2.1 2001/06/28 19:11:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PPrimaryParticle.cc,v 1.3 2001/07/11 10:02:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PPrimaryParticle.hh" diff --git a/source/persistency/events/src/G4PPrimaryVertex.cc b/source/persistency/events/src/G4PPrimaryVertex.cc index 275d931961..ef8a3e21eb 100644 --- a/source/persistency/events/src/G4PPrimaryVertex.cc +++ b/source/persistency/events/src/G4PPrimaryVertex.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PPrimaryVertex.cc,v 1.8.2.1 2001/06/28 19:11:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PPrimaryVertex.cc,v 1.9 2001/07/11 10:02:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PPrimaryVertex.hh" diff --git a/source/persistency/events/src/G4PersistentEventMan.cc b/source/persistency/events/src/G4PersistentEventMan.cc index 3bd77f53e5..88e2c1080e 100644 --- a/source/persistency/events/src/G4PersistentEventMan.cc +++ b/source/persistency/events/src/G4PersistentEventMan.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentEventMan.cc,v 1.16.2.1 2001/06/28 19:11:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentEventMan.cc,v 1.17 2001/07/11 10:02:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PersistentEventMan // diff --git a/source/persistency/geometry/GNUmakefile b/source/persistency/geometry/GNUmakefile index c98860e9e7..5b87786ff4 100644 --- a/source/persistency/geometry/GNUmakefile +++ b/source/persistency/geometry/GNUmakefile @@ -5,8 +5,8 @@ # order of SUBDIRS are important for creating header files. # don't mess it up! -SUBDIRS = global solids/CSG solids/Boolean management -SUBLIBS = G4pgeomGlobal G4pcsg G4pgeomBoolean G4pgeomn +SUBDIRS = global solids/CSG solids/specific solids/Boolean management +SUBLIBS = G4pgeomGlobal G4pcsg G4pspecsolids G4pgeomBoolean G4pgeomn ifndef G4INSTALL G4INSTALL = ../../.. diff --git a/source/persistency/geometry/global/include/G4PAffineTransform.ddl b/source/persistency/geometry/global/include/G4PAffineTransform.ddl index adc5849398..ff59c7a67d 100644 --- a/source/persistency/geometry/global/include/G4PAffineTransform.ddl +++ b/source/persistency/geometry/global/include/G4PAffineTransform.ddl @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4PAffineTransform.ddl,v 1.4.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ -// +// $Id: G4PAffineTransform.ddl,v 1.6 2001/07/11 10:02:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: // persistenet class of G4AffineTransform -// + // History: // 10.11.99 Y.Morita, initial creation @@ -41,11 +42,13 @@ class G4AffineTransform; class G4PAffineTransform : public HepPersObj { - public: + public: // With description G4PAffineTransform( const G4AffineTransform aTrans ); ~G4PAffineTransform(); + // Constructor and Destructor G4AffineTransform MakeTransientObject(); + // Creates a transient G4AffineTransform object private: G4Pdouble rxx,rxy,rxz; diff --git a/source/persistency/geometry/global/include/G4PVSolid.ddl b/source/persistency/geometry/global/include/G4PVSolid.ddl index 395c302cd8..9b678c37c3 100644 --- a/source/persistency/geometry/global/include/G4PVSolid.ddl +++ b/source/persistency/geometry/global/include/G4PVSolid.ddl @@ -21,12 +21,13 @@ // ******************************************************************** // // -// $Id: G4PVSolid.ddl,v 1.4.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// class G4PVSolid +// $Id: G4PVSolid.ddl,v 1.6 2001/07/11 10:02:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // + +// Class Description: +// Persistent version of the abstract base class for G4VSolid. + // History: // 19.06.98 A.Kimura Converted from G4VSolid.hh // 20.06.98 A.Kimura Clean up @@ -45,23 +46,32 @@ class G4PVSolid; -class G4PVSolid : public HepPersObj { -public: +class G4PVSolid + : public HepPersObj +{ + public: // With description G4PVSolid(); G4PVSolid(const G4String& name); virtual ~G4PVSolid(); + // Constructor and Destructor virtual G4VSolid* MakeTransientObject() const = 0; + // Creates a transient G4VSolid object. Must be implemented in + // user class which inherits which class. G4bool operator==( const G4PVSolid& s) const { return (this==&s) ? true : false; } + // Comparison operator. G4String GetName() const; void SetName(const G4String& name); + // Get and set the name of the solid. virtual G4GeometryType GetEntityType() const = 0; + // Returns the geometry entity type of the solid. Must be + // implemented in user class which inherits which class. private: diff --git a/source/persistency/geometry/global/src/G4PAffineTransform.cc b/source/persistency/geometry/global/src/G4PAffineTransform.cc index 173c118a43..b46ecad68e 100644 --- a/source/persistency/geometry/global/src/G4PAffineTransform.cc +++ b/source/persistency/geometry/global/src/G4PAffineTransform.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PAffineTransform.cc,v 1.2.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PAffineTransform.cc,v 1.3 2001/07/11 10:02:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PAffineTransform // diff --git a/source/persistency/geometry/global/src/G4PVSolid.cc b/source/persistency/geometry/global/src/G4PVSolid.cc index 253a9b5231..1c3167e722 100644 --- a/source/persistency/geometry/global/src/G4PVSolid.cc +++ b/source/persistency/geometry/global/src/G4PVSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVSolid.cc,v 1.2.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVSolid.cc,v 1.3 2001/07/11 10:02:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PVSolid // diff --git a/source/persistency/geometry/management/include/G4PGeometryObjectMap.ddl b/source/persistency/geometry/management/include/G4PGeometryObjectMap.ddl index c07901af82..766533cd8f 100644 --- a/source/persistency/geometry/management/include/G4PGeometryObjectMap.ddl +++ b/source/persistency/geometry/management/include/G4PGeometryObjectMap.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PGeometryObjectMap.ddl,v 1.7.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PGeometryObjectMap.ddl,v 1.9 2001/07/11 10:02:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description: @@ -53,6 +53,8 @@ #include "G4Pglobals.hh" +#include "g4std/vector" + #include "G4VPhysicalVolume.hh" #include "G4LogicalVolume.hh" #include "G4VSolid.hh" @@ -67,9 +69,13 @@ class G4PLogicalVolume; class G4PVSolid; #pragma ooclassref G4PVSolid "G4PVSolid_ref.hh" -class G4VPhysVolRefArray; -class G4LogVolRefArray; -class G4VSolidRefArray; +typedef G4std::vector G4LogVolRefArray; +typedef G4std::vector G4VPhysVolRefArray; +typedef G4std::vector G4VSolidRefArray; + +typedef G4std::vector::iterator G4LogVolRefArrayItr; +typedef G4std::vector::iterator G4VPhysVolRefArrayItr; +typedef G4std::vector::iterator G4VSolidRefArrayItr; typedef d_Varray< d_Ref > G4PVPhysVolRefVArray; typedef d_Varray< d_Ref > G4PLogVolRefVArray; diff --git a/source/persistency/geometry/management/include/G4PLogicalVolume.ddl b/source/persistency/geometry/management/include/G4PLogicalVolume.ddl index ad8c4eba3d..70cfdd4b22 100644 --- a/source/persistency/geometry/management/include/G4PLogicalVolume.ddl +++ b/source/persistency/geometry/management/include/G4PLogicalVolume.ddl @@ -21,13 +21,12 @@ // ******************************************************************** // // -// $Id: G4PLogicalVolume.ddl,v 1.9.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// class G4PLogicalVolume -// P-verson of the class G4LogicalVolume -// Takashi.Sasaki@kek.jp +// $Id: G4PLogicalVolume.ddl,v 1.11 2001/07/11 10:02:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of the class G4LogicalVolume. + #ifndef G4PLOGICALVOLUME_DDL #define G4PLOGICALVOLUME_DDL 1 @@ -51,25 +50,29 @@ typedef d_Varray< d_Ref > G4PVPhysVolRefVArray; class G4PLogicalVolume: public HepPersObj { -public: + public: // With description G4PLogicalVolume( const G4LogicalVolume* aLogicalVolume, HepRef(G4PVSolid) persSolid); ~G4PLogicalVolume(); + // Constructor and Destructor G4LogicalVolume* MakeTransientObject(G4VSolid* aSolid, G4Material* aMaterial); + // Creates a transient G4LogicalVolume object. HepRef(G4PVSolid) GetSolid(); void SetSolid( HepRef(G4PVSolid) pSolid ); + // Get or set the pointer of persistent solid object. -public: + public: // With description G4int GetNoDaughters() const; HepRef(G4PVPhysicalVolume) GetDaughter(const G4int i) const; void AddDaughter(HepRef(G4PVPhysicalVolume) p); G4bool IsDaughter(const HepRef(G4PVPhysicalVolume) p) const; void RemoveDaughter(const HepRef(G4PVPhysicalVolume) p); + // Methods to handle association of persistent physical volume. -private: + private: G4PVPhysVolRefVArray fDaughters; // G4MagneticField* fMagneticField; // G4Material* fMaterial; @@ -85,11 +88,13 @@ private: G4Pint NoOfDaughters; - public: + public: // With description inline void SetMaterialName(G4String aName) { fMaterialName = aName; } inline G4String GetMaterialName() { return (G4String) fMaterialName; } + // Set and Get methods for the associated material name. + }; #endif diff --git a/source/persistency/geometry/management/include/G4PPVParameterised.ddl b/source/persistency/geometry/management/include/G4PPVParameterised.ddl index 879cda90fa..0b9b75009b 100644 --- a/source/persistency/geometry/management/include/G4PPVParameterised.ddl +++ b/source/persistency/geometry/management/include/G4PPVParameterised.ddl @@ -21,13 +21,12 @@ // ******************************************************************** // // -// $Id: G4PPVParameterised.ddl,v 1.4.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4PPVParameterised -// -// Persistent-capable class of G4PVParameterised -// +// $Id: G4PPVParameterised.ddl,v 1.6 2001/07/11 10:02:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4PVParameterised. + // History: // 05.11.99 Y.Morita First non-stub version @@ -40,17 +39,18 @@ class G4PPVParameterised : public G4PPVReplica { -public: - G4PPVParameterised(G4VPhysicalVolume *PhysVol, + public: // With description + G4PPVParameterised(G4VPhysicalVolume *PhysVol, HepRef(G4PLogicalVolume) persLogVol); + ~G4PPVParameterised(); + // Constructor and Destructor - ~G4PPVParameterised(); - - G4VPhysicalVolume* MakeTransientObject( + G4VPhysicalVolume* MakeTransientObject( G4LogicalVolume* aLogical, G4VPhysicalVolume* aMother ); + // Creates a transient physical volume object. -private: + private: // d_Ref fparam; }; diff --git a/source/persistency/geometry/management/include/G4PPVPlacement.ddl b/source/persistency/geometry/management/include/G4PPVPlacement.ddl index a8ff8605ca..fd1616bdfa 100644 --- a/source/persistency/geometry/management/include/G4PPVPlacement.ddl +++ b/source/persistency/geometry/management/include/G4PPVPlacement.ddl @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4PPVPlacement.ddl,v 1.4.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// P-versieon of G4PVPlacement Takashi.Sasaki@kek.jp +// $Id: G4PPVPlacement.ddl,v 1.6 2001/07/11 10:02:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4PVPlacement. + #ifndef G4PPVPLACEMENT_DDL #define G4PPVPLACEMENT_DDL 1 @@ -40,18 +41,20 @@ class G4PLogicalVolume; class G4PPVPlacement : public G4PVPhysicalVolume { -public: +public: // With description G4PPVPlacement( G4VPhysicalVolume *PhysVol, HepRef(G4PLogicalVolume) persLogVol); - ~G4PPVPlacement(); + // Constructor and Destructor G4VPhysicalVolume* MakeTransientObject( G4LogicalVolume* aLogical, G4VPhysicalVolume* aMother ); + // Make a transient G4PVPlacement object. virtual G4bool IsMany() const; virtual G4int GetCopyNo() const; + // Returns the multiplicity of the volume. protected: virtual void SetCopyNo(G4int CopyNo); diff --git a/source/persistency/geometry/management/include/G4PPVReplica.ddl b/source/persistency/geometry/management/include/G4PPVReplica.ddl index 83e8f0c762..fa765b7f7d 100644 --- a/source/persistency/geometry/management/include/G4PPVReplica.ddl +++ b/source/persistency/geometry/management/include/G4PPVReplica.ddl @@ -21,14 +21,12 @@ // ******************************************************************** // // -// $Id: G4PPVReplica.ddl,v 1.5.4.1 2001/06/28 19:11:27 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// class G4PPVReplica -// +// $Id: G4PPVReplica.ddl,v 1.7 2001/07/11 10:02:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: // Persistent-capable class of G4PVReplica -// + // History: // 05.11.99 Y.Morita First non-stub version @@ -47,18 +45,20 @@ class G4PPVReplica : public G4PVPhysicalVolume { -public: +public: // With description G4PPVReplica( G4VPhysicalVolume *PhysVol, HepRef(G4PLogicalVolume) persLogVol); - ~G4PPVReplica(); + // Constructor and Destructor G4VPhysicalVolume* MakeTransientObject( G4LogicalVolume* aLogical, G4VPhysicalVolume* aMother ); + // Creates a transient G4PVReplica object. virtual G4bool IsMany() const; virtual G4int GetCopyNo() const; + // Returns the multiplicity of the volume. protected: virtual void SetCopyNo(G4int CopyNo); diff --git a/source/persistency/geometry/management/include/G4PVPhysicalVolume.ddl b/source/persistency/geometry/management/include/G4PVPhysicalVolume.ddl index 27c258049f..3ca0e41ce1 100644 --- a/source/persistency/geometry/management/include/G4PVPhysicalVolume.ddl +++ b/source/persistency/geometry/management/include/G4PVPhysicalVolume.ddl @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: G4PVPhysicalVolume.ddl,v 1.5.4.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// class G4PVPhysicalVolume +// $Id: G4PVPhysicalVolume.ddl,v 1.7 2001/07/11 10:02:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4VPhysicalVolume. #ifndef G4PVPHYSICALVOLUME_DDL #define G4PVPHYSICALVOLUME_DDL 1 @@ -52,38 +52,43 @@ class G4PLogicalVolume; class G4PVPhysicalVolume: public HepPersObj { -public: +public: // With description G4PVPhysicalVolume(); - G4PVPhysicalVolume( const G4VPhysicalVolume *PhysVol, const HepRef(G4PLogicalVolume) persLogVol); - -// Destructor ~G4PVPhysicalVolume(); -// + // Constructor and Destructor + void SetMother(const HepRef(G4PVPhysicalVolume) persMother); + // Set the persistent mother volume. G4VPhysicalVolume* MakeTransientObject( G4LogicalVolume* aLogical, G4VPhysicalVolume* aMother ); + // Creates a transient G4VPhysicalVolume object. -// Access functions G4PString GetName(); void SetName(const G4PString aName); + // Get and set the name of the volume. + G4RotationMatrix* GetRotation(); - G4ThreeVector& GetTranslation(); void SetRotation(const G4RotationMatrix* aRot); + // Get and set the rotation matrix. + + G4ThreeVector& GetTranslation(); void SetTranslation(G4ThreeVector atrans); + // Get and set the translation vector. HepRef(G4PLogicalVolume) GetLogicalVolume(); + // Returns the pointer to the persistent logical volume. -// Define equality by equal addresses only. G4bool operator == (const G4PVPhysicalVolume& p) const; + // Define equality by equal addresses only. -// Functions required of subclasses virtual G4bool IsMany() const = 0; virtual G4int GetCopyNo() const = 0; virtual void SetCopyNo(G4int CopyNo) = 0; + // Functions required of subclasses protected: d_Varray frot; diff --git a/source/persistency/geometry/management/include/G4PersistentGeomMan.hh b/source/persistency/geometry/management/include/G4PersistentGeomMan.hh index 1d0e68a88c..f9b0ca832e 100644 --- a/source/persistency/geometry/management/include/G4PersistentGeomMan.hh +++ b/source/persistency/geometry/management/include/G4PersistentGeomMan.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentGeomMan.hh,v 1.10.4.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentGeomMan.hh,v 1.11 2001/07/11 10:02:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/geometry/management/src/G4PGeometryObjectMap.cc b/source/persistency/geometry/management/src/G4PGeometryObjectMap.cc index c66092d7bf..49be9fd64e 100644 --- a/source/persistency/geometry/management/src/G4PGeometryObjectMap.cc +++ b/source/persistency/geometry/management/src/G4PGeometryObjectMap.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PGeometryObjectMap.cc,v 1.7.2.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PGeometryObjectMap.cc,v 1.9 2001/07/11 10:02:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PGeometryObjectMap // @@ -40,10 +40,6 @@ #include "G4PLogicalVolume.hh" #include "G4PVSolid.hh" -#include "G4VPhysVolRefArray.hh" -#include "G4LogVolRefArray.hh" -#include "G4VSolidRefArray.hh" - G4PGeometryObjectMap::G4PGeometryObjectMap() : noPhysVol(0),noLogVol(0),noSolids(0) { @@ -75,7 +71,7 @@ HepRef(G4PVPhysicalVolume) G4PGeometryObjectMap::LookUp( assert(inGeomObj != 0); for(G4int i=0;iGet(i) == inGeomObj ) + if( (*transPhysVolPtrs)[i] == inGeomObj ) { return persPhysVolPtrs[i]; } @@ -93,8 +89,7 @@ void G4PGeometryObjectMap::Add( G4VPhysicalVolume* inGeomObj, { // assert( inGeomObj == aGeomObj ); noPhysVol++; - transPhysVolPtrs->Resize(noPhysVol); - transPhysVolPtrs->Insert(noPhysVol-1, inGeomObj); + transPhysVolPtrs->push_back(inGeomObj); persPhysVolPtrs.insert_element(outGeomObj); } } @@ -109,7 +104,7 @@ G4VPhysicalVolume* G4PGeometryObjectMap::LookUp( { if( persPhysVolPtrs[i] == inGeomObj ) { - return transPhysVolPtrs->Get(i); + return (*transPhysVolPtrs)[i]; } } @@ -120,11 +115,11 @@ void G4PGeometryObjectMap::Add( HepRef(G4PVPhysicalVolume) inGeomObj, G4VPhysicalVolume* outGeomObj ) { assert(inGeomObj != 0); - for(G4int i=0;iInsert(i, outGeomObj); + (*transPhysVolPtrs)[i]= outGeomObj; break; } G4cerr << "G4PGeometryObjectMap::Add -- transient solid not assigned" << G4endl; @@ -139,7 +134,7 @@ HepRef(G4PLogicalVolume) G4PGeometryObjectMap::LookUp( assert(inGeomObj != 0); for(G4int i=0;iGet(i) == inGeomObj ) + if( (*transLogVolPtrs)[i] == inGeomObj ) { return persLogVolPtrs[i]; } @@ -157,8 +152,7 @@ void G4PGeometryObjectMap::Add( G4LogicalVolume* inGeomObj, { // assert( inGeomObj == aGeomObj ); noLogVol++; - transLogVolPtrs->Resize(noLogVol); - transLogVolPtrs->Insert(noLogVol-1, inGeomObj); + transLogVolPtrs->push_back(inGeomObj); persLogVolPtrs.insert_element(outGeomObj); } } @@ -173,7 +167,7 @@ G4LogicalVolume* G4PGeometryObjectMap::LookUp( { if( persLogVolPtrs[i] == inGeomObj ) { - return transLogVolPtrs->Get(i); + return (*transLogVolPtrs)[i]; } } @@ -184,11 +178,11 @@ void G4PGeometryObjectMap::Add( HepRef(G4PLogicalVolume) inGeomObj, G4LogicalVolume* outGeomObj ) { assert(inGeomObj != 0); - for(G4int i=0;iInsert(i, outGeomObj); + (*transLogVolPtrs)[i] = outGeomObj; break; } G4cerr << "G4PGeometryObjectMap::Add -- transient solid not assigned" << G4endl; @@ -209,14 +203,14 @@ HepRef(G4PVSolid) G4PGeometryObjectMap::LookUp( G4VSolid* inGeomObj ) for(G4int i=0;iGet(i); + G4VSolid* tmpSolid = (*transSolidPtrs)[i]; cout << "[" << i << "] transSolidPtrs[i]=" << tmpSolid <= 0 && i < noSolids) { - return transSolidPtrs->Get(i); + return (*transSolidPtrs)[i]; } else { @@ -315,30 +308,30 @@ HepRef(G4PVSolid) G4PGeometryObjectMap::GetPSolid(G4int i) void G4PGeometryObjectMap::InitTransientMap() { - transPhysVolPtrs->Resize(noPhysVol); - transLogVolPtrs->Resize(noLogVol); - transSolidPtrs->Resize(noSolids); + transPhysVolPtrs->resize(noPhysVol); + transLogVolPtrs->resize(noLogVol); + transSolidPtrs->resize(noSolids); #ifdef G4PERSISTENCY_DEBUG cout << "G4PGeometryObjectMap::InitTransientMap()" << G4endl; cout << " -- noPhysVol: " << noPhysVol << G4endl; - cout << " -- transPhysVolPtrs.length: " << transPhysVolPtrs->length() << G4endl; - cout << " -- transLogVolPtrs.length: " << transLogVolPtrs->length() << G4endl; - cout << " -- transSolidPtrs.length: " << transSolidPtrs->length() << G4endl; + cout << " -- transPhysVolPtrs.length: " << transPhysVolPtrs->size() << G4endl; + cout << " -- transLogVolPtrs.length: " << transLogVolPtrs->size() << G4endl; + cout << " -- transSolidPtrs.length: " << transSolidPtrs->size() << G4endl; #endif G4int i; for(i=0;iInsert(i, 0); + transPhysVolPtrs->push_back(0); } for(i=0;iInsert(i, 0); + transLogVolPtrs->push_back(0); } for(i=0;iInsert(i, 0); + transSolidPtrs->push_back(0); } } diff --git a/source/persistency/geometry/management/src/G4PLogicalVolume.cc b/source/persistency/geometry/management/src/G4PLogicalVolume.cc index 66f7783783..2379d81dc4 100644 --- a/source/persistency/geometry/management/src/G4PLogicalVolume.cc +++ b/source/persistency/geometry/management/src/G4PLogicalVolume.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PLogicalVolume.cc,v 1.6.2.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PLogicalVolume.cc,v 1.7 2001/07/11 10:02:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Takashi.Sasaki@kek.jp diff --git a/source/persistency/geometry/management/src/G4PPVParameterised.cc b/source/persistency/geometry/management/src/G4PPVParameterised.cc index c2e033ee81..4c5d5feb71 100644 --- a/source/persistency/geometry/management/src/G4PPVParameterised.cc +++ b/source/persistency/geometry/management/src/G4PPVParameterised.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PPVParameterised.cc,v 1.3.2.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PPVParameterised.cc,v 1.4 2001/07/11 10:02:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/persistency/geometry/management/src/G4PPVPlacement.cc b/source/persistency/geometry/management/src/G4PPVPlacement.cc index db5ad484fc..5edbd89a48 100644 --- a/source/persistency/geometry/management/src/G4PPVPlacement.cc +++ b/source/persistency/geometry/management/src/G4PPVPlacement.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PPVPlacement.cc,v 1.2.4.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PPVPlacement.cc,v 1.3 2001/07/11 10:02:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/persistency/geometry/management/src/G4PPVReplica.cc b/source/persistency/geometry/management/src/G4PPVReplica.cc index 036dc46a9f..23433cb463 100644 --- a/source/persistency/geometry/management/src/G4PPVReplica.cc +++ b/source/persistency/geometry/management/src/G4PPVReplica.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PPVReplica.cc,v 1.2.4.1 2001/06/28 19:11:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PPVReplica.cc,v 1.3 2001/07/11 10:02:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/persistency/geometry/management/src/G4PVPhysicalVolume.cc b/source/persistency/geometry/management/src/G4PVPhysicalVolume.cc index 0e0224567f..bca986d282 100644 --- a/source/persistency/geometry/management/src/G4PVPhysicalVolume.cc +++ b/source/persistency/geometry/management/src/G4PVPhysicalVolume.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PVPhysicalVolume.cc,v 1.4.2.1 2001/06/28 19:11:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PVPhysicalVolume.cc,v 1.5 2001/07/11 10:02:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Takashi.Sasaki@kek.jp diff --git a/source/persistency/geometry/management/src/G4PersistentGeomMan.cc b/source/persistency/geometry/management/src/G4PersistentGeomMan.cc index 5c9fd78a5f..c6df6469ab 100644 --- a/source/persistency/geometry/management/src/G4PersistentGeomMan.cc +++ b/source/persistency/geometry/management/src/G4PersistentGeomMan.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentGeomMan.cc,v 1.15.2.1 2001/06/28 19:11:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentGeomMan.cc,v 1.16 2001/07/11 10:02:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PersistentGeomMan // diff --git a/source/persistency/geometry/solids/Boolean/include/G4PBooleanSolid.ddl b/source/persistency/geometry/solids/Boolean/include/G4PBooleanSolid.ddl index d66ac07c4e..e6d60e2c72 100644 --- a/source/persistency/geometry/solids/Boolean/include/G4PBooleanSolid.ddl +++ b/source/persistency/geometry/solids/Boolean/include/G4PBooleanSolid.ddl @@ -20,9 +20,14 @@ // * statement, and all its terms. * // ******************************************************************** // -// Persistent base class for solids created by boolean operations -// between other solids // +// $Id: G4PBooleanSolid.ddl,v 1.6 2001/07/11 10:02:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent base class for solids created by boolean operations +// between other solids + // History: // 10.11.99 Y.Morita, Initial Creation @@ -35,15 +40,17 @@ class G4PBooleanSolid : public G4PVSolid { -public: +public: // With description G4PBooleanSolid( const G4String& pName, HepRef(G4PVSolid) persSolidA, HepRef(G4PVSolid) persSolidB ); virtual ~G4PBooleanSolid(); + // Constructor and Destructor virtual G4VSolid* MakeTransientBooleanSolid( G4VSolid* aSolidA, G4VSolid* aSolidB ) const = 0; + // Creates a transient boolean solid object. public: // With Description // If Solid is made up from a Boolean operation of two solids, diff --git a/source/persistency/geometry/solids/Boolean/include/G4PDisplacedSolid.ddl b/source/persistency/geometry/solids/Boolean/include/G4PDisplacedSolid.ddl index 0fd2d8b61d..36f9fe2aed 100644 --- a/source/persistency/geometry/solids/Boolean/include/G4PDisplacedSolid.ddl +++ b/source/persistency/geometry/solids/Boolean/include/G4PDisplacedSolid.ddl @@ -20,8 +20,13 @@ // * statement, and all its terms. * // ******************************************************************** // -// Persistent class describing solid placements for boolean operations // +// $Id: G4PDisplacedSolid.ddl,v 1.5 2001/07/11 10:02:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent class describing solid placements for boolean operations + // History: // 10.11.99 Y.Morita, Initial creation @@ -37,19 +42,22 @@ class G4VSolid; class G4PDisplacedSolid : public G4PVSolid { -public: +public: // With description G4PDisplacedSolid ( HepRef(G4PVSolid) persCostituentSolid, HepRef(G4PAffineTransform) pDirectTransform ); virtual ~G4PDisplacedSolid(); + // Constructor and destructor. G4VSolid* MakeTransientObject() const; - G4VSolid* MakeTransientDisplacedSolid(G4VSolid* aSolid) const; + // Creates a transient G4VSolid object. virtual G4GeometryType GetEntityType() const { return G4String("G4DisplacedSolid"); } + // Returns the G4GeometryType of the solid. HepRef(G4PVSolid) GetConstituentMovedSolid(); + // Returns the pointer of persistent GetConstituentMovedSolid object. protected: d_Ref fPtrSolid; diff --git a/source/persistency/geometry/solids/Boolean/include/G4PIntersectionSolid.ddl b/source/persistency/geometry/solids/Boolean/include/G4PIntersectionSolid.ddl index b0f3f75a1b..5644988a2d 100644 --- a/source/persistency/geometry/solids/Boolean/include/G4PIntersectionSolid.ddl +++ b/source/persistency/geometry/solids/Boolean/include/G4PIntersectionSolid.ddl @@ -20,8 +20,13 @@ // * statement, and all its terms. * // ******************************************************************** // -// Persistent class for description of intersection of two CSG solids // +// $Id: G4PIntersectionSolid.ddl,v 1.5 2001/07/11 10:02:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent class for description of intersection of two CSG solids + // History: // 10.11.99 Y.Morita, Initial creation @@ -35,20 +40,22 @@ class G4VSolid; class G4PIntersectionSolid: public G4PBooleanSolid { -public: +public: // With description G4PIntersectionSolid( const G4String& pName, HepRef(G4PVSolid) persSolidA, HepRef(G4PVSolid) persSolidB ); virtual ~G4PIntersectionSolid() ; + // Constructor and destructor G4VSolid* MakeTransientObject() const; - G4VSolid* MakeTransientBooleanSolid( G4VSolid* aSolidA, G4VSolid* aSolidB ) const; + // Creates a transient G4IntersectionSolid object. virtual G4GeometryType GetEntityType() const { return G4String("G4IntersectionSolid"); } + // Returns the G4GeometryType of this solid. protected: diff --git a/source/persistency/geometry/solids/Boolean/include/G4PSubtractionSolid.ddl b/source/persistency/geometry/solids/Boolean/include/G4PSubtractionSolid.ddl index bb95421d34..fe59689368 100644 --- a/source/persistency/geometry/solids/Boolean/include/G4PSubtractionSolid.ddl +++ b/source/persistency/geometry/solids/Boolean/include/G4PSubtractionSolid.ddl @@ -20,11 +20,15 @@ // * statement, and all its terms. * // ******************************************************************** // -// Persistent class for description of subtraction of two CSG solids: A - B // +// $Id: G4PSubtractionSolid.ddl,v 1.5 2001/07/11 10:02:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent class for description of subtraction of two CSG solids: A - B + // History: // 10.11.99 Y.Morita, Initial creation -// #ifndef G4PSUBTRACTIONSOLID_DDL #define G4PSUBTRACTIONSOLID_DDL @@ -37,20 +41,22 @@ class G4VSolid; class G4PSubtractionSolid : public G4PBooleanSolid { -public: +public: // With description G4PSubtractionSolid( const G4String& pName, HepRef(G4PVSolid) persSolidA, HepRef(G4PVSolid) persSolidB ); virtual ~G4PSubtractionSolid() ; + // Constructor and Destructor G4VSolid* MakeTransientObject() const; - G4VSolid* MakeTransientBooleanSolid( G4VSolid* aSolidA, G4VSolid* aSolidB ) const; + // Creates a transient G4SubtractionSolid object. virtual G4GeometryType GetEntityType() const { return G4String("G4SubtractionSolid"); } + // Returns the G4GeometryType of this solid. protected: diff --git a/source/persistency/geometry/solids/Boolean/include/G4PUnionSolid.ddl b/source/persistency/geometry/solids/Boolean/include/G4PUnionSolid.ddl index 3a6dcb8b16..5bda423fe3 100644 --- a/source/persistency/geometry/solids/Boolean/include/G4PUnionSolid.ddl +++ b/source/persistency/geometry/solids/Boolean/include/G4PUnionSolid.ddl @@ -20,11 +20,15 @@ // * statement, and all its terms. * // ******************************************************************** // -// Persistent class for description of intersection of two CSG solids // +// $Id: G4PUnionSolid.ddl,v 1.5 2001/07/11 10:02:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent class for description of intersection of two CSG solids + // History: // 10.11.99 Y.Morita, Initial creation -// #ifndef G4PUNIONSOLID_DDL #define G4PUNIONSOLID_DDL @@ -37,20 +41,22 @@ class G4VSolid; class G4PUnionSolid : public G4PBooleanSolid { -public: +public: // With description G4PUnionSolid( const G4String& pName, HepRef(G4PVSolid) persSolidA, HepRef(G4PVSolid) persSolidB ); virtual ~G4PUnionSolid() ; + // Constructor and Destructor G4VSolid* MakeTransientObject() const; - G4VSolid* MakeTransientBooleanSolid( G4VSolid* aSolidA, G4VSolid* aSolidB ) const; + // Creates a transient G4UnionSolid object. virtual G4GeometryType GetEntityType() const { return G4String("G4UnionSolid"); } + // Returns the G4GeometryType of this solid. protected: diff --git a/source/persistency/geometry/solids/CSG/include/G4PBox.ddl b/source/persistency/geometry/solids/CSG/include/G4PBox.ddl index 29e6ad31e4..c069b1a796 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PBox.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PBox.ddl @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4PBox.ddl,v 1.3.4.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4PBox -// +// $Id: G4PBox.ddl,v 1.5 2001/07/11 10:02:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4Box solid. + // History: // 19.06.98 A.Kimura Converted from G4Box.hh @@ -38,15 +39,19 @@ class G4VSolid; class G4Box; -class G4PBox : public G4PCSGSolid { -public: +class G4PBox + : public G4PCSGSolid +{ +public: // With description G4PBox(const G4Box* theBox); virtual ~G4PBox(); + // Constructor and Destructor G4VSolid* MakeTransientObject() const; + // Creates a transient boolean solid object. - // Naming method (pseudo-RTTI : run-time type identification virtual G4GeometryType GetEntityType() const { return G4String("G4Box"); } + // Returns the G4GeometryType of this solid. private: G4double fDx,fDy,fDz; diff --git a/source/persistency/geometry/solids/CSG/include/G4PCSGSolid.ddl b/source/persistency/geometry/solids/CSG/include/G4PCSGSolid.ddl index bdd1eb056c..9a08dd9f01 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PCSGSolid.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PCSGSolid.ddl @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: G4PCSGSolid.ddl,v 1.3.4.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// class G4CSGSolid -// +// $Id: G4PCSGSolid.ddl,v 1.5 2001/07/11 10:02:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4CSGSolid + // History: // 19.06.98 A.Kimura Converted G4CSGSolid.hh @@ -36,11 +36,13 @@ #include "G4PersistentSchema.hh" #include "G4PVSolid.hh" -class G4PCSGSolid : public G4PVSolid { -public: +class G4PCSGSolid + : public G4PVSolid +{ +public: // With description G4PCSGSolid(const G4String& pName); - virtual ~G4PCSGSolid(); + // Constructor and Destructor }; #endif diff --git a/source/persistency/geometry/solids/CSG/include/G4PCons.ddl b/source/persistency/geometry/solids/CSG/include/G4PCons.ddl index f8dfa6cb22..76815bfa5b 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PCons.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PCons.ddl @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4PCons.ddl,v 1.3.4.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4Cons -// +// $Id: G4PCons.ddl,v 1.5 2001/07/11 10:02:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4Cons solid. + // History: // 19.06.98 A.Kimura Converted G4Cons.hh @@ -38,15 +39,19 @@ class G4Cons; class G4VSolid; -class G4PCons : public G4PCSGSolid { -public: +class G4PCons + : public G4PCSGSolid +{ +public: // With description G4PCons(const G4Cons* theCons); virtual ~G4PCons() ; + // Constructor and Destructor G4VSolid* MakeTransientObject() const; + // Creates a transient boolean solid object. - // Naming method (pseudo-RTTI : run-time type identification virtual G4GeometryType GetEntityType() const {return G4String("G4Cons");} + // Returns the G4GeometryType of this solid. private: @@ -57,3 +62,4 @@ private: }; #endif + diff --git a/source/persistency/geometry/solids/CSG/include/G4PPara.ddl b/source/persistency/geometry/solids/CSG/include/G4PPara.ddl index 851a148a29..8f40b9e294 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PPara.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PPara.ddl @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: G4PPara.ddl,v 1.5.2.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4PPara -// +// $Id: G4PPara.ddl,v 1.7 2001/07/11 10:02:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4PPara solid. + // History: // 19.06.98 A.Kimura Converted G4Para.hh - #ifndef G4PPara_DDL #define G4PPara_DDL @@ -41,27 +41,27 @@ class G4VSolid; #include "G4ThreeVector.hh" -class G4PPara : public G4PCSGSolid { -public: - +class G4PPara + : public G4PCSGSolid +{ +public: // With description G4PPara(const G4Para* thePara); virtual ~G4PPara() ; - - // Access functions + // Constructor and Destructor + G4VSolid* MakeTransientObject() const ; + // Creates a transient boolean solid object. - // Get functions - +public: G4ThreeVector GetSymAxis() const { - G4double cosTheta + G4double cosTheta = 1.0/sqrt(1+fTthetaCphi*fTthetaCphi+fTthetaSphi*fTthetaSphi) ; - - return G4ThreeVector(fTthetaCphi*cosTheta,fTthetaSphi*cosTheta,cosTheta) ; + return G4ThreeVector(fTthetaCphi*cosTheta,fTthetaSphi*cosTheta,cosTheta) ; } - // Naming method (pseudo-RTTI : run-time type identification - +public: // With description virtual G4GeometryType GetEntityType() const {return G4String("G4Para");} + // Returns the G4GeometryType of this solid. private: G4double fDx,fDy,fDz; @@ -69,3 +69,4 @@ private: }; #endif + diff --git a/source/persistency/geometry/solids/CSG/include/G4PSphere.ddl b/source/persistency/geometry/solids/CSG/include/G4PSphere.ddl index ea1686e9d7..246c117f55 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PSphere.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PSphere.ddl @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4PSphere.ddl,v 1.5.2.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4PSphere -// +// $Id: G4PSphere.ddl,v 1.7 2001/07/11 10:02:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4PSphere solid. + // History: // 19.06.98 A.Kimura Converted G4Sphere.hh @@ -40,17 +41,20 @@ class G4Sphere; #include "G4ThreeVector.hh" -class G4PSphere : public G4PCSGSolid { -public: +class G4PSphere + : public G4PCSGSolid +{ +public: // With description G4PSphere(const G4Sphere* theSphere); - virtual ~G4PSphere() ; + // Constructor and Destructor G4VSolid* MakeTransientObject() const; + // Creates a transient boolean solid object. - // Naming method (pseudo-RTTI : run-time type identification virtual G4GeometryType GetEntityType() const {return G4String("G4Sphere");} - + // Returns the G4GeometryType of this solid. + private: G4double fRmin,fRmax, diff --git a/source/persistency/geometry/solids/CSG/include/G4PTorus.ddl b/source/persistency/geometry/solids/CSG/include/G4PTorus.ddl index c1ede6777a..f54585528d 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PTorus.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PTorus.ddl @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: G4PTorus.ddl,v 1.3.4.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// class G4PTorus -// +// $Id: G4PTorus.ddl,v 1.5 2001/07/11 10:02:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4PTorus solid. + // History: // 19.06.98 A.Kimura Converted G4Torus.hh @@ -39,18 +39,24 @@ class G4VSolid; class G4Torus; -class G4PTorus : public G4PCSGSolid { -public: +class G4PTorus + : public G4PCSGSolid +{ +public: // With description G4PTorus(const G4Torus* theTorus); virtual ~G4PTorus(); + // Constructor and Destructor G4VSolid* MakeTransientObject() const; + // Creates a transient boolean solid object. +public: void SetAllParameters(G4double pRmin, G4double pRmax, G4double pRtor, G4double pSPhi, G4double pDPhi); - // Naming method (pseudo-RTTI : run-time type identification +public: // With description virtual G4GeometryType GetEntityType() const {return G4String("G4Torus");} + // Returns the G4GeometryType of this solid. protected: diff --git a/source/persistency/geometry/solids/CSG/include/G4PTrap.ddl b/source/persistency/geometry/solids/CSG/include/G4PTrap.ddl index e5c47adf13..29be0669a9 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PTrap.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PTrap.ddl @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4PTrap.ddl,v 1.5.2.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4PTrap -// +// $Id: G4PTrap.ddl,v 1.7 2001/07/11 10:02:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4PTrap solid. + // History: // 19.06.98 A.Kimura Converted G4Trap.hh @@ -46,18 +47,18 @@ struct PTrapSidePlane // => Ax+By+Cz+D=0 }; -class G4PTrap : public G4PCSGSolid { - -public: - - // The most general constructor for G4Trap - +class G4PTrap + : public G4PCSGSolid +{ +public: // With description G4PTrap(const G4Trap* theTrap); virtual ~G4PTrap() ; + // Constructor and Destructor - // Access functions G4VSolid* MakeTransientObject() const; + // Creates a transient boolean solid object. +public: void SetAllParameters ( G4double pDz, G4double pTheta, G4double pPhi, @@ -70,8 +71,9 @@ public: G4double pDx4, G4double pAlp2); - // Naming method (pseudo-RTTI : run-time type identification +public: // With description virtual G4GeometryType GetEntityType() const { return G4String("G4Trap"); } + // Returns the G4GeometryType of this solid. protected: diff --git a/source/persistency/geometry/solids/CSG/include/G4PTrd.ddl b/source/persistency/geometry/solids/CSG/include/G4PTrd.ddl index fc2c3c143f..c78de77a5b 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PTrd.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PTrd.ddl @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4PTrd.ddl,v 1.3.4.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4PTrd -// +// $Id: G4PTrd.ddl,v 1.5 2001/07/11 10:02:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4PTrd solid. + // History: // 19.06.98 A.Kimura Converted G4Trd.hh @@ -38,19 +39,21 @@ class G4Trd; class G4VSolid; -class G4PTrd : public G4PCSGSolid { - -public: - +class G4PTrd + : public G4PCSGSolid +{ +public: // With description G4PTrd(const G4Trd* theTrd); - virtual ~G4PTrd(); + // Constructor and Destructor G4VSolid* MakeTransientObject() const; + // Creates a transient boolean solid object. - // Naming method (pseudo-RTTI : run-time type identification virtual G4GeometryType GetEntityType() const {return G4String("G4Trd");} + // Returns the G4GeometryType of this solid. +public: void CheckAndSetAllParameters (G4double pdx1, G4double pdx2, G4double pdy1, G4double pdy2, G4double pdz); diff --git a/source/persistency/geometry/solids/CSG/include/G4PTubs.ddl b/source/persistency/geometry/solids/CSG/include/G4PTubs.ddl index 46f7f494ba..5367d049f2 100644 --- a/source/persistency/geometry/solids/CSG/include/G4PTubs.ddl +++ b/source/persistency/geometry/solids/CSG/include/G4PTubs.ddl @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: G4PTubs.ddl,v 1.3.4.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// class G4PTubs -// +// $Id: G4PTubs.ddl,v 1.5 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4PTubs solid. + // History: // 19.06.98 A.Kimura Converted G4Tubs.hh @@ -39,15 +39,19 @@ class G4VSolid; class G4Tubs; -class G4PTubs : public G4PCSGSolid { -public: +class G4PTubs + : public G4PCSGSolid +{ +public: // With description G4PTubs(const G4Tubs* theTubs); virtual ~G4PTubs(); + // Constructor and Destructor G4VSolid* MakeTransientObject() const; + // Creates a transient boolean solid object. - // Naming method (pseudo-RTTI : run-time type identification) virtual G4GeometryType GetEntityType() const { return G4String("G4Tubs"); } + // Returns the G4GeometryType of this solid. protected: @@ -56,3 +60,4 @@ protected: }; #endif + diff --git a/source/persistency/geometry/solids/CSG/src/G4PBox.cc b/source/persistency/geometry/solids/CSG/src/G4PBox.cc index 019e7d219a..4ee6358564 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PBox.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PBox.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PBox.cc,v 1.2.8.1 2001/06/28 19:11:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PBox.cc,v 1.3 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/persistency/geometry/solids/CSG/src/G4PCSGSolid.cc b/source/persistency/geometry/solids/CSG/src/G4PCSGSolid.cc index 25fa0f5ea7..949950e560 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PCSGSolid.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PCSGSolid.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PCSGSolid.cc,v 1.2.8.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PCSGSolid.cc,v 1.3 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // History: diff --git a/source/persistency/geometry/solids/CSG/src/G4PCons.cc b/source/persistency/geometry/solids/CSG/src/G4PCons.cc index fa7e735932..10f3cd7baa 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PCons.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PCons.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PCons.cc,v 1.2.8.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PCons.cc,v 1.3 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PCons // diff --git a/source/persistency/geometry/solids/CSG/src/G4PPara.cc b/source/persistency/geometry/solids/CSG/src/G4PPara.cc index 22abb25b43..febda5947b 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PPara.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PPara.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PPara.cc,v 1.2.8.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PPara.cc,v 1.3 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PPara // diff --git a/source/persistency/geometry/solids/CSG/src/G4PSphere.cc b/source/persistency/geometry/solids/CSG/src/G4PSphere.cc index e50f5d8b4a..3a249cfaa9 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PSphere.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PSphere.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PSphere.cc,v 1.3.8.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PSphere.cc,v 1.4 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PSphere diff --git a/source/persistency/geometry/solids/CSG/src/G4PTorus.cc b/source/persistency/geometry/solids/CSG/src/G4PTorus.cc index 7954c2870e..16720598d8 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PTorus.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PTorus.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PTorus.cc,v 1.3.4.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PTorus.cc,v 1.4 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PTorus diff --git a/source/persistency/geometry/solids/CSG/src/G4PTrap.cc b/source/persistency/geometry/solids/CSG/src/G4PTrap.cc index e07f0e3cf2..011058291f 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PTrap.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PTrap.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PTrap.cc,v 1.2.8.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PTrap.cc,v 1.3 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PTrap // diff --git a/source/persistency/geometry/solids/CSG/src/G4PTrd.cc b/source/persistency/geometry/solids/CSG/src/G4PTrd.cc index 668ee1f1ab..b88023c8f3 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PTrd.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PTrd.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PTrd.cc,v 1.3.4.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PTrd.cc,v 1.4 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Implementation for G4Trd class diff --git a/source/persistency/geometry/solids/CSG/src/G4PTubs.cc b/source/persistency/geometry/solids/CSG/src/G4PTubs.cc index ba2471c623..541bc84600 100644 --- a/source/persistency/geometry/solids/CSG/src/G4PTubs.cc +++ b/source/persistency/geometry/solids/CSG/src/G4PTubs.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PTubs.cc,v 1.2.8.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PTubs.cc,v 1.3 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // class G4PTubs diff --git a/source/persistency/geometry/solids/specific/include/G4PHype.ddl b/source/persistency/geometry/solids/specific/include/G4PHype.ddl index a7a6b26778..cd3954da46 100644 --- a/source/persistency/geometry/solids/specific/include/G4PHype.ddl +++ b/source/persistency/geometry/solids/specific/include/G4PHype.ddl @@ -21,11 +21,12 @@ // ******************************************************************** // // -// $Id: G4PHype.ddl,v 1.1.4.1 2001/06/28 19:11:32 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4PHype -// +// $Id: G4PHype.ddl,v 1.3 2001/07/11 10:02:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Persistent version of G4Hype specific solid. + // History: // 19.06.98 A.Kimura Converted G4Hype.hh @@ -38,15 +39,19 @@ class G4VSolid; class G4Hype; -class G4PHype : public G4PCSGSolid { -public: - +class G4PHype + : public G4PCSGSolid +{ +public: // With description G4PHype(const G4Hype* theHype); virtual ~G4PHype(); + // Constructor and Destructor G4VSolid* MakeTransientObject() const; + // Creates a transient G4Hype object. virtual G4GeometryType GetEntityType() const {return G4String("G4Hype");} + // Returns the G4GeometryType of this solid. protected: // values of hype radius at a given Z @@ -76,37 +81,3 @@ protected: #endif - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/persistency/geometry/solids/specific/src/G4PHype.cc b/source/persistency/geometry/solids/specific/src/G4PHype.cc index 396e81cca5..22f25e065f 100644 --- a/source/persistency/geometry/solids/specific/src/G4PHype.cc +++ b/source/persistency/geometry/solids/specific/src/G4PHype.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PHype.cc,v 1.1.4.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PHype.cc,v 1.2 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PHype // diff --git a/source/persistency/global/include/G4DatabaseTypes.hh b/source/persistency/global/include/G4DatabaseTypes.hh index 8015d7ecde..3904ca05ed 100644 --- a/source/persistency/global/include/G4DatabaseTypes.hh +++ b/source/persistency/global/include/G4DatabaseTypes.hh @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: G4DatabaseTypes.hh,v 1.3.8.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DatabaseTypes.hh,v 1.5 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // file description: // // This file defines types of database and transaction mode // supported by G4TransactionManager. -// + // History: // 99.11.26 Y.Morita Initial version diff --git a/source/persistency/global/include/G4PersistentSchema.hh b/source/persistency/global/include/G4PersistentSchema.hh index 3b7ec7a992..b72439d6ca 100644 --- a/source/persistency/global/include/G4PersistentSchema.hh +++ b/source/persistency/global/include/G4PersistentSchema.hh @@ -21,11 +21,13 @@ // ******************************************************************** // // -// $Id: G4PersistentSchema.hh,v 1.5.8.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ -// -// Persistent-capable schema definitions required for ooddlx processor +// $Id: G4PersistentSchema.hh,v 1.7 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // + +// file description: +// Persistent-capable schema definitions required for ooddlx processor + // History: // 19.11.99 Y.Morita - Created diff --git a/source/persistency/global/include/G4PersistentTypes.hh b/source/persistency/global/include/G4PersistentTypes.hh index 69bcaa1341..62c0cffd4e 100644 --- a/source/persistency/global/include/G4PersistentTypes.hh +++ b/source/persistency/global/include/G4PersistentTypes.hh @@ -21,12 +21,13 @@ // ******************************************************************** // // -// $Id: G4PersistentTypes.hh,v 1.2.4.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Persistent-capable typedefs for Geant4/Persistency category +// $Id: G4PersistentTypes.hh,v 1.4 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // + +// file description: +// Persistent-capable typedefs for Geant4/Persistency category + // History: // 15.06.98 Y.Morita - Created diff --git a/source/persistency/global/include/G4Pglobals.hh b/source/persistency/global/include/G4Pglobals.hh index 1da77d0c1d..633e892074 100644 --- a/source/persistency/global/include/G4Pglobals.hh +++ b/source/persistency/global/include/G4Pglobals.hh @@ -21,12 +21,13 @@ // ******************************************************************** // // -// $Id: G4Pglobals.hh,v 1.2.2.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Wrapper header file to protect globals.hh from ooddlx +// $Id: G4Pglobals.hh,v 1.5 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // + +// file description: +// Wrapper header file to protect globals.hh from ooddlx + // History: // 26.10.00 Y.Morita - Created @@ -92,12 +93,6 @@ typedef char* G4String; typedef int G4int; typedef double G4double; typedef bool G4bool; -template -class G4RWTPtrVector {}; -template -class G4RWTValOrderedVector {}; -template -class G4RWTPtrOrderedVector {}; #endif diff --git a/source/persistency/global/include/G4VMaterialMap.hh b/source/persistency/global/include/G4VMaterialMap.hh index 0b23f5d2a9..2cc99cfd3f 100644 --- a/source/persistency/global/include/G4VMaterialMap.hh +++ b/source/persistency/global/include/G4VMaterialMap.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMaterialMap.hh,v 1.1.4.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMaterialMap.hh,v 1.2 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VMaterialMap_hh diff --git a/source/persistency/global/include/G4VPersistentSubDbMan.hh b/source/persistency/global/include/G4VPersistentSubDbMan.hh index 9f09f0d556..4e8b755c8b 100644 --- a/source/persistency/global/include/G4VPersistentSubDbMan.hh +++ b/source/persistency/global/include/G4VPersistentSubDbMan.hh @@ -21,13 +21,12 @@ // ******************************************************************** // // -// $Id: G4VPersistentSubDbMan.hh,v 1.3.8.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4VPersistentSubDbMan -// -// Abstract class to be used by G4PersistencyManager -// and G4TransactionManager +// $Id: G4VPersistentSubDbMan.hh,v 1.5 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Abstract class to be used by G4PersistencyManager +// and G4TransactionManager // // Member functions: // ================= @@ -60,7 +59,7 @@ // f_currentContainer = f_container; // pRun_iterator.scan(f_currentContainer); // } -// + // History: // 99.11.25 Y.Morita Initial creation @@ -95,11 +94,13 @@ class G4VPersistentSubDbMan inline void SetContainer(HepContainerRef container) { f_container = container; } - public: + public: // With description inline HepDatabaseRef GetDB() { return f_DB; } + // Returns the reference pointer of the database inline HepContainerRef GetContainer() { return f_container; } + // Returns the reference pointer of the container protected: HepDatabaseRef f_DB; diff --git a/source/persistency/global/include/G4VPersistentSubMan.hh b/source/persistency/global/include/G4VPersistentSubMan.hh index a090eeb43f..53495a90e2 100644 --- a/source/persistency/global/include/G4VPersistentSubMan.hh +++ b/source/persistency/global/include/G4VPersistentSubMan.hh @@ -21,13 +21,12 @@ // ******************************************************************** // // -// $Id: G4VPersistentSubMan.hh,v 1.3.2.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ -// -// class G4VPersistentSubMan -// -// Abstract submanager class to be used by G4PersistencyManager -// +// $Id: G4VPersistentSubMan.hh,v 1.5 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +// Class Description: +// Abstract submanager class to be used by G4PersistencyManager + // Member functions: // ================= // virtual void SetVerboseLevel(G4int verboseLevel) @@ -61,10 +60,12 @@ class G4VPersistentSubMan // interface with G4PersistencyManager inline virtual void SetVerboseLevel(G4int verboseLevel) { f_verboseLevel = verboseLevel; } + // Set the verbose level - public: + public: // With description inline G4int GetVerboseLevel() { return f_verboseLevel; }; + // Get the current verbose level protected: G4int f_verboseLevel; diff --git a/source/persistency/global/src/G4VMaterialMap.cc b/source/persistency/global/src/G4VMaterialMap.cc index 2016f423b0..5c38c3c78e 100644 --- a/source/persistency/global/src/G4VMaterialMap.cc +++ b/source/persistency/global/src/G4VMaterialMap.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMaterialMap.cc,v 1.2.2.1 2001/06/28 19:11:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMaterialMap.cc,v 1.3 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VMaterialMap.hh" diff --git a/source/persistency/global/src/G4VPersistentSubDbMan.cc b/source/persistency/global/src/G4VPersistentSubDbMan.cc index 946239dccd..b07b9535fe 100644 --- a/source/persistency/global/src/G4VPersistentSubDbMan.cc +++ b/source/persistency/global/src/G4VPersistentSubDbMan.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPersistentSubDbMan.cc,v 1.3.2.1 2001/06/28 19:11:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPersistentSubDbMan.cc,v 1.4 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4VPersistentSubDbMan // diff --git a/source/persistency/global/src/G4VPersistentSubMan.cc b/source/persistency/global/src/G4VPersistentSubMan.cc index 36b5cb7e24..9061088b1d 100644 --- a/source/persistency/global/src/G4VPersistentSubMan.cc +++ b/source/persistency/global/src/G4VPersistentSubMan.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPersistentSubMan.cc,v 1.2.8.1 2001/06/28 19:11:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPersistentSubMan.cc,v 1.3 2001/07/11 10:02:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4VPersistentSubMan // diff --git a/source/persistency/management/include/G4PersistencyManager.hh b/source/persistency/management/include/G4PersistencyManager.hh index d3aac03b98..b9e955e869 100644 --- a/source/persistency/management/include/G4PersistencyManager.hh +++ b/source/persistency/management/include/G4PersistencyManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistencyManager.hh,v 1.15.4.1 2001/06/28 19:11:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistencyManager.hh,v 1.16 2001/07/11 10:02:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // History: // 98.01.08 Y.Morita Initial version diff --git a/source/persistency/management/include/G4PersistencyMessenger.hh b/source/persistency/management/include/G4PersistencyMessenger.hh index 3b80bee95c..996bfe6c68 100644 --- a/source/persistency/management/include/G4PersistencyMessenger.hh +++ b/source/persistency/management/include/G4PersistencyMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistencyMessenger.hh,v 1.4.8.1 2001/06/28 19:11:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistencyMessenger.hh,v 1.5 2001/07/11 10:02:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // GEANT 4 class header file diff --git a/source/persistency/management/include/G4TransactionManager.hh b/source/persistency/management/include/G4TransactionManager.hh index e2518b4988..242d7be3b4 100644 --- a/source/persistency/management/include/G4TransactionManager.hh +++ b/source/persistency/management/include/G4TransactionManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TransactionManager.hh,v 1.7.4.1 2001/06/28 19:11:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TransactionManager.hh,v 1.8 2001/07/11 10:02:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description: diff --git a/source/persistency/management/src/G4PersistencyManager.cc b/source/persistency/management/src/G4PersistencyManager.cc index f4d9f4f166..731f6fd1b6 100644 --- a/source/persistency/management/src/G4PersistencyManager.cc +++ b/source/persistency/management/src/G4PersistencyManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistencyManager.cc,v 1.17.2.1 2001/06/28 19:11:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistencyManager.cc,v 1.18 2001/07/11 10:02:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PersistencyManager // diff --git a/source/persistency/management/src/G4PersistencyMessenger.cc b/source/persistency/management/src/G4PersistencyMessenger.cc index 230e863017..4ac8023231 100644 --- a/source/persistency/management/src/G4PersistencyMessenger.cc +++ b/source/persistency/management/src/G4PersistencyMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistencyMessenger.cc,v 1.7.8.1 2001/06/28 19:11:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistencyMessenger.cc,v 1.8 2001/07/11 10:02:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PersistencyMessenger.hh" diff --git a/source/persistency/management/src/G4TransactionManager.cc b/source/persistency/management/src/G4TransactionManager.cc index 2a0bee9c6d..9439b4f7f6 100644 --- a/source/persistency/management/src/G4TransactionManager.cc +++ b/source/persistency/management/src/G4TransactionManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TransactionManager.cc,v 1.7.2.1 2001/06/28 19:11:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TransactionManager.cc,v 1.8 2001/07/11 10:02:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4TransactionManager // diff --git a/source/persistency/run/include/G4PRun.ddl b/source/persistency/run/include/G4PRun.ddl index 61f701e732..1aca2d384e 100644 --- a/source/persistency/run/include/G4PRun.ddl +++ b/source/persistency/run/include/G4PRun.ddl @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PRun.ddl,v 1.8.4.1 2001/06/28 19:11:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PRun.ddl,v 1.9 2001/07/11 10:02:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/run/include/G4PersistentRunMan.hh b/source/persistency/run/include/G4PersistentRunMan.hh index ee38a17a9d..79c557555a 100644 --- a/source/persistency/run/include/G4PersistentRunMan.hh +++ b/source/persistency/run/include/G4PersistentRunMan.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentRunMan.hh,v 1.9.4.1 2001/06/28 19:11:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentRunMan.hh,v 1.10 2001/07/11 10:02:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description: diff --git a/source/persistency/run/src/G4PRun.cc b/source/persistency/run/src/G4PRun.cc index 1aea5dd472..74977b8d40 100644 --- a/source/persistency/run/src/G4PRun.cc +++ b/source/persistency/run/src/G4PRun.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PRun.cc,v 1.6.2.1 2001/06/28 19:11:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PRun.cc,v 1.7 2001/07/11 10:02:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4Run.hh" diff --git a/source/persistency/run/src/G4PersistentRunMan.cc b/source/persistency/run/src/G4PersistentRunMan.cc index 1e2e92ca01..31be13a146 100644 --- a/source/persistency/run/src/G4PersistentRunMan.cc +++ b/source/persistency/run/src/G4PersistentRunMan.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PersistentRunMan.cc,v 1.9.2.1 2001/06/28 19:11:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PersistentRunMan.cc,v 1.10 2001/07/11 10:02:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class G4PersistentRunMan // diff --git a/source/processes/GNUmakefile b/source/processes/GNUmakefile index 4c6a53221c..dc17329e12 100644 --- a/source/processes/GNUmakefile +++ b/source/processes/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.11 2001/03/15 09:10:40 gcosmo Exp $ +# $Id: GNUmakefile,v 1.17 2001/12/05 10:07:15 gcosmo Exp $ # ---------------------------------------------------------------------- # GNUmakefile for processes library, Gabriele Cosmo 27-Jun-1998 # ---------------------------------------------------------------------- @@ -8,13 +8,18 @@ name := G4processes SUBDIRS = management optical decay transportation parameterisation SUBDIRS += electromagnetic/muons electromagnetic/standard SUBDIRS += electromagnetic/utils electromagnetic/xrays -SUBDIRS += electromagnetic/integral electromagnetic/lowenergy +SUBDIRS += electromagnetic/lowenergy SUBDIRS += photolepton_hadron SUBDIRS += hadronic/management hadronic/util hadronic/processes SUBDIRS += hadronic/cross_sections hadronic/stopping SUBDIRS += hadronic/models/low_energy hadronic/models/high_energy SUBDIRS += hadronic/models/neutron_hp SUBDIRS += hadronic/models/isotope_production +SUBDIRS += hadronic/models/cascade/evaporation +SUBDIRS += hadronic/models/cascade/utils +SUBDIRS += hadronic/models/chiral_inv_phase_space/body +SUBDIRS += hadronic/models/chiral_inv_phase_space/interface +SUBDIRS += hadronic/models/coherent_elastic SUBDIRS += hadronic/models/generator/de_excitation SUBDIRS += hadronic/models/generator/diffractive_string SUBDIRS += hadronic/models/generator/high_energy @@ -29,12 +34,13 @@ SUBDIRS += hadronic/models/radiative_decay SUBLIBS = G4procman G4optical G4decay G4transportation G4parameterisation -SUBLIBS += G4muons G4emstandard G4emutils G4integral G4xrays -SUBLIBS += G4emlowenergy +SUBLIBS += G4muons G4emstandard G4emutils G4xrays G4emlowenergy SUBLIBS += G4photolepton_hadron SUBLIBS += G4hadronic_mgt G4hadronic_util G4hadronic_proc SUBLIBS += G4hadronic_xsect G4hadronic_stop G4hadronic_LE G4hadronic_HE SUBLIBS += G4hadronic_neu G4hadronic_iso +SUBLIBS += G4hadronic_hetcpp_evaporation G4hadronic_hetcpp_utils +SUBLIBS += G4hadronic_body_ci G4hadronic_interface_ci G4hadronic_coherent_elastic SUBLIBS += G4hadronic_deex G4hadronic_diffstring G4hadronic_HE_gen G4hadronic_kinetic SUBLIBS += G4hadronic_qgstring SUBLIBS += G4hadronic_man_gen G4hadronic_preequ G4hadronic_string_common diff --git a/source/processes/decay/History b/source/processes/decay/History index 1ffae8f7b3..e7f9eeb5fe 100644 --- a/source/processes/decay/History +++ b/source/processes/decay/History @@ -1,4 +1,4 @@ -$Id: History,v 1.6 2001/02/28 06:20:07 kurasige Exp $ +$Id: History,v 1.8 2001/08/22 08:12:34 kurasige Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,9 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +- Aug 22, 01 H.Kurashige(decay-V03-02-01) +- Clean up codes + - Feb 29, 01 H.Kurashige(decay-V03-00-03) - Fix minor bug in G4VExtDecayer diff --git a/source/processes/decay/include/G4Decay.hh b/source/processes/decay/include/G4Decay.hh index c8d0b7dbda..80aee751ce 100644 --- a/source/processes/decay/include/G4Decay.hh +++ b/source/processes/decay/include/G4Decay.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Decay.hh,v 1.6.2.2 2001/06/28 20:19:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Decay.hh,v 1.7 2001/07/11 10:02:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/decay/include/G4VExtDecayer.hh b/source/processes/decay/include/G4VExtDecayer.hh index 7eda419fec..2a6527da55 100644 --- a/source/processes/decay/include/G4VExtDecayer.hh +++ b/source/processes/decay/include/G4VExtDecayer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VExtDecayer.hh,v 1.2.2.2 2001/06/28 20:19:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VExtDecayer.hh,v 1.3 2001/07/11 10:02:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/decay/src/G4Decay.cc b/source/processes/decay/src/G4Decay.cc index d0d0b21fe6..e84d8c4841 100644 --- a/source/processes/decay/src/G4Decay.cc +++ b/source/processes/decay/src/G4Decay.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Decay.cc,v 1.8.2.2 2001/06/28 20:19:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Decay.cc,v 1.11 2001/08/22 08:12:39 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -55,12 +55,12 @@ // constructor G4Decay::G4Decay(const G4String& processName) :G4VRestDiscreteProcess(processName, fDecay), - HighestBinValue(10.0), - LowestBinValue(1.0e-3), - TotBin(200), verboseLevel(1), - pExtDecayer(0), - aPhysicsTable(0) + LowestBinValue(1.0e-3), + HighestBinValue(10.0), + TotBin(200), + aPhysicsTable(0), + pExtDecayer(0) { #ifdef G4VERBOSE if (GetVerboseLevel()>1) { @@ -297,12 +297,11 @@ G4VParticleChange* G4Decay::DecayIt(const G4Track& aTrack, const G4Step& ) // decay channel not found G4Exception("G4Decay::DoIt : can not determine decay channel "); } else { - G4int temp; + G4int temp = decaychannel->GetVerboseLevel(); // execute DecayIt() #ifdef G4VERBOSE if (GetVerboseLevel()>1) { G4cerr << "G4Decay::DoIt : selected decay channel addr:" << decaychannel <GetVerboseLevel(); decaychannel->SetVerboseLevel(GetVerboseLevel()); } #endif diff --git a/source/processes/electromagnetic/GNUmakefile b/source/processes/electromagnetic/GNUmakefile index d56af6560b..c4da4f2782 100644 --- a/source/processes/electromagnetic/GNUmakefile +++ b/source/processes/electromagnetic/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.3 2001/03/05 10:52:05 maire Exp $ +# $Id: GNUmakefile,v 1.4 2001/10/05 14:04:38 maire Exp $ # ------------------------------------------------------------------ # GNUmakefile for electromagnetic library. Gabriele Cosmo, 18/9/96. # ------------------------------------------------------------------ @@ -7,8 +7,8 @@ MAKEFLAGS= --no-print-directory name := G4electromagnetic -SUBDIRS = muons standard utils xrays lowenergy integral -SUBLIBS = G4muons G4emstandard G4emutils G4xrays G4emlowenergy G4integral +SUBDIRS = muons standard utils xrays lowenergy +SUBLIBS = G4muons G4emstandard G4emutils G4xrays G4emlowenergy ifndef G4INSTALL G4INSTALL = ../../.. diff --git a/source/processes/electromagnetic/History b/source/processes/electromagnetic/History index 9e932e4213..bfa21870ad 100644 --- a/source/processes/electromagnetic/History +++ b/source/processes/electromagnetic/History @@ -1,4 +1,4 @@ -$Id: History,v 1.7 2001/03/05 10:52:05 maire Exp $ +$Id: History,v 1.9 2001/10/11 16:21:31 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,14 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +11 oct 01 mma (em-V03-02-01) +- Global tag including: emlowen-V03-02-22 muons-V03-02-06 stand-V03-02-08 + utils-V03-02-07 xrays-V03-02-00 + +05 oct 01 mma (em-V03-02-00) +- the code in subdirectory integral is deleted. + the GNUmakefile is updated in accord with. + 05 mar 01 mma (em-V03-00-04) - new subdirectory: integral migration of all G4I.. processes from muons, standard, utils into integral diff --git a/source/processes/electromagnetic/integral/include/G4IMuBremsstrahlung.hh b/source/processes/electromagnetic/integral/include/G4IMuBremsstrahlung.hh deleted file mode 100644 index d2d4fb6f58..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IMuBremsstrahlung.hh +++ /dev/null @@ -1,173 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMuBremsstrahlung.hh,v 1.1.2.2 2001/06/28 20:19:18 gunter Exp $ -// GEANT4 tag $Name: $ -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4IMuBremsstrahlung physics process --------- -// by Laszlo Urban, September 1997 -// ************************************************************ - -#ifndef G4IMuBremsstrahlung_h -#define G4IMuBremsstrahlung_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4VIMuEnergyLoss.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Gamma.hh" -#include "G4MuonMinus.hh" -#include "G4MuonPlus.hh" -#include "G4OrderedTable.hh" -#include "G4PhysicsTable.hh" -#include "G4PhysicsLogVector.hh" - -class G4IMuBremsstrahlung : public G4VIMuEnergyLoss - -{ - public: - - G4IMuBremsstrahlung(const G4String& processName = "IMuBremsstrahlung"); - - ~G4IMuBremsstrahlung(); - - G4bool IsApplicable(const G4ParticleDefinition&); - - private: - - G4IMuBremsstrahlung & operator=(const G4IMuBremsstrahlung &right); - G4IMuBremsstrahlung(const G4IMuBremsstrahlung&); - - public: - // post Step functions ....................................... - - G4double PostStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition - ) ; - - G4VParticleChange *PostStepDoIt( - const G4Track& track, - const G4Step& Step ) ; - - - void BuildLossTable(const G4ParticleDefinition& ParticleType); - - void BuildLambdaTable(const G4ParticleDefinition& ParticleType); - - void BuildPhysicsTable(const G4ParticleDefinition& ParticleType); - - protected: - - inline G4double ComputeMeanFreePath( const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial); - - void ComputePartialSumSigma( const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial); - - virtual G4double ComputeMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - G4double AtomicNumber, - G4double GammaEnergyCut); - - private: - void BuildNlambdaTable(const G4ParticleDefinition& aParticleType) ; - void BuildNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - void BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) ; - void InvertNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - - void BuildCoeffATable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffBTable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffCTable(const G4ParticleDefinition& aParticleType) ; - - void TestOfInversion(const G4ParticleDefinition& aParticleType, - G4int printflag) ; - - G4double ComputeBremLoss(G4double Z,G4double T, - G4double Cut); - - G4Element* SelectRandomAtom(G4Material* aMaterial) const; - - private: - - G4PhysicsTable* theMeanFreePathTable ; - - G4OrderedTable PartialSumSigma; // partial sum of total crosssection - - G4PhysicsTable* theNlambdaTable; - G4PhysicsTable* theInverseNlambdaTable; - - G4PhysicsTable* theCoeffATable; - G4PhysicsTable* theCoeffBTable; - G4PhysicsTable* theCoeffCTable; - - const G4double LowestKineticEnergy; // low energy limit of the crossection formula - const G4double HighestKineticEnergy; // high energy limit of the crossection formula - G4int TotBin; // number of bins in the tables - - G4double MinKineticEnergy; //process is ignored if TGetDefinition() ; - G4double KineticEnergy = particle->GetKineticEnergy(); - G4Material* material = track.GetMaterial(); - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int materialindex = material->GetIndex(); - - nl = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergy,isOut); - range = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergy,material) ; - - if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { - // beggining of tracking (or just after DoIt of this process) - ResetNumberOfInteractionLengthLeft(); - } else { - // subtract NumberOfInteractionLengthLeft - if(previousStepSize/range < eps) - { - nll = (*theNlambdaTable)[materialindex]-> - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - nlold = nl + dEdx*previousStepSize*(nl-nll)/ - (Tfac1*KineticEnergy) ; - } - else - { - rangeold = range + previousStepSize ; - KineticEnergyOld = G4EnergyLossTables::GetPreciseEnergyFromRange( - particletype, - rangeold,material); - nlold = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergyOld,isOut); - if(nlold < nl) - { - if(verboseLevel>2) - { - G4cout << "G4IMuBremsstrahlung PostStepGPIL : Nlambda has been" << - " increased at update.Nlambda old/new :" << nlold << - " " << nl << G4endl; - G4cout << "(theNumberOfInteractionLengthLeft has been increased!)" << G4endl -; - G4cout << " correction : Nlambda old=new ........." << G4endl; - } - //corr. of num errror - nlold = nl ; - } - } - - theNumberOfInteractionLengthLeft -= nlold-nl ; - - if(theNumberOfInteractionLengthLeft - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - - value = theNumberOfInteractionLengthLeft*Tfac1*KineticEnergy/(dEdx*(nl-nll)) - ; - } - else - { - - KineticEnergyNext = (*theInverseNlambdaTable)[materialindex]-> - GetValue(nl-theNumberOfInteractionLengthLeft,isOut); - rangenext = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergyNext,material); - - value = range - rangenext ; - - if(range2) - { - G4cout << "G4IhIonisation PostStepGPIL: Step < 0.!, Step=" << value << G4endl -; - G4cout << "range,rangenext:" << range << " " << rangenext << G4endl ; - G4cout << "correction : rangenext=range ....." << G4endl; - } - //corr. of num error - rangenext = range ; - value = range - rangenext ; - } - } - } - - return value; -} - - -inline G4double G4IMuBremsstrahlung::ComputeMeanFreePath( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial) -{ - const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - - const G4double BigPath= DBL_MAX; - - G4double SIGMA = 0 ; - - for ( G4int i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) - { - SIGMA += theAtomNumDensityVector[i] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(i)->GetZ(), - GammaEnergyCut ); - } - - return SIGMA<=0.0 ? BigPath : 1./SIGMA ; -} - - -inline G4bool G4IMuBremsstrahlung::IsApplicable( - const G4ParticleDefinition& particle) -{ - return( (&particle == (const G4ParticleDefinition *)theMuonMinus) - ||(&particle == (const G4ParticleDefinition *)theMuonPlus) - ) ; -} diff --git a/source/processes/electromagnetic/integral/include/G4IMuIonisation.hh b/source/processes/electromagnetic/integral/include/G4IMuIonisation.hh deleted file mode 100644 index de6d49c1d3..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IMuIonisation.hh +++ /dev/null @@ -1,162 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMuIonisation.hh,v 1.1.2.2 2001/06/28 20:19:18 gunter Exp $ -// GEANT4 tag $Name: $ -// - -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4IMuIonisation physics process ------------ -// by Laszlo Urban, September 1997 -// ------------------------------------------------------------ -// It is the implementation of the NEW IONISATION -// PROCESS. ( delta rays + continuous energy loss) -// It calculates the ionisation for muons. -// ************************************************************ -// -// ------------------------------------------------------------ - -#ifndef G4IMuIonisation_h -#define G4IMuIonisation_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4VIMuEnergyLoss.hh" -#include "globals.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Electron.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" - - -class G4IMuIonisation : public G4VIMuEnergyLoss - -{ - public: - - G4IMuIonisation(const G4String& processName = "IMuIonisation"); - - ~G4IMuIonisation(); - - G4bool IsApplicable(const G4ParticleDefinition&); - - private: - - // hide assignment operator - G4IMuIonisation & operator=(const G4IMuIonisation &right); - G4IMuIonisation(const G4IMuIonisation&); - - public: - - // post Step functions ....................................... - - G4double PostStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition - ) ; - - G4VParticleChange *PostStepDoIt( - const G4Track& track, - const G4Step& Step ) ; - - - void BuildLossTable(const G4ParticleDefinition& aParticleType); - - void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - - - virtual G4double ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber); - - private: - void BuildNlambdaTable(const G4ParticleDefinition& aParticleType) ; - void BuildNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - void BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) ; - void InvertNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - - void BuildCoeffATable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffBTable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffCTable(const G4ParticleDefinition& aParticleType) ; - - void TestOfInversion(const G4ParticleDefinition& aParticleType, - G4int printflag) ; - - - // private data members ............................... - - G4PhysicsTable* theMeanFreePathTable; - - G4PhysicsTable* theNlambdaTable; - G4PhysicsTable* theInverseNlambdaTable; - - G4PhysicsTable* theCoeffATable; - G4PhysicsTable* theCoeffBTable; - G4PhysicsTable* theCoeffCTable; - - - // LowestKineticEnergy = lower limit of particle kinetic energy - // HighestKineticEnergy = upper limit of particle kinetic energy - // TotBin = number of bins - // ---------in the energy ionisation loss table------------------- - const G4double LowestKineticEnergy; - const G4double HighestKineticEnergy; - G4int TotBin; - - // cut in range - G4double CutInRange ; - G4double lastCutInRange ; - - // particles , cuts in kinetic energy ........ - const G4Electron* theElectron; - const G4MuonPlus* theMuonPlus; - const G4MuonMinus* theMuonMinus; - - const G4double* ParticleCutInKineticEnergy; - const G4double* DeltaCutInKineticEnergy ; - - G4double ParticleCutInKineticEnergyNow ; - G4double DeltaCutInKineticEnergyNow ; - - G4int NumberOfBuildPhysicsTableCalls ; - -}; - -#include "G4IMuIonisation.icc" - -#endif diff --git a/source/processes/electromagnetic/integral/include/G4IMuIonisation.icc b/source/processes/electromagnetic/integral/include/G4IMuIonisation.icc deleted file mode 100644 index 333565367c..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IMuIonisation.icc +++ /dev/null @@ -1,165 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMuIonisation.icc,v 1.1.2.2 2001/06/28 20:19:18 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4IMuIonisation physics process ------------- -// by Laszlo Urban, September 1997 -// --------------------------------------------------------------- -// It is the implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of muons. -// *************************************************************** -// 24/11/97: correction on MeanFreePath for KinEnergy > HighestLimit -// --------------------------------------------------------------- -inline G4double G4IMuIonisation::PostStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition - ) -{// get particle,particle type,kin.energy,material,mat.index - const G4double eps=1.e-2 ; - const G4double Tfac=0.95,Tfac1=1.-Tfac ; - G4double nl,nll,nlold,range,rangeold,rangenext, - dEdx,KineticEnergyOld,KineticEnergyNext,value; - G4bool isOut; - const G4DynamicParticle* particle = track.GetDynamicParticle(); - const G4ParticleDefinition* particletype = particle->GetDefinition() ; - G4double KineticEnergy = particle->GetKineticEnergy(); - G4Material* material = track.GetMaterial(); - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int materialindex = material->GetIndex(); - - nl = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergy,isOut); - range = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergy,material) ; - - if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { - // beggining of tracking (or just after DoIt of this process) - ResetNumberOfInteractionLengthLeft(); - } else { - // subtract NumberOfInteractionLengthLeft - if(previousStepSize/range < eps) - { - nll = (*theNlambdaTable)[materialindex]-> - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - nlold = nl + dEdx*previousStepSize*(nl-nll)/ - (Tfac1*KineticEnergy) ; - } - else - { - rangeold = range + previousStepSize ; - KineticEnergyOld = G4EnergyLossTables::GetPreciseEnergyFromRange( - particletype, - rangeold,material); - nlold = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergyOld,isOut); - if(nlold < nl) - { - if(verboseLevel>2) - { - G4cout << "G4IMuIonisation PostStepGPIL : Nlambda has been" << - " increased at update.Nlambda old/new :" << nlold << - " " << nl << G4endl; - G4cout << "(theNumberOfInteractionLengthLeft has been increased!)" << G4endl -; - G4cout << " correction : Nlambda old=new ........." << G4endl; - } - //corr. of num errror - nlold = nl ; - } - } - - theNumberOfInteractionLengthLeft -= nlold-nl ; - - if(theNumberOfInteractionLengthLeft - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - - value = theNumberOfInteractionLengthLeft*Tfac1*KineticEnergy/(dEdx*(nl-nll)) - ; - } - else - { - - KineticEnergyNext = (*theInverseNlambdaTable)[materialindex]-> - GetValue(nl-theNumberOfInteractionLengthLeft,isOut); - rangenext = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergyNext,material); - - value = range - rangenext ; - - if(range2) - { - G4cout << "G4IMuIonisation PostStepGPIL: Step < 0.!, Step=" << value << G4endl -; - G4cout << "range,rangenext:" << range << " " << rangenext << G4endl ; - G4cout << "correction : rangenext=range ....." << G4endl; - } - //corr. of num error - rangenext = range ; - value = range - rangenext ; - } - } - } - - return value; -} - -inline G4bool G4IMuIonisation::IsApplicable( - const G4ParticleDefinition& particle) -{ - return ( (&particle == (const G4ParticleDefinition *)theMuonPlus) - ||(&particle == (const G4ParticleDefinition *)theMuonMinus) - ); -} diff --git a/source/processes/electromagnetic/integral/include/G4IMuPairProduction.hh b/source/processes/electromagnetic/integral/include/G4IMuPairProduction.hh deleted file mode 100644 index d53dd21edb..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IMuPairProduction.hh +++ /dev/null @@ -1,202 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMuPairProduction.hh,v 1.1.2.2 2001/06/28 20:19:18 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4IMuPairProduction physics process --------- -// by Laszlo Urban, May 1998 -// ************************************************************ - -#ifndef G4IMuPairproduction_h -#define G4IMuPairproduction_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4VIMuEnergyLoss.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -#include "G4MuonMinus.hh" -#include "G4MuonPlus.hh" -#include "G4OrderedTable.hh" -#include "G4PhysicsTable.hh" -#include "G4PhysicsLogVector.hh" - -class G4IMuPairProduction : public G4VIMuEnergyLoss - -{ - public: - - G4IMuPairProduction(const G4String& processName = "IMuPairProduction"); - - ~G4IMuPairProduction(); - - G4bool IsApplicable(const G4ParticleDefinition&); - - private: - - G4IMuPairProduction & operator=(const G4IMuPairProduction &right); - G4IMuPairProduction(const G4IMuPairProduction&); - - public: - // post Step functions ....................................... - - G4double PostStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition - ) ; - - G4VParticleChange *PostStepDoIt( - const G4Track& track, - const G4Step& Step ) ; - - - void BuildLossTable(const G4ParticleDefinition& ParticleType); - - void BuildLambdaTable(const G4ParticleDefinition& ParticleType); - - void BuildPhysicsTable(const G4ParticleDefinition& ParticleType); - - protected: - - inline G4double ComputeMeanFreePath( const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial); - - void ComputePartialSumSigma( const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial); - - virtual G4double ComputeMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - G4double AtomicNumber, - G4double ElectronEnergyCut, - G4double PositronEnergyCut); - - G4double ComputeDDMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - G4double AtomicNumber, - G4double PairEnergy, - G4double asymmetry); - - - G4double ComputeDMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - G4double AtomicNumber, - G4double PairEnergy); - - void MakeSamplingTables( const G4ParticleDefinition* ParticleType ); - - private: - void BuildNlambdaTable(const G4ParticleDefinition& aParticleType) ; - void BuildNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - void BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) ; - void InvertNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - - void BuildCoeffATable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffBTable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffCTable(const G4ParticleDefinition& aParticleType) ; - - void TestOfInversion(const G4ParticleDefinition& aParticleType, - G4int printflag) ; - - G4double ComputePairLoss( const G4ParticleDefinition* ParticleType, - G4double Z,G4double T,G4double ElectronCut, - G4double PositronCut); - - G4Element* SelectRandomAtom(G4Material* aMaterial) const; - - private: - - G4PhysicsTable* theMeanFreePathTable ; - - static G4PhysicsTable* themuplusLambdaTable ; - static G4PhysicsTable* themuminusLambdaTable ; - - G4OrderedTable PartialSumSigma; // partial sum of total crosssection - - G4PhysicsTable* theNlambdaTable; - G4PhysicsTable* theInverseNlambdaTable; - - G4PhysicsTable* theCoeffATable; - G4PhysicsTable* theCoeffBTable; - G4PhysicsTable* theCoeffCTable; - - const G4double LowestKineticEnergy; // low energy limit of the crossection formula - const G4double HighestKineticEnergy; // high energy limit of the crossection formula - G4int TotBin; // number of bins in the tables - - G4double MinKineticEnergy; //process is ignored if TGetDefinition() ; - G4double KineticEnergy = particle->GetKineticEnergy(); - G4Material* material = track.GetMaterial(); - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int materialindex = material->GetIndex(); - - nl = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergy,isOut); - - // if ( nl == 0.) - // { - // value = BIGSTEP ; - // return value ; - // } - - range = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergy,material) ; - - if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { - // beggining of tracking (or just after DoIt of this process) - ResetNumberOfInteractionLengthLeft(); - } else { - // subtract NumberOfInteractionLengthLeft - if(previousStepSize/range < eps) - { - nll = (*theNlambdaTable)[materialindex]-> - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - nlold = nl + dEdx*previousStepSize*(nl-nll)/ - (Tfac1*KineticEnergy) ; - } - else - { - rangeold = range + previousStepSize ; - KineticEnergyOld = G4EnergyLossTables::GetPreciseEnergyFromRange( - particletype, - rangeold,material); - nlold = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergyOld,isOut); - if(nlold < nl) - { - if(verboseLevel>2) - { - G4cout << "G4IMuPairProduction PostStepGPIL : Nlambda has been" << - " increased at update.Nlambda old/new :" << nlold << - " " << nl << G4endl; - G4cout << "(theNumberOfInteractionLengthLeft has been increased!)" << G4endl -; - G4cout << " correction : Nlambda old=new ........." << G4endl; - } - //corr. of num errror - nlold = nl ; - } - } - - theNumberOfInteractionLengthLeft -= nlold-nl ; - - if(theNumberOfInteractionLengthLeft - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - - value = theNumberOfInteractionLengthLeft*Tfac1*KineticEnergy/(dEdx*(nl-nll)) - ; - } - else - { - - KineticEnergyNext = (*theInverseNlambdaTable)[materialindex]-> - GetValue(nl-theNumberOfInteractionLengthLeft,isOut); - rangenext = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergyNext,material); - - value = range - rangenext ; - - if(range2) - { - G4cout << "G4IMuPairProduction PostStepGPIL: Step < 0.!, Step=" << value << G4endl -; - G4cout << "range,rangenext:" << range << " " << rangenext << G4endl ; - G4cout << "correction : rangenext=range ....." << G4endl; - } - //corr. of num error - rangenext = range ; - value = range - rangenext ; - } - } - } - - return value; -} - - -inline G4double G4IMuPairProduction::ComputeMeanFreePath( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial) -{ - const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double ElectronEnergyCut = (G4Electron::GetCutsInEnergy())[aMaterial->GetIndex()]; - G4double PositronEnergyCut = (G4Positron::GetCutsInEnergy())[aMaterial->GetIndex()]; - - const G4double BigPath= DBL_MAX; - - G4double SIGMA = 0 ; - - for ( G4int i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) - { - SIGMA += theAtomNumDensityVector[i] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(i)->GetZ(), - ElectronEnergyCut,PositronEnergyCut ); - } - - return SIGMA<=0.0 ? BigPath : 1./SIGMA ; -} - - -inline G4bool G4IMuPairProduction::IsApplicable( - const G4ParticleDefinition& particle) -{ - return( (&particle == (const G4ParticleDefinition *)theMuonMinus) - ||(&particle == (const G4ParticleDefinition *)theMuonPlus) - ) ; -} diff --git a/source/processes/electromagnetic/integral/include/G4IMultipleScattering.hh b/source/processes/electromagnetic/integral/include/G4IMultipleScattering.hh deleted file mode 100644 index 6447df5f74..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IMultipleScattering.hh +++ /dev/null @@ -1,170 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMultipleScattering.hh,v 1.1.2.2 2001/06/28 20:19:18 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class header file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// --------- G4IMultipleScattering physics process -------- -// by Laszlo Urban, October 1997 -// ************************************************************** -// UNIVERSAL: for arbitrary single charged particle -// 09/12/98: charge can be != +- 1 !!!! L.Urban -// -------------------------------------------------------------- -// ***************************************************************** -// It is the first implementation of the multiple scattering process -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ***************************************************************** -// by Laszlo Urban, 23 June 1998 -// ----------------------------------------------------------------- -// 27/10/98: cleanup , L.Urban - -#ifndef G4IMultipleScattering_h -#define G4IMultipleScattering_h 1 - -#include "G4ios.hh" -#include "g4std/fstream" -#include "g4std/iomanip" - -#include "globals.hh" -#include "Randomize.hh" -#include "G4EnergyLossTables.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -#include "G4MuonPlus.hh" -#include "G4Proton.hh" -#include "G4PhysicsLogVector.hh" -#include "G4GPILSelection.hh" -#include "G4VContinuousDiscreteProcess.hh" -#include "G4Step.hh" -#include "G4Track.hh" -#include "G4MaterialTable.hh" -#include "G4ElementTable.hh" -#include "G4ElementVector.hh" -#include "G4VParticleChange.hh" - -class G4IMultipleScattering : public G4VContinuousDiscreteProcess - -{ - public: - - G4IMultipleScattering(const G4String& processName="Imsc") ; - - ~G4IMultipleScattering() ; - - G4bool IsApplicable ( const G4ParticleDefinition& ) ; - - void SetPhysicsTableBining(G4double lowE,G4double highE,G4int nBins); - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType) ; - - void BuildIntegralITable(const G4ParticleDefinition& aParticleType) ; - void BuildIntegralJTable(const G4ParticleDefinition& aParticleType) ; - - G4double GetIntegralI(const G4ParticleDefinition *aParticle, - G4double KineticEnergy,G4Material* aMaterial) ; - G4double GetIntegralJ(const G4ParticleDefinition *aParticle, - G4double KineticEnergy,G4Material* aMaterial) ; - - void PrintInfoDefinition(); - - G4double GetContinuousStepLimit(const G4Track& aTrack, - G4double previousStepSize, - G4double currentMinimumStep, - G4double& currentSafety) ; - - G4double GetMeanFreePath(const G4Track& aTrack, - G4double previousStepSize, - G4ForceCondition* condition) ; - - G4VParticleChange* AlongStepDoIt(const G4Track& aTrack,const G4Step& aStep) ; - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack,const G4Step& aStep) ; - - protected: - - G4double ComputeTransportCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber) ; - - G4double TrueToGeomTransformation(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double truePathLength) ; - - - private: - - // hide assignment operator as private - G4IMultipleScattering & operator = (const G4IMultipleScattering &right) ; - G4IMultipleScattering ( const G4IMultipleScattering &) ; - - - private: - - // data members ................................................... - G4PhysicsTable* theTransportMeanFreePathTable; - G4PhysicsTable* theIntegralITable ; - G4PhysicsTable* theIntegralJTable ; - - G4double fTransportMeanFreePath ; - - G4double fMeanLateralDisplacement ; - - G4double LowestKineticEnergy ; - G4double HighestKineticEnergy ; - G4int TotBin ; - - const G4Electron* theElectron ; - const G4Positron* thePositron ; - - G4Material* lastMaterial; - G4double lastKineticEnergy; - - // GeomStepFinal is the geom.steplength at the end of the AlongStep loop - // the others are some 'cache' variables - G4double GeomStepFinal ; - G4double tLast,zLast,CosTheta ; - - G4double biglambda ; - - //parameters for low energy extrapolation of dE/dx and lambda - const G4double plowloss,plowlambda ; - - G4int NumberOfBuildPhysicsTableCalls ; - - G4double tuning ; -}; - -#include "G4IMultipleScattering.icc" - -#endif - - - diff --git a/source/processes/electromagnetic/integral/include/G4IMultipleScattering.icc b/source/processes/electromagnetic/integral/include/G4IMultipleScattering.icc deleted file mode 100644 index bc82e6fca3..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IMultipleScattering.icc +++ /dev/null @@ -1,282 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMultipleScattering.icc,v 1.1.2.2 2001/06/28 20:19:18 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// ------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ------- G4IMultipleScattering physics process ------ -// by Laszlo Urban, October 1997 -// ************************************************************** -// 25/11/97: mods for KinEnergy > HighestLimit -//--------------------------------------------------------------- -// ***************************************************************** -// It is the first implementation of the multiple scattering process -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ***************************************************************** -// by Laszlo Urban, 23 June 1998 -// ----------------------------------------------------------------- -// 27/10/98: cleanup , L.Urban - -inline G4double G4IMultipleScattering::TrueToGeomTransformation( - const G4DynamicParticle *aParticle, - G4Material *aMaterial, - G4double truePathLength) - - // it sets the data member fTransportMeanFreePath and - // performs the true path length -> geometrical path length - // transformation - -{ - const G4double factt=1.-1.e-6,tausmall=5.e-5,taubig=50., - minim=1.e-6,smalldroverr=1.e-2,smalldToverT=2.e-2 ; - - G4double KineticEnergy,Tfinal,tau,etau,geomPathLength,range,w1,w2,ww1,ww2 ; - G4int materialIndex ; - G4bool isOut ; - - KineticEnergy = aParticle->GetKineticEnergy() ; - - if((lastMaterial == aMaterial) && (lastKineticEnergy == KineticEnergy)) - { ; } - else - { - lastMaterial=aMaterial; - lastKineticEnergy=KineticEnergy; - materialIndex = aMaterial->GetIndex() ; - - if(KineticEnergyGetValue(LowestKineticEnergy,isOut); - } - else - { - if(KineticEnergy>HighestKineticEnergy) - KineticEnergy=HighestKineticEnergy; - fTransportMeanFreePath = (*theTransportMeanFreePathTable) - (materialIndex)->GetValue(KineticEnergy,isOut); - } - } - - // do the true -> geom transformation - if( fTransportMeanFreePath > biglambda ) - { - geomPathLength = truePathLength ; - CosTheta = 1. ; - } - else - { - const G4ParticleDefinition *theParticle = aParticle->GetDefinition() ; - G4double range = G4EnergyLossTables::GetPreciseRangeFromEnergy( - theParticle,KineticEnergy,aMaterial) ; - if(truePathLength > factt*range) - { - geomPathLength = GetIntegralJ(theParticle, - KineticEnergy,aMaterial) ; - CosTheta = 0. ; - } - else - { - if(truePathLength/range < smalldroverr) - { - Tfinal = KineticEnergy - truePathLength* - G4EnergyLossTables::GetPreciseDEDX( - theParticle,KineticEnergy,aMaterial) ; - } - else - { - Tfinal = G4EnergyLossTables::GetPreciseEnergyFromRange( - theParticle,range-truePathLength, - aMaterial) ; - } - - if((KineticEnergy-Tfinal)> smalldToverT) - { - w1 = GetIntegralI(theParticle,KineticEnergy,aMaterial) ; - w2 = GetIntegralI(theParticle,Tfinal ,aMaterial) ; - CosTheta = exp(w2-w1) ; - if( CosTheta < minim) - CosTheta = 0. ; - - ww1 = GetIntegralJ(theParticle,KineticEnergy,aMaterial) ; - ww2 = GetIntegralJ(theParticle,Tfinal ,aMaterial) ; - - geomPathLength = ww1 - ww2*CosTheta ; - } - else - { - tau = truePathLength/fTransportMeanFreePath ; - - if(tautaubig) - etau = 1. ; - else - etau = 1.-exp(-tau) ; - } - - geomPathLength = fTransportMeanFreePath*etau ; - - CosTheta = exp(-truePathLength/fTransportMeanFreePath) ; - } - } - } - if(geomPathLength>truePathLength) - geomPathLength = truePathLength ; - - tLast = truePathLength ; - zLast = geomPathLength ; - - return geomPathLength ; -} - -inline G4double G4IMultipleScattering::GetContinuousStepLimit( - const G4Track& track, - G4double, - G4double currentMinimumStep, - G4double&) -{ - G4double zPathLength,tPathLength ; - const G4DynamicParticle* aParticle ; - // this process is not a candidate for selection!!!!!!!!! - SetGPILSelection(NotCandidateForSelection) ; - - tPathLength = currentMinimumStep ; - aParticle = track.GetDynamicParticle() ; - - zPathLength = TrueToGeomTransformation(aParticle, - track.GetMaterial(),tPathLength); - return zPathLength ; - } - -inline G4double G4IMultipleScattering::GetMeanFreePath(const G4Track&, - G4double, - G4ForceCondition* condition) - // it does not limit the Step size , but it sets condition to - // Forced , because the PostStepDoIt always has to be called -{ - *condition = Forced ; - - return DBL_MAX ; -} - -inline G4VParticleChange* G4IMultipleScattering::AlongStepDoIt( - const G4Track& track,const G4Step& Step) - // only a geom path->true path transformation is performed -{ - const G4double Tlowlimit=100.*keV ; - const G4double fact = 1.-1.e-10 ; - //!! const G4double tausmall=5.e-5,taubig=0.9999,trueBig=5. ; - const G4double tausmall=5.e-5,taubig=0.9999,trueBig=9.21034 ; - G4double tau ,geomPathLength, truePathLength ; - - aParticleChange.Initialize(track); - - geomPathLength = track.GetStepLength() ; - - //Store this value for later use in PostStepDoIt - GeomStepFinal = geomPathLength ; - - if(geomPathLength == zLast) - { - truePathLength = tLast ; - } - else - { - if( fTransportMeanFreePath > biglambda ) - { - truePathLength = track.GetStepLength() ; - CosTheta = 1. ; - } - else - { - G4double T = track.GetDynamicParticle()->GetKineticEnergy() ; - if(T < Tlowlimit) - { // spec. low energy msc code - G4double range = G4EnergyLossTables::GetPreciseRangeFromEnergy( - track.GetDynamicParticle()->GetDefinition(), - T,track.GetMaterial()) ; - G4double alfa = 1.+range/fTransportMeanFreePath ; - G4double z = geomPathLength ; - //protection: z can not be greater than zmax !!!!!!! - G4double zmax = fact*range/alfa ; - if(z > zmax) - z = zmax ; - - if(z == zmax) - { - truePathLength = range ; - CosTheta = 0. ; - } - else - { - truePathLength = range* - (1.-exp(log(1.-alfa*z/range)/alfa)) ; - CosTheta = (1.-alfa*z/range)/(1.-truePathLength/range) ; - } - } - else - { - tau = geomPathLength/fTransportMeanFreePath ; - - if(tauGetDefinition() ; - G4double KineticEnergy = particle->GetKineticEnergy(); - G4Material* material = track.GetMaterial(); - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int materialindex = material->GetIndex(); - - nl = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergy,isOut); - range = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergy,material) ; - - - if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { - ResetNumberOfInteractionLengthLeft(); - } else { - if(previousStepSize/range < eps) - { - nll = (*theNlambdaTable)[materialindex]-> - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - nlold = nl + dEdx*previousStepSize*(nl-nll)/ - (Tfac1*KineticEnergy) ; - } - else - { - rangeold = range + previousStepSize ; - KineticEnergyOld = G4EnergyLossTables::GetPreciseEnergyFromRange( - particletype, - rangeold,material); - nlold = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergyOld,isOut); - - if(nlold < nl) - { - if(verboseLevel>2) - { - G4cout << "G4IeBremsstrahlung PostStepGPIL : Nlambda has been" << - " increased at update.Nlambda old/new :" << nlold << - " " << nl << G4endl; - G4cout << "(theNumberOfInteractionLengthLeft has been increased!)" - << G4endl; - G4cout << " correction : Nlambda old=new ........." << G4endl; - } - nlold = nl ; - } - } - - theNumberOfInteractionLengthLeft -= nlold-nl ; - - if(theNumberOfInteractionLengthLeft - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - - value = theNumberOfInteractionLengthLeft*Tfac1 - *KineticEnergy/(dEdx*(nl-nll)) ; - } - else - { - KineticEnergyNext = (*theInverseNlambdaTable)[materialindex]-> - GetValue(nl-theNumberOfInteractionLengthLeft,isOut); - rangenext = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergyNext,material); - value = range - rangenext ; - - if(range2) - { - G4cout << "G4IeBremsstrahlung PostStepGPIL: Step < 0.!, Step=" << - value << G4endl; - G4cout << "range,rangenext:" << range << " " << rangenext << G4endl ; - G4cout << "correction : rangenext=range ....." << G4endl; - } - rangenext = range ; - value = range - rangenext ; - } - } - } - return value; -} - -inline G4double G4IeBremsstrahlung::ScreenFunction1(G4double ScreenVariable) -// compute the value of the screening function 3*PHI1 - PHI2 -{ - G4double screenVal; - - if (ScreenVariable > 1.) - screenVal = 42.24 - 8.368*log(ScreenVariable+0.952); - else - screenVal = 42.392 - ScreenVariable* (7.796 - 1.961*ScreenVariable); - - return screenVal; -} - -inline G4double G4IeBremsstrahlung::ScreenFunction2(G4double ScreenVariable) - -// compute the value of the screening function 1.5*PHI1 - 0.5*PHI2 -{ - G4double screenVal; - - if (ScreenVariable > 1.) - screenVal = 42.24 - 8.368*log(ScreenVariable+0.952); - else - screenVal = 41.734 - ScreenVariable* (6.484 - 1.250*ScreenVariable); - - return screenVal; -} - -inline G4double G4IeBremsstrahlung::ComputeMeanFreePath( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial) -{ - const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; - const G4double* theAtomNumDensityVector = - aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - - G4double SIGMA = 0 ; - - for ( G4int i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) - { - SIGMA += theAtomNumDensityVector[i] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(i)->GetZ(), - GammaEnergyCut ); - } - return SIGMA<=0.0 ? DBL_MAX : 1./SIGMA ; -} - -inline G4bool G4IeBremsstrahlung::IsApplicable( - const G4ParticleDefinition& particle) -{ - return( (&particle == (const G4ParticleDefinition *)theElectron) - ||(&particle == (const G4ParticleDefinition *)thePositron) - ) ; -} - -inline G4double G4IeBremsstrahlung::GetNlambda( - G4double KineticEnergy, - G4Material* material) -{ - G4bool isOut; - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - G4double lambda = (*theNlambdaTable) - [material->GetIndex()]-> - GetValue(KineticEnergy,isOut); - return lambda; -} - - diff --git a/source/processes/electromagnetic/integral/include/G4IeIonisation.hh b/source/processes/electromagnetic/integral/include/G4IeIonisation.hh deleted file mode 100644 index 35ea30ced5..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IeIonisation.hh +++ /dev/null @@ -1,158 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IeIonisation.hh,v 1.1.2.2 2001/06/28 20:19:18 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4IeIonisation physics process ----------- -// by Laszlo Urban, 23 June 1998 -// ************************************************************ -// It is the first implementation of the IONISATION -// PROCESS. ( delta rays + continuous energy loss) -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ************************************************************ -// 27/10/98 : minor changes+cleanup , L.Urban -// ------------------------------------------------------------ - -#ifndef G4IeIonisation_h -#define G4IeIonisation_h 1 - -#include "G4ios.hh" -#include "g4std/iomanip" -#include "globals.hh" -#include "Randomize.hh" -#include "G4VIeEnergyLoss.hh" -#include "G4EnergyLossTables.hh" -#include "globals.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -#include "G4Gamma.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" - -class G4IeIonisation : public G4VIeEnergyLoss -{ - public: - - G4IeIonisation(const G4String& processName = "IeIoni"); - - ~G4IeIonisation(); - - G4bool IsApplicable(const G4ParticleDefinition&); - - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - - void BuildLossTable(const G4ParticleDefinition& aParticleType); - - void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - - void PrintInfoDefinition(); - - G4double PostStepGetPhysicalInteractionLength( const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition); - - G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& Step ) ; - - G4double GetNlambda( - G4double KineticEnergy,G4Material* material); - - protected: - - virtual G4double ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber); - - private: - - // hide assignment operator - G4IeIonisation & operator=(const G4IeIonisation &right); - G4IeIonisation(const G4IeIonisation&); - - void BuildNlambdaTable(const G4ParticleDefinition& aParticleType) ; - void BuildNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - void BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) ; - void InvertNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - - void BuildCoeffATable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffBTable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffCTable(const G4ParticleDefinition& aParticleType) ; - - void TestOfInversion(const G4ParticleDefinition& aParticleType, - G4int printflag) ; - - private: - // private data members ............................... - - G4PhysicsTable* theMeanFreePathTable; - - G4PhysicsTable* theNlambdaTable; - G4PhysicsTable* theInverseNlambdaTable; - - G4PhysicsTable* theCoeffATable; - G4PhysicsTable* theCoeffBTable; - G4PhysicsTable* theCoeffCTable; - - G4double LowestKineticEnergy; - G4double HighestKineticEnergy; - G4int TotBin; - G4double RTable ; - - // cut in range - G4double CutInRange ; - - // particles , cuts in kinetic energy ........ - const G4Electron* theElectron; - const G4Positron* thePositron; - - const G4double* ParticleCutInKineticEnergy; - const G4double* DeltaCutInKineticEnergy ; - - G4double ParticleCutInKineticEnergyNow ; - G4double DeltaKineticEnergyCutNow ; - - G4int NumberOfBuildPhysicsTableCalls ; -}; - -#include "G4IeIonisation.icc" - -#endif - diff --git a/source/processes/electromagnetic/integral/include/G4IeIonisation.icc b/source/processes/electromagnetic/integral/include/G4IeIonisation.icc deleted file mode 100644 index c8bb815b7f..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IeIonisation.icc +++ /dev/null @@ -1,177 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IeIonisation.icc,v 1.1.2.2 2001/06/28 20:19:19 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4IeIonisation physics process ------------ -// by Laszlo Urban, 23 June 1998 -// ************************************************************ -// It is the first implementation of the IONISATION -// PROCESS. ( delta rays + continuous energy loss) -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ************************************************************ -// 27/10/98: minor changes , cleanup , L.Urban -// ------------------------------------------------------------ - -inline G4double G4IeIonisation::PostStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition) -{ - const G4double eps=1.e-2,Tfac=0.95,Tfac1=1.-Tfac ; - - G4double nl,nll,nlold,range,rangeold,rangenext, - dEdx,KineticEnergyOld,KineticEnergyNext,value; - G4bool isOut; - - const G4DynamicParticle* particle = track.GetDynamicParticle(); - const G4ParticleDefinition* particletype = particle->GetDefinition() ; - G4double KineticEnergy = particle->GetKineticEnergy(); - G4Material* material = track.GetMaterial(); - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int materialindex = material->GetIndex(); - - nl = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergy,isOut); - range = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergy,material) ; - - if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { - // beggining of tracking (or just after DoIt of this process) - ResetNumberOfInteractionLengthLeft(); - } else { - if(previousStepSize/range < eps) - { - nll = (*theNlambdaTable)[materialindex]-> - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - nlold = nl + dEdx*previousStepSize*(nl-nll)/ - (Tfac1*KineticEnergy) ; - } - else - { - rangeold = range + previousStepSize ; - KineticEnergyOld = G4EnergyLossTables::GetPreciseEnergyFromRange( - particletype, - rangeold,material); - nlold = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergyOld,isOut); - - if(nlold < nl) - { - if(verboseLevel>2) - { - G4cout << "G4IeIonisation PostStepGPIL : Nlambda has been" << - " increased at update.Nlambda old/new :" << nlold << - " " << nl << G4endl; - G4cout << "(theNumberOfInteractionLengthLeft has been increased!)" - << G4endl; - G4cout << " correction : Nlambda old=new ........." << G4endl; - } - nlold = nl ; - } - } - - theNumberOfInteractionLengthLeft -= nlold-nl ; - - if(theNumberOfInteractionLengthLeft - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - - value = theNumberOfInteractionLengthLeft*Tfac1* - KineticEnergy/(dEdx*(nl-nll)) ; - } - else - { - - KineticEnergyNext = (*theInverseNlambdaTable)[materialindex]-> - GetValue(nl-theNumberOfInteractionLengthLeft,isOut); - rangenext = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergyNext,material); - value = range - rangenext ; - if(range2) - { - G4cout << "G4IeIonisation PostStepGPIL: Step < 0.!, Step=" - << value << G4endl; - G4cout << "range,rangenext:" << range << " " << rangenext << G4endl ; - G4cout << "correction : rangenext=range ....." << G4endl; - } - rangenext = range ; - value = range - rangenext ; - } - } - } - return value; -} - -inline G4bool G4IeIonisation::IsApplicable( - const G4ParticleDefinition& particle) -{ - return( (&particle == (const G4ParticleDefinition *)theElectron) - ||(&particle == (const G4ParticleDefinition *)thePositron) - ) ; -} - -inline G4double G4IeIonisation::GetNlambda( - G4double KineticEnergy, - G4Material* material) -{ - G4bool isOut; - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - G4double lambda = (*theNlambdaTable) - [material->GetIndex()]-> - GetValue(KineticEnergy,isOut); - return lambda; -} - - diff --git a/source/processes/electromagnetic/integral/include/G4IeplusAnnihilation.hh b/source/processes/electromagnetic/integral/include/G4IeplusAnnihilation.hh deleted file mode 100644 index 29b73f8bdd..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IeplusAnnihilation.hh +++ /dev/null @@ -1,158 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IeplusAnnihilation.hh,v 1.1.2.2 2001/06/28 20:19:19 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4IeplusAnnihilation process ------ -// by Michel Maire, 7 july 1996 -// ************************************************************ -// ************************************************************ -// It is the first implementation of the -// eplusANNIHILATION PROCESS -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ************************************************************ -// by Laszlo Urban, 23 June 1998 -// ---------------------------------------------------------- -// 28/10/98: cleanup L. Urban - - -#ifndef G4IeplusAnnihilation_h -#define G4IeplusAnnihilation_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4IVRestDiscreteProcess.hh" -#include "G4EnergyLossTables.hh" -#include "G4PhysicsTable.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" -#include "G4ElementTable.hh" -#include "G4Gamma.hh" -#include "G4Positron.hh" -#include "G4Step.hh" - -class G4IeplusAnnihilation : public G4IVRestDiscreteProcess - -{ - public: - - G4IeplusAnnihilation(const G4String& processName ="Iannihil"); - - ~G4IeplusAnnihilation(); - - G4bool IsApplicable(const G4ParticleDefinition&); - - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - - void PrintInfoDefinition(); - - void BuildPhysicsTable(const G4ParticleDefinition& PositronType); - - G4double PostStepGetPhysicalInteractionLength(const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition) ; - - G4double GetMicroscopicCrossSection(G4DynamicParticle* aDynamicPositron, - G4Element* anElement); - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, - const G4Step& aStep); - - G4double GetMeanLifeTime(const G4Track& aTrack, - G4ForceCondition* condition); - - G4VParticleChange* AtRestDoIt(const G4Track& aTrack, - const G4Step& aStep); - - protected: - - virtual G4double ComputeMicroscopicCrossSection(G4double PositKinEnergy, - G4double AtomicNumber); - - virtual G4double ComputeMeanFreePath(G4double PositKinEnergy, - G4Material* aMaterial); - - - private: - - // hide assignment operator as private - G4IeplusAnnihilation& operator=(const G4IeplusAnnihilation &right); - G4IeplusAnnihilation(const G4IeplusAnnihilation& ); - - void BuildNlambdaTable(const G4ParticleDefinition& aParticleType) ; - void BuildNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - void BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) ; - void InvertNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - - void BuildCoeffATable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffBTable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffCTable(const G4ParticleDefinition& aParticleType) ; - - void TestOfInversion(const G4ParticleDefinition& aParticleType, - G4int printflag) ; - - private: - - G4PhysicsTable* theCrossSectionTable; // table for crossection - - G4PhysicsTable* theMeanFreePathTable ; - - G4PhysicsTable* theNlambdaTable; - G4PhysicsTable* theInverseNlambdaTable; - - G4PhysicsTable* theCoeffATable; - G4PhysicsTable* theCoeffBTable; - G4PhysicsTable* theCoeffCTable; - - G4double LowestEnergyLimit ; // low energy limit of the crossection formula - G4double HighestEnergyLimit ; // high energy limit of the crossection formula - G4int NumbBinTable ; // number of bins in the crossection table - G4int NumberOfBuildPhysicsTableCalls ; - - G4double LowestKineticEnergy ; - G4double HighestKineticEnergy; - G4int TotBin ; - - G4double RTable ; - -}; - -#include "G4IeplusAnnihilation.icc" - -#endif - diff --git a/source/processes/electromagnetic/integral/include/G4IeplusAnnihilation.icc b/source/processes/electromagnetic/integral/include/G4IeplusAnnihilation.icc deleted file mode 100644 index 5a7f6dce9b..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IeplusAnnihilation.icc +++ /dev/null @@ -1,211 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IeplusAnnihilation.icc,v 1.1.2.2 2001/06/28 20:19:19 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4IeplusAnnihilation process --------- -// by Michel Maire, 7 July 1996 -// *************************************************************** -// ************************************************************ -// It is the first implementation of the -// eplusANNIHILATION PROCESS -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ************************************************************ -// by Laszlo Urban, 23 June 1998 -// --------------------------------------------------------- -// 28/10/98: some cleanup , L.Urban - -inline G4bool G4IeplusAnnihilation::IsApplicable(const G4ParticleDefinition& particle) -{ - return ( &particle == G4Positron::Positron() ); -} -inline G4double G4IeplusAnnihilation::GetMicroscopicCrossSection( - G4DynamicParticle* aDynamicPositron, - G4Element* anElement) - -// gives the microscopic total cross section in GEANT4 internal units - -{ - G4double crossSection; - G4double PositronEnergy = aDynamicPositron->GetKineticEnergy(); - G4bool isOutRange ; - - if (PositronEnergy > HighestEnergyLimit) - crossSection = 0. ; - else { - if (PositronEnergy < LowestEnergyLimit) PositronEnergy = 1.01*LowestEnergyLimit; - crossSection = (*theCrossSectionTable)(anElement->GetIndex())-> - GetValue( PositronEnergy, isOutRange ); - } - - return crossSection; -} - - -inline G4double G4IeplusAnnihilation::PostStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition - ) -{// get particle,particle type,kin.energy,material,mat.index - const G4double Tfac=0.95,Tfac1=1.-Tfac,eps=1.e-2 ; - G4double nl,nll,nlold,range,rangeold,rangenext, - dEdx,KineticEnergyOld,KineticEnergyNext,value; - G4bool isOut; - const G4DynamicParticle* particle = track.GetDynamicParticle(); - const G4ParticleDefinition* particletype = particle->GetDefinition() ; - G4double KineticEnergy = particle->GetKineticEnergy(); - G4Material* material = track.GetMaterial(); - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int materialindex = material->GetIndex(); - - nl = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergy,isOut); - range = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergy,material) ; - - if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { - ResetNumberOfInteractionLengthLeft(); - } else { - if(previousStepSize/range < eps) - { - nll = (*theNlambdaTable)[materialindex]-> - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - nlold = nl + dEdx*previousStepSize*(nl-nll)/ - (Tfac1*KineticEnergy) ; - } - else - { - rangeold = range + previousStepSize ; - KineticEnergyOld = G4EnergyLossTables::GetPreciseEnergyFromRange( - particletype, - rangeold,material); - nlold = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergyOld,isOut); - - if(nlold < nl) - { - if(verboseLevel>2) - { - G4cout << "G4IeplusAnnihilation PostStepGPIL : Nlambda has been" << - " increased at update.Nlambda old/new :" << nlold << - " " << nl << G4endl; - G4cout << "(theNumberOfInteractionLengthLeft has been increased!)" << G4endl; - G4cout << " correction : Nlambda old=new ........." << G4endl; - } - nlold = nl ; - } - } - - theNumberOfInteractionLengthLeft -= nlold-nl ; - - if(theNumberOfInteractionLengthLeft - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - - value = theNumberOfInteractionLengthLeft*Tfac1*KineticEnergy/(dEdx*(nl-nll)) ; - } - else - { - - KineticEnergyNext = (*theInverseNlambdaTable)[materialindex]-> - GetValue(nl-theNumberOfInteractionLengthLeft,isOut); - rangenext = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergyNext,material); - - value = range - rangenext ; - - if(range2) - { - G4cout << "G4IeplusAnnihilation PostStepGPIL: Step < 0.!, Step=" << - value << G4endl; - G4cout << "range,rangenext:" << range << " " << rangenext << G4endl ; - G4cout << "correction : rangenext=range ....." << G4endl; - } - rangenext = range ; - value = range - rangenext ; - } - } - } - return value; -} - -inline G4double G4IeplusAnnihilation::ComputeMeanFreePath(G4double PositKinEnergy, - G4Material* aMaterial) - -// returns the positron mean free path in GEANT4 internal units - -{ - const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - - G4double SIGMA = 0 ; - - for ( G4int i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) - { - SIGMA += theAtomNumDensityVector[i] * - ComputeMicroscopicCrossSection( PositKinEnergy, - (*theElementVector)(i)->GetZ() ); - } - - return SIGMA<=0.0 ? DBL_MAX : 1./SIGMA ; -} - -inline G4double G4IeplusAnnihilation::GetMeanLifeTime(const G4Track&, - G4ForceCondition*) -// returns the annihilation mean life time in GEANT4 internal units - -{ - return 0.0; -} diff --git a/source/processes/electromagnetic/integral/include/G4IhIonisation.hh b/source/processes/electromagnetic/integral/include/G4IhIonisation.hh deleted file mode 100644 index e4890dbc4f..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IhIonisation.hh +++ /dev/null @@ -1,158 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IhIonisation.hh,v 1.1.2.2 2001/06/28 20:19:19 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4IhIonisation physics process ----------- -// by Laszlo Urban, 30 May 1997 -// ************************************************************ -// It is the first implementation of the NEW IONISATION -// PROCESS. ( delta rays + continuous energy loss) -// It calculates the ionisation for charged hadrons. -// ************************************************************ -// corrected by L.Urban on 24/09/97 -// corrected by L.Urban on 13/01/98 -// 28/10/98: some cleanup , L.Urban -// ------------------------------------------------------------ - -#ifndef G4IhIonisation_h -#define G4IhIonisation_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4VIhEnergyLoss.hh" -#include "G4EnergyLossTables.hh" -#include "globals.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Electron.hh" -#include "G4Proton.hh" -#include "G4AntiProton.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" - - -class G4IhIonisation : public G4VIhEnergyLoss - -{ - public: - - G4IhIonisation(const G4String& processName = "IhIoni"); - - ~G4IhIonisation(); - - G4bool IsApplicable(const G4ParticleDefinition&); - - void SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins); - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - - void BuildLossTable(const G4ParticleDefinition& aParticleType); - - void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - - void PrintInfoDefinition(); - - G4double PostStepGetPhysicalInteractionLength(const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition); - - G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& Step ) ; - - - protected: - - virtual G4double ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber); - - private: - - // hide assignment operator - G4IhIonisation & operator=(const G4IhIonisation &right); - G4IhIonisation(const G4IhIonisation&); - - void BuildNlambdaTable(const G4ParticleDefinition& aParticleType) ; - void BuildNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - void BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) ; - void InvertNlambdaVector(const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) ; - - void BuildCoeffATable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffBTable(const G4ParticleDefinition& aParticleType) ; - void BuildCoeffCTable(const G4ParticleDefinition& aParticleType) ; - - void TestOfInversion(const G4ParticleDefinition& aParticleType, - G4int printflag) ; - - private: - // private data members ............................... - - G4PhysicsTable* theMeanFreePathTable; - - G4PhysicsTable* theNlambdaTable; - G4PhysicsTable* theInverseNlambdaTable; - - G4PhysicsTable* theCoeffATable; - G4PhysicsTable* theCoeffBTable; - G4PhysicsTable* theCoeffCTable; - - const G4Electron* theElectron; - const G4Proton* theProton; - const G4AntiProton* theAntiProton; - - const G4double* ParticleCutInKineticEnergy; - const G4double* DeltaCutInKineticEnergy ; - - G4double ParticleCutInKineticEnergyNow ; - G4double DeltaCutInKineticEnergyNow ; - - G4int NumberOfBuildPhysicsTableCalls ; - -}; - -#include "G4IhIonisation.icc" - -#endif - - - - - - - - diff --git a/source/processes/electromagnetic/integral/include/G4IhIonisation.icc b/source/processes/electromagnetic/integral/include/G4IhIonisation.icc deleted file mode 100644 index 46a93e51ef..0000000000 --- a/source/processes/electromagnetic/integral/include/G4IhIonisation.icc +++ /dev/null @@ -1,159 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IhIonisation.icc,v 1.1.2.2 2001/06/28 20:19:19 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4IhIonisation physics process ------------ -// by Laszlo Urban, 30 May 1997 -// *************************************************************** -// It is the first implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of charged hadrons. -// *************************************************************** -// 24/09/97: corrected by L.Urban -// 20/11/97: correction on MeanFreePath for KineticEnergy > HighestLimit -// 29/10/98: some cleanup + small changes , L.Urban -// --------------------------------------------------------------- - -inline G4double G4IhIonisation::PostStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition) -{// get particle,particle type,kin.energy,material,mat.index - const G4double Tfac=0.95,Tfac1=1.-Tfac,eps=1.e-2 ; - - G4double nl,nll,nlold,range,rangeold,rangenext, - dEdx,KineticEnergyOld,KineticEnergyNext,value; - G4bool isOut; - - const G4DynamicParticle* particle = track.GetDynamicParticle(); - const G4ParticleDefinition* particletype = particle->GetDefinition() ; - G4double KineticEnergy = particle->GetKineticEnergy(); - G4Material* material = track.GetMaterial(); - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - G4int materialindex = material->GetIndex(); - - nl = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergy,isOut); - range = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergy,material) ; - - if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { - ResetNumberOfInteractionLengthLeft(); - } else { - if(previousStepSize/range < eps) - { - nll = (*theNlambdaTable)[materialindex]-> - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - nlold = nl + dEdx*previousStepSize*(nl-nll)/ - (Tfac1*KineticEnergy) ; - } - else - { - rangeold = range + previousStepSize ; - KineticEnergyOld = G4EnergyLossTables::GetPreciseEnergyFromRange( - particletype, - rangeold,material); - nlold = (*theNlambdaTable)[materialindex]-> - GetValue(KineticEnergyOld,isOut); - if(nlold < nl) - { - if(verboseLevel>2) - { - G4cout << "G4IhIonisation PostStepGPIL : Nlambda has been" << - " increased at update.Nlambda old/new :" << nlold << - " " << nl << G4endl; - G4cout << "(theNumberOfInteractionLengthLeft has been increased!)" - << G4endl; - G4cout << " correction : Nlambda old=new ........." << G4endl; - } - nlold = nl ; - } - } - - theNumberOfInteractionLengthLeft -= nlold-nl ; - - if(theNumberOfInteractionLengthLeft - GetValue(Tfac*KineticEnergy,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(particletype, - KineticEnergy, - material) ; - - value = theNumberOfInteractionLengthLeft*Tfac1*KineticEnergy/ - (dEdx*(nl-nll)); - } - else - { - KineticEnergyNext = (*theInverseNlambdaTable)[materialindex]-> - GetValue(nl-theNumberOfInteractionLengthLeft,isOut); - rangenext = G4EnergyLossTables::GetPreciseRangeFromEnergy(particletype, - KineticEnergyNext,material); - - value = range - rangenext ; - - if(range2) - { - G4cout << "G4IhIonisation PostStepGPIL: Step < 0.!, Step=" - << value << G4endl; - G4cout << "range,rangenext:" << range << " " << rangenext << G4endl ; - G4cout << "correction : rangenext=range ....." << G4endl; - } - rangenext = range ; - value = range - rangenext ; - } - } - } - return value; -} - -inline G4bool G4IhIonisation::IsApplicable( - const G4ParticleDefinition& particle) -{ - return(particle.GetPDGCharge() != 0.); -} - diff --git a/source/processes/electromagnetic/integral/include/G4VIMuEnergyLoss.hh b/source/processes/electromagnetic/integral/include/G4VIMuEnergyLoss.hh deleted file mode 100644 index f04a416e12..0000000000 --- a/source/processes/electromagnetic/integral/include/G4VIMuEnergyLoss.hh +++ /dev/null @@ -1,294 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VIMuEnergyLoss.hh,v 1.1.2.2 2001/06/28 20:19:19 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// ------------------------------------------------------------------- -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4VIMuEnergyLoss physics process ----------- -// by Laszlo Urban, September 1997 -// ******************************************************************** -// It is the implementation of the NEW UNIFIED ENERGY LOSS PROCESS. -// It calculates the continuous energy loss for muons. -// Processes giving contribution to the continuous loss : -// ionisation (= cont.ion.loss + delta ray production) -// bremsstrahlung -// e+e- pair production -// can be added more easily .......... -// This class creates static muplus/muminus dE/dx and range tables , -// which tables can be used by other processes. -// ************************************************************ -// some corrections by L.Urban on 27/05/98 , (but other corrections come soon!) -// ------------------------------------------------------------ - -#ifndef G4VIMuEnergyLoss_h -#define G4VIMuEnergyLoss_h 1 - -#include "G4ios.hh" -#include "g4std/fstream" -#include "g4std/iomanip" -#include "globals.hh" -#include "Randomize.hh" -#include "G4IVContinuousDiscreteProcess.hh" -#include "G4Material.hh" -#include "G4Element.hh" -#include "G4EnergyLossTables.hh" -#include "G4VParticleChange.hh" -#include "globals.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -#include "G4MuonMinus.hh" -#include "G4MuonPlus.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" - - -class G4VIMuEnergyLoss : public G4IVContinuousDiscreteProcess - -{ - public: - G4VIMuEnergyLoss(const G4String& ); - G4VIMuEnergyLoss(G4VIMuEnergyLoss &); - - virtual ~G4VIMuEnergyLoss(); - - G4bool IsApplicable(const G4ParticleDefinition&); - - private: - - // hide assignment operator - G4VIMuEnergyLoss & operator=(const G4VIMuEnergyLoss &right); - - public: - - G4double GetContinuousStepLimit( - const G4Track& track, - G4double previousStepSize, - G4double currentMinimumStep, - G4double& currentSafety) ; - - - G4VParticleChange* AlongStepDoIt(const G4Track& track ,const G4Step& Step) ; - - - virtual G4VParticleChange* PostStepDoIt(const G4Track& track,const G4Step& Step) = 0 ; - - // Build energy loss table (total continuous energy loss) - - void BuildDEDXTable(const G4ParticleDefinition& aParticleType); - - //---------------------------------------------- - // public functions ......................... - // get the number of processes contributing to the cont.energy loss - static G4int GetNUMBEROFPROCESSES() { return NUMBEROFPROCESSES; }; - // set the number of processes contributing to the cont.energy loss - static void SetNUMBEROFPROCESSES(G4int number) - { NUMBEROFPROCESSES=number ; }; - // Increment the number of processes contributing to the cont.energy loss - static void PlusNUMBEROFPROCESSES() - { NUMBEROFPROCESSES++ ; }; - // decrement the number of processes contributing to the cont.energy loss - static void MinusNUMBEROFPROCESSES() - { NUMBEROFPROCESSES-- ; }; - - - //***************************************************************************** - // - - G4double GetConstraints(const G4DynamicParticle *aParticle, - G4Material *aMaterial); - - G4double GetLossWithFluct(const G4DynamicParticle *aParticle, - G4Material *aMaterial, - G4double ChargeSquare, - G4double MeanLoss, - G4double Step ) ; - - protected: - - G4PhysicsTable* theLossTable ; - - static G4PhysicsTable* theDEDXmuplusTable ; - static G4PhysicsTable* theDEDXmuminusTable ; - static G4PhysicsTable* theRangemuplusTable ; - static G4PhysicsTable* theRangemuminusTable ; - static G4PhysicsTable* theInverseRangemuplusTable ; - static G4PhysicsTable* theInverseRangemuminusTable ; - - static G4PhysicsTable* theLabTimemuplusTable ; - static G4PhysicsTable* theLabTimemuminusTable ; - - static G4PhysicsTable* theProperTimemuplusTable ; - static G4PhysicsTable* theProperTimemuminusTable ; - - static G4PhysicsTable* themuplusRangeCoeffATable; - static G4PhysicsTable* themuplusRangeCoeffBTable; - static G4PhysicsTable* themuplusRangeCoeffCTable; - static G4PhysicsTable* themuminusRangeCoeffATable; - static G4PhysicsTable* themuminusRangeCoeffBTable; - static G4PhysicsTable* themuminusRangeCoeffCTable; - - static G4double CutInmupluslossTable; - static G4double CutInmuminuslossTable; - - // processes inherited from G4VIMuEnergyLoss - // register themselves in the static array Recorder - // nb of contributing processes = NUMBEROFPROCESSES - static G4int NUMBEROFPROCESSES ; - static G4PhysicsTable** RecorderOfmuplusProcess; - static G4PhysicsTable** RecorderOfmuminusProcess; - static G4int CounterOfmuplusProcess ; - static G4int CounterOfmuminusProcess ; - - G4double RTable,LOGRTable; // LOGRTable=log(HighestKineticEnergy - // /LowestKineticEnergy)/TotBin - // RTable = exp(LOGRTable) - - // cut in range - G4double CutInRange ; - // last cut in range - G4double lastCutInRange ; - - // particle mass - G4double ParticleMass; - - G4double BIGSTEP ; - - private: - // private functions .................................. - - void BuildRangeTable(const G4ParticleDefinition& aParticleType); - - void BuildInverseRangeTable( - const G4ParticleDefinition& aParticleType); - - void BuildTimeTables(const G4ParticleDefinition& aParticleType); - - void BuildLabTimeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - void BuildProperTimeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - void InvertRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - - void BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector); - - G4double LabTimeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - G4double ProperTimeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - - G4double RangeIntLin(G4PhysicsVector* physicsVector,G4int nbin); - - G4double RangeIntLog(G4PhysicsVector* physicsVector,G4int nbin); - - void BuildRangeCoeffATable(const G4ParticleDefinition& aParticleType); - void BuildRangeCoeffBTable(const G4ParticleDefinition& aParticleType); - void BuildRangeCoeffCTable(const G4ParticleDefinition& aParticleType); - - private: - - G4PhysicsTable* theDEDXTable; - - G4PhysicsTable* theRangeTable; - G4PhysicsTable* theInverseRangeTable; - - G4PhysicsTable* theLabTimeTable; - G4PhysicsTable* theProperTimeTable; - - G4PhysicsTable** RecorderOfProcess; - G4int CounterOfProcess; - - // private data members ............................... - - // fdEdx=(-dE/dx) - // computed in GetConstraints at every call; - G4double fdEdx; - - // fRangeNow is the actual range of the particle - // computed in GetConstraints - G4double fRangeNow ; - - // fMeanLoss is the energyloss without fluctuation - // computed in AlongStepDoIt ; - G4double fMeanLoss ; - - // EnergyBinNumber,RangeCoeffA,... are needed to compute range - G4int EnergyBinNumber ; - G4double RangeCoeffA,RangeCoeffB,RangeCoeffC ; - - //................................................................ - G4PhysicsTable* theRangeCoeffATable; - G4PhysicsTable* theRangeCoeffBTable; - G4PhysicsTable* theRangeCoeffCTable; - - // dToverTini is the maximum allowed deltarange/range in one Step - // ( set in this class for the moment) - const G4double dToverTini; - - // LowestKineticEnergy = lower limit of particle kinetic energy - // HighestKineticEnergy = upper limit of particle kinetic energy - // TotBin = number of bins - // ---------in the energy loss/range tables------------------- - const G4double LowestKineticEnergy; - const G4double HighestKineticEnergy; - G4int TotBin;// number of bins in table, calculated in BuildPhysicsTable - // from LowestKineticEnergy,HighestKineticEnergy and - // dToverTini - - // variables for the integration routines - G4double taulow,tauhigh,ltaulow,ltauhigh; - - // cuts in kinetic energy ........ - G4double* ParticleCutInKineticEnergy ; - G4double ParticleCutInKineticEnergyNow ; - - // ............... - const G4Electron* theElectron; - const G4Positron* thePositron; - const G4MuonPlus* theMuonPlus; - const G4MuonMinus* theMuonMinus; - - // data members to speed up the fluctuation calculation - G4Material *lastMaterial ; - G4int imat ; - G4double f1Fluct,f2Fluct,e1Fluct,e2Fluct,rateFluct,ipotFluct; - G4double e1LogFluct,e2LogFluct,ipotLogFluct; - const G4double MaxExcitationNumber ; - const G4double probLimFluct ; - const long nmaxDirectFluct,nmaxCont1,nmaxCont2 ; - -}; - -#include "G4VIMuEnergyLoss.icc" - -#endif diff --git a/source/processes/electromagnetic/integral/include/G4VIMuEnergyLoss.icc b/source/processes/electromagnetic/integral/include/G4VIMuEnergyLoss.icc deleted file mode 100644 index 9d8bf196a2..0000000000 --- a/source/processes/electromagnetic/integral/include/G4VIMuEnergyLoss.icc +++ /dev/null @@ -1,160 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VIMuEnergyLoss.icc,v 1.1.2.2 2001/06/28 20:19:19 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4VIMuEnergyLoss physics process ------------ -// by Laszlo Urban, September 1997 -// *************************************************************** -// It is the implementation of the NEW UNIFIED ENERGY LOSS PROCESS. -// It calculates the energy loss of muons. -// *************************************************************** -// correction for KineticEnergy< LowestKineticEnergy by L.Urban on 27/11/97 -// corrections by L. Urban on 27/05/98 ( other corrs come soon!) -// --------------------------------------------------------------- - -inline G4double G4VIMuEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, - G4Material *aMaterial) -{ - - // returns the Step limit - // dToverTini is the max. allowed relative range loss in one Step - // it calculates dEdx and the range as well.... - - G4double KineticEnergy,StepLimit; - const G4double BigStep = DBL_MAX ; - G4bool isOutRange ; - G4int index,bin ; - - if(aParticle->GetDefinition()->GetPDGCharge()>0.) - { - theDEDXTable = theDEDXmuplusTable ; - theRangeTable = theRangemuplusTable ; - theRangeCoeffATable=themuplusRangeCoeffATable ; - theRangeCoeffBTable=themuplusRangeCoeffBTable ; - theRangeCoeffCTable=themuplusRangeCoeffCTable ; - } - else - { - theDEDXTable = theDEDXmuminusTable ; - theRangeTable = theRangemuminusTable ; - theRangeCoeffATable=themuminusRangeCoeffATable ; - theRangeCoeffBTable=themuminusRangeCoeffBTable ; - theRangeCoeffCTable=themuminusRangeCoeffCTable ; - } - - - // min.stepsize = p*CutInRange at energy , where range=p*CutInRange - // random steplimit......................... - const G4double p=1. , cc=p*CutInRange ; - const G4double c1=dToverTini , c2=(1.-2.*dToverTini)*cc , - c3=dToverTini*cc*cc ; - const G4double rangelim=1.5*cc ; - const G4double Thigh = 0.9*HighestKineticEnergy ; - const G4double alfa = 0.05 , alfa1 = 1.-alfa , alfa2 = 2.*alfa ; - KineticEnergy = aParticle->GetKineticEnergy(); - bin = G4int(log(KineticEnergy/LowestKineticEnergy)/LOGRTable) ; - EnergyBinNumber = bin ; - index = aMaterial->GetIndex() ; - - if( KineticEnergy < LowestKineticEnergy ) - { - fdEdx = sqrt(KineticEnergy/LowestKineticEnergy)* - (*theDEDXTable)(index)->GetValue(LowestKineticEnergy,isOutRange) ; - fRangeNow = sqrt(KineticEnergy/LowestKineticEnergy)* - (*theRangeTable)(index)->GetValue(LowestKineticEnergy,isOutRange) ; - StepLimit = fRangeNow ; - } - else - { - if ( KineticEnergy > HighestKineticEnergy ) - StepLimit = BigStep ; - else - { - - fdEdx = (*theDEDXTable)(index)-> - GetValue(KineticEnergy,isOutRange) ; - - - RangeCoeffA = (*(*theRangeCoeffATable)(index))(EnergyBinNumber) ; - RangeCoeffB = (*(*theRangeCoeffBTable)(index))(EnergyBinNumber) ; - RangeCoeffC = (*(*theRangeCoeffCTable)(index))(EnergyBinNumber) ; - - fRangeNow = (RangeCoeffA*KineticEnergy+RangeCoeffB) - *KineticEnergy+RangeCoeffC ; - - // vacuum ? - if(fRangeNow>=BigStep) - StepLimit = BigStep ; - else - { - // new method to compute the (random) Step limit .............. - if(fRangeNow>cc) - { - StepLimit = c1*fRangeNow+c2+c3/fRangeNow ; - - // randomise this value - StepLimit = cc + (StepLimit-cc)*G4UniformRand() ; - if(StepLimit > fRangeNow) StepLimit = fRangeNow ; - } - else - StepLimit = fRangeNow ; - } - } - } - - return StepLimit ; - -} - - -inline G4double G4VIMuEnergyLoss::GetContinuousStepLimit( - const G4Track& track, - G4double, - G4double currentMinimumStep, - G4double&) -{ - - G4double Step = - GetConstraints(track.GetDynamicParticle(),track.GetMaterial()) ; - - if((Step>0.0)&&(Step0.0)&&(StepclearAndDestroy(); - delete theMeanFreePathTable; - } - if (&PartialSumSigma) { - PartialSumSigma.clearAndDestroy(); - } -} - - -// methods............................................................................. - -void G4IMuBremsstrahlung::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable -{ - NumberOfBuildPhysicsTableCalls += 1 ; - if(NumberOfBuildPhysicsTableCalls == 1) - { - - ParticleMass = aParticleType.GetPDGMass() ; - - BuildLossTable(aParticleType) ; - - if(&aParticleType==theMuonMinus) - { - RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable ; - CounterOfmuminusProcess++; - } - else - { - RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable ; - CounterOfmuplusProcess++; - } - - BuildLambdaTable(aParticleType) ; - - G4VIMuEnergyLoss::BuildDEDXTable(aParticleType) ; - - } - else - { - - BuildNlambdaTable(aParticleType) ; - - BuildCoeffATable(aParticleType) ; - BuildCoeffBTable(aParticleType) ; - BuildCoeffCTable(aParticleType) ; - - BuildInverseNlambdaTable(aParticleType) ; - - G4int printflag = 0 ; - if(printflag>0) - TestOfInversion(aParticleType,printflag) ; - - NumberOfBuildPhysicsTableCalls = 0 ; - } -} - -void G4IMuBremsstrahlung::TestOfInversion( - const G4ParticleDefinition& aParticleType, - G4int printflag) -{ - G4double T,Nlambda,Tprime,delta,del,sum,delmean,Tdelta ; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - G4cout.setf(G4std::ios::scientific, G4std::ios::floatfield) ; - if(printflag>1) - { - G4cout << G4endl; - G4cout << " particle=" << aParticleType.GetParticleName() << G4endl; - G4cout << "----------------------" << G4endl; - } - for (G4int J=0; J1) - { - G4cout << G4endl; - G4cout << " material = " << (*theMaterialTable)[J]->GetName() << G4endl; - G4cout << " mat.ind.=" << J << " T Nlambda Tprime" - << " (Tprime-T)/T(%)" << G4endl ; - } - - G4PhysicsLogVector* aVector ; - - aVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin) ; - delta = 0. ; - delmean = 0.; - sum = 0.; - Tdelta = 0. ; - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - Nlambda = (*theNlambdaTable)[J]->GetValue(T,isOut) ; - - if(Nlambda>0.) - { - Tprime = (*theInverseNlambdaTable)[J]->GetValue(Nlambda,isOut) ; - - if((Nlambda>0.)&&(i<(TotBin-1))) - { - del = 100.*(Tprime-T)/T ; - sum += 1.; - delmean += abs(del); - if(abs(del)>abs(delta)) - { - delta = del ; - Tdelta = T ; - } - } - if(printflag>1) - { - G4cout << G4std::setw(18) << G4std::setprecision(6) << T << " " << - G4std::setw(14)<< G4std::setprecision(6) << Nlambda << " " << - G4std::setw(14) << G4std::setprecision(6) << Tprime << " " << - G4std::setw(12) << G4std::setprecision(3) << del << G4endl; - } - } - } - if(printflag>0) - { - G4cout << G4endl; - G4cout << "G4IMuBremsstrahlung::TestOfInversion (T->Nlambda->Tprime) " << G4endl ; - G4cout << "particle= " << aParticleType.GetParticleName() << - " material= " << (*theMaterialTable)[J]->GetName() << G4endl ; - G4cout << "max (Tprime-T)/T in % =" << G4std::setw(10) << G4std::setprecision(3) << delta -; - G4cout << " at a kinetic energy " << G4std::setw(10) << G4std::setprecision(3) << - Tdelta/MeV << " MeV" << G4endl; - delmean /= sum ; - G4cout << "mean rel.diff. (Tprime-T)/T=" << G4std::setw(10) << - G4std::setprecision(3) << delmean << - " % (mean is calculated in abs. value)" << G4endl; - G4cout << G4endl; - } - } - -} - -void G4IMuBremsstrahlung::BuildNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if(theNlambdaTable) - { theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable ; } - - theNlambdaTable = new G4PhysicsTable(numOfMaterials) ; - - // loop for materials - for (G4int J=0; Jinsert(aVector) ; - } - -} -void G4IMuBremsstrahlung::BuildNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdgeEnergy,T,Tlast,dEdx,Value,Vlast,u,du,coeff ; - G4double thresholdEnergy ; - const G4int nbin = 100 ; - G4bool isOut ; - const G4double small = 1.e-10; - const G4double plowloss = 0.5 ; //this should be a data member of en.loss! - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - // threshold energy ....????? - thresholdEnergy = MinKineticEnergy ; - - // here assumed that the threshold energy for the process >= - // LowestKineticEnergy (temporarily ) - if(thresholdEnergy >= LowestKineticEnergy) - { - Value = 0. ; - } - else - { - // extrapolation needed .................. - //first integral from thresholdEnergy to LowestKineticEnergy - Value = 0. ; - } - - nlambdaVector->PutValue(0,Value) ; - Tlast = LowestKineticEnergy ; - Vlast = Value ; - - // loop for kinetic energy - for (G4int i=1; iGetLowEdgeEnergy(i) ; - - Value = 0. ; - - if(LowEdgeEnergy > thresholdEnergy) - { - u = log(LowEdgeEnergy/Tlast) ; - du = u/nbin ; - - u = -du ; - for(G4int n=0; n<=nbin; n++) - { - u += du ; - T = Tlast*exp(u) ; - - if((n==0)||(n==nbin)) - coeff=0.5 ; - else - coeff=1.0 ; - Value += coeff*T/(G4EnergyLossTables::GetPreciseDEDX(&aParticleType, - T,(*theMaterialTable)[materialIndex])* - (*theMeanFreePathTable)[materialIndex]->GetValue(T,isOut)) -; - } - - Value *= du ; - Value += Vlast ; - if(ValuePutValue(i,Value) ; - - Tlast = LowEdgeEnergy ; - Vlast = Value ; - - } - -} -void G4IMuBremsstrahlung::BuildCoeffATable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "A" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffATable) - { theCoeffATable->clearAndDestroy(); - delete theCoeffATable; } - theCoeffATable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if( i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - else - Value = 0. ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffATable->insert(aVector); - - } - -} - -void G4IMuBremsstrahlung::BuildCoeffBTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); -// create table for coefficients "B" - - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffBTable) - { theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; } - theCoeffBTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - else - Value = RTable*(Ri-Rim)/((RTable-1.)*Ti) ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffBTable->insert(aVector); - - } - -} -void G4IMuBremsstrahlung::BuildCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "C" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffCTable) - { theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; } - theCoeffCTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = w1*Rip + w2*Ri + w3*Rim ; - else - Value = (-Ri+RTable*Rim)/(RTable-1.) ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffCTable->insert(aVector); - - } - -} - -void G4IMuBremsstrahlung::BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - G4double T,Smallest,Biggest ; - const G4double small = 1.e-10; - G4bool isOut ; - -// create table - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - - if(theInverseNlambdaTable) - { theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; } - theInverseNlambdaTable = new G4PhysicsTable(numOfMaterials); - -// loop for materials - - for (G4int J=0; J - GetValue(T,isOut) ; - T *= RTable ; - } while ((Smallest <= small)&&(T - GetValue(HighestKineticEnergy,isOut) ; - - // inverse can be built for "meaningful" cut value only! - if(Smallest >= Biggest) - { - G4cout << G4endl ; - G4Exception( - "Cut value is too big , smaller value should be used !"); - } - - // create vector - G4PhysicsLogVector* aVector; - - aVector = new G4PhysicsLogVector(Smallest, - Biggest,TotBin); - - // fill the vector - - InvertNlambdaVector(aParticleType,J, aVector); - - // insert vector to the table - - theInverseNlambdaTable->insert(aVector); - - } - -} -void G4IMuBremsstrahlung::InvertNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdge,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double bin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for Nlambda values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - - if( bin < LowEdge ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - bin = (*theNlambdaTable)[materialIndex]->GetValue(Tbin,isOut) ; - } - while ((bin < LowEdge) && (binnumber < TotBin-2 )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy/RTable ; - else - { - A = (*(*theCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdge -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdge); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - - nlambdaVector->PutValue(i,KineticEnergy) ; - - } - -} - - -void G4IMuBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aParticleType) -// Build table for energy loss due to soft brems -// tables are built for MATERIALS -// ********* -{ - G4double KineticEnergy,TotalEnergy,bremloss,Z, - loss,natom,Cut ; - - - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - - const G4double SmallLoss = DBL_MIN ; - - ParticleMass = aParticleType.GetPDGMass(); - GammaCutInKineticEnergy = (*theGamma).GetEnergyCuts() ; - -// create table - - G4int numOfMaterials = theMaterialTable->length() ; - - if (theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - theLossTable = new G4PhysicsTable(numOfMaterials) ; - -// loop for materials - - for (G4int J=0; JGetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements = - material->GetNumberOfElements() ; - -// loop for the kinetic energy values - - for (G4int i=0; iGetLowEdgeEnergy(i) ; - TotalEnergy = KineticEnergy+ParticleMass ; - Cut = GammaCutInKineticEnergyNow ; - if(Cut>KineticEnergy) Cut = KineticEnergy ; - - - //loop for elements in the material - bremloss = 0.; - for (G4int iel=0; ielGetZ(); - natom = theAtomicNumDensityVector[iel] ; - loss = ComputeBremLoss(Z,KineticEnergy,Cut) ; - bremloss += natom*loss ; - } - if(bremloss<0.) bremloss = SmallLoss; - - aVector->PutValue(i,bremloss); - } - theLossTable->insert(aVector); - } -} - - -G4double G4IMuBremsstrahlung::ComputeBremLoss(G4double AtomicNumber, - G4double T,G4double Cut) - -// compute loss due to soft brems -{ - - static const G4double sigmafactor = 1.*cm2/Avogadro ; - static const G4double apar1[]={ - 0.15328e+0,-0.28426e-1, 0.91526e-1, 0.50875e-2,-0.56839e-2, - -0.28592e-2,-0.22830e-3, 0.10264e-3, 0.83753e-3, 0.11703e-2, - -0.21296e-1, 0.65650e-2, 0.14409e-2,-0.52079e-3, 0.95797e-3, - 0.64648e-3, 0.12752e-4,-0.10587e-3,-0.47799e-4, 0.10457e-3}; - static const G4double apar2[]={ - 0.19564e+0,-0.40379e-1, 0.86428e-1, 0.67609e-2,-0.58381e-2, - -0.16173e-2,-0.28879e-3, 0.37766e-4, 0.10055e-2, 0.10146e-2, - -0.81069e-2, 0.28804e-2, 0.51924e-2,-0.10308e-3, 0.10440e-3, - -0.45960e-4,-0.38156e-5,-0.76242e-4, 0.92117e-4, 0.12112e-3}; - static const G4double cpar1[]={ - 0.44198e-6,-0.23098e-8,-0.17542e-8,-0.61447e-7 }; - static const G4double cpar2[]={ - 0.45488e-6, 0.12797e-7,-0.29005e-8,-0.90486e-7 }; - G4double apar[20],cpar[4]; - - if(NuclearFormFactor==1) - { - G4int ipar1; - for (ipar1=0; ipar1<20; ipar1++) - { apar[ipar1]=apar1[ipar1] ; } - for (ipar1=0; ipar1<4; ipar1++) - { cpar[ipar1]=cpar1[ipar1] ; } - } - else - { - G4int ipar2; - for (ipar2=0; ipar2<20; ipar2++) - { apar[ipar2]=apar2[ipar2] ; } - for (ipar2=0; ipar2<4; ipar2++) - { cpar[ipar2]=cpar2[ipar2] ; } - } - - static const G4double CutLim = 1.*MeV ; - - static const G4double T100TeV = 100.*TeV ; - - G4double loss = 0.0 ; - - if ( AtomicNumber < 1. ) return loss ; - if( T < MinKineticEnergy ) return loss ; - - if( Cut > T ) - Cut = T ; - - if( Cut < MinCutValue ) - Cut = MinCutValue ; - - // extrapolation for Cut < Cutlim , part 1. - G4double CutSave = 0. ; - if( Cut < CutLim ) - { CutSave = Cut ; - Cut = CutLim ; - } - - //extrapolation for T > T100TeV , part 1. - G4double Textr,Cutextr ; - Textr = 0. ; - if( T > T100TeV ) - { - Textr = T ; - Cutextr = Cut ; - T = T100TeV ; - if(Cut > T) - Cut = T ; - } - - G4double u = log(AtomicNumber) ; - G4double v = log(1.+T/ParticleMass) ; - G4double w = log(T/Cut) ; - - G4double v2,v3,w2,w3,a,c ; - v2=v*v ; - v3=v2*v ; - w2=w*w ; - w3=w2*w ; - - a= apar[0]+apar[1]*v+apar[2]*w+apar[3]*v2+apar[4]*v*w+apar[5]*w2+ - apar[6]*v3+apar[7]*v2*w+apar[8]*v*w2+apar[9]*w3+ - u*(apar[10]+apar[11]*v+apar[12]*w+apar[13]*v2+apar[14]*v*w+apar[15]*w2+ - apar[16]*v3+apar[17]*v2*w+apar[18]*v*w2+apar[19]*w3) ; - - c=cpar[0]+u*(cpar[1]+cpar[2]*u)+cpar[3]*Cut/T ; - - loss = c*(1.-exp(-a*v)) ; - - loss *= sigmafactor*Cut*AtomicNumber*(AtomicNumber+1.)/(1.+0.06*u) ; - - // extrapolation for T > T100TeV , part 2. - if( Textr > 0. ) - { - loss *= Cutextr/Cut ; - } - - // extrapolation for Cut < CutLim , part 2. - if( CutSave > 0.) - loss *= CutSave/CutLim ; - - - if (loss < 0.) loss = 0.; - - return loss ; -} - - -void G4IMuBremsstrahlung::BuildLambdaTable(const G4ParticleDefinition& ParticleType) - -// Build mean free path tables for the gamma emission by muons. -// tables are Build for MATERIALS. -{ - - G4double LowEdgeEnergy , Value; - G4double FixedEnergy = (LowestKineticEnergy + HighestKineticEnergy)/2. ; - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - - //create table - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - theMeanFreePathTable = new G4PhysicsTable( G4Material::GetNumberOfMaterials() ) ; - - PartialSumSigma.clearAndDestroy(); - PartialSumSigma.resize(G4Material::GetNumberOfMaterials()); - - G4PhysicsLogVector* ptrVector; - for ( G4int J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) - { - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestKineticEnergy, HighestKineticEnergy, - TotBin ) ; - - const G4Material* material= (*theMaterialTable)[J]; - - for ( G4int i = 0 ; i < TotBin ; i++ ) - { - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeMeanFreePath( &ParticleType, LowEdgeEnergy, - material ); - ptrVector->PutValue( i , Value ) ; - } - - theMeanFreePathTable->insertAt( J , ptrVector ); - - // Compute the PartialSumSigma table at a given fixed energy - ComputePartialSumSigma( &ParticleType, FixedEnergy, material) ; - } -} - -void G4IMuBremsstrahlung::ComputePartialSumSigma(const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial) - -// Build the table of cross section per element. The table is built for MATERIALS. -// This table is used by DoIt to select randomly an element in the material. -{ - G4int Imate = aMaterial->GetIndex(); - G4int NbOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[Imate]; - - PartialSumSigma[Imate] = new G4DataVector(); - - G4double SIGMA = 0. ; - - for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ) - { - SIGMA += theAtomNumDensityVector[Ielem] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), - GammaEnergyCut ); - PartialSumSigma[Imate]->push_back(SIGMA); - } -} - -G4double G4IMuBremsstrahlung::ComputeMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, G4double AtomicNumber, - G4double GammaEnergyCut) - -// Calculates the microscopic cross section in GEANT4 internal units. -// A parametrized formula from L. Urban is used to estimate the total cross section. -// - -{ - - static const G4double sigmafactor = 1.*cm2/Avogadro ; - - static const G4double apar1[]={ - 0.83102e-1,-0.24945e-1, 0.32233e-1, 0.47013e-2,-0.15698e-2, - 0.18918e-2,-0.21786e-3, 0.50011e-4,-0.35375e-4,-0.84328e-4, - -0.35881e-1, 0.13027e-1, 0.29771e-2,-0.14009e-2,-0.74999e-3, - 0.15088e-3, 0.47484e-4, 0.33027e-4, 0.10146e-4,-0.14978e-4}; - - static const G4double apar2[]={ - 0.68931e-1,-0.15069e-1, 0.39220e-1, 0.32425e-2,-0.34125e-2, - 0.16335e-2,-0.15817e-3, 0.14446e-3, 0.89327e-5,-0.10687e-3, - -0.11443e-1, 0.36703e-2, 0.19308e-2,-0.27223e-3,-0.19030e-3, - 0.10404e-3, 0.51231e-5,-0.22346e-5, 0.13321e-5,-0.36106e-5}; - static const G4double cpar1[]={ - 0.41842e-6,-0.63439e-9,-0.18174e-8}; - - static const G4double cpar2[]={ - 0.43455e-6, 0.12501e-7,-0.28730e-8}; - - static const G4double bpar1[]={ - 0.15328e+0,-0.28426e-1, 0.91526e-1, 0.50875e-2,-0.56839e-2, - -0.28592e-2,-0.22830e-3, 0.10264e-3, 0.83753e-3, 0.11703e-2, - -0.21296e-1, 0.65650e-2, 0.14409e-2,-0.52079e-3, 0.95797e-3, - 0.64648e-3, 0.12752e-4,-0.10587e-3,-0.47799e-4, 0.10457e-3}; - - static const G4double bpar2[]={ - 0.19564e+0,-0.40379e-1, 0.86428e-1, 0.67609e-2,-0.58381e-2, - -0.16173e-2,-0.28879e-3, 0.37766e-4, 0.10055e-2, 0.10146e-2, - -0.81069e-2, 0.28804e-2, 0.51924e-2,-0.10308e-3, 0.10440e-3, - -0.45960e-4,-0.38156e-5,-0.76242e-4, 0.92117e-4, 0.12112e-3}; - - static const G4double dpar1[]={ - 0.44198e-6,-0.23098e-8,-0.17542e-8,-0.61447e-7 }; - - static const G4double dpar2[]={ - 0.45488e-6, 0.12797e-7,-0.29005e-8,-0.90486e-7 }; - - G4double apar[20],cpar[3],bpar[20],dpar[4]; - - if(NuclearFormFactor==1) - { - G4int ipar1; - for (ipar1=0; ipar1<20; ipar1++) - { apar[ipar1]=apar1[ipar1] ; - bpar[ipar1]=bpar1[ipar1] ; } - for (ipar1=0; ipar1<3; ipar1++) - { cpar[ipar1]=cpar1[ipar1] ; - dpar[ipar1]=dpar1[ipar1] ; } - dpar[3]=dpar1[3]; - } - else - { - G4int ipar2; - for (ipar2=0; ipar2<20; ipar2++) - { apar[ipar2]=apar2[ipar2] ; - bpar[ipar2]=bpar2[ipar2] ; } - for (ipar2=0; ipar2<3; ipar2++) - { cpar[ipar2]=cpar2[ipar2] ; - dpar[ipar2]=dpar2[ipar2] ; } - dpar[3]=dpar2[3]; - } - - static const G4double CutLim = 1.*MeV ; - static const G4double T100TeV = 100.*TeV ; - - G4double CrossSection = 0.0 ; - - if ( AtomicNumber < 1. ) return CrossSection; - if ( KineticEnergy < MinKineticEnergy ) return CrossSection; - if ( KineticEnergy <= GammaEnergyCut ) return CrossSection; - - G4double CutSav = 0. ; - - if ( GammaEnergyCut < MinCutValue ) - GammaEnergyCut = MinCutValue ; - - // extrapolation for GammaEnergyCut < CutLim , part 1. - if( GammaEnergyCut < CutLim) - { - CutSav = GammaEnergyCut ; - GammaEnergyCut = CutLim ; - } - - // extrapolation for KineticEnergy > T100TeV , part 1. - G4double Textr,Cutextr ; - Textr = 0. ; - if( KineticEnergy > T100TeV ) - { - Textr = KineticEnergy ; - Cutextr = GammaEnergyCut ; - KineticEnergy = T100TeV ; - } - - G4double u = log(AtomicNumber) ; - G4double v = log(1.+(KineticEnergy-GammaEnergyCut)/ParticleMass) ; - G4double w = log(KineticEnergy/GammaEnergyCut) ; - - G4double v2,v3,w2,w3,a,c ; - v2=v*v ; - v3=v2*v ; - w2=w*w ; - w3=w2*w ; - - a= apar[0]+apar[1]*v+apar[2]*w+apar[3]*v2+apar[4]*v*w+apar[5]*w2+ - apar[6]*v3+apar[7]*v2*w+apar[8]*v*w2+apar[9]*w3+ - u*(apar[10]+apar[11]*v+apar[12]*w+apar[13]*v2+apar[14]*v*w+apar[15]*w2+ - apar[16]*v3+apar[17]*v2*w+apar[18]*v*w2+apar[19]*w3) ; - - c=cpar[0]+u*(cpar[1]+cpar[2]*u) ; - - CrossSection = c*(1.-exp(-a*v)) ; - - CrossSection *= sigmafactor*AtomicNumber*(AtomicNumber+1.)*w/(1.+0.06*u) ; - - //extrapolation for KineticEnergy > T100TeV , part 2. - if( Textr > 0.) - { - CrossSection *= log(Textr/Cutextr)/w ; - } - - // extrapolation for GammaEnergyCut < CutLim , part 2. - if( CutSav > 0.) - { - G4double loss ; - - v=log(1.+KineticEnergy/ParticleMass) ; - v2=v*v ; - v3=v2*v ; - - a= bpar[0]+bpar[1]*v+bpar[2]*w+bpar[3]*v2+bpar[4]*v*w+bpar[5]*w2+ - bpar[6]*v3+bpar[7]*v2*w+bpar[8]*v*w2+bpar[9]*w3+ - u*(bpar[10]+bpar[11]*v+bpar[12]*w+bpar[13]*v2+bpar[14]*v*w+bpar[15]*w2+ - bpar[16]*v3+bpar[17]*v2*w+bpar[18]*v*w2+bpar[19]*w3) ; - - c=dpar[0]+u*(dpar[1]+dpar[2]*u)+dpar[3]*GammaEnergyCut/KineticEnergy ; - - loss = c*(1.-exp(-a*v)) ; - - loss *= sigmafactor*AtomicNumber*(AtomicNumber+1.)/(1.+0.06*u) ; - - if( GammaEnergyCut < KineticEnergy) - loss *= GammaEnergyCut ; - else - loss *= KineticEnergy ; - - - CrossSection += loss*log(CutLim/CutSav)/CutLim ; - - } - - if (CrossSection < 0.) CrossSection = 0.; - - - return CrossSection; -} - - -G4VParticleChange* G4IMuBremsstrahlung::PostStepDoIt(const G4Track& trackData, - const G4Step& stepData) -// -// -{ - //nuclear form factor correction fn=2./(3.*Z**(1/3))............. - // or - //nuclear form factor correction fn=exp(-fn1*(fn2*A**(1/3)-fn3)............. - static const G4double fn11=2./3.; - static const G4double fn1=0.128 ; - static const G4double fn2=1.18 ; - static const G4double fn3=0.48 ; - - static const G4double R=189. ; - static const G4double esq=sqrt(exp(1.)) ; - - static const G4double MassRatio=ParticleMass/electron_mass_c2 ; - - aParticleChange.Initialize(trackData); - G4Material* aMaterial=trackData.GetMaterial() ; - - const G4DynamicParticle* aDynamicParticle=trackData.GetDynamicParticle(); - - G4double KineticEnergy = aDynamicParticle->GetKineticEnergy(); - G4ParticleMomentum ParticleDirection = aDynamicParticle->GetMomentumDirection(); - - // Gamma cut in this material - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - - // check against insufficient energy - if (KineticEnergy < GammaEnergyCut) - { - aParticleChange.SetMomentumChange( ParticleDirection ); - aParticleChange.SetEnergyChange( KineticEnergy ); - aParticleChange.SetLocalEnergyDeposit (0.); - aParticleChange.SetNumberOfSecondaries(0); - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - - // select randomly one element constituing the material - G4Element* anElement = SelectRandomAtom(aMaterial); - - // Extract data for this Element - G4double Z3 = anElement->GetIonisation()->GetZ3(); - G4double A = (anElement->GetA())*mole/g ; - G4double A3 = exp(log(A)/3.) ; - - // nuclear form factor correction - G4double fn ; - if(NuclearFormFactor==1) - fn=fn11/Z3 ; - else - fn=exp(-fn1*(fn2*A3-fn3)) ; - - // limits of the energy sampling - G4double TotalEnergy = KineticEnergy + ParticleMass ; - G4double vmin = GammaEnergyCut/TotalEnergy ; - G4double vmax = 1.-0.5*esq*ParticleMass/(fn*TotalEnergy) ; - - if(vmin >= vmax) - { - aParticleChange.SetMomentumChange( ParticleDirection ); - aParticleChange.SetEnergyChange( KineticEnergy ); - aParticleChange.SetLocalEnergyDeposit (0.); - aParticleChange.SetNumberOfSecondaries(0); - // ResetNumberOfInteractionLengthLeft(); - // return &aParticleChange ; - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - - //compute maximum of the rejection function - G4double qmin=0.5*ParticleMass*vmin/(TotalEnergy*(1.-vmin)) ; - G4double w1=R/Z3 ; - G4double w2=MassRatio*esq*w1 ; - G4double w3=fn*MassRatio ; - G4double w4=w1/(1.+qmin*w2) ; - G4double rejmax=log(w3*w4)*(4.*(1.-vmin)/3.+vmin*vmin) ; - - // sample photon energy - G4double v,reject ; - do { - v = vmin*pow((vmax/vmin), G4UniformRand()); - qmin=0.5*ParticleMass*v/(TotalEnergy*(1.-v)) ; - w4=w1/(1.+qmin*w2) ; - reject=log(w3*w4)*(4.*(1.-v)/3.+v*v) ; - } while( reject < G4UniformRand()*rejmax ); - - if( v <= 0.) - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - - - // angles of the emitted gamma. ( Z - axis along the parent particle) - // Teta = electron_mass_c2/TotalEnergy for the moment ..... - - G4double Teta = electron_mass_c2/TotalEnergy ; - G4double Phi = twopi * G4UniformRand() ; - G4double dirx = sin(Teta)*cos(Phi) , diry = sin(Teta)*sin(Phi) , dirz = cos(Teta) ; - - G4ThreeVector GammaDirection ( dirx, diry, dirz); - GammaDirection.rotateUz(ParticleDirection); - - // create G4DynamicParticle object for the Gamma - G4double GammaEnergy = v*TotalEnergy; - G4DynamicParticle* aGamma= new G4DynamicParticle (G4Gamma::Gamma(), - GammaDirection, GammaEnergy); - - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary(aGamma); - - // - // Update the incident particle - // - - G4double NewKinEnergy = KineticEnergy - GammaEnergy; - if (NewKinEnergy > 0.) - { - aParticleChange.SetMomentumChange(ParticleDirection); - aParticleChange.SetEnergyChange(NewKinEnergy); - aParticleChange.SetLocalEnergyDeposit (0.); - } - else - { - aParticleChange.SetEnergyChange(0.); - aParticleChange.SetLocalEnergyDeposit (0.); - aParticleChange.SetStatusChange(fStopButAlive); - } - - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - -} - -G4Element* G4IMuBremsstrahlung::SelectRandomAtom(G4Material* aMaterial) const -{ - // select randomly 1 element within the material - - const G4int Index = aMaterial->GetIndex(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - - G4double rval = G4UniformRand()*((*PartialSumSigma[Index])[NumberOfElements-1]); - for ( G4int i=0; i < NumberOfElements; i++ ) - if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)(i)); - G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() - << "' has no elements, NULL pointer returned." << G4endl; - return NULL; -} diff --git a/source/processes/electromagnetic/integral/src/G4IMuIonisation.cc b/source/processes/electromagnetic/integral/src/G4IMuIonisation.cc deleted file mode 100644 index f25dddadd6..0000000000 --- a/source/processes/electromagnetic/integral/src/G4IMuIonisation.cc +++ /dev/null @@ -1,1076 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMuIonisation.cc,v 1.1.2.2 2001/06/28 20:19:20 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4IMuIonisation physics process ------------- -// by Laszlo Urban, September 1997 -// ------------------------------------------------------------------ -// It is the implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of muons. -// ************************************************************** -// 08-04-98: remove 'tracking cut' of the ionizing particle, MMa -// -------------------------------------------------------------- - - -#include "G4IMuIonisation.hh" - -// constructor and destructor - -G4IMuIonisation::G4IMuIonisation(const G4String& processName) - : G4VIMuEnergyLoss("IMuIonisation"), - LowestKineticEnergy(1.00*keV), - HighestKineticEnergy(1000000.*TeV), - TotBin(200), - NumberOfBuildPhysicsTableCalls(0), - theElectron ( G4Electron::Electron() ), - theMuonPlus ( G4MuonPlus::MuonPlus() ), - theMuonMinus ( G4MuonMinus::MuonMinus() ) -{ - theMeanFreePathTable = NULL; - - lastCutInRange = 0. ; -} - -G4IMuIonisation::~G4IMuIonisation() -{ - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - -} - - -// methods............................................. - -void G4IMuIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable -{ - NumberOfBuildPhysicsTableCalls += 1 ; - if(NumberOfBuildPhysicsTableCalls == 1) - { - ParticleMass = aParticleType.GetPDGMass() ; - - G4double Charge = aParticleType.GetPDGCharge(); - - CutInRange = aParticleType.GetLengthCuts(); - - BuildLossTable(aParticleType) ; - - if(Charge>0.) - { - RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable ; - CounterOfmuplusProcess++; - } - else - { - RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable ; - CounterOfmuminusProcess++; - } - - if(CutInRange != lastCutInRange) - { - lastCutInRange = CutInRange ; - BuildLambdaTable(aParticleType) ; - } - - G4VIMuEnergyLoss::BuildDEDXTable(aParticleType) ; - } - else - { - BuildNlambdaTable(aParticleType) ; - - BuildCoeffATable(aParticleType) ; - BuildCoeffBTable(aParticleType) ; - BuildCoeffCTable(aParticleType) ; - - BuildInverseNlambdaTable(aParticleType) ; - - G4int printflag = 0 ; - if(printflag>0) - TestOfInversion(aParticleType,printflag) ; - - NumberOfBuildPhysicsTableCalls = 0 ; - } - - -} - -void G4IMuIonisation::TestOfInversion( - const G4ParticleDefinition& aParticleType, - G4int printflag) -{ - G4double T,Nlambda,Tprime,delta,del,sum,delmean,Tdelta ; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - G4cout.setf(G4std::ios::scientific, G4std::ios::floatfield) ; - if(printflag>1) - { - G4cout << G4endl; - G4cout << " particle=" << aParticleType.GetParticleName() << G4endl; - G4cout << "----------------------" << G4endl; - } - for (G4int J=0; J1) - { - G4cout << G4endl; - G4cout << " material = " << (*theMaterialTable)[J]->GetName() << G4endl; - G4cout << " mat.ind.=" << J << " T Nlambda Tprime" - << " (Tprime-T)/T(%)" << G4endl ; - } - - G4PhysicsLogVector* aVector ; - - aVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin) ; - delta = 0. ; - delmean = 0.; - sum = 0.; - Tdelta = 0. ; - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - Nlambda = (*theNlambdaTable)[J]->GetValue(T,isOut) ; - - if(Nlambda>0.) - { - Tprime = (*theInverseNlambdaTable)[J]->GetValue(Nlambda,isOut) ; - - if((Nlambda>0.)&&(i<(TotBin-1))) - { - del = 100.*(Tprime-T)/T ; - sum += 1.; - delmean += abs(del); - if(abs(del)>abs(delta)) - { - delta = del ; - Tdelta = T ; - } - } - if(printflag>1) - { - G4cout << G4std::setw(18) << G4std::setprecision(6) << T << " " << - G4std::setw(14)<< G4std::setprecision(6) << Nlambda << " " << - G4std::setw(14) << G4std::setprecision(6) << Tprime << " " << - G4std::setw(12) << G4std::setprecision(3) << del << G4endl; - } - } - } - if(printflag>0) - { - G4cout << G4endl; - G4cout << "G4IMuIonisation::TestOfInversion (T->Nlambda->Tprime) " << G4endl ; - G4cout << "particle= " << aParticleType.GetParticleName() << - " material= " << (*theMaterialTable)[J]->GetName() << G4endl ; - G4cout << "max (Tprime-T)/T in % =" << G4std::setw(10) << G4std::setprecision(3) << delta -; - G4cout << " at a kinetic energy " << G4std::setw(10) << G4std::setprecision(3) << - Tdelta/MeV << " MeV" << G4endl; - delmean /= sum ; - G4cout << "mean rel.diff. (Tprime-T)/T=" << G4std::setw(10) << - G4std::setprecision(3) << delmean << - " % (mean is calculated in abs. value)" << G4endl; - G4cout << G4endl; - } - } - -} -void G4IMuIonisation::BuildNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if(theNlambdaTable) - { theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable ; } - - theNlambdaTable = new G4PhysicsTable(numOfMaterials) ; - - // loop for materials - for (G4int J=0; Jinsert(aVector) ; - } - -} -void G4IMuIonisation::BuildNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdgeEnergy,T,Tlast,dEdx,Value,Vlast,u,du,coeff ; - G4double thresholdEnergy ; - const G4int nbin = 100 ; - G4bool isOut ; - const G4double small = 1.e-10; - const G4double plowloss = 0.5 ; //this should be a data member of en.loss! - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - // it is a lower limit for the threshold energy ....????? - thresholdEnergy = DeltaCutInKineticEnergy[materialIndex]; - - // here assumed that the threshold energy for the process >= - // LowestKineticEnergy (temporarily ) - if(thresholdEnergy >= LowestKineticEnergy) - { - Value = 0. ; - } - else - { - // extrapolation needed .................. - //first integral from thresholdEnergy to LowestKineticEnergy - Value = 0. ; - } - - nlambdaVector->PutValue(0,Value) ; - Tlast = LowestKineticEnergy ; - Vlast = Value ; - - // loop for kinetic energy - for (G4int i=1; iGetLowEdgeEnergy(i) ; - - Value = 0. ; - - if(LowEdgeEnergy > thresholdEnergy) - { - u = log(LowEdgeEnergy/Tlast) ; - du = u/nbin ; - - u = -du ; - for(G4int n=0; n<=nbin; n++) - { - u += du ; - T = Tlast*exp(u) ; - - if((n==0)||(n==nbin)) - coeff=0.5 ; - else - coeff=1.0 ; - - Value += coeff*T/(G4EnergyLossTables::GetPreciseDEDX(&aParticleType, - T,(*theMaterialTable)[materialIndex])* - (*theMeanFreePathTable)[materialIndex]->GetValue(T,isOut)) -; - } - - Value *= du ; - Value += Vlast ; - if(ValuePutValue(i,Value) ; - - Tlast = LowEdgeEnergy ; - Vlast = Value ; - - } - -} -void G4IMuIonisation::BuildCoeffATable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "A" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffATable) - { theCoeffATable->clearAndDestroy(); - delete theCoeffATable; } - theCoeffATable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if( i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - else - Value = 0. ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffATable->insert(aVector); - - } -} - -void G4IMuIonisation::BuildCoeffBTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "B" - - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffBTable) - { theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; } - theCoeffBTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - else - Value = RTable*(Ri-Rim)/((RTable-1.)*Ti) ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffBTable->insert(aVector); - } - -} -void G4IMuIonisation::BuildCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "C" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffCTable) - { theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; } - theCoeffCTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = w1*Rip + w2*Ri + w3*Rim ; - else - Value = (-Ri+RTable*Rim)/(RTable-1.) ; - - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffCTable->insert(aVector); - - } - -} -void G4IMuIonisation::BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - G4double T,Smallest,Biggest ; - const G4double small = 1.e-10; - G4bool isOut ; - -// create table - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - - if(theInverseNlambdaTable) - { theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; } - theInverseNlambdaTable = new G4PhysicsTable(numOfMaterials); - -// loop for materials - - for (G4int J=0; J - GetValue(T,isOut) ; - T *= RTable ; - } while ((Smallest <= small)&&(T - GetValue(HighestKineticEnergy,isOut) ; - - // inverse can be built for "meaningful" cut value only! - if(Smallest >= Biggest) - { - G4cout << G4endl ; - G4Exception( - "Cut value is too big , smaller value should be used !"); - } - - // create vector - G4PhysicsLogVector* aVector; - - aVector = new G4PhysicsLogVector(Smallest, - Biggest,TotBin); - - // fill the vector - - InvertNlambdaVector(aParticleType,J, aVector); - - // insert vector to the table - - theInverseNlambdaTable->insert(aVector); - - } - -} -void G4IMuIonisation::InvertNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdge,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double bin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for Nlambda values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - - if( bin < LowEdge ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - bin = (*theNlambdaTable)[materialIndex]->GetValue(Tbin,isOut) ; - } - while ((bin < LowEdge) && (binnumber < TotBin-2 )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy/RTable ; - else - { - A = (*(*theCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdge -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdge); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - - nlambdaVector->PutValue(i,KineticEnergy) ; - - } - -} - - - -void G4IMuIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) -{ -// Build tables for the ionization energy loss -// the tables are built for MATERIALS -// ********* - G4double Charge = aParticleType.GetPDGCharge() ; - - // cuts for muplus/muminus and electron .................... - if(Charge>0.) - ParticleCutInKineticEnergy = theMuonPlus->GetCutsInEnergy() ; - else - ParticleCutInKineticEnergy = theMuonMinus->GetCutsInEnergy() ; - - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - - G4double LowEdgeEnergy , ionloss ; - G4double RateMass ; - G4bool isOutRange ; - static const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - const G4double SmallIonLoss = DBL_MIN ; - const G4double twoln10 = 2.*log(10.) ; - const G4double Factor = twopi_mc2_rcl2 ; - const G4double bg2lim = 0.0169 , taulim = 8.4146e-3 ; - - ParticleMass = aParticleType.GetPDGMass() ; - RateMass = electron_mass_c2/ParticleMass ; - - // create table - - G4int numOfMaterials = theMaterialTable->length(); - - if ( theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - theLossTable = new G4PhysicsTable(numOfMaterials); - - // loop for materials - - for (G4int J=0; JGetElectronDensity(); - Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); - Eexc2 = Eexc*Eexc ; - Cden = material->GetIonisation()->GetCdensity(); - Mden = material->GetIonisation()->GetMdensity(); - Aden = material->GetIonisation()->GetAdensity(); - X0den = material->GetIonisation()->GetX0density(); - X1den = material->GetIonisation()->GetX1density(); - taul = material->GetIonisation()->GetTaul() ; - ShellCorrectionVector = material->GetIonisation() - ->GetShellCorrectionVector(); - - // get elements in the actual material, - // they are needed for the low energy part .... - - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector= - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements= - material->GetNumberOfElements() ; - - // get electron cut in kin. energy for the material - - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ; - - // some local variables ------------------- - G4double tau,tau0,Tmax,gamma,bg2,beta2,rcut,delta,x,sh ; - - // now comes the loop for the kinetic energy values***************** - - for (G4int i = 0 ; i < TotBin ; i++) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - tau = LowEdgeEnergy/ParticleMass ; - - if ( tau < taul ) - // low energy part , parametrized energy loss formulae - { - ionloss = 0. ; - // loop for the elements in the material - for (G4int iel=0; ielGetIonisation()->GetTau0()) - ionloss += theAtomicNumDensityVector[iel] - *( element->GetIonisation()->GetAlow()*sqrt(tau) - +element->GetIonisation()->GetBlow()*tau) ; - else - ionloss += theAtomicNumDensityVector[iel] - * element->GetIonisation()->GetClow()/sqrt(tau) ; - } - } - else - // high energy part , Bethe-Bloch formula - { - gamma = tau +1. ; - bg2 = tau*(tau+2.) ; - beta2 = bg2/(gamma*gamma) ; - Tmax = 2.*electron_mass_c2*bg2 - /(1.+2.*gamma*RateMass+RateMass*RateMass) ; - - if ( DeltaCutInKineticEnergyNow < Tmax) - rcut = DeltaCutInKineticEnergyNow/Tmax ; - else - rcut = 1.; - - ionloss = log(2.*electron_mass_c2*bg2*Tmax/Eexc2) - +log(rcut)-(1.+rcut)*beta2 ; - - - // density correction - - x = log(bg2)/twoln10 ; - if ( x < X0den ) - delta = 0. ; - else - { - delta = twoln10*x - Cden ; - if ( x < X1den ) - delta += Aden*pow((X1den-x),Mden) ; - } - - // shell correction - - if ( bg2 > bg2lim ) { - sh = 0. ; - x = 1. ; - for (G4int k=0; k<2; k++) { - x *= bg2 ; - sh += ShellCorrectionVector[k]/x; - } - } - else { - sh = 0. ; - x = 1. ; - for (G4int k=0; k<2; k++) { - x *= bg2lim ; - sh += ShellCorrectionVector[k]/x; - } - sh *= log(tau/taul)/log(taulim/taul) ; - } - - // now you can compute the total ionization loss - - ionloss -= delta + sh ; - ionloss *= Factor*ElectronDensity/beta2 ; - } - if ( ionloss <= 0.) - ionloss = SmallIonLoss ; - - aVector->PutValue(i,ionloss) ; - - } - theLossTable->insert(aVector); - } - -} - -void G4IMuIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) -{ - // Build mean free path tables for the delta ray production process - // tables are built for MATERIALS - - G4double LowEdgeEnergy , Value ,sigma ; - G4bool isOutRange ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - const G4double BigValue = DBL_MAX ; - - //create table - - G4int numOfMaterials = theMaterialTable->length(); - - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); - - // get electron and particle cuts in kinetic energy - - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - - ParticleCutInKineticEnergy = aParticleType.GetEnergyCuts() ; - - // loop for materials - - for (G4int J=0 ; J < numOfMaterials; J++) - { - //create physics vector then fill it .... - - G4PhysicsLogVector* aVector = new G4PhysicsLogVector( - LowestKineticEnergy, HighestKineticEnergy, TotBin); - - // compute the (macroscopic) cross section first - - const G4Material* material= (*theMaterialTable)[J]; - - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector(); - const G4int NumberOfElements= - material->GetNumberOfElements() ; - - // get the electron kinetic energy cut for the actual material, - // it will be used in ComputeMicroscopicCrossSection - // ( it is the SAME for ALL the ELEMENTS in THIS MATERIAL ) - // ------------------------------------------------------ - - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ; - - for ( G4int i = 0 ; i < TotBin ; i++ ) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - - sigma = 0. ; - - for (G4int iel=0; ielGetZ() ) ; - } - - // mean free path = 1./macroscopic cross section - - Value = sigma<=0 ? BigValue: 1./sigma ; - - aVector->PutValue(i, Value) ; - } - - - theMeanFreePathTable->insert(aVector); - } -} - - -G4double G4IMuIonisation::ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber) -{ - //****************************************************************** - // calculates the microscopic cross section in GEANT4 internal units - // ( it is called for elements , AtomicNumber = Z ) - - G4double TotalEnergy, - betasquare, - MaxKineticEnergyTransfer,TotalCrossSection,tempvar; - const G4double SmallCrossSection = DBL_MIN; - - // get particle data ................................... - - TotalEnergy=KineticEnergy + ParticleMass; - - // some kinematics...................... - - betasquare = KineticEnergy*(TotalEnergy+ParticleMass) - /(TotalEnergy*TotalEnergy); - tempvar = ParticleMass+electron_mass_c2; - MaxKineticEnergyTransfer = 2.*electron_mass_c2*KineticEnergy - *(TotalEnergy+ParticleMass) - /(tempvar*tempvar+2.*electron_mass_c2*KineticEnergy); - - // now you can calculate the total cross section ------------------ - - if( MaxKineticEnergyTransfer > DeltaCutInKineticEnergyNow ) - { - tempvar=DeltaCutInKineticEnergyNow/MaxKineticEnergyTransfer; - TotalCrossSection = (1.-tempvar*(1.-betasquare*log(tempvar))) - /DeltaCutInKineticEnergyNow; - - TotalCrossSection += 0.5 - *(MaxKineticEnergyTransfer-DeltaCutInKineticEnergyNow) - /(TotalEnergy*TotalEnergy); - - TotalCrossSection = twopi_mc2_rcl2 * AtomicNumber - *TotalCrossSection/betasquare; - } - else - TotalCrossSection=SmallCrossSection ; - - return TotalCrossSection ; -} - - - -G4VParticleChange* G4IMuIonisation::PostStepDoIt( - const G4Track& trackData, - const G4Step& stepData) -{ - // Units are expressed in GEANT4 internal units. - - const G4DynamicParticle* aParticle ; - G4Material* aMaterial; - G4double KineticEnergy,TotalEnergy,TotalMomentum, - betasquare,MaxKineticEnergyTransfer, - DeltaKineticEnergy,DeltaTotalMomentum,costheta,sintheta,phi, - dirx,diry,dirz,finalKineticEnergy,finalPx,finalPy,finalPz, - x,xc,te2,grej,Psquare,Esquare,summass,rate,grejc,finalMomentum ; - G4double Charge ; - - aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; - - aParticle = trackData.GetDynamicParticle() ; - - Charge=aParticle->GetDefinition()->GetPDGCharge(); - KineticEnergy=aParticle->GetKineticEnergy(); - TotalEnergy=KineticEnergy + ParticleMass ; - Psquare=KineticEnergy*(TotalEnergy+ParticleMass) ; - Esquare=TotalEnergy*TotalEnergy ; - summass = ParticleMass + electron_mass_c2 ; - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection() ; - // get kinetic energy cut for the electron.... - - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[aMaterial->GetIndex()]; - - // some kinematics...................... - - betasquare=Psquare/Esquare ; - MaxKineticEnergyTransfer = 2.*electron_mass_c2*Psquare - /(summass*summass+2.*electron_mass_c2*KineticEnergy); - - // sampling kinetic energy of the delta ray - - if( MaxKineticEnergyTransfer <= DeltaCutInKineticEnergyNow ) - { - // pathological case (it should not happen , - // there is no change at all)..... - - // return &aParticleChange; - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - else - { - // normal case ...................................... - xc=DeltaCutInKineticEnergyNow/MaxKineticEnergyTransfer ; - rate=MaxKineticEnergyTransfer/TotalEnergy ; - te2=0.5*rate*rate ; - - // sampling follows ... - grejc=1.-betasquare*xc+te2*xc*xc ; - do { - x=xc/(1.-(1.-xc)*G4UniformRand()); - grej=(1.-x*(betasquare-x*te2))/grejc ; - } while( G4UniformRand()>grej ); - } - - DeltaKineticEnergy = x * MaxKineticEnergyTransfer ; - if(DeltaKineticEnergy <= 0.) - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - - DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + - 2. * electron_mass_c2 )) ; - TotalMomentum = sqrt(Psquare) ; - costheta = DeltaKineticEnergy * (TotalEnergy + electron_mass_c2) - /(DeltaTotalMomentum * TotalMomentum) ; - - // protection against costheta > 1 or < -1 --------------- - - if ( costheta < -1. ) - costheta = -1. ; - if ( costheta > +1. ) - costheta = +1. ; - - // direction of the delta electron ........ - - phi = twopi * G4UniformRand() ; - sintheta = sqrt((1.+costheta)*(1.-costheta)); - dirx = sintheta * cos(phi) ; - diry = sintheta * sin(phi) ; - dirz = costheta ; - - G4ThreeVector DeltaDirection(dirx,diry,dirz) ; - DeltaDirection.rotateUz(ParticleDirection) ; - - // create G4DynamicParticle object for delta ray - - G4DynamicParticle *theDeltaRay = new G4DynamicParticle; - - theDeltaRay->SetKineticEnergy( DeltaKineticEnergy ); - - theDeltaRay->SetMomentumDirection( - DeltaDirection.x(),DeltaDirection.y(),DeltaDirection.z()); - theDeltaRay->SetDefinition(G4Electron::Electron()); - - // fill aParticleChange - - finalKineticEnergy = KineticEnergy - DeltaKineticEnergy ; - if (finalKineticEnergy > 0. ) - { - finalPx = TotalMomentum*ParticleDirection.x() - - DeltaTotalMomentum*DeltaDirection.x(); - finalPy = TotalMomentum*ParticleDirection.y() - - DeltaTotalMomentum*DeltaDirection.y(); - finalPz = TotalMomentum*ParticleDirection.z() - - DeltaTotalMomentum*DeltaDirection.z(); - finalMomentum = - sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz) ; - finalPx /= finalMomentum ; - finalPy /= finalMomentum ; - finalPz /= finalMomentum ; - - aParticleChange.SetMomentumChange( finalPx,finalPy,finalPz ); - } - else - { - finalKineticEnergy = 0. ; - aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetEnergyChange( finalKineticEnergy ); - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( theDeltaRay ); - aParticleChange.SetLocalEnergyDeposit (0.); - - // ResetNumberOfInteractionLengthLeft(); - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - -} diff --git a/source/processes/electromagnetic/integral/src/G4IMuPairProduction.cc b/source/processes/electromagnetic/integral/src/G4IMuPairProduction.cc deleted file mode 100644 index 3dba2d5f50..0000000000 --- a/source/processes/electromagnetic/integral/src/G4IMuPairProduction.cc +++ /dev/null @@ -1,1431 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMuPairProduction.cc,v 1.1.2.2 2001/06/28 20:19:20 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4IMuPairProduction physics process --------- -// by Laszlo Urban, May 1998 -// ************************************************************** -// 04-06-98, in DoIt, secondary production condition: range>G4std::min(threshold,safety) -// -------------------------------------------------------------- - -#include "G4IMuPairProduction.hh" -#include "G4EnergyLossTables.hh" - -// static members ........ -G4PhysicsTable* G4IMuPairProduction::themuplusLambdaTable = NULL ; -G4PhysicsTable* G4IMuPairProduction::themuminusLambdaTable = NULL ; - -G4int G4IMuPairProduction::nzdat = 5 ; -G4double G4IMuPairProduction::zdat[]={1.,4.,13.,29.,92.}; -G4int G4IMuPairProduction::ntdat = 8 ; -G4double G4IMuPairProduction::tdat[]={1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10}; -G4int G4IMuPairProduction::NBIN = 100 ; //500 ; -G4double G4IMuPairProduction::ya[1000]={0.}; -G4double G4IMuPairProduction::proba[5][8][1000]={0.}; - -// constructor - -G4IMuPairProduction::G4IMuPairProduction(const G4String& processName) - : G4VIMuEnergyLoss("IMuPairProduction"), // initialization - LowestKineticEnergy (1.*keV), - HighestKineticEnergy (1000000.*TeV), - TotBin(200), - MinKineticEnergy (1.*GeV), - MinCutValue (1.*keV), - NumberOfBuildPhysicsTableCalls(0), - theElectron (G4Electron::Electron() ), - thePositron (G4Positron::Positron() ), - theMuonMinus ( G4MuonMinus::MuonMinus() ), - theMuonPlus ( G4MuonPlus::MuonPlus() ) -{ - - theMeanFreePathTable = NULL ; - - G4cout << G4endl ; - G4cout << "****************************************************************" << G4endl; - G4cout << "****************************************************************" << G4endl; - G4cout << "** **" << G4endl; - G4cout << "** G4IMuPairProduction : **" << G4endl; - G4cout << "** cross section/energy loss is calculated using **" << G4endl; - G4cout << "** the accurate cross section formula of R.Kokoulin, **" << G4endl; - G4cout << "** ( building the tables takes a lot of time, **" << G4endl; - G4cout << "** PLEASE BE PATIENT ! ) **" << G4endl; - G4cout << "** sampling of the energy of the pair is generated **" << G4endl; - G4cout << "** according to the sampling tables. **" << G4endl; - G4cout << "** **" << G4endl; - G4cout << "****************************************************************" << G4endl; - G4cout << "****************************************************************" << G4endl; -} - -// destructor - -G4IMuPairProduction::~G4IMuPairProduction() -{ - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - if (&PartialSumSigma) { - PartialSumSigma.clearAndDestroy(); - } -} - - -// methods............................................................................. - -void G4IMuPairProduction::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable -{ - NumberOfBuildPhysicsTableCalls += 1 ; - if(NumberOfBuildPhysicsTableCalls == 1) - { - ParticleMass = aParticleType.GetPDGMass() ; - - // make tables ........ - - BuildLossTable(aParticleType) ; - - if(&aParticleType==theMuonMinus) - { - RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable ; - CounterOfmuminusProcess++; - } - else - { - RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable ; - CounterOfmuplusProcess++; - } - - BuildLambdaTable(aParticleType) ; - - MakeSamplingTables(&aParticleType) ; - - G4VIMuEnergyLoss::BuildDEDXTable(aParticleType) ; - } - else - { - - BuildNlambdaTable(aParticleType) ; - - BuildCoeffATable(aParticleType) ; - BuildCoeffBTable(aParticleType) ; - BuildCoeffCTable(aParticleType) ; - - BuildInverseNlambdaTable(aParticleType) ; - - G4int printflag = 0 ; - if(printflag>0) - TestOfInversion(aParticleType,printflag) ; - - NumberOfBuildPhysicsTableCalls = 0 ; - } - -} - -void G4IMuPairProduction::TestOfInversion( - const G4ParticleDefinition& aParticleType, - G4int printflag) -{ - G4double T,Nlambda,Tprime,delta,del,sum,delmean,Tdelta ; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - G4cout.setf(G4std::ios::scientific, G4std::ios::floatfield) ; - if(printflag>1) - { - G4cout << G4endl; - G4cout << " particle=" << aParticleType.GetParticleName() << G4endl; - G4cout << "----------------------" << G4endl; - } - for (G4int J=0; J1) - { - G4cout << G4endl; - G4cout << " material = " << (*theMaterialTable)[J]->GetName() << G4endl; - G4cout << " mat.ind.=" << J << " T Nlambda Tprime" - << " (Tprime-T)/T(%)" << G4endl ; - } - - G4PhysicsLogVector* aVector ; - - aVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin) ; - delta = 0. ; - delmean = 0.; - sum = 0.; - Tdelta = 0. ; - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - Nlambda = (*theNlambdaTable)[J]->GetValue(T,isOut) ; - - if(Nlambda>0.) - { - Tprime = (*theInverseNlambdaTable)[J]->GetValue(Nlambda,isOut) ; - - if((Nlambda>0.)&&(i<(TotBin-1))) - { - del = 100.*(Tprime-T)/T ; - sum += 1.; - delmean += abs(del); - if(abs(del)>abs(delta)) - { - delta = del ; - Tdelta = T ; - } - } - if(printflag>1) - { - G4cout << G4std::setw(18) << G4std::setprecision(6) << T << " " << - G4std::setw(14)<< G4std::setprecision(6) << Nlambda << " " << - G4std::setw(14) << G4std::setprecision(6) << Tprime << " " << - G4std::setw(12) << G4std::setprecision(3) << del << G4endl; - } - } - } - if(printflag>0) - { - G4cout << G4endl; - G4cout << "G4IMuPairProduction::TestOfInversion (T->Nlambda->Tprime) " << G4endl ; - G4cout << "particle= " << aParticleType.GetParticleName() << - " material= " << (*theMaterialTable)[J]->GetName() << G4endl ; - G4cout << "max (Tprime-T)/T in % =" << G4std::setw(10) << G4std::setprecision(3) << delta -; - G4cout << " at a kinetic energy " << G4std::setw(10) << G4std::setprecision(3) << - Tdelta/MeV << " MeV" << G4endl; - delmean /= sum ; - G4cout << "mean rel.diff. (Tprime-T)/T=" << G4std::setw(10) << - G4std::setprecision(3) << delmean << - " % (mean is calculated in abs. value)" << G4endl; - G4cout << G4endl; - } - } - -} - -void G4IMuPairProduction::BuildNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if(theNlambdaTable) - { theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable ; } - - theNlambdaTable = new G4PhysicsTable(numOfMaterials) ; - - // loop for materials - for (G4int J=0; Jinsert(aVector) ; - } - -} -void G4IMuPairProduction::BuildNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdgeEnergy,T,Tlast,dEdx,Value,Vlast,u,du,coeff ; - G4double thresholdEnergy ; - const G4int nbin = 100 ; - G4bool isOut ; - const G4double small = 1.e-10; - const G4double plowloss = 0.5 ; //this should be a data member of en.loss! - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - // it is a lower limit for the threshold energy ....????? - thresholdEnergy = MinKineticEnergy ; - - // here assumed that the threshold energy for the process >= - // LowestKineticEnergy (temporarily ) - if(thresholdEnergy >= LowestKineticEnergy) - { - Value = 0. ; - } - else - { - // extrapolation needed .................. - //first integral from thresholdEnergy to LowestKineticEnergy - Value = 0. ; - } - - nlambdaVector->PutValue(0,Value) ; - Tlast = LowestKineticEnergy ; - Vlast = Value ; - - // loop for kinetic energy - for (G4int i=1; iGetLowEdgeEnergy(i) ; - - Value = 0. ; - - if(LowEdgeEnergy > thresholdEnergy) - { - u = log(LowEdgeEnergy/Tlast) ; - du = u/nbin ; - - u = -du ; - for(G4int n=0; n<=nbin; n++) - { - u += du ; - T = Tlast*exp(u) ; - - if((n==0)||(n==nbin)) - coeff=0.5 ; - else - coeff=1.0 ; - - Value += coeff*T/(G4EnergyLossTables::GetPreciseDEDX(&aParticleType, - T,(*theMaterialTable)[materialIndex])* - (*theMeanFreePathTable)[materialIndex]->GetValue(T,isOut)) -; - } - - Value *= du ; - Value += Vlast ; - if(ValuePutValue(i,Value) ; - - Tlast = LowEdgeEnergy ; - Vlast = Value ; - - } - -} -void G4IMuPairProduction::BuildCoeffATable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); -// create table for coefficients "A" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffATable) - { theCoeffATable->clearAndDestroy(); - delete theCoeffATable; } - theCoeffATable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if( i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - else - Value = 0. ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffATable->insert(aVector); - - } - -} -void G4IMuPairProduction::BuildCoeffBTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "B" - - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffBTable) - { theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; } - theCoeffBTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - else - Value = RTable*(Ri-Rim)/((RTable-1.)*Ti) ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffBTable->insert(aVector); - - } - -} -void G4IMuPairProduction::BuildCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "C" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffCTable) - { theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; } - theCoeffCTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = w1*Rip + w2*Ri + w3*Rim ; - else - Value = (-Ri+RTable*Rim)/(RTable-1.) ; - - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffCTable->insert(aVector); - - } - -} -void G4IMuPairProduction::BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - G4double T,Smallest,Biggest ; - const G4double small = 1.e-10; - G4bool isOut ; - -// create table - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - - if(theInverseNlambdaTable) - { theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; } - theInverseNlambdaTable = new G4PhysicsTable(numOfMaterials); - -// loop for materials - - for (G4int J=0; J - GetValue(T,isOut) ; - T *= RTable ; - } while ((Smallest <= small)&&(T - GetValue(HighestKineticEnergy,isOut) ; - - // inverse can be built for "meaningful" cut value only! - if(Smallest >= Biggest) - { - G4cout << G4endl ; - G4Exception( - "Cut value is too big , smaller value should be used !"); - } - - // create vector - G4PhysicsLogVector* aVector; - - aVector = new G4PhysicsLogVector(Smallest, - Biggest,TotBin); - - // fill the vector - - InvertNlambdaVector(aParticleType,J, aVector); - - // insert vector to the table - - theInverseNlambdaTable->insert(aVector); - - } - -} - -void G4IMuPairProduction::InvertNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdge,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double bin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for Nlambda values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - - if( bin < LowEdge ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - bin = (*theNlambdaTable)[materialIndex]->GetValue(Tbin,isOut) ; - } - while ((bin < LowEdge) && (binnumber < TotBin-2 )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy/RTable ; - else - { - A = (*(*theCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdge -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdge); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - - nlambdaVector->PutValue(i,KineticEnergy) ; - - } - -} - - -void G4IMuPairProduction::BuildLossTable(const G4ParticleDefinition& aParticleType) -// build table for energy loss due to soft pairs -// tables are built for MATERIALS -// ********* -{ - G4double KineticEnergy,TotalEnergy,pairloss,Z, - loss,natom,eCut,pCut ; - - - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable(); - - const G4double SmallLoss = DBL_MIN ; - - ParticleMass = aParticleType.GetPDGMass() ; - ElectronCutInKineticEnergy = (*theElectron).GetEnergyCuts() ; - PositronCutInKineticEnergy = (*thePositron).GetEnergyCuts() ; - -// create table - - G4int numOfMaterials = theMaterialTable->length() ; - - if (theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - theLossTable = new G4PhysicsTable(numOfMaterials) ; - -// loop for materials - - for (G4int J=0; JGetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements = - material->GetNumberOfElements() ; - -// loop for the kinetic energy values - - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - TotalEnergy = KineticEnergy+ParticleMass ; - - eCut = ElectronCutInKineticEnergyNow ; - pCut = PositronCutInKineticEnergyNow ; - - if(eCut>KineticEnergy) - eCut = KineticEnergy ; - if(pCut>KineticEnergy) - pCut = KineticEnergy ; - - pairloss = 0.; - - // loop for elements in the material - - for (G4int iel=0; ielGetZ(); - natom = theAtomicNumDensityVector[iel] ; - - loss = ComputePairLoss(&aParticleType, - Z,KineticEnergy,eCut,pCut) ; - - pairloss += natom*loss ; - } - - if(pairloss<0.) - pairloss = SmallLoss ; - - aVector->PutValue(i,pairloss); - } - - theLossTable->insert(aVector); - } -} - - -G4double G4IMuPairProduction::ComputePairLoss( - const G4ParticleDefinition* ParticleType, - G4double AtomicNumber, - G4double KineticEnergy, - G4double ElectronEnergyCut, - G4double PositronEnergyCut) - -// compute loss due to soft pairs -{ - G4double sqrte = sqrt(exp(1.)) ; - G4double z13 = exp(log(AtomicNumber)/3.) ; - - G4double loss = 0.0 ; - - if ( AtomicNumber < 1. ) return loss; - if ( KineticEnergy < MinKineticEnergy ) return loss; - - G4double CutInPairEnergy = ElectronEnergyCut+PositronEnergyCut - +2.*electron_mass_c2 ; - G4double MinPairEnergy = 4.*electron_mass_c2 ; - if( CutInPairEnergy <= MinPairEnergy ) return loss ; - - G4double MaxPairEnergy = KineticEnergy+ParticleMass*(1.-0.75*sqrte*z13) ; - if( CutInPairEnergy >= MaxPairEnergy ) - CutInPairEnergy = MaxPairEnergy ; - - G4double aaa,bbb,hhh,x,ep ; - G4int kkk ; - // calculate the rectricted loss - // numerical integration in log(PairEnergy) - aaa = log(MinPairEnergy) ; - bbb = log(CutInPairEnergy) ; - kkk = int((bbb-aaa)/0.05)+1 ; - hhh = (bbb-aaa)/kkk ; - - for (G4int l=0 ; lclearAndDestroy(); - delete theMeanFreePathTable; - } - theMeanFreePathTable = new G4PhysicsTable( G4Material::GetNumberOfMaterials() ) ; - PartialSumSigma.clearAndDestroy(); - PartialSumSigma.resize(G4Material::GetNumberOfMaterials()); - - if(&ParticleType == theMuonPlus ) - themuplusLambdaTable = theMeanFreePathTable ; - if(&ParticleType == theMuonMinus ) - themuminusLambdaTable = theMeanFreePathTable ; - - G4PhysicsLogVector* ptrVector; - for ( G4int J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) - { - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestKineticEnergy, HighestKineticEnergy, - TotBin ) ; - - const G4Material* material= (*theMaterialTable)[J]; - - for ( G4int i = 0 ; i < TotBin ; i++ ) - { - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeMeanFreePath( &ParticleType, LowEdgeEnergy, - material ); - ptrVector->PutValue( i , Value ) ; - } - - theMeanFreePathTable->insertAt( J , ptrVector ); - - // Compute the PartialSumSigma table at a given fixed energy - ComputePartialSumSigma( &ParticleType, FixedEnergy, material) ; - } -} - -void G4IMuPairProduction::ComputePartialSumSigma(const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial) - -// build the table of cross section per element. The table is built for MATERIALS. -// This table is used by DoIt to select randomly an element in the material. -{ - G4int Imate = aMaterial->GetIndex(); - G4int NbOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double ElectronEnergyCut = (G4Electron::GetCutsInEnergy())[Imate]; - G4double PositronEnergyCut = (G4Positron::GetCutsInEnergy())[Imate]; - - PartialSumSigma[Imate] = new G4DataVector(); - - G4double SIGMA = 0. ; - - for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ) - { - SIGMA += theAtomNumDensityVector[Ielem] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), - ElectronEnergyCut,PositronEnergyCut ); - - PartialSumSigma[Imate]->push_back(SIGMA); - } -} - -G4double G4IMuPairProduction::ComputeMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, G4double AtomicNumber, - G4double ElectronEnergyCut, - G4double PositronEnergyCut) - -// Calculates the microscopic (TOTAL)cross section in GEANT4 internal units. -// - -{ - - G4double sqrte = sqrt(exp(1.)) ; - G4double z13 = exp(log(AtomicNumber)/3.) ; - - G4double CrossSection = 0.0 ; - - if ( AtomicNumber < 1. ) return CrossSection; - if ( KineticEnergy < MinKineticEnergy ) return CrossSection; - - G4double CutInPairEnergy = ElectronEnergyCut+PositronEnergyCut - +2.*electron_mass_c2 ; - - if( CutInPairEnergy < 4.*electron_mass_c2 ) - CutInPairEnergy = 4.*electron_mass_c2 ; - - G4double MaxPairEnergy = KineticEnergy+ParticleMass*(1.-0.75*sqrte*z13) ; - if( CutInPairEnergy >= MaxPairEnergy ) return CrossSection ; - - G4double aaa,bbb,hhh,x,ep ; - G4int kkk ; - // calculate the total cross section - // numerical integration in log(PairEnergy) - aaa = log(CutInPairEnergy) ; - bbb = log(MaxPairEnergy) ; - kkk = int((bbb-aaa)/0.05)+1 ; - hhh = (bbb-aaa)/kkk ; - - for (G4int l=0 ; l 0.) - { - - G4double e,x,logx,prob,fx ; - G4double plast = 0.; - G4double xlast= 0.; - - for(G4int ib=0; ib<=nbin; ib++) - { - prbin[ib] /= CrossSection ; - proba[iz][it][ib] /= CrossSection ; - - prob = prbin[ib] ; - e=epbin[ib] ; - x = xbin[ib] ; - logx = log(x) ; - fx=(prob-plast)/(x-xlast); - if(ib == 0) - fx /= 2. ; - plast = prob ; - xlast = x; - } - } - } - } - - } - -} - - -G4double G4IMuPairProduction::ComputeDDMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, G4double AtomicNumber, - G4double PairEnergy,G4double asymmetry) - // Calculates the double differential (DD) microscopic cross section - // using the cross section formula of R.P. Kokoulin (18/01/98) -{ - G4double sqrte = sqrt(exp(1.)) ; - - G4double bbbtf= 183. ; - G4double bbbh = 202.4 ; - G4double g1tf = 1.95e-5 ; - G4double g2tf = 5.3e-5 ; - G4double g1h = 4.4e-5 ; - G4double g2h = 4.8e-5 ; - - G4double massratio = ParticleMass/electron_mass_c2 ; - G4double massratio2 = massratio*massratio ; - G4double TotalEnergy = KineticEnergy + ParticleMass ; - G4double z13 = exp(log(AtomicNumber)/3.) ; - G4double z23 = z13*z13 ; - G4double EnergyLoss = TotalEnergy - PairEnergy ; - - G4double c3 = 3.*sqrte*ParticleMass/4. ; - - G4double DDCrossSection = 0. ; - - if(EnergyLoss <= c3*z13) - return DDCrossSection ; - - G4double c7 = 4.*electron_mass_c2 ; - G4double c8 = 6.*ParticleMass*ParticleMass ; - G4double alf = c7/PairEnergy ; - G4double a3 = 1. - alf ; - - if(a3 <= 0.) - return DDCrossSection ; - - // zeta calculation - G4double bbb,g1,g2,zeta1,zeta2,zeta,z2 ; - if( AtomicNumber < 1.5 ) - { - bbb = bbbh ; - g1 = g1h ; - g2 = g2h ; - } - else - { - bbb = bbbtf ; - g1 = g1tf ; - g2 = g2tf ; - } - zeta1 = 0.073 * log(TotalEnergy/(ParticleMass+g1*z23*TotalEnergy))-0.26 ; - if( zeta1 > 0.) - { - zeta2 = 0.058*log(TotalEnergy/(ParticleMass+g2*z13*TotalEnergy))-0.14 ; - zeta = zeta1/zeta2 ; - } - else - { - zeta = 0. ; - } - - z2 = AtomicNumber*(AtomicNumber+zeta) ; - - G4double screen0 = 2.*electron_mass_c2*sqrte*bbb/(z13*PairEnergy) ; - G4double a0 = TotalEnergy*EnergyLoss ; - G4double a1 = PairEnergy*PairEnergy/a0 ; - G4double bet = 0.5*a1 ; - G4double xi0 = 0.25*massratio2*a1 ; - G4double del = c8/a0 ; - // G4double tmn = log((alf+2.*del*a3)/(1.+(1.-del)*sqrt(a3))) ; - - G4double romin = 0. ; - G4double romax = (1.-del)*sqrt(1.-c7/PairEnergy) ; - - if((asymmetry < romin) || (asymmetry > romax)) - return DDCrossSection ; - - G4double a4 = 1.-asymmetry ; - G4double a5 = a4*(2.-a4) ; - G4double a6 = 1.-a5 ; - G4double a7 = 1.+a6 ; - G4double a9 = 3.+a6 ; - G4double xi = xi0*a5 ; - G4double xii = 1./xi ; - G4double xi1 = 1.+xi ; - G4double screen = screen0*xi1/a5 ; - - G4double yeu = 5.-a6+4.*bet*a7 ; - G4double yed = 2.*(1.+3.*bet)*log(3.+xii)-a6-a1*(2.-a6) ; - G4double yel = 1.+yeu/yed ; - G4double ale=log(bbb/z13*sqrt(xi1*yel)/(1.+screen*yel)) ; - G4double cre = 0.5*log(1.+2.25/(massratio2*z23)*xi1*yel) ; - G4double be ; - if(xi <= 1.e3) - be = ((2.+a6)*(1.+bet)+xi*a9)*log(1.+xii)+(a5-bet)/xi1-a9; - else - be = (3.-a6+a1*a7)/(2.+xi) ; - G4double fe = (ale-cre)*be ; - if( fe < 0.) - fe = 0. ; - - G4double ymu = 4.+a6 +3.*bet*a7 ; - G4double ymd = a7*(1.5+a1)*log(3.+xi)+1.-1.5*a6 ; - G4double ym1 = 1.+ymu/ymd ; - G4double alm_crm = log(bbb*massratio/(1.5*z23*(1.+screen*ym1))) ; - G4double a10,bm ; - if( xi >= 1.e-3) - { - a10 = (1.+a1)*a5 ; - bm = (a7*(1.+1.5*bet)-a10*xii)*log(xi1)+xi*(a5-bet)/xi1+a10 ; - } - else - bm = (5.-a6+bet*a9)*(xi/2.) ; - G4double fm = alm_crm*bm ; - if( fm < 0.) - fm = 0. ; - - DDCrossSection = (fe+fm/massratio2) ; - - DDCrossSection *= 4.*fine_structure_const*fine_structure_const - *classic_electr_radius*classic_electr_radius/(3.*pi) ; - - DDCrossSection *= z2*EnergyLoss/(TotalEnergy*PairEnergy) ; - - - return DDCrossSection ; - -} - -G4double G4IMuPairProduction::ComputeDMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, G4double AtomicNumber, - G4double PairEnergy) - // Calculates the double differential (D) microscopic cross section - // using the cross section formula of R.P. Kokoulin (18/01/98) -{ - - static const G4double - xgi[] ={ 0.0199,0.1017,0.2372,0.4083,0.5917,0.7628,0.8983,0.9801 }; - - static const G4double - wgi[] ={ 0.0506,0.1112,0.1569,0.1813,0.1813,0.1569,0.1112,0.0506 }; - - G4double TotalEnergy = KineticEnergy + ParticleMass ; - G4double EnergyLoss = TotalEnergy - PairEnergy ; - //G4double romax = (1.-6.*ParticleMass*ParticleMass/(TotalEnergy*EnergyLoss)) - // *sqrt(1.-4.*electron_mass_c2/PairEnergy) ; - //G4double tmn = log(1.-romax) ; - G4double a = 6.*ParticleMass*ParticleMass/(TotalEnergy*EnergyLoss) ; - G4double b = 4.*electron_mass_c2/PairEnergy ; - G4double tmn=log((b+2.*a*(1.-b))/(1.+(1.-a)*sqrt(1.-b))) ; - - G4double DCrossSection = 0. ; - G4double ro ; -// Gaussian integration in ln(1-ro) ( with 8 points) - for (G4int i=0; i<7; i++) - { - ro = 1.-exp(tmn*xgi[i]) ; - - DCrossSection += (1.-ro)*ComputeDDMicroscopicCrossSection( - ParticleType,KineticEnergy, - AtomicNumber,PairEnergy,ro) - *wgi[i] ; - } - - DCrossSection *= -tmn ; - - return DCrossSection ; - -} - - - - -G4VParticleChange* G4IMuPairProduction::PostStepDoIt(const G4Track& trackData, - const G4Step& stepData) -{ - static const G4double esq = sqrt(exp(1.)); - - static const G4double MassRatio=ParticleMass/electron_mass_c2 ; - - aParticleChange.Initialize(trackData); - G4Material* aMaterial=trackData.GetMaterial() ; - - const G4DynamicParticle* aDynamicParticle=trackData.GetDynamicParticle(); - - G4double KineticEnergy = aDynamicParticle->GetKineticEnergy(); - G4ParticleMomentum ParticleDirection = aDynamicParticle->GetMomentumDirection(); - - // e-e+ cut in this material - G4double ElectronEnergyCut = (G4Electron::GetCutsInEnergy())[aMaterial->GetIndex()]; - G4double PositronEnergyCut = (G4Electron::GetCutsInEnergy())[aMaterial->GetIndex()]; - G4double CutInPairEnergy = ElectronEnergyCut + PositronEnergyCut ; - G4double MinPairEnergy = 4.*electron_mass_c2 ; - if (CutInPairEnergy < MinPairEnergy) CutInPairEnergy = MinPairEnergy ; - - // check against insufficient energy - if (KineticEnergy < CutInPairEnergy ) - { - aParticleChange.SetMomentumChange( ParticleDirection ); - aParticleChange.SetEnergyChange( KineticEnergy ); - aParticleChange.SetLocalEnergyDeposit (0.); - aParticleChange.SetNumberOfSecondaries(0); - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - - // select randomly one element constituing the material - G4Element* anElement = SelectRandomAtom(aMaterial); - - // limits of the energy sampling - G4double TotalEnergy = KineticEnergy + ParticleMass ; - G4double TotalMomentum = sqrt(KineticEnergy*(TotalEnergy+ParticleMass)) ; - G4double Z3 = anElement->GetIonisation()->GetZ3() ; - G4double MaxPairEnergy = TotalEnergy-0.75*esq*ParticleMass*Z3 ; - - if(MinPairEnergy >= MaxPairEnergy) - { - aParticleChange.SetMomentumChange( ParticleDirection ); - aParticleChange.SetEnergyChange( KineticEnergy ); - aParticleChange.SetLocalEnergyDeposit (0.); - aParticleChange.SetNumberOfSecondaries(0); - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - - // sample e-e+ energy, pair energy first - // sampling using tables (it have to be accelerated) - G4double PairEnergy,xc,x,yc,y ; - G4int iZ,iT,iy ; - - // select sampling table ; - G4double lnZ = log(anElement->GetZ()) ; - G4double delmin = 1.e10 ; - G4double del ; - G4int izz,itt,NBINminus1 ; - NBINminus1 = NBIN-1 ; - for (G4int iz=0; iz= G4std::min(G4Electron::GetCuts(),stepData.GetPostStepPoint()->GetSafety()) ) - { - numberofsecondaries += 1 ; - flagelectron = 1 ; - ElectronMomentum = sqrt(ElectKineEnergy*(ElectronEnergy+electron_mass_c2)); - G4ThreeVector ElectDirection ( dirx, diry, dirz ); - ElectDirection.rotateUz(ParticleDirection); - - // create G4DynamicParticle object for the particle1 - aParticle1= new G4DynamicParticle (G4Electron::Electron(), - ElectDirection, ElectKineEnergy); - } - else - { LocalEnerDeposit += ElectKineEnergy ; } - - // the e+ is always created (even with Ekine=0) for further annihilation. - - G4double PositKineEnergy = PositronEnergy - electron_mass_c2 ; - PositronMomentum = sqrt(PositKineEnergy*(PositronEnergy+electron_mass_c2)); - - if (G4EnergyLossTables::GetRange(G4Positron::Positron(),PositKineEnergy,aMaterial) - < G4std::min(G4Positron::GetCuts(),stepData.GetPostStepPoint()->GetSafety()) ) - { - LocalEnerDeposit += PositKineEnergy ; - PositKineEnergy = 0. ; - } - G4ThreeVector PositDirection ( -dirx, -diry, dirz ); - PositDirection.rotateUz(ParticleDirection); - - // create G4DynamicParticle object for the particle2 - aParticle2= new G4DynamicParticle (G4Positron::Positron(), - PositDirection, PositKineEnergy); - - // fill particle change and update initial particle - aParticleChange.SetNumberOfSecondaries(numberofsecondaries) ; - if(flagelectron==1) - aParticleChange.AddSecondary( aParticle1 ) ; - if(flagpositron==1) - aParticleChange.AddSecondary( aParticle2 ) ; - - G4double NewKinEnergy = KineticEnergy - ElectronEnergy - PositronEnergy ; - G4double finalMomentum=sqrt(NewKinEnergy* - (NewKinEnergy+2.*ParticleMass)) ; - - aParticleChange.SetMomentumChange( ParticleDirection ); - - G4double KinEnergyCut = - (aDynamicParticle->GetDefinition()->GetEnergyCuts())[aMaterial->GetIndex()]; - - if (NewKinEnergy > KinEnergyCut) - { - aParticleChange.SetEnergyChange( NewKinEnergy ); - } - else - { - aParticleChange.SetEnergyChange(0.); - LocalEnerDeposit += NewKinEnergy ; - aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetLocalEnergyDeposit( LocalEnerDeposit ) ; - - - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); -} - -G4Element* G4IMuPairProduction::SelectRandomAtom(G4Material* aMaterial) const -{ - // select randomly 1 element within the material - - const G4int Index = aMaterial->GetIndex(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - - G4double rval = G4UniformRand()*((*PartialSumSigma[Index])[NumberOfElements-1]); - - for ( G4int i=0; i < NumberOfElements; i++ ) - { - - if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)(i)); - } - G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() - << "' has no elements, NULL pointer returned." << G4endl; - return NULL; -} diff --git a/source/processes/electromagnetic/integral/src/G4IMultipleScattering.cc b/source/processes/electromagnetic/integral/src/G4IMultipleScattering.cc deleted file mode 100644 index ab420d86ce..0000000000 --- a/source/processes/electromagnetic/integral/src/G4IMultipleScattering.cc +++ /dev/null @@ -1,834 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IMultipleScattering.cc,v 1.1.2.2 2001/06/28 20:19:20 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4IMultipleScattering physics process ------------ -// by Laszlo Urban, October 1997 -// ************************************************************** -// 09/12/98: charge can be != +- 1 !!!! L.Urban -// ************************************************************ -// It is the first implementation of the -// MULTIPLESCATTERING PROCESS -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ************************************************************ -// by Laszlo Urban, 23 June 1998 -// --------------------------------------------------------------- -// 27/10/98: cleanup , L. Urban - -#include "G4IMultipleScattering.hh" -#include "G4UnitsTable.hh" - - G4IMultipleScattering::G4IMultipleScattering(const G4String& processName) - : G4VContinuousDiscreteProcess(processName), - theTransportMeanFreePathTable(NULL), - theIntegralITable(NULL), - theIntegralJTable(NULL), - lastMaterial(NULL), - lastKineticEnergy(-1.*MeV), - fTransportMeanFreePath(1.e12), - LowestKineticEnergy(0.1*keV), - HighestKineticEnergy(100.*TeV), - TotBin(100), - NumberOfBuildPhysicsTableCalls(0), - theElectron(G4Electron::Electron()), - thePositron(G4Positron::Positron()), - plowloss ( 0.5 ), - plowlambda ( 0.4 ), - tLast (0.0), - zLast (0.0), - CosTheta (1.0), - biglambda ( 1.e10*mm), - tuning(1.0) - { } - - G4IMultipleScattering::~G4IMultipleScattering() - { - if(theTransportMeanFreePathTable) - { - theTransportMeanFreePathTable->clearAndDestroy() ; - delete theTransportMeanFreePathTable ; - } - if(theIntegralITable) - { - theIntegralITable->clearAndDestroy() ; - delete theIntegralITable ; - } - if(theIntegralJTable) - { - theIntegralJTable->clearAndDestroy() ; - delete theIntegralJTable ; - } - } - - void G4IMultipleScattering::BuildPhysicsTable( - const G4ParticleDefinition& aParticleType) - - { - NumberOfBuildPhysicsTableCalls += 1 ; - if(NumberOfBuildPhysicsTableCalls == 1) - { ; } - else - { - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - const G4double sigmafactor = twopi*classic_electr_radius* - classic_electr_radius ; - G4double KineticEnergy,AtomicNumber,sigma,lambda ; - G4double density ; - - if(theTransportMeanFreePathTable) - { - theTransportMeanFreePathTable->clearAndDestroy() ; - delete theTransportMeanFreePathTable ; - } - - G4int numOfMaterials = theMaterialTable->length() ; - - theTransportMeanFreePathTable = new G4PhysicsTable(numOfMaterials) ; - - for (G4int J=0; JGetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements = - material->GetNumberOfElements() ; - density = material->GetDensity() ; - - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - sigma = 0. ; - - for (G4int iel=0; ielGetZ() ; - sigma += theAtomicNumDensityVector[iel]* - ComputeTransportCrossSection(aParticleType, - KineticEnergy,AtomicNumber) ; - } - - sigma *= sigmafactor ; - - lambda = 1./sigma ; - - aVector->PutValue(i,lambda) ; - - } - - theTransportMeanFreePathTable->insert(aVector) ; - - } - - BuildIntegralITable(aParticleType) ; - BuildIntegralJTable(aParticleType) ; - - NumberOfBuildPhysicsTableCalls = 0 ; - - if( (&aParticleType == G4Electron::Electron()) || - (&aParticleType == G4MuonPlus::MuonPlus()) || - (&aParticleType == G4Proton::Proton()) ) - { - PrintInfoDefinition() ; - } - - } - } - - void G4IMultipleScattering::BuildIntegralITable( - const G4ParticleDefinition& aParticleType) - { - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - G4Material* aMaterial ; - G4double fmin,lmin,Value,KineticEnergy,lambda,Tlast,Vlast ; - G4double u,umax,du,t,coeff,dEdx ; - G4int n,nmax ; - G4bool isOut ; - const G4int nb = 100 ; - G4double rmin ; - - if(theIntegralITable) - { - theIntegralITable->clearAndDestroy() ; - delete theIntegralITable ; - } - - G4int numOfMaterials = theMaterialTable->length() ; - - theIntegralITable = new G4PhysicsTable(numOfMaterials) ; - - for (G4int J=0; J - GetValue(LowestKineticEnergy,isOut) ; - - // this value comes from z=r*l/(r+l) = exp(-I) !!! - Value = -log(rmin*lmin/(rmin+lmin)) ; - - aVector->PutValue(0,Value) ; - Tlast = LowestKineticEnergy ; - Vlast = Value ; - for (G4int i=1; iGetLowEdgeEnergy(i) ; - umax = log(KineticEnergy/Tlast) ; - nmax = int(nb*umax + 0.5) ; - if(nmax<1) - nmax = 1 ; - du = umax/nmax ; - Value = 0. ; - u = -du ; - for(n=0; n<=nmax; n++) - { - u += du ; - t = Tlast*exp(u) ; - lambda = (*theTransportMeanFreePathTable)(J)-> - GetValue(t,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(&aParticleType, - t,aMaterial) ; - if((n == 0) || (n == nmax)) - coeff = 0.5 ; - else - coeff = 1. ; - Value += coeff*t/(dEdx*lambda) ; - } - Value *= du ; - Value += Vlast ; - aVector->PutValue(i,Value) ; - Tlast = KineticEnergy ; - Vlast = Value ; - } - theIntegralITable->insert(aVector) ; - } - } - - void G4IMultipleScattering::BuildIntegralJTable( - const G4ParticleDefinition& aParticleType) - { - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - G4Material* aMaterial ; - G4double rmin,lmin,Value,KineticEnergy,lambda,Tlast,Vlast ; - G4double u,umax,du,t,coeff,dEdx,w,ww ; - G4double cmin,lndu ; - G4int n,nmax ; - G4bool isOut ; - const G4int nb = 100 ; - - if(theIntegralJTable) - { - theIntegralJTable->clearAndDestroy() ; - delete theIntegralJTable ; - } - - G4int numOfMaterials = theMaterialTable->length() ; - theIntegralJTable = new G4PhysicsTable(numOfMaterials) ; - - for (G4int J=0; J - GetValue(LowestKineticEnergy,isOut) ; - Value = rmin*lmin/(rmin+lmin) ; - aVector->PutValue(0,Value) ; - Tlast = LowestKineticEnergy ; - Vlast = Value ; - for (G4int i=1; iGetLowEdgeEnergy(i) ; - umax = log(KineticEnergy/Tlast) ; - nmax =int(nb*umax + 0.5) ; - if(nmax<1) - nmax = 1 ; - du = umax/nmax ; - Value = 0. ; - u = -du ; - for(n=0; n<=nmax; n++) - { - u += du ; - t = Tlast*exp(u) ; - w = (*theIntegralITable)(J)-> - GetValue(t,isOut) ; - dEdx = G4EnergyLossTables::GetPreciseDEDX(&aParticleType, - t,aMaterial) ; - if((n == 0) || (n == nmax)) - coeff = 0.5 ; - else - coeff = 1. ; - Value += coeff*t*exp(w)/dEdx ; - } - Value *= du ; - w = (*theIntegralITable)(J)-> - GetValue(Tlast,isOut) ; - ww = (*theIntegralITable)(J)-> - GetValue(KineticEnergy,isOut) ; - Value *= exp(-ww) ; - Value += exp(w-ww)*Vlast ; - aVector->PutValue(i,Value) ; - Tlast = KineticEnergy ; - Vlast = Value ; - } - theIntegralJTable->insert(aVector) ; - } - } - - G4double G4IMultipleScattering::GetIntegralI( - const G4ParticleDefinition *aParticle, - G4double KineticEnergy, - G4Material* aMaterial) - { - G4double intI ; - G4bool isOut ; - if(KineticEnergy < LowestKineticEnergy) - { - intI = (*theIntegralITable)(aMaterial->GetIndex())-> - GetValue(LowestKineticEnergy,isOut) ; - intI *= exp((1.-plowloss-plowlambda)* - log(KineticEnergy/LowestKineticEnergy)) ; - } - else if(KineticEnergy <= HighestKineticEnergy) - { - intI = (*theIntegralITable)(aMaterial->GetIndex())-> - GetValue(KineticEnergy,isOut) ; - } - else - { - intI = (*theIntegralITable)(aMaterial->GetIndex())-> - GetValue(HighestKineticEnergy,isOut) ; - intI += (KineticEnergy-HighestKineticEnergy)/ - ((*theTransportMeanFreePathTable)(aMaterial->GetIndex())-> - GetValue(HighestKineticEnergy,isOut) - * - G4EnergyLossTables::GetPreciseDEDX(aParticle, - HighestKineticEnergy,aMaterial)) ; - } - return intI ; - } - - G4double G4IMultipleScattering::GetIntegralJ( - const G4ParticleDefinition *aParticle, - G4double KineticEnergy, - G4Material* aMaterial) - { - G4double intJ,lmin,lmax,fmax,Imin,Imin2,t ; - G4bool isOut ; - - if(KineticEnergy < LowestKineticEnergy) - { - lmin = (*theTransportMeanFreePathTable)(aMaterial->GetIndex())-> - GetValue(KineticEnergy,isOut) ; - Imin = (*theIntegralITable)(aMaterial->GetIndex())-> - GetValue(LowestKineticEnergy,isOut) ; - Imin2= Imin*Imin ; - t = exp(0.1*log(KineticEnergy/LowestKineticEnergy)) ; - - intJ = (((t-4./Imin)*t+12./Imin2)*t-24./(Imin*Imin2))*t+24./(Imin2*Imin2); - intJ -= 24.*exp(-Imin*t)/(Imin2*Imin2) ; - intJ *= lmin ; - } - else if(KineticEnergy <= HighestKineticEnergy) - { - intJ = (*theIntegralJTable)(aMaterial->GetIndex())-> - GetValue(KineticEnergy,isOut) ; - } - else - { - lmax = (*theTransportMeanFreePathTable)(aMaterial->GetIndex())-> - GetValue(HighestKineticEnergy,isOut) ; - fmax = G4EnergyLossTables::GetPreciseDEDX(aParticle, - HighestKineticEnergy,aMaterial) ; - intJ = lmax - (lmax-(*theIntegralJTable)(aMaterial->GetIndex())-> - GetValue(HighestKineticEnergy,isOut))* - exp((HighestKineticEnergy-KineticEnergy)/(fmax*lmax)) ; - } - - return intJ ; - } - - G4double G4IMultipleScattering::ComputeTransportCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber) - { - const G4double epsfactor = 2.*electron_mass_c2*electron_mass_c2* - Bohr_radius*Bohr_radius/(hbarc*hbarc) ; - const G4double epsmin = 1.e-4 , epsmax = 1.e10 ; - - const G4double cpar=1.50 ; - - const G4double Zdat[15] = {4.,6.,13.,20.,26.,29.,32.,38.,47., - 50.,56.,64.,74.,79.,82. } ; - - const G4double Tdat[22] = - { 0.0001*MeV,0.0002*MeV,0.0004*MeV,0.0007*MeV, - 0.001*MeV,0.002*MeV,0.004*MeV,0.007*MeV,0.01*MeV, - 0.02*MeV,0.04*MeV,0.07*MeV,0.1*MeV,0.2*MeV, - 0.4*MeV,0.7*MeV,1.*MeV,2.*MeV,4.*MeV, - 7.*MeV,10.*MeV,20.*MeV} ; - - // corr. factors for e-/e+ lambda - - const G4double celectron[15][22] = - {{1.125,1.072,1.051,1.047,1.047,1.050,1.052,1.054, - 1.054,1.057,1.062,1.069,1.075,1.090,1.105,1.111, - 1.112,1.108,1.100,1.093,1.089,1.087 }, - {1.408,1.246,1.143,1.096,1.077,1.059,1.053,1.051, - 1.052,1.053,1.058,1.065,1.072,1.087,1.101,1.108, - 1.109,1.105,1.097,1.090,1.086,1.082 }, - {2.833,2.268,1.861,1.612,1.486,1.309,1.204,1.156, - 1.136,1.114,1.106,1.106,1.109,1.119,1.129,1.132, - 1.131,1.124,1.113,1.104,1.099,1.098 }, - {3.879,3.016,2.380,2.007,1.818,1.535,1.340,1.236, - 1.190,1.133,1.107,1.099,1.098,1.103,1.110,1.113, - 1.112,1.105,1.096,1.089,1.085,1.098 }, - {6.937,4.330,2.886,2.256,1.987,1.628,1.395,1.265, - 1.203,1.122,1.080,1.065,1.061,1.063,1.070,1.073, - 1.073,1.070,1.064,1.059,1.056,1.056 }, - {9.616,5.708,3.424,2.551,2.204,1.762,1.485,1.330, - 1.256,1.155,1.099,1.077,1.070,1.068,1.072,1.074, - 1.074,1.070,1.063,1.059,1.056,1.052 }, - {11.72,6.364,3.811,2.806,2.401,1.884,1.564,1.386, - 1.300,1.180,1.112,1.082,1.073,1.066,1.068,1.069, - 1.068,1.064,1.059,1.054,1.051,1.050 }, - {18.08,8.601,4.569,3.183,2.662,2.025,1.646,1.439, - 1.339,1.195,1.108,1.068,1.053,1.040,1.039,1.039, - 1.039,1.037,1.034,1.031,1.030,1.036 }, - {18.22,10.48,5.333,3.713,3.115,2.367,1.898,1.631, - 1.498,1.301,1.171,1.105,1.077,1.048,1.036,1.033, - 1.031,1.028,1.024,1.022,1.021,1.024 }, - {14.14,10.65,5.710,3.929,3.266,2.453,1.951,1.669, - 1.528,1.319,1.178,1.106,1.075,1.040,1.027,1.022, - 1.020,1.017,1.015,1.013,1.013,1.020 }, - {14.11,11.73,6.312,4.240,3.478,2.566,2.022,1.720, - 1.569,1.342,1.186,1.102,1.065,1.022,1.003,0.997, - 0.995,0.993,0.993,0.993,0.993,1.011 }, - {22.76,20.01,8.835,5.287,4.144,2.901,2.219,1.855, - 1.677,1.410,1.224,1.121,1.073,1.014,0.986,0.976, - 0.974,0.972,0.973,0.974,0.975,0.987 }, - {50.77,40.85,14.13,7.184,5.284,3.435,2.520,2.059, - 1.837,1.512,1.283,1.153,1.091,1.010,0.969,0.954, - 0.950,0.947,0.949,0.952,0.954,0.963 }, - {65.87,59.06,15.87,7.570,5.567,3.650,2.682,2.182, - 1.939,1.579,1.325,1.178,1.108,1.014,0.965,0.947, - 0.941,0.938,0.940,0.944,0.946,0.954 }, - // {45.60,47.34,15.92,7.810,5.755,3.767,2.760,2.239, misprint? - {55.60,47.34,15.92,7.810,5.755,3.767,2.760,2.239, - 1.985,1.609,1.343,1.188,1.113,1.013,0.960,0.939, - 0.933,0.930,0.933,0.936,0.939,0.949 }}; - - const G4double cpositron[15][22] = { - {2.589,2.044,1.658,1.446,1.347,1.217,1.144,1.110, - 1.097,1.083,1.080,1.086,1.092,1.108,1.123,1.131, - 1.131,1.126,1.117,1.108,1.103,1.100 }, - {3.904,2.794,2.079,1.710,1.543,1.325,1.202,1.145, - 1.122,1.096,1.089,1.092,1.098,1.114,1.130,1.137, - 1.138,1.132,1.122,1.113,1.108,1.102 }, - {7.970,6.080,4.442,3.398,2.872,2.127,1.672,1.451, - 1.357,1.246,1.194,1.179,1.178,1.188,1.201,1.205, - 1.203,1.190,1.173,1.159,1.151,1.145 }, - {9.714,7.607,5.747,4.493,3.815,2.777,2.079,1.715, - 1.553,1.353,1.253,1.219,1.211,1.214,1.225,1.228, - 1.225,1.210,1.191,1.175,1.166,1.174 }, - {17.97,12.95,8.628,6.065,4.849,3.222,2.275,1.820, - 1.624,1.382,1.259,1.214,1.202,1.202,1.214,1.219, - 1.217,1.203,1.184,1.169,1.160,1.151 }, - {24.83,17.06,10.84,7.355,5.767,3.707,2.546,1.996, - 1.759,1.465,1.311,1.252,1.234,1.228,1.238,1.241, - 1.237,1.222,1.201,1.184,1.174,1.159 }, - {23.26,17.15,11.52,8.049,6.375,4.114,2.792,2.155, - 1.880,1.535,1.353,1.281,1.258,1.247,1.254,1.256, - 1.252,1.234,1.212,1.194,1.183,1.170 }, - {22.33,18.01,12.86,9.212,7.336,4.702,3.117,2.348, - 2.015,1.602,1.385,1.297,1.268,1.251,1.256,1.258, - 1.254,1.237,1.214,1.195,1.185,1.179 }, - {33.91,24.13,15.71,10.80,8.507,5.467,3.692,2.808, - 2.407,1.873,1.564,1.425,1.374,1.330,1.324,1.320, - 1.312,1.288,1.258,1.235,1.221,1.205 }, - {32.14,24.11,16.30,11.40,9.015,5.782,3.868,2.917, - 2.490,1.925,1.596,1.447,1.391,1.342,1.332,1.327, - 1.320,1.294,1.264,1.240,1.226,1.214 }, - {29.51,24.07,17.19,12.28,9.766,6.238,4.112,3.066, - 2.602,1.995,1.641,1.477,1.414,1.356,1.342,1.336, - 1.328,1.302,1.270,1.245,1.231,1.233 }, - {38.19,30.85,21.76,15.35,12.07,7.521,4.812,3.498, - 2.926,2.188,1.763,1.563,1.484,1.405,1.382,1.371, - 1.361,1.330,1.294,1.267,1.251,1.239 }, - {49.71,39.80,27.96,19.63,15.36,9.407,5.863,4.155, - 3.417,2.478,1.944,1.692,1.589,1.480,1.441,1.423, - 1.409,1.372,1.330,1.298,1.280,1.258 }, - {59.25,45.08,30.36,20.83,16.15,9.834,6.166,4.407, - 3.641,2.648,2.064,1.779,1.661,1.531,1.482,1.459, - 1.442,1.400,1.354,1.319,1.299,1.272 }, - {56.38,44.29,30.50,21.18,16.51,10.11,6.354,4.542, - 3.752,2.724,2.116,1.817,1.692,1.554,1.499,1.474, - 1.456,1.412,1.364,1.328,1.307,1.282 }}; - G4double Z23,ParticleMass,rat2,Charge,TotalEnergy,beta2,bg2, - eps,Z1,Z2,ratZ,T,E,b2small,b2big,ratb2,c1,c2,cc1,cc2, - corr,sigma,corrfactor,ChargeSquare ; - G4int iZ,iT ; - - Z23 = 2.*log(AtomicNumber)/3. ; - Z23 = exp(Z23) ; - - ParticleMass = aParticleType.GetPDGMass() ; - - rat2 = ParticleMass/electron_mass_c2 ; - rat2 = rat2*rat2 ; - - Charge = aParticleType.GetPDGCharge() ; - ChargeSquare = Charge*Charge/(eplus*eplus) ; - - TotalEnergy = KineticEnergy + ParticleMass ; - - beta2 = KineticEnergy*(TotalEnergy+ParticleMass)/ - (TotalEnergy*TotalEnergy) ; - bg2 = KineticEnergy*(TotalEnergy+ParticleMass)/ - (ParticleMass*ParticleMass) ; - - eps = rat2*epsfactor*bg2/Z23 ; - - if(eps=0)&&(Zdat[iZ]>=AtomicNumber)) - { - iZ -= 1 ; - } - if(iZ==14) - { - iZ = 13 ; - } - if(iZ==-1) - { - iZ = 0 ; - } - - Z1 = Zdat[iZ] ; - Z2 = Zdat[iZ+1] ; - ratZ = (AtomicNumber-Z1)/(Z2-Z1) ; - - // get bin number in T (beta2) - iT = 21 ; - while ((iT>=0)&&(Tdat[iT]>=KineticEnergy)) - iT -= 1 ; - if(iT==21) - iT = 20 ; - if(iT==-1) - iT = 0 ; - - // calculate betasquare values - T = Tdat[iT] ; - E = T + electron_mass_c2 ; - b2small = T*(E+electron_mass_c2)/(E*E) ; - T = Tdat[iT+1] ; - E = T + electron_mass_c2 ; - b2big = T*(E+electron_mass_c2)/(E*E) ; - ratb2 = (beta2-b2small)/(b2big-b2small) ; - - corrfactor = tuning*(1.+cpar)/(1.+cpar*beta2) ; - - if(Charge < 0.) - { - c1 = celectron[iZ][iT] ; - c2 = celectron[iZ+1][iT] ; - cc1 = c1+ratZ*(c2-c1) ; - - c1 = celectron[iZ][iT+1] ; - c2 = celectron[iZ+1][iT+1] ; - cc2 = c1+ratZ*(c2-c1) ; - - corr = cc1+ratb2*(cc2-cc1) ; - - sigma /= corr ; - - } - - if(Charge > 0.) - { - c1 = cpositron[iZ][iT] ; - c2 = cpositron[iZ+1][iT] ; - cc1 = c1+ratZ*(c2-c1) ; - - c1 = cpositron[iZ][iT+1] ; - c2 = cpositron[iZ+1][iT+1] ; - cc2 = c1+ratZ*(c2-c1) ; - - corr = cc1+ratb2*(cc2-cc1) ; - - sigma /= corr ; - } - - sigma *= corrfactor ; - - return sigma ; - } - - - - G4VParticleChange* G4IMultipleScattering::PostStepDoIt( - const G4Track& trackData, - const G4Step& stepData) - { - G4double lambdasave ; - const G4double taulim = 1.e-10 , randlim = 0.25*taulim*taulim ; - const G4double tausmall = 5.e-5,taubig =50.; - - const G4double scatteringparameter=1.00 , - kappa = 2.5, kappapl1 = kappa+1., kappami1 = kappa-1. ; - - const G4DynamicParticle* aParticle ; - G4Material* aMaterial ; - G4int materialIndex ; - G4double KineticEnergy,truestep,tau,prob,cth,sth,phi, - dirx,diry,dirz,w,w1,etau,rmean,safetyminustolerance, - xnew,ynew,znew ; - G4double rand,rmax2 ; - G4bool isOut; - - aParticleChange.Initialize(trackData) ; - - aMaterial = stepData.GetPreStepPoint()->GetMaterial() ; - - - truestep = stepData.GetStepLength() ; - - // there is no scattering for truestep=0. ! - if(truestep == 0.) - return &aParticleChange ; - - aParticle = trackData.GetDynamicParticle() ; - - materialIndex = aMaterial->GetIndex() ; - KineticEnergy = aParticle->GetKineticEnergy() ; - - // shortcut if the particle is not Alive (e.g. stopped in energy loss) - if(trackData.GetTrackStatus() != fAlive) - return &aParticleChange ; - - if ((lastMaterial == aMaterial) && (lastKineticEnergy == KineticEnergy)) - { - ; - } - else - { - lastMaterial=aMaterial; - lastKineticEnergy=KineticEnergy; - if(KineticEnergyGetValue(LowestKineticEnergy,isOut); - } - else - { - // TransportMeanFreePath taken at kin.energy after the energy loss! - if(KineticEnergy>HighestKineticEnergy) - KineticEnergy = HighestKineticEnergy ; - fTransportMeanFreePath = (*theTransportMeanFreePathTable) - (materialIndex)->GetValue(KineticEnergy,isOut); - } - } - - // effective lambda used in scattering ..................... - lambdasave = fTransportMeanFreePath ; - - if(CosTheta == 1.) - { - fTransportMeanFreePath = biglambda ; - tau = 0.; - cth = 1. ; - } - else if(CosTheta == 0.) - { - fTransportMeanFreePath = 0. ; - tau = biglambda ; - cth = -1.+2.*G4UniformRand() ; - } - else - { - fTransportMeanFreePath = -truestep/log(CosTheta) ; - tau = truestep/fTransportMeanFreePath ; - prob = exp(-tau)*(1.+scatteringparameter*tau) ; - - if(G4UniformRand() randlim) - cth = 1.-tau*(1./sqrt(rand)-1.) ; - else - cth = -1. ; - } - else - { - w = 1.+scatteringparameter*tau ; - w1 = w-1. ; - cth = w-w1*(w+1.)/sqrt(w1*w1+4.*w*G4UniformRand()) ; - } - } - else - cth = -1.+2.*G4UniformRand() ; - } - - sth = sqrt(1.-cth*cth) ; - phi = twopi*G4UniformRand() ; - - dirx = sth*cos(phi) ; - diry = sth*sin(phi) ; - dirz = cth ; - - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection(); - G4ThreeVector newDirection(dirx,diry,dirz) ; - newDirection.rotateUz(ParticleDirection) ; - aParticleChange.SetNumberOfSecondaries(0) ; - aParticleChange.SetEnergyChange( KineticEnergy ) ; - aParticleChange.SetMomentumChange(newDirection.x(), - newDirection.y(), - newDirection.z()) ; - - // compute lateral displacement - // only for safety > tolerance !!!!! - safetyminustolerance = stepData.GetPostStepPoint()->GetSafety() - -kCarTolerance ; - if(safetyminustolerance > 0.) - { - if(truestep == GeomStepFinal) - { ; } - else - { - rmax2 = (truestep+GeomStepFinal)*(truestep-GeomStepFinal) ; - if(taurmax2) - rmean = rmax2 ; - - if(rmean>0.) - { - rmean = sqrt(rmean) ; - - if(rmean>safetyminustolerance) - rmean = safetyminustolerance ; - - fMeanLateralDisplacement = rmean ; - - // sample direction of lateral displacement - phi = twopi*G4UniformRand() ; - dirx = cos(phi) ; - diry = sin(phi) ; - dirz = 0. ; - G4ThreeVector latDirection(dirx,diry,dirz); - latDirection.rotateUz(ParticleDirection) ; - - // compute new endpoint of the Step - xnew = stepData.GetPostStepPoint()->GetPosition().x()+ - rmean*latDirection.x() ; - ynew = stepData.GetPostStepPoint()->GetPosition().y()+ - rmean*latDirection.y() ; - znew = stepData.GetPostStepPoint()->GetPosition().z()+ - rmean*latDirection.z() ; - - aParticleChange.SetPositionChange(xnew,ynew,znew) ; - } - } - } - - fTransportMeanFreePath = lambdasave ; - - return &aParticleChange ; - - } - -void G4IMultipleScattering::PrintInfoDefinition() -{ - G4String comments = " Tables of transport mean free paths."; - comments += "\n New model of MSC , computes the lateral \n"; - comments += " displacement of the particle , too."; - - G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy, - "Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; -} - diff --git a/source/processes/electromagnetic/integral/src/G4IeBremsstrahlung.cc b/source/processes/electromagnetic/integral/src/G4IeBremsstrahlung.cc deleted file mode 100644 index 4b4c2a69dd..0000000000 --- a/source/processes/electromagnetic/integral/src/G4IeBremsstrahlung.cc +++ /dev/null @@ -1,1442 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IeBremsstrahlung.cc,v 1.1.2.2 2001/06/28 20:19:20 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4IeBremsstrahlung physics process -------- -// by Michel Maire, 24 July 1996 -// ************************************************************** -// ************************************************************ -// It is the first implementation of the BREMSSTRAHLUNG -// PROCESS. ( photons + continuous energy loss) -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ************************************************************ -// by Laszlo Urban, 23 June 1998 -// -------------------------------------------------------------- -// 28/10/98:LPM effect implemented+ small changes, cleanup L.Urban - - -#include "G4IeBremsstrahlung.hh" -#include "G4UnitsTable.hh" - - -G4IeBremsstrahlung::G4IeBremsstrahlung(const G4String& processName) - : G4VIeEnergyLoss(processName), - theMeanFreePathTable(NULL), - theNlambdaTable(NULL), - theInverseNlambdaTable(NULL), - theCoeffATable(NULL), - theCoeffBTable(NULL), - theCoeffCTable(NULL), - LowestKineticEnergy (10.*keV), - HighestKineticEnergy (100.*TeV), - TotBin(100), - NumberOfBuildPhysicsTableCalls(0), - theGamma (G4Gamma::Gamma() ), - theElectron ( G4Electron::Electron() ), - thePositron ( G4Positron::Positron() ) -{ } - -G4IeBremsstrahlung::~G4IeBremsstrahlung() -{ - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - if (theNlambdaTable) { - theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable; - } - if (theInverseNlambdaTable) { - theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; - } - if (theCoeffATable) { - theCoeffATable->clearAndDestroy(); - delete theCoeffATable; - } - if (theCoeffBTable) { - theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; - } - if (theCoeffCTable) { - theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; - } - if (&PartialSumSigma) { - PartialSumSigma.clearAndDestroy(); - } -} - -void G4IeBremsstrahlung::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) -{ - LowestKineticEnergy = lowE; HighestKineticEnergy = highE; TotBin = nBins; -} - - -void G4IeBremsstrahlung::BuildPhysicsTable( - const G4ParticleDefinition& aParticleType) -{ - RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; - NumberOfBuildPhysicsTableCalls += 1 ; - if(NumberOfBuildPhysicsTableCalls == 1) - { - BuildLossTable(aParticleType) ; - if(&aParticleType==theElectron) - { - RecorderOfElectronProcess[CounterOfElectronProcess] = - (*this).theLossTable ; - CounterOfElectronProcess++; - } - else - { - RecorderOfPositronProcess[CounterOfPositronProcess] = - (*this).theLossTable ; - CounterOfPositronProcess++; - } - BuildLambdaTable(aParticleType) ; - BuildDEDXTable(aParticleType) ; - } - else - { - BuildNlambdaTable(aParticleType) ; - - BuildCoeffATable(aParticleType) ; - BuildCoeffBTable(aParticleType) ; - BuildCoeffCTable(aParticleType) ; - - BuildInverseNlambdaTable(aParticleType) ; - - G4int printflag = 0 ; - if(printflag>0) - TestOfInversion(aParticleType,printflag) ; - - NumberOfBuildPhysicsTableCalls = 0 ; - - if(&aParticleType==theElectron) - PrintInfoDefinition(); - } -} - -void G4IeBremsstrahlung::TestOfInversion( - const G4ParticleDefinition& aParticleType, - G4int printflag) -{ - G4double T,Nlambda,Tprime,delta,del,sum,delmean,Tdelta ; - G4bool isOut ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - G4cout.setf(G4std::ios::scientific, G4std::ios::floatfield) ; - if(printflag>1) - { - G4cout << G4endl; - G4cout << " particle=" << aParticleType.GetParticleName() << G4endl; - G4cout << "----------------------" << G4endl; - } - for (G4int J=0; J1) - { - G4cout << G4endl; - G4cout << " material = " << (*theMaterialTable)[J]->GetName() << G4endl; - G4cout << " mat.ind.=" << J << " T Nlambda Tprime" - << " (Tprime-T)/T(%)" << G4endl ; - } - - G4PhysicsLogVector* aVector ; - - aVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin) ; - delta = 0. ; - delmean = 0.; - sum = 0.; - Tdelta = 0. ; - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - Nlambda = (*theNlambdaTable)[J]->GetValue(T,isOut) ; - - if(Nlambda>0.) - { - Tprime = (*theInverseNlambdaTable)[J]->GetValue(Nlambda,isOut) ; - - if((Nlambda>0.)&&(i<(TotBin-1))) - { - del = 100.*(Tprime-T)/T ; - sum += 1.; - delmean += abs(del); - if(abs(del)>abs(delta)) - { - delta = del ; - Tdelta = T ; - } - } - if(printflag>1) - { - G4cout << G4std::setw(18) << G4std::setprecision(6) << T << " " << - G4std::setw(14)<< G4std::setprecision(6) << Nlambda << " " << - G4std::setw(14) << G4std::setprecision(6) << Tprime << " " << - G4std::setw(12) << G4std::setprecision(3) << del << G4endl; - } - } - } - if(printflag>0) - { - G4cout << G4endl; - G4cout << "G4IeBremsstrahlung::TestOfInversion (T->Nlambda->Tprime) " - << G4endl ; - G4cout << "particle= " << aParticleType.GetParticleName() << - " material= " << (*theMaterialTable)[J]->GetName() << G4endl ; - G4cout << "max (Tprime-T)/T in % =" << G4std::setw(10) << G4std::setprecision(3) - << delta ; - G4cout << " at a kinetic energy " << G4std::setw(10) << G4std::setprecision(3) << - Tdelta/MeV << " MeV" << G4endl; - delmean /= sum ; - G4cout << "mean rel.diff. (Tprime-T)/T=" << G4std::setw(10) << - G4std::setprecision(3) << delmean << - " % (mean is calculated in abs. value)" << G4endl; - G4cout << G4endl; - } - } -} - -void G4IeBremsstrahlung::BuildNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if(theNlambdaTable) - { theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable ; } - - theNlambdaTable = new G4PhysicsTable(numOfMaterials) ; - - for (G4int J=0; Jinsert(aVector) ; - } -} - -void G4IeBremsstrahlung::BuildNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdgeEnergy,T,Tlast,dEdx,Value,Vlast,u,du,coeff,l ; - G4double thresholdEnergy ; - const G4int nbin = 20 ; - G4bool isOut ; - const G4double small = 1.e-100; - const G4double lmin=1.e-100,lmax=1.e100; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - thresholdEnergy = GammaCutInKineticEnergy[materialIndex] ; - - // here assumed that the threshold energy for the process >= - // LowestKineticEnergy (temporarily ) - if(thresholdEnergy >= LowestKineticEnergy) - { - Value = 0. ; - } - else - { - // extrapolation needed .................. - //first integral from thresholdEnergy to LowestKineticEnergy - Value = 0. ; - } - - nlambdaVector->PutValue(0,Value) ; - Tlast = LowestKineticEnergy ; - Vlast = Value ; - - // loop for kinetic energy - for (G4int i=1; iGetLowEdgeEnergy(i) ; - Value = 0. ; - if(LowEdgeEnergy >= thresholdEnergy) - { - u = log(LowEdgeEnergy/Tlast) ; - du = u/nbin ; - u = -du ; - Value = 0. ; - for(G4int n=0; n<=nbin; n++) - { - u += du ; - T = Tlast*exp(u) ; - - if((n==0)||(n==nbin)) - coeff=0.5 ; - else - coeff=1.0 ; - - l = (*theMeanFreePathTable)[materialIndex]->GetValue(T,isOut); - if((l>lmin) && (lPutValue(i,Value) ; - Tlast = LowEdgeEnergy ; - Vlast = Value ; - } -} - -void G4IeBremsstrahlung::BuildCoeffATable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "A" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffATable) - { theCoeffATable->clearAndDestroy(); - delete theCoeffATable; } - theCoeffATable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if( i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - else - Value = 0. ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - } - theCoeffATable->insert(aVector); - } -} - -void G4IeBremsstrahlung::BuildCoeffBTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "B" - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffBTable) - { theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; } - theCoeffBTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - else - Value = RTable*(Ri-Rim)/((RTable-1.)*Ti) ; - - aVector->PutValue(i,Value); - Ti = RTable*Ti ; - } - theCoeffBTable->insert(aVector); - } -} - -void G4IeBremsstrahlung::BuildCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); -// create table for coefficients "C" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffCTable) - { theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; } - theCoeffCTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = w1*Rip + w2*Ri + w3*Rim ; - else - Value = (-Ri+RTable*Rim)/(RTable-1.) ; - - - aVector->PutValue(i,Value); - Ti = RTable*Ti ; - } - theCoeffCTable->insert(aVector); - } -} - -void G4IeBremsstrahlung::BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - G4double T,Smallest,Biggest ; - const G4double small = 1.e-10; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(theInverseNlambdaTable) - { theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; } - theInverseNlambdaTable = new G4PhysicsTable(numOfMaterials); - - for (G4int J=0; J - GetValue(T,isOut) ; - T *= RTable ; - } while ((Smallest <= small)&&(T - GetValue(HighestKineticEnergy,isOut) ; - - // inverse can be built for "meaningful" cut value only! - if(Smallest >= Biggest) - { - G4Exception( - "Cut value is too big , smaller value should be used !"); - } - - // create vector - G4PhysicsLogVector* aVector; - - aVector = new G4PhysicsLogVector(Smallest, - Biggest,TotBin); - - InvertNlambdaVector(aParticleType,J, aVector); - - theInverseNlambdaTable->insert(aVector); - } -} - -void G4IeBremsstrahlung::InvertNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdge,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double bin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for Nlambda values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - if( bin < LowEdge ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - bin = (*theNlambdaTable)[materialIndex]->GetValue(Tbin,isOut) ; - } - while ((bin < LowEdge) && (binnumber < TotBin-2 )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy/RTable ; - else - { - A = (*(*theCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdge -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdge); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - nlambdaVector->PutValue(i,KineticEnergy) ; - } -} - - -void G4IeBremsstrahlung::BuildLossTable( - const G4ParticleDefinition& aParticleType) -// Build table for energy loss due to soft brems -// tables are built for MATERIALS -// ********* -{ - G4double KineticEnergy,TotalEnergy,bremloss,Z,x, - losslim,loss,rate,natom,Cut; - - const G4double MinKineticEnergy = 1.*keV; - const G4double MinCut = 1.*keV; - const G4double Thigh = 100.*GeV; - const G4double Cuthigh = 50.*GeV; - const G4double Factorhigh = 36./(1450.*GeV); - const G4double coef1 = -0.5, coef2 = 2./9.; - - ParticleMass = aParticleType.GetPDGMass() ; - //G4double* GammaCutInKineticEnergy = G4Gamma::Gamma()->GetEnergyCuts(); - GammaCutInKineticEnergy = G4Gamma::Gamma()->GetEnergyCuts(); - - // create table - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if (theLossTable) { theLossTable->clearAndDestroy(); - delete theLossTable; - } - - theLossTable = new G4PhysicsTable(numOfMaterials); - -// loop for materials - - for (G4int J=0; JGetElementVector(); - const G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector(); - const G4int NumberOfElements = material->GetNumberOfElements(); - - // loop for the kinetic energy values - for (G4int i=0; iGetLowEdgeEnergy(i) ; - TotalEnergy = KineticEnergy+ParticleMass ; - - Cut = GammaCutInKineticEnergy[J] ; - if (Cut < MinCut) Cut = MinCut ; - if (Cut > KineticEnergy) Cut = KineticEnergy ; - - bremloss = 0.; - - if (KineticEnergy>MinKineticEnergy) - { - if (Cut > KineticEnergy) Cut = KineticEnergy ; - - // loop for elements in the material - for (G4int iel=0; ielGetZ(); - natom = theAtomicNumDensityVector[iel] ; - if (KineticEnergy <= Thigh) - { - //loss for MinKineticEnergy100 GeV - x=log(Thigh/ParticleMass) ; - if (CutGetRadlen()) ; - G4double TotalEnergysquare = TotalEnergy*TotalEnergy ; - G4double LPMGammaEnergyLimit = TotalEnergysquare/LPMEnergy ; - - if(LPMGammaEnergyLimit > klim) - { - G4double kmax = G4std::min(Cut,LPMGammaEnergyLimit) ; - - G4double floss = 0. ; - G4int nmax = 1000 ; - G4int nn ; - G4double vmin=log(kmin); - G4double vmax=log(Cut) ; - nn = int(nmax*(vmax-vmin)/(log(HighestKineticEnergy)-vmin)) ; - G4double u,uu,s2lpm,sp,fac,c,v,dv,w ; - dv = (vmax-vmin)/nn ; - v = vmin-dv ; - for(G4int n=0; n<=nn; n++) - { - v += dv ; - u = exp(v) ; - uu = u*u ; - if(u<=kmax) - { - s2lpm=LPMEnergy*u/TotalEnergysquare ; - sp=uu/(uu+MigdalConstant*TotalEnergysquare* - (material->GetElectronDensity())) ; - w=s2lpm*(1.+1./sp) ; - fac=0.5*(sqrt(w*w+4.*s2lpm)-w)/sp; - if(fac>1.) - fac=1. ; - } - else - { - fac=1. ; - } - - fac *= uu*u ; - - if((n==0)||(n==nn)) - c=0.5; - else - c=1.; - - fac *= c ; - floss += fac ; - } - - floss *=dv*3./(Cut*Cut*Cut-kmin*kmin*kmin) ; - if(floss > 1.) floss = 1. ; - - // correct the loss - bremloss *= floss ; - } - - if(bremloss < 0.) bremloss = 0. ; - aVector->PutValue(i,bremloss); - } - - theLossTable->insert(aVector); - } -} - -G4double G4IeBremsstrahlung::ComputeXYPolynomial(G4double x, G4double y, - G4int xSize, G4int ySize, - const G4double coeff[]) -{ - // Computes the polynomial (1 y y^2 ...) * matrix * (1 x x^2 ...) . - // xSize and ySize are the dimensions of the matrix, - // coeff containts the elements, stored row-wise. - G4double* a= new G4double[xSize]; - G4int i, j; - - for (i=0; iclearAndDestroy(); - delete theMeanFreePathTable; - } - theMeanFreePathTable = new G4PhysicsTable( G4Material::GetNumberOfMaterials() ) ; - - PartialSumSigma.clearAndDestroy(); - PartialSumSigma.resize( G4Material::GetNumberOfMaterials() ); - - G4PhysicsLogVector* ptrVector; - for ( G4int J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) - { - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestKineticEnergy, HighestKineticEnergy, - TotBin ) ; - - const G4Material* material= (*theMaterialTable)[J]; - - for ( G4int i = 0 ; i < TotBin ; i++ ) - { - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeMeanFreePath( &ParticleType, LowEdgeEnergy, - material ); - ptrVector->PutValue( i , Value ) ; - } - - theMeanFreePathTable->insertAt( J , ptrVector ); - - // Compute the PartialSumSigma table at a given fixed energy - ComputePartialSumSigma( &ParticleType, FixedEnergy, material) ; - } -} - -void G4IeBremsstrahlung::ComputePartialSumSigma(const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial) - -// Build the table of cross section per element. The table is built for MATERIALS. -// This table is used by DoIt to select randomly an element in the material. -{ - G4int Imate = aMaterial->GetIndex(); - G4int NbOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[Imate]; - - PartialSumSigma[Imate] = new G4DataVector(); - - G4double SIGMA = 0. ; - - for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ) - { - SIGMA += theAtomNumDensityVector[Ielem] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), - GammaEnergyCut ); - PartialSumSigma[Imate]->push_back(SIGMA); - } -} - -G4double G4IeBremsstrahlung::ComputeMicroscopicCrossSection( - const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, G4double AtomicNumber, - G4double GammaEnergyCut) - -// Calculates the microscopic cross section in GEANT4 internal units. -// A parametrized formula from L. Urban is used to estimate the total cross section. -// This parametrization is derived from : -// tabulated cross-section values of Seltzer and Berger below 10 GeV, -// screened Bethe Heilter differential cross section above 10 GeV, -// Migdal corrections in both case. -// Seltzer & Berger: Nim B 12:95 (1985) -// Nelson, Hirayama & Rogers: Technical report 265 SLAC (1985) -// Migdal: Phys Rev 103:1811 (1956); Messel & Crawford: Pergamon Press (1970) -// -// Above 100 GeV the Cross section is scaled in log(KineticEnergy). - -{ - G4double CrossSection = 0.0 ; - if ( AtomicNumber < 1. ) return CrossSection; - if ( KineticEnergy < 10*keV ) return CrossSection; - if ( KineticEnergy <= GammaEnergyCut ) return CrossSection; - - G4double LocalKineticEnergy = KineticEnergy, LocalGammaEnergyCut = GammaEnergyCut; - - static const G4double KinLimitScale = 100.*GeV, CutLimitScale = 50.*GeV; - - if ( KineticEnergy > KinLimitScale ) - { LocalKineticEnergy = KinLimitScale; - if (GammaEnergyCut > KinLimitScale) LocalGammaEnergyCut = CutLimitScale; - } - - static const G4double - aay0x0= 0.430748E-02*barn, aay0x1= 0.576058E-02*barn, aay0x2=-0.122564E-02*barn, - aay0x3= 0.114843E-03*barn, aay0x4=-0.489452E-05*barn, aay0x5= 0.795991E-07*barn; - - static const G4double - aay1x0= 0.326746E-02*barn, aay1x1=-0.132872E-02*barn, aay1x2= 0.217197E-03*barn, - aay1x3=-0.179769E-04*barn, aay1x4= 0.766114E-06*barn, aay1x5=-0.125603E-07*barn; - - static const G4double - amy2x0= 0.326452E-02*barn, amy2x1=-0.175331E-02*barn, amy2x2= 0.415488E-03*barn, - amy2x3=-0.507652E-04*barn, amy2x4= 0.297569E-05*barn, amy2x5=-0.651741E-07*barn; - - static const G4double - amy3x0= 0.847189E-03*barn, amy3x1=-0.433923E-03*barn, amy3x2= 0.116672E-03*barn, - amy3x3=-0.166799E-04*barn, amy3x4= 0.110237E-05*barn, amy3x5=-0.263383E-07*barn; - - static const G4double - amy4x0= 0.846052E-04*barn, amy4x1=-0.415764E-04*barn, amy4x2= 0.129610E-04*barn, - amy4x3=-0.212844E-05*barn, amy4x4= 0.152871E-06*barn, amy4x5=-0.384393E-08*barn; - - static const G4double - amy5x0= 0.300838E-05*barn, amy5x1=-0.136833E-05*barn, amy5x2= 0.507296E-06*barn, - amy5x3=-0.943623E-07*barn, amy5x4= 0.720305E-08*barn, amy5x5=-0.187210E-09*barn; - - static const G4double - apy2x0= 0.448230E-01*barn, apy2x1=-0.210048E-01*barn, apy2x2= 0.379434E-02*barn, - apy2x3=-0.328431E-03*barn, apy2x4= 0.136710E-04*barn, apy2x5=-0.220593E-06*barn; - - static const G4double - apy3x0=-0.539248E-02*barn, apy3x1= 0.330244E-02*barn, apy3x2=-0.733726E-03*barn, - apy3x3= 0.732312E-04*barn, apy3x4=-0.336810E-05*barn, apy3x5= 0.583913E-07*barn; - - static const G4double - apy4x0=-0.106983E-02*barn, apy4x1= 0.378021E-03*barn, apy4x2=-0.384854E-04*barn, - apy4x3= 0.978156E-06*barn, apy4x4= 0.410622E-07*barn, apy4x5=-0.174250E-08*barn; - - static const G4double - apy5x0=-0.117501E-04*barn, apy5x1=-0.983887E-05*barn, apy5x2= 0.239644E-05*barn, - apy5x3=-0.190104E-06*barn, apy5x4= 0.619226E-08*barn, apy5x5=-0.680932E-10*barn; - - static const G4double - bby0x0= 0.168074E-03*barn, bby0x1=-0.934609E-04*barn, bby0x2= 0.141293E-04*barn, - bby0x3=-0.854216E-06*barn, bby0x4= 0.183287E-07*barn; - - static const G4double - bby1x0= 0.932144E-04*barn, bby1x1=-0.234926E-04*barn, bby1x2= 0.136656E-05*barn, - bby1x3= 0.351109E-07*barn, bby1x4=-0.330189E-08*barn; - - static const G4double - bmy2x0= 0.174523E-04*barn, bmy2x1= 0.253854E-05*barn, bmy2x2=-0.171643E-05*barn, - bmy2x3= 0.183074E-06*barn, bmy2x4=-0.566331E-08*barn; - - static const G4double - bmy3x0= 0.111970E-05*barn, bmy3x1= 0.112776E-05*barn, bmy3x2=-0.386924E-06*barn, - bmy3x3= 0.367597E-07*barn, bmy3x4=-0.108504E-08*barn; - - static const G4double - bmy4x0= 0.171604E-07*barn, bmy4x1= 0.738801E-07*barn, bmy4x2=-0.218761E-07*barn, - bmy4x3= 0.199032E-08*barn, bmy4x4=-0.576173E-10*barn; - - static const G4double - bpy2x0=-0.105531E-03*barn, bpy2x1= 0.362995E-04*barn, bpy2x2=-0.433334E-05*barn, - bpy2x3= 0.207664E-06*barn, bpy2x4=-0.330250E-08*barn; - - static const G4double - bpy3x0=-0.168293E-05*barn, bpy3x1=-0.773204E-06*barn, bpy3x2= 0.227974E-06*barn, - bpy3x3=-0.159385E-07*barn, bpy3x4= 0.321958E-09*barn; - - static const G4double - bpy4x0= 0.167046E-05*barn, bpy4x1=-0.440761E-06*barn, bpy4x2= 0.396377E-07*barn, - bpy4x3=-0.151053E-08*barn, bpy4x4= 0.215624E-10*barn; - - static const G4double ksi=1.8, alfa=0.98, vs= 1.E-4; - - G4double TotalEnergy = LocalKineticEnergy + electron_mass_c2; - G4double X = log(TotalEnergy/electron_mass_c2), X2=X*X, X3=X2*X, X4=X3*X, X5=X4*X; - G4double Y = log(vs*TotalEnergy/LocalGammaEnergyCut), Y2=Y*Y, Y3=Y2*Y, Y4=Y3*Y, Y5=Y4*Y; - - G4double ay0, ay1, ay2, ay3, ay4, ay5, by0, by1, by2, by3, by4; - if (Y < 0.) { - ay0 = aay0x0 + aay0x1*X + aay0x2*X2 + aay0x3*X3 + aay0x4*X4 + aay0x5*X5; - ay1 = aay1x0 + aay1x1*X + aay1x2*X2 + aay1x3*X3 + aay1x4*X4 + aay1x5*X5; - ay2 = amy2x0 + amy2x1*X + amy2x2*X2 + amy2x3*X3 + amy2x4*X4 + amy2x5*X5; - ay3 = amy3x0 + amy3x1*X + amy3x2*X2 + amy3x3*X3 + amy3x4*X4 + amy3x5*X5; - ay4 = amy4x0 + amy4x1*X + amy4x2*X2 + amy4x3*X3 + amy4x4*X4 + amy4x5*X5; - ay5 = amy5x0 + amy5x1*X + amy5x2*X2 + amy5x3*X3 + amy5x4*X4 + amy5x5*X5; - - by0 = bby0x0 + bby0x1*X + bby0x2*X2 + bby0x3*X3 + bby0x4*X4; - by1 = bby1x0 + bby1x1*X + bby1x2*X2 + bby1x3*X3 + bby1x4*X4; - by2 = bmy2x0 + bmy2x1*X + bmy2x2*X2 + bmy2x3*X3 + bmy2x4*X4; - by3 = bmy3x0 + bmy3x1*X + bmy3x2*X2 + bmy3x3*X3 + bmy3x4*X4; - by4 = bmy4x0 + bmy4x1*X + bmy4x2*X2 + bmy4x3*X3 + bmy4x4*X4; - } - else { - ay0 = aay0x0 + aay0x1*X + aay0x2*X2 + aay0x3*X3 + aay0x4*X4 + aay0x5*X5; - ay1 = aay1x0 + aay1x1*X + aay1x2*X2 + aay1x3*X3 + aay1x4*X4 + aay1x5*X5; - ay2 = apy2x0 + apy2x1*X + apy2x2*X2 + apy2x3*X3 + apy2x4*X4 + apy2x5*X5; - ay3 = apy3x0 + apy3x1*X + apy3x2*X2 + apy3x3*X3 + apy3x4*X4 + apy3x5*X5; - ay4 = apy4x0 + apy4x1*X + apy4x2*X2 + apy4x3*X3 + apy4x4*X4 + apy4x5*X5; - ay5 = apy5x0 + apy5x1*X + apy5x2*X2 + apy5x3*X3 + apy5x4*X4 + apy5x5*X5; - - by0 = bby0x0 + bby0x1*X + bby0x2*X2 + bby0x3*X3 + bby0x4*X4; - by1 = bby1x0 + bby1x1*X + bby1x2*X2 + bby1x3*X3 + bby1x4*X4; - by2 = bpy2x0 + bpy2x1*X + bpy2x2*X2 + bpy2x3*X3 + bpy2x4*X4; - by3 = bpy3x0 + bpy3x1*X + bpy3x2*X2 + bpy3x3*X3 + bpy3x4*X4; - by4 = bpy4x0 + bpy4x1*X + bpy4x2*X2 + bpy4x3*X3 + bpy4x4*X4; - } - - G4double F0 = ay0 + ay1*Y + ay2*Y2 + ay3*Y3 + ay4*Y4 + ay5*Y5, - F1 = by0 + by1*Y + by2*Y2 + by3*Y3 + by4*Y4; - - CrossSection = AtomicNumber*(AtomicNumber+ksi)*TotalEnergy*TotalEnergy - * pow(log(LocalKineticEnergy/LocalGammaEnergyCut),alfa) - * (F0 + F1*AtomicNumber) - / (LocalKineticEnergy*(LocalKineticEnergy+2*electron_mass_c2)); - - if (ParticleType == G4Positron::Positron()) - CrossSection *= ComputePositronCorrFactorSigma(AtomicNumber, LocalKineticEnergy, - LocalGammaEnergyCut); - - // now comes the scaling above 100GeV - if (KineticEnergy > KinLimitScale) - { G4double X1 = GammaEnergyCut/KineticEnergy, - X2 = LocalGammaEnergyCut/LocalKineticEnergy; - CrossSection *= (-log(X1) -2./3. + X1 - X1*X1/3.)/(-log(X2) -2./3. + X2 - X2*X2/3.); - } - - if (CrossSection < 0.) CrossSection = 0.; - return CrossSection; -} - -G4double G4IeBremsstrahlung::ComputePositronCorrFactorSigma( G4double AtomicNumber, - G4double KineticEnergy, G4double GammaEnergyCut) - -// Calculates the correction factor for the total cross section of the positron bremsstrahl. -// Eta is the ratio of positron to electron energy loss by bremstrahlung. -// A parametrized formula from L. Urban is used to estimate eta. It is a fit to the results -// of L. Kim & al: Phys Rev. A33,3002 (1986) - -{ - static const G4double K = 132.9416*eV; - static const G4double a1 = 4.15e-1, a3 = 2.10e-3, a5 = 54.0e-5; - - G4double x = log(KineticEnergy/(K*AtomicNumber*AtomicNumber)); - G4double eta = 0.5 + atan(a1*x + a3*x*x*x + a5*x*x*x*x*x)/pi ; - G4double alfa = (1. - eta)/eta; - return eta*pow((1. - GammaEnergyCut/KineticEnergy) , alfa); -} - - -G4VParticleChange* G4IeBremsstrahlung::PostStepDoIt(const G4Track& trackData, - const G4Step& stepData) -// -// The emitted gamma energy is sampled using a parametrized formula from L. Urban. -// This parametrization is derived from : -// cross-section values of Seltzer and Berger for electron energies 1 keV - 10 GeV, -// screened Bethe Heilter differential cross section above 10 GeV, -// Migdal corrections in both case. -// Seltzer & Berger: Nim B 12:95 (1985) -// Nelson, Hirayama & Rogers: Technical report 265 SLAC (1985) -// Migdal: Phys Rev 103:1811 (1956); Messel & Crawford: Pergamon Press (1970) -// -// A modified version of the random number techniques of Butcher & Messel is used -// (Nuc Phys 20(1960),15). -// -// GEANT4 internal units. -// -{ - - static const G4double - ah10 = 4.67733E+00, ah11 =-6.19012E-01, ah12 = 2.02225E-02, - ah20 =-7.34101E+00, ah21 = 1.00462E+00, ah22 =-3.20985E-02, - ah30 = 2.93119E+00, ah31 =-4.03761E-01, ah32 = 1.25153E-02; - - static const G4double - bh10 = 4.23071E+00, bh11 =-6.10995E-01, bh12 = 1.95531E-02, - bh20 =-7.12527E+00, bh21 = 9.69160E-01, bh22 =-2.74255E-02, - bh30 = 2.69925E+00, bh31 =-3.63283E-01, bh32 = 9.55316E-03; - - static const G4double - al00 =-2.05398E+00, al01 = 2.38815E-02, al02 = 5.25483E-04, - al10 =-7.69748E-02, al11 =-6.91499E-02, al12 = 2.22453E-03, - al20 = 4.06463E-02, al21 =-1.01281E-02, al22 = 3.40919E-04; - - static const G4double - bl00 = 1.04133E+00, bl01 =-9.43291E-03, bl02 =-4.54758E-04, - bl10 = 1.19253E-01, bl11 = 4.07467E-02, bl12 =-1.30718E-03, - bl20 =-1.59391E-02, bl21 = 7.27752E-03, bl22 =-1.94405E-04; - - static const G4double MigdalConstant = classic_electr_radius - *electron_Compton_length - *electron_Compton_length/pi; - const G4double LPMconstant = fine_structure_const*electron_mass_c2* - electron_mass_c2/(8.*pi*hbarc) ; - aParticleChange.Initialize(trackData); - G4Material* aMaterial=trackData.GetMaterial() ; - - G4double LPMEnergy = LPMconstant*(aMaterial->GetRadlen()) ; - - const G4DynamicParticle* aDynamicParticle=trackData.GetDynamicParticle(); - G4double charge = aDynamicParticle->GetDefinition()->GetPDGCharge(); - - G4double KineticEnergy = aDynamicParticle->GetKineticEnergy(); - G4ParticleMomentum ParticleDirection = aDynamicParticle->GetMomentumDirection(); - - // Gamma production cut in this material - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - - // check against insufficient energy - if (KineticEnergy < GammaEnergyCut) - { - aParticleChange.SetMomentumChange( ParticleDirection ); - aParticleChange.SetEnergyChange( KineticEnergy ); - aParticleChange.SetLocalEnergyDeposit (0.); - aParticleChange.SetNumberOfSecondaries(0); - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - - // select randomly one element constituing the material - G4Element* anElement = SelectRandomAtom(aMaterial); - - // Extract Z factors for this Element - G4double lnZ = 3.*(anElement->GetIonisation()->GetlogZ3()); - G4double FZ = lnZ* (4.- 0.55*lnZ); - G4double ZZ = anElement->GetIonisation()->GetZZ3(); - - // limits of the energy sampling - G4double TotalEnergy = KineticEnergy + electron_mass_c2; - G4double TotalEnergysquare = TotalEnergy*TotalEnergy ; - G4double LPMGammaEnergyLimit = TotalEnergysquare/LPMEnergy ; - - G4double xmin = GammaEnergyCut/KineticEnergy, epsilmin = GammaEnergyCut/TotalEnergy; - G4double epsilmax = KineticEnergy/TotalEnergy; - - // Migdal factor - G4double MigdalFactor = (aMaterial->GetElectronDensity())*MigdalConstant - /(epsilmax*epsilmax); - - // - G4double x, epsil, greject, migdal, grejmax; - G4double U = log(KineticEnergy/electron_mass_c2), U2 = U*U; - - // - // sample the energy rate of the emitted gamma for electron kinetic energy > 1 MeV - // - - if (KineticEnergy > 1.*MeV) - { - // parameters - G4double ah1 = ah10 + ZZ* (ah11 + ZZ* ah12), - ah2 = ah20 + ZZ* (ah21 + ZZ* ah22), - ah3 = ah30 + ZZ* (ah31 + ZZ* ah32); - - G4double bh1 = bh10 + ZZ* (bh11 + ZZ* bh12), - bh2 = bh20 + ZZ* (bh21 + ZZ* bh22), - bh3 = bh30 + ZZ* (bh31 + ZZ* bh32); - - G4double ah = 1. + (ah1*U2 + ah2*U + ah3) / (U2*U); - G4double bh = 0.75 + (bh1*U2 + bh2*U + bh3) / (U2*U); - - // limit of the screening variable - G4double screenfac = - 136.*electron_mass_c2/((anElement->GetIonisation()->GetZ3())*TotalEnergy); - G4double screenmin = screenfac*epsilmin/(1.-epsilmin); - - // Compute the maximum of the rejection function - G4double F1 = G4std::max(ScreenFunction1(screenmin) - FZ ,0.); - G4double F2 = G4std::max(ScreenFunction2(screenmin) - FZ ,0.); - grejmax = (F1 - epsilmin* (F1*ah - bh*epsilmin*F2))/(42.392 - FZ); - - // sample the energy rate of the emitted Gamma - G4double screenvar; - - do { - - x = pow(xmin, G4UniformRand()); - epsil = x*KineticEnergy/TotalEnergy; - screenvar = screenfac*epsil/(1-epsil); - F1 = G4std::max(ScreenFunction1(screenvar) - FZ ,0.); - F2 = G4std::max(ScreenFunction2(screenvar) - FZ ,0.); - migdal = (1. + MigdalFactor)/(1. + MigdalFactor/(x*x)); - greject = migdal*(F1 - epsil* (ah*F1 - bh*epsil*F2))/(42.392 - FZ); - } while( greject < G4UniformRand()*grejmax ); - - } - else - { - // sample the energy rate of the emitted gamma for electron kinetic energy < 1 MeV - // - // parameters - G4double al0 = al00 + ZZ* (al01 + ZZ* al02), - al1 = al10 + ZZ* (al11 + ZZ* al12), - al2 = al20 + ZZ* (al21 + ZZ* al22); - - G4double bl0 = bl00 + ZZ* (bl01 + ZZ* bl02), - bl1 = bl10 + ZZ* (bl11 + ZZ* bl12), - bl2 = bl20 + ZZ* (bl21 + ZZ* bl22); - - G4double al = al0 + al1*U + al2*U2; - G4double bl = bl0 + bl1*U + bl2*U2; - - // Compute the maximum of the rejection function - grejmax = G4std::max(1. + xmin* (al + bl*xmin), 1.+al+bl); - G4double xm = -al/(2.*bl); - if ((xmin < xm)&&(xm < 1.)) grejmax = G4std::max(grejmax, 1.+ xm* (al + bl*xm)); - - // sample the energy rate of the emitted Gamma - - do { x = pow(xmin, G4UniformRand()); - migdal = (1. + MigdalFactor)/(1. + MigdalFactor/(x*x)); - greject = migdal*(1. + x* (al + bl*x)); - } while( greject < G4UniformRand()*grejmax ); - } - - G4double GammaEnergy = x*KineticEnergy; - - // now comes the supression due to the LPM effect - if(GammaEnergy < LPMGammaEnergyLimit) - { - G4double S2LPM = LPMEnergy*GammaEnergy/TotalEnergysquare ; - G4double Spol = GammaEnergy*GammaEnergy/(GammaEnergy*GammaEnergy + - MigdalConstant*(aMaterial->GetElectronDensity())* - TotalEnergysquare) ; - G4double w = S2LPM*(1.+1./Spol) ; - G4double Supr = 0.5*(sqrt(w*w+4.*S2LPM)-w)/Spol ; - - // - if (G4UniformRand() > Supr ) - GammaEnergy = 0. ; - } - - //protection: DO NOT PRODUCE a gamma with energy 0. ! - if (GammaEnergy <= 0.) - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - - // - // angles of the emitted gamma. ( Z - axis along the parent particle) - // - // universal distribution suggested by L. Urban (Geant3 manual (1993) Phys211), - // derived from Tsai distribution (Rev Mod Phys 49,421(1977)) - - G4double u; - const G4double a1 = 0.625 , a2 = 3.*a1 , d = 27. ; - - if (9./(9.+d) > G4UniformRand()) u = - log(G4UniformRand()*G4UniformRand())/a1 ; - else u = - log(G4UniformRand()*G4UniformRand())/a2 ; - - G4double Teta = u*electron_mass_c2/TotalEnergy ; - G4double Phi = twopi * G4UniformRand() ; - G4double dirx = sin(Teta)*cos(Phi) , diry = sin(Teta)*sin(Phi) , dirz = cos(Teta) ; - - G4ThreeVector GammaDirection ( dirx, diry, dirz); - GammaDirection.rotateUz(ParticleDirection); - - // create G4DynamicParticle object for the Gamma - G4DynamicParticle* aGamma= new G4DynamicParticle (G4Gamma::Gamma(), - GammaDirection, GammaEnergy); - - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary(aGamma); - - // - // Update the incident particle - // - - G4double NewKinEnergy = KineticEnergy - GammaEnergy; - if (NewKinEnergy > 0.) - { - aParticleChange.SetMomentumChange( ParticleDirection ); - aParticleChange.SetEnergyChange( NewKinEnergy ); - aParticleChange.SetLocalEnergyDeposit (0.); - } - else - { - aParticleChange.SetEnergyChange( 0. ); - aParticleChange.SetLocalEnergyDeposit (0.); - if (charge<0.) aParticleChange.SetStatusChange(fStopAndKill); - else aParticleChange.SetStatusChange(fStopButAlive); - } - - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); -} -G4Element* G4IeBremsstrahlung::SelectRandomAtom(G4Material* aMaterial) const -{ - // select randomly 1 element within the material - - const G4int Index = aMaterial->GetIndex(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - - G4double rval = G4UniformRand()*((*PartialSumSigma[Index])[NumberOfElements-1]); - for ( G4int i=0; i < NumberOfElements; i++ ) - if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)(i)); - G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() - << "' has no elements, NULL pointer returned." << G4endl; - return NULL; -} - -void G4IeBremsstrahlung::PrintInfoDefinition() -{ - G4String comments = "Total cross sections from a parametrisation. "; - comments += "Good description from 1 KeV to 100 GeV.\n"; - comments += " log scale extrapolation above 100 GeV \n"; - comments += " Gamma energy sampled from a parametrised formula."; - - G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy,"Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; -} - - diff --git a/source/processes/electromagnetic/integral/src/G4IeIonisation.cc b/source/processes/electromagnetic/integral/src/G4IeIonisation.cc deleted file mode 100644 index f47155d299..0000000000 --- a/source/processes/electromagnetic/integral/src/G4IeIonisation.cc +++ /dev/null @@ -1,977 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IeIonisation.cc,v 1.1.2.2 2001/06/28 20:19:21 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// ------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4IeIonisation physics process ----------- -// by Laszlo Urban, 23 June 1998 -// ************************************************************ -// It is the first implementation of the IONISATION -// PROCESS. ( delta rays + continuous energy loss) -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ************************************************************ -// 27/10/98: minor changes + cleanup, L.Urban -// -------------------------------------------------------------- - - -#include "G4IeIonisation.hh" -#include "G4UnitsTable.hh" - - -G4IeIonisation::G4IeIonisation(const G4String& processName) - : G4VIeEnergyLoss(processName), - theMeanFreePathTable(NULL), - theNlambdaTable(NULL), - theInverseNlambdaTable(NULL), - theCoeffATable(NULL), - theCoeffBTable(NULL), - theCoeffCTable(NULL), - LowestKineticEnergy(1.00*keV), - HighestKineticEnergy(100.*TeV), - TotBin(100), - NumberOfBuildPhysicsTableCalls(0), - theElectron ( G4Electron::Electron() ), - thePositron ( G4Positron::Positron() ) -{ } - -G4IeIonisation::~G4IeIonisation() -{ - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - if (theNlambdaTable) { - theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable; - } - if (theInverseNlambdaTable) { - theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; - } - if(theCoeffATable) { - theCoeffATable->clearAndDestroy(); - delete theCoeffATable; - } - if(theCoeffBTable) { - theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; - } - if(theCoeffCTable) { - theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; - } -} - -void G4IeIonisation::SetPhysicsTableBining( - G4double lowE,G4double highE,G4int nBins) -{ - LowestKineticEnergy=lowE; HighestKineticEnergy=highE; TotBin=nBins; -} - -void G4IeIonisation::BuildPhysicsTable( - const G4ParticleDefinition& aParticleType) -{ - RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; - NumberOfBuildPhysicsTableCalls += 1 ; - if(NumberOfBuildPhysicsTableCalls == 1) - { - BuildLossTable(aParticleType) ; - - if(&aParticleType==theElectron) - { - RecorderOfElectronProcess[CounterOfElectronProcess] = - (*this).theLossTable ; - CounterOfElectronProcess++; - } - else - { - RecorderOfPositronProcess[CounterOfPositronProcess] = - (*this).theLossTable ; - CounterOfPositronProcess++; - } - - BuildLambdaTable(aParticleType) ; - - BuildDEDXTable(aParticleType) ; - - } - else - { - - BuildNlambdaTable(aParticleType) ; - - BuildCoeffATable(aParticleType) ; - BuildCoeffBTable(aParticleType) ; - BuildCoeffCTable(aParticleType) ; - - BuildInverseNlambdaTable(aParticleType) ; - - G4int printflag = 0 ; - if(printflag>0) - TestOfInversion(aParticleType,printflag) ; - - NumberOfBuildPhysicsTableCalls = 0 ; - - if(&aParticleType==G4Electron::Electron()) - PrintInfoDefinition(); - } -} - -void G4IeIonisation::TestOfInversion( - const G4ParticleDefinition& aParticleType, - G4int printflag) -{ - G4double T,Nlambda,Tprime,delta,del,sum,delmean,Tdelta ; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - G4cout.setf(G4std::ios::scientific, G4std::ios::floatfield) ; - if(printflag>1) - { - G4cout << G4endl; - G4cout << " particle=" << aParticleType.GetParticleName() << G4endl; - G4cout << "----------------------" << G4endl; - } - for (G4int J=0; J1) - { - G4cout << G4endl; - G4cout << " material = " << (*theMaterialTable)[J]->GetName() << G4endl; - G4cout << " mat.ind.=" << J << " T Nlambda Tprime" - << " (Tprime-T)/T(%)" << G4endl ; - } - - G4PhysicsLogVector* aVector ; - - aVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin) ; - delta = 0. ; - delmean = 0.; - sum = 0.; - Tdelta = 0. ; - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - Nlambda = (*theNlambdaTable)[J]->GetValue(T,isOut) ; - - if(Nlambda>0.) - { - Tprime = (*theInverseNlambdaTable)[J]->GetValue(Nlambda,isOut) ; - - if((Nlambda>0.)&&(i<(TotBin-1))) - { - del = 100.*(Tprime-T)/T ; - sum += 1.; - delmean += abs(del); - if(abs(del)>abs(delta)) - { - delta = del ; - Tdelta = T ; - } - } - if(printflag>1) - { - G4cout << G4std::setw(18) << G4std::setprecision(6) << T << " " << - G4std::setw(14)<< G4std::setprecision(6) << Nlambda << " " << - G4std::setw(14) << G4std::setprecision(6) << Tprime << " " << - G4std::setw(12) << G4std::setprecision(3) << del << G4endl; - } - } - } - if(printflag>0) - { - G4cout << G4endl; - G4cout << "G4IeIonisation::TestOfInversion (T->Nlambda->Tprime) " << G4endl ; - G4cout << "particle= " << aParticleType.GetParticleName() << - " material= " << (*theMaterialTable)[J]->GetName() << G4endl ; - G4cout << "max (Tprime-T)/T in % =" << G4std::setw(10) << G4std::setprecision(3) << - delta ; - G4cout << " at a kinetic energy " << G4std::setw(10) << G4std::setprecision(3) << - Tdelta/MeV << " MeV" << G4endl; - delmean /= sum ; - G4cout << "mean rel.diff. (Tprime-T)/T=" << G4std::setw(10) << - G4std::setprecision(3) << delmean << - " % (mean is calculated in abs. value)" << G4endl; - G4cout << G4endl; - } - } - -} - -void G4IeIonisation::BuildNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if(theNlambdaTable) - { theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable ; } - - theNlambdaTable = new G4PhysicsTable(numOfMaterials) ; - - for (G4int J=0; Jinsert(aVector) ; - } -} - -void G4IeIonisation::BuildNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdgeEnergy,T,Tlast,dEdx,Value,Vlast,u,du,coeff,l ; - G4double thresholdEnergy ; - const G4int nbin = 20 ; - G4bool isOut ; - const G4double small = 1.e-100; - const G4double lmin=1.e-100,lmax=1.e100; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - if(&aParticleType == theElectron) - thresholdEnergy = 2.*DeltaCutInKineticEnergy[materialIndex]; - else - thresholdEnergy = DeltaCutInKineticEnergy[materialIndex]; - - // here assumed that the threshold energy for the process >= - // LowestKineticEnergy (temporarily ) - if(thresholdEnergy >= LowestKineticEnergy) - { - Value = 0. ; - } - else - { - // extrapolation needed .................. - //first integral from thresholdEnergy to LowestKineticEnergy - Value = 0. ; - } - nlambdaVector->PutValue(0,Value) ; - Tlast = LowestKineticEnergy ; - Vlast = Value ; - - for (G4int i=1; iGetLowEdgeEnergy(i) ; - Value = 0. ; - if(LowEdgeEnergy > thresholdEnergy) - { - u = log(LowEdgeEnergy/Tlast) ; - du = u/nbin ; - u = -du ; - for(G4int n=0; n<=nbin; n++) - { - u += du ; - T = Tlast*exp(u) ; - if((n==0)||(n==nbin)) - coeff=0.5 ; - else - coeff=1.0 ; - - l = (*theMeanFreePathTable)[materialIndex]->GetValue(T,isOut); - if((l>lmin) && (lPutValue(i,Value) ; - Tlast = LowEdgeEnergy ; - Vlast = Value ; - } -} - -void G4IeIonisation::BuildCoeffATable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); -// create table for coefficients "A" - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffATable) - { theCoeffATable->clearAndDestroy(); - delete theCoeffATable; } - - theCoeffATable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if( i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - else - Value = 0. ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffATable->insert(aVector); - } -} - -void G4IeIonisation::BuildCoeffBTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "B" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffBTable) - { theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; } - - theCoeffBTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - else - Value = RTable*(Ri-Rim)/((RTable-1.)*Ti) ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffBTable->insert(aVector); - } -} - -void G4IeIonisation::BuildCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - // create table for coefficients "C" - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffCTable) - { theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; } - - theCoeffCTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = w1*Rip + w2*Ri + w3*Rim ; - else - Value = (-Ri+RTable*Rim)/(RTable-1.) ; - - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffCTable->insert(aVector); - } -} - -void G4IeIonisation::BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - G4double T,Smallest,Biggest ; - const G4double small = 1.e-100; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - - if(theInverseNlambdaTable) - { theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; } - - theInverseNlambdaTable = new G4PhysicsTable(numOfMaterials); - - for (G4int J=0; J - GetValue(T,isOut) ; - T *= RTable ; - } while ((Smallest <= small)&&(T - GetValue(HighestKineticEnergy,isOut) ; - - // inverse can be built for "meaningful" cut value only! - if(Smallest >= Biggest) - { - G4Exception( - "Cut value is too big , smaller value should be used !"); - } - - G4PhysicsLogVector* aVector; - - aVector = new G4PhysicsLogVector(Smallest, - Biggest,TotBin); - - InvertNlambdaVector(aParticleType,J, aVector); - - theInverseNlambdaTable->insert(aVector); - } -} - -void G4IeIonisation::InvertNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdge,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double bin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for Nlambda values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - - if( bin < LowEdge ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - bin = (*theNlambdaTable)[materialIndex]->GetValue(Tbin,isOut) ; - } - while ((bin < LowEdge) && (binnumber < TotBin-2 )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy/RTable ; - else - { - A = (*(*theCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdge -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdge); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - - nlambdaVector->PutValue(i,KineticEnergy) ; - } -} - -void G4IeIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) -{ - G4double LowEdgeEnergy , ionloss ; - G4bool isOutRange ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - const G4double twoln10 = 2.*log(10.) ; - const G4double Factor = twopi_mc2_rcl2 ; - - ParticleMass = aParticleType.GetPDGMass(); - - ParticleCutInKineticEnergy = aParticleType.GetEnergyCuts() ; - - G4int numOfMaterials = theMaterialTable->length(); - - if (theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - - theLossTable = new G4PhysicsTable(numOfMaterials); - - for (G4int J=0; JGetElectronDensity(); - Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); - Eexcm2 = Eexc/ParticleMass ; - Eexcm2 *= Eexcm2 ; - Cden = material->GetIonisation()->GetCdensity(); - Mden = material->GetIonisation()->GetMdensity(); - Aden = material->GetIonisation()->GetAdensity(); - X0den = material->GetIonisation()->GetX0density(); - X1den = material->GetIonisation()->GetX1density(); - - ParticleCutInKineticEnergyNow = ParticleCutInKineticEnergy[J] ; - - // some local variables ------------------- - G4double tau,Tmax,gamma,gamma2,bg2,beta2,d,d2,d3,d4,delta,x,y ; - - for (G4int i = 0 ; i < TotBin ; i++) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - tau = LowEdgeEnergy/ParticleMass ; - - // Seltzer-Berger formula - gamma = tau +1. ; - bg2 = tau*(tau+2.) ; - gamma2 = gamma*gamma ; - beta2 = bg2/gamma2 ; - - // electron ................................. - if(&aParticleType==theElectron) - { - Tmax = LowEdgeEnergy/2. ; - - d = G4std::min(ParticleCutInKineticEnergyNow, Tmax)/ParticleMass; - - ionloss = log(2.*(tau+2.)/Eexcm2)-1.-beta2 ; - ionloss += log((tau-d)*d)+tau/(tau-d) ; - ionloss += (0.5*d*d+(2.*tau+1.)*log(1.-d/tau))/gamma2 ; - } - //positron ............................... - else - { - Tmax = LowEdgeEnergy ; - - d = G4std::min(ParticleCutInKineticEnergyNow, Tmax)/ParticleMass; - - d2=d*d/2. ; - d3=d*d*d/3. ; - d4=d*d*d*d/4. ; - - y=1./(1.+gamma) ; - - ionloss = log(2.*(tau+2.)/Eexcm2)+log(tau*d) ; - ionloss-= beta2*(tau+2.*d-y*(3.*d2+y*(d-d3+y*(d2-tau*d3+d4))))/tau; - - } - - // density correction ................................ - x = log(bg2)/twoln10 ; - if ( x < X0den ) - delta = 0. ; - else - { - delta = twoln10*x - Cden ; - if ( x < X1den ) - delta += Aden*pow((X1den-x),Mden) ; - } - - // now you can compute the total ionization loss - ionloss -= delta ; - ionloss *= Factor*ElectronDensity/beta2 ; - if ( ionloss <= 0.) - ionloss = 0. ; - - aVector->PutValue(i,ionloss) ; - } - theLossTable->insert(aVector); - } -} - -void G4IeIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) -{ - G4double LowEdgeEnergy , Value ,sigma ; - G4bool isOutRange ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); - - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - ParticleCutInKineticEnergy = aParticleType.GetEnergyCuts() ; - - for (G4int J=0 ; J < numOfMaterials; J++) - { - G4PhysicsLogVector* aVector = new G4PhysicsLogVector( - LowestKineticEnergy, HighestKineticEnergy, TotBin); - - const G4Material* material= (*theMaterialTable)[J]; - - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector(); - const G4int NumberOfElements= - material->GetNumberOfElements() ; - - DeltaKineticEnergyCutNow = DeltaCutInKineticEnergy[J] ; - - for ( G4int i = 0 ; i < TotBin ; i++ ) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - sigma = 0. ; - for (G4int iel=0; ielGetZ() ) ; - } - Value = sigma<=0 ? DBL_MAX : 1./sigma ; - aVector->PutValue(i, Value) ; - } - theMeanFreePathTable->insert(aVector); - } -} - - -G4double G4IeIonisation::ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber) -{ - // calculates the microscopic cross section in GEANT4 internal units - // ( it is called for elements , AtomicNumber = Z ) - G4double TotalEnergy,MaxKineticEnergyTransfer, - betasquare,gamma,gamma2,x,x2,y,y2,y12,b1,b2,b3,b4, - TotalCrossSection; - - TotalEnergy=KineticEnergy + ParticleMass; - betasquare = KineticEnergy*(TotalEnergy+ParticleMass) - /(TotalEnergy*TotalEnergy); - gamma = TotalEnergy/ParticleMass ; - x=DeltaKineticEnergyCutNow/KineticEnergy ; - - if(&aParticleType==theElectron) - MaxKineticEnergyTransfer = 0.5*KineticEnergy ; - else - MaxKineticEnergyTransfer = KineticEnergy ; - - if( MaxKineticEnergyTransfer > DeltaKineticEnergyCutNow ) - { - //Moller (e-e-) scattering - if(&aParticleType==theElectron) - { - gamma2 = gamma*gamma ; - TotalCrossSection = (gamma-1.)*(gamma-1.)*(0.5-x)/gamma2 + 1./x - - 1./(1.-x)-(2.*gamma-1.)*log((1.-x)/x)/gamma2 ; - TotalCrossSection /= betasquare ; - } - //Bhabha (e+e-) scattering - else - { - x2=x*x ; - y=1./(1.+gamma) ; - y2=y*y ; - y12=1.-2.*y ; - b1=2.-y2 ; - b2=y12*(3.+y2) ; - b4=y12*y12*y12 ; - b3=b4+y12*y12 ; - TotalCrossSection = (1./x-1.)/betasquare+b1*log(x)+b2*(1.-x)- - b3*(1.-x2)/2.+b4*(1.-x2*x)/3. ; - } - - TotalCrossSection = twopi_mc2_rcl2 * AtomicNumber - *TotalCrossSection/KineticEnergy ; - } - else - TotalCrossSection = 0. ; - - return TotalCrossSection ; -} - - -G4VParticleChange* G4IeIonisation::PostStepDoIt( - const G4Track& trackData, - const G4Step& stepData) -{ - aParticleChange.Initialize(trackData) ; - - G4Material* aMaterial = trackData.GetMaterial() ; - const G4DynamicParticle* aParticle = trackData.GetDynamicParticle() ; - - G4double Charge = aParticle->GetDefinition()->GetPDGCharge(); - ParticleMass = aParticle->GetDefinition()->GetPDGMass(); - G4double KineticEnergy = aParticle->GetKineticEnergy(); - G4double TotalEnergy = KineticEnergy + ParticleMass; - G4double Psquare = KineticEnergy*(TotalEnergy+ParticleMass); - G4double TotalMomentum = sqrt(Psquare); - G4double Esquare=TotalEnergy*TotalEnergy; - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection(); - - // get kinetic energy cut for the electron - DeltaCutInKineticEnergy = G4Electron::Electron()->GetCutsInEnergy(); - G4double DeltaThreshold = DeltaCutInKineticEnergy[aMaterial->GetIndex()]; - - // some kinematics - G4double MaxKineticEnergyTransfer; - if (Charge < 0.) MaxKineticEnergyTransfer = 0.5*KineticEnergy; - else MaxKineticEnergyTransfer = KineticEnergy; - - // sampling kinetic energy of the delta ray - - if (MaxKineticEnergyTransfer <= DeltaThreshold) - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - - // normal case - G4double cc,y,y2,c2,b0,b1,b2,b3,b4,x,x1,grej,grejc; - - G4double tau = KineticEnergy/ParticleMass; - G4double gamma = tau+1., gamma2=gamma*gamma; - G4double xc = DeltaThreshold/KineticEnergy, xc1=1.-xc; - - if (Charge < 0.) // Moller (e-e-) scattering - { - b1=4./(9.*gamma2-10.*gamma+5.); - b2=tau*tau*b1; b3=(2.*gamma2+2.*gamma-1.)*b1; - cc=1.-2.*xc; - do { - x = xc/(1.-cc*G4UniformRand()); x1 = 1.-x; - grej = b2*x*x-b3*x/x1+b1*gamma2/(x1*x1); - } while (G4UniformRand()>grej) ; - } - else // Bhabha (e+e-) scattering - { - y=1./(gamma+1.); y2=y*y; cc=1.-2.*y; - b1=2.-y2; b2=cc*(3.+y2); - c2=cc*cc; b4=c2*cc; b3=c2+b4; - b0=gamma2/(gamma2-1.); - grejc=(((b4*xc-b3)*xc+b2)*xc-b1)*xc+b0; - do { - x = xc/(1.-xc1*G4UniformRand()); - grej = ((((b4*x-b3)*x+b2)*x-b1)*x+b0)/grejc; - } while (G4UniformRand()>grej); - } - - G4double DeltaKineticEnergy = x * KineticEnergy; - - // protection :do not produce a secondary with 0. kinetic energy ! - if (DeltaKineticEnergy <= 0.) - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - - G4double DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + - 2. * electron_mass_c2 )); - - G4double costheta = DeltaKineticEnergy * (TotalEnergy + electron_mass_c2) - /(DeltaTotalMomentum * TotalMomentum); - - if (costheta < -1.) costheta = -1.; - if (costheta > +1.) costheta = +1.; - - // direction of the delta electron - - G4double phi = twopi * G4UniformRand(); - G4double sintheta = sqrt((1.+costheta)*(1.-costheta)); - G4double dirx = sintheta * cos(phi), diry = sintheta * sin(phi), - dirz = costheta; - - G4ThreeVector DeltaDirection(dirx,diry,dirz); - DeltaDirection.rotateUz(ParticleDirection); - - // create G4DynamicParticle object for delta ray - - G4DynamicParticle* theDeltaRay = new G4DynamicParticle; - theDeltaRay->SetKineticEnergy( DeltaKineticEnergy ); - theDeltaRay->SetMomentumDirection( - DeltaDirection.x(),DeltaDirection.y(),DeltaDirection.z()); - theDeltaRay->SetDefinition(G4Electron::Electron()); - - // fill aParticleChange - // changed energy and momentum of the actual particle - G4double finalKineticEnergy = KineticEnergy - DeltaKineticEnergy; - - if (finalKineticEnergy > 0.) - { - G4double finalPx = TotalMomentum*ParticleDirection.x() - - DeltaTotalMomentum*DeltaDirection.x(); - G4double finalPy = TotalMomentum*ParticleDirection.y() - - DeltaTotalMomentum*DeltaDirection.y(); - G4double finalPz = TotalMomentum*ParticleDirection.z() - - DeltaTotalMomentum*DeltaDirection.z(); - G4double finalMomentum = - sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz) ; - finalPx /= finalMomentum ; - finalPy /= finalMomentum ; - finalPz /= finalMomentum ; - - aParticleChange.SetMomentumChange( finalPx,finalPy,finalPz ); - } - else - { - finalKineticEnergy = 0.; - if (Charge < 0.) aParticleChange.SetStatusChange(fStopAndKill); - else aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetEnergyChange( finalKineticEnergy ); - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( theDeltaRay ); - aParticleChange.SetLocalEnergyDeposit (0.); - - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); -} - -void G4IeIonisation::PrintInfoDefinition() -{ - G4String comments = "delta cross sections from Moller+Bhabha. "; - comments += "Good description from 1 KeV to 100 GeV.\n"; - comments += " delta ray energy sampled from differential Xsection."; - - G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy,"Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; -} - diff --git a/source/processes/electromagnetic/integral/src/G4IeplusAnnihilation.cc b/source/processes/electromagnetic/integral/src/G4IeplusAnnihilation.cc deleted file mode 100644 index 91950aa19b..0000000000 --- a/source/processes/electromagnetic/integral/src/G4IeplusAnnihilation.cc +++ /dev/null @@ -1,907 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IeplusAnnihilation.cc,v 1.1.2.2 2001/06/28 20:19:21 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4IeplusAnnihilation process -------- -// by Michel Maire, 7 July 1996 -// ************************************************************** -// -------------------------------------------------------------- -// ************************************************************ -// It is the first implementation of the -// eplusANNIHILATION PROCESS -// using an INTEGRAL APPROACH instead of the differential -// one used in the standard implementation . -// ************************************************************ -// by Laszlo Urban, 23 June 1998 -// ----------------------------------------------------------- -// 28/10/28: some cleanup , L.Urban - -#include "G4IeplusAnnihilation.hh" -#include "G4UnitsTable.hh" - -// constructor -G4IeplusAnnihilation::G4IeplusAnnihilation(const G4String& processName) - : G4IVRestDiscreteProcess (processName), - LowestEnergyLimit ( 10*keV), // initialization - HighestEnergyLimit( 10*TeV), - NumberOfBuildPhysicsTableCalls(0), - NumbBinTable(100) - { - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< G4endl; - G4cout << "LowestEnergy: " << LowestEnergyLimit/keV << "keV "; - G4cout << "HighestEnergy: " << HighestEnergyLimit/TeV << "TeV " << G4endl; - } - theCrossSectionTable = NULL; - theMeanFreePathTable = NULL; - theMeanFreePathTable = NULL ; - theNlambdaTable = NULL; - theInverseNlambdaTable = NULL; - theCoeffATable = NULL ; - theCoeffBTable = NULL ; - theCoeffCTable = NULL ; - - LowestKineticEnergy = LowestEnergyLimit ; - HighestKineticEnergy= HighestEnergyLimit; - TotBin = NumbBinTable ; - RTable = exp(log(HighestKineticEnergy/LowestKineticEnergy)/TotBin) ; - } - -// destructor - -G4IeplusAnnihilation::~G4IeplusAnnihilation() -{ - if (theCrossSectionTable) { - theCrossSectionTable->clearAndDestroy(); - delete theCrossSectionTable; - } - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - if (theNlambdaTable) { - theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable; - } - if (theInverseNlambdaTable) { - theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; - } - if (theCoeffATable) { - theCoeffATable->clearAndDestroy(); - delete theCoeffATable; - } - if (theCoeffBTable) { - theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; - } - if (theCoeffCTable) { - theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; - } -} - -void G4IeplusAnnihilation::SetPhysicsTableBining(G4double lowE, - G4double highE, G4int nBins) -{ - LowestEnergyLimit = lowE; HighestEnergyLimit = highE; NumbBinTable = nBins; -} - -void G4IeplusAnnihilation::BuildPhysicsTable(const G4ParticleDefinition& PositronType) - -// Build microscopic total cross section tables and mean free path table -{ - NumberOfBuildPhysicsTableCalls += 1 ; - if(NumberOfBuildPhysicsTableCalls == 1) - { ; } - else - { - - G4double LowEdgeEnergy, Value; - G4PhysicsLogVector* ptrVector; - -// Build microscopic cross section tables for the e+e- annihilation - - if (theCrossSectionTable) { - theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable; } - - theCrossSectionTable = new G4PhysicsTable( G4Element::GetNumberOfElements()) ; - const G4ElementTable* theElementTable = G4Element::GetElementTable() ; - G4double AtomicNumber; - G4int J; - - for ( J=0 ; J < G4Element::GetNumberOfElements(); J++ ) - { - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, - NumbBinTable ) ; - AtomicNumber = (*theElementTable)(J)->GetZ(); - - for ( G4int i = 0 ; i < NumbBinTable ; i++ ) - { - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeMicroscopicCrossSection( LowEdgeEnergy, AtomicNumber); - ptrVector->PutValue( i , Value ) ; - } - - theCrossSectionTable->insertAt( J , ptrVector ) ; - - } - -// Build mean free path table for the e+e- annihilation - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable; } - - theMeanFreePathTable = new G4PhysicsTable( G4Material::GetNumberOfMaterials() ); - - //*******************!!!!!!!!!!!!!!!!!!!!!!******************** - theMeanFreePathTable = theMeanFreePathTable ; - //*******************!!!!!!!!!!!!!!!!!!!!!!******************** - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4Material* material; - - for ( J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) - { - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, - NumbBinTable ) ; - material = (*theMaterialTable)(J); - - for ( G4int i = 0 ; i < NumbBinTable ; i++ ) - { - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeMeanFreePath( LowEdgeEnergy, material); - ptrVector->PutValue( i , Value ) ; - - theMeanFreePathTable->insertAt( J , ptrVector ) ; - - } - - } - - const G4ParticleDefinition& aParticleType = PositronType ; - - BuildNlambdaTable(aParticleType) ; - - BuildCoeffATable(aParticleType) ; - BuildCoeffBTable(aParticleType) ; - BuildCoeffCTable(aParticleType) ; - - BuildInverseNlambdaTable(aParticleType) ; - - G4int printflag = 0 ; - if(printflag>0) - TestOfInversion(aParticleType,printflag) ; - - NumberOfBuildPhysicsTableCalls = 0 ; - - PrintInfoDefinition() ; - - } -} - -void G4IeplusAnnihilation::TestOfInversion( - const G4ParticleDefinition& aParticleType, - G4int printflag) -{ - G4double T,Nlambda,Tprime,delta,del,sum,delmean,Tdelta ; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - G4cout.setf(G4std::ios::scientific, G4std::ios::floatfield) ; - if(printflag>1) - { - G4cout << G4endl; - G4cout << " particle=" << aParticleType.GetParticleName() << G4endl; - G4cout << "----------------------" << G4endl; - } - for (G4int J=0; J1) - { - G4cout << G4endl; - G4cout << " material = " << (*theMaterialTable)[J]->GetName() << G4endl; - G4cout << " mat.ind.=" << J << " T Nlambda Tprime" - << " (Tprime-T)/T(%)" << G4endl ; - } - - G4PhysicsLogVector* aVector ; - - aVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin) ; - delta = 0. ; - delmean = 0.; - sum = 0.; - Tdelta = 0. ; - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - Nlambda = (*theNlambdaTable)[J]->GetValue(T,isOut) ; - - if(Nlambda>0.) - { - Tprime = (*theInverseNlambdaTable)[J]->GetValue(Nlambda,isOut) ; - - if((Nlambda>0.)&&(i<(TotBin-1))) - { - del = 100.*(Tprime-T)/T ; - sum += 1.; - delmean += abs(del); - if(abs(del)>abs(delta)) - { - delta = del ; - Tdelta = T ; - } - } - if(printflag>1) - { - G4cout << G4std::setw(18) << G4std::setprecision(6) << T << " " << - G4std::setw(14)<< G4std::setprecision(6) << Nlambda << " " << - G4std::setw(14) << G4std::setprecision(6) << Tprime << " " << - G4std::setw(12) << G4std::setprecision(3) << del << G4endl; - } - } - } - if(printflag>0) - { - G4cout << G4endl; - G4cout << "G4IeplusAnnihilation::TestOfInversion (T->Nlambda->Tprime) " << G4endl -; - G4cout << "particle= " << aParticleType.GetParticleName() << - " material= " << (*theMaterialTable)[J]->GetName() << G4endl ; - G4cout << "max (Tprime-T)/T in % =" << G4std::setw(10) << G4std::setprecision(3) << delta ; - G4cout << " at a kinetic energy " << G4std::setw(10) << G4std::setprecision(3) << - Tdelta/MeV << " MeV" << G4endl; - delmean /= sum ; - G4cout << "mean rel.diff. (Tprime-T)/T=" << G4std::setw(10) << - G4std::setprecision(3) << delmean << - " % (mean is calculated in abs. value)" << G4endl; - G4cout << G4endl; - } - } -} - -void G4IeplusAnnihilation::BuildNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if(theNlambdaTable) - { theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable ; } - - theNlambdaTable = new G4PhysicsTable(numOfMaterials) ; - - // loop for materials - for (G4int J=0; Jinsert(aVector) ; - } - -} - -void G4IeplusAnnihilation::BuildNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdgeEnergy,T,Tlast,dEdx,Value,Vlast,u,du,coeff,l ; - const G4int nbin = 20 ; - G4bool isOut ; - const G4double small = 1.e-100; - const G4double plowloss = 0.5 ; //this should be a data member of en.loss! - const G4double lmin=1.e-100,lmax=1.e100; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - //first integral from 0. to LowestKineticEnergy - // here assumed that the threshold energy for the process >= - // LowestKineticEnergy - dEdx = G4EnergyLossTables::GetPreciseDEDX(&aParticleType, - LowestKineticEnergy, - (*theMaterialTable)[materialIndex]); - Value = LowestKineticEnergy/(dEdx*BIGSTEP*(1.-plowloss)) ; - if(ValuePutValue(0,Value) ; - - Tlast = LowestKineticEnergy ; - Vlast = Value ; - - // loop for kinetic energy - - for (G4int i=1; iGetLowEdgeEnergy(i) ; - - u = log(LowEdgeEnergy/Tlast) ; - du = u/nbin ; - - u = -du ; - Value = 0. ; - for(G4int n=0; n<=nbin; n++) - { - u += du ; - T = Tlast*exp(u) ; - - if((n==0)||(n==nbin)) - coeff=0.5 ; - else - coeff=1.0 ; - - l = (*theMeanFreePathTable)[materialIndex]->GetValue(T,isOut); - if((l>lmin) && (lPutValue(i,Value) ; - - Tlast = LowEdgeEnergy ; - Vlast = Value ; - - } - -} - -void G4IeplusAnnihilation::BuildCoeffATable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "A" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffATable) - - { theCoeffATable->clearAndDestroy(); - delete theCoeffATable; } - theCoeffATable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if( i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - else - { - Rip = Rip*Rip/Rim ; - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - } - - aVector->PutValue(i,Value); - - - Ti = RTable*Ti ; - - } - - theCoeffATable->insert(aVector); - - } - -} - -void G4IeplusAnnihilation::BuildCoeffBTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "B" - - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffBTable) - { theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; } - theCoeffBTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - else - { - Rip = Rip*Rip/Rim ; - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti ; - } - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffBTable->insert(aVector); - - } - -} - -void G4IeplusAnnihilation::BuildCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "C" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffCTable) - { theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; } - theCoeffCTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = w1*Rip + w2*Ri + w3*Rim ; - else - { - Rip = Rip*Rip/Rim ; - Value = w1*Rip + w2*Ri + w3*Rim ; - } - - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffCTable->insert(aVector); - - } - -} -void G4IeplusAnnihilation::BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - G4double T,Smallest,Biggest,TT ; - const G4double small = 1.e-10; - G4bool isOut ; - -// create table - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - - if(theInverseNlambdaTable) - { theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; } - theInverseNlambdaTable = new G4PhysicsTable(numOfMaterials); - -// loop for materials - - for (G4int J=0; J - GetValue(T,isOut) ; - T *= RTable ; - } while (Smallest <= small) ; - - Biggest = (*theNlambdaTable)[J]-> - GetValue(HighestKineticEnergy,isOut) ; - //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - Biggest *= 1.25 ; - - // create vector - G4PhysicsLogVector* aVector; - - aVector = new G4PhysicsLogVector(Smallest, - Biggest,TotBin); - - // fill the vector - - InvertNlambdaVector(aParticleType,J, aVector); - - // insert vector to the table - - theInverseNlambdaTable->insert(aVector); - - } -} - -void G4IeplusAnnihilation::InvertNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdge,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double bin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for Nlambda values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - - if( bin < LowEdge ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - bin = (*theNlambdaTable)[materialIndex]->GetValue(Tbin,isOut) ; - } - while ((bin < LowEdge) && (binnumber < TotBin-2 )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy ; - else - { - A = (*(*theCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdge -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdge); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - - } - - nlambdaVector->PutValue(i,KineticEnergy) ; - - } -} - -G4double G4IeplusAnnihilation::ComputeMicroscopicCrossSection - (G4double PositKinEnergy, G4double AtomicNumber) - -// Calculates the microscopic cross section of annihilation into two photons -// from the Heilter formula. -// GEANT4 internal units. - -{ - static const G4double pi_rcl2 = pi*classic_electr_radius*classic_electr_radius; - - G4double gama = 1. + PositKinEnergy/electron_mass_c2; - G4double gama2 = gama*gama, sqgama2 = sqrt(gama2-1.); - - return pi_rcl2*AtomicNumber*((gama2+4*gama+1.)*log(gama+sqgama2) - (gama+3.)*sqgama2) - /((gama2-1.)*(gama+1.)); -} - - -G4VParticleChange* G4IeplusAnnihilation::PostStepDoIt(const G4Track& aTrack, - const G4Step& aStep) -// -// The secondaries Gamma energies are sampled using the Heitler cross section. -// -// A modified version of the random number techniques of Butcher & Messel is used -// (Nuc Phys 20(1960),15). -// -// GEANT4 internal units. -// -// Note 1 : The initial electron is assumed free and at rest. -// -// Note 2 : The annihilation processes producing one or more than two photons are -// ignored, as negligible compared to the two photons process. - -{ - aParticleChange.Initialize(aTrack); - G4Material* aMaterial = aTrack.GetMaterial(); - - - const G4DynamicParticle* aDynamicPositron = aTrack.GetDynamicParticle(); - G4double PositKinEnergy = aDynamicPositron->GetKineticEnergy(); - G4ParticleMomentum PositDirection = aDynamicPositron->GetMomentumDirection(); - - aParticleChange.Initialize(aTrack); - - // Do not make anything if PositKinEnergy=0. , the annihilation then - // should be performed by the AtRestDoIt! - if(PositKinEnergy == 0.) - return &aParticleChange ; - - G4double gama = 1. + PositKinEnergy/electron_mass_c2; - G4double gamap1 = gama+1. , gamam1 = gama-1. , sqgrate = sqrt(gamam1/gamap1)/2. , - sqg2m1 = sqrt(gamam1*gamap1); - - // limits of the energy sampling - G4double epsil1 = 0.5 - sqgrate , epsil2 = 0.5 + sqgrate; - G4double epsilqot = epsil2/epsil1; - - // - // sample the energy rate of the created gammas - // - G4double epsil, greject ; - - do { - epsil = epsil1*pow(epsilqot,G4UniformRand()); - greject = 1. - epsil + (2*gama*epsil-1.)/(epsil*gamap1*gamap1); - } while( greject < G4UniformRand() ); - - // - // scattered Gamma angles. ( Z - axis along the parent positron) - // - - G4double cost = (epsil*gamap1-1.)/(epsil*sqg2m1) , sint = sqrt((1.+cost)*(1.-cost)); - - - G4double phi = twopi * G4UniformRand() ; - G4double dirx = sint*cos(phi) , diry = sint*sin(phi) , dirz = cost; - - // - // kinematic of the created pair - // - - G4double LocalEnerDeposit = 0. ; - aParticleChange.SetNumberOfSecondaries(2) ; - - G4double TotalAvailableEnergy = PositKinEnergy + 2*electron_mass_c2; - G4double Phot1Energy = epsil*TotalAvailableEnergy; - - G4double GammaCut= (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - - if (Phot1Energy > GammaCut) - { - G4ThreeVector Phot1Direction ( dirx, diry, dirz ); - Phot1Direction.rotateUz(PositDirection); - - // create G4DynamicParticle object for the particle1 - G4DynamicParticle* aParticle1= new G4DynamicParticle (G4Gamma::Gamma(), - Phot1Direction, Phot1Energy); - aParticleChange.AddSecondary( aParticle1 ) ; - } - else - { LocalEnerDeposit += Phot1Energy; } - - G4double Phot2Energy =(1.-epsil)*TotalAvailableEnergy; - - if (Phot2Energy > GammaCut) - { - G4double Eratio = Phot1Energy/Phot2Energy; - G4double PositP = sqrt(PositKinEnergy*(PositKinEnergy+2.*electron_mass_c2)); - G4ThreeVector Phot2Direction (-dirx*Eratio, -diry*Eratio, - (PositP-dirz*Phot1Energy)/Phot2Energy); - Phot2Direction.rotateUz(PositDirection); - - // create G4DynamicParticle object for the particle2 - G4DynamicParticle* aParticle2= new G4DynamicParticle (G4Gamma::Gamma(), - Phot2Direction, Phot2Energy); - aParticleChange.AddSecondary( aParticle2 ) ; - } - else - { LocalEnerDeposit += Phot2Energy; } - - aParticleChange.SetLocalEnergyDeposit( LocalEnerDeposit ) ; - - // - // Kill the incident positron - // - - aParticleChange.SetMomentumChange( 0., 0., 0. ) ; - aParticleChange.SetEnergyChange( 0. ) ; - aParticleChange.SetStatusChange( fStopAndKill ) ; - - return &aParticleChange; -} - - -G4VParticleChange* G4IeplusAnnihilation::AtRestDoIt(const G4Track& aTrack, - const G4Step& aStep) -// -// Performs the e+ e- annihilation when both particles are assumed at rest. -// It generates two back to back photons with energy = electron_mass. -// The angular distribution is isotropic. -// GEANT4 internal units -// -// Note : Effects due to binding of atomic electrons are negliged. - -{ - aParticleChange.Initialize(aTrack); - G4Material* aMaterial = aTrack.GetMaterial(); - - aParticleChange.SetNumberOfSecondaries(2) ; - - if (electron_mass_c2 > (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]) - { - G4double cosTeta = 2*G4UniformRand()-1. , sinTeta = sqrt(1.-cosTeta*cosTeta); - G4double Phi = twopi * G4UniformRand() ; - G4ThreeVector Direction (sinTeta*cos(Phi), sinTeta*sin(Phi), cosTeta); - - aParticleChange.AddSecondary( new G4DynamicParticle (G4Gamma::Gamma(), - Direction, electron_mass_c2) ); - aParticleChange.AddSecondary( new G4DynamicParticle (G4Gamma::Gamma(), - -Direction, electron_mass_c2) ); - - aParticleChange.SetLocalEnergyDeposit(0.); - } - else - { aParticleChange.SetLocalEnergyDeposit( 2*electron_mass_c2 ); } - - // Kill the incident positron - // - aParticleChange.SetStatusChange( fStopAndKill ); - - return &aParticleChange; -} - -void G4IeplusAnnihilation::PrintInfoDefinition() -{ - G4String comments="Total cross section from Heitler formula (2 photon annihilation).\n"; - comments += " gamma energies sampled according Heitler"; - - G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestEnergyLimit,"Energy") - << " to " << G4BestUnit(HighestEnergyLimit,"Energy") - << " in " << NumbBinTable << " bins. \n"; -} - - diff --git a/source/processes/electromagnetic/integral/src/G4IhIonisation.cc b/source/processes/electromagnetic/integral/src/G4IhIonisation.cc deleted file mode 100644 index 13c7922e66..0000000000 --- a/source/processes/electromagnetic/integral/src/G4IhIonisation.cc +++ /dev/null @@ -1,1097 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4IhIonisation.cc,v 1.1.2.2 2001/06/28 20:19:21 gunter Exp $ -// GEANT4 tag $Name: $ -// -// ------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4IhIonisation physics process ----------- -// by Laszlo Urban, 30 May 1997 -// ************************************************************** -// It is the first implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of charged hadrons. -// ************************************************************** -// corrected by L.Urban on 24/09/97 -// several bugs corrected by L.Urban on 13/01/98 -// 07-04-98: remove 'tracking cut' of the ionizing particle, MMa -// 29-10-98: small changes , some cleanup, L.Urban -// -------------------------------------------------------------- - - -#include "G4IhIonisation.hh" -#include "G4UnitsTable.hh" - -// constructor and destructor - -G4IhIonisation::G4IhIonisation(const G4String& processName) - : G4VIhEnergyLoss(processName), - theMeanFreePathTable(0), - theNlambdaTable(0), - theInverseNlambdaTable(0), - theCoeffATable(0), - theCoeffBTable(0), - theCoeffCTable(0), - NumberOfBuildPhysicsTableCalls(0), - theProton (G4Proton::Proton()), - theAntiProton (G4AntiProton::AntiProton()), - theElectron ( G4Electron::Electron() ) -{ } - -G4IhIonisation::~G4IhIonisation() -{ - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - -} - -void G4IhIonisation::SetPhysicsTableBining(G4double lowE, G4double highE, - G4int nBins) -{ - LowestKineticEnergy = lowE; HighestKineticEnergy = highE; - TotBin = nBins ; -} - -void G4IhIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable -{ - NumberOfBuildPhysicsTableCalls += 1 ; - if(NumberOfBuildPhysicsTableCalls == 1) - { - if(&aParticleType == G4Proton::Proton()) - { - LowestKineticEnergy= 1.00*keV; - HighestKineticEnergy= 100.*TeV; - TotBin=100 ; - } - - ParticleMass = aParticleType.GetPDGMass() ; - - G4double Charge = aParticleType.GetPDGCharge(); - - G4double newCutInRange = aParticleType.GetLengthCuts(); - - if(Charge>0.) - { - if( (CutInRange != newCutInRange) || (theDEDXpTable == NULL)) - { - BuildLossTable(aParticleType) ; - RecorderOfpProcess[CounterOfpProcess] = theLossTable ; - CounterOfpProcess++; - } - } - else - { - if( (CutInRange != newCutInRange) || (theDEDXpbarTable == NULL)) - { - BuildLossTable(aParticleType) ; - RecorderOfpbarProcess[CounterOfpbarProcess] = theLossTable ; - CounterOfpbarProcess++; - } - } - - G4double saveCutInRange = CutInRange ; - CutInRange = newCutInRange ; - BuildLambdaTable(aParticleType) ; - CutInRange = saveCutInRange ; - - BuildDEDXTable(aParticleType) ; - } - else - { - - BuildNlambdaTable(aParticleType) ; - - BuildCoeffATable(aParticleType) ; - BuildCoeffBTable(aParticleType) ; - BuildCoeffCTable(aParticleType) ; - - BuildInverseNlambdaTable(aParticleType) ; - - G4int printflag = 0 ; - if(printflag>0) - TestOfInversion(aParticleType,printflag) ; - - NumberOfBuildPhysicsTableCalls = 0 ; - - if(&aParticleType == G4Proton::Proton()) - PrintInfoDefinition(); - } -} - -void G4IhIonisation::TestOfInversion( - const G4ParticleDefinition& aParticleType, - G4int printflag) -{ - G4double T,Nlambda,Tprime,delta,del,sum,delmean,Tdelta ; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - G4cout.setf(G4std::ios::scientific, G4std::ios::floatfield) ; - if(printflag>1) - { - G4cout << G4endl; - G4cout << " particle=" << aParticleType.GetParticleName() << G4endl; - G4cout << "----------------------" << G4endl; - } - for (G4int J=0; J1) - { - G4cout << G4endl; - G4cout << " material = " << (*theMaterialTable)[J]->GetName() << G4endl; - G4cout << " mat.ind.=" << J << " T Nlambda Tprime" - << " (Tprime-T)/T(%)" << G4endl ; - } - - G4PhysicsLogVector* aVector ; - - aVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin) ; - delta = 0. ; - delmean = 0.; - sum = 0.; - Tdelta = 0. ; - for (G4int i=0; iGetLowEdgeEnergy(i) ; - - Nlambda = (*theNlambdaTable)[J]->GetValue(T,isOut) ; - - if(Nlambda>0.) - { - Tprime = (*theInverseNlambdaTable)[J]->GetValue(Nlambda,isOut) ; - - if((Nlambda>0.)&&(i<(TotBin-1))) - { - del = 100.*(Tprime-T)/T ; - sum += 1.; - delmean += abs(del); - if(abs(del)>abs(delta)) - { - delta = del ; - Tdelta = T ; - } - } - if(printflag>1) - { - G4cout << G4std::setw(18) << G4std::setprecision(6) << T << " " << - G4std::setw(14)<< G4std::setprecision(6) << Nlambda << " " << - G4std::setw(14) << G4std::setprecision(6) << Tprime << " " << - G4std::setw(12) << G4std::setprecision(3) << del << G4endl; - } - } - } - if(printflag>0) - { - G4cout << G4endl; - G4cout << "G4IhIonisation::TestOfInversion (T->Nlambda->Tprime) " << G4endl ; - G4cout << "particle= " << aParticleType.GetParticleName() << - " material= " << (*theMaterialTable)[J]->GetName() << G4endl ; - G4cout << "max (Tprime-T)/T in % =" << G4std::setw(10) << G4std::setprecision(3) << delta -; - G4cout << " at a kinetic energy " << G4std::setw(10) << G4std::setprecision(3) << - Tdelta/MeV << " MeV" << G4endl; - delmean /= sum ; - G4cout << "mean rel.diff. (Tprime-T)/T=" << G4std::setw(10) << - G4std::setprecision(3) << delmean << - " % (mean is calculated in abs. value)" << G4endl; - G4cout << G4endl; - } - } - -} - -void G4IhIonisation::BuildNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - if(theNlambdaTable) - { theNlambdaTable->clearAndDestroy(); - delete theNlambdaTable ; } - - theNlambdaTable = new G4PhysicsTable(numOfMaterials) ; - - // loop for materials - for (G4int J=0; Jinsert(aVector) ; - } - -} -void G4IhIonisation::BuildNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdgeEnergy,T,Tlast,dEdx,Value,Vlast,u,du,coeff ; - G4double Tcut,thresholdEnergy,w1,w2,l ; - const G4int nbin = 20 ; - G4bool isOut ; - const G4double small = 1.e-100; - const G4double lmin=1.e-100,lmax=1.e100; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - // the threshold energy for delta production - Tcut = DeltaCutInKineticEnergy[materialIndex]; - w1 = electron_mass_c2*(2.*ParticleMass-Tcut) ; - w2 = electron_mass_c2+ParticleMass ; - thresholdEnergy = 0.5*(sqrt(w1*w1+2.*electron_mass_c2*Tcut*w2*w2)-w1) - /electron_mass_c2 ; - // here assumed that the threshold energy for the process >= - // LowestKineticEnergy (temporarily ) - if(thresholdEnergy >= LowestKineticEnergy) - { - Value = 0. ; - } - else - { - // extrapolation needed .................. - //first integral from thresholdEnergy to LowestKineticEnergy - Value = 0. ; - } - - nlambdaVector->PutValue(0,Value) ; - Tlast = LowestKineticEnergy ; - Vlast = Value ; - - // loop for kinetic energy - for (G4int i=1; iGetLowEdgeEnergy(i) ; - - Value = 0. ; - - if(LowEdgeEnergy > thresholdEnergy) - { - u = log(LowEdgeEnergy/Tlast) ; - du = u/nbin ; - - u = -du ; - for(G4int n=0; n<=nbin; n++) - { - u += du ; - T = Tlast*exp(u) ; - - if((n==0)||(n==nbin)) - coeff=0.5 ; - else - coeff=1.0 ; - - l = (*theMeanFreePathTable)[materialIndex]->GetValue(T,isOut); - if((l>lmin) && (lPutValue(i,Value) ; - - Tlast = LowEdgeEnergy ; - Vlast = Value ; - } - -} -void G4IhIonisation::BuildCoeffATable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "A" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffATable) - { theCoeffATable->clearAndDestroy(); - delete theCoeffATable; } - theCoeffATable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if( i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - else - Value = 0. ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffATable->insert(aVector); - - } - -} - -void G4IhIonisation::BuildCoeffBTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "B" - - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffBTable) - { theCoeffBTable->clearAndDestroy(); - delete theCoeffBTable; } - theCoeffBTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - else - Value = RTable*(Ri-Rim)/((RTable-1.)*Ti) ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffBTable->insert(aVector); - - } - -} -void G4IhIonisation::BuildCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "C" - - G4int numOfMaterials = theMaterialTable->length(); - - if(theCoeffCTable) - { theCoeffCTable->clearAndDestroy(); - delete theCoeffCTable; } - theCoeffCTable = new G4PhysicsTable(numOfMaterials); - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = Ri/sqrt(RTable) ; - else - { - Tim = Ti/RTable ; - Rim = lVector->GetValue(Tim,isOut); - } - - Tip = Ti*RTable ; - Rip = lVector->GetValue(Tip,isOut); - - if(i < (TotBin-1)) - Value = w1*Rip + w2*Ri + w3*Rim ; - else - Value = (-Ri+RTable*Rim)/(RTable-1.) ; - - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theCoeffCTable->insert(aVector); - - } - -} -void G4IhIonisation::BuildInverseNlambdaTable( - const G4ParticleDefinition& aParticleType) -{ - G4double T,Smallest,Biggest ; - const G4double small = 1.e-100; - G4bool isOut ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - - if(theInverseNlambdaTable) - { theInverseNlambdaTable->clearAndDestroy(); - delete theInverseNlambdaTable; } - theInverseNlambdaTable = new G4PhysicsTable(numOfMaterials); - - for (G4int J=0; J - GetValue(T,isOut) ; - T *= RTable ; - } while ((Smallest <= small)&&(T - GetValue(HighestKineticEnergy,isOut) ; - - // inverse can be built for "meaningful" cut value only! - if(Smallest >= Biggest) - { - G4Exception( - "Cut value is too big , smaller value should be used !"); - } - - // create vector - G4PhysicsLogVector* aVector; - - aVector = new G4PhysicsLogVector(Smallest, - Biggest,TotBin); - - // fill the vector - - InvertNlambdaVector(aParticleType,J, aVector); - - // insert vector to the table - - theInverseNlambdaTable->insert(aVector); - } -} - -void G4IhIonisation::InvertNlambdaVector( - const G4ParticleDefinition& aParticleType, - G4int materialIndex, - G4PhysicsLogVector* nlambdaVector) -{ - G4double LowEdge,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double bin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for Nlambda values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - - if( bin < LowEdge ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - bin = (*theNlambdaTable)[materialIndex]->GetValue(Tbin,isOut) ; - } - while ((bin < LowEdge) && (binnumber < TotBin-2 )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy/RTable ; - else - { - A = (*(*theCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdge -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdge); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - - nlambdaVector->PutValue(i,KineticEnergy) ; - - } - -} - -void G4IhIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) -{ -// Build tables for the ionization energy loss -// the tables are built for MATERIALS -// ********* - G4double Charge = aParticleType.GetPDGCharge() ; - - // cuts for p/pbar and electron .................... - if(Charge>0.) - ParticleCutInKineticEnergy = theProton->GetCutsInEnergy() ; - else - ParticleCutInKineticEnergy = theAntiProton->GetCutsInEnergy() ; - - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - - G4double LowEdgeEnergy , ionloss ; - G4double RateMass ; - G4double deltaloss ; - - G4bool isOutRange ; - static const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - const G4double twoln10 = 2.*log(10.) ; - const G4double Factor = twopi_mc2_rcl2 ; - const G4double bg2lim = 0.0169 , taulim = 8.4146e-3 ; - - RateMass = electron_mass_c2/proton_mass_c2 ; - - // create table - - G4int numOfMaterials = theMaterialTable->length(); - - if ( theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - theLossTable = new G4PhysicsTable(numOfMaterials); - - // loop for materials - - for (G4int J=0; JGetElectronDensity(); - Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); - Eexc2 = Eexc*Eexc ; - Cden = material->GetIonisation()->GetCdensity(); - Mden = material->GetIonisation()->GetMdensity(); - Aden = material->GetIonisation()->GetAdensity(); - X0den = material->GetIonisation()->GetX0density(); - X1den = material->GetIonisation()->GetX1density(); - taul = material->GetIonisation()->GetTaul() ; - ShellCorrectionVector = - material->GetIonisation()->GetShellCorrectionVector(); - - // get elements in the actual material, - // they are needed for the low energy part .... - - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector= - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements= - material->GetNumberOfElements() ; - - // get electron cut in kin. energy for the material - - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ; - - // some local variables ------------------- - G4double tau,tau0,Tmax,gamma,bg2,beta2,rcut,delta,x,sh ; - - for (G4int i = 0 ; i < TotBin ; i++) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - tau = LowEdgeEnergy/proton_mass_c2 ; - gamma = tau +1. ; - bg2 = tau*(tau+2.) ; - beta2 = bg2/(gamma*gamma) ; - Tmax = 2.*electron_mass_c2*bg2 - /(1.+2.*gamma*RateMass+RateMass*RateMass) ; - - if ( tau < taul ) - // low energy part , parametrized energy loss formulae - { - ionloss = 0. ; - deltaloss = 0. ; - - // loop for the elements in the material - for (G4int iel=0; ielGetIonisation()->GetTau0()) - ionloss += theAtomicNumDensityVector[iel] - *( element->GetIonisation()->GetAlow()*sqrt(tau) - +element->GetIonisation()->GetBlow()*tau) ; - else - ionloss += theAtomicNumDensityVector[iel] - * element->GetIonisation()->GetClow()/sqrt(tau) ; - } - if ( DeltaCutInKineticEnergyNow < Tmax) - { - deltaloss = log(Tmax/DeltaCutInKineticEnergyNow)- - beta2*(1.-DeltaCutInKineticEnergyNow/Tmax) ; - if(aParticleType.GetPDGSpin() == 0.5) - deltaloss += 0.25*(Tmax-DeltaCutInKineticEnergyNow)* - (Tmax-DeltaCutInKineticEnergyNow)/ - (LowEdgeEnergy*LowEdgeEnergy+proton_mass_c2*proton_mass_c2) ; - deltaloss *= Factor*ElectronDensity/beta2 ; - } - ionloss -= deltaloss ; - } - else - // high energy part , Bethe-Bloch formula - { - if ( DeltaCutInKineticEnergyNow < Tmax) - rcut = DeltaCutInKineticEnergyNow/Tmax ; - else - rcut = 1.; - - ionloss = log(2.*electron_mass_c2*bg2*Tmax/Eexc2) - +log(rcut)-(1.+rcut)*beta2 ; - - - // density correction - x = log(bg2)/twoln10 ; - if ( x < X0den ) - delta = 0. ; - else - { - delta = twoln10*x - Cden ; - if ( x < X1den ) - delta += Aden*pow((X1den-x),Mden) ; - } - - // shell correction - if ( bg2 > bg2lim ) { - sh = 0. ; - x = 1. ; - for (G4int k=0; k<=2; k++) { - x *= bg2 ; - sh += ShellCorrectionVector[k]/x; - } - } - else { - sh = 0. ; - x = 1. ; - for (G4int k=0; k<=2; k++) { - x *= bg2lim ; - sh += ShellCorrectionVector[k]/x; - } - sh *= log(tau/taul)/log(taulim/taul) ; - } - - // now you can compute the total ionization loss - ionloss -= delta + sh ; - ionloss *= Factor*ElectronDensity/beta2 ; - } - if ( ionloss <= 0.) - ionloss = 0. ; - aVector->PutValue(i,ionloss) ; - - } - theLossTable->insert(aVector); - } - -} - -void G4IhIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) -{ - // Build mean free path tables for the delta ray production process - // tables are built for MATERIALS - - G4double LowEdgeEnergy , Value ,sigma ; - G4bool isOutRange ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - //create table - - G4int numOfMaterials = theMaterialTable->length(); - - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); - - // get electron and particle cuts in kinetic energy - - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - - ParticleCutInKineticEnergy = aParticleType.GetEnergyCuts() ; - - // loop for materials - - for (G4int J=0 ; J < numOfMaterials; J++) - { - //create physics vector then fill it .... - - G4PhysicsLogVector* aVector = new G4PhysicsLogVector( - LowestKineticEnergy, HighestKineticEnergy, TotBin); - - // compute the (macroscopic) cross section first - - const G4Material* material= (*theMaterialTable)[J]; - - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector(); - const G4int NumberOfElements= - material->GetNumberOfElements() ; - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ; - - for ( G4int i = 0 ; i < TotBin ; i++ ) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - sigma = 0. ; - - for (G4int iel=0; ielGetZ() ) ; - } - - Value = sigma<=0 ? DBL_MAX : 1./sigma ; - aVector->PutValue(i, Value) ; - } - theMeanFreePathTable->insert(aVector); - } -} - - -G4double G4IhIonisation::ComputeMicroscopicCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber) -{ - //****************************************************************** - // cross section formula is OK for spin=0 and 1/2 only ! - // ***************************************************************** - - // calculates the microscopic cross section in GEANT4 internal units - // ( it is called for elements , AtomicNumber = Z ) - - G4double TotalEnergy, - betasquare, - MaxKineticEnergyTransfer,TotalCrossSection,tempvar; - - // get particle data ................................... - - TotalEnergy=KineticEnergy + ParticleMass; - - // some kinematics...................... - - betasquare = KineticEnergy*(TotalEnergy+ParticleMass) - /(TotalEnergy*TotalEnergy); - tempvar = ParticleMass+electron_mass_c2; - MaxKineticEnergyTransfer = 2.*electron_mass_c2*KineticEnergy - *(TotalEnergy+ParticleMass) - /(tempvar*tempvar+2.*electron_mass_c2*KineticEnergy); - - // now you can calculate the total cross section ------------------ - - if( MaxKineticEnergyTransfer > DeltaCutInKineticEnergyNow ) - { - tempvar=DeltaCutInKineticEnergyNow/MaxKineticEnergyTransfer; - TotalCrossSection = (1.-tempvar*(1.-betasquare*log(tempvar))) - /DeltaCutInKineticEnergyNow; - // +term for spin=1/2 particle - if(aParticleType.GetPDGSpin() == 1) - { - TotalCrossSection += 0.5 - *(MaxKineticEnergyTransfer-DeltaCutInKineticEnergyNow) - /(TotalEnergy*TotalEnergy); - } - TotalCrossSection = twopi_mc2_rcl2 * AtomicNumber - *TotalCrossSection/betasquare; - } - else - TotalCrossSection= 0. ; - - return TotalCrossSection ; -} - -G4VParticleChange* G4IhIonisation::PostStepDoIt(const G4Track& trackData, - const G4Step& stepData) -{ - const G4DynamicParticle* aParticle ; - G4Material* aMaterial; - G4double KineticEnergy,TotalEnergy,TotalMomentum, - betasquare,MaxKineticEnergyTransfer, - DeltaKineticEnergy,DeltaTotalMomentum,costheta,sintheta,phi, - dirx,diry,dirz,finalKineticEnergy,finalPx,finalPy,finalPz, - x,xc,te2,grej,Psquare,Esquare,summass,rate,grejc,finalMomentum ; - - aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; - - aParticle = trackData.GetDynamicParticle() ; - - G4double Charge=aParticle->GetDefinition()->GetPDGCharge(); - KineticEnergy=aParticle->GetKineticEnergy(); - TotalEnergy=KineticEnergy + ParticleMass ; - Psquare=KineticEnergy*(TotalEnergy+ParticleMass) ; - Esquare=TotalEnergy*TotalEnergy ; - summass = ParticleMass + electron_mass_c2 ; - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection() ; - - // get kinetic energy cut for particle and for the electron.... - ParticleCutInKineticEnergyNow = - ParticleCutInKineticEnergy[aMaterial->GetIndex()]; - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[aMaterial->GetIndex()]; - - // some kinematics...................... - - betasquare=Psquare/Esquare ; - MaxKineticEnergyTransfer = 2.*electron_mass_c2*Psquare - /(summass*summass+2.*electron_mass_c2*KineticEnergy); - - // sampling kinetic energy of the delta ray - - if( MaxKineticEnergyTransfer <= DeltaCutInKineticEnergyNow ) - { - // pathological case (it should not happen , - // there is no change at all)..... - - // return &aParticleChange; - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - else - { - // normal case ...................................... - xc=DeltaCutInKineticEnergyNow/MaxKineticEnergyTransfer ; - rate=MaxKineticEnergyTransfer/TotalEnergy ; - - if(aParticle->GetDefinition()->GetPDGSpin() == 1) - te2=0.5*rate*rate ; - else - te2=0. ; - - // sampling follows ... - grejc=1.-betasquare*xc+te2*xc*xc ; - do { - x=xc/(1.-(1.-xc)*G4UniformRand()); - grej=(1.-x*(betasquare-x*te2))/grejc ; - } while( G4UniformRand()>grej ); - } - - DeltaKineticEnergy = x * MaxKineticEnergyTransfer ; - if(DeltaKineticEnergy <= 0.) - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - - DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + - 2. * electron_mass_c2 )) ; - TotalMomentum = sqrt(Psquare) ; - costheta = DeltaKineticEnergy * (TotalEnergy + electron_mass_c2) - /(DeltaTotalMomentum * TotalMomentum) ; - - // protection against costheta > 1 or < -1 --------------- - if ( costheta < -1. ) - costheta = -1. ; - if ( costheta > +1. ) - costheta = +1. ; - - // direction of the delta electron ........ - phi = twopi * G4UniformRand() ; - sintheta = sqrt((1.+costheta)*(1.-costheta)); - dirx = sintheta * cos(phi) ; - diry = sintheta * sin(phi) ; - dirz = costheta ; - - G4ThreeVector DeltaDirection(dirx,diry,dirz) ; - DeltaDirection.rotateUz(ParticleDirection) ; - - // create G4DynamicParticle object for delta ray - G4DynamicParticle *theDeltaRay = new G4DynamicParticle; - theDeltaRay->SetKineticEnergy( DeltaKineticEnergy ); - theDeltaRay->SetMomentumDirection( - DeltaDirection.x(),DeltaDirection.y(),DeltaDirection.z()); - theDeltaRay->SetDefinition(G4Electron::Electron()); - - // fill aParticleChange - finalKineticEnergy = KineticEnergy - DeltaKineticEnergy ; - if (finalKineticEnergy > 0.) - { - finalPx = TotalMomentum*ParticleDirection.x() - - DeltaTotalMomentum*DeltaDirection.x(); - finalPy = TotalMomentum*ParticleDirection.y() - - DeltaTotalMomentum*DeltaDirection.y(); - finalPz = TotalMomentum*ParticleDirection.z() - - DeltaTotalMomentum*DeltaDirection.z(); - finalMomentum = - sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz) ; - finalPx /= finalMomentum ; - finalPy /= finalMomentum ; - finalPz /= finalMomentum ; - - aParticleChange.SetMomentumChange( finalPx,finalPy,finalPz ); - } - else - { - finalKineticEnergy = 0. ; - if (aParticle->GetDefinition()->GetParticleName() == "proton") - aParticleChange.SetStatusChange(fStopAndKill); - else aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetEnergyChange( finalKineticEnergy ); - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( theDeltaRay ); - aParticleChange.SetLocalEnergyDeposit (0.); - - return G4IVContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); -} -void G4IhIonisation::PrintInfoDefinition() -{ - G4String comments = " Knock-on electron cross sections . "; - comments += "\n Good description above the mean excitation energy.\n"; - comments += " delta ray energy sampled from differential Xsection."; - - G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy, - "Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; -} - - diff --git a/source/processes/electromagnetic/integral/src/G4VIMuEnergyLoss.cc b/source/processes/electromagnetic/integral/src/G4VIMuEnergyLoss.cc deleted file mode 100644 index 7f0b406c0e..0000000000 --- a/source/processes/electromagnetic/integral/src/G4VIMuEnergyLoss.cc +++ /dev/null @@ -1,1584 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VIMuEnergyLoss.cc,v 1.1.2.2 2001/06/28 20:19:21 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4VIMuEnergyLoss physics process ----------- -// by Laszlo Urban, September 1997 -// ************************************************************** -// It is the implementation of the NEW UNIFIED ENERGY LOSS PROCESS. -// It calculates the energy loss of muons. -// ************************************************************** -// -// corrections by L.Urban on 27/05/98 (other corrs come soon!) -// -------------------------------------------------------------- - - -#include "G4VIMuEnergyLoss.hh" -#include "G4EnergyLossTables.hh" -#include "G4Poisson.hh" - -// Initialisation of static members ********************************************** -// ( this stuff should be defined later using RW ..........) -// contributing processes : ion.loss,bremsstrahlung,pair production -// ->NUMBEROFPROCESSES is initialized to 3. -// YOU DO NOT HAVE TO CHANGE this variable for a 'normal' run. -// You have to change NUMBEROFPROCESSES -// if you invent a new process contributing to the cont. energy loss, -// NUMBEROFPROCESSES should be 4 in this case, -// or for debugging purposes. -// The NUMBEROFPROCESSES data member can be changed using the (public static) -// functions Get/Set/Plus/MinusNUMBEROFPROCESSES (see G4VIMuEnergyLoss.hh) - -G4int G4VIMuEnergyLoss::NUMBEROFPROCESSES = 3 ; -//G4int G4VIMuEnergyLoss::NUMBEROFPROCESSES = 2 ; -G4PhysicsTable** G4VIMuEnergyLoss::RecorderOfmuplusProcess = - new G4PhysicsTable*[10] ; -G4int G4VIMuEnergyLoss::CounterOfmuplusProcess = 0 ; - -G4PhysicsTable* G4VIMuEnergyLoss::theDEDXmuplusTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::theRangemuplusTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::theInverseRangemuplusTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::theLabTimemuplusTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::theProperTimemuplusTable = NULL ; - -G4double G4VIMuEnergyLoss::CutInmupluslossTable = 0. ; -G4double G4VIMuEnergyLoss::CutInmuminuslossTable = 0. ; - -G4PhysicsTable* G4VIMuEnergyLoss::themuplusRangeCoeffATable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::themuplusRangeCoeffBTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::themuplusRangeCoeffCTable = NULL ; - -G4PhysicsTable** G4VIMuEnergyLoss::RecorderOfmuminusProcess = - new G4PhysicsTable*[10] ; -G4int G4VIMuEnergyLoss::CounterOfmuminusProcess = 0 ; - -G4PhysicsTable* G4VIMuEnergyLoss::theDEDXmuminusTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::theRangemuminusTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::theInverseRangemuminusTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::theLabTimemuminusTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::theProperTimemuminusTable = NULL ; - -G4PhysicsTable* G4VIMuEnergyLoss::themuminusRangeCoeffATable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::themuminusRangeCoeffBTable = NULL ; -G4PhysicsTable* G4VIMuEnergyLoss::themuminusRangeCoeffCTable = NULL ; - -// constructor and destructor - -G4VIMuEnergyLoss::G4VIMuEnergyLoss(const G4String& processName) - : G4IVContinuousDiscreteProcess (processName), - dToverTini(0.20), // max.relative range loss in one Step = 20% - LowestKineticEnergy(1.00*keV), - HighestKineticEnergy(1000000.*TeV), - BIGSTEP ( 1.e-10*DBL_MAX ), - MaxExcitationNumber (1.e6), - probLimFluct (0.01), - nmaxDirectFluct (100), - nmaxCont1(4), - nmaxCont2(16), - theElectron ( G4Electron::Electron() ), - thePositron ( G4Positron::Positron() ), - theMuonPlus ( G4MuonPlus::MuonPlus() ), - theMuonMinus ( G4MuonMinus::MuonMinus() ) -{ - theLossTable = NULL ; - theRangeCoeffATable = NULL ; - theRangeCoeffBTable = NULL ; - theRangeCoeffCTable = NULL ; - lastMaterial = NULL ; - lastCutInRange = 0. ; -} - -G4VIMuEnergyLoss::~G4VIMuEnergyLoss() -{ - if(theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - -} - - -// methods............................................. - - void G4VIMuEnergyLoss::BuildDEDXTable( - const G4ParticleDefinition& aParticleType) -{ - ParticleMass = aParticleType.GetPDGMass() ; -//------------------------------------------------------------- -// calculate data members TotBin,LOGRTable,RTable first - G4double lrate ; - G4int nbin ; -// binning corresponds to 2.*dToverTini........................ - G4double binning = 2.*dToverTini ; - - lrate = log(HighestKineticEnergy/LowestKineticEnergy) ; - // nbin = G4int((lrate/log(1.+dToverTini) + lrate/log(1.+2.*dToverTini))/2.); - nbin = G4int((lrate/log(1.+binning) + lrate/log(1.+2.*binning))/2.); - nbin = (nbin+25)/50 ; - TotBin = 50*nbin ; - if(TotBin<50) - TotBin = 50 ; - if(TotBin>500) - TotBin = 500 ; - LOGRTable=lrate/TotBin; - RTable =exp(LOGRTable); -//-------------------------------------------------------------------- - G4bool MakeTable ; - G4double Charge = aParticleType.GetPDGCharge() ; - CutInRange = aParticleType.GetLengthCuts(); -// Create tables only if there is a new cut value !******************************** -// and at the last contributing process only!***************************** - if( Charge > 0.) - { - if(CounterOfmuplusProcess==NUMBEROFPROCESSES) - { - if(CutInRange != CutInmupluslossTable) - MakeTable = true ; - CutInmupluslossTable = CutInRange ; - } - else - { - MakeTable = false ; - } - } - else - { - if(CounterOfmuminusProcess==NUMBEROFPROCESSES) - { - if(CutInRange != CutInmuminuslossTable) - MakeTable = true ; - CutInmuminuslossTable = CutInRange ; - } - else - { - MakeTable = false ; - } - } - - if( MakeTable ) - { - -// Build energy loss table as a sum of the energy loss due to the -// different processes. -//****************************************************************** -// different processes. - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for the total energy loss - - G4int numOfMaterials = theMaterialTable->length(); - - // create/fill muplus or muminus tables depending on the charge of the particle - - if( Charge >0.) - { - RecorderOfProcess=RecorderOfmuplusProcess; - CounterOfProcess=CounterOfmuplusProcess; - - if(CounterOfProcess == NUMBEROFPROCESSES) - { - // create tables - if(theDEDXmuplusTable) - { theDEDXmuplusTable->clearAndDestroy(); - delete theDEDXmuplusTable; } - theDEDXmuplusTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXmuplusTable; - } - } - else - { - RecorderOfProcess=RecorderOfmuminusProcess; - CounterOfProcess=CounterOfmuminusProcess; - - if(CounterOfProcess == NUMBEROFPROCESSES) - { - // create tables - if(theDEDXmuminusTable) - { theDEDXmuminusTable->clearAndDestroy(); - delete theDEDXmuminusTable; } - theDEDXmuminusTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXmuminusTable; - } - } - - if(CounterOfProcess == NUMBEROFPROCESSES) - { - // fill the tables - -// loop for materials - G4double LowEdgeEnergy , Value ; - G4bool isOutRange ; - G4int J; - - G4PhysicsTable* pointer ; - - - for (J=0; JGetLowEdgeEnergy(i) ; -// here comes the sum of the different tables created by the -// processes (ionisation,bremsstrahlung,pair production,etc...) - - Value = 0. ; - - for (G4int process=0; process < NUMBEROFPROCESSES; process++) - { - pointer= RecorderOfProcess[process]; - Value += (*pointer)[J]-> - GetValue(LowEdgeEnergy,isOutRange) ; - - } - - aVector->PutValue(i,Value) ; - - } - - theDEDXTable->insert(aVector) ; - } - - // reset counter to zero .................. - if( Charge >0.) - CounterOfmuplusProcess=0 ; - else - CounterOfmuminusProcess=0 ; - - // Build range table - BuildRangeTable( aParticleType); - - // Build lab/proper time tables - BuildTimeTables( aParticleType) ; - - - // Build coeff tables for the energy loss calculation - - BuildRangeCoeffATable( aParticleType); - BuildRangeCoeffBTable( aParticleType); - BuildRangeCoeffCTable( aParticleType); - - // invert the range table - BuildInverseRangeTable(aParticleType); - - } - - } - - // make the energy loss and the range table available - const G4double lowestKineticEnergy(1.00*keV); - const G4double highestKineticEnergy(1000000.*TeV); - G4EnergyLossTables::Register(&aParticleType, - (Charge > 0)? theDEDXmuplusTable: theDEDXmuminusTable, - (Charge > 0)? theRangemuplusTable: theRangemuminusTable, - (Charge > 0)? theInverseRangemuplusTable: theInverseRangemuminusTable, - (Charge > 0)? theLabTimemuplusTable: theLabTimemuminusTable, - (Charge > 0)? theProperTimemuplusTable: theProperTimemuminusTable, - lowestKineticEnergy, highestKineticEnergy, 1.,TotBin); - - -} - - void G4VIMuEnergyLoss::BuildRangeTable( - const G4ParticleDefinition& aParticleType) -// Build range table from the energy loss table -{ - G4double Charge = aParticleType.GetPDGCharge() ; - -// create table - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - - G4int numOfMaterials = theMaterialTable->length(); - - if( Charge >0.) - { - if(theRangemuplusTable) - { theRangemuplusTable->clearAndDestroy(); - delete theRangemuplusTable; } - theRangemuplusTable = new G4PhysicsTable(numOfMaterials); - theRangeTable = theRangemuplusTable ; - } - else - { - if(theRangemuminusTable) - { theRangemuminusTable->clearAndDestroy(); - delete theRangemuminusTable; } - theRangemuminusTable = new G4PhysicsTable(numOfMaterials); - theRangeTable = theRangemuminusTable ; - } - -// loop for materials - - for (G4int J=0; Jinsert(aVector); - - } - -} - - void G4VIMuEnergyLoss::BuildTimeTables( - const G4ParticleDefinition& aParticleType) -// Build time tables from the energy loss table -{ - - -// create table - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - - G4int numOfMaterials = theMaterialTable->length(); - - if(&aParticleType == theMuonPlus) - { - if(theLabTimemuplusTable) - { theLabTimemuplusTable->clearAndDestroy(); - delete theLabTimemuplusTable; } - theLabTimemuplusTable = new G4PhysicsTable(numOfMaterials); - theLabTimeTable = theLabTimemuplusTable ; - - if(theProperTimemuplusTable) - { theProperTimemuplusTable->clearAndDestroy(); - delete theProperTimemuplusTable; } - theProperTimemuplusTable = new G4PhysicsTable(numOfMaterials); - theProperTimeTable = theProperTimemuplusTable ; - } - - if(&aParticleType == theMuonMinus) - { - if(theLabTimemuminusTable) - { theLabTimemuminusTable->clearAndDestroy(); - delete theLabTimemuminusTable; } - theLabTimemuminusTable = new G4PhysicsTable(numOfMaterials); - theLabTimeTable = theLabTimemuminusTable ; - - if(theProperTimemuminusTable) - { theProperTimemuminusTable->clearAndDestroy(); - delete theProperTimemuminusTable; } - theProperTimemuminusTable = new G4PhysicsTable(numOfMaterials); - theProperTimeTable = theProperTimemuminusTable ; - } - -// loop for materials - - for (G4int J=0; Jinsert(aVector); - - - bVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin); - - // fill the vector - - BuildProperTimeVector(J, bVector); - - // insert vector to the table - - theProperTimeTable->insert(bVector); - - - } -} - - - -void G4VIMuEnergyLoss::BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector) -// create range vector for a material -{ - static G4int nbin; - const G4double BigRange = DBL_MAX ; - G4int maxbint=100; - G4bool isOut; - G4double tlim=2.*MeV,t1=0.1*MeV,t2=0.025*MeV ; - G4double loss1,loss2,ca,cb,cba ; - G4double taulim,rangelim,ltaulim,ltaumax, - LowEdgeEnergy,tau,Value,tau1,sqtau1 ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - // low energy part first... - loss1 = physicsVector->GetValue(t1,isOut); - loss2 = physicsVector->GetValue(t2,isOut); - tau1 = t1/ParticleMass ; - sqtau1 = sqrt(tau1) ; - ca = (4.*loss2-loss1)/sqtau1 ; - cb = (2.*loss1-4.*loss2)/tau1 ; - cba = cb/ca ; - taulim = tlim/ParticleMass ; - ltaulim = log(taulim) ; - ltaumax = log(HighestKineticEnergy/ParticleMass) ; - - - G4int i=-1; - G4double oldValue = 0. ; - G4double tauold ; - - do - { - i += 1 ; - LowEdgeEnergy = rangeVector->GetLowEdgeEnergy(i); - - tau = LowEdgeEnergy/ParticleMass; - if ( tau <= tau1 ) - { - Value = 2.*ParticleMass*log(1.+cba*sqrt(tau))/cb ; - } - else - { - Value = 2.*ParticleMass*log(1.+cba*sqtau1)/cb ; - if(tau<=taulim) - { - nbin = maxbint ; - taulow = tau1 ; - tauhigh = tau ; - Value += RangeIntLin(physicsVector,nbin); - } - else - { - taulow = tau1 ; - tauhigh = taulim ; - Value += RangeIntLin(physicsVector,maxbint) ; - ltaulow = ltaulim ; - ltauhigh = log(tau) ; - nbin = maxbint ; - Value += RangeIntLog(physicsVector,nbin); - } - } - - - rangeVector->PutValue(i,Value); - oldValue = Value ; - tauold = tau ; - - } while (tau<=taulim) ; - - i += 1 ; - - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/ParticleMass; - ltaulow = log(tauold); - ltauhigh = log(tau); - nbin = maxbint; - Value = oldValue+RangeIntLog(physicsVector,nbin); - - rangeVector->PutValue(j,Value); - oldValue = Value ; - tauold = tau ; - - } - -} - -void G4VIMuEnergyLoss::BuildLabTimeVector(G4int materialIndex, - G4PhysicsLogVector* timeVector) -// create lab time vector for a material -{ - - static G4int nbin; - G4int maxbint=100; - G4bool isOut; - G4double tlim=5.*keV,parlowen=0.4,ppar=0.5-parlowen ; - G4double losslim,clim,taulim,timelim,ltaulim,ltaumax, - LowEdgeEnergy,tau,Value ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - // low energy part first... - losslim = physicsVector->GetValue(tlim,isOut); - taulim=tlim/ParticleMass ; - clim=sqrt(ParticleMass*tlim/2.)/(c_light*losslim*ppar) ; - ltaulim = log(taulim); - ltaumax = log(HighestKineticEnergy/ParticleMass) ; - - G4int i=-1; - G4double oldValue = 0. ; - G4double tauold ; - - - - do - { - i += 1 ; - LowEdgeEnergy = timeVector->GetLowEdgeEnergy(i); - tau = LowEdgeEnergy/ParticleMass ; - if ( tau <= taulim ) - { - Value = clim*exp(ppar*log(tau/taulim)) ; - } - else - { - timelim=clim ; - ltaulow = log(taulim); - ltauhigh = log(tau); - nbin = maxbint; - Value = timelim+LabTimeIntLog(physicsVector,nbin); - } - - timeVector->PutValue(i,Value); - oldValue = Value ; - tauold = tau ; - - } while (tau<=taulim) ; - - i += 1 ; - - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/ParticleMass ; - ltaulow = log(tauold); - ltauhigh = log(tau); - nbin = maxbint ; - Value = oldValue+LabTimeIntLog(physicsVector,nbin); - - timeVector->PutValue(j,Value); - oldValue = Value ; - tauold = tau ; - } - -} - -void G4VIMuEnergyLoss::BuildProperTimeVector(G4int materialIndex, - G4PhysicsLogVector* timeVector) -// create proper time vector for a material -{ - - static G4int nbin; - G4int maxbint=100; - G4bool isOut; - G4double tlim=5.*keV,parlowen=0.4,ppar=0.5-parlowen ; - G4double losslim,clim,taulim,timelim,ltaulim,ltaumax, - LowEdgeEnergy,tau,Value ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - // low energy part first... - losslim = physicsVector->GetValue(tlim,isOut); - taulim=tlim/ParticleMass ; - clim=sqrt(ParticleMass*tlim/2.)/(c_light*losslim*ppar) ; - ltaulim = log(taulim); - ltaumax = log(HighestKineticEnergy/ParticleMass) ; - - G4int i=-1; - G4double oldValue = 0. ; - G4double tauold ; - - do - { - i += 1 ; - LowEdgeEnergy = timeVector->GetLowEdgeEnergy(i); - tau = LowEdgeEnergy/ParticleMass ; - if ( tau <= taulim ) - { - Value = clim*exp(ppar*log(tau/taulim)) ; - } - else - { - timelim=clim ; - ltaulow = log(taulim); - ltauhigh = log(tau); - nbin = maxbint; - Value = timelim+ProperTimeIntLog(physicsVector,nbin); - } - - timeVector->PutValue(i,Value); - oldValue = Value ; - tauold = tau ; - - } while (tau<=taulim) ; - i += 1 ; - - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/ParticleMass ; - ltaulow = log(tauold); - ltauhigh = log(tau); - nbin = maxbint ; - Value = oldValue+ProperTimeIntLog(physicsVector,nbin); - - timeVector->PutValue(j,Value); - oldValue = Value ; - tauold = tau ; - } - -} - - -G4double G4VIMuEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, - G4int nbin) -// num. integration, linear binning -{ - G4double dtau,Value,taui,ti,lossi,ci; - G4bool isOut; - - dtau = (tauhigh-taulow)/nbin; - Value = 0.; - - for (G4int i=0; i<=nbin; i++) - { - taui = taulow + dtau*i ; - ti = ParticleMass*taui; - lossi = physicsVector->GetValue(ti,isOut); - - if(i==0) - ci=0.5; - else - { - if(iGetValue(ti,isOut); - - if(i==0) - ci=0.5; - else - { - if(iGetValue(ti,isOut); - - if(i==0) - ci=0.5; - else - { - if(iGetValue(ti,isOut); - - if(i==0) - ci=0.5; - else - { - if(ilength(); - - if(Charge>0.) - { - if(themuplusRangeCoeffATable) - { themuplusRangeCoeffATable->clearAndDestroy(); - delete themuplusRangeCoeffATable; } - themuplusRangeCoeffATable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffATable = themuplusRangeCoeffATable ; - theRangeTable = theRangemuplusTable ; - } - else - { - if(themuminusRangeCoeffATable) - { themuminusRangeCoeffATable->clearAndDestroy(); - delete themuminusRangeCoeffATable; } - themuminusRangeCoeffATable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffATable = themuminusRangeCoeffATable ; - theRangeTable = theRangemuminusTable ; - } - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = 0. ; - else - { - Tim = Ti/RTable ; - Rim = rangeVector->GetValue(Tim,isOut); - } - - if ( i==(TotBin-1)) - Rip = Ri ; - else - { - Tip = Ti*RTable ; - Rip = rangeVector->GetValue(Tip,isOut); - } - - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theRangeCoeffATable->insert(aVector); - - } -} - - -void G4VIMuEnergyLoss::BuildRangeCoeffBTable( - const G4ParticleDefinition& aParticleType) -// Build tables of coefficients for the energy loss calculation -{ - G4double Charge = aParticleType.GetPDGCharge() ; - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "B" - - - G4int numOfMaterials = theMaterialTable->length(); - - if(Charge>0.) - { - if(themuplusRangeCoeffBTable) - { themuplusRangeCoeffBTable->clearAndDestroy(); - delete themuplusRangeCoeffBTable; } - themuplusRangeCoeffBTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffBTable = themuplusRangeCoeffBTable ; - theRangeTable = theRangemuplusTable ; - } - else - { - if(themuminusRangeCoeffBTable) - { themuminusRangeCoeffBTable->clearAndDestroy(); - delete themuminusRangeCoeffBTable; } - themuminusRangeCoeffBTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffBTable = themuminusRangeCoeffBTable ; - theRangeTable = theRangemuminusTable ; - } - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = 0. ; - else - { - Tim = Ti/RTable ; - Rim = rangeVector->GetValue(Tim,isOut); - } - - if ( i==(TotBin-1)) - Rip = Ri ; - else - { - Tip = Ti*RTable ; - Rip = rangeVector->GetValue(Tip,isOut); - } - - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theRangeCoeffBTable->insert(aVector); - - } -} -void G4VIMuEnergyLoss::BuildRangeCoeffCTable( - const G4ParticleDefinition& aParticleType) -// Build tables of coefficients for the energy loss calculation -{ - G4double Charge = aParticleType.GetPDGCharge() ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - -// create table for coefficients "C" - - G4int numOfMaterials = theMaterialTable->length(); - - if(Charge>0.) - { - if(themuplusRangeCoeffCTable) - { themuplusRangeCoeffCTable->clearAndDestroy(); - delete themuplusRangeCoeffCTable; } - themuplusRangeCoeffCTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffCTable = themuplusRangeCoeffCTable ; - theRangeTable = theRangemuplusTable ; - } - else - { - if(themuminusRangeCoeffCTable) - { themuminusRangeCoeffCTable->clearAndDestroy(); - delete themuminusRangeCoeffCTable; } - themuminusRangeCoeffCTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffCTable = themuminusRangeCoeffCTable ; - theRangeTable = theRangemuminusTable ; - } - - const G4double BigRange = DBL_MAX ; - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - - if ( i==0 ) - Rim = 0. ; - else - { - Tim = Ti/RTable ; - Rim = rangeVector->GetValue(Tim,isOut); - } - - if ( i==(TotBin-1)) - Rip = Ri ; - else - { - Tip = Ti*RTable ; - Rip = rangeVector->GetValue(Tip,isOut); - } - - Value = w1*Rip + w2*Ri + w3*Rim ; - - aVector->PutValue(i,Value); - - Ti = RTable*Ti ; - - } - - theRangeCoeffCTable->insert(aVector); - - } -} - - void G4VIMuEnergyLoss::BuildInverseRangeTable( - const G4ParticleDefinition& aParticleType) -// Build inverse table of the range table -{ - G4double SmallestRange,BiggestRange ; - G4bool isOut ; - -// create table - - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); - - if(&aParticleType == theMuonPlus) - { - if(theInverseRangemuplusTable) - { theInverseRangemuplusTable->clearAndDestroy(); - delete theInverseRangemuplusTable; } - theInverseRangemuplusTable = new G4PhysicsTable(numOfMaterials); - theInverseRangeTable = theInverseRangemuplusTable ; - theRangeTable = theRangemuplusTable ; - theDEDXTable = theDEDXmuplusTable ; - theRangeCoeffATable = themuplusRangeCoeffATable ; - theRangeCoeffBTable = themuplusRangeCoeffBTable ; - theRangeCoeffCTable = themuplusRangeCoeffCTable ; - } - - if(&aParticleType == theMuonMinus) - { - if(theInverseRangemuminusTable) - { theInverseRangemuminusTable->clearAndDestroy(); - delete theInverseRangemuminusTable; } - theInverseRangemuminusTable = new G4PhysicsTable(numOfMaterials); - theInverseRangeTable = theInverseRangemuminusTable ; - theRangeTable = theRangemuminusTable ; - theDEDXTable = theDEDXmuminusTable ; - theRangeCoeffATable = themuminusRangeCoeffATable ; - theRangeCoeffBTable = themuminusRangeCoeffBTable ; - theRangeCoeffCTable = themuminusRangeCoeffCTable ; - } -// loop for materials - - for (G4int J=0; J - GetValue(LowestKineticEnergy,isOut) ; - BiggestRange = (*theRangeTable)(J)-> - GetValue(HighestKineticEnergy,isOut) ; - // create vector - G4PhysicsLogVector* aVector; - - aVector = new G4PhysicsLogVector(SmallestRange, - BiggestRange,TotBin); - - // fill the vector ( ranges for the actual material) - - InvertRangeVector(J, aVector); - - // insert vector to the table - - theInverseRangeTable->insert(aVector); - - } -} - -void G4VIMuEnergyLoss::InvertRangeVector(G4int materialIndex, - G4PhysicsLogVector* aVector) -// invert range vector for a material -{ - G4double LowEdgeRange,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double rangebin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for range values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - - if( rangebin < LowEdgeRange ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - rangebin = (*theRangeTable)(materialIndex)->GetValue(Tbin,isOut) ; - } - while ((rangebin < LowEdgeRange) && (binnumber < TotBin )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy ; - else - { - A = (*(*theRangeCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theRangeCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theRangeCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdgeRange -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdgeRange); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - - aVector->PutValue(i,KineticEnergy) ; - - } -} - - - -G4VParticleChange* G4VIMuEnergyLoss::AlongStepDoIt( - const G4Track& trackData,const G4Step& stepData) - // compute the energy loss after a Step -{ - const G4DynamicParticle* aParticle; - G4Material* aMaterial; - G4bool isOut; - G4double E,finalT,Step,Tbin,rangebin ; - const G4double smallLoss=DBL_MIN; - const G4double BigRange = DBL_MAX ; - G4int index ; - G4double cc,discr ; - G4double Charge ; - - aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; - - // get the actual (true) Step length from stepData - Step = stepData.GetStepLength() ; - - - // there is no loss for Step=0. ! - if( Step == 0.) - return &aParticleChange ; - - // get particle and material pointers from trackData - aParticle = trackData.GetDynamicParticle() ; - Charge = aParticle->GetDefinition()->GetPDGCharge() ; - index = aMaterial->GetIndex() ; - E = aParticle->GetKineticEnergy() ; - - if(Charge>0.) - { - theRangeTable=theRangemuplusTable; - theRangeCoeffATable = themuplusRangeCoeffATable ; - theRangeCoeffBTable = themuplusRangeCoeffBTable ; - theRangeCoeffCTable = themuplusRangeCoeffCTable ; - } - else - { - theRangeTable=theRangemuminusTable; - theRangeCoeffATable = themuminusRangeCoeffATable ; - theRangeCoeffBTable = themuminusRangeCoeffBTable ; - theRangeCoeffCTable = themuminusRangeCoeffCTable ; - } - - // - ParticleCutInKineticEnergyNow = - (aParticle->GetDefinition()->GetEnergyCuts())[index] ; - - if(Step >= BigRange) - { - finalT = E ; - fMeanLoss = 0. ; - } - else - // here comes the 'real' energy loss calculation (material is NOT vacuum) - { - - if( E < LowestKineticEnergy) - { - finalT = 0.0; - fMeanLoss = E ; - } - else - { - if( E > HighestKineticEnergy) - { - finalT = E - smallLoss ; - fMeanLoss = smallLoss ; - } - else - { - - - // loss calculation with quadratic interpolation in the table - if (Step >= (fRangeNow-CutInRange)) - { - finalT = 0.; - fMeanLoss = E ; - } - else - { - //.......................................................................... - // check if the energy bin has changed - - Tbin = LowestKineticEnergy*exp(EnergyBinNumber*LOGRTable) ; - - rangebin = (*theRangeTable)(index)->GetValue(Tbin,isOut) ; - - if((fRangeNow-Step)GetValue(Tbin,isOut) ; - } - while (((fRangeNow-Step)0)) ; - - - RangeCoeffA = (*(*theRangeCoeffATable)(index))(EnergyBinNumber) ; - RangeCoeffB = (*(*theRangeCoeffBTable)(index))(EnergyBinNumber) ; - RangeCoeffC = (*(*theRangeCoeffCTable)(index))(EnergyBinNumber) ; - } - - //.......................................................................... - // now the energy loss can be calculated - // first the mean loss - - cc=Step+RangeCoeffC-fRangeNow ; - discr = RangeCoeffB*RangeCoeffB-4.*RangeCoeffA*cc ; - discr = discr<=0. ? 0. : sqrt(discr) ; - fMeanLoss = E-0.5*(discr-RangeCoeffB)/RangeCoeffA ; - - // now the loss with fluctuation - finalT = E-GetLossWithFluct(aParticle,aMaterial,1.,fMeanLoss,Step) ; - if (finalT < 0.) finalT = 0. ; - } - } - } - } - - - // kill the particle if the kinetic energy <= 0 - - if (finalT <= 0. ) - { - finalT = 0.; - aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetNumberOfSecondaries(0); - aParticleChange.SetEnergyChange( finalT ) ; - aParticleChange.SetLocalEnergyDeposit(E-finalT) ; - - return &aParticleChange ; - -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4VIMuEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double ChargeSquare, - G4double MeanLoss, - G4double step ) - -{ -// calculate actual loss from the mean loss -// The model used to get the fluctuation is essentially the same as in Glandz in Geant3. - - static const G4double minLoss = 1.*eV ; - static const G4double probLim = 0.01 ; - static const G4double sumaLim = -log(probLim) ; - static const G4double alim=10.; - static const G4double kappa = 10. ; - static const G4double factor = twopi_mc2_rcl2 ; - - - // check if the material has changed ( cache mechanism) - - if (aMaterial != lastMaterial) - { - lastMaterial = aMaterial; - imat = aMaterial->GetIndex(); - f1Fluct = aMaterial->GetIonisation()->GetF1fluct(); - f2Fluct = aMaterial->GetIonisation()->GetF2fluct(); - e1Fluct = aMaterial->GetIonisation()->GetEnergy1fluct(); - e2Fluct = aMaterial->GetIonisation()->GetEnergy2fluct(); - e1LogFluct = aMaterial->GetIonisation()->GetLogEnergy1fluct(); - e2LogFluct = aMaterial->GetIonisation()->GetLogEnergy2fluct(); - rateFluct = aMaterial->GetIonisation()->GetRateionexcfluct(); - ipotFluct = aMaterial->GetIonisation()->GetMeanExcitationEnergy(); - ipotLogFluct = aMaterial->GetIonisation()->GetLogMeanExcEnergy(); - } - - G4double threshold,w1,w2,C, - beta2,suma,e0,loss,lossc ,w,electronDensity; - G4double a1,a2,a3; - G4int p1,p2,p3; - G4int nb; - G4double Corrfac, na,alfa,rfac,namean,sa,alfa1,ea,sea; - G4double dp1,dp3; - G4double siga ; - - // shortcut for very very small loss - if(MeanLoss < minLoss) return MeanLoss ; - - // get particle data - G4double Tkin = aParticle->GetKineticEnergy(); - ParticleMass = aParticle->GetMass() ; - - threshold =((*G4Electron::Electron()).GetCutsInEnergy())[imat]; - G4double rmass = electron_mass_c2/ParticleMass; - G4double tau = Tkin/ParticleMass, tau1 = tau+1., tau2 = tau*(tau+2.); - G4double Tm = 2.*electron_mass_c2*tau2/(1.+2.*tau1*rmass+rmass*rmass); - - if (Tm <= ipotFluct) Tm = ipotFluct ; - - if(Tm > threshold) Tm = threshold; - beta2 = tau2/(tau1*tau1); - - // Gaussian fluctuation ? - if(MeanLoss >= kappa*Tm) - { - electronDensity = aMaterial->GetElectronDensity() ; - siga = sqrt(MeanLoss*Tm*(0.5-0.25*beta2)*step* - factor*electronDensity*ChargeSquare/beta2) ; - loss = G4RandGauss::shoot(MeanLoss,siga) ; - if(loss < 0.) loss = 0. ; - return loss ; - } - - w1 = Tm/ipotFluct; - w2 = log(2.*electron_mass_c2*tau2); - - C = MeanLoss*(1.-rateFluct)/(w2-ipotLogFluct-beta2); - - a1 = C*f1Fluct*(w2-e1LogFluct-beta2)/e1Fluct; - a2 = C*f2Fluct*(w2-e2LogFluct-beta2)/e2Fluct; - if(Tm > ipotFluct) - a3 = rateFluct*MeanLoss*(Tm-ipotFluct)/(ipotFluct*Tm*log(w1)); - else - { - a1 /= 1.-rateFluct ; - a2 /= 1.-rateFluct ; - a3 = 0. ; - } - - suma = a1+a2+a3; - - loss = 0. ; - - if(suma < sumaLim) // very small Step - { - e0 = aMaterial->GetIonisation()->GetEnergy0fluct(); - - if(Tm == ipotFluct) - { - a3 = MeanLoss/e0; - - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - p3 = G4Poisson(a3); - - loss = p3*e0 ; - - if(p3 > 0) - loss += (1.-2.*G4UniformRand())*e0 ; - - } - else - { - Tm = Tm-ipotFluct+e0 ; - a3 = MeanLoss*(Tm-e0)/(Tm*e0*log(Tm/e0)); - - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - else - p3 = G4Poisson(a3); - - if(p3 > 0) - { - w = (Tm-e0)/Tm ; - if(p3 > nmaxCont2) - { - dp3 = G4float(p3) ; - Corrfac = dp3/G4float(nmaxCont2) ; - p3 = nmaxCont2 ; - } - else - Corrfac = 1. ; - - for(G4int i=0; ialim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(G4RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - - // excitation type 2 - if(a2>alim) - { - siga=sqrt(a2) ; - p2 = G4std::max(0,int(G4RandGauss::shoot(a2,siga)+0.5)); - } - else - p2 = G4Poisson(a2); - - loss = p1*e1Fluct+p2*e2Fluct; - - // smearing to avoid unphysical peaks - if(p2 > 0) - loss += (1.-2.*G4UniformRand())*e2Fluct; - else if (loss>0.) - loss += (1.-2.*G4UniformRand())*e1Fluct; - - // ionisation ....................................... - if(a3 > 0.) - { - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - else - - p3 = G4Poisson(a3); - - lossc = 0.; - if(p3 > 0) - { - na = 0.; - alfa = 1.; - if (p3 > nmaxCont2) - { - dp3 = G4float(p3); - rfac = dp3/(G4float(nmaxCont2)+dp3); - namean = G4float(p3)*rfac; - sa = G4float(nmaxCont1)*rfac; - na = G4RandGauss::shoot(namean,sa); - if (na > 0.) - { - alfa = w1*G4float(nmaxCont2+p3)/(w1*G4float(nmaxCont2)+G4float(p3)); - alfa1 = alfa*log(alfa)/(alfa-1.); - ea = na*ipotFluct*alfa1; - sea = ipotFluct*sqrt(na*(alfa-alfa1*alfa1)); - lossc += G4RandGauss::shoot(ea,sea); - } - } - - nb = G4int(G4float(p3)-na); - if (nb > 0) - { - w2 = alfa*ipotFluct; - w = (Tm-w2)/Tm; - for (G4int k=0; kNbOfProcesses is initialized -// to 2 . YOU DO NOT HAVE TO CHANGE this variable for a 'normal' run. -// -// You have to change NbOfProcesses if you invent a new process contributing -// to the continuous energy loss. -// The NbOfProcesses data member can be changed using the (public static) -// functions Get/Set/Plus/MinusNbOfProcesses (see G4VIeEnergyLoss.hh) - -G4int G4VIeEnergyLoss::NbOfProcesses = 2; - -G4int G4VIeEnergyLoss::CounterOfElectronProcess = 0; -G4int G4VIeEnergyLoss::CounterOfPositronProcess = 0; -G4PhysicsTable** G4VIeEnergyLoss::RecorderOfElectronProcess = - new G4PhysicsTable*[10]; -G4PhysicsTable** G4VIeEnergyLoss::RecorderOfPositronProcess = - new G4PhysicsTable*[10]; - -G4bool G4VIeEnergyLoss::rndmStepFlag = false; -G4bool G4VIeEnergyLoss::EnlossFlucFlag = true; -G4double G4VIeEnergyLoss::dRoverRange = 20*perCent; -G4double G4VIeEnergyLoss::finalRange = 200*micrometer; - -G4PhysicsTable* G4VIeEnergyLoss::theDEDXElectronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theDEDXPositronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theRangeElectronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theRangePositronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theInverseRangeElectronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theInverseRangePositronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theLabTimeElectronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theLabTimePositronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theProperTimeElectronTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theProperTimePositronTable = NULL; - -G4PhysicsTable* G4VIeEnergyLoss::theeRangeCoeffATable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theeRangeCoeffBTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::theeRangeCoeffCTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::thepRangeCoeffATable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::thepRangeCoeffBTable = NULL; -G4PhysicsTable* G4VIeEnergyLoss::thepRangeCoeffCTable = NULL; - -G4EnergyLossMessenger* G4VIeEnergyLoss::eLossMessenger = NULL; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -// constructor and destructor - -G4VIeEnergyLoss::G4VIeEnergyLoss(const G4String& processName) - : G4IVContinuousDiscreteProcess (processName), - theLossTable(NULL), - theRangeCoeffATable(NULL), - theRangeCoeffBTable(NULL), - theRangeCoeffCTable(NULL), - lastMaterial(NULL), - LowestKineticEnergy(1.00*keV), - HighestKineticEnergy(100.*TeV), - MaxExcitationNumber (1.e6), - probLimFluct (0.01), - nmaxDirectFluct (100), - nmaxCont1(4), - nmaxCont2(16) -{ - //create (only once) EnergyLoss messenger - if(!eLossMessenger) eLossMessenger = new G4EnergyLossMessenger(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4VIeEnergyLoss::~G4VIeEnergyLoss() -{ - if (theLossTable) - { - theLossTable->clearAndDestroy(); - delete theLossTable; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildDEDXTable( - const G4ParticleDefinition& aParticleType) -{ - ParticleMass = aParticleType.GetPDGMass(); - - // calculate data members TotBin,LOGRTable,RTable first - - G4double binning = 2.*dRoverRange; //binning is 2.*dRoverRange - G4double lrate = log(HighestKineticEnergy/LowestKineticEnergy); - G4double nbin = G4int((lrate/log(1.+binning) + lrate/log(1.+2.*binning))/2.); - nbin = (nbin+50)/100; - TotBin =int(100*nbin) ; - if (TotBin<100) TotBin = 100; - if (TotBin>500) TotBin = 500; - LOGRTable=lrate/TotBin; - RTable =exp(LOGRTable); - - // Build energy loss table as a sum of the energy loss due to the - // different processes. - // - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - // create table for the total energy loss - - if (&aParticleType==G4Electron::Electron()) - { - RecorderOfProcess=RecorderOfElectronProcess; - CounterOfProcess=CounterOfElectronProcess; - if (CounterOfProcess == NbOfProcesses) - { - if (theDEDXElectronTable) - { - theDEDXElectronTable->clearAndDestroy(); - delete theDEDXElectronTable; - } - theDEDXElectronTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXElectronTable; - } - } - if (&aParticleType==G4Positron::Positron()) - { - RecorderOfProcess=RecorderOfPositronProcess; - CounterOfProcess=CounterOfPositronProcess; - if (CounterOfProcess == NbOfProcesses) - { - if (theDEDXPositronTable) - { - theDEDXPositronTable->clearAndDestroy(); - delete theDEDXPositronTable; - } - theDEDXPositronTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXPositronTable; - } - } - - if (CounterOfProcess == NbOfProcesses) - { - // fill the tables - // loop for materials - G4double LowEdgeEnergy , Value; - G4bool isOutRange; - G4PhysicsTable* pointer; - - for (G4int J=0; JGetLowEdgeEnergy(i) ; - //here comes the sum of the different tables created by the - //processes (ionisation,bremsstrahlung,etc...) - Value = 0.; - for (G4int process=0; process < NbOfProcesses; process++) - { - pointer= RecorderOfProcess[process]; - Value += (*pointer)[J]->GetValue(LowEdgeEnergy,isOutRange); - } - - aVector->PutValue(i,Value) ; - } - - theDEDXTable->insert(aVector) ; - - } - - - //reset counter to zero - if (&aParticleType==G4Electron::Electron()) CounterOfElectronProcess=0; - if (&aParticleType==G4Positron::Positron()) CounterOfPositronProcess=0; - - // Build range table - BuildRangeTable(aParticleType); - - // Build lab/proper time tables - BuildTimeTables(aParticleType); - - // Build coeff tables for the energy loss calculation - - BuildRangeCoeffATable(aParticleType); - BuildRangeCoeffBTable(aParticleType); - BuildRangeCoeffCTable(aParticleType); - - // invert the range table - BuildInverseRangeTable(aParticleType); - - // make the energy loss and the range table available - const G4double lowestKineticEnergy (1.00*keV); - const G4double highestKineticEnergy(100.*TeV); - G4EnergyLossTables::Register(&aParticleType, - (&aParticleType==G4Electron::Electron())? - theDEDXElectronTable: theDEDXPositronTable, - (&aParticleType==G4Electron::Electron())? - theRangeElectronTable: theRangePositronTable, - (&aParticleType==G4Electron::Electron())? - theInverseRangeElectronTable: theInverseRangePositronTable, - (&aParticleType==G4Electron::Electron())? - theLabTimeElectronTable: theLabTimePositronTable, - (&aParticleType==G4Electron::Electron())? - theProperTimeElectronTable: theProperTimePositronTable, - lowestKineticEnergy, highestKineticEnergy, 1.,TotBin); - - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildRangeTable( - const G4ParticleDefinition& aParticleType) -{ - // Build range table from the energy loss table - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (&aParticleType == G4Electron::Electron()) - { - if (theRangeElectronTable) - { theRangeElectronTable->clearAndDestroy(); - delete theRangeElectronTable; - } - theRangeElectronTable = new G4PhysicsTable(numOfMaterials); - theRangeTable = theRangeElectronTable; - } - if (&aParticleType == G4Positron::Positron()) - { - if (theRangePositronTable) - { theRangePositronTable->clearAndDestroy(); - delete theRangePositronTable; - } - theRangePositronTable = new G4PhysicsTable(numOfMaterials); - theRangeTable = theRangePositronTable ; - } - - // loop for materials - - for (G4int J=0; Jinsert(aVector); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildTimeTables( - const G4ParticleDefinition& aParticleType) -{ - // Build time tables from the energy loss table - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (&aParticleType == G4Electron::Electron()) - { - if (theLabTimeElectronTable) - { theLabTimeElectronTable->clearAndDestroy(); - delete theLabTimeElectronTable; - } - theLabTimeElectronTable = new G4PhysicsTable(numOfMaterials); - theLabTimeTable = theLabTimeElectronTable; - - if (theProperTimeElectronTable) - { theProperTimeElectronTable->clearAndDestroy(); - delete theProperTimeElectronTable; - } - theProperTimeElectronTable = new G4PhysicsTable(numOfMaterials); - theProperTimeTable = theProperTimeElectronTable ; - } - if (&aParticleType == G4Positron::Positron()) - { - if (theLabTimePositronTable) - { theLabTimePositronTable->clearAndDestroy(); - delete theLabTimePositronTable; - } - theLabTimePositronTable = new G4PhysicsTable(numOfMaterials); - theLabTimeTable = theLabTimePositronTable ; - - if (theProperTimePositronTable) - { theProperTimePositronTable->clearAndDestroy(); - delete theProperTimePositronTable; - } - theProperTimePositronTable = new G4PhysicsTable(numOfMaterials); - theProperTimeTable = theProperTimePositronTable ; - } - - // loop for materials - - for (G4int J=0; Jinsert(aVector); - - - G4PhysicsLogVector* bVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin); - BuildProperTimeVector(J, bVector); - - theProperTimeTable->insert(bVector); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector) -{ - // create range vector for a material - G4int maxbint=100; - G4bool isOut; - G4double tlim=10.*keV,factor=2.*electron_mass_c2 ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)(materialIndex); - - // low energy part first... - G4double losslim = physicsVector->GetValue(tlim,isOut); - G4double taulim = tlim/electron_mass_c2; - G4double clim = losslim/sqrt(taulim); - G4double ltaulim = log(taulim); - G4double ltaumax = log(HighestKineticEnergy/electron_mass_c2); - - G4int i=-1; - G4double Value, oldValue(0.); - G4double LowEdgeEnergy, rangelim; - G4double tau,tauold; - - do - { - i += 1 ; - LowEdgeEnergy = rangeVector->GetLowEdgeEnergy(i); - tau = LowEdgeEnergy/electron_mass_c2; - if (tau <= taulim) Value = factor*sqrt(tau)/clim; - else { - rangelim = factor*taulim/losslim ; - ltaulow = log(taulim); - ltauhigh = log(tau); - Value = rangelim+RangeIntLog(physicsVector,maxbint); - } - rangeVector->PutValue(i,Value); - oldValue = Value; - tauold = tau; - - } while (tau<=taulim); - - i += 1; - - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/electron_mass_c2; - ltaulow = log(tauold); - ltauhigh = log(tau); - Value = oldValue+RangeIntLog(physicsVector,maxbint); - rangeVector->PutValue(j,Value); - oldValue = Value; - tauold = tau; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildLabTimeVector(G4int materialIndex, - G4PhysicsLogVector* timeVector) -// create lab time vector for a material -{ - G4int maxbint=100; - G4bool isOut; - G4double tlim=5.*keV,parlowen=0.4,ppar=0.5-parlowen ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)(materialIndex); - - // low energy part first... - G4double losslim = physicsVector->GetValue(tlim,isOut); - G4double taulim = tlim/ParticleMass ; - G4double clim = sqrt(ParticleMass*tlim/2.)/(c_light*losslim*ppar); - G4double ltaulim = log(taulim); - G4double ltaumax = log(HighestKineticEnergy/ParticleMass) ; - - G4int i=-1; - G4double Value, oldValue(0.); - G4double LowEdgeEnergy, timelim; - G4double tau,tauold; - - do - { - i += 1 ; - LowEdgeEnergy = timeVector->GetLowEdgeEnergy(i); - tau = LowEdgeEnergy/ParticleMass; - if (tau <= taulim) Value = clim*exp(ppar*log(tau/taulim)); - else { - timelim = clim; - ltaulow = log(taulim); - ltauhigh = log(tau); - Value = timelim+LabTimeIntLog(physicsVector,maxbint); - } - timeVector->PutValue(i,Value); - oldValue = Value; - tauold = tau; - - } while (tau<=taulim) ; - - i += 1 ; - - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/ParticleMass; - ltaulow = log(tauold); - ltauhigh = log(tau); - Value = oldValue+LabTimeIntLog(physicsVector,maxbint); - timeVector->PutValue(j,Value); - oldValue = Value ; - tauold = tau ; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildProperTimeVector(G4int materialIndex, - G4PhysicsLogVector* timeVector) -{ - // create lab time vector for a material - G4int maxbint=100; - G4bool isOut; - G4double tlim=5.*keV,parlowen=0.4,ppar=0.5-parlowen ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)(materialIndex); - - // low energy part first... - G4double losslim = physicsVector->GetValue(tlim,isOut); - G4double taulim = tlim/ParticleMass; - G4double clim = sqrt(ParticleMass*tlim/2.)/(c_light*losslim*ppar); - G4double ltaulim = log(taulim); - G4double ltaumax = log(HighestKineticEnergy/ParticleMass); - - G4int i=-1; - G4double Value, oldValue(0.); - G4double LowEdgeEnergy, timelim; - G4double tau,tauold; - - do - { - i += 1 ; - LowEdgeEnergy = timeVector->GetLowEdgeEnergy(i); - tau = LowEdgeEnergy/ParticleMass ; - if (tau <= taulim) Value = clim*exp(ppar*log(tau/taulim)); - else { - timelim = clim; - ltaulow = log(taulim); - ltauhigh = log(tau); - Value = timelim+ProperTimeIntLog(physicsVector,maxbint); - } - timeVector->PutValue(i,Value); - oldValue = Value; - tauold = tau; - - } while (tau<=taulim) ; - - i += 1 ; - - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/ParticleMass; - ltaulow = log(tauold); - ltauhigh = log(tau); - Value = oldValue+ProperTimeIntLog(physicsVector,maxbint); - timeVector->PutValue(j,Value); - oldValue = Value; - tauold = tau; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4VIeEnergyLoss::RangeIntLog(G4PhysicsVector* physicsVector, - G4int nbin) -// num. integration, logarithmic binning -{ - G4double taui,lossi,ci; - G4bool isOut; - - G4double ltt = ltauhigh-ltaulow; - G4double dltau = ltt/nbin; - G4double Value = 0.; - - for (G4int i=0; i<=nbin; i++) - { - taui = exp(ltaulow+dltau*i); - lossi = physicsVector->GetValue(ParticleMass*taui,isOut); - if ((i==0)||(i==nbin)) ci=0.5; else ci=1.; - Value += ci*taui/lossi; - } - - return Value*ParticleMass*dltau; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4VIeEnergyLoss::LabTimeIntLog(G4PhysicsVector* physicsVector, - G4int nbin) -// num. integration, logarithmic binning -{ - G4double taui,ti,lossi,ci; - G4bool isOut; - - G4double ltt = ltauhigh-ltaulow; - G4double dltau = ltt/nbin; - G4double Value = 0.; - - for (G4int i=0; i<=nbin; i++) - { - taui = exp(ltaulow+dltau*i); - ti = ParticleMass*taui; - lossi = physicsVector->GetValue(ti,isOut); - if ((i==0)||(i==nbin)) ci=0.5; else ci=1.; - Value += ci*taui*(ti+ParticleMass)/(sqrt(ti*(ti+2.*ParticleMass))*lossi); - } - - return Value*ParticleMass*dltau/c_light; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4VIeEnergyLoss::ProperTimeIntLog(G4PhysicsVector* physicsVector, - G4int nbin) -// num. integration, logarithmic binning -{ - G4double taui,ti,lossi,ci; - G4bool isOut; - - G4double ltt = ltauhigh-ltaulow; - G4double dltau = ltt/nbin; - G4double Value = 0.; - - for (G4int i=0; i<=nbin; i++) - { - taui = exp(ltaulow+dltau*i); - ti = ParticleMass*taui; - lossi = physicsVector->GetValue(ti,isOut); - if ((i==0)||(i==nbin)) ci=0.5; else ci=1.; - Value += ci*taui*ParticleMass/(sqrt(ti*(ti+2.*ParticleMass))*lossi); - } - - return Value*ParticleMass*dltau/c_light; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildRangeCoeffATable( - const G4ParticleDefinition& aParticleType) -{ - // Build tables of coefficients for the energy loss calculation - // create table for coefficients "A" - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (&aParticleType==G4Electron::Electron()) - { - if (theeRangeCoeffATable) {theeRangeCoeffATable->clearAndDestroy(); - delete theeRangeCoeffATable; - } - theeRangeCoeffATable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffATable = theeRangeCoeffATable ; - } - if (&aParticleType==G4Positron::Positron()) - { - if (thepRangeCoeffATable) {thepRangeCoeffATable->clearAndDestroy(); - delete thepRangeCoeffATable; - } - thepRangeCoeffATable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffATable = thepRangeCoeffATable; - } - - G4double R1 = RTable+1., R2 = RTable*RTable ; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value; - G4bool isOut; - - // loop for materials - - for (G4int J=0; JGetValue(Ti,isOut); - if (i==0) Rim = Ri/sqrt(RTable); - else { Tim = Ti/RTable; Rim = rangeVector->GetValue(Tim,isOut);} - Tip = Ti*RTable; - Rip = rangeVector->GetValue(Tip,isOut); - if (i < (TotBin-1)) Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti); - else Value = 0.; - aVector->PutValue(i,Value); - Ti *= RTable; - } - - theRangeCoeffATable->insert(aVector); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildRangeCoeffBTable( - const G4ParticleDefinition& aParticleType) -{ - // Build tables of coefficients for the energy loss calculation - // create table for coefficients "B" - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (&aParticleType==G4Electron::Electron()) - { - if (theeRangeCoeffBTable) {theeRangeCoeffBTable->clearAndDestroy(); - delete theeRangeCoeffBTable; - } - theeRangeCoeffBTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffBTable = theeRangeCoeffBTable; - } - if (&aParticleType==G4Positron::Positron()) - { - if (thepRangeCoeffBTable) {thepRangeCoeffBTable->clearAndDestroy(); - delete thepRangeCoeffBTable; - } - thepRangeCoeffBTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffBTable = thepRangeCoeffBTable; - } - - G4double R1 = RTable+1., R2 = RTable*RTable; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - - for (G4int J=0; JGetValue(Ti,isOut); - if (i==0) Rim = Ri/sqrt(RTable); - else { Tim = Ti/RTable; Rim = rangeVector->GetValue(Tim,isOut);} - Tip = Ti*RTable; - Rip = rangeVector->GetValue(Tip,isOut); - if (i < (TotBin-1)) Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - else Value = RTable*(Ri-Rim)/((RTable-1.)*Ti); - aVector->PutValue(i,Value); - Ti *= RTable; - } - - theRangeCoeffBTable->insert(aVector); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::BuildRangeCoeffCTable( - const G4ParticleDefinition& aParticleType) -{ -// Build tables of coefficients for the energy loss calculation -// create table for coefficients "C" - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (&aParticleType==G4Electron::Electron()) - { - if (theeRangeCoeffCTable) {theeRangeCoeffCTable->clearAndDestroy(); - delete theeRangeCoeffCTable; - } - theeRangeCoeffCTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffCTable = theeRangeCoeffCTable; - } - if (&aParticleType==G4Positron::Positron()) - { - if (thepRangeCoeffCTable) {thepRangeCoeffCTable->clearAndDestroy(); - delete thepRangeCoeffCTable; - } - thepRangeCoeffCTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffCTable = thepRangeCoeffCTable ; - } - - G4double R1 = RTable+1., R2 = RTable*RTable; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut); - if (i==0) Rim = Ri/sqrt(RTable); - else { Tim = Ti/RTable; Rim = rangeVector->GetValue(Tim,isOut);} - Tip = Ti*RTable; - Rip = rangeVector->GetValue(Tip,isOut); - if (i < (TotBin-1)) Value = w1*Rip + w2*Ri + w3*Rim; - else Value = (-Ri+RTable*Rim)/(RTable-1.); - aVector->PutValue(i,Value); - Ti *= RTable; - } - - theRangeCoeffCTable->insert(aVector); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - void G4VIeEnergyLoss::BuildInverseRangeTable( - const G4ParticleDefinition& aParticleType) -{ - // Build inverse table of the range table - - G4double SmallestRange,BiggestRange; - G4bool isOut; - - // create table - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (&aParticleType == G4Electron::Electron()) - { - if (theInverseRangeElectronTable) - { - theInverseRangeElectronTable->clearAndDestroy(); - delete theInverseRangeElectronTable; - } - theInverseRangeElectronTable = new G4PhysicsTable(numOfMaterials); - theInverseRangeTable = theInverseRangeElectronTable; - theRangeTable = theRangeElectronTable; - theDEDXTable = theDEDXElectronTable; - theRangeCoeffATable = theeRangeCoeffATable; - theRangeCoeffBTable = theeRangeCoeffBTable; - theRangeCoeffCTable = theeRangeCoeffCTable; - } - - if (&aParticleType == G4Positron::Positron()) - { - if (theInverseRangePositronTable) - { - theInverseRangePositronTable->clearAndDestroy(); - delete theInverseRangePositronTable; - } - theInverseRangePositronTable = new G4PhysicsTable(numOfMaterials); - theInverseRangeTable = theInverseRangePositronTable; - theRangeTable = theRangePositronTable; - theDEDXTable = theDEDXPositronTable; - theRangeCoeffATable = thepRangeCoeffATable; - theRangeCoeffBTable = thepRangeCoeffBTable; - theRangeCoeffCTable = thepRangeCoeffCTable; - } - - // loop for materials - - for (G4int J=0; JGetValue(LowestKineticEnergy ,isOut); - BiggestRange = (*theRangeTable)(J)->GetValue(HighestKineticEnergy,isOut); - - G4PhysicsLogVector* aVector = new G4PhysicsLogVector(SmallestRange, - BiggestRange,TotBin); - InvertRangeVector(J, aVector); - - theInverseRangeTable->insert(aVector); - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void G4VIeEnergyLoss::InvertRangeVector(G4int materialIndex, - G4PhysicsLogVector* aVector) -{ - // invert range vector for a material - - G4double LowEdgeRange,A,B,C,discr,KineticEnergy; - - G4double Tbin = LowestKineticEnergy/RTable; - G4double rangebin = 0.0; - G4int binnumber = -1; - G4bool isOut; - //loop for range values - for (G4int i=0; iGetLowEdgeEnergy(i); - while ((rangebin < LowEdgeRange) && (binnumber < TotBin)) - { - binnumber += 1; - Tbin *= RTable; - rangebin = (*theRangeTable)(materialIndex)->GetValue(Tbin,isOut); - } - - if (binnumber == 0) KineticEnergy = LowestKineticEnergy; - else if (binnumber == TotBin-1) KineticEnergy = HighestKineticEnergy; - else - { - A = (*(*theRangeCoeffATable)(materialIndex))(binnumber-1); - B = (*(*theRangeCoeffBTable)(materialIndex))(binnumber-1); - C = (*(*theRangeCoeffCTable)(materialIndex))(binnumber-1); - if(A==0.) - KineticEnergy = (LowEdgeRange -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdgeRange); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - aVector->PutValue(i,KineticEnergy) ; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4VIeEnergyLoss::GetConstraints(const G4DynamicParticle* aParticle, - G4Material* aMaterial) -{ - // returns the Step limit = range here! - // it calculates dEdx and the range as well.... - - G4double CutInRange,StepLimit; - G4bool isOutRange; - - if (aParticle->GetDefinition()->GetPDGCharge() < 0.) - { - CutInRange = G4Electron::Electron()->GetCuts(); - theDEDXTable = theDEDXElectronTable; - theRangeTable = theRangeElectronTable; - theRangeCoeffATable = theeRangeCoeffATable; - theRangeCoeffBTable = theeRangeCoeffBTable; - theRangeCoeffCTable = theeRangeCoeffCTable; - } - else - { - CutInRange = G4Positron::Positron()->GetCuts(); - theDEDXTable = theDEDXPositronTable; - theRangeTable = theRangePositronTable; - theRangeCoeffATable = thepRangeCoeffATable; - theRangeCoeffBTable = thepRangeCoeffBTable; - theRangeCoeffCTable = thepRangeCoeffCTable; - } - - G4double Thigh = HighestKineticEnergy/RTable; - G4double KineticEnergy = aParticle->GetKineticEnergy(); - EnergyBinNumber = G4int(log(KineticEnergy/LowestKineticEnergy)/LOGRTable); - - G4int index = aMaterial->GetIndex(); - - if (KineticEnergy < LowestKineticEnergy) - { - // extrapolation for very low energy - fdEdx = sqrt(KineticEnergy/LowestKineticEnergy)* - (*theDEDXTable)(index)->GetValue(LowestKineticEnergy,isOutRange); - fRangeNow = sqrt(KineticEnergy/LowestKineticEnergy)* - (*theRangeTable)(index)->GetValue(LowestKineticEnergy,isOutRange); - StepLimit = fRangeNow; - } - else if ( KineticEnergy > Thigh) - { - // extrapolation for very high energy - fdEdx = (*theDEDXTable)(index)->GetValue(Thigh,isOutRange); - fRangeNow = (*theRangeTable)(index)->GetValue(Thigh,isOutRange); - if (fdEdx > 0.) fRangeNow += (KineticEnergy-Thigh)/fdEdx; - StepLimit = fRangeNow; - } - else - { - // LowestKineticEnergy <= KineticEnergy <= HighestKineticEnergy - fdEdx = (*theDEDXTable)(index)->GetValue(KineticEnergy,isOutRange); - G4double RgCoefA = (*(*theRangeCoeffATable)(index))(EnergyBinNumber); - G4double RgCoefB = (*(*theRangeCoeffBTable)(index))(EnergyBinNumber); - G4double RgCoefC = (*(*theRangeCoeffCTable)(index))(EnergyBinNumber); - fRangeNow = (RgCoefA*KineticEnergy+RgCoefB)*KineticEnergy+RgCoefC; - - StepLimit = fRangeNow; - } - - return StepLimit; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4VParticleChange* G4VIeEnergyLoss::AlongStepDoIt( const G4Track& trackData, - const G4Step& stepData) -{ - // compute the energy loss after a Step - - // get particle and material pointers from trackData - const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); - G4double E = aParticle->GetKineticEnergy() ; - G4double charge = aParticle->GetDefinition()->GetPDGCharge(); - - G4Material* aMaterial = trackData.GetMaterial(); - G4int index = aMaterial->GetIndex(); - - G4double Step = stepData.GetStepLength(); - - aParticleChange.Initialize(trackData); - - // do not track further if kin.energy < 1. eV - const G4double MinKineticEnergy = 1.*eV; - - G4double MeanLoss, finalT; - - if (E < MinKineticEnergy) { finalT = 0.; MeanLoss = E;} - - else if (EnergyBinNumber <= 0) - { - if (Step >= fRangeNow) { finalT = 0.; MeanLoss = E;} - else - { - finalT = E*(1.-Step/fRangeNow)*(1.-Step/fRangeNow); - if (finalT < MinKineticEnergy) finalT = 0.; - MeanLoss = E - finalT; - } - } - - else if (EnergyBinNumber >= (TotBin-1)) - { - // simple solution for the moment: loss = Step*dE/dx (dE/dx const) - MeanLoss = Step*fdEdx; - if (MeanLoss > E) MeanLoss = E; - finalT = E - MeanLoss; - if (finalT < MinKineticEnergy) { finalT = 0.; MeanLoss = E;} - } - - else if (Step >= fRangeNow) { finalT = 0.; MeanLoss = E;} - - else - { - if (charge<0.) finalT = G4EnergyLossTables::GetPreciseEnergyFromRange - (G4Electron::Electron(),fRangeNow-Step,aMaterial); - else finalT = G4EnergyLossTables::GetPreciseEnergyFromRange - (G4Positron::Positron(),fRangeNow-Step,aMaterial); - if (finalT < MinKineticEnergy) finalT = 0.; - MeanLoss = E-finalT; - - if (MeanLoss < 0.) { MeanLoss = 0.; finalT = E;} - - //now the loss with fluctuation - if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowestKineticEnergy)) - - { - finalT = E-GetLossWithFluct(aParticle,aMaterial,1.,MeanLoss,Step); - if (finalT < 0.) finalT = E-MeanLoss; - } - } - - // kill the particle if the kinetic energy <= 0 - if (finalT <= 0. ) - { - finalT = 0.; - if (charge < 0.) aParticleChange.SetStatusChange(fStopAndKill); - else aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetNumberOfSecondaries(0); - aParticleChange.SetEnergyChange(finalT); - aParticleChange.SetLocalEnergyDeposit(E-finalT); - - return &aParticleChange; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4VIeEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double ChargeSquare, - G4double MeanLoss, - G4double step ) -{ -// calculate actual loss from the mean loss -// The model used to get the fluctuation is essentially the same as in Glandz in Geant3. - - static const G4double minLoss = 1.*eV ; - static const G4double probLim = 0.01 ; - static const G4double sumaLim = -log(probLim) ; - static const G4double alim=10.; - static const G4double kappa = 10. ; - static const G4double factor = twopi_mc2_rcl2 ; - - - // check if the material has changed ( cache mechanism) - - if (aMaterial != lastMaterial) - { - lastMaterial = aMaterial; - imat = aMaterial->GetIndex(); - f1Fluct = aMaterial->GetIonisation()->GetF1fluct(); - f2Fluct = aMaterial->GetIonisation()->GetF2fluct(); - e1Fluct = aMaterial->GetIonisation()->GetEnergy1fluct(); - e2Fluct = aMaterial->GetIonisation()->GetEnergy2fluct(); - e1LogFluct = aMaterial->GetIonisation()->GetLogEnergy1fluct(); - e2LogFluct = aMaterial->GetIonisation()->GetLogEnergy2fluct(); - rateFluct = aMaterial->GetIonisation()->GetRateionexcfluct(); - ipotFluct = aMaterial->GetIonisation()->GetMeanExcitationEnergy(); - ipotLogFluct = aMaterial->GetIonisation()->GetLogMeanExcEnergy(); - } - G4double threshold,w1,w2,C, - beta2,suma,e0,loss,lossc ,w,electronDensity; - G4double a1,a2,a3; - G4int p1,p2,p3; - G4int nb; - G4double Corrfac, na,alfa,rfac,namean,sa,alfa1,ea,sea; - G4double dp1,dp3; - G4double siga ; - - // shortcut for very very small loss - if(MeanLoss < minLoss) return MeanLoss ; - - // get particle data - G4double Tkin = aParticle->GetKineticEnergy(); - ParticleMass = aParticle->GetMass() ; - - threshold =((*G4Electron::Electron()).GetCutsInEnergy())[imat]; - G4double rmass = electron_mass_c2/ParticleMass; - G4double tau = Tkin/ParticleMass, tau1 = tau+1., tau2 = tau*(tau+2.); - G4double Tm = 2.*electron_mass_c2*tau2/(1.+2.*tau1*rmass+rmass*rmass); - - if (Tm <= ipotFluct) Tm = ipotFluct ; - - if(Tm > threshold) Tm = threshold; - beta2 = tau2/(tau1*tau1); - - // Gaussian fluctuation ? - if(MeanLoss >= kappa*Tm) - { - electronDensity = aMaterial->GetElectronDensity() ; - siga = sqrt(MeanLoss*Tm*(0.5-0.25*beta2)*step* - factor*electronDensity*ChargeSquare/beta2) ; - loss = G4RandGauss::shoot(MeanLoss,siga) ; - if(loss < 0.) loss = 0. ; - return loss ; - } - - w1 = Tm/ipotFluct; - w2 = log(2.*electron_mass_c2*tau2); - - C = MeanLoss*(1.-rateFluct)/(w2-ipotLogFluct-beta2); - - a1 = C*f1Fluct*(w2-e1LogFluct-beta2)/e1Fluct; - a2 = C*f2Fluct*(w2-e2LogFluct-beta2)/e2Fluct; - if(Tm > ipotFluct) - a3 = rateFluct*MeanLoss*(Tm-ipotFluct)/(ipotFluct*Tm*log(w1)); - else - { - a1 /= 1.-rateFluct ; - a2 /= 1.-rateFluct ; - a3 = 0. ; - } - - suma = a1+a2+a3; - - loss = 0. ; - - if(suma < sumaLim) // very small Step - { - e0 = aMaterial->GetIonisation()->GetEnergy0fluct(); - - if(Tm == ipotFluct) - { - a3 = MeanLoss/e0; - - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - p3 = G4Poisson(a3); - - loss = p3*e0 ; - - if(p3 > 0) - loss += (1.-2.*G4UniformRand())*e0 ; - - } - else - { - Tm = Tm-ipotFluct+e0 ; - a3 = MeanLoss*(Tm-e0)/(Tm*e0*log(Tm/e0)); - - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - else - p3 = G4Poisson(a3); - - if(p3 > 0) - { - w = (Tm-e0)/Tm ; - if(p3 > nmaxCont2) - { - dp3 = G4float(p3) ; - Corrfac = dp3/G4float(nmaxCont2) ; - p3 = nmaxCont2 ; - } - else - Corrfac = 1. ; - - for(G4int i=0; ialim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(G4RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - - // excitation type 2 - if(a2>alim) - { - siga=sqrt(a2) ; - p2 = G4std::max(0,int(G4RandGauss::shoot(a2,siga)+0.5)); - } - else - p2 = G4Poisson(a2); - - loss = p1*e1Fluct+p2*e2Fluct; - - // smearing to avoid unphysical peaks - if(p2 > 0) - loss += (1.-2.*G4UniformRand())*e2Fluct; - else if (loss>0.) - loss += (1.-2.*G4UniformRand())*e1Fluct; - - // ionisation ....................................... - if(a3 > 0.) - { - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - else - p3 = G4Poisson(a3); - - lossc = 0.; - if(p3 > 0) - { - na = 0.; - alfa = 1.; - if (p3 > nmaxCont2) - { - dp3 = G4float(p3); - rfac = dp3/(G4float(nmaxCont2)+dp3); - namean = G4float(p3)*rfac; - sa = G4float(nmaxCont1)*rfac; - na = G4RandGauss::shoot(namean,sa); - if (na > 0.) - { - alfa = w1*G4float(nmaxCont2+p3)/(w1*G4float(nmaxCont2)+G4float(p3)); - alfa1 = alfa*log(alfa)/(alfa-1.); - ea = na*ipotFluct*alfa1; - sea = ipotFluct*sqrt(na*(alfa-alfa1*alfa1)); - lossc += G4RandGauss::shoot(ea,sea); - } - } - - nb = G4int(G4float(p3)-na); - if (nb > 0) - { - w2 = alfa*ipotFluct; - w = (Tm-w2)/Tm; - for (G4int k=0; kNumberOfProcesses is initialized -// to 1 . YOU DO NOT HAVE TO CHANGE this variable for a 'normal' run. -// You have to change NumberOfProcesses -// if you invent a new process contributing to the cont. energy loss, -// NumberOfProcesses should be 2 in this case, -// or for debugging purposes. -// The NumberOfProcesses data member can be changed using the (public static) -// functions Get/Set/Plus/MinusNumberOfProcesses (see G4VIhEnergyLoss.hh) - -G4int G4VIhEnergyLoss::NumberOfProcesses = 1 ; - -G4int G4VIhEnergyLoss::CounterOfProcess = 0 ; -G4PhysicsTable** G4VIhEnergyLoss::RecorderOfProcess = - new G4PhysicsTable*[10] ; - -G4int G4VIhEnergyLoss::CounterOfpProcess = 0 ; -G4PhysicsTable** G4VIhEnergyLoss::RecorderOfpProcess = - new G4PhysicsTable*[10] ; - -G4int G4VIhEnergyLoss::CounterOfpbarProcess = 0 ; -G4PhysicsTable** G4VIhEnergyLoss::RecorderOfpbarProcess = - new G4PhysicsTable*[10] ; - -G4PhysicsTable* G4VIhEnergyLoss::theDEDXpTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theDEDXpbarTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theRangepTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theRangepbarTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theInverseRangepTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theInverseRangepbarTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theLabTimepTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theLabTimepbarTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theProperTimepTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theProperTimepbarTable = NULL ; - -G4PhysicsTable* G4VIhEnergyLoss::thepRangeCoeffATable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::thepRangeCoeffBTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::thepRangeCoeffCTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::thepbarRangeCoeffATable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::thepbarRangeCoeffBTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::thepbarRangeCoeffCTable = NULL ; - -G4PhysicsTable* G4VIhEnergyLoss::theDEDXTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theRangeTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theInverseRangeTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theLabTimeTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theProperTimeTable = NULL ; - -G4PhysicsTable* G4VIhEnergyLoss::theRangeCoeffATable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theRangeCoeffBTable = NULL ; -G4PhysicsTable* G4VIhEnergyLoss::theRangeCoeffCTable = NULL ; - -const G4Proton* G4VIhEnergyLoss::theProton =G4Proton::Proton() ; -const G4AntiProton* G4VIhEnergyLoss::theAntiProton=G4AntiProton::AntiProton() ; - -G4double G4VIhEnergyLoss::ParticleMass; - -G4double G4VIhEnergyLoss::Mass, - G4VIhEnergyLoss::taulow, - G4VIhEnergyLoss::tauhigh, - G4VIhEnergyLoss::ltaulow, - G4VIhEnergyLoss::ltauhigh; - -G4double G4VIhEnergyLoss::CutInRange = 0. ; - -G4double G4VIhEnergyLoss::dRoverRange = 0.20 ; -G4double G4VIhEnergyLoss::finalRange = 200.*micrometer ; - -G4bool G4VIhEnergyLoss::rndmStepFlag = false ; -G4bool G4VIhEnergyLoss::EnlossFlucFlag = true ; - -G4double G4VIhEnergyLoss::LowestKineticEnergy; -G4double G4VIhEnergyLoss::HighestKineticEnergy; -G4int G4VIhEnergyLoss::TotBin; -G4double G4VIhEnergyLoss::RTable,G4VIhEnergyLoss::LOGRTable; - -// constructor and destructor - -G4VIhEnergyLoss::G4VIhEnergyLoss(const G4String& processName) - : G4IVContinuousDiscreteProcess (processName), - theLossTable (NULL), - lastMaterial (NULL), - MaxExcitationNumber (1.e6), - probLimFluct (0.01), - nmaxDirectFluct (100), - nmaxCont1(4), - nmaxCont2(16) -{ } - -G4VIhEnergyLoss::~G4VIhEnergyLoss() -{ - if(theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } -} - -void G4VIhEnergyLoss::BuildDEDXTable( - const G4ParticleDefinition& aParticleType) -{ - // calculate data members TotBin,LOGRTable,RTable first - G4double lrate ; - G4int nbin ; - G4double binning = 2.*dRoverRange; - lrate = log(HighestKineticEnergy/LowestKineticEnergy) ; - nbin = G4int((lrate/log(1.+binning) + lrate/log(1.+2.*binning))/2.); - nbin = (nbin+25)/50 ; - TotBin = 50*nbin ; - if(TotBin<50) - TotBin = 50 ; - if(TotBin>500) - TotBin = 500 ; - LOGRTable=lrate/TotBin; - RTable =exp(LOGRTable); - - // create table if there is no table or there is a new cut value - G4bool MakeTable = false ; - - ParticleMass = aParticleType.GetPDGMass() ; - - G4double newCutInRange = aParticleType.GetLengthCuts(); - - // create/fill proton or antiproton tables depending on the charge - G4double Charge = aParticleType.GetPDGCharge(); - - if (Charge>0.) {theDEDXTable= theDEDXpTable;} - else {theDEDXTable= theDEDXpbarTable;} - - if ((CutInRange != newCutInRange) || (theDEDXTable==NULL)) - { - MakeTable = true ; - CutInRange = newCutInRange ; - } - - if( MakeTable ) - { - - // Build energy loss table as a sum of the energy loss due to the - // different processes. - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if( Charge >0.) - { - RecorderOfProcess=RecorderOfpProcess; - CounterOfProcess=CounterOfpProcess; - - if(CounterOfProcess == NumberOfProcesses) - { - if(theDEDXpTable) - { theDEDXpTable->clearAndDestroy(); - delete theDEDXpTable; } - theDEDXpTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXpTable; - } - } - else - { - RecorderOfProcess=RecorderOfpbarProcess; - CounterOfProcess=CounterOfpbarProcess; - - if(CounterOfProcess == NumberOfProcesses) - { - if(theDEDXpbarTable) - { theDEDXpbarTable->clearAndDestroy(); - delete theDEDXpbarTable; } - theDEDXpbarTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXpbarTable; - } - } - - if(CounterOfProcess == NumberOfProcesses) - { - // loop for materials - G4double LowEdgeEnergy , Value ; - G4bool isOutRange ; - G4PhysicsTable* pointer ; - - for (G4int J=0; JGetLowEdgeEnergy(i) ; - Value = 0. ; - - // loop for the contributing processes - for (G4int process=0; process < NumberOfProcesses; process++) - { - pointer= RecorderOfProcess[process]; - Value += (*pointer)[J]-> - GetValue(LowEdgeEnergy,isOutRange) ; - } - aVector->PutValue(i,Value) ; - } - - theDEDXTable->insert(aVector) ; - } - - // reset counter to zero .................. - if( Charge >0.) - CounterOfpProcess=0 ; - else - CounterOfpbarProcess=0 ; - - // Build range table - BuildRangeTable( aParticleType); - - // Build lab/proper time tables - BuildTimeTables( aParticleType) ; - - // Build coeff tables for the energy loss calculation - BuildRangeCoeffATable( aParticleType); - BuildRangeCoeffBTable( aParticleType); - BuildRangeCoeffCTable( aParticleType); - - // invert the range table - BuildInverseRangeTable(aParticleType); - } - } - // make the energy loss and the range table available - const G4double lowestKineticEnergy(1.00*keV); - const G4double highestKineticEnergy(100.*TeV); - - G4EnergyLossTables::Register(&aParticleType, - (Charge>0)? - theDEDXpTable: theDEDXpbarTable, - (Charge>0)? - theRangepTable: theRangepbarTable, - (Charge>0)? - theInverseRangepTable: theInverseRangepbarTable, - (Charge>0)? - theLabTimepTable: theLabTimepbarTable, - (Charge>0)? - theProperTimepTable: theProperTimepbarTable, - lowestKineticEnergy, highestKineticEnergy, - proton_mass_c2/aParticleType.GetPDGMass(),TotBin); -} - -void G4VIhEnergyLoss::BuildRangeTable( - const G4ParticleDefinition& aParticleType) -// Build range table from the energy loss table -{ - G4double Charge = aParticleType.GetPDGCharge() ; - Mass = proton_mass_c2; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if( Charge >0.) - { - if(theRangepTable) - { theRangepTable->clearAndDestroy(); - delete theRangepTable; } - theRangepTable = new G4PhysicsTable(numOfMaterials); - theRangeTable = theRangepTable ; - } - else - { - if(theRangepbarTable) - { theRangepbarTable->clearAndDestroy(); - delete theRangepbarTable; } - theRangepbarTable = new G4PhysicsTable(numOfMaterials); - theRangeTable = theRangepbarTable ; - } - - // loop for materials - - for (G4int J=0; Jinsert(aVector); - } -} - -void G4VIhEnergyLoss::BuildTimeTables( - const G4ParticleDefinition& aParticleType) -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(&aParticleType == G4Proton::Proton()) - { - if(theLabTimepTable) - { theLabTimepTable->clearAndDestroy(); - delete theLabTimepTable; } - theLabTimepTable = new G4PhysicsTable(numOfMaterials); - theLabTimeTable = theLabTimepTable ; - - if(theProperTimepTable) - { theProperTimepTable->clearAndDestroy(); - delete theProperTimepTable; } - theProperTimepTable = new G4PhysicsTable(numOfMaterials); - theProperTimeTable = theProperTimepTable ; - } - - if(&aParticleType == G4AntiProton::AntiProton()) - { - if(theLabTimepbarTable) - { theLabTimepbarTable->clearAndDestroy(); - delete theLabTimepbarTable; } - theLabTimepbarTable = new G4PhysicsTable(numOfMaterials); - theLabTimeTable = theLabTimepbarTable ; - - if(theProperTimepbarTable) - { theProperTimepbarTable->clearAndDestroy(); - delete theProperTimepbarTable; } - theProperTimepbarTable = new G4PhysicsTable(numOfMaterials); - theProperTimeTable = theProperTimepbarTable ; - } - - for (G4int J=0; Jinsert(aVector); - - bVector = new G4PhysicsLogVector(LowestKineticEnergy, - HighestKineticEnergy,TotBin); - - BuildProperTimeVector(J, bVector); - theProperTimeTable->insert(bVector); - } -} - -void G4VIhEnergyLoss::BuildRangeVector(G4int materialIndex, - G4PhysicsLogVector* rangeVector) -// create range vector for a material -{ - G4int nbin=100; - G4bool isOut; - G4double tlim=2.*MeV,t1=0.1*MeV,t2=0.025*MeV ; - G4double loss1,loss2,ca,cb,cba ; - G4double taulim,rangelim,ltaulim,ltaumax, - LowEdgeEnergy,tau,Value,tau1,sqtau1 ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - // low energy part first... - loss1 = physicsVector->GetValue(t1,isOut); - loss2 = physicsVector->GetValue(t2,isOut); - tau1 = t1/Mass ; - sqtau1 = sqrt(tau1) ; - ca = (4.*loss2-loss1)/sqtau1 ; - cb = (2.*loss1-4.*loss2)/tau1 ; - cba = cb/ca ; - taulim = tlim/Mass ; - ltaulim = log(taulim) ; - ltaumax = log(HighestKineticEnergy/Mass) ; - - G4int i=-1; - G4double oldValue = 0. ; - G4double tauold ; - do - { - i += 1 ; - LowEdgeEnergy = rangeVector->GetLowEdgeEnergy(i); - tau = LowEdgeEnergy/Mass; - if ( tau <= tau1 ) - { - Value = 2.*Mass*log(1.+cba*sqrt(tau))/cb ; - } - else - { - Value = 2.*Mass*log(1.+cba*sqtau1)/cb ; - if(tau<=taulim) - { - taulow = tau1 ; - tauhigh = tau ; - Value += RangeIntLin(physicsVector,nbin); - } - else - { - taulow = tau1 ; - tauhigh = taulim ; - Value += RangeIntLin(physicsVector,nbin) ; - ltaulow = ltaulim ; - ltauhigh = log(tau) ; - Value += RangeIntLog(physicsVector,nbin); - } - } - rangeVector->PutValue(i,Value); - oldValue = Value ; - tauold = tau ; - } while (tau<=taulim) ; - - i += 1 ; - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/Mass; - ltaulow = log(tauold); - ltauhigh = log(tau); - Value = oldValue+RangeIntLog(physicsVector,nbin); - rangeVector->PutValue(j,Value); - oldValue = Value ; - tauold = tau ; - } -} - -void G4VIhEnergyLoss::BuildLabTimeVector(G4int materialIndex, - G4PhysicsLogVector* timeVector) -// create lab time vector for a material -{ - - G4int nbin=100; - G4bool isOut; - G4double tlim=5.*keV,parlowen=0.4,ppar=0.5-parlowen ; - G4double losslim,clim,taulim,timelim,ltaulim,ltaumax, - LowEdgeEnergy,tau,Value ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - // low energy part first... - losslim = physicsVector->GetValue(tlim,isOut); - taulim=tlim/ParticleMass ; - clim=sqrt(ParticleMass*tlim/2.)/(c_light*losslim*ppar) ; - ltaulim = log(taulim); - ltaumax = log(HighestKineticEnergy/ParticleMass) ; - - G4int i=-1; - G4double oldValue = 0. ; - G4double tauold ; - do - { - i += 1 ; - LowEdgeEnergy = timeVector->GetLowEdgeEnergy(i); - tau = LowEdgeEnergy/ParticleMass ; - if ( tau <= taulim ) - { - Value = clim*exp(ppar*log(tau/taulim)) ; - } - else - { - timelim=clim ; - ltaulow = log(taulim); - ltauhigh = log(tau); - Value = timelim+LabTimeIntLog(physicsVector,nbin); - } - timeVector->PutValue(i,Value); - oldValue = Value ; - tauold = tau ; - } while (tau<=taulim) ; - - i += 1 ; - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/ParticleMass ; - ltaulow = log(tauold); - ltauhigh = log(tau); - Value = oldValue+LabTimeIntLog(physicsVector,nbin); - timeVector->PutValue(j,Value); - oldValue = Value ; - tauold = tau ; - } -} - -void G4VIhEnergyLoss::BuildProperTimeVector(G4int materialIndex, - G4PhysicsLogVector* timeVector) -// create proper time vector for a material -{ - G4int nbin=100; - G4bool isOut; - G4double tlim=5.*keV,parlowen=0.4,ppar=0.5-parlowen ; - G4double losslim,clim,taulim,timelim,ltaulim,ltaumax, - LowEdgeEnergy,tau,Value ; - - G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - const G4MaterialTable* theMaterialTable = - G4Material::GetMaterialTable() ; - - // low energy part first... - losslim = physicsVector->GetValue(tlim,isOut); - taulim=tlim/ParticleMass ; - clim=sqrt(ParticleMass*tlim/2.)/(c_light*losslim*ppar) ; - ltaulim = log(taulim); - ltaumax = log(HighestKineticEnergy/ParticleMass) ; - - G4int i=-1; - G4double oldValue = 0. ; - G4double tauold ; - do - { - i += 1 ; - LowEdgeEnergy = timeVector->GetLowEdgeEnergy(i); - tau = LowEdgeEnergy/ParticleMass ; - if ( tau <= taulim ) - { - Value = clim*exp(ppar*log(tau/taulim)) ; - } - else - { - timelim=clim ; - ltaulow = log(taulim); - ltauhigh = log(tau); - Value = timelim+ProperTimeIntLog(physicsVector,nbin); - } - timeVector->PutValue(i,Value); - oldValue = Value ; - tauold = tau ; - } while (tau<=taulim) ; - - i += 1 ; - for (G4int j=i; jGetLowEdgeEnergy(j); - tau = LowEdgeEnergy/ParticleMass ; - ltaulow = log(tauold); - ltauhigh = log(tau); - Value = oldValue+ProperTimeIntLog(physicsVector,nbin); - timeVector->PutValue(j,Value); - oldValue = Value ; - tauold = tau ; - } -} - -G4double G4VIhEnergyLoss::RangeIntLin(G4PhysicsVector* physicsVector, - G4int nbin) -// num. integration, linear binning -{ - G4double dtau,Value,taui,ti,lossi,ci; - G4bool isOut; - dtau = (tauhigh-taulow)/nbin; - Value = 0.; - - for (G4int i=0; i<=nbin; i++) - { - taui = taulow + dtau*i ; - ti = Mass*taui; - lossi = physicsVector->GetValue(ti,isOut); - if(i==0) - ci=0.5; - else - { - if(iGetValue(ti,isOut); - if(i==0) - ci=0.5; - else - { - if(iGetValue(ti,isOut); - if(i==0) - ci=0.5; - else - { - if(iGetValue(ti,isOut); - if(i==0) - ci=0.5; - else - { - if(ilength(); - G4double Charge = aParticleType.GetPDGCharge() ; - - if(Charge>0.) - { - if(thepRangeCoeffATable) - { thepRangeCoeffATable->clearAndDestroy(); - delete thepRangeCoeffATable; } - thepRangeCoeffATable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffATable = thepRangeCoeffATable ; - theRangeTable = theRangepTable ; - } - else - { - if(thepbarRangeCoeffATable) - { thepbarRangeCoeffATable->clearAndDestroy(); - delete thepbarRangeCoeffATable; } - thepbarRangeCoeffATable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffATable = thepbarRangeCoeffATable ; - theRangeTable = theRangepbarTable ; - } - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = RTable/w , w2 = -RTable*R1/w , w3 = R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - if ( i==0 ) - Rim = 0. ; - else - { - Tim = Ti/RTable ; - Rim = rangeVector->GetValue(Tim,isOut); - } - if ( i==(TotBin-1)) - Rip = Ri ; - else - { - Tip = Ti*RTable ; - Rip = rangeVector->GetValue(Tip,isOut); - } - Value = (w1*Rip + w2*Ri + w3*Rim)/(Ti*Ti) ; - - aVector->PutValue(i,Value); - Ti = RTable*Ti ; - } - - theRangeCoeffATable->insert(aVector); - } -} - - -void G4VIhEnergyLoss::BuildRangeCoeffBTable( - const G4ParticleDefinition& aParticleType) -// Build tables of coefficients for the energy loss calculation -// create table for coefficients "B" -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - G4double Charge = aParticleType.GetPDGCharge() ; - - if(Charge>0.) - { - if(thepRangeCoeffBTable) - { thepRangeCoeffBTable->clearAndDestroy(); - delete thepRangeCoeffBTable; } - thepRangeCoeffBTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffBTable = thepRangeCoeffBTable ; - theRangeTable = theRangepTable ; - } - else - { - if(thepbarRangeCoeffBTable) - { thepbarRangeCoeffBTable->clearAndDestroy(); - delete thepbarRangeCoeffBTable; } - thepbarRangeCoeffBTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffBTable = thepbarRangeCoeffBTable ; - theRangeTable = theRangepbarTable ; - } - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = -R1/w , w2 = R1*(R2+1.)/w , w3 = -R2*R1/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - if ( i==0 ) - Rim = 0. ; - else - { - Tim = Ti/RTable ; - Rim = rangeVector->GetValue(Tim,isOut); - } - if ( i==(TotBin-1)) - Rip = Ri ; - else - { - Tip = Ti*RTable ; - Rip = rangeVector->GetValue(Tip,isOut); - } - Value = (w1*Rip + w2*Ri + w3*Rim)/Ti; - - aVector->PutValue(i,Value); - Ti = RTable*Ti ; - } - theRangeCoeffBTable->insert(aVector); - } -} - -void G4VIhEnergyLoss::BuildRangeCoeffCTable( - const G4ParticleDefinition& aParticleType) -// Build tables of coefficients for the energy loss calculation -// create table for coefficients "C" -{ - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - G4double Charge = aParticleType.GetPDGCharge() ; - - if(Charge>0.) - { - if(thepRangeCoeffCTable) - { thepRangeCoeffCTable->clearAndDestroy(); - delete thepRangeCoeffCTable; } - thepRangeCoeffCTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffCTable = thepRangeCoeffCTable ; - theRangeTable = theRangepTable ; - } - else - { - if(thepbarRangeCoeffCTable) - { thepbarRangeCoeffCTable->clearAndDestroy(); - delete thepbarRangeCoeffCTable; } - thepbarRangeCoeffCTable = new G4PhysicsTable(numOfMaterials); - theRangeCoeffCTable = thepbarRangeCoeffCTable ; - theRangeTable = theRangepbarTable ; - } - - G4double R2 = RTable*RTable ; - G4double R1 = RTable+1.; - G4double w = R1*(RTable-1.)*(RTable-1.); - G4double w1 = 1./w , w2 = -RTable*R1/w , w3 = RTable*R2/w ; - G4double Ti , Tim , Tip , Ri , Rim , Rip , Value ; - G4bool isOut; - - // loop for materials - for (G4int J=0; JGetValue(Ti,isOut) ; - if ( i==0 ) - Rim = 0. ; - else - { - Tim = Ti/RTable ; - Rim = rangeVector->GetValue(Tim,isOut); - } - if ( i==(TotBin-1)) - Rip = Ri ; - else - { - Tip = Ti*RTable ; - Rip = rangeVector->GetValue(Tip,isOut); - } - Value = w1*Rip + w2*Ri + w3*Rim ; - - aVector->PutValue(i,Value); - Ti = RTable*Ti ; - } - theRangeCoeffCTable->insert(aVector); - } -} - -void G4VIhEnergyLoss::BuildInverseRangeTable( - const G4ParticleDefinition& aParticleType) -// Build inverse table of the range table -{ - G4double SmallestRange,BiggestRange ; - G4bool isOut ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - if(&aParticleType == G4Proton::Proton()) - { - if(theInverseRangepTable) - { theInverseRangepTable->clearAndDestroy(); - delete theInverseRangepTable; } - theInverseRangepTable = new G4PhysicsTable(numOfMaterials); - theInverseRangeTable = theInverseRangepTable ; - theRangeTable = theRangepTable ; - theDEDXTable = theDEDXpTable ; - theRangeCoeffATable = thepRangeCoeffATable ; - theRangeCoeffBTable = thepRangeCoeffBTable ; - theRangeCoeffCTable = thepRangeCoeffCTable ; - } - - if(&aParticleType == G4AntiProton::AntiProton()) - { - if(theInverseRangepbarTable) - { theInverseRangepbarTable->clearAndDestroy(); - delete theInverseRangepbarTable; } - theInverseRangepbarTable = new G4PhysicsTable(numOfMaterials); - theInverseRangeTable = theInverseRangepbarTable ; - theRangeTable = theRangepbarTable ; - theDEDXTable = theDEDXpbarTable ; - theRangeCoeffATable = thepbarRangeCoeffATable ; - theRangeCoeffBTable = thepbarRangeCoeffBTable ; - theRangeCoeffCTable = thepbarRangeCoeffCTable ; - } - - // loop for materials - for (G4int J=0; J - GetValue(LowestKineticEnergy,isOut) ; - BiggestRange = (*theRangeTable)(J)-> - GetValue(HighestKineticEnergy,isOut) ; - G4PhysicsLogVector* aVector; - aVector = new G4PhysicsLogVector(SmallestRange, - BiggestRange,TotBin); - - InvertRangeVector(J, aVector); - - theInverseRangeTable->insert(aVector); - } -} - -void G4VIhEnergyLoss::InvertRangeVector(G4int materialIndex, - G4PhysicsLogVector* aVector) -// invert range vector for a material -{ - G4double LowEdgeRange,A,B,C,discr,KineticEnergy ; - G4double Tbin = LowestKineticEnergy/RTable ; - G4double rangebin = 0.0 ; - G4int binnumber = -1 ; - G4bool isOut ; - - //loop for range values - for( G4int i=0; iGetLowEdgeEnergy(i) ; //i.e. GetLowEdgeValue(i) - if( rangebin < LowEdgeRange ) - { - do - { - binnumber += 1 ; - Tbin *= RTable ; - rangebin = (*theRangeTable)(materialIndex)->GetValue(Tbin,isOut) ; - } - while ((rangebin < LowEdgeRange) && (binnumber < TotBin )) ; - } - - if(binnumber == 0) - KineticEnergy = LowestKineticEnergy ; - else if(binnumber == TotBin-1) - KineticEnergy = HighestKineticEnergy ; - else - { - A = (*(*theRangeCoeffATable)(materialIndex))(binnumber-1) ; - B = (*(*theRangeCoeffBTable)(materialIndex))(binnumber-1) ; - C = (*(*theRangeCoeffCTable)(materialIndex))(binnumber-1) ; - if(A==0.) - KineticEnergy = (LowEdgeRange -C )/B ; - else - { - discr = B*B - 4.*A*(C-LowEdgeRange); - discr = discr>0. ? sqrt(discr) : 0.; - KineticEnergy = 0.5*(discr-B)/A ; - } - } - - aVector->PutValue(i,KineticEnergy) ; - } -} - -G4double G4VIhEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, - G4Material *aMaterial) -{ - // returns the Step limit = range ! - // dRoverRange is the max. allowed relative range loss in one step - // it calculates dEdx and the range as well.... - - G4double KineticEnergy,StepLimit; - - G4double Charge = aParticle->GetDefinition()->GetPDGCharge() ; - - KineticEnergy = aParticle->GetKineticEnergy(); - - G4double massratio=proton_mass_c2/ - aParticle->GetDefinition()->GetPDGMass() ; - - G4double Tscaled= KineticEnergy*massratio ; - G4double ChargeSquare = Charge*Charge ; - - if(Charge>0.) - { - fRangeNow = G4EnergyLossTables::GetRange( theProton, - Tscaled,aMaterial) ; - fdEdx = G4EnergyLossTables::GetDEDX( theProton, - Tscaled,aMaterial) ; - } - else - { - fRangeNow = G4EnergyLossTables::GetRange( theAntiProton, - Tscaled,aMaterial) ; - fdEdx = G4EnergyLossTables::GetDEDX( theAntiProton, - Tscaled,aMaterial) ; - } - fdEdx *= ChargeSquare ; - fRangeNow /= (ChargeSquare*massratio) ; - - // compute the Step limit .............. - - StepLimit = fRangeNow ; - - return StepLimit ; -} - -G4VParticleChange* G4VIhEnergyLoss::AlongStepDoIt( - const G4Track& trackData,const G4Step& stepData) - // compute the energy loss after a step -{ - const G4DynamicParticle* aParticle; - G4Material* aMaterial; - G4bool isOut; - G4double E,finalT,Step,Charge,ChargeSquare,MeanLoss ; - G4int index ; - - // do not track further if kin.energy < 1. eV - const G4double MinKineticEnergy = 1.*eV ; - - const G4double stepoverrangelimit = 0.02 ; - - aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; - - // get the actual (true) Step length from stepData - Step = stepData.GetStepLength() ; - - // there is no loss for Step=0. ! - if( Step == 0.) - return &aParticleChange ; - - aParticle = trackData.GetDynamicParticle() ; - Charge = aParticle->GetDefinition()->GetPDGCharge() ; - ChargeSquare = Charge*Charge ; - - index = aMaterial->GetIndex() ; - E = aParticle->GetKineticEnergy() ; - - if(E < MinKineticEnergy) - { - finalT = 0.; - MeanLoss = E ; - } - else - { - if(Step >= fRangeNow ) - { - finalT = 0.0; - MeanLoss = E ; - } - else if( E > HighestKineticEnergy) - { - MeanLoss = Step*fdEdx ; - if(MeanLoss > E) MeanLoss = E ; - - finalT = E - MeanLoss ; - } - else - { - if(Step>stepoverrangelimit*fRangeNow) - { - - G4double massratio=proton_mass_c2/ - aParticle->GetDefinition()->GetPDGMass() ; - - G4double rscaled= fRangeNow*massratio*ChargeSquare ; - G4double sscaled= Step *massratio*ChargeSquare ; - - if(Charge>0.) - { - MeanLoss = G4EnergyLossTables::GetPreciseEnergyFromRange( - theProton, - rscaled ,aMaterial) - - G4EnergyLossTables::GetPreciseEnergyFromRange( - theProton, - rscaled-sscaled,aMaterial) ; - } - else - { - MeanLoss = G4EnergyLossTables::GetPreciseEnergyFromRange( - theAntiProton, - rscaled ,aMaterial) - - G4EnergyLossTables::GetPreciseEnergyFromRange( - theAntiProton, - rscaled-sscaled,aMaterial) ; - } - - MeanLoss /= (massratio*ChargeSquare) ; - - } - else - { - MeanLoss = Step*fdEdx ; - } - finalT = E - MeanLoss ; - } - } - - // now the loss with fluctuation - if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowestKineticEnergy)) - { - MeanLoss /= ChargeSquare ; - finalT = E-GetLossWithFluct(aParticle,aMaterial,ChargeSquare,MeanLoss,Step)*ChargeSquare ; - if (finalT < 0.) finalT = 0. ; - } - - // kill the particle if the kinetic energy <= 0 - if (finalT <= 0. ) - { - finalT = 0.; - if(aParticle->GetDefinition()->GetParticleName() == "proton") - aParticleChange.SetStatusChange(fStopAndKill); - else - aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetNumberOfSecondaries(0); - aParticleChange.SetEnergyChange( finalT ) ; - aParticleChange.SetLocalEnergyDeposit(E-finalT) ; - - return &aParticleChange ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double G4VIhEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double ChargeSquare, - G4double MeanLoss, - G4double step ) -{ -// calculate actual loss from the mean loss -// The model used to get the fluctuation is essentially the same as in Glandz in Geant3. - - static const G4double minLoss = 1.*eV ; - static const G4double probLim = 0.01 ; - static const G4double sumaLim = -log(probLim) ; - static const G4double alim=10.; - static const G4double kappa = 10. ; - static const G4double factor = twopi_mc2_rcl2 ; - - - // check if the material has changed ( cache mechanism) - - if (aMaterial != lastMaterial) - { - lastMaterial = aMaterial; - imat = aMaterial->GetIndex(); - f1Fluct = aMaterial->GetIonisation()->GetF1fluct(); - f2Fluct = aMaterial->GetIonisation()->GetF2fluct(); - e1Fluct = aMaterial->GetIonisation()->GetEnergy1fluct(); - e2Fluct = aMaterial->GetIonisation()->GetEnergy2fluct(); - e1LogFluct = aMaterial->GetIonisation()->GetLogEnergy1fluct(); - e2LogFluct = aMaterial->GetIonisation()->GetLogEnergy2fluct(); - rateFluct = aMaterial->GetIonisation()->GetRateionexcfluct(); - ipotFluct = aMaterial->GetIonisation()->GetMeanExcitationEnergy(); - ipotLogFluct = aMaterial->GetIonisation()->GetLogMeanExcEnergy(); - } - G4double threshold,w1,w2,C, - beta2,suma,e0,loss,lossc ,w,electronDensity; - G4double a1,a2,a3; - G4int p1,p2,p3; - G4int nb; - G4double Corrfac, na,alfa,rfac,namean,sa,alfa1,ea,sea; - G4double dp1,dp3; - G4double siga ; - - // shortcut for very very small loss - if(MeanLoss < minLoss) return MeanLoss ; - - // get particle data - G4double Tkin = aParticle->GetKineticEnergy(); - ParticleMass = aParticle->GetMass() ; - - threshold =((*G4Electron::Electron()).GetCutsInEnergy())[imat]; - G4double rmass = electron_mass_c2/ParticleMass; - G4double tau = Tkin/ParticleMass, tau1 = tau+1., tau2 = tau*(tau+2.); - G4double Tm = 2.*electron_mass_c2*tau2/(1.+2.*tau1*rmass+rmass*rmass); - - if (Tm <= ipotFluct) Tm = ipotFluct ; - - if(Tm > threshold) Tm = threshold; - beta2 = tau2/(tau1*tau1); - - // Gaussian fluctuation ? - if(MeanLoss >= kappa*Tm) - { - electronDensity = aMaterial->GetElectronDensity() ; - siga = sqrt(MeanLoss*Tm*(0.5-0.25*beta2)*step* - factor*electronDensity*ChargeSquare/beta2) ; - loss = G4RandGauss::shoot(MeanLoss,siga) ; - if(loss < 0.) loss = 0. ; - return loss ; - } - - w1 = Tm/ipotFluct; - w2 = log(2.*electron_mass_c2*tau2); - - C = MeanLoss*(1.-rateFluct)/(w2-ipotLogFluct-beta2); - - a1 = C*f1Fluct*(w2-e1LogFluct-beta2)/e1Fluct; - a2 = C*f2Fluct*(w2-e2LogFluct-beta2)/e2Fluct; - if(Tm > ipotFluct) - a3 = rateFluct*MeanLoss*(Tm-ipotFluct)/(ipotFluct*Tm*log(w1)); - else - { - a1 /= 1.-rateFluct ; - a2 /= 1.-rateFluct ; - a3 = 0. ; - } - - suma = a1+a2+a3; - - loss = 0. ; - - if(suma < sumaLim) // very small Step - { - e0 = aMaterial->GetIonisation()->GetEnergy0fluct(); - - if(Tm == ipotFluct) - { - a3 = MeanLoss/e0; - - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - p3 = G4Poisson(a3); - - loss = p3*e0 ; - - if(p3 > 0) - loss += (1.-2.*G4UniformRand())*e0 ; - - } - else - { - Tm = Tm-ipotFluct+e0 ; - a3 = MeanLoss*(Tm-e0)/(Tm*e0*log(Tm/e0)); - - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - else - p3 = G4Poisson(a3); - - if(p3 > 0) - { - w = (Tm-e0)/Tm ; - if(p3 > nmaxCont2) - { - dp3 = G4float(p3) ; - Corrfac = dp3/G4float(nmaxCont2) ; - p3 = nmaxCont2 ; - } - else - Corrfac = 1. ; - - for(G4int i=0; ialim) - { - siga=sqrt(a1) ; - p1 = G4std::max(0,int(G4RandGauss::shoot(a1,siga)+0.5)); - } - else - p1 = G4Poisson(a1); - - // excitation type 2 - if(a2>alim) - { - siga=sqrt(a2) ; - p2 = G4std::max(0,int(G4RandGauss::shoot(a2,siga)+0.5)); - } - else - p2 = G4Poisson(a2); - - loss = p1*e1Fluct+p2*e2Fluct; - - // smearing to avoid unphysical peaks - if(p2 > 0) - - loss += (1.-2.*G4UniformRand())*e2Fluct; - else if (loss>0.) - loss += (1.-2.*G4UniformRand())*e1Fluct; - - // ionisation ....................................... - if(a3 > 0.) - { - if(a3>alim) - { - siga=sqrt(a3) ; - p3 = G4std::max(0,int(G4RandGauss::shoot(a3,siga)+0.5)); - } - else - p3 = G4Poisson(a3); - - lossc = 0.; - if(p3 > 0) - { - na = 0.; - alfa = 1.; - if (p3 > nmaxCont2) - { - dp3 = G4float(p3); - rfac = dp3/(G4float(nmaxCont2)+dp3); - namean = G4float(p3)*rfac; - sa = G4float(nmaxCont1)*rfac; - na = G4RandGauss::shoot(namean,sa); - if (na > 0.) - - { - alfa = w1*G4float(nmaxCont2+p3)/(w1*G4float(nmaxCont2)+G4float(p3)); - alfa1 = alfa*log(alfa)/(alfa-1.); - ea = na*ipotFluct*alfa1; - sea = ipotFluct*sqrt(na*(alfa-alfa1*alfa1)); - lossc += G4RandGauss::shoot(ea,sea); - } - } - - nb = G4int(G4float(p3)-na); - if (nb > 0) - { - w2 = alfa*ipotFluct; - w = (Tm-w2)/Tm; - for (G4int k=0; k* GenerateParticles(G4int Z, G4int shellId); + +private: + + // Decides wether a radiative transition is possible and, if it is, + // returns the identity of the starting shell for the transition + const G4int SelectTypeOfTransition(G4int Z, G4int shellId); + + // Generates a particle from a radiative transition and returns it + G4DynamicParticle* GenerateFluorescence(G4int Z, G4int shellId,G4int provShellId); + + // Dummy function: when invowed returns a null pointer + G4DynamicParticle* GenerateAuger(G4int Z, G4int shellId); + + // Data member which stores the shells to be filled by + // the radiative transition + G4int newShellId; + +}; + +#endif + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh b/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh new file mode 100644 index 0000000000..60be78df0b --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4AtomicShell.hh @@ -0,0 +1,75 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4AtomicShell.hh,v 1.2 ???? +// GEANT4 tag $Name: geant4-04-00 $ +// +// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// Alfonso Mantero (Alfonso.Mantero@ge.infn.it) +// +// History: +// ----------- +// +// 16 Sept 2001 Modofied according to a design iteration in the +// LowEnergy category +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics, a data container +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + + +#ifndef G4AtomicShell_h +#define G4AtomicShell_h 1 +#include "globals.hh" + +class G4AtomicShell { + +public: + + // The data and the methods of this class are relative to + // a given shell + + G4AtomicShell(G4int,G4double); + + ~G4AtomicShell(); + + // Returns the binding energy of the shell + G4double BindingEnergy() const; + + // Returns the id of the shell + G4int ShellId() const; + +private: + + G4int identifier; + G4double bindingEnergy; + +}; + +#endif + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4AtomicTransition.hh b/source/processes/electromagnetic/lowenergy/include/G4AtomicTransition.hh new file mode 100644 index 0000000000..957da276f7 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4AtomicTransition.hh @@ -0,0 +1,95 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4AtomicTransition.hh,v 1.2 ???? +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 16 Sept 2001 Modofied according to a design iteration in the +// LowEnergy category +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics, a data container +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + + +#ifndef G4AtomicTransition_h +#define G4AtomicTransition_h 1 + +#include "G4DataVector.hh" +#include "globals.hh" +#include "g4std/vector" + +class G4AtomicTransition { + +public: + + G4AtomicTransition(G4int,const G4std::vector&,const G4DataVector&, + const G4DataVector&); + ~G4AtomicTransition(); + + // All the data stored and provided by this class are relative to a + // given vacancy, whose identity is provided by the FinalShellId() method, + // in an atom of a given material + + // Returns the identities of the originating shells for the transitions + const G4std::vector& OriginatingShellIds() const; + + // Return the energies of the transitions + const G4DataVector& TransitionEnergies() const; + + // Return the probabilities of the transitions + const G4DataVector& TransitionProbabilities() const; + + // Return the identity if the vacancy + const G4int FinalShellId() const; + + // Given the index of the originating shells returns its identity + G4int OriginatingShellId(G4int index) const; + + // Given the index of the originating shells returns the energy + // of the transition starting from it + G4double TransitionEnergy(G4int index) const; + + // Given the index of the originating shells returns the probability + // of the transition starting from it + G4double TransitionProbability(G4int index) const; + +private: + + G4int finalShellId; + G4std::vector originatingShellIds; + G4DataVector transitionEnergies; + G4DataVector transitionProbabilities; + +}; + +#endif + diff --git a/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh b/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh new file mode 100644 index 0000000000..d89018d010 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4AtomicTransitionManager.hh @@ -0,0 +1,121 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4AtomicTransitionManager.hh,v 1.2 ???? +// GEANT4 tag $Name: geant4-04-00 $ +// +// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// Alfonso Mantero (Alfonso.Mantero@ge.infn.it) +// +// History: +// ----------- +// +// 16 Sept 2001 EG Modified according to a design iteration in the +// LowEnergy category +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics, fills and manages G4AtomicShell +// and G4AtomicTransition objects +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4AtomicTransitionManager_h +#define G4AtomicTransitionManager_h 1 + +#include "G4ShellData.hh" +#include "G4FluoData.hh" +#include "G4AtomicTransition.hh" +#include "G4AtomicShell.hh" +#include "g4std/map" +#include "g4std/vector" +#include "globals.hh" + +// This class is a singleton +class G4AtomicTransitionManager { + +public: + + // The only way to get an instance of this class is to call the + // function Instance() + static G4AtomicTransitionManager* Instance(); + + // Z is the atomic number of the element, shellIndex is the + // index (in EADL) of the shell + const G4AtomicShell* Shell(G4int Z, size_t shellIndex); + + // Z is the atomic number of the element, shellIndex is the + // index (in EADL) of the final shell for the transition + const G4AtomicTransition* ReachableShell(G4int Z, size_t shellIndex); + + // This function returns the number of shells of the element + // whose atomic number is Z + G4int NumberOfShells(G4int Z); + + // This function returns the number of those shells of the element + // whose atomic number is Z which are reachable through a radiative + // transition + G4int NumberOfReachableShells(G4int Z); + + // Gives the sum of the probabilities of radiative transition towards the + // shell whose index is shellIndex + G4double TotalRadiativeTransitionProbability(G4int Z, size_t shellIndex); + + // Gives the sum of the probabilities of non radiative transition from the + // shell whose index is shellIndex + G4double TotalNonRadiativeTransitionProbability(G4int Z, size_t shellIndex); + +protected: + + G4AtomicTransitionManager(G4int minZ = 1, G4int maxZ = 99, + G4int limitInfTable = 6, G4int limitSupTable=100 ); + ~G4AtomicTransitionManager(); + +private: + + static G4AtomicTransitionManager* instance; + + // the first element of the map is the atomic number Z. + // the second element is a vector of G4AtomicShell*. + G4std::map,G4std::less > shellTable; + + // the first element of the map is the atomic number Z. + // the second element is a vector of G4AtomicTransition*. + G4std::map,G4std::less > transitionTable; + + // Minimum and maximum Z in EADL table containing identities and binding + // energies of shells + G4int zMin; + G4int zMax; + + // Minimum and maximum Z in EADL table containing identities, transition + // energies and transition probabilities of shells + G4int infTableLimit; + G4int supTableLimit; + + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungCrossSectionHandler.hh b/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungCrossSectionHandler.hh new file mode 100644 index 0000000000..59f989b5f5 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungCrossSectionHandler.hh @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4BremsstrahlungCrossSectionHandler +// +// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch) +// +// Creation date: 17 September 2001 +// +// Modified: +// +// ------------------------------------------------------------------- + +// Class Description: +// +// Provides build cross sections with cut for LowEnergyBremsstrahlung +// +// Class Description: End + +// ------------------------------------------------------------------- +// + +#ifndef G4BremsstrahlungCrossSectionHandler_h +#define G4BremsstrahlungCrossSectionHandler_h 1 + +#include "G4VCrossSectionHandler.hh" +#include "G4VEnergySpectrum.hh" +#include "globals.hh" + +class G4DataVector; +class G4VEMDataSet; +class G4VDataSetAlgorithm; + +class G4BremsstrahlungCrossSectionHandler : public G4VCrossSectionHandler +{ + +public: + + G4BremsstrahlungCrossSectionHandler(const G4VEnergySpectrum* spectrum, + G4VDataSetAlgorithm* interpolation); + + ~G4BremsstrahlungCrossSectionHandler(); + +protected: + + G4std::vector* BuildCrossSectionsForMaterials(const G4DataVector& energyVector, + const G4DataVector* energyCuts); + + +private: + + const G4VEnergySpectrum* theBR; + + G4VDataSetAlgorithm* interp; +}; + +#endif + diff --git a/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh b/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh new file mode 100644 index 0000000000..ef57c53d4e --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4BremsstrahlungParameters.hh @@ -0,0 +1,103 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4BremsstrahlungParameters.hh,v 1.6 2001/11/29 19:01:44 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// V. Ivanchenko (Vladimir.Ivantchenko@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// Values of the parameters from A. Forti's fit +// 12.09.01 V.Ivanchenko Add activeZ and paramA +// 25.09.01 V.Ivanchenko Add parameter C and change interface to B +// 29.11.01 V.Ivanchenko Parametrisation is updated +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Load and access to parameters for LowEnergyBremsstrahlung from EEDL +// database. Parametrisation is described in Physics Reference Manual +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4BREMSSTRAHLUNGPARAMETERS_HH +#define G4BREMSSTRAHLUNGPARAMETERS_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "g4std/map" + +class G4VEMDataSet; +class G4VDataSetAlgorithm; + +class G4BremsstrahlungParameters { + +public: + + G4BremsstrahlungParameters(G4int minZ = 1, G4int maxZ = 99); + + ~G4BremsstrahlungParameters(); + + G4double Parameter(G4int parameterIndex, G4int Z, G4double energy) const; + + G4double ParameterC(G4int index) const; + + void PrintData() const; + +private: + + // hide assignment operator + G4BremsstrahlungParameters(const G4BremsstrahlungParameters&); + G4BremsstrahlungParameters & operator=(const G4BremsstrahlungParameters &right); + + void LoadData(); + + G4std::map > param; + + G4DataVector paramC; + G4DataVector activeZ; + + G4int zMin; + G4int zMax; + + size_t length; + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh new file mode 100644 index 0000000000..ef6f474ec1 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CompositeEMDataSet.hh @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4CompositeEMDataSet.hh,v 1.3 2001/10/08 15:27:01 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Composite data set for an electromagnetic physics process +// A strategy pattern is used to encapsulate algorithms for data interpolation +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4COMPOSITEEMDATASET_HH +#define G4COMPOSITEEMDATASET_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "G4VEMDataSet.hh" +#include "g4std/vector" + +class G4EMDataSet; +class G4VDataSetAlgorithm; + +class G4CompositeEMDataSet : public G4VEMDataSet +{ +public: + + G4CompositeEMDataSet(G4VDataSetAlgorithm* interpolation, + G4double unitE = MeV, G4double unitData = barn, + G4int minZ = 1, G4int maxZ = 99); + + G4CompositeEMDataSet(const G4String& dataFile, + G4VDataSetAlgorithm* interpolation, + G4double unitE = MeV, G4double unitData = barn, + G4int minZ = 1, G4int maxZ = 99); + + ~G4CompositeEMDataSet(); + + G4double FindValue(G4double e, G4int Z = 0) const; + + const G4VEMDataSet* GetComponent(G4int i) const { return components[i]; } + + void AddComponent(G4VEMDataSet* component); + + size_t NumberOfComponents() const { return nComponents; } + + void PrintData() const; + + const G4DataVector& GetEnergies(G4int i) const; + const G4DataVector& GetData(G4int i) const; + +private: + + void LoadData(const G4String& fileName); + + G4VDataSetAlgorithm* algorithm; + + G4std::vector components; + size_t nComponents; + + G4double unit1; + G4double unit2; + + G4int zMin; + G4int zMax; +}; + +#endif + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh new file mode 100644 index 0000000000..d555c99309 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CrossSectionHandler.hh @@ -0,0 +1,89 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4CrossSectionHandler.hh,v 1.6 2001/10/05 18:25:19 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 1 Aug 2001 MGP Created +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Data set manager for an electromagnetic physics process +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4CROSSSECTIONHANDLER_HH +#define G4CROSSSECTIONHANDLER_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "g4std/map" +#include "g4std/vector" +#include "G4VCrossSectionHandler.hh" + +class G4VDataSetAlgorithm; +class G4VEMDataSet; +class G4Material; +class G4Element; + +class G4CrossSectionHandler : public G4VCrossSectionHandler { + +public: + + G4CrossSectionHandler(); + + ~G4CrossSectionHandler(); + + +protected: + + virtual G4std::vector* BuildCrossSectionsForMaterials(const G4DataVector& energyVector, + const G4DataVector* energyCuts = 0); + +private: + + // Hide copy constructor and assignment operator + G4CrossSectionHandler(const G4CrossSectionHandler&); + G4CrossSectionHandler & operator=(const G4CrossSectionHandler &right); + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4CutsPerMaterialWarning.hh b/source/processes/electromagnetic/lowenergy/include/G4CutsPerMaterialWarning.hh new file mode 100644 index 0000000000..3c4e35a5c2 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4CutsPerMaterialWarning.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4CutsPerMaterialWarning.hh,v 1.1 2001/11/07 22:38:47 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 7 Nov 2001 MGP Created +// +// ------------------------------------------------------------------- +// Class description: +// Functor class to print a warning if the deprecated, unsupported feature +// of having different range cuts for different materials is used +// Will be removed when properly designed "range cuts by region" +// will be available in Geant4 +// Further documentation available from http://www.ge.infn.it/geant4/lowE/ + +// ------------------------------------------------------------------- + +#ifndef G4CUTSPERMATERIALWARNING_HH +#define G4CUTSPERMATERIALWARNING_HH 1 + +#include "globals.hh" + +class G4ParticleDefinition; +class G4Material; + +class G4CutsPerMaterialWarning +{ +public: + + G4CutsPerMaterialWarning() { } + + ~G4CutsPerMaterialWarning() { } + + void PrintWarning(const G4ParticleDefinition* particle) const; + +private: + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh new file mode 100644 index 0000000000..49e5dac361 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4EMDataSet.hh @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4EMDataSet.hh,v 1.2 2001/10/08 07:45:32 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Data set for an electromagnetic physics process +// A strategy pattern is used to encapsulate algorithms for data interpolation +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4EMDATASET_HH +#define G4EMDATASET_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "G4VEMDataSet.hh" + +class G4VDataSetAlgorithm; + +class G4EMDataSet : public G4VEMDataSet { + +public: + + G4EMDataSet(G4int Z, + G4DataVector* points, + G4DataVector* values, + G4VDataSetAlgorithm* interpolation, + G4double unitE = MeV, G4double unitData = barn); + + G4EMDataSet(G4int Z, + const G4String& dataFile, + G4VDataSetAlgorithm* interpolation, + G4double unitE = MeV, G4double unitData = barn); + + ~G4EMDataSet(); + + G4double FindValue(G4double e, G4int id = 0) const; + + void PrintData() const; + + const G4DataVector& GetEnergies(G4int i) const { return *energies; } + const G4DataVector& GetData(G4int i) const { return *data; } + +private: + + void LoadData(const G4String& dataFile); + + G4int FindBinLocation(G4double energy) const; + + G4int z; + + G4DataVector* energies; // Owned pointer + G4DataVector* data; // Owned pointer + + G4VDataSetAlgorithm* algorithm; // Owned pointer + + G4double unit1; + G4double unit2; + + size_t numberOfBins; + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4FluoData.hh b/source/processes/electromagnetic/lowenergy/include/G4FluoData.hh new file mode 100644 index 0000000000..19fddce620 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4FluoData.hh @@ -0,0 +1,101 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** + +// +// +// $Id: G4FluoData.hh,v 1.1 ????? +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 16 Sept 2001 First committed to cvs +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Fluorescence data set: shell identifiers, transition probabilities, +// transition energies +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4FLUODATA_HH +#define G4FLUODATA_HH 1 + +#include "globals.hh" +#include "g4std/vector" +#include "g4std/map" + + +class G4DataVector; + +class G4FluoData +{ +public: + + G4FluoData(); + + ~G4FluoData(); + + // The method returns the number of shells in wich a + // vacancy can be filled by a radiative transition + size_t NumberOfVacancies() const; + + // Given the index of the vacancy returns its identity + G4int VacancyId(G4int vacancyIndex) const; + + // Given the index of a vacancy returns the number of + //shells starting from wich an electrons can fill the vacancy + size_t NumberOfTransitions(G4int vacancyIndex) const; + + // Given the indexes of the starting and final shells for the + // transition, returns the identity of the starting one + G4int StartShellId(G4int initIndex,G4int vacancyIndex); + + // Given the indexes of the starting and final shells for the + // transition, returns the transition energy + G4double StartShellEnergy(G4int initIndex,G4int vacancyIndex); + + // Given the indexes of the starting and final shells for the + // transition, returns the probability of this transition + G4double StartShellProb(G4int initIndex,G4int vacancyIndex); + + void LoadData( G4int Z); + + void PrintData(); + +private: + + G4std::map > idMap; + G4std::map > energyMap; + G4std::map > probabilityMap; + G4std::vector nInitShells; + G4int numberOfVacancies; + +}; + +#endif + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh b/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh new file mode 100644 index 0000000000..d5cdb46843 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4LinInterpolation.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4LinInterpolation.hh,v 1.1 2001/11/29 19:01:44 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- +// Class description: +// Log-Log interpolation of a data set +// Part of a strategy pattern to encapsulate algorithms for interpolation of data sets +// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html + +// ------------------------------------------------------------------- + +#ifndef G4LININTERPOLATION_HH +#define G4LININTERPOLATION_HH 1 + +#include "globals.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4DataVector.hh" + +class G4LinInterpolation : public G4VDataSetAlgorithm { + +public: + + G4LinInterpolation(); + + ~G4LinInterpolation(); + + G4double Calculate(G4double point, G4int bin, + const G4DataVector& energies, + const G4DataVector& data) const; + + virtual G4VDataSetAlgorithm* Clone() const { return new G4LinInterpolation; } + +private: + + + // Hide copy constructor and assignment operator + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh b/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh new file mode 100644 index 0000000000..8c3034818e --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4LogLogInterpolation.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4LogLogInterpolation.hh,v 1.2 2001/10/08 07:45:33 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- +// Class description: +// Log-Log interpolation of a data set +// Part of a strategy pattern to encapsulate algorithms for interpolation of data sets +// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html + +// ------------------------------------------------------------------- + +#ifndef G4LOGLOGINTERPOLATION_HH +#define G4LOGLOGINTERPOLATION_HH 1 + +#include "globals.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4DataVector.hh" + +class G4LogLogInterpolation : public G4VDataSetAlgorithm { + +public: + + G4LogLogInterpolation(); + + ~G4LogLogInterpolation(); + + G4double Calculate(G4double point, G4int bin, + const G4DataVector& energies, + const G4DataVector& data) const; + + virtual G4VDataSetAlgorithm* Clone() const { return new G4LogLogInterpolation; } + +private: + + + // Hide copy constructor and assignment operator + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh index 95be7128e6..d87652ac1b 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.hh @@ -20,36 +20,48 @@ // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4LowEnergyBremsstrahlung.hh,v 1.16.2.2 2001/06/28 20:19:23 gunter Exp $ -// GEANT4 tag $Name: $ -// // -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland +// ------------------------------------------------------------------- +// $Id: G4LowEnergyBremsstrahlung.hh,v 1.28 2001/11/29 22:47:27 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------ G4LowEnergyBremsstrahlung physics process ------ -// by A.Forti 1999/03/27 19:18:13 -// -// 18.04.2000 V.Lefebure -// - First implementation of continuous energy loss. +// Author: A. Forti // +// History: +// ----------- +// 02 Mar 1999 A. Forti 1st implementation +// 27 Sep 2001 V. Ivanchenko Major revision according to a design iteration +// 10 Oct 2001 M.G. Pia Revision to improve code quality +// and consistency with design +// 29 Nov 2001 V.Ivanchenko New parametrisation of EEDL data // +// ------------------------------------------------------------------- + // Class description: -// Low Energy electromagnetic process, Bremsstrahlung +// Low Energy electromagnetic process, electron Bremsstrahlung +// based on the data of the EEDL database. Details are described +// in the Physics Reference Manual. // Further documentation available from http://www.ge.infn.it/geant4/lowE -// ************************************************************ +// -------------------------------------------------------------- -#ifndef G4LowEnergyBremsstrahlung_h -#define G4LowEnergyBremsstrahlung_h 1 + +#ifndef G4LOWENERGYBREMSSTRAHLUNG_HH +#define G4LOWENERGYBREMSSTRAHLUNG_HH 1 #include "G4eLowEnergyLoss.hh" -#include "G4LowEnergyUtilities.hh" +#include "G4DataVector.hh" -class G4LowEnergyBremsstrahlung : public G4eLowEnergyLoss{ - +class G4Track; +class G4Step; +class G4ParticleDefinition; +class G4VParticleChange; +class G4VEMDataSet; +class G4VEnergySpectrum; +class G4VCrossSectionHandler; + +class G4LowEnergyBremsstrahlung : public G4eLowEnergyLoss +{ public: G4LowEnergyBremsstrahlung(const G4String& processName = "LowEnBrem"); @@ -57,80 +69,40 @@ public: ~G4LowEnergyBremsstrahlung(); G4bool IsApplicable(const G4ParticleDefinition&); - - void SetCutForLowEnSecPhotons(G4double); + + void BuildPhysicsTable(const G4ParticleDefinition& particleType); + + G4VParticleChange* PostStepDoIt(const G4Track& track, + const G4Step& step); + + void SetCutForLowEnSecPhotons(G4double cut); void PrintInfoDefinition(); - - void BuildPhysicsTable(const G4ParticleDefinition& ParticleType); - - void BuildLossTable(const G4ParticleDefinition& ParticleType); - + +protected: + G4double GetMeanFreePath(const G4Track& track, G4double previousStepSize, G4ForceCondition* condition ); - G4VParticleChange* PostStepDoIt(const G4Track& track, - const G4Step& step); - - - G4double GetEnergyLossWithCut(const G4double AtomicNumber, - const G4double KineticEnergy, - const G4double Tcut) ; - private: - - void BuildCrossSectionTable(); - void BuildMeanFreePathTable(); - void BuildATable(); - void BuildBTable(); - void BuildZVec(); - void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - void ComputepartialSumSigma(const G4double KineticEnergy, - const G4Material* aMaterial, - const G4double threshold); + // Hide copy constructor and assignment operator as private + G4LowEnergyBremsstrahlung(const G4LowEnergyBremsstrahlung& ); + G4LowEnergyBremsstrahlung& operator = (const G4LowEnergyBremsstrahlung& right); -private: + void BuildLossTable(const G4ParticleDefinition& ParticleType); - G4double ComputeA(const G4int Z,const G4double ElectKinEnergy); // interpolation - G4double ComputeB(const G4int Z,const G4double ElectKinEnergy); // parametrized formula - G4double GetCrossSection(const G4double AtomicNumber, - const G4double KineticEnergy) ; - G4double GetCrossSectionWithCut(const G4double AtomIndex, - const G4double IncEnergy, - const G4double CutEnergy); - - G4Element* SelectRandomAtom(G4Material* aMaterial) const; - - - G4LowEnergyBremsstrahlung & operator=(const G4LowEnergyBremsstrahlung &right); - - G4LowEnergyBremsstrahlung(const G4LowEnergyBremsstrahlung&); - -private: - - G4SecondLevel* theCrossSectionTable ; - G4PhysicsTable* theMeanFreePathTable ; - - G4SecondLevel* ATable; - G4FirstLevel* BTable; - G4DataVector* ZNumVec; - - G4LowEnergyUtilities util; - // partial sum of total crosssection - G4OrderedTable partialSumSigma; - - G4double lowestKineticEnergy; - G4double highestKineticEnergy; - - G4double lowEnergyCut; // lower limit of the energy sampling formula - G4int totBin; // number of bins in the tables - G4double cutForLowEnergySecondaryPhotons; + G4VCrossSectionHandler* crossSectionHandler; + G4VEMDataSet* theMeanFreePath; + G4VEnergySpectrum* energySpectrum; + // Lower limit for generation of gamma in this model + G4DataVector cutForSecondaryPhotons; + G4double cutForPhotons; }; -#include "G4LowEnergyBremsstrahlung.icc" + #endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.icc deleted file mode 100644 index b5b816f161..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyBremsstrahlung.icc +++ /dev/null @@ -1,143 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LowEnergyBremsstrahlung.icc,v 1.18.2.2 2001/06/28 20:19:23 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4LowEnergyBremsstrahlung physics process --------- -// by A.Forti 1999/03/27 -// -// 18.04.2000 V.Lefebure -// - First implementation of continuous energy loss. -// - Return an infinite MeanfreePath when cross-section = 0. -// *************************************************************** -#include "G4Gamma.hh" - -// - -inline G4bool G4LowEnergyBremsstrahlung::IsApplicable( - const G4ParticleDefinition& particle) -{ - return( (&particle == G4Electron::Electron()) - /////////////||(&particle == G4Positron::Positron()) - ); -} - -inline G4double G4LowEnergyBremsstrahlung::GetMeanFreePath(const G4Track& track, - G4double, - G4ForceCondition*) - -// gives the MeanFreePath in GEANT4 internal units - -{ - - const G4DynamicParticle* aDynamicParticle = track.GetDynamicParticle(); - G4double KineticEnergy = aDynamicParticle->GetKineticEnergy(); - G4Material* aMaterial = track.GetMaterial(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - const G4double* theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements() ; - G4double* CutInKineticEnergy = G4Gamma::Gamma()->GetCutsInEnergy() ; - G4double Threshold = CutInKineticEnergy[aMaterial->GetIndex()] ; - G4double MeanFreePath; -// G4bool isOutRange ; - - if (KineticEnergy < lowestKineticEnergy) - - ////MeanFreePath = DBL_MIN; - MeanFreePath = DBL_MAX; - - else { - - if (KineticEnergy > highestKineticEnergy) KineticEnergy = 0.99*highestKineticEnergy ; - - ///MeanFreePath = util.DataLogInterpolation(KineticEnergy, aMaterial->GetIndex(), theMeanFreePathTable); - /// MeanFreePath = (*theMeanFreePathTable)(aMaterial->GetIndex())-> - //// GetValue( KineticEnergy, isOutRange ); - G4double SIGMA = 0.; - G4int iel; - for (iel=0; ielGetZ(), - KineticEnergy, - Threshold); - } - MeanFreePath = SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; - } - - return MeanFreePath; -} - - -inline G4double G4LowEnergyBremsstrahlung::ComputeA(const G4int AtomicNumber,const G4double ElectronKinEnergy){ - - G4double aVal; - G4FirstLevel* oneAtomCoeff = (*ATable)[AtomicNumber-1]; - G4DataVector* ElectEnVec = (*oneAtomCoeff)[0]; - G4DataVector* AValueVec = (*oneAtomCoeff)[1]; - - aVal = util.DataLogInterpolation(ElectronKinEnergy, (*ElectEnVec), (*AValueVec)); - - if(AtomicNumber > 99){ - - aVal = 0; - } - - return aVal; -} - -inline G4double G4LowEnergyBremsstrahlung::ComputeB(const G4int AtomicNumber,const G4double ElectronKinEnergy){ - - G4double bVal; - G4double constTerm = (*(*BTable)[0])[AtomicNumber-1]; - G4double linearTerm = (*(*BTable)[1])[AtomicNumber-1]; - G4double logElectEn = log10(ElectronKinEnergy); - if(logElectEn > -5 && logElectEn < (-constTerm/linearTerm)){ - - bVal = linearTerm*logElectEn+constTerm; - } - else{ - - bVal = 0; - } - - if(AtomicNumber > 99){ - bVal = 0; - } - - return bVal; -} - - - - - - - - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh index f0cfd144ef..8112d37f93 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.hh @@ -19,85 +19,86 @@ // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** + +// $Id: G4LowEnergyCompton.hh,v 1.19 2001/12/13 12:04:13 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // +// Author: A. Forti +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // -// $Id: G4LowEnergyCompton.hh,v 1.11.2.2 2001/06/28 20:19:23 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1995 -// CERN Geneva Switzerland -// -// ------------ G4LowEnergyCompton physics process ------ -// by A.Forti 1999/03/02 +// History: +// ----------- +// 02 Mar 1999 A. Forti 1st implementation +// 1 Aug 2001 MGP Major revision according to a design iteration // +// ------------------------------------------------------------------- + // Class description: -// Low Energy electromagnetic process, Compton +// Low Energy Electromagnetic Physics, Compton Scattering // Further documentation available from http://www.ge.infn.it/geant4/lowE -// ************************************************************ +// ------------------------------------------------------------------- -#ifndef G4LowEnergyCompton_h -#define G4LowEnergyCompton_h +#ifndef G4LOWENERGYCOMPTON_HH +#define G4LOWENERGYCOMPTON_HH 1 -// Base Class Headers +#include "globals.hh" #include "G4VDiscreteProcess.hh" -// Contained Variables Headers -#include "G4LowEnergyUtilities.hh" -#include "G4Gamma.hh" +class G4Track; +class G4Step; +class G4ParticleDefinition; +class G4VParticleChange; +class G4VEMDataSet; +class G4VCrossSectionHandler; +class G4VRangeTest; -class G4LowEnergyCompton : public G4VDiscreteProcess{ +class G4LowEnergyCompton : public G4VDiscreteProcess { -private: - - // hide assignment operator as private - G4LowEnergyCompton& operator=(const G4LowEnergyCompton &right); - G4LowEnergyCompton(const G4LowEnergyCompton& ); - public: G4LowEnergyCompton(const G4String& processName ="LowEnCompton"); ~G4LowEnergyCompton(); - G4bool IsApplicable(const G4ParticleDefinition&); + G4bool IsApplicable(const G4ParticleDefinition& definition); - void BuildPhysicsTable(const G4ParticleDefinition& GammaType); + void BuildPhysicsTable(const G4ParticleDefinition& photon); + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + + // For testing purpose only + G4double DumpMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition) + { return GetMeanFreePath(aTrack, previousStepSize, condition); } + +protected: + G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition); - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); - -protected: +private: - void BuildScatteringFunctionTable(); - void BuildCrossSectionTable(); - void BuildMeanFreePathTable(); - void BuildZVec(); + // Hide copy constructor and assignment operator as private + G4LowEnergyCompton& operator=(const G4LowEnergyCompton& right); + G4LowEnergyCompton(const G4LowEnergyCompton& ); -private: + G4double lowEnergyLimit; // low energy limit applied to the process + G4double highEnergyLimit; // high energy limit applied to the process - G4Element* SelectRandomAtom(const G4DynamicParticle*, G4Material*); - - G4SecondLevel* theCrossSectionTable; - G4SecondLevel* theScatteringFunctionTable; - G4PhysicsTable* theMeanFreePathTable; - G4DataVector* ZNumVec; + G4VEMDataSet* meanFreePathTable; + G4VEMDataSet* scatterFunctionData; - G4double lowestEnergyLimit; // low energy limit of the crosssection data - G4double highestEnergyLimit; // high energy limit of the crosssection data - G4int numbBinTable; // number of bins in the data tables + G4VCrossSectionHandler* crossSectionHandler; - G4LowEnergyUtilities util; + G4VRangeTest* rangeTest; + + const G4double intrinsicLowEnergyLimit; // intrinsic validity range + const G4double intrinsicHighEnergyLimit; - G4double meanFreePath; // actual Mean Free Path (current medium) }; -#include "G4LowEnergyCompton.icc" - #endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh index 3e611acdb6..2a43e55df9 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.hh @@ -21,86 +21,92 @@ // ******************************************************************** // // -// $Id: G4LowEnergyGammaConversion.hh,v 1.9.2.2 2001/06/28 20:19:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LowEnergyGammaConversion.hh,v 1.14 2001/10/08 07:45:33 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland +// Author: A. Forti +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // -// ------------ G4LowEnergyGammaConversion physics process ------ -// by A.Forti 1999/03/02 +// History: +// ----------- +// 02 Mar 1999 A. Forti 1st implementation +// 14 Aug 2001 MGP Major revision according to a design iteration // +// ------------------------------------------------------------------- + // Class description: // Low Energy process, Photon conversion // Further documentation available from http://www.ge.infn.it/geant4/lowE -// ************************************************************ +// ------------------------------------------------------------------- + +#ifndef G4LOWENERGYGAMMACONVERSION_HH +#define G4LOWENERGYGAMMACONVERSION_HH 1 -#ifndef G4LowEnergyGammaConversion_h -#define G4LowEnergyGammaConversion_h 1 -// Base Class Headers #include "G4VDiscreteProcess.hh" -// Contained Variables Headers -#include "G4LowEnergyUtilities.hh" -#include "G4Gamma.hh" +#include "globals.hh" +#include "G4VDiscreteProcess.hh" +class G4Track; +class G4Step; +class G4ParticleDefinition; +class G4VParticleChange; +class G4VEMDataSet; +class G4VCrossSectionHandler; +class G4VRangeTest; + +class G4LowEnergyGammaConversion : public G4VDiscreteProcess { -class G4LowEnergyGammaConversion : public G4VDiscreteProcess - -{ -private: - // hide assignment operator as private - G4LowEnergyGammaConversion& operator=(const G4LowEnergyGammaConversion &right); - G4LowEnergyGammaConversion(const G4LowEnergyGammaConversion& ); - public: G4LowEnergyGammaConversion(const G4String& processName ="LowEnConversion"); ~G4LowEnergyGammaConversion(); - G4bool IsApplicable(const G4ParticleDefinition&); + G4bool IsApplicable(const G4ParticleDefinition& photon); - void BuildPhysicsTable(const G4ParticleDefinition& GammaType); + void BuildPhysicsTable(const G4ParticleDefinition& photon); + + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + + // For testing purpose only + G4double DumpMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition) + { return GetMeanFreePath(aTrack, previousStepSize, condition); } + +protected: + G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition); - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); - -protected: - - void BuildCrossSectionTable(); - void BuildMeanFreePathTable(); - void BuildZVec(); - -private: - - G4Element* SelectRandomAtom(const G4DynamicParticle*, G4Material*); - - static G4double ScreenFunction1(G4double ScreenVariable); - static G4double ScreenFunction2(G4double ScreenVariable); - private: - G4SecondLevel* theCrossSectionTable; - G4PhysicsTable* theMeanFreePathTable; + // Hide copy constructor and assignment operator as private + G4LowEnergyGammaConversion& operator=(const G4LowEnergyGammaConversion &right); + G4LowEnergyGammaConversion(const G4LowEnergyGammaConversion& ); - G4DataVector* ZNumVec; + G4double ScreenFunction1(G4double screenVariable); + G4double ScreenFunction2(G4double screenVariable); + + G4double lowEnergyLimit; // low energy limit applied to the process + G4double highEnergyLimit; // high energy limit applied to the process - G4double lowestEnergyLimit; - G4double highestEnergyLimit; - G4int NumbBinTable; + G4VEMDataSet* meanFreePathTable; + G4VCrossSectionHandler* crossSectionHandler; + + G4VRangeTest* rangeTest; + + const G4double intrinsicLowEnergyLimit; // intrinsic validity range + const G4double intrinsicHighEnergyLimit; + + const G4double smallEnergy; - G4double MeanFreePath; // actual Mean Free Path (current medium) - G4LowEnergyUtilities util; }; -#include "G4LowEnergyGammaConversion.icc" #endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.icc deleted file mode 100644 index e6bd9a80b5..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyGammaConversion.icc +++ /dev/null @@ -1,95 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LowEnergyGammaConversion.icc,v 1.11.2.2 2001/06/28 20:19:23 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4LowEnergyGammaConversion physics process --------- -// by A.Forti 1999/03/02 -// *************************************************************** - -inline G4bool G4LowEnergyGammaConversion::IsApplicable(const G4ParticleDefinition& particle) -{ - return ( &particle == G4Gamma::Gamma() ); -} - -inline G4double -G4LowEnergyGammaConversion::GetMeanFreePath(const G4Track& aTrack, G4double, G4ForceCondition*){ - - // returns the gamma mean free path in GEANT4 internal units - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - G4Material* aMaterial = aTrack.GetMaterial(); - - // G4bool isOutRange ; - - if (GammaEnergy < lowestEnergyLimit){ - MeanFreePath = DBL_MAX; - - } - else { - if(GammaEnergy > highestEnergyLimit) GammaEnergy = 0.99*highestEnergyLimit; - MeanFreePath = util.DataLogInterpolation(GammaEnergy, aMaterial->GetIndex(), theMeanFreePathTable); - - } - - return MeanFreePath; -} - -inline G4double -G4LowEnergyGammaConversion::ScreenFunction1(G4double ScreenVariable) - -// compute the value of the screening function 3*PHI1 - PHI2 - -{ - G4double screenVal; - - if (ScreenVariable > 1.) - screenVal = 42.24 - 8.368*log(ScreenVariable+0.952); - else - screenVal = 42.392 - ScreenVariable* (7.796 - 1.961*ScreenVariable); - - return screenVal; -} - -inline G4double -G4LowEnergyGammaConversion::ScreenFunction2(G4double ScreenVariable) - -// compute the value of the screening function 1.5*PHI1 - 0.5*PHI2 -{ - G4double screenVal; - - if (ScreenVariable > 1.) - screenVal = 42.24 - 8.368*log(ScreenVariable+0.952); - else - screenVal = 41.405 - ScreenVariable* (5.828 - 0.8945*ScreenVariable); - - return screenVal; -} - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh index e090d5e380..45ef4b8c93 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.hh @@ -20,154 +20,101 @@ // * statement, and all its terms. * // ******************************************************************** // +// ------------------------------------------------------------------- +// $Id: G4LowEnergyIonisation.hh,v 1.34 2001/11/29 22:47:27 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// $Id: G4LowEnergyIonisation.hh,v 1.20.2.2 2001/06/28 20:19:23 gunter Exp $ -// GEANT4 tag $Name: $ +// Author: A. Forti // -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// --- G4LowEnergyIonisation physics process for electrons -// by Alessandra Forti July 1999 -// ************************************************************ -// -// 07.04.2000 Veronique Lefebure + Laszlo Urban -// - First implemention of continuous energy loss -// 14/07/99: corrections , L.Urban -// 20/09/00 update fluctuations V.Ivanchenko +// History: +// ----------- +// 02 Mar 1999 A. Forti 1st implementation +// 27 Sep 2001 V. Ivanchenko Major revision according to a design iteration +// 10 Oct 2001 M.G. Pia Revision to improve code quality and +// consistency with design +// 18 Oct 2001 M.G. Pia Revision to improve code quality and +// consistency with design +// 29 Nov 2001 V.Ivanchenko New parametrisation of EEDL data // +// ------------------------------------------------------------------- + // Class description: -// Low Energy Electromagnetic process, electron Ionisation +// Low Energy electromagnetic process, electron Ionisation +// based on the data of the EEDL database. Details are described +// in the Physics Reference Manual. // Further documentation available from http://www.ge.infn.it/geant4/lowE -// ------------------------------------------------------------ - -#ifndef G4LowEnergyIonisation_h -#define G4LowEnergyIonisation_h 1 +// -------------------------------------------------------------- +#ifndef G4lOWENERGYIONISATION_HH +#define G4LOWENERGYIONISATION_HH 1 -// Base Class Headers #include "G4eLowEnergyLoss.hh" +#include "G4AtomicDeexcitation.hh" -// Contained Variables Headers -#include "G4LowEnergyUtilities.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" - -typedef G4FirstLevel oneShellTable; -typedef G4SecondLevel oneAtomTable; -typedef G4ThirdLevel allAtomTable; - -class G4LowEnergyIonisation : public G4eLowEnergyLoss{ +class G4Track; +class G4Step; +class G4ParticleDefinition; +class G4VParticleChange; +class G4VDataSetAlgorithm; +class G4ParticleChange; +class G4VEnergySpectrum; +class G4VCrossSectionHandler; +class G4ShellVacancy; +class G4VEMDataSet; +class G4LowEnergyIonisation : public G4eLowEnergyLoss +{ public: - - G4LowEnergyIonisation(const G4String& processName = "LowEnergyIoni"); + + G4LowEnergyIonisation(const G4String& processName = "LowEnergyIoni"); ~G4LowEnergyIonisation(); - G4bool IsApplicable(const G4ParticleDefinition&); - - void SetCutForLowEnSecPhotons(G4double); - - void SetCutForLowEnSecElectrons(G4double); - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - - G4double GetMeanFreePath(const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition ) ; - - inline G4double GetTransitionShell(G4int k){return(thePrimShVec[k]);}; - - G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& Step ) ; + G4bool IsApplicable(const G4ParticleDefinition&); void PrintInfoDefinition(); + + void BuildPhysicsTable(const G4ParticleDefinition& ParticleType); + + G4VParticleChange* PostStepDoIt(const G4Track& track, + const G4Step& step); + + void SetCutForLowEnSecPhotons(G4double cut); - G4double GetShellCrossSection(const G4double AtomicNumber, - const G4int subshellindex, - const G4double KineticEnergy) ; - G4double GetShellCrossSectionwithCut(const G4double AtomicNumber, - const G4int subshellindex, - const G4double KineticEnergy, - const G4double Tcut) ; - G4double GetShellEnergyLosswithCut(const G4double AtomicNumber, - const G4int subshellindex, - const G4double KineticEnergy, - const G4double Tcut) ; - void SetLowEnergyLimit(G4double val) {if(val > 0.0) lEnergyLimit = val;}; - - private: - - virtual G4double ComputeCrossSection(const G4double AtomicNumber, - const G4double IncEnergy); - G4double ComputeCrossSectionWithCut(const G4double AtomIndex, - const G4double IncEnergy, - const G4double CutEnergy); - G4double ComputeMicroscopicCrossSection(const G4double AtomIndex, - const G4double IncEnergy, - const G4double CutEnergy); - - void BuildLossTable(const G4ParticleDefinition& aParticleType); - void BuildShellCrossSectionTable(); - void BuildBindingEnergyTable(); - void BuildFluorTransitionTable(); - void BuildSamplingCoeffTable(); - void BuildZVec(); - void BuildLambdaTable(const G4ParticleDefinition& aParticleType); + void SetCutForLowEnSecElectrons(G4double cut); + +protected: + + G4double GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition ); + + virtual G4std::vector* DeexciteAtom(const G4Material* material, + G4double incidentEnergy, + G4double eLoss); private: + + // Hide copy constructor and assignment operator as private + G4LowEnergyIonisation(const G4LowEnergyIonisation& ); + G4LowEnergyIonisation& operator = (const G4LowEnergyIonisation& right); - // hide assignment operator - G4LowEnergyIonisation & operator=(const G4LowEnergyIonisation &right); - G4LowEnergyIonisation(const G4LowEnergyIonisation&); + void BuildLossTable(const G4ParticleDefinition& ParticleType); -private: + G4VCrossSectionHandler* crossSectionHandler; + G4VEMDataSet* theMeanFreePath; + G4VEnergySpectrum* energySpectrum; + + // Lower limit for generation of gamma in this model + G4DataVector cutForDelta; + G4double cutForPhotons; + G4double cutForElectrons; + G4AtomicDeexcitation deexcitationManager; + G4ShellVacancy* shellVacancy; - G4int SelectRandomShell(const G4int AtomIndex - , const G4double IncEnergy - , const G4double CutEnergy); - - G4Element* SelectRandomAtom(const G4DynamicParticle* aDynamicPhoton, - G4Material* aMaterial); - - G4bool SelectRandomTransition(G4int, G4double*, - const oneAtomTable*); - - - - G4double EnergySampling(const G4int AtomicNumber - , const G4int ShellIndex - , const G4double KinEn - , const G4double deltaRayMinE = 0.1*eV); - - allAtomTable* allAtomShellCrossSec; - allAtomTable* theFluorTransitionTable; - allAtomTable* theSamplingCoeffTable; - G4SecondLevel* theBindingEnergyTable; - G4DataVector* ZNumVec; - G4DataVector* ZNumVecFluor; - - G4PhysicsTable* theMeanFreePathTable; - - G4double CutForLowEnergySecondaryPhotons; - G4double CutForLowEnergySecondaryElectrons; - G4double MeanFreePath; - - G4double lowestKineticEnergy; - G4double highestKineticEnergy; - G4int TotBin; - - G4LowEnergyUtilities util; - - G4DataVector thePrimShVec; - G4double lEnergyLimit; }; - -#include "G4LowEnergyIonisation.icc" - + #endif @@ -180,7 +127,3 @@ private: - - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.icc deleted file mode 100644 index 8203cc03cf..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyIonisation.icc +++ /dev/null @@ -1,87 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LowEnergyIonisation.icc,v 1.16.2.2 2001/06/28 20:19:24 gunter Exp $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4LowEnergyIonisation physics process ------------ -// -// by Alessandra Forti , July 1999 -// *************************************************************** -// -// 07.04.2000 Veronique Lefebure + Laszlo Urban -// - First implemention of continuous energy loss -// 14/07/99 corrections by L. Urban -// 16/05/01 V.Ivanchenko: cross section is taken from the table. -// 17/05/01 V.Ivanchenko: warning print out. -// 22/05/01 V.Ivanchenko: switch on using tables of cross sections. -// --------------------------------------------------------------- - -// - -inline G4bool G4LowEnergyIonisation::IsApplicable( - const G4ParticleDefinition& particle) -{ - if(&particle == G4Positron::Positron()) { - G4cout << "WARNING: G4LowEnergyIonisation is not applicable" - << " for positron yet!" << G4endl; - } - return( (&particle == G4Electron::Electron()) - /////////////////||(&particle == G4Positron::Positron()) - ); -} - -// - -inline G4double G4LowEnergyIonisation::GetMeanFreePath( - const G4Track& track, - G4double, - G4ForceCondition*){ - - const G4DynamicParticle* aParticle = track.GetDynamicParticle(); - G4double KineticEnergy = aParticle->GetKineticEnergy(); - const G4Material* aMaterial = track.GetMaterial(); - - G4bool isOutRange = false; - - if( KineticEnergy < lowestKineticEnergy ) MeanFreePath = DBL_MAX; - else { - if(KineticEnergy > highestKineticEnergy) - KineticEnergy = highestKineticEnergy; - - MeanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> - GetValue( KineticEnergy, isOutRange); - } - return MeanFreePath ; -} - - - - - - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh index 0fe7f69fda..53859ff61e 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.hh @@ -21,124 +21,93 @@ // ******************************************************************** // // -// $Id: G4LowEnergyPhotoElectric.hh,v 1.18.2.2 2001/06/28 20:19:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LowEnergyPhotoElectric.hh,v 1.23 2001/10/08 07:45:34 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland +// Author: A. Forti +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // -// ------------ G4LowEnergyPhotoElectric physics process ------ -// by A.Forti 1999/03/02 +// History: +// ----------- +// 02 Mar 1999 A. Forti 1st implementation +// 12 Aug 2001 MGP Major revision according to a design iteration +// 16 Sept 2001 E. Guardincerri Added fluorescence generation // +// ------------------------------------------------------------------- + // Class description: // Low Energy Electromagnetic process, Photoelectric effect // Further documentation available from http://www.ge.infn.it/geant4/lowE -// ************************************************************ +// ------------------------------------------------------------------- -#ifndef G4LowEnergyPhotoElectric_h -#define G4LowEnergyPhotoElectric_h 1 +#ifndef G4LOWENERGYPHOTOELECTRIC_HH +#define G4LOWENERGYPHOTOELECTRIC_HH 1 -// Base Class Headers +#include "globals.hh" #include "G4VDiscreteProcess.hh" +#include "G4AtomicDeexcitation.hh" -// Contained Variables Headers -#include "G4LowEnergyUtilities.hh" -#include "G4Gamma.hh" +class G4Track; +class G4Step; +class G4ParticleDefinition; +class G4VParticleChange; +class G4VEMDataSet; +class G4VCrossSectionHandler; +class G4VRangeTest; -// .. - -typedef G4FirstLevel oneShellTable; -typedef G4SecondLevel oneAtomTable; -typedef G4ThirdLevel allAtomTable; - -// .. - -class G4LowEnergyPhotoElectric : public G4VDiscreteProcess - -{ +class G4LowEnergyPhotoElectric : public G4VDiscreteProcess { public: G4LowEnergyPhotoElectric(const G4String& processName ="LowEnPhotoElec"); - ~G4LowEnergyPhotoElectric(); + ~G4LowEnergyPhotoElectric(); G4bool IsApplicable(const G4ParticleDefinition&); + void BuildPhysicsTable(const G4ParticleDefinition& photon); + + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + void SetCutForLowEnSecPhotons(G4double); - // void SetCutForLowEnSecElectrons(G4double); + // For testing purpose only + G4double DumpMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition) + { return GetMeanFreePath(aTrack, previousStepSize, condition); } + +protected: - void BuildPhysicsTable(const G4ParticleDefinition& PhotonType); - G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition); - G4double GetCrossSection(G4DynamicParticle* aDynamicGamma, - G4Element* anElement); - - inline G4double GetTransitionShell(G4int k){return(thePrimShVec[k]);}; - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); - -protected: - - virtual G4double ComputeCrossSection(const G4double AtomicNumber, - const G4double IncEnergy); - void BuildCrossSectionTable(); - void BuildShellCrossSectionTable(); - void BuildBindingEnergyTable(); - void BuildFluorTransitionTable(); - void BuildMeanFreePathTable(); - void BuildZVec(); - private: - G4int SelectRandomShell(const G4int AtomIndex, const G4double IncEnergy); - - G4Element* SelectRandomAtom(const G4DynamicParticle* aDynamicPhoton, - G4Material* aMaterial); - - G4bool SelectRandomTransition(G4int, G4double*, const oneAtomTable*); - -private: - - // hide assignment operator as private - G4LowEnergyPhotoElectric& operator=(const G4LowEnergyPhotoElectric &right); + // Hide copy constructor and assignment operator as private + G4LowEnergyPhotoElectric& operator=(const G4LowEnergyPhotoElectric& right); G4LowEnergyPhotoElectric(const G4LowEnergyPhotoElectric& ); - -private: - G4double lowestEnergyLimit; - G4double highestEnergyLimit; + G4double lowEnergyLimit; // low energy limit applied to the process + G4double highEnergyLimit; // high energy limit applied to the process - G4int NumbBinTable; + G4VEMDataSet* meanFreePathTable; - G4double CutForLowEnergySecondaryPhotons; + G4VCrossSectionHandler* crossSectionHandler; + G4VCrossSectionHandler* shellCrossSectionHandler; - G4SecondLevel* theCrossSectionTable; - G4PhysicsTable* theMeanFreePathTable; + G4VRangeTest* rangeTest; - allAtomTable* allAtomShellCrossSec; - allAtomTable* theFluorTransitionTable; - G4SecondLevel* theBindingEnergyTable; - G4DataVector* ZNumVec; - G4DataVector* ZNumVecFluor; + const G4double intrinsicLowEnergyLimit; // intrinsic validity range + const G4double intrinsicHighEnergyLimit; - G4DataVector thePrimShVec; - G4LowEnergyUtilities util; + G4double cutForLowEnergySecondaryPhotons; - G4double MeanFreePath; + G4AtomicDeexcitation deexcitationManager; }; -// .. - -#include "G4LowEnergyPhotoElectric.icc" - #endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.icc deleted file mode 100644 index 3798b334c7..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPhotoElectric.icc +++ /dev/null @@ -1,104 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LowEnergyPhotoElectric.icc,v 1.18.2.2 2001/06/28 20:19:24 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4LowEnergyPhotoElectric physics process --------- -// by A.Forti 1999/03/02 -// -// 10/05/2001 V.Ivanchenko Clean up againist Linux compilation with -Wall -// -// *************************************************************** - -// .. - -inline G4bool G4LowEnergyPhotoElectric::IsApplicable(const G4ParticleDefinition& particle) -{ - return ( &particle == G4Gamma::Gamma() ); -} - -// .. - -inline G4double -G4LowEnergyPhotoElectric::GetMeanFreePath(const G4Track& aTrack, G4double, - G4ForceCondition*) -{ - // returns the gamma mean free path in GEANT4 internal units - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - G4Material* aMaterial = aTrack.GetMaterial(); - - // G4bool isOutRange ; - if (GammaEnergy > highestEnergyLimit){ - MeanFreePath = DBL_MAX; - } - else if(GammaEnergy < lowestEnergyLimit){ - - MeanFreePath = DBL_MIN; - } - else { - - MeanFreePath = util.DataLogInterpolation(GammaEnergy, - aMaterial->GetIndex(), - theMeanFreePathTable); - } - - return MeanFreePath; -} - -// .. - -inline G4double G4LowEnergyPhotoElectric::GetCrossSection(G4DynamicParticle* aDynamicGamma, - G4Element* anElement) - -// gives the microscopic total cross section in GEANT4 internal units - -{ - G4double crossSection; - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - - if (GammaEnergy < lowestEnergyLimit || GammaEnergy > highestEnergyLimit) - crossSection = 0.; - else{ - - G4int elemZ = (G4int) anElement->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(elemZ)]; - - crossSection = util.DataLogInterpolation(GammaEnergy, - (*(*oneAtomCS)[0]), (*(*oneAtomCS)[1]))*barn; - - } - return crossSection; -} - -// .. - - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh index 6c37c6b32e..62b7776a07 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyPolarizedCompton.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LowEnergyPolarizedCompton.hh,v 1.4.2.2 2001/06/28 20:19:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LowEnergyPolarizedCompton.hh,v 1.7 2001/10/24 09:07:20 flongo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file @@ -35,26 +35,27 @@ // 24 May 2001 - MGP Modified to inherit from G4VDiscreteProcess // 25 May 2001 - MGP Added protections to avoid crashes // +// 17 October 2001 - F.Longo Major revision according to design iteration +// // Class description: // Low Energy electromagnetic process, Polarised Compton scattering // Further documentation available from http://www.ge.infn.it/geant4/lowE // ------------------------------------------------------------ -#ifndef G4LowEnergyPolarizedCompton_h -#define G4LowEnergyPolarizedCompton_h 1 +#ifndef G4LOWENERGYPOLARIZEDCOMPTON_H +#define G4LOWENERGYPOLARIZEDCOMPTON_H 1 #include "globals.hh" #include "G4VDiscreteProcess.hh" -#include "G4LowEnergyUtilities.hh" -//#include "G4VParticleChange.hh" -class G4SecondLevel; -class G4PhysicsTable; -class G4DataVector; +class G4Track; +class G4Step; class G4ParticleDefinition; class G4VParticleChange; - +class G4VEMDataSet; +class G4VCrossSectionHandler; +class G4VRangeTest; class G4LowEnergyPolarizedCompton : public G4VDiscreteProcess { @@ -64,53 +65,60 @@ public: ~G4LowEnergyPolarizedCompton(); - G4bool IsApplicable(const G4ParticleDefinition&); + G4bool IsApplicable(const G4ParticleDefinition& definition); + + void BuildPhysicsTable(const G4ParticleDefinition& photon); + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + + + // For testing purpose only + G4double DumpMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition) + { return GetMeanFreePath(aTrack, previousStepSize, condition); } + + +protected: - void BuildPhysicsTable(const G4ParticleDefinition& GammaType); - G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition); - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); - -protected: - - void BuildScatteringFunctionTable(); - void BuildCrossSectionTable(); - void BuildMeanFreePathTable(); - void BuildZVec(); - private: + + // Hide copy constructor and assignment operator as private + + G4LowEnergyPolarizedCompton& operator=(const G4LowEnergyPolarizedCompton& + right); + G4LowEnergyPolarizedCompton(const G4LowEnergyPolarizedCompton& ); - G4Element* SelectRandomAtom(const G4DynamicParticle*, G4Material*); + G4double lowEnergyLimit; // low energy limit applied to the process + G4double highEnergyLimit; // high energy limit applied to the process - G4SecondLevel* theCrossSectionTable; - G4SecondLevel* theScatteringFunctionTable; - G4PhysicsTable* theMeanFreePathTable; - G4DataVector* ZNumVec; + G4VEMDataSet* meanFreePathTable; + G4VEMDataSet* scatterFunctionData; - G4double lowestEnergyLimit; // low energy limit of the crosssection data - G4double highestEnergyLimit; // high energy limit of the crosssection data - G4int numbBinTable; // number of bins in the data tables + G4VCrossSectionHandler* crossSectionHandler; + G4VRangeTest* rangeTest; - G4LowEnergyUtilities util; - G4double meanFreePath; // actual Mean Free Path (current medium) + + + const G4double intrinsicLowEnergyLimit; // intrinsic validity range + const G4double intrinsicHighEnergyLimit; + // specific methods for polarization + + G4ThreeVector SetRandomPolarization(G4ThreeVector& direction0); // Random Polarization + + G4ThreeVector SetPerpendicularVector(G4ThreeVector& a); // temporary + G4ThreeVector SetNewPolarization(G4double epsilon, G4double sinSqrTheta, G4double phi, G4double cosTheta); - G4double SetPhi(G4double, G4double); void SystemOfRefChange(G4ThreeVector& direction0, G4ThreeVector& direction1, G4ThreeVector& polarization0, G4ThreeVector& polarization1); - - // hide assignment operator as private - G4LowEnergyPolarizedCompton& operator=(const G4LowEnergyPolarizedCompton &right); - G4LowEnergyPolarizedCompton(const G4LowEnergyPolarizedCompton& ); - - + }; #endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh index d97f152861..d7b7f50b9f 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.hh @@ -21,41 +21,41 @@ // ******************************************************************** // // -// $Id: G4LowEnergyRayleigh.hh,v 1.10.2.2 2001/06/28 20:19:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LowEnergyRayleigh.hh,v 1.15 2001/10/08 07:45:35 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// ------------------------------------------------------------ -// GEANT 4 class header file --- Copyright CERN 1995 -// CERN Geneva Switzerland // -// ------------ G4LowEnergyRayleigh physics process ------ -// by A.Forti 1999/03/02 +// Author: A. Forti +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // +// History: +// ----------- +// 02 Mar 1999 A. Forti 1st implementation +// 11 Aug 2001 MGP Major revision according to a design iteration +// +// ------------------------------------------------------------------- + // Class description: // Low Energy Electromagnetic process, Rayleigh effect // Further documentation available from http://www.ge.infn.it/geant4/lowE -// ************************************************************ +// ------------------------------------------------------------------- -#ifndef G4LowEnergyRayleigh_h -#define G4LowEnergyRayleigh_h +#ifndef G4LOWENERGYRAYLEIGH_HH +#define G4LOWENERGYRAYLEIGH_HH 1 -// Base Class Headers +#include "globals.hh" #include "G4VDiscreteProcess.hh" - -// Contained Variables Headers -#include "G4LowEnergyUtilities.hh" -#include "G4Gamma.hh" +class G4Track; +class G4Step; +class G4ParticleDefinition; +class G4VParticleChange; +class G4VEMDataSet; +class G4VCrossSectionHandler; class G4LowEnergyRayleigh : public G4VDiscreteProcess { -private: - - // hide assignment operator as private - G4LowEnergyRayleigh& operator=(const G4LowEnergyRayleigh &right); - G4LowEnergyRayleigh(const G4LowEnergyRayleigh& ); - public: G4LowEnergyRayleigh(const G4String& processName ="LowEnRayleigh"); @@ -64,42 +64,43 @@ public: G4bool IsApplicable(const G4ParticleDefinition&); - void BuildPhysicsTable(const G4ParticleDefinition& GammaType); + void BuildPhysicsTable(const G4ParticleDefinition& photon); + G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); + + // For testing purpose only + G4double DumpMeanFreePath(const G4Track& aTrack, + G4double previousStepSize, + G4ForceCondition* condition) + { return GetMeanFreePath(aTrack, previousStepSize, condition); } + +protected: + G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, G4ForceCondition* condition); - G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step& aStep); - -protected: - - void BuildFormFactorTable(); - void BuildCrossSectionTable(); - void BuildMeanFreePathTable(); - void BuildZVec(); - private: + + // Hide copy constructor and assignment operator as private + G4LowEnergyRayleigh& operator=(const G4LowEnergyRayleigh &right); + G4LowEnergyRayleigh(const G4LowEnergyRayleigh& ); - G4Element* SelectRandomAtom(const G4DynamicParticle*, G4Material*); + G4double lowEnergyLimit; // low energy limit applied to the process + G4double highEnergyLimit; // high energy limit applied to the process - G4SecondLevel* theCrossSectionTable; - G4SecondLevel* theFormFactorTable; - G4PhysicsTable* theMeanFreePathTable; - G4DataVector* ZNumVec; + G4VEMDataSet* meanFreePathTable; + G4VEMDataSet* formFactorData; - G4double lowestEnergyLimit; // low energy limit of the crosssection formula - G4double highestEnergyLimit; // high energy limit of the crosssection formula - G4int NumbBinTable; // number of bins in the crossection table + G4VCrossSectionHandler* crossSectionHandler; + + const G4double intrinsicLowEnergyLimit; // intrinsic validity range + const G4double intrinsicHighEnergyLimit; - G4LowEnergyUtilities util; - - G4double MeanFreePath; // actual Mean Free Path (current medium) }; -#include "G4LowEnergyRayleigh.icc" - #endif + @@ -113,6 +114,3 @@ private: - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.icc b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.icc deleted file mode 100644 index ae17a296b5..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyRayleigh.icc +++ /dev/null @@ -1,68 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LowEnergyRayleigh.icc,v 1.12.2.2 2001/06/28 20:19:24 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4LowEnergyRayleigh physics process --------- -// by A.Forti 1999/03/02 -// *************************************************************** - -inline G4bool G4LowEnergyRayleigh::IsApplicable(const G4ParticleDefinition& particle){ - return ( &particle == G4Gamma::Gamma() ); -} - -inline G4double G4LowEnergyRayleigh::GetMeanFreePath(const G4Track& aTrack, G4double, G4ForceCondition*){ - -// returns the gamma mean free path in GEANT4 internal units - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - G4Material* aMaterial = aTrack.GetMaterial(); - - // G4bool isOutRange ; - - if (GammaEnergy > highestEnergyLimit){ - MeanFreePath = DBL_MAX; - } - else if(GammaEnergy < lowestEnergyLimit){ - - MeanFreePath = DBL_MIN; - } - else { - - MeanFreePath = util.DataLogInterpolation(GammaEnergy, - aMaterial->GetIndex(), - theMeanFreePathTable); - } - - return MeanFreePath; -} - - - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyUtilities.hh b/source/processes/electromagnetic/lowenergy/include/G4LowEnergyUtilities.hh deleted file mode 100644 index 7b17215be8..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyUtilities.hh +++ /dev/null @@ -1,209 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LowEnergyUtilities.hh,v 1.8.2.2 2001/06/28 20:19:24 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland -// -// ------------ G4LowEnergyPhotoElectric physics process ------ -// by A.Forti 1999/06/28 -// -// Class description: -// Class for the handling of the data libraries -// Further documentation available from http://www.ge.infn.it/geant4/lowE - -// ************************************************************ - -#ifndef G4LowEnergyUtilities_h -#define G4LowEnergyUtilities_h 1 - -//#include "G4FirstLevel.hh" -//#include "G4SecondLevel.hh" -#include "G4ThirdLevel.hh" -#include "G4PhysicsVector.hh" -#include "G4PhysicsTable.hh" - -typedef G4FirstLevel oneShellTable; -typedef G4SecondLevel oneAtomTable; -typedef G4ThirdLevel allAtomTable; - -class G4LowEnergyUtilities -{ - -public: - - G4LowEnergyUtilities(); - - ~G4LowEnergyUtilities(); - - G4FirstLevel* BuildFirstLevelTables(const G4int, const G4int, const char*); - G4SecondLevel* BuildSecondLevelTables(const G4int, const G4int, const char*); - - //inline functions - G4int FindBinLocation(const G4double BinValue, const G4DataVector& arg); - G4int FindBinLocation(const G4double, const G4PhysicsVector*); - - G4double DataLogInterpolation(const G4double, - const G4DataVector&, - const G4DataVector&); - - G4double DataLogInterpolation(const G4double Argument, - const G4double AtomicNumber, - const G4PhysicsTable* Table); - - G4double DataSemiLogInterpolation(const G4double, - const G4DataVector&, - const G4DataVector&); - -}; - -inline G4int G4LowEnergyUtilities::FindBinLocation(const G4double arg, const G4DataVector& vec){ - - G4int numberOfBin = vec.size(); - G4int lowerBound = 0; - G4int upperBound = numberOfBin-1; - - do { - - G4int midBin = (lowerBound + upperBound)/2; - - if( arg < vec[midBin] ) - - upperBound = midBin-1; - else - - lowerBound = midBin+1; - - } while (lowerBound <= upperBound); - - return upperBound; -} - - -inline G4double G4LowEnergyUtilities::DataLogInterpolation(const G4double Argument, - const G4DataVector& argVec, - const G4DataVector& valVec){ - - G4int theLoc = FindBinLocation(Argument, argVec); - G4int size = argVec.size()-1; - - if(theLoc == size){ - return valVec[theLoc]; - } - - G4double val1 = valVec[theLoc], val2 = valVec[theLoc+1]; - G4double arg1 = argVec[theLoc], arg2 = argVec[theLoc+1]; - - if(arg1 == 0.0) arg1 = 1e-17; if(val1 == 0.0) val1 = 1e-17; - - G4double theVal = (log10(val1)*log10(arg2/Argument) - +log10(val2)*log10(Argument/arg1))/log10(arg2/arg1); - - theVal = pow(10,theVal); - - return theVal; -} - -inline G4int G4LowEnergyUtilities::FindBinLocation(const G4double arg, - const G4PhysicsVector* vec){ - - if(!vec){ - - G4Exception("G4LowEnergy: FindBinLocation: Vector Empty " - "probably the program hasn't found data files or data files are empty"); - } - - G4int numberOfBin = vec->GetVectorLength(); - G4int lowerBound = 0; - G4int upperBound = numberOfBin-1; - do { - - G4int midBin = (lowerBound + upperBound)/2; - - if( arg < vec->GetLowEdgeEnergy(midBin) ) - - upperBound = midBin-1; - - else - - lowerBound = midBin+1; - - } while (lowerBound <= upperBound); - - return upperBound; -} - -inline G4double G4LowEnergyUtilities::DataLogInterpolation(const G4double Argument, - const G4double TableIndex, - const G4PhysicsTable* Table){ - - G4PhysicsVector* theVec = 0; - theVec = (*Table)(TableIndex); - - G4int theLoc = FindBinLocation(Argument, theVec); - - G4double val1 = (*theVec)(theLoc), val2 = (*theVec)(theLoc+1); - G4double arg1 = theVec->GetLowEdgeEnergy(theLoc), arg2 = theVec->GetLowEdgeEnergy(theLoc+1); - - G4double theVal = (log10(val1)*log10(arg2/Argument) - +log10(val2)*log10(Argument/arg1))/log10(arg2/arg1); - - theVal = pow(10,theVal); - return theVal; -} - -inline G4double G4LowEnergyUtilities::DataSemiLogInterpolation(const G4double Argument, - const G4DataVector& argVec, - const G4DataVector& valVec){ - - G4int theLoc = FindBinLocation(Argument, argVec); - G4int size = argVec.size()-1; - - if (theLoc == size){ - return valVec[theLoc]; - } - - G4double val1 = valVec[theLoc], val2 = valVec[theLoc+1]; - G4double arg1 = argVec[theLoc], arg2 = argVec[theLoc+1]; - - G4double theVal = (val1*log10(arg2/Argument) - +val2*log10(Argument/arg1))/log10(arg2/arg1); - - return theVal; -} - -#endif - - - - - - - - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4SecondLevel.hh b/source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh similarity index 68% rename from source/processes/electromagnetic/lowenergy/include/G4SecondLevel.hh rename to source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh index 57df6ff5e2..9c486c65ed 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4SecondLevel.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4RangeNoTest.hh @@ -21,49 +21,55 @@ // ******************************************************************** // // +// $Id: G4RangeNoTest.hh,v 1.1 2001/10/08 07:51:41 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 5 Oct 2001 MGP Created +// // ------------------------------------------------------------------- -// GEANT 4 class file -// -// CERN, Geneva, Switzerland -// -// File name: G4SecondLevel.hh -// -// Author: Alessandra Forti (Alessandra.Forti@cern.ch) -// -// Creation date: 1 Giugno 1999 -// -// Modifications: 24.04.01 V.Ivanchenko remove RogueWave -// -// ------------------------------------------------------------------- - // Class description: -// Utility for Low Energy electromagnetic e/photon processes -// Further documentation available from http://www.ge.infn.it/geant4/lowE +// Class for a strategy pattern encapsulating algorithms to test the range +// of a particle: no test is performed +// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html // ------------------------------------------------------------------- -#ifndef G4SECONDLEVEL_HH -#define G4SECONDLEVEL_HH +#ifndef G4RANGENOTEST_HH +#define G4RANGENOTEST_HH 1 -#include "G4FirstLevel.hh" -//#include "g4rw/tpordvec.h" +#include "globals.hh" +#include "G4VRangeTest.hh" -//class G4SecondLevel : public G4RWTPtrOrderedVector< G4FirstLevel >{ -class G4SecondLevel : public G4std::vector< G4FirstLevel* > - -{ +class G4ParticleDefinition; +class G4Material; +class G4RangeNoTest : public G4VRangeTest { + public: - ~G4SecondLevel(); + G4RangeNoTest() { } - G4bool operator == (const G4SecondLevel& ) const; + virtual ~G4RangeNoTest() { } + + virtual G4bool Escape(const G4ParticleDefinition* particle, + const G4Material* material, + G4double energy, + G4double safety) const { return true; } - G4bool operator < (const G4SecondLevel&) const; +private: }; - + #endif + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4ThirdLevel.hh b/source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh similarity index 68% rename from source/processes/electromagnetic/lowenergy/include/G4ThirdLevel.hh rename to source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh index a202960634..b74e60d5db 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4ThirdLevel.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4RangeTest.hh @@ -21,48 +21,55 @@ // ******************************************************************** // // +// $Id: G4RangeTest.hh,v 1.1 2001/10/08 07:51:42 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 5 Oct 2001 MGP Created +// // ------------------------------------------------------------------- -// GEANT 4 class file -// -// CERN, Geneva, Switzerland -// -// File name: G4ThirdLevel.hh -// -// Author: Alessandra Forti (Alessandra.Forti@cern.ch) -// -// Creation date: 1 Giugno 1999 -// -// Modifications: 24.04.01 V.Ivanchenko remove RogueWave -// -// ------------------------------------------------------------------- - // Class description: -// Utility for Low Energy electromagnetic e/photon processes -// Further documentation available from http://www.ge.infn.it/geant4/lowE +// Class for a strategy pattern encapsulating algorithms to test the range +// of a perticle: test range against cut and safety +// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html // ------------------------------------------------------------------- -#ifndef G4THIRDLEVEL_HH -#define G4THIRDLEVEL_HH +#ifndef G4RANGETEST_HH +#define G4RANGETEST_HH 1 -#include "G4SecondLevel.hh" -//#include "g4rw/tpordvec.h" +#include "globals.hh" +#include "G4VRangeTest.hh" -//class G4ThirdLevel : public G4RWTPtrOrderedVector< G4SecondLevel >{ -class G4ThirdLevel : public G4std::vector< G4SecondLevel* > -{ +class G4ParticleDefinition; +class G4Material; +class G4RangeTest : public G4VRangeTest { + public: - virtual ~G4ThirdLevel(); + G4RangeTest() { } - G4bool operator == (const G4ThirdLevel& ) const; + virtual ~G4RangeTest() { } + + virtual G4bool Escape(const G4ParticleDefinition* particle, + const G4Material* material, + G4double energy, + G4double safety) const; - G4bool operator < (const G4ThirdLevel&) const; +private: }; - + #endif + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh b/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh new file mode 100644 index 0000000000..7a04a27bc6 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4SemiLogInterpolation.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4SemiLogInterpolation.hh,v 1.2 2001/10/08 07:45:35 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- +// Class description: +// Log-Log interpolation of a data set +// Part of a strategy pattern to encapsulate algorithms for interpolation of data sets +// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html + +// ------------------------------------------------------------------- + +#ifndef G4SEMILOGINTERPOLATION_HH +#define G4SEMILOGINTERPOLATION_HH 1 + +#include "globals.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4DataVector.hh" + +class G4SemiLogInterpolation : public G4VDataSetAlgorithm { + +public: + + G4SemiLogInterpolation(); + + ~G4SemiLogInterpolation(); + + G4double Calculate(G4double point, G4int bin, + const G4DataVector& energies, + const G4DataVector& data) const; + + virtual G4VDataSetAlgorithm* Clone() const { return new G4SemiLogInterpolation; } + +private: + + + // Hide copy constructor and assignment operator + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh b/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh new file mode 100644 index 0000000000..d98b13ac92 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4ShellData.hh @@ -0,0 +1,90 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ShellData.hh,v 1.1 2001/08/20 16:36:01 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 6 Aug 2001 MGP Created +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Shell data set: shell identifiers and binding energies + +// ------------------------------------------------------------------- + +#ifndef G4SHELLDATA_HH +#define G4SHELLDATA_HH 1 + +#include "globals.hh" +#include "g4std/vector" +#include "g4std/map" + +class G4DataVector; + +class G4ShellData +{ +public: + + G4ShellData(G4int minZ = 1, G4int maxZ = 99); + + ~G4ShellData(); + + size_t NumberOfShells(G4int Z) const; + + G4int ShellId(G4int Z, G4int shellIndex) const; + + const G4DataVector& ShellIdVector(G4int Z) const; + + G4double BindingEnergy(G4int Z, G4int shellIndex) const; + + void LoadData(const G4String& fileName); + + void PrintData() const; + +private: + + G4int zMin; + G4int zMax; + + G4std::map > idMap; + G4std::map > bindingMap; + G4std::vector nShells; + +}; + +#endif + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh new file mode 100644 index 0000000000..ed3ffd8f24 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4ShellEMDataSet.hh @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ShellEMDataSet.hh,v 1.3 2001/09/10 18:05:16 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Data set for an electromagnetic physics process +// A strategy pattern is used to encapsulate algorithms for data interpolation +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4SHELLEMDATASET_HH +#define G4SHELLEMDATASET_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "G4VEMDataSet.hh" +#include "g4std/vector" + +class G4EMDataSet; +class G4VDataSetAlgorithm; + +class G4ShellEMDataSet : public G4VEMDataSet +{ +public: + + G4ShellEMDataSet(G4int Z, + const G4VDataSetAlgorithm* interpolation, + G4double unitE = MeV, G4double unitData = barn); + + G4ShellEMDataSet(G4int Z, + const G4String& dataFile, + const G4VDataSetAlgorithm* interpolation, + G4double unitE = MeV, G4double unitData = barn); + + ~G4ShellEMDataSet(); + + G4double FindValue(G4double e, G4int id = 0) const; + + const G4VEMDataSet* GetComponent(G4int i) const { return components[i]; } + + void AddComponent(G4VEMDataSet* component); + + size_t NumberOfComponents() const { return nComponents; } + + void PrintData() const; + + const G4DataVector& GetEnergies(G4int i) const; + const G4DataVector& GetData(G4int i) const; + +private: + + void LoadData(const G4String& fileName); + + G4int z; + + const G4VDataSetAlgorithm* algorithm; // Not owned pointer + + // G4std::map > componentsMap; + G4std::vector components; + size_t nComponents; + + G4double unit1; + G4double unit2; +}; + +#endif + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4ShellVacancy.hh b/source/processes/electromagnetic/lowenergy/include/G4ShellVacancy.hh new file mode 100644 index 0000000000..84e512d649 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4ShellVacancy.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ShellVacancy.hh +// GEANT4 tag $Name: +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 21 Sept 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Fluorescence in along step do it: determinates the number of ionizations + +// ------------------------------------------------------------------- + +#ifndef G4SHELLVACANCY_HH +#define G4SHELLVACANCY_HH 1 + +#include "globals.hh" +#include "g4std/vector" +//#include "g4std/map" + +class G4VEMDataSet; +class G4Material; +class G4Element; +class G4ShellVacancy +{ +public: + + G4ShellVacancy(); + + ~G4ShellVacancy(); + + G4std::vector GenerateNumberOfIonisations(const G4Material* material, + G4double incidentEnergy, + G4double eLoss) const; + + void AddXsiTable(G4VEMDataSet* set); + +private: + + G4int AverageNOfIonisations(const G4Material* material, + const G4Element* element, + G4double energy, + G4double eLoss) const; + + G4std::vector xsis; + +}; + +#endif + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh b/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh new file mode 100644 index 0000000000..b0c4ab644a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4VCrossSectionHandler.hh @@ -0,0 +1,152 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VCrossSectionHandler.hh,v 1.9 2001/10/10 09:49:29 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 16 Sep 2001 MGP Created +// 26 Sep 2001 V.Ivanchenko Hide copy constructor and assignement operator +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Base class for cross section manager for an electromagnetic physics process +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4VCROSSSECTIONHANDLER_HH +#define G4VCROSSSECTIONHANDLER_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "g4std/map" +#include "g4std/vector" + +class G4VDataSetAlgorithm; +class G4VEMDataSet; +class G4Material; +class G4Element; + +class G4VCrossSectionHandler { + +public: + + G4VCrossSectionHandler(); + + G4VCrossSectionHandler(G4VDataSetAlgorithm* interpolation, + G4double minE = 250*eV, G4double maxE = 100*GeV, + G4int nBins = 200, + G4double unitE = MeV, G4double unitData = barn, + G4int minZ = 1, G4int maxZ = 99); + + virtual ~G4VCrossSectionHandler(); + + void Initialise(G4VDataSetAlgorithm* interpolation = 0, + G4double minE = 250*eV, G4double maxE = 100*GeV, + G4int numberOfBins = 200, + G4double unitE = MeV, G4double unitData = barn, + G4int minZ = 1, G4int maxZ = 99); + + G4int SelectRandomAtom(const G4Material* material, G4double e) const; + + const G4Element* SelectRandomElement(const G4Material* material, + G4double e) const; + + G4int SelectRandomShell(G4int Z, G4double e) const; + + G4VEMDataSet* BuildMeanFreePathForMaterials(const G4DataVector* energyCuts = 0); + + G4double FindValue(G4int Z, G4double e) const; + + G4double FindValue(G4int Z, G4double e, G4int shellIndex) const; + + void LoadData(const G4String& dataFile); + + void LoadShellData(const G4String& dataFile); + + void PrintData() const; + + void Clear(); + +protected: + + G4int NumberOfComponents(G4int Z) const; + + G4double ValueForMaterial(const G4Material* material, G4double e) const; + + void ActiveElements(); + + // Factory method + virtual G4std::vector* BuildCrossSectionsForMaterials( + const G4DataVector& energyVector, + const G4DataVector* energyCuts = 0) = 0; + + // Factory method + virtual G4VDataSetAlgorithm* CreateInterpolation(); + + G4VDataSetAlgorithm* GetInterpolation() const { return interpolation; } + + +private: + + // Hide copy constructor and assignment operator + G4VCrossSectionHandler(const G4VCrossSectionHandler&); + G4VCrossSectionHandler & operator=(const G4VCrossSectionHandler &right); + + G4VDataSetAlgorithm* interpolation; + + G4double eMin; + G4double eMax; + G4int nBins; + + G4double unit1; + G4double unit2; + + G4int zMin; + G4int zMax; + + G4DataVector activeZ; + + G4std::map > dataMap; + + G4std::vector* crossSections; +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh b/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh new file mode 100644 index 0000000000..ed89afbe81 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4VDataSetAlgorithm.hh @@ -0,0 +1,80 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VDataSetAlgorithm.hh,v 1.5 2001/10/09 12:13:48 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- +// Class description: +// Base class for a strategy pattern to encapsulate algorithms for interpolation of a data set +// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html + +// ------------------------------------------------------------------- + +#ifndef G4VDATASETALGORITHM_HH +#define G4VDATASETALGORITHM_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" + +class G4VDataSetAlgorithm { + +public: + + G4VDataSetAlgorithm() { } + + virtual ~G4VDataSetAlgorithm() { } + + + virtual G4double Calculate(G4double point, G4int bin, + const G4DataVector& energies, + const G4DataVector& data) const = 0; + + virtual G4VDataSetAlgorithm* Clone() const = 0; + +private: + + // Hide copy constructor and assignment operator + G4VDataSetAlgorithm(const G4VDataSetAlgorithm&); + G4VDataSetAlgorithm & operator=(const G4VDataSetAlgorithm &right); + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh b/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh new file mode 100644 index 0000000000..842688f51a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4VEMDataSet.hh @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VEMDataSet.hh,v 1.5 2001/10/04 14:03:57 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Data set for an electromagnetic physics process +// A strategy pattern is used to encapsulate algorithms for data interpolation +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4VEMDATASET_HH +#define G4VEMDATASET_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" + +class G4VDataSetAlgorithm; + +class G4VEMDataSet +{ +public: + + G4VEMDataSet() { } + + virtual ~G4VEMDataSet() { } + + virtual G4double FindValue(G4double e, G4int id = 0) const = 0; + + virtual void PrintData() const = 0; + + virtual const G4VEMDataSet* GetComponent(G4int i) const { return 0; } + + virtual void AddComponent(G4VEMDataSet* dataSet) { } + + virtual size_t NumberOfComponents() const { return 0; } + + virtual const G4DataVector& GetEnergies(G4int i) const = 0; + virtual const G4DataVector& GetData(G4int i) const = 0; + +protected: + +private: + + // Hide copy constructor and assignment operator + G4VEMDataSet(const G4VEMDataSet&); + G4VEMDataSet & operator=(const G4VEMDataSet &right); + +}; + +#endif + + + + + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4VEnergySpectrum.hh b/source/processes/electromagnetic/lowenergy/include/G4VEnergySpectrum.hh new file mode 100644 index 0000000000..535127714e --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4VEnergySpectrum.hh @@ -0,0 +1,106 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4VEnergySpectrum +// +// Author: V.Ivanchenko (Vladimir.Ivantchenko@cern.ch) +// +// Creation date: 29 September 2001 +// +// Modifications: +// +// ------------------------------------------------------------------- + +// Class Description: +// +// Abstract interface for the energy spectrum of secondary particles in +// electromagnetic processes. +// +// Class Description: End + +// ------------------------------------------------------------------- +// + +#ifndef G4VENERGYSPECTRUM_HH +#define G4VENERGYSPECTRUM_HH 1 + +#include "globals.hh" + +class G4ParticleDefinition; + +class G4VEnergySpectrum +{ + +public: + + G4VEnergySpectrum() {}; + + virtual ~G4VEnergySpectrum() {}; + + virtual G4double Probability(G4int Z, + G4double minKineticEnergy, + G4double maxKineticEnergy, + G4double kineticEnergy, + G4int shell = 0, + const G4ParticleDefinition* pd = 0) const = 0; + + virtual G4double AverageEnergy(G4int Z, + G4double minKineticEnergy, + G4double maxKineticEnergy, + G4double kineticEnergy, + G4int shell = 0, + const G4ParticleDefinition* pd = 0) const = 0; + + virtual G4double SampleEnergy(G4int Z, + G4double minKineticEnergy, + G4double maxKineticEnergy, + G4double kineticEnergy, + G4int shell = 0, + const G4ParticleDefinition* pd = 0) const = 0; + + virtual G4double MaxEnergyOfSecondaries(G4double kineticEnergy, + G4int Z = 0, + const G4ParticleDefinition* pd = 0) const = 0; + + virtual G4double Excitation(G4int Z, G4double kineticEnergy) const + {return 0.0;}; + + virtual void PrintData() const = 0; + +protected: + +private: + + // Hide copy constructor and assignment operator + G4VEnergySpectrum(const G4VEnergySpectrum&); + G4VEnergySpectrum & operator=(const G4VEnergySpectrum &right); + +}; + +#endif + diff --git a/source/processes/electromagnetic/lowenergy/include/G4FirstLevel.hh b/source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh similarity index 71% rename from source/processes/electromagnetic/lowenergy/include/G4FirstLevel.hh rename to source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh index a086236e60..8e7eb92e2a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4FirstLevel.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VRangeTest.hh @@ -21,50 +21,53 @@ // ******************************************************************** // // +// $Id: G4VRangeTest.hh,v 1.1 2001/10/08 07:51:42 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 5 Oct 2001 MGP Created +// // ------------------------------------------------------------------- -// GEANT 4 class file -// -// CERN, Geneva, Switzerland -// -// File name: G4FirstLevel.hh -// -// Author: Alessandra Forti (Alessandra.Forti@cern.ch) -// -// Creation date: 1 Giugno 1999 -// -// Modifications: 24.04.01 V.Ivanchenko remove RogueWave -// -// ------------------------------------------------------------------- - // Class description: -// Utility for Low Energy e.m. e/photon processes -// Further documentation available from http://www.ge.infn.it/geant4/lowE +// Base class for a strategy pattern encapsulating algorithms to test the range +// of a particle +// Further documentation available from http://www.ge.infn.it/geant4/lowE/index.html // ------------------------------------------------------------------- -#ifndef G4FIRSTLEVEL_HH -#define G4FIRSTLEVEL_HH +#ifndef G4VRANGETEST_HH +#define G4VRANGETEST_HH 1 -#include "G4DataVector.hh" - -class G4FirstLevel : public G4std::vector< G4DataVector* > - -{ +#include "globals.hh" +class G4ParticleDefinition; +class G4Material; +class G4VRangeTest { + public: - // G4FirstLevel( G4FirstLevel& ) + G4VRangeTest() { } - ~G4FirstLevel(); + virtual ~G4VRangeTest() { } + + virtual G4bool Escape(const G4ParticleDefinition* particle, + const G4Material* material, + G4double energy, + G4double safety) const = 0; - - G4bool operator == (const G4FirstLevel& ) const; - - G4bool operator < (const G4FirstLevel&) const; +private: }; - + #endif + + + + + diff --git a/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh index 2c0019e5cc..c531f29797 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4VeLowEnergyLoss.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VeLowEnergyLoss.hh,v 1.4.2.2 2001/06/28 20:19:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VeLowEnergyLoss.hh,v 1.7 2001/11/23 11:45:20 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // 3.4.2000 Veronique Lefebure: // Move utils/include/G4VEnergyLoss.hh to @@ -49,7 +49,8 @@ // ----------------------------------------------------------- // // Modifications: -// 20/09/00 update fluctuations V.Ivanchenko +// 20/09/00 V.Ivanchenko update fluctuations +// 23/11/01 V.Ivanchenko Move static member-functions from header to source // // Class description: // Abstract class for Low Energy Electromagnetic electron energy loss @@ -127,20 +128,15 @@ class G4VeLowEnergyLoss : public G4VContinuousDiscreteProcess public: // With description - static void SetRndmStep (G4bool value) {rndmStepFlag = value;} + static void SetRndmStep (G4bool value); // use / do not use randomisation in energy loss steplimit // ( default = no randomisation) - static void SetEnlossFluc (G4bool value) {EnlossFlucFlag = value;} + static void SetEnlossFluc (G4bool value); // compute energy loss with/without fluctuation // ( default : with fluctuation) - static void SetStepFunction (G4double c1, G4double c2) - {dRoverRange = c1; finalRange = c2; - c1lim=dRoverRange ; - c2lim=2.*(1-dRoverRange)*finalRange; - c3lim=-(1.-dRoverRange)*finalRange*finalRange; - } + static void SetStepFunction (G4double c1, G4double c2); // sets values for data members used to compute the step limit: // dRoverRange : max. relative range change in one step, // finalRange : if range <= finalRange --> last step for the particle. diff --git a/source/processes/electromagnetic/lowenergy/include/G4VhShellCrossSection.hh b/source/processes/electromagnetic/lowenergy/include/G4VhShellCrossSection.hh new file mode 100644 index 0000000000..0bf27cb4d4 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4VhShellCrossSection.hh @@ -0,0 +1,82 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4VhShellCrossSection +// +// Author: S. Dussoni and A. Mantero (Alfonso.Mantero@ge.infn.it) +// +// History: +// ----------- +// 23 Oct 2001 A. Mantero 1st implementation +// 24 Oct 2001 MGP Cleaned up +// 29 Oct 2001 VI Add delta energy +// +// ------------------------------------------------------------------- + +// Class Description: +// +// Abstract class for models of shell cross sections in proton ionisation + +// ------------------------------------------------------------------- +// + +#ifndef G4VHSHELLCROSSSECTION_HH +#define G4VHSHELLCROSSSECTION_HH 1 + +#include "globals.hh" +#include "g4std/vector" + +class G4VhShellCrossSection +{ + +public: + + G4VhShellCrossSection(); + + virtual ~G4VhShellCrossSection(); + + G4int SelectRandomShell(G4int Z, + G4double incidentEnergy, + G4double mass, + G4double deltaEnergy) const; + +protected: + + virtual G4std::vector Probabilities(G4int Z, + G4double incidentEnergy, + G4double mass, + G4double deltaEnergy) const = 0; +private: + + // Hide copy constructor and assignment operator + G4VhShellCrossSection(const G4VhShellCrossSection&); + G4VhShellCrossSection & operator=(const G4VhShellCrossSection &right); + +}; + +#endif + diff --git a/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh b/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh new file mode 100644 index 0000000000..f3faee0abe --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4eBremsstrahlungSpectrum.hh @@ -0,0 +1,118 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// $Id: G4eBremsstrahlungSpectrum.hh,v 1.2 2001/11/29 19:01:45 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4EBremsstrahlungSpectrum +// +// Author: V.Ivanchenko (Vladimir.Ivantchenko@cern.ch) +// +// Creation date: 27 September 2001 +// +// Modifications: +// 10.10.01 MGP Revision to improve code quality and consistency with design +// 29.11.01 V.Ivanchenko Parametrisation is updated +// +// ------------------------------------------------------------------- + +// Class Description: +// Provides various integration over gamma spectrum of e- Bremsstrahlung. +// Parametrisation is described in Physics Reference Manual based on +// data from EEDL database. +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4EBREMSSTRAHLUNGSPECTRUM_HH +#define G4EBREMSSTRAHLUNGSPECTRUM_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "G4VEnergySpectrum.hh" + +class G4BremsstrahlungParameters; + +class G4eBremsstrahlungSpectrum : public G4VEnergySpectrum +{ +public: + + G4eBremsstrahlungSpectrum(); + + ~G4eBremsstrahlungSpectrum(); + + G4double Probability(G4int Z, + G4double tMin, + G4double tMax, + G4double kineticEnergy, + G4int shell=0, + const G4ParticleDefinition* pd=0) const; + + G4double AverageEnergy(G4int Z, + G4double tMin, + G4double tMax, + G4double kineticEnergy, + G4int shell=0, + const G4ParticleDefinition* pd=0) const; + + G4double SampleEnergy(G4int Z, + G4double tMin, + G4double tMax, + G4double kineticEnergy, + G4int shell=0, + const G4ParticleDefinition* pd=0) const; + + G4double MaxEnergyOfSecondaries(G4double kineticEnergy, + G4int Z = 0, + const G4ParticleDefinition* pd=0) const + { return kineticEnergy; } + + void PrintData() const; + +private: + + G4double IntSpectrum(G4double xMin, G4double xMax, + const G4DataVector& p) const; + + G4double AverageValue(G4double xMin, G4double xMax, + const G4DataVector& p) const; + + G4double Function(G4double x, const G4DataVector& p) const; + + + // Hide copy constructor and assignment operator + G4eBremsstrahlungSpectrum(const G4eBremsstrahlungSpectrum&); + G4eBremsstrahlungSpectrum & operator = (const G4eBremsstrahlungSpectrum &right); + + G4BremsstrahlungParameters* theBRparam; + G4double lowestE; + size_t length; + G4int verbose; + G4DataVector xp; +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh b/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh new file mode 100644 index 0000000000..10a6ddcfa3 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4eIonisationCrossSectionHandler.hh @@ -0,0 +1,87 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// $Id: G4eIonisationCrossSectionHandler.hh,v 1.2 2001/10/10 17:37:27 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4eIonisationCrossSectionHandler +// +// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch) +// +// Creation date: 17 September 2001 +// +// Modified: +// 10 Oct 2001 M.G. Pia Revision to improve code quality and consistency with design +// +// ------------------------------------------------------------------- + +// Class description: +// Provides cross sections with cut for LowEnergyIonisation +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- +// + +#ifndef G4EIONISATIONCROSSSECTIONHANDLER_HH +#define GG4EIONISATIONCROSSSECTIONHANDLER_HH 1 + +#include "G4VCrossSectionHandler.hh" +#include "globals.hh" + +class G4VEnergySpectrum; +class G4DataVector; +class G4VEMDataSet; +class G4VDataSetAlgorithm; + +class G4eIonisationCrossSectionHandler : public G4VCrossSectionHandler +{ +public: + + G4eIonisationCrossSectionHandler(const G4VEnergySpectrum* spec, + G4VDataSetAlgorithm* alg, + G4double emin, + G4double emax, + G4int nbin); + + ~G4eIonisationCrossSectionHandler(); + +protected: + + G4std::vector* BuildCrossSectionsForMaterials( + const G4DataVector& energyVector, + const G4DataVector* energyCuts); + + +private: + + const G4VEnergySpectrum* theParam; + + G4VDataSetAlgorithm* interp; +}; + +#endif + diff --git a/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh b/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh new file mode 100644 index 0000000000..7bc4aab710 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4eIonisationParameters.hh @@ -0,0 +1,94 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4eIonisationParameters.hh,v 1.6 2001/11/29 19:01:45 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// V. Ivanchenko +// Values of the parameters from A. Forti's fit +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// 12.09.01 V.Ivanchenko Add param and interpolation of parametersVI +// 10.10.2001 MGP Revision to improve code quality and +// consistency with design +// 29.11.01 V.Ivanchenko Parametrisation is updated +// +// ------------------------------------------------------------------- + +// Class description: +// Low Energy Electromagnetic Physics +// Set of parameters for LowEnergyIonisation described spectrum +// of delta-electrons retrieved from EEDL database. +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4IONISATIONPARAMETERS_HH +#define G4IONISATIONPARAMETERS_HH 1 + +#include "globals.hh" +#include "G4DataVector.hh" +#include "g4std/map" + +class G4VDataSetAlgorithm; +class G4VEMDataSet; + +class G4eIonisationParameters { + +public: + + G4eIonisationParameters(G4int minZ = 1, G4int maxZ = 99); + + ~G4eIonisationParameters(); + + G4double Parameter(G4int Z, G4int shellIndex, + G4int parameterIndex, G4double e) const; + + G4double Excitation(G4int Z, G4double e) const; + + void PrintData() const; + +private: + + // Hide copy constructor and assignment operator + G4eIonisationParameters(const G4eIonisationParameters&); + G4eIonisationParameters & operator=(const G4eIonisationParameters &right); + + void LoadData(); + + G4int zMin; + G4int zMax; + + G4DataVector activeZ; + + // Parameters of the energy spectra + G4std::map > param; + G4std::map > excit; + + size_t length; +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh b/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh new file mode 100644 index 0000000000..68f3bd9c73 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4eIonisationSpectrum.hh @@ -0,0 +1,115 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// $Id: G4eIonisationSpectrum.hh,v 1.3 2001/11/29 19:01:45 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4eIonisationSpectrum +// +// Author: V.Ivanchenko (Vladimir.Ivantchenko@cern.ch) +// +// Creation date: 27 September 2001 +// +// Modifications: +// 10.10.01 MGP Revision to improve code quality and +// consistency with design +// 29.11.01 V.Ivanchenko Parametrisation is updated +// +// ------------------------------------------------------------------- + +// Class Description: +// Provides various integration over delta-electron spectrum for e- +// ionisation process. Spectrum is parametrised accourding to +// EEDL database, details are described in the Physics Reference Manual +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- + +#ifndef G4EIONISATIONSPECTRUM_HH +#define GG4EIONISATIONSPECTRUM_HH 1 + +#include "G4VEnergySpectrum.hh" + +class G4eIonisationParameters; +class G4DataVector; + +class G4eIonisationSpectrum : public G4VEnergySpectrum +{ + +public: + + G4eIonisationSpectrum(); + + ~G4eIonisationSpectrum(); + + G4double Probability(G4int Z, G4double tMin, G4double tMax, + G4double kineticEnergy, G4int shell, + const G4ParticleDefinition* pd=0) const; + + G4double AverageEnergy(G4int Z, G4double tMin, G4double tMax, + G4double kineticEnergy, G4int shell, + const G4ParticleDefinition* pd=0) const; + + G4double SampleEnergy(G4int Z, G4double tMin, G4double tMax, + G4double kineticEnergy, G4int shell, + const G4ParticleDefinition* pd=0) const; + + G4double MaxEnergyOfSecondaries(G4double kineticEnergy, + G4int Z = 0, + const G4ParticleDefinition* pd=0) const + { return 0.5*kineticEnergy; }; + + G4double Excitation(G4int Z, G4double e) const; + + void PrintData() const; + +protected: + +private: + + G4double IntSpectrum(G4double xMin, G4double xMax, + const G4DataVector& p) const; + + G4double AverageValue(G4double xMin, G4double xMax, + const G4DataVector& p) const; + + G4double Function(G4double x, const G4DataVector& p) const; + + // Hide copy constructor and assignment operator + G4eIonisationSpectrum(const G4eIonisationSpectrum&); + G4eIonisationSpectrum & operator = (const G4eIonisationSpectrum &right); + +private: + + G4eIonisationParameters* theParam; + G4double lowestE; + G4double factor; + G4int verbose; +}; + + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh index fe46e8b12f..53293c3415 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.hh @@ -21,11 +21,28 @@ // ******************************************************************** // // -// $Id: G4eLowEnergyLoss.hh,v 1.1.4.2 2001/06/28 20:19:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eLowEnergyLoss.hh,v 1.7 2001/11/23 11:45:20 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------------------------------------------------------ -// GEANT 4 class header file +// ------------------------------------------------------------------- + +// Class description: +// Low Energy electromagnetic process, electron energy loss +// Further documentation available from http://www.ge.infn.it/geant4/lowE + +// ------------------------------------------------------------------- +// +// This class is the implementation of the unified Energy Loss process. +// It calculates the continuous energy loss for e+/e-. +// The following processes give contributions to the continuous +// energy loss (by default) : +// --- ionisation (= cont.ion.loss + delta ray production) +// --- bremsstrahlung (= cont.loss due to soft brems+discrete bremsstrahlung) +// more can be added .......... +// This class creates static dE/dx and range tables for e+ and e-, +// which tables can be used by other processes , too. +// G4eLowEnergyLoss is the base class for the processes giving contribution +// to the (continuous) energy loss of e+/e- . // // History: first implementation, based on object model of // 2nd December 1995, G.Cosmo @@ -37,6 +54,8 @@ // 16.10.98 public method SetStepFunction() + messenger class // 20.01.99 new data members , L.Urban // 10.02.00 modifications, new e.m. structure , L.Urban +// 18.10.01 Revision to improve code quality and consistency with design +// 23.11.01 V.Ivanchenko Move static member-functions from header to source // ------------------------------------------------------------ #ifndef G4eLowEnergyLoss_h @@ -58,20 +77,6 @@ #include "G4PhysicsLinearVector.hh" #include "G4EnergyLossTables.hh" -// Class description: -// This class is the implementation of the unified Energy Loss process. -// It calculates the continuous energy loss for e+/e-. -// The following processes give contributions to the continuous -// energy loss (by default) : -// --- ionisation (= cont.ion.loss + delta ray production) -// --- bremsstrahlung (= cont.loss due to soft brems+discrete bremsstrahlung) -// more can be added .......... -// This class creates static dE/dx and range tables for e+ and e-, -// which tables can be used by other processes , too. -// G4eLowEnergyLoss is the base class for the processes giving contribution -// to the (continuous) energy loss of e+/e- . -// Class description - end - class G4EnergyLossMessenger; class G4eLowEnergyLoss : public G4VeLowEnergyLoss @@ -83,8 +88,6 @@ class G4eLowEnergyLoss : public G4VeLowEnergyLoss ~G4eLowEnergyLoss(); - public: // With description - G4bool IsApplicable(const G4ParticleDefinition&); // true for e+/e- , false otherwise @@ -110,22 +113,38 @@ class G4eLowEnergyLoss : public G4VeLowEnergyLoss // ( ionisation and bremsstrahlung) . virtual G4VParticleChange* PostStepDoIt(const G4Track& track, - const G4Step& Step) = 0; + const G4Step& step) = 0; // Virtual function to be overridden in the derived classes // ( ionisation and bremsstrahlung) . + static void SetNbOfProcesses(G4int nb); + // Sets number of processes giving contribution to the energy loss + + static void PlusNbOfProcesses(); + // Increases number of processes giving contribution to the energy loss + + static void MinusNbOfProcesses(); + // Decreases number of processes giving contribution to the energy loss + + static G4int GetNbOfProcesses(); + // Gets number of processes giving contribution to the energy loss + // ( default value = 2) + + static void SetLowerBoundEloss(G4double val); + static void SetUpperBoundEloss(G4double val); + static void SetNbinEloss(G4int nb); + + static G4double GetLowerBoundEloss(); + static G4double GetUpperBoundEloss(); + static G4int GetNbinEloss(); + - private: - - G4double GetConstraints(const G4DynamicParticle* aParticle, - G4Material* aMaterial); - - // hide assignment operator - G4eLowEnergyLoss (G4eLowEnergyLoss &); - G4eLowEnergyLoss & operator=(const G4eLowEnergyLoss &right); - protected: + virtual G4std::vector* DeexciteAtom(const G4Material* material, + G4double incidentEnergy, + G4double eLoss) { return 0; } + G4PhysicsTable* theLossTable; G4double MinKineticEnergy ; // particle with kinetic energy @@ -134,51 +153,6 @@ class G4eLowEnergyLoss : public G4VeLowEnergyLoss G4double Charge,lastCharge ; - - private: - - G4PhysicsTable* theDEDXTable; - - G4int CounterOfProcess; - G4PhysicsTable** RecorderOfProcess; - - G4double fdEdx; // computed in GetConstraints - G4double fRangeNow; // computed in GetConstraints - - G4double linLossLimit ; // used in AlongStepDoIt - - - //New ParticleChange - G4ParticleChangeForLoss fParticleChange ; - - // - // static part of the class - // - public: // With description - - static void SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;}; - // Sets number of processes giving contribution to the energy loss - - static void PlusNbOfProcesses() {NbOfProcesses++ ;}; - // Increases number of processes giving contribution to the energy loss - - static void MinusNbOfProcesses() {NbOfProcesses-- ;}; - // Decreases number of processes giving contribution to the energy loss - - static G4int GetNbOfProcesses() {return NbOfProcesses;}; - // Gets number of processes giving contribution to the energy loss - // ( default value = 2) - - static void SetLowerBoundEloss(G4double val) {LowerBoundEloss=val;}; - static void SetUpperBoundEloss(G4double val) {UpperBoundEloss=val;}; - static void SetNbinEloss(G4int nb) {NbinEloss=nb;}; - - static G4double GetLowerBoundEloss() {return LowerBoundEloss;}; - static G4double GetUpperBoundEloss() {return UpperBoundEloss;}; - static G4int GetNbinEloss() {return NbinEloss;}; - - protected: - //basic DEDX and Range tables static G4PhysicsTable* theDEDXElectronTable ; static G4PhysicsTable* theDEDXPositronTable ; @@ -205,7 +179,34 @@ class G4eLowEnergyLoss : public G4VeLowEnergyLoss static G4PhysicsTable** RecorderOfElectronProcess; static G4PhysicsTable** RecorderOfPositronProcess; + private: + + G4double GetConstraints(const G4DynamicParticle* aParticle, + G4Material* aMaterial); + + // hide assignment operator + G4eLowEnergyLoss (G4eLowEnergyLoss &); + G4eLowEnergyLoss & operator=(const G4eLowEnergyLoss &right); + + + G4PhysicsTable* theDEDXTable; + + G4int CounterOfProcess; + G4PhysicsTable** RecorderOfProcess; + + G4double fdEdx; // computed in GetConstraints + G4double fRangeNow; // computed in GetConstraints + + G4double linLossLimit ; // used in AlongStepDoIt + + + //New ParticleChange + G4ParticleChangeForLoss fParticleChange ; + + // + // static part of the class + // static G4int NbinEloss; // number of bins in table, // calculated in BuildPhysicTable diff --git a/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc index 5e5a310f4e..4ed405fe02 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4eLowEnergyLoss.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4eLowEnergyLoss.icc,v 1.2.2.2 2001/06/28 20:19:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eLowEnergyLoss.icc,v 1.3 2001/07/11 10:02:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // --------------------------------------------------------------- // GEANT 4 class inlined methods file diff --git a/source/processes/electromagnetic/lowenergy/include/G4hBetheBlochModel.hh b/source/processes/electromagnetic/lowenergy/include/G4hBetheBlochModel.hh index 7d50cb3174..aaf49389aa 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hBetheBlochModel.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hBetheBlochModel.hh @@ -46,8 +46,13 @@ #ifndef G4hBetheBlochModel_h #define G4hBetheBlochModel_h 1 +#include "globals.hh" #include "G4VLowEnergyModel.hh" +class G4Material; +class G4ParticleDefinition; +class G4DynamicParticle; + class G4hBetheBlochModel : public G4VLowEnergyModel { diff --git a/source/processes/electromagnetic/lowenergy/include/G4hICRU49He.hh b/source/processes/electromagnetic/lowenergy/include/G4hICRU49He.hh index 9fc494f590..cd5b1da41e 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hICRU49He.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hICRU49He.hh @@ -47,8 +47,11 @@ #ifndef G4hICRU49He_h #define G4hICRU49He_h 1 +#include "globals.hh" #include "G4VhElectronicStoppingPower.hh" +class G4Material; + class G4hICRU49He : public G4VhElectronicStoppingPower { diff --git a/source/processes/electromagnetic/lowenergy/include/G4hICRU49Nuclear.hh b/source/processes/electromagnetic/lowenergy/include/G4hICRU49Nuclear.hh index b9d6ce98b0..c46ca5334e 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hICRU49Nuclear.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hICRU49Nuclear.hh @@ -48,6 +48,7 @@ #ifndef G4hICRU49Nuclear_h #define G4hICRU49Nuclear_h 1 +#include "globals.hh" #include "G4VhNuclearStoppingPower.hh" class G4hICRU49Nuclear : public G4VhNuclearStoppingPower diff --git a/source/processes/electromagnetic/lowenergy/include/G4hICRU49p.hh b/source/processes/electromagnetic/lowenergy/include/G4hICRU49p.hh index bb96c4e9b6..ecfe69e486 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hICRU49p.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hICRU49p.hh @@ -48,8 +48,11 @@ #ifndef G4hICRU49p_h #define G4hICRU49p_h 1 +#include "globals.hh" #include "G4VhElectronicStoppingPower.hh" +class G4Material; + class G4hICRU49p : public G4VhElectronicStoppingPower { diff --git a/source/processes/electromagnetic/lowenergy/include/G4hIonEffChargeSquare.hh b/source/processes/electromagnetic/lowenergy/include/G4hIonEffChargeSquare.hh index 47184e6ea9..815d40576d 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hIonEffChargeSquare.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hIonEffChargeSquare.hh @@ -48,8 +48,13 @@ #ifndef G4hIonEffChargeSquare_h #define G4hIonEffChargeSquare_h 1 +#include "globals.hh" #include "G4VLowEnergyModel.hh" +class G4Material; +class G4ParticleDefinition; +class G4DynamicParticle; + class G4hIonEffChargeSquare : public G4VLowEnergyModel { diff --git a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.hh b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.hh index 9628828ba9..09ce864fb9 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.hh @@ -42,6 +42,8 @@ // 09 August 2000 V.Ivanchenko Add GetContinuousStepLimit // 17 August 2000 V.Ivanchenko Add IonFluctuationModel // 23 Oct 2000 V.Ivanchenko Renew comments +// 30 Oct 2001 V.Ivanchenko Add minGammaEnergy and minElectronEnergy +// 07 Dec 2001 V.Ivanchenko Add SetFluorescence method // ------------------------------------------------------------ // Class Description: @@ -64,6 +66,7 @@ #ifndef G4hLowEnergyIonisation_h #define G4hLowEnergyIonisation_h 1 +#include "globals.hh" #include "G4hLowEnergyLoss.hh" #include "G4VLowEnergyModel.hh" #include "G4Track.hh" @@ -78,6 +81,11 @@ #include "G4hIonEffChargeSquare.hh" #include "G4IonChuFluctuationModel.hh" #include "G4IonYangFluctuationModel.hh" +#include "G4AtomicDeexcitation.hh" + +class G4VEMDataSet; +class G4ShellVacancy; +class G4VhShellCrossSection; class G4hLowEnergyIonisation : public G4hLowEnergyLoss { @@ -155,7 +163,10 @@ public: // With description void SetBarkasOff() {theBarkas = false;}; // This method switch off calculation of the Barkas and Bloch effects. - + + void SetFluorescence(const G4bool val) {theFluo = val;}; + // This method switch on/off simulation of the fluorescence of the media. + G4VParticleChange* AlongStepDoIt(const G4Track& trackData , const G4Step& stepData ) ; // Function to determine total energy deposition on the step @@ -169,6 +180,13 @@ public: // With description G4double kineticEnergy); // This method returns electronic dE/dx for protons or antiproton. + void SetCutForSecondaryPhotons(G4double cut); + // Set threshold energy for fluorescence + + void SetCutForAugerElectrons(G4double cut); + // Set threshold energy for Auger electron production + + protected: private: @@ -177,9 +195,11 @@ private: void InitializeParametrisation(); - void BuildLossTable(const G4ParticleDefinition& aParticleType) ; + void BuildLossTable(const G4ParticleDefinition& aParticleType); - void BuildLambdaTable(const G4ParticleDefinition& aParticleType) ; + void BuildDataForFluorescence(const G4ParticleDefinition& aParticleType); + + void BuildLambdaTable(const G4ParticleDefinition& aParticleType); void SetProtonElectronicStoppingPowerModel(const G4String& dedxTable) {theProtonTable = dedxTable ;}; @@ -224,6 +244,14 @@ private: G4double meanLoss, G4double step) const; // Function to sample electronic losses + + G4std::vector* DeexciteAtom(const G4Material* material, + G4double incidentEnergy, + G4double hMass, + G4double eLoss); + + G4int SelectRandomAtom(const G4Material* material, + G4double kineticEnergy) const; // hide assignment operator G4hLowEnergyIonisation & operator=(const G4hLowEnergyIonisation &right); @@ -254,7 +282,10 @@ private: G4bool nStopping; G4bool theBarkas; - G4double* deltaCutInKineticEnergy; + G4DataVector cutForDelta; + G4DataVector cutForGamma; + G4double minGammaEnergy; + G4double minElectronEnergy; G4PhysicsTable* theMeanFreePathTable; const G4double paramStepLimit; // parameter limits the step at low energy @@ -264,13 +295,41 @@ private: G4double charge; // G4double chargeSquare; // -protected: - -private: + G4AtomicDeexcitation deexcitationManager; + G4ShellVacancy* shellVacancy; + G4VhShellCrossSection* shellCS; + G4std::vector zFluoDataVector; + G4bool theFluo; }; -#include "G4hLowEnergyIonisation.icc" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline G4double G4hLowEnergyIonisation::GetContinuousStepLimit( + const G4Track& track, + G4double, + G4double currentMinimumStep, + G4double&) +{ + G4double Step = + GetConstraints(track.GetDynamicParticle(),track.GetMaterial()) ; + + if((Step>0.0)&&(Step proton_mass_c2*0.1); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... #endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.icc b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.icc deleted file mode 100644 index 17759c6111..0000000000 --- a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyIonisation.icc +++ /dev/null @@ -1,98 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4hLowEnergyIonisation physics process ------ -// by Vladimir Ivanchenko, 27 July 1999 -// was made on the base of G4hIonisation class -// developed by Laszlo Urban -// ************************************************************ -// It is the extention of the ionisation process for the slow -// charged hadrons. -// ************************************************************ -// 28 July 1999 V.Ivanchenko cleen up -// 09 Aug 2000 V.Ivanchenko add GetContinuousStepLimit -// 23 Oct 2000 V.Ivanchenko add control on particle mass -// --------------------------------------------------------------- - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4hLowEnergyIonisation::GetMeanFreePath( - const G4Track& trackData, - G4double previousStepSize, - enum G4ForceCondition* condition) -{ - const G4DynamicParticle* aParticle = trackData.GetDynamicParticle() ; - G4Material* aMaterial = trackData.GetMaterial() ; - G4double meanFreePath; - G4bool isOutRange ; - - *condition = NotForced ; - - G4double kineticEnergy = aParticle->GetKineticEnergy() ; - - if(kineticEnergy < LowestKineticEnergy) meanFreePath = DBL_MAX; - - else { - if(kineticEnergy > HighestKineticEnergy) - kineticEnergy = HighestKineticEnergy ; - meanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> - GetValue(kineticEnergy,isOutRange) ; - } - - return meanFreePath ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -inline G4double G4hLowEnergyIonisation::GetContinuousStepLimit( - const G4Track& track, - G4double, - G4double currentMinimumStep, - G4double&) -{ - G4double Step = - GetConstraints(track.GetDynamicParticle(),track.GetMaterial()) ; - - if((Step>0.0)&&(Step proton_mass_c2*0.1); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - - - - diff --git a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh index ad9676f354..080b0b047f 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4hLowEnergyLoss.hh,v 1.10.2.2 2001/06/28 20:19:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4hLowEnergyLoss.hh,v 1.13 2001/11/23 11:45:20 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // ------------------------------------------------------------ @@ -49,6 +49,7 @@ // 02/02/99 L.Urban several bugs fixed // 31/03/00 V.Ivanchenko rename to lowenergy as G4hLowEnergyLoss.hh // 09/08/00 V.Ivanchenko remove GetContinuousStepLimit and IsApplicable +// 23/11/01 V.Ivanchenko Move static member-functions from header to source // // Class description: // Class for Low Energy electromagnetic energy loss of hadrons @@ -126,29 +127,21 @@ class G4hLowEnergyLoss : public G4VContinuousDiscreteProcess public: // get the number of processes contributing to the cont.energy loss - static G4int GetNumberOfProcesses() { return NumberOfProcesses; }; + static G4int GetNumberOfProcesses(); // set the number of processes contributing to the cont.energy loss - static void SetNumberOfProcesses(G4int number) - {NumberOfProcesses=number ; }; + static void SetNumberOfProcesses(G4int number); // Increment the number of processes contributing to the cont.energy loss - static void PlusNumberOfProcesses() - { NumberOfProcesses++ ; }; + static void PlusNumberOfProcesses(); // decrement the number of processes contributing to the cont.energy loss - static void MinusNumberOfProcesses() - { NumberOfProcesses-- ; }; + static void MinusNumberOfProcesses(); - static void SetdRoverRange(G4double value) {dRoverRange = value;} - static void SetRndmStep (G4bool value) {rndmStepFlag = value;} - static void SetEnlossFluc (G4bool value) {EnlossFlucFlag = value;} - static void SetStepFunction (G4double c1, G4double c2) - {dRoverRange = c1; finalRange = c2; - c1lim=dRoverRange ; - c2lim=2.*(1-dRoverRange)*finalRange; - c3lim=-(1.-dRoverRange)*finalRange*finalRange; - } + static void SetdRoverRange(G4double value); + static void SetRndmStep (G4bool value); + static void SetEnlossFluc (G4bool value); + static void SetStepFunction (G4double c1, G4double c2); protected: diff --git a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc index 913b904a20..1e913a9ad4 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4hLowEnergyLoss.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4hLowEnergyLoss.icc,v 1.1.4.2 2001/06/28 20:19:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4hLowEnergyLoss.icc,v 1.2 2001/07/11 10:02:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // --------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4hNuclearStoppingModel.hh b/source/processes/electromagnetic/lowenergy/include/G4hNuclearStoppingModel.hh index ae0d541520..2d664f063b 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hNuclearStoppingModel.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hNuclearStoppingModel.hh @@ -46,9 +46,14 @@ #ifndef G4hNuclearStoppingModel_h #define G4hNuclearStoppingModel_h 1 +#include "globals.hh" #include "G4VLowEnergyModel.hh" #include "G4VhNuclearStoppingPower.hh" +class G4ParticleDefinition; +class G4Material; +class G4DynamicParticle; + class G4hNuclearStoppingModel : public G4VLowEnergyModel { diff --git a/source/processes/electromagnetic/lowenergy/include/G4hParametrisedLossModel.hh b/source/processes/electromagnetic/lowenergy/include/G4hParametrisedLossModel.hh index af885f0947..fea6bd29e7 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hParametrisedLossModel.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hParametrisedLossModel.hh @@ -46,9 +46,14 @@ #ifndef G4hParametrisedLossModel_h #define G4hParametrisedLossModel_h 1 +#include "globals.hh" #include "G4VLowEnergyModel.hh" #include "G4VhElectronicStoppingPower.hh" +class G4DynamicParticle; +class G4ParticleDefinition; +class G4Material; + class G4hParametrisedLossModel : public G4VLowEnergyModel { diff --git a/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSection.hh b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSection.hh new file mode 100644 index 0000000000..79beebdd3b --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/include/G4hShellCrossSection.hh @@ -0,0 +1,74 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4hShellCrossSection +// +// Author: S. Dussoni and A. Mantero (Alfonso.Mantero@ge.infn.it) +// +// History: +// ----------- +// 23 Oct 2001 A. Mantero 1st implementation +// 24 Oct 2001 MGP Cleaned up +// 29 Oct 2001 VI Add delta energy +// +// ------------------------------------------------------------------- + +// Class Description: +// Model for shell cross sections in proton ionisation + +// ------------------------------------------------------------------- + +#ifndef G4HSHELLCROSSSECTION_HH +#define G4HSHELLCROSSSECTION_HH 1 + +#include "globals.hh" +#include "G4VhShellCrossSection.hh" + +class G4hShellCrossSection : public G4VhShellCrossSection +{ +public: + + G4hShellCrossSection(); + + virtual ~G4hShellCrossSection(); + +protected: + + virtual G4std::vector Probabilities(G4int Z, + G4double incidentEnergy, + G4double mass, + G4double deltaEnergy) const; + +private: + + // Hide copy constructor and assignment operator + G4hShellCrossSection(const G4hShellCrossSection&); + G4hShellCrossSection & operator = (const G4hShellCrossSection &right); + +}; + +#endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977He.hh b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977He.hh index 0e5cf90e2e..1418b7e712 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977He.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977He.hh @@ -48,8 +48,11 @@ #ifndef G4hZiegler1977He_h #define G4hZiegler1977He_h 1 +#include "globals.hh" #include "G4VhElectronicStoppingPower.hh" +class G4Material; + class G4hZiegler1977He : public G4VhElectronicStoppingPower { diff --git a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977Nuclear.hh b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977Nuclear.hh index 333799779c..2be1c08f2a 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977Nuclear.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977Nuclear.hh @@ -48,6 +48,7 @@ #ifndef G4hZiegler1977Nuclear_h #define G4hZiegler1977Nuclear_h 1 +#include "globals.hh" #include "G4VhNuclearStoppingPower.hh" class G4hZiegler1977Nuclear : public G4VhNuclearStoppingPower diff --git a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977p.hh b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977p.hh index 6edfea941c..17f19fc8d5 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977p.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1977p.hh @@ -48,8 +48,11 @@ #ifndef G4hZiegler1977p_h #define G4hZiegler1977p_h 1 +#include "globals.hh" #include "G4VhElectronicStoppingPower.hh" +class G4Material; + class G4hZiegler1977p : public G4VhElectronicStoppingPower { diff --git a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1985Nuclear.hh b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1985Nuclear.hh index a8d8a10bfa..e9c7a2c8e5 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1985Nuclear.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1985Nuclear.hh @@ -49,6 +49,7 @@ #ifndef G4hZiegler1985Nuclear_h #define G4hZiegler1985Nuclear_h 1 +#include "globals.hh" #include "G4VhNuclearStoppingPower.hh" class G4hZiegler1985Nuclear : public G4VhNuclearStoppingPower diff --git a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1985p.hh b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1985p.hh index 138afb0635..6fc5c22d4b 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4hZiegler1985p.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4hZiegler1985p.hh @@ -48,8 +48,11 @@ #ifndef G4hZiegler1985p_h #define G4hZiegler1985p_h 1 +#include "globals.hh" #include "G4VhElectronicStoppingPower.hh" +class G4Material; + class G4hZiegler1985p : public G4VhElectronicStoppingPower { diff --git a/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc b/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc new file mode 100644 index 0000000000..9155c2c9a8 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4AtomicDeexcitation.cc @@ -0,0 +1,237 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4AtomicTransitionManager.hh,v 1.2 ???? +// GEANT4 tag $Name: geant4-04-00 $ +// +// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// Alfonso Mantero (Alfonso.Mantero@ge.infn.it) +// +// History: +// ----------- +// +// 16 Sept 2001 First committed to cvs +// +// ------------------------------------------------------------------- + +#include "G4AtomicDeexcitation.hh" +#include "Randomize.hh" +#include "G4Gamma.hh" + +G4AtomicDeexcitation::G4AtomicDeexcitation() +{ } + +G4AtomicDeexcitation::~G4AtomicDeexcitation() + +{ } + +G4std::vector* G4AtomicDeexcitation::GenerateParticles(G4int Z,G4int shellId) +{ + G4std::vector* vectorOfParticles = new G4std::vector; + G4DynamicParticle* aParticle; + G4int provShellId = 0; + G4int counter = 0; + + // The aim of this loop is to generate more than one fluorecence photon + // from the same ionizing event + while (provShellId >= 0) + { + if (counter == 0) + // First call to GenerateParticles(...): + // shellId is given by the process + { + provShellId = SelectTypeOfTransition(Z, shellId); + + if ( provShellId >0) + { + aParticle = GenerateFluorescence(Z,shellId,provShellId); + } + else if ( provShellId ==-1) + { + aParticle = GenerateAuger(Z, shellId); + } + else + { + G4Exception("G4AtomicDeexcitation: starting shell uncorrect: check it"); + } + } + else + // Following calls to GenerateParticles(...): + // newShellId is given by GenerateFluorescence(...) + { + provShellId = SelectTypeOfTransition(Z,newShellId); + if ( provShellId >0) + { + aParticle = GenerateFluorescence(Z,newShellId,provShellId); + } + else if ( provShellId ==-1) + { + aParticle = GenerateAuger(Z, newShellId); + } + else + { + G4Exception("G4AtomicDeexcitation: starting shell uncorrect: check it"); + } + } + counter++; + vectorOfParticles->push_back(aParticle); + } + + return vectorOfParticles; +} + +const G4int G4AtomicDeexcitation::SelectTypeOfTransition(G4int Z, G4int shellId) +{ + if (shellId <=0 ) + {G4Exception("G4AtomicDeexcitation: zero or negative shellId");} + + G4AtomicTransitionManager* transitionManager = G4AtomicTransitionManager::Instance(); + G4int provShellId = -1; + G4int shellNum = 0; + G4int maxNumOfShells = transitionManager->NumberOfReachableShells(Z); + + const G4AtomicTransition* refShell = transitionManager->ReachableShell(Z,maxNumOfShells-1); + + // This loop gives shellNum the value of the index of shellId + // in the vector storing the list of the shells reachable through + // a radiative transition + if ( shellId <= refShell->FinalShellId()) + { + while (shellId != transitionManager->ReachableShell(Z,shellNum)->FinalShellId()) + { + if(shellNum ==maxNumOfShells-1) + { + break; + } + shellNum++; + } + G4int transProb = 1; + + G4double partialProb = G4UniformRand(); + G4double partSum = 0; + const G4AtomicTransition* aShell = transitionManager->ReachableShell(Z,shellNum); + G4int trSize = (aShell->TransitionProbabilities()).size(); + + // Loop over the shells wich can provide an electron for a + // radiative transition towards shellId: + // in every loop the partial sum of the first transProb shells + // is calculated and compared with a random number [0,1]. + // If the partial sum is greater the shell whose index transProb + // is chosen as the starting shell for a radiative transition + // and its identity is returned + // Else, terminateded the loop, -1 is returned + while(transProb < trSize){ + + partSum += aShell->TransitionProbability(transProb); + + if(partialProb <= partSum) + { + provShellId = aShell->OriginatingShellId(transProb); + break; + } + transProb++; + } + } + else + { + provShellId = -1; + + } + return provShellId; +} + +G4DynamicParticle* G4AtomicDeexcitation::GenerateFluorescence(G4int Z, + G4int shellId, + G4int provShellId ) +{ + G4AtomicTransitionManager* transitionManager = G4AtomicTransitionManager::Instance(); + // G4int provenienceShell = provShellId; + + //isotropic angular distribution for the outcoming photon + G4double newcosTh = 1.-2.*G4UniformRand(); + G4double newsinTh = sqrt(1.-newcosTh*newcosTh); + G4double newPhi = twopi*G4UniformRand(); + + G4double xDir = newsinTh*sin(newPhi); + G4double yDir = newsinTh*cos(newPhi); + G4double zDir = newcosTh; + + G4ThreeVector newGammaDirection(xDir,yDir,zDir); + + G4int shellNum = 0; + G4int maxNumOfShells = transitionManager->NumberOfReachableShells(Z); + + // find the index of the shell named shellId + while (shellId != transitionManager-> + ReachableShell(Z,shellNum)->FinalShellId()) + { + if(shellNum == maxNumOfShells-1) + { + break; + } + shellNum++; + } + // number of shell from wich an electron can reach shellId + size_t transitionSize = transitionManager-> + ReachableShell(Z,shellNum)->OriginatingShellIds().size(); + + size_t index = 0; + + // find the index of the shell named provShellId in the vector + // storing the shells from which shellId can be reached + while (provShellId != transitionManager-> + ReachableShell(Z,shellNum)->OriginatingShellId(index)) + { + if(index == transitionSize-1) + { + break; + } + index++; + } + // energy of the gamma leaving provShellId for shellId + G4double transitionEnergy = transitionManager-> + ReachableShell(Z,shellNum)->TransitionEnergy(index); + + // This is the shell where the new vacancy is: it is the same + // shell where the electron came from + newShellId = transitionManager-> + ReachableShell(Z,shellNum)->OriginatingShellId(index); + + + G4DynamicParticle* newPart = new G4DynamicParticle(G4Gamma::Gamma(), + newGammaDirection, + transitionEnergy); + return newPart; +} + +G4DynamicParticle* G4AtomicDeexcitation::GenerateAuger(G4int Z, G4int shellId) +{ + return 0; +} + + + + + + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc b/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc new file mode 100644 index 0000000000..86265ebea0 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4AtomicShell.cc @@ -0,0 +1,57 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4AtomicShell.cc,v 1.2 ???? +// GEANT4 tag $Name: geant4-04-00 $ +// +// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// Alfonso Mantero (Alfonso.Mantero@ge.infn.it) +// +// History: +// ----------- +// 16 Sept 2001 EG Modified according to a design iteration in the +// LowEnergy category +// +// ------------------------------------------------------------------- + +#include "G4AtomicShell.hh" + +G4AtomicShell::G4AtomicShell(G4int id, G4double energy) +{ + identifier = id; + bindingEnergy = energy; +} + +G4AtomicShell::~G4AtomicShell() +{ } + +G4double G4AtomicShell::BindingEnergy() const { + + return bindingEnergy; +} + + +G4int G4AtomicShell::ShellId() const{ + + return identifier; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4AtomicTransition.cc b/source/processes/electromagnetic/lowenergy/src/G4AtomicTransition.cc new file mode 100644 index 0000000000..32cf9620bd --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4AtomicTransition.cc @@ -0,0 +1,84 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4AtomicTransition.cc,v 1.2 ???? +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 16 Sept 2001 EG Modified according to a design iteration in the +// LowEnergy category +// +// ------------------------------------------------------------------- + +#include "G4AtomicTransition.hh" + +G4AtomicTransition::G4AtomicTransition(G4int finalShell, + const G4std::vector& ids, + const G4DataVector& energies, + const G4DataVector& prob) +{ + finalShellId = finalShell; + originatingShellIds = ids; + transitionEnergies = energies; + transitionProbabilities = prob; +} + +G4AtomicTransition::~G4AtomicTransition() +{ } + +const G4std::vector& G4AtomicTransition::OriginatingShellIds() const +{ + return originatingShellIds; +} + +const G4DataVector& G4AtomicTransition::TransitionEnergies() const +{ + return transitionEnergies; +} + +const G4DataVector& G4AtomicTransition::TransitionProbabilities() const +{ + return transitionProbabilities; +} + +const G4int G4AtomicTransition::FinalShellId() const +{ + return finalShellId; +} + +G4int G4AtomicTransition::OriginatingShellId(G4int index) const +{ + return originatingShellIds[index]; +} +G4double G4AtomicTransition::TransitionEnergy(G4int index) const +{ + return transitionEnergies[index]; +} +G4double G4AtomicTransition::TransitionProbability(G4int index) const +{ + return transitionProbabilities[index]; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc b/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc new file mode 100644 index 0000000000..607e362964 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4AtomicTransitionManager.cc @@ -0,0 +1,324 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4AtomicTransitionManager.cc,v 1.2 ???? +// GEANT4 tag $Name: geant4-04-00 $ +// +// Authors: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// Alfonso Mantero (Alfonso.Mantero@ge.infn.it) +// +// History: +// ----------- +// 16 Sep 2001 E. Guardincerri First Committed to cvs +// +// ------------------------------------------------------------------- + +#include "G4AtomicTransitionManager.hh" + +G4AtomicTransitionManager::G4AtomicTransitionManager(G4int minZ, G4int maxZ, G4int limitInfTable,G4int limitSupTable) + :zMin(minZ), zMax(maxZ),infTableLimit(limitInfTable),supTableLimit(limitSupTable) +{ + // infTableLimit is initialized to 6 because EADL lacks data for Z<=5 + G4ShellData* shellManager = new G4ShellData; + + shellManager->LoadData("/fluor/binding"); + + // Fills shellTable with the data from EADL, identities and binding + // energies of shells + for (G4int Z = zMin; Z<= zMax; Z++) + { + G4std::vector vectorOfShells; + + size_t numberOfShells=shellManager->NumberOfShells(Z); + for (size_t shellIndex = 0; shellIndexShellId(Z,shellIndex); + G4double bindingEnergy = shellManager->BindingEnergy(Z,shellIndex); + + G4AtomicShell * shell = new G4AtomicShell(shellId,bindingEnergy); + + vectorOfShells.push_back(shell); + } + + // shellTable.insert(G4std::make_pair(Z, vectorOfShells)); + shellTable[Z] = vectorOfShells; + } + + // Fills transitionTable with the data from EADL, identities, transition + // energies and transition probabilities + for (G4int Znum= infTableLimit; Znum<=supTableLimit; Znum++) + { G4FluoData* fluoManager = new G4FluoData; + G4std::vector vectorOfTransitions; + fluoManager->LoadData(Znum); + + size_t numberOfVacancies = fluoManager-> NumberOfVacancies(); + + for (size_t vacancyIndex = 0; vacancyIndex vectorOfIds; + G4DataVector vectorOfEnergies; + G4DataVector vectorOfProbabilities; + + G4int finalShell = fluoManager->VacancyId(vacancyIndex); + size_t numberOfTransitions = fluoManager->NumberOfTransitions(vacancyIndex); + for (size_t origShellIndex = 0; origShellIndex <= numberOfTransitions;origShellIndex++) + + { + + G4int originatingShellId = fluoManager->StartShellId(origShellIndex,vacancyIndex); + + vectorOfIds.push_back(originatingShellId); + + G4double transitionEnergy = fluoManager->StartShellEnergy(origShellIndex,vacancyIndex); + vectorOfEnergies.push_back(transitionEnergy); + G4double transitionProbability = fluoManager->StartShellProb(origShellIndex,vacancyIndex); + vectorOfProbabilities.push_back(transitionProbability); + } + G4AtomicTransition * transition = new G4AtomicTransition (finalShell,vectorOfIds, + vectorOfEnergies,vectorOfProbabilities); + vectorOfTransitions.push_back(transition); + } + // transitionTable.insert(G4std::make_pair(Znum, vectorOfTransitions)); + transitionTable[Znum] = vectorOfTransitions; + + delete fluoManager; + } + delete shellManager; +} + +G4AtomicTransitionManager::~G4AtomicTransitionManager() + +{ G4std::map,G4std::less >::iterator pos; + + for (pos = shellTable.begin(); pos != shellTable.end(); pos++){ + + G4std::vector< G4AtomicShell*>vec = (*pos).second; + + G4int vecSize=vec.size(); + + for (G4int i=0; i< vecSize; i++){ + + delete vec[i]; + } + + } + + G4std::map,G4std::less >::iterator ppos; + + for (ppos = transitionTable.begin(); ppos != transitionTable.end(); ppos++){ + + G4std::vector< G4AtomicTransition*>vec = (*ppos).second; + + G4int vecSize=vec.size(); + + for (G4int i=0; i< vecSize; i++){ + + delete vec[i]; + } + + } + +} + +G4AtomicTransitionManager* G4AtomicTransitionManager::instance = 0; + +G4AtomicTransitionManager* G4AtomicTransitionManager::Instance() +{ + if (instance==0) + { + instance = new G4AtomicTransitionManager; + + } + return instance; +} + + +const G4AtomicShell* G4AtomicTransitionManager::Shell(G4int Z, size_t shellIndex) +{ + G4std::map,G4std::less >::iterator pos; + + pos = shellTable.find(Z); + + if (pos!= shellTable.end()){ + + G4std::vector v = (*pos).second; + + if (shellIndex,G4std::less >::iterator pos; + pos = transitionTable.find(Z); + if (pos!= transitionTable.end()) + { + G4std::vector v = (*pos).second; + if (shellIndex < v.size()) return(v[shellIndex]); + else { + G4Exception("G4AtomicTransitionManager:reachable shell not found"); + return 0; + } + } + else{ + G4Exception("G4AtomicTransitionManager:Z not found"); + return 0; + } +} + +G4int G4AtomicTransitionManager::NumberOfShells (G4int Z) +{ + +G4std::map,G4std::less >::iterator pos; + + pos = shellTable.find(Z); + + if (pos!= shellTable.end()){ + + G4std::vector v = (*pos).second; + + return v.size(); + } + + else{ + G4Exception( "G4AtomicTransitionManager: Z not found" ); + return 0; + } +} + +G4int G4AtomicTransitionManager::NumberOfReachableShells(G4int Z) +{ +G4std::map,G4std::less >::iterator pos; + + pos = transitionTable.find(Z); + + if (pos!= transitionTable.end()) + { + G4std::vector v = (*pos).second; + return v.size(); + } + else + { + G4Exception( "G4AtomicTransitionManager: Z not found" ); + return 0; + } +} + +G4double G4AtomicTransitionManager::TotalRadiativeTransitionProbability(G4int Z, + size_t shellIndex) + +{ +G4std::map,G4std::less >::iterator pos; + + pos = transitionTable.find(Z); + + if (pos!= transitionTable.end()) + { + G4std::vector v = (*pos).second; + + if (shellIndex < v.size()) + { + G4AtomicTransition* transition = v[shellIndex]; + G4DataVector transProb = transition->TransitionProbabilities(); + G4double totalRadTransProb = 0; + + for (size_t j = 1; j,G4std::less >::iterator pos; + + pos = transitionTable.find(Z); + + if (pos!= transitionTable.end()){ + + G4std::vector v = (*pos).second; + + + if (shellIndexTransitionProbabilities(); + G4double totalRadTransProb = 0; + + for(size_t j = 1; j* +G4BremsstrahlungCrossSectionHandler::BuildCrossSectionsForMaterials(const G4DataVector& energyVector, + const G4DataVector* energyCuts) +{ + G4std::vector* set = new G4std::vector; + + G4DataVector* energies; + G4DataVector* cs; + G4int nOfBins = energyVector.size(); + + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + if (materialTable == 0) + G4Exception("G4VCrossSectionHandler::G4VCrossSectionHandler - no MaterialTable found)"); + + G4int nMaterials = G4Material::GetNumberOfMaterials(); + + for (G4int m=0; mGetElementVector(); + const G4double* nAtomsPerVolume = material->GetVecNbOfAtomsPerVolume(); + G4int nElements = material->GetNumberOfElements(); + + G4double tcut = (*energyCuts)[m]; + + G4VDataSetAlgorithm* algo = interp->Clone(); + G4VEMDataSet* setForMat = new G4CompositeEMDataSet(algo,1.,1.); + + for (G4int i=0; iGetZ()); + energies = new G4DataVector; + cs = new G4DataVector; + G4double density = nAtomsPerVolume[i]; + + for (G4int bin=0; binpush_back(e); + G4double value = 0.0; + + if(e > tcut) { + G4double elemCs = FindValue(Z, e); + + value = theBR->Probability(Z, tcut, e, e); + + value *= elemCs*density; + } + cs->push_back(value); + } + G4VDataSetAlgorithm* algol = interp->Clone(); + G4VEMDataSet* elSet = new G4EMDataSet(i,energies,cs,algol,1.,1.); + setForMat->AddComponent(elSet); + } + set->push_back(setForMat); + } + + return set; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc b/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc new file mode 100644 index 0000000000..52b54bb081 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4BremsstrahlungParameters.cc @@ -0,0 +1,295 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4BremsstrahlungParameters.cc,v 1.11 2001/11/29 22:59:56 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// V.Ivanchenko (Vladimir.Ivantchenko@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// 12.09.01 V.Ivanchenko Add activeZ and paramA +// 25.09.01 V.Ivanchenko Add parameter C and change interface to B +// 29.11.01 V.Ivanchenko Update parametrisation +// +// ------------------------------------------------------------------- + +#include "G4BremsstrahlungParameters.hh" +#include "G4VEMDataSet.hh" +#include "G4EMDataSet.hh" +#include "G4LogLogInterpolation.hh" +#include "G4Material.hh" +#include "g4std/fstream" +#include "g4std/strstream" + + +G4BremsstrahlungParameters:: G4BremsstrahlungParameters(G4int minZ, G4int maxZ) + : zMin(minZ), + zMax(maxZ), + length(16) +{ + LoadData(); +} + + +G4BremsstrahlungParameters::~G4BremsstrahlungParameters() +{ + // Reset the map of data sets: remove the data sets from the map + G4std::map >::iterator pos; + + for (pos = param.begin(); pos != param.end(); pos++) + { + G4VEMDataSet* dataSet = (*pos).second; + delete dataSet; + } + + activeZ.clear(); + paramC.clear(); +} + + +G4double G4BremsstrahlungParameters::Parameter(G4int parameterIndex, + G4int Z, + G4double energy) const +{ + G4double value = 0.; + G4int id = Z*20 + parameterIndex; + G4std::map >::const_iterator pos; + + pos = param.find(id); + if (pos!= param.end()) { + + G4VEMDataSet* dataSet = (*pos).second; + const G4DataVector ener = dataSet->GetEnergies(0); + G4double ee = G4std::max(ener.front(),G4std::min(ener.back(),energy)); + value = dataSet->FindValue(ee); + + } else { + G4cout << "WARNING: G4BremsstrahlungParameters::FindValue " + << "did not find ID = " + << id << G4endl; + } + + return value; +} + +void G4BremsstrahlungParameters::LoadData() +{ + // Build the complete string identifying the file with the data set + + // define active elements + + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + if (materialTable == 0) + G4Exception("G4CrossSectionHandler: no MaterialTable found)"); + + G4int nMaterials = G4Material::GetNumberOfMaterials(); + + G4double x = 1.e-9; + for (G4int mm=0; mm<100; mm++) { + paramC.push_back(x); + } + + for (G4int m=0; mGetElementVector(); + const G4int nElements = material->GetNumberOfElements(); + + for (G4int iEl=0; iElGetZ(); + G4int iz = (G4int)Z; + if(iz < 100) + paramC[iz] = 0.217635e-33*(material->GetTotNbOfElectPerVolume()); + if (!(activeZ.contains(Z))) { + activeZ.push_back(Z); + } + } + } + + // Read parameters + + char* path = getenv("G4LEDATA"); + if (!path) + { + G4String excep = G4String("G4BremsstrahlungParameters - G4LEDATA") + + G4String("environment variable not set"); + G4Exception(excep); + } + + G4String pathString_a(path); + G4String name_a = pathString_a + "/brem/br-sp.dat"; + G4std::ifstream file_a(name_a); + G4std::filebuf* lsdp_a = file_a.rdbuf(); + + if (! (lsdp_a->is_open()) ) { + G4String excep = G4String("G4BremsstrahlungParameters: cannot open file ") + + name_a; + G4Exception(excep); + } + + // The file is organized into two columns: + // 1st column is the energy + // 2nd column is the corresponding value + // The file terminates with the pattern: -1 -1 + // -2 -2 + + G4DataVector* energies; + G4DataVector* data; + G4double ener = 0.0; + G4double sum = 0.0; + energies = new G4DataVector(); + data = new G4DataVector(); + G4int z = 0; + + G4bool used = false; + G4std::vector a; + for (size_t j=0; j> ener >> sum; + + // End of file + if (ener == -2) { + break; + + // End of next element + } else if (ener == -1) { + + z++; + G4double Z = (G4double)z; + + // fill map if Z is used + if (activeZ.contains(Z)) { + + for (size_t k=0; kpush_back(e[s]); + } + G4VEMDataSet* set = new G4EMDataSet(id,eVector,a[k],inter,1.,1.); + param[id] = set; + } + used = true; + a.clear(); + for (size_t j=0; jclear(); + used = false; + } + } + e.clear(); + + } else { + + if(ener > 1000.) ener = 1000.; + e.push_back(ener); + a[length-1]->push_back(sum); + + for (size_t j=0; j> qRead; + /* + if(ener == 1000.) { + G4double x = 0.1*((G4double)j); + if(j == 0) x = 0.01; + if(j == 10) x = 0.95; + if(j == 11) x = 0.97; + if(j == 12) x = 0.99; + if(j == 13) x = 0.995; + if(j == 14) x = 1.0; + qRead = 1. - x + 0.75*x*x; + } + */ + a[j]->push_back(qRead); + } + + } + } while (ener != -2); + + file_a.close(); + +} + + +G4double G4BremsstrahlungParameters::ParameterC(G4int id) const +{ + G4int n = paramC.size(); + if (id < 0 || id >= n) { + G4String ex = "G4BremsstrahlungParameters::ParameterC - wrong id=" + id; + G4Exception(ex); + } + + return paramC[id]; +} + + +void G4BremsstrahlungParameters::PrintData() const +{ + + G4cout << G4endl; + G4cout << "===== G4BremsstrahlungParameters =====" << G4endl; + G4cout << G4endl; + G4cout << "===== Parameters =====" << G4endl; + G4cout << G4endl; + + size_t nZ = activeZ.size(); + G4std::map >::const_iterator pos; + + for (size_t j=0; jPrintData(); + } + } + } + + G4cout << "==========================================" << G4endl; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc b/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc new file mode 100644 index 0000000000..996a2a81cc --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CompositeEMDataSet.cc @@ -0,0 +1,188 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4CompositeEMDataSet.cc,v 1.5 2001/10/25 02:32:16 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 1 Aug 2001 MGP Created +// +// ------------------------------------------------------------------- + +#include "G4CompositeEMDataSet.hh" +#include "G4EMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "g4std/fstream" +#include "g4std/strstream" + + +G4CompositeEMDataSet::G4CompositeEMDataSet(G4VDataSetAlgorithm* interpolation, + G4double unitE, G4double unitData, + G4int minZ, G4int maxZ) + :algorithm(interpolation), unit1(unitE), unit2(unitData), zMin(minZ), zMax(maxZ) +{ + nComponents = 0; +} + +G4CompositeEMDataSet::G4CompositeEMDataSet(const G4String& dataFile, + G4VDataSetAlgorithm* interpolation, + G4double unitE, G4double unitData, + G4int minZ, G4int maxZ) + : algorithm(interpolation), unit1(unitE), unit2(unitData), zMin(minZ), zMax(maxZ) +{ + nComponents = 0; + LoadData(dataFile); +} + +G4CompositeEMDataSet::~G4CompositeEMDataSet() +{ + for (size_t i=0; iFindValue(e); + } + else + { + G4cout << "WARNING - G4CompositeEMDataSet::FindValue - component " + << id << " not found" << G4endl; + } + + return value; +} + +void G4CompositeEMDataSet::PrintData() const +{ + G4cout << "The data set has " << nComponents << " components" << G4endl; + + for (size_t i=0; iPrintData(); + } +} + +void G4CompositeEMDataSet::LoadData(const G4String& fileName) +{ + + for (G4int Z=zMin; Zis_open()) ) + { + G4String excep = "G4CompositeEMDataSet - data file: " + dirFile + " not found"; + G4Exception(excep); + } + G4double a = 0; + G4int k = 1; + G4DataVector* energies = new G4DataVector; + G4DataVector* data = new G4DataVector; + do + { + file >> a; + G4int nColumns = 2; + // The file is organized into two columns: + // 1st column is the energy + // 2nd column is the corresponding value + // The file terminates with the pattern: -1 -1 + // -2 -2 + if (a == -1 || a == -2) + { + } + else + { + if (k%nColumns != 0) + { + G4double e = a * unit1; + energies->push_back(e); + k++; + } + else if (k%nColumns == 0) + { + G4double value = a * unit2; + data->push_back(value); + k = 1; + } + } + } while (a != -2); // end of file + + file.close(); + + G4VDataSetAlgorithm* algo = algorithm->Clone(); + G4VEMDataSet* dataSet = new G4EMDataSet(Z,energies,data,algo); + AddComponent(dataSet); + } +} + +void G4CompositeEMDataSet::AddComponent(G4VEMDataSet* component) +{ + components.push_back(component); + nComponents++; +} + +const G4DataVector& G4CompositeEMDataSet::GetEnergies(G4int i) const +{ + const G4VEMDataSet* component = GetComponent(i); + return (component->GetEnergies(i)); +} + +const G4DataVector& G4CompositeEMDataSet::GetData(G4int i) const +{ + const G4VEMDataSet* component = GetComponent(i); + return (component->GetData(i)); +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionHandler.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionHandler.cc new file mode 100644 index 0000000000..7e227bda51 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionHandler.cc @@ -0,0 +1,90 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4CrossSectionHandler.cc,v 1.12 2001/10/08 07:48:57 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 1 Aug 2001 MGP Created +// +// ------------------------------------------------------------------- + +#include "G4CrossSectionHandler.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4VEMDataSet.hh" +#include "G4EMDataSet.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4ShellEMDataSet.hh" +#include "G4MaterialTable.hh" +#include "G4Material.hh" +#include "G4Element.hh" +#include "Randomize.hh" +#include "g4std/map" +#include "g4std/vector" +#include "g4std/fstream" +#include "g4std/strstream" + +#include "G4LogLogInterpolation.hh" + +G4CrossSectionHandler::G4CrossSectionHandler() +{ } + +G4CrossSectionHandler::~G4CrossSectionHandler() +{ } + +G4std::vector* +G4CrossSectionHandler::BuildCrossSectionsForMaterials(const G4DataVector& energyVector, + const G4DataVector* energyCuts) +{ + G4DataVector* energies; + G4DataVector* data; + + G4std::vector* matCrossSections = new G4std::vector; + + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + G4int nMaterials = G4Material::GetNumberOfMaterials(); + + size_t nOfBins = energyVector.size(); + + for (G4int m=0; mpush_back(e); + G4double materialCrossSection = ValueForMaterial(material,e); + data->push_back(materialCrossSection); + } + G4VEMDataSet* dataSet = new G4EMDataSet(m,energies,data,interpolationAlgo,1.,1.); + matCrossSections->push_back(dataSet); + } + return matCrossSections; +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4CutsPerMaterialWarning.cc b/source/processes/electromagnetic/lowenergy/src/G4CutsPerMaterialWarning.cc new file mode 100644 index 0000000000..2b2ba89d23 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4CutsPerMaterialWarning.cc @@ -0,0 +1,73 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4CutsPerMaterialWarning.cc,v 1.1 2001/11/07 22:39:02 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 05 Oct 2001 MGP Created +// +// ------------------------------------------------------------------- + +#include "G4CutsPerMaterialWarning.hh" +#include "G4ParticleDefinition.hh" +#include "G4Material.hh" +#include "G4MaterialTable.hh" + +void G4CutsPerMaterialWarning::PrintWarning(const G4ParticleDefinition* particle) const +{ + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + size_t nMaterials = materialTable->size(); + if (nMaterials > 1) + { + G4Material* material = (*materialTable)[0]; + G4double cut0 = particle->GetRangeThreshold(material); + G4double cut = cut0; + G4bool different = false; + size_t mat = 0; + while ((!different) && mat < (nMaterials-1)) + { + mat++; + G4Material* material = (*materialTable)[mat]; + cut = particle->GetRangeThreshold(material); + if (cut != cut0) different = true; + } + + + if (different) + { + G4cout << "========================== W A R N I N G ============================ " << G4endl + << " " << G4endl + << "You are using different range thresholds for different materials" << G4endl + << "This is an UNSUPPORTED feature temporarily implemented in Geant4" << G4endl + << "Geant4 Low Energy Electromagnetic Physics Processes are not supported," << G4endl + << "if this feature is activated and you may get inconsistent results" << G4endl + << "Please define the same range threshold for all materials" << G4endl + << " " << G4endl + << "========================== W A R N I N G ============================ " << G4endl; + } + } +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc b/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc new file mode 100644 index 0000000000..a8f97a5d56 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4EMDataSet.cc @@ -0,0 +1,218 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4EMDataSet.cc,v 1.5 2001/10/08 07:48:57 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- + +#include "G4EMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "g4std/fstream" +#include "g4std/strstream" + +// Constructor + +G4EMDataSet::G4EMDataSet(G4int Z, + G4DataVector* points, + G4DataVector* values, + G4VDataSetAlgorithm* interpolation, + G4double unitE, G4double unitData) + :z(Z), energies(points), data(values), algorithm(interpolation) +{ + numberOfBins = energies->size(); + unit1 = unitE; + unit2 = unitData; + if (interpolation == 0) + G4Exception("G4EMDataSet::G4EMDataSet - interpolation algorithm = 0"); +} + +G4EMDataSet:: G4EMDataSet(G4int Z, + const G4String& dataFile, + G4VDataSetAlgorithm* interpolation, + G4double unitE, G4double unitData) + :z(Z), algorithm(interpolation) +{ + energies = new G4DataVector; + data = new G4DataVector; + unit1 = unitE; + unit2 = unitData; + LoadData(dataFile); + numberOfBins = energies->size(); + if (interpolation == 0) + G4Exception("G4EMDataSet::G4EMDataSet - interpolation algorithm = 0"); + +} + +// Destructor + +G4EMDataSet::~G4EMDataSet() +{ + delete algorithm; + delete energies; + delete data; +} + + +G4double G4EMDataSet::FindValue(G4double e, G4int id) const +{ + G4double value; + G4double e0 = (*energies)[0]; + // Protections + size_t bin = FindBinLocation(e); + if (bin == numberOfBins) + { + // G4cout << "WARNING - G4EMDataSet::FindValue: energy outside upper boundary" + // << G4endl; + value = (*data)[bin]; + } + else if (e <= e0) + { + // G4cout << "WARNING - G4EMDataSet::FindValue: energy outside lower boundary" + // << G4endl; + value = (*data)[0]; + } + else + { + if (algorithm == 0) + G4Exception("G4EMDataSet::FindValue - interpolation algorithm = 0"); + value = algorithm->Calculate(e,bin,*energies,*data); + } + + return value; +} + +G4int G4EMDataSet::FindBinLocation(G4double energy) const +{ + // Protection against call outside allowed range + G4double e0 = (*energies)[0]; + if (energy < e0) + { + // G4cout << z + // << " - WARNING - G4EMDataSet::FindBinLocation called with argument " + // << energy + // << " outside lower limit " + // << e0 + // << "; replaced with lower limit" + // << G4endl; + energy = e0; + } + + size_t lowerBound = 0; + size_t upperBound = numberOfBins - 1; + + // Binary search + while (lowerBound <= upperBound) + { + size_t midBin = (lowerBound + upperBound)/2; + if ( energy < (*energies)[midBin] ) upperBound = midBin-1; + else lowerBound = midBin+1; + } + + return upperBound; +} + +void G4EMDataSet::LoadData(const G4String& fileName) +{ + // Build the complete string identifying the file with the data set + + char nameChar[100] = {""}; + G4std::ostrstream ost(nameChar, 100, G4std::ios::out); + + ost << fileName << z << ".dat"; + + G4String name(nameChar); + + char* path = getenv("G4LEDATA"); + if (!path) + { + G4String excep = "G4EMDataSet - G4LEDATA environment variable not set"; + G4Exception(excep); + } + + G4String pathString(path); + G4String dirFile = pathString + "/" + name; + G4std::ifstream file(dirFile); + G4std::filebuf* lsdp = file.rdbuf(); + + if (! (lsdp->is_open()) ) + { + G4String excep = "G4EMDataSet - data file: " + dirFile + " not found"; + G4Exception(excep); + } + G4double a = 0; + G4int k = 1; + + do + { + file >> a; + G4int nColumns = 2; + // The file is organized into two columns: + // 1st column is the energy + // 2nd column is the corresponding value + // The file terminates with the pattern: -1 -1 + // -2 -2 + if (a == -1 || a == -2) + { + } + else + { + if (k%nColumns != 0) + { + G4double e = a * unit1; + energies->push_back(e); + k++; + } + else if (k%nColumns == 0) + { + G4double value = a * unit2; + data->push_back(value); + k = 1; + } + } + + } while (a != -2); // end of file + + file.close(); +} + +void G4EMDataSet::PrintData() const +{ + size_t size = numberOfBins; + for (size_t i=0; i >::iterator pos; + + for (pos = idMap.begin(); pos != idMap.end(); pos++) + { + G4DataVector* dataSet = (*pos).second; + delete dataSet; + } + for (pos = energyMap.begin(); pos != energyMap.end(); pos++) + { + G4DataVector* dataSet = (*pos).second; + delete dataSet; + } + for (pos = probabilityMap.begin(); pos != probabilityMap.end(); pos++) + { + G4DataVector* dataSet = (*pos).second; + delete dataSet; + } +} + +size_t G4FluoData::NumberOfVacancies() const +{ + return numberOfVacancies; +} + +G4int G4FluoData::VacancyId(G4int vacancyIndex) const +{ + G4int n = -1; + if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies) + {G4Exception("G4FluoData::vacancyIndex outside boundaries");} + else + { + G4std::map >::const_iterator pos; + pos = idMap.find(vacancyIndex); + if (pos!= idMap.end()) + { G4DataVector dataSet = (*(*pos).second); + n = (G4int) dataSet[0]; + + } + } + return n; +} + +size_t G4FluoData::NumberOfTransitions(G4int vacancyIndex) const +{ + G4int n = 0; + if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies) + {G4Exception("G4FluoData::vacancyIndex outside boundaries");} + else + { + n = nInitShells[vacancyIndex]-1; + //-1 is necessary because the elements of the vector nInitShells + //include also the vacancy shell: + // -1 subtracts this last one + } + return n; +} +G4int G4FluoData::StartShellId(G4int initIndex,G4int vacancyIndex) +{ + G4int n = -1; + + if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies) + {G4Exception("G4FluoData::vacancyIndex outside boundaries");} + else + { + G4std::map >::const_iterator pos; + + pos = idMap.find(vacancyIndex); + + G4DataVector dataSet = *((*pos).second); + + G4int nData = dataSet.size(); + if (initIndex >= 0 && initIndex < nData) + { + n = (G4int) dataSet[initIndex]; + + } + } + return n; +} + +G4double G4FluoData::StartShellEnergy(G4int initIndex,G4int vacancyIndex) +{ + G4double n = -1; + + if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies) + {G4Exception("G4FluoData::vacancyIndex outside boundaries");} + else + { + G4std::map >::const_iterator pos; + + pos = energyMap.find(vacancyIndex); + + G4DataVector dataSet = *((*pos).second); + + G4int nData = dataSet.size(); + if (initIndex >= 0 && initIndex < nData) + { + n = dataSet[initIndex]; + + } + } + return n; +} + +G4double G4FluoData::StartShellProb(G4int initIndex,G4int vacancyIndex) +{ + G4double n = -1; + + if (vacancyIndex<0 || vacancyIndex>=numberOfVacancies) + {G4Exception("G4FluoData::vacancyIndex outside boundaries");} + else + { + G4std::map >::const_iterator pos; + + pos = probabilityMap.find(vacancyIndex); + + G4DataVector dataSet = *((*pos).second); + + G4int nData = dataSet.size(); + if (initIndex >= 0 && initIndex < nData) + { + n = dataSet[initIndex]; + + } + } + return n; +} + +void G4FluoData::LoadData(G4int Z) +{ + // Build the complete string identifying the file with the data set + + char nameChar[100] = {""}; + G4std::ostrstream ost(nameChar, 100, G4std::ios::out); + if(Z != 0){ + ost << "fl-tr-pr-"<< Z << ".dat"; + } + else{ + ost << "fl-tr-pr-"<<".dat"; + } + G4String name(nameChar); + + char* path = getenv("G4LEDATA"); + if (!path) + { + G4String excep = "G4EMDataSet - G4LEDATA environment variable not set"; + G4Exception(excep); + } + + G4String pathString(path); + G4String dirFile = pathString + "/fluor/" + name; + G4std::ifstream file(dirFile); + G4std::filebuf* lsdp = file.rdbuf(); + + if (! (lsdp->is_open()) ) + { + G4String excep = "G4FluoData - data file: " + dirFile + " not found"; + G4Exception(excep); + } + + G4double a = 0; + G4int k = 1; + G4int s = 0; + + G4int vacId = 0; + G4DataVector* initIds = new G4DataVector; + G4DataVector* transEnergies = new G4DataVector; + G4DataVector* transProbabilities = new G4DataVector; + + do { + file >> a; + G4int nColumns = 3; + if (a == -1) + { + if (s == 0) + { + // End of a shell data set + idMap[vacId] = initIds; + energyMap[vacId] = transEnergies; + probabilityMap[vacId] = transProbabilities; + // G4double size=transProbabilities->size(); + G4int n = initIds->size(); + + nInitShells.push_back(n); + numberOfVacancies++; + // Start of new shell data set + initIds = new G4DataVector; + transEnergies = new G4DataVector; + transProbabilities = new G4DataVector; + vacId++; + } + s++; + if (s == nColumns) + { + s = 0; + } + } + else if (a == -2) + { + // End of file; delete the empty vectors created + //when encountering the last -1 -1 row + delete initIds; + delete transEnergies; + delete transProbabilities; + } + else + { + + if(k%nColumns == 2) + { + // 2nd column is transition probabilities + + transProbabilities->push_back(a); + + k++; + } + else if (k%nColumns == 1) + { + // 1st column is shell id + + initIds->push_back(a); + k++; + + } + else if (k%nColumns == 0) + + {//third column is transition energies + + G4double e = a * MeV; + transEnergies->push_back(e); + + k=1; + } + } + } + while (a != -2); // end of file + file.close(); +} + +void G4FluoData::PrintData() +{ + + for (G4int i = 0; i clearAndDestroy(); - delete theMeanFreePathTable; - } - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } - - if (ATable) { - - delete ATable; - } - - if (BTable) { - - delete BTable; - } - - if (&partialSumSigma) { - - partialSumSigma.clearAndDestroy(); - } + if(crossSectionHandler) delete crossSectionHandler; + if(energySpectrum) delete energySpectrum; + if(theMeanFreePath) delete theMeanFreePath; } -// -// SET CUT FOR LOW ENERGY SECONDARY PHOTONS A. FORTI -void G4LowEnergyBremsstrahlung::SetCutForLowEnSecPhotons(G4double cut){ - - cutForLowEnergySecondaryPhotons = cut; -} - - // METHOD BELOW FROM STANDARD E_M PROCESSES CODE void G4LowEnergyBremsstrahlung::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) { - - BuildZVec(); - - // energy sampling formula coefficient - BuildATable(); - BuildBTable(); - BuildCrossSectionTable() ; + if(verboseLevel > 0) { + G4cout << "G4LowEnergyBremsstrahlung::BuildPhysicsTable start" + << G4endl; + } - BuildLossTable(aParticleType) ; + G4CutsPerMaterialWarning warning; + warning.PrintWarning(&aParticleType); + cutForSecondaryPhotons.clear(); - if (&aParticleType==G4Electron::Electron()){ + // Create and fill BremsstrahlungParameters once + if( energySpectrum != 0 ) delete energySpectrum; + energySpectrum = new G4eBremsstrahlungSpectrum(); - RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; + if(verboseLevel > 0) { + G4cout << "G4LowEnergyBremsstrahlungSpectrum is initialized" + << G4endl; + } + + // Create and fill G4CrossSectionHandler once + + if( crossSectionHandler != 0 ) delete crossSectionHandler; + G4VDataSetAlgorithm* interpolation = new G4LogLogInterpolation(); + G4double lowKineticEnergy = GetLowerBoundEloss(); + G4double highKineticEnergy = GetUpperBoundEloss(); + G4int totBin = GetNbinEloss(); + crossSectionHandler = new G4BremsstrahlungCrossSectionHandler(energySpectrum, interpolation); + crossSectionHandler->Initialise(0,lowKineticEnergy, highKineticEnergy, totBin); + crossSectionHandler->LoadShellData("brem/br-cs-"); + + if (verboseLevel > 0) { + G4cout << GetProcessName() + << " is created; Cross section data: " + << G4endl; + crossSectionHandler->PrintData(); + G4cout << "Parameters: " + << G4endl; + energySpectrum->PrintData(); + } + + // Build loss table for Bremsstrahlung + + BuildLossTable(aParticleType); + + if(verboseLevel > 0) { + G4cout << "The loss table is built" + << G4endl; + } + + if (&aParticleType==G4Electron::Electron()) { + + RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable; CounterOfElectronProcess++; PrintInfoDefinition(); - } - else{ - RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable ; + } else { + + RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable; CounterOfPositronProcess++; - } - - BuildMeanFreePathTable() ; - - BuildDEDXTable(aParticleType) ; - - -} -// - - // CONSTRUCT THE CROSS SECTION TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC. -void G4LowEnergyBremsstrahlung::BuildCrossSectionTable(){ - - if (theCrossSectionTable) { - - delete theCrossSectionTable; } - theCrossSectionTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - G4FirstLevel* oneAtomCS = util.BuildFirstLevelTables(AtomInd, dataNum, "brem/br-cs-"); - - // theCrossSectionTable->insert(oneAtomCS); - theCrossSectionTable->push_back(oneAtomCS); - - }//end for on atoms -} + // Build mean free path data using cut values -// CONSTRUCT THE TABLE OF THE FIRST PARAMETER OF THE SAMPLING FORMULA -void G4LowEnergyBremsstrahlung::BuildATable(){ + if( theMeanFreePath != 0 ) delete theMeanFreePath; + theMeanFreePath = crossSectionHandler-> + BuildMeanFreePathForMaterials(&cutForSecondaryPhotons); - if (ATable) { - - delete ATable; - } - G4int dataNum = 2; - ATable = util.BuildSecondLevelTables(0,dataNum,"brem/br-co-a"); - -} - -// CONSTRUCT THE TABLE OF THE PARAMETERS OF THE FORMULA OF THE -// SECOND PARAMETER OF THE SAMPLING FORMULA -void G4LowEnergyBremsstrahlung::BuildBTable(){ - - if (BTable) { - - delete BTable; - } - G4int dataNum = 2; - BTable = util.BuildFirstLevelTables(0, dataNum, "brem/br-co-b"); - -} - -// Vector mapping the existing elements in the material table -// needed at initialization time to load only the necessary data -void G4LowEnergyBremsstrahlung::BuildZVec(){ - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(ZNumVec){ - - ZNumVec->clear(); - delete ZNumVec; - } - - ZNumVec = new G4DataVector(); - for (G4int J=0 ; J < numOfMaterials; J++){ - - const G4Material* material= (*theMaterialTable)[J]; - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4int NumberOfElements = material->GetNumberOfElements() ; - - for (G4int iel=0; ielGetZ(); - - if( !(ZNumVec->contains(Zel)) ) { - ZNumVec->push_back(Zel); - } else{ - continue; + if(verboseLevel > 0) { + G4cout << "The MeanFreePath table is built" + << G4endl; } - } - } + + // Build common DEDX table for all ionisation processes + + BuildDEDXTable(aParticleType); + + if(verboseLevel > 0) { + G4cout << "G4LowEnergyBremsstrahlung::BuildPhysicsTable end" + << G4endl; + } + } + void G4LowEnergyBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aParticleType) { - // Build table for energy loss due to soft brems - // the tables are built for *MATERIALS* + // Build table for energy loss due to soft brems + // the tables are built for *MATERIALS* binning is taken from LowEnergyLoss + + G4double lowKineticEnergy = GetLowerBoundEloss(); + G4double highKineticEnergy = GetUpperBoundEloss(); + size_t totBin = GetNbinEloss(); - // create table if (theLossTable) { @@ -246,466 +187,176 @@ void G4LowEnergyBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aPart delete theLossTable; } const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - const G4int numOfMaterials = theMaterialTable->length(); + const size_t numOfMaterials = G4Material::GetNumberOfMaterials(); theLossTable = new G4PhysicsTable(numOfMaterials); - // loop for materials + // Clean up the vector of cuts + cutForSecondaryPhotons.clear(); + + // Loop for materials - for (G4int J=0; JGetCutsInEnergy()[material->GetIndex()] ; - G4cout<<"*** LE Bremsstrahlung using Gamma Tcut = "<GetName() - <GetElementVector(); - const G4int NumberOfElements = material->GetNumberOfElements() ; - const G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector(); - - // now comes the loop for the kinetic energy values - for (G4int i = 0 ; i < totBin ; i++){ + // get material parameters needed for the energy loss calculation + const G4Material* material= (*theMaterialTable)[j]; - const G4double LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - G4double ionloss = 0.; - // loop for elements in the material - for (G4int iel=0; ielGetZ(); - ionloss += GetEnergyLossWithCut(Z,LowEdgeEnergy,Tcut)* - theAtomicNumDensityVector[iel] ; - } - aVector->PutValue(i,ionloss) ; + // the cut cannot be below lowest limit + G4double tCut = G4std::min(highKineticEnergy, + ((G4Gamma::Gamma())->GetEnergyThreshold(material))); + // ((G4Gamma::Gamma())->GetCutsInEnergy())[j]); + cutForSecondaryPhotons.push_back(tCut); + + const G4ElementVector* theElementVector = material->GetElementVector(); + size_t NumberOfElements = material->GetNumberOfElements() ; + const G4double* theAtomicNumDensityVector = + material->GetAtomicNumDensityVector(); + if(verboseLevel > 1) { + G4cout << "Energy loss for material # " << j + << " tCut(keV)= " << tCut/keV + << G4endl; } - theLossTable->insert(aVector); - } -} - -// + // now comes the loop for the kinetic energy values + for (size_t i = 0; iclearAndDestroy(); - delete theMeanFreePathTable; - } - - G4double NumbOfMaterials = G4Material::GetNumberOfMaterials(); - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4Material* material; - G4double* CutInKineticEnergy = G4Gamma::Gamma()->GetCutsInEnergy() ; - - partialSumSigma.clearAndDestroy(); - partialSumSigma.resize(NumbOfMaterials); - - G4double LowEdgeEnergy , Value; - theMeanFreePathTable = new G4PhysicsTable(NumbOfMaterials); - G4PhysicsLogVector* ptrVector; - - for ( G4int J=0 ; J < NumbOfMaterials; J++ ){ - - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(lowestKineticEnergy, highestKineticEnergy, - totBin ) ; - - material= (*theMaterialTable)(J); - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4double* theAtomNumDensityVector = material->GetAtomicNumDensityVector(); - const G4double Threshold = CutInKineticEnergy[J] ; - - for ( G4int i = 0 ; i < totBin ; i++ ){ - - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - const G4double BigPath= DBL_MAX; - G4double SIGMA = 0 ; - - for ( size_t k=0 ; k < material->GetNumberOfElements() ; k++ ){ - - G4int AtomIndex = (G4int) (*theElementVector)(k)->GetZ(); - G4double interCrsSec = GetCrossSectionWithCut(AtomIndex, LowEdgeEnergy,Threshold); - SIGMA += theAtomNumDensityVector[k]*interCrsSec; - } - - Value = SIGMA<=0.0 ? BigPath : 1./SIGMA ; - ptrVector->PutValue( i , Value ) ; - - } - - theMeanFreePathTable->insert( ptrVector ); - - // Compute the partialSumSigma table at a given fixed energy - ComputepartialSumSigma(FixedEnergy, material,Threshold) ; - } + G4double lowEdgeEnergy = aVector->GetLowEdgeEnergy(i); + G4double ionloss = 0.; + + // loop for elements in the material + for (size_t iel=0; ielGetZ()); + G4double e = energySpectrum->AverageEnergy(Z, 0.0, tCut, lowEdgeEnergy); + G4double pro = energySpectrum->Probability(Z, 0.0, tCut, lowEdgeEnergy); + G4double cs= crossSectionHandler->FindValue(Z, lowEdgeEnergy); + ionloss += e * cs * pro * theAtomicNumDensityVector[iel]; + if(verboseLevel > 1) { + G4cout << "Z= " << Z + << "; tCut(keV)= " << tCut/keV + << "; E(keV)= " << lowEdgeEnergy/keV + << "; Eav(keV)= " << e/keV + << "; pro= " << pro + << "; cs= " << cs + << "; loss= " << ionloss + << G4endl; + } + } + aVector->PutValue(i,ionloss); + } + theLossTable->insert(aVector); + } } -// - -// -// METHOD BELOW FROM STANDARD E_M PROCESSES CODE MODIFIED TO USE -// LIVERMORE DATA (using log-log interpolation as reported in stepanek paper) -// -void G4LowEnergyBremsstrahlung::ComputepartialSumSigma(const G4double KineticEnergy, - const G4Material* aMaterial, - const G4double Threshold) - -// Build the table of cross section per element. The table is built for MATERIALS. -// This table is used by DoIt to select randomly an element in the material. +G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& track, + const G4Step& step) { - G4int Imate = aMaterial->GetIndex(); - G4int NbOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); + aParticleChange.Initialize(track); - partialSumSigma[Imate] = new G4DataVector(); + const G4Material* material = track.GetMaterial(); + G4double kineticEnergy = track.GetKineticEnergy(); + G4int index = material->GetIndex(); + G4double tCut = cutForSecondaryPhotons[index]; - G4double SIGMA = 0. ; + // Control limits + if(tCut >= kineticEnergy) + return G4VContinuousDiscreteProcess::PostStepDoIt(track, step); - for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ){ + G4int Z = crossSectionHandler->SelectRandomAtom(material, kineticEnergy); - G4int AtomIndex = (G4int) (*theElementVector)(Ielem)->GetZ(); - - G4double interCrsSec = GetCrossSectionWithCut(AtomIndex,KineticEnergy,Threshold); - - SIGMA += theAtomNumDensityVector[Ielem]*interCrsSec; - - partialSumSigma[Imate]->push_back(SIGMA); - } -} + G4double tGamma = energySpectrum->SampleEnergy(Z, tCut, kineticEnergy, kineticEnergy); -// + // Sample gamma angle (Z - axis along the parent particle). + // Universal distribution suggested by L. Urban (Geant3 manual (1993) + // Phys211) derived from Tsai distribution (Rev Mod Phys 49,421(1977)) -G4VParticleChange* G4LowEnergyBremsstrahlung::PostStepDoIt(const G4Track& trackData, - const G4Step& stepData){ + G4double totalEnergy = kineticEnergy + electron_mass_c2; - // This parametrization is derived from : - // Migdal corrections (dielectric suppression). - // Migdal: Phys Rev 103:1811 (1956); Messel & Crawford: Pergamon Press (1970) - // - - - aParticleChange.Initialize(trackData); - - G4Material* aMaterial=trackData.GetMaterial() ; - - - const G4DynamicParticle* aDynamicParticle=trackData.GetDynamicParticle(); - G4double charge = aDynamicParticle->GetDefinition()->GetPDGCharge(); - - G4double ElectKinEn = aDynamicParticle->GetKineticEnergy(); + const G4double a1 = 0.625, a2 = 3.*a1, d = 27.; + G4double u = - log(G4UniformRand()*G4UniformRand()); - // MGP debug - // G4cout << "G4LowEnergyBremsstrahlung::PostStepDoIt - ElectKinEn " - // << ElectKinEn/keV << " keV " << G4endl; - // MGP end - - if(ElectKinEn <= lowestKineticEnergy){ + if (9./(9.+d) > G4UniformRand()) u /= a1; + else u /= a2; - aParticleChange.SetStatusChange(fStopAndKill); - aParticleChange.SetEnergyChange(0.); - aParticleChange.SetLocalEnergyDeposit(ElectKinEn); + G4double theta = u*electron_mass_c2/totalEnergy; + G4double phi = twopi * G4UniformRand(); + G4double dirZ = cos(theta); + G4double sinTheta = sqrt(1. - dirZ*dirZ); + G4double dirX = sinTheta*cos(phi); + G4double dirY = sinTheta*sin(phi); - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - - } - - G4ParticleMomentum ElectDirection = aDynamicParticle->GetMomentumDirection(); - - // Gamma production cut in this material - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - - - // check against insufficient energy - if (ElectKinEn < GammaEnergyCut){ - aParticleChange.SetEnergyChange(ElectKinEn); - aParticleChange.SetLocalEnergyDeposit(0.); - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - - // select randomly one element constituing the material - G4Element* anElement = SelectRandomAtom(aMaterial); - - // limits of the energy sampling - G4double TotalEnergy = ElectKinEn + electron_mass_c2; - // G4double TotalEnergysquare = TotalEnergy*TotalEnergy ; + G4ThreeVector gammaDirection (dirX, dirY, dirZ); + G4ThreeVector electronDirection = track.GetMomentumDirection(); + + gammaDirection.rotateUz(electronDirection); // - // The emitted gamma energy is from EEDL data fitted with A/E+B function. - // Original formula A/E+B+C*E and sampling methods are reported by J. Stepanek - // formula has been modified by A. Forti and S. Giani. - - // - // sample the energy of the emitted gamma - // - G4double p1 = 0, p2 = 0; - G4double coeffA = 0, coeffB = 0; - G4int AtomicNum = (G4int) anElement->GetZ(); - coeffA = ComputeA(AtomicNum, ElectKinEn); - coeffB = ComputeB(AtomicNum, ElectKinEn); - - //const G4double minEn = lowEnergyCut; - const G4double minEn = GammaEnergyCut; - - - p1 = coeffA*log(ElectKinEn/minEn); - p2 = coeffB*(ElectKinEn - minEn); - - G4double IntegrProb = p1+p2; - G4double R1 = G4UniformRand()*IntegrProb; - - G4double GammaEnergy = 0.; - - if(R1 <= p1){ + // Update the incident particle + // - G4double R2 = G4UniformRand(); - GammaEnergy = ElectKinEn*pow((minEn/ElectKinEn),R2); - /// stepanek does: GammaEnergy = exp(R2*log(ElectKinEn/minEn)+log(ElectKinEn)); - } - else if ((p1 < R1) && (R1 <= p1+p2)){ + G4double finalEnergy = kineticEnergy - tGamma; - G4double R2 = G4UniformRand(); - GammaEnergy = ElectKinEn - R2*(ElectKinEn - minEn); + // Kinematic problem + if (finalEnergy < 0.) { + tGamma += finalEnergy; + finalEnergy = 0.0; } - // MGP debug - // if (GammaEnergy > 10*keV) - // G4cout << "MGP BremPostStepDoIt eGamma = " << GammaEnergy/keV << " keV" << G4endl; + G4double momentum = sqrt((totalEnergy + electron_mass_c2)*kineticEnergy); -/* - G4double R1 = minEn + G4UniformRand()*(ElectKinEn- minEn); - G4double Max = coeffA/minEn + coeffB; - G4double R2 = G4UniformRand()*Max; - while (coeffA/R1 + coeffB < R2){ - R1 = minEn + G4UniformRand()*(ElectKinEn- minEn); - R2 = G4UniformRand()*Max; - } - G4double GammaEnergy = R1; -*/ - - //**********************// - // Angular distribution // - //**********************// - - // angles of the emitted gamma. ( Z - axis along the parent particle) - // universal distribution suggested by L. Urban (Geant3 manual (1993) Phys211), - // derived from Tsai distribution (Rev Mod Phys 49,421(1977)) - - if(GammaEnergy < minEn){ - G4cerr<<"Problem with bremsstrahlung gamma energy sampling: Energy G4UniformRand()) u = - log(G4UniformRand()*G4UniformRand())/a1 ; - else u = - log(G4UniformRand()*G4UniformRand())/a2 ; - - G4double Teta = u*electron_mass_c2/TotalEnergy ; - G4double Phi = twopi * G4UniformRand() ; - G4double dirx = sin(Teta)*cos(Phi) , diry = sin(Teta)*sin(Phi) , dirz = cos(Teta) ; - - G4ThreeVector GammaDirection ( dirx, diry, dirz); - - GammaDirection.rotateUz(ElectDirection); - - // - // Update the incident particle - // - - G4double NewKinEnergy = ElectKinEn - GammaEnergy; - - // - ///final state electron: - // - if (NewKinEnergy > 0.){ + G4double finalX = momentum*electronDirection.x() - tGamma*gammaDirection.x(); + G4double finalY = momentum*electronDirection.y() - tGamma*gammaDirection.y(); + G4double finalZ = momentum*electronDirection.z() - tGamma*gammaDirection.z(); - aParticleChange.SetMomentumChange( ElectDirection ); - aParticleChange.SetEnergyChange( NewKinEnergy ); + aParticleChange.SetNumberOfSecondaries(1); + G4double norm = 1./sqrt(finalX*finalX + finalY*finalY + finalZ*finalZ); + aParticleChange.SetMomentumChange(finalX*norm, finalY*norm, finalZ*norm); + aParticleChange.SetEnergyChange( finalEnergy ); - } - else{ - - aParticleChange.SetEnergyChange( 0. ); - if (charge<0.){ - - aParticleChange.SetStatusChange(fStopAndKill); - } - else{ - - aParticleChange.SetStatusChange(fStopButAlive); - } - } - // - ///emitted photon: - // - if(GammaEnergy < GammaEnergyCut){ + // create G4DynamicParticle object for the gamma + G4DynamicParticle* aGamma= new G4DynamicParticle (G4Gamma::Gamma(), + gammaDirection, tGamma); + aParticleChange.AddSecondary(aGamma); - aParticleChange.SetLocalEnergyDeposit(GammaEnergy); - } - else{ - - // create G4DynamicParticle object for the Gamma - G4DynamicParticle* aGamma= new G4DynamicParticle (G4Gamma::Gamma(), - GammaDirection, GammaEnergy); - - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary(aGamma); - aParticleChange.SetLocalEnergyDeposit(0.); - } - - -#ifdef G4VERBOSE - if(verboseLevel > 15){ - - G4cout<<"LE Bremsstrahlung PostStepDoIt"<MeanTinc) Tmax = MeanTinc; - G4double SmallLoss = 0.; - SmallLoss = 0.5*coeffB*(Tmax*Tmax - minEn*minEn) + coeffA*(Tmax-minEn); - if(SmallLoss < 0.) G4cerr<<"Problem with integration of gamma spectrum: SmallLoss = "<GetIndex(); + const G4VEMDataSet* data = theMeanFreePath->GetComponent(index); + G4double meanFreePath = data->FindValue(track.GetKineticEnergy()); + return meanFreePath; +} +void G4LowEnergyBremsstrahlung::SetCutForLowEnSecPhotons(G4double cut) +{ + cutForPhotons = cut; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyCompton.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyCompton.cc index 9d1a20b3bc..e64212f9a5 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyCompton.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyCompton.cc @@ -20,416 +20,242 @@ // * statement, and all its terms. * // ******************************************************************** // +// $Id: G4LowEnergyCompton.cc,v 1.33 2001/11/07 20:47:29 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// $Id: G4LowEnergyCompton.cc,v 1.25.2.2 2001/06/28 20:19:29 gunter Exp $ -// GEANT4 tag $Name: $ +// Author: A. Forti +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland -// -// ------------ G4LowEnergyCompton low energy modifications -------- -// by Alessandra Forti, October 1998 -// ************************************************************** +// History: +// -------- // Added Livermore data table construction methods A. Forti // Modified BuildMeanFreePath to read new data tables A. Forti // Modified PostStepDoIt to insert sampling with EPDL97 data A. Forti // Added SelectRandomAtom A. Forti // Added map of the elements A. Forti -// 24.04.01 V.Ivanchenko remove RogueWave -// -------------------------------------------------------------- +// 24.04.2001 V.Ivanchenko - Remove RogueWave +// 06.08.2001 MGP - Revised according to a design iteration +// +// ------------------------------------------------------------------- -// This Class Header #include "G4LowEnergyCompton.hh" - -// Collaborating Class Headers -#include "G4EnergyLossTables.hh" +#include "Randomize.hh" +#include "G4ParticleDefinition.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4ForceCondition.hh" +#include "G4Gamma.hh" #include "G4Electron.hh" +#include "G4DynamicParticle.hh" +#include "G4VParticleChange.hh" +#include "G4ThreeVector.hh" +#include "G4EnergyLossTables.hh" +#include "G4VCrossSectionHandler.hh" +#include "G4CrossSectionHandler.hh" +#include "G4VEMDataSet.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4LogLogInterpolation.hh" +#include "G4VRangeTest.hh" +#include "G4RangeTest.hh" + +#include "G4CutsPerMaterialWarning.hh" -// constructor - G4LowEnergyCompton::G4LowEnergyCompton(const G4String& processName) : G4VDiscreteProcess(processName), - theCrossSectionTable(0), - theScatteringFunctionTable(0), - theMeanFreePathTable(0), - ZNumVec(0), - lowestEnergyLimit (250*eV), // initialization - highestEnergyLimit(100*GeV), - numbBinTable(200) + lowEnergyLimit(250*eV), + highEnergyLimit(100*GeV), + intrinsicLowEnergyLimit(10*eV), + intrinsicHighEnergyLimit(100*GeV) { - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< G4endl; - G4cout << "lowestEnergy: " << lowestEnergyLimit/keV << "keV "; - G4cout << "highestEnergy: " << highestEnergyLimit/TeV << "TeV " << G4endl; - } + if (lowEnergyLimit < intrinsicLowEnergyLimit || + highEnergyLimit > intrinsicHighEnergyLimit) + { + G4Exception("G4LowEnergyCompton::G4LowEnergyCompton - energy outside intrinsic process validity range"); + } + + crossSectionHandler = new G4CrossSectionHandler; + + G4VDataSetAlgorithm* scatterInterpolation = new G4LogLogInterpolation; + G4String scatterFile = "comp/ce-sf-"; + scatterFunctionData = new G4CompositeEMDataSet(scatterFile,scatterInterpolation,1.,1.); + + meanFreePathTable = 0; + + rangeTest = new G4RangeTest; + + if (verboseLevel > 0) + { + G4cout << GetProcessName() << " is created " << G4endl + << "Energy range: " + << lowEnergyLimit / keV << " keV - " + << highEnergyLimit / GeV << " GeV" + << G4endl; + } } -// destructor - G4LowEnergyCompton::~G4LowEnergyCompton() { - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } - - if (theScatteringFunctionTable) { - - delete theScatteringFunctionTable; - } - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } + delete meanFreePathTable; + delete crossSectionHandler; + delete scatterFunctionData; + delete rangeTest; } - - -// methods............................................................................. -void G4LowEnergyCompton::BuildPhysicsTable(const G4ParticleDefinition& GammaType){ - - BuildZVec(); - - // Build microscopic cross section table and mean free path table - BuildCrossSectionTable(); - - // Build mean free path table for the Compton Scattering process - BuildMeanFreePathTable(); - - // build the scattering function table - BuildScatteringFunctionTable(); - -} -// BUILD THE CS TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC -void G4LowEnergyCompton::BuildCrossSectionTable(){ - - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } +void G4LowEnergyCompton::BuildPhysicsTable(const G4ParticleDefinition& photon) +{ - theCrossSectionTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - G4FirstLevel* oneAtomCS = util.BuildFirstLevelTables(AtomInd, dataNum, "comp/ce-cs-"); - - // theCrossSectionTable->insert(oneAtomCS); - theCrossSectionTable->push_back(oneAtomCS); - - }//end for on atoms -} -// BUILD THE SF TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC -void G4LowEnergyCompton::BuildScatteringFunctionTable(){ + G4CutsPerMaterialWarning warning; + warning.PrintWarning(&photon); - if (theScatteringFunctionTable) { - - delete theScatteringFunctionTable; - } + crossSectionHandler->Clear(); + G4String crossSectionFile = "comp/ce-cs-"; + crossSectionHandler->LoadData(crossSectionFile); - theScatteringFunctionTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - G4FirstLevel* oneAtomSF = util.BuildFirstLevelTables(AtomInd, dataNum, "comp/ce-sf-"); - - // theScatteringFunctionTable->insert(oneAtomSF); - theScatteringFunctionTable->push_back(oneAtomSF); - - }//end for on atoms -} -// vector mapping the elements in the material table -void G4LowEnergyCompton::BuildZVec(){ - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } - - ZNumVec = new G4DataVector(); - for (G4int J=0 ; J < numOfMaterials; J++){ - - const G4Material* material= (*theMaterialTable)[J]; - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4int NumberOfElements = material->GetNumberOfElements() ; - - for (G4int iel=0; ielGetZ(); - - if(ZNumVec->contains(Zel) == FALSE){ - ZNumVec->push_back(Zel); - } else{ - continue; - } - } - } + delete meanFreePathTable; + meanFreePathTable = crossSectionHandler->BuildMeanFreePathForMaterials(); } +G4VParticleChange* G4LowEnergyCompton::PostStepDoIt(const G4Track& aTrack, + const G4Step& aStep) +{ + // The scattered gamma energy is sampled according to Klein - Nishina formula. + // then accepted or rejected depending on the Scattering Function multiplied + // by factor from Klein - Nishina formula. + // Expression of the angular distribution as Klein Nishina + // angular and energy distribution and Scattering fuctions is taken from + // D. E. Cullen "A simple model of photon transport" Nucl. Instr. Meth. + // Phys. Res. B 101 (1995). Method of sampling with form factors is different + // data are interpolated while in the article they are fitted. + // Reference to the article is from J. Stepanek New Photon, Positron + // and Electron Interaction Data for GEANT in Energy Range from 1 eV to 10 + // TeV (draft). + // The random number techniques of Butcher & Messel are used + // (Nucl Phys 20(1960),15). -G4VParticleChange* G4LowEnergyCompton::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep){ - -// -// The scattered gamma energy is sampled according to Klein - Nishina formula. -// And then Accepted or rejected basing of the Scattering Function multiplied by factor -// from Klein - Nishina formula. Expression of the angular distribution as Klein Nishina -// angular and energy distribution and Scattering fuctions is taken from -// D. E. Cullen "A simple model of photon transport" Nucl. Instr. Meth. -// Phys. Res. B 101 (1995). Method of sampling with form factors is different -// data are interpolated while in the article they are fitted. -// Reference to the article is from J. Stepanek New Photon, Positron -// and Electron Interaction Data for GEANT in Energy Range from 1 eV to 10 -// TeV (draft). -// The random number techniques of Butcher & Messel are used -// (Nuc Phys 20(1960),15). -// GEANT4 internal units -// aParticleChange.Initialize(aTrack); // Dynamic particle quantities - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double GammaEnergy0 = aDynamicGamma->GetKineticEnergy(); - if(GammaEnergy0 <= lowestEnergyLimit){ - - aParticleChange.SetStatusChange(fStopAndKill); - aParticleChange.SetEnergyChange(0.); - aParticleChange.SetLocalEnergyDeposit(GammaEnergy0); - - return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); + const G4DynamicParticle* incidentPhoton = aTrack.GetDynamicParticle(); + G4double photonEnergy0 = incidentPhoton->GetKineticEnergy(); - } - - - G4double E0_m = GammaEnergy0 / electron_mass_c2 ; - G4ParticleMomentum GammaDirection0 = aDynamicGamma->GetMomentumDirection(); - - // Select randomly one element - G4Material* aMaterial = aTrack.GetMaterial(); - // const G4int numOfElem = aMaterial->GetNumberOfElements(); - - G4Element* theElement = SelectRandomAtom(aDynamicGamma, aMaterial); - G4int elementZ = (G4int) theElement->GetZ(); - G4double epsilon, epsilonsq, onecost, sint2, greject ; - - G4double epsilon0 = 1./(1. + 2*E0_m) , epsilon0sq = epsilon0*epsilon0; - G4double alpha1 = - log(epsilon0) , alpha2 = 0.5*(1.- epsilon0sq); - G4double ScatteringFunction, x; - G4double wlGamma = h_Planck*c_light/GammaEnergy0; - - // sample the energy rate of the scattered gamma - do{ - - if ( alpha1/(alpha1+alpha2) > G4UniformRand()){ - - epsilon = exp(-alpha1*G4UniformRand()); // pow(epsilon0,G4UniformRand()) - epsilonsq = epsilon*epsilon; - } - else{ - - epsilonsq = epsilon0sq + (1.- epsilon0sq)*G4UniformRand(); - epsilon = sqrt(epsilonsq); - } - - onecost = (1.- epsilon)/(epsilon*E0_m); - sint2 = onecost*(2.-onecost); - - x = sqrt(onecost/2)/(wlGamma/cm); - - const G4FirstLevel* oneAtomSF - = (*theScatteringFunctionTable)[ZNumVec->index(elementZ)]; - - ScatteringFunction = util.DataLogInterpolation(x, (*(*oneAtomSF)[0]), - (*(*oneAtomSF)[1])); - greject = (1. - epsilon*sint2/(1.+ epsilonsq))*ScatteringFunction; - - } while(greject < G4UniformRand()*elementZ); - - G4double cosTeta = 1. - onecost , sinTeta = sqrt (sint2); - G4double Phi = twopi * G4UniformRand() ; - G4double dirx = sinTeta*cos(Phi) , diry = sinTeta*sin(Phi) , dirz = cosTeta ; - - // - // update G4VParticleChange for the scattered gamma - // - - G4ThreeVector GammaDirection1 ( dirx,diry,dirz ); - GammaDirection1.rotateUz(GammaDirection0); - aParticleChange.SetMomentumChange( GammaDirection1 ) ; - G4double GammaEnergy1 = epsilon*GammaEnergy0; - if (GammaEnergy1 > 0.) + if (photonEnergy0 <= lowEnergyLimit) { - aParticleChange.SetEnergyChange( GammaEnergy1 ) ; + aParticleChange.SetStatusChange(fStopAndKill); + aParticleChange.SetEnergyChange(0.); + aParticleChange.SetLocalEnergyDeposit(photonEnergy0); + return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); + } + + G4double e0m = photonEnergy0 / electron_mass_c2 ; + G4ParticleMomentum photonDirection0 = incidentPhoton->GetMomentumDirection(); + + // Select randomly one element in the current material + G4Material* material = aTrack.GetMaterial(); + G4int Z = crossSectionHandler->SelectRandomAtom(material,photonEnergy0); + + G4double epsilon0 = 1. / (1. + 2. * e0m); + G4double epsilon0Sq = epsilon0 * epsilon0; + G4double alpha1 = -log(epsilon0); + G4double alpha2 = 0.5 * (1. - epsilon0Sq); + + G4double wlPhoton = h_Planck*c_light/photonEnergy0; + + // Sample the energy of the scattered photon + G4double epsilon; + G4double epsilonSq; + G4double oneCosT; + G4double sinT2; + G4double gReject; + do + { + if ( alpha1/(alpha1+alpha2) > G4UniformRand()) + { + epsilon = exp(-alpha1 * G4UniformRand()); // pow(epsilon0,G4UniformRand()) + epsilonSq = epsilon * epsilon; + } + else + { + epsilonSq = epsilon0Sq + (1. - epsilon0Sq) * G4UniformRand(); + epsilon = sqrt(epsilonSq); + } + + oneCosT = (1. - epsilon) / ( epsilon * e0m); + sinT2 = oneCosT * (2. - oneCosT); + G4double x = sqrt(oneCosT/2.) / (wlPhoton/cm); + G4double scatteringFunction = scatterFunctionData->FindValue(x,Z-1); + gReject = (1. - epsilon * sinT2 / (1. + epsilonSq)) * scatteringFunction; + + } while(gReject < G4UniformRand()*Z); + + G4double cosTheta = 1. - oneCosT; + G4double sinTheta = sqrt (sinT2); + G4double phi = twopi * G4UniformRand() ; + G4double dirx = sinTheta * cos(phi); + G4double diry = sinTheta * sin(phi); + G4double dirz = cosTheta ; + + // Update G4VParticleChange for the scattered photon + + G4ThreeVector photonDirection1(dirx,diry,dirz); + photonDirection1.rotateUz(photonDirection0); + aParticleChange.SetMomentumChange(photonDirection1) ; + G4double photonEnergy1 = epsilon * photonEnergy0; + + if (photonEnergy1 > 0.) + { + aParticleChange.SetEnergyChange(photonEnergy1) ; } else { aParticleChange.SetEnergyChange(0.) ; aParticleChange.SetStatusChange(fStopAndKill); - } - // - // kinematic of the scattered electron - // - - G4double ElecKineEnergy = GammaEnergy0 - GammaEnergy1 ; - - if (G4EnergyLossTables::GetRange(G4Electron::Electron(), ElecKineEnergy, aMaterial) - >= G4std::min(G4Electron::GetCuts(), aStep.GetPostStepPoint()->GetSafety())){ + // Kinematics of the scattered electron + G4double eKineticEnergy = photonEnergy0 - photonEnergy1; - G4double ElecMomentum = sqrt(ElecKineEnergy*(ElecKineEnergy+2.*electron_mass_c2)); - G4ThreeVector ElecDirection((GammaEnergy0*GammaDirection0 - - GammaEnergy1*GammaDirection1)*(1./ElecMomentum)); - - // create G4DynamicParticle object for the electron. - G4DynamicParticle* aElectron= new G4DynamicParticle (G4Electron::Electron(), - ElecDirection, ElecKineEnergy) ; - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( aElectron ); - aParticleChange.SetLocalEnergyDeposit (0.); - } - else{ - - aParticleChange.SetNumberOfSecondaries(0); - aParticleChange.SetLocalEnergyDeposit (ElecKineEnergy); - } -#ifdef G4VERBOSE - if(verboseLevel > 0){ - G4cout<<"LE Compton Effect PostStepDoIt"<GetSafety(); + + if (rangeTest->Escape(G4Electron::Electron(),material,eKineticEnergy,safety)) + { + G4double eMomentum = sqrt(eKineticEnergy*(eKineticEnergy+2.*electron_mass_c2)); + G4ThreeVector eDirection((photonEnergy0 * photonDirection0 - + photonEnergy1 * photonDirection1) * (1./eMomentum)); + G4DynamicParticle* electron = new G4DynamicParticle (G4Electron::Electron(), + eDirection,eKineticEnergy) ; + aParticleChange.SetNumberOfSecondaries(1); + aParticleChange.AddSecondary(electron); + aParticleChange.SetLocalEnergyDeposit(0.); + } + else + { + aParticleChange.SetNumberOfSecondaries(0); + aParticleChange.SetLocalEnergyDeposit(eKineticEnergy); + } return G4VDiscreteProcess::PostStepDoIt( aTrack, aStep); } - -// used log-log interpolation instead of linear interpolation to build the MFP -// as reported in the stepanek paper -void G4LowEnergyCompton::BuildMeanFreePathTable(){ - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable; } - - // material - G4double NumbOfMaterials = G4Material::GetNumberOfMaterials(); - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4Material* material; - - // MeanFreePath - G4double LowEdgeEnergy, Value; - theMeanFreePathTable = new G4PhysicsTable(NumbOfMaterials); - G4PhysicsLogVector* ptrVector; - - for ( G4int J = 0 ; J < NumbOfMaterials; J++ ) { // For each material - - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(lowestEnergyLimit, highestEnergyLimit, numbBinTable); - - material = (*theMaterialTable)(J); - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4double* theAtomNumDensityVector = material->GetAtomicNumDensityVector(); - - for ( G4int i = 0 ; i < numbBinTable ; i++ ){ - //For each energy - - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy(i); - - const G4double BigPath= DBL_MAX; - G4double SIGMA = 0 ; - for ( size_t k=0 ; k < material->GetNumberOfElements() ; k++ ){ - - G4int AtomIndex = (G4int) (*theElementVector)(k)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - - G4double interCrsSec = util.DataLogInterpolation(LowEdgeEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; - SIGMA += theAtomNumDensityVector[k]*interCrsSec; - } - - Value = SIGMA<=0.0 ? BigPath : 1./SIGMA ; - - ptrVector->PutValue( i , Value ) ; - - } - - theMeanFreePathTable->insertAt( J , ptrVector ); - } +G4bool G4LowEnergyCompton::IsApplicable(const G4ParticleDefinition& particle) +{ + return ( &particle == G4Gamma::Gamma() ); } -// METHOD BELOW FROM STANDARD E_M PROCESSES CODE MODIFIED TO USE -// LIVERMORE DATA (using log-log interpolation as reported in stepanek paper) -G4Element* G4LowEnergyCompton::SelectRandomAtom(const G4DynamicParticle* aDynamicGamma, - G4Material* aMaterial){ - // select randomly 1 element within the material - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); +G4double G4LowEnergyCompton::GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition*) +{ + const G4DynamicParticle* photon = track.GetDynamicParticle(); + G4double energy = photon->GetKineticEnergy(); + G4Material* material = track.GetMaterial(); + size_t materialIndex = material->GetIndex(); - if (NumberOfElements == 1) return (*theElementVector)(0); - - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - - G4double PartialSumSigma = 0.; - - G4double rval = 0; - rval = G4UniformRand()/meanFreePath; - - for ( G4int i=0 ; i < NumberOfElements ; i++ ){ - - G4double crossSection; - if (GammaEnergy < lowestEnergyLimit) - crossSection = 0. ; - else { - if (GammaEnergy > highestEnergyLimit) GammaEnergy = 0.99*highestEnergyLimit ; - - G4int AtomIndex = (G4int) (*theElementVector)(i)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - - crossSection = util.DataLogInterpolation(GammaEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; - } - - PartialSumSigma += theAtomNumDensityVector[i] * crossSection; - if(rval <= PartialSumSigma) return ((*theElementVector)(i)); - } - - return (*theElementVector)(0); + G4double meanFreePath; + if (energy > highEnergyLimit) meanFreePath = meanFreePathTable->FindValue(highEnergyLimit,materialIndex); + else if (energy < lowEnergyLimit) meanFreePath = DBL_MAX; + else meanFreePath = meanFreePathTable->FindValue(energy,materialIndex); + return meanFreePath; } - - - - - - - - - - - - - - - - - - diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc index 3a3e0e067e..6af71fe384 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyGammaConversion.cc @@ -20,149 +20,114 @@ // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4LowEnergyGammaConversion.cc,v 1.19.2.2 2001/06/28 20:19:29 gunter Exp $ -// GEANT4 tag $Name: $ +// -------------------------------------------------------------------- +/// +// $Id: G4LowEnergyGammaConversion.cc,v 1.26 2001/11/07 21:31:16 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland // -// ------------ G4LowEnergyGammaConversion physics process -------- -// by A.Forti 1999/03/02 +// Author: A. Forti +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // +// History: +// -------- +// 02/03/1999 A. Forti 1st implementation // 14.03.2000 Veronique Lefebure; // Change initialisation of lowestEnergyLimit from 1.22 to 1.022. // Note that the hard coded value 1.022 should be used instead of // 2*electron_mass_c2 in order to agree with the value of the data bank EPDL97 // 24.04.01 V.Ivanchenko remove RogueWave -// ************************************************************** +// 27.07.01 F.Longo correct bug in energy distribution +// +// -------------------------------------------------------------- -// This Class Header #include "G4LowEnergyGammaConversion.hh" -// Collaborating Class Headers -#include "globals.hh" #include "Randomize.hh" -#include "G4EnergyLossTables.hh" +#include "G4ParticleDefinition.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4ForceCondition.hh" +#include "G4Gamma.hh" #include "G4Electron.hh" +#include "G4DynamicParticle.hh" +#include "G4VParticleChange.hh" +#include "G4ThreeVector.hh" #include "G4Positron.hh" +#include "G4IonisParamElm.hh" +#include "G4Material.hh" +#include "G4VCrossSectionHandler.hh" +#include "G4CrossSectionHandler.hh" +#include "G4VEMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4LogLogInterpolation.hh" +#include "G4VRangeTest.hh" +#include "G4RangeTest.hh" + +#include "G4CutsPerMaterialWarning.hh" -// constructor - G4LowEnergyGammaConversion::G4LowEnergyGammaConversion(const G4String& processName) : G4VDiscreteProcess(processName), - theCrossSectionTable(0), - theMeanFreePathTable(0), - ZNumVec(0), - //Use lowest limit of EPDL97 which is larger than 2*electron_mass_c2 = 1.02199812 MeV - lowestEnergyLimit (1.022000*MeV), - highestEnergyLimit(100*GeV), - NumbBinTable(200) + lowEnergyLimit(1.022000*MeV), + highEnergyLimit(100*GeV), + intrinsicLowEnergyLimit(1.022000*MeV), + intrinsicHighEnergyLimit(100*GeV), + smallEnergy(2.*MeV) + { - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< G4endl; - G4cout << "lowestEnergy: " << lowestEnergyLimit/keV << "keV "; - G4cout << "highestEnergy: " << highestEnergyLimit/GeV << "GeV " << G4endl; - } + if (lowEnergyLimit < intrinsicLowEnergyLimit || + highEnergyLimit > intrinsicHighEnergyLimit) + { + G4Exception("G4LowEnergyGammaConversion::G4LowEnergyGammaConversion - energy limit outside intrinsic process validity range"); + } + + // The following pointer is owned by G4DataHandler + + crossSectionHandler = new G4CrossSectionHandler(); + crossSectionHandler->Initialise(0,1.0220*MeV,100.*GeV,400); + meanFreePathTable = 0; + rangeTest = new G4RangeTest; + + if (verboseLevel > 0) + { + G4cout << GetProcessName() << " is created " << G4endl + << "Energy range: " + << lowEnergyLimit / MeV << " MeV - " + << highEnergyLimit / GeV << " GeV" + << G4endl; + } } -// destructor - G4LowEnergyGammaConversion::~G4LowEnergyGammaConversion() { - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } -} - - -// methods............................................................................. -void G4LowEnergyGammaConversion::BuildPhysicsTable(const G4ParticleDefinition& GammaType){ - - BuildZVec(); - - // Build microscopic cross section tables for the Compton Scattering process - BuildCrossSectionTable(); - - // Build mean free path table for the Compton Scattering process - BuildMeanFreePathTable(); + delete meanFreePathTable; + delete crossSectionHandler; + delete rangeTest; } -void G4LowEnergyGammaConversion::BuildCrossSectionTable(){ - - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } - - theCrossSectionTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - G4FirstLevel* oneAtomCS = util.BuildFirstLevelTables(AtomInd, dataNum, "pair/pp-cs-"); - - // theCrossSectionTable->insert(oneAtomCS); - theCrossSectionTable->push_back(oneAtomCS); - - }//end for on atoms -} - -void G4LowEnergyGammaConversion::BuildZVec(){ - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } +void G4LowEnergyGammaConversion::BuildPhysicsTable(const G4ParticleDefinition& photon) +{ - ZNumVec = new G4DataVector(); - for (G4int J=0 ; J < numOfMaterials; J++){ - - const G4Material* material= (*theMaterialTable)[J]; - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4int NumberOfElements = material->GetNumberOfElements() ; + G4CutsPerMaterialWarning warning; + warning.PrintWarning(&photon); - for (G4int iel=0; ielGetZ(); - - if(ZNumVec->contains(Zel) == FALSE){ - ZNumVec->push_back(Zel); - } else{ - continue; - } - } - } + crossSectionHandler->Clear(); + G4String crossSectionFile = "pair/pp-cs-"; + crossSectionHandler->LoadData(crossSectionFile); + + delete meanFreePathTable; + meanFreePathTable = crossSectionHandler->BuildMeanFreePathForMaterials(); } - -G4VParticleChange* G4LowEnergyGammaConversion::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep){ - -// -// The secondaries e+e- energies are sampled using the Bethe - Heitler +G4VParticleChange* G4LowEnergyGammaConversion::PostStepDoIt(const G4Track& aTrack, + const G4Step& aStep) +{ +// The energies of the e+ e- secondaries are sampled using the Bethe - Heitler // cross sections with Coulomb correction. A modified version of the random // number techniques of Butcher & Messel is used (Nuc Phys 20(1960),15). -// -// GEANT4 internal units. -// + // Note 1 : Effects due to the breakdown of the Born approximation at low // energy are ignored. // Note 2 : The differential cross section implicitly takes account of @@ -171,262 +136,216 @@ G4VParticleChange* G4LowEnergyGammaConversion::PostStepDoIt(const G4Track& aTrac aParticleChange.Initialize(aTrack); - G4Material* aMaterial = aTrack.GetMaterial(); + G4Material* material = aTrack.GetMaterial(); - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - G4ParticleMomentum GammaDirection = aDynamicGamma->GetMomentumDirection(); + const G4DynamicParticle* incidentPhoton = aTrack.GetDynamicParticle(); + G4double photonEnergy = incidentPhoton->GetKineticEnergy(); + G4ParticleMomentum photonDirection = incidentPhoton->GetMomentumDirection(); - G4double epsil ; - G4double epsil0 = electron_mass_c2 / GammaEnergy ; + G4double epsilon ; + G4double epsilon0 = electron_mass_c2 / photonEnergy ; - // do it fast if GammaEnergy < 2. MeV - const G4double Egsmall=2.*MeV; - if (GammaEnergy= 2. MeV + // Do it fast if photon energy < 2. MeV + if (photonEnergy < smallEnergy ) + { + epsilon = epsilon0 + (0.5 - epsilon0) * G4UniformRand(); + } + else + { + // Select randomly one element in the current material + const G4Element* element = crossSectionHandler->SelectRandomElement(material,photonEnergy); + + if (element == 0) + { + G4cout << "G4LowEnergyGammaConversion::PostStepDoIt - element = 0" << G4endl; + } + G4IonisParamElm* ionisation = element->GetIonisation(); + if (ionisation == 0) + { + G4cout << "G4LowEnergyGammaConversion::PostStepDoIt - ionisation = 0" << G4endl; + } + + // Extract Coulomb factor for this Element + G4double fZ = 8. * (ionisation->GetlogZ3()); + if (photonEnergy > 50. * MeV) fZ += 8. * (element->GetfCoulomb()); - // select randomly one element constituing the material - G4Element* anElement = SelectRandomAtom(aDynamicGamma, aMaterial); - - // Extract Coulomb factor for this Element - G4double FZ = 8.*(anElement->GetIonisation()->GetlogZ3()); - if (GammaEnergy > 50.*MeV) FZ += 8.*(anElement->GetfCoulomb()); - - // limits of the screening variable - G4double screenfac = 136.*epsil0/(anElement->GetIonisation()->GetZ3()) ; - G4double screenmax = exp ((42.24 - FZ)/8.368) - 0.952 ; - G4double screenmin = G4std::min(4.*screenfac,screenmax) ; - - // limits of the energy sampling - G4double epsil1 = 0.5 - 0.5*sqrt(1. - screenmin/screenmax) ; - G4double epsilmin = G4std::max(epsil0,epsil1) , epsilrange = 0.5 - epsilmin ; - - // - // sample the energy rate of the created electron (or positron) - // - //G4double epsil, screenvar, greject ; - G4double screenvar, greject ; - - G4double F10 = ScreenFunction1(screenmin) - FZ , F20 = ScreenFunction2(screenmin) - FZ; - G4double NormF1 = G4std::max(F10*epsilrange*epsilrange,0.) , NormF2 = G4std::max(1.5*F20,0.); - - do { - if ( NormF1/(NormF1+NormF2) > G4UniformRand() ){ - - epsil = 0.5 - epsilrange*pow(G4UniformRand(), 1/3) ; - screenvar = screenfac/(epsil*(1-epsil)); - greject = (ScreenFunction1(screenvar) - FZ)/F10 ; - } - else { - epsil = epsilmin + epsilrange*G4UniformRand(); - screenvar = screenfac/(epsil*(1-epsil)); - greject = (ScreenFunction2(screenvar) - FZ)/F20 ; - } + // Limits of the screening variable + G4double screenFactor = 136. * epsilon0 / (element->GetIonisation()->GetZ3()) ; + G4double screenMax = exp ((42.24 - fZ)/8.368) - 0.952 ; + G4double screenMin = G4std::min(4.*screenFactor,screenMax) ; - } while( greject < G4UniformRand() ); - - } // end of epsil sampling......................... + // Limits of the energy sampling + G4double epsilon1 = 0.5 - 0.5 * sqrt(1. - screenMin / screenMax) ; + G4double epsilonMin = G4std::max(epsilon0,epsilon1); + G4double epsilonRange = 0.5 - epsilonMin ; + + // Sample the energy rate of the created electron (or positron) + G4double screen; + G4double gReject ; + + G4double f10 = ScreenFunction1(screenMin) - fZ; + G4double f20 = ScreenFunction2(screenMin) - fZ; + G4double normF1 = G4std::max(f10 * epsilonRange * epsilonRange,0.); + G4double normF2 = G4std::max(1.5 * f20,0.); + + do { + if (normF1 / (normF1 + normF2) > G4UniformRand() ) + { + epsilon = 0.5 - epsilonRange * pow(G4UniformRand(), 0.3333) ; + screen = screenFactor / (epsilon * (1. - epsilon)); + gReject = (ScreenFunction1(screen) - fZ) / f10 ; + } + else + { + epsilon = epsilonMin + epsilonRange * G4UniformRand(); + screen = screenFactor / (epsilon * (1 - epsilon)); + gReject = (ScreenFunction2(screen) - fZ) / f20 ; + } + } while ( gReject < G4UniformRand() ); + + } // End of epsilon sampling - // - // fixe charges randomly - // + // Fix charges randomly - G4double ElectTotEnergy, PositTotEnergy; - if (RandBit::shootBit()){ + G4double electronTotEnergy; + G4double positronTotEnergy; - ElectTotEnergy = (1.-epsil)*GammaEnergy; - PositTotEnergy = epsil*GammaEnergy; - } - else{ - - PositTotEnergy = (1.-epsil)*GammaEnergy; - ElectTotEnergy = epsil*GammaEnergy; - } + if (RandBit::shootBit()) + { + electronTotEnergy = (1. - epsilon) * photonEnergy; + positronTotEnergy = epsilon * photonEnergy; + } + else + { + positronTotEnergy = (1. - epsilon) * photonEnergy; + electronTotEnergy = epsilon * photonEnergy; + } -// -// scattered electron (positron) angles. ( Z - axis along the parent photon) -// universal distribution suggested by L. Urban (Geant3 manual (1993) Phys211), -// derived from Tsai distribution (Rev Mod Phys 49,421(1977)) + // Scattered electron (positron) angles. ( Z - axis along the parent photon) + // Universal distribution suggested by L. Urban (Geant3 manual (1993) Phys211), + // derived from Tsai distribution (Rev. Mod. Phys. 49, 421 (1977) G4double u; - const G4double a1 = 0.625 , a2 = 3.*a1 , d = 27. ; + const G4double a1 = 0.625; + G4double a2 = 3. * a1; + // G4double d = 27. ; - if (9./(9.+d) > G4UniformRand()){ - u = - log(G4UniformRand()*G4UniformRand())/a1 ; - } + // if (9. / (9. + d) > G4UniformRand()) + if (0.25 > G4UniformRand()) + { + u = - log(G4UniformRand() * G4UniformRand()) / a1 ; + } + else + { + u = - log(G4UniformRand() * G4UniformRand()) / a2 ; + } - else{ - u = - log(G4UniformRand()*G4UniformRand())/a2 ; - } + G4double theta = u * electron_mass_c2 / photonEnergy ; + G4double phi = twopi * G4UniformRand() ; + G4double dirX = sin(theta) * cos(phi); + G4double dirY = sin(theta) * sin(phi); + G4double dirZ = cos(theta); - G4double Teta = u*electron_mass_c2/GammaEnergy ; - G4double Phi = twopi * G4UniformRand() ; - G4double dirx = sin(Teta)*cos(Phi) , diry = sin(Teta)*sin(Phi) , dirz = cos(Teta); - -// -// kinematic of the created pair +// Kinematics of the created pair: // the electron and positron are assumed to have a symetric angular -// distribution with respect to the Z axis along the parent photon. +// distribution with respect to the Z axis along the parent photon - G4double LocalEnerDeposit = 0. ; + G4double localEnergyDeposit = 0. ; - aParticleChange.SetNumberOfSecondaries(2) ; - G4double ElectKineEnergy = G4std::max(0.,ElectTotEnergy - electron_mass_c2) ; + aParticleChange.SetNumberOfSecondaries(2.) ; + G4double electronKineEnergy = G4std::max(0.,electronTotEnergy - electron_mass_c2) ; - // if (G4EnergyLossTables::GetRange(G4Electron::Electron(), ElectKineEnergy, aMaterial) - // >= G4std::min(G4Electron::GetCuts(), aStep.GetPostStepPoint()->GetSafety()) ){ - if((G4EnergyLossTables::GetRange(G4Electron::Electron(), - ElectKineEnergy,aMaterial)>aStep.GetPostStepPoint()->GetSafety()) - || - (ElectKineEnergy > - (G4Electron::Electron()->GetCutsInEnergy())[aMaterial->GetIndex()])) + // Generate the electron only if with large enough range w.r.t. cuts and safety - { + G4double safety = aStep.GetPostStepPoint()->GetSafety(); - G4ThreeVector ElectDirection ( dirx, diry, dirz ); - ElectDirection.rotateUz(GammaDirection); - - // create G4DynamicParticle object for the particle1 - G4DynamicParticle* aParticle1= new G4DynamicParticle (G4Electron::Electron(),ElectDirection, ElectKineEnergy); + if (rangeTest->Escape(G4Electron::Electron(),material,electronKineEnergy,safety)) + { + G4ThreeVector electronDirection ( dirX, dirY, dirZ ); + electronDirection.rotateUz(photonDirection); + G4DynamicParticle* particle1 = new G4DynamicParticle (G4Electron::Electron(), + electronDirection, + electronKineEnergy); + aParticleChange.AddSecondary(particle1) ; + } + else + { + localEnergyDeposit += electronKineEnergy ; + } - aParticleChange.AddSecondary( aParticle1 ) ; - } - else{ - - LocalEnerDeposit += ElectKineEnergy ; - } + // The e+ is always created (even with kinetic energy = 0) for further annihilation + G4double positronKineEnergy = G4std::max(0.,positronTotEnergy - electron_mass_c2) ; -// the e+ is always created (even with Ekine=0) for further annihilation. - - G4double PositKineEnergy = G4std::max(0.,PositTotEnergy - electron_mass_c2) ; - - if (G4EnergyLossTables::GetRange(G4Positron::Positron(),PositKineEnergy,aMaterial) - < G4std::min(G4Positron::GetCuts(), aStep.GetPostStepPoint()->GetSafety()) ){ - - LocalEnerDeposit += PositKineEnergy ; - PositKineEnergy = 0. ; - } - G4ThreeVector PositDirection ( -dirx, -diry, dirz ); - PositDirection.rotateUz(GammaDirection); + // Is the local energy deposit correct, if the positron is always created? + if (! (rangeTest->Escape(G4Positron::Positron(),material,positronKineEnergy,safety))) + { + localEnergyDeposit += positronKineEnergy ; + positronKineEnergy = 0. ; + } + G4ThreeVector positronDirection(-dirX,-dirY,dirZ); + positronDirection.rotateUz(photonDirection); - // create G4DynamicParticle object for the particle2 - G4DynamicParticle* aParticle2= new G4DynamicParticle (G4Positron::Positron(), - PositDirection, PositKineEnergy); + // Create G4DynamicParticle object for the particle2 + G4DynamicParticle* particle2 = new G4DynamicParticle(G4Positron::Positron(), + positronDirection, positronKineEnergy); + aParticleChange.AddSecondary(particle2) ; - aParticleChange.AddSecondary( aParticle2 ) ; + aParticleChange.SetLocalEnergyDeposit(localEnergyDeposit) ; - aParticleChange.SetLocalEnergyDeposit( LocalEnerDeposit ) ; - - // // Kill the incident photon - // - - aParticleChange.SetMomentumChange( 0., 0., 0. ) ; - aParticleChange.SetEnergyChange( 0. ) ; - aParticleChange.SetStatusChange( fStopAndKill ) ; -#ifdef G4VERBOSE - if(verboseLevel > 15){ - G4cout<<"LE Gamma Conversion PostStepDoIt"<clearAndDestroy(); delete theMeanFreePathTable; } +G4double G4LowEnergyGammaConversion::GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition*) +{ + const G4DynamicParticle* photon = track.GetDynamicParticle(); + G4double energy = photon->GetKineticEnergy(); + G4Material* material = track.GetMaterial(); + size_t materialIndex = material->GetIndex(); - // material - G4double NumbOfMaterials = G4Material::GetNumberOfMaterials(); - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4Material* material; + G4double meanFreePath; + if (energy > highEnergyLimit) meanFreePath = meanFreePathTable->FindValue(highEnergyLimit,materialIndex); + else if (energy < lowEnergyLimit) meanFreePath = DBL_MAX; + else meanFreePath = meanFreePathTable->FindValue(energy,materialIndex); + return meanFreePath; +} - // MeanFreePath - G4double LowEdgeEnergy, Value; - theMeanFreePathTable = new G4PhysicsTable(NumbOfMaterials); - G4PhysicsLogVector* ptrVector; +G4double G4LowEnergyGammaConversion::ScreenFunction1(G4double screenVariable) +{ + // Compute the value of the screening function 3*phi1 - phi2 - for ( G4int J = 0 ; J < NumbOfMaterials; J++ ) { // For each material + G4double value; - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(lowestEnergyLimit, highestEnergyLimit, NumbBinTable); - - material = (*theMaterialTable)(J); - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4double* theAtomNumDensityVector = material->GetAtomicNumDensityVector(); - - for ( G4int i = 0 ; i < NumbBinTable ; i++ ){ - //For each energy - - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy(i); - - const G4double BigPath= DBL_MAX; - G4double SIGMA = 0 ; - - for ( size_t k=0 ; k < material->GetNumberOfElements() ; k++ ){ - // For each element - G4int AtomIndex = (G4int) (*theElementVector)(k)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - - G4double interCrsSec = util.DataLogInterpolation(LowEdgeEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; - - SIGMA += theAtomNumDensityVector[k]*interCrsSec; - - } - - Value = SIGMA<=0.0 ? BigPath : 1./SIGMA ; - - ptrVector->PutValue( i , Value ) ; - } - - theMeanFreePathTable->insertAt( J , ptrVector ) ; - } -} - -G4Element* G4LowEnergyGammaConversion::SelectRandomAtom(const G4DynamicParticle* aDynamicGamma, G4Material* aMaterial){ - - // select randomly 1 element within the material - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - if (NumberOfElements == 1) return (*theElementVector)(0); - - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - - G4double PartialSumSigma = 0.; - G4double rval = G4UniformRand()/MeanFreePath; - - for ( G4int i=0 ; i < NumberOfElements ; i++ ){ - - G4double crossSection; - if (GammaEnergy < lowestEnergyLimit) - crossSection = 0. ; - else { - if (GammaEnergy > highestEnergyLimit) GammaEnergy = 0.99*highestEnergyLimit ; - - G4int AtomIndex = (G4int) (*theElementVector)(i)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - - crossSection = util.DataLogInterpolation(GammaEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; - - } - - PartialSumSigma += theAtomNumDensityVector[i] * crossSection; - if(rval <= PartialSumSigma) return ((*theElementVector)(i)); - } - // G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() - // << "' has no elements" << G4endl; - return (*theElementVector)(0); -} - - + if (screenVariable > 1.) + value = 42.24 - 8.368 * log(screenVariable + 0.952); + else + value = 42.392 - screenVariable * (7.796 - 1.961 * screenVariable); + + return value; +} +G4double G4LowEnergyGammaConversion::ScreenFunction2(G4double screenVariable) +{ + // Compute the value of the screening function 1.5*phi1 - 0.5*phi2 + + G4double value; + + if (screenVariable > 1.) + value = 42.24 - 8.368 * log(screenVariable + 0.952); + else + value = 41.405 - screenVariable * (5.828 - 0.8945 * screenVariable); + + return value; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc index ec1fad97af..a995000a11 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyIonisation.cc @@ -20,17 +20,18 @@ // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4LowEnergyIonisation.cc,v 1.48.2.2 2001/06/28 20:19:29 gunter Exp $ -// GEANT4 tag $Name: $ -// +// $Id: G4LowEnergyIonisation.cc,v 1.76 2001/11/29 19:01:36 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------------------------------------------------------- -// GEANT 4 class implementation file +// -------------------------------------------------------------- // -// --- G4LowEnergyIonisation physics process for electrons -// by Alessandra Forti May 1999 -// ************************************************************** +// File name: G4LowEnergyIonisation +// +// Author: Alessandra Forti, Vladimir Ivanchenko +// +// Creation date: March 1999 +// +// Modifications: // - 11.04.2000 VL // Changing use of float and G4float casts to G4double casts // because of problems with optimisation (bug ?) @@ -65,1752 +66,627 @@ // 24.04.01 V.Ivanchenko remove RogueWave // 22.05.01 V.Ivanchenko update calculation of delta-ray kinematic + // clean up the code -// +// 02.08.01 V.Ivanchenko fix energy conservation for small steps +// 18.08.01 V.Ivanchenko fix energy conservation for pathalogical delta-energy +// 01.10.01 E. Guardincerri Replaced fluorescence generation in PostStepDoIt +// according to design iteration +// 04.10.01 MGP Minor clean-up in the fluo section, removal of +// compilation warnings and extra protection to +// prevent from accessing a null pointer +// 29.09.01 V.Ivanchenko revision based on design iteration +// 10.10.01 MGP Revision to improve code quality and +// consistency with design +// 18.10.01 V.Ivanchenko Add fluorescence AlongStepDoIt +// 18.10.01 MGP Revision to improve code quality and +// consistency with design +// 19.10.01 V.Ivanchenko update according to new design, V.Ivanchenko +// 26.10.01 V.Ivanchenko clean up deexcitation +// 28.10.01 V.Ivanchenko update printout +// 29.11.01 V.Ivanchenko New parametrisation introduced +// // -------------------------------------------------------------- - -// This Class Header + #include "G4LowEnergyIonisation.hh" - -// Collaborating Class Headers +#include "G4eIonisationSpectrum.hh" +#include "G4eIonisationCrossSectionHandler.hh" +#include "G4AtomicTransitionManager.hh" +#include "G4AtomicShell.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4SemiLogInterpolation.hh" +#include "G4LogLogInterpolation.hh" +#include "G4EMDataSet.hh" +#include "G4VEMDataSet.hh" +#include "G4CompositeEMDataSet.hh" #include "G4EnergyLossTables.hh" -#include "G4Gamma.hh" -#include "G4ProcessManager.hh" +#include "G4ShellVacancy.hh" #include "G4UnitsTable.hh" -#include "g4std/fstream" +#include "G4Electron.hh" +#include "G4Gamma.hh" + +#include "G4CutsPerMaterialWarning.hh" -typedef G4std::vector G4ParticleVector; - -// -// - -G4LowEnergyIonisation::G4LowEnergyIonisation(const G4String& processName) - : G4eLowEnergyLoss(processName), - allAtomShellCrossSec(0), - theFluorTransitionTable(0), - theSamplingCoeffTable(0), - theBindingEnergyTable(0), - ZNumVec(0), - ZNumVecFluor(0), - theMeanFreePathTable(0), - CutForLowEnergySecondaryPhotons(0.), - CutForLowEnergySecondaryElectrons(0.), - MeanFreePath(0.) -{ - lowestKineticEnergy = GetLowerBoundEloss(); - highestKineticEnergy = GetUpperBoundEloss(); - TotBin = GetNbinEloss(); -} - -// - -G4LowEnergyIonisation::~G4LowEnergyIonisation() +G4LowEnergyIonisation::G4LowEnergyIonisation(const G4String& nam) + : G4eLowEnergyLoss(nam), + crossSectionHandler(0), + theMeanFreePath(0), + energySpectrum(0), + shellVacancy(0) { - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - if (allAtomShellCrossSec) { - - delete allAtomShellCrossSec; - } - - if (theBindingEnergyTable) { - - delete theBindingEnergyTable; - } - - if (theFluorTransitionTable) { - - delete theFluorTransitionTable; - } - - if(theSamplingCoeffTable){ - - delete theSamplingCoeffTable; - } - - if(ZNumVec){ - - ZNumVec->clear(); - delete ZNumVec; - } - - if(ZNumVecFluor){ - - ZNumVecFluor->clear(); - delete ZNumVecFluor; - } + cutForPhotons = 250.0*eV; + cutForElectrons = 250.0*eV; + verboseLevel = 0; } -// -void G4LowEnergyIonisation::SetCutForLowEnSecPhotons(G4double cut) +G4LowEnergyIonisation::~G4LowEnergyIonisation() { - CutForLowEnergySecondaryPhotons = cut; + delete crossSectionHandler; + delete energySpectrum; + delete theMeanFreePath; + delete shellVacancy; } -// - -void G4LowEnergyIonisation::SetCutForLowEnSecElectrons(G4double cut){ - - CutForLowEnergySecondaryElectrons = cut; -} - -// void G4LowEnergyIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable { + if(verboseLevel > 0) { + G4cout << "G4LowEnergyIonisation::BuildPhysicsTable start" + << G4endl; + } - BuildZVec(); + G4CutsPerMaterialWarning warning; + warning.PrintWarning(&aParticleType); - BuildShellCrossSectionTable(); - - BuildFluorTransitionTable(); - - BuildBindingEnergyTable(); - - BuildSamplingCoeffTable(); + cutForDelta.clear(); - BuildLossTable(aParticleType) ; + // Create and fill IonisationParameters once + if( energySpectrum != 0 ) delete energySpectrum; + energySpectrum = new G4eIonisationSpectrum(); + if(verboseLevel > 0) { + G4cout << "G4VEnergySpectrum is initialized" + << G4endl; + } - if(&aParticleType==G4Electron::Electron()) - { - RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; - CounterOfElectronProcess++; - PrintInfoDefinition(); - } - else - { - RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable ; + // Create and fill G4CrossSectionHandler once + + if ( crossSectionHandler != 0 ) delete crossSectionHandler; + G4VDataSetAlgorithm* interpolation = new G4SemiLogInterpolation(); + G4double lowKineticEnergy = GetLowerBoundEloss(); + G4double highKineticEnergy = GetUpperBoundEloss(); + G4int totBin = GetNbinEloss(); + crossSectionHandler = new G4eIonisationCrossSectionHandler(energySpectrum, + interpolation, + lowKineticEnergy, + highKineticEnergy, + totBin); + crossSectionHandler->LoadShellData("ioni/ion-ss-cs-"); + + if (verboseLevel > 0) { + G4cout << GetProcessName() + << " is created; Cross section data: " + << G4endl; + crossSectionHandler->PrintData(); + G4cout << "Parameters: " + << G4endl; + energySpectrum->PrintData(); + } + + // Build loss table for IonisationIV + + BuildLossTable(aParticleType); + + if(verboseLevel > 0) { + G4cout << "The loss table is built" + << G4endl; + } + + if (&aParticleType==G4Electron::Electron()) { + + RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable; + CounterOfElectronProcess++; + PrintInfoDefinition(); + + } else { + + RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable; CounterOfPositronProcess++; - } + } + // Build mean free path data using cut values + + if( theMeanFreePath ) delete theMeanFreePath; + theMeanFreePath = crossSectionHandler-> + BuildMeanFreePathForMaterials(&cutForDelta); + + if(verboseLevel > 0) { + G4cout << "The MeanFreePath table is built" + << G4endl; + } + + // Build common DEDX table for all ionisation processes - BuildLambdaTable(aParticleType) ; - - BuildDEDXTable(aParticleType); - - + BuildDEDXTable(aParticleType); + + if (verboseLevel > 0) { + G4cout << "G4LowEnergyIonisation::BuildPhysicsTable end" + << G4endl; + } } -// -void G4LowEnergyIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) +void G4LowEnergyIonisation::BuildLossTable( + const G4ParticleDefinition& aParticleType) { - // Build tables for the ionization energy loss - // the tables are built for *MATERIALS* + // Build table for energy loss due to soft brems + // the tables are built for *MATERIALS* binning is taken from LowEnergyLoss - G4double LowEdgeEnergy; - G4double ionloss = 0.0; - - // material properties - ParticleMass = aParticleType.GetPDGMass(); - + G4double lowKineticEnergy = GetLowerBoundEloss(); + G4double highKineticEnergy = GetUpperBoundEloss(); + size_t totBin = GetNbinEloss(); + // create table - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); if (theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; + theLossTable->clearAndDestroy(); + delete theLossTable; } - + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + const size_t numOfMaterials = G4Material::GetNumberOfMaterials(); theLossTable = new G4PhysicsTable(numOfMaterials); + + if (shellVacancy != 0) delete shellVacancy; + shellVacancy = new G4ShellVacancy(); + G4DataVector* ksi = 0; + G4DataVector* energy = 0; + size_t binForFluo = totBin/10; + + G4PhysicsLogVector* bVector = new G4PhysicsLogVector(lowKineticEnergy, + highKineticEnergy, + binForFluo); + G4AtomicTransitionManager* transitionManager = + G4AtomicTransitionManager::Instance(); - // loop for materials + // Clean up the vector of cuts + + cutForDelta.clear(); + + // Loop for materials - for (G4int J=0; JGetCutsInEnergy()[material->GetIndex()] ; - G4cout<<"*** LEion using Tcut ="<GetElementVector(); - const G4int NumberOfElements = material->GetNumberOfElements() ; - const G4double* theAtomicNumDensityVector = material-> - GetAtomicNumDensityVector() ; - - // now comes the loop for the kinetic energy values - for (G4int i = 0 ; i < TotBin ; i++) { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; + // get material parameters needed for the energy loss calculation + const G4Material* material= (*theMaterialTable)[m]; - ionloss = 0. ; + // the cut cannot be below lowest limit + G4double tCut = G4Electron::Electron()->GetEnergyThreshold(material); + //GetCutsInEnergy())[m]; + if(tCut > highKineticEnergy) tCut = highKineticEnergy; + cutForDelta.push_back(tCut); - // electron - if (&aParticleType==G4Electron::Electron()) { - - // loop for elements in the material - for (G4int iel=0; ielGetZ(); - - const oneAtomTable* oneAtomCS - = (*allAtomShellCrossSec)[ZNumVec->index(Z)]; - - // contributions from the subshells - for(size_t ish=0; ishsize(); ish++) { - ionloss += GetShellEnergyLosswithCut(Z,ish,LowEdgeEnergy,Tcut)* - theAtomicNumDensityVector[iel] ; - } - } - - } - if (ionloss <= 0.) ionloss = 0.; - aVector->PutValue(i,ionloss) ; - } - - theLossTable->insert(aVector); - } - -} - -// - -// CONSTRUCT THE CS TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC USING EEDL DATA -void G4LowEnergyIonisation::BuildShellCrossSectionTable(){ - - if (allAtomShellCrossSec) { - - delete allAtomShellCrossSec; - } - - allAtomShellCrossSec = new allAtomTable(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - oneAtomTable* oneAtomShellCS = util.BuildSecondLevelTables(AtomInd, dataNum, "ioni/ion-ss-cs-"); - - // allAtomShellCrossSec->insert(oneAtomShellCS); - allAtomShellCrossSec->push_back(oneAtomShellCS); - - }//end for on atoms -} -// CONSTRUCT THE CROSS SECTION TABLE FOR ALL THE ELEMENTS -void G4LowEnergyIonisation::BuildBindingEnergyTable(){ - - if (theBindingEnergyTable) { - - delete theBindingEnergyTable; - } - - G4int dataNum = 2; - theBindingEnergyTable = util.BuildSecondLevelTables(0,dataNum,"fluor/binding"); -} - -// -// CONSTRUCT THE TABLE FOR THE ELEMENTS MAPPED IN ZNUMVECFLUOR DIFFERENT -// FROM ZNUMVEC BECAUSE THERE IS NO FLUORESCENCE FOR THE FIRST 5 ELEMENTS. -void G4LowEnergyIonisation::BuildFluorTransitionTable(){ - - if (theFluorTransitionTable) { - - delete theFluorTransitionTable; - } - - theFluorTransitionTable = new allAtomTable(); - ZNumVecFluor = new G4DataVector(*ZNumVec); - G4int dataNum = 3; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - if(AtomInd > 5){ - - oneAtomTable* oneAtomShellFL = util.BuildSecondLevelTables(AtomInd, dataNum, "fluor/fl-tr-pr-"); - // theFluorTransitionTable->insert(oneAtomShellFL); - theFluorTransitionTable->push_back(oneAtomShellFL); - } - else{ - ZNumVecFluor->remove(AtomInd); - } - }//end for on atoms -} - - -// -// BUILD THE TABLE OF COEFFICIENT FOR THE ELEMENTS MAPPED IN ZNUMVEC -void G4LowEnergyIonisation::BuildSamplingCoeffTable(){ - - if (theSamplingCoeffTable) { - - delete theSamplingCoeffTable; - } - - theSamplingCoeffTable = new allAtomTable(); - - G4int dataNum = 17; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - oneAtomTable* oneAtomShellSc = util.BuildSecondLevelTables(AtomInd, - dataNum, "ioni/io-co-"); - - theSamplingCoeffTable->push_back(oneAtomShellSc); - - }//end for on atoms -} - - -// -// -// vector mapping the elements of the material table -// -void G4LowEnergyIonisation::BuildZVec(){ - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(ZNumVec){ - - ZNumVec->clear(); - delete ZNumVec; - } - - ZNumVec = new G4DataVector(); - for (G4int J=0 ; J < numOfMaterials; J++){ - - const G4Material* material= (*theMaterialTable)[J]; const G4ElementVector* theElementVector = material->GetElementVector(); - const G4int NumberOfElements = material->GetNumberOfElements() ; - - for (G4int iel=0; ielGetZ(); - - if(!ZNumVec->contains(Zel)) ZNumVec->push_back(Zel); - } - } -} - -// - -void G4LowEnergyIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) -{ - // Build mean free path tables for the delta ray production process - // tables are built for MATERIALS - - G4double LowEdgeEnergy, Value, SIGMA; - - //create table - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (theMeanFreePathTable) { theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); - - // get electron cuts in kinetic energy - G4double* DeltaCutInKineticEnergy=G4Electron::Electron()->GetCutsInEnergy(); - - - // loop for materials - - for (G4int J=0 ; J < numOfMaterials; J++) { - //create physics vector then fill it .... - - G4PhysicsLogVector* aVector = new G4PhysicsLogVector( - lowestKineticEnergy, highestKineticEnergy, TotBin); - - // compute the (macroscopic) cross section first - - const G4Material* material= (*theMaterialTable)[J]; - const - G4ElementVector* theElementVector = material->GetElementVector(); - const - G4double* theAtomicNumDensityVector=material->GetAtomicNumDensityVector(); - const - G4int NumberOfElements = material->GetNumberOfElements() ; - - // get the electron kinetic energy cut for the actual material, - // it will be used in ComputeMicroscopicCrossSection - // (--> it will be the same for all the elements in this material ) - G4double DeltaThreshold = DeltaCutInKineticEnergy[J] ; - - for (G4int i = 0 ; i < TotBin ; i++) { - - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - SIGMA = 0.; - for (G4int iel=0; ielGetZ(), - LowEdgeEnergy, DeltaThreshold); - } - // mean free path = 1./macroscopic cross section - Value = SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; - aVector->PutValue(i, Value) ; - } - // vector is filled - theMeanFreePathTable->insert(aVector); - } -} - -// - -G4double G4LowEnergyIonisation::ComputeCrossSection(const G4double AtomIndex, - const G4double IncEnergy){ - // calculates the microscopic cross section from subshell cross sections - //(it is called for elements , AtomicNumber = Z ) all the subshell - // cross section are computed at the energy IncEnergy with a log-log - // interpolation as reported by stepanek and then summed to get the - // total cross section - - G4double TotalCrossSection = 0.0; - - const oneAtomTable* oneAtomCS - = (*allAtomShellCrossSec)[ZNumVec->index(AtomIndex)]; - - for(size_t ind = 0; ind < oneAtomCS->size(); ind++){ - - G4double crossSec = 0; - G4DataVector* EnergyVector = (*(*oneAtomCS)[ind])[0]; - G4DataVector* CrossSecVector = (*(*oneAtomCS)[ind])[1]; - - if(IncEnergy < (*EnergyVector)[1]){ // First element is the shell number - - crossSec = 0; - } - - else{ - - crossSec = util.DataLogInterpolation(IncEnergy, - (*EnergyVector), (*CrossSecVector))*barn; - - } - - TotalCrossSection += crossSec; - } - - - return TotalCrossSection ; -} - -// - -G4double G4LowEnergyIonisation::ComputeCrossSectionWithCut( - const G4double AtomIndex, - const G4double IncEnergy, - const G4double CutEnergy) -{ - G4double TotalCrossSection = 0.0; - - const oneAtomTable* oneAtomCS - = (*allAtomShellCrossSec)[ZNumVec->index(AtomIndex)]; - - //loop on shells - for(size_t ind = 0; ind < oneAtomCS->size(); ind++){ - - // G4double crossSec = 0; - // G4DataVector* EnergyVector = (*(*oneAtomCS)[ind])[0]; - // G4DataVector* CrossSecVector = (*(*oneAtomCS)[ind])[1]; - - TotalCrossSection += GetShellCrossSectionwithCut(AtomIndex,ind,IncEnergy, - CutEnergy); - } - - return TotalCrossSection ; -} - -// - -G4double G4LowEnergyIonisation::GetShellCrossSection( - const G4double AtomicNumber, - const G4int ind, - const G4double KineticEnergy) -{ - // gives the microscopic cross section for the subshell - - const oneAtomTable* oneAtomCS - = (*allAtomShellCrossSec)[ZNumVec->index(AtomicNumber)]; - - G4double crossSec = 0.0; - G4int oneSize = oneAtomCS->size(); - - if( ind >= oneSize ) return crossSec ; - - G4DataVector* EnergyVector = (*(*oneAtomCS)[ind])[0]; - G4DataVector* CrossSecVector = (*(*oneAtomCS)[ind])[1]; - - if(KineticEnergy < (*EnergyVector)[1]){ // First element is the shell number - - crossSec = 0; - } else{ - - crossSec = util.DataLogInterpolation(KineticEnergy, (*EnergyVector), - (*CrossSecVector))*barn; - } - - return crossSec; -} - -// - -G4double G4LowEnergyIonisation::GetShellCrossSectionwithCut( - const G4double AtomicNumber, - const G4int index, - const G4double KineticEnergy, - const G4double Tcut) -{ - // it gives the total cross section for the subshell - // (integration between Tcut and Tmax) - - G4double minEn = 0.1*eV ; - G4double xsec = 0. ; - - // shortcut .......................... - if(2.*Tcut >= KineticEnergy) return xsec ; - - G4double CrossSection = GetShellCrossSection(AtomicNumber,index, - KineticEnergy) ; - - // shortcut .......................... - if(CrossSection <= 0.) return xsec ; - - oneAtomTable* oneAtomCoeffTable = - (*theSamplingCoeffTable)[ZNumVec->index(AtomicNumber)]; - - oneShellTable* oneShellCoeffTable = - (*oneAtomCoeffTable)[index]; - G4double BindingEn = - (*(*(*theBindingEnergyTable)[AtomicNumber-1])[1])[index]; - - G4double maxEn = 0.5*(KineticEnergy-BindingEn) ; - G4double Tlim = Tcut+BindingEn ; - - // shortcut ................................ - if((Tcut >= maxEn)||((minEn+BindingEn) >= maxEn)) return xsec ; - - const G4int CoeffNumber = oneShellCoeffTable->size(); - - const G4DataVector* energyVec = (*oneShellCoeffTable)[0]; - const G4int LastPar = energyVec->size()-1; - G4DataVector Parms; - - for(G4int ind = 1; ind < CoeffNumber-2; ind++){ - - const G4DataVector* oneCoeffVec = (*oneShellCoeffTable)[ind]; - - if(KineticEnergy < (*energyVec)[0]){ - Parms.push_back((*oneCoeffVec)[0]); - } - - else if(KineticEnergy > (*energyVec)[LastPar]){ - - Parms.push_back((*oneCoeffVec)[LastPar]); - } - - else{ - - G4double par = util.DataSemiLogInterpolation(KineticEnergy, - (*energyVec),(*oneCoeffVec)); - Parms.push_back(par); - } - } - - - // First cut - G4double fstCut = (*(*oneShellCoeffTable)[CoeffNumber-2])[0] == 0.? DBL_MAX : - (*(*oneShellCoeffTable)[CoeffNumber-2])[0]*MeV; - - // Second cut - G4double sndCut = (*(*oneShellCoeffTable)[CoeffNumber-1])[0] == 0.? DBL_MAX : - (*(*oneShellCoeffTable)[CoeffNumber-1])[0]*MeV; - - G4double low,high,aa,bb,saa,sbb ; - - // for the normalization *************************** - G4double norm = 0. ; - - // Area of the first function ALWAYS computed******* - high = maxEn+BindingEn; - if(fstCut < maxEn){ - high = fstCut+BindingEn; - } - low = BindingEn+minEn; - - aa=1./low ; - bb=1./high ; - saa = aa, sbb = bb; - - for (G4int ii = 1; ii < 7; ii++){ - norm += Parms[ii-1]*(saa-sbb)/G4double(ii) ; - saa *= aa ; - sbb *= bb ; - } - - - // Area of the second function and the third function - // - if (maxEn >= sndCut){ - - // Second Function: B1*energy**B2 - // - G4double expona = Parms[13]+1; - - norm += (Parms[12]/expona)*(pow(sndCut,expona)-pow(fstCut,expona)); - - // Third Function: sum_2(Ci/(energy+Binding)^i) i = 2,3,4,5 - // - aa = 1./(sndCut+BindingEn); // equivalent to 1./low in the first function - bb = 1./(maxEn+BindingEn); // equivalent to 1./high in the first function - - saa = aa, sbb = bb; - - for(G4int kk = 1; kk < 5; kk++){ - - norm += Parms[kk+6]*(saa-sbb)/G4double(kk); - saa *= aa; - sbb *= bb; - } - } - - else if(maxEn >= fstCut){ - - // two functions used. - // - // Third Function: sum_2(Ci/(energy+Binding)^i) i = 2,3,4,5 - // - aa = 1./(fstCut+BindingEn); // equivalent to 1./low in the first function - bb = 1./(maxEn+BindingEn); // equivalent to 1./high in the first function - saa = aa, sbb = bb; - - for(G4int kk = 1; kk < 5; kk++){ - - norm += Parms[kk+6]*(saa-sbb)/G4double(kk); - saa *= aa; - sbb *= bb; - } - - } - // end of normalization *********************************** - - // start of the integration - - // contribution from 1st function ? - if(Tcut < fstCut) - { - low = G4std::max(minEn+BindingEn,Tlim) ; - high= G4std::min(fstCut+BindingEn,maxEn+BindingEn) ; - aa = 1./low ; - bb = 1./high ; - saa = aa ; - sbb = bb ; - for(G4int i=1; i<7; i++) - { - xsec += Parms[i-1]*(saa-sbb)/G4double(i) ; - saa *= aa ; - sbb *= bb ; + size_t NumberOfElements = material->GetNumberOfElements() ; + const G4double* theAtomicNumDensityVector = + material->GetAtomicNumDensityVector(); + if(verboseLevel > 0) { + G4cout << "Energy loss for material # " << m + << " tCut(keV)= " << tCut/keV + << G4endl; } - } - - // 3 functions , contributions from 2nd and 3rd function - if(maxEn >= sndCut) - { - // 3rd function - if(Tcut < sndCut) - { - low = G4std::max(fstCut,Tcut) ; - high= G4std::min(sndCut,maxEn) ; + + // now comes the loop for the kinetic energy values + for (size_t i = 0; iGetLowEdgeEnergy(i); + G4double ionloss = 0.; + + // loop for elements in the material + for (size_t iel=0; iel= fstCut) - { - low = G4std::max(fstCut+BindingEn,Tlim) ; - high= maxEn+BindingEn ; + G4int Z = (G4int)((*theElementVector)[iel]->GetZ()); - aa = 1./low ; - bb = 1./high ; - saa = aa ; - sbb = bb ; - for(G4int i=1; i<5; i++) - { - xsec += Parms[i+6]*(saa-sbb)/G4double(i) ; - saa *= aa ; - sbb *= bb ; - } - } + G4int nShells = transitionManager->NumberOfShells(Z); - return xsec*CrossSection/norm ; -} + for (G4int n=0; nindex(AtomicNumber)]; - - oneShellTable* oneShellCoeffTable = - (*oneAtomCoeffTable)[index]; - G4double BindingEn = - (*(*(*theBindingEnergyTable)[AtomicNumber-1])[1])[index]; - - G4double maxEn = 0.5*(KineticEnergy-BindingEn) ; - G4double Tlim = Tcut+BindingEn ; - - const G4int CoeffNumber = oneShellCoeffTable->size(); - - const G4DataVector* energyVec = (*oneShellCoeffTable)[0]; - const G4int LastPar = energyVec->size()-1; - G4DataVector Parms; - - for(G4int ind = 1; ind < CoeffNumber-2; ind++){ - - const G4DataVector* oneCoeffVec = (*oneShellCoeffTable)[ind]; - - if(KineticEnergy < (*energyVec)[0]){ - Parms.push_back((*oneCoeffVec)[0]); - } - - else if(KineticEnergy > (*energyVec)[LastPar]){ - - Parms.push_back((*oneCoeffVec)[LastPar]); - } - - else{ - - G4double par = util.DataSemiLogInterpolation(KineticEnergy, - (*energyVec),(*oneCoeffVec)); - Parms.push_back(par); - } - } - - - // First cut - G4double fstCut = (*(*oneShellCoeffTable)[CoeffNumber-2])[0] == 0.? DBL_MAX : - (*(*oneShellCoeffTable)[CoeffNumber-2])[0]*MeV; - - // Second cut - G4double sndCut = (*(*oneShellCoeffTable)[CoeffNumber-1])[0] == 0.? DBL_MAX : - (*(*oneShellCoeffTable)[CoeffNumber-1])[0]*MeV; - - G4double low,high,aa,bb,saa,sbb,w ; - - // for the normalization ************************************ - G4double norm = 0. ; - - // Area of the first function ALWAYS computed**************** - high = maxEn+BindingEn; - if(fstCut < maxEn){ - high = fstCut+BindingEn; - } - low = BindingEn+minEn; - - aa=1./low ; - bb=1./high ; - saa = aa, sbb = bb; - - for (G4int ii = 1; ii < 7; ii++){ - norm += Parms[ii-1]*(saa-sbb)/G4double(ii) ; - saa *= aa ; - sbb *= bb ; - } - - - // Area of the second function and the third function - // - if (maxEn >= sndCut){ - - // Second Function: B1*energy**B2 - // - G4double expona = Parms[13]+1; - - norm += (Parms[12]/expona)*(pow(sndCut,expona)-pow(fstCut,expona)); - - // Third Function: sum_2(Ci/(energy+Binding)^i) i = 2,3,4,5 - // - aa = 1./(sndCut+BindingEn); // equivalent to 1./low in the first function - bb = 1./(maxEn+BindingEn); // equivalent to 1./high in the first function - - saa = aa, sbb = bb; - - for(G4int kk = 1; kk < 5; kk++){ - - norm += Parms[kk+6]*(saa-sbb)/G4double(kk); - saa *= aa; - sbb *= bb; - } - } - - else if(maxEn >= fstCut){ - - // two functions used. - // - // Third Function: sum_2(Ci/(energy+Binding)^i) i = 2,3,4,5 - // - aa = 1./(fstCut+BindingEn); // equivalent to 1./low in the first function - bb = 1./(maxEn+BindingEn); // equivalent to 1./high in the first function - saa = aa, sbb = bb; - - for(G4int kk = 1; kk < 5; kk++){ - - norm += Parms[kk+6]*(saa-sbb)/G4double(kk); - saa *= aa; - sbb *= bb; - } - - } - // end of normalization ***************************************** - - low = minEn+BindingEn ; - - high= G4std::min(fstCut+BindingEn,maxEn+BindingEn) ; - high= G4std::min(high,Tlim) ; - - aa = 1./low ; - bb = 1./high ; - loss += Parms[0]*(log(high/low)+BindingEn*(bb-aa)) ; - - saa = aa ; - sbb = bb ; - - for(G4int i=2; i<7; i++) - { - w = (saa-sbb)/G4double(i-1) ; - saa *= aa ; - sbb *= bb ; - w += BindingEn*(sbb-saa)/G4double(i) ; - loss += Parms[i-1]*w ; - } - - if(Tcut > fstCut) - { - - // 3 functions , contributions from 2nd and 3rd function - if(maxEn >= sndCut) - { - // 3rd function - low = fstCut ; - high= G4std::min(sndCut,maxEn) ; - high= G4std::min(high,Tcut) ; - - G4double expon = Parms[13]+2. ; - loss += (Parms[12]/expon)*(pow(high,expon)-pow(low,expon)) ; - - // 2nd function - if(Tcut > sndCut) - { - low = sndCut+BindingEn ; - high= G4std::min(maxEn+BindingEn,Tlim) ; - - aa = 1./low ; - bb = 1./high ; - loss += Parms[7]*(log(high/low)+BindingEn*(bb-aa)) ; - - saa = aa ; - sbb = bb ; - - for(G4int i=2; i<5; i++) - { - w = (saa-sbb)/G4double(i-1) ; - saa *= aa ; - sbb *= bb ; - w += BindingEn*(sbb-saa)/G4double(i) ; - loss += Parms[i+6]*w ; + G4double e = energySpectrum->AverageEnergy(Z, 0.0, tCut, + lowEdgeEnergy, n); + G4double pro = energySpectrum->Probability(Z, 0.0, tCut, + lowEdgeEnergy, n); + G4double cs= crossSectionHandler->FindValue(Z, lowEdgeEnergy, n); + ionloss += e * cs * pro * theAtomicNumDensityVector[iel]; + G4double esp = energySpectrum->Excitation(Z, lowEdgeEnergy); + //ionloss += esp * theAtomicNumDensityVector[iel]; + if(verboseLevel > 1) { + G4cout << "Z= " << Z + << " shell= " << n + << " E(keV)= " << lowEdgeEnergy/keV + << " Eav(keV)= " << e/keV + << " pro= " << pro + << " cs= " << cs + << " esp= " << esp + << " loss= " << ionloss + << G4endl; + } } - - } + } + aVector->PutValue(i,ionloss); } - // 2 functions , contr. from 2nd - else if(maxEn >= fstCut) - { - low = fstCut+BindingEn ; - high= G4std::min(maxEn+BindingEn,Tlim) ; + theLossTable->insert(aVector); - aa = 1./low ; - bb = 1./high ; - loss += Parms[7]*(log(high/low)+BindingEn*(bb-aa)) ; + // fill data for fluorescence - saa = aa ; - sbb = bb ; + G4VDataSetAlgorithm* interp = new G4LogLogInterpolation(); + G4VEMDataSet* xsis = new G4CompositeEMDataSet(interp, 1., 1.); + for (size_t iel=0; ielGetZ()); + energy = new G4DataVector(); + ksi = new G4DataVector(); + + for (size_t j = 0; jGetLowEdgeEnergy(j); + G4double cross = 0.; + G4double eAverage= 0.; + G4int nShells = transitionManager->NumberOfShells(Z); + + for (G4int n=0; nAverageEnergy(Z, 0.0, tCut, + lowEdgeEnergy, n); + G4double pro = energySpectrum->Probability(Z, 0.0, tCut, + lowEdgeEnergy, n); + G4double cs= crossSectionHandler->FindValue(Z, lowEdgeEnergy, n); + eAverage += e * cs * pro * theAtomicNumDensityVector[iel]; + cross += cs * pro * theAtomicNumDensityVector[iel]; + if(verboseLevel > 1) { + G4cout << "Z= " << Z + << " shell= " << n + << " E(keV)= " << lowEdgeEnergy/keV + << " Eav(keV)= " << e/keV + << " pro= " << pro + << " cs= " << cs + << G4endl; + } + } + + G4double coeff = 0.0; + if(eAverage > 0.) { + coeff = cross/eAverage; + eAverage /= cross; + } + + if(verboseLevel > 1) { + G4cout << "Ksi Coefficient for Z= " << Z + << " E(keV)= " << lowEdgeEnergy/keV + << " Eav(keV)= " << eAverage/keV + << " coeff= " << coeff + << G4endl; } - } - + energy->push_back(lowEdgeEnergy); + ksi->push_back(coeff); + } + interp = new G4LogLogInterpolation(); + G4VEMDataSet* set = new G4EMDataSet(Z,energy,ksi,interp,1.,1.); + xsis->AddComponent(set); + } + if(verboseLevel) xsis->PrintData(); + shellVacancy->AddXsiTable(xsis); } - - // return loss*CrossSection/norm ; - - loss *= CrossSection/norm ; - - loss += BindingEn*(CrossSection - - GetShellCrossSectionwithCut(AtomicNumber,index,KineticEnergy,Tcut)); - return loss ; + delete bVector; } -// - -G4VParticleChange* G4LowEnergyIonisation::PostStepDoIt(const G4Track& track, - const G4Step& step) -{ - // Fluorescence (as reported by J.Stepanek): +G4VParticleChange* G4LowEnergyIonisation::PostStepDoIt(const G4Track& track, + const G4Step& step) +{ + // Delta electron production mechanism on base of the model // J. Stepanek " A program to determine the radiation spectra due // to a single atomic subshell ionisation by a particle or due to // deexcitation or decay of radionuclides", // Comp. Phys. Comm. 1206 pp 1-19 (1997) - // aParticleChange.Initialize(track); - - G4Material* aMaterial = track.GetMaterial() ; - const G4DynamicParticle* aParticle = track.GetDynamicParticle() ; - // get kinetic energy cut for the electron - G4double* DeltaCutInKineticEnergy= G4Electron::Electron()->GetCutsInEnergy(); - G4double DeltaThreshold = DeltaCutInKineticEnergy[aMaterial->GetIndex()]; - - G4double KineticEnergy = aParticle->GetKineticEnergy(); + const G4Material* material = track.GetMaterial(); + G4double kineticEnergy = track.GetKineticEnergy(); - // kill e- if Tkin is too small ...... - if(KineticEnergy <= DeltaThreshold) - { - if(KineticEnergy < 0.) { - G4cout << "G4LowEnergyIonisation: negative kinetic energy (eV) = " - << KineticEnergy/eV << G4endl; - KineticEnergy = 0.0; - } - aParticleChange.SetEnergyChange(0.0); - aParticleChange.SetLocalEnergyDeposit(KineticEnergy); - aParticleChange.SetStatusChange(fStopAndKill); - return G4VContinuousDiscreteProcess::PostStepDoIt(track,step); - } + // Select atom and shell - // Create lists of pointers to DynamicParticles (photons and electrons) - G4ParticleVector photvec; - G4ParticleVector elecvec; + G4int Z = crossSectionHandler->SelectRandomAtom(material, kineticEnergy); + G4int shell = crossSectionHandler->SelectRandomShell(Z, kineticEnergy); + const G4AtomicShell* atomicShell = + (G4AtomicTransitionManager::Instance())->Shell(Z, shell); + G4double bindingEnergy = atomicShell->BindingEnergy(); + G4int shellId = atomicShell->ShellId(); - // select randomly one element constituing the material. - G4Element* anElement = SelectRandomAtom(aParticle, aMaterial); - G4int AtomIndex = (G4int) anElement->GetZ(); + // Sample delta energy - // First Ionised subshell chosen basing on subshell integrated - // cross section EPDL97 partial sum method - // Select the subshell: it returns the subshell index in the table. - G4int subShellIndex = SelectRandomShell(AtomIndex, KineticEnergy, - DeltaThreshold); + G4int index = material->GetIndex(); + G4double tCut = cutForDelta[index]; + G4double tmax = energySpectrum->MaxEnergyOfSecondaries(kineticEnergy); + G4double tDelta = energySpectrum->SampleEnergy(Z, tCut, tmax, + kineticEnergy, shell); - // There are no delta-ray production - if(subShellIndex < 0) { - return G4VContinuousDiscreteProcess::PostStepDoIt(track,step); - } - - // Get the subshell energy - G4FirstLevel* theBindEnVec = (*theBindingEnergyTable)[AtomIndex-1]; - G4int thePrimaryShell = (G4int) (*(*theBindEnVec)[0])[subShellIndex]; - G4double BindingEn = (*(*theBindEnVec)[1])[subShellIndex]; + if(tDelta == 0.0) + return G4VContinuousDiscreteProcess::PostStepDoIt(track, step); - // Kinematic inside Atomic potential - G4ThreeVector ParticleDirection = aParticle->GetMomentumDirection(); - G4double totEnergy = KineticEnergy + ParticleMass + 2.0*BindingEn; - G4double totMomentum = sqrt(totEnergy*totEnergy - ParticleMass*ParticleMass); - G4double deltaKinEnergy = 0.0; - - - // Energy Sampling - deltaKinEnergy = EnergySampling(AtomIndex, subShellIndex, - KineticEnergy, DeltaThreshold); - deltaKinEnergy+= 2.0*BindingEn; - - // one more test for pathology cases - if( deltaKinEnergy < DeltaThreshold + 2.0*BindingEn) { - deltaKinEnergy -= 2.0*BindingEn; - if(deltaKinEnergy < 0.0) deltaKinEnergy = 0.0; - aParticleChange.SetEnergyChange(KineticEnergy - deltaKinEnergy); - aParticleChange.SetLocalEnergyDeposit(deltaKinEnergy); - return G4VContinuousDiscreteProcess::PostStepDoIt(track,step); - } + // Transform to shell potential + G4double deltaKinE = tDelta + 2.0*bindingEnergy; + G4double primaryKinE = kineticEnergy + 2.0*bindingEnergy; // sampling of scattering angle neglecting atomic motion - G4double deltaMomentum = sqrt(deltaKinEnergy * - (deltaKinEnergy + 2.0*ParticleMass )); + G4double deltaMom = sqrt(deltaKinE*(deltaKinE + 2.0*electron_mass_c2)); + G4double primaryMom = sqrt(primaryKinE*(primaryKinE + 2.0*electron_mass_c2)); - G4double costheta = deltaKinEnergy * (totEnergy + ParticleMass) - /(deltaMomentum * totMomentum); + G4double cost = deltaKinE * (primaryKinE + 2.0*electron_mass_c2) + / (deltaMom * primaryMom); - if (costheta < -1.) costheta = -1.; - else if (costheta > +1.) costheta = +1.; - G4double sintheta = sqrt(1. - costheta*costheta); + if (cost > 1.) cost = 1.; + G4double sint = sqrt(1. - cost*cost); G4double phi = twopi * G4UniformRand(); - G4double dirx = sintheta * cos(phi); - G4double diry = sintheta * sin(phi); - G4double dirz = costheta; + G4double dirx = sint * cos(phi); + G4double diry = sint * sin(phi); + G4double dirz = cost; // Rotate to incident electron direction + G4ThreeVector primaryDirection = track.GetMomentumDirection(); G4ThreeVector deltaDir(dirx,diry,dirz); - deltaDir.rotateUz(ParticleDirection); + deltaDir.rotateUz(primaryDirection); dirx = deltaDir.x(); diry = deltaDir.y(); dirz = deltaDir.z(); - // Find out new incident electron direction - G4double finalPx = totMomentum*ParticleDirection.x() - deltaMomentum*dirx; - G4double finalPy = totMomentum*ParticleDirection.y() - deltaMomentum*diry; - G4double finalPz = totMomentum*ParticleDirection.z() - deltaMomentum*dirz; - // Take into account atomic motion - costheta = 2.0*G4UniformRand() - 1.0; - sintheta = sqrt(1. - costheta*costheta); + // Take into account atomic motion del is relative momentum of the motion + // kinetic energy of the motion == bindingEnergy in V.Ivanchenko model + + cost = 2.0*G4UniformRand() - 1.0; + sint = sqrt(1. - cost*cost); phi = twopi * G4UniformRand(); - G4double del = sqrt(BindingEn *(BindingEn + 2.0*ParticleMass))/deltaMomentum; - dirx += del* sintheta * cos(phi); - diry += del* sintheta * sin(phi); - dirz += del* costheta; - G4double norm = 1.0/sqrt(dirx*dirx + diry*diry + dirz*dirz); - - G4double finalKineticEnergy = KineticEnergy - deltaKinEnergy; - deltaKinEnergy -= 2.0*BindingEn; + G4double del = sqrt(bindingEnergy *(bindingEnergy + 2.0*electron_mass_c2)) + / deltaMom; + dirx += del* sint * cos(phi); + diry += del* sint * sin(phi); + dirz += del* cost; + + // Find out new primary electron direction + G4double finalPx = primaryMom*primaryDirection.x() - deltaMom*dirx; + G4double finalPy = primaryMom*primaryDirection.y() - deltaMom*diry; + G4double finalPz = primaryMom*primaryDirection.z() - deltaMom*dirz; // create G4DynamicParticle object for delta ray G4DynamicParticle* theDeltaRay = new G4DynamicParticle(); - theDeltaRay->SetKineticEnergy(deltaKinEnergy); - theDeltaRay->SetMomentumDirection(dirx*norm,diry*norm,dirz*norm); + theDeltaRay->SetKineticEnergy(tDelta); + G4double norm = 1.0/sqrt(dirx*dirx + diry*diry + dirz*dirz); + dirx *= norm; + diry *= norm; + dirz *= norm; + theDeltaRay->SetMomentumDirection(dirx, diry, dirz); theDeltaRay->SetDefinition(G4Electron::Electron()); - elecvec.push_back(theDeltaRay); - G4double theEnergyDeposit = BindingEn; + G4double theEnergyDeposit = bindingEnergy; - if(finalKineticEnergy < 0.){ - - G4cout << "Tkin=" << KineticEnergy/eV << " Tdel=" << deltaKinEnergy/eV - << " BindingEn=" << BindingEn/eV << " ***********" << G4endl; - } - - // FLUORESCENCE - // load the transition probability table for the element - // theTable[i][j][k] - // i = subshell, j = type of information (second shell, transition energy , - // transition probability), k = previous vectors. - - // Fluorescence data start from element 6 - - if(thePrimShVec.size() != 0) thePrimShVec.clear(); - thePrimShVec.push_back(thePrimaryShell); - if(AtomIndex > 5){ - - G4bool ThereAreShells = TRUE; - G4int AtomInd = ZNumVecFluor->index(AtomIndex); - oneAtomTable* oneAtomFluorTrans = (*theFluorTransitionTable)[AtomInd]; - - while(ThereAreShells) { - - // Select the second transition from another subshell - // fluorPar[0] = SubShell - // fluorPar[1] = Sec SubShell (if there is), - // fluorPar[2] = Transition Probability - // fluorPar[3] = Transition Energy - // the same for augerPar - - G4double fluorPar[3] = {0}; - - // SelectRandomTransition argument is oneAtomTable loop on shells is inside - ThereAreShells = SelectRandomTransition(thePrimaryShell, - fluorPar, - oneAtomFluorTrans); - - - // Daugther dynamic particle - G4DynamicParticle* newPart; - - // Direction of the outcoming particle isotropic selection - G4double newcosTh = 1-2*G4UniformRand(); - G4double newsinTh = sqrt(1-newcosTh*newcosTh); - G4double newPhi = twopi*G4UniformRand(); - - G4double dirx, diry, dirz; - dirz = newcosTh; - diry = newsinTh*cos(newPhi); - dirx = newsinTh*sin(newPhi); - G4ThreeVector newPartDirection(dirx, diry, dirz); - - if(ThereAreShells) { - - thePrimaryShell = (G4int) fluorPar[0]; - - if(fluorPar[2] >= CutForLowEnergySecondaryPhotons){ - - theEnergyDeposit -= fluorPar[2]*MeV; - newPart = new G4DynamicParticle (G4Gamma::Gamma(), - newPartDirection, - fluorPar[2]); - - photvec.push_back(newPart); - } - } else { - - /////Energy deposition vl - ////=================NEW================vl - - /* - // last shell transition from continuum - G4int k = 0; - while(thePrimaryShell != (*(*theBindEnVec)[0])[k]){ - k++; - } - - G4double lastTransEnergy = (*(*theBindEnVec)[1])[k]; - thePrimaryShell = (G4int) fluorPar[0]; - - if(lastTransEnergy >= CutForLowEnergySecondaryPhotons){ - - theEnergyDeposit -= lastTransEnergy*MeV; - - newPart = new G4DynamicParticle(G4Gamma::Gamma(), - newPartDirection, - lastTransEnergy); - - photvec.push_back(newPart); - } - - thePrimShVec.insert(thePrimaryShell); - */ - } - } - } //END OF THE CHECK ON ATOMIC NUMBER - - G4int numOfElec = elecvec.size(); - G4int numOfPhot = photvec.size(); - G4int numOfDau = numOfElec + numOfPhot; - aParticleChange.SetNumberOfSecondaries(numOfDau); - G4int l = 0; - - for(l = 0; l DeltaThreshold){ - G4double fac = 1.0/sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz); - finalPx *= fac; - finalPy *= fac; - finalPz *= fac; + G4double finalKinEnergy = kineticEnergy - tDelta - theEnergyDeposit; + if(finalKinEnergy < 0.0) { + theEnergyDeposit += finalKinEnergy; + finalKinEnergy = 0.0; - aParticleChange.SetMomentumChange(finalPx,finalPy,finalPz); - aParticleChange.SetEnergyChange(finalKineticEnergy); - if(theEnergyDeposit < 0.) { - G4cout << "G4LowEnergyIonisation: Negative energy deposit: " - << theEnergyDeposit/eV << " eV" << G4endl; - theEnergyDeposit = 0.0; - } - aParticleChange.SetLocalEnergyDeposit(theEnergyDeposit); - } else { - theEnergyDeposit += finalKineticEnergy ; - if(theEnergyDeposit < 0.){ - G4cout << "G4LowEnergyIonisation: Negative energy deposit: " - << theEnergyDeposit/eV << " eV" << G4endl; - G4cout << " finalKineticEnergy= " - << finalKineticEnergy/eV << " eV" << G4endl; - theEnergyDeposit = 0.0; - } - aParticleChange.SetLocalEnergyDeposit(theEnergyDeposit); - aParticleChange.SetEnergyChange(0.); - aParticleChange.SetStatusChange(fStopAndKill); + + G4double norm = 1.0/sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz); + finalPx *= norm; + finalPy *= norm; + finalPz *= norm; + aParticleChange.SetMomentumChange(finalPx, finalPy, finalPz); } - - return G4VContinuousDiscreteProcess::PostStepDoIt(track,step); -} -// -// -// selection of the first ionized subshell: partial sum method -// -G4int G4LowEnergyIonisation::SelectRandomShell(const G4int AtomIndex - , const G4double IncEnergy - , const G4double CutEnergy) -{ - G4double partialSum = 0; - G4double totalSum = ComputeCrossSectionWithCut(AtomIndex,IncEnergy, - CutEnergy); - if(totalSum<=0.) return -1; - - G4double rval = totalSum*G4UniformRand(); - const oneAtomTable* oneAtomCS - = (*allAtomShellCrossSec)[ZNumVec->index(AtomIndex)]; + aParticleChange.SetEnergyChange(finalKinEnergy); - for(size_t ind = 0; ind < oneAtomCS->size(); ind++) { - - G4double crossSec; - G4DataVector* EnergyVector = (*(*oneAtomCS)[ind])[0]; - // G4DataVector* CrossSecVector = (*(*oneAtomCS)[ind])[1]; - if(IncEnergy < (*EnergyVector)[0]){ //First element is the shell number - - crossSec = 0; - } - - else{ - - crossSec = GetShellCrossSectionwithCut(AtomIndex,ind,IncEnergy, - CutEnergy); - } - - partialSum += crossSec; - - if(rval <= partialSum) return ind; - } - - G4Exception("LEIonisation: Cannot select a shell"); - return 0; -} - -// - -// -// Element selction in the material already in the standard processes -// -G4Element* G4LowEnergyIonisation::SelectRandomAtom( - const G4DynamicParticle* aDynamicParticle, - G4Material* aMaterial) -{ - // select randomly 1 element within the material - G4double KineticEnergy = aDynamicParticle->GetKineticEnergy(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - if (NumberOfElements == 1) return (*theElementVector)(0); - - const G4double* theAtomNumDensityVector = - aMaterial->GetAtomicNumDensityVector(); - - G4double PartialSumSigma = 0. ; - - G4double rval = G4UniformRand()/MeanFreePath; + // Generation of Fluorescence and Auger + size_t nSecondaries = 0; + size_t totalNumber = 1; + G4std::vector* secondaryVector = 0; + G4DynamicParticle* aSecondary = 0; + G4ParticleDefinition* type = 0; - // get electron cuts in kinetic energy - G4double* DeltaCutInKineticEnergy = G4Electron::Electron() - ->GetCutsInEnergy(); - for ( G4int i=0 ; i < NumberOfElements ; i++ ) { - - G4double DeltaThreshold = DeltaCutInKineticEnergy[i] ; - G4double crossSection; - if (KineticEnergy < lowestKineticEnergy) - - crossSection = 0. ; - - else { - - if (KineticEnergy > highestKineticEnergy) - KineticEnergy = 0.99*highestKineticEnergy; - - G4int AtomIndex = (G4int) (*theElementVector)(i)->GetZ(); - crossSection = ComputeCrossSectionWithCut(AtomIndex, KineticEnergy, - DeltaThreshold); - } - - PartialSumSigma += theAtomNumDensityVector[i] * crossSection; - - if (rval <= PartialSumSigma) return ((*theElementVector)(i)); - - } - return (*theElementVector)(0); -} - -// - -// -// Select a random transition with the transition probabilities and -// the partial sum method using EADL data (A. Forti) -// - -G4bool G4LowEnergyIonisation::SelectRandomTransition(G4int thePrimShell, - G4double* TransParam, - const oneAtomTable* TransitionTable) -{ + // Fluorescence data start from element 6 - G4int SubShellCol = 0, ProbCol = 1, EnergyCol = 2; - // transitionTable contains all the transition probabilities of one atom: - // loop on subshell is inside the method. + if (Z > 5 && (bindingEnergy >= cutForPhotons + || bindingEnergy >= cutForElectrons)) { - // when the last subshell is reached CollIsFull becomes FALSE. - G4bool ColIsFull = FALSE; - G4int ShellNum = 0; - // G4double TotalSum = 0; - G4int maxNumOfShells = TransitionTable->size()-1; + secondaryVector = deexcitationManager.GenerateParticles(Z, shellId); - if(thePrimShell <= 0) { - G4cerr<<"*** Unvalid Primary shell: "<size(); + for (size_t i = 0; iGetKineticEnergy(); + type = aSecondary->GetDefinition(); + if (e < theEnergyDeposit && + ((type == G4Gamma::Gamma() && e > cutForPhotons ) || + (type == G4Electron::Electron() && e > cutForElectrons ))) { + + theEnergyDeposit -= e; + totalNumber++; + + } else { + + delete aSecondary; + (*secondaryVector)[i] = 0; + } + } } - - ShellNum++; } - - // TransProb is the index of the loop and of the table of transition. - // It starts from 1 because the first element of the data table is - // the primary shell id number and not a transition probability: - // it must not be added to TotalSum. - - G4int TransProb = 1; - // Include non-radiative transitions (vl): - ////for(TransProb = 1; TransProb < (*(*TransitionTable)[ShellNum])[ProbCol]->length(); TransProb++){ - //// TotalSum += (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; - ////} - ////G4double PartialProb = G4UniformRand()*TotalSum; - //// - G4double PartialProb = G4UniformRand(); - G4double PartSum = 0; + } - TransProb = 1; - G4int trSize = (*(*TransitionTable)[ShellNum])[ProbCol]->size(); - while(TransProb < trSize){ - - PartSum += (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; - - if(PartialProb <= PartSum){ - - TransParam[0] = (*(*(*TransitionTable)[ShellNum])[SubShellCol])[TransProb]; - TransParam[1] = (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; - TransParam[2] = (*(*(*TransitionTable)[ShellNum])[EnergyCol])[TransProb]; - ColIsFull = TRUE; - break; - } - - TransProb++; - } + // Save delta-electrons - } - else{ + aParticleChange.SetNumberOfSecondaries(totalNumber); + aParticleChange.AddSecondary(theDeltaRay); - ColIsFull = FALSE; - } - - return ColIsFull; -} - -// - -G4double G4LowEnergyIonisation::EnergySampling(const G4int AtomicNumber, - const G4int ShellIndex, - const G4double KinEn - , const G4double deltaRayMinE) -{ - // Sampling Method: acceptation - rejection method from - // EGS4 W.R. Nelson et al. The EGS4 Code System. SLAC-Report-265 , - // December 1985 - // Fit functions: - // - // first function: sum_i A_i/(en+bind)^i i=2,7 used in all - // the cases/subshells (see below) - // - // second function: B_1*(en)**B_2 used in 9 cases/subshells (no references) - // - // third function: sum_i C_i/(en+bind)^i i=2,5 used in 462 cases/subshells - // (see below) - // - //Y.K.Kim M.E.Rudd http://physics.nist.gov/PhysRefData/Ionization/intro.html - // First and Third functions are a modified version: degree of monomial - // in the truncated sum is from 2 to 7 instead that from 2 to 6. - // method A. Forti. - - // 1) Load Coefficients (I need Z number and the index of the shell) - oneAtomTable* oneAtomCoeffTable = - (*theSamplingCoeffTable)[ZNumVec->index(AtomicNumber)]; - - oneShellTable* oneShellCoeffTable = (*oneAtomCoeffTable)[ShellIndex]; - const G4double BindingEn = - (*(*(*theBindingEnergyTable)[AtomicNumber-1])[1])[ShellIndex]; - - // 2) Interpolate coefficients (I need the incoming electron kinetic energy) - const G4int CoeffNumber = oneShellCoeffTable->size(); - - const G4DataVector* energyVec = (*oneShellCoeffTable)[0]; - const G4int LastPar = energyVec->size()-1; - G4DataVector Parms; - - for(G4int ind = 1; ind < CoeffNumber-2; ind++){ - - const G4DataVector* oneCoeffVec = (*oneShellCoeffTable)[ind]; - - if(KinEn < (*energyVec)[0]){ - Parms.push_back((*oneCoeffVec)[0]); - } - - else if(KinEn > (*energyVec)[LastPar]){ - - Parms.push_back((*oneCoeffVec)[LastPar]); - } - - else{ - - // NO REFERENCES for SEMI-LOG interpolation it is used - // because coefficients can be negative. - - G4double par = util.DataSemiLogInterpolation(KinEn,(*energyVec), - (*oneCoeffVec)); - Parms.push_back(par); - } - } - - const G4double minEn = deltaRayMinE; + // Save Fluorescence and Auger - // cuts in energy are always the same - // First cut - G4double fstCutbuf = (*(*oneShellCoeffTable)[CoeffNumber-2])[0]*MeV; - if(fstCutbuf<0.01*eV) fstCutbuf = DBL_MAX; - const G4double fstCut = fstCutbuf; + if (secondaryVector) { - // Second cut - G4double sndCutbuf = (*(*oneShellCoeffTable)[CoeffNumber-1])[0]*MeV; - if(sndCutbuf=maxEn) { - G4cout << "G4LowEnergyIonisation::EnergySampling not enought energy left!" - << G4endl; - G4cout << " minEn - kinEn - B" - << minEn << " " - << KinEn << " " - << BindingEn - << G4endl; - return 0.; - } - G4double area1 = 0., area2 = 0., area3 = 0.; + aSecondary = (*secondaryVector)[l]; - // ************************************************************** - // AREAS - // ************************************************************** - // compute here the weights of the two regions (areas) - // temporary solution, but needed for consistent sampling - - // NOTATION the number order of the functions follows the energy - // increasing order even if what is called second function should - // be the third following the number of cases in which it appears (only 9) + if(aSecondary) { - // - // First Function: sum_2(A_i/(energy+Binding)^i) i = 2,3,4,5,6,7 - // - G4double rejectionMax = 0. ; - if(minEn>=fstCut){ - area1 = 0.; - } - else{ - G4double high = maxEn+BindingEn; - if(fstCut < maxEn){ high = fstCut+BindingEn;} - G4double low = BindingEn+minEn; - G4double aa=1./low ; - G4double bb=1./high ; - G4double saa = aa, sbb = bb; - G4double llow = low; - - for (G4int ii = 1; ii < 7; ii++){ - - area1 += Parms[ii-1]*(saa-sbb)/G4double(ii) ; - saa *= aa ; - sbb *= bb ; - // - //function itself at the minimum value - // - rejectionMax += Parms[ii-1]/llow; - llow *= low ; - } - if(area1<0) G4cerr<<"Problem: area1 = "<= sndCut){ - - // - // three functions used. - // - if(minEn>sndCut){ - area2 = 0.; - } - else{ - G4double low = fstCut; - if(minEn>low) low = minEn; - // - // Second Function: B1*energy**B2 - // - G4double expon = Parms[13]+1; - area2 = (Parms[12]/expon)*(pow(sndCut,expon)-pow(low,expon)); - } - if(area2<0) G4cerr<<"Problem: area2 = "<low) low = minEn; - - G4double aa = 1./(low+BindingEn); - // equivalent to 1./low in the first function - - G4double bb = 1./(maxEn+BindingEn); - // equivalent to 1./high in the first function - - G4double saa = aa, sbb = bb; - - for(G4int kk = 1; kk < 5; kk++){ - - // area3: integral of the normalized third function - area3 += Parms[kk+6]*(saa-sbb)/G4double(kk); - saa *= aa; - sbb *= bb; + aParticleChange.AddSecondary(aSecondary); + } } - if(area3<0) G4cerr<<"Problem: area3 = "<= fstCut){ - - // two functions used. - // - // In this case the area2 keeps her initial value area2 = 0. - // - // Third Function: sum_2(Ci/(energy+Binding)^i) i = 2,3,4,5 - // it is the same as the first function but with two degree less - // - G4double low = fstCut; - if(minEn>fstCut)low = minEn; - - G4double aa = 1./(low+BindingEn); - // equivalent to 1./low in the first function - - G4double bb = 1./(maxEn+BindingEn); - // equivalent to 1./high in the first function - - G4double saa = aa, sbb = bb; - G4int kk; - for( kk = 1; kk < 5; kk++){ - - // area3: integral of the normalized third function - G4double buf = Parms[kk+6]*(saa-sbb)/G4double(kk); - area3+= buf; - saa *= aa; - sbb *= bb; - } - if(area3<0) { - G4cerr<<"Problem: area3 bis= "< area1 && rand1 <= areaDue){ - - //Sampling from the second function only 9 subshells - G4double expon = Parms[13]+1; - G4double low = fstCut; - if(minEn>low) low = minEn; - G4double norm = (pow(sndCut,expon)-pow(low,expon)); - G4double sum = norm*G4UniformRand()+pow(low,expon); - G4double exponInv = 1/expon; - sample = pow(sum,exponInv); - which = 2; - } - - - else if (rand1 > areaDue && rand1 <= areaTot){ - - // Sampling from the third function 462 cases of which 9 with the second - G4double rejection = 0; - which = 3; - do{ - - G4double rand2 = G4UniformRand(); - G4double Ka = 0; - - if(whatCut < maxEn){ - - Ka = (BindingEn + maxEn)/(whatCut+BindingEn); - } - - sample = (whatCut + BindingEn)*pow(Ka,rand2)-BindingEn; - - G4double arg = sample + BindingEn; - - rejection = Parms[7]/arg+Parms[8]/pow(arg,2)+Parms[9]/pow(arg,3) - + Parms[10]/pow(arg,4); - - rejection /= Parms[11]; - - }while(rejection < G4UniformRand()); - } - if(sample* +G4LowEnergyIonisation::DeexciteAtom(const G4Material* material, + G4double incidentEnergy, + G4double eLoss) +{ + // create vector of secondary particles + + G4std::vector* partVector = + new G4std::vector; + + if(eLoss > cutForPhotons && eLoss > cutForElectrons) { + G4AtomicTransitionManager* transitionManager = + G4AtomicTransitionManager::Instance(); + + size_t nElements = material->GetNumberOfElements(); + const G4ElementVector* theElementVector = material->GetElementVector(); + + G4std::vector* secVector = 0; + G4DynamicParticle* aSecondary = 0; + G4ParticleDefinition* type = 0; + G4double e; + G4ThreeVector position; + G4int shell, shellId; + + // sample secondaries + + G4double eTot = 0.0; + G4std::vector n = + shellVacancy->GenerateNumberOfIonisations(material, + incidentEnergy,eLoss); + for (size_t i=0; iGetZ()); + size_t nVacancies = n[i]; + + G4double maxE = transitionManager->Shell(Z, 0)->BindingEnergy(); + + if (Z>5 && (maxE>cutForPhotons || maxE>cutForElectrons) + && nVacancies > 0 ) { + + for (size_t j=0; jSelectRandomShell(Z, incidentEnergy); + shellId = transitionManager->Shell(Z, shell)->ShellId(); + G4double maxEShell = + transitionManager->Shell(Z, shell)->BindingEnergy(); + + if (maxEShell>cutForPhotons || maxEShell>cutForElectrons ) { + + secVector = deexcitationManager.GenerateParticles(Z, shellId); + + if (secVector != 0) { + + for (size_t l = 0; lsize(); l++) { + + aSecondary = (*secVector)[l]; + if (aSecondary != 0) { + + e = aSecondary->GetKineticEnergy(); + type = aSecondary->GetDefinition(); + if ( eTot + e <= eLoss && + (type == G4Gamma::Gamma() && e>cutForPhotons ) || + (type == G4Electron::Electron() && e>cutForElectrons)) { + + eTot += e; + partVector->push_back(aSecondary); + + } else { + + delete aSecondary; + + } + } + } + delete secVector; + } + } + } + } + } + } + return partVector; +} + +G4double G4LowEnergyIonisation::GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* cond) +{ + *cond = NotForced; + G4int index = (track.GetMaterial())->GetIndex(); + const G4VEMDataSet* data = theMeanFreePath->GetComponent(index); + G4double meanFreePath = data->FindValue(track.GetKineticEnergy()); + return meanFreePath; +} + +void G4LowEnergyIonisation::SetCutForLowEnSecPhotons(G4double cut) +{ + cutForPhotons = cut; +} + +void G4LowEnergyIonisation::SetCutForLowEnSecElectrons(G4double cut) +{ + cutForElectrons = cut; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPhotoElectric.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPhotoElectric.cc index 84e4d64285..b81fc78199 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPhotoElectric.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPhotoElectric.cc @@ -21,17 +21,21 @@ // ******************************************************************** // // -// $Id: G4LowEnergyPhotoElectric.cc,v 1.31.2.2 2001/06/28 20:19:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LowEnergyPhotoElectric.cc,v 1.42 2001/11/07 21:31:16 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland +// Author: A. Forti +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // -// ------------ G4LowEnergyPhotoelctric: low energy modifications -------- -// by Alessandra Forti, October 1998 -// ************************************************************** +// History: +// -------- +// October 1998 - low energy modifications by Alessandra Forti +// Added Livermore data table construction methods A. Forti +// Modified BuildMeanFreePath to read new data tables A. Forti +// Added EnergySampling method A. Forti +// Modified PostStepDoIt to insert sampling with EPDL97 data A. Forti +// Added SelectRandomAtom A. Forti +// Added map of the elements A. Forti // 10.04.2000 VL // - Correcting Fluorescence transition probabilities in order to take into account // non-radiative transitions. No Auger electron simulated yet: energy is locally deposited. @@ -41,707 +45,264 @@ // . no Fluorescence was simulated when the photo-electron energy // was below production threshold. // -// Added Livermore data table construction methods A. Forti -// Modified BuildMeanFreePath to read new data tables A. Forti -// Added EnergySampling method A. Forti -// Modified PostStepDoIt to insert sampling with EPDL97 data A. Forti -// Added SelectRandomAtom A. Forti -// Added map of the elements A. Forti // 07-09-99, if no e- emitted: edep=photon energy, mma // 24.04.01 V.Ivanchenko remove RogueWave +// 12.08.2001 MGP Revised according to a design iteration +// 16.09.2001 E. Guardincerri Added fluorescence generation +// 06.10.2001 MGP Added protection to avoid negative electron energies +// when binding energy of selected shell > photon energy // // -------------------------------------------------------------- -// This Class Header #include "G4LowEnergyPhotoElectric.hh" -// Collaborating Class Headers -#include "G4EnergyLossTables.hh" +#include "G4ParticleDefinition.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4ForceCondition.hh" +#include "G4Gamma.hh" #include "G4Electron.hh" +#include "G4DynamicParticle.hh" +#include "G4VParticleChange.hh" +#include "G4ThreeVector.hh" +#include "G4VCrossSectionHandler.hh" +#include "G4CrossSectionHandler.hh" +#include "G4VEMDataSet.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4LogLogInterpolation.hh" +#include "G4VRangeTest.hh" +#include "G4RangeTest.hh" +#include "G4AtomicTransitionManager.hh" +#include "G4AtomicShell.hh" -typedef G4std::vector G4ParticleVector; +#include "G4CutsPerMaterialWarning.hh" -// .. - -// constructor - G4LowEnergyPhotoElectric::G4LowEnergyPhotoElectric(const G4String& processName) - : G4VDiscreteProcess(processName), // initialization - lowestEnergyLimit (250*eV), - highestEnergyLimit(100*GeV), - NumbBinTable(200), - CutForLowEnergySecondaryPhotons(0.), - theCrossSectionTable(0), - theMeanFreePathTable(0), - allAtomShellCrossSec(0), - theFluorTransitionTable(0), - theBindingEnergyTable(0), - ZNumVec(0), - ZNumVecFluor(0), - MeanFreePath(0.) + : G4VDiscreteProcess(processName), lowEnergyLimit(250*eV), highEnergyLimit(100*GeV), + intrinsicLowEnergyLimit(10*eV), + intrinsicHighEnergyLimit(100*GeV), + cutForLowEnergySecondaryPhotons(0.) { - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< G4endl; - G4cout << "lowestEnergy: " << lowestEnergyLimit/keV << "keV "; - G4cout << "highestEnergy: " << highestEnergyLimit/MeV << "MeV " << G4endl; - } + if (lowEnergyLimit < intrinsicLowEnergyLimit || + highEnergyLimit > intrinsicHighEnergyLimit) + { + G4Exception("G4LowEnergyPhotoElectric::G4LowEnergyPhotoElectric - energy limit outside intrinsic process validity range"); + } + + crossSectionHandler = new G4CrossSectionHandler(); + shellCrossSectionHandler = new G4CrossSectionHandler(); + meanFreePathTable = 0; + rangeTest = new G4RangeTest; + + if (verboseLevel > 0) + { + G4cout << GetProcessName() << " is created " << G4endl + << "Energy range: " + << lowEnergyLimit / keV << " keV - " + << highEnergyLimit / GeV << " GeV" + << G4endl; + } } -// .. - -// destructor - G4LowEnergyPhotoElectric::~G4LowEnergyPhotoElectric() { - if (theCrossSectionTable) { - delete theCrossSectionTable; - } - - if (theBindingEnergyTable) { - // theBindingEnergyTable->clearAndDestroy(); - theBindingEnergyTable->clear(); - delete theBindingEnergyTable; - } - - if (theMeanFreePathTable) { - // theMeanFreePathTable->clearAndDestroy(); - theMeanFreePathTable->clear(); - delete theMeanFreePathTable; - } - - // ClearAndDestroy of this tables is called in their destructors - if (theFluorTransitionTable) { - delete theFluorTransitionTable; - } - - if (allAtomShellCrossSec) { - - delete allAtomShellCrossSec; - } - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } - - if(ZNumVecFluor){ - ZNumVecFluor->erase(ZNumVecFluor->begin(),ZNumVecFluor->end()); - delete ZNumVecFluor; - } - -} - -// .. - -void G4LowEnergyPhotoElectric::SetCutForLowEnSecPhotons(G4double cut){ - - CutForLowEnergySecondaryPhotons = cut; + delete crossSectionHandler; + delete shellCrossSectionHandler; + delete meanFreePathTable; + delete rangeTest; } -// .. - -void G4LowEnergyPhotoElectric::BuildPhysicsTable(const G4ParticleDefinition& PhotonType) - -// Build microscopic cross section table and mean free path table +void G4LowEnergyPhotoElectric::BuildPhysicsTable(const G4ParticleDefinition& photon) { - - BuildZVec(); - - BuildCrossSectionTable(); - - BuildShellCrossSectionTable(); - - BuildMeanFreePathTable(); - BuildBindingEnergyTable(); + G4CutsPerMaterialWarning warning; + warning.PrintWarning(&photon); - BuildFluorTransitionTable(); - + crossSectionHandler->Clear(); + G4String crossSectionFile = "phot/pe-cs-"; + crossSectionHandler->LoadData(crossSectionFile); + + shellCrossSectionHandler->Clear(); + G4String shellCrossSectionFile = "phot/pe-ss-cs-"; + shellCrossSectionHandler->LoadShellData(shellCrossSectionFile); + + delete meanFreePathTable; + meanFreePathTable = crossSectionHandler->BuildMeanFreePathForMaterials(); } -// .. - -// CONSTRUCT THE CROSS SECTION TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC USING EPDL DATA -void G4LowEnergyPhotoElectric::BuildCrossSectionTable(){ - - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } - - theCrossSectionTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - G4FirstLevel* oneAtomCS = util.BuildFirstLevelTables(AtomInd, dataNum, "phot/pe-cs-"); - - // theCrossSectionTable->insert(oneAtomCS); - theCrossSectionTable->push_back(oneAtomCS); - - }//end for on atoms -} - -// .. - -// CONSTRUCT THE SUBSHELL CS TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC USING EPDL DATA -void G4LowEnergyPhotoElectric::BuildShellCrossSectionTable(){ - - if (allAtomShellCrossSec) { - - delete allAtomShellCrossSec; - } - - allAtomShellCrossSec = new allAtomTable(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - oneAtomTable* oneAtomShellCS = util.BuildSecondLevelTables(AtomInd, dataNum, "phot/pe-ss-cs-"); - - // allAtomShellCrossSec->insert(oneAtomShellCS); - allAtomShellCrossSec->push_back(oneAtomShellCS); - - }//end for on atoms -} - -// .. - -// CONSTRUCT THE BE TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC USING EADL DATA -void G4LowEnergyPhotoElectric::BuildBindingEnergyTable(){ - - if (theBindingEnergyTable) { - - delete theBindingEnergyTable; - } - - G4int dataNum = 2; - theBindingEnergyTable = util.BuildSecondLevelTables(0,dataNum,"fluor/binding"); -} - -// .. - -// CONSTRUCT THE FTP TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC USING EADL DATA -void G4LowEnergyPhotoElectric::BuildFluorTransitionTable(){ - - if (theFluorTransitionTable) { - - delete theFluorTransitionTable; - } - - theFluorTransitionTable = new allAtomTable(); - ZNumVecFluor = new G4DataVector(*ZNumVec); - G4int dataNum = 3; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - if(AtomInd > 5){ - - oneAtomTable* oneAtomShellFL = util.BuildSecondLevelTables(AtomInd, dataNum, "fluor/fl-tr-pr-"); - // theFluorTransitionTable->insert(oneAtomShellFL); - theFluorTransitionTable->push_back(oneAtomShellFL); - } - else{ - ZNumVecFluor->remove(AtomInd); - } - }//end for on atoms -} - -// .. - -// -// vector mapping the elements of the material table -// -void G4LowEnergyPhotoElectric::BuildZVec(){ - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } - - ZNumVec = new G4DataVector(); - for (G4int J=0 ; J < numOfMaterials; J++){ - - const G4Material* material= (*theMaterialTable)[J]; - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4int NumberOfElements = material->GetNumberOfElements() ; - - for (G4int iel=0; ielGetZ(); - - if(ZNumVec->contains(Zel) == FALSE){ - ZNumVec->push_back(Zel); - } else{ - continue; - } - } - } -} - -// .. - -// Compute total cross section from subshell integrated cross section: needed for -// selection of the first subshell ionized. - -G4double G4LowEnergyPhotoElectric::ComputeCrossSection(const G4double AtomIndex, - const G4double IncEnergy){ - // calculates the microscopic cross section from subshell cross sections - //(it is called for elements , AtomicNumber = Z ) - - G4double TotalCrossSection(0.); - - const oneAtomTable* oneAtomCS - = (*allAtomShellCrossSec)[ZNumVec->index(AtomIndex)]; - - for(size_t ind = 0; ind < oneAtomCS->size(); ind++){ - - G4double crossSec = 0; - G4DataVector* EnergyVector = (*(*oneAtomCS)[ind])[0]; - G4DataVector* CrossSecVector = (*(*oneAtomCS)[ind])[1]; - - if(IncEnergy < (*EnergyVector)[1]){ // First element is the shell number - - crossSec = 0; - } - - else{ - - crossSec = util.DataLogInterpolation(IncEnergy, (*EnergyVector), (*CrossSecVector))*barn; - - } - - TotalCrossSection += crossSec; - } - - return TotalCrossSection ; -} - -// .. - -void G4LowEnergyPhotoElectric::BuildMeanFreePathTable(){ - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; } - - // material - G4double NumbOfMaterials = G4Material::GetNumberOfMaterials(); - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4Material* material; - - // MeanFreePath - G4double LowEdgeEnergy, Value; - theMeanFreePathTable = new G4PhysicsTable(NumbOfMaterials); - G4PhysicsLogVector* ptrVector; - - for ( G4int J = 0 ; J < NumbOfMaterials; J++ ) { // For each material - - //create physics vector then fill it .... - // WARNING: Lower limit of total cross sections in the data is the binding energy - // of the relative subshell. MeanFreePath table require a common lowest limit. - // This lowestEnergyLimit is at the moment fixed at 250 ev. - - ptrVector = new G4PhysicsLogVector(lowestEnergyLimit, highestEnergyLimit, NumbBinTable); - - material = (*theMaterialTable)(J); - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4double* theAtomNumDensityVector = material->GetAtomicNumDensityVector(); - - for ( G4int i = 0 ; i < NumbBinTable ; i++ ){ - //For each energy - - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy(i); - - G4double SIGMA = 0; - - for ( size_t k=0 ; k < material->GetNumberOfElements() ; k++ ){ - // For each element - G4int AtomIndex = (G4int) (*theElementVector)(k)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - - G4double interCrsSec = util.DataLogInterpolation(LowEdgeEnergy, (*(*oneAtomCS)[0]), (*(*oneAtomCS)[1]))*barn; - - SIGMA += theAtomNumDensityVector[k]*interCrsSec; - } - - Value = SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX ; - - ptrVector->PutValue( i , Value ) ; - } - - theMeanFreePathTable->insertAt( J , ptrVector ) ; - } -} - -// .. - -G4VParticleChange* G4LowEnergyPhotoElectric::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep){ - - // Fluorescence (as reported by stepanek): - // J. Stepanek " A program to determine the radiation spectra due to a single atomic +G4VParticleChange* G4LowEnergyPhotoElectric::PostStepDoIt(const G4Track& aTrack, + const G4Step& aStep) +{ + // Fluorescence generated according to: + // J. Stepanek ,"A program to determine the radiation spectra due to a single atomic // subshell ionisation by a particle or due to deexcitation or decay of radionuclides", // Comp. Phys. Comm. 1206 pp 1-1-9 (1997) - // - // incoming particle initialization + aParticleChange.Initialize(aTrack); - - G4Material* aMaterial = aTrack.GetMaterial(); - - const G4DynamicParticle* aDynamicPhoton = aTrack.GetDynamicParticle(); - const G4double PhotonEnergy = aDynamicPhoton->GetKineticEnergy(); - if(PhotonEnergy <= lowestEnergyLimit){ - - aParticleChange.SetStatusChange(fStopAndKill); - aParticleChange.SetEnergyChange(0.); - aParticleChange.SetLocalEnergyDeposit(PhotonEnergy); - - return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); - } - - const G4ParticleMomentum PhotonDirection = aDynamicPhoton->GetMomentumDirection(); - - // select randomly one element constituing the material. - G4Element* anElement = SelectRandomAtom(aDynamicPhoton, aMaterial); - - // PAY ATTENTION TO THE MEANING OF THIS NUMBER!!! SelectRandomAtom requires to use AtomNum - // the BindingEnergyTable requires AtomNum-1 - G4int AtomNum = (G4int) anElement->GetZ(); - - // First Ionised subshell is chosen basing on subshell integrated cross section EPDL97 - // using the partial sum method. - // Select the subshell WARNING!!!!: it returns the subshell index in the table. - - G4int subShellIndex = SelectRandomShell(AtomNum, PhotonEnergy); - - G4FirstLevel* theBindEnVec = (*theBindingEnergyTable)[AtomNum-1]; - G4int thePrimaryShell = (G4int) (*(*theBindEnVec)[0])[subShellIndex]; - G4double BindingEn = ((*(*theBindEnVec)[1])[subShellIndex])*MeV; - if(thePrimShVec.size() != 0){ - - thePrimShVec.clear(); - } + const G4DynamicParticle* incidentPhoton = aTrack.GetDynamicParticle(); + G4double photonEnergy = incidentPhoton->GetKineticEnergy(); + if (photonEnergy <= lowEnergyLimit) + { + aParticleChange.SetStatusChange(fStopAndKill); + aParticleChange.SetEnergyChange(0.); + aParticleChange.SetLocalEnergyDeposit(photonEnergy); + return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); + } + + G4ParticleMomentum photonDirection = incidentPhoton->GetMomentumDirection(); + + // Select randomly one element in the current material + G4Material* material = aTrack.GetMaterial(); + G4int Z = crossSectionHandler->SelectRandomAtom(material,photonEnergy); - thePrimShVec.push_back(thePrimaryShell); + // Select the ionised shell in the current atom according to shell cross sections + size_t shellIndex = shellCrossSectionHandler->SelectRandomShell(Z,photonEnergy); + + // Retrieve the corresponding identifier and binding energy of the selected shell + G4AtomicTransitionManager* transitionManager = G4AtomicTransitionManager::Instance(); + const G4AtomicShell* shell = transitionManager->Shell(Z,shellIndex); + G4double bindingEnergy = shell->BindingEnergy(); + G4int shellId = shell->ShellId(); // Create lists of pointers to DynamicParticles (photons and electrons) - G4ParticleVector photvec; - // G4int photInd = 0; - G4ParticleVector elecvec; - // G4int elecInd = 0; + // (Is the electron vector necessary? To be checked) + G4std::vector* photonVector = 0; + G4std::vector electronVector; - // primary outcoming electron - G4double ElecKineEnergy = (PhotonEnergy - BindingEn); + G4double energyDeposit = bindingEnergy; - G4double theEnergyDeposit = BindingEn; + // Primary outcoming electron + G4double eKineticEnergy = photonEnergy - bindingEnergy; - if (G4EnergyLossTables::GetRange(G4Electron::Electron(),ElecKineEnergy,aMaterial) - >= G4std::min(G4Electron::GetCuts(), aStep.GetPostStepPoint()->GetSafety())){ + // There may be cases where the binding energy of the selected shell is > photon energy + // In such cases do not generate secondaries + if (eKineticEnergy > 0.) + { + // Generate the electron only if with large enough range w.r.t. cuts and safety + G4double safety = aStep.GetPostStepPoint()->GetSafety(); - // the electron is created in the direction of the incident photon ... - - G4DynamicParticle* aElectron = new G4DynamicParticle (G4Electron::Electron(), - PhotonDirection, ElecKineEnergy) ; - elecvec.push_back(aElectron); - } // END OF CUTS + if (rangeTest->Escape(G4Electron::Electron(),material,eKineticEnergy,safety)) + { + // The electron is created in the direction of the incident photon ... + G4DynamicParticle* electron = new G4DynamicParticle (G4Electron::Electron(), + photonDirection, + eKineticEnergy); + electronVector.push_back(electron); + } + else + { + energyDeposit += eKineticEnergy; + } + } + else + { + energyDeposit = photonEnergy; + } + + + G4int nElectrons = electronVector.size(); + size_t nTotPhotons = 0; + G4int nPhotons=0; + + // Generation of fluorescence + // Data in EADL are available only for Z > 5 + // Protection to avoid generating photons in the unphysical case of + // shell binding energy > photon energy + if (Z > 5 && eKineticEnergy > 0.) + { + photonVector = deexcitationManager.GenerateParticles(Z,shellId); + nTotPhotons = photonVector->size(); + for (size_t k=0; kGetKineticEnergy(); + G4double eDepositTmp = energyDeposit - itsKineticEnergy; + if (itsKineticEnergy >= cutForLowEnergySecondaryPhotons && + eDepositTmp > 0.) + { + nPhotons++; + // Local energy deposit is given as the sum of the + // energies of incident photons minus the energies + // of the outcoming fluorescence photons + energyDeposit -= itsKineticEnergy; + + } + else + { delete aPhoton; } + } + } + } + G4int nSecondaries = nElectrons + nPhotons; - else{ - theEnergyDeposit += ElecKineEnergy; - } - - // load the transition probability table for the element - // theTable[i][j][k] - // i = subshell, j = type of information (second shell, transition energy , - // transition probability), k = previous vectors. - - if(AtomNum > 5){ - - G4bool ThereAreShells = TRUE; - G4int AtomInd = ZNumVecFluor->index(AtomNum); - oneAtomTable* oneAtomFluorTrans = (*theFluorTransitionTable)[AtomInd]; - - while(ThereAreShells == TRUE){ - - // Select the second transition from another subshell - // fluorPar[0] = SubShell - // fluorPar[1] = Sec SubShell (if there is), - // fluorPar[2] = Transition Probability - // the same for augerPar - - G4double fluorPar[3] = {0}; - ThereAreShells = SelectRandomTransition(thePrimaryShell, - fluorPar, - oneAtomFluorTrans); - - // Daugther dynamic particle - G4DynamicParticle* newPart; - - // Direction of the outcoming particle isotropic selection - G4double newcosTh = 1-2*G4UniformRand(); - G4double newsinTh = sqrt(1-newcosTh*newcosTh); - G4double newPhi = twopi*G4UniformRand(); - - G4double dirx, diry, dirz; - dirz = newcosTh; - diry = newsinTh*cos(newPhi); - dirx = newsinTh*sin(newPhi); - G4ThreeVector newPartDirection(dirx, diry, dirz); - /////newPartDirection.rotateUz(PhotonDirection); - - if(ThereAreShells != FALSE){ - - thePrimaryShell = (G4int) fluorPar[0]; - - if(fluorPar[2]*MeV >= CutForLowEnergySecondaryPhotons){ - - theEnergyDeposit -= fluorPar[2]*MeV; - - newPart = new G4DynamicParticle (G4Gamma::Gamma(), - newPartDirection, - fluorPar[2]*MeV); - // photvec.append(newPart); - photvec.push_back(newPart); - } - } - else{ - - /////Energy deposition vl - ////=================NEW================vl - - /* - G4int k = 0; - while(thePrimaryShell != (*(*theBindEnVec)[0])[k]) k++; - - G4double lastTransEnergy = ((*(*theBindEnVec)[1])[k])*MeV; - thePrimaryShell = (G4int) fluorPar[0]; - - if(lastTransEnergy >= CutForLowEnergySecondaryPhotons){ - - theEnergyDeposit -= lastTransEnergy; - - newPart = new G4DynamicParticle (G4Gamma::Gamma(), - newPartDirection, - lastTransEnergy) ; - photvec.push_back(newPart); - - } - thePrimShVec.insert(thePrimaryShell); - */ - } - - } - } //END OF THE CHECK ON ATOMIC NUMBER - - G4int numOfElec = elecvec.size(); - G4int numOfPhot = photvec.size(); - G4int numOfDau = numOfElec + numOfPhot; - - aParticleChange.SetNumberOfSecondaries(numOfDau); - G4int l = 0; - for( l = 0; lindex(AtomIndex)]; - - for(size_t ind = 0; ind < oneAtomCS->size(); ind++){ - - G4double crossSec; - G4DataVector* EnergyVector = (*(*oneAtomCS)[ind])[0]; - G4DataVector* CrossSecVector = (*(*oneAtomCS)[ind])[1]; - if(IncEnergy < (*EnergyVector)[0]){ //First element is the shell number - - crossSec = 0; - } - - else{ - - crossSec = util.DataLogInterpolation(IncEnergy, (*EnergyVector), (*CrossSecVector))*barn; - - } - - partialSum += crossSec; - - if(rval <= partialSum) return ind; - } - - G4Exception("LEPhotoElectric: Cannot select a shell"); - return 0; -} - -// .. - -G4Element* -G4LowEnergyPhotoElectric::SelectRandomAtom(const G4DynamicParticle* aDynamicPhoton, - G4Material* aMaterial) +G4bool G4LowEnergyPhotoElectric::IsApplicable(const G4ParticleDefinition& particle) { - // select randomly 1 element within the material - G4double GammaEnergy = aDynamicPhoton->GetKineticEnergy(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - if (NumberOfElements == 1) return (*theElementVector)(0); - - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - - G4double PartialSumSigma = 0. ; - - G4double rval = G4UniformRand()/MeanFreePath; - - for ( G4int i=0 ; i < NumberOfElements ; i++ ){ - - G4double crossSection; - if (GammaEnergy < lowestEnergyLimit) - - crossSection = 0. ; - - else { - - if (GammaEnergy > highestEnergyLimit) GammaEnergy = 0.99*highestEnergyLimit ; - - G4int AtomIndex = (G4int) (*theElementVector)(i)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - - crossSection = util.DataLogInterpolation(GammaEnergy, (*(*oneAtomCS)[0]), (*(*oneAtomCS)[1]))*barn; - } - - PartialSumSigma += theAtomNumDensityVector[i] * crossSection; - - if (rval <= PartialSumSigma) return ((*theElementVector)(i)); - - } - return (*theElementVector)(0); -} -// .. - -// -// Select a random transition with the transition probabilities and the partial sum -// method using EADL data (A. Forti) -// - -G4bool G4LowEnergyPhotoElectric::SelectRandomTransition(G4int thePrimShell, - G4double* TransParam, - const oneAtomTable* TransitionTable){ - - G4int SubShellCol = 0, ProbCol = 1, EnergyCol = 2; - // transitionTable contains all the transition probabilities of one atom: - // loop on subshell is inside the method. - - // when the last subshell is reached CollIsFull becomes FALSE. - G4bool ColIsFull = FALSE; - G4int ShellNum = 0; - // G4double TotalSum = 0; - G4int maxNumOfShells = TransitionTable->size()-1; - - if(thePrimShell <= 0) { - G4cerr<<"*** Unvalid Primary shell: "<length(); TransProb++){ - //// TotalSum += (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; - //// } - ////G4double PartialProb = G4UniformRand()*TotalSum; - //// - G4double PartialProb = G4UniformRand(); - - - //vl. - - - G4double PartSum = 0; - - TransProb = 1; - G4int trSize = (*(*TransitionTable)[ShellNum])[ProbCol]->size(); - while(TransProb < trSize){ - - PartSum += (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; - - if(PartialProb <= PartSum){ - - TransParam[0] = (*(*(*TransitionTable)[ShellNum])[SubShellCol])[TransProb]; - TransParam[1] = (*(*(*TransitionTable)[ShellNum])[ProbCol])[TransProb]; - TransParam[2] = (*(*(*TransitionTable)[ShellNum])[EnergyCol])[TransProb]; - ColIsFull = TRUE; - break; - } - - TransProb++; - } - } - else{ - - ColIsFull = FALSE; - } - - return ColIsFull; + return ( &particle == G4Gamma::Gamma() ); } -// .. +G4double G4LowEnergyPhotoElectric::GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition*) +{ + const G4DynamicParticle* photon = track.GetDynamicParticle(); + G4double energy = photon->GetKineticEnergy(); + G4Material* material = track.GetMaterial(); + size_t materialIndex = material->GetIndex(); + + G4double meanFreePath; + if (energy > highEnergyLimit) + meanFreePath = meanFreePathTable->FindValue(highEnergyLimit,materialIndex); + else if (energy < lowEnergyLimit) meanFreePath = DBL_MAX; + else meanFreePath = meanFreePathTable->FindValue(energy,materialIndex); + return meanFreePath; +} + +void G4LowEnergyPhotoElectric::SetCutForLowEnSecPhotons(G4double cut) +{ + cutForLowEnergySecondaryPhotons = cut; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedCompton.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedCompton.cc index 47699fe257..cd6ce8177e 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedCompton.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyPolarizedCompton.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LowEnergyPolarizedCompton.cc,v 1.5.2.2 2001/06/28 20:19:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LowEnergyPolarizedCompton.cc,v 1.11 2001/11/07 21:31:16 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -38,6 +38,8 @@ // Temporary protection to avoid crash in the case // of polarisation || incident photon direction // +// 17 October 2001 - F.Longo - Revised according to a design iteration +// // ************************************************************ // // Corrections by Rui Curado da Silva (2000) @@ -49,257 +51,88 @@ // -------------------------------------------------------------- #include "G4LowEnergyPolarizedCompton.hh" -#include "G4Electron.hh" -#include "G4EnergyLossTables.hh" -#include "G4Gamma.hh" -#include "G4SecondLevel.hh" -#include "G4PhysicsTable.hh" -#include "G4DataVector.hh" +#include "Randomize.hh" #include "G4ParticleDefinition.hh" -#include "G4ThreeVector.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4ForceCondition.hh" +#include "G4Gamma.hh" +#include "G4Electron.hh" +#include "G4DynamicParticle.hh" #include "G4VParticleChange.hh" +#include "G4ThreeVector.hh" +#include "G4VCrossSectionHandler.hh" +#include "G4CrossSectionHandler.hh" +#include "G4VEMDataSet.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4LogLogInterpolation.hh" +#include "G4VRangeTest.hh" +#include "G4RangeTest.hh" + +#include "G4CutsPerMaterialWarning.hh" // constructor G4LowEnergyPolarizedCompton::G4LowEnergyPolarizedCompton(const G4String& processName) : G4VDiscreteProcess(processName), - theCrossSectionTable(0), - theScatteringFunctionTable(0), - theMeanFreePathTable(0), - ZNumVec(0), - lowestEnergyLimit (250*eV), // initialization - highestEnergyLimit(100*GeV), - numbBinTable(200), - meanFreePath(0) + lowEnergyLimit (250*eV), // initialization + highEnergyLimit(100*GeV), + intrinsicLowEnergyLimit(10*eV), + intrinsicHighEnergyLimit(100*GeV) { - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< G4endl; - G4cout << "LowestEnergy: " << lowestEnergyLimit/keV << "keV "; - G4cout << "HighestEnergy: " << highestEnergyLimit/TeV << "TeV " << G4endl; - } + if (lowEnergyLimit < intrinsicLowEnergyLimit || + highEnergyLimit > intrinsicHighEnergyLimit) + { + G4Exception("G4LowEnergyPolarizedCompton::G4LowEnergyPolarizedCompton - energy outside intrinsic process validity range"); + } + + crossSectionHandler = new G4CrossSectionHandler; + + + G4VDataSetAlgorithm* scatterInterpolation = new G4LogLogInterpolation; + G4String scatterFile = "comp/ce-sf-"; + scatterFunctionData = new + G4CompositeEMDataSet(scatterFile,scatterInterpolation,1.,1.); + + meanFreePathTable = 0; + + rangeTest = new G4RangeTest; + + if (verboseLevel > 0) + { + G4cout << GetProcessName() << " is created " << G4endl + << "Energy range: " + << lowEnergyLimit / keV << " keV - " + << highEnergyLimit / GeV << " GeV" + << G4endl; + } } // destructor - + G4LowEnergyPolarizedCompton::~G4LowEnergyPolarizedCompton() { - if (theCrossSectionTable) { - delete theCrossSectionTable; - } - - if (theScatteringFunctionTable) { - delete theScatteringFunctionTable; - } - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } + delete meanFreePathTable; + delete crossSectionHandler; + delete scatterFunctionData; + delete rangeTest; } - void G4LowEnergyPolarizedCompton::BuildPhysicsTable(const G4ParticleDefinition& GammaType){ - BuildZVec(); - - // Build microscopic cross section table and mean free path table - BuildCrossSectionTable(); - - // Build mean free path table for the Compton Scattering process - BuildMeanFreePathTable(); - - // build the scattering function table - BuildScatteringFunctionTable(); - -} -void G4LowEnergyPolarizedCompton::BuildCrossSectionTable(){ - - // BUILD THE CS TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC - - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } +void G4LowEnergyPolarizedCompton::BuildPhysicsTable(const G4ParticleDefinition& photon) +{ - theCrossSectionTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t tableInd = 0; tableInd < ZNumVec->size(); tableInd++){ - - G4int atomInd = (G4int) (*ZNumVec)[tableInd]; - - G4FirstLevel* oneAtomCS = util.BuildFirstLevelTables(atomInd, dataNum, "comp/ce-cs-"); - - // theCrossSectionTable->insert(oneAtomCS); - theCrossSectionTable->push_back(oneAtomCS); - - }//end for on atoms + G4CutsPerMaterialWarning warning; + warning.PrintWarning(&photon); + + crossSectionHandler->Clear(); + G4String crossSectionFile = "comp/ce-cs-"; + crossSectionHandler->LoadData(crossSectionFile); + delete meanFreePathTable; + meanFreePathTable = crossSectionHandler->BuildMeanFreePathForMaterials(); } -void G4LowEnergyPolarizedCompton::BuildScatteringFunctionTable(){ - -// BUILD THE SF TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC - - if (theScatteringFunctionTable) { - - delete theScatteringFunctionTable; - } - - theScatteringFunctionTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t tableInd = 0; tableInd < ZNumVec->size(); tableInd++){ - - G4int atomInd = (G4int) (*ZNumVec)[tableInd]; - - G4FirstLevel* oneAtomSF = util.BuildFirstLevelTables(atomInd, dataNum, "comp/ce-sf-"); - - // theScatteringFunctionTable->insert(oneAtomSF); - theScatteringFunctionTable->push_back(oneAtomSF); - - }//end for on atoms -} - - -void G4LowEnergyPolarizedCompton::BuildZVec(){ - -// vector mapping the elements in the material table - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } - - ZNumVec = new G4DataVector(); - for (G4int J=0 ; J < numOfMaterials; J++){ - - const G4Material* material= (*theMaterialTable)[J]; - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4int numberOfElements = material->GetNumberOfElements() ; - - for (G4int iel=0; ielGetZ(); - - if(!(ZNumVec->contains(Zel))){ - ZNumVec->push_back(Zel); - } else{ - continue; - } - } - } -} - - -void G4LowEnergyPolarizedCompton::BuildMeanFreePathTable(){ - -// used log-log interpolation instead of linear interpolation to build the MFP -// as reported in the stepanek paper - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable; } - - // material - G4double NumbOfMaterials = G4Material::GetNumberOfMaterials(); - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4Material* material; - - // MeanFreePath - G4double lowEdgeEnergy, value; - theMeanFreePathTable = new G4PhysicsTable(NumbOfMaterials); - G4PhysicsLogVector* ptrVector; - - for ( G4int J = 0 ; J < NumbOfMaterials; J++ ) { // For each material - - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(lowestEnergyLimit, highestEnergyLimit, numbBinTable); - - material = (*theMaterialTable)(J); - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4double* theAtomNumDensityVector = material->GetAtomicNumDensityVector(); - - for ( G4int i = 0 ; i < numbBinTable ; i++ ){ - //For each energy - - lowEdgeEnergy = ptrVector->GetLowEdgeEnergy(i); - - const G4double bigPath = DBL_MAX; - G4double sigma = 0. ; - for ( size_t k=0 ; k < material->GetNumberOfElements() ; k++ ){ - - G4int atomIndex = (G4int) (*theElementVector)(k)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(atomIndex)]; - - G4double interCrsSec = util.DataLogInterpolation(lowEdgeEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; - sigma += theAtomNumDensityVector[k]*interCrsSec; - } - - value = sigma<=0.0 ? bigPath : 1./sigma ; - ptrVector->PutValue( i , value ) ; - - } - - theMeanFreePathTable->insertAt( J , ptrVector ); - } -} - - -G4Element* G4LowEnergyPolarizedCompton::SelectRandomAtom(const G4DynamicParticle* aDynamicGamma, - G4Material* aMaterial){ - -// METHOD BELOW FROM STANDARD E_M PROCESSES CODE MODIFIED TO USE -// LIVERMORE DATA (using log-log interpolation as reported in stepanek paper) - - - // select randomly 1 element within the material - G4double gammaEnergy = aDynamicGamma->GetKineticEnergy(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - - if (NumberOfElements == 1) return (*theElementVector)(0); - - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - - G4double partialSumSigma = 0.; - - G4double rval = 0; - rval = G4UniformRand()/meanFreePath; - - for ( G4int i=0 ; i < NumberOfElements ; i++ ){ - - G4double crossSection; - if (gammaEnergy < lowestEnergyLimit) - crossSection = 0. ; - else { - if (gammaEnergy > highestEnergyLimit) gammaEnergy = 0.99*highestEnergyLimit ; - - G4int atomIndex = (G4int) (*theElementVector)(i)->GetZ(); - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(atomIndex)]; - - crossSection = util.DataLogInterpolation(gammaEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; - } - - partialSumSigma += theAtomNumDensityVector[i] * crossSection; - if(rval <= partialSumSigma) return ((*theElementVector)(i)); - } - - return (*theElementVector)(0); -} - - G4VParticleChange* G4LowEnergyPolarizedCompton::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) { @@ -312,261 +145,211 @@ G4VParticleChange* G4LowEnergyPolarizedCompton::PostStepDoIt(const G4Track& aTra aParticleChange.Initialize(aTrack); // Dynamic particle quantities - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double gammaEnergy0 = aDynamicGamma->GetKineticEnergy(); - G4ThreeVector gammaPolarization0 = aDynamicGamma->GetPolarization(); - G4double polarisation = gammaPolarization0.mag(); + const G4DynamicParticle* incidentPhoton = aTrack.GetDynamicParticle(); + G4double gammaEnergy0 = incidentPhoton->GetKineticEnergy(); + G4ThreeVector gammaPolarization0 = incidentPhoton->GetPolarization(); - // Check magnitude of polarisation vector - G4bool isPolarised = false; - if (polarisation > 0. && polarisation <= 1.) - { - isPolarised = true; - } + // gammaPolarization0 = gammaPolarization0.unit(); // - // Temporary protection: a polarisation parallel to the - // direction causes problems; in that case apply the regular LowEnergyCompton algorithm - G4ThreeVector gammaDirection = aDynamicGamma->GetMomentumDirection(); + // Protection: a polarisation parallel to the + // direction causes problems; + // in that case find a random polarization + + G4ThreeVector gammaDirection = incidentPhoton->GetMomentumDirection(); + + G4double scalarproduct = gammaPolarization0.dot(gammaDirection); G4double angle = gammaPolarization0.angle(gammaDirection); - if (angle == 0.) + + if (scalarproduct != 0. || angle == 0) { - isPolarised = false; + // isPolarised = false; + gammaPolarization0 = SetRandomPolarization(gammaDirection); } - // End of temporary protection - + + // End of Protection + + // G4double polarisation = gammaPolarization0.mag(); + // Within energy limit? - - if(gammaEnergy0 <= lowestEnergyLimit) -{ - aParticleChange.SetStatusChange(fStopAndKill); - aParticleChange.SetEnergyChange(0.); - aParticleChange.SetLocalEnergyDeposit(gammaEnergy0); - return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); -} + if(gammaEnergy0 <= lowEnergyLimit) + { + aParticleChange.SetStatusChange(fStopAndKill); + aParticleChange.SetEnergyChange(0.); + aParticleChange.SetLocalEnergyDeposit(gammaEnergy0); + return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); + } - // Select randomly one element - G4Material* aMaterial = aTrack.GetMaterial(); - G4Element* theElement = SelectRandomAtom(aDynamicGamma, aMaterial); - G4int elementZ = (G4int) theElement->GetZ(); - G4double E0_m = gammaEnergy0 / electron_mass_c2 ; + G4ThreeVector gammaDirection0 = incidentPhoton->GetMomentumDirection(); - G4ThreeVector gammaDirection0 = aDynamicGamma->GetMomentumDirection(); + // Select randomly one element in the current material + + G4Material* material = aTrack.GetMaterial(); + G4int Z = crossSectionHandler->SelectRandomAtom(material,gammaEnergy0); + // Sample the energy and the polarization of the scattered photon + G4double epsilon, epsilonSq, onecost, sinThetaSqr, greject ; - + G4double epsilon0 = 1./(1. + 2*E0_m); G4double epsilon0Sq = epsilon0*epsilon0; G4double alpha1 = - log(epsilon0); G4double alpha2 = 0.5*(1.- epsilon0Sq); - G4double ScatteringFunction; - G4double x; + G4double wlGamma = h_Planck*c_light/gammaEnergy0; G4double gammaEnergy1; G4ThreeVector gammaDirection1; + + // if (isPolarised) // apply Polarized Condition + // { - if (isPolarised) + do { + if ( alpha1/(alpha1+alpha2) > G4UniformRand() ) + { + epsilon = exp(-alpha1*G4UniformRand()); + epsilonSq = epsilon*epsilon; + } + else + { + epsilonSq = epsilon0Sq + (1.- epsilon0Sq)*G4UniformRand(); + epsilon = sqrt(epsilonSq); + } + + onecost = (1.- epsilon)/(epsilon*E0_m); + sinThetaSqr = onecost*(2.-onecost); + + // Protection + if (sinThetaSqr > 1.) + { + if (verboseLevel>0) G4cout + << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " + << "sin(theta)**2 = " + << sinThetaSqr + << "; set to 1" + << G4endl; + sinThetaSqr = 1.; + } + if (sinThetaSqr < 0.) + { + if (verboseLevel>0) G4cout + << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " + << "sin(theta)**2 = " + << sinThetaSqr + << "; set to 0" + << G4endl; + sinThetaSqr = 0.; + } + // End protection + + G4double x = sqrt(onecost/2.) / (wlGamma/cm);; + G4double scatteringFunction = scatterFunctionData->FindValue(x,Z-1); + greject = (1. - epsilon*sinThetaSqr/(1.+ epsilonSq))*scatteringFunction; + //greject = 1. - epsilon*sinThetaSqr/(1.+ epsilonSq); + + } while(greject < G4UniformRand()*Z); + //(greject < G4UniformRand()); + + + // **************************************************** + // Phi determination + // **************************************************** + + G4double phi = SetPhi(epsilon,sinThetaSqr); + + // + // scattered gamma angles. ( Z - axis along the parent gamma) + // + + G4double cosTheta = 1. - onecost; + + // Protection + + if (cosTheta > 1.) { - do { - if ( alpha1/(alpha1+alpha2) > G4UniformRand() ) - { - epsilon = exp(-alpha1*G4UniformRand()); - epsilonSq = epsilon*epsilon; - } - else - { - epsilonSq = epsilon0Sq + (1.- epsilon0Sq)*G4UniformRand(); - epsilon = sqrt(epsilonSq); - } - - onecost = (1.- epsilon)/(epsilon*E0_m); - sinThetaSqr = onecost*(2.-onecost); - - // Protection - if (sinThetaSqr > 1.) - { - if (verboseLevel>0) G4cout - << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " - << "sin(theta)**2 = " - << sinThetaSqr - << "; set to 1" - << G4endl; - sinThetaSqr = 1.; - } - if (sinThetaSqr < 0.) - { - if (verboseLevel>0) G4cout - << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " - << "sin(theta)**2 = " - << sinThetaSqr - << "; set to 0" - << G4endl; - sinThetaSqr = 0.; - } - // End protection - - greject = 1. - epsilon*sinThetaSqr/(1.+ epsilonSq); - } while (greject < G4UniformRand()); + if (verboseLevel>0) G4cout + << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " + << "cosTheta = " + << cosTheta + << "; set to 1" + << G4endl; + cosTheta = 1.; + } + if (cosTheta < -1.) + { + if (verboseLevel>0) G4cout + << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " + << "cosTheta = " + << cosTheta + << "; set to -1" + << G4endl; + cosTheta = -1.; + } + // End protection + + + G4double sinTheta = sqrt (sinThetaSqr); + + // Protection + if (sinTheta > 1.) + { + if (verboseLevel>0) G4cout + << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " + << "sinTheta = " + << sinTheta + << "; set to 1" + << G4endl; + sinTheta = 1.; + } + if (sinTheta < -1.) + { + if (verboseLevel>0) G4cout + << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " + << "sinTheta = " + << sinTheta + << "; set to -1" + << G4endl; + sinTheta = -1.; + } + // End protection + - // **************************************************** - // Phi determination - // **************************************************** + G4double dirx = sinTheta*cos(phi); + G4double diry = sinTheta*sin(phi); + G4double dirz = cosTheta ; + + // + // update G4VParticleChange for the scattered photon + // + + gammaEnergy1 = epsilon*gammaEnergy0; - G4double phi = SetPhi(epsilon,sinThetaSqr); - - // - // scattered gamma angles. ( Z - axis along the parent gamma) - // - - G4double cosTheta = 1. - onecost; - - // Protection - - if (cosTheta > 1.) - { - if (verboseLevel>0) G4cout - << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " - << "cosTheta = " - << cosTheta - << "; set to 1" - << G4endl; - cosTheta = 1.; - } - if (cosTheta < -1.) - { - if (verboseLevel>0) G4cout - << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " - << "cosTheta = " - << cosTheta - << "; set to -1" - << G4endl; - cosTheta = -1.; - } - // End protection - - - G4double sinTheta = sqrt (sinThetaSqr); - - // Protection - if (sinTheta > 1.) - { - if (verboseLevel>0) G4cout - << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " - << "sinTheta = " - << sinTheta - << "; set to 1" - << G4endl; - sinTheta = 1.; - } - if (sinTheta < -1.) - { - if (verboseLevel>0) G4cout - << " -- Warning -- G4LowEnergyPolarizedCompton::PostStepDoIt " - << "sinTheta = " - << sinTheta - << "; set to -1" - << G4endl; - sinTheta = -1.; - } - // End protection - - - G4double dirx = sinTheta*cos(phi); - G4double diry = sinTheta*sin(phi); - G4double dirz = cosTheta ; - - // - // update G4VParticleChange for the scattered gamma - // - - gammaEnergy1 = epsilon*gammaEnergy0; - - // New polarization - - - G4ThreeVector gammaPolarization1 = SetNewPolarization(epsilon, - sinThetaSqr, - phi, - cosTheta); - - // Set new direction - //G4ThreeVector tmpDirection1( dirx,diry,dirz ); - G4ParticleMomentum tmpDirection1( dirx,diry,dirz ); - - gammaDirection1 = tmpDirection1; - - // Change reference frame. - - SystemOfRefChange(gammaDirection0,gammaDirection1, - gammaPolarization0,gammaPolarization1); - - if (gammaEnergy1 > 0.) - { - aParticleChange.SetEnergyChange( gammaEnergy1 ) ; - } - else - { - aParticleChange.SetEnergyChange(0.) ; - aParticleChange.SetStatusChange(fStopAndKill); - } + // New polarization + + G4ThreeVector gammaPolarization1 = SetNewPolarization(epsilon, + sinThetaSqr, + phi, + cosTheta); + + // Set new direction + //G4ThreeVector tmpDirection1( dirx,diry,dirz ); + + G4ParticleMomentum tmpDirection1( dirx,diry,dirz ); + gammaDirection1 = tmpDirection1; + // Change reference frame. + + SystemOfRefChange(gammaDirection0,gammaDirection1, + gammaPolarization0,gammaPolarization1); + + if (gammaEnergy1 > 0.) + { + aParticleChange.SetEnergyChange( gammaEnergy1 ) ; } else - { - // Temporary, same algorithm as G4LowEnergyCompton - - do{ - - if ( alpha1/(alpha1+alpha2) > G4UniformRand()){ - - epsilon = exp(-alpha1*G4UniformRand()); // pow(epsilon0,G4UniformRand()) - epsilonSq = epsilon*epsilon; - } - else{ - - epsilonSq = epsilon0Sq + (1.- epsilon0Sq)*G4UniformRand(); - epsilon = sqrt(epsilonSq); - } - - onecost = (1.- epsilon)/(epsilon*E0_m); - sinThetaSqr = onecost*(2.-onecost); - - x = sqrt(onecost/2)/(wlGamma/cm); - - const G4FirstLevel* oneAtomSF - = (*theScatteringFunctionTable)[ZNumVec->index(elementZ)]; - - ScatteringFunction = util.DataLogInterpolation(x, (*(*oneAtomSF)[0]), - (*(*oneAtomSF)[1])); - greject = (1. - epsilon*sinThetaSqr/(1.+ epsilonSq))*ScatteringFunction; - - } while(greject < G4UniformRand()*elementZ); - - G4double cosTheta = 1. - onecost ; - G4double sinTheta = sqrt (sinThetaSqr); - G4double phi = twopi * G4UniformRand() ; - G4double dirx = sinTheta*cos(phi) , diry = sinTheta*sin(phi) , dirz = cosTheta ; - - // - // update G4VParticleChange for the scattered gamma - // - - G4ThreeVector tmpGammaDirection( dirx,diry,dirz ); - gammaDirection1 = tmpGammaDirection; - gammaDirection1.rotateUz(gammaDirection0); - aParticleChange.SetMomentumChange( gammaDirection1 ) ; - gammaEnergy1 = epsilon*gammaEnergy0; - if (gammaEnergy1 > 0.) - { - aParticleChange.SetEnergyChange( gammaEnergy1 ) ; - } - else - { - aParticleChange.SetEnergyChange(0.) ; - aParticleChange.SetStatusChange(fStopAndKill); - } - + { + aParticleChange.SetEnergyChange(0.) ; + aParticleChange.SetStatusChange(fStopAndKill); } // @@ -575,37 +358,27 @@ G4VParticleChange* G4LowEnergyPolarizedCompton::PostStepDoIt(const G4Track& aTra G4double ElecKineEnergy = gammaEnergy0 - gammaEnergy1 ; - if((G4EnergyLossTables::GetRange(G4Electron::Electron(), - ElecKineEnergy,aMaterial)>aStep.GetPostStepPoint()->GetSafety()) - || - (ElecKineEnergy > - (G4Electron::Electron()->GetCutsInEnergy())[aMaterial->GetIndex()])) + + // Generate the electron only if with large enough range w.r.t. cuts and safety + + G4double safety = aStep.GetPostStepPoint()->GetSafety(); + + if (rangeTest->Escape(G4Electron::Electron(),material,ElecKineEnergy,safety)) { G4double ElecMomentum = sqrt(ElecKineEnergy*(ElecKineEnergy+2.*electron_mass_c2)); - G4ThreeVector ElecDirection ( - (gammaEnergy0*gammaDirection0 - gammaEnergy1*gammaDirection1)*(1./ElecMomentum) ); - - // create G4DynamicParticle object for the electron. - G4DynamicParticle* aElectron= new G4DynamicParticle (G4Electron::Electron(), - ElecDirection, - ElecKineEnergy) ; - - aParticleChange.SetNumberOfSecondaries(1) ; - aParticleChange.AddSecondary( aElectron ) ; - aParticleChange.SetLocalEnergyDeposit (0.) ; + G4ThreeVector ElecDirection((gammaEnergy0 * gammaDirection0 - + gammaEnergy1 * gammaDirection1) * (1./ElecMomentum)); + G4DynamicParticle* electron = new G4DynamicParticle (G4Electron::Electron(),ElecDirection,ElecKineEnergy) ; + aParticleChange.SetNumberOfSecondaries(1); + aParticleChange.AddSecondary(electron); + aParticleChange.SetLocalEnergyDeposit(0.); } else { - aParticleChange.SetNumberOfSecondaries(0) ; - aParticleChange.SetLocalEnergyDeposit (ElecKineEnergy) ; + aParticleChange.SetNumberOfSecondaries(0); + aParticleChange.SetLocalEnergyDeposit(ElecKineEnergy); } - - - // --- The end --- - - // Reset NbOfInteractionLengthLeft and return aParticleChange - return G4VDiscreteProcess::PostStepDoIt( aTrack, aStep); } @@ -640,6 +413,44 @@ G4double G4LowEnergyPolarizedCompton::SetPhi(G4double energyRate, } +G4ThreeVector G4LowEnergyPolarizedCompton::SetPerpendicularVector(G4ThreeVector& a) +{ + G4double dx = a.x(); + G4double dy = a.y(); + G4double dz = a.z(); + G4double x = dx < 0.0 ? -dx : dx; + G4double y = dy < 0.0 ? -dy : dy; + G4double z = dz < 0.0 ? -dz : dz; + if (x < y) { + return x < z ? G4ThreeVector(-dy,dx,0) : G4ThreeVector(0,-dz,dy); + }else{ + return y < z ? G4ThreeVector(dz,0,-dx) : G4ThreeVector(-dy,dx,0); + } +} + +G4ThreeVector G4LowEnergyPolarizedCompton::SetRandomPolarization(G4ThreeVector& direction0) +{ + G4ThreeVector d0 = direction0.unit(); + G4ThreeVector a1 = SetPerpendicularVector(d0); //different orthogonal + G4ThreeVector a0 = a1.unit(); // unit vector + + G4double rand1 = G4UniformRand(); + + G4double angle = twopi*rand1; // random polar angle + G4ThreeVector b0 = d0.cross(a0); // cross product + + G4ThreeVector c; + + c.setX(cos(angle)*(a0.x())+sin(angle)*b0.x()); + c.setY(cos(angle)*(a0.y())+sin(angle)*b0.y()); + c.setZ(cos(angle)*(a0.z())+sin(angle)*b0.z()); + + G4ThreeVector c0 = c.unit(); + + return c0; + +} + G4ThreeVector G4LowEnergyPolarizedCompton::SetNewPolarization(G4double epsilon, G4double sinSqrTh, G4double phi, @@ -683,9 +494,9 @@ G4ThreeVector G4LowEnergyPolarizedCompton::SetNewPolarization(G4double epsilon, G4double xParallel = normalisation*cosBeta; G4double yParallel = -(sinSqrTh*cosPhi*sinPhi)*cosBeta/normalisation; - G4double zParallel = -(cosTheta*sinTheta*cosPhi)*cosBeta/normalisation; + G4double zParallel = -(costheta*sinTheta*cosPhi)*cosBeta/normalisation; G4double xPerpendicular = 0.; - G4double yPerpendicular = (cosTheta)*sinBeta/normalisation; + G4double yPerpendicular = (costheta)*sinBeta/normalisation; G4double zPerpendicular = -(sinTheta*sinPhi)*sinBeta/normalisation; G4double xTotal = (xParallel + xPerpendicular); @@ -737,7 +548,9 @@ void G4LowEnergyPolarizedCompton::SystemOfRefChange } // Added protection + G4double psi = 0; + if (sinPsi < 0.) psi = -pi/2.; if (sinPsi > 0.) psi = pi/2.; @@ -768,32 +581,19 @@ G4bool G4LowEnergyPolarizedCompton::IsApplicable(const G4ParticleDefinition& par } -G4double G4LowEnergyPolarizedCompton::GetMeanFreePath(const G4Track& aTrack, G4double, G4ForceCondition*) +G4double G4LowEnergyPolarizedCompton::GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition*) { - - // returns the gamma mean free path in GEANT4 internal units - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double gammaEnergy = aDynamicGamma->GetKineticEnergy(); - G4Material* aMaterial = aTrack.GetMaterial(); - - // G4bool isOutRange ; - - - if (gammaEnergy > highestEnergyLimit) - { - meanFreePath = DBL_MAX; - } - else if(gammaEnergy < lowestEnergyLimit) - { - meanFreePath = DBL_MIN; - } - else - { - meanFreePath = util.DataLogInterpolation(gammaEnergy, - aMaterial->GetIndex(), - theMeanFreePathTable); - } + const G4DynamicParticle* photon = track.GetDynamicParticle(); + G4double energy = photon->GetKineticEnergy(); + G4Material* material = track.GetMaterial(); + size_t materialIndex = material->GetIndex(); + G4double meanFreePath; + if (energy > highEnergyLimit) meanFreePath = meanFreePathTable->FindValue(highEnergyLimit,materialIndex); + else if (energy < lowEnergyLimit) meanFreePath = DBL_MAX; + else meanFreePath = meanFreePathTable->FindValue(energy,materialIndex); return meanFreePath; } @@ -810,4 +610,3 @@ G4double G4LowEnergyPolarizedCompton::GetMeanFreePath(const G4Track& aTrack, G4d - diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc index cb90c36a20..a9628e3c4e 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyRayleigh.cc @@ -20,363 +20,191 @@ // * statement, and all its terms. * // ******************************************************************** // +// -------------------------------------------------------------------- // -// $Id: G4LowEnergyRayleigh.cc,v 1.22.2.2 2001/06/28 20:19:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LowEnergyRayleigh.cc,v 1.28 2001/11/07 21:31:16 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland +// Author: A. Forti +// Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // -// ------------ G4LowEnergyRayleigh physics process -------- -// by Alessandra Forti, November 1998 -// ************************************************************** +// History: +// -------- // Added Livermore data table construction methods A. Forti // Added BuildMeanFreePath A. Forti // Added PostStepDoIt A. Forti // Added SelectRandomAtom A. Forti // Added map of the elements A.Forti // 24.04.01 V.Ivanchenko remove RogueWave -// -------------------------------------------------------------- +// 11.08.2001 MGP - Major revision according to a design iteration +// 06.10.2001 MGP - Added strategy to test range for secondary generation +// +// -------------------------------------------------------------------- -// This Class Header #include "G4LowEnergyRayleigh.hh" - -// Collaborating Class Headers -#include "G4EnergyLossTables.hh" +#include "Randomize.hh" +#include "G4ParticleDefinition.hh" +#include "G4Track.hh" +#include "G4Step.hh" +#include "G4ForceCondition.hh" +#include "G4Gamma.hh" #include "G4Electron.hh" +#include "G4DynamicParticle.hh" +#include "G4VParticleChange.hh" +#include "G4ThreeVector.hh" +#include "G4VCrossSectionHandler.hh" +#include "G4CrossSectionHandler.hh" +#include "G4VEMDataSet.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4LogLogInterpolation.hh" + +#include "G4CutsPerMaterialWarning.hh" -// constructor - G4LowEnergyRayleigh::G4LowEnergyRayleigh(const G4String& processName) : G4VDiscreteProcess(processName), - theCrossSectionTable(0), - theFormFactorTable(0), - theMeanFreePathTable(0), - ZNumVec(0), - lowestEnergyLimit (250*eV), // initialization - highestEnergyLimit(100*GeV), - NumbBinTable(200), - MeanFreePath(0) + lowEnergyLimit(250*eV), + highEnergyLimit(100*GeV), + intrinsicLowEnergyLimit(10*eV), + intrinsicHighEnergyLimit(100*GeV) { - if (verboseLevel>0) { - G4cout << GetProcessName() << " is created "<< G4endl; - G4cout << "lowestEnergy: " << lowestEnergyLimit/keV << "keV "; - G4cout << "highestEnergy: " << highestEnergyLimit/TeV << "TeV " << G4endl; - } + if (lowEnergyLimit < intrinsicLowEnergyLimit || + highEnergyLimit > intrinsicHighEnergyLimit) + { + G4Exception("G4LowEnergyRayleigh::G4LowEnergyRayleigh - energy limit outside intrinsic process validity range"); + } + + crossSectionHandler = new G4CrossSectionHandler(); + + G4VDataSetAlgorithm* ffInterpolation = new G4LogLogInterpolation; + G4String formFactorFile = "rayl/re-ff-"; + formFactorData = new G4CompositeEMDataSet(formFactorFile,ffInterpolation,1.,1.); + + meanFreePathTable = 0; + + if (verboseLevel > 0) + { + G4cout << GetProcessName() << " is created " << G4endl + << "Energy range: " + << lowEnergyLimit / keV << " keV - " + << highEnergyLimit / GeV << " GeV" + << G4endl; + } } -// destructor - G4LowEnergyRayleigh::~G4LowEnergyRayleigh() { - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } - - if(theFormFactorTable){ - - delete theFormFactorTable; - } - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } + delete meanFreePathTable; + delete crossSectionHandler; + delete formFactorData; } - - -// methods............................................................................. - -void G4LowEnergyRayleigh::BuildPhysicsTable(const G4ParticleDefinition& GammaType){ - BuildZVec(); - - // Build microscopic cross section tables for the Rayleigh process - BuildCrossSectionTable(); +void G4LowEnergyRayleigh::BuildPhysicsTable(const G4ParticleDefinition& photon) +{ - // Build mean free path table for the Rayleigh Scattering process - BuildMeanFreePathTable(); - - // build the scattering function table - BuildFormFactorTable(); -} -// CONSTRUCT THE CS TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC USING EPDL97 DATA -void G4LowEnergyRayleigh::BuildCrossSectionTable(){ - - if (theCrossSectionTable) { - - delete theCrossSectionTable; - } + G4CutsPerMaterialWarning warning; + warning.PrintWarning(&photon); - theCrossSectionTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - G4FirstLevel* oneAtomCS = util.BuildFirstLevelTables(AtomInd, dataNum, "rayl/re-cs-"); - - // theCrossSectionTable->insert(oneAtomCS); - theCrossSectionTable->push_back(oneAtomCS); - - }//end for on atoms -} -// BUILD THE FF TABLE FOR THE ELEMENTS MAPPED IN ZNUMVEC USING EPDL97 DATA -void G4LowEnergyRayleigh::BuildFormFactorTable(){ - - if (theFormFactorTable) { - - delete theFormFactorTable; - } + crossSectionHandler->Clear(); + G4String crossSectionFile = "rayl/re-cs-"; + crossSectionHandler->LoadData(crossSectionFile); - theFormFactorTable = new G4SecondLevel(); - G4int dataNum = 2; - - for(size_t TableInd = 0; TableInd < ZNumVec->size(); TableInd++){ - - G4int AtomInd = (G4int) (*ZNumVec)[TableInd]; - - G4FirstLevel* oneAtomFF = util.BuildFirstLevelTables(AtomInd, dataNum, "rayl/re-ff-"); - - // theFormFactorTable->insert(oneAtomFF); - theFormFactorTable->push_back(oneAtomFF); - - }//end for on atoms -} -// vector mapping the elements in the material table -void G4LowEnergyRayleigh::BuildZVec(){ - - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if(ZNumVec){ - ZNumVec->clear(); - delete ZNumVec; - } - - ZNumVec = new G4DataVector(); - for (G4int J=0 ; J < numOfMaterials; J++){ - - const G4Material* material= (*theMaterialTable)[J]; - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4int NumberOfElements = material->GetNumberOfElements() ; - - for (G4int iel=0; ielGetZ(); - - if(ZNumVec->contains(Zel) == FALSE){ - ZNumVec->push_back(Zel); - } else{ - continue; - } - } - } + delete meanFreePathTable; + meanFreePathTable = crossSectionHandler->BuildMeanFreePathForMaterials(); } -G4VParticleChange* G4LowEnergyRayleigh::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep){ - -// -// The scattered gamma energy is sampled according to Form Factors -// multiplied by the Rayleigh distribution with a pure rejection technique. -// EGS4 W.R. Nelson et al. The EGS4 Code System. SLAC-Report-265 , December 1985 -// Expression of the angular distribution as Rayleigh distribution and Form factors -// is taken from D. E. Cullen "A simple model of photon transport" Nucl. Instr. Meth. -// Phys. Res. B 101 (1995). Method of sampling with form factors is different. -// Reference to the article is from J. Stepanek New Photon, Positron -// and Electron Interaction Data for GEANT in Energy Range from 1 eV to 10 -// TeV (draft). - +G4VParticleChange* G4LowEnergyRayleigh::PostStepDoIt(const G4Track& aTrack, + const G4Step& aStep) +{ + // The scattered gamma energy is sampled according to Form Factors + // multiplied by the Rayleigh distribution with a pure rejection technique. + // EGS4 W.R. Nelson et al. The EGS4 Code System. SLAC-Report-265 , December 1985 + // Expression of the angular distribution as Rayleigh distribution and + // Form factors is taken from D. E. Cullen "A simple model of photon transport" + // NIM B Phys. 101 (1995). Method of sampling with form factors is different. + // Reference to the article is from J. Stepanek New Photon, Positron + // and Electron Interaction Data for GEANT in Energy Range from 1 eV to 10 TeV + // (draft). aParticleChange.Initialize(aTrack); - // Dynamic particle quantities - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double GammaEnergy0 = aDynamicGamma->GetKineticEnergy(); - - if(GammaEnergy0 <= lowestEnergyLimit){ - - aParticleChange.SetStatusChange(fStopAndKill); - aParticleChange.SetEnergyChange(0.); - aParticleChange.SetLocalEnergyDeposit(GammaEnergy0); - - return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); - } - // G4double E0_m = GammaEnergy0 / electron_mass_c2 ; - G4ParticleMomentum GammaDirection0 = aDynamicGamma->GetMomentumDirection(); + const G4DynamicParticle* incidentPhoton = aTrack.GetDynamicParticle(); + G4double photonEnergy0 = incidentPhoton->GetKineticEnergy(); - // Select randomly one element - G4Material* aMaterial = aTrack.GetMaterial(); - // const G4int numOfElem = aMaterial->GetNumberOfElements(); - G4Element* theElement = SelectRandomAtom(aDynamicGamma, aMaterial); + if (photonEnergy0 <= lowEnergyLimit) + { + aParticleChange.SetStatusChange(fStopAndKill); + aParticleChange.SetEnergyChange(0.); + aParticleChange.SetLocalEnergyDeposit(photonEnergy0); + return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); + } + + // G4double e0m = photonEnergy0 / electron_mass_c2 ; + G4ParticleMomentum photonDirection0 = incidentPhoton->GetMomentumDirection(); + + // Select randomly one element in the current material + G4Material* material = aTrack.GetMaterial(); + G4int Z = crossSectionHandler->SelectRandomAtom(material,photonEnergy0); - // sample the energy of the scattered gamma + // Sample the energy of the scattered photon - G4double wlGamma = h_Planck*c_light/GammaEnergy0; - G4int elementZ = (G4int) theElement->GetZ(); - // G4double tableIndex = elementZ - 1; + G4double wlPhoton = h_Planck*c_light/photonEnergy0; - G4double Theta, DataFormFactor; - G4double cosTheta, greject; - G4double Theta_Half, x, SinThHalf, RandomFormFactor; + G4double gReject; + G4double randomFormFactor; + G4double cosTheta; G4double sinTheta; - do{ - - Theta_Half = G4UniformRand()*pi/2; - SinThHalf = sin(Theta_Half); - x = SinThHalf/(wlGamma/cm); - - const G4FirstLevel* oneAtomFF - = (*theFormFactorTable)[ZNumVec->index(elementZ)]; - DataFormFactor = util.DataLogInterpolation(x, (*(*oneAtomFF)[0]), - (*(*oneAtomFF)[1])); - RandomFormFactor = G4UniformRand()*elementZ*elementZ; - - Theta = Theta_Half*2; - cosTheta = cos(Theta); - sinTheta = sin(Theta); - G4double sqr_rayl = 1+cosTheta*cosTheta; - greject = sqr_rayl*DataFormFactor*DataFormFactor; - - }while( greject < RandomFormFactor); + do + { + G4double thetaHalf = G4UniformRand() * pi / 2.; + G4double sinThetaHalf = sin(thetaHalf); + G4double x = sinThetaHalf / (wlPhoton/cm); + G4double dataFormFactor = formFactorData->FindValue(x,Z-1); + randomFormFactor = G4UniformRand() * Z * Z; + G4double theta = thetaHalf*2; + cosTheta = cos(theta); + sinTheta = sin(theta); + G4double sqrRayl = 1 + cosTheta * cosTheta; + gReject = sqrRayl * dataFormFactor * dataFormFactor; + } while( gReject < randomFormFactor); - // scattered gamma angles. ( Z - axis along the parent gamma) - G4double Phi = twopi * G4UniformRand() ; - G4double dirx = sinTheta*cos(Phi) , diry = sinTheta*sin(Phi) , dirz = cosTheta ; + // Scattered photon angles. ( Z - axis along the parent photon) + G4double phi = twopi * G4UniformRand() ; + G4double dirX = sinTheta*cos(phi); + G4double dirY = sinTheta*sin(phi); + G4double dirZ = cosTheta; - // update G4VParticleChange for the scattered gamma - G4ThreeVector GammaDirection1(dirx, diry, dirz); + // Update G4VParticleChange for the scattered photon + G4ThreeVector photonDirection1(dirX, dirY, dirZ); - GammaDirection1.rotateUz(GammaDirection0); - aParticleChange.SetEnergyChange(GammaEnergy0); - aParticleChange.SetMomentumChange(GammaDirection1); + photonDirection1.rotateUz(photonDirection0); + aParticleChange.SetEnergyChange(photonEnergy0); + aParticleChange.SetMomentumChange(photonDirection1); aParticleChange.SetNumberOfSecondaries(0); -#ifdef G4VERBOSE - - if(verboseLevel > 15){ - - G4cout<<"LE Rayleigh PostStepDoIt"<clearAndDestroy(); delete theMeanFreePathTable; } - - // material - G4double NumbOfMaterials = G4Material::GetNumberOfMaterials(); - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4Material* material; - - // MeanFreePath - G4double LowEdgeEnergy, Value; - theMeanFreePathTable = new G4PhysicsTable(NumbOfMaterials); - G4PhysicsLogVector* ptrVector; - - for ( G4int J = 0 ; J < NumbOfMaterials; J++ ) { // For each material - - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(lowestEnergyLimit, highestEnergyLimit, NumbBinTable); - - material = (*theMaterialTable)(J); - const G4ElementVector* theElementVector = material->GetElementVector(); - const G4double* theAtomNumDensityVector = material->GetAtomicNumDensityVector(); - - for ( G4int i = 0 ; i < NumbBinTable ; i++ ){ - //For each energy - - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy(i); - - const G4double BigPath= DBL_MAX; - G4double SIGMA = 0 ; - - for ( size_t k=0 ; k < material->GetNumberOfElements() ; k++ ){ - // For each element - - G4double AtomIndex = (*theElementVector)(k)->GetZ(); - - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - - G4double interCrsSec = util.DataLogInterpolation(LowEdgeEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; - - SIGMA += theAtomNumDensityVector[k]*interCrsSec; - - } - - Value = SIGMA<=0.0 ? BigPath : 1./SIGMA ; - ptrVector->PutValue( i , Value ) ; - } - - theMeanFreePathTable->insertAt( J , ptrVector ) ; - } + return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); } -// METHOD BELOW FROM STANDARD E_M PROCESSES CODE MODIFIED TO USE -// LIVERMORE DATA (using log-log interpolation as reported in stepanek paper) -G4Element* G4LowEnergyRayleigh::SelectRandomAtom(const G4DynamicParticle* aDynamicGamma, - G4Material* aMaterial) { - - // select randomly 1 element within the material - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - const G4int NumberOfElements = aMaterial->GetNumberOfElements(); - const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - if (NumberOfElements == 1) return (*theElementVector)(0); - - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - - G4double PartialSumSigma = 0.; - G4double rval = G4UniformRand()/MeanFreePath; - - for ( G4int i=0 ; i < NumberOfElements ; i++ ){ - - G4double crossSection; - if (GammaEnergy < lowestEnergyLimit) - crossSection = 0. ; - else { - if (GammaEnergy > highestEnergyLimit) GammaEnergy = 0.99*highestEnergyLimit ; - - G4double AtomIndex = (*theElementVector)(i)->GetZ(); - - const G4FirstLevel* oneAtomCS - = (*theCrossSectionTable)[ZNumVec->index(AtomIndex)]; - - crossSection = util.DataLogInterpolation(GammaEnergy, - (*(*oneAtomCS)[0]), - (*(*oneAtomCS)[1]))*barn; - } - - PartialSumSigma += theAtomNumDensityVector[i] * crossSection; - if(rval <= PartialSumSigma) return ((*theElementVector)(i)); - } - - return (*theElementVector)(0); +G4bool G4LowEnergyRayleigh::IsApplicable(const G4ParticleDefinition& particle) +{ + return ( &particle == G4Gamma::Gamma() ); } +G4double G4LowEnergyRayleigh::GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition*) +{ + const G4DynamicParticle* photon = track.GetDynamicParticle(); + G4double energy = photon->GetKineticEnergy(); + G4Material* material = track.GetMaterial(); + size_t materialIndex = material->GetIndex(); - - - - - - - + G4double meanFreePath; + if (energy > highEnergyLimit) meanFreePath = meanFreePathTable->FindValue(highEnergyLimit,materialIndex); + else if (energy < lowEnergyLimit) meanFreePath = DBL_MAX; + else meanFreePath = meanFreePathTable->FindValue(energy,materialIndex); + return meanFreePath; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyUtilities.cc b/source/processes/electromagnetic/lowenergy/src/G4LowEnergyUtilities.cc deleted file mode 100644 index 3c8511f5e2..0000000000 --- a/source/processes/electromagnetic/lowenergy/src/G4LowEnergyUtilities.cc +++ /dev/null @@ -1,244 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4LowEnergyUtilities.cc,v 1.9.2.1 2001/06/28 19:11:51 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// File name: G4LowEnergyUtilitie -// -// Author: A.Forti -// -// Creation date: 2 March 1999 -// -// Modifications: 16.11.00 MG Pia Replaced HepString with G4String -// 24.04.01 V.Ivanchenko remove RogueWave -// -// -------------------------------------------------------------- - -// This Class Header -#include "G4LowEnergyUtilities.hh" - -// Collaborating Class Headers -#include "G4Element.hh" -#include "G4DynamicParticle.hh" -#include "G4Material.hh" -#include "g4std/fstream" -#include "g4std/fstream" -#include "g4std/strstream" - -G4LowEnergyUtilities::G4LowEnergyUtilities() -{} - -G4LowEnergyUtilities::~G4LowEnergyUtilities() -{} - -G4SecondLevel* G4LowEnergyUtilities::BuildSecondLevelTables(const G4int TableInd, - const G4int ParNum, - const char* prename){ - - G4String prenameStr(prename); - // HepString name, prenameStr(prename); - - char nameChar[100] = {""}; - G4std::ostrstream ost(nameChar, 100, G4std::ios::out); - - if(TableInd != 0){ - ost << prenameStr << TableInd << ".dat"; - // HepString Znum(TableInd); - // name = prenameStr + Znum + ".dat"; - } - else{ - ost << prenameStr << ".dat"; - // name = prenameStr+ ".dat"; - } - G4String name(nameChar); - - char* path = getenv("G4LEDATA"); - if(!path){ - G4String excep = "Error!!! G4LEDATA (Low Energy Electromagnetic processes data directory) environment variable not set"; - G4Exception(excep); - } - - G4String path_string(path); - G4String dir_file = path_string + "/" + name; - G4std::ifstream file(dir_file); - G4std::filebuf* lsdp = file.rdbuf(); - - if(!lsdp->is_open()){ - - G4String excep = "Error!!!! data file: " + dir_file + " NOT found"; - G4Exception(excep); - } - - oneAtomTable* oneAtomPar = new oneAtomTable(); - oneShellTable* oneShellPar = new oneShellTable(); - - for(G4int j = 0; j < ParNum; j++){ - - // oneShellPar->insertAt(j,new G4DataVector()); - oneShellPar->push_back(new G4DataVector()); - } - - G4double a = 0; - G4int k = 1, s = 0; - - do{ - - file>>a; - - if(a == -1){ - - if(s == 0){ - - // oneAtomPar->insert(oneShellPar); - oneAtomPar->push_back(oneShellPar); - oneShellPar = new oneShellTable(); - - for(G4int j = 0; j < ParNum; j++){ - - // oneShellPar->insertAt(j,new G4DataVector()); - oneShellPar->push_back(new G4DataVector()); - } - } - - s++; - - if(s == ParNum){ - - s = 0; - } - } - - else if(a == -2){ - - delete oneShellPar; - } - - else{ - - if(k%ParNum != 0){ - - (*oneShellPar)[k-1]->push_back(a); - k++; - } - else if(k%ParNum == 0){ - - (*oneShellPar)[k-1]->push_back(a); - k = 1; - } - } - - }while(a != -2); //end for on file - - file.close(); - return oneAtomPar; -} - - -G4FirstLevel* G4LowEnergyUtilities::BuildFirstLevelTables(const G4int TableInd, - const G4int ParNum, - const char* prename){ - - G4String prenameStr(prename); - // HepString name, prenameStr(prename); - - char nameChar[100] = {""}; - G4std::ostrstream ost(nameChar, 100, G4std::ios::out); - - if(TableInd != 0){ - ost << prenameStr << TableInd << ".dat"; - // HepString Znum(TableInd); - // name = prenameStr + Znum + ".dat"; - } - else{ - ost << prenameStr << ".dat"; - // name = prenameStr+ ".dat"; - } - G4String name(nameChar); - - char* path = getenv("G4LEDATA"); - if(!path){ - G4String excep = "Error!!! G4LEDATA (Low Energy Electromagnetic processes data directory) environment variable not set"; - G4Exception(excep); - } - - G4String path_string(path); - G4String dir_file = path_string + "/" + name; - G4std::ifstream file(dir_file); - G4std::filebuf* lsdp = file.rdbuf(); - - if(!lsdp->is_open()){ - - G4String excep = "Error!!!! data file: " + dir_file + " NOT found"; - G4Exception(excep); - } - - G4FirstLevel* oneAtomPar = new G4FirstLevel(); - - for(G4int j = 0; j < ParNum; j++){ - - // oneAtomPar->insertAt(j,new G4DataVector()); - oneAtomPar->push_back(new G4DataVector()); - } - - G4double a = 0; - G4int k = 1; - - do{ - - file>>a; - - if(a == -1 || a == -2){ - - } - else{ - - if(k%ParNum != 0){ - - (*oneAtomPar)[k-1]->push_back(a); - k++; - } - else if(k%ParNum == 0){ - - (*oneAtomPar)[k-1]->push_back(a); - k = 1; - } - } - - }while(a != -2); //end for on file - - file.close(); - return oneAtomPar; -} - - - - - - - - diff --git a/source/processes/electromagnetic/lowenergy/src/G4FirstLevel.cc b/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc similarity index 66% rename from source/processes/electromagnetic/lowenergy/src/G4FirstLevel.cc rename to source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc index 9463199454..75b082da88 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4FirstLevel.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4RangeTest.cc @@ -21,42 +21,31 @@ // ******************************************************************** // // -// ------------------------------------------------------------------- -// GEANT 4 class file +// $Id: G4RangeTest.cc,v 1.4 2001/11/07 20:47:30 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// CERN, Geneva, Switzerland +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // -// File name: G4FirstLevel.hh +// History: +// ----------- +// 05 Oct 2001 MGP Created // -// Author: Alessandra Forti (Alessandra.Forti@cern.ch) -// -// Creation date: 1 Giugno 1999 -// -// Modifications: 24.04.01 V.Ivanchenko remove RogueWave -// // ------------------------------------------------------------------- -#include "G4FirstLevel.hh" +#include "G4RangeTest.hh" +#include "G4ParticleDefinition.hh" +#include "G4Material.hh" +#include "G4EnergyLossTables.hh" +G4bool G4RangeTest::Escape(const G4ParticleDefinition* particle, + const G4Material* material, + G4double energy, + G4double safety) const +{ + G4double range = G4EnergyLossTables::GetRange(particle,energy,material); + G4double cut = particle->GetRangeThreshold(material); + G4double rMin = G4std::min(cut,safety); + G4bool value = (range > rMin); -G4FirstLevel::~G4FirstLevel(){ - - //this->clearAndDestroy(); - this->clear(); + return value; } - -G4bool G4FirstLevel::operator == (const G4FirstLevel& input) const{ - - // return( this->entries() == input.entries()); - return( this->size() == input.size()); - -} - -G4bool G4FirstLevel::operator < (const G4FirstLevel& input) const{ - - // return(this->entries() < input.entries()); - return(this->size() < input.size()); - -} - - diff --git a/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc b/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc new file mode 100644 index 0000000000..1e67ebee7d --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4SemiLogInterpolation.cc @@ -0,0 +1,72 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4SemiLogInterpolation.cc,v 1.3 2001/09/10 18:07:35 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- + +#include "G4SemiLogInterpolation.hh" + +// Constructor + +G4SemiLogInterpolation::G4SemiLogInterpolation() +{ } + + +// Destructor + +G4SemiLogInterpolation::~G4SemiLogInterpolation() +{ } + + +G4double G4SemiLogInterpolation::Calculate(G4double x, G4int bin, + const G4DataVector& points, + const G4DataVector& data) const +{ + G4int nBins = data.size() - 1; + G4double value = 0.; + if (x < points[0]) + { + value = 0.; + } + else if (bin < nBins) + { + G4double e1 = points[bin]; + G4double e2 = points[bin+1]; + G4double d1 = data[bin]; + G4double d2 = data[bin+1]; + value = (d1*log10(e2/x) + d2*log10(x/e1)) / log10(e2/e1); + } + else + { + value = data[nBins]; + } + return value; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc b/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc new file mode 100644 index 0000000000..9578807ecf --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4ShellData.cc @@ -0,0 +1,245 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ShellData.cc,v 1.4 2001/09/26 21:19:23 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created +// +// ------------------------------------------------------------------- + +#include "G4ShellData.hh" +#include "G4DataVector.hh" +#include "g4std/fstream" +#include "g4std/strstream" + +// Constructor + +G4ShellData::G4ShellData(G4int minZ, G4int maxZ) + : zMin(minZ), zMax(maxZ) +{ } + +// Destructor +G4ShellData::~G4ShellData() +{ + G4std::map >::iterator pos; + + for (pos = idMap.begin(); pos != idMap.end(); pos++) + { + G4DataVector* dataSet = (*pos).second; + delete dataSet; + } + for (pos = bindingMap.begin(); pos != bindingMap.end(); pos++) + { + G4DataVector* dataSet = (*pos).second; + delete dataSet; + } +} + + +size_t G4ShellData::NumberOfShells(G4int Z) const +{ + G4int z = Z - 1; + G4int n = 0; + + if (Z>= zMin && Z <= zMax) + { + n = nShells[z]; + } + return n; +} + + +const G4DataVector& G4ShellData::ShellIdVector(G4int Z) const +{ + G4std::map >::const_iterator pos; + if (Z < zMin || Z > zMax) + G4Exception("G4ShellData::ShellIdVector - Z outside boundaries"); + pos = idMap.find(Z); + G4DataVector* dataSet = (*pos).second; + return *dataSet; +} + +G4int G4ShellData::ShellId(G4int Z, G4int shellIndex) const +{ + G4int n = -1; + + if (Z >= zMin && Z <= zMax) + { + G4std::map >::const_iterator pos; + pos = idMap.find(Z); + if (pos!= idMap.end()) + { + G4DataVector dataSet = *((*pos).second); + G4int nData = dataSet.size(); + if (shellIndex >= 0 && shellIndex < nData) + { + n = (G4int) dataSet[shellIndex]; + } + } + } + return n; +} + + +G4double G4ShellData::BindingEnergy(G4int Z, G4int shellIndex) const +{ + G4double value = 0.; + + if (Z >= zMin && Z <= zMax) + { + G4std::map >::const_iterator pos; + pos = bindingMap.find(Z); + if (pos!= bindingMap.end()) + { + G4DataVector dataSet = *((*pos).second); + G4int nData = dataSet.size(); + if (shellIndex >= 0 && shellIndex < nData) + { + value = dataSet[shellIndex]; + } + } + } + return value; +} + +void G4ShellData::PrintData() const +{ + for (G4int Z = zMin; Z <= zMax; Z++) + { + G4cout << "---- Shell data for Z = " + << Z + << " ---- " + << G4endl; + G4int nSh = nShells[Z-1]; + G4std::map >::const_iterator posId; + posId = idMap.find(Z); + G4DataVector* ids = (*posId).second; + G4std::map >::const_iterator posE; + posE = bindingMap.find(Z); + G4DataVector* energies = (*posE).second; + for (G4int i=0; iis_open()) ) + { + G4String excep = "G4ShellData - data file: " + dirFile + " not found"; + G4Exception(excep); + } + + G4double a = 0; + G4int k = 1; + G4int s = 0; + + G4int Z = 1; + G4DataVector* energies = new G4DataVector; + G4DataVector* ids = new G4DataVector; + + do { + file >> a; + G4int nColumns = 2; + if (a == -1) + { + if (s == 0) + { + // End of a shell data set + idMap[Z] = ids; + bindingMap[Z] = energies; + G4int n = ids->size(); + nShells.push_back(n); + // Start of new shell data set + ids = new G4DataVector; + energies = new G4DataVector; + Z++; + } + s++; + if (s == nColumns) + { + s = 0; + } + } + else if (a == -2) + { + // End of file; delete the empty vectors created when encountering the last -1 -1 row + delete energies; + delete ids; + //nComponents = components.size(); + } + else + { + // 1st column is shell id + if(k%nColumns != 0) + { + ids->push_back(a); + k++; + } + else if (k%nColumns == 0) + { + // 2nd column is binding energy + G4double e = a * MeV; + energies->push_back(e); + k = 1; + } + } + } while (a != -2); // end of file + file.close(); +} + diff --git a/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc b/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc new file mode 100644 index 0000000000..70fa9274d0 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4ShellEMDataSet.cc @@ -0,0 +1,203 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ShellEMDataSet.cc,v 1.7 2001/10/11 14:10:40 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 1 Aug 2001 MGP Created +// 09.10.01 V.Ivanchenko Add case z=0 +// +// ------------------------------------------------------------------- + +#include "G4ShellEMDataSet.hh" +#include "G4EMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "g4std/fstream" +#include "g4std/strstream" + + +G4ShellEMDataSet::G4ShellEMDataSet(G4int Z, + const G4VDataSetAlgorithm* interpolation, + G4double unitE, G4double unitData) + :z(Z), algorithm(interpolation) +{ + nComponents = 0; + unit1 = unitE; + unit2 = unitData; +} + +G4ShellEMDataSet::G4ShellEMDataSet(G4int Z, const G4String& dataFile, + const G4VDataSetAlgorithm* interpolation, + G4double unitE, G4double unitData) + :z(Z), algorithm(interpolation) +{ + nComponents = 0; + unit1 = unitE; + unit2 = unitData; + LoadData(dataFile); +} + +G4ShellEMDataSet::~G4ShellEMDataSet() +{ + for (size_t i=0; iFindValue(e); + value = value + shellValue; + } + + return value; +} + +void G4ShellEMDataSet::PrintData() const +{ + G4cout << "The data set has " << nComponents << " components" << G4endl; + + for (size_t i=0; iPrintData(); + } +} + +void G4ShellEMDataSet::LoadData(const G4String& fileName) +{ + // Build the complete string identifying the file with the data set + + char nameChar[100] = {""}; + G4std::ostrstream ost(nameChar, 100, G4std::ios::out); + + if (z != 0) ost << fileName << z << ".dat"; + else ost << fileName << ".dat"; + + G4String name(nameChar); + + char* path = getenv("G4LEDATA"); + if (!path) + { + G4String excep = "G4ShellEMDataSet - G4LEDATA environment variable not set"; + G4Exception(excep); + } + + G4String pathString(path); + G4String dirFile = pathString + "/" + name; + G4std::ifstream file(dirFile); + G4std::filebuf* lsdp = file.rdbuf(); + + if (! (lsdp->is_open()) ) + { + G4String excep = "G4ShellEMDataSet - data file: " + dirFile + " not found"; + G4Exception(excep); + } + + G4double a = 0; + G4int k = 1; + G4int s = 0; + + G4int shellIndex = 0; + G4DataVector* energies = new G4DataVector; + G4DataVector* data = new G4DataVector; + + do { + file >> a; + G4int nColumns = 2; + if (a == -1) + { + if (s == 0) + { + // End of a shell data set + G4VDataSetAlgorithm* algo = algorithm->Clone(); + G4VEMDataSet* dataSet = new G4EMDataSet(shellIndex,energies,data,algo); + AddComponent(dataSet); + // Start of new shell data set + energies = new G4DataVector; + data = new G4DataVector; + shellIndex++; + } + s++; + if (s == nColumns) + { + s = 0; + } + } + else if (a == -2) + { + // End of file; delete the empty vectors created when encountering the last -1 -1 row + delete energies; + delete data; + } + else + { + // 1st column is energy + if(k%nColumns != 0) + { + G4double e = a * unit1; + energies->push_back(e); + k++; + } + else if (k%nColumns == 0) + { + // 2nd column is cross section + G4double value = a * unit2; + data->push_back(value); + k = 1; + } + } + } while (a != -2); // end of file + file.close(); +} + +void G4ShellEMDataSet::AddComponent(G4VEMDataSet* component) +{ + components.push_back(component); + nComponents++; +} + +const G4DataVector& G4ShellEMDataSet::GetEnergies(G4int i) const +{ + const G4VEMDataSet* component = GetComponent(i); + return (component->GetEnergies(i)); +} + +const G4DataVector& G4ShellEMDataSet::GetData(G4int i) const +{ + const G4VEMDataSet* component = GetComponent(i); + return (component->GetData(i)); +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4ShellVacancy.cc b/source/processes/electromagnetic/lowenergy/src/G4ShellVacancy.cc new file mode 100644 index 0000000000..eea4804192 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4ShellVacancy.cc @@ -0,0 +1,127 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ShellVacancy.cc +// GEANT4 tag $Name: +// +// Author: Elena Guardincerri (Elena.Guardincerri@ge.infn.it) +// +// History: +// ----------- +// 21 Sept 2001 Elena Guardincerri Created +// +// ------------------------------------------------------------------- + +#include "G4ShellVacancy.hh" +#include "G4Material.hh" +#include "G4Poisson.hh" +#include "G4VEMDataSet.hh" + +G4ShellVacancy::G4ShellVacancy() + +{ } + +G4ShellVacancy::~G4ShellVacancy() + +{ + G4int size = xsis.size(); + for (G4int k =0; k G4ShellVacancy::GenerateNumberOfIonisations(const G4Material* + material, + G4double + incidentEnergy, + G4double eLoss) const + +{ + G4std::vector numberOfIonisations; + + size_t numberOfElements = material->GetNumberOfElements(); + + for (size_t i = 0; iGetElement(i); + + G4int averageNumberOfIonisations = AverageNOfIonisations(material, + element, + incidentEnergy, + eLoss); + G4int ionisations = (G4int) G4Poisson(averageNumberOfIonisations); + + numberOfIonisations.push_back(ionisations); + + } + return numberOfIonisations; + +} + +G4int G4ShellVacancy::AverageNOfIonisations(const G4Material* material, + const G4Element* element, + G4double energy, + G4double eLoss) const + +{ + G4int indexOfElementInMaterial= -1; + + G4double averageEnergy = energy - eLoss/2.; + + G4String elementName = element->GetName(); + + size_t numberOfElements = material->GetNumberOfElements(); + + for (size_t i = 0; iGetElement(i); + + G4String itsName = anElement->GetName(); + + if (itsName==elementName) + { + indexOfElementInMaterial=i; + break; + } + //else + //{break;} + } + size_t indexInMaterialTable = material->GetIndex(); + + G4VEMDataSet* aSetOfXsi = xsis[indexInMaterialTable]; + + G4double aXsi = aSetOfXsi->FindValue(averageEnergy,indexOfElementInMaterial); + + G4int averageNumberOfIonisations = (G4int)(aXsi * eLoss); + + return averageNumberOfIonisations; + +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc b/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc new file mode 100644 index 0000000000..c9a94b1722 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4VCrossSectionHandler.cc @@ -0,0 +1,653 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VCrossSectionHandler.cc,v 1.8 2001/10/10 16:46:06 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 1 Aug 2001 MGP Created +// 09.10.01 V.Ivanchenko Add FindValue with 3 parameters +// + NumberOfComponents +// +// ------------------------------------------------------------------- + +#include "G4VCrossSectionHandler.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4LogLogInterpolation.hh" +#include "G4VEMDataSet.hh" +#include "G4EMDataSet.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4ShellEMDataSet.hh" +#include "G4MaterialTable.hh" +#include "G4Material.hh" +#include "G4Element.hh" +#include "Randomize.hh" +#include "g4std/map" +#include "g4std/vector" +#include "g4std/fstream" +#include "g4std/strstream" + + +G4VCrossSectionHandler::G4VCrossSectionHandler() +{ + crossSections = 0; + interpolation = 0; + Initialise(); + ActiveElements(); +} + + +G4VCrossSectionHandler::G4VCrossSectionHandler(G4VDataSetAlgorithm* algorithm, + G4double minE, + G4double maxE, + G4int bins, + G4double unitE, + G4double unitData, + G4int minZ, + G4int maxZ) + : interpolation(algorithm), eMin(minE), eMax(maxE), nBins(bins), + unit1(unitE), unit2(unitData), zMin(minZ), zMax(maxZ) +{ + crossSections = 0; + ActiveElements(); +} + +G4VCrossSectionHandler::~G4VCrossSectionHandler() +{ + delete interpolation; + interpolation = 0; + G4std::map >::iterator pos; + + for (pos = dataMap.begin(); pos != dataMap.end(); ++pos) + { + // The following is a workaround for STL ObjectSpace implementation, + // which does not support the standard and does not accept + // the syntax pos->second + // G4VEMDataSet* dataSet = pos->second; + G4VEMDataSet* dataSet = (*pos).second; + delete dataSet; + } + + if (crossSections != 0) + { + size_t n = crossSections->size(); + for (size_t i=0; i >::const_iterator pos; + + for (pos = dataMap.begin(); pos != dataMap.end(); pos++) + { + // The following is a workaround for STL ObjectSpace implementation, + // which does not support the standard and does not accept + // the syntax pos->first or pos->second + // G4int z = pos->first; + // G4VEMDataSet* dataSet = pos->second; + G4int z = (*pos).first; + G4VEMDataSet* dataSet = (*pos).second; + G4cout << "---- Data set for Z = " + << z + << G4endl; + dataSet->PrintData(); + G4cout << "--------------------------------------------------" << G4endl; + } +} + +void G4VCrossSectionHandler::LoadData(const G4String& fileName) +{ + size_t nZ = activeZ.size(); + for (size_t i=0; iis_open()) ) + { + G4String excep = "G4VCrossSectionHandler - data file: " + dirFile + " not found"; + G4Exception(excep); + } + G4double a = 0; + G4int k = 1; + G4DataVector* energies = new G4DataVector; + G4DataVector* data = new G4DataVector; + do + { + file >> a; + G4int nColumns = 2; + // The file is organized into two columns: + // 1st column is the energy + // 2nd column is the corresponding value + // The file terminates with the pattern: -1 -1 + // -2 -2 + if (a == -1 || a == -2) + { + } + else + { + if (k%nColumns != 0) + { + G4double e = a * unit1; + energies->push_back(e); + k++; + } + else if (k%nColumns == 0) + { + G4double value = a * unit2; + data->push_back(value); + k = 1; + } + } + } while (a != -2); // end of file + + file.close(); + G4VDataSetAlgorithm* algo = interpolation->Clone(); + G4VEMDataSet* dataSet = new G4EMDataSet(Z,energies,data,algo); + dataMap[Z] = dataSet; + } +} + +void G4VCrossSectionHandler::LoadShellData(const G4String& fileName) +{ + size_t nZ = activeZ.size(); + for (size_t i=0; iis_open()) ) + { + G4String excep = "G4VCrossSectionHandler - data file: " + dirFile + " not found"; + G4Exception(excep); + } + G4double a = 0; + G4int k = 1; + G4DataVector* energies = new G4DataVector; + G4DataVector* data = new G4DataVector; + do + { + file >> a; + G4int nColumns = 2; + // The file is organized into two columns: + // 1st column is the energy + // 2nd column is the corresponding value + // The file terminates with the pattern: -1 -1 + // -2 -2 + if (a == -1 || a == -2) + { + } + else + { + if (k%nColumns != 0) + { + G4double e = a * unit1; + energies->push_back(e); + k++; + } + else if (k%nColumns == 0) + { + G4double value = a * unit2; + data->push_back(value); + k = 1; + } + } + } while (a != -2); // end of file + + file.close(); + G4VDataSetAlgorithm* algo = interpolation->Clone(); + G4VEMDataSet* dataSet = new G4ShellEMDataSet(Z,fileName,algo); + dataMap[Z] = dataSet; + } +} + +void G4VCrossSectionHandler::Clear() +{ + // Reset the map of data sets: remove the data sets from the map + G4std::map >::iterator pos; + + if(! dataMap.empty()) + { + for (pos = dataMap.begin(); pos != dataMap.end(); ++pos) + { + // The following is a workaround for STL ObjectSpace implementation, + // which does not support the standard and does not accept + // the syntax pos->first or pos->second + // G4VEMDataSet* dataSet = pos->second; + G4VEMDataSet* dataSet = (*pos).second; + delete dataSet; + dataSet = 0; + G4int i = (*pos).first; + dataMap[i] = 0; + } + dataMap.clear(); + } + + activeZ.clear(); + ActiveElements(); +} + +G4double G4VCrossSectionHandler::FindValue(G4int Z, G4double energy) const +{ + G4double value = 0.; + + G4std::map >::const_iterator pos; + pos = dataMap.find(Z); + if (pos!= dataMap.end()) + { + // The following is a workaround for STL ObjectSpace implementation, + // which does not support the standard and does not accept + // the syntax pos->first or pos->second + // G4VEMDataSet* dataSet = pos->second; + G4VEMDataSet* dataSet = (*pos).second; + value = dataSet->FindValue(energy); + } + else + { + G4cout << "WARNING: G4VCrossSectionHandler::FindValue did not find Z = " + << Z << G4endl; + } + return value; +} + +G4double G4VCrossSectionHandler::FindValue(G4int Z, G4double energy, + G4int shellIndex) const +{ + G4double value = 0.; + + G4std::map >::const_iterator pos; + pos = dataMap.find(Z); + if (pos!= dataMap.end()) + { + // The following is a workaround for STL ObjectSpace implementation, + // which does not support the standard and does not accept + // the syntax pos->first or pos->second + // G4VEMDataSet* dataSet = pos->second; + G4VEMDataSet* dataSet = (*pos).second; + if (shellIndex >= 0) + { + G4int nComponents = dataSet->NumberOfComponents(); + if(shellIndex < nComponents) + // - MGP - Why doesn't it use G4VEMDataSet::FindValue directly? + value = dataSet->GetComponent(shellIndex)->FindValue(energy); + else + { + G4cout << "WARNING: G4VCrossSectionHandler::FindValue did not find" + << " shellIndex= " << shellIndex + << " for Z= " + << Z << G4endl; + } + } else { + value = dataSet->FindValue(energy); + } + } + else + { + G4cout << "WARNING: G4VCrossSectionHandler::FindValue did not find Z = " + << Z << G4endl; + } + return value; +} + + +G4double G4VCrossSectionHandler::ValueForMaterial(const G4Material* material, + G4double energy) const +{ + G4double value = 0.; + + const G4ElementVector* elementVector = material->GetElementVector(); + const G4double* nAtomsPerVolume = material->GetVecNbOfAtomsPerVolume(); + G4int nElements = material->GetNumberOfElements(); + + for (G4int i=0 ; iGetZ(); + G4double elementValue = FindValue(Z,energy); + G4double nAtomsVol = nAtomsPerVolume[i]; + value += nAtomsVol * elementValue; + } + + return value; +} + + +G4VEMDataSet* G4VCrossSectionHandler::BuildMeanFreePathForMaterials( + const G4DataVector* energyCuts) +{ + // Builds a CompositeDataSet containing the mean free path for each material + // in the material table + + G4DataVector energyVector; + G4double dBin = log10(eMax/eMin) / nBins; + + for (G4int i=0; i::iterator mat; + if (! crossSections->empty()) + { + for (mat = crossSections->begin(); mat!= crossSections->end(); ++mat) + { + G4VEMDataSet* set = *mat; + delete set; + set = 0; + } + crossSections->clear(); + delete crossSections; + crossSections = 0; + } + } + + crossSections = BuildCrossSectionsForMaterials(energyVector,energyCuts); + + if (crossSections == 0) + G4Exception("G4VCrossSectionHandler::BuildMeanFreePathForMaterials, crossSections = 0"); + + G4VDataSetAlgorithm* algo = CreateInterpolation(); + G4VEMDataSet* materialSet = new G4CompositeEMDataSet(algo); + + G4DataVector* energies; + G4DataVector* data; + + size_t nMaterials = G4Material::GetNumberOfMaterials(); + + for (size_t m=0; mpush_back(energy); + G4VEMDataSet* matCrossSet = (*crossSections)[m]; + G4double materialCrossSection = matCrossSet->FindValue(energy); + + if (materialCrossSection > 0.) + { + data->push_back(1./materialCrossSection); + } + else + { + data->push_back(DBL_MAX); + } + } + G4VDataSetAlgorithm* algo = CreateInterpolation(); + G4VEMDataSet* dataSet = new G4EMDataSet(m,energies,data,algo,1.,1.); + materialSet->AddComponent(dataSet); + } + + return materialSet; +} + +G4int G4VCrossSectionHandler::SelectRandomAtom(const G4Material* material, G4double e) const +{ + // Select randomly an element within the material, according to the weight + // determined by the cross sections in the data set + + G4int nElements = material->GetNumberOfElements(); + const G4ElementVector* elementVector = material->GetElementVector(); + + // Special case: the material consists of one element + if (nElements == 1) + { + G4int Z = (G4int) (*elementVector)[0]->GetZ(); + return Z; + } + + // Composite material + + G4double materialCrossSection0 = ValueForMaterial(material,e); + // size_t materialIndex = material->GetIndex(); + + // G4VEMDataSet* materialSet = crossSections[materialIndex]; + // G4double materialCrossSection = materialSet->FindValue(e); + + G4double random = G4UniformRand() * materialCrossSection0; + const G4double* nAtomsPerVolume = material->GetVecNbOfAtomsPerVolume(); + G4double partialSumSigma = 0.; + + for ( G4int i=0 ; i < nElements ; i++ ) + { + G4int Z = (G4int) (*elementVector)[i]->GetZ(); + G4double crossSection = FindValue(Z,e); + partialSumSigma += nAtomsPerVolume[i] * crossSection; + if (random <= partialSumSigma) return Z; + } + // It should never get here + return 0; +} + +const G4Element* G4VCrossSectionHandler::SelectRandomElement(const G4Material* material, + G4double e) const +{ + // Select randomly an element within the material, according to the weight determined + // by the cross sections in the data set + + G4Element* nullElement = 0; + G4int nElements = material->GetNumberOfElements(); + const G4ElementVector* elementVector = material->GetElementVector(); + + // Special case: the material consists of one element + if (nElements == 1) + { + G4Element* element = (*elementVector)[0]; + return element; + } + else + { + // Composite material + G4double materialCrossSection0 = ValueForMaterial(material,e); + // size_t materialIndex = material->GetIndex(); + // G4VEMDataSet* materialSet = crossSections[materialIndex]; + // G4double materialCrossSection = materialSet->FindValue(e); + + G4double random = G4UniformRand() * materialCrossSection0; + const G4double* nAtomsPerVolume = material->GetVecNbOfAtomsPerVolume(); + G4double partialSumSigma = 0.; + + for ( G4int i=0 ; i < nElements ; i++ ) + { + G4Element* element = (*elementVector)[i]; + G4int Z = (G4int) element->GetZ(); + G4double crossSection = FindValue(Z,e); + partialSumSigma += nAtomsPerVolume[i] * crossSection; + if (random <= partialSumSigma) return element; + } + } + // It should never end up here + G4cout << "G4VCrossSectionHandler::SelectRandomElement - no element found" << G4endl; + return nullElement; +} + +G4int G4VCrossSectionHandler::SelectRandomShell(G4int Z, G4double e) const +{ + // Select randomly a shell, according to the weight determined by the cross sections + // in the data set + + // Note for later improvement: it would be useful to add a cache mechanism for already + // used shells to improve performance + + G4int shell = 0; + + G4double totCrossSection = FindValue(Z,e); + G4double random = G4UniformRand() * totCrossSection; + G4double partialSum = 0.; + + G4VEMDataSet* dataSet = 0; + G4std::map >::const_iterator pos; + pos = dataMap.find(Z); + // The following is a workaround for STL ObjectSpace implementation, + // which does not support the standard and does not accept + // the syntax pos->first or pos->second + // if (pos != dataMap.end()) dataSet = pos->second; + if (pos != dataMap.end()) dataSet = (*pos).second; + + size_t nShells = dataSet->NumberOfComponents(); + for (size_t i=0; iGetComponent(i); + if (shellDataSet != 0) + { + G4double value = shellDataSet->FindValue(e); + partialSum += value; + if (random <= partialSum) return i; + } + } + // It should never get here + return shell; +} + +void G4VCrossSectionHandler::ActiveElements() +{ + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + if (materialTable == 0) + G4Exception("G4VCrossSectionHandler::ActiveElements - no MaterialTable found)"); + + G4int nMaterials = G4Material::GetNumberOfMaterials(); + + for (G4int m=0; mGetElementVector(); + const G4int nElements = material->GetNumberOfElements(); + + for (G4int iEl=0; iElGetZ(); + if (!(activeZ.contains(Z)) && Z >= zMin && Z <= zMax) + { + activeZ.push_back(Z); + } + } + } +} + +G4VDataSetAlgorithm* G4VCrossSectionHandler::CreateInterpolation() +{ + G4VDataSetAlgorithm* algorithm = new G4LogLogInterpolation; + return algorithm; +} + +G4int G4VCrossSectionHandler::NumberOfComponents(G4int Z) const +{ + G4int n = 0; + + G4std::map >::const_iterator pos; + pos = dataMap.find(Z); + if (pos!= dataMap.end()) + { + G4VEMDataSet* dataSet = (*pos).second; + n = dataSet->NumberOfComponents(); + } + else + { + G4cout << "WARNING: G4VCrossSectionHandler::NumberOfComponents did not " + << "find Z = " + << Z << G4endl; + } + return n; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc index 8fad4788b8..a6a657887b 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4VeLowEnergyLoss.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VeLowEnergyLoss.cc,v 1.12.2.2 2001/06/28 20:19:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VeLowEnergyLoss.cc,v 1.17 2001/11/23 11:45:29 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -37,6 +37,7 @@ // 22/11/00 minor fix in fluctuations V.Ivanchenko // 10/05/01 V.Ivanchenko Clean up againist Linux compilation with -Wall // 22/05/01 V.Ivanchenko Update range calculation +// 23/11/01 V.Ivanchenko Move static member-functions from header to source // // -------------------------------------------------------------- @@ -95,16 +96,33 @@ G4VeLowEnergyLoss::G4VeLowEnergyLoss(G4VeLowEnergyLoss& right) { } -// +void G4VeLowEnergyLoss::SetRndmStep(G4bool value) +{ + rndmStepFlag = value; +} + +void G4VeLowEnergyLoss::SetEnlossFluc(G4bool value) +{ + EnlossFlucFlag = value; +} + +void G4VeLowEnergyLoss::SetStepFunction (G4double c1, G4double c2) +{ + dRoverRange = c1; + finalRange = c2; + c1lim=dRoverRange; + c2lim=2.*(1-dRoverRange)*finalRange; + c3lim=-(1.-dRoverRange)*finalRange*finalRange; +} G4PhysicsTable* G4VeLowEnergyLoss::BuildRangeTable( G4PhysicsTable* theDEDXTable,G4PhysicsTable* theRangeTable, - G4double lowestKineticEnergy,G4double highestKineticEnergy,G4int TotBin) + G4double lowestKineticEnergy,G4double highestKineticEnergy, + G4int TotBin) // Build range table from the energy loss table { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theRangeTable) { theRangeTable->clearAndDestroy(); @@ -236,9 +254,8 @@ G4PhysicsTable* G4VeLowEnergyLoss::BuildLabTimeTable(G4PhysicsTable* theDEDXTabl G4double highestKineticEnergy,G4int TotBin) { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theLabTimeTable) { theLabTimeTable->clearAndDestroy(); @@ -270,9 +287,8 @@ G4PhysicsTable* G4VeLowEnergyLoss::BuildProperTimeTable(G4PhysicsTable* theDEDXT G4double highestKineticEnergy,G4int TotBin) { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theProperTimeTable) { theProperTimeTable->clearAndDestroy(); @@ -312,7 +328,6 @@ void G4VeLowEnergyLoss::BuildLabTimeVector(G4PhysicsTable* theDEDXTable, LowEdgeEnergy,tau,Value ; G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - //const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); // low energy part first... losslim = physicsVector->GetValue(tlim,isOut); @@ -498,9 +513,8 @@ G4PhysicsTable* G4VeLowEnergyLoss::BuildInverseRangeTable(G4PhysicsTable* theRan { G4double SmallestRange,BiggestRange ; G4bool isOut ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theInverseRangeTable) { theInverseRangeTable->clearAndDestroy(); @@ -594,9 +608,8 @@ G4PhysicsTable* G4VeLowEnergyLoss::BuildRangeCoeffATable(G4PhysicsTable* theRang // Build tables of coefficients for the energy loss calculation // create table for coefficients "A" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theRangeCoeffATable) { theRangeCoeffATable->clearAndDestroy(); @@ -657,9 +670,8 @@ G4PhysicsTable* G4VeLowEnergyLoss::BuildRangeCoeffBTable(G4PhysicsTable* theRang // Build tables of coefficients for the energy loss calculation // create table for coefficients "B" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theRangeCoeffBTable) { theRangeCoeffBTable->clearAndDestroy(); @@ -719,9 +731,8 @@ G4PhysicsTable* G4VeLowEnergyLoss::BuildRangeCoeffCTable(G4PhysicsTable* theRang // Build tables of coefficients for the energy loss calculation // create table for coefficients "C" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theRangeCoeffCTable) { theRangeCoeffCTable->clearAndDestroy(); @@ -806,7 +817,7 @@ G4double G4VeLowEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, ipotLogFluct = aMaterial->GetIonisation()->GetLogMeanExcEnergy(); } G4double threshold,w1,w2,C, - beta2,suma,e0,loss,lossc ,w; + beta2,suma,e0,loss,lossc,w; G4double a1,a2,a3; G4int p1,p2,p3; G4int nb; @@ -823,7 +834,7 @@ G4double G4VeLowEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, // G4cout << "MGP -- Fluc Tkin " << Tkin/keV << " keV " << " MeanLoss = " << MeanLoss/keV << G4endl; - threshold =((*G4Electron::Electron()).GetCutsInEnergy())[imat]; + threshold = G4Electron::Electron()->GetEnergyThreshold(aMaterial); G4double rmass = electron_mass_c2/ParticleMass; G4double tau = Tkin/ParticleMass, tau1 = tau+1., tau2 = tau*(tau+2.); G4double Tm = 2.*electron_mass_c2*tau2/(1.+2.*tau1*rmass+rmass*rmass); diff --git a/source/processes/electromagnetic/lowenergy/src/G4VhShellCrossSection.cc b/source/processes/electromagnetic/lowenergy/src/G4VhShellCrossSection.cc new file mode 100644 index 0000000000..dec208e9b2 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4VhShellCrossSection.cc @@ -0,0 +1,72 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4VhShellCrossSection +// +// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch) +// +// History: +// ----------- +// 20 Oct 2001 V.Ivanchenko 1st implementation +// 24 Oct 2001 MGP Minor clean-up +// 29 Oct 2001 VI Add delta energy +// +// ------------------------------------------------------------------- + +#include "G4VhShellCrossSection.hh" +#include "Randomize.hh" + +G4VhShellCrossSection::G4VhShellCrossSection() +{ } + + +G4VhShellCrossSection::~G4VhShellCrossSection() +{ } + + +G4int G4VhShellCrossSection::SelectRandomShell(G4int Z, + G4double incidentEnergy, + G4double mass, + G4double deltaEnergy) const +{ + G4std::vector p = Probabilities(Z,incidentEnergy,mass,deltaEnergy); + G4int shell = 0; + size_t nShells = p.size(); + G4double q = G4UniformRand(); + for (size_t i=0; i= q) { + shell = i; + break; + } + q -= p[i]; + } + return shell; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc b/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc new file mode 100644 index 0000000000..5fa9fe284b --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4eBremsstrahlungSpectrum.cc @@ -0,0 +1,346 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// $Id: G4eBremsstrahlungSpectrum.cc,v 1.5 2001/11/30 00:52:52 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4eBremsstrahlungSpectrum +// +// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch) +// +// Creation date: 29 September 2001 +// +// Modifications: +// 10.10.01 MGP Revision to improve code quality and consistency with design +// 15.11.01 VI Update spectrum model Bethe-Haitler spectrum at high energy +// +// ------------------------------------------------------------------- + +#include "G4eBremsstrahlungSpectrum.hh" +#include "G4BremsstrahlungParameters.hh" +#include "Randomize.hh" + + +G4eBremsstrahlungSpectrum::G4eBremsstrahlungSpectrum(): + G4VEnergySpectrum(), + lowestE(0.1*eV), + length(15) +{ + theBRparam = new G4BremsstrahlungParameters(); + xp.clear(); + for(size_t i=0; i= tm) return 0.0; + + t0 /= e; + tm /= e; + + G4double z = lowestE/e; + G4double x, y; + + // Below 10 MeV EEDL data base spectrum + if(e < 1000000.*MeV) { + + G4int iMax = 16; + G4DataVector p; + + // Access parameters + for (G4int i=0; iParameter(i, Z, e)); + } + + x = IntSpectrum(t0, tm, p); + y = IntSpectrum(z, 1.0, p); + p.clear(); + + + // Above Bethe-Heitler formula + } else { + + x = log(tm/t0) - tm + t0 + 0.375*(tm*tm - t0*t0); + y = log(1./z) - 1.0 + z + 0.375*(1. - z*z); + + } + + if(1 < verbose) { + G4cout << "tcut(MeV)= " << tmin/MeV + << "; tMax(MeV)= " << tmax/MeV + << "; t0= " << t0 + << "; tm= " << tm + << "; xp[0]= " << xp[0] + << "; z= " << z + << "; val= " << x + << "; nor= " << y + << G4endl; + } + + if(y > 0.0) x /= y; + else x = 0.0; + if(x < 0.0) x = 0.0; + + return x; +} + + +G4double G4eBremsstrahlungSpectrum::AverageEnergy(G4int Z, + G4double tmin, + G4double tmax, + G4double e, + G4int, + const G4ParticleDefinition*) const +{ + G4double tm = G4std::min(tmax, e); + G4double t0 = G4std::max(tmin, lowestE); + if(t0 >= tm) return 0.0; + + G4double c = sqrt(theBRparam->ParameterC(Z)); + + t0 /= e; + tm /= e; + + G4double z = lowestE/e; + G4double x, y, f; + + // Below 10 MeV EEDL data base spectrum + if(e < 1000000.*MeV) { + + G4int iMax = 16; + G4DataVector p; + + // Access parameters + for (G4int i=0; iParameter(i, Z, e)); + } + + x = AverageValue(t0, tm, p); + y = IntSpectrum(z, 1.0, p); + f = Function(z, p); + p.clear(); + + // Above Bethe-Heitler formula + } else { + + x = tm - t0 - 0.5*(tm*tm - t0*t0) + 0.25*(tm*tm*tm - t0*t0*t0); + y = log(1./z) - 1.0 + z + 0.375*(1. - z*z); + f = 1. - x + 0.75*x*x; + + } + + x += 0.5*f*z*(z - c*atan(z/c)); + + x *= e; + + if(1 < verbose) { + G4cout << "tcut(MeV)= " << tmin/MeV + << "; tMax(MeV)= " << tmax/MeV + << "; e(MeV)= " << e/MeV + << "; t0= " << t0 + << "; tm= " << tm + << "; y= " << y + << "; x= " << x + << G4endl; + } + + + if(y > 0.0) x /= y; + else x = 0.0; + if(x < 0.0) x = 0.0; + + return x; +} + + +G4double G4eBremsstrahlungSpectrum::SampleEnergy(G4int Z, + G4double tmin, + G4double tmax, + G4double e, + G4int, + const G4ParticleDefinition*) const +{ + G4double tm = G4std::min(tmax, e); + G4double t0 = G4std::max(tmin, lowestE); + if(t0 >= tm) return 0.0; + + t0 /= e; + tm /= e; + + G4int iMax = 16; + G4DataVector p; + + G4double amaj; + + // Below 10 MeV EEDL data base spectrum + if(e < 10000000.*MeV) { + for (G4int i=0; iParameter(i, Z, e)); + } + amaj = G4std::max(p[15], 1. - (p[1] - p[0])/9.); + + } else { + amaj = 1.0; + } + + + G4double amax = log(tm); + G4double amin = log(t0); + G4double tgam, q, fun; + do { + G4double x = amin + G4UniformRand()*(amax - amin); + tgam = exp(x); + if(e < 10.*MeV) { + fun = Function(tgam, p); + } else { + fun = 1. - tgam + 0.75*tgam*tgam; + } + if(fun > amaj) { + G4cout << "WARNING in G4eBremsstrahlungSpectrum::SampleEnergy:" + << " Majoranta " << amaj + << " < " << fun + << G4endl; + } + + q = amaj * G4UniformRand(); + } while (q > fun); + + tgam *= e; + + p.clear(); + + return tgam; +} + +G4double G4eBremsstrahlungSpectrum::IntSpectrum(G4double xMin, + G4double xMax, + const G4DataVector& p) const +{ + G4double x1 = G4std::min(xMin, xp[0]); + G4double x2 = G4std::min(xMax, xp[0]); + G4double z1 = x1; + G4double z2 = x2; + G4double sum = 0.0; + + if(x1 < x2) { + G4double k = (p[1] - p[0])/0.09; + sum += (1. - k*xp[0])*log(x2/x1) + k*(x2 - x1); + } + + for (size_t i=0; i= xp[i]) { + f = p[i] + (p[i+1] - p[i])*(x - xp[i])/(xp[i+1] - xp[i]); + break; + } + } + } + if(f < 0.0) f = 0.0; + return f; +} + +void G4eBremsstrahlungSpectrum::PrintData() const +{ theBRparam->PrintData(); } + diff --git a/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc b/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc new file mode 100644 index 0000000000..69fbf503b4 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4eIonisationCrossSectionHandler.cc @@ -0,0 +1,140 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// $Id: G4eIonisationCrossSectionHandler.cc,v 1.6 2001/11/29 19:01:37 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4eIonisationCrossSectionHandler +// +// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch) +// +// Creation date: 25 Sept 2001 +// +// Modifications: +// 10 Oct 2001 M.G. Pia Revision to improve code quality and consistency with design +// +// ------------------------------------------------------------------- + +#include "G4eIonisationCrossSectionHandler.hh" +#include "G4VEnergySpectrum.hh" +#include "G4DataVector.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4VDataSetAlgorithm.hh" +#include "G4SemiLogInterpolation.hh" +#include "G4VEMDataSet.hh" +#include "G4EMDataSet.hh" +#include "G4Material.hh" +#include "G4MaterialTable.hh" + + +G4eIonisationCrossSectionHandler::G4eIonisationCrossSectionHandler( + const G4VEnergySpectrum* spec, G4VDataSetAlgorithm* alg, + G4double emin, G4double emax, G4int nbin) + : G4VCrossSectionHandler(), + theParam(spec) +{ + G4VCrossSectionHandler::Initialise(alg, emin, emax, nbin); + interp = new G4SemiLogInterpolation(); +} + + +G4eIonisationCrossSectionHandler::~G4eIonisationCrossSectionHandler() +{ + delete interp; +} + + +G4std::vector* G4eIonisationCrossSectionHandler::BuildCrossSectionsForMaterials( + const G4DataVector& energyVector, + const G4DataVector* energyCuts) +{ + + G4std::vector* set = new G4std::vector; + + G4DataVector* energies; + G4DataVector* cs; + G4int nOfBins = energyVector.size(); + + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + if (materialTable == 0) + G4Exception("G4VCrossSectionHandler::G4VCrossSectionHandler - no MaterialTable found)"); + + G4int nMaterials = G4Material::GetNumberOfMaterials(); + + for (G4int m=0; mGetElementVector(); + //const G4double* nAtomsPerVolume = material->GetVecNbOfAtomsPerVolume(); + const G4double* nAtomsPerVolume = material->GetAtomicNumDensityVector(); + G4int nElements = material->GetNumberOfElements(); + + G4double tcut = (*energyCuts)[m]; + + G4VDataSetAlgorithm* algo = interp->Clone(); + G4VEMDataSet* setForMat = new G4CompositeEMDataSet(algo,1.,1.); + + for (G4int i=0; iGetZ(); + G4int nShells = NumberOfComponents(Z); + energies = new G4DataVector; + cs = new G4DataVector; + G4double density = nAtomsPerVolume[i]; + + for (G4int bin=0; binpush_back(e); + G4double value = 0.0; + + if(e > tcut) { + for (G4int n=0; nProbability(Z, tcut, e, e, n); + value += cross * p * density; + /* + G4cout << "G4eIonisationCrossSectionHandler: e= " << e + << " n= " << n + << " cross= " << cross + << " p= " << p + << " value= " << value + << G4endl; + */ + } + } + cs->push_back(value); + } + G4VDataSetAlgorithm* algo = interp->Clone(); + G4VEMDataSet* elSet = new G4EMDataSet(i,energies,cs,algo,1.,1.); + setForMat->AddComponent(elSet); + } + set->push_back(setForMat); + } + + return set; +} diff --git a/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc b/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc new file mode 100644 index 0000000000..5b8c86817a --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4eIonisationParameters.cc @@ -0,0 +1,383 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4eIonisationParameters.cc,v 1.17 2001/11/30 00:52:52 pia Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) +// +// History: +// ----------- +// 31 Jul 2001 MGP Created, with dummy implementation +// 12.09.01 V.Ivanchenko Add param and interpolation of parameters +// 04.10.01 V.Ivanchenko Add BindingEnergy method +// 25.10.01 MGP Many bug fixes, mostly related to the +// management of pointers +// 29.11.01 V.Ivanchenko New parametrisation + Excitation +// +// ------------------------------------------------------------------- + +#include "G4eIonisationParameters.hh" +#include "G4VEMDataSet.hh" +#include "G4ShellEMDataSet.hh" +#include "G4EMDataSet.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4LogLogInterpolation.hh" +#include "G4Material.hh" +#include "G4DataVector.hh" +#include "g4std/fstream" +#include "g4std/strstream" + + +G4eIonisationParameters:: G4eIonisationParameters(G4int minZ, G4int maxZ) + : zMin(minZ), zMax(maxZ), + length(7) +{ + LoadData(); +} + + +G4eIonisationParameters::~G4eIonisationParameters() +{ + // Reset the map of data sets: remove the data sets from the map + G4std::map >::iterator pos; + + for (pos = param.begin(); pos != param.end(); ++pos) + { + G4VEMDataSet* dataSet = (*pos).second; + delete dataSet; + } + + for (pos = excit.begin(); pos != excit.end(); ++pos) + { + G4VEMDataSet* dataSet = (*pos).second; + delete dataSet; + } + + activeZ.clear(); +} + + +G4double G4eIonisationParameters::Parameter(G4int Z, G4int shellIndex, + G4int parameterIndex, + G4double e) const +{ + G4double value = 0.; + G4int id = Z*20 + parameterIndex; + G4std::map >::const_iterator pos; + + pos = param.find(id); + if (pos!= param.end()) { + G4VEMDataSet* dataSet = (*pos).second; + G4int nShells = dataSet->NumberOfComponents(); + + if(shellIndex < nShells) { + const G4VEMDataSet* component = dataSet->GetComponent(shellIndex); + const G4DataVector ener = component->GetEnergies(0); + G4double ee = G4std::max(ener.front(),G4std::min(ener.back(),e)); + value = component->FindValue(ee); + } else { + G4cout << "WARNING: G4IonisationParameters::FindParameter " + << "has no parameters for shell= " << shellIndex + << "; Z= " << Z + << G4endl; + } + } else { + G4cout << "WARNING: G4IonisationParameters::Parameter " + << "did not find ID = " + << shellIndex << G4endl; + } + + return value; +} + +G4double G4eIonisationParameters::Excitation(G4int Z, G4double e) const +{ + G4double value = 0.; + G4std::map >::const_iterator pos; + + pos = excit.find(Z); + if (pos!= excit.end()) { + G4VEMDataSet* dataSet = (*pos).second; + + const G4DataVector ener = dataSet->GetEnergies(0); + G4double ee = G4std::max(ener.front(),G4std::min(ener.back(),e)); + value = dataSet->FindValue(ee); + } else { + G4cout << "WARNING: G4IonisationParameters::Excitation " + << "did not find ID = " + << Z << G4endl; + } + + return value; +} + + +void G4eIonisationParameters::LoadData() +{ + // --------------------------------------- + // Please document what are the parameters + // --------------------------------------- + + // define active elements + + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + if (materialTable == 0) + G4Exception("G4eIonisationParameters: no MaterialTable found)"); + + G4int nMaterials = G4Material::GetNumberOfMaterials(); + + for (G4int m=0; mGetElementVector(); + const size_t nElements = material->GetNumberOfElements(); + + for (size_t iEl=0; iElGetZ(); + if (!(activeZ.contains(Z))) { + activeZ.push_back(Z); + } + } + } + + char* path = getenv("G4LEDATA"); + if (!path) + { + G4String excep = "G4eIonisationParameters - G4LEDATA environment variable not set"; + G4Exception(excep); + } + + G4String pathString(path); + pathString += "/ioni/io-sp-"; + + G4double energy, sum; + + size_t nZ = activeZ.size(); + + for (size_t i=0; iis_open()) ) { + G4String excep = "G4IonisationParameters - data file: " + + name + " not found"; + G4Exception(excep); + } + + // - MGP - Please add some documentation about the parameters read + // The file is organized into...: + // 1st column is the energy + // The file terminates with the pattern: -1 -1 + + G4std::vector p; + for (size_t k=0; k a; + for (size_t j=0; j> energy >> sum; + if (energy == -2) break; + + if (energy > -1) { + e.push_back(energy); + a[0]->push_back(sum); + for (size_t j=0; j> qRead; + a[j + 1]->push_back(qRead); + } + + } else { + + // End of set for a shell, fill the map + for (size_t k=0; kpush_back(e[s]); + } + G4VEMDataSet* set = new G4EMDataSet(shell,eVector,a[k],interp,1.,1.); + + p[k]->AddComponent(set); + } + + // clear vectors + for (size_t j2=0; j2 -2); + + file.close(); + + for (size_t kk=0; kkis_open()) ) { + G4String excep = G4String("G4eIonisationParameters: cannot open file ") + + name_a; + G4Exception(excep); + } + if (! (lsdp_b->is_open()) ) { + G4String excep = G4String("G4eIonisationParameters: cannot open file ") + + name_b; + G4Exception(excep); + } + + // The file is organized into two columns: + // 1st column is the energy + // 2nd column is the corresponding value + // The file terminates with the pattern: -1 -1 + // -2 -2 + + G4double ener, ener1, sig, sig1; + G4int z = 0; + + G4DataVector e; + e.clear(); + G4DataVector d; + d.clear(); + + do { + file_a >> ener >> sig; + file_b >> ener1 >> sig1; + if(ener != ener1) { + G4cout << "G4eIonisationParameters: problem in excitation data " + << "ener= " << ener + << " ener1= " << ener1 + << G4endl; + } + // End of file + if (ener == -2) { + break; + + // End of next element + } else if (ener == -1) { + + z++; + G4double Z = (G4double)z; + + // fill map if Z is used + if (activeZ.contains(Z)) { + + G4VDataSetAlgorithm* inter = new G4LogLogInterpolation(); + G4DataVector* eVector = new G4DataVector; + G4DataVector* dVector = new G4DataVector; + size_t eSize = e.size(); + for (size_t s=0; spush_back(e[s]); + dVector->push_back(d[s]); + } + G4VEMDataSet* set = new G4EMDataSet(z,eVector,dVector,inter,1.,1.); + excit[z] = set; + } + e.clear(); + d.clear(); + + } else { + + e.push_back(ener); + d.push_back(sig1*sig*barn*MeV); + } + } while (ener != -2); + + file_a.close(); + +} + + +void G4eIonisationParameters::PrintData() const +{ + G4cout << G4endl; + G4cout << "===== G4eIonisationParameters =====" << G4endl; + G4cout << G4endl; + + size_t nZ = activeZ.size(); + G4std::map >::const_iterator pos; + + for (size_t i=0; iNumberOfComponents(); + + for (size_t k=0; kGetComponent(k); + comp->PrintData(); + } + } + } + } + G4cout << "====================================" << G4endl; +} + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc b/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc new file mode 100644 index 0000000000..94aba3f002 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4eIonisationSpectrum.cc @@ -0,0 +1,387 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// $Id: G4eIonisationSpectrum.cc,v 1.12 2001/12/04 11:34:16 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4eIonisationSpectrum +// +// Author: V.Ivanchenko (Vladimir.Ivanchenko@cern.ch) +// +// Creation date: 29 September 2001 +// +// Modifications: +// 10.10.2001 MGP Revision to improve code quality and +// consistency with design +// 02.11.2001 VI Optimize sampling of energy +// 29.11.2001 VI New parametrisation +// +// ------------------------------------------------------------------- +// + +#include "G4eIonisationSpectrum.hh" +#include "G4AtomicTransitionManager.hh" +#include "G4AtomicShell.hh" +#include "G4eIonisationParameters.hh" +#include "G4DataVector.hh" +#include "Randomize.hh" + + +G4eIonisationSpectrum::G4eIonisationSpectrum():G4VEnergySpectrum(), + lowestE(0.1*eV), + verbose(0) +{ + theParam = new G4eIonisationParameters(); +} + + +G4eIonisationSpectrum::~G4eIonisationSpectrum() +{ + delete theParam; +} + + +G4double G4eIonisationSpectrum::Probability(G4int Z, + G4double tMin, + G4double tMax, + G4double e, + G4int shell, + const G4ParticleDefinition* part) const +{ + // Please comment what Probability does and what are the three + // functions mentioned below + // Describe the algorithms used + + G4double eMax = MaxEnergyOfSecondaries(e); + G4double t0 = G4std::max(tMin, lowestE); + G4double tm = G4std::min(tMax, eMax); + if(t0 >= tm) return 0.0; + + G4double bindingEnergy = (G4AtomicTransitionManager::Instance())-> + Shell(Z, shell)->BindingEnergy(); + + G4double x1 = G4std::min(0.5,(t0 + bindingEnergy)/(e + bindingEnergy)); + G4double x2 = G4std::min(0.5,(tm + bindingEnergy)/(e + bindingEnergy)); + + if(verbose > 1) { + G4cout << "G4eIonisationSpectrum::Probability: Z= " << Z + << "; shell= " << shell + << "; E(keV)= " << e/keV + << "; x1= " << x1 + << "; x2= " << x2 + << G4endl; + } + + G4int iMax = 7; + G4DataVector p; + + // Access parameters + for (G4int i=0; iParameter(Z, shell, i, e)); + } + + G4double g = (e + bindingEnergy)/electron_mass_c2 + 1.; + p.push_back((2.0*g - 1.0)/(g*g)); + + G4double val = IntSpectrum(x1, x2, p); + G4double x0 = (lowestE + bindingEnergy)/(e + bindingEnergy); + G4double nor = IntSpectrum(x0, 0.5, p); + + if(verbose > 1) { + G4cout << "tcut= " << tMin + << "; tMax= " << tMax + << "; x0= " << x0 + << "; x1= " << x1 + << "; x2= " << x2 + << "; val= " << val + << "; nor= " << nor + << "; sum= " << p[0] + << "; a= " << p[1] + << "; b= " << p[2] + << "; c= " << p[3] + << G4endl; + } + + p.clear(); + + if(nor > 0.0) val /= nor; + else val = 0.0; + if(val < 0.0) val = 0.0; + + return val; +} + + +G4double G4eIonisationSpectrum::AverageEnergy(G4int Z, + G4double tMin, + G4double tMax, + G4double e, + G4int shell, + const G4ParticleDefinition* part) const +{ + // Please comment what AverageEnergy does and what are the three + // functions mentioned below + // Describe the algorithms used + + G4double eMax = MaxEnergyOfSecondaries(e); + G4double t0 = G4std::max(tMin, lowestE); + G4double tm = G4std::min(tMax, eMax); + if(t0 >= tm) return 0.0; + + G4double bindingEnergy = (G4AtomicTransitionManager::Instance())-> + Shell(Z, shell)->BindingEnergy(); + + G4double x1 = G4std::min(0.5,(t0 + bindingEnergy)/(e + bindingEnergy)); + G4double x2 = G4std::min(0.5,(tm + bindingEnergy)/(e + bindingEnergy)); + + if(verbose > 1) { + G4cout << "G4eIonisationSpectrum::AverageEnergy: Z= " << Z + << "; shell= " << shell + << "; E(keV)= " << e/keV + << "; bindingE(keV)= " << bindingEnergy/keV + << "; x1= " << x1 + << "; x2= " << x2 + << G4endl; + } + + G4int iMax = 7; + G4DataVector p; + + // Access parameters + for (G4int i=0; iParameter(Z, shell, i, e)); + } + + G4double g = (e + bindingEnergy)/electron_mass_c2 + 1.; + p.push_back((2.0*g - 1.0)/(g*g)); + + G4double val = AverageValue(x1, x2, p); + G4double x0 = (lowestE + bindingEnergy)/(e + bindingEnergy); + G4double nor = IntSpectrum(x0, 0.5, p); + val *= (e + bindingEnergy); + + if(verbose > 1) { + G4cout << "tcut(MeV)= " << tMin/MeV + << "; tMax(MeV)= " << tMax/MeV + << "; x0= " << x0 + << "; x1= " << x1 + << "; x2= " << x2 + << "; val= " << val + << "; nor= " << nor + << "; sum= " << p[0] + << "; a= " << p[1] + << "; b= " << p[2] + << "; c= " << p[3] + << G4endl; + } + + p.clear(); + + if(nor > 0.0) val /= nor; + else val = 0.0; + if(val < 0.0) val = 0.0; + + return val; +} + + +G4double G4eIonisationSpectrum::SampleEnergy(G4int Z, + G4double tMin, + G4double tMax, + G4double e, + G4int shell, + const G4ParticleDefinition* part) const +{ + // Please comment what SampleEnergy does + G4double tDelta = 0.0; + G4double t0 = G4std::max(tMin, lowestE); + G4double tm = G4std::min(tMax, MaxEnergyOfSecondaries(e)); + if(t0 > tm) return tDelta; + + G4double bindingEnergy = (G4AtomicTransitionManager::Instance())-> + Shell(Z, shell)->BindingEnergy(); + + G4double x1 = G4std::min(0.5,(t0 + bindingEnergy)/(e + bindingEnergy)); + G4double x2 = G4std::min(0.5,(tm + bindingEnergy)/(e + bindingEnergy)); + if(x1 >= x2) return tDelta; + + if(verbose > 1) { + G4cout << "G4eIonisationSpectrum::SampleEnergy: Z= " << Z + << "; shell= " << shell + << "; E(keV)= " << e/keV + << G4endl; + } + + // Access parameters + G4int iMax = 7; + G4DataVector p; + + // Access parameters + for (G4int i=0; iParameter(Z, shell, i, e)); + } + + G4double g = (e + bindingEnergy)/electron_mass_c2 + 1.; + p.push_back((2.0*g - 1.0)/(g*g)); + + + G4double aria1 = 0.0; + G4double a1 = G4std::min(x1,p[6]); + G4double a2 = G4std::min(x2,p[6]); + if(a1 < a2) aria1 = IntSpectrum(a1, a2, p); + G4double aria2 = 0.0; + G4double a3 = G4std::max(x1,p[6]); + G4double a4 = G4std::max(x2,p[6]); + if(a3 < a4) aria2 = IntSpectrum(a3, a4, p); + + G4double aria = (aria1 + aria2)*G4UniformRand(); + G4double amaj, fun, q, x; + + //======= First aria to sample ===== + + if(aria <= aria1) { + + amaj = p[4]; + a1 = 1./a1; + a2 = 1./a2; + + //======= Second aria to sample ===== + + } else { + + amaj = p[5]; + a1 = 1./a3; + a2 = 1./a4; + } + amaj *= 1.25; + + do { + + x = 1./(a2 + G4UniformRand()*(a1 - a2)); + fun = Function(x, p); + + if(fun > amaj) { + G4cout << "WARNING in G4eIonisationSpectrum::SampleEnergy:" + << " Majoranta " << amaj + << " < " << fun + << G4endl; + } + + q = amaj*G4UniformRand(); + + } while (q >= fun); + + p.clear(); + + tDelta = x*(e + bindingEnergy) - bindingEnergy; + + if(verbose > 1) { + G4cout << "tcut(MeV)= " << tMin/MeV + << "; tMax(MeV)= " << tMax/MeV + << "; x1= " << x1 + << "; x2= " << x2 + << "; a1= " << a1 + << "; a2= " << a2 + << "; x= " << x + << "; be= " << bindingEnergy + << "; e= " << e + << "; tDelta= " << tDelta + << G4endl; + } + + + return tDelta; +} + + +G4double G4eIonisationSpectrum::IntSpectrum(G4double xMin, + G4double xMax, + const G4DataVector& p) const +{ + // Please comment what IntSpectrum does + G4double x1 = 1./xMin; + G4double x2 = 1./xMax; + G4double x = x1 - x2 - p[7]*log(xMax/xMin) + (1. - p[7])*(xMax - xMin) + + 1./(1. - xMax) - 1./(1. - xMin) + + p[7]*log((1. - xMax)/(1. - xMin)) + + 0.5*p[1]*p[3]*(x1*x1 - x2*x2); + + if(x < 0.0) x = 0.0; + return x; +} + + +G4double G4eIonisationSpectrum::AverageValue(G4double xMin, + G4double xMax, + const G4DataVector& p) const +{ + + // G4double x1 = 1.; + // G4double x2 = 1.; + G4double x = log(xMax/xMin) + + 0.5*(1. - p[7])*(xMax*xMax - xMin*xMin) + + 1./(1. - xMax) - 1./(1. - xMin) + + (1. + p[7])*log((1. - xMax)/(1. - xMin)) + + p[1]*p[3]*(1./xMin - 1./xMax); + + if(x < 0.0) x = 0.0; + return x; +} + + +G4double G4eIonisationSpectrum::Function(G4double x, + const G4DataVector& p) const +{ + // Please comment what Function does + + + // G4double x1 = 1.0; + G4double f = 1.0 - p[7]*x + x*x*(1.0 - p[7] + + (1.0/(1.0 - x) - p[7])/(1.0 - x) ) + + p[1]*p[3]/x; + + if(f < 0.0) f = 0.0; + return f; +} + +G4double G4eIonisationSpectrum::Excitation(G4int Z, G4double e) const +{ + return theParam->Excitation(Z, e); +} + +void G4eIonisationSpectrum::PrintData() const +{ + theParam->PrintData(); +} + + + + + diff --git a/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc index 869a209170..716f7125b8 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4eLowEnergyLoss.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4eLowEnergyLoss.cc,v 1.9.2.2 2001/06/28 20:19:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eLowEnergyLoss.cc,v 1.23 2001/11/23 11:45:29 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ----------------------------------------------------------- // GEANT 4 class implementation file @@ -32,7 +32,6 @@ // ---------- G4eLowEnergyLoss physics process ----------- // by Laszlo Urban, 20 March 1997 // ************************************************************** -// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. // It calculates the energy loss of e+/e-. // -------------------------------------------------------------- // @@ -48,7 +47,14 @@ // 10/02/00 modifications , new e.m. structure, L.Urban // 11/04/00: Bug fix in dE/dx fluctuation simulation, Veronique Lefebure // 19-09-00 change of fluctuation sampling V.Ivanchenko -// 20/09/00 update fluctuations V.Ivanchenko +// 20/09/00 update fluctuations V.Ivanchenko +// 18/10/01 add fluorescence AlongStepDoIt V.Ivanchenko +// 18/10/01 Revision to improve code quality and consistency with design, MGP +// 19/10/01 update according to new design, V.Ivanchenko +// 24/10/01 MGP - Protection against negative energy loss in AlongStepDoIt +// 26/10/01 VI Clean up access to deexcitation +// 23/11/01 VI Move static member-functions from header to source +// // -------------------------------------------------------------- #include "G4eLowEnergyLoss.hh" @@ -137,6 +143,55 @@ G4eLowEnergyLoss::~G4eLowEnergyLoss() } } +void G4eLowEnergyLoss::SetNbOfProcesses(G4int nb) +{ + NbOfProcesses=nb; +} + +void G4eLowEnergyLoss::PlusNbOfProcesses() +{ + NbOfProcesses++; +} + +void G4eLowEnergyLoss::MinusNbOfProcesses() +{ + NbOfProcesses--; +} + +G4int G4eLowEnergyLoss::GetNbOfProcesses() +{ + return NbOfProcesses; +} + +void G4eLowEnergyLoss::SetLowerBoundEloss(G4double val) +{ + LowerBoundEloss=val; +} + +void G4eLowEnergyLoss::SetUpperBoundEloss(G4double val) +{ + UpperBoundEloss=val; +} + +void G4eLowEnergyLoss::SetNbinEloss(G4int nb) +{ + NbinEloss=nb; +} + +G4double G4eLowEnergyLoss::GetLowerBoundEloss() +{ + return LowerBoundEloss; +} + +G4double G4eLowEnergyLoss::GetUpperBoundEloss() +{ + return UpperBoundEloss; +} + +G4int G4eLowEnergyLoss::GetNbinEloss() +{ + return NbinEloss; +} // void G4eLowEnergyLoss::BuildDEDXTable( @@ -154,8 +209,7 @@ void G4eLowEnergyLoss::BuildDEDXTable( // different processes. // - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); // create table for the total energy loss @@ -334,15 +388,13 @@ G4VParticleChange* G4eLowEnergyLoss::AlongStepDoIt( const G4Track& trackData, // get particle and material pointers from trackData const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); G4double E = aParticle->GetKineticEnergy() ; - - // G4cout << "MGP -- Along eInit " << E/keV << " keV " << G4endl; G4Material* aMaterial = trackData.GetMaterial(); - // G4int index = aMaterial->GetIndex(); G4double Step = stepData.GetStepLength(); - fParticleChange.Initialize(trackData); + aParticleChange.Initialize(trackData); + //fParticleChange.Initialize(trackData); G4double MeanLoss, finalT; @@ -386,18 +438,64 @@ G4VParticleChange* G4eLowEnergyLoss::AlongStepDoIt( const G4Track& trackData, if (finalT <= 0. ) { finalT = 0.; - if (Charge < 0.) fParticleChange.SetStatusChange(fStopAndKill); - else fParticleChange.SetStatusChange(fStopButAlive); + if (Charge < 0.) aParticleChange.SetStatusChange(fStopAndKill); + else aParticleChange.SetStatusChange(fStopButAlive); } - // MGP debug - // G4cout << "MGP AlongStepDoIt finalT = " << finalT/keV << " keV" << G4endl; + G4double edep = E - finalT; + + aParticleChange.SetEnergyChange(finalT); + + // Deexcitation of ionised atoms + G4std::vector* deexcitationProducts = + DeexciteAtom(aMaterial,E,edep); - fParticleChange.SetEnergyChange(finalT); - fParticleChange.SetLocalEnergyDeposit(E-finalT); + size_t nSecondaries = deexcitationProducts->size(); + aParticleChange.SetNumberOfSecondaries(nSecondaries); + + if (nSecondaries > 0) { - return &fParticleChange; + const G4StepPoint* preStep = stepData.GetPreStepPoint(); + const G4StepPoint* postStep = stepData.GetPostStepPoint(); + G4ThreeVector r = preStep->GetPosition(); + G4ThreeVector deltaR = postStep->GetPosition(); + deltaR -= r; + G4double t = preStep->GetGlobalTime(); + G4double deltaT = postStep->GetGlobalTime(); + deltaT -= t; + G4double time, q; + G4ThreeVector position; + + for (size_t i=0; iGetKineticEnergy(); + edep -= eSecondary; + if (edep > 0.) + { + q = G4UniformRand(); + time = deltaT*q + t; + position = deltaR*q; + position += r; + G4Track* newTrack = new G4Track(part, time, position); + aParticleChange.AddSecondary(newTrack); + } + else + { + edep += eSecondary; + delete part; + part = 0; + } + } + } + } + delete deexcitationProducts; + + aParticleChange.SetLocalEnergyDeposit(edep); + + return &aParticleChange; } // diff --git a/source/processes/electromagnetic/lowenergy/src/G4hIonEffChargeSquare.cc b/source/processes/electromagnetic/lowenergy/src/G4hIonEffChargeSquare.cc index dfc0dc047e..d79d2dd023 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hIonEffChargeSquare.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hIonEffChargeSquare.cc @@ -34,6 +34,7 @@ // // Modifications: // 20/07/2000 V.Ivanchenko First implementation +// 18/06/2001 V.Ivanchenko Continuation for eff.charge (small change of y) // // Class Description: // @@ -210,7 +211,7 @@ G4double G4hIonEffChargeSquare::IonEffChargeSquare( } else { for (G4int iel=0; ielGetZ() ; const G4double weight = theAtomicNumDensityVector[iel] ; norm += weight ; @@ -254,7 +255,7 @@ G4double G4hIonEffChargeSquare::IonEffChargeSquare( // Slower than Fermi velocity } else { - y = 0.75 * vF * (1.0 + 2.0*v1*v1/3.0 + v1*v1*v1*v1/15.0) / (z13*z13) ; + y = 0.6923 * vF * (1.0 + 2.0*v1*v1/3.0 + v1*v1*v1*v1/15.0) / (z13*z13) ; } G4double y3 = pow(y, 0.3) ; diff --git a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc index 8d555b3f0e..d4dde49a6c 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyIonisation.cc @@ -65,6 +65,10 @@ // 10 May 2001 V.Ivanchenko Clean up againist Linux compilation with -Wall // 23 May 2001 V.Ivanchenko Minor fix in PostStepDoIt // 07 June 2001 V.Ivanchenko Clean up AntiProtonDEDX + add print out +// 18 June 2001 V.Ivanchenko Cleanup print out +// 18 Oct. 2001 V.Ivanchenko Add fluorescence +// 30 Oct. 2001 V.Ivanchenko Add minGammaEnergy and minElectronEnergy +// 07 Dec 2001 V.Ivanchenko Add SetFluorescence method // ----------------------------------------------------------------------- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -80,6 +84,15 @@ #include "G4Material.hh" #include "G4DynamicParticle.hh" #include "G4ParticleDefinition.hh" +#include "G4AtomicDeexcitation.hh" +#include "G4ShellVacancy.hh" +#include "G4hShellCrossSection.hh" +#include "G4VEMDataSet.hh" +#include "G4EMDataSet.hh" +#include "G4CompositeEMDataSet.hh" +#include "G4Gamma.hh" +#include "G4LogLogInterpolation.hh" +#include "G4SemiLogInterpolation.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -98,7 +111,10 @@ G4hLowEnergyIonisation::G4hLowEnergyIonisation(const G4String& processName) nStopping(true), theBarkas(true), theMeanFreePathTable(0), - paramStepLimit (0.005) + paramStepLimit (0.005), + shellVacancy(0), + shellCS(0), + theFluo(true) { InitializeMe(); } @@ -110,11 +126,15 @@ void G4hLowEnergyIonisation::InitializeMe() LowestKineticEnergy = 10.0*eV ; HighestKineticEnergy = 100.0*TeV ; MinKineticEnergy = 10.0*eV ; - TotBin = 200 ; + TotBin = 200 ; protonLowEnergy = 1.*keV ; protonHighEnergy = 2.*MeV ; antiProtonLowEnergy = 1.*keV ; antiProtonHighEnergy = 2.*MeV ; + minGammaEnergy = 25.*keV; + minElectronEnergy = 25.*keV; + verboseLevel = 0; + shellCS = new G4hShellCrossSection(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -132,6 +152,16 @@ G4hLowEnergyIonisation::~G4hLowEnergyIonisation() if(theIonEffChargeModel)delete theIonEffChargeModel; if(theIonChuFluctuationModel)delete theIonChuFluctuationModel; if(theIonYangFluctuationModel)delete theIonYangFluctuationModel; + if(shellVacancy) delete shellVacancy; + if(shellCS) delete shellCS; + cutForDelta.clear(); + G4int length = zFluoDataVector.size(); + if(length) { + for(G4int i=0; iGetCutsInEnergy() ; - // Define models for parametrisation of electronic energy losses theBetheBlochModel = new G4hBetheBlochModel("Bethe-Bloch") ; theProtonModel = new G4hParametrisedLossModel(theProtonTable) ; @@ -197,15 +223,55 @@ void G4hLowEnergyIonisation::BuildPhysicsTable( G4cout << "G4hLowEnergyIonisation::BuildPhysicsTable for " << aParticleType.GetParticleName() << G4endl; } + + InitializeParametrisation() ; G4Proton* theProton = G4Proton::Proton(); G4AntiProton* theAntiProton = G4AntiProton::AntiProton(); - G4Electron* theElectron = G4Electron::Electron(); charge = aParticleType.GetPDGCharge()/eplus ; chargeSquare = charge*charge ; - G4double electronCutInRange = theElectron->GetCuts(); + // ---- MGP ---- workaround for the deprecated "cuts per material" + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + const G4Material* material = (*theMaterialTable)[0]; + G4double electronCutInRange = G4Electron::Electron()->GetEnergyThreshold(material); + // was = G4Electron::Electron()->GetCuts(); + // ---- MGP ---- + + // Define cuts + + // create table + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); + + cutForDelta.clear(); + cutForGamma.clear(); + + for (G4int j=0; jGetEnergyThreshold(material); + if(tCut > HighestKineticEnergy) tCut = HighestKineticEnergy; + + G4double excEnergy = material->GetIonisation()->GetMeanExcitationEnergy(); + + tCut = G4std::max(tCut,excEnergy); + cutForDelta.push_back(tCut); + + // the cut cannot be below lowest limit + tCut = G4Gamma::Gamma()->GetEnergyThreshold(material); + if(tCut > HighestKineticEnergy) tCut = HighestKineticEnergy; + tCut = G4std::max(tCut,minGammaEnergy); + cutForGamma.push_back(tCut); + } + + if(verboseLevel > 0) { + G4cout << "Cuts are defined " << G4endl; + } + if(0.0 < charge) { @@ -235,6 +301,7 @@ void G4hLowEnergyIonisation::BuildPhysicsTable( } BuildLambdaTable(aParticleType) ; + BuildDataForFluorescence(aParticleType); if(verboseLevel > 0) { G4cout << "G4hLowEnergyIonisation::BuildPhysicsTable: " @@ -276,7 +343,7 @@ void G4hLowEnergyIonisation::BuildLossTable( const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); // create table - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if ( theLossTable) { theLossTable->clearAndDestroy(); @@ -344,12 +411,140 @@ void G4hLowEnergyIonisation::BuildLossTable( } // now put the loss into the vector + if(verboseLevel > 1) { + G4cout << "E(MeV)= " << lowEdgeEnergy/MeV + << " dE/dx(MeV/mm)= " << ionloss*mm/MeV + << " in " << material->GetName() << G4endl; + } aVector->PutValue(i,ionloss) ; } // Insert vector for this material into the table theLossTable->insert(aVector) ; } +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyIonisation::BuildDataForFluorescence( + const G4ParticleDefinition& aParticleType) +{ + + if(verboseLevel > 1) { + G4cout << "G4hLowEnergyIonisation::BuildDataForFluorescence for " + << aParticleType.GetParticleName() << " is started" << G4endl; + } + + // fill data for fluorescence + + G4double mass = aParticleType.GetPDGMass(); + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + + // create table + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); + + if (shellVacancy != 0) delete shellVacancy; + shellVacancy = new G4ShellVacancy(); + G4DataVector* ksi = 0; + G4DataVector* ksi1 = 0; + G4DataVector* energy = 0; + G4DataVector* energy1 = 0; + size_t binForFluo = TotBin/10; + G4int length = zFluoDataVector.size(); + if(length > 0) { + for(G4int i=0; iGetElementVector(); + size_t NumberOfElements = material->GetNumberOfElements() ; + const G4double* theAtomicNumDensityVector = + material->GetAtomicNumDensityVector(); + G4VDataSetAlgorithm* interp = new G4SemiLogInterpolation(); + G4VEMDataSet* xsis = new G4CompositeEMDataSet(interp, 1., 1.); + G4VDataSetAlgorithm* interp1 = new G4SemiLogInterpolation(); + G4VEMDataSet* xsis1 = new G4CompositeEMDataSet(interp1, 1., 1.); + + G4double tCut = cutForDelta[j]; + G4double elDensity = 1.; + + for (size_t iel=0; ielGetZ()); + energy = new G4DataVector(); + ksi = new G4DataVector(); + energy1= new G4DataVector(); + ksi1 = new G4DataVector(); + //if(NumberOfElements > 1) + elDensity = theAtomicNumDensityVector[iel]; + + for (size_t j = 0; jGetLowEdgeEnergy(j); + G4double gamma = tkin/mass + 1.; + G4double r = electron_mass_c2/mass; + G4double tmax = 2.*mass*r*(gamma*gamma - 1.)/(1. + 2.*gamma*r + r*r); + G4double cross = 0.; + G4double cross1 = 0.; + G4double eAverage= 0.; + G4int nShells = transitionManager->NumberOfShells(Z); + G4double tmin = G4std::min(tCut,tmax); + + for (G4int n=0; nShell(Z, n)->BindingEnergy(); + eAverage += elDensity*log(tmin/bindingEnergy + 1.); + cross += elDensity*tmin/((bindingEnergy + tmin)*bindingEnergy); + cross1 += elDensity*(tmax - tmin)/ + ((tmax + bindingEnergy)*(tmin + bindingEnergy)); + } + + energy1->push_back(tkin); + ksi1->push_back(cross1); + + if(eAverage > 0.) cross /= eAverage; + else cross = 0.; + + energy->push_back(tkin); + ksi->push_back(cross); + } + G4VDataSetAlgorithm* algo = interp->Clone(); + G4VEMDataSet* set = new G4EMDataSet(Z,energy,ksi,algo,1.,1.); + xsis->AddComponent(set); + G4VDataSetAlgorithm* algo1 = interp1->Clone(); + G4VEMDataSet* set1 = new G4EMDataSet(Z,energy1,ksi1,algo1,1.,1.); + xsis1->AddComponent(set1); + } + if(verboseLevel > 1) { + G4cout << "### Shell inverse cross sections for " + << material->GetName() << G4endl; + xsis->PrintData(); + G4cout << "### Atom cross sections for " + << material->GetName() << G4endl; + xsis1->PrintData(); + } + shellVacancy->AddXsiTable(xsis); + zFluoDataVector.push_back(xsis1); + } + delete bVector; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -361,13 +556,19 @@ void G4hLowEnergyIonisation::BuildLambdaTable( // Build mean free path tables for the delta ray production process // tables are built for MATERIALS + if(verboseLevel > 1) { + G4cout << "G4hLowEnergyIonisation::BuildLambdaTable for " + << aParticleType.GetParticleName() << " is started" << G4endl; + } + + G4double lowEdgeEnergy, value; const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); charge = aParticleType.GetPDGCharge()/eplus ; chargeSquare = charge*charge ; //create table - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if (theMeanFreePathTable) { theMeanFreePathTable->clearAndDestroy(); @@ -375,11 +576,7 @@ void G4hLowEnergyIonisation::BuildLambdaTable( } theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); - - // get electron and particle cuts in kinetic energy - - // deltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - + // loop for materials for (G4int J=0 ; J < numOfMaterials; J++) { @@ -397,15 +594,13 @@ void G4hLowEnergyIonisation::BuildLambdaTable( const G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector(); const G4int NumberOfElements = material->GetNumberOfElements() ; - G4double excEnergy = material->GetIonisation()->GetMeanExcitationEnergy(); // get the electron kinetic energy cut for the actual material, // it will be used in ComputeMicroscopicCrossSection // ( it is the SAME for ALL the ELEMENTS in THIS MATERIAL ) // ------------------------------------------------------ - // Cut in Delta energy is limited by exitation energy - G4double deltaCut = G4std::max(excEnergy,deltaCutInKineticEnergy[J]) ; + G4double deltaCut = cutForDelta[J]; for ( G4int i = 0 ; i < TotBin ; i++ ) { lowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; @@ -419,7 +614,7 @@ void G4hLowEnergyIonisation::BuildLambdaTable( ComputeMicroscopicCrossSection( aParticleType, lowEdgeEnergy, - (*theElementVector)(iel)->GetZ(), + (*theElementVector)[iel]->GetZ(), deltaCut ) ; } @@ -429,9 +624,10 @@ void G4hLowEnergyIonisation::BuildLambdaTable( aVector->PutValue(i, value) ; } - + theMeanFreePathTable->insert(aVector); } + } @@ -492,6 +688,33 @@ G4double G4hLowEnergyIonisation::ComputeMicroscopicCrossSection( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +G4double G4hLowEnergyIonisation::GetMeanFreePath(const G4Track& trackData, + G4double previousStepSize, + enum G4ForceCondition* condition) +{ + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle() ; + G4Material* aMaterial = trackData.GetMaterial() ; + G4double meanFreePath; + G4bool isOutRange ; + + *condition = NotForced ; + + G4double kineticEnergy = aParticle->GetKineticEnergy() ; + + if(kineticEnergy < LowestKineticEnergy) meanFreePath = DBL_MAX; + + else { + if(kineticEnergy > HighestKineticEnergy) + kineticEnergy = HighestKineticEnergy ; + meanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> + GetValue(kineticEnergy,isOutRange) ; + } + + return meanFreePath ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + G4double G4hLowEnergyIonisation::GetConstraints( const G4DynamicParticle* particle, const G4Material* material) @@ -569,8 +792,9 @@ G4double G4hLowEnergyIonisation::GetConstraints( // Normal energy } else { - fRangeNow = G4EnergyLossTables::GetRange(theAntiProton, tscaled, material) ; - dx = G4EnergyLossTables::GetRange(theAntiProton, highEnergy, material) ; + fRangeNow = G4EnergyLossTables::GetRange(theAntiProton, tscaled, + material); + dx = G4EnergyLossTables::GetRange(theAntiProton, highEnergy, material); if(tscaled > highEnergy) { fdEdx = G4EnergyLossTables::GetDEDX(theAntiProton, tscaled, material) @@ -578,7 +802,7 @@ G4double G4hLowEnergyIonisation::GetConstraints( // For Bragg's peak dE/dx is recalculated } else { - fdEdx = AntiProtonParametrisedDEDX(material, tscaled) * chargeSquare ; + fdEdx = AntiProtonParametrisedDEDX(material, tscaled) * chargeSquare; } } } @@ -620,6 +844,7 @@ G4VParticleChange* G4hLowEnergyIonisation::AlongStepDoIt( G4double finalT = 0.0 ; aParticleChange.Initialize(trackData) ; + G4Material* material = trackData.GetMaterial() ; // get the actual (true) Step length from stepData @@ -652,9 +877,17 @@ G4VParticleChange* G4hLowEnergyIonisation::AlongStepDoIt( G4double eFinal = kineticEnergy - step*fdEdx - nloss ; if(0.0 < eFinal) { - eloss = (fdEdx + - ProtonParametrisedDEDX(material,eFinal*massRatio)*chargeSquare) - * step * 0.5 ; + + G4double ts = eFinal*massRatio; + G4double fdEdx1 = ProtonParametrisedDEDX(material,ts)*chargeSquare; + + // Correction for positive ions + //if(theBarkas && 1.0 < charge) { + // fdEdx1 += BarkasTerm(material,ts)*(charge -1.0) * chargeSquare ; + // fdEdx1 += BlochTerm(material,ts,chargeSquare) ; + // fdEdx1 -= BlochTerm(material,ts,1.0) ; + // } + eloss = (fdEdx + fdEdx1) * step * 0.5 ; } else { eloss = kineticEnergy - nloss ; } @@ -707,29 +940,84 @@ G4VParticleChange* G4hLowEnergyIonisation::AlongStepDoIt( eloss = step*fdEdx ; } } + + if(eloss < 0.0) eloss = 0.0; - finalT = kineticEnergy - eloss - nloss ; + finalT = kineticEnergy - eloss - nloss; if( EnlossFlucFlag && 0.0 < eloss ) { // now the electron loss with fluctuation eloss = ElectronicLossFluctuation(particle, material, eloss, step) ; - finalT = kineticEnergy - eloss - nloss ; + if(eloss < 0.0) eloss = 0.0; + finalT = kineticEnergy - eloss - nloss; } // stop particle if the kinetic energy <= MinKineticEnergy - if (finalT <= MinKineticEnergy ) - { - finalT = 0.0 ; - if( "proton" == (particle->GetDefinition()->GetParticleName()) ) + if (finalT <= MinKineticEnergy ) { + + finalT = 0.0; + if( "proton" == (particle->GetDefinition()->GetParticleName()) ) aParticleChange.SetStatusChange(fStopAndKill); - else + else aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetEnergyChange( finalT ) ; - aParticleChange.SetLocalEnergyDeposit(kineticEnergy-finalT) ; + } + + aParticleChange.SetEnergyChange( finalT ); + G4double edep = kineticEnergy-finalT; + + // Deexcitation only of ionised atoms + eloss = G4std::min(edep, eloss); + G4double hMass = particle->GetMass(); + G4std::vector* newpart = 0; + G4DynamicParticle* part = 0; + + if(theFluo) newpart = DeexciteAtom(material, kineticEnergy, hMass, eloss); + + if(newpart != 0) { + + size_t nSecondaries = newpart->size(); + aParticleChange.SetNumberOfSecondaries(nSecondaries); + G4Track* newtrack = 0; + const G4StepPoint* preStep = stepData.GetPreStepPoint(); + const G4StepPoint* postStep = stepData.GetPostStepPoint(); + G4ThreeVector r = preStep->GetPosition(); + G4ThreeVector deltaR = postStep->GetPosition(); + deltaR -= r; + G4double t = preStep->GetGlobalTime(); + G4double deltaT = postStep->GetGlobalTime(); + deltaT -= t; + G4double time, q, e; + G4ThreeVector position; + + for(size_t i=0; iGetKineticEnergy(); + if(e <= edep) { + + edep -= e; + q = G4UniformRand(); + time = deltaT*q + t; + position = deltaR*q; + position += r; + newtrack = new G4Track(part, time, position); + aParticleChange.AddSecondary(newtrack); + + } else { + + delete part; + + } + } + } + delete newpart; + } + + aParticleChange.SetLocalEnergyDeposit(edep); return &aParticleChange ; } @@ -755,7 +1043,7 @@ G4double G4hLowEnergyIonisation::ProtonParametrisedDEDX( // Delta rays energy eloss -= DeltaRaysEnergy(material,kineticEnergy,proton_mass_c2) ; - if(verboseLevel > 1) { + if(verboseLevel > 2) { G4cout << "p E(MeV)= " << kineticEnergy/MeV << " dE/dx(MeV/mm)= " << eloss*mm/MeV << " for " << material->GetName() @@ -805,7 +1093,7 @@ G4double G4hLowEnergyIonisation::AntiProtonParametrisedDEDX( // Delta rays energy eloss -= DeltaRaysEnergy(material,kineticEnergy,proton_mass_c2) ; - if(verboseLevel > 0) { + if(verboseLevel > 2) { G4cout << "pbar E(MeV)= " << kineticEnergy/MeV << " dE/dx(MeV/mm)= " << eloss*mm/MeV << " for " << material->GetName() @@ -826,7 +1114,7 @@ G4double G4hLowEnergyIonisation::DeltaRaysEnergy( { G4double dloss = 0.0 ; - G4double deltaCutNow = deltaCutInKineticEnergy[(material->GetIndex())] ; + G4double deltaCutNow = cutForDelta[(material->GetIndex())] ; G4double electronDensity = material->GetElectronDensity(); G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy(); @@ -861,58 +1149,43 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt( { // Units are expressed in GEANT4 internal units. - G4double KineticEnergy,TotalEnergy,TotalMomentum, - betasquare,MaxKineticEnergyTransfer, + G4double KineticEnergy,TotalEnergy,TotalMomentum,betasquare, DeltaKineticEnergy,DeltaTotalMomentum,costheta,sintheta,phi, dirx,diry,dirz,finalKineticEnergy,finalPx,finalPy,finalPz, - x,xc,grej,Psquare,Esquare,summass,rate,finalMomentum ; + x,xc,grej,Psquare,Esquare,rate,finalMomentum ; aParticleChange.Initialize(trackData) ; G4Material* aMaterial = trackData.GetMaterial() ; - G4double Eexc = aMaterial->GetIonisation()->GetMeanExcitationEnergy(); const G4DynamicParticle* aParticle = trackData.GetDynamicParticle() ; + // some kinematics + ParticleMass=aParticle->GetDefinition()->GetPDGMass(); KineticEnergy=aParticle->GetKineticEnergy(); TotalEnergy=KineticEnergy + ParticleMass ; Psquare=KineticEnergy*(TotalEnergy+ParticleMass) ; - Esquare=TotalEnergy*TotalEnergy ; - summass = ParticleMass + electron_mass_c2 ; - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection() ; + Esquare=TotalEnergy*TotalEnergy; + betasquare=Psquare/Esquare; + G4ThreeVector ParticleDirection = aParticle->GetMomentumDirection() ; - // get kinetic energy cut for the electron.... - G4double DeltaCutInKineticEnergyNow = - deltaCutInKineticEnergy[aMaterial->GetIndex()]; - - // some kinematics...................... + G4double gamma= KineticEnergy/ParticleMass + 1.; + G4double r = electron_mass_c2/ParticleMass; + G4double tmax = 2.*ParticleMass*r*(gamma*gamma - 1.)/(1. + 2.*gamma*r + r*r); - betasquare=Psquare/Esquare ; - MaxKineticEnergyTransfer = 2.*electron_mass_c2*Psquare - /(summass*summass+2.*electron_mass_c2*KineticEnergy); - // Validity range for delta electron cross section - G4double DeltaCut = G4std::max(DeltaCutInKineticEnergyNow,Eexc); + G4double DeltaCut = cutForDelta[aMaterial->GetIndex()]; + + // This should not be a case + if(DeltaCut >= tmax) + return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - // sampling kinetic energy of the delta ray - - if( MaxKineticEnergyTransfer <= DeltaCut ) - { - // pathological case (it should not happen , - // there is no change at all)..... + xc = DeltaCut / tmax; + rate = tmax / TotalEnergy; + rate = rate*rate ; + G4double spin = aParticle->GetDefinition()->GetPDGSpin() ; - return &aParticleChange; - //return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - else - { - // normal case ...................................... - xc = DeltaCut / MaxKineticEnergyTransfer ; - rate = MaxKineticEnergyTransfer / TotalEnergy ; - rate = rate*rate ; - G4double spin = aParticle->GetDefinition()->GetPDGSpin() ; - - // sampling follows ... + // sampling follows ... do { x=xc/(1.-(1.-xc)*G4UniformRand()); @@ -929,13 +1202,10 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt( } } while( G4UniformRand() > grej ); - } - DeltaKineticEnergy = x * MaxKineticEnergyTransfer ; - - if(DeltaKineticEnergy <= 0.) - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + DeltaKineticEnergy = x * tmax; + DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + 2. * electron_mass_c2 )) ; TotalMomentum = sqrt(Psquare) ; @@ -950,7 +1220,7 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt( // direction of the delta electron ........ phi = twopi * G4UniformRand() ; - sintheta = sqrt((1.+costheta)*(1.-costheta)); + sintheta = sqrt(1. - costheta*costheta); dirx = sintheta * cos(phi) ; diry = sintheta * sin(phi) ; dirz = costheta ; @@ -968,8 +1238,69 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt( // fill aParticleChange finalKineticEnergy = KineticEnergy - DeltaKineticEnergy ; - G4double Edep = 0 ; + + // Generation of Fluorescence and Auger + size_t nSecondaries = 0; + size_t totalNumber = 1; + G4std::vector* secondaryVector = 0; + G4DynamicParticle* aSecondary = 0; + G4ParticleDefinition* type = 0; + + // Select atom and shell + G4int Z = SelectRandomAtom(aMaterial, KineticEnergy); + G4int shell = shellCS->SelectRandomShell(Z, KineticEnergy, + ParticleMass,DeltaKineticEnergy); + const G4AtomicShell* atomicShell = + (G4AtomicTransitionManager::Instance())->Shell(Z, shell); + G4double bindingEnergy = atomicShell->BindingEnergy(); + + if(verboseLevel > 1) { + G4cout << "PostStep Z= " << Z << " shell= " << shell + << " bindingE(keV)= " << bindingEnergy/keV + << " finalE(keV)= " << finalKineticEnergy/keV + << G4endl; + } + + // Fluorescence data start from element 6 + if (theFluo && Z > 5 && finalKineticEnergy >= bindingEnergy + && (bindingEnergy >= minGammaEnergy + || bindingEnergy >= minElectronEnergy) ) { + + G4int shellId = atomicShell->ShellId(); + secondaryVector = deexcitationManager.GenerateParticles(Z, shellId); + + if (secondaryVector != 0) { + + nSecondaries = secondaryVector->size(); + for (size_t i = 0; iGetKineticEnergy(); + type = aSecondary->GetDefinition(); + if (e < finalKineticEnergy && + ((type == G4Gamma::Gamma() && e > minGammaEnergy ) || + (type == G4Electron::Electron() && e > minElectronEnergy ))) { + + finalKineticEnergy -= e; + totalNumber++; + + } else { + + delete aSecondary; + (*secondaryVector)[i] = 0; + } + } + } + } + } + + // Save delta-electrons + + G4double edep = 0.0; + if (finalKineticEnergy > MinKineticEnergy) { finalPx = TotalMomentum*ParticleDirection.x() @@ -988,23 +1319,191 @@ G4VParticleChange* G4hLowEnergyIonisation::PostStepDoIt( } else { - finalKineticEnergy = 0. ; - Edep = finalKineticEnergy ; + edep = finalKineticEnergy; + finalKineticEnergy = 0.; + aParticleChange.SetMomentumChange(ParticleDirection.x(), + ParticleDirection.y(),ParticleDirection.z()); if (aParticle->GetDefinition()->GetParticleName() == "proton") aParticleChange.SetStatusChange(fStopAndKill); else aParticleChange.SetStatusChange(fStopButAlive); } aParticleChange.SetEnergyChange( finalKineticEnergy ); - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( theDeltaRay ); - aParticleChange.SetLocalEnergyDeposit (Edep); + aParticleChange.SetLocalEnergyDeposit (edep); + aParticleChange.SetNumberOfSecondaries(totalNumber); + aParticleChange.AddSecondary(theDeltaRay); + + // Save Fluorescence and Auger + if (secondaryVector) { + + for (size_t l = 0; l < nSecondaries; l++) { + + aSecondary = (*secondaryVector)[l]; + if(aSecondary) aParticleChange.AddSecondary(aSecondary); + } + delete secondaryVector; + } + return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +G4std::vector* +G4hLowEnergyIonisation::DeexciteAtom(const G4Material* material, + G4double incidentEnergy, + G4double hMass, + G4double eLoss) +{ + + if (verboseLevel > 1) { + G4cout << "DeexciteAtom: cutForPhotons(keV)= " << minGammaEnergy/keV + << " cutForElectrons(keV)= " << minElectronEnergy/keV + << " eLoss(MeV)= " << eLoss + << G4endl; + } + + if(eLoss < minGammaEnergy && eLoss < minElectronEnergy) return 0; + + G4int index = material->GetIndex(); + G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy(); + G4double x = cutForDelta[index]/eexc; + G4double deltaEnergy = eexc*(x + 1)*log(x + 1)/x; + G4AtomicTransitionManager* transitionManager = + G4AtomicTransitionManager::Instance(); + + size_t nElements = material->GetNumberOfElements(); + const G4ElementVector* theElementVector = material->GetElementVector(); + G4bool stop = true; + + for (size_t j=0; jGetZ()); + G4double maxE = transitionManager->Shell(Z, 0)->BindingEnergy(); + + if (Z>5 && (maxE>minGammaEnergy || maxE>minElectronEnergy) ) { + stop = false; + break; + } + } + + if(stop) return 0; + + // create vector of tracks of secondary particles + + G4std::vector* partVector = + new G4std::vector; + G4std::vector* secVector = 0; + G4DynamicParticle* aSecondary = 0; + G4ParticleDefinition* type = 0; + G4double e; + G4ThreeVector position; + G4int shell, shellId; + + // sample secondaries + + G4double etot = 0.0; + G4std::vector n = shellVacancy->GenerateNumberOfIonisations(material, + incidentEnergy, eLoss); + + for (size_t i=0; iGetZ()); + G4double maxE = transitionManager->Shell(Z, 0)->BindingEnergy(); + + if (nVacancies && Z>5 && (maxE>minGammaEnergy || maxE>minElectronEnergy)) { + for(size_t j=0; jSelectRandomShell(Z,incidentEnergy,hMass,deltaEnergy); + shellId = transitionManager->Shell(Z, shell)->ShellId(); + G4double maxE = transitionManager->Shell(Z, shell)->BindingEnergy(); + + if (maxE>minGammaEnergy || maxE>minElectronEnergy ) { + secVector = deexcitationManager.GenerateParticles(Z, shellId); + } else { + secVector = 0; + } + + if (secVector) { + + for (size_t l = 0; lsize(); l++) { + + aSecondary = (*secVector)[l]; + if(aSecondary) { + + e = aSecondary->GetKineticEnergy(); + type = aSecondary->GetDefinition(); + if ( etot + e <= eLoss && + (type == G4Gamma::Gamma() && e > minGammaEnergy ) || + (type == G4Electron::Electron() && e > minElectronEnergy)) { + + etot += e; + partVector->push_back(aSecondary); + + } else { + delete aSecondary; + } + } + } + delete secVector; + } + } + } + } + + if(partVector->empty()) { + delete partVector; + return 0; + } + + return partVector; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4int G4hLowEnergyIonisation::SelectRandomAtom(const G4Material* material, + G4double kineticEnergy) const +{ + G4int nElements = material->GetNumberOfElements(); + G4int Z = 0; + + if(nElements == 1) { + Z = (G4int)(material->GetZ()); + return Z; + } + + const G4ElementVector* theElementVector = material->GetElementVector(); + G4std::vector p; + G4int index = material->GetIndex(); + + G4double norm = 0.0; + for (G4int j=0; jGetComponent(j); + G4double cross = set->FindValue(kineticEnergy); + + p.push_back(cross); + norm += cross; + } + + G4double q = norm*G4UniformRand(); + + for (G4int i=0; i q) { + Z = (G4int)((*theElementVector)[i]->GetZ()); + break; + } + q -= p[i]; + } + + return Z; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + G4double G4hLowEnergyIonisation::ComputeDEDX( const G4ParticleDefinition* aParticle, const G4Material* material, @@ -1113,8 +1612,8 @@ G4double G4hLowEnergyIonisation::BarkasTerm(const G4Material* material, for (G4int i = 0; iGetA()*mole/g; - ZMaterial = (*theElementVector)(i)->GetZ(); + AMaterial = (*theElementVector)[i]->GetA()*mole/g; + ZMaterial = (*theElementVector)[i]->GetZ(); G4double X = 137.0 * 137.0 * beta2 / ZMaterial; @@ -1213,7 +1712,7 @@ G4double G4hLowEnergyIonisation::ElectronicLossFluctuation( // get particle data G4double tkin = particle->GetKineticEnergy(); G4double particleMass = particle->GetMass() ; - G4double deltaCutInKineticEnergyNow = deltaCutInKineticEnergy[imaterial]; + G4double deltaCutInKineticEnergyNow = cutForDelta[imaterial]; // shortcut for very very small loss if(meanLoss < minLoss) return meanLoss ; @@ -1431,6 +1930,20 @@ G4double G4hLowEnergyIonisation::ElectronicLossFluctuation( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void G4hLowEnergyIonisation::SetCutForSecondaryPhotons(G4double cut) +{ + minGammaEnergy = cut; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyIonisation::SetCutForAugerElectrons(G4double cut) +{ + minElectronEnergy = cut; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + void G4hLowEnergyIonisation::PrintInfoDefinition() const { G4String comments = " Knock-on electron cross sections . "; @@ -1461,14 +1974,14 @@ void G4hLowEnergyIonisation::PrintInfoDefinition() const G4bool printHead = true; const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); // loop for materials for (G4int j=0 ; j < numOfMaterials; j++) { const G4Material* material= (*theMaterialTable)[j]; - G4double deltaCutNow = deltaCutInKineticEnergy[(material->GetIndex())] ; + G4double deltaCutNow = cutForDelta[(material->GetIndex())] ; G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy(); if(eexc > deltaCutNow) { diff --git a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc index 1e82fe2063..a0672d120c 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4hLowEnergyLoss.cc,v 1.9.2.2 2001/06/28 20:19:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4hLowEnergyLoss.cc,v 1.14 2001/11/23 11:45:29 vnivanch Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ----------------------------------------------------------- // GEANT 4 class implementation file @@ -44,6 +44,7 @@ // 31/03/00 rename to lowenergy as G4hLowEnergyLoss.cc V.Ivanchenko // 05/11/00 new method to calculate particle ranges // 10/05/01 V.Ivanchenko Clean up againist Linux compilation with -Wall +// 23/11/01 V.Ivanchenko Move static member-functions from header to source // -------------------------------------------------------------- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -161,6 +162,66 @@ G4hLowEnergyLoss::~G4hLowEnergyLoss() } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +G4int G4hLowEnergyLoss::GetNumberOfProcesses() +{ + return NumberOfProcesses; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyLoss::SetNumberOfProcesses(G4int number) +{ + NumberOfProcesses=number; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyLoss::PlusNumberOfProcesses() +{ + NumberOfProcesses++; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyLoss::MinusNumberOfProcesses() +{ + NumberOfProcesses--; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyLoss::SetdRoverRange(G4double value) +{ + dRoverRange = value; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyLoss::SetRndmStep (G4bool value) +{ + rndmStepFlag = value; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyLoss::SetEnlossFluc (G4bool value) +{ + EnlossFlucFlag = value; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4hLowEnergyLoss::SetStepFunction (G4double c1, G4double c2) +{ + dRoverRange = c1; + finalRange = c2; + c1lim=dRoverRange; + c2lim=2.*(1-dRoverRange)*finalRange; + c3lim=-(1.-dRoverRange)*finalRange*finalRange; +} + //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... void G4hLowEnergyLoss::BuildDEDXTable( @@ -178,7 +239,12 @@ void G4hLowEnergyLoss::BuildDEDXTable( // create table if there is no table or there is a new cut value G4bool MakeTable = false ; - G4double ElectronCutInRange = G4Electron::Electron()->GetCuts(); + // ---- MGP ---- workaround for the deprecated "cuts per material" + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + const G4Material* material = (*theMaterialTable)[0]; + G4double ElectronCutInRange = G4Electron::Electron()->GetEnergyThreshold(material); + // was = G4Electron::Electron()->GetCuts(); + // ---- MGP ---- // create/fill proton or antiproton tables depending on the charge Charge = aParticleType.GetPDGCharge()/eplus; @@ -196,9 +262,8 @@ void G4hLowEnergyLoss::BuildDEDXTable( ) MakeTable = true ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if( MakeTable ) { @@ -316,9 +381,8 @@ void G4hLowEnergyLoss::BuildRangeTable( // Build range table from the energy loss table { Mass = proton_mass_c2; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if( Charge >0.) { @@ -355,9 +419,8 @@ void G4hLowEnergyLoss::BuildRangeTable( void G4hLowEnergyLoss::BuildTimeTables( const G4ParticleDefinition& aParticleType) { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(&aParticleType == G4Proton::Proton()) { @@ -455,7 +518,6 @@ void G4hLowEnergyLoss::BuildLabTimeVector(G4int materialIndex, LowEdgeEnergy,tau,Value ; G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - //const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; // low energy part first... losslim = physicsVector->GetValue(tlim,isOut); @@ -515,8 +577,7 @@ void G4hLowEnergyLoss::BuildProperTimeVector(G4int materialIndex, LowEdgeEnergy,tau,Value ; G4PhysicsVector* physicsVector= (*theDEDXTable)[materialIndex]; - //const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - + // low energy part first... losslim = physicsVector->GetValue(tlim,isOut); taulim=tlim/ParticleMass ; @@ -699,9 +760,8 @@ void G4hLowEnergyLoss::BuildRangeCoeffATable( // Build tables of coefficients for the energy loss calculation // create table for coefficients "A" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(Charge>0.) { @@ -772,9 +832,8 @@ void G4hLowEnergyLoss::BuildRangeCoeffBTable( // Build tables of coefficients for the energy loss calculation // create table for coefficients "B" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(Charge>0.) { @@ -844,9 +903,8 @@ void G4hLowEnergyLoss::BuildRangeCoeffCTable( // Build tables of coefficients for the energy loss calculation // create table for coefficients "C" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(Charge>0.) { @@ -917,9 +975,8 @@ void G4hLowEnergyLoss::BuildInverseRangeTable( { G4double SmallestRange,BiggestRange ; G4bool isOut ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(&aParticleType == G4Proton::Proton()) { if(theInverseRangepTable) diff --git a/source/processes/electromagnetic/lowenergy/src/G4hNuclearStoppingModel.cc b/source/processes/electromagnetic/lowenergy/src/G4hNuclearStoppingModel.cc index 93dd1e7fc6..5d212ba325 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hNuclearStoppingModel.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hNuclearStoppingModel.cc @@ -57,6 +57,7 @@ #include "G4DynamicParticle.hh" #include "G4ParticleDefinition.hh" #include "G4ElementVector.hh" +#include "G4Material.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -101,7 +102,7 @@ void G4hNuclearStoppingModel::InitializeMe() } // Default is nuclear stopping fluctuations On - nStopingPowerTable->SetNuclearStoppingFluctuationsOn(); + nStopingPowerTable->SetNuclearStoppingFluctuationsOff(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -165,8 +166,8 @@ G4double G4hNuclearStoppingModel::StoppingPower( G4double nloss = 0.0; for (G4int iel=0; ielGetZ() ; + const G4Element* element = (*theElementVector)[iel] ; + G4double z2 = element->GetZ(); G4double m2 = element->GetA()*mole/g ; nloss += (nStopingPowerTable-> NuclearStoppingPower(kineticEnergy, z1, z2, m1, m2)) diff --git a/source/processes/electromagnetic/lowenergy/src/G4hParametrisedLossModel.cc b/source/processes/electromagnetic/lowenergy/src/G4hParametrisedLossModel.cc index 2c6bc93af5..8b49f642c9 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hParametrisedLossModel.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hParametrisedLossModel.cc @@ -60,6 +60,7 @@ #include "G4DynamicParticle.hh" #include "G4ParticleDefinition.hh" #include "G4ElementVector.hh" +#include "G4Material.hh" //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -251,7 +252,7 @@ G4double G4hParametrisedLossModel::StoppingPower( // loop for the elements in the material for (G4int i=0; iGetZ() ; eloss +=(eStopingPowerTable->ElectronicStoppingPower(z,kineticEnergy)) * theAtomicNumDensityVector[i] ; @@ -270,7 +271,7 @@ G4double G4hParametrisedLossModel::StoppingPower( // loop for the elements in the material for (G4int i=0; iGetZ() ; eloss += (eStopingPowerTable->ElectronicStoppingPower(z,kineticEnergy)) * theAtomicNumDensityVector[i]; diff --git a/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSection.cc b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSection.cc new file mode 100644 index 0000000000..8d9452caa3 --- /dev/null +++ b/source/processes/electromagnetic/lowenergy/src/G4hShellCrossSection.cc @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// ------------------------------------------------------------------- +// +// GEANT4 Class file +// +// +// File name: G4hShellCrossSection +// +// Author: S. Dussoni and A. Mantero (Alfonso.Mantero@ge.infn.it) +// +// History: +// ----------- +// 23 Oct 2001 A. Mantero 1st implementation +// 24 Oct 2001 MGP Cleaned up +// 30 Oct 2001 V.Ivanchenko Include formula (53) +// +// ------------------------------------------------------------------- + +#include "globals.hh" +#include "G4hShellCrossSection.hh" +#include "G4AtomicTransitionManager.hh" +#include "G4Electron.hh" + +G4hShellCrossSection::G4hShellCrossSection() +{ } + + +G4hShellCrossSection::~G4hShellCrossSection() +{ } + + +G4std::vector G4hShellCrossSection::Probabilities( + G4int Z, + G4double incidentEnergy, + G4double hMass, + G4double deltaEnergy) const +{ + // Cross-sections for proton ionization calculated as in + // "M. Gryzinski, Two-Particle Collisions. I. General Relations for + // Collisions in the Laboratory system, Phys.Rev. 138 A305" + // Other reference papers are Gryzinski's "Paper I" and "Paper II" + + // V.Ivanchenko add only implementation of the formula (53) + // last factor neglected because it is 1 with a good accuracy + + G4AtomicTransitionManager* transitionManager = + G4AtomicTransitionManager::Instance(); + + size_t nShells = transitionManager->NumberOfShells(Z); + + // Vector that stores the calculated cross-sections for each shell: + G4std::vector crossSections; + + // Partial and total cross-section used for normalization of crossSections: + G4double aCrossSection = 0.; + G4double totalCrossSection = 0.; + + // In this loop we calculate cross-section for every shell in the atom + for (size_t k=0; kShell(Z,k)->BindingEnergy(); + G4double xDelta = deltaEnergy/bindingEnergy; + G4double y = incidentEnergy*electron_mass_c2/(bindingEnergy*hMass); + G4double x = 1.0 + xDelta; + + aCrossSection = (x/(xDelta*(1. + 1./y)) + + 4.*log(2.7 + sqrt(y))/3.)/ (x*x*x); + + // Calculation of total cross-section + totalCrossSection += aCrossSection; + + // Fill the vector of cross sections with the value just calculated + crossSections.push_back(aCrossSection); + } + + // Normalization of relative cross-sections to 1 + for (size_t j=0; jGetElementVector() ; const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; + G4double GammaEnergyCut = (G4Gamma::Gamma())->GetEnergyThreshold(aMaterial); G4double SIGMA = 0 ; for ( size_t i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) { SIGMA += theAtomNumDensityVector[i] * ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(i)->GetZ(), - (*theElementVector)(i)->GetA(), + (*theElementVector)[i]->GetZ(), + (*theElementVector)[i]->GetA(), GammaEnergyCut ); } - return SIGMA<=0.0 ? DBL_MAX : 1./SIGMA ; + return SIGMA > 0. ? 1./SIGMA : DBL_MAX; } - +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + inline G4bool G4MuBremsstrahlung::IsApplicable( const G4ParticleDefinition& particle) { - return( (&particle == (const G4ParticleDefinition *)theMuonMinus) - ||(&particle == (const G4ParticleDefinition *)theMuonPlus) - ) ; + return ((&particle == G4MuonPlus::MuonPlus() ) || + (&particle == G4MuonMinus::MuonMinus()) ); } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/source/processes/electromagnetic/muons/include/G4MuIonisation.hh b/source/processes/electromagnetic/muons/include/G4MuIonisation.hh index 38d1a47ee5..c6c88304f3 100644 --- a/source/processes/electromagnetic/muons/include/G4MuIonisation.hh +++ b/source/processes/electromagnetic/muons/include/G4MuIonisation.hh @@ -21,111 +21,161 @@ // ******************************************************************** // // -// $Id: G4MuIonisation.hh,v 1.8.4.2 2001/06/28 20:19:44 gunter Exp $ -// GEANT4 tag $Name: $ - -// ------------------------------------------------------------ -// GEANT 4 class header file +// $Id: G4MuIonisation.hh,v 1.13 2001/10/29 13:53:18 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4MuIonisation physics process ------------ -// by Laszlo Urban, September 1997 -// ------------------------------------------------------------ -// It is the implementation of the NEW IONISATION -// PROCESS. ( delta rays + continuous energy loss) -// It calculates the ionisation for muons. -// ************************************************************ -// -// 10/02/00 modifications , new e.m. structure, L.Urban -// ------------------------------------------------------------ +// --------------- G4MuIonisation physics process ------------------------------ +// by Laszlo Urban, September 1997 +// ----------------------------------------------------------------------------- +// +// 10-02-00 modifications , new e.m. structure, L.Urban +// 10-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 29-08-01 new function ComputeRestrictedMeandEdx() + 'cleanup' (mma) +// 19-09-01 come back to the old process name 'MuIoni' +// 29-10-01 all static functions no more inlined (mma) +// +// ----------------------------------------------------------------------------- + +// Class description +// +// This class manages the ionisation process for muons. +// it inherites from G4VContinuousDiscreteProcess via G4VMuEnergyLoss. +// +// Class description - end + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4MuIonisation_h #define G4MuIonisation_h 1 -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" #include "G4VMuEnergyLoss.hh" -#include "globals.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4MuIonisation : public G4VMuEnergyLoss { - public: + public: // with description - G4MuIonisation(const G4String& processName = "MuIoni"); + G4MuIonisation(const G4String& processName = "MuIoni"); - ~G4MuIonisation(); + ~G4MuIonisation(); - G4bool IsApplicable(const G4ParticleDefinition&); + G4bool IsApplicable(const G4ParticleDefinition&); + // return true for charged particles, false otherwise + + void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); + // this function overloads a virtual function of the base class. + // It is invoked by the G4ParticleWithCuts::SetCut() method. + // It invokes BuildLambdaTable(), BuildLossTable(), BuildDEDXTable() + + void BuildLossTable(const G4ParticleDefinition& aParticleType); + // build the dE/dx tables due to the ionisation, for every materials. + // (restricted stopping power, Bethe-Bloch formula) + + void BuildLambdaTable(const G4ParticleDefinition& aParticleType); + // build mean free path tables for the delta rays production. + // the tables are built for every materials. + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store eLoss and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve eLoss and MeanFreePath tables from an external file + // specified by 'directory' + + virtual void PrintInfoDefinition(); + // Print few lines of informations about the process: validity range, + // origine ..etc.. + // Invoked by BuildPhysicsTable(). + + G4double GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition ); + // It returns the MeanFreePath of the process for the current track : + // (energy, material) + // The previousStepSize and G4ForceCondition* are not used. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + + G4VParticleChange* PostStepDoIt(const G4Track& track, + const G4Step& Step ); + // It computes the final state of the process (at end of step), + // returned as a ParticleChange object. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - - void BuildLossTable(const G4ParticleDefinition& aParticleType); - - void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - - void PrintInfoDefinition(); - - G4double GetMeanFreePath(const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition ) ; - - G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& Step ) ; - - protected: - - virtual G4double ComputeMicroscopicCrossSection( + protected: // with description + + virtual G4double ComputeRestrictedMeandEdx( const G4ParticleDefinition& aParticleType, G4double KineticEnergy, - G4double AtomicNumber); - - G4double ComputeDMicroscopicCrossSection( - const G4ParticleDefinition& ParticleType, - G4double KineticEnergy, G4double AtomicNumber, - G4double KnockonEnergy); - - - private: - - // hide assignment operator - G4MuIonisation & operator=(const G4MuIonisation &right); - G4MuIonisation(const G4MuIonisation&); - - - private: - // private data members ............................... - + const G4Material* material, + G4double DeltaThreshold); + // computes restricted mean dE/dx in Geant4 internal units. + + virtual G4double ComputeCrossSectionPerAtom( + const G4ParticleDefinition& aParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double DeltaThreshold); + // computes total cross section per atom in Geant4 internal units. + + virtual G4double ComputeDifCrossSectionPerAtom( + const G4ParticleDefinition& aParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double KnockonEnergy); + // computes differential cross section per atom. + + protected: + G4PhysicsTable* theMeanFreePathTable; - static G4double LowerBoundLambda ; // bining for lambda table - static G4double UpperBoundLambda ; - static G4int NbinLambda ; - G4double LowestKineticEnergy,HighestKineticEnergy ; - G4int TotBin ; + private: - const G4double* DeltaCutInKineticEnergy ; - - G4double DeltaCutInKineticEnergyNow ; + // hide assignment operator + G4MuIonisation & operator=(const G4MuIonisation &right); + G4MuIonisation(const G4MuIonisation&); + + private: - public: + static G4double LowerBoundLambda; // bining for lambda table + static G4double UpperBoundLambda; + static G4int NbinLambda; + + G4double LowestKineticEnergy; // binning for dE/dx table + G4double HighestKineticEnergy; + G4int TotBin; - static void SetLowerBoundLambda(G4double val) {LowerBoundLambda = val;}; - static void SetUpperBoundLambda(G4double val) {UpperBoundLambda = val;}; - static void SetNbinLambda(G4int n) {NbinLambda = n;}; - static G4double GetLowerBoundLambda() { return LowerBoundLambda;}; - static G4double GetUpperBoundLambda() { return UpperBoundLambda;}; - static G4int GetNbinLambda() {return NbinLambda;}; + public: // with description + static void SetLowerBoundLambda(G4double val); + static void SetUpperBoundLambda(G4double val); + static void SetNbinLambda(G4int n); + // set the parameters of the mean free path table. + + static G4double GetLowerBoundLambda(); + static G4double GetUpperBoundLambda(); + static G4int GetNbinLambda(); + // get the parameters of the mean free path table. }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4MuIonisation.icc" #endif + + + + + + + + diff --git a/source/processes/electromagnetic/muons/include/G4MuIonisation.icc b/source/processes/electromagnetic/muons/include/G4MuIonisation.icc index b64c92b978..6deb21567a 100644 --- a/source/processes/electromagnetic/muons/include/G4MuIonisation.icc +++ b/source/processes/electromagnetic/muons/include/G4MuIonisation.icc @@ -21,56 +21,49 @@ // ******************************************************************** // // -// $Id: G4MuIonisation.icc,v 1.2.4.2 2001/06/28 20:19:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuIonisation.icc,v 1.4 2001/08/29 16:38:05 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // +// +// GEANT 4 class inlined methods file // +// ------------ G4MuIonisation physics process ------------ +// by Laszlo Urban, September 1997 // --------------------------------------------------------------- -// GEANT 4 class inlined methods file // -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4MuIonisation physics process ------------- -// by Laszlo Urban, September 1997 -// --------------------------------------------------------------- -// It is the implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of muons. -// *************************************************************** -// 24/11/97: correction on MeanFreePath for KinEnergy > HighestLimit +// 20/11/97: correction on MeanFreePath for KineticEnergy > HighestLimit +// 14-08-01: 'cleanup' of GetMeanFreePath (mma) +// // --------------------------------------------------------------- -inline G4double G4MuIonisation::GetMeanFreePath(const G4Track& trackData, - G4double previousStepSize, - G4ForceCondition* condition) -{ - const G4DynamicParticle* aParticle ; - G4Material* aMaterial ; - G4double KineticEnergy,MeanFreePath; - G4bool isOutRange ; - - *condition = NotForced ; - - aParticle = trackData.GetDynamicParticle() ; - aMaterial = trackData.GetMaterial() ; - - KineticEnergy = aParticle->GetKineticEnergy() ; - - if( KineticEnergy < LowestKineticEnergy ) - MeanFreePath = DBL_MAX ; - else { - if(KineticEnergy > HighestKineticEnergy) - KineticEnergy = HighestKineticEnergy; - MeanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> - GetValue(KineticEnergy,isOutRange) ; - } - - return MeanFreePath ; -} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... inline G4bool G4MuIonisation::IsApplicable( - const G4ParticleDefinition& particle) -{ - return ( (&particle == (const G4ParticleDefinition *)theMuonPlus) - ||(&particle == (const G4ParticleDefinition *)theMuonMinus) - ); + const G4ParticleDefinition& particle) +{ + return ((&particle == G4MuonPlus::MuonPlus() ) || + (&particle == G4MuonMinus::MuonMinus()) ); } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +inline G4double G4MuIonisation::GetMeanFreePath(const G4Track& track, G4double, + G4ForceCondition*) +{ + G4double KineticEnergy = track.GetDynamicParticle()->GetKineticEnergy(); + G4Material* aMaterial = track.GetMaterial(); + + G4double MeanFreePath; + G4bool isOut; + + if (KineticEnergy > HighestKineticEnergy) KineticEnergy = HighestKineticEnergy; + if (KineticEnergy > LowestKineticEnergy) + MeanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> + GetValue(KineticEnergy, isOut); + else MeanFreePath = DBL_MAX; + + return MeanFreePath; +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + diff --git a/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh b/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh index 914089730a..5a66009f11 100644 --- a/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh +++ b/source/processes/electromagnetic/muons/include/G4MuPairProduction.hh @@ -21,23 +21,22 @@ // ******************************************************************** // // -// $Id: G4MuPairProduction.hh,v 1.8.4.2 2001/06/28 20:19:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuPairProduction.hh,v 1.12 2001/10/29 13:53:18 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4MuPairProduction physics process --------- +//--------------- G4MuPairProduction physics process ------------------ // by Laszlo Urban, May 1998 -// ************************************************************ -// 10/02/00 modifications , new e.m. structure, L.Urban -// +//------------------------------------------------------------------------------ +// 10-02-00 modifications , new e.m. structure, L.Urban +// 10-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 29-10-01 all static functions no more inlined (mma) +//------------------------------------------------------------------------------ #ifndef G4MuPairproduction_h #define G4MuPairproduction_h 1 +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4ios.hh" #include "globals.hh" #include "Randomize.hh" @@ -47,7 +46,9 @@ #include "G4OrderedTable.hh" #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" - + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + class G4MuPairProduction : public G4VMuEnergyLoss { @@ -69,16 +70,26 @@ class G4MuPairProduction : public G4VMuEnergyLoss G4double GetMeanFreePath( const G4Track& track, G4double previousStepSize, - G4ForceCondition* condition ) ; + G4ForceCondition* condition ); G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& Step ) ; + const G4Step& Step ); G4double GetDMicroscopicCrossSection( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, G4double AtomicNumber, G4double PairEnergy); + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store eLoss and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve eLoss and MeanFreePath tables from an external file + // specified by 'directory' protected: @@ -125,15 +136,15 @@ class G4MuPairProduction : public G4VMuEnergyLoss private: - G4PhysicsTable* theMeanFreePathTable ; + G4PhysicsTable* theMeanFreePathTable; G4OrderedTable PartialSumSigma; - static G4double LowerBoundLambda ; // bining for lambda table - static G4double UpperBoundLambda ; - static G4int NbinLambda ; - G4double LowestKineticEnergy,HighestKineticEnergy ; - G4int TotBin ; + static G4double LowerBoundLambda; // bining for lambda table + static G4double UpperBoundLambda; + static G4int NbinLambda; + G4double LowestKineticEnergy,HighestKineticEnergy; + G4int TotBin; const G4double* ElectronCutInKineticEnergy; const G4double* PositronCutInKineticEnergy; @@ -141,23 +152,25 @@ class G4MuPairProduction : public G4VMuEnergyLoss G4double ElectronCutInKineticEnergyNow; G4double PositronCutInKineticEnergyNow; - // tables for sampling .............. - static G4int nzdat,ntdat,NBIN ; - static G4double zdat[5],tdat[8] ; - static G4double ya[1001],proba[5][8][1001] ; - static G4double MinPairEnergy ; + // tables for sampling + static G4int nzdat,ntdat,NBIN; + static G4double zdat[5],tdat[8]; + static G4double ya[1001],proba[5][8][1001]; + static G4double MinPairEnergy; public: - static void SetLowerBoundLambda(G4double val) {LowerBoundLambda = val;}; - static void SetUpperBoundLambda(G4double val) {UpperBoundLambda = val;}; - static void SetNbinLambda(G4int n) {NbinLambda = n;}; - static G4double GetLowerBoundLambda() { return LowerBoundLambda;}; - static G4double GetUpperBoundLambda() { return UpperBoundLambda;}; - static G4int GetNbinLambda() {return NbinLambda;}; + static void SetLowerBoundLambda(G4double val); + static void SetUpperBoundLambda(G4double val); + static void SetNbinLambda(G4int n); + static G4double GetLowerBoundLambda(); + static G4double GetUpperBoundLambda(); + static G4int GetNbinLambda(); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4MuPairProduction.icc" #endif diff --git a/source/processes/electromagnetic/muons/include/G4MuPairProduction.icc b/source/processes/electromagnetic/muons/include/G4MuPairProduction.icc index ba0ebede96..fab5a6f211 100644 --- a/source/processes/electromagnetic/muons/include/G4MuPairProduction.icc +++ b/source/processes/electromagnetic/muons/include/G4MuPairProduction.icc @@ -21,25 +21,23 @@ // ******************************************************************** // // -// $Id: G4MuPairProduction.icc,v 1.4.2.2 2001/06/28 20:19:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuPairProduction.icc,v 1.8 2001/10/24 16:36:40 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4MuPairProduction physics process --------- +//--------------- G4MuPairProduction physics process ------------------ // by Laszlo Urban, May 1998 -// *************************************************************** +//------------------------------------------------------------------------------ // // Modified: // -// 29.05.01 V.Ivanchenko minor changes to provide ANSI -wall compilation -// -// --------------------------------------------------------------- +// 17-09-01 migration of Materials to pure STL (mma) +// 29.05.01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 28-09-01 suppression of theMuonPlus ..etc..data members (mma) // +//------------------------------------------------------------------------------ +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + inline G4double G4MuPairProduction::GetMeanFreePath(const G4Track& trackData, G4double previousStepSize, G4ForceCondition* condition) @@ -66,35 +64,40 @@ inline G4double G4MuPairProduction::GetMeanFreePath(const G4Track& trackData, return MeanFreePath; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + inline G4double G4MuPairProduction::ComputeMeanFreePath( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, const G4Material* aMaterial) { - const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; + const G4ElementVector* theElementVector = aMaterial->GetElementVector(); const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); G4double ElectronEnergyCut = - (G4Electron::GetCutsInEnergy())[aMaterial->GetIndex()]; + G4Electron::Electron()->GetEnergyThreshold(aMaterial); G4double PositronEnergyCut = - (G4Positron::GetCutsInEnergy())[aMaterial->GetIndex()]; + G4Positron::Positron()->GetEnergyThreshold(aMaterial); - G4double SIGMA = 0 ; + G4double SIGMA = 0; for ( size_t i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) { SIGMA += theAtomNumDensityVector[i] * ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(i)->GetZ(), + (*theElementVector)[i]->GetZ(), ElectronEnergyCut,PositronEnergyCut ); } - return SIGMA<=0.0 ? DBL_MAX : 1./SIGMA ; + return SIGMA > 0. ? 1./SIGMA : DBL_MAX; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + inline G4bool G4MuPairProduction::IsApplicable( const G4ParticleDefinition& particle) { - return( (&particle == (const G4ParticleDefinition *)theMuonMinus) - ||(&particle == (const G4ParticleDefinition *)theMuonPlus) - ) ; + return ((&particle == G4MuonPlus::MuonPlus() ) || + (&particle == G4MuonMinus::MuonMinus()) ); } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.hh b/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.hh index edb60ed383..b558eaf74d 100644 --- a/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.hh +++ b/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMuEnergyLoss.hh,v 1.2.4.2 2001/06/28 20:19:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMuEnergyLoss.hh,v 1.7 2001/10/29 13:53:18 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------------- // GEANT 4 class header file // @@ -41,9 +41,12 @@ // This class creates static muplus/muminus dE/dx and range tables , // which tables can be used by other processes. // ************************************************************ -// some corrections by L.Urban on 27/05/98 , (but other corrections come soon!) -// cleanup L.Urban on 23/10/98 -// corrections due to new e.m. structure L.Urban 10/02/00 +// 27-05-98 some corrections by L.Urban +// 23-10-98 cleanup L.Urban +// 10-02-00 corrections due to new e.m. structure L.Urban +// 10-09-01 loss+ mechanism has been implemented (subcutoff delta rays), L.Urban +// 28-09-01 suppression of theMuonPlus ..etc..data members (mma) +// 29-10-01 all static functions no more inlined (mma) // ------------------------------------------------------------ #ifndef G4VMuEnergyLoss_h @@ -113,20 +116,13 @@ class G4VMuEnergyLoss : public G4VEnergyLoss G4double GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial); - // ===================================================================== - public: protected: G4PhysicsTable* theLossTable ; - G4double lastgammaCutInRange ; - G4double lastelectronCutInRange ; - - const G4Electron* theElectron; - const G4Positron* thePositron; - const G4MuonPlus* theMuonPlus; - const G4MuonMinus* theMuonMinus; + G4double* lastgammaCutInRange ; + G4double* lastelectronCutInRange ; private: @@ -156,51 +152,51 @@ class G4VMuEnergyLoss : public G4VEnergyLoss // static part of the class public: // With description - static void SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;}; + static void SetNbOfProcesses(G4int nb); // Sets number of processes giving contribution to the energy loss - static void PlusNbOfProcesses() {NbOfProcesses++ ;}; + static void PlusNbOfProcesses(); // Increases number of processes giving contribution to the energy loss - static void MinusNbOfProcesses() {NbOfProcesses-- ;}; + static void MinusNbOfProcesses(); // Decreases number of processes giving contribution to the energy loss - static G4int GetNbOfProcesses() {return NbOfProcesses;}; + static G4int GetNbOfProcesses(); // Gets number of processes giving contribution to the energy loss // ( default value = 3) - static void SetLowerBoundEloss(G4double val) {LowerBoundEloss=val;}; - static void SetUpperBoundEloss(G4double val) {UpperBoundEloss=val;}; - static void SetNbinEloss(G4int nb) {NbinEloss=nb;}; + static void SetLowerBoundEloss(G4double val); + static void SetUpperBoundEloss(G4double val); + static void SetNbinEloss(G4int nb); - static G4double GetLowerBoundEloss() {return LowerBoundEloss;}; - static G4double GetUpperBoundEloss() {return UpperBoundEloss;}; - static G4int GetNbinEloss() {return NbinEloss;}; + static G4double GetLowerBoundEloss(); + static G4double GetUpperBoundEloss(); + static G4int GetNbinEloss(); protected: - static G4PhysicsTable* theDEDXmuplusTable ; - static G4PhysicsTable* theDEDXmuminusTable ; - static G4PhysicsTable* theRangemuplusTable ; - static G4PhysicsTable* theRangemuminusTable ; + static G4PhysicsTable* theDEDXmuplusTable; + static G4PhysicsTable* theDEDXmuminusTable; + static G4PhysicsTable* theRangemuplusTable; + static G4PhysicsTable* theRangemuminusTable; - static G4PhysicsTable* theInverseRangemuplusTable ; - static G4PhysicsTable* theInverseRangemuminusTable ; + static G4PhysicsTable* theInverseRangemuplusTable; + static G4PhysicsTable* theInverseRangemuminusTable; - static G4PhysicsTable* theLabTimemuplusTable ; - static G4PhysicsTable* theLabTimemuminusTable ; + static G4PhysicsTable* theLabTimemuplusTable; + static G4PhysicsTable* theLabTimemuminusTable; - static G4PhysicsTable* theProperTimemuplusTable ; - static G4PhysicsTable* theProperTimemuminusTable ; + static G4PhysicsTable* theProperTimemuplusTable; + static G4PhysicsTable* theProperTimemuminusTable; // processes inherited from G4muEnergyLoss // register themselves in the static array Recorder - static G4int NbOfProcesses ; + static G4int NbOfProcesses; static G4PhysicsTable** RecorderOfmuplusProcess; static G4PhysicsTable** RecorderOfmuminusProcess; - static G4int CounterOfmuplusProcess ; - static G4int CounterOfmuminusProcess ; + static G4int CounterOfmuplusProcess; + static G4int CounterOfmuminusProcess; private: @@ -220,6 +216,10 @@ class G4VMuEnergyLoss : public G4VEnergyLoss static G4EnergyLossMessenger* eLossMessenger; + static G4double cN; // coeff to compute nb of deltas + static G4int Ndeltamax; // upper limit for nb of subcutoff + // delta rays in one step + }; #include "G4VMuEnergyLoss.icc" diff --git a/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.icc b/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.icc index 6c5f5a500d..fe58d16d61 100644 --- a/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.icc +++ b/source/processes/electromagnetic/muons/include/G4VMuEnergyLoss.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMuEnergyLoss.icc,v 1.1.4.2 2001/06/28 20:19:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMuEnergyLoss.icc,v 1.3 2001/09/28 15:44:20 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // --------------------------------------------------------------- // GEANT 4 class inlined methods file // @@ -34,11 +34,14 @@ // It is the implementation of the NEW UNIFIED ENERGY LOSS PROCESS. // It calculates the energy loss of muons. // *************************************************************** -// correction for KineticEnergy< LowerBoundEloss by L.Urban on 27/11/97 -// corrections by L. Urban on 27/05/98 ( other corrs come soon!) -// cleanup L.Urban on 23/10/98 +// 27-11-97 correction for KineticEnergy< LowerBoundEloss by L.Urban +// 27-05-98 corrections by L. Urban +// 23-10-98 cleanup L.Urban +// 28-09-01 suppression of theMuonPlus ..etc..data members (mma) // --------------------------------------------------------------- +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + inline G4double G4VMuEnergyLoss::GetContinuousStepLimit( const G4Track& track, G4double, @@ -55,10 +58,14 @@ inline G4double G4VMuEnergyLoss::GetContinuousStepLimit( return Step ; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + inline G4bool G4VMuEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { - return ( (&particle == (const G4ParticleDefinition *)theMuonPlus) - ||(&particle == (const G4ParticleDefinition *)theMuonMinus) - ); + return ((&particle == G4MuonPlus::MuonPlus() ) || + (&particle == G4MuonMinus::MuonMinus()) ); } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc b/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc index 2152db2dff..b87651f99d 100644 --- a/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc +++ b/source/processes/electromagnetic/muons/src/G4MuBremsstrahlung.cc @@ -21,45 +21,47 @@ // ******************************************************************** // // -// $Id: G4MuBremsstrahlung.cc,v 1.15.2.2 2001/06/28 20:19:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuBremsstrahlung.cc,v 1.22 2001/11/09 13:52:31 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4MuBremsstrahlung physics process --------- +//--------------- G4MuBremsstrahlung physics process --------------------------- // by Laszlo Urban, September 1997 // -// 08-04-98: remove 'tracking cut' of muon in oIt, MMa -// 26/10/98: new cross section of R.Kokoulin,cleanup , L.Urban -// 10/02/00 modifications , new e.m. structure, L.Urban -// 29/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- +// 08-04-98 remove 'tracking cut' of muon in oIt, MMa +// 26/10/98 new cross section of R.Kokoulin,cleanup , L.Urban +// 10/02/00 modifications , new e.m. structure, L.Urban +// 29/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 09-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 17-09-01 migration of Materials to pure STL (mma) +// 26-09-01 completion of store/retrieve PhysicsTable (mma) +// 28-09-01 suppression of theMuonPlus ..etc..data members (mma) +// 29-10-01 all static functions no more inlined (mma) +// 08-11-01 particleMass becomes a local variable (mma) +//------------------------------------------------------------------------------ #include "G4MuBremsstrahlung.hh" #include "G4UnitsTable.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -// static members ........ -G4int G4MuBremsstrahlung::nzdat = 5 ; +// static members +// +G4int G4MuBremsstrahlung::nzdat = 5 ; G4double G4MuBremsstrahlung::zdat[]={1.,4.,13.,29.,92.}; G4double G4MuBremsstrahlung::adat[]={1.01,9.01,26.98,63.55,238.03}; -G4int G4MuBremsstrahlung::ntdat = 8 ; +G4int G4MuBremsstrahlung::ntdat = 8 ; G4double G4MuBremsstrahlung::tdat[]={1.e3,1.e4,1.e5,1.e6,1.e7,1.e8,1.e9,1.e10}; -G4int G4MuBremsstrahlung::NBIN = 1000; // 100 ; -//G4double G4MuBremsstrahlung::ya[1001]={0.}; -//G4double G4MuBremsstrahlung::proba[5][8][1001]={0.}; +G4int G4MuBremsstrahlung::NBIN = 1000; // 100 ; G4double G4MuBremsstrahlung::ya[1001]; G4double G4MuBremsstrahlung::proba[5][8][1001]; -G4double G4MuBremsstrahlung::CutFixed=0.98*keV ; +G4double G4MuBremsstrahlung::CutFixed=0.98*keV; +G4double G4MuBremsstrahlung::LowerBoundLambda = 1.*keV; +G4double G4MuBremsstrahlung::UpperBoundLambda = 1000000.*TeV; +G4int G4MuBremsstrahlung::NbinLambda = 150; -G4double G4MuBremsstrahlung::LowerBoundLambda = 1.*keV ; -G4double G4MuBremsstrahlung::UpperBoundLambda = 1000000.*TeV ; -G4int G4MuBremsstrahlung::NbinLambda = 150 ; - +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // constructor @@ -67,6 +69,8 @@ G4MuBremsstrahlung::G4MuBremsstrahlung(const G4String& processName) : G4VMuEnergyLoss(processName), theMeanFreePathTable(NULL) { } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4MuBremsstrahlung::~G4MuBremsstrahlung() { @@ -79,6 +83,38 @@ G4MuBremsstrahlung::~G4MuBremsstrahlung() PartialSumSigma.clearAndDestroy(); } } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuBremsstrahlung::SetLowerBoundLambda(G4double val) + {LowerBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuBremsstrahlung::SetUpperBoundLambda(G4double val) + {UpperBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuBremsstrahlung::SetNbinLambda(G4int n) + {NbinLambda = n;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MuBremsstrahlung::GetLowerBoundLambda() + { return LowerBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MuBremsstrahlung::GetUpperBoundLambda() + { return UpperBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4MuBremsstrahlung::GetNbinLambda() + {return NbinLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4MuBremsstrahlung::BuildPhysicsTable( const G4ParticleDefinition& aParticleType) @@ -90,30 +126,30 @@ void G4MuBremsstrahlung::BuildPhysicsTable( BuildLossTable(aParticleType) ; - if(&aParticleType==theMuonMinus) + if(&aParticleType==G4MuonMinus::MuonMinus()) { - RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable ; + RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable; CounterOfmuminusProcess++; } else { - RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable ; + RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable; CounterOfmuplusProcess++; } if(theMeanFreePathTable == NULL) MakeSamplingTables(&aParticleType) ; - G4double gammaCutInRange = G4Gamma::Gamma()->GetCuts(); - if(gammaCutInRange != lastgammaCutInRange) - BuildLambdaTable(aParticleType) ; + G4double* gammaCutInRange = G4Gamma::Gamma()->GetLengthCuts(); + if( !EqualCutVectors(gammaCutInRange,lastgammaCutInRange)) + BuildLambdaTable(aParticleType) ; - G4VMuEnergyLoss::BuildDEDXTable(aParticleType) ; + G4VMuEnergyLoss::BuildDEDXTable(aParticleType); - if(&aParticleType == theMuonPlus) - PrintInfoDefinition() ; + if(&aParticleType == G4MuonPlus::MuonPlus()) PrintInfoDefinition(); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4MuBremsstrahlung::BuildLossTable( const G4ParticleDefinition& aParticleType) @@ -123,10 +159,10 @@ void G4MuBremsstrahlung::BuildLossTable( const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - ParticleMass = aParticleType.GetPDGMass(); + G4double particleMass = aParticleType.GetPDGMass(); GammaCutInKineticEnergy = G4Gamma::Gamma()->GetEnergyCuts() ; - G4int numOfMaterials = theMaterialTable->length() ; + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if (theLossTable) { theLossTable->clearAndDestroy(); @@ -151,17 +187,17 @@ void G4MuBremsstrahlung::BuildLossTable( for (G4int i=0; iGetLowEdgeEnergy(i) ; - TotalEnergy = KineticEnergy+ParticleMass ; + TotalEnergy = KineticEnergy+particleMass ; Cut = GammaCutInKineticEnergyNow ; if(Cut>KineticEnergy) Cut = KineticEnergy ; bremloss = 0.; for (G4int iel=0; ielGetZ(); + Z=(*theElementVector)[iel]->GetZ(); natom = theAtomicNumDensityVector[iel] ; loss = ComputeBremLoss((&aParticleType),Z, - (*theElementVector)(iel)->GetA(), + (*theElementVector)[iel]->GetA(), KineticEnergy,Cut) ; bremloss += natom*loss ; } @@ -173,6 +209,8 @@ void G4MuBremsstrahlung::BuildLossTable( } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4double G4MuBremsstrahlung::ComputeBremLoss( const G4ParticleDefinition* aParticleType, G4double AtomicNumber,G4double AtomicMass, @@ -185,8 +223,9 @@ G4double G4MuBremsstrahlung::ComputeBremLoss( G4double xgi[]={0.03377,0.16940,0.38069,0.61931,0.83060,0.96623}; G4double wgi[]={0.08566,0.18038,0.23396,0.23396,0.18038,0.08566}; G4double loss = 0. ; - - TotalEnergy=KineticEnergy+ParticleMass ; + + G4double particleMass = aParticleType->GetPDGMass(); + TotalEnergy=KineticEnergy+particleMass ; vcut = GammaEnergyCut/TotalEnergy ; vmax = KineticEnergy/TotalEnergy ; @@ -214,6 +253,8 @@ G4double G4MuBremsstrahlung::ComputeBremLoss( return loss ; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuBremsstrahlung::BuildLambdaTable( const G4ParticleDefinition& ParticleType) { @@ -254,11 +295,14 @@ void G4MuBremsstrahlung::BuildLambdaTable( } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuBremsstrahlung::ComputePartialSumSigma( const G4ParticleDefinition* ParticleType, - G4double KineticEnergy, - const G4Material* aMaterial) -// Build the table of cross section per element.The table is built for MATERIALS. + G4double KineticEnergy, + const G4Material* aMaterial) +// Build the table of cross section per element. +// The table is built for MATERIALS. // This table is used by DoIt to select randomly an element in the material. { G4int Imate = aMaterial->GetIndex(); @@ -266,7 +310,7 @@ void G4MuBremsstrahlung::ComputePartialSumSigma( const G4ElementVector* theElementVector = aMaterial->GetElementVector(); const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::Gamma()->GetCutsInEnergy())[Imate]; + G4double GammaEnergyCut = (G4Gamma::Gamma()->GetEnergyCuts())[Imate]; PartialSumSigma[Imate] = new G4DataVector(); @@ -276,13 +320,15 @@ void G4MuBremsstrahlung::ComputePartialSumSigma( { SIGMA += theAtomNumDensityVector[Ielem] * ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), - (*theElementVector)(Ielem)->GetA(), + (*theElementVector)[Ielem]->GetZ(), + (*theElementVector)[Ielem]->GetA(), GammaEnergyCut ); PartialSumSigma[Imate]->push_back(SIGMA); } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4double G4MuBremsstrahlung::ComputeMicroscopicCrossSection( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, @@ -298,8 +344,9 @@ G4double G4MuBremsstrahlung::ComputeMicroscopicCrossSection( G4double xgi[]={0.03377,0.16940,0.38069,0.61931,0.83060,0.96623}; G4double wgi[]={0.08566,0.18038,0.23396,0.23396,0.18038,0.08566}; G4double CrossSection = 0. ; - - TotalEnergy=KineticEnergy+ParticleMass ; + + G4double particleMass = ParticleType->GetPDGMass(); + TotalEnergy=KineticEnergy+particleMass ; vcut = GammaEnergyCut/TotalEnergy ; vmax = KineticEnergy/TotalEnergy ; if(vmax <= vcut) return CrossSection; @@ -327,6 +374,8 @@ G4double G4MuBremsstrahlung::ComputeMicroscopicCrossSection( return CrossSection; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4MuBremsstrahlung::GetDMicroscopicCrossSection( const G4ParticleDefinition* ParticleType, @@ -337,9 +386,11 @@ G4double G4MuBremsstrahlung::GetDMicroscopicCrossSection( // get differential cross section { return ComputeDMicroscopicCrossSection(ParticleType,KineticEnergy, - AtomicNumber,AtomicMass,GammaEnergy) ; + AtomicNumber,AtomicMass,GammaEnergy); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4double G4MuBremsstrahlung::ComputeDMicroscopicCrossSection( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, @@ -348,9 +399,11 @@ G4double G4MuBremsstrahlung::ComputeDMicroscopicCrossSection( G4double GammaEnergy) // differential cross section { + G4double particleMass = ParticleType->GetPDGMass(); + static const G4double sqrte=sqrt(exp(1.)) ; static const G4double bh=202.4,bh1=446.,btf=183.,btf1=1429. ; - static const G4double rmass=ParticleMass/electron_mass_c2 ; + static const G4double rmass=particleMass/electron_mass_c2 ; static const G4double cc=classic_electr_radius/rmass ; static const G4double coeff= 16.*fine_structure_const*cc*cc/3. ; @@ -359,9 +412,9 @@ G4double G4MuBremsstrahlung::ComputeDMicroscopicCrossSection( if( GammaEnergy > KineticEnergy) return dxsection ; G4double A = AtomicMass/(g/mole) ; // !!!!!!!!!!!!!!!!!!! - G4double E=KineticEnergy+ParticleMass ; + G4double E=KineticEnergy+particleMass ; G4double v=GammaEnergy/E ; - G4double delta=0.5*ParticleMass*ParticleMass*v/(E-GammaEnergy) ; + G4double delta=0.5*particleMass*particleMass*v/(E-GammaEnergy) ; G4double rab0=delta*sqrte ; G4double z13=exp(-log(AtomicNumber)/3.) ; @@ -385,15 +438,15 @@ G4double G4MuBremsstrahlung::ComputeDMicroscopicCrossSection( // nucleus contribution logarithm G4double rab1=b*z13; G4double fn=log(rab1/(dnstar*(electron_mass_c2+rab0*rab1))* - (ParticleMass+delta*(dnstar*sqrte-2.))) ; + (particleMass+delta*(dnstar*sqrte-2.))) ; if(fn <0.) fn = 0. ; // electron contribution logarithm - G4double epmax1=E/(1.+0.5*ParticleMass*rmass/E) ; + G4double epmax1=E/(1.+0.5*particleMass*rmass/E) ; G4double fe=0.; if(GammaEnergyGetPDGMass() ; + G4double particleMass = ParticleType->GetPDGMass() ; for (G4int iz=0; izGetCutsInEnergy())[aMaterial->GetIndex()]; + G4Gamma::Gamma()->GetEnergyThreshold(aMaterial); // check against insufficient energy if(KineticEnergy < GammaEnergyCut) @@ -610,6 +666,8 @@ G4VParticleChange* G4MuBremsstrahlung::PostStepDoIt(const G4Track& trackData, return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4Element* G4MuBremsstrahlung::SelectRandomAtom(G4Material* aMaterial) const { // select randomly 1 element within the material @@ -618,14 +676,127 @@ G4Element* G4MuBremsstrahlung::SelectRandomAtom(G4Material* aMaterial) const const G4int NumberOfElements = aMaterial->GetNumberOfElements(); const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - G4double rval = G4UniformRand()*((*PartialSumSigma[Index])[NumberOfElements-1]); + G4double rval = G4UniformRand() + *((*PartialSumSigma[Index])[NumberOfElements-1]); for ( G4int i=0; i < NumberOfElements; i++ ) - if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)(i)); + if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)[i]); G4cout << " WARNING !!! - The Material " << aMaterial->GetName() << " has no elements, NULL pointer returned." << G4endl; return NULL; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4MuBremsstrahlung::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + if ( !theLossTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + // store PartialSumSigma table (G4OrderedTable) + filename = GetPhysicsTableFileName(particle,directory,"PartSumSigma",ascii); + if ( !PartialSumSigma.Store(filename, ascii) ){ + G4cout << " FAIL PartialSumSigma.store in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4MuBremsstrahlung::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theLossTable and theMeanFreePathTable + if (theLossTable != 0) { + theLossTable->clearAndDestroy(); + delete theLossTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + if (&PartialSumSigma != 0) PartialSumSigma.clear(); + + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); + + G4String filename; + + // retreive stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + theLossTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theLossTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retrieve PartialSumSigma table (G4OrderedTable) + filename = GetPhysicsTableFileName(particle,directory,"PartSumSigma",ascii); + if ( !PartialSumSigma.Retrieve(filename, ascii) ){ + G4cout << " FAIL PartialSumSigma.retrieve in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + + if (particle->GetPDGCharge() < 0.) + { + RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable; + CounterOfmuminusProcess++; + } + else + { + RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable; + CounterOfmuplusProcess++; + } + + MakeSamplingTables(particle); + + G4VMuEnergyLoss::BuildDEDXTable(*particle); + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuBremsstrahlung::PrintInfoDefinition() { G4String comments = "theoretical cross section \n "; @@ -638,3 +809,5 @@ void G4MuBremsstrahlung::PrintInfoDefinition() << " in " << NbinLambda << " bins. \n"; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/source/processes/electromagnetic/muons/src/G4MuIonisation.cc b/source/processes/electromagnetic/muons/src/G4MuIonisation.cc index 92acbe93af..8eace67194 100644 --- a/source/processes/electromagnetic/muons/src/G4MuIonisation.cc +++ b/source/processes/electromagnetic/muons/src/G4MuIonisation.cc @@ -21,517 +21,640 @@ // ******************************************************************** // // -// $Id: G4MuIonisation.cc,v 1.13.2.2 2001/06/28 20:19:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuIonisation.cc,v 1.24 2001/11/09 13:52:32 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file +// --------------- G4MuIonisation physics process ------------------------------ +// by Laszlo Urban, September 1997 +// ----------------------------------------------------------------------------- // -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4MuIonisation physics process ------------- -// by Laszlo Urban, September 1997 -// ------------------------------------------------------------------ -// It is the implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of muons. -// ************************************************************** -// 08-04-98: remove 'tracking cut' of the ionizing particle, MMa -// 26/10/98: new stuff from R.Kokoulin + cleanup , L.Urban -// 10/02/00 modifications , new e.m. structure, L.Urban -// 23/03/01: R.Kokoulin's correction is commented out, L.Urban -// 29.05.01 V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- - +// 08-04-98 remove 'tracking cut' of the ionizing particle (mma) +// 26-10-98 new stuff from R.Kokoulin + cleanup , L.Urban +// 10-02-00 modifications , new e.m. structure, L.Urban +// 23-03-01 R.Kokoulin's correction is commented out, L.Urban +// 29-05-01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 10-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 28-08-01 new function ComputeRestrictedMeandEdx() + 'cleanup' (mma) +// 17-09-01 migration of Materials to pure STL (mma) +// 26-09-01 completion of RetrievePhysicsTable (mma) +// 29-10-01 all static functions no more inlined (mma) +// 07-11-01 correction(Tmax+xsection computation) L.Urban +// 08-11-01 particleMass becomes a local variable (mma) +// ----------------------------------------------------------------------------- + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4MuIonisation.hh" #include "G4UnitsTable.hh" -#include "G4ios.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4double G4MuIonisation::LowerBoundLambda = 1.*keV; +G4double G4MuIonisation::UpperBoundLambda = 1000000.*TeV; +G4int G4MuIonisation::NbinLambda = 150; -G4double G4MuIonisation::LowerBoundLambda = 1.*keV ; -G4double G4MuIonisation::UpperBoundLambda = 1000000.*TeV ; -G4int G4MuIonisation::NbinLambda = 150 ; - - -// constructor and destructor +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4MuIonisation::G4MuIonisation(const G4String& processName) : G4VMuEnergyLoss(processName), - theMeanFreePathTable(NULL) -{ } + theMeanFreePathTable(0) +{ } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4MuIonisation::~G4MuIonisation() { - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - + if (theMeanFreePathTable) { + theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} } -void G4MuIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuIonisation::SetLowerBoundLambda(G4double val) + {LowerBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuIonisation::SetUpperBoundLambda(G4double val) + {UpperBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuIonisation::SetNbinLambda(G4int n) + {NbinLambda = n;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MuIonisation::GetLowerBoundLambda() + { return LowerBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MuIonisation::GetUpperBoundLambda() + { return UpperBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4MuIonisation::GetNbinLambda() + {return NbinLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4MuIonisation::BuildPhysicsTable(const G4ParticleDefinition& ParticleType) +// just call BuildLossTable+BuildLambdaTable { - // get bining from EnergyLoss - LowestKineticEnergy = GetLowerBoundEloss() ; - HighestKineticEnergy = GetUpperBoundEloss() ; - TotBin = GetNbinEloss() ; + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); - BuildLossTable(aParticleType) ; - G4double Charge = aParticleType.GetPDGCharge(); + BuildLossTable(ParticleType); - if(Charge>0.) - { - RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable ; - CounterOfmuplusProcess++; - } + if (ParticleType.GetPDGCharge() > 0.) + { + RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable; + CounterOfmuplusProcess++; + } else - { - RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable ; - CounterOfmuminusProcess++; - } + { + RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable; + CounterOfmuminusProcess++; + } - G4double electronCutInRange = G4Electron::Electron()->GetCuts(); - if(electronCutInRange != lastelectronCutInRange) - BuildLambdaTable(aParticleType) ; + if( !EqualCutVectors(G4Electron::Electron() + ->GetLengthCuts(), lastelectronCutInRange)) + BuildLambdaTable(ParticleType); - G4VMuEnergyLoss::BuildDEDXTable(aParticleType) ; + G4VMuEnergyLoss::BuildDEDXTable(ParticleType); - if(&aParticleType == theMuonPlus) - PrintInfoDefinition() ; + if(&ParticleType == G4MuonPlus::MuonPlus()) PrintInfoDefinition(); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) { - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; + // Build tables of dE/dx due to the ionization process + // the tables are built for *MATERIALS* - G4double LowEdgeEnergy , ionloss ; - G4double deltaloss ; - G4double RateMass ; - //G4bool isOutRange ; - static const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - const G4double twoln10 = 2.*log(10.) ; - const G4double Factor = twopi_mc2_rcl2 ; - const G4double bg2lim = 0.0169 , taulim = 8.4146e-3 ; + // create table + // + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - ParticleMass = aParticleType.GetPDGMass() ; - RateMass = electron_mass_c2/ParticleMass ; - - G4int numOfMaterials = theMaterialTable->length(); - - if ( theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - theLossTable = new G4PhysicsTable(numOfMaterials); - - for (G4int J=0; JclearAndDestroy(); delete theLossTable;} + theLossTable = new G4PhysicsTable(numOfMaterials); - G4double ElectronDensity,Eexc,Eexc2,Cden,Mden,Aden,X0den,X1den,taul ; - G4double* ShellCorrectionVector; - - const G4Material* material= (*theMaterialTable)[J]; + // get delta cut in energy + G4double* DeltaCutInKineticEnergy = (G4Electron::Electron())->GetEnergyCuts(); + + // loop for materials + // + for (G4int J=0; JGetElectronDensity(); - Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); - Eexc2 = Eexc*Eexc ; - Cden = material->GetIonisation()->GetCdensity(); - Mden = material->GetIonisation()->GetMdensity(); - Aden = material->GetIonisation()->GetAdensity(); - X0den = material->GetIonisation()->GetX0density(); - X1den = material->GetIonisation()->GetX1density(); - taul = material->GetIonisation()->GetTaul() ; - ShellCorrectionVector = material->GetIonisation() - ->GetShellCorrectionVector(); - - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector= - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements= - material->GetNumberOfElements() ; - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ; - - G4double tau,Tmax,gamma,bg2,beta2,rcut,delta,x,sh ; - for (G4int i = 0 ; i < TotBin ; i++) + // now comes the loop for the kinetic energy values + // + for (G4int i = 0 ; i < TotBin ; i++) { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - tau = LowEdgeEnergy/ParticleMass ; - gamma = tau +1. ; - bg2 = tau*(tau+2.) ; - beta2 = bg2/(gamma*gamma) ; - Tmax = 2.*electron_mass_c2*bg2 - /(1.+2.*gamma*RateMass+RateMass*RateMass) ; - - if ( tau < taul ) - // low energy part , parametrized energy loss formulae - { - ionloss = 0. ; - deltaloss = 0. ; - - for (G4int iel=0; ielGetIonisation()->GetTau0()) - ionloss += theAtomicNumDensityVector[iel] - *( element->GetIonisation()->GetAlow()*sqrt(tau) - +element->GetIonisation()->GetBlow()*tau) ; - else - ionloss += theAtomicNumDensityVector[iel] - * element->GetIonisation()->GetClow()/sqrt(tau) ; - } - if ( DeltaCutInKineticEnergyNow < Tmax) - { - deltaloss = log(Tmax/DeltaCutInKineticEnergyNow)- - beta2*(1.-DeltaCutInKineticEnergyNow/Tmax) ; - if(aParticleType.GetPDGSpin() == 0.5) - deltaloss += 0.25*(Tmax-DeltaCutInKineticEnergyNow)* - (Tmax-DeltaCutInKineticEnergyNow)/ - (LowEdgeEnergy*LowEdgeEnergy+proton_mass_c2*proton_mass_c2) ; - deltaloss *= Factor*ElectronDensity/beta2 ; - } - ionloss -= deltaloss ; - } - else - // high energy part , Bethe-Bloch formula - { - - if ( DeltaCutInKineticEnergyNow < Tmax) - rcut = DeltaCutInKineticEnergyNow/Tmax ; - else - rcut = 1.; - - ionloss = log(2.*electron_mass_c2*bg2*Tmax/Eexc2) - +log(rcut)-(1.+rcut)*beta2 ; - - // density correction - x = log(bg2)/twoln10 ; - if ( x < X0den ) - delta = 0. ; - else - { - delta = twoln10*x - Cden ; - if ( x < X1den ) - delta += Aden*pow((X1den-x),Mden) ; - } - - // shell correction - if ( bg2 > bg2lim ) { - sh = 0. ; - x = 1. ; - for (G4int k=0; k<=2; k++) { - x *= bg2 ; - sh += ShellCorrectionVector[k]/x; - } - } - else { - sh = 0. ; - x = 1. ; - for (G4int k=0; k<=2; k++) { - x *= bg2lim ; - sh += ShellCorrectionVector[k]/x; - } - sh *= log(tau/taul)/log(taulim/taul) ; - } - - ionloss -= delta + sh ; - ionloss /= beta2 ; - - // correction of R. Kokoulin // has been taken out *************** - // G4double E = LowEdgeEnergy+ParticleMass ; - // G4double epmax = RateMass*E*E/(RateMass*E+ParticleMass) ; - // G4double apar = log(2.*epmax/electron_mass_c2) ; - // ionloss += fine_structure_const*(log(2.*E/ParticleMass)-apar/3.)* - // apar*apar/twopi ; - - ionloss *= Factor*ElectronDensity ; - } - if ( ionloss <= 0.) - ionloss = 0. ; - aVector->PutValue(i,ionloss) ; + G4double dEdx = ComputeRestrictedMeandEdx(aParticleType, + aVector->GetLowEdgeEnergy(i), + material, + DeltaThreshold); + aVector->PutValue(i,dEdx); } - theLossTable->insert(aVector); + theLossTable->insert(aVector); } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) { - // Build mean free path tables for the delta ray production process - G4double LowEdgeEnergy, Value ,sigma ; - //G4bool isOutRange ; - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); + // Build mean free path tables for the delta ray production process + // tables are built for MATERIALS - G4int numOfMaterials = theMaterialTable->length(); + //create table + // + + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } + if (theMeanFreePathTable) + {theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} - theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); + theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); - // get electron and particle cuts in kinetic energy - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; + // get electron cut in kinetic energy + G4double* DeltaCutInKineticEnergy = (G4Electron::Electron())->GetEnergyCuts(); + + // loop for materials - for (G4int J=0 ; J < numOfMaterials; J++) - { - G4PhysicsLogVector* aVector = new G4PhysicsLogVector( + for (G4int J=0 ; J < numOfMaterials; J++) + { + //create physics vector then fill it .... + G4PhysicsLogVector* aVector = new G4PhysicsLogVector( LowerBoundLambda,UpperBoundLambda,NbinLambda); - const G4Material* material= (*theMaterialTable)[J]; - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector(); - const G4int NumberOfElements= - material->GetNumberOfElements() ; - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[J] ; + // compute the (macroscopic) cross section first + + const G4Material* material= (*theMaterialTable)[J]; + const G4ElementVector* theElementVector = material->GetElementVector(); + const G4double* NbOfAtomsPerVolume = material->GetVecNbOfAtomsPerVolume(); + G4int NumberOfElements = material->GetNumberOfElements(); + + // get the electron kinetic energy cut for the actual material, + // it will be used in ComputeCrossSectionPerAtom + // ( --> it will be the same for all the elements in this material) + G4double DeltaThreshold =DeltaCutInKineticEnergy[J]; - for ( G4int i = 0 ; i < NbinLambda ; i++ ) - { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - sigma = 0. ; - - // check threshold here ! - G4double Tmax = 2.*electron_mass_c2*LowEdgeEnergy* - (LowEdgeEnergy+2.*ParticleMass)/ - (ParticleMass*ParticleMass+2.*electron_mass_c2* - (LowEdgeEnergy+ParticleMass)+ - electron_mass_c2*electron_mass_c2) ; - - if(Tmax > DeltaCutInKineticEnergyNow) - { - for (G4int iel=0; ielGetZ() ) ; + G4double LowEdgeEnergy = aVector->GetLowEdgeEnergy(i); + G4double sigma = 0.; + for (G4int iel=0; ielGetZ(), + DeltaThreshold); + } + + // mean free path = 1./macroscopic cross section + G4double Value = sigma > DBL_MIN ? 1./sigma : DBL_MAX; + aVector->PutValue(i, Value); } - } - - Value = sigma<=0 ? DBL_MAX : 1./sigma ; - - aVector->PutValue(i, Value) ; + theMeanFreePathTable->insert(aVector); } - - theMeanFreePathTable->insert(aVector); - } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4double G4MuIonisation::ComputeMicroscopicCrossSection( +G4double G4MuIonisation::ComputeRestrictedMeandEdx ( const G4ParticleDefinition& aParticleType, G4double KineticEnergy, - G4double AtomicNumber) + const G4Material* material, + G4double DeltaThreshold) { - const G4double xgi[] = {0.06943,0.33001,0.66999,0.93057} ; - const G4double wgi[] = {0.17393,0.32607,0.32607,0.17393} ; - const G4double ak1 = 4.6 ; - const G4int k2 = 2 ; - const G4double masspar = 0.5*ParticleMass*ParticleMass/electron_mass_c2 ; - G4double TotalEnergy=KineticEnergy + ParticleMass; - G4double KnockonMaxEnergy = TotalEnergy/(1.+masspar/TotalEnergy) ; - - G4double TotalCrossSection= 0. ; - - if( KnockonMaxEnergy > DeltaCutInKineticEnergyNow ) - { - G4double aaa = log(DeltaCutInKineticEnergyNow); - G4double bbb = log(KnockonMaxEnergy) ; - G4int kkk = int((bbb-aaa)/ak1)+k2 ; - G4double hhh = (bbb-aaa)/kkk ; - G4double step = exp(hhh) ; - G4double ymax = 1./KnockonMaxEnergy ; - - for (G4int k=0; kGetElectronDensity(); + G4double Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); + G4double Eexc2 = Eexc*Eexc; + + G4double tau = KineticEnergy/particleMass; + G4double gamma = tau + 1., bg2 = tau*(tau+2.), beta2 = bg2/(gamma*gamma); + G4double RateMass = electron_mass_c2/particleMass; + G4double Tmax=2.*electron_mass_c2*bg2/(1.+2.*gamma*RateMass+RateMass*RateMass); + + G4double taul = material->GetIonisation()->GetTaul(); + + G4double dEdx = 0.; + // + // high energy part , Bethe-Bloch formula + // + if (tau > taul) + { + G4double rcut = G4std::min(DeltaThreshold/Tmax, 1.); + dEdx = log(2.*electron_mass_c2*bg2*Tmax/Eexc2) + +log(rcut)-(1.+rcut)*beta2; + + //density correction + G4double Cden = material->GetIonisation()->GetCdensity(); + G4double Mden = material->GetIonisation()->GetMdensity(); + G4double Aden = material->GetIonisation()->GetAdensity(); + G4double X0den = material->GetIonisation()->GetX0density(); + G4double X1den = material->GetIonisation()->GetX1density(); + + const G4double twoln10 = 2.*log(10.); + G4double x = log(bg2)/twoln10; + G4double delta; + if (x < X0den) delta = 0.; + else {delta = twoln10*x - Cden; + if (x < X1den) delta += Aden*pow((X1den-x),Mden); + } + + // shell correction + G4double* ShellCorrectionVector = material->GetIonisation()-> + GetShellCorrectionVector(); + const G4double bg2lim = 0.0169, taulim = 8.4146e-3; + G4double sh = 0., xs = 1.; + if (bg2 > bg2lim) for (G4int k=0; k<3; k++) + {xs *= bg2; sh += ShellCorrectionVector[k]/xs;} + else { for (G4int k=0; k<3; k++) + {xs *= bg2lim; sh += ShellCorrectionVector[k]/xs;} + sh *= log(tau/taul)/log(taulim/taul); + } + + // now you can compute the total ionization loss + dEdx -= (delta + sh); dEdx /= beta2; + + // correction of R. Kokoulin // has been taken out *************** + // G4double E = KineticEnergy+particleMass; + // G4double epmax = RateMass*E*E/(RateMass*E+particleMass); + // G4double apar = log(2.*epmax/electron_mass_c2); + // dEdx += fine_structure_const*(log(2.*E/particleMass)-apar/3.)* + // apar*apar/twopi; + + dEdx *= twopi_mc2_rcl2*ElectronDensity; + if (dEdx < 0.) dEdx = 0.; + } + // + // low energy part , parametrized energy loss formulae + // + if (tau <= taul) + { + // get elements in the actual material, + const G4ElementVector* theElementVector = material->GetElementVector(); + const G4double* NbOfAtomsPerVolume=material->GetVecNbOfAtomsPerVolume(); + G4int NumberOfElements = material->GetNumberOfElements(); + + // loop for the elements in the material + dEdx = 0.; + for (G4int iel=0; ielGetIonisation()->GetTau0()) + dEdx += NbOfAtomsPerVolume[iel] + *(element->GetIonisation()->GetAlow()*sqrt(tau) + + element->GetIonisation()->GetBlow()*tau); + else + dEdx += NbOfAtomsPerVolume[iel] + * element->GetIonisation()->GetClow()/sqrt(tau); + } + G4double deltaloss = 0.; + if (DeltaThreshold < Tmax) + { + deltaloss = log(Tmax/DeltaThreshold)- + beta2*(1.-DeltaThreshold/Tmax) ; + if (aParticleType.GetPDGSpin() == 0.5) + deltaloss += 0.25*(Tmax-DeltaThreshold)*(Tmax-DeltaThreshold)/ + (KineticEnergy*KineticEnergy+proton_mass_c2*proton_mass_c2); + deltaloss *= twopi_mc2_rcl2*ElectronDensity/beta2; + } + dEdx -= deltaloss; + if (dEdx < 0.) dEdx = 0.; + } + return dEdx; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MuIonisation::ComputeCrossSectionPerAtom( + const G4ParticleDefinition& aParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double DeltaThreshold) +{ + // calculates the totalcross section per atom in GEANT4 internal units + // ( it is called for elements , AtomicNumber = Z ) + // + + G4double particleMass = aParticleType.GetPDGMass(); + G4double TotalEnergy = KineticEnergy + particleMass; + G4double tempvar = particleMass+electron_mass_c2; + G4double KnockonMaxEnergy = 2.*electron_mass_c2*KineticEnergy + *(TotalEnergy+particleMass) + /(tempvar*tempvar+2.*electron_mass_c2*KineticEnergy); + + G4double TotalCrossSection = 0.; + if (KnockonMaxEnergy <= DeltaThreshold) return TotalCrossSection; + + const G4double xgi[] = {0.06943,0.33001,0.66999,0.93057}; + const G4double wgi[] = {0.17393,0.32607,0.32607,0.17393}; + const G4double ak1 = 4.6; + const G4int k2 = 2; + + G4double aaa = log(DeltaThreshold); + G4double bbb = log(KnockonMaxEnergy); + G4int kkk = int((bbb-aaa)/ak1)+k2; + G4double hhh = (bbb-aaa)/kkk; + G4double step = exp(hhh); + G4double ymax = 1./KnockonMaxEnergy; + + for (G4int k=0; k= KnockonMaxEnergy) return DifCrossSection; - if(KnockonEnergy >= KnockonMaxEnergy) return DCrossSection ; - - G4double v = KnockonEnergy/TotalEnergy ; - DCrossSection = twopi_mc2_rcl2*AtomicNumber* - (1.-KnockonEnergy/KnockonMaxEnergy+0.5*v*v)/ - (KnockonEnergy*KnockonEnergy) ; - G4double a1 = log(1.+2.*KnockonEnergy/electron_mass_c2) ; + G4double v = KnockonEnergy/TotalEnergy; + DifCrossSection = twopi_mc2_rcl2*AtomicNumber* + (1.-betasquare*KnockonEnergy/KnockonMaxEnergy+0.5*v*v)/ + (betasquare*KnockonEnergy*KnockonEnergy); + G4double a1 = log(1.+2.*KnockonEnergy/electron_mass_c2); G4double a3 = log(4.*TotalEnergy*(TotalEnergy-KnockonEnergy)/ - (ParticleMass*ParticleMass)) ; - DCrossSection *= (1.+alphaprime*a1*(a3-a1)) ; + (particleMass*particleMass)); + DifCrossSection *= (1.+alphaprime*a1*(a3-a1)); - return DCrossSection ; + return DifCrossSection; } -G4VParticleChange* G4MuIonisation::PostStepDoIt( - const G4Track& trackData, - const G4Step& stepData) +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4VParticleChange* G4MuIonisation::PostStepDoIt(const G4Track& trackData, + const G4Step& stepData) { - const G4DynamicParticle* aParticle ; - const G4double alphaprime = fine_structure_const/twopi ; - G4Material* aMaterial; - G4double KineticEnergy,TotalEnergy,TotalMomentum, - betasquare,MaxKineticEnergyTransfer, - DeltaKineticEnergy,DeltaTotalMomentum,costheta,sintheta,phi, - dirx,diry,dirz,finalKineticEnergy,finalPx,finalPy,finalPz, - x,xc,te2,grej,Psquare,Esquare,summass,rate,grejc,finalMomentum ; - G4double Charge ; - - aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; - aParticle = trackData.GetDynamicParticle() ; - Charge=aParticle->GetDefinition()->GetPDGCharge(); - KineticEnergy=aParticle->GetKineticEnergy(); - TotalEnergy=KineticEnergy + ParticleMass ; - Psquare=KineticEnergy*(TotalEnergy+ParticleMass) ; - Esquare=TotalEnergy*TotalEnergy ; - summass = ParticleMass + electron_mass_c2 ; - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection() ; - - DeltaCutInKineticEnergyNow = DeltaCutInKineticEnergy[aMaterial->GetIndex()]; - - // some kinematics...................... - betasquare=Psquare/Esquare ; - MaxKineticEnergyTransfer = 2.*electron_mass_c2*Psquare - /(summass*summass+2.*electron_mass_c2*KineticEnergy); - - // sampling kinetic energy of the delta ray - if( MaxKineticEnergyTransfer <= DeltaCutInKineticEnergyNow ) - { - // pathological case (it should not happen , - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - else - { - // normal case ...................................... - xc=DeltaCutInKineticEnergyNow/MaxKineticEnergyTransfer ; - rate=MaxKineticEnergyTransfer/TotalEnergy ; - te2=0.5*rate*rate ; - - // sampling follows ... - G4double a0=log(2.*TotalEnergy/ParticleMass) ; - grejc=(1.-betasquare*xc+te2*xc*xc)* - (1.+ alphaprime*a0*a0) ; - do { - x=xc/(1.-(1.-xc)*G4UniformRand()); - G4double twoep = 2.*x*MaxKineticEnergyTransfer ; - grej=(1.-x*(betasquare-x*te2))* - (1.+alphaprime*log(1.+twoep/electron_mass_c2)* - (a0+log((2.*TotalEnergy-twoep)/ParticleMass)- - log(1.+twoep/electron_mass_c2))) - /grejc ; - - } while( G4UniformRand()>grej ); - } + aParticleChange.Initialize(trackData); - DeltaKineticEnergy = x * MaxKineticEnergyTransfer ; + G4Material* aMaterial = trackData.GetMaterial(); + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); - if(DeltaKineticEnergy <= 0.) - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + G4double particleMass = aParticle->GetDefinition()->GetPDGMass(); + G4double KineticEnergy = aParticle->GetKineticEnergy(); + G4double TotalEnergy = KineticEnergy + particleMass; + G4double Psquare = KineticEnergy*(TotalEnergy+particleMass); + G4double Esquare = TotalEnergy*TotalEnergy; + G4double betasquare=Psquare/Esquare; + G4double summass = particleMass + electron_mass_c2; + G4double MaxKineticEnergyTransfer = 2.*electron_mass_c2*Psquare + /(summass*summass+2.*electron_mass_c2*KineticEnergy); + G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection(); + + // get electron cut in kinetic energy + G4double* DeltaCutInKineticEnergy = (G4Electron::Electron())->GetEnergyCuts(); + G4double DeltaThreshold = DeltaCutInKineticEnergy[aMaterial->GetIndex()]; - DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + - 2. * electron_mass_c2 )) ; - TotalMomentum = sqrt(Psquare) ; - costheta = DeltaKineticEnergy * (TotalEnergy + electron_mass_c2) - /(DeltaTotalMomentum * TotalMomentum) ; + // sampling kinetic energy of the delta ray + // + if (MaxKineticEnergyTransfer <= DeltaThreshold) + // pathological case (it should not happen, there is no change at all) + return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - // protection against costheta > 1 or < -1 --------------- - if ( costheta < -1. ) - costheta = -1. ; - if ( costheta > +1. ) - costheta = +1. ; + // normal case + G4double xc = DeltaThreshold/MaxKineticEnergyTransfer; + G4double rate = MaxKineticEnergyTransfer/TotalEnergy; + G4double te2 = 0.5*rate*rate; + + // sampling follows ... + G4double x,twoep,a1,grej; + const G4double alphaprime = fine_structure_const/twopi; + G4double a0=log(2.*TotalEnergy/particleMass); + G4double grejc=(1.-xc*(betasquare*xc-xc*te2))*(1.+ alphaprime*a0*a0); + do { x=xc/(1.-(1.-xc)*G4UniformRand()); + twoep = 2.*x*MaxKineticEnergyTransfer; + a1 = log(1.+twoep/electron_mass_c2); + grej = (1.-x*(betasquare-x*te2))*(1.+alphaprime*a1* + (a0+log((2.*TotalEnergy-twoep)/particleMass)-a1))/grejc ; + } while(G4UniformRand() > grej); + + G4double DeltaKineticEnergy = x * MaxKineticEnergyTransfer; - // direction of the delta electron ........ - phi = twopi * G4UniformRand() ; - sintheta = sqrt((1.+costheta)*(1.-costheta)); - dirx = sintheta * cos(phi) ; - diry = sintheta * sin(phi) ; - dirz = costheta ; - G4ThreeVector DeltaDirection(dirx,diry,dirz) ; - DeltaDirection.rotateUz(ParticleDirection) ; - - // create G4DynamicParticle object for delta ray - G4DynamicParticle *theDeltaRay = new G4DynamicParticle; - theDeltaRay->SetKineticEnergy( DeltaKineticEnergy ); - theDeltaRay->SetMomentumDirection( - DeltaDirection.x(),DeltaDirection.y(),DeltaDirection.z()); - theDeltaRay->SetDefinition(G4Electron::Electron()); - finalKineticEnergy = KineticEnergy - DeltaKineticEnergy ; - if (finalKineticEnergy > 0. ) - { - finalPx = TotalMomentum*ParticleDirection.x() - - DeltaTotalMomentum*DeltaDirection.x(); - finalPy = TotalMomentum*ParticleDirection.y() - - DeltaTotalMomentum*DeltaDirection.y(); - finalPz = TotalMomentum*ParticleDirection.z() - - DeltaTotalMomentum*DeltaDirection.z(); - finalMomentum = - sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz) ; - finalPx /= finalMomentum ; - finalPy /= finalMomentum ; - finalPz /= finalMomentum ; - - aParticleChange.SetMomentumChange( finalPx,finalPy,finalPz ); - } - else - { - finalKineticEnergy = 0. ; - aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetEnergyChange( finalKineticEnergy ); - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( theDeltaRay ); - aParticleChange.SetLocalEnergyDeposit (0.); - + if (DeltaKineticEnergy <= 0.) return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + + G4double DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + + 2. * electron_mass_c2 )); + G4double TotalMomentum = sqrt(Psquare); + G4double costheta = DeltaKineticEnergy * (TotalEnergy + electron_mass_c2) + /(DeltaTotalMomentum * TotalMomentum); + + if (costheta < -1.) costheta = -1.; + if (costheta > +1.) costheta = +1.; + + // direction of the delta electron + // + G4double phi = twopi * G4UniformRand(); + G4double sintheta = sqrt((1.+costheta)*(1.-costheta)); + G4double dirx = sintheta*cos(phi), diry = sintheta*sin(phi), dirz = costheta; + + G4ThreeVector DeltaDirection(dirx,diry,dirz); + DeltaDirection.rotateUz(ParticleDirection); + + // create G4DynamicParticle object for delta ray + // + G4DynamicParticle *theDeltaRay = new G4DynamicParticle; + theDeltaRay->SetKineticEnergy( DeltaKineticEnergy ); + theDeltaRay->SetMomentumDirection( + DeltaDirection.x(),DeltaDirection.y(),DeltaDirection.z()); + theDeltaRay->SetDefinition(G4Electron::Electron()); + + // fill aParticleChange + // + G4double finalKineticEnergy = KineticEnergy - DeltaKineticEnergy; + + if (finalKineticEnergy > 0.) + { + G4double finalPx = TotalMomentum*ParticleDirection.x() + - DeltaTotalMomentum*DeltaDirection.x(); + G4double finalPy = TotalMomentum*ParticleDirection.y() + - DeltaTotalMomentum*DeltaDirection.y(); + G4double finalPz = TotalMomentum*ParticleDirection.z() + - DeltaTotalMomentum*DeltaDirection.z(); + G4double finalMomentum = + sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz); + finalPx /= finalMomentum; + finalPy /= finalMomentum; + finalPz /= finalMomentum; + aParticleChange.SetMomentumChange(finalPx,finalPy,finalPz); + } + else + { + finalKineticEnergy = 0.; + aParticleChange.SetStatusChange(fStopButAlive); + } + + aParticleChange.SetEnergyChange( finalKineticEnergy ); + aParticleChange.SetNumberOfSecondaries(1); + aParticleChange.AddSecondary(theDeltaRay); + aParticleChange.SetLocalEnergyDeposit (0.); + + //ResetNumberOfInteractionLengthLeft(); +return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4MuIonisation::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + if ( !theLossTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4MuIonisation::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theLossTable and theMeanFreePathTable + if (theLossTable != 0) { + theLossTable->clearAndDestroy(); + delete theLossTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); + + G4String filename; + + // retreive stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + theLossTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theLossTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable0->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + + if (particle->GetPDGCharge() > 0.) + { + RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable; + CounterOfmuplusProcess++; + } + else + { + RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable; + CounterOfmuminusProcess++; + } + + + G4VMuEnergyLoss::BuildDEDXTable(*particle); + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuIonisation::PrintInfoDefinition() { - G4String comments = "knock-on electron cross sections .\n "; - comments += " Good description above the mean excitation energy.\n"; - comments += " delta ray energy sampled from differential Xsection." ; + G4String comments = " Knock-on electron cross sections . " + "\n Good description above the mean excitation energy.\n" + " delta ray energy sampled from differential Xsection."; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda, - "Energy") + << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda, + "Energy") << " to " << G4BestUnit(UpperBoundLambda,"Energy") - << " in " << NbinLambda << " bins. \n"; + << " in " << TotBin << " bins. \n"; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc b/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc index 70c0bb4f07..3270c7710b 100644 --- a/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc +++ b/source/processes/electromagnetic/muons/src/G4MuPairProduction.cc @@ -21,51 +21,57 @@ // ******************************************************************** // // -// $Id: G4MuPairProduction.cc,v 1.17.2.2 2001/06/28 20:19:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuPairProduction.cc,v 1.26 2001/11/09 13:52:32 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4MuPairProduction physics process --------- +//--------------- G4MuPairProduction physics process --------------------------- // by Laszlo Urban, May 1998 -// ************************************************************** -// 04-06-98, in DoIt,secondary production condition:range>G4std::min(threshold,safety) -// 26/10/98, new stuff from R. Kokoulin + cleanup , L.Urban -// 06/05/99 , bug fixed , L.Urban -// 10/02/00 modifications+bug fix , new e.m. structure, L.Urban -// 29/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- +//------------------------------------------------------------------------------ +// 04-06-98 in DoIt,secondary production condition: +// range>G4std::min(threshold,safety) +// 26/10/98 new stuff from R. Kokoulin + cleanup , L.Urban +// 06/05/99 bug fixed , L.Urban +// 10/02/00 modifications+bug fix , new e.m. structure, L.Urban +// 29/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 10-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 17-09-01 migration of Materials to pure STL (mma) +// 20-09-01 (L.Urban) in ComputeMicroscopicCrossSection, remove: +// if(MaxPairEnergyGetCuts(); - if(electronCutInRange != lastelectronCutInRange) + G4double* electronCutInRange = G4Electron::Electron()->GetLengthCuts(); + if( !EqualCutVectors(electronCutInRange, lastelectronCutInRange)) BuildLambdaTable(aParticleType) ; - G4VMuEnergyLoss::BuildDEDXTable(aParticleType) ; + G4VMuEnergyLoss::BuildDEDXTable(aParticleType); - if(&aParticleType==theMuonPlus) - PrintInfoDefinition() ; + if(&aParticleType==G4MuonPlus::MuonPlus()) PrintInfoDefinition(); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuPairProduction::BuildLossTable( const G4ParticleDefinition& aParticleType) { @@ -124,11 +163,11 @@ void G4MuPairProduction::BuildLossTable( const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - ParticleMass = aParticleType.GetPDGMass() ; - ElectronCutInKineticEnergy = (*theElectron).GetEnergyCuts() ; - PositronCutInKineticEnergy = (*thePositron).GetEnergyCuts() ; + G4double particleMass = aParticleType.GetPDGMass(); + ElectronCutInKineticEnergy = G4Electron::Electron()->GetEnergyCuts(); + PositronCutInKineticEnergy = G4Positron::Positron()->GetEnergyCuts(); - G4int numOfMaterials = theMaterialTable->length() ; + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if (theLossTable) { theLossTable->clearAndDestroy(); @@ -154,7 +193,7 @@ void G4MuPairProduction::BuildLossTable( for (G4int i=0; iGetLowEdgeEnergy(i) ; - TotalEnergy = KineticEnergy+ParticleMass ; + TotalEnergy = KineticEnergy+particleMass ; eCut = ElectronCutInKineticEnergyNow ; pCut = PositronCutInKineticEnergyNow ; @@ -166,7 +205,7 @@ void G4MuPairProduction::BuildLossTable( pairloss = 0.; for (G4int iel=0; ielGetZ(); + Z=(*theElementVector)[iel]->GetZ(); natom = theAtomicNumDensityVector[iel] ; loss = ComputePairLoss(&aParticleType, Z,KineticEnergy,eCut,pCut) ; @@ -181,6 +220,8 @@ void G4MuPairProduction::BuildLossTable( } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4double G4MuPairProduction::ComputePairLoss( const G4ParticleDefinition* ParticleType, G4double AtomicNumber, @@ -204,8 +245,9 @@ G4double G4MuPairProduction::ComputePairLoss( G4double CutInPairEnergy = ElectronEnergyCut+PositronEnergyCut +2.*electron_mass_c2 ; if( CutInPairEnergy <= MinPairEnergy ) return loss ; - - G4double MaxPairEnergy = KineticEnergy+ParticleMass*(1.-0.75*sqrte*z13) ; + + G4double particleMass = ParticleType->GetPDGMass(); + G4double MaxPairEnergy = KineticEnergy+particleMass*(1.-0.75*sqrte*z13) ; if(MaxPairEnergy < MinPairEnergy) MaxPairEnergy = MinPairEnergy ; @@ -239,7 +281,8 @@ G4double G4MuPairProduction::ComputePairLoss( if (loss < 0.) loss = 0.; return loss ; } - + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4MuPairProduction::BuildLambdaTable( const G4ParticleDefinition& ParticleType) @@ -282,6 +325,8 @@ void G4MuPairProduction::BuildLambdaTable( } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuPairProduction::ComputePartialSumSigma( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, @@ -292,8 +337,8 @@ void G4MuPairProduction::ComputePartialSumSigma( const G4ElementVector* theElementVector = aMaterial->GetElementVector(); const G4double* theAtomNumDensityVector = aMaterial-> GetAtomicNumDensityVector(); - G4double ElectronEnergyCut = (G4Electron::GetCutsInEnergy())[Imate]; - G4double PositronEnergyCut = (G4Positron::GetCutsInEnergy())[Imate]; + G4double ElectronEnergyCut = (G4Electron::Electron()->GetEnergyCuts())[Imate]; + G4double PositronEnergyCut = (G4Positron::Positron()->GetEnergyCuts())[Imate]; PartialSumSigma[Imate] = new G4DataVector(); @@ -303,13 +348,15 @@ void G4MuPairProduction::ComputePartialSumSigma( { SIGMA += theAtomNumDensityVector[Ielem] * ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), + (*theElementVector)[Ielem]->GetZ(), ElectronEnergyCut,PositronEnergyCut ); PartialSumSigma[Imate]->push_back(SIGMA); } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4double G4MuPairProduction::ComputeMicroscopicCrossSection( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, @@ -337,10 +384,9 @@ G4double G4MuPairProduction::ComputeMicroscopicCrossSection( if( CutInPairEnergy < 4.*electron_mass_c2 ) CutInPairEnergy = 4.*electron_mass_c2 ; - - G4double MaxPairEnergy = KineticEnergy+ParticleMass*(1.-0.75*sqrte*z13) ; - if(MaxPairEnergy < CutInPairEnergy) - MaxPairEnergy = CutInPairEnergy ; + + G4double particleMass = ParticleType->GetPDGMass(); + G4double MaxPairEnergy = KineticEnergy+particleMass*(1.-0.75*sqrte*z13) ; if( CutInPairEnergy >= MaxPairEnergy ) return CrossSection ; G4double aaa,bbb,hhh,x,epln,ep ; @@ -370,6 +416,8 @@ G4double G4MuPairProduction::ComputeMicroscopicCrossSection( return CrossSection; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuPairProduction::MakeSamplingTables( const G4ParticleDefinition* ParticleType) { @@ -378,6 +426,7 @@ void G4MuPairProduction::MakeSamplingTables( G4double c,y,ymin,ymax,dy,yy,dx,x,ep ; static const G4double sqrte = sqrt(exp(1.)) ; + G4double particleMass = ParticleType->GetPDGMass(); for (G4int iz=0; izGetPDGMass(); + G4double massratio = particleMass/electron_mass_c2 ; G4double massratio2 = massratio*massratio ; - G4double TotalEnergy = KineticEnergy + ParticleMass ; + G4double TotalEnergy = KineticEnergy + particleMass ; G4double z13 = exp(log(AtomicNumber)/3.) ; G4double z23 = z13*z13 ; G4double EnergyLoss = TotalEnergy - PairEnergy ; - G4double c3 = 3.*sqrte*ParticleMass/4. ; + G4double c3 = 3.*sqrte*particleMass/4. ; G4double DDCrossSection = 0. ; @@ -462,7 +513,7 @@ G4double G4MuPairProduction::ComputeDDMicroscopicCrossSection( return DDCrossSection ; G4double c7 = 4.*electron_mass_c2 ; - G4double c8 = 6.*ParticleMass*ParticleMass ; + G4double c8 = 6.*particleMass*particleMass ; G4double alf = c7/PairEnergy ; G4double a3 = 1. - alf ; @@ -483,10 +534,10 @@ G4double G4MuPairProduction::ComputeDDMicroscopicCrossSection( g1 = g1tf ; g2 = g2tf ; } - zeta1 = 0.073 * log(TotalEnergy/(ParticleMass+g1*z23*TotalEnergy))-0.26 ; + zeta1 = 0.073 * log(TotalEnergy/(particleMass+g1*z23*TotalEnergy))-0.26 ; if( zeta1 > 0.) { - zeta2 = 0.058*log(TotalEnergy/(ParticleMass+g2*z13*TotalEnergy))-0.14 ; + zeta2 = 0.058*log(TotalEnergy/(particleMass+g2*z13*TotalEnergy))-0.14 ; zeta = zeta1/zeta2 ; } else @@ -560,6 +611,8 @@ G4double G4MuPairProduction::ComputeDDMicroscopicCrossSection( return DDCrossSection ; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4MuPairProduction::GetDMicroscopicCrossSection( const G4ParticleDefinition* ParticleType, @@ -569,7 +622,9 @@ G4double G4MuPairProduction::GetDMicroscopicCrossSection( return ComputeDMicroscopicCrossSection(ParticleType,KineticEnergy, AtomicNumber,PairEnergy) ; } - + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4double G4MuPairProduction::ComputeDMicroscopicCrossSection( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, G4double AtomicNumber, @@ -586,9 +641,10 @@ G4double G4MuPairProduction::ComputeDMicroscopicCrossSection( G4double DCrossSection = 0. ; - G4double TotalEnergy = KineticEnergy + ParticleMass ; + G4double particleMass = ParticleType->GetPDGMass(); + G4double TotalEnergy = KineticEnergy + particleMass; G4double EnergyLoss = TotalEnergy - PairEnergy ; - G4double a = 6.*ParticleMass*ParticleMass/(TotalEnergy*EnergyLoss) ; + G4double a = 6.*particleMass*particleMass/(TotalEnergy*EnergyLoss) ; G4double b = 4.*electron_mass_c2/PairEnergy ; if((b+2.*a*(1.-b))/(1.+(1.-a)*sqrt(1.-b)) <= 0.) return DCrossSection ; @@ -613,7 +669,9 @@ G4double G4MuPairProduction::ComputeDMicroscopicCrossSection( return DCrossSection ; } - + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData, const G4Step& stepData) { @@ -622,15 +680,16 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData, aParticleChange.Initialize(trackData); G4Material* aMaterial=trackData.GetMaterial() ; const G4DynamicParticle* aDynamicParticle=trackData.GetDynamicParticle(); - G4double KineticEnergy = aDynamicParticle->GetKineticEnergy(); + G4double KineticEnergy = aDynamicParticle->GetKineticEnergy(); + G4double particleMass = aDynamicParticle->GetDefinition()->GetPDGMass(); G4ParticleMomentum ParticleDirection = aDynamicParticle->GetMomentumDirection(); // e-e+ cut in this material G4double ElectronEnergyCut = electron_mass_c2+ - ((*G4Electron::Electron()).GetCutsInEnergy())[aMaterial->GetIndex()]; + G4Electron::Electron()->GetEnergyThreshold(aMaterial); G4double PositronEnergyCut = electron_mass_c2+ - ((*G4Positron::Positron()).GetCutsInEnergy())[aMaterial->GetIndex()]; + G4Positron::Positron()->GetEnergyThreshold(aMaterial); G4double CutInPairEnergy = ElectronEnergyCut + PositronEnergyCut ; if (CutInPairEnergy < MinPairEnergy) CutInPairEnergy = MinPairEnergy ; @@ -643,10 +702,10 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData, G4Element* anElement = SelectRandomAtom(aMaterial); // limits of the energy sampling - G4double TotalEnergy = KineticEnergy + ParticleMass ; - //G4double TotalMomentum = sqrt(KineticEnergy*(TotalEnergy+ParticleMass)) ; + G4double TotalEnergy = KineticEnergy + particleMass ; + //G4double TotalMomentum = sqrt(KineticEnergy*(TotalEnergy+particleMass)) ; G4double Z3 = anElement->GetIonisation()->GetZ3() ; - G4double MaxPairEnergy = TotalEnergy-0.75*esq*ParticleMass*Z3 ; + G4double MaxPairEnergy = TotalEnergy-0.75*esq*particleMass*Z3 ; if(MinPairEnergy >= MaxPairEnergy) return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); @@ -716,7 +775,7 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData, PairEnergy = MinPairEnergy*exp(x*log(MaxPairEnergy/MinPairEnergy)) ; // sample r=(E+-E-)/PairEnergy ( uniformly .....) - G4double rmax = (1.-6.*ParticleMass*ParticleMass/(TotalEnergy* + G4double rmax = (1.-6.*particleMass*particleMass/(TotalEnergy* (TotalEnergy-PairEnergy))) *sqrt(1.-MinPairEnergy/PairEnergy) ; r = rmax * (-1.+2.*G4UniformRand()) ; @@ -791,7 +850,7 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData, aParticleChange.AddSecondary( aParticle2 ) ; G4double NewKinEnergy = KineticEnergy - ElectronEnergy - PositronEnergy ; - //G4double finalMomentum=sqrt(NewKinEnergy*(NewKinEnergy+2.*ParticleMass)); + //G4double finalMomentum=sqrt(NewKinEnergy*(NewKinEnergy+2.*particleMass)); aParticleChange.SetMomentumChange( ParticleDirection ); @@ -814,6 +873,8 @@ G4VParticleChange* G4MuPairProduction::PostStepDoIt(const G4Track& trackData, return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + G4Element* G4MuPairProduction::SelectRandomAtom(G4Material* aMaterial) const { // select randomly 1 element within the material @@ -827,12 +888,124 @@ G4Element* G4MuPairProduction::SelectRandomAtom(G4Material* aMaterial) const for ( G4int i=0; i < NumberOfElements; i++ ) { - if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)(i)); + if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)[i]); } G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() << "' has no elements, NULL pointer returned." << G4endl; return NULL; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4MuPairProduction::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + if ( !theLossTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + // store PartialSumSigma table (G4OrderedTable) + filename = GetPhysicsTableFileName(particle,directory,"PartSumSigma",ascii); + if ( !PartialSumSigma.Store(filename, ascii) ){ + G4cout << " FAIL PartialSumSigma.store in " << filename + << G4endl; + return false; + } + G4cout << GetProcessName() << "for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4MuPairProduction::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theLossTable and theMeanFreePathTable + if (theLossTable != 0) { + theLossTable->clearAndDestroy(); + delete theLossTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + if (&PartialSumSigma != 0) PartialSumSigma.clear(); + + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); + + G4String filename; + + // retreive stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + theLossTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theLossTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable0->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retrieve PartialSumSigma table (G4OrderedTable) + filename = GetPhysicsTableFileName(particle,directory,"PartSumSigma",ascii); + if ( !PartialSumSigma.Retrieve(filename, ascii) ){ + G4cout << " FAIL PartialSumSigma.retrieve in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << "for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + + if (particle->GetPDGCharge() < 0.) + { + RecorderOfmuminusProcess[CounterOfmuminusProcess] = (*this).theLossTable; + CounterOfmuminusProcess++; + } + else + { + RecorderOfmuplusProcess[CounterOfmuplusProcess] = (*this).theLossTable; + CounterOfmuplusProcess++; + } + + MakeSamplingTables(particle); + + G4VMuEnergyLoss::BuildDEDXTable(*particle); + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4MuPairProduction::PrintInfoDefinition() { G4String comments = "theoretical cross sections \n "; @@ -845,4 +1018,5 @@ void G4MuPairProduction::PrintInfoDefinition() << " in " << NbinLambda << " bins. \n"; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/muons/src/G4VMuEnergyLoss.cc b/source/processes/electromagnetic/muons/src/G4VMuEnergyLoss.cc index c2f3e84cd8..4e510a0d05 100644 --- a/source/processes/electromagnetic/muons/src/G4VMuEnergyLoss.cc +++ b/source/processes/electromagnetic/muons/src/G4VMuEnergyLoss.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VMuEnergyLoss.cc,v 1.9.2.2 2001/06/28 20:19:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMuEnergyLoss.cc,v 1.19 2001/11/08 15:31:06 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -------------------------------------------------------------- // GEANT 4 class implementation file // @@ -40,12 +40,20 @@ // corrections due to new e.m. structure L.Urban 10/02/00 // signature in GetLossWithFluct changed L.Urban 30/10/00 // 29/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 10/09/01 L.Urban : loss+ mechanism (subcutoff delta rays) implemented +// 12/09/01 min.delta cut is set as rcut/100 + some optimisation, L.Urban +// 17-09-01 migration of Materials to pure STL (mma) +// 28-09-01 suppression of theMuonPlus ..etc..data members (mma) +// 29-10-01 all static functions no more inlined (mma) +// 08-11-01 some small cosmetics , L.Urban // -------------------------------------------------------------- #include "G4VMuEnergyLoss.hh" #include "G4EnergyLossTables.hh" #include "G4Poisson.hh" +#include "G4Navigator.hh" +#include "G4TransportationManager.hh" // Initialisation of static members ******************************************* @@ -82,6 +90,10 @@ G4double G4VMuEnergyLoss::UpperBoundEloss = 1000000.*TeV ; G4int G4VMuEnergyLoss::NbinEloss = 150 ; G4double G4VMuEnergyLoss::RTable,G4VMuEnergyLoss::LOGRTable; +G4double G4VMuEnergyLoss::cN = 0.077*MeV*cm2/g ; +G4int G4VMuEnergyLoss::Ndeltamax = 100 ; + + G4EnergyLossMessenger* G4VMuEnergyLoss::eLossMessenger = 0 ; // constructor and destructor @@ -89,12 +101,8 @@ G4EnergyLossMessenger* G4VMuEnergyLoss::eLossMessenger = 0 ; G4VMuEnergyLoss::G4VMuEnergyLoss(const G4String& processName) : G4VEnergyLoss (processName), theLossTable(0), - lastgammaCutInRange(0.), - lastelectronCutInRange(0.), - theElectron ( G4Electron::Electron() ), - thePositron ( G4Positron::Positron() ), - theMuonPlus ( G4MuonPlus::MuonPlus() ), - theMuonMinus ( G4MuonMinus::MuonMinus() ), + lastgammaCutInRange(0), + lastelectronCutInRange(0), theRangeCoeffATable(0), theRangeCoeffBTable(0), theRangeCoeffCTable(0) @@ -109,8 +117,29 @@ G4VMuEnergyLoss::~G4VMuEnergyLoss() } } + +void G4VMuEnergyLoss::SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;} + // Sets number of processes giving contribution to the energy loss + +void G4VMuEnergyLoss::PlusNbOfProcesses() {NbOfProcesses++ ;} + // Increases number of processes giving contribution to the energy loss + +void G4VMuEnergyLoss::MinusNbOfProcesses() {NbOfProcesses-- ;} + // Decreases number of processes giving contribution to the energy loss + +G4int G4VMuEnergyLoss::GetNbOfProcesses() {return NbOfProcesses;} + // Gets number of processes giving contribution to the energy loss + // ( default value = 3) + +void G4VMuEnergyLoss::SetLowerBoundEloss(G4double val) {LowerBoundEloss=val;} +void G4VMuEnergyLoss::SetUpperBoundEloss(G4double val) {UpperBoundEloss=val;} +void G4VMuEnergyLoss::SetNbinEloss(G4int nb) {NbinEloss=nb;} + +G4double G4VMuEnergyLoss::GetLowerBoundEloss() {return LowerBoundEloss;} +G4double G4VMuEnergyLoss::GetUpperBoundEloss() {return UpperBoundEloss;} +G4int G4VMuEnergyLoss::GetNbinEloss() {return NbinEloss;} - void G4VMuEnergyLoss::BuildDEDXTable( +void G4VMuEnergyLoss::BuildDEDXTable( const G4ParticleDefinition& aParticleType) { @@ -121,8 +150,10 @@ G4VMuEnergyLoss::~G4VMuEnergyLoss() //set physically consistent value for finalRange // and parameters for en.loss step limit - if(finalRange > G4Electron::Electron()->GetCuts()) - finalRange = G4Electron::Electron()->GetCuts() ; + for (size_t idxMate=0; idxMate (G4Electron::Electron()->GetLengthCuts())[idxMate]) + finalRange = (G4Electron::Electron()->GetLengthCuts())[idxMate]; + } c1lim = dRoverRange ; c2lim = 2.*(1.-dRoverRange)*finalRange ; c3lim = -(1.-dRoverRange)*finalRange*finalRange; @@ -130,32 +161,35 @@ G4VMuEnergyLoss::~G4VMuEnergyLoss() G4bool MakeTable ; ParticleMass = aParticleType.GetPDGMass() ; G4double Charge = aParticleType.GetPDGCharge()/eplus ; - G4double gammaCutInRange = G4Gamma::Gamma()->GetCuts(); - G4double electronCutInRange = G4Electron::Electron()->GetCuts(); + G4double* gammaCutInRange = G4Gamma::Gamma()->GetLengthCuts(); + G4double* electronCutInRange = G4Electron::Electron()->GetLengthCuts(); MakeTable = false ; // Create tables only if there are new cut values - if((gammaCutInRange == lastgammaCutInRange) && - (electronCutInRange == lastelectronCutInRange)) + if(EqualCutVectors(gammaCutInRange,lastgammaCutInRange) && + EqualCutVectors(electronCutInRange,lastelectronCutInRange)) { ; } else { + lastgammaCutInRange = CopyCutVectors(lastgammaCutInRange,gammaCutInRange); + lastelectronCutInRange = CopyCutVectors(lastelectronCutInRange,electronCutInRange); if((Charge > 0.)&&(CounterOfmuplusProcess==NbOfProcesses)) MakeTable = true ; if((Charge < 0.)&&(CounterOfmuminusProcess==NbOfProcesses)) MakeTable = true ; } + const G4MaterialTable* theMaterialTable= + G4Material::GetMaterialTable(); + + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); + if( MakeTable ) { // Build energy loss table as a sum of the energy loss due to the // different processes. - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - G4int numOfMaterials = theMaterialTable->length(); if( Charge >0.) { @@ -309,8 +343,55 @@ G4VMuEnergyLoss::~G4VMuEnergyLoss() (Charge > 0)? theProperTimemuplusTable: theProperTimemuminusTable, LowerBoundEloss, UpperBoundEloss, 1.,NbinEloss); - lastgammaCutInRange = gammaCutInRange ; - lastelectronCutInRange = electronCutInRange ; + + // create array for the min. delta cuts in kinetic energy + if(!setMinDeltaCutInRange) { + MinDeltaCutInRange = (G4Electron::Electron()->GetLengthCuts())[0]; + for (size_t idxMate=1; idxMate (G4Electron::Electron()->GetLengthCuts())[idxMate]) + MinDeltaCutInRange = (G4Electron::Electron()->GetLengthCuts())[idxMate]; + } + MinDeltaCutInRange *= 0.01; + } + // if((subSecFlag) && (aParticleType.GetParticleName()=="mu+")) + // { + // G4cout << G4endl; + // G4cout.precision(5) ; + // G4cout << " hIoni Minimum Delta cut in range=" << MinDeltaCutInRange/mm + // << " mm." << G4endl; + // G4cout << G4endl; + // G4cout << " material min.delta energy(keV) " << G4endl; + // G4cout << G4endl; + // } + + if(MinDeltaEnergy) {delete [] MinDeltaEnergy; MinDeltaEnergy=0;} + MinDeltaEnergy = new G4double [numOfMaterials]; + if(LowerLimitForced) {delete [] LowerLimitForced; LowerLimitForced=0;} + LowerLimitForced = new G4bool [numOfMaterials]; + G4double Tlowerlimit = 1.*keV ; + for(G4int mat=0; matG4Electron::Electron()->GetEnergyCuts()[mat]) + MinDeltaEnergy[mat]=G4Electron::Electron()->GetEnergyCuts()[mat] ; + + // if((subSecFlag) && (aParticleType.GetParticleName()=="mu+")) + // { + // G4cout << G4std::setw(20) << (*theMaterialTable)[mat]->GetName() + // << G4std::setw(15) << MinDeltaEnergy[mat]/keV ; + // if(LowerLimitForced[mat]) + // G4cout << " lower limit forced." << G4endl; + // else + // G4cout << G4endl ; + // } + } + } @@ -410,10 +491,10 @@ G4VParticleChange* G4VMuEnergyLoss::AlongStepDoIt( // get particle and material pointers from trackData const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); G4double E = aParticle->GetKineticEnergy() ; - G4double charge = aParticle->GetDefinition()->GetPDGCharge(); + G4double Charge = aParticle->GetDefinition()->GetPDGCharge(); G4Material* aMaterial = trackData.GetMaterial(); - //G4int index = aMaterial->GetIndex(); + G4int index = aMaterial->GetIndex(); G4double Step = stepData.GetStepLength(); @@ -441,10 +522,10 @@ G4VParticleChange* G4VMuEnergyLoss::AlongStepDoIt( if(Step/fRangeNow < linLossLimit) finalT = E-Step*fdEdx ; else { - if (charge<0.) finalT = G4EnergyLossTables::GetPreciseEnergyFromRange( - theMuonMinus,fRangeNow-Step,aMaterial); + if (Charge<0.) finalT = G4EnergyLossTables::GetPreciseEnergyFromRange( + G4MuonMinus::MuonMinus(),fRangeNow-Step,aMaterial); else finalT = G4EnergyLossTables::GetPreciseEnergyFromRange( - theMuonPlus,fRangeNow-Step,aMaterial); + G4MuonPlus::MuonPlus(),fRangeNow-Step,aMaterial); } } @@ -452,6 +533,212 @@ G4VParticleChange* G4VMuEnergyLoss::AlongStepDoIt( MeanLoss = E-finalT ; + // subcutoff delta ray production start + if((subSecFlag) && (trackData.GetCurrentStepNumber() > 1)) + { + G4double MinDeltaEnergyNow,Tc,TmintoProduceDelta,w,ww ; + G4double rcut,T0,presafety,postsafety,safety,delta,Tmax,mass ; + G4double fragment = Step; + G4double frperstep = 1.0; + G4double x1,y1,z1,dx,dy,dz,dTime,time0,DeltaTime; + //G4double epsil = MinKineticEnergy/2. ; + + MinDeltaEnergyNow = MinDeltaEnergy[index] ; + Tc=G4Electron::Electron()->GetEnergyCuts()[index]; + const G4ParticleDefinition* aParticleType=aParticle->GetDefinition() ; + mass=aParticleType->GetPDGMass() ; + w=mass+electron_mass_c2 ; + ww=2.*mass-MinDeltaEnergyNow ; + TmintoProduceDelta=0.5*(sqrt(ww*ww+2.*w*w*MinDeltaEnergyNow/ + electron_mass_c2)-ww) ; + + if((E > TmintoProduceDelta) && (MeanLoss > MinDeltaEnergyNow) + && (finalT > MinKineticEnergy)) + { + // max. possible delta energy + Tmax = 2.*electron_mass_c2*E*(E+2.*mass)/ + (mass*mass+2.*electron_mass_c2*(E+mass)+ + electron_mass_c2*electron_mass_c2) ; + + rcut=(G4Electron::Electron()->GetLengthCuts())[index]; + + if(Tc > Tmax) Tc=Tmax ; + // generate subcutoff delta rays only if Tc>MinDeltaEnergyNow! + if((Tc > MinDeltaEnergyNow) && (Tmax > MinDeltaEnergyNow)) + { + presafety = stepData.GetPreStepPoint()->GetSafety() ; + // postsafety = stepData.GetPostStepPoint()->GetSafety() ; + + G4Navigator *navigator= + G4TransportationManager::GetTransportationManager() + ->GetNavigatorForTracking(); + postsafety = + navigator->ComputeSafety(stepData.GetPostStepPoint()->GetPosition()); + + safety = G4std::min(presafety,postsafety) ; + if(safety < rcut) + { + + x1=stepData.GetPreStepPoint()->GetPosition().x(); + y1=stepData.GetPreStepPoint()->GetPosition().y(); + z1=stepData.GetPreStepPoint()->GetPosition().z(); + dx=stepData.GetPostStepPoint()->GetPosition().x()-x1 ; + dy=stepData.GetPostStepPoint()->GetPosition().y()-y1 ; + dz=stepData.GetPostStepPoint()->GetPosition().z()-z1 ; + time0=stepData.GetPreStepPoint()->GetGlobalTime(); + dTime=stepData.GetPostStepPoint()->GetGlobalTime()-time0; + + if((presafety0.) + { + T0=G4EnergyLossTables::GetPreciseEnergyFromRange( + G4Electron::Electron(), + G4std::min(presafety,postsafety), + aMaterial) ; + + // absolute lower limit for T0 + // if(T0GetIndex()])) + T0=MinDeltaEnergyNow ; + + // compute nb of delta rays to be generated + // approximate value based on Bethe-Bloch and + // assuming an 1/E**2 delta spectrum + G4double deldedx=cN*aMaterial->GetDensity()* + ((E+mass)*(E+mass)*log(Tc/T0)/(E*(E+mass))) ; + G4double delToverTc=1.-T0/Tc ; + G4double N = G4int(deldedx*fragment*delToverTc/(T0*log(Tc/T0))+0.5) ; + if(N > Ndeltamax) N = Ndeltamax ; + + G4double Px,Py,Pz ; + G4ThreeVector ParticleDirection ; + ParticleDirection=aParticle-> + GetMomentumDirection() ; + Px =ParticleDirection.x() ; + Py =ParticleDirection.y() ; + Pz =ParticleDirection.z() ; + + G4int subdelta = 0; + + if(N > 0) + { + G4double Tkin,Etot,P,T,p,costheta,sintheta,phi,dirx,diry,dirz, + Pnew,urandom; + //delTkin,delLoss,rate, + //G4StepPoint *point ; + + Tkin = E ; + Etot = Tkin+mass ; + P = sqrt(Tkin*(Etot+mass)) ; + + aParticleChange.SetNumberOfSecondaries(N); + do { + subdelta += 1 ; + + Tmax = 2.*electron_mass_c2*Tkin*(Tkin+2.*mass)/ + (mass*mass+2.*electron_mass_c2*(Tkin+mass)+ + electron_mass_c2*electron_mass_c2) ; + + if(Tc>Tmax) Tc = Tmax ; + + //check if there is enough energy .... + if((Tkin>TmintoProduceDelta)&&(Tc > T0)&&(MeanLoss>0.)) + { + T=T0/(1.-delToverTc*G4UniformRand()) ; + if(T > MeanLoss) T=MeanLoss ; + MeanLoss -= T ; + p=sqrt(T*(T+2.*electron_mass_c2)) ; + + costheta = T*(Etot+electron_mass_c2)/(P*p) ; + if(costheta<-1.) costheta=-1.; + if(costheta> 1.) costheta= 1.; + + phi=twopi*G4UniformRand() ; + sintheta=sqrt(1.-costheta*costheta); + dirx=sintheta*cos(phi); + diry=sintheta*sin(phi); + dirz=costheta; + + urandom = G4UniformRand() ; + // distribute x,y,z along Pre-Post ! + G4double xd,yd,zd ; + xd=x1+frperstep*dx*urandom ; + yd=y1+frperstep*dy*urandom ; + zd=z1+frperstep*dz*urandom ; + G4ThreeVector DeltaPosition(xd,yd,zd) ; + DeltaTime=time0+frperstep*dTime*urandom ; + + G4ThreeVector DeltaDirection(dirx,diry,dirz) ; + DeltaDirection.rotateUz(ParticleDirection); + + G4DynamicParticle* theDelta = new G4DynamicParticle ; + theDelta->SetDefinition(G4Electron::Electron()); + theDelta->SetKineticEnergy(T); + + theDelta->SetMomentumDirection(DeltaDirection.x(), + DeltaDirection.y(),DeltaDirection.z()); + + // update initial particle,fill ParticleChange + Tkin -= T ; + Px =(P*ParticleDirection.x()-p*DeltaDirection.x()) ; + Py =(P*ParticleDirection.y()-p*DeltaDirection.y()) ; + Pz =(P*ParticleDirection.z()-p*DeltaDirection.z()) ; + Pnew = sqrt(Px*Px+Py*Py+Pz*Pz) ; + Px /= Pnew ; + Py /= Pnew ; + Pz /= Pnew ; + P = Pnew ; + G4ThreeVector ParticleDirectionnew(Px,Py,Pz) ; + ParticleDirection = ParticleDirectionnew; + + G4Track* deltaTrack = + new G4Track(theDelta,DeltaTime,DeltaPosition); + deltaTrack-> + SetTouchableHandle(stepData.GetPostStepPoint()->GetTouchableHandle()) ; + + deltaTrack->SetParentID(trackData.GetTrackID()) ; + aParticleChange.AddSecondary(deltaTrack) ; + + } + + } while (subdelta 0) + aParticleChange.SetMomentumChange(Px,Py,Pz) ; + E = Tkin ; + } + } + } + } + } + } + // end of subcutoff business + + finalT = E - MeanLoss ; + if(finalT < MinKineticEnergy) finalT = 0. ; + //now the loss with fluctuation if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowerBoundEloss)) @@ -467,7 +754,7 @@ G4VParticleChange* G4VMuEnergyLoss::AlongStepDoIt( aParticleChange.SetStatusChange(fStopButAlive); } - aParticleChange.SetNumberOfSecondaries(0); + // aParticleChange.SetNumberOfSecondaries(0); aParticleChange.SetEnergyChange(finalT); aParticleChange.SetLocalEnergyDeposit(E-finalT); diff --git a/source/processes/electromagnetic/standard/History b/source/processes/electromagnetic/standard/History index 512af767a1..f81fa5630f 100644 --- a/source/processes/electromagnetic/standard/History +++ b/source/processes/electromagnetic/standard/History @@ -1,4 +1,4 @@ -$Id: History,v 1.22 2001/05/30 14:32:18 vnivanch Exp $ +$Id: History,v 1.43 2001/11/12 11:20:50 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,74 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +12 nov 01: mma (stand-V03-02-14) +- ParticleMass and Charge : local variables +- merge 11a + 13 +- some cleanup in G4hEnergyLoss.hh and .cc + +29 oct 01: mma (stand-V03-02-13) +- all static functions no more inlined + +23 oct 01: mma (stand-V03-02-12) +- cut per material: Ve(h)EnergyLoss, e(h)Ionisation, eBremsstrahlung, + PAIEnergyLoss, PAIonisation, SynchrotronRadiation + +08 nov 01: G.Cosmo (stand-V03-02-11a) +- Introduced changes to G4VeEnergyLoss.cc and G4VhEnergyLoss.cc for reference + counted touchables (R.Chytracek). Not included in "stand-V03-02-12" and + "stand-V03-02-13". + +23 oct 01: G.Cosmo (stand-V03-02-11) +- Minor fix to G4PAIxSection.cc, added inclusion of G4Material.hh to cope + with latest updates included in materials-V03-02-04. + +11 oct 01: mma (stand-V03-02-10) +- activate buildDEDXTable() in G4hIonisation::retrievePhysicsTable() + +11 oct 01: G.Cosmo (stand-V03-02-09) +- G4VPAIenergyLoss.hh: removed redundant inclusion of RW wrapper header. + +01 oct 01: mma (stand-V03-02-08) +- Phot,Comp,Conv,Annil: come back to BuildPhysicsTable(particleDefinition) + invoked from the process manager + +28 sep 01: mma (stand-V03-02-07) +- StorePhysicsTable(): ParticleName included in fileName. + Completion of Store/Retrieve functions + +21 sep 01: mma (stand-V03-02-06) +- DoIt: fminimalEnergy = 1*eV in phot,comp,conv,anni + +19 sep 01: mma (stand-V03-02-05) +- come back to the previous ProcessNames + +17 sep 01: mma (stand-V03-02-04) +- modifs in almost all classes for the migration of Materials to pure STL, + but backward compatible with g4rw + +13 sep 01: L.Urban (stand-V03-02-03) +-G4VxEnergyLoss: min.delta cut is set as rcut/100 + some optimisation + +11 sep 01: L.Urban (stand-V03-02-02) +- G4VhEnergyLoss+G4VeEnergyLoss: bugfix in subcutoff delta generation + +29 aug 01: mma (stand-V03-02-01) +- G4hIonisation::PostStepDoIt grecj term for spin 1/2 (not 1) + +13 aug 01: mma +- G4eIonisation: new function ComputeRestrictedMeandEdx() +- G4hIonisation: new function ComputeRestrictedMeandEdx() + 'cleanup' + +10 aug 01: mma +- store/retrieve PhysicsTables implemented in photelec, compton, gamaconv, + annihil, eIonisa, eBrems, mulscat, hIonisa + +17 jul 01: mma (stand-V03-02-00) +- suppression of the production threshold in phot,compt,conv,annih + +11 jul 01: mma +- GammaConversion::PostStepDoIt : sample epsil->power (rndm,0.333333) 29 may 01: V.Ivanchenko - clean up againist Linux ANSI strict compilation mode. diff --git a/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh b/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh index fdaf127eec..e86b4e30c1 100644 --- a/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4ComptonScattering.hh @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4ComptonScattering.hh,v 1.4.4.1 2001/06/28 19:12:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ComptonScattering.hh,v 1.8 2001/10/01 15:00:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------ G4ComptonScattering physics process ------ +//------------------ G4ComptonScattering physics process ----------------------- // by Michel Maire, April 1996 // // 10-06-96, updated by M.Maire @@ -33,8 +33,13 @@ // 17-02-97, New Physics scheme // 25-02-97, GetMeanFreePath() now is public function // 12-03-97, new physics scheme again -// 13-08-98, new methods SetBining() PrintInfo() -// ------------------------------------------------------------ +// 13-08-98, new methods SetBining() PrintInfo() +// 03-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 19-09-01, come back to previous ProcessName "compt" +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) +// ----------------------------------------------------------------------------- // class description // @@ -76,18 +81,26 @@ class G4ComptonScattering : public G4VDiscreteProcess // Allows to define the binning of the PhysicsTables, // before to build them. - void BuildPhysicsTable(const G4ParticleDefinition& GammaType); + void BuildPhysicsTable(const G4ParticleDefinition&); // It builds the total CrossSectionPerAtom table, for Gamma, // and for every element contained in the elementTable. // It builds the MeanFreePath table, for Gamma, - // and for every material contained in the materialTable. - // This function overloads a virtual function of the base class. - // It is invoked by the G4ParticleWithCuts::SetCut() method. - + // and for every material contained in the materialTable. + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store CrossSection and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve CrossSection and MeanFreePath tables from an external file + // specified by 'directory' + void PrintInfoDefinition(); // Print few lines of informations about the process: validity range, // origine ..etc.. - // Invoked by BuildPhysicsTable(). + // Invoked by BuildThePhysicsTable(). G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, @@ -128,11 +141,17 @@ class G4ComptonScattering : public G4VDiscreteProcess G4PhysicsTable* theCrossSectionTable; // table for crosssection G4PhysicsTable* theMeanFreePathTable; // table for mean free path - G4double LowestEnergyLimit ; // low energy limit of the crossection formula - G4double HighestEnergyLimit ; // high energy limit of the crossection formula - G4int NumbBinTable ; // number of bins in the crossection table + G4double LowestEnergyLimit; // low energy limit of the tables + G4double HighestEnergyLimit; // high energy limit of the tables + G4int NumbBinTable; // number of bins in the tables + + protected: + + G4double fminimalEnergy; // minimalEnergy of produced particles }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4ComptonScattering.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4ComptonScattering.icc b/source/processes/electromagnetic/standard/include/G4ComptonScattering.icc index 093451b1b0..dd17dd2582 100644 --- a/source/processes/electromagnetic/standard/include/G4ComptonScattering.icc +++ b/source/processes/electromagnetic/standard/include/G4ComptonScattering.icc @@ -21,35 +21,31 @@ // ******************************************************************** // // -// $Id: G4ComptonScattering.icc,v 1.3.2.2 2001/06/28 20:19:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ComptonScattering.icc,v 1.8 2001/09/21 09:50:53 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4ComptonScattering physics process --------- +//------------------ G4ComptonScattering physics process ----------------------- // by Michel Maire, April 1996 -// *************************************************************** +// // 10-06-96, updated by M.Maire // 06-01-97, crossection table + meanfreepath table, M.Maire // 12-03-97, new Physics scheme // 21-11-97, change for lowest energy limit default action // 15-12-98, return DBL_MAX below LowestEnergyLimit -// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation -// --------------------------------------------------------------- +// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation +// 17-09-01, migration of Materials to pure STL (mma) +//------------------------------------------------------------------------------ -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4bool G4ComptonScattering::IsApplicable(const G4ParticleDefinition& particle) +inline G4bool G4ComptonScattering::IsApplicable( + const G4ParticleDefinition& particle) { return ( &particle == G4Gamma::Gamma() ); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4ComptonScattering::GetMeanFreePath(const G4Track& aTrack, G4double, @@ -63,18 +59,17 @@ inline G4double G4ComptonScattering::GetMeanFreePath(const G4Track& aTrack, G4Material* aMaterial = aTrack.GetMaterial(); G4double MeanFreePath; - G4bool isOutRange ; + G4bool isOutRange; if (GammaEnergy > HighestEnergyLimit || GammaEnergy < LowestEnergyLimit) MeanFreePath = DBL_MAX; else MeanFreePath = (*theMeanFreePathTable)(aMaterial->GetIndex())-> - GetValue(GammaEnergy, isOutRange); - + GetValue(GammaEnergy, isOutRange); return MeanFreePath; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4ComptonScattering::ComputeMeanFreePath(G4double GammaEnergy, G4Material* aMaterial) @@ -83,25 +78,24 @@ inline G4double G4ComptonScattering::ComputeMeanFreePath(G4double GammaEnergy, { const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; - const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); + const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); - G4double SIGMA = 0. ; + G4double SIGMA = 0.; for ( size_t elm=0 ; elm < aMaterial->GetNumberOfElements() ; elm++ ) { - SIGMA += NbOfAtomsPerVolume[elm] * - ComputeCrossSectionPerAtom( GammaEnergy, - (*theElementVector)(elm)->GetZ()); + SIGMA += NbOfAtomsPerVolume[elm] * + ComputeCrossSectionPerAtom(GammaEnergy, + (*theElementVector)[elm]->GetZ()); } - return SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4ComptonScattering::GetMicroscopicCrossSection( - G4DynamicParticle* aDynamicGamma, - G4Element* anElement) + G4DynamicParticle* aDynamicGamma, + G4Element* anElement) // gives the microscopic total cross section in GEANT4 internal units @@ -109,15 +103,14 @@ inline G4double G4ComptonScattering::GetMicroscopicCrossSection( G4double crossSection; G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); G4bool isOutRange ; - if (GammaEnergy < LowestEnergyLimit || GammaEnergy > HighestEnergyLimit) crossSection = 0.; else crossSection = (*theCrossSectionTable)(anElement->GetIndex())-> - GetValue(GammaEnergy, isOutRange); + GetValue(GammaEnergy, isOutRange); return crossSection; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/include/G4GammaConversion.hh b/source/processes/electromagnetic/standard/include/G4GammaConversion.hh index d6a6ff5dc5..747314bc7d 100644 --- a/source/processes/electromagnetic/standard/include/G4GammaConversion.hh +++ b/source/processes/electromagnetic/standard/include/G4GammaConversion.hh @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4GammaConversion.hh,v 1.4.4.1 2001/06/28 19:12:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GammaConversion.hh,v 1.9 2001/10/01 15:00:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------ G4GammaConversion physics process ------ +//------------------ G4GammaConversion physics process ------------------------- // by Michel Maire, 24 May 1996 // // 11-06-96, Added GetRandomAtom() method and new data member @@ -34,8 +34,13 @@ // 14-01-97, crossection table + meanfreepath table. // PartialSumSigma removed, M.Maire // 14-03-97, new physics scheme for geant4alpha, M.Maire -// 13-08-98, new methods SetBining() PrintInfo() -// ------------------------------------------------------------ +// 13-08-98, new methods SetBining() PrintInfo() +// 03-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 19-09-01, come back to previous ProcessName: "conv" +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) +// ----------------------------------------------------------------------------- // class description // @@ -79,18 +84,26 @@ class G4GammaConversion : public G4VDiscreteProcess // Allows to define the binning of the PhysicsTables, // before to build them. - void BuildPhysicsTable(const G4ParticleDefinition& GammaType); + void BuildPhysicsTable(const G4ParticleDefinition&); // It builds the total CrossSectionPerAtom table, for Gamma, // and for every element contained in the elementTable. // It builds the MeanFreePath table, for Gamma, // and for every material contained in the materialTable. - // This function overloads a virtual function of the base class. - // It is invoked by the G4ParticleWithCuts::SetCut() method. - + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store CrossSection and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve CrossSection and MeanFreePath tables from an external file + // specified by 'directory' + void PrintInfoDefinition(); // Print few lines of informations about the process: validity range, // origine ..etc.. - // Invoked by BuildPhysicsTable(). + // Invoked by BuildThePhysicsTable(). G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, @@ -98,11 +111,11 @@ class G4GammaConversion : public G4VDiscreteProcess // It returns the MeanFreePath of the process for the current track : // (energy, material) // The previousStepSize and G4ForceCondition* are not used. - // This function overloads a virtual function of the base class. + // This function overloads a virtual function of the base class. // It is invoked by the ProcessManager of the Particle. - G4double GetMicroscopicCrossSection(const G4DynamicParticle* aDynamicGamma, - G4Element* anElement); + G4double GetCrossSectionPerAtom(const G4DynamicParticle* aDynamicGamma, + G4Element* anElement); // It returns the total CrossSectionPerAtom of the process, // for the current DynamicGamma (energy), in anElement. @@ -115,8 +128,8 @@ class G4GammaConversion : public G4VDiscreteProcess protected: - virtual G4double ComputeMicroscopicCrossSection(G4double GammaEnergy, - G4double AtomicNumber); + virtual G4double ComputeCrossSectionPerAtom(G4double GammaEnergy, + G4double AtomicNumber); virtual G4double ComputeMeanFreePath (G4double GammaEnergy, G4Material* aMaterial); @@ -141,13 +154,17 @@ class G4GammaConversion : public G4VDiscreteProcess G4PhysicsTable* theCrossSectionTable; // table for crossection G4PhysicsTable* theMeanFreePathTable; - G4double LowestEnergyLimit ; // low energy limit of the crossection formula - G4double HighestEnergyLimit ; // high energy limit of the crossection formula - G4int NumbBinTable ; // number of bins in the crossection table - - G4double MeanFreePath; // actual Mean Free Path (current medium) + G4double LowestEnergyLimit ; // low energy limit of the tables + G4double HighestEnergyLimit ; // high energy limit of the tables + G4int NumbBinTable ; // number of bins in the tables + + G4double fminimalEnergy; // minimalEnergy of produced particles + + G4double MeanFreePath; // actual MeanFreePath (current medium) }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4GammaConversion.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4GammaConversion.icc b/source/processes/electromagnetic/standard/include/G4GammaConversion.icc index 723efd899f..5d61f4b8b2 100644 --- a/source/processes/electromagnetic/standard/include/G4GammaConversion.icc +++ b/source/processes/electromagnetic/standard/include/G4GammaConversion.icc @@ -21,41 +21,38 @@ // ******************************************************************** // // -// $Id: G4GammaConversion.icc,v 1.3.2.2 2001/06/28 20:19:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GammaConversion.icc,v 1.7 2001/09/17 17:07:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4GammaConversion physics process --------- +// ------------ G4GammaConversion physics process ------------------------- // by Michel Maire, 24 May 1996 -// *************************************************************** +// // 11-06-96, in GetMeanFreePath() the partial sum is stored, by M.Maire // 16-09-96, dynamical array PartialSumSigma, by M.Maire // 13-12-96, Sign corrected in the ScreenFunctions, by L.Urban // 14-01-97, crossection table + meanfreepath table. // PartialSumSigma removed, by M.Maire // 14-01-97, new physics scheme for geant4alpha, M.Maire -// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation -// --------------------------------------------------------------- +// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation +// 17-09-01, migration of Materials to pure STL (mma) +// ----------------------------------------------------------------------------- -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4bool G4GammaConversion::IsApplicable(const G4ParticleDefinition& particle) +inline G4bool G4GammaConversion::IsApplicable( + const G4ParticleDefinition& particle) { return ( &particle == G4Gamma::Gamma() ); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4double G4GammaConversion::GetMicroscopicCrossSection( +inline G4double G4GammaConversion::GetCrossSectionPerAtom( const G4DynamicParticle* aDynamicGamma, G4Element* anElement) -// gives the microscopic total cross section in GEANT4 internal units +// gives the total cross section per atom in GEANT4 internal units { G4double crossSection; @@ -65,7 +62,7 @@ inline G4double G4GammaConversion::GetMicroscopicCrossSection( if (GammaEnergy < LowestEnergyLimit) crossSection = 0. ; else { - if (GammaEnergy > HighestEnergyLimit) GammaEnergy = 0.99*HighestEnergyLimit ; + if (GammaEnergy > HighestEnergyLimit) GammaEnergy=0.99*HighestEnergyLimit; crossSection = (*theCrossSectionTable)(anElement->GetIndex())-> GetValue( GammaEnergy, isOutRange ); } @@ -73,7 +70,7 @@ inline G4double G4GammaConversion::GetMicroscopicCrossSection( return crossSection; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4GammaConversion::GetMeanFreePath(const G4Track& aTrack, G4double, @@ -87,12 +84,12 @@ inline G4double G4GammaConversion::GetMeanFreePath(const G4Track& aTrack, G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); G4Material* aMaterial = aTrack.GetMaterial(); - G4bool isOutRange ; + G4bool isOutRange; if (GammaEnergy < LowestEnergyLimit) MeanFreePath = DBL_MAX; else { - if (GammaEnergy > HighestEnergyLimit) GammaEnergy = 0.99*HighestEnergyLimit ; + if (GammaEnergy > HighestEnergyLimit) GammaEnergy=0.99*HighestEnergyLimit; MeanFreePath = (*theMeanFreePathTable)(aMaterial->GetIndex())-> GetValue( GammaEnergy, isOutRange ); } @@ -100,7 +97,7 @@ inline G4double G4GammaConversion::GetMeanFreePath(const G4Track& aTrack, return MeanFreePath; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4GammaConversion::ComputeMeanFreePath(G4double GammaEnergy, G4Material* aMaterial) @@ -108,22 +105,22 @@ inline G4double G4GammaConversion::ComputeMeanFreePath(G4double GammaEnergy, // computes and returns the photon mean free path in GEANT4 internal units { - const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); + const G4ElementVector* theElementVector = aMaterial->GetElementVector(); + const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); G4double SIGMA = 0 ; for ( size_t i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) { - SIGMA += theAtomNumDensityVector[i] * - ComputeMicroscopicCrossSection(GammaEnergy, - (*theElementVector)(i)->GetZ() ); + SIGMA += NbOfAtomsPerVolume[i] * + ComputeCrossSectionPerAtom(GammaEnergy, + (*theElementVector)[i]->GetZ()); } return SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4GammaConversion::ScreenFunction1(G4double ScreenVariable) @@ -135,12 +132,12 @@ inline G4double G4GammaConversion::ScreenFunction1(G4double ScreenVariable) if (ScreenVariable > 1.) screenVal = 42.24 - 8.368*log(ScreenVariable+0.952); else - screenVal = 42.392 - ScreenVariable* (7.796 - 1.961*ScreenVariable); + screenVal = 42.392 - ScreenVariable*(7.796 - 1.961*ScreenVariable); return screenVal; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4GammaConversion::ScreenFunction2(G4double ScreenVariable) @@ -152,9 +149,9 @@ inline G4double G4GammaConversion::ScreenFunction2(G4double ScreenVariable) if (ScreenVariable > 1.) screenVal = 42.24 - 8.368*log(ScreenVariable+0.952); else - screenVal = 41.405 - ScreenVariable* (5.828 - 0.8945*ScreenVariable); + screenVal = 41.405 - ScreenVariable*(5.828 - 0.8945*ScreenVariable); return screenVal; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/include/G4PAIonisation.hh b/source/processes/electromagnetic/standard/include/G4PAIonisation.hh index 6e222de74f..dd09742202 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4PAIonisation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PAIonisation.hh,v 1.8.2.2 2001/06/28 20:19:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PAIonisation.hh,v 1.11 2001/10/29 16:23:40 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -133,9 +133,9 @@ class G4PAIonisation : public G4VPAIenergyLoss // static - static G4double GetMaxKineticEnergy() { return HighestKineticEnergy ; } ; - static G4double GetMinKineticEnergy() { return LowestKineticEnergy ; } ; - static G4int GetBinNumber() { return TotBin ; } ; + static G4double GetMaxKineticEnergy(); + static G4double GetMinKineticEnergy(); + static G4int GetBinNumber(); // Access to Sandia table coefficients @@ -166,8 +166,8 @@ class G4PAIonisation : public G4VPAIenergyLoss // cut in range - G4double CutInRange ; - G4double lastCutInRange ; + G4double* CutInRange ; + G4double* lastCutInRange ; // particles , cuts in kinetic energy diff --git a/source/processes/electromagnetic/standard/include/G4PAIxSection.hh b/source/processes/electromagnetic/standard/include/G4PAIxSection.hh index 1f9ed44e34..891240f8b6 100644 --- a/source/processes/electromagnetic/standard/include/G4PAIxSection.hh +++ b/source/processes/electromagnetic/standard/include/G4PAIxSection.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PAIxSection.hh,v 1.4.4.1 2001/06/28 19:12:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PAIxSection.hh,v 1.5 2001/07/11 10:03:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4PAIxSection.hh -- header file diff --git a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh index 1e447ef08f..7e356f696f 100644 --- a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh +++ b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhotoElectricEffect.hh,v 1.6.2.1 2001/06/28 19:12:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhotoElectricEffect.hh,v 1.10 2001/10/01 15:00:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // @@ -36,6 +36,11 @@ // 13-08-98, new methods SetBining() PrintInfo() // 17-11-98, use table of atomic shells in PostStepDoIt, mma // 06-01-99, Sandia crossSection below 50 keV, V.Grichine mma +// 03-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 19-09-01, come back to previous process name "phot" +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -79,18 +84,26 @@ class G4PhotoElectricEffect : public G4VDiscreteProcess // Allows to define the binning of the PhysicsTables, // before to build them. - void BuildPhysicsTable(const G4ParticleDefinition& PhotonType); + void BuildPhysicsTable(const G4ParticleDefinition&); // It builds the total CrossSectionPerAtom table, for Gamma, // and for every element contained in the elementTable. // It builds the MeanFreePath table, for Gamma, // and for every material contained in the materialTable. - // This function overloads a virtual function of the base class. - // It is invoked by the G4ParticleWithCuts::SetCut() method. - + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store CrossSection and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve CrossSection and MeanFreePath tables from an external file + // specified by 'directory' + void PrintInfoDefinition(); // Print few lines of informations about the process: validity range, // origine ..etc.. - // Invoked by BuildPhysicsTable(). + // Invoked by BuildThePhysicsTable(). G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, @@ -148,13 +161,17 @@ class G4PhotoElectricEffect : public G4VDiscreteProcess G4PhysicsTable* theCrossSectionTable; // table for crossection G4PhysicsTable* theMeanFreePathTable; // table for Mean free path - G4double LowestEnergyLimit ; // low energy limit of the physics tables - G4double HighestEnergyLimit ; // high energy limit of the physics tables - G4int NumbBinTable ; // number of bins in the tables - - G4double MeanFreePath; // actual Mean Free Path (current medium) + G4double LowestEnergyLimit ; // low energy limit of the tables + G4double HighestEnergyLimit ; // high energy limit of the tables + G4int NumbBinTable ; // number of bins in the tables + + G4double fminimalEnergy; // minimalEnergy of produced particles + + G4double MeanFreePath; // actual Mean Free Path (current medium) }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4PhotoElectricEffect.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.icc b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.icc index 1d28c9226a..7921835156 100644 --- a/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.icc +++ b/source/processes/electromagnetic/standard/include/G4PhotoElectricEffect.icc @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4PhotoElectricEffect.icc,v 1.5.2.1 2001/06/28 19:12:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhotoElectricEffect.icc,v 1.8 2001/09/17 17:07:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 12-06-96, update by M.Maire // 17-09-96, PartialSumSigma(i) @@ -34,21 +34,23 @@ // 20-11-97, change for lowest energy limit default action // 17-11-98, use table of atomic shells in PostStepDoIt, mma // 06-01-99, use Sandia crossSection, V.Grichine mma -// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation +// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation +// 17-09-01, migration of Materials to pure STL (mma) -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4bool G4PhotoElectricEffect::IsApplicable(const G4ParticleDefinition& particle) +inline G4bool G4PhotoElectricEffect::IsApplicable(const G4ParticleDefinition& + particle) { return ( &particle == G4Gamma::Gamma() ); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4PhotoElectricEffect::GetCrossSectionPerAtom( - const G4DynamicParticle* aDynamicGamma, - G4Element* anElement) + const G4DynamicParticle* aDynamicGamma, + G4Element* anElement) // gives the microscopic total cross section in GEANT4 internal units @@ -69,7 +71,7 @@ inline G4double G4PhotoElectricEffect::GetCrossSectionPerAtom( return crossSection; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4PhotoElectricEffect::GetMeanFreePath(const G4Track& aTrack, G4double, @@ -97,30 +99,30 @@ inline G4double G4PhotoElectricEffect::GetMeanFreePath(const G4Track& aTrack, return MeanFreePath; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4PhotoElectricEffect::ComputeMeanFreePath(G4double GammaEnergy, - G4Material* aMaterial) + G4Material* aMaterial) // returns the gamma mean free path in GEANT4 internal units { - const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; - const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); + const G4ElementVector* theElementVector = aMaterial->GetElementVector(); + const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); - G4double SIGMA = 0 ; + G4double SIGMA = 0; for ( size_t elm=0 ; elm < aMaterial->GetNumberOfElements() ; elm++ ) { SIGMA += NbOfAtomsPerVolume[elm] * ComputeCrossSectionPerAtom(GammaEnergy, - (*theElementVector)(elm)->GetZ()); + (*theElementVector)[elm]->GetZ()); } return SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4PhotoElectricEffect::ComputeSandiaMeanFreePath(G4double GammaEnergy, @@ -138,7 +140,7 @@ G4double G4PhotoElectricEffect::ComputeSandiaMeanFreePath(G4double GammaEnergy, return SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4PhotoElectricEffect::ComputeKBindingEnergy (G4double Z) @@ -152,7 +154,7 @@ inline G4double G4PhotoElectricEffect::ComputeKBindingEnergy (G4double Z) return Z*Z*(aK + Z* (bK + Z* (cK + Z* dK))); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4PhotoElectricEffect::ComputeL1BindingEnergy (G4double Z) @@ -166,7 +168,7 @@ inline G4double G4PhotoElectricEffect::ComputeL1BindingEnergy (G4double Z) return Z*Z*(aL1 + Z* (bL1 + Z* (cL1 + Z* dL1))); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4PhotoElectricEffect::ComputeL2BindingEnergy (G4double Z) @@ -180,6 +182,6 @@ inline G4double G4PhotoElectricEffect::ComputeL2BindingEnergy (G4double Z) return Z*Z*(aL2 + Z* (bL2 + Z* (cL2 + Z* dL2))); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh b/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh index c1d35f3759..eaadfa4add 100644 --- a/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh +++ b/source/processes/electromagnetic/standard/include/G4PolarizedComptonScattering.hh @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: G4PolarizedComptonScattering.hh,v 1.4.4.1 2001/06/28 19:12:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolarizedComptonScattering.hh,v 1.6 2001/08/31 14:58:47 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// --------- G4PolarizedComptonScattering physics process ----- +// --------- G4PolarizedComptonScattering physics process ---------------------- // by Vicente Lara, March 1998 // -// ------------------------------------------------------------ +// ----------------------------------------------------------------------------- // class description // diff --git a/source/processes/electromagnetic/standard/include/G4SynchrotronRadiation.hh b/source/processes/electromagnetic/standard/include/G4SynchrotronRadiation.hh index 4f9de65b0c..bbbc9265b6 100644 --- a/source/processes/electromagnetic/standard/include/G4SynchrotronRadiation.hh +++ b/source/processes/electromagnetic/standard/include/G4SynchrotronRadiation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SynchrotronRadiation.hh,v 1.5.2.2 2001/06/28 20:19:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SynchrotronRadiation.hh,v 1.6 2001/07/11 10:03:28 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file diff --git a/source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.hh b/source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.hh index d6587c713a..e076a129ca 100644 --- a/source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.hh +++ b/source/processes/electromagnetic/standard/include/G4VPAIenergyLoss.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPAIenergyLoss.hh,v 1.2.4.2 2001/06/28 20:19:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPAIenergyLoss.hh,v 1.7 2001/11/08 08:13:24 urban Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file @@ -47,6 +47,7 @@ // corrected by V. Grichine on 24/11/97 // corrected by L. Urban on 27/05/98 (other corrections come soon!) // 10/02/00 modifications , new e.m. structure, L.Urban +// 08/11/01 BuildDEDXTable is not static any more, L.Urban // ------------------------------------------------------------ #ifndef G4VPAIenergyLoss_h @@ -55,7 +56,6 @@ #include "G4ios.hh" #include "g4std/fstream" #include "g4std/iomanip" -#include "g4rw/tpordvec.h" #include "globals.hh" #include "Randomize.hh" @@ -119,7 +119,7 @@ class G4VPAIenergyLoss : public G4VEnergyLoss // Build energy loss table (total continuous energy loss) - static void BuildDEDXTable(const G4ParticleDefinition& aParticleType); + void BuildDEDXTable(const G4ParticleDefinition& aParticleType); //---------------------------------------------- // public functions ......................... @@ -141,34 +141,34 @@ class G4VPAIenergyLoss : public G4VEnergyLoss G4Material *aMaterial); // static - G4PhysicsTable* GetPAItransferBank(){ return fPAItransferBank ; } ; + G4PhysicsTable* GetPAItransferBank(){ return fPAItransferBank ; }; - static G4double GetMaxKineticEnergy() { return UpperBoundEloss ; } ; - static G4double GetMinKineticEnergy() { return LowerBoundEloss ; } ; - static G4int GetBinNumber() { return NbinEloss ; } ; + static G4double GetMaxKineticEnergy(); + static G4double GetMinKineticEnergy(); + static G4int GetBinNumber(); public: // With description - static void SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;}; + static void SetNbOfProcesses(G4int nb); // Sets number of processes giving contribution to the energy loss - static void PlusNbOfProcesses() {NbOfProcesses++ ;}; + static void PlusNbOfProcesses(); // Increases number of processes giving contribution to the energy loss - static void MinusNbOfProcesses() {NbOfProcesses-- ;}; + static void MinusNbOfProcesses(); // Decreases number of processes giving contribution to the energy loss - static G4int GetNbOfProcesses() {return NbOfProcesses;}; + static G4int GetNbOfProcesses(); // Gets number of processes giving contribution to the energy loss // ( default value = 1) - static void SetLowerBoundEloss(G4double val) {LowerBoundEloss=val;}; - static void SetUpperBoundEloss(G4double val) {UpperBoundEloss=val;}; - static void SetNbinEloss(G4int nb) {NbinEloss=nb;}; + static void SetLowerBoundEloss(G4double val); + static void SetUpperBoundEloss(G4double val); + static void SetNbinEloss(G4int nb); - static G4double GetLowerBoundEloss() {return LowerBoundEloss;}; - static G4double GetUpperBoundEloss() {return UpperBoundEloss;}; - static G4int GetNbinEloss() {return NbinEloss;}; + static G4double GetLowerBoundEloss(); + static G4double GetUpperBoundEloss(); + static G4int GetNbinEloss(); protected: @@ -255,7 +255,7 @@ class G4VPAIenergyLoss : public G4VEnergyLoss // cut in range - static G4double CutInRange; + static G4double* CutInRange; // cuts in kinetic energy ........ G4double* ParticleCutInKineticEnergy ; diff --git a/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.hh b/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.hh index d8c88596e7..2c4d7f2a66 100644 --- a/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.hh +++ b/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.hh @@ -21,18 +21,20 @@ // ******************************************************************** // // -// $Id: G4VeEnergyLoss.hh,v 1.5.4.1 2001/06/28 19:12:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VeEnergyLoss.hh,v 1.10 2001/11/08 08:45:43 urban Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// --------------------------------------------------------------- -// 18/11/98 It is a modified version of G4VeEnergyLoss: continuous energy loss +// ----------------------------------------------------------------------------- +// 18-11-98 It is a modified version of G4VeEnergyLoss: continuous energy loss // with generation of subcutoff delta rays, L. Urban -// 02/02/99 new data members , L.Urban -// 10/02/00 modifications , new e.m. structure, L.Urban +// 02-02-99 new data members , L.Urban +// 10-02-00 modifications , new e.m. structure, L.Urban +// 29-10-01 all static functions no more inlined (mma) +// 08-11-01 Charge,lastCharge not data members, L.Urban // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4VeEnergyLoss_h #define G4VeEnergyLoss_h 1 @@ -53,14 +55,13 @@ #include "G4PhysicsLinearVector.hh" #include "G4EnergyLossTables.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Class description: // // This class is the implementation of the unified Energy Loss process // with generation of subcutoff secondaries , see description of -// ***************************************** -// the AlongStepDoIt method. +// the AlongStepDoIt method. // It calculates the continuous energy loss for e+/e-. // The following processes give contributions to the continuous // energy loss (by default) : @@ -74,7 +75,7 @@ // // Class description - end -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4VeEnergyLoss : public G4VEnergyLoss @@ -140,10 +141,7 @@ class G4VeEnergyLoss : public G4VEnergyLoss G4PhysicsTable* theLossTable; - G4double MinKineticEnergy ; // - - G4double Charge,lastCharge ; - + G4double MinKineticEnergy ; private: @@ -157,7 +155,7 @@ class G4VeEnergyLoss : public G4VEnergyLoss G4double linLossLimit ; // - G4double c1N,c2N ; // coeffs to compute nb of deltas + G4double cN ; // coeffs to compute nb of deltas G4int Ndeltamax ; // upper limit for nb of subcutoff // delta rays in one step @@ -166,26 +164,26 @@ class G4VeEnergyLoss : public G4VEnergyLoss // public: // With description - static void SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;}; + static void SetNbOfProcesses(G4int nb); // Sets number of processes giving contribution to the energy loss - static void PlusNbOfProcesses() {NbOfProcesses++ ;}; + static void PlusNbOfProcesses(); // Increases number of processes giving contribution to the energy loss - static void MinusNbOfProcesses() {NbOfProcesses-- ;}; + static void MinusNbOfProcesses(); // Decreases number of processes giving contribution to the energy loss - static G4int GetNbOfProcesses() {return NbOfProcesses;}; + static G4int GetNbOfProcesses(); // Gets number of processes giving contribution to the energy loss // ( default value = 2) - static void SetLowerBoundEloss(G4double val) {LowerBoundEloss=val;}; - static void SetUpperBoundEloss(G4double val) {UpperBoundEloss=val;}; - static void SetNbinEloss(G4int nb) {NbinEloss=nb;}; + static void SetLowerBoundEloss(G4double val); + static void SetUpperBoundEloss(G4double val); + static void SetNbinEloss(G4int nb); - static G4double GetLowerBoundEloss() {return LowerBoundEloss;}; - static G4double GetUpperBoundEloss() {return UpperBoundEloss;}; - static G4int GetNbinEloss() {return NbinEloss;}; + static G4double GetLowerBoundEloss(); + static G4double GetUpperBoundEloss(); + static G4int GetNbinEloss(); protected: @@ -239,6 +237,8 @@ class G4VeEnergyLoss : public G4VEnergyLoss public: // With description }; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4VeEnergyLoss.icc" diff --git a/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.icc b/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.icc index 1b8a9bad40..4db49ad38c 100644 --- a/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.icc +++ b/source/processes/electromagnetic/standard/include/G4VeEnergyLoss.icc @@ -21,16 +21,18 @@ // ******************************************************************** // // -// $Id: G4VeEnergyLoss.icc,v 1.3.2.1 2001/06/28 19:12:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VeEnergyLoss.icc,v 1.7 2001/11/09 13:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // -// 18/11/98, L. Urban -// It is a modified version of G4VeEnergyLoss: -// continuous energy loss with generation of subcutoff delta rays +// 18/11/98 L. Urban +// It is a modified version of G4VeEnergyLoss: +// continuous energy loss with generation of subcutoff delta rays +// 08-11-01 Charge,lastCharge not data members, L.Urban // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4VeEnergyLoss::GetConstraints( const G4DynamicParticle* aParticle, @@ -43,9 +45,6 @@ inline G4double G4VeEnergyLoss::GetConstraints( G4double StepLimit; const G4ParticleDefinition* ParticleType=aParticle->GetDefinition(); - Charge = aParticle->GetDefinition()->GetPDGCharge(); - if (Charge != lastCharge) lastCharge = Charge; - G4double KineticEnergy = aParticle->GetKineticEnergy(); fdEdx = G4EnergyLossTables::GetDEDX(ParticleType,KineticEnergy,aMaterial); @@ -66,7 +65,7 @@ inline G4double G4VeEnergyLoss::GetConstraints( return StepLimit; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4VeEnergyLoss::GetContinuousStepLimit( const G4Track& track, @@ -83,7 +82,7 @@ inline G4double G4VeEnergyLoss::GetContinuousStepLimit( return Step ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4bool G4VeEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) @@ -92,4 +91,4 @@ inline G4bool G4VeEnergyLoss::IsApplicable(const G4ParticleDefinition& ||(&particle == G4Positron::Positron()) ); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.hh b/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.hh index 5a9e46c402..0bd3a18f76 100644 --- a/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.hh +++ b/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.hh @@ -21,19 +21,12 @@ // ******************************************************************** // // -// $Id: G4VhEnergyLoss.hh,v 1.7.4.2 2001/06/28 20:19:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VhEnergyLoss.hh,v 1.14 2001/11/09 13:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4VhEnergyLoss physics process ----------- +// ------------- G4VhEnergyLoss physics process -------------------------------- // by Laszlo Urban, 30 May 1997 // -// ************************************************************ -// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. // It calculates the continuous energy loss for charged hadrons. // Processes giving contribution to the continuous loss : // ionisation (= cont.ion.loss + delta ray production) @@ -43,15 +36,17 @@ // The energy loss for other charged hadrons is calculated from the p/pbar // tables with scaled kinetic energy. // -// **************************************************************************** -// It is assumed that the cut in range is the same for all the charged hadrons! -// **************************************************************************** -// +// ----------------------------------------------------------------------------- // 7/10/98 some bugs fixed + some cleanup , L.Urban // 22/10/98 cleanup , L.Urban // 02/02/99 several bugs fixed, L.Urban -// 10/02/00 modifications , new e.m. structure, L.Urban +// 10/02/00 modifications , new e.m. structure, L.Urban +// 10/09/01 bugfix in subcutoff delta generation, L.Urban +// 29-10-01 all static functions no more inlined (mma) +// 08-11-01 BuildDEDXTable not static,Charge local variable, L.Urban // +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4VhEnergyLoss_h #define G4VhEnergyLoss_h 1 @@ -70,6 +65,8 @@ #include "G4Step.hh" #include "G4PhysicsLogVector.hh" #include "G4PhysicsLinearVector.hh" + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4VhEnergyLoss : public G4VEnergyLoss @@ -82,34 +79,24 @@ class G4VhEnergyLoss : public G4VEnergyLoss G4bool IsApplicable(const G4ParticleDefinition&); - G4double GetContinuousStepLimit( - const G4Track& track, + void BuildDEDXTable(const G4ParticleDefinition& aParticleType); + + G4double GetContinuousStepLimit(const G4Track& track, G4double previousStepSize, G4double currentMinimumStep, - G4double& currentSafety) ; + G4double& currentSafety); - G4VParticleChange* AlongStepDoIt(const G4Track& track ,const G4Step& Step) ; + G4VParticleChange* AlongStepDoIt(const G4Track& track, const G4Step& Step); - virtual G4double GetMeanFreePath( - const G4Track& track, - G4double previousStepSize, - G4ForceCondition* condition - ) = 0 ; + virtual G4double GetMeanFreePath(const G4Track& track, + G4double previousStepSize, + G4ForceCondition* condition) = 0; virtual G4VParticleChange* PostStepDoIt(const G4Track& track, - const G4Step& Step) = 0 ; - - - protected: - + const G4Step& Step) = 0; private: - // hide assignment operator - - G4VhEnergyLoss(G4VhEnergyLoss &); - G4VhEnergyLoss & operator=(const G4VhEnergyLoss &right); - G4double GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial); @@ -118,104 +105,86 @@ class G4VhEnergyLoss : public G4VEnergyLoss G4double ChargeSquare, G4double MeanLoss, G4double Step); + + //hide assignment operator + G4VhEnergyLoss(G4VhEnergyLoss &); + G4VhEnergyLoss & operator=(const G4VhEnergyLoss &right); -// ===================================================================== - - public: - - protected: - G4PhysicsTable* theLossTable ; + G4PhysicsTable* theLossTable; - G4double MinKineticEnergy ; + G4double MinKineticEnergy; private: - static G4PhysicsTable* theDEDXTable ; + static G4PhysicsTable* theDEDXTable; - G4double fdEdx; // computed in GetContraints - G4double fRangeNow ; // computed in GetContraints - G4double linLossLimit ; + G4double fdEdx; // computed in GetContraints + G4double fRangeNow; // computed in GetContraints + G4double linLossLimit; - -// ==================================================================== +// // static part of the cc: // With description +// public: - static void SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;}; + static void SetNbOfProcesses(G4int nb); // Sets number of processes giving contribution to the energy loss - static void PlusNbOfProcesses() {NbOfProcesses++ ;}; + static void PlusNbOfProcesses(); // Increases number of processes giving contribution to the energy loss - static void MinusNbOfProcesses() {NbOfProcesses-- ;}; + static void MinusNbOfProcesses(); // Decreases number of processes giving contribution to the energy loss - static G4int GetNbOfProcesses() {return NbOfProcesses;}; + static G4int GetNbOfProcesses(); // Gets number of processes giving contribution to the energy loss // ( default value = 1) - static void SetLowerBoundEloss(G4double val) {LowerBoundEloss=val;}; - static void SetUpperBoundEloss(G4double val) {UpperBoundEloss=val;}; - static void SetNbinEloss(G4int nb) {NbinEloss=nb;}; - - static G4double GetLowerBoundEloss() {return LowerBoundEloss;}; - static G4double GetUpperBoundEloss() {return UpperBoundEloss;}; - static G4int GetNbinEloss() {return NbinEloss;}; + static void SetLowerBoundEloss(G4double val); + static void SetUpperBoundEloss(G4double val); + static void SetNbinEloss(G4int nb); + static G4double GetLowerBoundEloss(); + static G4double GetUpperBoundEloss(); + static G4int GetNbinEloss(); protected: - static void BuildDEDXTable(const G4ParticleDefinition& aParticleType); - - - private: - - static const G4Proton* theProton ; - static const G4AntiProton* theAntiProton ; - -// ==================================================================== - - public: - - protected: - - static G4PhysicsTable* theDEDXpTable ; - static G4PhysicsTable* theDEDXpbarTable ; - static G4PhysicsTable* theRangepTable ; - static G4PhysicsTable* theRangepbarTable ; + static G4PhysicsTable* theDEDXpTable; + static G4PhysicsTable* theDEDXpbarTable; + static G4PhysicsTable* theRangepTable; + static G4PhysicsTable* theRangepbarTable; //inverse of the range tables - static G4PhysicsTable* theInverseRangepTable ; - static G4PhysicsTable* theInverseRangepbarTable ; + static G4PhysicsTable* theInverseRangepTable; + static G4PhysicsTable* theInverseRangepbarTable; //lab and proper time tables - static G4PhysicsTable* theLabTimepTable ; - static G4PhysicsTable* theLabTimepbarTable ; + static G4PhysicsTable* theLabTimepTable; + static G4PhysicsTable* theLabTimepbarTable; - static G4PhysicsTable* theProperTimepTable ; - static G4PhysicsTable* theProperTimepbarTable ; + static G4PhysicsTable* theProperTimepTable; + static G4PhysicsTable* theProperTimepbarTable; // processes inherited from G4VhEnergyLoss // register themselves in the static array Recorder - static G4int NbOfProcesses ; + static G4int NbOfProcesses; static G4PhysicsTable** RecorderOfpProcess; static G4PhysicsTable** RecorderOfpbarProcess; - static G4int CounterOfpProcess ; - static G4int CounterOfpbarProcess ; + static G4int CounterOfpProcess; + static G4int CounterOfpbarProcess; // cut in range - static G4double ptableElectronCutInRange; - static G4double pbartableElectronCutInRange; - - static G4double Charge ; + static G4double* ptableElectronCutInRange; + static G4double* pbartableElectronCutInRange; private: - static G4int NbinEloss; // number of bins in table, - // calculated in BuildPhysicTable + static G4int NbinEloss; // number of bins in table, + // calculated in BuildPhysicTable static G4double LowerBoundEloss; static G4double UpperBoundEloss; static G4double RTable,LOGRTable; // LOGRTable=log(UpperBoundEloss- @@ -233,11 +202,13 @@ class G4VhEnergyLoss : public G4VEnergyLoss static G4PhysicsTable* thepbarRangeCoeffBTable; static G4PhysicsTable* thepbarRangeCoeffCTable; - static G4double c0N,c1N,c2N,c3N ; // coeffs to compute nb of deltas - static G4int Ndeltamax ; // upper limit for nb of subcutoff - // delta rays in one step + static G4double cN; // coeff to compute nb of deltas + static G4int Ndeltamax; // upper limit for nb of subcutoff + // delta rays in one step }; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4VhEnergyLoss.icc" diff --git a/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.icc b/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.icc index cf6d3ed530..c17bd90c8a 100644 --- a/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.icc +++ b/source/processes/electromagnetic/standard/include/G4VhEnergyLoss.icc @@ -21,42 +21,37 @@ // ******************************************************************** // // -// $Id: G4VhEnergyLoss.icc,v 1.2.4.2 2001/06/28 20:19:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VhEnergyLoss.icc,v 1.4 2001/11/09 13:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file // -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4VhEnergyLoss physics process ------------ +// ---------------- G4VhEnergyLoss physics process ----------------------------- // by Laszlo Urban, 30 May 1997 -// *************************************************************** -// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS. -// It calculates the energy loss of charged hadrons. -// *************************************************************** +// +// ----------------------------------------------------------------------------- // 22/10/98: cleanup , L.Urban -// --------------------------------------------------------------- +// ----------------------------------------------------------------------------- +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + inline G4bool G4VhEnergyLoss::IsApplicable(const G4ParticleDefinition& particle) { return(particle.GetPDGCharge()!= 0.); } - -inline G4double G4VhEnergyLoss::GetContinuousStepLimit( - const G4Track& track, - G4double, - G4double currentMinimumStep, - G4double&) + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline G4double G4VhEnergyLoss::GetContinuousStepLimit(const G4Track& track, + G4double, + G4double currentMinimumStep, + G4double&) { - - G4double Step = - GetConstraints(track.GetDynamicParticle(),track.GetMaterial()) ; - - if((Step>0.0)&&(Step 0.0)&&(Step < currentMinimumStep)) currentMinimumStep = Step; + return Step; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh index 84cea9cbae..001876ddbe 100644 --- a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh +++ b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.hh @@ -21,26 +21,33 @@ // ******************************************************************** // // -// $Id: G4eBremsstrahlung.hh,v 1.8.2.2 2001/06/28 20:19:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eBremsstrahlung.hh,v 1.13 2001/10/29 16:23:41 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// ------------------------------------------------------------ -// GEANT 4 class header file -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo // ------------ G4eBremsstrahlung physics process ------ -// by Michel Maire, 24 July 1996 -// ************************************************************ -// 1-10-96 : new type G4OrderedTable; ComputePartialSumSigma() -// 20/03/97: new energy loss+ionisation+brems scheme, L.Urban -// 01-09-98, new method PrintInfo() -// 10/02/00 modifications , new e.m. structure, L.Urban -// 07/08/00 new cross section/en.loss parametrisation, LPM flag , L.Urban +// by Laszlo Urban, 24 July 1996 +// +// 01-10-96 new type G4OrderedTable; ComputePartialSumSigma() +// 20-03-97 new energy loss+ionisation+brems scheme, L.Urban +// 01-09-98 new method PrintInfo() +// 10-02-00 modifications , new e.m. structure, L.Urban +// 07-08-00 new cross section/en.loss parametrisation, LPM flag , L.Urban +// 09-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 19-09-01 come back to previous process name "eBrem" +// 29-10-01 all static functions no more inlined (mma) // ------------------------------------------------------------ +// Class description +// +// This class manages the bremsstrahlung for e-/e+ +// it inherites from G4VContinuousDiscreteProcess via G4VeEnergyLoss. +// +// Class description - end + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + #ifndef G4eBremsstrahlung_h #define G4eBremsstrahlung_h 1 @@ -56,7 +63,9 @@ #include "G4OrderedTable.hh" #include "G4PhysicsTable.hh" #include "G4PhysicsLogVector.hh" - + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + class G4eBremsstrahlung : public G4VeEnergyLoss { @@ -83,9 +92,18 @@ class G4eBremsstrahlung : public G4VeEnergyLoss G4VParticleChange *PostStepDoIt(const G4Track& track, const G4Step& step); - G4double GetLambda( - G4double KineticEnergy,G4Material* material); - + G4double GetLambda(G4double KineticEnergy,G4Material* material); + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store eLoss and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve eLoss and MeanFreePath tables from an external file + // specified by 'directory' + protected: G4double ComputeMeanFreePath( const G4ParticleDefinition* ParticleType, @@ -96,7 +114,7 @@ class G4eBremsstrahlung : public G4VeEnergyLoss G4double KineticEnergy, const G4Material* aMaterial); - virtual G4double ComputeMicroscopicCrossSection( + virtual G4double ComputeCrossSectionPerAtom( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, G4double AtomicNumber, @@ -131,12 +149,12 @@ class G4eBremsstrahlung : public G4VeEnergyLoss private: - G4PhysicsTable* theMeanFreePathTable ; + G4PhysicsTable* theMeanFreePathTable; G4OrderedTable PartialSumSigma; // partial sum of total crosssection - static G4double LowerBoundLambda; // low energy limit of the crossection formula - static G4double UpperBoundLambda; // high energy limit of the crossection formula + static G4double LowerBoundLambda; // low energy limit of crossection table + static G4double UpperBoundLambda; // high energy limit of crossection table static G4int NbinLambda; // number of bins in the tables G4double MinThreshold; // minimun value for the production threshold @@ -144,22 +162,24 @@ class G4eBremsstrahlung : public G4VeEnergyLoss G4double LowestKineticEnergy,HighestKineticEnergy; // bining of the Eloss table G4int TotBin; // (from G4VeEnergyLoss) - static G4double probsup ; - static G4bool LPMflag ; + static G4double probsup; + static G4bool LPMflag; public: - static void SetLowerBoundLambda(G4double val) {LowerBoundLambda = val;}; - static void SetUpperBoundLambda(G4double val) {UpperBoundLambda = val;}; - static void SetNbinLambda(G4int n) {NbinLambda = n;}; - static G4double GetLowerBoundLambda() { return LowerBoundLambda;}; - static G4double GetUpperBoundLambda() { return UpperBoundLambda;}; - static G4int GetNbinLambda() {return NbinLambda;}; + static void SetLowerBoundLambda(G4double val); + static void SetUpperBoundLambda(G4double val); + static void SetNbinLambda(G4int n); + static G4double GetLowerBoundLambda(); + static G4double GetUpperBoundLambda(); + static G4int GetNbinLambda(); - static void SetLPMflag(G4bool val) { LPMflag = val ; } ; - static G4bool GetLPMflag() { return LPMflag ; } ; + static void SetLPMflag(G4bool val); + static G4bool GetLPMflag(); }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4eBremsstrahlung.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.icc b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.icc index 473a106ec7..4de3f3733e 100644 --- a/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.icc +++ b/source/processes/electromagnetic/standard/include/G4eBremsstrahlung.icc @@ -21,22 +21,16 @@ // ******************************************************************** // // -// $Id: G4eBremsstrahlung.icc,v 1.4.2.2 2001/06/28 20:19:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eBremsstrahlung.icc,v 1.6 2001/08/09 17:24:22 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo // ------------ G4eBremsstrahlung physics process --------- // by Michel Maire, 27 July 1996 -// *************************************************************** +// // 13-12-96 : Sign corrected in the ScreenFunctions, L.Urban // 20/03/97 : new energy loss+ionisation+brems scheme, L.Urban -// 28/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation -// *************************************************************** +// 28/05/01 : V.Ivanchenko minor changes to provide ANSI -wall compilation +// --------------------------------------------------------------------------- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -61,10 +55,9 @@ inline G4double G4eBremsstrahlung::GetMeanFreePath(const G4Track& track, G4Material* aMaterial = track.GetMaterial(); G4double MeanFreePath; - G4bool isOutRange ; + G4bool isOutRange; - if (KineticEnergy < LowestKineticEnergy) - MeanFreePath = DBL_MAX; + if (KineticEnergy < LowestKineticEnergy) MeanFreePath = DBL_MAX; else { if (KineticEnergy > HighestKineticEnergy) KineticEnergy = 0.99*HighestKineticEnergy ; MeanFreePath = (*theMeanFreePathTable)(aMaterial->GetIndex())-> @@ -114,13 +107,9 @@ inline G4double G4eBremsstrahlung::GetLambda( G4double KineticEnergy, G4Material* material) { - G4bool isOut; - //const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - - G4double lambda = (*theMeanFreePathTable) - [material->GetIndex()]-> - GetValue(KineticEnergy,isOut); - return lambda; + G4bool isOut; + return (*theMeanFreePathTable)[material->GetIndex()]-> + GetValue(KineticEnergy,isOut); } - +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/source/processes/electromagnetic/standard/include/G4eIonisation.hh b/source/processes/electromagnetic/standard/include/G4eIonisation.hh index ea3f2dda17..61a984c48c 100644 --- a/source/processes/electromagnetic/standard/include/G4eIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4eIonisation.hh @@ -21,80 +21,114 @@ // ******************************************************************** // // -// $Id: G4eIonisation.hh,v 1.7.4.2 2001/06/28 20:19:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eIonisation.hh,v 1.15 2001/10/29 16:23:41 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 class header file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4eIonisation physics process ----------- +//--------------- G4eIonisation physics process -------------------------------- // by Laszlo Urban, 20 March 1997 -// ************************************************************ -// It is the first implementation of the NEW IONISATION -// PROCESS. ( delta rays + continuous energy loss) -// It calculates the ionisation for e+/e-. -// ************************************************************ // -// 10/02/00 modifications , new e.m. structure, L.Urban -// ------------------------------------------------------------ +// 10-02-00 modifications , new e.m. structure, L.Urban +// 03-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 13-08-01 new function ComputeRestrictedMeandEdx() (mma) +// 19-09-01 come back to previous ProcessName "eIoni" +// 29-10-01 all static functions no more inlined (mma) +// +//------------------------------------------------------------------------------ + +// Class description +// +// This class manages the ionisation process for e-/e+ +// it inherites from G4VContinuousDiscreteProcess via G4VeEnergyLoss. +// +// Class description - end + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4eIonisation_h #define G4eIonisation_h 1 -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" #include "G4VeEnergyLoss.hh" -#include "globals.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -#include "G4Gamma.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" - + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4eIonisation : public G4VeEnergyLoss { - public: + public: // with description G4eIonisation(const G4String& processName = "eIoni"); ~G4eIonisation(); - G4bool IsApplicable(const G4ParticleDefinition&); + G4bool IsApplicable(const G4ParticleDefinition&); + // return true for e+/e-, false otherwise void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); + // this function overloads a virtual function of the base class. + // It is invoked by the G4ParticleWithCuts::SetCut() method. + // It invokes BuildLambdaTable(), BuildLossTable(), BuildDEDXTable() void BuildLossTable(const G4ParticleDefinition& aParticleType); + // build the dE/dx tables due to the ionisation, for every materials. + // (restricted stopping power, Berger-Seltzer formula) void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - + // build mean free path tables for the delta rays production. + // the tables are built for every materials. + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store eLoss and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve eLoss and MeanFreePath tables from an external file + // specified by 'directory' + void PrintInfoDefinition(); - + // Print few lines of informations about the process: validity range, + // origine ..etc.. + // Invoked by BuildPhysicsTable(). + G4double GetMeanFreePath(const G4Track& track, G4double previousStepSize, - G4ForceCondition* condition ) ; - + G4ForceCondition* condition ); + // It returns the MeanFreePath of the process for the current track : + // (energy, material) + // The previousStepSize and G4ForceCondition* are not used. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& Step ) ; + const G4Step& Step ); + // It computes the final state of the process (at end of step), + // returned as a ParticleChange object. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + + G4double GetLambda(G4double KineticEnergy, G4Material* material); + // It returns the MeanFreePath of the process for a (energy, material) - G4double GetLambda( - G4double KineticEnergy,G4Material* material); - - protected: - - virtual G4double ComputeMicroscopicCrossSection( + protected: // with description + + virtual G4double ComputeRestrictedMeandEdx( + const G4ParticleDefinition& aParticleType, + G4double KineticEnergy, + const G4Material* material, + G4double DeltaThreshold); + // computes restricted mean dE/dx in Geant4 internal units. + + virtual G4double ComputeCrossSectionPerAtom( const G4ParticleDefinition& aParticleType, G4double KineticEnergy, G4double AtomicNumber, G4double DeltaThreshold); - + // computes total cross section per atom in Geant4 internal units. + + protected: + G4PhysicsTable* theMeanFreePathTable; private: @@ -105,24 +139,29 @@ class G4eIonisation : public G4VeEnergyLoss private: - // G4PhysicsTable* theMeanFreePathTable; + static G4double LowerBoundLambda; // binning for mean free path table + static G4double UpperBoundLambda; + static G4int NbinLambda; + + G4double LowestKineticEnergy; // binning for dE/dx table + G4double HighestKineticEnergy; + G4int TotBin; - static G4double LowerBoundLambda ; // bining for lambda table - static G4double UpperBoundLambda ; - static G4int NbinLambda ; - G4double LowestKineticEnergy,HighestKineticEnergy ; - G4int TotBin ; - - public: - - static void SetLowerBoundLambda(G4double val) {LowerBoundLambda = val;}; - static void SetUpperBoundLambda(G4double val) {UpperBoundLambda = val;}; - static void SetNbinLambda(G4int n) {NbinLambda = n;}; - static G4double GetLowerBoundLambda() { return LowerBoundLambda;}; - static G4double GetUpperBoundLambda() { return UpperBoundLambda;}; - static G4int GetNbinLambda() {return NbinLambda;}; + public: // with description + static void SetLowerBoundLambda(G4double val); + static void SetUpperBoundLambda(G4double val); + static void SetNbinLambda(G4int n); + // set the parameters of the mean free path table. + + static G4double GetLowerBoundLambda(); + static G4double GetUpperBoundLambda(); + static G4int GetNbinLambda(); + // get the parameters of the mean free path table. + }; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4eIonisation.icc" diff --git a/source/processes/electromagnetic/standard/include/G4eIonisation.icc b/source/processes/electromagnetic/standard/include/G4eIonisation.icc index 736171b447..86033e4c0c 100644 --- a/source/processes/electromagnetic/standard/include/G4eIonisation.icc +++ b/source/processes/electromagnetic/standard/include/G4eIonisation.icc @@ -21,71 +21,56 @@ // ******************************************************************** // // -// $Id: G4eIonisation.icc,v 1.4.2.2 2001/06/28 20:19:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eIonisation.icc,v 1.10 2001/11/09 13:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4eIonisation physics process ------------ +//----------------- G4eIonisation physics process ------------------------------ // by Laszlo Urban, 20 March 1997 -// *************************************************************** -// It is the first implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of e+/e-. -// *************************************************************** +//------------------------------------------------------------------------------ // // 24-11-97: correction on MeanFreePath for KinEnergy > HighestLimit // 28-05-01: V.Ivanchenko minor changes to provide ANSI -wall compilation // -// --------------------------------------------------------------- +//------------------------------------------------------------------------------ -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4bool G4eIonisation::IsApplicable( - const G4ParticleDefinition& particle) +inline G4bool G4eIonisation::IsApplicable(const G4ParticleDefinition& particle) { return( (&particle == G4Electron::Electron()) ||(&particle == G4Positron::Positron()) ); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4double G4eIonisation::GetMeanFreePath( - const G4Track& track, - G4double, +inline G4double G4eIonisation::GetMeanFreePath(const G4Track& track, G4double, G4ForceCondition*) { - const G4DynamicParticle* aParticle = track.GetDynamicParticle(); - G4double KineticEnergy = aParticle->GetKineticEnergy(); - G4Material* aMaterial = track.GetMaterial(); + G4double KineticEnergy = track.GetDynamicParticle()->GetKineticEnergy(); + G4Material* aMaterial = track.GetMaterial(); - G4double MeanFreePath; - G4bool isOutRange ; + G4double MeanFreePath; + G4bool isOut; + + if (KineticEnergy > HighestKineticEnergy) KineticEnergy = HighestKineticEnergy; + if (KineticEnergy > LowestKineticEnergy) + MeanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> + GetValue(KineticEnergy, isOut); + else MeanFreePath = DBL_MAX; - if( KineticEnergy < LowestKineticEnergy ) - MeanFreePath = DBL_MAX; - else { - if (KineticEnergy > HighestKineticEnergy) KineticEnergy = HighestKineticEnergy; - MeanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> - GetValue( KineticEnergy, isOutRange); - } - - return MeanFreePath ; + return MeanFreePath; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4double G4eIonisation::GetLambda( - G4double KineticEnergy, - G4Material* material) +inline +G4double G4eIonisation::GetLambda(G4double KineticEnergy, G4Material* material) { G4bool isOut; - //const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - - G4double lambda = (*theMeanFreePathTable) - [material->GetIndex()]-> - GetValue(KineticEnergy,isOut); - return lambda; + return (*theMeanFreePathTable)[material->GetIndex()]-> + GetValue(KineticEnergy,isOut); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh index f0ce5abc6f..a18d7fe2e8 100644 --- a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh +++ b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.hh @@ -21,15 +21,19 @@ // ******************************************************************** // // -// $Id: G4eplusAnnihilation.hh,v 1.4.2.1 2001/06/28 19:12:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eplusAnnihilation.hh,v 1.9 2001/10/01 15:00:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 10-01-97, crossection table + meanfreepath table, M.Maire // 17-03-97, merge 'in fly' and 'at rest', M.Maire -// 31-08-98, new methods SetBining() and PrintInfo() +// 31-08-98, new methods SetBining() and PrintInfo() +// 03-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) // // class description @@ -73,18 +77,26 @@ class G4eplusAnnihilation : public G4VRestDiscreteProcess // Allows to define the binning of the PhysicsTables, // before to build them. - void BuildPhysicsTable(const G4ParticleDefinition& PositronType); + void BuildPhysicsTable(const G4ParticleDefinition&); // It builds the total CrossSectionPerAtom table, for e+, // and for every element contained in the elementTable. // It builds the MeanFreePath table, for e+, // and for every material contained in the materialTable. - // This function overloads a virtual function of the base class. - // It is invoked by the G4ParticleWithCuts::SetCut() method. - + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store CrossSection and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve CrossSection and MeanFreePath tables from an external file + // specified by 'directory' + void PrintInfoDefinition(); // Print few lines of informations about the process: validity range, // origine ..etc.. - // Invoked by BuildPhysicsTable(). + // Invoked by BuildThePhysicsTable(). G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, @@ -92,7 +104,7 @@ class G4eplusAnnihilation : public G4VRestDiscreteProcess // It returns the MeanFreePath of the process for the current track : // (energy, material) // The previousStepSize and G4ForceCondition* are not used. - // This function overloads a virtual function of the base class. + // This function overloads a virtual function of the base class. // It is invoked by the ProcessManager of the Particle. G4double GetCrossSectionPerAtom(G4DynamicParticle* aDynamicPositron, @@ -125,7 +137,7 @@ class G4eplusAnnihilation : public G4VRestDiscreteProcess protected: virtual G4double ComputeCrossSectionPerAtom(G4double PositKinEnergy, - G4double AtomicNumber); + G4double AtomicNumber); virtual G4double ComputeMeanFreePath(G4double PositKinEnergy, G4Material* aMaterial); @@ -133,19 +145,22 @@ class G4eplusAnnihilation : public G4VRestDiscreteProcess private: // hide assignment operator as private - G4eplusAnnihilation& operator=(const G4eplusAnnihilation &right); + G4eplusAnnihilation& operator=(const G4eplusAnnihilation& right); G4eplusAnnihilation(const G4eplusAnnihilation& ); private: - G4PhysicsTable* theCrossSectionTable; // table for crossection + G4PhysicsTable* theCrossSectionTable; G4PhysicsTable* theMeanFreePathTable; - G4double LowestEnergyLimit ; // low energy limit of the crossection formula - G4double HighestEnergyLimit ; // high energy limit of the crossection formula - G4int NumbBinTable ; // number of bins in the crossection table + G4double LowestEnergyLimit; // low energy limit of the tables + G4double HighestEnergyLimit; // high energy limit of the tables + G4int NumbBinTable; // number of bins in the tables + G4double fminimalEnergy; // minimalEnergy of produced particles }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4eplusAnnihilation.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.icc b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.icc index 8156253d8d..9504e401f0 100644 --- a/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.icc +++ b/source/processes/electromagnetic/standard/include/G4eplusAnnihilation.icc @@ -21,30 +21,32 @@ // ******************************************************************** // // -// $Id: G4eplusAnnihilation.icc,v 1.4.2.1 2001/06/28 19:12:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eplusAnnihilation.icc,v 1.8 2001/09/17 17:07:11 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 10-01-97, crossection table + meanfreepath table, M.Maire // 17-03-97, merge 'in fly' and 'at rest', M.Maire // 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation +// 17-09-01, migration of Materials to pure STL (mma) // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4bool G4eplusAnnihilation::IsApplicable(const G4ParticleDefinition& particle) +inline G4bool G4eplusAnnihilation::IsApplicable( + const G4ParticleDefinition& particle) { return ( &particle == G4Positron::Positron() ); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4eplusAnnihilation::GetCrossSectionPerAtom( G4DynamicParticle* aDynamicPositron, G4Element* anElement) -// gives the microscopic total cross section in GEANT4 internal units +// return the total cross section per atom in GEANT4 internal units { G4double crossSection; @@ -62,7 +64,7 @@ inline G4double G4eplusAnnihilation::GetCrossSectionPerAtom( return crossSection; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4eplusAnnihilation::GetMeanFreePath(const G4Track& aTrack, G4double, @@ -71,48 +73,50 @@ inline G4double G4eplusAnnihilation::GetMeanFreePath(const G4Track& aTrack, // returns the positron mean free path in GEANT4 internal units { - const G4DynamicParticle* aDynamicPositron = aTrack.GetDynamicParticle(); - G4double PositronEnergy = aDynamicPositron->GetKineticEnergy(); - G4Material* aMaterial = aTrack.GetMaterial(); + const G4DynamicParticle* aDynamicPositron = aTrack.GetDynamicParticle(); + G4double PositronEnergy = aDynamicPositron->GetKineticEnergy(); + G4Material* aMaterial = aTrack.GetMaterial(); - G4double MeanFreePath; - G4bool isOutRange ; + G4double MeanFreePath; + G4bool isOutRange ; - if (PositronEnergy > HighestEnergyLimit) - MeanFreePath = DBL_MAX; - else { - if (PositronEnergy < LowestEnergyLimit) PositronEnergy = 1.01*LowestEnergyLimit; + if (PositronEnergy > HighestEnergyLimit) MeanFreePath = DBL_MAX; + else + { + if (PositronEnergy < LowestEnergyLimit) + PositronEnergy = 1.01*LowestEnergyLimit; MeanFreePath = (*theMeanFreePathTable)(aMaterial->GetIndex())-> GetValue( PositronEnergy, isOutRange ); - } + } - return MeanFreePath; + return MeanFreePath; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -inline G4double G4eplusAnnihilation::ComputeMeanFreePath(G4double PositKinEnergy, +inline G4double G4eplusAnnihilation::ComputeMeanFreePath( + G4double PositKinEnergy, G4Material* aMaterial) // returns the positron mean free path in GEANT4 internal units { - const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; - const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); + const G4ElementVector* theElementVector = aMaterial->GetElementVector(); + const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); G4double SIGMA = 0 ; - for ( size_t elm=0 ; elm < aMaterial->GetNumberOfElements() ; elm++ ) - { - SIGMA += NbOfAtomsPerVolume[elm] * - ComputeCrossSectionPerAtom(PositKinEnergy, - (*theElementVector)(elm)->GetZ()); - } + for (size_t elm=0 ; elm < aMaterial->GetNumberOfElements() ; elm++ ) + { + SIGMA += NbOfAtomsPerVolume[elm] * + ComputeCrossSectionPerAtom(PositKinEnergy, + (*theElementVector)[elm]->GetZ()); + } return SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4double G4eplusAnnihilation::GetMeanLifeTime(const G4Track&, G4ForceCondition*) @@ -123,5 +127,5 @@ inline G4double G4eplusAnnihilation::GetMeanLifeTime(const G4Track&, return 0.0; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/include/G4hIonisation.hh b/source/processes/electromagnetic/standard/include/G4hIonisation.hh index 2690fc6472..21be0a9317 100644 --- a/source/processes/electromagnetic/standard/include/G4hIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4hIonisation.hh @@ -21,117 +21,151 @@ // ******************************************************************** // // -// $Id: G4hIonisation.hh,v 1.10.4.2 2001/06/28 20:19:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4hIonisation.hh,v 1.17 2001/11/09 13:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// ------------------------------------------------------------ -// GEANT 4 class header file +// --------------- G4hIonisation physics process ------------------------------- +// by Laszlo Urban, 30 May 1997 +// ----------------------------------------------------------------------------- // -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4hIonisation physics process ----------- -// by Laszlo Urban, 30 May 1997 -// ************************************************************ -// It is the first implementation of the NEW IONISATION -// PROCESS. ( delta rays + continuous energy loss) -// It calculates the ionisation for charged hadrons. -// ************************************************************ // corrected by L.Urban on 24/09/97 // corrected by L.Urban on 13/01/98 // bugs fixed by L.Urban on 02/02/99 -// 10/02/00 modifications , new e.m. structure, L.Urban -// ------------------------------------------------------------ +// 10/02/00 modifications , new e.m. structure, L.Urban +// 10-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 14-08-01 new function ComputeRestrictedMeandEdx() + 'cleanup' (mma) +// 19-09-01 come back to previous process name "hIoni" +// 29-10-01 all static functions no more inlined +// +// ----------------------------------------------------------------------------- + +// Class description +// +// This class manages the ionisation process for hadrons. +// it inherites from G4VContinuousDiscreteProcess via G4VhEnergyLoss. +// +// Class description - end + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4hIonisation_h #define G4hIonisation_h 1 -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" #include "G4VhEnergyLoss.hh" -#include "globals.hh" -#include "G4Track.hh" -#include "G4Step.hh" -#include "G4Electron.hh" -#include "G4PhysicsLogVector.hh" -#include "G4PhysicsLinearVector.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... class G4hIonisation : public G4VhEnergyLoss { - public: + public: // with description - G4hIonisation(const G4String& processName = "hIoni"); + G4hIonisation(const G4String& processName = "hIoni"); - ~G4hIonisation(); + ~G4hIonisation(); G4bool IsApplicable(const G4ParticleDefinition&); - + // return true for charged particles, false otherwise + void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); - - virtual void BuildLossTable(const G4ParticleDefinition& aParticleType); - + // this function overloads a virtual function of the base class. + // It is invoked by the G4ParticleWithCuts::SetCut() method. + // It invokes BuildLambdaTable(), BuildLossTable(), BuildDEDXTable() + + void BuildLossTable(const G4ParticleDefinition& aParticleType); + // build the dE/dx tables due to the ionisation, for every materials. + // (restricted stopping power, Bethe-Bloch formula) + void BuildLambdaTable(const G4ParticleDefinition& aParticleType); - + // build mean free path tables for the delta rays production. + // the tables are built for every materials. + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store eLoss and MeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve eLoss and MeanFreePath tables from an external file + // specified by 'directory' + virtual void PrintInfoDefinition(); - - G4double GetMeanFreePath( - const G4Track& track, + // Print few lines of informations about the process: validity range, + // origine ..etc.. + // Invoked by BuildPhysicsTable(). + + G4double GetMeanFreePath(const G4Track& track, G4double previousStepSize, - G4ForceCondition* condition ) ; - + G4ForceCondition* condition ); + // It returns the MeanFreePath of the process for the current track : + // (energy, material) + // The previousStepSize and G4ForceCondition* are not used. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + G4VParticleChange *PostStepDoIt(const G4Track& track, - const G4Step& Step ) ; + const G4Step& Step ); + // It computes the final state of the process (at end of step), + // returned as a ParticleChange object. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. + - protected: - - virtual G4double ComputeMicroscopicCrossSection( + protected: // with description + + virtual G4double ComputeRestrictedMeandEdx( const G4ParticleDefinition& aParticleType, G4double KineticEnergy, - G4double AtomicNumber); - + const G4Material* material, + G4double DeltaThreshold); + // computes restricted mean dE/dx in Geant4 internal units. + + virtual G4double ComputeCrossSectionPerAtom( + const G4ParticleDefinition& aParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double DeltaThreshold); + // computes total cross section per atom in Geant4 internal units. + + protected: + G4PhysicsTable* theMeanFreePathTable; private: - // hide assignment operator + // hide assignment operator G4hIonisation & operator=(const G4hIonisation &right); G4hIonisation(const G4hIonisation&); - + private: - // private data members ............................... - // G4PhysicsTable* theMeanFreePathTable; + static G4double LowerBoundLambda; // bining for lambda table + static G4double UpperBoundLambda; + static G4int NbinLambda; + + G4double LowestKineticEnergy; // binning for dE/dx table + G4double HighestKineticEnergy; + G4int TotBin; + + G4double Tmincut; // min energy of d-rays - // particles , cuts in kinetic energy ........ - const G4Electron* theElectron; - const G4Proton* theProton; - const G4AntiProton* theAntiProton; - - const G4double* DeltaCutInKineticEnergy ; - - G4double DeltaCutInKineticEnergyNow ; - static G4double Tmincut ; - - static G4double LowerBoundLambda ; // bining for lambda table - static G4double UpperBoundLambda ; - static G4int NbinLambda ; - G4double LowestKineticEnergy,HighestKineticEnergy ; - G4int TotBin ; - - public: - - static void SetLowerBoundLambda(G4double val) {LowerBoundLambda = val;}; - static void SetUpperBoundLambda(G4double val) {UpperBoundLambda = val;}; - static void SetNbinLambda(G4int n) {NbinLambda = n;}; - static G4double GetLowerBoundLambda() { return LowerBoundLambda;}; - static G4double GetUpperBoundLambda() { return UpperBoundLambda;}; - static G4int GetNbinLambda() {return NbinLambda;}; + public: // with description + static void SetLowerBoundLambda(G4double val); + static void SetUpperBoundLambda(G4double val); + static void SetNbinLambda(G4int n); + // set the parameters of the mean free path table. + + static G4double GetLowerBoundLambda(); + static G4double GetUpperBoundLambda(); + static G4int GetNbinLambda(); + // get the parameters of the mean free path table. }; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + #include "G4hIonisation.icc" #endif diff --git a/source/processes/electromagnetic/standard/include/G4hIonisation.icc b/source/processes/electromagnetic/standard/include/G4hIonisation.icc index decd31baf0..58e9d4c2c9 100644 --- a/source/processes/electromagnetic/standard/include/G4hIonisation.icc +++ b/source/processes/electromagnetic/standard/include/G4hIonisation.icc @@ -21,55 +21,48 @@ // ******************************************************************** // // -// $Id: G4hIonisation.icc,v 1.3.4.2 2001/06/28 20:19:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4hIonisation.icc,v 1.7 2001/11/09 13:56:28 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file +//------------------ G4hIonisation physics process ----------------------------- +// by Laszlo Urban, 30 May 1997 +//------------------------------------------------------------------------------ // -// ------------ G4hIonisation physics process ------------ -// by Laszlo Urban, 30 May 1997 -// *************************************************************** -// It is the first implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of charged hadrons. -// *************************************************************** // 24/09/97: corrected by L.Urban // 20/11/97: correction on MeanFreePath for KineticEnergy > HighestLimit -// --------------------------------------------------------------- +// 14-08-01: 'cleanup' of GetMeanFreePath (mma) +// +//------------------------------------------------------------------------------ -inline G4double G4hIonisation::GetMeanFreePath( - const G4Track& trackData, - G4double previousStepSize, - G4ForceCondition* condition) -{ - const G4DynamicParticle* aParticle ; - G4Material* aMaterial ; - G4double MeanFreePath; - G4bool isOutRange ; - - *condition = NotForced ; - - aParticle = trackData.GetDynamicParticle() ; - aMaterial = trackData.GetMaterial() ; - - G4double KineticEnergy = aParticle->GetKineticEnergy() ; - - if(KineticEnergy < LowestKineticEnergy) - MeanFreePath = DBL_MAX; - else { - if(KineticEnergy > HighestKineticEnergy) - KineticEnergy = HighestKineticEnergy; - MeanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> - GetValue(KineticEnergy,isOutRange) ; - } - - return MeanFreePath ; -} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... inline G4bool G4hIonisation::IsApplicable( const G4ParticleDefinition& particle) { return(particle.GetPDGCharge() != 0.); } - + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline G4double G4hIonisation::GetMeanFreePath(const G4Track& track, G4double, + G4ForceCondition*) +{ + G4double KineticEnergy = track.GetDynamicParticle()->GetKineticEnergy(); + G4Material* aMaterial = track.GetMaterial(); + + G4double MeanFreePath; + G4bool isOut; + + if (KineticEnergy > HighestKineticEnergy) KineticEnergy = HighestKineticEnergy; + if (KineticEnergy > LowestKineticEnergy) + MeanFreePath = ((*theMeanFreePathTable)(aMaterial->GetIndex()))-> + GetValue(KineticEnergy, isOut); + else MeanFreePath = DBL_MAX; + + return MeanFreePath; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + diff --git a/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc b/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc index d5f6073ff2..c70216ad3d 100644 --- a/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc +++ b/source/processes/electromagnetic/standard/src/G4ComptonScattering.cc @@ -21,14 +21,13 @@ // ******************************************************************** // // -// $Id: G4ComptonScattering.cc,v 1.5.2.1 2001/06/28 19:12:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ComptonScattering.cc,v 1.14 2001/10/01 15:00:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//------------ G4ComptonScattering physics process -------- +//------------ G4ComptonScattering physics process ----------------------------- // by Michel Maire, April 1996 // -// -------------------------------------------------------------- // 28-05-96, DoIt() small change in ElecDirection, by M.Maire // 10-06-96, simplification in ComputeMicroscopicCrossSection(), by M.Maire // 21-06-96, SetCuts implementation, M.Maire @@ -37,17 +36,23 @@ // 05-03-97, new Physics scheme, M.Maire // 28-03-97, protection in BuildPhysicsTable, M.Maire // 07-04-98, remove 'tracking cut' of the scattered gamma, MMa -// 04-06-98, in DoIt, secondary production condition: range>G4std::min(threshold,safety) +// 04-06-98, in DoIt, secondary production condition: +// range>G4std::min(threshold,safety) // 13-08-98, new methods SetBining() PrintInfo() // 15-12-98, cross section=0 below 10 keV -// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- +// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation +// 13-07-01, DoIt: suppression of production cut for the electron (mma) +// 03-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 17-09-01, migration of Materials to pure STL (mma) +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) +// ----------------------------------------------------------------------------- #include "G4ComptonScattering.hh" -#include "G4EnergyLossTables.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // constructor @@ -55,12 +60,13 @@ G4ComptonScattering::G4ComptonScattering(const G4String& processName) : G4VDiscreteProcess (processName), theCrossSectionTable(NULL), theMeanFreePathTable(NULL), - LowestEnergyLimit ( 10*keV), // initialization + LowestEnergyLimit ( 10*keV), HighestEnergyLimit(100*GeV), - NumbBinTable(100) -{ } + NumbBinTable(100), + fminimalEnergy(1*eV) +{} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // destructor @@ -77,44 +83,44 @@ G4ComptonScattering::~G4ComptonScattering() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4ComptonScattering::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) +void G4ComptonScattering::SetPhysicsTableBining( + G4double lowE, G4double highE, G4int nBins) { LowestEnergyLimit = lowE; HighestEnergyLimit = highE; NumbBinTable = nBins; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4ComptonScattering::BuildPhysicsTable(const G4ParticleDefinition& GammaType) - -// Build microscopic cross section table and mean free path table +void G4ComptonScattering::BuildPhysicsTable(const G4ParticleDefinition&) +// Build cross section and mean free path tables { G4double LowEdgeEnergy, Value; G4PhysicsLogVector* ptrVector; -// Build microscopic cross section tables for the Compton Scattering process +// Build cross section per atom tables for the Compton Scattering process if (theCrossSectionTable) { - theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable; } + theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable;} - theCrossSectionTable = new G4PhysicsTable(G4Element::GetNumberOfElements()) ; - const G4ElementTable* theElementTable = G4Element::GetElementTable() ; + theCrossSectionTable = new G4PhysicsTable(G4Element::GetNumberOfElements()); + const G4ElementTable* theElementTable = G4Element::GetElementTable(); G4double AtomicNumber; size_t J; for ( J=0 ; J < G4Element::GetNumberOfElements(); J++ ) { //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, - NumbBinTable ) ; - AtomicNumber = (*theElementTable)(J)->GetZ(); + ptrVector = new G4PhysicsLogVector(LowestEnergyLimit,HighestEnergyLimit, + NumbBinTable ); + AtomicNumber = (*theElementTable)[J]->GetZ(); for ( G4int i = 0 ; i < NumbBinTable ; i++ ) { - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeCrossSectionPerAtom( LowEdgeEnergy, AtomicNumber); - ptrVector->PutValue( i , Value ) ; + LowEdgeEnergy = ptrVector->GetLowEdgeEnergy(i); + Value = ComputeCrossSectionPerAtom(LowEdgeEnergy, AtomicNumber); + ptrVector->PutValue(i,Value); } theCrossSectionTable->insertAt( J , ptrVector ) ; @@ -124,18 +130,18 @@ void G4ComptonScattering::BuildPhysicsTable(const G4ParticleDefinition& GammaTyp // Build mean free path table for the Compton Scattering process if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable; } + theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} - theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; + theMeanFreePathTable= new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); G4Material* material; for ( J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) { //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, + ptrVector = new G4PhysicsLogVector(LowestEnergyLimit,HighestEnergyLimit, NumbBinTable ) ; - material = (*theMaterialTable)(J); + material = (*theMaterialTable)[J]; for ( G4int i = 0 ; i < NumbBinTable ; i++ ) { @@ -151,13 +157,14 @@ void G4ComptonScattering::BuildPhysicsTable(const G4ParticleDefinition& GammaTyp } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4ComptonScattering::ComputeCrossSectionPerAtom (G4double GammaEnergy, G4double Z) -// Calculates the microscopic cross section in GEANT4 internal units. -// A parametrized formula from L. Urban is used to estimate the total cross section. +// Calculates the cross section per atom in GEANT4 internal units. +// A parametrized formula from L. Urban is used to estimate +// the total cross section. // It gives a good description of the data from 10 keV to 100/Z GeV. { @@ -166,12 +173,12 @@ G4double G4ComptonScattering::ComputeCrossSectionPerAtom if ( GammaEnergy < 10.*keV ) return CrossSection; if ( GammaEnergy > (100.*GeV/Z) ) return CrossSection; - static const G4double a = 20.0 , b = 230.0 , c = 440.0 ; + static const G4double a = 20.0 , b = 230.0 , c = 440.0; static const G4double - d1= 2.7965e-1*barn, d2=-1.8300e-1*barn, d3= 6.7527 *barn, d4=-1.9798e+1*barn, - e1= 1.9756e-5*barn, e2=-1.0205e-2*barn, e3=-7.3913e-2*barn, e4= 2.7079e-2*barn, - f1=-3.9178e-7*barn, f2= 6.8241e-5*barn, f3= 6.0480e-5*barn, f4= 3.0274e-4*barn; + d1= 2.7965e-1*barn, d2=-1.8300e-1*barn, d3= 6.7527 *barn, d4=-1.9798e+1*barn, + e1= 1.9756e-5*barn, e2=-1.0205e-2*barn, e3=-7.3913e-2*barn, e4= 2.7079e-2*barn, + f1=-3.9178e-7*barn, f2= 6.8241e-5*barn, f3= 6.0480e-5*barn, f4= 3.0274e-4*barn; G4double p1Z = Z*(d1 + e1*Z + f1*Z*Z), p2Z = Z*(d2 + e2*Z + f2*Z*Z), p3Z = Z*(d3 + e3*Z + f3*Z*Z), p4Z = Z*(d4 + e4*Z + f4*Z*Z); @@ -182,20 +189,20 @@ G4double G4ComptonScattering::ComputeCrossSectionPerAtom + (p2Z + p3Z*X + p4Z*X*X)/(1. + a*X + b*X*X + c*X*X*X); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VParticleChange* G4ComptonScattering::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) // // The scattered gamma energy is sampled according to Klein - Nishina formula. -// The random number techniques of Butcher & Messel are used (Nuc Phys 20(1960),15). +// The random number techniques of Butcher & Messel are used +// (Nuc Phys 20(1960),15). // GEANT4 internal units // // Note : Effects due to binding of atomic electrons are negliged. { aParticleChange.Initialize(aTrack); - G4Material* aMaterial = aTrack.GetMaterial(); const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); G4double GammaEnergy0 = aDynamicGamma->GetKineticEnergy(); @@ -203,7 +210,6 @@ G4VParticleChange* G4ComptonScattering::PostStepDoIt(const G4Track& aTrack, G4ParticleMomentum GammaDirection0 = aDynamicGamma->GetMomentumDirection(); - // // sample the energy rate of the scattered gamma // @@ -215,7 +221,7 @@ G4VParticleChange* G4ComptonScattering::PostStepDoIt(const G4Track& aTrack, do { if ( alpha1/(alpha1+alpha2) > G4UniformRand() ) - { epsilon = exp(-alpha1*G4UniformRand()); // pow(epsilon0,G4UniformRand()) + { epsilon = exp(-alpha1*G4UniformRand()); // epsilon0**r epsilonsq = epsilon*epsilon; } else { epsilonsq = epsilon0sq + (1.- epsilon0sq)*G4UniformRand(); @@ -231,8 +237,8 @@ G4VParticleChange* G4ComptonScattering::PostStepDoIt(const G4Track& aTrack, // G4double cosTeta = 1. - onecost , sinTeta = sqrt (sint2); - G4double Phi = twopi * G4UniformRand() ; - G4double dirx = sinTeta*cos(Phi) , diry = sinTeta*sin(Phi) , dirz = cosTeta ; + G4double Phi = twopi * G4UniformRand(); + G4double dirx = sinTeta*cos(Phi), diry = sinTeta*sin(Phi), dirz = cosTeta; // // update G4VParticleChange for the scattered gamma @@ -240,14 +246,17 @@ G4VParticleChange* G4ComptonScattering::PostStepDoIt(const G4Track& aTrack, G4ThreeVector GammaDirection1 ( dirx,diry,dirz ); GammaDirection1.rotateUz(GammaDirection0); - aParticleChange.SetMomentumChange( GammaDirection1 ) ; + aParticleChange.SetMomentumChange( GammaDirection1 ); G4double GammaEnergy1 = epsilon*GammaEnergy0; - if (GammaEnergy1 > 0.) + G4double localEnergyDeposit = 0.; + + if (GammaEnergy1 > fminimalEnergy) { - aParticleChange.SetEnergyChange( GammaEnergy1 ) ; + aParticleChange.SetEnergyChange( GammaEnergy1 ); } else - { + { + localEnergyDeposit += GammaEnergy1; aParticleChange.SetEnergyChange(0.) ; aParticleChange.SetStatusChange(fStopAndKill); } @@ -256,50 +265,119 @@ G4VParticleChange* G4ComptonScattering::PostStepDoIt(const G4Track& aTrack, // kinematic of the scattered electron // - G4double ElecKineEnergy = GammaEnergy0 - GammaEnergy1 ; - - // condition changed! - if((G4EnergyLossTables::GetRange(G4Electron::Electron(), - ElecKineEnergy,aMaterial)>aStep.GetPostStepPoint()->GetSafety()) - || - (ElecKineEnergy > - (G4Electron::Electron()->GetCutsInEnergy())[aMaterial->GetIndex()])) + G4double ElecKineEnergy = GammaEnergy0 - GammaEnergy1; + + if (ElecKineEnergy > fminimalEnergy) { - G4double ElecMomentum = sqrt(ElecKineEnergy*(ElecKineEnergy+2.*electron_mass_c2)); + G4double ElecMomentum = sqrt(ElecKineEnergy* + (ElecKineEnergy+2.*electron_mass_c2)); G4ThreeVector ElecDirection ( - (GammaEnergy0*GammaDirection0 - GammaEnergy1*GammaDirection1)*(1./ElecMomentum) ); + (GammaEnergy0*GammaDirection0 - GammaEnergy1*GammaDirection1) + *(1./ElecMomentum) ); // create G4DynamicParticle object for the electron. - G4DynamicParticle* aElectron= new G4DynamicParticle (G4Electron::Electron(), - ElecDirection, ElecKineEnergy) ; + G4DynamicParticle* aElectron= new G4DynamicParticle( + G4Electron::Electron(),ElecDirection,ElecKineEnergy); - aParticleChange.SetNumberOfSecondaries(1) ; - aParticleChange.AddSecondary( aElectron ) ; - aParticleChange.SetLocalEnergyDeposit (0.) ; - - } + aParticleChange.SetNumberOfSecondaries(1); + aParticleChange.AddSecondary( aElectron ); + } else - { - aParticleChange.SetNumberOfSecondaries(0) ; - aParticleChange.SetLocalEnergyDeposit (ElecKineEnergy) ; - } - + { + aParticleChange.SetNumberOfSecondaries(0); + localEnergyDeposit += ElecKineEnergy; + } + aParticleChange.SetLocalEnergyDeposit (localEnergyDeposit); + // Reset NbOfInteractionLengthLeft and return aParticleChange return G4VDiscreteProcess::PostStepDoIt( aTrack, aStep); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4ComptonScattering::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store cross section table + filename = GetPhysicsTableFileName(particle,directory,"CrossSection",ascii); + if ( !theCrossSectionTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theCrossSectionTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4ComptonScattering::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theCrossSectionTable and theMeanFreePathTable + if (theCrossSectionTable != 0) { + theCrossSectionTable->clearAndDestroy(); + delete theCrossSectionTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + + G4String filename; + + // retreive cross section table + filename = GetPhysicsTableFileName(particle,directory,"CrossSection",ascii); + theCrossSectionTable = new G4PhysicsTable(G4Element::GetNumberOfElements()); + if ( !theCrossSectionTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theCrossSectionTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4ComptonScattering::PrintInfoDefinition() { G4String comments = "Total cross sections from a parametrisation. "; comments += "Good description from 10 KeV to (100/Z) GeV. \n"; - comments += " Scattered gamma energy according Klein-Nishina."; + comments += " Scattered gamma energy according Klein-Nishina."; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestEnergyLimit,"Energy") + << "\n PhysicsTables from " + << G4BestUnit(LowestEnergyLimit,"Energy") << " to " << G4BestUnit(HighestEnergyLimit,"Energy") << " in " << NumbBinTable << " bins. \n"; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4GammaConversion.cc b/source/processes/electromagnetic/standard/src/G4GammaConversion.cc index 59c1284a2b..222a5de1c9 100644 --- a/source/processes/electromagnetic/standard/src/G4GammaConversion.cc +++ b/source/processes/electromagnetic/standard/src/G4GammaConversion.cc @@ -21,22 +21,15 @@ // ******************************************************************** // // -// $Id: G4GammaConversion.cc,v 1.5.2.2 2001/06/28 20:19:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GammaConversion.cc,v 1.14 2001/10/01 15:00:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland -// -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo -// ------------ G4GammaConversion physics process -------- +//------------------ G4GammaConversion physics process ------------------------- // by Michel Maire, 24 May 1996 -// ************************************************************** +// // 11-06-96, Added SelectRandomAtom() method, M.Maire // 21-06-96, SetCuts implementation, M.Maire -// 24-06-96, simplification in ComputeMicroscopicCrossSection, M.Maire +// 24-06-96, simplification in ComputeCrossSectionPerAtom, M.Maire // 24-06-96, in DoIt : change the particleType stuff, M.Maire // 25-06-96, modification in the generation of the teta angle, M.Maire // 16-09-96, minors optimisations in DoIt. Thanks to P.Urban @@ -48,17 +41,24 @@ // for further annihilation, M.Maire // 14-03-97, new Physics scheme for geant4alpha, M.Maire // 28-03-97, protection in BuildPhysicsTable, M.Maire -// 19-06-97, correction in ComputeMicroscopicCrossSection, L.Urban -// 04-06-98, in DoIt, secondary production condition: range>G4std::min(threshold,safety) +// 19-06-97, correction in ComputeCrossSectionPerAtom, L.Urban +// 04-06-98, in DoIt, secondary production condition: +// range>G4std::min(threshold,safety) // 13-08-98, new methods SetBining() PrintInfo() -// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- +// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation +// 11-07-01, PostStepDoIt - sampling epsil: power(rndm,0.333333) +// 13-07-01, DoIt: suppression of production cut for the (e-,e+) (mma) +// 06-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 17-09-01, migration of Materials to pure STL (mma) +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) +// ----------------------------------------------------------------------------- #include "G4GammaConversion.hh" -#include "G4EnergyLossTables.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // constructor @@ -68,10 +68,11 @@ G4GammaConversion::G4GammaConversion(const G4String& processName) theMeanFreePathTable(NULL), LowestEnergyLimit (2*electron_mass_c2), HighestEnergyLimit(100*GeV), - NumbBinTable(100) -{ } + NumbBinTable(100), + fminimalEnergy(1*eV) +{} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // destructor @@ -88,43 +89,44 @@ G4GammaConversion::~G4GammaConversion() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4GammaConversion::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) +void G4GammaConversion::SetPhysicsTableBining( + G4double lowE, G4double highE, G4int nBins) { LowestEnergyLimit = lowE; HighestEnergyLimit = highE; NumbBinTable = nBins; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4GammaConversion::BuildPhysicsTable(const G4ParticleDefinition& GammaType) -// Build microscopic cross section table and mean free path table +void G4GammaConversion::BuildPhysicsTable(const G4ParticleDefinition&) +// Build cross section and mean free path tables { G4double LowEdgeEnergy, Value; G4PhysicsLogVector* ptrVector; -// Build microscopic cross section tables for the e+e- pair creation +// Build cross section per atom tables for the e+e- pair creation if (theCrossSectionTable) { - theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable; } + theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable;} - theCrossSectionTable = new G4PhysicsTable(G4Element::GetNumberOfElements()) ; - const G4ElementTable* theElementTable = G4Element::GetElementTable() ; + theCrossSectionTable = new G4PhysicsTable(G4Element::GetNumberOfElements()); + const G4ElementTable* theElementTable = G4Element::GetElementTable(); G4double AtomicNumber; size_t J; for ( J=0 ; J < G4Element::GetNumberOfElements(); J++ ) { //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, - NumbBinTable ) ; - AtomicNumber = (*theElementTable)(J)->GetZ(); + ptrVector = new G4PhysicsLogVector(LowestEnergyLimit,HighestEnergyLimit, + NumbBinTable ); + AtomicNumber = (*theElementTable)[J]->GetZ(); for ( G4int i = 0 ; i < NumbBinTable ; i++ ) { LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeMicroscopicCrossSection( LowEdgeEnergy, AtomicNumber); + Value = ComputeCrossSectionPerAtom( LowEdgeEnergy, AtomicNumber); ptrVector->PutValue( i , Value ) ; } @@ -134,19 +136,19 @@ void G4GammaConversion::BuildPhysicsTable(const G4ParticleDefinition& GammaType) // Build mean free path table for the e+e- pair creation - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable; } + if (theMeanFreePathTable) + { theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} - theMeanFreePathTable = new G4PhysicsTable( G4Material::GetNumberOfMaterials() ) ; - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; + theMeanFreePathTable= new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); G4Material* material; - for ( J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) + for ( J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) { //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, - NumbBinTable ) ; - material = (*theMaterialTable)(J); + ptrVector = new G4PhysicsLogVector(LowestEnergyLimit,HighestEnergyLimit, + NumbBinTable); + material = (*theMaterialTable)[J]; for ( G4int i = 0 ; i < NumbBinTable ; i++ ) { @@ -162,38 +164,40 @@ void G4GammaConversion::BuildPhysicsTable(const G4ParticleDefinition& GammaType) PrintInfoDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4double G4GammaConversion::ComputeMicroscopicCrossSection +G4double G4GammaConversion::ComputeCrossSectionPerAtom (G4double GammaEnergy, G4double AtomicNumber) // Calculates the microscopic cross section in GEANT4 internal units. -// A parametrized formula from L. Urban is used to estimate the total cross section. +// A parametrized formula from L. Urban is used to estimate +// the total cross section. // It gives a good description of the data from 1.5 MeV to 100 GeV. -// below 1.5 MeV: sigma=sigma(1.5MeV)*(GammaEnergy-2electronmass)*(GammaEnergy-2electronmass) +// below 1.5 MeV: sigma=sigma(1.5MeV)*(GammaEnergy-2electronmass) +// *(GammaEnergy-2electronmass) { G4double GammaEnergyLimit = 1.5*MeV; G4double CrossSection = 0.0 ; if ( AtomicNumber < 1. ) return CrossSection; - if ( GammaEnergy < 2*electron_mass_c2 ) return CrossSection ; + if ( GammaEnergy < 2*electron_mass_c2 ) return CrossSection; static const G4double - a0= 8.7842e+2*microbarn, a1=-1.9625e+3*microbarn, a2= 1.2949e+3*microbarn, - a3=-2.0028e+2*microbarn, a4= 1.2575e+1*microbarn, a5=-2.8333e-1*microbarn; + a0= 8.7842e+2*microbarn, a1=-1.9625e+3*microbarn, a2= 1.2949e+3*microbarn, + a3=-2.0028e+2*microbarn, a4= 1.2575e+1*microbarn, a5=-2.8333e-1*microbarn; static const G4double - b0=-1.0342e+1*microbarn, b1= 1.7692e+1*microbarn, b2=-8.2381 *microbarn, - b3= 1.3063 *microbarn, b4=-9.0815e-2*microbarn, b5= 2.3586e-3*microbarn; + b0=-1.0342e+1*microbarn, b1= 1.7692e+1*microbarn, b2=-8.2381 *microbarn, + b3= 1.3063 *microbarn, b4=-9.0815e-2*microbarn, b5= 2.3586e-3*microbarn; static const G4double - c0=-4.5263e+2*microbarn, c1= 1.1161e+3*microbarn, c2=-8.6749e+2*microbarn, - c3= 2.1773e+2*microbarn, c4=-2.0467e+1*microbarn, c5= 6.5372e-1*microbarn; + c0=-4.5263e+2*microbarn, c1= 1.1161e+3*microbarn, c2=-8.6749e+2*microbarn, + c3= 2.1773e+2*microbarn, c4=-2.0467e+1*microbarn, c5= 6.5372e-1*microbarn; G4double GammaEnergySave = GammaEnergy ; if (GammaEnergy < GammaEnergyLimit) GammaEnergy = GammaEnergyLimit ; - G4double X = log(GammaEnergy/electron_mass_c2), X2=X*X, X3=X2*X, X4=X3*X, X5=X4*X; + G4double X=log(GammaEnergy/electron_mass_c2),X2=X*X, X3=X2*X, X4=X3*X, X5=X4*X; G4double F1 = a0 + a1*X + a2*X2 + a3*X3 + a4*X4 + a5*X5, F2 = b0 + b1*X + b2*X2 + b3*X3 + b4*X4 + b5*X5, @@ -205,7 +209,7 @@ G4double G4GammaConversion::ComputeMicroscopicCrossSection if (GammaEnergySave < GammaEnergyLimit) { X=GammaEnergySave-2.*electron_mass_c2; - CrossSection *= X*X ; + CrossSection *= X*X; } if (CrossSection < 0.) CrossSection = 0.; @@ -213,23 +217,23 @@ G4double G4GammaConversion::ComputeMicroscopicCrossSection return CrossSection; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VParticleChange* G4GammaConversion::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) // -// The secondaries e+e- energies are sampled using the Bethe - Heitler cross sections -// with Coulomb correction. -// A modified version of the random number techniques of Butcher & Messel is used -// (Nuc Phys 20(1960),15). +// The secondaries e+e- energies are sampled using the Bethe - Heitler +// cross sections with Coulomb correction. +// A modified version of the random number techniques of Butcher & Messel +// is used (Nuc Phys 20(1960),15). // // GEANT4 internal units. // -// Note 1 : Effects due to the breakdown of the Born approximation at low energy -// are ignored. -// Note 2 : The differential cross section implicitly takes account of pair creation -// in both nuclear and atomic electron fields. However triplet prodution is -// not generated. +// Note 1 : Effects due to the breakdown of the Born approximation at +// low energy are ignored. +// Note 2 : The differential cross section implicitly takes account of +// pair creation in both nuclear and atomic electron fields. +// However triplet prodution is not generated. { aParticleChange.Initialize(aTrack); @@ -258,13 +262,13 @@ G4VParticleChange* G4GammaConversion::PostStepDoIt(const G4Track& aTrack, if (GammaEnergy > 50.*MeV) FZ += 8.*(anElement->GetfCoulomb()); // limits of the screening variable - G4double screenfac = 136.*epsil0/(anElement->GetIonisation()->GetZ3()) ; + G4double screenfac = 136.*epsil0/(anElement->GetIonisation()->GetZ3()); G4double screenmax = exp ((42.24 - FZ)/8.368) - 0.952 ; - G4double screenmin = G4std::min(4.*screenfac,screenmax) ; + G4double screenmin = G4std::min(4.*screenfac,screenmax); // limits of the energy sampling G4double epsil1 = 0.5 - 0.5*sqrt(1. - screenmin/screenmax) ; - G4double epsilmin = G4std::max(epsil0,epsil1) , epsilrange = 0.5 - epsilmin ; + G4double epsilmin = G4std::max(epsil0,epsil1) , epsilrange = 0.5 - epsilmin; // // sample the energy rate of the created electron (or positron) @@ -272,24 +276,26 @@ G4VParticleChange* G4GammaConversion::PostStepDoIt(const G4Track& aTrack, //G4double epsil, screenvar, greject ; G4double screenvar, greject ; - G4double F10 = ScreenFunction1(screenmin) - FZ , F20 = ScreenFunction2(screenmin) - FZ; - G4double NormF1 = G4std::max(F10*epsilrange*epsilrange,0.) , NormF2 = G4std::max(1.5*F20,0.); + G4double F10 = ScreenFunction1(screenmin) - FZ; + G4double F20 = ScreenFunction2(screenmin) - FZ; + G4double NormF1 = G4std::max(F10*epsilrange*epsilrange,0.); + G4double NormF2 = G4std::max(1.5*F20,0.); do { if ( NormF1/(NormF1+NormF2) > G4UniformRand() ) - { epsil = 0.5 - epsilrange*pow(G4UniformRand(), 1/3) ; + { epsil = 0.5 - epsilrange*pow(G4UniformRand(), 0.333333); screenvar = screenfac/(epsil*(1-epsil)); - greject = (ScreenFunction1(screenvar) - FZ)/F10 ; + greject = (ScreenFunction1(screenvar) - FZ)/F10; } else { epsil = epsilmin + epsilrange*G4UniformRand(); screenvar = screenfac/(epsil*(1-epsil)); - greject = (ScreenFunction2(screenvar) - FZ)/F20 ; + greject = (ScreenFunction2(screenvar) - FZ)/F20; } } while( greject < G4UniformRand() ); - } // end of epsil sampling......................... - + } // end of epsil sampling + // // fixe charges randomly // @@ -309,113 +315,172 @@ G4VParticleChange* G4GammaConversion::PostStepDoIt(const G4Track& aTrack, // // scattered electron (positron) angles. ( Z - axis along the parent photon) // - // universal distribution suggested by L. Urban (Geant3 manual (1993) Phys211), + // universal distribution suggested by L. Urban + // (Geant3 manual (1993) Phys211), // derived from Tsai distribution (Rev Mod Phys 49,421(1977)) G4double u; const G4double a1 = 0.625 , a2 = 3.*a1 , d = 27. ; - if (9./(9.+d) > G4UniformRand()) u = - log(G4UniformRand()*G4UniformRand())/a1 ; - else u = - log(G4UniformRand()*G4UniformRand())/a2 ; + if (9./(9.+d) >G4UniformRand()) u= - log(G4UniformRand()*G4UniformRand())/a1; + else u= - log(G4UniformRand()*G4UniformRand())/a2; - G4double Teta = u*electron_mass_c2/GammaEnergy ; - G4double Phi = twopi * G4UniformRand() ; - G4double dirx = sin(Teta)*cos(Phi) , diry = sin(Teta)*sin(Phi) , dirz = cos(Teta) ; + G4double Teta = u*electron_mass_c2/GammaEnergy; + G4double Phi = twopi * G4UniformRand(); + G4double dirx=sin(Teta)*cos(Phi), diry=sin(Teta)*sin(Phi), dirz=cos(Teta); // // kinematic of the created pair // - // the electron and positron are assumed to have a symetric angular distribution - // with respect to the Z axis along the parent photon. + // the electron and positron are assumed to have a symetric + // angular distribution with respect to the Z axis along the parent photon. - G4double LocalEnerDeposit = 0. ; aParticleChange.SetNumberOfSecondaries(2) ; - G4double ElectKineEnergy = G4std::max(0.,ElectTotEnergy - electron_mass_c2) ; - // condition changed ! - if((G4EnergyLossTables::GetRange(G4Electron::Electron(), - ElectKineEnergy,aMaterial)>aStep.GetPostStepPoint()->GetSafety()) - || - (ElectKineEnergy > - (G4Electron::Electron()->GetCutsInEnergy())[aMaterial->GetIndex()])) + G4double ElectKineEnergy = G4std::max(0.,ElectTotEnergy - electron_mass_c2); + G4double localEnergyDeposit = 0.; - { - G4ThreeVector ElectDirection ( dirx, diry, dirz ); - ElectDirection.rotateUz(GammaDirection); + if (ElectKineEnergy > fminimalEnergy) + { + G4ThreeVector ElectDirection (dirx, diry, dirz); + ElectDirection.rotateUz(GammaDirection); - // create G4DynamicParticle object for the particle1 - G4DynamicParticle* aParticle1= new G4DynamicParticle (G4Electron::Electron(), - ElectDirection, ElectKineEnergy); - aParticleChange.AddSecondary( aParticle1 ) ; - } - else - { LocalEnerDeposit += ElectKineEnergy ; } + // create G4DynamicParticle object for the particle1 + G4DynamicParticle* aParticle1= new G4DynamicParticle( + G4Electron::Electron(),ElectDirection,ElectKineEnergy); + aParticleChange.AddSecondary(aParticle1); + } + else + { localEnergyDeposit += ElectKineEnergy;} // the e+ is always created (even with Ekine=0) for further annihilation. - G4double PositKineEnergy = G4std::max(0.,PositTotEnergy - electron_mass_c2) ; + G4double PositKineEnergy = G4std::max(0.,PositTotEnergy - electron_mass_c2); + if (PositKineEnergy < fminimalEnergy) + { localEnergyDeposit += PositKineEnergy; PositKineEnergy = 0.;} - // if (G4EnergyLossTables::GetRange(G4Positron::Positron(),PositKineEnergy,aMaterial) - // < G4std::min(G4Positron::GetCuts(), aStep.GetPostStepPoint()->GetSafety()) ) - if((G4EnergyLossTables::GetRange(G4Positron::Positron(), - PositKineEnergy,aMaterial)GetSafety()) - && - (PositKineEnergy < - (G4Positron::Positron()->GetCutsInEnergy())[aMaterial->GetIndex()])) - - { - LocalEnerDeposit += PositKineEnergy ; - PositKineEnergy = 0. ; - } - G4ThreeVector PositDirection ( -dirx, -diry, dirz ); + G4ThreeVector PositDirection (-dirx, -diry, dirz); PositDirection.rotateUz(GammaDirection); // create G4DynamicParticle object for the particle2 - G4DynamicParticle* aParticle2= new G4DynamicParticle (G4Positron::Positron(), - PositDirection, PositKineEnergy); - aParticleChange.AddSecondary( aParticle2 ) ; + G4DynamicParticle* aParticle2= new G4DynamicParticle( + G4Positron::Positron(),PositDirection,PositKineEnergy); + aParticleChange.AddSecondary(aParticle2); - aParticleChange.SetLocalEnergyDeposit( LocalEnerDeposit ) ; + aParticleChange.SetLocalEnergyDeposit(localEnergyDeposit); // // Kill the incident photon // - aParticleChange.SetMomentumChange( 0., 0., 0. ) ; - aParticleChange.SetEnergyChange( 0. ) ; - aParticleChange.SetStatusChange( fStopAndKill ) ; + aParticleChange.SetMomentumChange( 0., 0., 0. ); + aParticleChange.SetEnergyChange( 0. ); + aParticleChange.SetStatusChange( fStopAndKill ); // Reset NbOfInteractionLengthLeft and return aParticleChange return G4VDiscreteProcess::PostStepDoIt( aTrack, aStep ); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4Element* G4GammaConversion::SelectRandomAtom(const G4DynamicParticle* aDynamicGamma, +G4Element* G4GammaConversion::SelectRandomAtom( + const G4DynamicParticle* aDynamicGamma, G4Material* aMaterial) { // select randomly 1 element within the material const G4int NumberOfElements = aMaterial->GetNumberOfElements(); const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - if (NumberOfElements == 1) return (*theElementVector)(0); + if (NumberOfElements == 1) return (*theElementVector)[0]; - const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); + const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); G4double PartialSumSigma = 0. ; G4double rval = G4UniformRand()/MeanFreePath; for ( G4int i=0 ; i < NumberOfElements ; i++ ) - { PartialSumSigma += theAtomNumDensityVector[i] * - GetMicroscopicCrossSection(aDynamicGamma, (*theElementVector)(i)); - if (rval <= PartialSumSigma) return ((*theElementVector)(i)); + { PartialSumSigma += NbOfAtomsPerVolume[i] * + GetCrossSectionPerAtom(aDynamicGamma, (*theElementVector)[i]); + if (rval <= PartialSumSigma) return ((*theElementVector)[i]); } G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() << "' has no elements, NULL pointer returned." << G4endl; return NULL; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4GammaConversion::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store cross section table + filename = GetPhysicsTableFileName(particle,directory,"CrossSection",ascii); + if ( !theCrossSectionTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theCrossSectionTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4GammaConversion::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theCrossSectionTable and theMeanFreePathTable + if (theCrossSectionTable != 0) { + theCrossSectionTable->clearAndDestroy(); + delete theCrossSectionTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + + G4String filename; + + // retreive cross section table + filename = GetPhysicsTableFileName(particle,directory,"CrossSection",ascii); + theCrossSectionTable = new G4PhysicsTable(G4Element::GetNumberOfElements()); + if ( !theCrossSectionTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theCrossSectionTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4GammaConversion::PrintInfoDefinition() { @@ -424,9 +489,10 @@ void G4GammaConversion::PrintInfoDefinition() comments += " e+e- energies according Bethe-Heitler"; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestEnergyLimit,"Energy") + << "\n PhysicsTables from " + << G4BestUnit(LowestEnergyLimit, "Energy") << " to " << G4BestUnit(HighestEnergyLimit,"Energy") << " in " << NumbBinTable << " bins. \n"; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4PAIonisation.cc b/source/processes/electromagnetic/standard/src/G4PAIonisation.cc index 1b54e1e034..51e8b6bf6b 100644 --- a/source/processes/electromagnetic/standard/src/G4PAIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4PAIonisation.cc @@ -21,27 +21,31 @@ // ******************************************************************** // // -// $Id: G4PAIonisation.cc,v 1.14.2.1 2001/06/28 19:12:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PAIonisation.cc,v 1.22 2001/11/09 13:59:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ************************************************************** // -// 12.07.00, V.Grichine - modifications in BuildPAIonisationTable -// 11.07.00, V.Grichine - GetRandomEnergyTransfer, and PostStepDoIt +// 08.11.01 particleMass becomes a local variable (mma) +// 17.09.01 migration of Materials to pure STL (mma) +// 28.05.01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 17.05.01 V. Grichine, low energy extension down to 10*keV of proton +// 12.07.00 V.Grichine - modifications in BuildPAIonisationTable +// 11.07.00 V.Grichine - GetRandomEnergyTransfer, and PostStepDoIt // modifications -// 03.07.00, V.Grichine - modifications in AlongStepDoIt -// 08-04-98: remove 'traking cut' of the ionizing particle, MMa -// 30-11-97: V. Grichine +// 03.07.00 V.Grichine - modifications in AlongStepDoIt +// 08-04-98 remove 'traking cut' of the ionizing particle, MMa +// 30-11-97 V. Grichine // // ************************************************************** #include "G4PAIonisation.hh" #include "G4PAIxSection.hh" -const G4double G4PAIonisation:: LowestKineticEnergy = 100.0*MeV ; -const G4double G4PAIonisation::HighestKineticEnergy = 10.*TeV ; -G4int G4PAIonisation::TotBin = 100 ; // 50 +const G4double G4PAIonisation:: LowestKineticEnergy = 10.0*keV ; // 100.0*MeV ; +const G4double G4PAIonisation::HighestKineticEnergy = 10.*TeV ; // 1000.0*MeV ; +G4int G4PAIonisation::TotBin = 200 ; // 50 // create physics vector and fill it @@ -63,11 +67,11 @@ G4PAIonisation::G4PAIonisation( const G4String& materialName, : G4VPAIenergyLoss(processName), theElectron ( G4Electron::Electron() ) { - G4int numberOfMat, iMat ; + G4int iMat ; theMeanFreePathTable = NULL; - lastCutInRange = 0. ; + lastCutInRange = 0 ; static const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - numberOfMat = theMaterialTable->length() ; + G4int numberOfMat = G4Material::GetNumberOfMaterials() ; for(iMat=0;iMatGetName() ) @@ -115,7 +119,13 @@ G4PAIonisation::~G4PAIonisation() ///////////////////////////////////////////////////////////////////////// // // +G4double G4PAIonisation::GetMaxKineticEnergy() {return HighestKineticEnergy;} +G4double G4PAIonisation::GetMinKineticEnergy() {return LowestKineticEnergy;} +G4int G4PAIonisation::GetBinNumber() {return TotBin;} +///////////////////////////////////////////////////////////////////////// +// +// void G4PAIonisation::ComputeSandiaPhotoAbsCof() { @@ -178,7 +188,7 @@ G4PAIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) { G4double Charge = aParticleType.GetPDGCharge(); - G4double Chargesquare = Charge*Charge ; + //G4double Chargesquare = Charge*Charge ; CutInRange = aParticleType.GetLengthCuts(); // BuildLossTable(aParticleType) ; @@ -193,9 +203,9 @@ G4PAIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) RecorderOfpbarProcess[CounterOfpbarProcess] = (*this).theLossTable ; CounterOfpbarProcess++; } - if(CutInRange != lastCutInRange) + if( !EqualCutVectors(CutInRange, lastCutInRange)) { - lastCutInRange = CutInRange ; + lastCutInRange = CopyCutVectors(lastCutInRange,CutInRange) ; BuildLambdaTable(aParticleType) ; } // G4VPAIenergyLoss::BuildDEDXTable(aParticleType) ; @@ -211,7 +221,7 @@ void G4PAIonisation::BuildPAIonisationTable() { G4double LowEdgeEnergy , ionloss ; - G4double massRatio, tau, Tmax, gamma, bg2 ; + G4double massRatio, tau, Tmax, Tmin, Tkin, deltaLow, gamma, bg2 ; if ( theLossTable) { @@ -230,12 +240,18 @@ G4PAIonisation::BuildPAIonisationTable() //create physics vector then fill it .... G4PhysicsLogVector* aVector = new G4PhysicsLogVector( LowestKineticEnergy, - HighestKineticEnergy, - TotBin ) ; + HighestKineticEnergy, + TotBin ) ; - // From gas detector experience + - DeltaCutInKineticEnergyNow = 100*keV ; + DeltaCutInKineticEnergyNow = 100*keV ; // From gas detector experience + + Tmin = fSandiaPhotoAbsCof[0][0] ; // low energy Sandia interval + + // G4cout<<"Tmin = "<GetDefinition()->GetParticleName() == "proton") { aParticleChange.SetStatusChange( fStopAndKill ) ; @@ -478,16 +503,17 @@ G4VParticleChange* G4PAIonisation::AlongStepDoIt( const G4Track& trackData, const G4DynamicParticle* aParticle; G4Material* aMaterial; - G4bool isOut; - G4double E,ScaledE,finalT,Step,Tbin,rangebin ; - const G4double smallLoss=DBL_MIN; + //G4bool isOut; + //G4double E,ScaledE,finalT,Step,Tbin,rangebin, delta ; + G4double E,ScaledE,finalT,Step,delta; + //const G4double smallLoss=DBL_MIN; const G4double BigRange = DBL_MAX ; - G4int index ; - G4double cc,discr ; + //G4int index ; + //G4double cc,discr ; aParticleChange.Initialize(trackData) ; aMaterial = trackData.GetMaterial() ; - index = aMaterial->GetIndex() ; + size_t index = aMaterial->GetIndex() ; // get the actual (true) Step length from stepData // there is no loss for Step=0. ! @@ -505,14 +531,12 @@ G4VParticleChange* G4PAIonisation::AlongStepDoIt( const G4Track& trackData, E = aParticle->GetKineticEnergy() ; - G4double mass = aParticle->GetDefinition()->GetPDGMass() ; - G4double gamma = 1.0 + E/mass ; - - if( gamma < 1.2 ) return &aParticleChange ; - G4double Charge = aParticle->GetDefinition()->GetPDGCharge() ; + G4double Chargesquare = Charge*Charge ; - G4double MassRatio = proton_mass_c2/mass ; + + G4double MassRatio = proton_mass_c2/aParticle->GetDefinition()->GetPDGMass() ; + ScaledE = E*MassRatio ; ParticleCutInKineticEnergyNow = @@ -528,12 +552,17 @@ G4VParticleChange* G4PAIonisation::AlongStepDoIt( const G4Track& trackData, // fMeanLoss = ScaledE-0.5*(discr-RangeCoeffB)/RangeCoeffA ; // now the loss with fluctuation + delta = GetLossWithFluct(Step,aParticle,aMaterial) ; + if ( delta < 0.0 ) + { + // G4cout<<"PAI::delta = "<GetIndex() ; - G4bool isOutRange ; + G4long numOfCollisions; + // G4long iCollision, numOfCollisions ; + //G4int index = aMaterial->GetIndex() ; + //G4bool isOutRange ; // G4cout<<"G4VPAIenergyLoss::GetLossWithFluct"<GetKineticEnergy() ; G4double MassRatio = proton_mass_c2/aParticle->GetDefinition()->GetPDGMass() ; G4double charge = aParticle->GetDefinition()->GetPDGCharge() ; diff --git a/source/processes/electromagnetic/standard/src/G4PAIxSection.cc b/source/processes/electromagnetic/standard/src/G4PAIxSection.cc index d004d1e45f..fb49268233 100644 --- a/source/processes/electromagnetic/standard/src/G4PAIxSection.cc +++ b/source/processes/electromagnetic/standard/src/G4PAIxSection.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PAIxSection.cc,v 1.4.4.1 2001/06/28 19:12:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PAIxSection.cc,v 1.8 2001/10/17 14:01:11 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4PAIxSection.cc -- class implementation file @@ -35,14 +35,17 @@ // // History: // 1st version 11.06.97 V. Grichine - // 20.11.98 adapted to a new Material/SandiaTable interface, mma +// 17.05.01 V. Grichine, low energy extension down to 10*keV of proton +// 28.05.01 V.Ivanchenko minor changes to provide ANSI -wall compilation + + #include "G4ios.hh" #include #include "G4PAIxSection.hh" #include "globals.hh" -#include "G4MaterialTable.hh" +#include "G4Material.hh" /* ****************************************************************** @@ -781,37 +784,50 @@ G4double G4PAIxSection::DifPAIxSection( G4int i , G4double betaGammaSq ) { G4double be2,cof,x1,x2,x3,x4,x5,x6,x7,x8,result ; - + //G4double beta, be4 ; + G4double be4 ; + G4double betaBohr2 = fine_structure_const*fine_structure_const ; + G4double betaBohr4 = betaBohr2*betaBohr2*4.0 ; be2 = betaGammaSq/(1 + betaGammaSq) ; + be4 = be2*be2 ; + // beta = sqrt(be2) ; cof = 1 ; x1 = log(2*electron_mass_c2/fSplineEnergy[i]) ; - x2 = -log((1/betaGammaSq - fRePartDielectricConst[i])* - (1/betaGammaSq - fRePartDielectricConst[i]) + - fImPartDielectricConst[i]*fImPartDielectricConst[i])/2 ; - - x3 = -fRePartDielectricConst[i] + 1/betaGammaSq ; - x5 = -1 - fRePartDielectricConst[i] + - be2*((1 +fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) + - fImPartDielectricConst[i]*fImPartDielectricConst[i]) ; - if(fImPartDielectricConst[i]==0) + if( betaGammaSq < 0.01 ) x2 = log(be2) ; + else { - x6=0 ; + x2 = -log( (1/betaGammaSq - fRePartDielectricConst[i])* + (1/betaGammaSq - fRePartDielectricConst[i]) + + fImPartDielectricConst[i]*fImPartDielectricConst[i] )/2 ; + } + if( fImPartDielectricConst[i] == 0.0 ||betaGammaSq < 0.01 ) + { + x6=0 ; } else { - x7 = atan2(fImPartDielectricConst[i],x3) ; - x6 = x5 * x7 ; + x3 = -fRePartDielectricConst[i] + 1/betaGammaSq ; + x5 = -1 - fRePartDielectricConst[i] + + be2*((1 +fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) + + fImPartDielectricConst[i]*fImPartDielectricConst[i]) ; + + x7 = atan2(fImPartDielectricConst[i],x3) ; + x6 = x5 * x7 ; } // if(fImPartDielectricConst[i] == 0) x6 = 0 ; x4 = ((x1 + x2)*fImPartDielectricConst[i] + x6)/hbarc ; + // if( x4 < 0.0 ) x4 = 0.0 ; x8 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) + fImPartDielectricConst[i]*fImPartDielectricConst[i] ; - result = (x4 + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i])* - fine_structure_const/be2/pi ; - + result = (x4 + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i]) ; + if(result < 1.0e-8) result = 1.0e-8 ; + result *= fine_structure_const/be2/pi ; + // result *= (1-exp(-beta/betaBohr))*(1-exp(-beta/betaBohr)) ; + // result *= (1-exp(-be2/betaBohr2)) ; + result *= (1-exp(-be4/betaBohr4)) ; if(fDensity >= 0.1) { result /= x8 ; diff --git a/source/processes/electromagnetic/standard/src/G4PhotoElectricEffect.cc b/source/processes/electromagnetic/standard/src/G4PhotoElectricEffect.cc index 84ef39de2d..f5aa32e9b7 100644 --- a/source/processes/electromagnetic/standard/src/G4PhotoElectricEffect.cc +++ b/source/processes/electromagnetic/standard/src/G4PhotoElectricEffect.cc @@ -21,10 +21,10 @@ // ******************************************************************** // // -// $Id: G4PhotoElectricEffect.cc,v 1.13.2.1 2001/06/28 19:12:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhotoElectricEffect.cc,v 1.22 2001/10/01 15:00:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 12-06-96, Added SelectRandomAtom() method, by M.Maire // 21-06-96, SetCuts implementation, M.Maire @@ -33,7 +33,8 @@ // 08-01-97, crossection table + meanfreepath table, M.Maire // 13-03-97, adapted for the new physics scheme, M.Maire // 28-03-97, protection in BuildPhysicsTable, M.Maire -// 04-06-98, in DoIt, secondary production condition: range>G4std::min(threshold,safety) +// 04-06-98, in DoIt, secondary production condition: +// range > G4std::min(threshold,safety) // 13-08-98, new methods SetBining() PrintInfo() // 17-11-98, use table of Atomic shells in PostStepDoIt // 06-01-99, use Sandia crossSection below 50 keV, V.Grichine mma @@ -41,18 +42,22 @@ // 08-06-99, removed this above protection from the DoIt. mma // 21-06-00, in DoIt, killing photon: aParticleChange.SetEnergyChange(0.); mma // 22-06-00, in DoIt, absorbe very low energy photon (back to 20-05-99); mma -// 22-02-01, back to 08-06-99 after correc in SandiaTable (materials-V03-00-05) -// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation - +// 22-02-01, back to 08-06-99 after correc in SandiaTable (materials-V03-00-05) +// 28-05-01, V.Ivanchenko minor changes to provide ANSI -wall compilation +// 13-07-01, DoIt: suppression of production cut of the electron (mma) +// 06-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 17-09-01, migration of Materials to pure STL (mma) +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4PhotoElectricEffect.hh" -#include "G4EnergyLossTables.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // constructor @@ -62,10 +67,11 @@ G4PhotoElectricEffect::G4PhotoElectricEffect(const G4String& processName) theMeanFreePathTable(NULL), LowestEnergyLimit (50*keV), HighestEnergyLimit(50*MeV), - NumbBinTable(100) -{ } + NumbBinTable(100), + fminimalEnergy(1*eV) +{} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // destructor @@ -82,38 +88,39 @@ G4PhotoElectricEffect::~G4PhotoElectricEffect() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4PhotoElectricEffect::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) +void G4PhotoElectricEffect::SetPhysicsTableBining( + G4double lowE, G4double highE, G4int nBins) { LowestEnergyLimit = lowE; HighestEnergyLimit = highE; NumbBinTable = nBins; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4PhotoElectricEffect::BuildPhysicsTable(const G4ParticleDefinition& PhotonType) +void G4PhotoElectricEffect::BuildPhysicsTable(const G4ParticleDefinition&) -// Build microscopic cross section table and mean free path table +// Build cross section per atom and mean free path tables { G4double LowEdgeEnergy, Value; G4PhysicsLogVector* ptrVector; -// Build microscopic cross section tables for the Photo Electric Effect +// Build cross section per atom tables for the Photo Electric Effect if (theCrossSectionTable) { - theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable; } + theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable;} - theCrossSectionTable = new G4PhysicsTable( G4Element::GetNumberOfElements()) ; - const G4ElementTable* theElementTable = G4Element::GetElementTable() ; + theCrossSectionTable = new G4PhysicsTable( G4Element::GetNumberOfElements()); + const G4ElementTable* theElementTable = G4Element::GetElementTable(); G4double AtomicNumber; size_t J; for ( J=0 ; J < G4Element::GetNumberOfElements(); J++ ) { //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, + ptrVector = new G4PhysicsLogVector(LowestEnergyLimit,HighestEnergyLimit, NumbBinTable ) ; - AtomicNumber = (*theElementTable)(J)->GetZ(); + AtomicNumber = (*theElementTable)[J]->GetZ(); for ( G4int i = 0 ; i < NumbBinTable ; i++ ) { @@ -129,18 +136,18 @@ void G4PhotoElectricEffect::BuildPhysicsTable(const G4ParticleDefinition& Photon // Build mean free path table for the Photo Electric Effect if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable; } + theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} - theMeanFreePathTable = new G4PhysicsTable( G4Material::GetNumberOfMaterials() ) ; + theMeanFreePathTable= new G4PhysicsTable(G4Material::GetNumberOfMaterials()); const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; G4Material* material; for ( J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) { //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, - NumbBinTable ) ; - material = (*theMaterialTable)(J); + ptrVector = new G4PhysicsLogVector(LowestEnergyLimit,HighestEnergyLimit, + NumbBinTable ); + material = (*theMaterialTable)[J]; for ( G4int i = 0 ; i < NumbBinTable ; i++ ) { @@ -156,13 +163,15 @@ void G4PhotoElectricEffect::BuildPhysicsTable(const G4ParticleDefinition& Photon PrintInfoDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4double G4PhotoElectricEffect::ComputeCrossSectionPerAtom (G4double PhotonEnergy, - G4double AtomicNumber) +G4double G4PhotoElectricEffect::ComputeCrossSectionPerAtom( + G4double PhotonEnergy, + G4double AtomicNumber) -// Calculates the microscopic cross section in GEANT4 internal units. -// A parametrized formula from L. Urban is used to estimate the total cross section. +// Calculates the cross section per atom in GEANT4 internal units. +// A parametrized formula from L. Urban is used to estimate the +// total cross section. // It gives a good description of the elements : 5 < Atomic Number < 100 and // from 10 keV to 50 MeV. @@ -212,7 +221,7 @@ G4double G4PhotoElectricEffect::ComputeCrossSectionPerAtom (G4double PhotonEnerg return CrossSection; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4PhotoElectricEffect::ComputeSandiaCrossSection(G4double PhotonEnergy, G4double AtomicNumber) @@ -227,7 +236,7 @@ G4double G4PhotoElectricEffect::ComputeSandiaCrossSection(G4double PhotonEnergy, SandiaCof[2]/energy3 + SandiaCof[3]/energy4; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VParticleChange* G4PhotoElectricEffect::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) @@ -259,22 +268,19 @@ G4VParticleChange* G4PhotoElectricEffect::PostStepDoIt(const G4Track& aTrack, if (i==NbOfShells) return G4VDiscreteProcess::PostStepDoIt(aTrack,aStep); G4double ElecKineEnergy = PhotonEnergy - anElement->GetAtomicShell(i); - if ((G4EnergyLossTables::GetRange(G4Electron::Electron(), - ElecKineEnergy,aMaterial)>aStep.GetPostStepPoint()->GetSafety()) - || - (ElecKineEnergy > - (G4Electron::Electron()->GetCutsInEnergy())[aMaterial->GetIndex()])) + + if (ElecKineEnergy > fminimalEnergy) { // the electron is created in the direction of the incident photon ... - G4DynamicParticle* aElectron= new G4DynamicParticle (G4Electron::Electron(), - PhotonDirection, ElecKineEnergy) ; - aParticleChange.SetNumberOfSecondaries(1) ; - aParticleChange.AddSecondary( aElectron ) ; + G4DynamicParticle* aElectron = new G4DynamicParticle ( + G4Electron::Electron(),PhotonDirection, ElecKineEnergy); + aParticleChange.SetNumberOfSecondaries(1); + aParticleChange.AddSecondary( aElectron ); } else { - ElecKineEnergy = 0. ; - aParticleChange.SetNumberOfSecondaries(0) ; + ElecKineEnergy = 0.; + aParticleChange.SetNumberOfSecondaries(0); } // @@ -288,17 +294,17 @@ G4VParticleChange* G4PhotoElectricEffect::PostStepDoIt(const G4Track& aTrack, return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4Element* -G4PhotoElectricEffect::SelectRandomAtom(const G4DynamicParticle* aDynamicPhoton, - G4Material* aMaterial) +G4Element* G4PhotoElectricEffect::SelectRandomAtom( + const G4DynamicParticle* aDynamicPhoton, + G4Material* aMaterial) { // select randomly 1 element within the material const G4int NumberOfElements = aMaterial->GetNumberOfElements(); const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - if (NumberOfElements == 1) return (*theElementVector)(0); + if (NumberOfElements == 1) return (*theElementVector)[0]; const G4double* NbOfAtomsPerVolume = aMaterial->GetVecNbOfAtomsPerVolume(); @@ -306,15 +312,88 @@ G4PhotoElectricEffect::SelectRandomAtom(const G4DynamicParticle* aDynamicPhoton, G4double rval = G4UniformRand(); for ( G4int elm=0 ; elm < NumberOfElements ; elm++ ) - { PartialSumSigma += NbOfAtomsPerVolume[elm] * - GetCrossSectionPerAtom(aDynamicPhoton, - (*theElementVector)(elm)); - if (rval <= PartialSumSigma*MeanFreePath) return ((*theElementVector)(elm)); - } - return ((*theElementVector)(NumberOfElements-1)); + {PartialSumSigma += NbOfAtomsPerVolume[elm] * + GetCrossSectionPerAtom(aDynamicPhoton, + (*theElementVector)[elm]); + if (rval<=PartialSumSigma*MeanFreePath) return ((*theElementVector)[elm]); + } + return ((*theElementVector)[NumberOfElements-1]); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4PhotoElectricEffect::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store cross section table + filename = GetPhysicsTableFileName(particle,directory,"CrossSection",ascii); + if ( !theCrossSectionTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theCrossSectionTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4PhotoElectricEffect::RetrievePhysicsTable( + G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theCrossSectionTable and theMeanFreePathTable + if (theCrossSectionTable != 0) { + theCrossSectionTable->clearAndDestroy(); + delete theCrossSectionTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + + G4String filename; + + // retreive cross section table + filename = GetPhysicsTableFileName(particle,directory,"CrossSection",ascii); + theCrossSectionTable = new G4PhysicsTable(G4Element::GetNumberOfElements()); + if ( !theCrossSectionTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theCrossSectionTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4PhotoElectricEffect::PrintInfoDefinition() { @@ -323,9 +402,10 @@ void G4PhotoElectricEffect::PrintInfoDefinition() comments += "\n Sandia crossSection below 50 KeV"; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestEnergyLimit,"Energy") + << "\n PhysicsTables from " + << G4BestUnit(LowestEnergyLimit, "Energy") << " to " << G4BestUnit(HighestEnergyLimit,"Energy") << " in " << NumbBinTable << " bins. \n"; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc b/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc index 7dc8c556b0..4d9f95e064 100644 --- a/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc +++ b/source/processes/electromagnetic/standard/src/G4PolarizedComptonScattering.cc @@ -21,151 +21,133 @@ // ******************************************************************** // // -// $Id: G4PolarizedComptonScattering.cc,v 1.4.4.1 2001/06/28 19:12:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PolarizedComptonScattering.cc,v 1.8 2001/09/21 09:50:54 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//---------- G4PolarizedComptonScattering physics process ------- +//---------- G4PolarizedComptonScattering physics process ---------------------- // by Vicente Lara, March 1998 // -// -------------------------------------------------------------- +// ----------------------------------------------------------------------------- // Corrections by Rui Curado da Silva (Nov. 2000) // - Sampling of Phi -// - Depolarization probability +// - Depolarization probability +// +// 13-07-01, DoIt: suppression of production cut for the electron (mma) +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) // -// -------------------------------------------------------------- +// ----------------------------------------------------------------------------- #include "G4PolarizedComptonScattering.hh" -#include "G4EnergyLossTables.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // constructor -G4PolarizedComptonScattering::G4PolarizedComptonScattering(const G4String& processName) - : G4ComptonScattering (processName) +G4PolarizedComptonScattering::G4PolarizedComptonScattering( + const G4String& processName) +: G4ComptonScattering (processName) { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4VParticleChange* G4PolarizedComptonScattering::PostStepDoIt(const G4Track& aTrack, - const G4Step& aStep) +G4VParticleChange* G4PolarizedComptonScattering::PostStepDoIt( + const G4Track& aTrack, + const G4Step& aStep) // // The scattered gamma energy is sampled according to Klein - Nishina formula. -// The random number techniques of Butcher & Messel are used (Nuc Phys 20(1960),15). +// The random number techniques of Butcher & Messel are used +// (Nuc Phys 20(1960),15). // GEANT4 internal units // // Note : Effects due to binding of atomic electrons are negliged. { aParticleChange.Initialize(aTrack); - G4Material* aMaterial = aTrack.GetMaterial(); const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); G4ThreeVector GammaPolarization0 = aDynamicGamma->GetPolarization(); if (abs(GammaPolarization0.mag() - 1.e0) > 1.e-14) - G4ComptonScattering::PostStepDoIt(aTrack,aStep); + G4ComptonScattering::PostStepDoIt(aTrack,aStep); G4double GammaEnergy0 = aDynamicGamma->GetKineticEnergy(); - G4double E0_m = GammaEnergy0 / electron_mass_c2 ; + G4double E0_m = GammaEnergy0 / electron_mass_c2; G4ParticleMomentum GammaDirection0 = aDynamicGamma->GetMomentumDirection(); - // // sample the energy rate of the scattered gamma // - - G4double epsilon, epsilonsq, onecost, sint2, greject ; + G4double epsilon, epsilonsq, onecost, sint2, greject; G4double epsilon0 = 1./(1. + 2*E0_m) , epsilon0sq = epsilon0*epsilon0; G4double alpha1 = - log(epsilon0) , alpha2 = 0.5*(1.- epsilon0sq); do { - if ( alpha1/(alpha1+alpha2) > G4UniformRand() ) - { epsilon = exp(-alpha1*G4UniformRand()); // pow(epsilon0,G4UniformRand()) - epsilonsq = epsilon*epsilon; } + if (alpha1/(alpha1+alpha2) > G4UniformRand()) + { epsilon = exp(-alpha1*G4UniformRand()); // epsilon0**r + epsilonsq = epsilon*epsilon; } else { epsilonsq = epsilon0sq + (1.- epsilon0sq)*G4UniformRand(); epsilon = sqrt(epsilonsq); - }; + }; onecost = (1.- epsilon)/(epsilon*E0_m); sint2 = onecost*(2.-onecost); greject = 1. - epsilon*sint2/(1.+ epsilonsq); } while (greject < G4UniformRand()); + // + // Phi determination + // + G4double minimum=0., maximum=twopi, middle=0., resolution=0.001; + G4double Rand = G4UniformRand(); -// **************************************************** -// Phi determination -// **************************************************** - - -G4double middle; -G4double maximum, minimum; -G4double resolution; - -G4double Rand = G4UniformRand(); - -minimum = 0.; -middle = 0.; -maximum = twopi; -resolution = 0.001; - - -int j = 0; -while ((j < 100) && (abs(SetPhi(epsilon,sint2,middle,Rand)) > resolution)) + int j = 0; + while ((j < 100) && (abs(SetPhi(epsilon,sint2,middle,Rand)) > resolution)) { - middle = (maximum + minimum)/2; - if (SetPhi(epsilon,sint2,middle,Rand)*SetPhi(epsilon,sint2,minimum,Rand)<0) { - maximum = middle; - } else { - minimum = middle; + middle = (maximum + minimum)/2; + if (SetPhi(epsilon,sint2,middle,Rand)* + SetPhi(epsilon,sint2,minimum,Rand)<0) maximum = middle; + else minimum = middle; + j++; } - j++; -} - // // scattered gamma angles. ( Z - axis along the parent gamma) // - G4double cosTeta = 1. - onecost , sinTeta = sqrt (sint2); G4double Phi = middle; - G4double dirx = sinTeta*cos(Phi) , diry = sinTeta*sin(Phi) , dirz = cosTeta ; - - - + G4double dirx = sinTeta*cos(Phi), diry = sinTeta*sin(Phi), dirz = cosTeta; // // update G4VParticleChange for the scattered gamma // - G4double GammaEnergy1 = epsilon*GammaEnergy0; // New polarization + // G4ThreeVector GammaPolarization1 = SetNewPolarization(epsilon,sint2,Phi, cosTeta, GammaPolarization0); - // Set new direction G4ThreeVector GammaDirection1 ( dirx,diry,dirz ); - - // Change reference frame. SystemOfRefChange(GammaDirection0,GammaDirection1, GammaPolarization0,GammaPolarization1); - - if (GammaEnergy1 > 0.) + G4double localEnergyDeposit = 0.; + + if (GammaEnergy1 > fminimalEnergy) { - aParticleChange.SetEnergyChange( GammaEnergy1 ) ; + aParticleChange.SetEnergyChange(GammaEnergy1); } else - { + { + localEnergyDeposit += GammaEnergy1; aParticleChange.SetEnergyChange(0.) ; aParticleChange.SetStatusChange(fStopAndKill); } @@ -173,63 +155,64 @@ while ((j < 100) && (abs(SetPhi(epsilon,sint2,middle,Rand)) > resolution)) // // kinematic of the scattered electron // - - G4double ElecKineEnergy = GammaEnergy0 - GammaEnergy1 ; + G4double ElecKineEnergy = GammaEnergy0 - GammaEnergy1; - if((G4EnergyLossTables::GetRange(G4Electron::Electron(), - ElecKineEnergy,aMaterial)>aStep.GetPostStepPoint()->GetSafety()) - || - (ElecKineEnergy > - (G4Electron::Electron()->GetCutsInEnergy())[aMaterial->GetIndex()])) - { - G4double ElecMomentum = sqrt(ElecKineEnergy*(ElecKineEnergy+2.*electron_mass_c2)); - G4ThreeVector ElecDirection ( - (GammaEnergy0*GammaDirection0 - GammaEnergy1*GammaDirection1)*(1./ElecMomentum) ); + if (ElecKineEnergy > fminimalEnergy) + { + G4double ElecMomentum = sqrt(ElecKineEnergy* + (ElecKineEnergy+2.*electron_mass_c2)); + G4ThreeVector ElecDirection ( + (GammaEnergy0*GammaDirection0 - GammaEnergy1*GammaDirection1) + *(1./ElecMomentum)); - // create G4DynamicParticle object for the electron. - G4DynamicParticle* aElectron= new G4DynamicParticle (G4Electron::Electron(), - ElecDirection, ElecKineEnergy) ; - aParticleChange.SetNumberOfSecondaries(1) ; - aParticleChange.AddSecondary( aElectron ) ; - aParticleChange.SetLocalEnergyDeposit (0.) ; - } + // create G4DynamicParticle object for the electron. + G4DynamicParticle* aElectron= new G4DynamicParticle ( + G4Electron::Electron(),ElecDirection,ElecKineEnergy); + aParticleChange.SetNumberOfSecondaries(1); + aParticleChange.AddSecondary( aElectron ); + } else - { - aParticleChange.SetNumberOfSecondaries(0) ; - aParticleChange.SetLocalEnergyDeposit (ElecKineEnergy) ; - } + { + aParticleChange.SetNumberOfSecondaries(0); + localEnergyDeposit += ElecKineEnergy; + } + + aParticleChange.SetLocalEnergyDeposit (localEnergyDeposit); // Reset NbOfInteractionLengthLeft and return aParticleChange return G4VDiscreteProcess::PostStepDoIt( aTrack, aStep); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4PolarizedComptonScattering::SetPhi(G4double EnergyRate, G4double sinsqrth, G4double phi, G4double rand) { -G4double cosphi = cos(phi), sinphi = sin(phi); - -G4double PhiDetermination = ((twopi*rand - phi)*(EnergyRate + 1./EnergyRate - sinsqrth)) + (sinsqrth*sinphi*cosphi); - -return PhiDetermination; + G4double cosphi = cos(phi), sinphi = sin(phi); + G4double PhiDetermination = ((twopi*rand - phi) + *(EnergyRate + 1./EnergyRate - sinsqrth)) + + (sinsqrth*sinphi*cosphi); + return PhiDetermination; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4ThreeVector G4PolarizedComptonScattering::SetNewPolarization(G4double EnergyRate, - G4double sinsqrth, - G4double phi, - G4double costheta, - G4ThreeVector& GammaPolarization0) +G4ThreeVector G4PolarizedComptonScattering::SetNewPolarization( + G4double EnergyRate, + G4double sinsqrth, + G4double phi, + G4double costheta, + G4ThreeVector& GammaPolarization0) { G4double cosphi = cos(phi), sinphi = sin(phi); -// G4double ParallelIntensityPolar = EnergyRate + 1./EnergyRate + 2. - 4.*sinsqrth*cosphi*cosphi; - G4double ParallelIntensityPolar = EnergyRate + 1./EnergyRate - 2.*sinsqrth*cosphi*cosphi; + //// G4double ParallelIntensityPolar = EnergyRate + 1./EnergyRate + //// + 2. - 4.*sinsqrth*cosphi*cosphi; + G4double ParallelIntensityPolar = EnergyRate + 1./EnergyRate + - 2.*sinsqrth*cosphi*cosphi; G4double PerpendiIntensityPolar = EnergyRate + 1./EnergyRate - 2.; - G4double PolarizationDegree = sqrt(sinsqrth*sinphi*sinphi + costheta*costheta); + G4double PolarizationDegree = sqrt(sinsqrth*sinphi*sinphi+costheta*costheta); G4double sintheta = sqrt(sinsqrth); G4ThreeVector GammaPolarization1; @@ -254,7 +237,7 @@ G4ThreeVector G4PolarizedComptonScattering::SetNewPolarization(G4double EnergyRa return GammaPolarization1; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4PolarizedComptonScattering::SystemOfRefChange(G4ThreeVector& Direction0, G4ThreeVector& Direction1, @@ -269,31 +252,32 @@ void G4PolarizedComptonScattering::SystemOfRefChange(G4ThreeVector& Direction0, G4double cosPsi, sinPsi; - if (sinTeta0 != 0. ) { + if (sinTeta0 != 0. ) + { cosPsi = -Polarization0.z()/sinTeta0; - if (cosPhi0 != 0. ) { - sinPsi = (Polarization0.y() - cosTeta0*sinPhi0*cosPsi)/cosPhi0; - } else { - sinPsi = -Polarization0.x()/sinPhi0; - } - } else { + if (cosPhi0 != 0.) + sinPsi = (Polarization0.y() - cosTeta0*sinPhi0*cosPsi)/cosPhi0; + else sinPsi = -Polarization0.x()/sinPhi0; + + } + else + { cosPsi = Polarization0.x()/cosTeta0; sinPsi = Polarization0.y(); - } + } G4double Psi = atan(sinPsi/cosPsi); - // Rotation along Z axe Direction1.rotateZ(Psi); // Direction1.rotateUz(Direction0); - aParticleChange.SetMomentumChange( Direction1 ) ; + aParticleChange.SetMomentumChange(Direction1); // 3 Euler angles rotation for scattered photon polarization Polarization1.rotateZ(Psi); Polarization1.rotateUz(Direction0); - aParticleChange.SetPolarizationChange( Polarization1 ); + aParticleChange.SetPolarizationChange(Polarization1); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4SynchrotronRadiation.cc b/source/processes/electromagnetic/standard/src/G4SynchrotronRadiation.cc index 388873f8c7..5229f86023 100644 --- a/source/processes/electromagnetic/standard/src/G4SynchrotronRadiation.cc +++ b/source/processes/electromagnetic/standard/src/G4SynchrotronRadiation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SynchrotronRadiation.cc,v 1.4.2.2 2001/06/28 20:19:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SynchrotronRadiation.cc,v 1.6 2001/10/24 16:27:45 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file @@ -83,7 +83,6 @@ G4SynchrotronRadiation::PostStepDoIt(const G4Track& trackData, { G4int i ; aParticleChange.Initialize(trackData); - G4Material* aMaterial=trackData.GetMaterial() ; const G4DynamicParticle* aDynamicParticle=trackData.GetDynamicParticle(); @@ -141,19 +140,6 @@ G4SynchrotronRadiation::PostStepDoIt(const G4Track& trackData, G4ParticleMomentum particleDirection = aDynamicParticle->GetMomentumDirection(); - // Gamma production cut in this material - G4double - gammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - - if (energyOfSR <= gammaEnergyCut) // only energy loss, no SR photon - { - aParticleChange.SetMomentumChange( particleDirection ); - aParticleChange.SetEnergyChange( kineticEnergy - energyOfSR ); - aParticleChange.SetLocalEnergyDeposit (0.); - aParticleChange.SetNumberOfSecondaries(0); - return G4VDiscreteProcess::PostStepDoIt(trackData,stepData); - } - // SR photon has energy more than the current material cut // M-C of its direction G4double Teta = G4UniformRand()/gamma ; // Very roughly diff --git a/source/processes/electromagnetic/standard/src/G4VPAIenergyLoss.cc b/source/processes/electromagnetic/standard/src/G4VPAIenergyLoss.cc index ecf03b28be..3772a7cf1b 100644 --- a/source/processes/electromagnetic/standard/src/G4VPAIenergyLoss.cc +++ b/source/processes/electromagnetic/standard/src/G4VPAIenergyLoss.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPAIenergyLoss.cc,v 1.1.4.2 2001/06/28 20:19:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPAIenergyLoss.cc,v 1.5 2001/10/29 16:23:41 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ----------------------------------------------------------- // GEANT 4 class implementation file @@ -39,7 +39,8 @@ // corrected by V. Grichine on 24/11/97 // corrected by L. Urban on 27/05/98 ( other corrections come soon!) // 10/02/00 modifications , new e.m. structure, L.Urban -// 02/03/00 initialisation of theDEDXTable +// 02/03/00 initialisation of theDEDXTable +// 17-09-01, migration of Materials to pure STL (mma) // @@ -84,7 +85,7 @@ G4PhysicsTable* G4VPAIenergyLoss::thepbarRangeCoeffCTable = NULL ; G4PhysicsTable* G4VPAIenergyLoss::theDEDXTable = NULL ; -G4double G4VPAIenergyLoss::CutInRange = 0; +G4double* G4VPAIenergyLoss::CutInRange = 0; G4double G4VPAIenergyLoss::LowerBoundEloss= 1.00*keV ; G4double G4VPAIenergyLoss::UpperBoundEloss= 100.*TeV ; @@ -119,7 +120,26 @@ G4VPAIenergyLoss::~G4VPAIenergyLoss() } } - + +///////////////////////////////////////////////////////////////////////// +// + +G4double G4VPAIenergyLoss::GetMaxKineticEnergy() {return UpperBoundEloss;} +G4double G4VPAIenergyLoss::GetMinKineticEnergy() {return LowerBoundEloss;} +G4int G4VPAIenergyLoss::GetBinNumber() {return NbinEloss;} + +void G4VPAIenergyLoss::SetNbOfProcesses(G4int nb) {NbOfProcesses=nb;} +void G4VPAIenergyLoss::PlusNbOfProcesses() {NbOfProcesses++ ;} +void G4VPAIenergyLoss::MinusNbOfProcesses() {NbOfProcesses-- ;} +G4int G4VPAIenergyLoss::GetNbOfProcesses() {return NbOfProcesses;} + +void G4VPAIenergyLoss::SetLowerBoundEloss(G4double val) {LowerBoundEloss=val;} +void G4VPAIenergyLoss::SetUpperBoundEloss(G4double val) {UpperBoundEloss=val;} +void G4VPAIenergyLoss::SetNbinEloss(G4int nb) {NbinEloss=nb;} + +G4double G4VPAIenergyLoss::GetLowerBoundEloss() {return LowerBoundEloss;} +G4double G4VPAIenergyLoss::GetUpperBoundEloss() {return UpperBoundEloss;} +G4int G4VPAIenergyLoss::GetNbinEloss() {return NbinEloss;} ///////////////////////////////////////////////////////////////////////// // @@ -130,7 +150,7 @@ void G4VPAIenergyLoss::BuildDEDXTable(const G4ParticleDefinition& aParticleType) G4bool MakeTable = false ; - G4double newCutInRange = aParticleType.GetLengthCuts(); + G4double* newCutInRange = aParticleType.GetLengthCuts(); // Create tables only if there is a new cut value ! @@ -146,10 +166,10 @@ void G4VPAIenergyLoss::BuildDEDXTable(const G4ParticleDefinition& aParticleType) theDEDXTable= theDEDXpbarTable; } - if ((CutInRange != newCutInRange) || (theDEDXTable==NULL)) + if (!EqualCutVectors(CutInRange,newCutInRange) || (theDEDXTable==NULL)) { MakeTable = true ; - CutInRange = newCutInRange ; + CutInRange = CopyCutVectors(CutInRange,newCutInRange) ; } if( MakeTable ) @@ -160,12 +180,9 @@ void G4VPAIenergyLoss::BuildDEDXTable(const G4ParticleDefinition& aParticleType) // // different processes. - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - // create table for the total energy loss - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); G4PhysicsTable** RecorderOfProcess; int CounterOfProcess; diff --git a/source/processes/electromagnetic/standard/src/G4VeEnergyLoss.cc b/source/processes/electromagnetic/standard/src/G4VeEnergyLoss.cc index f1fcb419b1..f9d1f0d676 100644 --- a/source/processes/electromagnetic/standard/src/G4VeEnergyLoss.cc +++ b/source/processes/electromagnetic/standard/src/G4VeEnergyLoss.cc @@ -21,11 +21,11 @@ // ******************************************************************** // // -// $Id: G4VeEnergyLoss.cc,v 1.12.2.1 2001/06/28 19:12:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VeEnergyLoss.cc,v 1.22 2001/11/12 11:20:51 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -------------------------------------------------------------- +// ----------------------------------------------------------------------------- // 18/11/98 , L. Urban // It is a modified version of G4VeEnergyLoss: // continuous energy loss with generation of subcutoff delta rays @@ -35,7 +35,12 @@ // 23/01/01 bug fixed in AlongStepDoIt , L.Urban // 27/03/01 : commented out the printing of subcutoff energies // 28/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- +// 11/09/01 minor correction in 'subcutoff' delta generation, L.Urban +// 12/09/01 min.delta cut is set as rcut/100 + some optimisation, L.Urban +// 17-09-01, migration of Materials to pure STL (mma) +// 29-10-01 all static functions no more inlined (mma) +// 08-11-01 Charge,lastCharge not data members, L.Urban +// ----------------------------------------------------------------------------- #include "G4VeEnergyLoss.hh" @@ -43,7 +48,8 @@ #include "G4Navigator.hh" #include "G4TransportationManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // Initialisation of static data members // ------------------------------------- @@ -79,7 +85,7 @@ G4double G4VeEnergyLoss::UpperBoundEloss = 100.*TeV ; G4int G4VeEnergyLoss::NbinEloss = 150 ; G4double G4VeEnergyLoss::RTable,G4VeEnergyLoss::LOGRTable; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // constructor and destructor @@ -87,16 +93,13 @@ G4VeEnergyLoss::G4VeEnergyLoss(const G4String& processName) : G4VEnergyLoss (processName), theLossTable(0), MinKineticEnergy(1.*eV), - Charge(-1.), - lastCharge(0.), theDEDXTable(0), linLossLimit(0.05), - c1N(2.86e-23*MeV*mm*mm), - c2N(c1N*MeV/10.), + cN(0.077*MeV*cm2/g), Ndeltamax(100) {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VeEnergyLoss::~G4VeEnergyLoss() { @@ -107,8 +110,57 @@ G4VeEnergyLoss::~G4VeEnergyLoss() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VeEnergyLoss::SetNbOfProcesses(G4int nb) + {NbOfProcesses=nb;} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void G4VeEnergyLoss::PlusNbOfProcesses() + {NbOfProcesses++ ;} + + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void G4VeEnergyLoss::MinusNbOfProcesses() + {NbOfProcesses-- ;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4VeEnergyLoss::GetNbOfProcesses() + {return NbOfProcesses;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VeEnergyLoss::SetLowerBoundEloss(G4double val) + {LowerBoundEloss=val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VeEnergyLoss::SetUpperBoundEloss(G4double val) + {UpperBoundEloss=val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VeEnergyLoss::SetNbinEloss(G4int nb) + {NbinEloss=nb;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4VeEnergyLoss::GetLowerBoundEloss() + {return LowerBoundEloss;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4VeEnergyLoss::GetUpperBoundEloss() + {return UpperBoundEloss;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4VeEnergyLoss::GetNbinEloss() + {return NbinEloss;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4VeEnergyLoss::BuildDEDXTable( const G4ParticleDefinition& aParticleType) { @@ -121,8 +173,10 @@ void G4VeEnergyLoss::BuildDEDXTable( //set physically consistent value for finalRange // and parameters for en.loss step limit - if(finalRange > G4Electron::Electron()->GetCuts()) - finalRange = G4Electron::Electron()->GetCuts() ; + for (size_t idxMate=0; idxMate (G4Electron::Electron()->GetLengthCuts())[idxMate]) + finalRange = (G4Electron::Electron()->GetLengthCuts())[idxMate]; + } c1lim = dRoverRange ; c2lim = 2.*(1.-dRoverRange)*finalRange ; c3lim = -(1.-dRoverRange)*finalRange*finalRange; @@ -131,8 +185,8 @@ void G4VeEnergyLoss::BuildDEDXTable( // different processes. // - const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); // create table for the total energy loss @@ -239,7 +293,8 @@ void G4VeEnergyLoss::BuildDEDXTable( LowerBoundEloss,UpperBoundEloss,NbinEloss); // invert the range table - theInverseRangeElectronTable = BuildInverseRangeTable(theRangeElectronTable, + theInverseRangeElectronTable = BuildInverseRangeTable( + theRangeElectronTable, theeRangeCoeffATable, theeRangeCoeffBTable, theeRangeCoeffCTable, @@ -276,7 +331,8 @@ void G4VeEnergyLoss::BuildDEDXTable( LowerBoundEloss,UpperBoundEloss,NbinEloss); // invert the range table - theInverseRangePositronTable = BuildInverseRangeTable(theRangePositronTable, + theInverseRangePositronTable = BuildInverseRangeTable( + theRangePositronTable, thepRangeCoeffATable, thepRangeCoeffBTable, thepRangeCoeffCTable, @@ -302,38 +358,40 @@ void G4VeEnergyLoss::BuildDEDXTable( // create array for the min. delta cuts in kinetic energy G4double absLowerLimit = 1.*keV ; - // set default MinDeltaCutInRange to rcut/10. - if(!setMinDeltaCutInRange ) - MinDeltaCutInRange = G4Electron::Electron()->GetCuts()/10. ; // if((subSecFlag) && (&aParticleType==G4Electron::Electron())) // { // G4cout << G4endl; // G4cout.precision(5) ; -// G4cout << " eIoni Minimum Delta cut in range=" << MinDeltaCutInRange/mm +// G4cout << " eIoni Minimum Delta cut in range=" +// << MinDeltaCutInRange/mm // << " mm." << G4endl; // G4cout << G4endl; // G4cout << " material min.delta energy(keV) " << G4endl; // G4cout << G4endl; // } - if(MinDeltaEnergy) delete MinDeltaEnergy ; - MinDeltaEnergy = new G4double [numOfMaterials] ; - if(LowerLimitForced) delete LowerLimitForced ; - LowerLimitForced = new G4bool [numOfMaterials] ; + if(MinDeltaEnergy) {delete [] MinDeltaEnergy; MinDeltaEnergy=0;} + MinDeltaEnergy = new G4double [numOfMaterials]; + if(LowerLimitForced) {delete [] LowerLimitForced; LowerLimitForced=0;} + LowerLimitForced = new G4bool [numOfMaterials]; for(G4int mat=0; matGetEnergyCuts())[mat]/10.; LowerLimitForced[mat] = false ; MinDeltaEnergy[mat] = G4EnergyLossTables::GetPreciseEnergyFromRange( G4Electron::Electron(),MinDeltaCutInRange, - (*theMaterialTable)(mat)) ; + (*theMaterialTable)[mat]) ; if(MinDeltaEnergy[mat]G4Electron::Electron()->GetCutsInEnergy()[mat]) - MinDeltaEnergy[mat]=G4Electron::Electron()->GetCutsInEnergy()[mat] ; + if(MinDeltaEnergy[mat]>(G4Electron::Electron()->GetEnergyCuts())[mat]) + MinDeltaEnergy[mat]=(G4Electron::Electron()->GetEnergyCuts())[mat] ; // if((subSecFlag) && (&aParticleType==G4Electron::Electron())) // { @@ -349,7 +407,7 @@ void G4VeEnergyLoss::BuildDEDXTable( } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, const G4Step& stepData) @@ -361,6 +419,7 @@ G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, // get particle and material pointers from trackData const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); + G4double Charge = aParticle->GetDefinition()->GetPDGCharge()/eplus; G4double E = aParticle->GetKineticEnergy() ; G4Material* aMaterial = trackData.GetMaterial(); @@ -402,7 +461,8 @@ G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // start of subcutoff generation - if(subSecFlag) + // do not generate subdeltas for the initial step !! (time..) + if((subSecFlag) && (trackData.GetCurrentStepNumber() > 1)) { G4double MinDeltaEnergyNow = MinDeltaEnergy[index] ; G4double TmintoProduceDelta=0.5*(3.-Charge)*MinDeltaEnergyNow ; @@ -417,15 +477,15 @@ G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, if(Charge < 0.) { - rcut=G4Electron::Electron()->GetCuts(); - Tc=G4Electron::Electron()->GetCutsInEnergy()[index]; + rcut=(G4Electron::Electron()->GetLengthCuts())[index]; + Tc=(G4Electron::Electron()->GetEnergyCuts())[index]; // threshold ! if(Tc > 0.5*E) Tc=0.5*E ; } else { - rcut=G4Positron::Positron()->GetCuts(); - Tc=G4Positron::Positron()->GetCutsInEnergy()[index]; + rcut=(G4Positron::Positron()->GetLengthCuts())[index]; + Tc=(G4Positron::Positron()->GetEnergyCuts())[index]; // threshold ! if(Tc > E) Tc=E ; } @@ -448,11 +508,12 @@ G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, { T0=G4EnergyLossTables::GetPreciseEnergyFromRange( G4Electron::Electron(),safety,aMaterial) ; - + // absolute lower limit for T0 // if(T0GetIndex()])) T0=MinDeltaEnergyNow ; + // .................................................................. x1=stepData.GetPreStepPoint()->GetPosition().x(); @@ -489,8 +550,15 @@ G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, if(fragment>0.) { // compute nb of delta rays to be generated - G4int N=int(fragment*(c1N*(1.-T0/Tc)+c2N/E)* - (aMaterial->GetTotNbOfElectPerVolume())/T0+0.5) ; + // from the de/dx formula (approximately) + // and assuming an 1/T**2 delta energy spectrum + + G4double delToverTc=1.-T0/Tc ; + G4double deldedx=cN*aMaterial->GetDensity()* + ((E+electron_mass_c2)*(E+electron_mass_c2)* + log(Tc/T0)/(E*(E+electron_mass_c2))) ; + G4int N=G4int(deldedx*fragment*delToverTc/(T0*log(Tc/T0))+0.5) ; + if(N > Ndeltamax) N = Ndeltamax ; G4double Px,Py,Pz ; @@ -506,7 +574,7 @@ G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, if(N > 0) { G4double Tkin,Etot,P,T,p,costheta,sintheta,phi,dirx,diry,dirz, - Pnew,delToverTc,sumT,urandom ; + Pnew,sumT,urandom ; //delTkin,delLoss,rate, //G4StepPoint *point ; @@ -578,8 +646,8 @@ G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, G4Track* deltaTrack = new G4Track(theDelta,DeltaTime,DeltaPosition); - deltaTrack-> - SetTouchable(stepData.GetPostStepPoint()->GetTouchable()) ; + deltaTrack->SetTouchableHandle(stepData.GetPostStepPoint() + ->GetTouchableHandle()); deltaTrack->SetParentID(trackData.GetTrackID()) ; aParticleChange.AddSecondary(deltaTrack) ; @@ -628,7 +696,7 @@ G4VParticleChange* G4VeEnergyLoss::AlongStepDoIt( const G4Track& trackData, return &aParticleChange; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4VhEnergyLoss.cc b/source/processes/electromagnetic/standard/src/G4VhEnergyLoss.cc index a724af1a61..8e20017926 100644 --- a/source/processes/electromagnetic/standard/src/G4VhEnergyLoss.cc +++ b/source/processes/electromagnetic/standard/src/G4VhEnergyLoss.cc @@ -21,30 +21,36 @@ // ******************************************************************** // // -// $Id: G4VhEnergyLoss.cc,v 1.17.2.1 2001/06/28 19:12:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VhEnergyLoss.cc,v 1.29 2001/11/12 11:20:51 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ----------------------------------------------------------- -// 7/10/98: bug fixes + some cleanup , L.Urban -// 22/10/98 : cleanup , L.Urban -// 07/12/98 : works for ions as well+ bug corrected, L.Urban -// 02/02/99 : several bugs fixed, L.Urban -// 01/03/99 : creation of sub-cutoff delta rays, L.Urban -// 28/04/99 : bug fixed in DoIt , L.Urban -// 10/02/00 modifications , new e.m. structure, L.Urban -// 18/07/00 : bug fix in AlongStepDoIt V.Ivanchenko -// 10/08/00 : V.Ivanchenko change AlongStepDoIt and -// add EnergyLossFluctuation in order to simulate -// energy losses of ions -// 17/08/00 : V.Ivanchenko change EnergyLossFluctuation -// 18/08/00 : V.Ivanchenko bug fixed in GetConstrained -// 23/01/01 : bug fixed in AlongStepDoIt , L.Urban -// 27/03/01 : commented out the printing of subcutoff energies -// 28/05/01 : V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// 07/10/98 bug fixes + some cleanup , L.Urban +// 22/10/98 cleanup , L.Urban +// 07/12/98 works for ions as well+ bug corrected, L.Urban +// 02/02/99 several bugs fixed, L.Urban +// 01/03/99 creation of sub-cutoff delta rays, L.Urban +// 28/04/99 bug fixed in DoIt , L.Urban +// 10/02/00 modifications , new e.m. structure, L.Urban +// 18/07/00 bug fix in AlongStepDoIt V.Ivanchenko +// 10/08/00 V.Ivanchenko change AlongStepDoIt and +// add EnergyLossFluctuation in order to simulate +// energy losses of ions +// 17/08/00 V.Ivanchenko change EnergyLossFluctuation +// 18/08/00 V.Ivanchenko bug fixed in GetConstrained +// 23/01/01 bug fixed in AlongStepDoIt , L.Urban +// 27/03/01 commented out the printing of subcutoff energies +// 28/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 10/09/01 bugfix in subcutoff delta generation, L.Urban +// 12/09/01 min.delta cut is set as rcut/100 + some optimisation, L.Urban +// 17-09-01 migration of Materials to pure STL (mma) +// 29-10-01 all static functions no more inlined (mma) +// 08-11-01 BuildDEDXTable not static,Charge local variable, L.Urban +// 09-11-01 cosmetics; 80 columns everywhere (mma) +// ----------------------------------------------------------------------------- // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4VhEnergyLoss.hh" #include "G4EnergyLossTables.hh" @@ -52,62 +58,54 @@ #include "G4Navigator.hh" #include "G4TransportationManager.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4int G4VhEnergyLoss::NbOfProcesses = 1 ; +G4int G4VhEnergyLoss::NbOfProcesses = 1; -G4int G4VhEnergyLoss::CounterOfProcess = 0 ; +G4int G4VhEnergyLoss::CounterOfProcess = 0; G4PhysicsTable** G4VhEnergyLoss::RecorderOfProcess = - new G4PhysicsTable*[10] ; + new G4PhysicsTable*[10]; -G4int G4VhEnergyLoss::CounterOfpProcess = 0 ; +G4int G4VhEnergyLoss::CounterOfpProcess = 0; G4PhysicsTable** G4VhEnergyLoss::RecorderOfpProcess = - new G4PhysicsTable*[10] ; + new G4PhysicsTable*[10]; -G4int G4VhEnergyLoss::CounterOfpbarProcess = 0 ; +G4int G4VhEnergyLoss::CounterOfpbarProcess = 0; G4PhysicsTable** G4VhEnergyLoss::RecorderOfpbarProcess = - new G4PhysicsTable*[10] ; + new G4PhysicsTable*[10]; -G4PhysicsTable* G4VhEnergyLoss::theDEDXpTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theDEDXpbarTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theRangepTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theRangepbarTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theInverseRangepTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theInverseRangepbarTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theLabTimepTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theLabTimepbarTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theProperTimepTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::theProperTimepbarTable = NULL ; +G4PhysicsTable* G4VhEnergyLoss::theDEDXpTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theDEDXpbarTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theRangepTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theRangepbarTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theInverseRangepTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theInverseRangepbarTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theLabTimepTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theLabTimepbarTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theProperTimepTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::theProperTimepbarTable = NULL; -G4PhysicsTable* G4VhEnergyLoss::thepRangeCoeffATable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::thepRangeCoeffBTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::thepRangeCoeffCTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::thepbarRangeCoeffATable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::thepbarRangeCoeffBTable = NULL ; -G4PhysicsTable* G4VhEnergyLoss::thepbarRangeCoeffCTable = NULL ; +G4PhysicsTable* G4VhEnergyLoss::thepRangeCoeffATable = NULL; +G4PhysicsTable* G4VhEnergyLoss::thepRangeCoeffBTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::thepRangeCoeffCTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::thepbarRangeCoeffATable = NULL; +G4PhysicsTable* G4VhEnergyLoss::thepbarRangeCoeffBTable = NULL; +G4PhysicsTable* G4VhEnergyLoss::thepbarRangeCoeffCTable = NULL; -G4PhysicsTable* G4VhEnergyLoss::theDEDXTable = NULL ; +G4PhysicsTable* G4VhEnergyLoss::theDEDXTable = NULL; -const G4Proton* G4VhEnergyLoss::theProton=G4Proton::Proton() ; -const G4AntiProton* G4VhEnergyLoss::theAntiProton=G4AntiProton::AntiProton() ; +G4double* G4VhEnergyLoss::ptableElectronCutInRange = 0; +G4double* G4VhEnergyLoss::pbartableElectronCutInRange = 0; -G4double G4VhEnergyLoss::ptableElectronCutInRange = 0.0*mm ; -G4double G4VhEnergyLoss::pbartableElectronCutInRange = 0.0*mm ; - -G4double G4VhEnergyLoss::Charge ; - -G4double G4VhEnergyLoss::LowerBoundEloss = 1.*keV ; +G4double G4VhEnergyLoss::LowerBoundEloss = 1.*keV; G4double G4VhEnergyLoss::UpperBoundEloss = 100.*TeV; -G4int G4VhEnergyLoss::NbinEloss = 100 ; +G4int G4VhEnergyLoss::NbinEloss = 100; G4double G4VhEnergyLoss::RTable,G4VhEnergyLoss::LOGRTable; -G4double G4VhEnergyLoss::c0N = 9.0e-21*MeV*MeV*mm*mm ; -G4double G4VhEnergyLoss::c1N = 25.0e-21*keV*mm*mm ; -G4double G4VhEnergyLoss::c2N = 13.25e-21*keV*mm*mm ; -G4double G4VhEnergyLoss::c3N = 0.500e-21*mm*mm ; -G4int G4VhEnergyLoss::Ndeltamax = 100 ; +G4double G4VhEnergyLoss::cN = 0.077*MeV*cm2/g; +G4int G4VhEnergyLoss::Ndeltamax = 100; -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VhEnergyLoss::G4VhEnergyLoss(const G4String& processName) : G4VEnergyLoss (processName), @@ -116,17 +114,67 @@ G4VhEnergyLoss::G4VhEnergyLoss(const G4String& processName) linLossLimit(0.05) {} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VhEnergyLoss::~G4VhEnergyLoss() { if(theLossTable) { theLossTable->clearAndDestroy(); - delete theLossTable; theLossTable = NULL; + delete theLossTable; theLossTable = 0; } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VhEnergyLoss::SetNbOfProcesses(G4int nb) + {NbOfProcesses=nb;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VhEnergyLoss::PlusNbOfProcesses() + {NbOfProcesses++ ;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VhEnergyLoss::MinusNbOfProcesses() + {NbOfProcesses-- ;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4VhEnergyLoss::GetNbOfProcesses() + {return NbOfProcesses;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VhEnergyLoss::SetLowerBoundEloss(G4double val) + {LowerBoundEloss=val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VhEnergyLoss::SetUpperBoundEloss(G4double val) + {UpperBoundEloss=val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4VhEnergyLoss::SetNbinEloss(G4int nb) + {NbinEloss=nb;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4VhEnergyLoss::GetLowerBoundEloss() + {return LowerBoundEloss;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4VhEnergyLoss::GetUpperBoundEloss() + {return UpperBoundEloss;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4VhEnergyLoss::GetNbinEloss() + {return NbinEloss;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4VhEnergyLoss::BuildDEDXTable( const G4ParticleDefinition& aParticleType) @@ -137,20 +185,23 @@ void G4VhEnergyLoss::BuildDEDXTable( RTable =exp(LOGRTable); //set physically consistent value for finalRange - // and parameters for en.loss step limit - if(finalRange > G4Electron::Electron()->GetCuts()) - finalRange = G4Electron::Electron()->GetCuts() ; + //and parameters for en.loss step limit + for (size_t idxMate=0; idxMate (G4Electron::Electron()->GetLengthCuts())[idxMate]) + finalRange = (G4Electron::Electron()->GetLengthCuts())[idxMate]; + } c1lim = dRoverRange ; c2lim = 2.*(1.-dRoverRange)*finalRange ; c3lim = -(1.-dRoverRange)*finalRange*finalRange; // create table if there is no table or there is a new cut value - G4bool MakeTable = false ; + G4bool MakeTable = false; - G4double ElectronCutInRange = G4Electron::Electron()->GetCuts(); + G4double* ElectronCutInRange = G4Electron::Electron()->GetLengthCuts(); // create/fill proton or antiproton tables depending on the charge - Charge = aParticleType.GetPDGCharge()/eplus; + G4double Charge = aParticleType.GetPDGCharge()/eplus; ParticleMass = aParticleType.GetPDGMass() ; if (Charge>0.) {theDEDXTable= theDEDXpTable;} @@ -158,59 +209,56 @@ void G4VhEnergyLoss::BuildDEDXTable( if( ((Charge>0.) && ((theDEDXTable==NULL) || - (ElectronCutInRange != ptableElectronCutInRange))) + !EqualCutVectors(ElectronCutInRange, ptableElectronCutInRange))) || ((Charge<0.) && ((theDEDXTable==NULL) || - (ElectronCutInRange != pbartableElectronCutInRange))) + !EqualCutVectors(ElectronCutInRange, pbartableElectronCutInRange))) ) MakeTable = true ; const G4MaterialTable* theMaterialTable= G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - if( MakeTable ) + if(MakeTable) { - - // Build energy loss table as a sum of the energy loss due to the - // different processes. - if( Charge >0.) + // Build energy loss table as a sum of the energy loss due to the + // different processes. + if (Charge >0.) { RecorderOfProcess=RecorderOfpProcess; CounterOfProcess=CounterOfpProcess; if(CounterOfProcess == NbOfProcesses) { - if(theDEDXpTable) - { theDEDXpTable->clearAndDestroy(); - delete theDEDXpTable; } + if(theDEDXpTable) {theDEDXpTable->clearAndDestroy(); + delete theDEDXpTable;} theDEDXpTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXpTable; - ptableElectronCutInRange = ElectronCutInRange ; + theDEDXTable = theDEDXpTable; + ptableElectronCutInRange = ElectronCutInRange; } } - else + else { RecorderOfProcess=RecorderOfpbarProcess; CounterOfProcess=CounterOfpbarProcess; if(CounterOfProcess == NbOfProcesses) { - if(theDEDXpbarTable) - { theDEDXpbarTable->clearAndDestroy(); - delete theDEDXpbarTable; } + if(theDEDXpbarTable) {theDEDXpbarTable->clearAndDestroy(); + delete theDEDXpbarTable;} theDEDXpbarTable = new G4PhysicsTable(numOfMaterials); - theDEDXTable = theDEDXpbarTable; - pbartableElectronCutInRange = ElectronCutInRange ; + theDEDXTable = theDEDXpbarTable; + pbartableElectronCutInRange = ElectronCutInRange; } } - if(CounterOfProcess == NbOfProcesses) + if(CounterOfProcess == NbOfProcesses) { - // loop for materials - G4double LowEdgeEnergy , Value ; - G4bool isOutRange ; - G4PhysicsTable* pointer ; + // loop for materials + // + G4bool isOutRange; + G4PhysicsTable* pointer; for (G4int J=0; JGetLowEdgeEnergy(i) ; - Value = 0. ; + G4double LowEdgeEnergy = aVector->GetLowEdgeEnergy(i); + G4double Value = 0. ; // loop for the contributing processes for (G4int process=0; process < NbOfProcesses; process++) { pointer= RecorderOfProcess[process]; - Value += (*pointer)[J]-> - GetValue(LowEdgeEnergy,isOutRange) ; + Value += (*pointer)[J]->GetValue(LowEdgeEnergy,isOutRange); } - aVector->PutValue(i,Value) ; + aVector->PutValue(i,Value); } - theDEDXTable->insert(aVector) ; + theDEDXTable->insert(aVector); } - // reset counter to zero .................. - if( Charge >0.) - CounterOfpProcess=0 ; - else - CounterOfpbarProcess=0 ; - ParticleMass = aParticleType.GetPDGMass() ; + // reset counter to zero + if(Charge >0.) CounterOfpProcess=0; + else CounterOfpbarProcess=0; + ParticleMass = aParticleType.GetPDGMass(); if(Charge > 0.) { // Build range table - theRangepTable = BuildRangeTable(theDEDXpTable, - theRangepTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + // + theRangepTable = BuildRangeTable(theDEDXpTable, theRangepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); // Build lab/proper time tables - theLabTimepTable = BuildLabTimeTable(theDEDXpTable, - theLabTimepTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + // + theLabTimepTable = BuildLabTimeTable(theDEDXpTable, theLabTimepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); theProperTimepTable = BuildProperTimeTable(theDEDXpTable, - theProperTimepTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); // Build coeff tables for the energy loss calculation + // thepRangeCoeffATable = BuildRangeCoeffATable(theRangepTable, - thepRangeCoeffATable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + thepRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); thepRangeCoeffBTable = BuildRangeCoeffBTable(theRangepTable, - thepRangeCoeffBTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + thepRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); thepRangeCoeffCTable = BuildRangeCoeffCTable(theRangepTable, - thepRangeCoeffCTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + thepRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); // invert the range table + // theInverseRangepTable = BuildInverseRangeTable(theRangepTable, - thepRangeCoeffATable, - thepRangeCoeffBTable, - thepRangeCoeffCTable, - theInverseRangepTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + thepRangeCoeffATable, + thepRangeCoeffBTable, + thepRangeCoeffCTable, + theInverseRangepTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); } - else + else { // Build range table - theRangepbarTable = BuildRangeTable(theDEDXpbarTable, - theRangepbarTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + // + theRangepbarTable = BuildRangeTable(theDEDXpbarTable, theRangepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); + // Build lab/proper time tables + // theLabTimepbarTable = BuildLabTimeTable(theDEDXpbarTable, - theLabTimepbarTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + theLabTimepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); theProperTimepbarTable = BuildProperTimeTable(theDEDXpbarTable, - theProperTimepbarTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + theProperTimepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); // Build coeff tables for the energy loss calculation + // thepbarRangeCoeffATable = BuildRangeCoeffATable(theRangepbarTable, - thepbarRangeCoeffATable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + thepbarRangeCoeffATable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); thepbarRangeCoeffBTable = BuildRangeCoeffBTable(theRangepbarTable, - thepbarRangeCoeffBTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + thepbarRangeCoeffBTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); thepbarRangeCoeffCTable = BuildRangeCoeffCTable(theRangepbarTable, - thepbarRangeCoeffCTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); + thepbarRangeCoeffCTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); // invert the range table + // theInverseRangepbarTable = BuildInverseRangeTable(theRangepbarTable, - thepbarRangeCoeffATable, - thepbarRangeCoeffBTable, - thepbarRangeCoeffCTable, - theInverseRangepbarTable, - LowerBoundEloss,UpperBoundEloss,NbinEloss); - + thepbarRangeCoeffATable, + thepbarRangeCoeffBTable, + thepbarRangeCoeffCTable, + theInverseRangepbarTable, + LowerBoundEloss,UpperBoundEloss,NbinEloss); } - } - } // make the energy loss and the range table available G4EnergyLossTables::Register(&aParticleType, - (Charge>0)? - theDEDXpTable: theDEDXpbarTable, - (Charge>0)? - theRangepTable: theRangepbarTable, - (Charge>0)? - theInverseRangepTable: theInverseRangepbarTable, - (Charge>0)? - theLabTimepTable: theLabTimepbarTable, - (Charge>0)? - theProperTimepTable: theProperTimepbarTable, - LowerBoundEloss, UpperBoundEloss, - proton_mass_c2/aParticleType.GetPDGMass(),NbinEloss); + (Charge>0)? theDEDXpTable: theDEDXpbarTable, + (Charge>0)? theRangepTable: theRangepbarTable, + (Charge>0)? theInverseRangepTable: theInverseRangepbarTable, + (Charge>0)? theLabTimepTable: theLabTimepbarTable, + (Charge>0)? theProperTimepTable: theProperTimepbarTable, + LowerBoundEloss, UpperBoundEloss, + proton_mass_c2/aParticleType.GetPDGMass(),NbinEloss); - // create array for the min. delta cuts in kinetic energy - if(!setMinDeltaCutInRange) - MinDeltaCutInRange = G4Electron::Electron()->GetCuts()/10.; -// if((subSecFlag) && (aParticleType.GetParticleName()=="proton")) -// { -// G4cout << G4endl; -// G4cout.precision(5) ; -// G4cout << " hIoni Minimum Delta cut in range=" << MinDeltaCutInRange/mm -// << " mm." << G4endl; -// G4cout << G4endl; -// G4cout << " material min.delta energy(keV) " << G4endl; -// G4cout << G4endl; -// } - - if(MinDeltaEnergy) delete MinDeltaEnergy ; - MinDeltaEnergy = new G4double [numOfMaterials] ; - if(LowerLimitForced) delete LowerLimitForced ; - LowerLimitForced = new G4bool [numOfMaterials] ; - G4double Tlowerlimit = 1.*keV ; - for(G4int mat=0; matGetEnergyCuts())[mat]/10.; + MinDeltaEnergy[mat] = G4EnergyLossTables::GetPreciseEnergyFromRange( + G4Electron::Electron(),MinDeltaCutInRange, + (*theMaterialTable)[mat]); + if(MinDeltaEnergy[mat]G4Electron::Electron()->GetCutsInEnergy()[mat]) - MinDeltaEnergy[mat]=G4Electron::Electron()->GetCutsInEnergy()[mat] ; - -// if((subSecFlag) && (aParticleType.GetParticleName()=="proton")) -// { -// G4cout << G4std::setw(20) << (*theMaterialTable)(mat)->GetName() -// << G4std::setw(15) << MinDeltaEnergy[mat]/keV ; -// if(LowerLimitForced[mat]) -// G4cout << " lower limit forced." << G4endl; -// else -// G4cout << G4endl ; -// } + if(MinDeltaEnergy[mat]>(G4Electron::Electron()->GetEnergyCuts())[mat]) + MinDeltaEnergy[mat]=(G4Electron::Electron()->GetEnergyCuts())[mat]; } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4VhEnergyLoss::GetConstraints(const G4DynamicParticle *aParticle, G4Material *aMaterial) { - // returns the Step limit - // dRoverRange is the max. allowed relative range loss in one step - // it calculates dEdx and the range as well.... + // returns the Step limit + // dRoverRange is the max. allowed relative range loss in one step + // it calculates dEdx and the range as well.... - G4double KineticEnergy,StepLimit; - //G4bool isOut ; + G4double KineticEnergy = aParticle->GetKineticEnergy(); + G4double massratio=proton_mass_c2/(aParticle->GetDefinition()->GetPDGMass()); + G4double Tscaled = KineticEnergy*massratio; + G4double Charge = aParticle->GetDefinition()->GetPDGCharge()/eplus; + G4double ChargeSquare = Charge*Charge; - Charge = aParticle->GetDefinition()->GetPDGCharge()/eplus ; - - KineticEnergy = aParticle->GetKineticEnergy(); - - G4double massratio=proton_mass_c2/ - aParticle->GetDefinition()->GetPDGMass() ; - - G4double Tscaled= KineticEnergy*massratio ; - G4double ChargeSquare = Charge*Charge ; - - if(Charge>0.) - { - fRangeNow = G4EnergyLossTables::GetRange( theProton, - Tscaled,aMaterial) ; - fdEdx = G4EnergyLossTables::GetDEDX( theProton, - Tscaled,aMaterial) ; - } - else - { - fRangeNow = G4EnergyLossTables::GetRange( theAntiProton, - Tscaled,aMaterial) ; - fdEdx = G4EnergyLossTables::GetDEDX( theAntiProton, - Tscaled,aMaterial) ; - } - fdEdx *= ChargeSquare ; - fRangeNow /= (ChargeSquare*massratio) ; - - // compute the (random) Step limit .............. - if(fRangeNow > finalRange) + if (Charge>0.) { - StepLimit = (c1lim*fRangeNow+c2lim+c3lim/fRangeNow) ; - - // randomise this value - if(rndmStepFlag) StepLimit = - finalRange+(StepLimit-finalRange)*G4UniformRand() ; - if(StepLimit > fRangeNow) StepLimit = fRangeNow ; + fRangeNow=G4EnergyLossTables::GetRange(G4Proton::Proton(),Tscaled,aMaterial); + fdEdx =G4EnergyLossTables::GetDEDX (G4Proton::Proton(),Tscaled,aMaterial); } - else StepLimit = fRangeNow ; + else + { + fRangeNow=G4EnergyLossTables::GetRange(G4AntiProton::AntiProton(), + Tscaled,aMaterial); + fdEdx =G4EnergyLossTables::GetDEDX (G4AntiProton::AntiProton(), + Tscaled,aMaterial); + } + fdEdx *= ChargeSquare; + fRangeNow /= (ChargeSquare*massratio); - return StepLimit ; + // compute the (random) Step limit + // + G4double StepLimit; + if (fRangeNow > finalRange) + { + StepLimit = (c1lim*fRangeNow+c2lim+c3lim/fRangeNow); + + // randomise this value + if(rndmStepFlag) StepLimit=finalRange+(StepLimit-finalRange)*G4UniformRand(); + if(StepLimit > fRangeNow) StepLimit = fRangeNow; + } + else StepLimit = fRangeNow; + + return StepLimit; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VParticleChange* G4VhEnergyLoss::AlongStepDoIt( - const G4Track& trackData,const G4Step& stepData) - // compute the energy loss after a step -{ - const G4DynamicParticle* aParticle; - G4Material* aMaterial; - G4double E,finalT,Step,ChargeSquare,MeanLoss ; - - aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; + const G4Track& trackData,const G4Step& stepData) +{ + // compute the energy loss after a step + // + aParticleChange.Initialize(trackData); + + G4Material* aMaterial = trackData.GetMaterial(); + G4int index = aMaterial->GetIndex(); - // get the actual (true) Step length from stepData - Step = stepData.GetStepLength() ; + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); + G4double Charge = aParticle->GetDefinition()->GetPDGCharge()/eplus; + G4double ChargeSquare = Charge*Charge; + + // get the actual (true) Step length from stepData + G4double Step = stepData.GetStepLength(); - aParticle = trackData.GetDynamicParticle() ; - ChargeSquare = Charge*Charge ; + G4double E = aParticle->GetKineticEnergy(); + G4double MeanLoss; - G4int index = aMaterial->GetIndex() ; - E = aParticle->GetKineticEnergy() ; - - if(E < MinKineticEnergy) MeanLoss = E ; - else + if (E < MinKineticEnergy) MeanLoss = E; + else { - if(Step >= fRangeNow ) MeanLoss = E ; - - else if(( E > UpperBoundEloss)||( E <= LowerBoundEloss)) - MeanLoss = Step*fdEdx ; - - else + if(Step >= fRangeNow) MeanLoss = E; + else if((E > UpperBoundEloss)||(E <= LowerBoundEloss)) MeanLoss = Step*fdEdx; + else { - if(Step>linLossLimit*fRangeNow) + if (Step>linLossLimit*fRangeNow) { - G4double massratio=proton_mass_c2/ - aParticle->GetDefinition()->GetPDGMass() ; + G4double massratio = proton_mass_c2/ + aParticle->GetDefinition()->GetPDGMass(); + G4double rscaled = fRangeNow*massratio*ChargeSquare; + G4double sscaled = Step *massratio*ChargeSquare; - G4double rscaled= fRangeNow*massratio*ChargeSquare ; - G4double sscaled= Step *massratio*ChargeSquare ; - - if(Charge>0.) + if (Charge>0.) { MeanLoss = G4EnergyLossTables::GetPreciseEnergyFromRange( - theProton, + G4Proton::Proton(), rscaled ,aMaterial) - G4EnergyLossTables::GetPreciseEnergyFromRange( - theProton, - rscaled-sscaled,aMaterial) ; + G4Proton::Proton(), + rscaled-sscaled,aMaterial); } - else + else { MeanLoss = G4EnergyLossTables::GetPreciseEnergyFromRange( - theAntiProton, + G4AntiProton::AntiProton(), rscaled ,aMaterial) - G4EnergyLossTables::GetPreciseEnergyFromRange( - theAntiProton, - rscaled-sscaled,aMaterial) ; + G4AntiProton::AntiProton(), + rscaled-sscaled,aMaterial); } - MeanLoss /= massratio ; + MeanLoss /= massratio; } - else MeanLoss = Step*fdEdx ; + else MeanLoss = Step*fdEdx; } } - finalT = E - MeanLoss ; + G4double finalT = E - MeanLoss; - // subcutoff delta ray production start - if(subSecFlag) + // subcutoff delta ray production start + // + if((subSecFlag) && (trackData.GetCurrentStepNumber() > 1)) { - G4double MinDeltaEnergyNow,Tc,TmintoProduceDelta,w,ww ; - G4double rcut,T0,presafety,postsafety,safety,delta,Tmax,mass ; + G4double T0,delta; G4double fragment = Step; G4double frperstep = 1.0; G4double x1,y1,z1,dx,dy,dz,dTime,time0,DeltaTime; - //G4double epsil = MinKineticEnergy/2. ; - MinDeltaEnergyNow = MinDeltaEnergy[index] ; - Tc=G4Electron::Electron()->GetCutsInEnergy()[index]; - const G4ParticleDefinition* aParticleType=aParticle->GetDefinition() ; - mass=aParticleType->GetPDGMass() ; - w=mass+electron_mass_c2 ; - ww=2.*mass-MinDeltaEnergyNow ; - TmintoProduceDelta=0.5*(sqrt(ww*ww+2.*w*w*MinDeltaEnergyNow/ - electron_mass_c2)-ww) ; + G4double MinDeltaEnergyNow = MinDeltaEnergy[index] ; + G4double Tc=(G4Electron::Electron()->GetEnergyCuts())[index]; + G4double mass=aParticle->GetDefinition()->GetPDGMass(); + G4double w=mass+electron_mass_c2 ; + G4double ww=2.*mass-MinDeltaEnergyNow ; + G4double TmintoProduceDelta=0.5*(sqrt(ww*ww+2.*w*w*MinDeltaEnergyNow/ + electron_mass_c2)-ww); if((E > TmintoProduceDelta) && (MeanLoss > MinDeltaEnergyNow) - && (finalT > MinKineticEnergy)) + && (finalT > MinKineticEnergy)) { - // max. possible delta energy - Tmax = 2.*electron_mass_c2*E*(E+2.*mass)/ - (mass*mass+2.*electron_mass_c2*(E+mass)+ - electron_mass_c2*electron_mass_c2) ; - - rcut=G4Electron::Electron()->GetCuts(); - - if(Tc > Tmax) Tc=Tmax ; - // generate subcutoff delta rays only if Tc>MinDeltaEnergyNow! - if((Tc > MinDeltaEnergyNow) && (Tmax > MinDeltaEnergyNow)) + // max. possible delta energy + G4double Tmax = 2.*electron_mass_c2*E*(E+2.*mass)/ + (mass*mass+2.*electron_mass_c2*(E+mass)+ + electron_mass_c2*electron_mass_c2); + G4double rcut=(G4Electron::Electron()->GetLengthCuts())[index]; + if (Tc > Tmax) Tc=Tmax; + + // generate subcutoff delta rays only if Tc>MinDeltaEnergyNow + if ((Tc > MinDeltaEnergyNow) && (Tmax > MinDeltaEnergyNow)) { - presafety = stepData.GetPreStepPoint()->GetSafety() ; - // postsafety = stepData.GetPostStepPoint()->GetSafety() ; - - G4Navigator *navigator= - G4TransportationManager::GetTransportationManager() - ->GetNavigatorForTracking(); - postsafety = + G4double presafety = stepData.GetPreStepPoint()->GetSafety(); + G4Navigator* navigator = + G4TransportationManager::GetTransportationManager() + ->GetNavigatorForTracking(); + G4double postsafety = navigator->ComputeSafety(stepData.GetPostStepPoint()->GetPosition()); + G4double safety = G4std::min(presafety,postsafety); - safety = G4std::min(presafety,postsafety) ; - - if(safety < rcut) - { - + if (safety < rcut) + { x1=stepData.GetPreStepPoint()->GetPosition().x(); y1=stepData.GetPreStepPoint()->GetPosition().y(); z1=stepData.GetPreStepPoint()->GetPosition().z(); - dx=stepData.GetPostStepPoint()->GetPosition().x()-x1 ; - dy=stepData.GetPostStepPoint()->GetPosition().y()-y1 ; - dz=stepData.GetPostStepPoint()->GetPosition().z()-z1 ; + dx=stepData.GetPostStepPoint()->GetPosition().x()-x1; + dy=stepData.GetPostStepPoint()->GetPosition().y()-y1; + dz=stepData.GetPostStepPoint()->GetPosition().z()-z1; time0=stepData.GetPreStepPoint()->GetGlobalTime(); dTime=stepData.GetPostStepPoint()->GetGlobalTime()-time0; - if((presafety0.) - { - T0=G4EnergyLossTables::GetPreciseEnergyFromRange( + if (fragment>0.) + { + T0=G4EnergyLossTables::GetPreciseEnergyFromRange( G4Electron::Electron(), G4std::min(presafety,postsafety), - aMaterial) ; + aMaterial); + // absolute lower limit for T0 + if((T0GetIndex()])) + T0=MinDeltaEnergyNow; - // absolute lower limit for T0 - // if(T0GetIndex()])) - T0=MinDeltaEnergyNow ; + //compute nb of delta rays to be generated + //approximate value based on Bethe-Bloch and + //assuming an 1/E**2 delta spectrum - // compute nb of delta rays to be generated - G4int N=int(fragment*(c0N/(E*T0)+c1N/T0-(c2N+c3N*T0)/Tc)* - (aMaterial->GetTotNbOfElectPerVolume())+0.5) ; + G4double deldedx=cN*aMaterial->GetDensity()* + ((E+mass)*(E+mass)*log(Tc/T0)/(E*(E+mass))); + G4double delToverTc=1.-T0/Tc ; + G4double N = G4int(deldedx*fragment*delToverTc/(T0*log(Tc/T0))+0.5); + if(N > Ndeltamax) N = Ndeltamax; - G4double Px,Py,Pz ; - G4ThreeVector ParticleDirection ; - ParticleDirection=aParticle-> - GetMomentumDirection() ; - Px =ParticleDirection.x() ; - Py =ParticleDirection.y() ; - Pz =ParticleDirection.z() ; + G4ThreeVector ParticleDirection = aParticle->GetMomentumDirection(); + G4double Px =ParticleDirection.x(); + G4double Py =ParticleDirection.y(); + G4double Pz =ParticleDirection.z(); - G4int subdelta = 0; + G4int subdelta = 0; - if(N > 0) - { - G4double Tkin,Etot,P,T,p,costheta,sintheta,phi,dirx,diry,dirz, - Pnew,delToverTc,urandom; - //delTkin,delLoss,rate, - //G4StepPoint *point ; - - Tkin = E ; - Etot = Tkin+mass ; - P = sqrt(Tkin*(Etot+mass)) ; + if (N > 0) + { + G4double T,p,costheta,sintheta,phi,dirx,diry,dirz, + Pnew,urandom; + G4double Tkin = E; + G4double Etot = Tkin+mass; + G4double P = sqrt(Tkin*(Etot+mass)); - aParticleChange.SetNumberOfSecondaries(N); - do { - subdelta += 1 ; - - Tmax = 2.*electron_mass_c2*Tkin*(Tkin+2.*mass)/ + aParticleChange.SetNumberOfSecondaries(N); + do { + subdelta += 1; + Tmax = 2.*electron_mass_c2*Tkin*(Tkin+2.*mass)/ (mass*mass+2.*electron_mass_c2*(Tkin+mass)+ - electron_mass_c2*electron_mass_c2) ; + electron_mass_c2*electron_mass_c2); + if(Tc>Tmax) Tc = Tmax; - if(Tc>Tmax) Tc = Tmax ; + //check if there is enough energy .... + if((Tkin>TmintoProduceDelta)&&(Tc > T0)&&(MeanLoss>0.)) + { + delToverTc=1.-T0/Tc; + T=T0/(1.-delToverTc*G4UniformRand()); + if(T > MeanLoss) T=MeanLoss; + MeanLoss -= T; + p=sqrt(T*(T+2.*electron_mass_c2)); - //check if there is enough energy .... - if((Tkin>TmintoProduceDelta)&&(Tc > T0)&&(MeanLoss>0.)) - { - delToverTc=1.-T0/Tc ; - T=T0/(1.-delToverTc*G4UniformRand()) ; - if(T > MeanLoss) T=MeanLoss ; - MeanLoss -= T ; - p=sqrt(T*(T+2.*electron_mass_c2)) ; + costheta = T*(Etot+electron_mass_c2)/(P*p); + if(costheta<-1.) costheta=-1.; + if(costheta> 1.) costheta= 1.; - costheta = T*(Etot+electron_mass_c2)/(P*p) ; - if(costheta<-1.) costheta=-1.; - if(costheta> 1.) costheta= 1.; - - phi=twopi*G4UniformRand() ; - sintheta=sqrt(1.-costheta*costheta); - dirx=sintheta*cos(phi); - diry=sintheta*sin(phi); - dirz=costheta; + phi=twopi*G4UniformRand(); + sintheta=sqrt(1.-costheta*costheta); + dirx=sintheta*cos(phi); + diry=sintheta*sin(phi); + dirz=costheta; - urandom = G4UniformRand() ; - // distribute x,y,z along Pre-Post ! - G4double xd,yd,zd ; - xd=x1+frperstep*dx*urandom ; - yd=y1+frperstep*dy*urandom ; - zd=z1+frperstep*dz*urandom ; - G4ThreeVector DeltaPosition(xd,yd,zd) ; - DeltaTime=time0+frperstep*dTime*urandom ; + urandom = G4UniformRand() ; + // distribute x,y,z along Pre-Post ! + G4double xd=x1+frperstep*dx*urandom; + G4double yd=y1+frperstep*dy*urandom; + G4double zd=z1+frperstep*dz*urandom; + G4ThreeVector DeltaPosition(xd,yd,zd); + DeltaTime=time0+frperstep*dTime*urandom; - G4ThreeVector DeltaDirection(dirx,diry,dirz) ; - DeltaDirection.rotateUz(ParticleDirection); + G4ThreeVector DeltaDirection(dirx,diry,dirz); + DeltaDirection.rotateUz(ParticleDirection); - G4DynamicParticle* theDelta = new G4DynamicParticle ; - theDelta->SetDefinition(G4Electron::Electron()); - theDelta->SetKineticEnergy(T); + G4DynamicParticle* theDelta = new G4DynamicParticle; + theDelta->SetDefinition(G4Electron::Electron()); + theDelta->SetKineticEnergy(T); - theDelta->SetMomentumDirection(DeltaDirection.x(), + theDelta->SetMomentumDirection(DeltaDirection.x(), DeltaDirection.y(),DeltaDirection.z()); - // update initial particle,fill ParticleChange - Tkin -= T ; - Px =(P*ParticleDirection.x()-p*DeltaDirection.x()) ; - Py =(P*ParticleDirection.y()-p*DeltaDirection.y()) ; - Pz =(P*ParticleDirection.z()-p*DeltaDirection.z()) ; - Pnew = sqrt(Px*Px+Py*Py+Pz*Pz) ; - Px /= Pnew ; - Py /= Pnew ; - Pz /= Pnew ; - P = Pnew ; - G4ThreeVector ParticleDirectionnew(Px,Py,Pz) ; - ParticleDirection = ParticleDirectionnew; + // update initial particle,fill ParticleChange + Tkin -= T; + Px =(P*ParticleDirection.x()-p*DeltaDirection.x()); + Py =(P*ParticleDirection.y()-p*DeltaDirection.y()); + Pz =(P*ParticleDirection.z()-p*DeltaDirection.z()); + Pnew = sqrt(Px*Px+Py*Py+Pz*Pz); + Px /= Pnew; + Py /= Pnew; + Pz /= Pnew; + P = Pnew; + G4ThreeVector ParticleDirectionnew(Px,Py,Pz); + ParticleDirection = ParticleDirectionnew; - G4Track* deltaTrack = - new G4Track(theDelta,DeltaTime,DeltaPosition); - deltaTrack-> - SetTouchable(stepData.GetPostStepPoint()->GetTouchable()) ; + G4Track* deltaTrack = + new G4Track(theDelta,DeltaTime,DeltaPosition); + deltaTrack->SetTouchableHandle(stepData.GetPostStepPoint() + ->GetTouchableHandle()); - deltaTrack->SetParentID(trackData.GetTrackID()) ; + deltaTrack->SetParentID(trackData.GetTrackID()); - aParticleChange.AddSecondary(deltaTrack) ; + aParticleChange.AddSecondary(deltaTrack); + } - } + } while (subdelta 0) - aParticleChange.SetMomentumChange(Px,Py,Pz) ; - E = Tkin ; + // update the particle direction and kinetic energy + if(subdelta > 0) aParticleChange.SetMomentumChange(Px,Py,Pz); + E = Tkin; } } } } } } - // end of subcutoff business + // end of subcutoff business - finalT = E - MeanLoss ; - if(finalT < MinKineticEnergy) finalT = 0. ; + finalT = E - MeanLoss; + if(finalT < MinKineticEnergy) finalT = 0.; - // now the loss with fluctuation - if((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowerBoundEloss)) + // now the loss with fluctuation + if ((EnlossFlucFlag) && (finalT > 0.) && (finalT < E)&&(E > LowerBoundEloss)) { - finalT = E - - EnergyLossFluctuation(aParticle,aMaterial,ChargeSquare,MeanLoss,Step) ; - if (finalT < 0.) finalT = 0. ; + finalT = E - + EnergyLossFluctuation(aParticle,aMaterial,ChargeSquare,MeanLoss,Step); + if (finalT < 0.) finalT = 0.; } - // kill the particle if the kinetic energy <= 0 - if (finalT <= 0. ) + // kill the particle if the kinetic energy <= 0 + if (finalT <= 0.) { - finalT = 0.; - if(aParticle->GetDefinition()->GetParticleName() == "proton") - aParticleChange.SetStatusChange(fStopAndKill); - else - aParticleChange.SetStatusChange(fStopButAlive); + finalT = 0.; + if(aParticle->GetDefinition()->GetParticleName() == "proton") + aParticleChange.SetStatusChange(fStopAndKill); + else aParticleChange.SetStatusChange(fStopButAlive); } - // aParticleChange.SetNumberOfSecondaries(0); - aParticleChange.SetEnergyChange( finalT ) ; - aParticleChange.SetLocalEnergyDeposit(E-finalT) ; + aParticleChange.SetEnergyChange(finalT); + aParticleChange.SetLocalEnergyDeposit(E-finalT); - return &aParticleChange ; + return &aParticleChange; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4VhEnergyLoss::EnergyLossFluctuation( - const G4DynamicParticle *aParticle, - G4Material *aMaterial, - G4double ChargeSquare, - G4double MeanLoss, - G4double Step) + const G4DynamicParticle* aParticle, + G4Material* aMaterial, + G4double ChargeSquare, + G4double MeanLoss, + G4double Step) { - G4double loss = GetLossWithFluct(aParticle,aMaterial, - ChargeSquare,MeanLoss,Step) ; - return loss ; + return GetLossWithFluct(aParticle,aMaterial,ChargeSquare,MeanLoss,Step); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc b/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc index 76a038b084..6b9c2af27b 100644 --- a/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc +++ b/source/processes/electromagnetic/standard/src/G4eBremsstrahlung.cc @@ -21,45 +21,46 @@ // ******************************************************************** // // -// $Id: G4eBremsstrahlung.cc,v 1.16.2.2 2001/06/28 20:19:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eBremsstrahlung.cc,v 1.24 2001/11/09 13:59:46 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// -------------------------------------------------------------- -// GEANT 4 class implementation file -// CERN Geneva Switzerland // -// History: first implementation, based on object model of -// 2nd December 1995, G.Cosmo // ------------ G4eBremsstrahlung physics process -------- // by Michel Maire, 24 July 1996 -// ************************************************************** -// 26-09-96 : extension of the total crosssection above 100 GeV, M.Maire -// 1-10-96 : new type G4OrderedTable; ComputePartialSumSigma(), M.Maire -// 16-10-96 : DoIt() call to the non static GetEnergyCuts(), L.Urban -// 13-12-96 : Sign corrected in grejmax and greject -// error definition of screenvar, L.Urban -// 20-03-97 : new energy loss+ionisation+brems scheme, L.Urban -// 07-04-98 : remove 'tracking cut' of the diffracted particle, MMa -// 13-08-98 : new methods SetBining() PrintInfo() -// 03-03-99 : Bug fixed in LPM effect, L.Urban -// 10/02/00 modifications , new e.m. structure, L.Urban -// 07/08/00 new cross section/en.loss parametrisation, LPM flag , L.Urban -// 21/09/00 : corrections in the LPM implementation, L.Urban -// 28/05/01 : V.Ivanchenko minor changes to provide ANSI -wall compilation +// +// 26-09-96 extension of the total crosssection above 100 GeV, M.Maire +// 1-10-96 new type G4OrderedTable; ComputePartialSumSigma(), M.Maire +// 16-10-96 DoIt() call to the non static GetEnergyCuts(), L.Urban +// 13-12-96 Sign corrected in grejmax and greject +// error definition of screenvar, L.Urban +// 20-03-97 new energy loss+ionisation+brems scheme, L.Urban +// 07-04-98 remove 'tracking cut' of the diffracted particle, MMa +// 13-08-98 new methods SetBining() PrintInfo() +// 03-03-99 Bug fixed in LPM effect, L.Urban +// 10-02-00 modifications , new e.m. structure, L.Urban +// 07-08-00 new cross section/en.loss parametrisation, LPM flag , L.Urban +// 21-09-00 corrections in the LPM implementation, L.Urban +// 28-05-01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 09-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 17-09-01 migration of Materials to pure STL (mma) +// 21-09-01 completion of RetrievePhysicsTable() (mma) +// 29-10-01 all static functions no more inlined (mma) +// 08-11-01 particleMass becomes a local variable // -------------------------------------------------------------- +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + #include "G4eBremsstrahlung.hh" #include "G4EnergyLossTables.hh" #include "G4ios.hh" #include "G4UnitsTable.hh" -G4double G4eBremsstrahlung::LowerBoundLambda = 1.*keV ; -G4double G4eBremsstrahlung::UpperBoundLambda = 100.*TeV ; -G4int G4eBremsstrahlung::NbinLambda = 100 ; -G4double G4eBremsstrahlung::probsup = 1.00 ; -G4bool G4eBremsstrahlung::LPMflag = true; - +G4double G4eBremsstrahlung::LowerBoundLambda = 1.*keV; +G4double G4eBremsstrahlung::UpperBoundLambda = 100.*TeV; +G4int G4eBremsstrahlung::NbinLambda = 100; +G4double G4eBremsstrahlung::probsup = 1.00; +G4bool G4eBremsstrahlung::LPMflag = true; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -87,35 +88,74 @@ G4eBremsstrahlung::~G4eBremsstrahlung() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void G4eBremsstrahlung::SetLowerBoundLambda(G4double val) + {LowerBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4eBremsstrahlung::SetUpperBoundLambda(G4double val) + {UpperBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4eBremsstrahlung::SetNbinLambda(G4int n) + {NbinLambda = n;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4eBremsstrahlung::GetLowerBoundLambda() + {return LowerBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4eBremsstrahlung::GetUpperBoundLambda() + {return UpperBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4eBremsstrahlung::GetNbinLambda() + {return NbinLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4eBremsstrahlung::SetLPMflag(G4bool val) + {LPMflag = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4eBremsstrahlung::GetLPMflag() + {return LPMflag;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4eBremsstrahlung::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) // just call BuildLossTable+BuildLambdaTable { // get bining from EnergyLoss - LowestKineticEnergy = GetLowerBoundEloss() ; - HighestKineticEnergy = GetUpperBoundEloss() ; - TotBin = GetNbinEloss() ; + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); - BuildLossTable(aParticleType) ; + BuildLossTable(aParticleType); if (&aParticleType==G4Electron::Electron()) { - RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; + RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable; CounterOfElectronProcess++; } else { - RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable ; + RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable; CounterOfPositronProcess++; } - BuildLambdaTable(aParticleType) ; + BuildLambdaTable(aParticleType); - BuildDEDXTable (aParticleType) ; + BuildDEDXTable (aParticleType); - if(&aParticleType==G4Electron::Electron()) - PrintInfoDefinition(); + if (&aParticleType==G4Electron::Electron()) PrintInfoDefinition(); } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -133,13 +173,13 @@ void G4eBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aParticleType const G4double Factorhigh = 36./(1450.*GeV); const G4double coef1 = -0.5, coef2 = 2./9.; - ParticleMass = aParticleType.GetPDGMass() ; + G4double particleMass = aParticleType.GetPDGMass() ; G4double* GammaCutInKineticEnergy = G4Gamma::Gamma()->GetEnergyCuts(); // create table const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if (theLossTable) { theLossTable->clearAndDestroy(); delete theLossTable; @@ -167,7 +207,7 @@ void G4eBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aParticleType for (G4int i=0; iGetLowEdgeEnergy(i) ; - TotalEnergy = KineticEnergy+ParticleMass ; + TotalEnergy = KineticEnergy+particleMass ; Cut = GammaCutInKineticEnergy[J] ; if (Cut < MinThreshold) Cut = MinThreshold; if (Cut > KineticEnergy) Cut = KineticEnergy; @@ -179,12 +219,12 @@ void G4eBremsstrahlung::BuildLossTable(const G4ParticleDefinition& aParticleType // loop for elements in the material for (G4int iel=0; ielGetZ(); + Z=(*theElementVector)[iel]->GetZ(); natom = theAtomicNumDensityVector[iel] ; if (KineticEnergy <= Thigh) { //loss for MinKinEnergy100 GeV - x=log(Thigh/ParticleMass) ; + x=log(Thigh/particleMass) ; if (Cut 1.) floss = 1. ; - - // correct the loss - bremloss *= floss ; + else floss = 1.; + if(floss > 1.) floss = 1.; + // correct the loss + bremloss *= floss; } - if(bremloss < 0.) bremloss = 0. ; + if(bremloss < 0.) bremloss = 0.; aVector->PutValue(i,bremloss); } theLossTable->insert(aVector); - } } @@ -346,49 +373,36 @@ G4double G4eBremsstrahlung::ComputeBremLoss(G4double Z,G4double natom, static G4double bbb=0.345 ; static G4double ccc=0.460 ; - G4int iz = 0 ; - G4double delz = 1.e6 ; + G4int iz = 0; + G4double delz = 1.e6; for (G4int ii=0; ii=0; j--) - { - fl = fl*xx+coefloss[iz][j] ; - } - if(fl < 0.) fl = 0. ; - } + if (xx <= xlim) + { + fl = coefloss[iz][Nloss-1]; + for (G4int j=Nloss-2; j>=0; j--) fl = fl*xx+coefloss[iz][j]; + if (fl < 0.) fl = 0.; + } G4double loss; G4double E = T+electron_mass_c2 ; - loss = Z*(Z+ksi)*E*E/(T+E)*exp(beta*log(Cut/T))*(2.-clossh*exp(log(Z)/4.)) ; + loss = Z*(Z+ksi)*E*E/(T+E)*exp(beta*log(Cut/T))*(2.-clossh*exp(log(Z)/4.)); + if (T <= Tlim) loss /= exp(closslow*log(Tlim/T)); + if( T <= Cut) loss *= exp(alosslow*log(T/Cut)); - if(T <= Tlim) - loss /= exp(closslow*log(Tlim/T)) ; + // correction ................................ + loss *= (aaa+bbb*T/Tlim)/(1.+ccc*T/Tlim); + loss *= fl; + loss /= Avogadro; - if(T <= Cut) - loss *= exp(alosslow*log(T/Cut)) ; - - // correction ................................ - loss *= (aaa+bbb*T/Tlim)/(1.+ccc*T/Tlim) ; - - loss *= fl ; - - loss /= Avogadro ; - - return loss ; + return loss; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -416,7 +430,8 @@ G4double G4eBremsstrahlung::ComputePositronCorrFactorLoss( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -void G4eBremsstrahlung::BuildLambdaTable(const G4ParticleDefinition& ParticleType) +void G4eBremsstrahlung::BuildLambdaTable( + const G4ParticleDefinition& ParticleType) // Build mean free path tables for the gamma emission by e- or e+. // tables are Build for MATERIALS. @@ -469,18 +484,18 @@ G4double G4eBremsstrahlung::ComputeMeanFreePath( { const G4ElementVector* theElementVector = aMaterial->GetElementVector() ; const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; + G4double GammaEnergyCut = G4Gamma::Gamma()->GetEnergyThreshold(aMaterial); if (GammaEnergyCut < MinThreshold) GammaEnergyCut = MinThreshold; - G4double SIGMA = 0 ; + G4double SIGMA = 0; for ( size_t i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) - { - SIGMA += theAtomNumDensityVector[i] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(i)->GetZ(), - GammaEnergyCut ); - } + { + SIGMA += theAtomNumDensityVector[i] * + ComputeCrossSectionPerAtom( ParticleType, KineticEnergy, + (*theElementVector)[i]->GetZ(), + GammaEnergyCut ); + } // now compute the correction due to the supression(s) G4double kmax = KineticEnergy ; @@ -495,64 +510,49 @@ G4double G4eBremsstrahlung::ComputeMeanFreePath( if(kmax > kmin) { - - G4double fsig = 0. ; - G4int nmax = 100 ; - G4int nn ; - G4double vmin=log(kmin); - G4double vmax=log(kmax) ; - nn = int(nmax*(vmax-vmin)/(log(HighestKineticEnergy)-vmin)) ; - G4double u,fac,c,v,dv,y ; - dv = (vmax-vmin)/nn ; - v = vmin-dv ; + G4double fsig = 0.; + G4int nmax = 100 ; + G4int nn ; + G4double vmin=log(kmin); + G4double vmax=log(kmax) ; + nn = int(nmax*(vmax-vmin)/(log(HighestKineticEnergy)-vmin)); + G4double u,fac,c,v,dv,y ; + dv = (vmax-vmin)/nn ; + v = vmin-dv ; if(nn > 0) { for(G4int n=0; n<=nn; n++) { - v += dv ; - u = exp(v) ; - - fac = SupressionFunction(aMaterial,KineticEnergy,u) ; - - y = u/kmax ; - - fac *= (4.-4.*y+3.*y*y)/3. ; - - fac *= probsup*(u*u/(u*u+kp2))+1.-probsup ; - - if((n==0)||(n==nn)) - c=0.5; - else - c=1.; - - fac *= c ; - fsig += fac ; + v += dv; u = exp(v); + fac = SupressionFunction(aMaterial,KineticEnergy,u); + y = u/kmax; + fac *= (4.-4.*y+3.*y*y)/3.; + fac *= probsup*(u*u/(u*u+kp2))+1.-probsup; + if ((n==0)||(n==nn)) c=0.5; + else c=1. ; + fac *= c; + fsig += fac; } y = kmin/kmax ; - fsig *=dv/(-4.*log(y)/3.-4.*(1.-y)/3.+0.5*(1.-y*y)) ; - + fsig *=dv/(-4.*log(y)/3.-4.*(1.-y)/3.+0.5*(1.-y*y)); } - else - fsig = 1. ; - - if(fsig > 1.) fsig = 1. ; - - // correct the cross section - SIGMA *= fsig ; + else fsig = 1.; + if (fsig > 1.) fsig = 1.; + // correct the cross section + SIGMA *= fsig; } - return SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4eBremsstrahlung::ComputeMicroscopicCrossSection( +G4double G4eBremsstrahlung::ComputeCrossSectionPerAtom( const G4ParticleDefinition* ParticleType, G4double KineticEnergy, G4double AtomicNumber, G4double GammaEnergyCut) -// Calculates the microscopic cross section in GEANT4 internal units. +// Calculates the cross section per atom in GEANT4 internal units. // { @@ -688,7 +688,7 @@ void G4eBremsstrahlung::ComputePartialSumSigma(const G4ParticleDefinition* Parti G4int NbOfElements = aMaterial->GetNumberOfElements(); const G4ElementVector* theElementVector = aMaterial->GetElementVector(); const G4double* theAtomNumDensityVector = aMaterial->GetAtomicNumDensityVector(); - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[Imate]; + G4double GammaEnergyCut = G4Gamma::Gamma()->GetEnergyThreshold(aMaterial); PartialSumSigma[Imate] = new G4DataVector(); @@ -698,9 +698,9 @@ void G4eBremsstrahlung::ComputePartialSumSigma(const G4ParticleDefinition* Parti for ( G4int Ielem=0 ; Ielem < NbOfElements ; Ielem++ ) { SIGMA += theAtomNumDensityVector[Ielem] * - ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), - GammaEnergyCut ); + ComputeCrossSectionPerAtom( ParticleType, KineticEnergy, + (*theElementVector)[Ielem]->GetZ(), + GammaEnergyCut ); PartialSumSigma[Imate]->push_back(SIGMA); } } @@ -765,7 +765,7 @@ G4VParticleChange* G4eBremsstrahlung::PostStepDoIt(const G4Track& trackData, G4ParticleMomentum ParticleDirection = aDynamicParticle->GetMomentumDirection(); // Gamma production cut in this material - G4double GammaEnergyCut = (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; + G4double GammaEnergyCut = G4Gamma::Gamma()->GetEnergyThreshold(aMaterial); if (GammaEnergyCut < MinThreshold) GammaEnergyCut = MinThreshold; // check against insufficient energy @@ -955,7 +955,7 @@ G4Element* G4eBremsstrahlung::SelectRandomAtom(G4Material* aMaterial) const G4double rval = G4UniformRand()*((*PartialSumSigma[Index])[NumberOfElements-1]); for ( G4int i=0; i < NumberOfElements; i++ ) - if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)(i)); + if (rval <= (*PartialSumSigma[Index])[i]) return ((*theElementVector)[i]); G4cout << " WARNING !!! - The Material '"<< aMaterial->GetName() << "' has no elements, NULL pointer returned." << G4endl; return NULL; @@ -993,43 +993,145 @@ G4double G4eBremsstrahlung::SupressionFunction(const G4Material* aMaterial, sp = GammaEnergySquare/(GammaEnergySquare+MigdalConstant*TotalEnergySquare* (aMaterial->GetElectronDensity())) ; - if(LPMflag) - { - s2lpm = LPMEnergy*GammaEnergy/TotalEnergySquare ; - - if(s2lpm < 1.) + if (LPMflag) { - if((1.-sp) < 1.e-6) - w = s2lpm*(3.-sp) ; - else - w = s2lpm*(1.+1./sp) ; - supr = Cnorm*(sqrt(w*w+4.*s2lpm)-w)/2. ; + s2lpm = LPMEnergy*GammaEnergy/TotalEnergySquare; + if (s2lpm < 1.) + { + if ((1.-sp) < 1.e-6) w = s2lpm*(3.-sp); + else w = s2lpm*(1.+1./sp); + supr = Cnorm*(sqrt(w*w+4.*s2lpm)-w)/2. ; + } + else supr = sp; } - else - { - supr = sp ; - } - } - else - supr = sp ; + else supr = sp; - supr /= sp ; - - return supr ; + supr /= sp; + return supr; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4eBremsstrahlung::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + if ( !theLossTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + // store PartialSumSigma table (G4OrderedTable) + filename = GetPhysicsTableFileName(particle,directory,"PartSumSigma",ascii); + if ( !PartialSumSigma.Store(filename, ascii) ){ + G4cout << " FAIL PartialSumSigma.store in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4eBremsstrahlung::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theLossTable and theMeanFreePathTable + if (theLossTable != 0) { + theLossTable->clearAndDestroy(); + delete theLossTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + + if (&PartialSumSigma != 0) PartialSumSigma.clear(); + + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); + + G4String filename; + + // retreive stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + theLossTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theLossTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable0->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retrieve PartialSumSigma table (G4OrderedTable) + filename = GetPhysicsTableFileName(particle,directory,"PartSumSigma",ascii); + if ( !PartialSumSigma.Retrieve(filename, ascii) ){ + G4cout << " FAIL PartialSumSigma.retrieve in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + + if (particle==G4Electron::Electron()) + { + RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable; + CounterOfElectronProcess++; + } + else + { + RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable; + CounterOfPositronProcess++; + } + + BuildDEDXTable (*particle); + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4eBremsstrahlung::PrintInfoDefinition() { - G4String comments = "Total cross sections from a NEW parametrisation based on the EEDL data library. "; - // comments += "Good description from 10 KeV to 100 GeV.\n"; - comments += "\n Good description from 1 KeV to 100 GeV.\n"; - comments += " log scale extrapolation above 100 GeV \n"; - comments += " Gamma energy sampled from a parametrised formula."; + G4String comments = "Total cross sections from a NEW parametrisation" + " based on the EEDL data library. " + "\n Good description from 1 KeV to 100 GeV.\n" + " log scale extrapolation above 100 GeV \n" + " Gamma energy sampled from a parametrised formula."; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda,"Energy") + << "\n PhysicsTables from " + << G4BestUnit(LowerBoundLambda,"Energy") << " to " << G4BestUnit(UpperBoundLambda,"Energy") << " in " << NbinLambda << " bins. \n"; } diff --git a/source/processes/electromagnetic/standard/src/G4eIonisation.cc b/source/processes/electromagnetic/standard/src/G4eIonisation.cc index 605d42a5ec..d8038c9fa5 100644 --- a/source/processes/electromagnetic/standard/src/G4eIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4eIonisation.cc @@ -21,248 +21,187 @@ // ******************************************************************** // // -// $Id: G4eIonisation.cc,v 1.11.2.2 2001/06/28 20:19:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eIonisation.cc,v 1.22 2001/11/09 13:59:47 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// -// ------------------------------------------------------------- -// GEANT 4 class implementation file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4eIonisation physics process ----------- +//--------------- G4eIonisation physics process -------------------------------- // by Laszlo Urban, 20 March 1997 -// ************************************************************** -// It is the first implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of e+/e-. -// ************************************************************** +//------------------------------------------------------------------------------ // -// 07-04-98: remove 'tracking cut' of the ionizing particle, MMa -// 04-09-98: new methods SetBining() PrintInfo() -// 07-09-98: Cleanup -// 02/02/99: correction inDoIt , L.Urban -// 10/02/00 modifications , new e.m. structure, L.Urban -// 28/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- +// 07-04-98 remove 'tracking cut' of the ionizing particle, mma +// 04-09-98 new methods SetBining() PrintInfo() +// 07-09-98 Cleanup +// 02-02-99 correction inDoIt , L.Urban +// 10-02-00 modifications , new e.m. structure, L.Urban +// 28-05-01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 09-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 13-08-01 new function ComputeRestrictedMeandEdx() (mma) +// 17-09-01 migration of Materials to pure STL (mma) +// 21-09-01 completion of RetrievePhysicsTable() (mma) +// 29-10-01 all static functions no more inlined (mma) +// 07-11-01 particleMass and Charge become local variables +//------------------------------------------------------------------------------ + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4eIonisation.hh" -#include "G4EnergyLossTables.hh" -#include "G4ios.hh" #include "G4UnitsTable.hh" -G4double G4eIonisation::LowerBoundLambda = 1.*keV ; -G4double G4eIonisation::UpperBoundLambda = 100.*TeV ; -G4int G4eIonisation::NbinLambda = 100 ; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4eIonisation::LowerBoundLambda = 1.*keV; +G4double G4eIonisation::UpperBoundLambda = 100.*TeV; +G4int G4eIonisation::NbinLambda = 100; + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -// constructor and destructor - G4eIonisation::G4eIonisation(const G4String& processName) : G4VeEnergyLoss(processName), theMeanFreePathTable(NULL) { } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4eIonisation::~G4eIonisation() { - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - + if (theMeanFreePathTable) + {theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +void G4eIonisation::SetLowerBoundLambda(G4double val) + {LowerBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4eIonisation::SetUpperBoundLambda(G4double val) + {UpperBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4eIonisation::SetNbinLambda(G4int n) + {NbinLambda = n;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4eIonisation::GetLowerBoundLambda() + {return LowerBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4eIonisation::GetUpperBoundLambda() + {return UpperBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4eIonisation::GetNbinLambda() + {return NbinLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4eIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable +// just call BuildLossTable+BuildLambdaTable { - // get bining from EnergyLoss - LowestKineticEnergy = GetLowerBoundEloss() ; - HighestKineticEnergy = GetUpperBoundEloss() ; - TotBin = GetNbinEloss() ; + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); - BuildLossTable(aParticleType) ; + BuildLossTable(aParticleType); - if(&aParticleType==G4Electron::Electron()) - { - RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable ; - CounterOfElectronProcess++; - } + if (&aParticleType==G4Electron::Electron()) + { + RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable; + CounterOfElectronProcess++; + } else - { - RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable ; - CounterOfPositronProcess++; - } + { + RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable; + CounterOfPositronProcess++; + } - BuildLambdaTable(aParticleType) ; + BuildLambdaTable(aParticleType); - BuildDEDXTable(aParticleType) ; + BuildDEDXTable(aParticleType); - if(&aParticleType==G4Electron::Electron()) - PrintInfoDefinition(); + if (&aParticleType==G4Electron::Electron()) PrintInfoDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4eIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) { -// Build tables for the ionization energy loss -// the tables are built for *MATERIALS* +// Build tables of dE/dx due to the ionization process +// the tables are built for *MATERIALS* - const G4double twoln10 = 2.*log(10.); - const G4double Factor = twopi_mc2_rcl2; +// create table +// + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - static const G4double Tl = 0.2*keV ; + if (theLossTable) {theLossTable->clearAndDestroy(); delete theLossTable;} + theLossTable = new G4PhysicsTable(numOfMaterials); + +// get DeltaCut in energy + G4double* DeltaCutInKineticEnergy = aParticleType.GetEnergyCuts(); - G4double LowEdgeEnergy, ionloss; - - // material properties - G4double ElectronDensity,Eexc,Eexcm2,Cden,Mden,Aden,X0den,X1den ; - // some local variables - G4double tau,Tmax,gamma,gamma2,bg2,beta2,d,d2,d3,d4,delta,x,y ; - - ParticleMass = aParticleType.GetPDGMass(); - G4double* ParticleCutInKineticEnergy = aParticleType.GetEnergyCuts() ; - - // create table - - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (theLossTable) { theLossTable->clearAndDestroy(); - delete theLossTable; - } - - theLossTable = new G4PhysicsTable(numOfMaterials); - -// loop for materials - - for (G4int J=0; JGetElectronDensity(); - Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); - Eexc /= ParticleMass; Eexcm2 = Eexc*Eexc; - Cden = material->GetIonisation()->GetCdensity(); - Mden = material->GetIonisation()->GetMdensity(); - Aden = material->GetIonisation()->GetAdensity(); - X0den = material->GetIonisation()->GetX0density(); - X1den = material->GetIonisation()->GetX1density(); - - // for the lowenergy extrapolation - G4double Zeff = material->GetTotNbOfElectPerVolume()/ - material->GetTotNbOfAtomsPerVolume() ; - G4double Th = 0.25*sqrt(Zeff)*keV ; - - G4double Tsav ; - - // now comes the loop for the kinetic energy values - - for (G4int i = 0 ; i < TotBin ; i++) + // now comes the loop for the kinetic energy values + // + for (G4int i = 0; i < TotBin; i++) { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - // low energy ? - if(LowEdgeEnergy < Th) - { - Tsav = LowEdgeEnergy ; - LowEdgeEnergy = Th ; - } - else - Tsav = 0. ; - - tau = LowEdgeEnergy/ParticleMass ; - - // Seltzer-Berger formula - gamma = tau + 1.; gamma2 = gamma*gamma; - bg2 = tau*(tau+2.); - beta2 = bg2/gamma2; - - // electron - if (&aParticleType==G4Electron::Electron()) - { - Tmax = LowEdgeEnergy/2.; - d = G4std::min(ParticleCutInKineticEnergy[J], Tmax)/ParticleMass; - ionloss = log(2.*(tau+2.)/Eexcm2)-1.-beta2 - + log((tau-d)*d)+tau/(tau-d) - + (0.5*d*d+(2.*tau+1.)*log(1.-d/tau))/gamma2; - } - else //positron - { - Tmax = LowEdgeEnergy ; - d = G4std::min(ParticleCutInKineticEnergy[J], Tmax)/ParticleMass; - d2=d*d/2.; d3=d*d*d/3.; d4=d*d*d*d/4.; - y=1./(1.+gamma); - ionloss = log(2.*(tau+2.)/Eexcm2)+log(tau*d) - - beta2*(tau+2.*d-y*(3.*d2+y*(d-d3+y*(d2-tau*d3+d4))))/tau; - } - - //density correction - x = log(bg2)/twoln10; - if (x < X0den) delta = 0.; - else { delta = twoln10*x - Cden; - if (x < X1den) delta += Aden*pow((X1den-x),Mden); - } - - //now you can compute the total ionization loss - ionloss -= delta ; - ionloss *= Factor*ElectronDensity/beta2 ; - if (ionloss <= 0.) ionloss = 0.; - - // low energy ? - if(Tsav > 0.) - { - if(Tsav >= Tl) - ionloss *= sqrt(LowEdgeEnergy/Tsav) ; - else - ionloss *= sqrt(LowEdgeEnergy*Tsav)/Tl ; - } - - aVector->PutValue(i,ionloss) ; + G4double dEdx = ComputeRestrictedMeandEdx(aParticleType, + aVector->GetLowEdgeEnergy(i), + material, + DeltaThreshold); + aVector->PutValue(i,dEdx); } theLossTable->insert(aVector); } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4eIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) { // Build mean free path tables for the delta ray production process // tables are built for MATERIALS - G4double LowEdgeEnergy, Value, SIGMA; - //create table + // const G4MaterialTable* theMaterialTable=G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); - - if (theMeanFreePathTable) { theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); + + if (theMeanFreePathTable) + { theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); // get electron cuts in kinetic energy // The electron cuts needed in the case of the positron , too! - // This is the reason why SetCut has to be called for electron first !!!!!!! + // This is the reason why SetCut has to be called for electron first !! - if((G4Electron::Electron()->GetCutsInEnergy() == 0) && - ( &aParticleType == G4Positron::Positron())) + if((G4Electron::Electron()->GetEnergyCuts() == 0) && + (&aParticleType == G4Positron::Positron())) { - G4cout << " The ELECTRON energy cuts needed to compute energy loss/mean free path " - " for POSITRON , too. " << G4endl; - G4Exception(" Call SetCut for e- first !!!!!!") ; + G4cout << " The ELECTRON energy cuts needed to compute energy loss" + " and mean free path; and for POSITRON, too. " << G4endl; + G4Exception(" Call SetCut for e- first !!"); } - G4double* DeltaCutInKineticEnergy = G4Electron::Electron()->GetCutsInEnergy() ; + G4double* DeltaCutInKineticEnergy = G4Electron::Electron()->GetEnergyCuts() ; // loop for materials @@ -276,66 +215,143 @@ void G4eIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) // compute the (macroscopic) cross section first const G4Material* material= (*theMaterialTable)[J]; - const - G4ElementVector* theElementVector = material->GetElementVector(); - const - G4double* theAtomicNumDensityVector = material->GetAtomicNumDensityVector(); - const - G4int NumberOfElements = material->GetNumberOfElements() ; + const G4ElementVector* theElementVector = material->GetElementVector(); + const G4double* NbOfAtomsPerVolume = material->GetVecNbOfAtomsPerVolume(); + G4int NumberOfElements = material->GetNumberOfElements(); // get the electron kinetic energy cut for the actual material, - // it will be used in ComputeMicroscopicCrossSection + // it will be used in ComputeCrossSectionPerAtom // (--> it will be the same for all the elements in this material ) - G4double DeltaThreshold = DeltaCutInKineticEnergy[J] ; + G4double DeltaThreshold = DeltaCutInKineticEnergy[J]; for (G4int i = 0 ; i < NbinLambda ; i++) { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - SIGMA = 0.; + G4double LowEdgeEnergy = aVector->GetLowEdgeEnergy(i); + G4double SIGMA = 0.; for (G4int iel=0; ielGetZ(), - DeltaThreshold); + SIGMA += NbOfAtomsPerVolume[iel]* + ComputeCrossSectionPerAtom(aParticleType, + LowEdgeEnergy, + (*theElementVector)[iel]->GetZ(), + DeltaThreshold); } // mean free path = 1./macroscopic cross section - Value = SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; - aVector->PutValue(i, Value) ; + G4double Value = SIGMA > DBL_MIN ? 1./SIGMA : DBL_MAX; + aVector->PutValue(i, Value); } theMeanFreePathTable->insert(aVector); } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4double G4eIonisation::ComputeMicroscopicCrossSection( +G4double G4eIonisation::ComputeRestrictedMeandEdx ( + const G4ParticleDefinition& aParticleType, + G4double KineticEnergy, + const G4Material* material, + G4double DeltaThreshold) +{ + // calculate the dE/dx due to the ionization process (Geant4 internal units) + // Seltzer-Berger formula + // + G4double particleMass = aParticleType.GetPDGMass(); + + G4double ElectronDensity = material->GetElectronDensity(); + G4double Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); + Eexc /= particleMass; G4double Eexcm2 = Eexc*Eexc; + + // for the lowenergy extrapolation + G4double Zeff = material->GetTotNbOfElectPerVolume()/ + material->GetTotNbOfAtomsPerVolume(); + G4double Th = 0.25*sqrt(Zeff)*keV; + G4double Tsav = 0.; + if (KineticEnergy < Th) {Tsav = KineticEnergy; KineticEnergy = Th;} + + G4double tau = KineticEnergy/particleMass; + G4double gamma = tau + 1., gamma2 = gamma*gamma, bg2 = tau*(tau+2.); + G4double beta2 = bg2/gamma2; + + G4double Tmax,d,dEdx; + + // electron + if (&aParticleType==G4Electron::Electron()) + { + Tmax = KineticEnergy/2.; + d = G4std::min(DeltaThreshold, Tmax)/particleMass; + dEdx = log(2.*(tau+2.)/Eexcm2)-1.-beta2 + + log((tau-d)*d)+tau/(tau-d) + + (0.5*d*d+(2.*tau+1.)*log(1.-d/tau))/gamma2; + } + + else //positron + { + Tmax = KineticEnergy; + d = G4std::min(DeltaThreshold, Tmax)/particleMass; + G4double d2=d*d/2., d3=d*d*d/3., d4=d*d*d*d/4.; + G4double y=1./(1.+gamma); + dEdx = log(2.*(tau+2.)/Eexcm2)+log(tau*d) + - beta2*(tau+2.*d-y*(3.*d2+y*(d-d3+y*(d2-tau*d3+d4))))/tau; + } + + //density correction + G4double Cden = material->GetIonisation()->GetCdensity(); + G4double Mden = material->GetIonisation()->GetMdensity(); + G4double Aden = material->GetIonisation()->GetAdensity(); + G4double X0den = material->GetIonisation()->GetX0density(); + G4double X1den = material->GetIonisation()->GetX1density(); + + const G4double twoln10 = 2.*log(10.); + G4double x = log(bg2)/twoln10; + G4double delta; + if (x < X0den) delta = 0.; + else {delta = twoln10*x - Cden; + if (x < X1den) delta += Aden*pow((X1den-x),Mden); + } + + //now you can compute the total ionization loss + dEdx -= delta; + dEdx *= twopi_mc2_rcl2*ElectronDensity/beta2; + if (dEdx <= 0.) dEdx = 0.; + + // low energy ? + const G4double Tl = 0.2*keV; + if (Tsav > 0.) + { + if (Tsav >= Tl) dEdx *= sqrt(KineticEnergy/Tsav); + else dEdx *= sqrt(KineticEnergy*Tsav)/Tl; + } + return dEdx; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4eIonisation::ComputeCrossSectionPerAtom( const G4ParticleDefinition& aParticleType, G4double KineticEnergy, G4double AtomicNumber , G4double DeltaThreshold) { - // calculates the microscopic cross section + // calculates the cross section per atom (Geant4 internal units) //(it is called for elements , AtomicNumber = Z ) - - G4double MaxKineticEnergyTransfer, TotalCrossSection(0.); - ParticleMass = aParticleType.GetPDGMass(); - G4double TotalEnergy = KineticEnergy + ParticleMass; + G4double particleMass = aParticleType.GetPDGMass(); + G4double TotalEnergy = KineticEnergy + particleMass; - G4double betasquare = KineticEnergy*(TotalEnergy+ParticleMass) + G4double betasquare = KineticEnergy*(TotalEnergy+particleMass) /(TotalEnergy*TotalEnergy); - G4double gamma = TotalEnergy/ParticleMass, gamma2 = gamma*gamma; + G4double gamma = TotalEnergy/particleMass, gamma2 = gamma*gamma; G4double x=DeltaThreshold/KineticEnergy, x2 = x*x; + G4double MaxKineticEnergyTransfer; if (&aParticleType==G4Electron::Electron()) - MaxKineticEnergyTransfer = 0.5*KineticEnergy; - else MaxKineticEnergyTransfer = KineticEnergy; - - // now you can calculate the total cross section + MaxKineticEnergyTransfer = 0.5*KineticEnergy; + else MaxKineticEnergyTransfer = KineticEnergy; + // now you can calculate the total cross section + // + G4double TotalCrossSection = 0.; if (MaxKineticEnergyTransfer > DeltaThreshold) { if (&aParticleType==G4Electron::Electron()) //Moller (e-e-) scattering @@ -356,26 +372,26 @@ G4double G4eIonisation::ComputeMicroscopicCrossSection( return TotalCrossSection ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4VParticleChange* G4eIonisation::PostStepDoIt( const G4Track& trackData, - const G4Step& stepData) -{ - aParticleChange.Initialize(trackData) ; - - G4Material* aMaterial = trackData.GetMaterial() ; - const G4DynamicParticle* aParticle = trackData.GetDynamicParticle() ; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - ParticleMass = aParticle->GetDefinition()->GetPDGMass(); +G4VParticleChange* G4eIonisation::PostStepDoIt( const G4Track& trackData, + const G4Step& stepData) +{ + aParticleChange.Initialize(trackData); + + G4Material* aMaterial = trackData.GetMaterial(); + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); + + G4double particleMass = aParticle->GetDefinition()->GetPDGMass(); + G4double Charge = aParticle->GetDefinition()->GetPDGCharge(); G4double KineticEnergy = aParticle->GetKineticEnergy(); - G4double TotalEnergy = KineticEnergy + ParticleMass; - G4double Psquare = KineticEnergy*(TotalEnergy+ParticleMass); + G4double TotalEnergy = KineticEnergy + particleMass; + G4double Psquare = KineticEnergy*(TotalEnergy+particleMass); G4double TotalMomentum = sqrt(Psquare); - //G4double Esquare=TotalEnergy*TotalEnergy; G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection(); - // get kinetic energy cut for the electron - G4double* DeltaCutInKineticEnergy = G4Electron::Electron()->GetCutsInEnergy() ; + // get kinetic energy cut for the electron + G4double* DeltaCutInKineticEnergy = G4Electron::Electron()->GetEnergyCuts() ; G4double DeltaThreshold = DeltaCutInKineticEnergy[aMaterial->GetIndex()]; // some kinematics @@ -385,15 +401,15 @@ G4VParticleChange* G4eIonisation::PostStepDoIt( const G4Track& trackData, // sampling kinetic energy of the delta ray - if (MaxKineticEnergyTransfer <= DeltaThreshold) // pathological case (should not happen, - // there is no change at all) + if (MaxKineticEnergyTransfer <= DeltaThreshold) + // pathological case (should not happen, there is no change at all) return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); // normal case G4double cc,y,y2,c2,b0,b1,b2,b3,b4,x,x1,grej,grejc; - G4double tau = KineticEnergy/ParticleMass; + G4double tau = KineticEnergy/particleMass; G4double gamma = tau+1., gamma2=gamma*gamma; G4double xc = DeltaThreshold/KineticEnergy, xc1=1.-xc; @@ -405,7 +421,7 @@ G4VParticleChange* G4eIonisation::PostStepDoIt( const G4Track& trackData, do { x = xc/(1.-cc*G4UniformRand()); x1 = 1.-x; grej = b2*x*x-b3*x/x1+b1*gamma2/(x1*x1); - } while (G4UniformRand()>grej) ; + } while (G4UniformRand()>grej); } else // Bhabha (e+e-) scattering { @@ -424,10 +440,10 @@ G4VParticleChange* G4eIonisation::PostStepDoIt( const G4Track& trackData, // protection :do not produce a secondary with 0. kinetic energy ! if (DeltaKineticEnergy <= 0.) - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - G4double DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + - 2. * electron_mass_c2 )); + G4double DeltaTotalMomentum = sqrt(DeltaKineticEnergy*(DeltaKineticEnergy + + 2.*electron_mass_c2 )); G4double costheta = DeltaKineticEnergy * (TotalEnergy + electron_mass_c2) /(DeltaTotalMomentum * TotalMomentum); @@ -439,7 +455,7 @@ G4VParticleChange* G4eIonisation::PostStepDoIt( const G4Track& trackData, G4double phi = twopi * G4UniformRand(); G4double sintheta = sqrt((1.+costheta)*(1.-costheta)); - G4double dirx = sintheta * cos(phi), diry = sintheta * sin(phi), dirz = costheta; + G4double dirx = sintheta*cos(phi), diry = sintheta*sin(phi), dirz = costheta; G4ThreeVector DeltaDirection(dirx,diry,dirz); DeltaDirection.rotateUz(ParticleDirection); @@ -456,7 +472,7 @@ G4VParticleChange* G4eIonisation::PostStepDoIt( const G4Track& trackData, // changed energy and momentum of the actual particle G4double finalKineticEnergy = KineticEnergy - DeltaKineticEnergy; - G4double Edep = 0. ; + G4double Edep = 0.; if (finalKineticEnergy > MinKineticEnergy) { @@ -467,41 +483,132 @@ G4VParticleChange* G4eIonisation::PostStepDoIt( const G4Track& trackData, G4double finalPz = TotalMomentum*ParticleDirection.z() - DeltaTotalMomentum*DeltaDirection.z(); G4double finalMomentum = - sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz) ; - finalPx /= finalMomentum ; - finalPy /= finalMomentum ; - finalPz /= finalMomentum ; + sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz); + finalPx /= finalMomentum; + finalPy /= finalMomentum; + finalPz /= finalMomentum; - aParticleChange.SetMomentumChange( finalPx,finalPy,finalPz ); + aParticleChange.SetMomentumChange(finalPx, finalPy, finalPz); } else { - finalKineticEnergy = 0.; - Edep = finalKineticEnergy ; + Edep = finalKineticEnergy; + finalKineticEnergy = 0.; if (Charge < 0.) aParticleChange.SetStatusChange(fStopAndKill); else aParticleChange.SetStatusChange(fStopButAlive); } - aParticleChange.SetEnergyChange( finalKineticEnergy ); + aParticleChange.SetEnergyChange(finalKineticEnergy); aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( theDeltaRay ); - aParticleChange.SetLocalEnergyDeposit (Edep); + aParticleChange.AddSecondary(theDeltaRay); + aParticleChange.SetLocalEnergyDeposit(Edep); return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4bool G4eIonisation::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + if ( !theLossTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4eIonisation::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theLossTable and theMeanFreePathTable + if (theLossTable != 0) { + theLossTable->clearAndDestroy(); + delete theLossTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); + + G4String filename; + + // retreive stopping power table + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + theLossTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theLossTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + + if (particle==G4Electron::Electron()) + { + RecorderOfElectronProcess[CounterOfElectronProcess] = (*this).theLossTable; + CounterOfElectronProcess++; + } + else + { + RecorderOfPositronProcess[CounterOfPositronProcess] = (*this).theLossTable; + CounterOfPositronProcess++; + } + + BuildDEDXTable(*particle); + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4eIonisation::PrintInfoDefinition() { - G4String comments = "delta cross sections from Moller+Bhabha. "; - comments += "Good description from 1 KeV to 100 GeV.\n"; - comments += " delta ray energy sampled from differential Xsection."; + G4String comments = "delta cross sections from Moller+Bhabha. " + "Good description from 1 KeV to 100 GeV.\n" + " delta ray energy sampled from differential Xsection."; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowerBoundLambda,"Energy") + << "\n PhysicsTables from " + << G4BestUnit(LowerBoundLambda,"Energy") << " to " << G4BestUnit(UpperBoundLambda,"Energy") << " in " << NbinLambda << " bins. \n"; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc b/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc index e25244ac7f..a2a3732571 100644 --- a/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc +++ b/source/processes/electromagnetic/standard/src/G4eplusAnnihilation.cc @@ -21,25 +21,31 @@ // ******************************************************************** // // -// $Id: G4eplusAnnihilation.cc,v 1.4.2.1 2001/06/28 19:12:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4eplusAnnihilation.cc,v 1.13 2001/10/01 15:00:29 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // 10-01-97, crossection table + mean free path table, M.Maire // 17-03-97, merge 'in fly' and 'at rest', M.Maire // 23-03-97, protection in BuildPhysicsTable, M.Maire // 31-08-98, new methods SetBining() and PrintInfo() // 22-02-01, postStepDoIt: fStopButAlive instead of kineEnergy == 0. -// 28-05-01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 28-05-01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 13-07-01, DoIt: suppression of production cut for the gamma (mma) +// 06-08-01, new methods Store/Retrieve PhysicsTable (mma) +// 06-08-01, BuildThePhysicsTable() called from constructor (mma) +// 17-09-01, migration of Materials to pure STL (mma) +// 20-09-01, DoIt: fminimalEnergy = 1*eV (mma) +// 01-10-01, come back to BuildPhysicsTable(const G4ParticleDefinition&) // -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4eplusAnnihilation.hh" #include "G4UnitsTable.hh" -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // constructor @@ -47,12 +53,13 @@ G4eplusAnnihilation::G4eplusAnnihilation(const G4String& processName) : G4VRestDiscreteProcess (processName), theCrossSectionTable(NULL), theMeanFreePathTable(NULL), - LowestEnergyLimit ( 10*keV), // initialization - HighestEnergyLimit( 10*TeV), - NumbBinTable(100) - { } + LowestEnergyLimit (10*keV), + HighestEnergyLimit(10*TeV), + NumbBinTable(100), + fminimalEnergy(1*eV) +{} -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... // destructor @@ -69,87 +76,88 @@ G4eplusAnnihilation::~G4eplusAnnihilation() } } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4eplusAnnihilation::SetPhysicsTableBining(G4double lowE, G4double highE, G4int nBins) +void G4eplusAnnihilation::SetPhysicsTableBining( + G4double lowE, G4double highE, G4int nBins) { LowestEnergyLimit = lowE; HighestEnergyLimit = highE; NumbBinTable = nBins; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -void G4eplusAnnihilation::BuildPhysicsTable(const G4ParticleDefinition& PositronType) - -// Build microscopic total cross section tables and mean free path table +void G4eplusAnnihilation::BuildPhysicsTable(const G4ParticleDefinition& ) { - G4double LowEdgeEnergy, Value; - G4PhysicsLogVector* ptrVector; + // Build total cross section and mean free path tables -// Build microscopic cross section tables for the e+e- annihilation + G4double LowEdgeEnergy, Value; + G4PhysicsLogVector* ptrVector; - if (theCrossSectionTable) { - theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable; } + // Build cross section per atom tables for the e+e- annihilation - theCrossSectionTable = new G4PhysicsTable( G4Element::GetNumberOfElements()) ; - const G4ElementTable* theElementTable = G4Element::GetElementTable() ; - G4double AtomicNumber; - size_t J; + if (theCrossSectionTable) { + theCrossSectionTable->clearAndDestroy(); delete theCrossSectionTable;} - for ( J=0 ; J < G4Element::GetNumberOfElements(); J++ ) - { - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, - NumbBinTable ) ; - AtomicNumber = (*theElementTable)(J)->GetZ(); + theCrossSectionTable = new G4PhysicsTable( G4Element::GetNumberOfElements()); + const G4ElementTable* theElementTable = G4Element::GetElementTable() ; + G4double AtomicNumber; + size_t J; + + for ( J=0 ; J < G4Element::GetNumberOfElements(); J++ ) + { + //create physics vector then fill it .... + ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, + NumbBinTable ); + AtomicNumber = (*theElementTable)[J]->GetZ(); - for ( G4int i = 0 ; i < NumbBinTable ; i++ ) - { - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeCrossSectionPerAtom( LowEdgeEnergy, AtomicNumber); - ptrVector->PutValue( i , Value ) ; - } + for ( G4int i = 0 ; i < NumbBinTable ; i++ ) + { + LowEdgeEnergy = ptrVector->GetLowEdgeEnergy(i); + Value = ComputeCrossSectionPerAtom( LowEdgeEnergy, AtomicNumber); + ptrVector->PutValue( i , Value ) ; + } - theCrossSectionTable->insertAt( J , ptrVector ) ; + theCrossSectionTable->insertAt( J , ptrVector ); - } + } -// Build mean free path table for the e+e- annihilation + // Build mean free path table for the e+e- annihilation - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable; } + if (theMeanFreePathTable) { + theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} - theMeanFreePathTable = new G4PhysicsTable( G4Material::GetNumberOfMaterials() ); - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4Material* material; + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4Material* material; - for ( J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) - { - //create physics vector then fill it .... - ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, - NumbBinTable ) ; - material = (*theMaterialTable)(J); + for ( J=0 ; J < G4Material::GetNumberOfMaterials(); J++ ) + { + //create physics vector then fill it .... + ptrVector = new G4PhysicsLogVector(LowestEnergyLimit, HighestEnergyLimit, + NumbBinTable ); + material = (*theMaterialTable)[J]; - for ( G4int i = 0 ; i < NumbBinTable ; i++ ) - { - LowEdgeEnergy = ptrVector->GetLowEdgeEnergy( i ) ; - Value = ComputeMeanFreePath( LowEdgeEnergy, material); - ptrVector->PutValue( i , Value ) ; - } + for ( G4int i = 0 ; i < NumbBinTable ; i++ ) + { + LowEdgeEnergy = ptrVector->GetLowEdgeEnergy(i); + Value = ComputeMeanFreePath( LowEdgeEnergy, material); + ptrVector->PutValue( i , Value ); + } - theMeanFreePathTable->insertAt( J , ptrVector ) ; + theMeanFreePathTable->insertAt( J , ptrVector ); - } + } - PrintInfoDefinition(); + PrintInfoDefinition(); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4double G4eplusAnnihilation::ComputeCrossSectionPerAtom (G4double PositKinEnergy, G4double AtomicNumber) -// Calculates the microscopic cross section of annihilation into two photons +// Calculates the cross section per atom of annihilation into two photons // from the Heilter formula. // GEANT4 internal units. @@ -159,33 +167,32 @@ G4double G4eplusAnnihilation::ComputeCrossSectionPerAtom G4double gama = 1. + PositKinEnergy/electron_mass_c2; G4double gama2 = gama*gama, sqgama2 = sqrt(gama2-1.); - return pi_rcl2*AtomicNumber*((gama2+4*gama+1.)*log(gama+sqgama2) - (gama+3.)*sqgama2) - /((gama2-1.)*(gama+1.)); + return pi_rcl2*AtomicNumber + *((gama2+4*gama+1.)*log(gama+sqgama2) - (gama+3.)*sqgama2) + /((gama2-1.)*(gama+1.)); } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VParticleChange* G4eplusAnnihilation::PostStepDoIt(const G4Track& aTrack, - const G4Step& aStep) + const G4Step& aStep) // // The secondaries Gamma energies are sampled using the Heitler cross section. // -// A modified version of the random number techniques of Butcher & Messel is used -// (Nuc Phys 20(1960),15). +// A modified version of the random number techniques of Butcher & Messel +// is used (Nuc Phys 20(1960),15). // // GEANT4 internal units. // -// Note 1 : The initial electron is assumed free and at rest. +// Note 1: The initial electron is assumed free and at rest. // -// Note 2 : The annihilation processes producing one or more than two photons are -// ignored, as negligible compared to the two photons process. +// Note 2: The annihilation processes producing one or more than two photons are +// ignored, as negligible compared to the two photons process. { aParticleChange.Initialize(aTrack); - G4Material* aMaterial = aTrack.GetMaterial(); - const G4DynamicParticle* aDynamicPositron = aTrack.GetDynamicParticle(); G4double PositKinEnergy = aDynamicPositron->GetKineticEnergy(); G4ParticleMomentum PositDirection = aDynamicPositron->GetMomentumDirection(); @@ -197,8 +204,8 @@ G4VParticleChange* G4eplusAnnihilation::PostStepDoIt(const G4Track& aTrack, if (aTrack.GetTrackStatus() == fStopButAlive) return &aParticleChange; G4double gamam1 = PositKinEnergy/electron_mass_c2; - G4double gama = gamam1+1. , gamap1 = gamam1+2. , sqgrate = sqrt(gamam1/gamap1)/2. , - sqg2m1 = sqrt(gamam1*gamap1); + G4double gama = gamam1+1. , gamap1 = gamam1+2.; + G4double sqgrate = sqrt(gamam1/gamap1)/2. , sqg2m1 = sqrt(gamam1*gamap1); // limits of the energy sampling G4double epsilmin = 0.5 - sqgrate , epsilmax = 0.5 + sqgrate; @@ -207,7 +214,7 @@ G4VParticleChange* G4eplusAnnihilation::PostStepDoIt(const G4Track& aTrack, // // sample the energy rate of the created gammas // - G4double epsil, greject ; + G4double epsil, greject; do { epsil = epsilmin*pow(epsilqot,G4UniformRand()); @@ -218,69 +225,59 @@ G4VParticleChange* G4eplusAnnihilation::PostStepDoIt(const G4Track& aTrack, // scattered Gamma angles. ( Z - axis along the parent positron) // - G4double cost = (epsil*gamap1-1.)/(epsil*sqg2m1) , sint = sqrt((1.+cost)*(1.-cost)); - - - G4double phi = twopi * G4UniformRand() ; + G4double cost = (epsil*gamap1-1.)/(epsil*sqg2m1); + G4double sint = sqrt((1.+cost)*(1.-cost)); + G4double phi = twopi * G4UniformRand(); + G4double dirx = sint*cos(phi) , diry = sint*sin(phi) , dirz = cost; // // kinematic of the created pair // - G4double LocalEnerDeposit = 0. ; - aParticleChange.SetNumberOfSecondaries(2) ; + aParticleChange.SetNumberOfSecondaries(2); + G4double localEnergyDeposit = 0.; G4double TotalAvailableEnergy = PositKinEnergy + 2*electron_mass_c2; G4double Phot1Energy = epsil*TotalAvailableEnergy; - - G4double GammaCut= (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]; - - if (Phot1Energy > GammaCut) - { - G4ThreeVector Phot1Direction ( dirx, diry, dirz ); - Phot1Direction.rotateUz(PositDirection); - - // create G4DynamicParticle object for the particle1 - G4DynamicParticle* aParticle1= new G4DynamicParticle (G4Gamma::Gamma(), + if (Phot1Energy > fminimalEnergy) { + G4ThreeVector Phot1Direction (dirx, diry, dirz); + Phot1Direction.rotateUz(PositDirection); + // create G4DynamicParticle object for the particle1 + G4DynamicParticle* aParticle1= new G4DynamicParticle (G4Gamma::Gamma(), Phot1Direction, Phot1Energy); - aParticleChange.AddSecondary( aParticle1 ) ; - } - else - { LocalEnerDeposit += Phot1Energy; } + aParticleChange.AddSecondary(aParticle1); + } + else localEnergyDeposit += Phot1Energy; - G4double Phot2Energy =(1.-epsil)*TotalAvailableEnergy; - - if (Phot2Energy > GammaCut) - { - G4double Eratio = Phot1Energy/Phot2Energy; - G4double PositP = sqrt(PositKinEnergy*(PositKinEnergy+2.*electron_mass_c2)); - G4ThreeVector Phot2Direction (-dirx*Eratio, -diry*Eratio, - (PositP-dirz*Phot1Energy)/Phot2Energy); - Phot2Direction.rotateUz(PositDirection); - - // create G4DynamicParticle object for the particle2 - G4DynamicParticle* aParticle2= new G4DynamicParticle (G4Gamma::Gamma(), + G4double Phot2Energy =(1.-epsil)*TotalAvailableEnergy; + if (Phot2Energy > fminimalEnergy) { + G4double Eratio= Phot1Energy/Phot2Energy; + G4double PositP= sqrt(PositKinEnergy*(PositKinEnergy+2.*electron_mass_c2)); + G4ThreeVector Phot2Direction (-dirx*Eratio, -diry*Eratio, + (PositP-dirz*Phot1Energy)/Phot2Energy); + Phot2Direction.rotateUz(PositDirection); + // create G4DynamicParticle object for the particle2 + G4DynamicParticle* aParticle2= new G4DynamicParticle (G4Gamma::Gamma(), Phot2Direction, Phot2Energy); - aParticleChange.AddSecondary( aParticle2 ) ; - } - else - { LocalEnerDeposit += Phot2Energy; } - - aParticleChange.SetLocalEnergyDeposit( LocalEnerDeposit ) ; + aParticleChange.AddSecondary(aParticle2); + } + else localEnergyDeposit += Phot2Energy; + + aParticleChange.SetLocalEnergyDeposit(localEnergyDeposit); // // Kill the incident positron // - aParticleChange.SetMomentumChange( 0., 0., 0. ) ; - aParticleChange.SetEnergyChange( 0. ) ; - aParticleChange.SetStatusChange( fStopAndKill ) ; + aParticleChange.SetMomentumChange( 0., 0., 0. ); + aParticleChange.SetEnergyChange(0.); + aParticleChange.SetStatusChange(fStopAndKill); return &aParticleChange; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4VParticleChange* G4eplusAnnihilation::AtRestDoIt(const G4Track& aTrack, const G4Step& aStep) @@ -294,44 +291,112 @@ G4VParticleChange* G4eplusAnnihilation::AtRestDoIt(const G4Track& aTrack, { aParticleChange.Initialize(aTrack); - G4Material* aMaterial = aTrack.GetMaterial(); - aParticleChange.SetNumberOfSecondaries(2) ; + aParticleChange.SetNumberOfSecondaries(2); - if (electron_mass_c2 > (G4Gamma::GetCutsInEnergy())[aMaterial->GetIndex()]) - { - G4double cosTeta = 2*G4UniformRand()-1. , sinTeta = sqrt(1.-cosTeta*cosTeta); - G4double Phi = twopi * G4UniformRand() ; - G4ThreeVector Direction (sinTeta*cos(Phi), sinTeta*sin(Phi), cosTeta); + G4double cosTeta = 2*G4UniformRand()-1. , sinTeta = sqrt(1.-cosTeta*cosTeta); + G4double Phi = twopi * G4UniformRand(); + G4ThreeVector Direction (sinTeta*cos(Phi), sinTeta*sin(Phi), cosTeta); - aParticleChange.AddSecondary( new G4DynamicParticle (G4Gamma::Gamma(), - Direction, electron_mass_c2) ); - aParticleChange.AddSecondary( new G4DynamicParticle (G4Gamma::Gamma(), - -Direction, electron_mass_c2) ); + aParticleChange.AddSecondary( new G4DynamicParticle (G4Gamma::Gamma(), + Direction, electron_mass_c2) ); + aParticleChange.AddSecondary( new G4DynamicParticle (G4Gamma::Gamma(), + -Direction, electron_mass_c2) ); - aParticleChange.SetLocalEnergyDeposit(0.); - } - else - { aParticleChange.SetLocalEnergyDeposit( 2*electron_mass_c2 ); } + aParticleChange.SetLocalEnergyDeposit(0.); // Kill the incident positron // - aParticleChange.SetStatusChange( fStopAndKill ); + aParticleChange.SetStatusChange(fStopAndKill); return &aParticleChange; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4eplusAnnihilation::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + + // store cross section table + filename = GetPhysicsTableFileName(particle,directory,"CrossSection",ascii); + if ( !theCrossSectionTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theCrossSectionTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4eplusAnnihilation::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theCrossSectionTable and theMeanFreePathTable + if (theCrossSectionTable != 0) { + theCrossSectionTable->clearAndDestroy(); + delete theCrossSectionTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + + G4String filename; + + // retreive cross section table + filename = GetPhysicsTableFileName(particle,directory,"CrossSection",ascii); + theCrossSectionTable = new G4PhysicsTable(G4Element::GetNumberOfElements()); + if ( !theCrossSectionTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theCrossSectionTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4eplusAnnihilation::PrintInfoDefinition() { - G4String comments = "Total cross section from Heilter formula (annihilation into 2 photons).\n"; + G4String comments = "Total cross section from Heilter formula" + "(annihilation into 2 photons).\n"; comments += " gamma energies sampled according Heitler"; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestEnergyLimit,"Energy") + << "\n PhysicsTables from " + << G4BestUnit(LowestEnergyLimit ,"Energy") << " to " << G4BestUnit(HighestEnergyLimit,"Energy") << " in " << NumbBinTable << " bins. \n"; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/standard/src/G4hIonisation.cc b/source/processes/electromagnetic/standard/src/G4hIonisation.cc index b253e5f904..8725568f59 100644 --- a/source/processes/electromagnetic/standard/src/G4hIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4hIonisation.cc @@ -21,581 +21,607 @@ // ******************************************************************** // // -// $Id: G4hIonisation.cc,v 1.13.2.2 2001/06/28 20:19:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4hIonisation.cc,v 1.23 2001/11/09 13:59:47 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------------------------------------------------------- -// GEANT 4 class implementation file +//---------------- G4hIonisation physics process ------------------------------- +// by Laszlo Urban, 30 May 1997 +//------------------------------------------------------------------------------ // -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ---------- G4hIonisation physics process ----------- -// by Laszlo Urban, 30 May 1997 -// ************************************************************** -// It is the first implementation of the NEW IONISATION PROCESS. -// It calculates the ionisation of charged hadrons. -// ************************************************************** // corrected by L.Urban on 24/09/97 // several bugs corrected by L.Urban on 13/01/98 -// 07-04-98: remove 'tracking cut' of the ionizing particle, MMa -// 22/10/98: cleanup L.Urban -// 02/02/99: bugs fixed , L.Urban -// 29/07/99: correction in BuildLossTable for low energy, L.Urban -// 10/02/00 modifications , new e.m. structure, L.Urban -// 10/08/00 : V.Ivanchenko change BuildLambdaTable, in order to -// simulate energy losses of ions; correction to -// cross section for particles with spin 1 is inserted -// as well -// 28/05/01 V.Ivanchenko minor changes to provide ANSI -wall compilation -// -------------------------------------------------------------- - +// 07-04-98 remove 'tracking cut' of the ionizing particle, mma +// 22-10-98 cleanup L.Urban +// 02-02-99 bugs fixed , L.Urban +// 29-07-99 correction in BuildLossTable for low energy, L.Urban +// 10-02-00 modifications , new e.m. structure, L.Urban +// 10-08-00 V.Ivanchenko change BuildLambdaTable, in order to +// simulate energy losses of ions; correction to +// cross section for particles with spin 1 is inserted as well +// 28-05-01 V.Ivanchenko minor changes to provide ANSI -wall compilation +// 10-08-01 new methods Store/Retrieve PhysicsTable (mma) +// 14-08-01 new function ComputeRestrictedMeandEdx() + 'cleanup' (mma) +// 29-08-01 PostStepDoIt: correction for spin 1/2 (instead of 1) (mma) +// 17-09-01 migration of Materials to pure STL (mma) +// 25-09-01 completion of RetrievePhysicsTable() (mma) +// 29-10-01 all static functions no more inlined +// 08-11-01 Charge renamed zparticle; added to the dedx +// +//------------------------------------------------------------------------------ + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4hIonisation.hh" #include "G4UnitsTable.hh" -G4double G4hIonisation::LowerBoundLambda = 1.*keV ; -G4double G4hIonisation::UpperBoundLambda = 100.*TeV ; -G4int G4hIonisation::NbinLambda = 100 ; +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4double G4hIonisation::Tmincut = 1.*keV ; +G4double G4hIonisation::LowerBoundLambda = 1.*keV; +G4double G4hIonisation::UpperBoundLambda = 100.*TeV; +G4int G4hIonisation::NbinLambda = 100; -// constructor and destructor +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4hIonisation::G4hIonisation(const G4String& processName) : G4VhEnergyLoss(processName), theMeanFreePathTable(0), - theElectron ( G4Electron::Electron()), - theProton (G4Proton::Proton()), - theAntiProton (G4AntiProton::AntiProton()) + Tmincut(1*keV) { } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4hIonisation::~G4hIonisation() { - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } + if (theMeanFreePathTable) { + theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} } - -// methods............................................. +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4hIonisation::SetLowerBoundLambda(G4double val) + {LowerBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4hIonisation::SetUpperBoundLambda(G4double val) + {UpperBoundLambda = val;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +void G4hIonisation::SetNbinLambda(G4int n) + {NbinLambda = n;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4hIonisation::GetLowerBoundLambda() + {return LowerBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4hIonisation::GetUpperBoundLambda() + {return UpperBoundLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4int G4hIonisation::GetNbinLambda() + {return NbinLambda;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4hIonisation::BuildPhysicsTable(const G4ParticleDefinition& aParticleType) -// just call BuildLossTable+BuildLambdaTable +// just call BuildLossTable+BuildLambdaTable { - // get bining from EnergyLoss - LowestKineticEnergy = GetLowerBoundEloss() ; - HighestKineticEnergy = GetUpperBoundEloss() ; - TotBin = GetNbinEloss() ; + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); + G4double* ElectronCutInRange = G4Electron::Electron()->GetLengthCuts(); - ParticleMass = aParticleType.GetPDGMass() ; - - Charge = (aParticleType.GetPDGCharge())/eplus; - - G4double ElectronCutInRange = G4Electron::Electron()->GetCuts(); - - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; - - if(Charge>0.) - { - if( (ptableElectronCutInRange != ElectronCutInRange) + if (aParticleType.GetPDGCharge() > 0.) + { + if( !EqualCutVectors(ptableElectronCutInRange,ElectronCutInRange) || (theDEDXpTable == NULL)) { - BuildLossTable(aParticleType) ; - RecorderOfpProcess[CounterOfpProcess] = theLossTable ; + BuildLossTable(aParticleType); + RecorderOfpProcess[CounterOfpProcess] = theLossTable; CounterOfpProcess++; } - } + } else - { - if( (pbartableElectronCutInRange != ElectronCutInRange) + { + if( !EqualCutVectors(pbartableElectronCutInRange,ElectronCutInRange) || (theDEDXpbarTable == NULL)) { BuildLossTable(aParticleType) ; - RecorderOfpbarProcess[CounterOfpbarProcess] = theLossTable ; + RecorderOfpbarProcess[CounterOfpbarProcess] = theLossTable; CounterOfpbarProcess++; } - } + } - BuildLambdaTable(aParticleType) ; + BuildLambdaTable(aParticleType); - BuildDEDXTable(aParticleType) ; - - if(&aParticleType == G4Proton::Proton()) - PrintInfoDefinition(); + BuildDEDXTable(aParticleType); + if (&aParticleType == G4Proton::Proton()) PrintInfoDefinition(); } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4hIonisation::BuildLossTable(const G4ParticleDefinition& aParticleType) { - // cuts for electron .................... - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; + // Build tables of dE/dx due to the ionization process + // the tables are built for *MATERIALS* - G4double LowEdgeEnergy , ionloss ; - G4double deltaloss ; - G4double RateMass ; - //G4bool isOutRange ; - static const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - const G4double twoln10 = 2.*log(10.) ; - const G4double Factor = twopi_mc2_rcl2 ; - const G4double bg2lim = 0.0169 , taulim = 8.4146e-3 ; + // create table + // + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - RateMass = electron_mass_c2/proton_mass_c2 ; - - // create table - - G4int numOfMaterials = theMaterialTable->length(); - - if ( theLossTable) { - theLossTable->clearAndDestroy(); - delete theLossTable; - } - theLossTable = new G4PhysicsTable(numOfMaterials); - - // loop for materials - - for (G4int J=0; JclearAndDestroy(); delete theLossTable;} + theLossTable = new G4PhysicsTable(numOfMaterials); + + // get delta cut in energy + G4double* DeltaCutInKinEnergy = (G4Electron::Electron())->GetEnergyCuts(); + + // loop for materials + // + for (G4int J=0; JGetElectronDensity(); - Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); - Eexc2 = Eexc*Eexc ; - Cden = material->GetIonisation()->GetCdensity(); - Mden = material->GetIonisation()->GetMdensity(); - Aden = material->GetIonisation()->GetAdensity(); - X0den = material->GetIonisation()->GetX0density(); - X1den = material->GetIonisation()->GetX1density(); - taul = material->GetIonisation()->GetTaul() ; - ShellCorrectionVector = material->GetIonisation()-> - GetShellCorrectionVector(); - - // get elements in the actual material, - // they are needed for the low energy part .... - - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector= - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements= - material->GetNumberOfElements() ; + const G4Material* material= (*theMaterialTable)[J]; - // get electron cut in kin. energy for the material + // get electron cut in kinetic energy for the material + G4double DeltaThreshold = G4std::max(DeltaCutInKinEnergy[J],Tmincut); - DeltaCutInKineticEnergyNow = G4std::max(DeltaCutInKineticEnergy[J],Tmincut) ; - - // some local variables ------------------- - G4double tau,Tmax,gamma,bg2,beta2,rcut,delta,x,sh ; - - // now comes the loop for the kinetic energy values***************** - - for (G4int i = 0 ; i < TotBin ; i++) + // now comes the loop for the kinetic energy values + // + for (G4int i = 0 ; i < TotBin ; i++) { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; - tau = LowEdgeEnergy/proton_mass_c2 ; - - gamma = tau +1. ; - bg2 = tau*(tau+2.) ; - beta2 = bg2/(gamma*gamma) ; - Tmax = 2.*electron_mass_c2*bg2 - /(1.+2.*gamma*RateMass+RateMass*RateMass) ; - - if ( tau < taul ) - // low energy part , parametrized energy loss formulae - { - ionloss = 0. ; - deltaloss = 0. ; - - // loop for the elements in the material - for (G4int iel=0; ielGetIonisation()->GetTau0()) - ionloss += theAtomicNumDensityVector[iel] - *( element->GetIonisation()->GetAlow()*sqrt(tau) - +element->GetIonisation()->GetBlow()*tau) ; - else - ionloss += theAtomicNumDensityVector[iel] - * element->GetIonisation()->GetClow()/sqrt(tau) ; - } - if ( DeltaCutInKineticEnergyNow < Tmax) - { - deltaloss = log(Tmax/DeltaCutInKineticEnergyNow)- - beta2*(1.-DeltaCutInKineticEnergyNow/Tmax) ; - if(aParticleType.GetPDGSpin() == 0.5) - deltaloss += 0.25*(Tmax-DeltaCutInKineticEnergyNow)* - (Tmax-DeltaCutInKineticEnergyNow)/ - (LowEdgeEnergy*LowEdgeEnergy+proton_mass_c2*proton_mass_c2) ; - deltaloss *= Factor*ElectronDensity/beta2 ; - } - ionloss -= deltaloss ; - } - else - // high energy part , Bethe-Bloch formula - { - if ( DeltaCutInKineticEnergyNow < Tmax) - rcut = DeltaCutInKineticEnergyNow/Tmax ; - else - rcut = 1.; - - ionloss = log(2.*electron_mass_c2*bg2*Tmax/Eexc2) - +log(rcut)-(1.+rcut)*beta2 ; - - // density correction - - x = log(bg2)/twoln10 ; - if ( x < X0den ) - delta = 0. ; - else - { - delta = twoln10*x - Cden ; - if ( x < X1den ) - delta += Aden*pow((X1den-x),Mden) ; - } - - // shell correction - - if ( bg2 > bg2lim ) { - sh = 0. ; - x = 1. ; - for (G4int k=0; k<=2; k++) { - x *= bg2 ; - sh += ShellCorrectionVector[k]/x; - } - } - else { - sh = 0. ; - x = 1. ; - for (G4int k=0; k<=2; k++) { - x *= bg2lim ; - sh += ShellCorrectionVector[k]/x; - } - sh *= log(tau/taul)/log(taulim/taul) ; - } - - // now you can compute the total ionization loss - - ionloss -= delta + sh ; - ionloss *= Factor*ElectronDensity/beta2 ; - - } - if ( ionloss <= 0.) - ionloss = 0. ; - - aVector->PutValue(i,ionloss) ; - + G4double dEdx = ComputeRestrictedMeandEdx(aParticleType, + aVector->GetLowEdgeEnergy(i), + material, + DeltaThreshold); + aVector->PutValue(i,dEdx); } - theLossTable->insert(aVector); + theLossTable->insert(aVector); } - } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4hIonisation::BuildLambdaTable(const G4ParticleDefinition& aParticleType) { - // Build mean free path tables for the delta ray production process - // tables are built for MATERIALS - - G4double chargeSquare = Charge*Charge ; - G4double LowEdgeEnergy , Value ,sigma ; - //G4bool isOutRange ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - - //create table - - G4int numOfMaterials = theMaterialTable->length(); - - if (theMeanFreePathTable) { - theMeanFreePathTable->clearAndDestroy(); - delete theMeanFreePathTable; - } - - theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); - - // get electron and particle cuts in kinetic energy - - DeltaCutInKineticEnergy = theElectron->GetCutsInEnergy() ; + // Build mean free path tables for the delta ray production process + // tables are built for MATERIALS - // loop for materials + //create table + // + + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - for (G4int J=0 ; J < numOfMaterials; J++) - { - //create physics vector then fill it .... + if (theMeanFreePathTable) + {theMeanFreePathTable->clearAndDestroy(); delete theMeanFreePathTable;} - G4PhysicsLogVector* aVector = new G4PhysicsLogVector( + theMeanFreePathTable = new G4PhysicsTable(numOfMaterials); + + // get electron cut in kinetic energy + G4double* DeltaCutInKinEnergy = (G4Electron::Electron())->GetEnergyCuts() ; + + // loop for materials + + for (G4int J=0 ; J < numOfMaterials; J++) + { + //create physics vector then fill it .... + G4PhysicsLogVector* aVector = new G4PhysicsLogVector( LowerBoundLambda,UpperBoundLambda,NbinLambda); - // compute the (macroscopic) cross section first + // compute the (macroscopic) cross section first - const G4Material* material= (*theMaterialTable)[J]; - - const G4ElementVector* theElementVector= - material->GetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector(); - const G4int NumberOfElements= - material->GetNumberOfElements() ; + const G4Material* material= (*theMaterialTable)[J]; + const G4ElementVector* theElementVector = material->GetElementVector(); + const G4double* NbOfAtomsPerVolume = material->GetVecNbOfAtomsPerVolume(); + G4int NumberOfElements = material->GetNumberOfElements(); - // get the electron kinetic energy cut for the actual material, - // it will be used in ComputeMicroscopicCrossSection - // ( it is the SAME for ALL the ELEMENTS in THIS MATERIAL ) - // ------------------------------------------------------ + // get the electron kinetic energy cut for the actual material, + // it will be used in ComputeCrossSectionPerAtom + // ( --> it will be the same for all the elements in this material) + G4double DeltaThreshold =G4std::max(DeltaCutInKinEnergy[J],Tmincut); - DeltaCutInKineticEnergyNow =G4std::max(DeltaCutInKineticEnergy[J],Tmincut) ; - - - for ( G4int i = 0 ; i < NbinLambda ; i++ ) + for ( G4int i = 0 ; i < NbinLambda ; i++ ) { - LowEdgeEnergy = aVector->GetLowEdgeEnergy(i) ; + G4double LowEdgeEnergy = aVector->GetLowEdgeEnergy(i); + G4double sigma = 0.; + for (G4int iel=0; ielGetZ(), + DeltaThreshold); + } - sigma = 0. ; - - for (G4int iel=0; ielGetZ() ) ; - } - - // mean free path = 1./macroscopic cross section - - Value = sigma<=0 ? DBL_MAX : 1./sigma ; - - aVector->PutValue(i, Value) ; + // mean free path = 1./macroscopic cross section + G4double Value = sigma > DBL_MIN ? 1./sigma : DBL_MAX; + aVector->PutValue(i, Value) ; } - - - theMeanFreePathTable->insert(aVector); - } + theMeanFreePathTable->insert(aVector); + } } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -G4double G4hIonisation::ComputeMicroscopicCrossSection( +G4double G4hIonisation::ComputeRestrictedMeandEdx ( const G4ParticleDefinition& aParticleType, G4double KineticEnergy, - G4double AtomicNumber) + const G4Material* material, + G4double DeltaThreshold) { - //****************************************************************** - // cross section formula is OK for spin=0 and 1/2 only ! - // ***************************************************************** + // calculate the dE/dx due to the ionization process (Geant4 internal units) + // Bethe-Bloch formula + // + G4double particleMass = aParticleType.GetPDGMass(); + G4double particleZ = aParticleType.GetPDGCharge()/eplus; + G4double zsquare = particleZ*particleZ; + + G4double ElectronDensity = material->GetElectronDensity(); + G4double Eexc = material->GetIonisation()->GetMeanExcitationEnergy(); + G4double Eexc2 = Eexc*Eexc; + + G4double tau = KineticEnergy/particleMass; + G4double gamma = tau + 1., bg2 = tau*(tau+2.), beta2 = bg2/(gamma*gamma); + G4double RateMass = electron_mass_c2/particleMass; + G4double Tmax=2.*electron_mass_c2*bg2/(1.+2.*gamma*RateMass+RateMass*RateMass); - // calculates the microscopic cross section in GEANT4 internal units - // ( it is called for elements , AtomicNumber = Z ) + G4double taul = material->GetIonisation()->GetTaul(); - G4double TotalEnergy, - betasquare, - MaxKineticEnergyTransfer,TotalCrossSection,tempvar; + G4double dEdx = 0.; + // + // high energy part , Bethe-Bloch formula + // + if (tau > taul) + { + G4double rcut = G4std::min(DeltaThreshold/Tmax, 1.); + dEdx = log(2.*electron_mass_c2*bg2*Tmax/Eexc2) + +log(rcut)-(1.+rcut)*beta2; + + //density correction + G4double Cden = material->GetIonisation()->GetCdensity(); + G4double Mden = material->GetIonisation()->GetMdensity(); + G4double Aden = material->GetIonisation()->GetAdensity(); + G4double X0den = material->GetIonisation()->GetX0density(); + G4double X1den = material->GetIonisation()->GetX1density(); + + const G4double twoln10 = 2.*log(10.); + G4double x = log(bg2)/twoln10; + G4double delta; + if (x < X0den) delta = 0.; + else {delta = twoln10*x - Cden; + if (x < X1den) delta += Aden*pow((X1den-x),Mden); + } - // get particle data ................................... + // shell correction + G4double* ShellCorrectionVector = material->GetIonisation()-> + GetShellCorrectionVector(); + const G4double bg2lim = 0.0169, taulim = 8.4146e-3; + G4double sh = 0., xs = 1.; + if (bg2 > bg2lim) for (G4int k=0; k<3; k++) + {xs *= bg2; sh += ShellCorrectionVector[k]/xs;} + else { for (G4int k=0; k<3; k++) + {xs *= bg2lim; sh += ShellCorrectionVector[k]/xs;} + sh *= log(tau/taul)/log(taulim/taul); + } - TotalEnergy=KineticEnergy + ParticleMass; + // now you can compute the total ionization loss + dEdx -= (delta + sh); + dEdx *= twopi_mc2_rcl2*ElectronDensity*zsquare/beta2; + if (dEdx < 0.) dEdx = 0.; + } + // + // low energy part , parametrized energy loss formulae + // + if (tau <= taul) + { + // get elements in the actual material, + const G4ElementVector* theElementVector = material->GetElementVector(); + const G4double* NbOfAtomsPerVolume=material->GetVecNbOfAtomsPerVolume(); + G4int NumberOfElements = material->GetNumberOfElements(); + + // loop for the elements in the material + dEdx = 0.; + for (G4int iel=0; ielGetIonisation()->GetTau0()) + dEdx += NbOfAtomsPerVolume[iel] + *(element->GetIonisation()->GetAlow()*sqrt(tau) + + element->GetIonisation()->GetBlow()*tau); + else + dEdx += NbOfAtomsPerVolume[iel] + * element->GetIonisation()->GetClow()/sqrt(tau); + } + G4double deltaloss = 0.; + if (DeltaThreshold < Tmax) + { + deltaloss = log(Tmax/DeltaThreshold)- + beta2*(1.-DeltaThreshold/Tmax) ; + if (aParticleType.GetPDGSpin() == 0.5) + deltaloss += 0.25*(Tmax-DeltaThreshold)*(Tmax-DeltaThreshold)/ + (KineticEnergy*KineticEnergy+proton_mass_c2*proton_mass_c2); + deltaloss *= twopi_mc2_rcl2*ElectronDensity*zsquare/beta2; + } + dEdx -= deltaloss; + if (dEdx < 0.) dEdx = 0.; + } + return dEdx; +} - // some kinematics...................... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - betasquare = KineticEnergy*(TotalEnergy+ParticleMass) - /(TotalEnergy*TotalEnergy); - tempvar = ParticleMass+electron_mass_c2; - MaxKineticEnergyTransfer = 2.*electron_mass_c2*KineticEnergy - *(TotalEnergy+ParticleMass) +G4double G4hIonisation::ComputeCrossSectionPerAtom( + const G4ParticleDefinition& aParticleType, + G4double KineticEnergy, + G4double AtomicNumber, + G4double DeltaThreshold) +{ + // calculates the totalcross section per atom in GEANT4 internal units + // ( it is called for elements , AtomicNumber = Z ) + // + // nb: cross section formula is OK for spin=0 and 1/2 only ! + + G4double particleMass = aParticleType.GetPDGMass(); + G4double particleZ = aParticleType.GetPDGCharge()/eplus; + G4double zparticle2 = particleZ*particleZ; + + G4double TotalEnergy = KineticEnergy + particleMass; + + G4double betasquare = KineticEnergy*(TotalEnergy+particleMass) + /(TotalEnergy*TotalEnergy); + G4double tempvar = particleMass+electron_mass_c2; + G4double MaxKineticEnergyTransfer = 2.*electron_mass_c2*KineticEnergy + *(TotalEnergy+particleMass) /(tempvar*tempvar+2.*electron_mass_c2*KineticEnergy); - // now you can calculate the total cross section ------------------ + G4double TotalCrossSection = 0.; + if (MaxKineticEnergyTransfer > DeltaThreshold) + { + tempvar = DeltaThreshold/MaxKineticEnergyTransfer; + TotalCrossSection = (1.-tempvar*(1.-betasquare*log(tempvar))) + /DeltaThreshold; - if( MaxKineticEnergyTransfer > DeltaCutInKineticEnergyNow ) - { - tempvar=DeltaCutInKineticEnergyNow/MaxKineticEnergyTransfer; - TotalCrossSection = (1.-tempvar*(1.-betasquare*log(tempvar))) - /DeltaCutInKineticEnergyNow; - - G4double spin = aParticleType.GetPDGSpin() ; - - // +term for spin=1/2 particle - if(0.5 == spin) - { - TotalCrossSection += 0.5 - *(MaxKineticEnergyTransfer-DeltaCutInKineticEnergyNow) + G4double spin = aParticleType.GetPDGSpin(); + if (spin == 0.5) TotalCrossSection += 0.5 + *(MaxKineticEnergyTransfer-DeltaThreshold) /(TotalEnergy*TotalEnergy); - - // +term for spin=1 particle - } else if( 0.9 < spin ) - { - TotalCrossSection += - -log(tempvar)/(3.0*DeltaCutInKineticEnergyNow) + - (MaxKineticEnergyTransfer - DeltaCutInKineticEnergyNow) * - ( (5.0+ 1.0/tempvar)*0.25 / (TotalEnergy*TotalEnergy) - - betasquare / - (MaxKineticEnergyTransfer * DeltaCutInKineticEnergyNow) - ) / 3.0 ; - } - TotalCrossSection = twopi_mc2_rcl2 * AtomicNumber - *TotalCrossSection/betasquare; - } - else - TotalCrossSection= 0. ; - - return TotalCrossSection ; -} - - - -G4VParticleChange* G4hIonisation::PostStepDoIt( - const G4Track& trackData, - const G4Step& stepData) -{ - // Units are expressed in GEANT4 internal units. - - const G4DynamicParticle* aParticle ; - G4Material* aMaterial; - G4double KineticEnergy,TotalEnergy,TotalMomentum, - betasquare,MaxKineticEnergyTransfer, - DeltaKineticEnergy,DeltaTotalMomentum,costheta,sintheta,phi, - dirx,diry,dirz,finalKineticEnergy,finalPx,finalPy,finalPz, - x,xc,te2,grej,Psquare,Esquare,summass,rate,grejc,finalMomentum ; - - aParticleChange.Initialize(trackData) ; - aMaterial = trackData.GetMaterial() ; - - aParticle = trackData.GetDynamicParticle() ; - - ParticleMass=aParticle->GetDefinition()->GetPDGMass(); - KineticEnergy=aParticle->GetKineticEnergy(); - TotalEnergy=KineticEnergy + ParticleMass ; - Psquare=KineticEnergy*(TotalEnergy+ParticleMass) ; - Esquare=TotalEnergy*TotalEnergy ; - summass = ParticleMass + electron_mass_c2 ; - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection() ; - - // get kinetic energy cut for the electron.... - DeltaCutInKineticEnergyNow = - G4std::max(DeltaCutInKineticEnergy[aMaterial->GetIndex()],Tmincut); - - // some kinematics...................... - - betasquare=Psquare/Esquare ; - MaxKineticEnergyTransfer = 2.*electron_mass_c2*Psquare - /(summass*summass+2.*electron_mass_c2*KineticEnergy); - - // sampling kinetic energy of the delta ray - - if( MaxKineticEnergyTransfer <= DeltaCutInKineticEnergyNow ) - { - // pathological case (it should not happen , - // there is no change at all)..... - - // return &aParticleChange; - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - } - else - { - // normal case ...................................... - xc=DeltaCutInKineticEnergyNow/MaxKineticEnergyTransfer ; - rate=MaxKineticEnergyTransfer/TotalEnergy ; - - if(aParticle->GetDefinition()->GetPDGSpin() == 1) - te2=0.5*rate*rate ; - else - te2=0. ; - - // sampling follows ... - grejc=1.-betasquare*xc+te2*xc*xc ; - - do { - x=xc/(1.-(1.-xc)*G4UniformRand()); - grej=(1.-x*(betasquare-x*te2))/grejc ; - } while( G4UniformRand()>grej ); + if (spin == 1.) TotalCrossSection += + -log(tempvar)/(3.0*DeltaThreshold) + + (MaxKineticEnergyTransfer - DeltaThreshold) * + ((5.0+ 1.0/tempvar)*0.25 / (TotalEnergy*TotalEnergy) - + betasquare / + (MaxKineticEnergyTransfer * DeltaThreshold)) / 3.0; + + TotalCrossSection *= twopi_mc2_rcl2*AtomicNumber*zparticle2/betasquare; } - - DeltaKineticEnergy = x * MaxKineticEnergyTransfer ; - - if(DeltaKineticEnergy <= 0.) - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); - - DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + - 2. * electron_mass_c2 )) ; - TotalMomentum = sqrt(Psquare) ; - costheta = DeltaKineticEnergy * (TotalEnergy + electron_mass_c2) - /(DeltaTotalMomentum * TotalMomentum) ; - - // protection against costheta > 1 or < -1 --------------- - if ( costheta < -1. ) - costheta = -1. ; - if ( costheta > +1. ) - costheta = +1. ; - - // direction of the delta electron ........ - phi = twopi * G4UniformRand() ; - sintheta = sqrt((1.+costheta)*(1.-costheta)); - dirx = sintheta * cos(phi) ; - diry = sintheta * sin(phi) ; - dirz = costheta ; - - G4ThreeVector DeltaDirection(dirx,diry,dirz) ; - DeltaDirection.rotateUz(ParticleDirection) ; - - // create G4DynamicParticle object for delta ray - G4DynamicParticle *theDeltaRay = new G4DynamicParticle; - theDeltaRay->SetKineticEnergy( DeltaKineticEnergy ); - theDeltaRay->SetMomentumDirection( - DeltaDirection.x(),DeltaDirection.y(),DeltaDirection.z()); - theDeltaRay->SetDefinition(G4Electron::Electron()); - - // fill aParticleChange - finalKineticEnergy = KineticEnergy - DeltaKineticEnergy ; - G4double Edep = 0 ; - - if (finalKineticEnergy > MinKineticEnergy) - { - finalPx = TotalMomentum*ParticleDirection.x() - - DeltaTotalMomentum*DeltaDirection.x(); - finalPy = TotalMomentum*ParticleDirection.y() - - DeltaTotalMomentum*DeltaDirection.y(); - finalPz = TotalMomentum*ParticleDirection.z() - - DeltaTotalMomentum*DeltaDirection.z(); - finalMomentum = - sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz) ; - finalPx /= finalMomentum ; - finalPy /= finalMomentum ; - finalPz /= finalMomentum ; - - aParticleChange.SetMomentumChange( finalPx,finalPy,finalPz ); - } - else - { - finalKineticEnergy = 0. ; - Edep = finalKineticEnergy ; - if (aParticle->GetDefinition()->GetParticleName() == "proton") - aParticleChange.SetStatusChange(fStopAndKill); - else aParticleChange.SetStatusChange(fStopButAlive); - } - - aParticleChange.SetEnergyChange( finalKineticEnergy ); - aParticleChange.SetNumberOfSecondaries(1); - aParticleChange.AddSecondary( theDeltaRay ); - aParticleChange.SetLocalEnergyDeposit (Edep); - - //ResetNumberOfInteractionLengthLeft(); - return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + return TotalCrossSection; } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4VParticleChange* G4hIonisation::PostStepDoIt(const G4Track& trackData, + const G4Step& stepData) +{ + aParticleChange.Initialize(trackData); + + G4Material* aMaterial = trackData.GetMaterial(); + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); + + G4double particleMass = aParticle->GetDefinition()->GetPDGMass(); + G4double KineticEnergy = aParticle->GetKineticEnergy(); + G4double TotalEnergy = KineticEnergy + particleMass; + G4double Psquare = KineticEnergy*(TotalEnergy+particleMass); + G4double Esquare = TotalEnergy*TotalEnergy; + G4double betasquare=Psquare/Esquare; + G4double summass = particleMass + electron_mass_c2; + G4double MaxKineticEnergyTransfer = 2.*electron_mass_c2*Psquare + /(summass*summass+2.*electron_mass_c2*KineticEnergy); + G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection(); + + // get electron cut in kinetic energy + G4double* DeltaCutInKinEnergy = (G4Electron::Electron())->GetEnergyCuts(); + G4double DeltaThreshold = + G4std::max(DeltaCutInKinEnergy[aMaterial->GetIndex()],Tmincut); + + // sampling kinetic energy of the delta ray + // + if (MaxKineticEnergyTransfer <= DeltaThreshold) + // pathological case (it should not happen, there is no change at all) + return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + + // normal case + G4double xc = DeltaThreshold/MaxKineticEnergyTransfer; + G4double rate = MaxKineticEnergyTransfer/TotalEnergy; + G4double te2 = 0.; + if (aParticle->GetDefinition()->GetPDGSpin() == 0.5) te2=0.5*rate*rate; + + // sampling follows ... + G4double x,grej; + G4double grejc=1.-betasquare*xc+te2*xc*xc; + do { x=xc/(1.-(1.-xc)*G4UniformRand()); + grej=(1.-x*(betasquare-x*te2))/grejc; + } while(G4UniformRand() > grej); + + G4double DeltaKineticEnergy = x * MaxKineticEnergyTransfer; + + if (DeltaKineticEnergy <= 0.) + return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); + + G4double DeltaTotalMomentum = sqrt(DeltaKineticEnergy * (DeltaKineticEnergy + + 2. * electron_mass_c2 )); + G4double TotalMomentum = sqrt(Psquare); + G4double costheta = DeltaKineticEnergy * (TotalEnergy + electron_mass_c2) + /(DeltaTotalMomentum * TotalMomentum); + + if (costheta < -1.) costheta = -1.; + if (costheta > +1.) costheta = +1.; + + // direction of the delta electron + // + G4double phi = twopi*G4UniformRand(); + G4double sintheta = sqrt((1.+costheta)*(1.-costheta)); + G4double dirx = sintheta*cos(phi), diry = sintheta*sin(phi), dirz = costheta; + + G4ThreeVector DeltaDirection(dirx,diry,dirz); + DeltaDirection.rotateUz(ParticleDirection); + + // create G4DynamicParticle object for delta ray + // + G4DynamicParticle *theDeltaRay = new G4DynamicParticle; + theDeltaRay->SetKineticEnergy( DeltaKineticEnergy ); + theDeltaRay->SetMomentumDirection( + DeltaDirection.x(),DeltaDirection.y(),DeltaDirection.z()); + theDeltaRay->SetDefinition(G4Electron::Electron()); + + // fill aParticleChange + // + G4double finalKineticEnergy = KineticEnergy - DeltaKineticEnergy; + G4double Edep = 0; + + if (finalKineticEnergy > MinKineticEnergy) + { + G4double finalPx = TotalMomentum*ParticleDirection.x() + - DeltaTotalMomentum*DeltaDirection.x(); + G4double finalPy = TotalMomentum*ParticleDirection.y() + - DeltaTotalMomentum*DeltaDirection.y(); + G4double finalPz = TotalMomentum*ParticleDirection.z() + - DeltaTotalMomentum*DeltaDirection.z(); + G4double finalMomentum = + sqrt(finalPx*finalPx+finalPy*finalPy+finalPz*finalPz); + finalPx /= finalMomentum; + finalPy /= finalMomentum; + finalPz /= finalMomentum; + + aParticleChange.SetMomentumChange( finalPx,finalPy,finalPz ); + } + else + { + Edep = finalKineticEnergy; + finalKineticEnergy = 0.; + if (aParticle->GetDefinition()->GetParticleName() == "proton") + aParticleChange.SetStatusChange(fStopAndKill); + else aParticleChange.SetStatusChange(fStopButAlive); + } + + aParticleChange.SetEnergyChange( finalKineticEnergy ); + aParticleChange.SetNumberOfSecondaries(1); + aParticleChange.AddSecondary(theDeltaRay); + aParticleChange.SetLocalEnergyDeposit (Edep); + + //ResetNumberOfInteractionLengthLeft(); +return G4VContinuousDiscreteProcess::PostStepDoIt(trackData,stepData); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4hIonisation::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String particleName = particle->GetParticleName(); + G4String filename; + + // store stopping power table + if ((particleName == "proton")||(particleName == "anti_proton")){ + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + if ( !theLossTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable->StorePhysicsTable in " << filename + << G4endl; + return false; + }} + + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if ( !theMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particleName + << ": Success to store the PhysicsTables in " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4hIonisation::RetrievePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theLossTable and theMeanFreePathTable + if (theLossTable != 0) { + theLossTable->clearAndDestroy(); + delete theLossTable; + } + if (theMeanFreePathTable != 0) { + theMeanFreePathTable->clearAndDestroy(); + delete theMeanFreePathTable; + } + + // get bining from EnergyLoss + LowestKineticEnergy = GetLowerBoundEloss(); + HighestKineticEnergy = GetUpperBoundEloss(); + TotBin = GetNbinEloss(); + + G4String particleName = particle->GetParticleName(); + G4String filename; + + // retreive stopping power table + if ((particleName == "proton")||(particleName == "anti_proton")){ + filename = GetPhysicsTableFileName(particle,directory,"StoppingPower",ascii); + theLossTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theLossTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theLossTable0->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + if (particleName == "proton") + RecorderOfpProcess[CounterOfpProcess++] = theLossTable; + if (particleName == "anti_proton") + RecorderOfpbarProcess[CounterOfpbarProcess++] = theLossTable; + } + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theMeanFreePathTable = new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if ( !theMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + + G4cout << GetProcessName() << " for " << particleName + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + + BuildDEDXTable(*particle); + + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4hIonisation::PrintInfoDefinition() { - G4String comments = " Knock-on electron cross sections . "; - comments += "\n Good description above the mean excitation energy.\n"; - comments += " delta ray energy sampled from differential Xsection."; + G4String comments = " Knock-on electron cross sections . " + "\n Good description above the mean excitation energy.\n" + " delta ray energy sampled from differential Xsection."; G4cout << G4endl << GetProcessName() << ": " << comments << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy, @@ -604,3 +630,4 @@ void G4hIonisation::PrintInfoDefinition() << " in " << TotBin << " bins. \n"; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/utils/History b/source/processes/electromagnetic/utils/History index 5bae85dbdc..d8aa6e15b5 100644 --- a/source/processes/electromagnetic/utils/History +++ b/source/processes/electromagnetic/utils/History @@ -1,4 +1,4 @@ -$Id: History,v 1.20 2001/05/18 15:14:11 maire Exp $ +$Id: History,v 1.38 2001/11/08 15:56:51 maire Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,60 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +08 nov 01: mma (utils-V03-02-11) +- G4VEnergyLoss: some data members and functions are no more static + +07 nov 01: mma (utils-V03-02-10) +- bug fixe in G4MultipleScattering::PostStepDoIt() + +29 oct 01: mma (utils-V03-02-09) +- static functions no more inlined + +24 oct 01: mma (utils-V03-02-08) +- cut per material: G4VEnergyLoss + +28 sep 01: mma (utils-V03-02-07) +- StorePhysicsTable: ParticleName included in FileName + +27 sep 01: L.Urban (utils-V03-02-06) +- bug fixed in G4EnergyLossTables.icc,.cc: + this bug caused sometime negative energy deposit + (it was a very-very old bug) +- value of data member factlim in msc has been changed + +19 sep 01: mma (utils-V03-02-05) +- come back to previous process name: "msc" + +17 sep 01: mma (utils-V03-02-04) +- modifs in muls and VEnergyLoss for the migration of Materials to pure STL, + but backward compatible with g4rw + + 13 sep 01: L.Urban (utils-V03-02-03) +- Unused TrueToGeomTransformation method deleted. Class description +- corr. in ComputeTransportCrossSection + + 11 sep 01: L.Urban (utils-V03-02-02) +- G4MultipleScatteringx put as the default: G4MultipleScattering + + 11 sep 01: L.Urban (utils-V03-02-01) +- last tag with G4MultipleScatteringx file. + + 03 sep 01: L.Urban (utils-V03-02-00) +- value of data member factlim has been changed. + + 28 aug 01: mma +- G4MultipleScatteringx: small modifs in BuildPhysicsTable, + ComputeTransportCrossSection, PostStepDoIt. + GetContinuousStepLimit and AlongStepDoIt moved to .cc file + + 23 aug 01: L. Urban +- new angle and z(geom. pathlength) distributions, + energy (step) dependence has been reduced, + Store/Retrieve methods have been commented out temporarily + + 8 aug 01: mma +- G4MultipleScatteringx: methods to store/retrieve PhysicsTable 18 may 01: V.Ivanchenko (utils-V03-01-01) - clean up againist Linux ANSI strict compilation mode. diff --git a/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh b/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh index 28c0b74ec5..08b47dfebb 100644 --- a/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh +++ b/source/processes/electromagnetic/utils/include/G4EnergyLossMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EnergyLossMessenger.hh,v 1.3.4.1 2001/06/28 19:12:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EnergyLossMessenger.hh,v 1.4 2001/07/11 10:03:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class Description: diff --git a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh index 6fad81e926..af19ee9a09 100644 --- a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh +++ b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.hh @@ -21,12 +21,12 @@ // ******************************************************************** // // -// $Id: G4EnergyLossTables.hh,v 1.10.4.1 2001/06/28 19:12:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EnergyLossTables.hh,v 1.12 2001/10/29 09:40:51 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // -// ------------------------------------------------------------------- +// ----------------------------------------------------------------------------- #ifndef included_G4EnergyLossTables #define included_G4EnergyLossTables @@ -39,14 +39,14 @@ #include "G4Material.hh" #include "G4ios.hh" -// ------------------------------------------------------------------- +//------------------------------------------------------------------------------ // A utility class, containing the energy loss tables // for each particle // // Energy loss processes have to register their tables with this // class. The responsibility of creating and deleting the tables // remains with the energy loss classes. -// ------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // // P. Urban, 06/04/1998 // L. Urban, 27/05/1988 , modifications + new functions added @@ -56,8 +56,10 @@ // L.Urban , 12/04/99 , bug fixed // don't use the helper class. // It can't be hidden for Rogue Wave uses it. -// 10/11/99: moved from RWT hash dictionary to STL map, G.Barrand, M.Maire -// ------------------------------------------------------------------- +// 10.11.99: moved from RWT hash dictionary to STL map, G.Barrand, M.Maire +// 26.10.01: all static functions movev from .icc to .cc file (mma) +// +// ----------------------------------------------------------------------------- //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... @@ -184,6 +186,4 @@ private: //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... -#include "G4EnergyLossTables.icc" - #endif diff --git a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.icc b/source/processes/electromagnetic/utils/include/G4EnergyLossTables.icc deleted file mode 100644 index 71ed3bdf5e..0000000000 --- a/source/processes/electromagnetic/utils/include/G4EnergyLossTables.icc +++ /dev/null @@ -1,529 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4EnergyLossTables.icc,v 1.13.2.1 2001/06/28 19:12:47 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// Inline members of the G4EnergyLossTables class -// -// ------------------------------------------------------------------- -// first version created by P.Urban , 06/04/1998 -// modified by L.Urban , 27/05/98 -// cache mechanism , L.Urban , 11/02/99 -// bug fixed , L.Urban , 12/04/99 -// 10/11/99: moved from RWT hash dictionary to STL map, G.Barrand, M.Maire -// 18/05/01 V.Ivanchenko Clean up againist Linux ANSI compilation -// -// ------------------------------------------------------------------- - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4EnergyLossTablesHelper::G4EnergyLossTablesHelper( - const G4PhysicsTable* aDEDXTable, - const G4PhysicsTable* aRangeTable, - const G4PhysicsTable* anInverseRangeTable, - const G4PhysicsTable* aLabTimeTable, - const G4PhysicsTable* aProperTimeTable, - G4double aLowestKineticEnergy, - G4double aHighestKineticEnergy, - G4double aMassRatio, - G4int aNumberOfBins) - : - theDEDXTable(aDEDXTable), theRangeTable(aRangeTable), - theInverseRangeTable(anInverseRangeTable), - theLabTimeTable(aLabTimeTable), - theProperTimeTable(aProperTimeTable), - theLowestKineticEnergy(aLowestKineticEnergy), - theHighestKineticEnergy(aHighestKineticEnergy), - theMassRatio(aMassRatio), - theNumberOfBins(aNumberOfBins) -{ -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4EnergyLossTablesHelper::G4EnergyLossTablesHelper() -{ -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline const G4PhysicsTable* G4EnergyLossTables::GetDEDXTable( - const G4ParticleDefinition* p) -{ - helper_map::iterator it; - if((it=dict.find(p))==dict.end()) return 0; - return (*it).second.theDEDXTable; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline const G4PhysicsTable* G4EnergyLossTables::GetRangeTable( - const G4ParticleDefinition* p) -{ - helper_map::iterator it; - if((it=dict.find(p))==dict.end()) return 0; - return (*it).second.theRangeTable; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline const G4PhysicsTable* G4EnergyLossTables::GetInverseRangeTable( - const G4ParticleDefinition* p) -{ - helper_map::iterator it; - if((it=dict.find(p))==dict.end()) return 0; - return (*it).second.theInverseRangeTable; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline const G4PhysicsTable* G4EnergyLossTables::GetLabTimeTable( - const G4ParticleDefinition* p) -{ - helper_map::iterator it; - if((it=dict.find(p))==dict.end()) return 0; - return (*it).second.theLabTimeTable; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline const G4PhysicsTable* G4EnergyLossTables::GetProperTimeTable( - const G4ParticleDefinition* p) -{ - helper_map::iterator it; - if((it=dict.find(p))==dict.end()) return 0; - return (*it).second.theProperTimeTable; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4EnergyLossTablesHelper G4EnergyLossTables::GetTables( - const G4ParticleDefinition* p) -{ - helper_map::iterator it; - if((it=dict.find(p))==dict.end()) { - G4Exception("G4EnergyLossTables::GetTables: table not found!"); - exit(1); - } - return (*it).second; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4double G4EnergyLossTables::GetDEDX( - const G4ParticleDefinition *aParticle, - G4double KineticEnergy, - const G4Material *aMaterial) -{ - if(aParticle != lastParticle) - { - t= GetTables(aParticle); - lastParticle = aParticle ; - Chargesquare = (aParticle->GetPDGCharge())* - (aParticle->GetPDGCharge())/ - QQPositron ; - } - const G4PhysicsTable* dEdxTable= t.theDEDXTable; - - G4int materialIndex = aMaterial->GetIndex(); - G4double scaledKineticEnergy = KineticEnergy*t.theMassRatio; - G4double dEdx; - G4bool isOut; - - if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut) - *sqrt(scaledKineticEnergy/t.theLowestKineticEnergy); - - } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { - - dEdx = (*dEdxTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut); - - } else { - - dEdx = (*dEdxTable)(materialIndex)->GetValue( - scaledKineticEnergy,isOut); - - } - - - return dEdx*Chargesquare; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4double G4EnergyLossTables::GetLabTime( - const G4ParticleDefinition *aParticle, - G4double KineticEnergy, - const G4Material *aMaterial) -{ - if(aParticle != lastParticle) - { - t= GetTables(aParticle); - lastParticle = aParticle ; - } - const G4PhysicsTable* labtimeTable= t.theLabTimeTable; - - const G4double parlowen=0.4 , ppar=0.5-parlowen ; - G4int materialIndex = aMaterial->GetIndex(); - G4double scaledKineticEnergy = KineticEnergy*t.theMassRatio; - G4double time; - G4bool isOut; - - if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut); - - - } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { - - time = (*labtimeTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut); - - } else { - - time = (*labtimeTable)(materialIndex)->GetValue( - scaledKineticEnergy,isOut); - - } - - return time/t.theMassRatio ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4double G4EnergyLossTables::GetDeltaLabTime( - const G4ParticleDefinition *aParticle, - G4double KineticEnergyStart, - G4double KineticEnergyEnd, - const G4Material *aMaterial) -{ - if(aParticle != lastParticle) - { - t= GetTables(aParticle); - lastParticle = aParticle ; - } - const G4PhysicsTable* labtimeTable= t.theLabTimeTable; - - const G4double parlowen=0.4 , ppar=0.5-parlowen ; - const G4double dToverT = 0.05 , facT = 1. -dToverT ; - G4double timestart,timeend,deltatime,dTT; - G4bool isOut; - - G4int materialIndex = aMaterial->GetIndex(); - G4double scaledKineticEnergy = KineticEnergyStart*t.theMassRatio; - - if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut); - - - } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { - - timestart = (*labtimeTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut); - - } else { - - timestart = (*labtimeTable)(materialIndex)->GetValue( - scaledKineticEnergy,isOut); - - } - - dTT = (KineticEnergyStart - KineticEnergyEnd)/KineticEnergyStart ; - - if( dTT < dToverT ) - scaledKineticEnergy = facT*KineticEnergyStart*t.theMassRatio; - else - scaledKineticEnergy = KineticEnergyEnd*t.theMassRatio; - - if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut); - - - } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { - - timeend = (*labtimeTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut); - - } else { - - timeend = (*labtimeTable)(materialIndex)->GetValue( - scaledKineticEnergy,isOut); - - } - - deltatime = timestart - timeend ; - - if( dTT < dToverT ) - deltatime *= dTT/dToverT; - - return deltatime/t.theMassRatio ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4double G4EnergyLossTables::GetProperTime( - const G4ParticleDefinition *aParticle, - G4double KineticEnergy, - const G4Material *aMaterial) -{ - if(aParticle != lastParticle) - { - t= GetTables(aParticle); - lastParticle = aParticle ; - } - const G4PhysicsTable* propertimeTable= t.theProperTimeTable; - - const G4double parlowen=0.4 , ppar=0.5-parlowen ; - G4int materialIndex = aMaterial->GetIndex(); - G4double scaledKineticEnergy = KineticEnergy*t.theMassRatio; - G4double time; - G4bool isOut; - - if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut); - - - } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { - - time = (*propertimeTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut); - - } else { - - time = (*propertimeTable)(materialIndex)->GetValue( - scaledKineticEnergy,isOut); - - } - - return time/t.theMassRatio ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4double G4EnergyLossTables::GetDeltaProperTime( - const G4ParticleDefinition *aParticle, - G4double KineticEnergyStart, - G4double KineticEnergyEnd, - const G4Material *aMaterial) -{ - if(aParticle != lastParticle) - { - t= GetTables(aParticle); - lastParticle = aParticle ; - } - const G4PhysicsTable* propertimeTable= t.theProperTimeTable; - - const G4double parlowen=0.4 , ppar=0.5-parlowen ; - const G4double dToverT = 0.05 , facT = 1. -dToverT ; - G4double timestart,timeend,deltatime,dTT; - G4bool isOut; - - G4int materialIndex = aMaterial->GetIndex(); - G4double scaledKineticEnergy = KineticEnergyStart*t.theMassRatio; - - if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut); - - - } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { - - timestart = (*propertimeTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut); - - } else { - - timestart = (*propertimeTable)(materialIndex)->GetValue( - scaledKineticEnergy,isOut); - - } - - dTT = (KineticEnergyStart - KineticEnergyEnd)/KineticEnergyStart ; - - if( dTT < dToverT ) - scaledKineticEnergy = facT*KineticEnergyStart*t.theMassRatio; - else - scaledKineticEnergy = KineticEnergyEnd*t.theMassRatio; - - if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut); - - - } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { - - timeend = (*propertimeTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut); - - } else { - - timeend = (*propertimeTable)(materialIndex)->GetValue( - scaledKineticEnergy,isOut); - - } - - deltatime = timestart - timeend ; - - if( dTT < dToverT ) - deltatime *= dTT/dToverT ; - - return deltatime/t.theMassRatio ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4double G4EnergyLossTables::GetRange( - const G4ParticleDefinition *aParticle, - G4double KineticEnergy, - const G4Material *aMaterial) -{ - if(aParticle != lastParticle) - { - t= GetTables(aParticle); - lastParticle = aParticle ; - Chargesquare = (aParticle->GetPDGCharge())* - (aParticle->GetPDGCharge())/ - QQPositron ; - } - const G4PhysicsTable* rangeTable= t.theRangeTable; - const G4PhysicsTable* dEdxTable= t.theDEDXTable; - - G4int materialIndex = aMaterial->GetIndex(); - G4double scaledKineticEnergy = KineticEnergy*t.theMassRatio; - G4double Range; - G4bool isOut; - - if (scaledKineticEnergyGetValue( - t.theLowestKineticEnergy,isOut); - - } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { - - Range = (*rangeTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut)+ - (scaledKineticEnergy-t.theHighestKineticEnergy)/ - (*dEdxTable)(materialIndex)->GetValue( - t.theHighestKineticEnergy,isOut); - - } else { - - Range = (*rangeTable)(materialIndex)->GetValue( - scaledKineticEnergy,isOut); - - } - - return Range/(Chargesquare*t.theMassRatio); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -inline G4double G4EnergyLossTables::GetPreciseEnergyFromRange( - const G4ParticleDefinition *aParticle, - G4double range, - const G4Material *aMaterial) -// it returns the value of the kinetic energy for a given range -{ - if( aParticle != lastParticle) - { - t= GetTables(aParticle); - lastParticle = aParticle; - Chargesquare = (aParticle->GetPDGCharge())* - (aParticle->GetPDGCharge())/ - QQPositron ; - oldIndex = -1 ; - } - const G4PhysicsTable* dEdxTable= t.theDEDXTable; - const G4PhysicsTable* inverseRangeTable= t.theInverseRangeTable; - - G4double scaledrange,scaledKineticEnergy ; - G4bool isOut ; - - G4int materialIndex = aMaterial->GetIndex() ; - - if(materialIndex != oldIndex) - { - oldIndex = materialIndex ; - rmin = (*inverseRangeTable)(materialIndex)-> - GetLowEdgeEnergy(0) ; - rmax = (*inverseRangeTable)(materialIndex)-> - GetLowEdgeEnergy(t.theNumberOfBins-2) ; - Thigh = (*inverseRangeTable)(materialIndex)-> - GetValue(rmax,isOut) ; - } - - scaledrange = range*Chargesquare*t.theMassRatio ; - - if(scaledrange < rmin) - { - scaledKineticEnergy = t.theLowestKineticEnergy* - scaledrange*scaledrange/(rmin*rmin) ; - } - else - { - if(scaledrange < rmax) - { - scaledKineticEnergy = (*inverseRangeTable)(materialIndex)-> - GetValue( scaledrange,isOut) ; - } - else - { - scaledKineticEnergy = Thigh + - (scaledrange-rmax)* - (*dEdxTable)(materialIndex)-> - GetValue(Thigh,isOut) ; - } - } - - return scaledKineticEnergy/t.theMassRatio ; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - - - - - - - diff --git a/source/processes/electromagnetic/utils/include/G4MultipleScattering.hh b/source/processes/electromagnetic/utils/include/G4MultipleScattering.hh index 04c7d907dc..a9b5b06aaa 100644 --- a/source/processes/electromagnetic/utils/include/G4MultipleScattering.hh +++ b/source/processes/electromagnetic/utils/include/G4MultipleScattering.hh @@ -21,148 +21,213 @@ // ******************************************************************** // // -// $Id: G4MultipleScattering.hh,v 1.1.4.2 2001/06/28 20:19:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MultipleScattering.hh,v 1.5 2001/09/19 13:16:06 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +//------------- G4MultipleScattering physics process -------------------------- +// by Laszlo Urban, March 2001 // -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class header file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// --------- G4MultipleScattering physics process -------- -// by Laszlo Urban, October 1997 -// ************************************************************** -// UNIVERSAL: for arbitrary single charged particle -// 09/12/98: charge can be != +- 1 !!!! L.Urban -// 30/09/99: nuclear size effect correction L.Urban -// -------------------------------------------------------------- -// 22/10/98: cleanup , L.Urban +// 07-08-01 new methods Store/Retrieve PhysicsTable +// 23-08-01 new angle and z distribution,energy dependence reduced, +// Store,Retrieve methods commented out temporarily, L.Urban +// 11-09-01 G4MultipleScatteringx put as default: G4MultipleScattering +// Store,Retrieve methods reactived (mma) +// 13-09-01 Unused TrueToGeomTransformation method deleted, +// class description (L.Urban) +// 19-09-01 come back to previous process name msc +// +//------------------------------------------------------------------------------ + +// class description +// +// The class simulates the multiple scattering for any kind +// of charged particle. +// +// class description - end + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #ifndef G4MultipleScattering_h #define G4MultipleScattering_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4EnergyLossTables.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -#include "G4MuonPlus.hh" -#include "G4PionPlus.hh" -#include "G4Proton.hh" -#include "G4PhysicsLogVector.hh" -#include "G4GPILSelection.hh" #include "G4VContinuousDiscreteProcess.hh" -#include "G4Step.hh" -#include "G4Track.hh" -#include "G4Material.hh" +#include "G4EnergyLossTables.hh" +#include "G4GPILSelection.hh" +#include "G4PhysicsLogVector.hh" #include "G4ParticleChangeForMSC.hh" #include "G4UnitsTable.hh" +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + class G4MultipleScattering : public G4VContinuousDiscreteProcess { - public: + public: // with description - G4MultipleScattering(const G4String& processName="msc") ; + G4MultipleScattering(const G4String& processName="msc"); - ~G4MultipleScattering() ; + ~G4MultipleScattering(); - G4bool IsApplicable ( const G4ParticleDefinition& ) ; + G4bool IsApplicable ( const G4ParticleDefinition& ); + // returns true for charged particles, false otherwise - void SetPhysicsTableBining(G4double lowE,G4double highE,G4int nBins); - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType) ; + void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); + // This function overloads the corresponding virtual function + // of the base class G4VContinuousDiscreteProcess. + // It is invoked by the G4ParticleWithCuts()::SetCut() method. + // It prepares the table of the transport mean free paths + // for every material. void PrintInfoDefinition(); + // Print few lines of informations about the process: validity range, + // origine ..etc.. + // Invoked by BuildPhysicsTable(). + + G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // store TransportMeanFreePath tables into an external file + // specified by 'directory' (must exist before invokation) + + G4bool RetrievePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool); + // retrieve TransportMeanFreePath tables from an external file + // specified by 'directory' + + + G4double AlongStepGetPhysicalInteractionLength(const G4Track&, + G4double previousStepSize, + G4double currentMinimumStep, + G4double& currentSafety, + G4GPILSelection* selection); + // The function overloads the corresponding function of the base + // class.It limits the step near to boundaries only + // and invokes the method GetContinuousStepLimit at every step. + G4double GetContinuousStepLimit(const G4Track& aTrack, G4double previousStepSize, G4double currentMinimumStep, - G4double& currentSafety) ; + G4double& currentSafety); + // It performs the true step length --> geometrical step length + // transformation. It is invoked by the + // AlongStepGetPhysicalInteractionLength method. G4double GetMeanFreePath(const G4Track& aTrack, G4double previousStepSize, - G4ForceCondition* condition) ; + G4ForceCondition* condition); + // It sets the force condition to true only + // in order to have the PostStepDoIt called at every step. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. - G4VParticleChange* AlongStepDoIt(const G4Track& aTrack,const G4Step& aStep); - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack,const G4Step& aStep) ; - - G4double GetLambda(G4double KineticEnergy,G4Material* material); - - void SetScatteringParameter(G4double value) - { scatteringparameter = value ; } ; - void SetTuning(G4double value) { tuning = value ; }; - void SetCpar (G4double value) { cpar = value ; }; - void SetTlimitmsc (G4double value) { Tlimit = value ; }; - void SetLateralDisplacementFlag(G4bool flag) {fLatDisplFlag = flag;}; + + G4double GetTransportMeanFreePath( + G4double KineticEnergy,G4Material* material); + // Just a utility method to get the values of the transport + // mean free path . (It is not used inside the class.) - void SetNuclCorrPar(G4double val) { NuclCorrPar = val; } ; - void SetFactPar(G4double val) { FactPar = val ; } ; + G4VParticleChange* AlongStepDoIt(const G4Track& aTrack,const G4Step& aStep); + // The geometrical step length --> true path length transformation + // is performed here (the inverse of the transformation done + // by GetContinuousStepLimit). - protected: + G4VParticleChange* PostStepDoIt(const G4Track& aTrack,const G4Step& aStep); + // It computes the final state of the particle: samples the + // scattering angle and computes the lateral displacement. + // The final state is returned as a ParticleChange object. + // This function overloads a virtual function of the base class. + // It is invoked by the ProcessManager of the Particle. - G4double ComputeTransportCrossSection( + // Set functions for the different model parameters: + void Setpalfa(G4double value) {palfa = value;}; + void Setpbeta(G4double value) {pbeta = value;}; + void Setpgamma(G4double value) {pgamma = value;}; + void Setpq0(G4double value) {pq0 = value;}; + void Setpq1(G4double value) {pq1 = value;}; + void Setpc0(G4double value) {pc0 = value;}; + // angle distribution parameters + + void Setpcz(G4double value) {pcz = value;}; + // geom. step length distribution + + void Setdtrl(G4double value) {dtrl = value;}; + // to reduce the energy/step dependence + + void SetBoundary(G4bool value) {boundary = value;}; + void SetFactlim(G4double val) {factlim=val;}; + // parameters needed near to boundary + + void SetTuning(G4double value) {tuning = value;}; + void SetCparm (G4double value) {cparm = value;}; + // tuning of the transport mean free path + + void SetLateralDisplacementFlag(G4bool flag) {fLatDisplFlag = flag;}; + // lateral displacement to be/not to be computed + + void SetNuclCorrPar(G4double val) {NuclCorrPar = val;}; + void SetFactPar(G4double val) {FactPar = val;}; + // corrs to transport cross section for high energy + + protected: // with description + + virtual G4double ComputeTransportCrossSection( const G4ParticleDefinition& aParticleType, G4double KineticEnergy, G4double AtomicNumber, - G4double AtomicWeight) ; - - G4double TrueToGeomTransformation(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double truePathLength) ; + G4double AtomicWeight); + // It computes the transport cross section. + // The transport mean free path is 1/(transport cross section). private: // hide assignment operator as private - G4MultipleScattering & operator = (const G4MultipleScattering &right) ; - G4MultipleScattering ( const G4MultipleScattering &) ; + G4MultipleScattering & operator = (const G4MultipleScattering &right); + G4MultipleScattering ( const G4MultipleScattering &); + private: // data members - // data members ................................................... - private: + G4PhysicsTable* theTransportMeanFreePathTable; - G4PhysicsTable* theTransportMeanFreePathTable ; + G4double fTransportMeanFreePath; - G4double fTransportMeanFreePath ; - G4double range,alpha1 ; - G4int stepFlag ; + G4double biglambda,taubig,tausmall,taulim; - G4double biglambda ; - - G4double LowestKineticEnergy ; - G4double HighestKineticEnergy ; - G4int TotBin ; - - const G4Electron* theElectron ; - const G4Positron* thePositron ; + G4double LowestKineticEnergy; + G4double HighestKineticEnergy; + G4int TotBin; G4Material* lastMaterial; - G4double lastKineticEnergy; - G4int materialIndex ; + G4double lastKineticEnergy; + G4int materialIndex; - G4double tLast ; - G4double zLast ; - - G4double Tlimit ; + G4double tLast; + G4double zLast; // model parameters - G4double scatteringparameter; - G4double tuning; - G4double cpar; + G4bool boundary; // spec. handling near boundaries + G4double factlim; + G4GPILSelection valueGPILSelectionMSC; + + G4double pcz,zmean; // z(geom.step length) + // distribution + + G4double palfa,pbeta,pgamma,pq0,pq1,pc0; // parameters of angle + // disrtibution + + G4double range,T1,lambda1,cth1,z1,t1,dtrl; // used to reduce the energy + // (or step length) dependence + + G4double tuning; // param. for lambda tuning + G4double cparm; // " // with/without lateral displacement - G4bool fLatDisplFlag ; + G4bool fLatDisplFlag; // nuclear size effect correction - G4double NuclCorrPar ; - G4double FactPar ; + G4double NuclCorrPar; + G4double FactPar; - //New ParticleChange - G4ParticleChangeForMSC fParticleChange ; - + G4ParticleChangeForMSC fParticleChange; }; #include "G4MultipleScattering.icc" diff --git a/source/processes/electromagnetic/utils/include/G4MultipleScattering.icc b/source/processes/electromagnetic/utils/include/G4MultipleScattering.icc index 76fa19f736..2b395919b2 100644 --- a/source/processes/electromagnetic/utils/include/G4MultipleScattering.icc +++ b/source/processes/electromagnetic/utils/include/G4MultipleScattering.icc @@ -21,100 +21,49 @@ // ******************************************************************** // // -// $Id: G4MultipleScattering.icc,v 1.3.2.2 2001/06/28 20:19:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MultipleScattering.icc,v 1.6 2001/09/13 11:00:19 urban Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// $Id: -// ------------------------------------------------------------- -// GEANT 4 class inlined methods file +//------------ G4MultipleScattering physics process --------------------------- +// by Laszlo Urban, March 2001 // -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ------- G4MultipleScattering physics process ------ -// by Laszlo Urban, October 1997 -// ************************************************************** -// 25/11/97: mods for KinEnergy > HighestLimit -// 22/10/98: cleanup , L.Urban -// 15/10/99: bugfix, some accuracy problems fixed , L.Urban -// 18/05/01 V.Ivanchenko Clean up againist Linux ANSI compilation -//--------------------------------------------------------------- +// Modified: +// +// 18-05-01 V.Ivanchenko Clean up against Linux ANSI compilation +// 23-08-01 new angle and z distribution,energy dependence reduced, +// Store,Retrieve methods commented out temporarily, L.Urban +// 27-08-01 bugfix in AlongStepDoIt, L.Urban +// 28-08-01 GetContinuousStepLimit and AlongStepDoIt moved to .cc file (mma) +// 11-09-01 G4MultipleScatteringx put as default: G4MultipleScattering (mma) +// +//------------------------------------------------------------------------------ -inline G4double G4MultipleScattering::GetContinuousStepLimit( - const G4Track& track, - G4double, - G4double currentMinimumStep, - G4double&) +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +inline +G4bool G4MultipleScattering::IsApplicable(const G4ParticleDefinition& particle) { - G4double zPathLength,tPathLength ; - const G4DynamicParticle* aParticle ; - G4Material* aMaterial ; - G4double KineticEnergy,tau ; - G4bool isOut ; - - // this process is not a candidate for selection!!!!!!!!! - SetGPILSelection(NotCandidateForSelection) ; - - if(track.GetCurrentStepNumber() == 1) - stepFlag = 0 ; - - tPathLength = currentMinimumStep ; - - aMaterial = track.GetMaterial() ; - materialIndex = aMaterial->GetIndex() ; - - aParticle = track.GetDynamicParticle() ; - KineticEnergy = aParticle->GetKineticEnergy() ; - - if((lastMaterial != aMaterial) || (lastKineticEnergy != KineticEnergy)) - { - lastKineticEnergy = KineticEnergy ; - materialIndex = aMaterial->GetIndex() ; - - if((lastMaterial != aMaterial)||(KineticEnergy >= Tlimit)||(stepFlag != 1)) - fTransportMeanFreePath = (*theTransportMeanFreePathTable) - (materialIndex)->GetValue(KineticEnergy,isOut); - - lastMaterial = aMaterial; - - if(KineticEnergy < Tlimit) - { - stepFlag = 1 ; - range = G4EnergyLossTables::GetRange(aParticle->GetDefinition(), - KineticEnergy,aMaterial) ; - - alpha1 = range/fTransportMeanFreePath+1 ; - } - } - - // do the true -> geom transformation - if( fTransportMeanFreePath > biglambda ) - { - zPathLength = tPathLength ; - } - else if(stepFlag == 0) - { - tau = tPathLength/fTransportMeanFreePath ; - if(tau < perMillion) - zPathLength = tPathLength ; - else - zPathLength = fTransportMeanFreePath*(1.-exp(-tau)) ; - } - else - { - tau = tPathLength/range ; - if(tautrue path transformation is performed { - static const G4double tfacmx = 10. ; - G4double tau,geomPathLength, truePathLength ; - - fParticleChange.Initialize(track); - - geomPathLength = track.GetStepLength() ; - - if(geomPathLength == zLast) - { - truePathLength = tLast ; - } - else if( fTransportMeanFreePath > biglambda ) - { - truePathLength = geomPathLength ; - } - else if(stepFlag == 0) - { - tau = geomPathLength/fTransportMeanFreePath ; - if(tauGetIndex())-> - GetValue(KineticEnergy,isOut); - return lambda; + return (*theTransportMeanFreePathTable) + (material->GetIndex())->GetValue(KineticEnergy,isOut); } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/utils/include/G4MultipleScatteringx.hh b/source/processes/electromagnetic/utils/include/G4MultipleScatteringx.hh deleted file mode 100644 index bb8579d0bb..0000000000 --- a/source/processes/electromagnetic/utils/include/G4MultipleScatteringx.hh +++ /dev/null @@ -1,189 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4MultipleScatteringx.hh,v 1.1.2.2 2001/06/28 20:19:51 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class header file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// --------- G4MultipleScatteringx physics process -------- -// by Laszlo Urban, March 2001 -// ************************************************************** -// New version of MSC model -// -------------------------------------------------------------- - -#ifndef G4MultipleScatteringx_h -#define G4MultipleScatteringx_h 1 - -#include "G4ios.hh" -#include "globals.hh" -#include "Randomize.hh" -#include "G4EnergyLossTables.hh" -#include "G4Electron.hh" -#include "G4Positron.hh" -#include "G4MuonPlus.hh" -#include "G4PionPlus.hh" -#include "G4Proton.hh" -#include "G4PhysicsLogVector.hh" -#include "G4GPILSelection.hh" -#include "G4VContinuousDiscreteProcess.hh" -#include "G4Step.hh" -#include "G4Track.hh" -#include "G4Material.hh" -#include "G4ParticleChangeForMSC.hh" -#include "G4UnitsTable.hh" - -class G4MultipleScatteringx : public G4VContinuousDiscreteProcess - -{ - public: - - G4MultipleScatteringx(const G4String& processName="mscx") ; - - ~G4MultipleScatteringx() ; - - G4bool IsApplicable ( const G4ParticleDefinition& ) ; - - void BuildPhysicsTable(const G4ParticleDefinition& aParticleType) ; - - void PrintInfoDefinition(); - - G4double GetContinuousStepLimit(const G4Track& aTrack, - G4double previousStepSize, - G4double currentMinimumStep, - G4double& currentSafety) ; - - G4double GetMeanFreePath(const G4Track& aTrack, - G4double previousStepSize, - G4ForceCondition* condition) ; - - G4VParticleChange* AlongStepDoIt(const G4Track& aTrack,const G4Step& aStep); - - G4VParticleChange* PostStepDoIt(const G4Track& aTrack,const G4Step& aStep) ; - - - G4double AlongStepGetPhysicalInteractionLength( - const G4Track&, - G4double previousStepSize, - G4double currentMinimumStep, - G4double& currentSafety, - G4GPILSelection* selection - ); - - G4double GetLambda(G4double KineticEnergy,G4Material* material); - - void SetScatteringParameter1(G4double value) - { scatteringparameter1 = value ; } ; - void SetScatteringParameter2(G4double value) - { scatteringparameter2 = value ; } ; - void SetScatteringParameter3(G4double value) - { scatteringparameter3 = value ; } ; - void SetBoundary(G4bool value) { boundary = value ;} ; - - void SetTuning(G4double value) { tuning = value ; }; - void SetCparm (G4double value) { cparm = value ; }; - void SetTlimitmsc (G4double value) { Tlimit = value ; }; - void SetLateralDisplacementFlag(G4bool flag) {fLatDisplFlag = flag;}; - - void SetNuclCorrPar(G4double val) { NuclCorrPar = val; } ; - void SetFactPar(G4double val) { FactPar = val ; } ; - - protected: - - G4double ComputeTransportCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber, - G4double AtomicWeight) ; - - G4double TrueToGeomTransformation(const G4DynamicParticle* aParticle, - G4Material* aMaterial, - G4double truePathLength) ; - - private: - - // hide assignment operator as private - G4MultipleScatteringx & operator = (const G4MultipleScatteringx &right) ; - G4MultipleScatteringx ( const G4MultipleScatteringx &) ; - - - // data members ................................................... - private: - - G4PhysicsTable* theTransportMeanFreePathTable ; - - G4double fTransportMeanFreePath ; - G4double range,alpha1 ; - G4int stepFlag ; - - G4double biglambda ; - - G4double LowestKineticEnergy ; - G4double HighestKineticEnergy ; - G4int TotBin ; - - const G4Electron* theElectron ; - const G4Positron* thePositron ; - - G4Material* lastMaterial; - G4double lastKineticEnergy; - G4int materialIndex ; - - G4double tLast ; - G4double zLast ; - - G4double Tlimit ; - - // model parameters - G4double scatteringparameter1; // for low energy scattering - G4double scatteringparameter2; // alfamax in scattering - G4double scatteringparameter3; // param. for z/t distr. - - G4bool boundary ; // spec. handling near boundaries - G4GPILSelection valueGPILSelectionMSC ; - - G4double tuning; // param. for lambda tuning - G4double cparm; // " - - // with/without lateral displacement - G4bool fLatDisplFlag ; - - // nuclear size effect correction - G4double NuclCorrPar ; - G4double FactPar ; - - //New ParticleChange - G4ParticleChangeForMSC fParticleChange ; - -}; - -#include "G4MultipleScatteringx.icc" - -#endif - - - diff --git a/source/processes/electromagnetic/utils/include/G4MultipleScatteringx.icc b/source/processes/electromagnetic/utils/include/G4MultipleScatteringx.icc deleted file mode 100644 index faf20e25d6..0000000000 --- a/source/processes/electromagnetic/utils/include/G4MultipleScatteringx.icc +++ /dev/null @@ -1,290 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4MultipleScatteringx.icc,v 1.2.2.2 2001/06/28 20:19:51 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: -// ------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// History: based on object model of -// 2nd December 1995, G.Cosmo -// ------- G4MultipleScatteringx physics process ------ -// by Laszlo Urban, March 2001 -//--------------------------------------------------------------- -// New version of MSC model -//--------------------------------------------------------------- -// Modified: -// 18/05/01 V.Ivanchenko Clean up againist Linux ANSI compilation -// -//--------------------------------------------------------------- - - -inline G4double G4MultipleScatteringx::AlongStepGetPhysicalInteractionLength( - const G4Track& track, - G4double previousStepSize, - G4double currentMinimumStep, - G4double& currentSafety, - G4GPILSelection* selection - ) -{ - // get Step limit proposed by the process - G4double steplength = - GetContinuousStepLimit(track,previousStepSize,currentMinimumStep, currentSafety); - - // set return value for G4GPILSelection - *selection = valueGPILSelectionMSC; - - return steplength ; -} - - -inline G4double G4MultipleScatteringx::GetContinuousStepLimit( - const G4Track& track, - G4double, - G4double currentMinimumStep, - G4double&) -{ - G4double zPathLength,tPathLength ; - const G4DynamicParticle* aParticle ; - G4Material* aMaterial ; - G4double KineticEnergy,tau ; - G4bool isOut ; - - static const G4double toler = 1.0e-6*mm ; - static const G4double factlim = 0.10 ; - G4double tlimit ; - - - static G4double tausmall = 1.e-20 ; - static G4double taulow = 1.e-10 ; - static G4double clim=1./3. ; - G4double etau,beta2,cc,ccc,u ; - - // this process is not a candidate for selection by default !!!!!!!! - valueGPILSelectionMSC = NotCandidateForSelection; - - if(track.GetCurrentStepNumber() == 1) - stepFlag = 0 ; - - tPathLength = currentMinimumStep ; - - aMaterial = track.GetMaterial() ; - materialIndex = aMaterial->GetIndex() ; - - aParticle = track.GetDynamicParticle() ; - KineticEnergy = aParticle->GetKineticEnergy() ; - - if((lastMaterial != aMaterial) || (lastKineticEnergy != KineticEnergy)) - { - lastKineticEnergy = KineticEnergy ; - materialIndex = aMaterial->GetIndex() ; - - if((lastMaterial != aMaterial)||(KineticEnergy >= Tlimit)||(stepFlag != 1)) - fTransportMeanFreePath = (*theTransportMeanFreePathTable) - (materialIndex)->GetValue(KineticEnergy,isOut); - - lastMaterial = aMaterial; - - if(KineticEnergy < Tlimit) - { - stepFlag = 1 ; - range = G4EnergyLossTables::GetRange(aParticle->GetDefinition(), - KineticEnergy,aMaterial) ; - - alpha1 = range/fTransportMeanFreePath+1 ; - } - } - - // special treatment near boundaries ? - if(boundary) - { - // step limitation at boundary ? - if(track.GetCurrentStepNumber() > 1) - { - if(track.GetStep()->GetPreStepPoint()->GetSafety() < toler) - { - tlimit = factlim*fTransportMeanFreePath ; - if(tPathLength > tlimit) - { - tPathLength = tlimit*G4UniformRand() ; - valueGPILSelectionMSC = CandidateForSelection; - } - } - } - } - - // do the true -> geom transformation - if( fTransportMeanFreePath > biglambda ) - { - zPathLength = tPathLength ; - } - else if(stepFlag == 0) - { - tau = tPathLength/fTransportMeanFreePath ; - if(tau < tausmall) - zPathLength = tPathLength*(1.-0.5*tau) ; - else - { - // sample zPathLength - etau = exp(-tau) ; - if(scatteringparameter3 <= clim) - { - ccc = 1.-scatteringparameter3 ; - } - else - { - cc=0.5/scatteringparameter3-1.5 ; - ccc=2.*scatteringparameter3*exp(cc) ; - } - if(tau < taulow) - beta2 = (1.+scatteringparameter3)*(1.-2.*tau/3.)/tau ; - else - beta2 = 0.5*(1.+scatteringparameter3)*(1.-etau)/(tau-1+etau) ; - do { - u = -log(1.-G4UniformRand())/beta2 ; - } while (G4UniformRand() > (1.-scatteringparameter3+ - 2.*scatteringparameter3*beta2*u)*exp(-beta2*u)/ccc ) ; - zPathLength = tPathLength/(1.+u) ; - } - } - else - { - tau = tPathLength/range ; - if(tautrue path transformation is performed -{ - static const G4double tfacmx = 10. ; - G4double tau,geomPathLength, truePathLength ; - - static G4double tausmall = 1.e-20 ; - static G4double taulow = 1.e-10 ; - static G4double clim=1./3. ; - G4double ltau,cc,ccc,beta2,u ; - - fParticleChange.Initialize(track); - - geomPathLength = track.GetStepLength() ; - - if(geomPathLength == zLast) - { - truePathLength = tLast ; - } - else if( fTransportMeanFreePath > biglambda ) - { - truePathLength = geomPathLength ; - } - else if(stepFlag == 0) - { - tau = geomPathLength/fTransportMeanFreePath ; - if(tau < tausmall) - truePathLength = geomPathLength*(1.+0.5*tau) ; - else if(tau < 1.) - { - // sample tPathLength - ltau = -log(1.-tau) ; - if(scatteringparameter3 <= clim) - { - ccc = 1.-scatteringparameter3 ; - } - else - { - cc=0.5/scatteringparameter3-1.5 ; - ccc=2.*scatteringparameter3*exp(cc) ; - } - if(tau < taulow) - beta2 = (1.+scatteringparameter3)*(1.-2.*tau/3.)/tau ; - else - beta2 = (1.+scatteringparameter3)*tau/(2.*(ltau-tau)) ; - do { - u = -log(1.-G4UniformRand())/beta2 ; - } while (G4UniformRand() > (1.-scatteringparameter3+ - 2.*scatteringparameter3*beta2*u)*exp(-beta2*u)/ccc ) ; - truePathLength = geomPathLength*(1.+u) ; - } - else - truePathLength = tfacmx*fTransportMeanFreePath ; - } - else - { - if(geomPathLength/range < perMillion) - truePathLength = range*(1.-exp(-geomPathLength/range)) ; - else - truePathLength = range*(1.-exp(log(1.-alpha1*geomPathLength/range)/ - alpha1)) ; - } - - fParticleChange.SetTrueStepLength(truePathLength) ; - - return &fParticleChange ; - -} - - -inline G4bool G4MultipleScatteringx::IsApplicable( - const G4ParticleDefinition& particle) - { - return(particle.GetPDGCharge() != 0.); - } - -inline G4double G4MultipleScatteringx::GetLambda( - G4double KineticEnergy, - G4Material* material) -{ - G4bool isOut; - - G4double lambda = (*theTransportMeanFreePathTable) - (material->GetIndex())-> - GetValue(KineticEnergy,isOut); - return lambda; -} diff --git a/source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh b/source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh index 7f273d66a7..336688372e 100644 --- a/source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh +++ b/source/processes/electromagnetic/utils/include/G4VEnergyLoss.hh @@ -21,13 +21,14 @@ // ******************************************************************** // // -// $Id: G4VEnergyLoss.hh,v 1.9.4.2 2001/06/28 20:19:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEnergyLoss.hh,v 1.13 2001/11/08 08:09:57 urban Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ -// GEANT 4 class header file -// +// 26.10.01 static inline functions moved to .cc file (mma) +// 08.11.01 some static methods,data members are not static L.Urban +// ------------------------------------------------------------ // // Class Description // @@ -41,6 +42,7 @@ // All the EnergyLoss classes are inherited from G4VEnergyLoss // class. // + // ----------------------------------------------------------- // created on 28 January 2000 by L. Urban // ----------------------------------------------------------- @@ -96,6 +98,45 @@ class G4VEnergyLoss : public G4VContinuousDiscreteProcess G4double MeanLoss, G4double step); + // Build range table starting from the DEDXtable + G4PhysicsTable* + BuildRangeTable(G4PhysicsTable* theDEDXTable, + G4PhysicsTable* theRangeTable, + G4double Tmin,G4double Tmax,G4int nbin); + + // Build time tables starting from the DEDXtable + G4PhysicsTable* + BuildLabTimeTable(G4PhysicsTable* theDEDXTable, + G4PhysicsTable* theLabTimeTable, + G4double Tmin,G4double Tmax,G4int nbin); + + G4PhysicsTable* + BuildProperTimeTable(G4PhysicsTable* theDEDXTable, + G4PhysicsTable* ProperTimeTable, + G4double Tmin,G4double Tmax,G4int nbin); + + // Build tables of coefficients needed for inverting the range table + G4PhysicsTable* + BuildRangeCoeffATable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theCoeffATable, + G4double Tmin,G4double Tmax,G4int nbin); + G4PhysicsTable* + BuildRangeCoeffBTable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theCoeffBTable, + G4double Tmin,G4double Tmax,G4int nbin); + G4PhysicsTable* + BuildRangeCoeffCTable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theCoeffCTable, + G4double Tmin,G4double Tmax,G4int nbin); + + // Invert range table + G4PhysicsTable* + BuildInverseRangeTable(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffATable, + G4PhysicsTable* theRangeCoeffBTable, + G4PhysicsTable* theRangeCoeffCTable, + G4PhysicsTable* theInverseRangeTable, + G4double Tmin,G4double Tmax,G4int nbin); private: @@ -103,8 +144,40 @@ class G4VEnergyLoss : public G4VContinuousDiscreteProcess G4VEnergyLoss(); G4VEnergyLoss & operator=(const G4VEnergyLoss &right); + void BuildRangeVector(G4PhysicsTable* theDEDXTable, + G4double Tmin,G4double Tmax,G4int nbin, + G4int materialIndex,G4PhysicsLogVector* rangeVector); + + G4double RangeIntLin(G4PhysicsVector* physicsVector,G4int nbin); + + G4double RangeIntLog(G4PhysicsVector* physicsVector,G4int nbin); + + void BuildLabTimeVector(G4PhysicsTable* theDEDXTable, + G4double Tmin,G4double Tmax,G4int nbin, + G4int materialIndex,G4PhysicsLogVector* rangeVector); + + void BuildProperTimeVector(G4PhysicsTable* theDEDXTable, + G4double Tmin,G4double Tmax,G4int nbin, + G4int materialIndex,G4PhysicsLogVector* rangeVector); + + G4double LabTimeIntLog(G4PhysicsVector* physicsVector,G4int nbin); + + G4double ProperTimeIntLog(G4PhysicsVector* physicsVector,G4int nbin); + + void InvertRangeVector(G4PhysicsTable* theRangeTable, + G4PhysicsTable* theRangeCoeffATable, + G4PhysicsTable* theRangeCoeffBTable, + G4PhysicsTable* theRangeCoeffCTable, + G4double Tmin,G4double Tmax,G4int nbin, + G4int materialIndex,G4PhysicsLogVector* rangeVector); + + protected: + G4double ParticleMass; + + private: + // data members to speed up the fluctuation calculation G4Material* lastMaterial; G4int imat; @@ -113,36 +186,32 @@ class G4VEnergyLoss : public G4VContinuousDiscreteProcess const G4int nmaxCont1,nmaxCont2 ; + // for some integration routines + G4double taulow,tauhigh,ltaulow,ltauhigh; + // static part of the class public: // With description - static void SetRndmStep (G4bool value) {rndmStepFlag = value;} + static void SetRndmStep(G4bool value); // use / do not use randomisation in energy loss steplimit // ( default = no randomisation) - static void SetEnlossFluc (G4bool value) {EnlossFlucFlag = value;} + static void SetEnlossFluc(G4bool value); // compute energy loss with/without fluctuation // ( default : with fluctuation) - static void SetSubSec (G4bool value) {subSecFlag = value ; } + static void SetSubSec(G4bool value); // switch on/off the generation of the subcutoff secondaries // ( default = subcutoff secondary generation ) - static void SetMinDeltaCutInRange(G4double value) - {MinDeltaCutInRange = value; - setMinDeltaCutInRange = true ;} + static void SetMinDeltaCutInRange(G4double value); // sets minimal cut value for the subcutoff secondaries // (i.e. the kinetic energy of these secondaries can not be // smaller than the energy corresponds to MinDeltaCutInRange). - static void SetStepFunction (G4double c1, G4double c2) - {dRoverRange = c1; finalRange = c2; - c1lim=dRoverRange ; - c2lim=2.*(1-dRoverRange)*finalRange; - c3lim=-(1.-dRoverRange)*finalRange*finalRange; - } + static void SetStepFunction (G4double c1, G4double c2); // sets values for data members used to compute the step limit: // dRoverRange : max. relative range change in one step, // finalRange : if range <= finalRange --> last step for the particle. @@ -150,87 +219,12 @@ class G4VEnergyLoss : public G4VContinuousDiscreteProcess protected: // With description - // Build range table starting from the DEDXtable - static G4PhysicsTable* - BuildRangeTable(G4PhysicsTable* theDEDXTable, - G4PhysicsTable* theRangeTable, - G4double Tmin,G4double Tmax,G4int nbin); - - // Build time tables starting from the DEDXtable - static G4PhysicsTable* - BuildLabTimeTable(G4PhysicsTable* theDEDXTable, - G4PhysicsTable* theLabTimeTable, - G4double Tmin,G4double Tmax,G4int nbin); - - static G4PhysicsTable* - BuildProperTimeTable(G4PhysicsTable* theDEDXTable, - G4PhysicsTable* ProperTimeTable, - G4double Tmin,G4double Tmax,G4int nbin); - - // Build tables of coefficients needed for inverting the range table - static G4PhysicsTable* - BuildRangeCoeffATable(G4PhysicsTable* theRangeTable, - G4PhysicsTable* theCoeffATable, - G4double Tmin,G4double Tmax,G4int nbin); - static G4PhysicsTable* - BuildRangeCoeffBTable(G4PhysicsTable* theRangeTable, - G4PhysicsTable* theCoeffBTable, - G4double Tmin,G4double Tmax,G4int nbin); - static G4PhysicsTable* - BuildRangeCoeffCTable(G4PhysicsTable* theRangeTable, - G4PhysicsTable* theCoeffCTable, - G4double Tmin,G4double Tmax,G4int nbin); - - // Invert range table - static G4PhysicsTable* - BuildInverseRangeTable(G4PhysicsTable* theRangeTable, - G4PhysicsTable* theRangeCoeffATable, - G4PhysicsTable* theRangeCoeffBTable, - G4PhysicsTable* theRangeCoeffCTable, - G4PhysicsTable* theInverseRangeTable, - G4double Tmin,G4double Tmax,G4int nbin); - - private: - - static void BuildRangeVector(G4PhysicsTable* theDEDXTable, - G4double Tmin,G4double Tmax,G4int nbin, - G4int materialIndex,G4PhysicsLogVector* rangeVector); - - static G4double RangeIntLin(G4PhysicsVector* physicsVector - ,G4int nbin); - - static G4double RangeIntLog(G4PhysicsVector* physicsVector - ,G4int nbin); - - static void BuildLabTimeVector(G4PhysicsTable* theDEDXTable, - G4double Tmin,G4double Tmax,G4int nbin, - G4int materialIndex,G4PhysicsLogVector* rangeVector); - - static void BuildProperTimeVector(G4PhysicsTable* theDEDXTable, - G4double Tmin,G4double Tmax,G4int nbin, - G4int materialIndex,G4PhysicsLogVector* rangeVector); - - static G4double LabTimeIntLog(G4PhysicsVector* physicsVector - ,G4int nbin); - - static G4double ProperTimeIntLog(G4PhysicsVector* physicsVector, - G4int nbin); - - static void InvertRangeVector(G4PhysicsTable* theRangeTable, - G4PhysicsTable* theRangeCoeffATable, - G4PhysicsTable* theRangeCoeffBTable, - G4PhysicsTable* theRangeCoeffCTable, - G4double Tmin,G4double Tmax,G4int nbin, - G4int materialIndex,G4PhysicsLogVector* rangeVector); - + static G4bool EqualCutVectors( G4double* vec1, G4double* vec2 ); + static G4double* CopyCutVectors( G4double* dest, G4double* source ); // data members protected: - // variables for the integration routines - static G4double ParticleMass,taulow,tauhigh,ltaulow,ltauhigh; - - static G4double dRoverRange; // dRoverRange is the maximum allowed // deltarange/range in one Step static G4double finalRange; // final step before stopping @@ -238,7 +232,7 @@ class G4VEnergyLoss : public G4VContinuousDiscreteProcess static G4bool rndmStepFlag; // control the randomization of the step static G4bool EnlossFlucFlag; // control the energy loss fluctuation - static G4bool subSecFlag; // control the generation of subcutoff secondaries + static G4bool subSecFlag; // control the generation of subcutoff delta static G4double MinDeltaCutInRange; // minimum cut for delta rays static G4double* MinDeltaEnergy ; diff --git a/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc b/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc index 6e2c8dde27..0c984be4b9 100644 --- a/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc +++ b/source/processes/electromagnetic/utils/src/G4EnergyLossMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EnergyLossMessenger.cc,v 1.3.4.1 2001/06/28 19:12:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EnergyLossMessenger.cc,v 1.4 2001/07/11 10:03:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc b/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc index c065ae9047..340f8bf363 100644 --- a/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc +++ b/source/processes/electromagnetic/utils/src/G4EnergyLossTables.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EnergyLossTables.cc,v 1.14.2.1 2001/06/28 19:12:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EnergyLossTables.cc,v 1.17 2001/10/29 09:40:52 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // first version created by P.Urban , 06/04/1998 @@ -30,7 +30,9 @@ // modifications , TOF functions , 26/10/98, L.Urban // cache mechanism in order to gain time, 11/02/99, L.Urban // bug fixed , 12/04/99 , L.Urban -// 10/11/99: moved from RWT hash dictionary to STL map, G.Barrand, M.Maire +// 10.11.99: moved from RWT hash dictionary to STL map, G.Barrand, M.Maire +// 27.09.01 L.Urban , bug fixed (negative energy deposit) +// 26.10.01 all static functions moved from .icc files (mma) // ------------------------------------------------------------------- #include "G4EnergyLossTables.hh" @@ -38,7 +40,7 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... G4EnergyLossTablesHelper G4EnergyLossTables::t ; -const G4ParticleDefinition* G4EnergyLossTables::lastParticle = NULL ; +const G4ParticleDefinition* G4EnergyLossTables::lastParticle = 0; G4double G4EnergyLossTables::QQPositron = eplus*eplus ; G4double G4EnergyLossTables::Chargesquare ; G4int G4EnergyLossTables::oldIndex = -1 ; @@ -50,6 +52,34 @@ G4EnergyLossTables::helper_map G4EnergyLossTables::dict; //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4EnergyLossTablesHelper::G4EnergyLossTablesHelper( + const G4PhysicsTable* aDEDXTable, + const G4PhysicsTable* aRangeTable, + const G4PhysicsTable* anInverseRangeTable, + const G4PhysicsTable* aLabTimeTable, + const G4PhysicsTable* aProperTimeTable, + G4double aLowestKineticEnergy, + G4double aHighestKineticEnergy, + G4double aMassRatio, + G4int aNumberOfBins) + : + theDEDXTable(aDEDXTable), theRangeTable(aRangeTable), + theInverseRangeTable(anInverseRangeTable), + theLabTimeTable(aLabTimeTable), + theProperTimeTable(aProperTimeTable), + theLowestKineticEnergy(aLowestKineticEnergy), + theHighestKineticEnergy(aHighestKineticEnergy), + theMassRatio(aMassRatio), + theNumberOfBins(aNumberOfBins) +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4EnergyLossTablesHelper::G4EnergyLossTablesHelper() +{ } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + void G4EnergyLossTables::Register( const G4ParticleDefinition* p, const G4PhysicsTable* tDEDX, @@ -74,10 +104,406 @@ void G4EnergyLossTables::Register( //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - G4double G4EnergyLossTables::GetPreciseDEDX( +const G4PhysicsTable* G4EnergyLossTables::GetDEDXTable( + const G4ParticleDefinition* p) +{ + helper_map::iterator it; + if((it=dict.find(p))==dict.end()) return 0; + return (*it).second.theDEDXTable; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +const G4PhysicsTable* G4EnergyLossTables::GetRangeTable( + const G4ParticleDefinition* p) +{ + helper_map::iterator it; + if((it=dict.find(p))==dict.end()) return 0; + return (*it).second.theRangeTable; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +const G4PhysicsTable* G4EnergyLossTables::GetInverseRangeTable( + const G4ParticleDefinition* p) +{ + helper_map::iterator it; + if((it=dict.find(p))==dict.end()) return 0; + return (*it).second.theInverseRangeTable; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +const G4PhysicsTable* G4EnergyLossTables::GetLabTimeTable( + const G4ParticleDefinition* p) +{ + helper_map::iterator it; + if((it=dict.find(p))==dict.end()) return 0; + return (*it).second.theLabTimeTable; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +const G4PhysicsTable* G4EnergyLossTables::GetProperTimeTable( + const G4ParticleDefinition* p) +{ + helper_map::iterator it; + if((it=dict.find(p))==dict.end()) return 0; + return (*it).second.theProperTimeTable; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4EnergyLossTablesHelper G4EnergyLossTables::GetTables( + const G4ParticleDefinition* p) +{ + helper_map::iterator it; + if((it=dict.find(p))==dict.end()) { + G4Exception("G4EnergyLossTables::GetTables: table not found!"); + exit(1); + } + return (*it).second; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4EnergyLossTables::GetDEDX( const G4ParticleDefinition *aParticle, G4double KineticEnergy, const G4Material *aMaterial) +{ + if(aParticle != lastParticle) + { + t= GetTables(aParticle); + lastParticle = aParticle ; + Chargesquare = (aParticle->GetPDGCharge())* + (aParticle->GetPDGCharge())/ + QQPositron ; + oldIndex = -1 ; + } + const G4PhysicsTable* dEdxTable= t.theDEDXTable; + + G4int materialIndex = aMaterial->GetIndex(); + G4double scaledKineticEnergy = KineticEnergy*t.theMassRatio; + G4double dEdx; + G4bool isOut; + + if (scaledKineticEnergyGetValue( + t.theLowestKineticEnergy,isOut) + *sqrt(scaledKineticEnergy/t.theLowestKineticEnergy); + + } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { + + dEdx = (*dEdxTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut); + + } else { + + dEdx = (*dEdxTable)(materialIndex)->GetValue( + scaledKineticEnergy,isOut); + + } + + return dEdx*Chargesquare; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4EnergyLossTables::GetLabTime( + const G4ParticleDefinition *aParticle, + G4double KineticEnergy, + const G4Material *aMaterial) +{ + if(aParticle != lastParticle) + { + t= GetTables(aParticle); + lastParticle = aParticle ; + oldIndex = -1 ; + } + const G4PhysicsTable* labtimeTable= t.theLabTimeTable; + + const G4double parlowen=0.4 , ppar=0.5-parlowen ; + G4int materialIndex = aMaterial->GetIndex(); + G4double scaledKineticEnergy = KineticEnergy*t.theMassRatio; + G4double time; + G4bool isOut; + + if (scaledKineticEnergyGetValue( + t.theLowestKineticEnergy,isOut); + + + } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { + + time = (*labtimeTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut); + + } else { + + time = (*labtimeTable)(materialIndex)->GetValue( + scaledKineticEnergy,isOut); + + } + + return time/t.theMassRatio ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4EnergyLossTables::GetDeltaLabTime( + const G4ParticleDefinition *aParticle, + G4double KineticEnergyStart, + G4double KineticEnergyEnd, + const G4Material *aMaterial) +{ + if(aParticle != lastParticle) + { + t= GetTables(aParticle); + lastParticle = aParticle ; + oldIndex = -1 ; + } + const G4PhysicsTable* labtimeTable= t.theLabTimeTable; + + const G4double parlowen=0.4 , ppar=0.5-parlowen ; + const G4double dToverT = 0.05 , facT = 1. -dToverT ; + G4double timestart,timeend,deltatime,dTT; + G4bool isOut; + + G4int materialIndex = aMaterial->GetIndex(); + G4double scaledKineticEnergy = KineticEnergyStart*t.theMassRatio; + + if (scaledKineticEnergyGetValue( + t.theLowestKineticEnergy,isOut); + + + } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { + + timestart = (*labtimeTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut); + + } else { + + timestart = (*labtimeTable)(materialIndex)->GetValue( + scaledKineticEnergy,isOut); + + } + + dTT = (KineticEnergyStart - KineticEnergyEnd)/KineticEnergyStart ; + + if( dTT < dToverT ) + scaledKineticEnergy = facT*KineticEnergyStart*t.theMassRatio; + else + scaledKineticEnergy = KineticEnergyEnd*t.theMassRatio; + + if (scaledKineticEnergyGetValue( + t.theLowestKineticEnergy,isOut); + + + } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { + + timeend = (*labtimeTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut); + + } else { + + timeend = (*labtimeTable)(materialIndex)->GetValue( + scaledKineticEnergy,isOut); + + } + + deltatime = timestart - timeend ; + + if( dTT < dToverT ) + deltatime *= dTT/dToverT; + + return deltatime/t.theMassRatio ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4EnergyLossTables::GetProperTime( + const G4ParticleDefinition *aParticle, + G4double KineticEnergy, + const G4Material *aMaterial) +{ + if(aParticle != lastParticle) + { + t= GetTables(aParticle); + lastParticle = aParticle ; + oldIndex = -1 ; + } + const G4PhysicsTable* propertimeTable= t.theProperTimeTable; + + const G4double parlowen=0.4 , ppar=0.5-parlowen ; + G4int materialIndex = aMaterial->GetIndex(); + G4double scaledKineticEnergy = KineticEnergy*t.theMassRatio; + G4double time; + G4bool isOut; + + if (scaledKineticEnergyGetValue( + t.theLowestKineticEnergy,isOut); + + + } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { + + time = (*propertimeTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut); + + } else { + + time = (*propertimeTable)(materialIndex)->GetValue( + scaledKineticEnergy,isOut); + + } + + return time/t.theMassRatio ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4EnergyLossTables::GetDeltaProperTime( + const G4ParticleDefinition *aParticle, + G4double KineticEnergyStart, + G4double KineticEnergyEnd, + const G4Material *aMaterial) +{ + if(aParticle != lastParticle) + { + t= GetTables(aParticle); + lastParticle = aParticle ; + oldIndex = -1 ; + } + const G4PhysicsTable* propertimeTable= t.theProperTimeTable; + + const G4double parlowen=0.4 , ppar=0.5-parlowen ; + const G4double dToverT = 0.05 , facT = 1. -dToverT ; + G4double timestart,timeend,deltatime,dTT; + G4bool isOut; + + G4int materialIndex = aMaterial->GetIndex(); + G4double scaledKineticEnergy = KineticEnergyStart*t.theMassRatio; + + if (scaledKineticEnergyGetValue( + t.theLowestKineticEnergy,isOut); + + + } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { + + timestart = (*propertimeTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut); + + } else { + + timestart = (*propertimeTable)(materialIndex)->GetValue( + scaledKineticEnergy,isOut); + + } + + dTT = (KineticEnergyStart - KineticEnergyEnd)/KineticEnergyStart ; + + if( dTT < dToverT ) + scaledKineticEnergy = facT*KineticEnergyStart*t.theMassRatio; + else + scaledKineticEnergy = KineticEnergyEnd*t.theMassRatio; + + if (scaledKineticEnergyGetValue( + t.theLowestKineticEnergy,isOut); + + + } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { + + timeend = (*propertimeTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut); + + } else { + + timeend = (*propertimeTable)(materialIndex)->GetValue( + scaledKineticEnergy,isOut); + + } + + deltatime = timestart - timeend ; + + if( dTT < dToverT ) + deltatime *= dTT/dToverT ; + + return deltatime/t.theMassRatio ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4EnergyLossTables::GetRange( + const G4ParticleDefinition *aParticle, + G4double KineticEnergy, + const G4Material *aMaterial) +{ + if(aParticle != lastParticle) + { + t= GetTables(aParticle); + lastParticle = aParticle ; + Chargesquare = (aParticle->GetPDGCharge())* + (aParticle->GetPDGCharge())/ + QQPositron ; + oldIndex = -1 ; + } + const G4PhysicsTable* rangeTable= t.theRangeTable; + const G4PhysicsTable* dEdxTable= t.theDEDXTable; + + G4int materialIndex = aMaterial->GetIndex(); + G4double scaledKineticEnergy = KineticEnergy*t.theMassRatio; + G4double Range; + G4bool isOut; + + if (scaledKineticEnergyGetValue( + t.theLowestKineticEnergy,isOut); + + } else if (scaledKineticEnergy>t.theHighestKineticEnergy) { + + Range = (*rangeTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut)+ + (scaledKineticEnergy-t.theHighestKineticEnergy)/ + (*dEdxTable)(materialIndex)->GetValue( + t.theHighestKineticEnergy,isOut); + + } else { + + Range = (*rangeTable)(materialIndex)->GetValue( + scaledKineticEnergy,isOut); + + } + + return Range/(Chargesquare*t.theMassRatio); +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4EnergyLossTables::GetPreciseEnergyFromRange( + const G4ParticleDefinition *aParticle, + G4double range, + const G4Material *aMaterial) +// it returns the value of the kinetic energy for a given range { if( aParticle != lastParticle) { @@ -86,6 +512,69 @@ void G4EnergyLossTables::Register( Chargesquare = (aParticle->GetPDGCharge())* (aParticle->GetPDGCharge())/ QQPositron ; + oldIndex = -1 ; + } + const G4PhysicsTable* dEdxTable= t.theDEDXTable; + const G4PhysicsTable* inverseRangeTable= t.theInverseRangeTable; + + G4double scaledrange,scaledKineticEnergy ; + G4bool isOut ; + + G4int materialIndex = aMaterial->GetIndex() ; + + if(materialIndex != oldIndex) + { + oldIndex = materialIndex ; + rmin = (*inverseRangeTable)(materialIndex)-> + GetLowEdgeEnergy(0) ; + rmax = (*inverseRangeTable)(materialIndex)-> + GetLowEdgeEnergy(t.theNumberOfBins-2) ; + Thigh = (*inverseRangeTable)(materialIndex)-> + GetValue(rmax,isOut) ; + } + + scaledrange = range*Chargesquare*t.theMassRatio ; + + if(scaledrange < rmin) + { + scaledKineticEnergy = t.theLowestKineticEnergy* + scaledrange*scaledrange/(rmin*rmin) ; + } + else + { + if(scaledrange < rmax) + { + scaledKineticEnergy = (*inverseRangeTable)(materialIndex)-> + GetValue( scaledrange,isOut) ; + } + else + { + scaledKineticEnergy = Thigh + + (scaledrange-rmax)* + (*dEdxTable)(materialIndex)-> + GetValue(Thigh,isOut) ; + } + } + + return scaledKineticEnergy/t.theMassRatio ; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + G4double G4EnergyLossTables::GetPreciseDEDX( + const G4ParticleDefinition *aParticle, + G4double KineticEnergy, + const G4Material *aMaterial) +{ + + if( aParticle != lastParticle) + { + t= GetTables(aParticle); + lastParticle = aParticle; + Chargesquare = (aParticle->GetPDGCharge())* + (aParticle->GetPDGCharge())/ + QQPositron ; + oldIndex = -1 ; } const G4PhysicsTable* dEdxTable= t.theDEDXTable; @@ -129,6 +618,7 @@ void G4EnergyLossTables::Register( Chargesquare = (aParticle->GetPDGCharge())* (aParticle->GetPDGCharge())/ QQPositron ; + oldIndex = -1 ; } const G4PhysicsTable* rangeTable= t.theRangeTable; const G4PhysicsTable* dEdxTable= t.theDEDXTable; diff --git a/source/processes/electromagnetic/utils/src/G4MultipleScattering.cc b/source/processes/electromagnetic/utils/src/G4MultipleScattering.cc index 17c4ef86b0..3ef31a7b22 100644 --- a/source/processes/electromagnetic/utils/src/G4MultipleScattering.cc +++ b/source/processes/electromagnetic/utils/src/G4MultipleScattering.cc @@ -21,173 +21,166 @@ // ******************************************************************** // // -// $Id: G4MultipleScattering.cc,v 1.8.2.2 2001/06/28 20:19:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MultipleScattering.cc,v 1.16 2001/10/31 07:27:25 urban Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// $Id: -// -------------------------------------------------------------- -// GEANT 4 class implementation file +// ----------------------------------------------------------------------------- +// 16/05/01 value of cparm changed , L.Urban +// 18/05/01 V.Ivanchenko Clean up against Linux ANSI compilation +// 07/08/01 new methods Store/Retrieve PhysicsTable (mma) +// 23-08-01 new angle and z distribution,energy dependence reduced, +// Store,Retrieve methods commented out temporarily, L.Urban +// 27-08-01 in BuildPhysicsTable:aParticleType.GetParticleName()=="mu+" (mma) +// 28-08-01 GetContinuousStepLimit and AlongStepDoIt moved from .icc file (mma) +// 03-09-01 value of data member factlim changed, L.Urban +// 10-09-01 small change in GetContinuousStepLimit, L.Urban +// 11-09-01 G4MultipleScatteringx put as default G4MultipleScattering +// store/retrieve physics table reactivated (mma) +// 13-09-01 corr. in ComputeTransportCrossSection, L.Urban +// 14-09-01 protection in GetContinuousStepLimit, L.Urban +// 17-09-01 migration of Materials to pure STL (mma) +// 27-09-01 value of data member factlim changed, L.Urban +// 31-10-01 big fixed in PostStepDoIt,L.Urban +// ----------------------------------------------------------------------------- // -// History: based on object model of -// 2nd December 1995, G.Cosmo -// -------- G4MultipleScattering physics process ------------ -// by Laszlo Urban, October 1997 -// ************************************************************** -// 24/10/97 correction in PostStepDoIt for tau << 1. L.Urban -// 09/12/98: charge can be different from +-1 !!!! L.Urban -// 29/07/99: corr. for low energy , L.Urban -// 17/09/99: corr. for high energy and/or small step , L.Urban -// 30/09/99: nuclear size effect correction, L.Urban -// 22/03/00: value of member cpar has changed! , L.Urban -// 20/06/00: nuclear size correction for particles other than e+/e- only , L.Urban -// 10/08/00 values of some data members has been changed, L.Urban -// 09/11/00 bug corrected in sigma computation, L.Urban -// 16/05/01 value of cpar changed back to the old value, L.Urban -// 18/05/01 V.Ivanchenko Clean up againist Linux ANSI compilation -// -------------------------------------------------------------- +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "G4MultipleScattering.hh" #include "G4Navigator.hh" #include "G4TransportationManager.hh" +#include "Randomize.hh" - G4MultipleScattering::G4MultipleScattering(const G4String& processName) +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4MultipleScattering::G4MultipleScattering(const G4String& processName) : G4VContinuousDiscreteProcess(processName), theTransportMeanFreePathTable(0), fTransportMeanFreePath (1.e12), - range(1.e10*mm), - alpha1(5.), - stepFlag(0), - biglambda (1.e10*mm), + biglambda(1.e10),taubig(10.),tausmall(1.e-12),taulim(1.e-6), LowestKineticEnergy(0.1*keV), HighestKineticEnergy(100.*TeV), TotBin(100), - theElectron(G4Electron::Electron()), - thePositron(G4Positron::Positron()), lastMaterial(0), lastKineticEnergy(0.), materialIndex(0), tLast (0.0), zLast (0.0), - Tlimit(1.*keV), - scatteringparameter(0.9), + boundary(true), + factlim(1.00), + valueGPILSelectionMSC(NotCandidateForSelection), + pcz(0.17),zmean(0.), + palfa(0.9698),pbeta(0.4138),pgamma(2.0001), + pq0(0.272),pq1(50.14),pc0(4.024), + range(1.0),T1(1.0),lambda1(-1.),cth1(1.),z1(1.e10),dtrl(0.15), tuning (1.00), - cpar (1.50), - fLatDisplFlag(true), + cparm (1.5), + fLatDisplFlag(true), NuclCorrPar (0.0615), FactPar(0.40) { } + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - G4MultipleScattering::~G4MultipleScattering() - { - if(theTransportMeanFreePathTable) +G4MultipleScattering::~G4MultipleScattering() +{ + if(theTransportMeanFreePathTable) { - theTransportMeanFreePathTable->clearAndDestroy() ; - delete theTransportMeanFreePathTable ; + theTransportMeanFreePathTable->clearAndDestroy(); + delete theTransportMeanFreePathTable; } - } +} -// .........methods.............................. +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - void G4MultipleScattering::BuildPhysicsTable( +void G4MultipleScattering::BuildPhysicsTable( const G4ParticleDefinition& aParticleType) - - // tables are built for MATERIALS - { +{ + // tables are built for MATERIALS const G4double sigmafactor = twopi*classic_electr_radius* - classic_electr_radius ; - G4double KineticEnergy,AtomicNumber,AtomicWeight, - sigma,lambda ; - G4double density ; + classic_electr_radius; + G4double KineticEnergy,AtomicNumber,AtomicWeight,sigma,lambda; + G4double density; // destroy old tables if any - if(theTransportMeanFreePathTable) - { - theTransportMeanFreePathTable->clearAndDestroy() ; - delete theTransportMeanFreePathTable ; - } + if (theTransportMeanFreePathTable) + { + theTransportMeanFreePathTable->clearAndDestroy(); + delete theTransportMeanFreePathTable; + } - // create table - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; + // create table + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); - theTransportMeanFreePathTable = new G4PhysicsTable(numOfMaterials) ; + theTransportMeanFreePathTable = new G4PhysicsTable(numOfMaterials); - // loop for materials + // loop for materials for (G4int J=0; JGetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements = - material->GetNumberOfElements() ; - density = material->GetDensity() ; + // get elements in the material + const G4Material* material = (*theMaterialTable)[J]; + const G4ElementVector* theElementVector = material->GetElementVector(); + const G4double* NbOfAtomsPerVolume = + material->GetVecNbOfAtomsPerVolume(); + const G4int NumberOfElements = material->GetNumberOfElements(); + density = material->GetDensity(); - // loop for kinetic energy values + // loop for kinetic energy values for (G4int i=0; iGetLowEdgeEnergy(i) ; - sigma = 0. ; + KineticEnergy = aVector->GetLowEdgeEnergy(i); + sigma = 0.; - // loop for element in the material + // loop for element in the material for (G4int iel=0; ielGetZ() ; - AtomicWeight = (*theElementVector)(iel)->GetA() ; - sigma += theAtomicNumDensityVector[iel]* - ComputeTransportCrossSection(aParticleType, - KineticEnergy, - AtomicNumber,AtomicWeight) ; + AtomicNumber = (*theElementVector)[iel]->GetZ(); + AtomicWeight = (*theElementVector)[iel]->GetA(); + sigma += NbOfAtomsPerVolume[iel]* + ComputeTransportCrossSection(aParticleType,KineticEnergy, + AtomicNumber,AtomicWeight); } - sigma *= sigmafactor ; - - lambda = 1./sigma ; - - aVector->PutValue(i,lambda) ; + sigma *= sigmafactor; + lambda = 1./sigma; + aVector->PutValue(i,lambda); } - theTransportMeanFreePathTable->insert(aVector) ; + theTransportMeanFreePathTable->insert(aVector); } - if( (&aParticleType == G4Electron::Electron()) || - (&aParticleType == G4MuonPlus::MuonPlus()) || - (&aParticleType == G4Proton::Proton()) ) - { - PrintInfoDefinition() ; - } - } + if((aParticleType.GetParticleName() == "e-" ) || + (aParticleType.GetParticleName() == "mu+" ) || + (aParticleType.GetParticleName() == "proton") ) PrintInfoDefinition(); +} +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - G4double G4MultipleScattering::ComputeTransportCrossSection( +G4double G4MultipleScattering::ComputeTransportCrossSection( const G4ParticleDefinition& aParticleType, G4double KineticEnergy, G4double AtomicNumber,G4double AtomicWeight) - { - const G4double epsfactor = 2.*electron_mass_c2*electron_mass_c2* - Bohr_radius*Bohr_radius/(hbarc*hbarc) ; - const G4double epsmin = 1.e-4 , epsmax = 1.e10 ; +{ + const G4double epsfactor = 2.*electron_mass_c2*electron_mass_c2* + Bohr_radius*Bohr_radius/(hbarc*hbarc); + const G4double epsmin = 1.e-4 , epsmax = 1.e10; + const G4double Zdat[15] = { 4., 6.,13.,20.,26.,29.,32.,38.,47., + 50.,56.,64.,74.,79.,82. }; - const G4double Zdat[15] = {4.,6.,13.,20.,26.,29.,32.,38.,47., - 50.,56.,64.,74.,79.,82. } ; + const G4double Tdat[22] = {0.0001*MeV,0.0002*MeV,0.0004*MeV,0.0007*MeV, + 0.001*MeV,0.002*MeV,0.004*MeV,0.007*MeV, + 0.01*MeV,0.02*MeV,0.04*MeV,0.07*MeV, + 0.1*MeV,0.2*MeV,0.4*MeV,0.7*MeV, + 1.*MeV,2.*MeV,4.*MeV,7.*MeV,10.*MeV,20.*MeV}; - const G4double Tdat[22] = - { 0.0001*MeV,0.0002*MeV,0.0004*MeV,0.0007*MeV, - 0.001*MeV,0.002*MeV,0.004*MeV,0.007*MeV,0.01*MeV, - 0.02*MeV,0.04*MeV,0.07*MeV,0.1*MeV,0.2*MeV, - 0.4*MeV,0.7*MeV,1.*MeV,2.*MeV,4.*MeV, - 7.*MeV,10.*MeV,20.*MeV} ; - - // corr. factors for e-/e+ lambda + // corr. factors for e-/e+ lambda const G4double celectron[15][22] = {{1.125,1.072,1.051,1.047,1.047,1.050,1.052,1.054, @@ -284,304 +277,426 @@ 3.752,2.724,2.116,1.817,1.692,1.554,1.499,1.474, 1.456,1.412,1.364,1.328,1.307,1.282 }}; - G4double Z23,ParticleMass,rat2,Charge,TotalEnergy,beta2,bg2, - eps,Z1,Z2,ratZ,T,E,b2small,b2big,ratb2,c1,c2,cc1,cc2, - corr,sigma,corrfactor,ChargeSquare ; - G4int iZ,iT ; + G4double sigma; - Z23 = 2.*log(AtomicNumber)/3. ; - Z23 = exp(Z23) ; + G4double Z23 = 2.*log(AtomicNumber)/3.; Z23 = exp(Z23); - ParticleMass = aParticleType.GetPDGMass() ; + G4double ParticleMass = aParticleType.GetPDGMass(); - rat2 = ParticleMass/electron_mass_c2 ; - rat2 = rat2*rat2 ; + G4double rat2 = ParticleMass/electron_mass_c2; rat2 = rat2*rat2; - Charge = aParticleType.GetPDGCharge() ; - ChargeSquare = Charge*Charge/(eplus*eplus) ; + G4double Charge = aParticleType.GetPDGCharge(); + G4double ChargeSquare = Charge*Charge/(eplus*eplus); - TotalEnergy = KineticEnergy + ParticleMass ; + G4double TotalEnergy = KineticEnergy + ParticleMass ; + G4double beta2 = KineticEnergy*(TotalEnergy+ParticleMass) + /(TotalEnergy*TotalEnergy); + G4double bg2 = KineticEnergy*(TotalEnergy+ParticleMass) + /(ParticleMass*ParticleMass); - beta2 = KineticEnergy*(TotalEnergy+ParticleMass)/ - (TotalEnergy*TotalEnergy) ; - bg2 = KineticEnergy*(TotalEnergy+ParticleMass)/ - (ParticleMass*ParticleMass) ; + G4double eps = rat2*epsfactor*bg2/Z23; - eps = rat2*epsfactor*bg2/Z23 ; + if (eps epsmax) - w1=log(2.*eps)+1./eps-3./(8.*eps*eps) ; - else - w1=log((a+1.)/(a-1.))-2./(a+1.) ; + x0 = 1. - NuclCorrPar*ParticleMass/(KineticEnergy* + exp(log(AtomicWeight/(g/mole))/3.)); + if ( (x0 < -1.) || (KineticEnergy <= 10.*MeV)) + { x0 = -1.; corrnuclsize = 1.;} + else + { a = 1.+1./eps; + if (eps > epsmax) w1=log(2.*eps)+1./eps-3./(8.*eps*eps); + else w1=log((a+1.)/(a-1.))-2./(a+1.); + w = 1./((1.-x0)*eps); + if (w < epsmin) w2=-log(w)-1.+2.*w-1.5*w*w; + else w2 = log((a-x0)/(a-1.))-(1.-x0)/(a-x0); + corrnuclsize = w1/w2; + corrnuclsize = exp(-FactPar*proton_mass_c2/KineticEnergy)* + (corrnuclsize-1.)+1.; + } - w = 1./((1.-x0)*eps) ; - if(w < epsmin) - w2=-log(w)-1.+2.*w-1.5*w*w ; - else - w2 = log((a-x0)/(a-1.))-(1.-x0)/(a-x0) ; + // correct this value using the corrections computed for e+/e- + KineticEnergy *= electron_mass_c2/ParticleMass; + + // interpolate in AtomicNumber and beta2 + // get bin number in Z + G4int iZ = 14; + while ((iZ>=0)&&(Zdat[iZ]>=AtomicNumber)) iZ -= 1; + if (iZ==14) iZ = 13; + if (iZ==-1) iZ = 0 ; + + G4double Z1 = Zdat[iZ]; + G4double Z2 = Zdat[iZ+1]; + G4double ratZ = (AtomicNumber-Z1)/(Z2-Z1); + + // get bin number in T (beta2) + G4int iT = 21; + while ((iT>=0)&&(Tdat[iT]>=KineticEnergy)) iT -= 1; + if(iT==21) iT = 20; + if(iT==-1) iT = 0 ; + + // calculate betasquare values + G4double T = Tdat[iT], E = T + electron_mass_c2; + G4double b2small = T*(E+electron_mass_c2)/(E*E); + T = Tdat[iT+1]; E = T + electron_mass_c2; + G4double b2big = T*(E+electron_mass_c2)/(E*E); + G4double ratb2 = (beta2-b2small)/(b2big-b2small); - corrnuclsize = w1/w2 ; + G4double corrfactor = tuning*(1.+cparm)/(1.+cparm*beta2); + + G4double c1,c2,cc1,cc2,corr; + if (Charge < 0.) + { + c1 = celectron[iZ][iT]; + c2 = celectron[iZ+1][iT]; + cc1 = c1+ratZ*(c2-c1); - // #################################################### - corrnuclsize = exp(-FactPar*proton_mass_c2/KineticEnergy)* - (corrnuclsize-1.)+1. ; - } + c1 = celectron[iZ][iT+1]; + c2 = celectron[iZ+1][iT+1]; + cc2 = c1+ratZ*(c2-c1); - // correct this value using the corrections computed for e+/e- - KineticEnergy *= electron_mass_c2/ParticleMass ; + corr = cc1+ratb2*(cc2-cc1); + sigma /= corr; + } - // interpolate in AtomicNumber and beta2 - - // get bin number in Z - iZ = 14 ; - - while ((iZ>=0)&&(Zdat[iZ]>=AtomicNumber)) iZ -= 1 ; - if (iZ==14) iZ = 13 ; - if (iZ==-1) iZ = 0 ; - - Z1 = Zdat[iZ] ; - Z2 = Zdat[iZ+1] ; - ratZ = (AtomicNumber-Z1)/(Z2-Z1) ; - - // get bin number in T (beta2) - iT = 21 ; - while ((iT>=0)&&(Tdat[iT]>=KineticEnergy)) - iT -= 1 ; - if(iT==21) - iT = 20 ; - if(iT==-1) - iT = 0 ; - - // calculate betasquare values - T = Tdat[iT] ; - E = T + electron_mass_c2 ; - b2small = T*(E+electron_mass_c2)/(E*E) ; - T = Tdat[iT+1] ; - E = T + electron_mass_c2 ; - b2big = T*(E+electron_mass_c2)/(E*E) ; - ratb2 = (beta2-b2small)/(b2big-b2small) ; - - corrfactor = tuning*(1.+cpar)/(1.+cpar*beta2) ; - - if(Charge < 0.) - { - c1 = celectron[iZ][iT] ; - c2 = celectron[iZ+1][iT] ; - cc1 = c1+ratZ*(c2-c1) ; - - c1 = celectron[iZ][iT+1] ; - c2 = celectron[iZ+1][iT+1] ; - cc2 = c1+ratZ*(c2-c1) ; - - corr = cc1+ratb2*(cc2-cc1) ; - - sigma /= corr ; - - } - - if(Charge > 0.) - { - c1 = cpositron[iZ][iT] ; - c2 = cpositron[iZ+1][iT] ; - cc1 = c1+ratZ*(c2-c1) ; - - c1 = cpositron[iZ][iT+1] ; - c2 = cpositron[iZ+1][iT+1] ; - cc2 = c1+ratZ*(c2-c1) ; - - corr = cc1+ratb2*(cc2-cc1) ; - - sigma /= corr ; - } - - sigma *= corrfactor ; - - // nucl. size correction for particles other than e+/e- only at present !!!! - if((&aParticleType != G4Electron::Electron()) && - (&aParticleType != G4Positron::Positron()) ) - sigma /= corrnuclsize ; - - return sigma ; - } - - - G4VParticleChange* G4MultipleScattering::PostStepDoIt( - const G4Track& trackData, - const G4Step& stepData) - { - static G4double taulim=1.e-6 , randlim = 0.25*taulim*taulim ; - static const G4double tausmall = 5.e-5,taubig =50., - kappa = 2.5, kappapl1 = kappa+1., kappami1 = kappa-1. ; - const G4DynamicParticle* aParticle ; - G4double KineticEnergy,truestep,tau,prob,cth,sth,phi, - dirx,diry,dirz,w,w1,etau,rmean,safetyminustolerance; - G4double rand ; - G4bool isOut; - - fParticleChange.Initialize(trackData) ; - - truestep = stepData.GetStepLength() ; - - aParticle = trackData.GetDynamicParticle() ; - - KineticEnergy = aParticle->GetKineticEnergy() ; - - if(stepFlag == 0) + if (Charge > 0.) { - fTransportMeanFreePath = (*theTransportMeanFreePathTable) + c1 = cpositron[iZ][iT]; + c2 = cpositron[iZ+1][iT]; + cc1 = c1+ratZ*(c2-c1); + + c1 = cpositron[iZ][iT+1]; + c2 = cpositron[iZ+1][iT+1]; + cc2 = c1+ratZ*(c2-c1); + + corr = cc1+ratb2*(cc2-cc1); + sigma /= corr; + } + + sigma *= corrfactor; + + // nucl. size correction for particles other than e+/e- only at present !!!! + if((aParticleType.GetParticleName() != "e-") && + (aParticleType.GetParticleName() != "e+") ) + sigma /= corrnuclsize; + + return sigma; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4double G4MultipleScattering::GetContinuousStepLimit( + const G4Track& track, + G4double, + G4double currentMinimumStep, + G4double&) +{ + G4double zPathLength,tPathLength; + const G4DynamicParticle* aParticle; + G4Material* aMaterial; + G4double KineticEnergy,tau,z0,kz; + G4bool isOut; + + // this process is not a candidate for selection by default + valueGPILSelectionMSC = NotCandidateForSelection; + + tPathLength = currentMinimumStep; + + aMaterial = track.GetMaterial(); + materialIndex = aMaterial->GetIndex(); + + aParticle = track.GetDynamicParticle(); + KineticEnergy = aParticle->GetKineticEnergy(); + + if ((lastMaterial != aMaterial) || (lastKineticEnergy != KineticEnergy)) + { + lastKineticEnergy = KineticEnergy ; + materialIndex = aMaterial->GetIndex() ; + + fTransportMeanFreePath = (*theTransportMeanFreePathTable) (materialIndex)->GetValue(KineticEnergy,isOut); - } - // change direction first ( scattering ) .......................... - if(stepFlag == 0) - { - tau = truestep/fTransportMeanFreePath ; - - if(tau > taulim) - prob = exp(-tau)*(1.+scatteringparameter*tau) ; - else - prob=1.-(1.-scatteringparameter)*tau ; - } - else - { - tau = truestep/range ; - if(tau < taulim) - prob = exp(-(alpha1-1.)*tau)*(1.+scatteringparameter*tau) ; - else if(tau < 1.) - prob = exp((alpha1-1.)*log(1.-tau))*(1.+scatteringparameter*tau) ; - else - prob = 0. ; + lastMaterial = aMaterial; } - if(G4UniformRand() 1) { - if(tauGetPreStepPoint()->GetSafety() fTransportMeanFreePath)) { - rand = G4UniformRand() ; - if(rand > randlim) - { - cth = 1.-scatteringparameter*tau*(1./sqrt(rand)-1.) ; - if(cth < -1.) cth = -1. ; - } - else - cth = -1. ; + tPathLength = factlim*fTransportMeanFreePath ; + valueGPILSelectionMSC = CandidateForSelection; } - else - { - w = 1.+scatteringparameter*tau ; - w1 = w-1. ; - cth = w-w1*(w+1.)/sqrt(w1*w1+4.*w*G4UniformRand()) ; - } - } - else - cth = -1.+2.*G4UniformRand() ; - - sth = sqrt(1.-cth*cth) ; - - phi = twopi*G4UniformRand() ; - - dirx = sth*cos(phi) ; - diry = sth*sin(phi) ; - dirz = cth ; - - G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection(); - - G4ThreeVector newDirection(dirx,diry,dirz) ; - - - newDirection.rotateUz(ParticleDirection) ; - - fParticleChange.SetMomentumChange(newDirection.x(), - newDirection.y(), - newDirection.z()) ; - - if(fLatDisplFlag) - { - // compute mean lateral displacement ............... - // only for safety > tolerance !!!!!!!!! - safetyminustolerance = stepData.GetPostStepPoint()->GetSafety(); - - if(safetyminustolerance > 0.) - { - if(tau0.) - rmean = 2.*fTransportMeanFreePath*sqrt(rmean/3.) ; - else - rmean = 0. ; - - // for rmean > 0) only - if(rmean>0.) - { - if(rmean>safetyminustolerance) - rmean = safetyminustolerance ; - - // sample direction of lateral displacement - phi = twopi*G4UniformRand() ; - - dirx = cos(phi) ; - diry = sin(phi) ; - dirz = 0. ; - - G4ThreeVector latDirection(dirx,diry,dirz); - - latDirection.rotateUz(ParticleDirection) ; - - // compute new endpoint of the Step - G4ThreeVector newPosition= - stepData.GetPostStepPoint()->GetPosition()+ - rmean*latDirection; - - G4Navigator *navigator= - G4TransportationManager::GetTransportationManager() - ->GetNavigatorForTracking(); - navigator->LocateGlobalPointWithinVolume( newPosition ); - - fParticleChange.SetPositionChange(newPosition) ; - } - } - } - - - return &fParticleChange ; - + } } + // do the true -> geom transformation + lambda1 = -1.; + z1 = 1.e10; + + if (fTransportMeanFreePath > biglambda) zPathLength = tPathLength; + else + { + range = G4EnergyLossTables::GetRange(aParticle->GetDefinition(), + KineticEnergy,aMaterial); + tau = tPathLength/fTransportMeanFreePath ; + + if (tPathLength/range < dtrl) zmean = fTransportMeanFreePath*(1.-exp(-tau)); + else + { + T1 = G4EnergyLossTables::GetPreciseEnergyFromRange( + aParticle->GetDefinition(),range-0.5*tPathLength,aMaterial); + lambda1 = (*theTransportMeanFreePathTable) + (materialIndex)->GetValue(T1,isOut); + z1 = fTransportMeanFreePath*(1.-exp(-0.5*tau)); + cth1 = exp(-0.5*tau); + zmean = z1 + lambda1*(1.-exp(-0.5*tPathLength/lambda1))*cth1; + } + + // sample z + if ((pcz > 0.) && (2.*zmean > tPathLength)) + { + z0 = zmean+pcz*(tPathLength-zmean); + kz = (2.*zmean-tPathLength)/(z0-zmean); + + if (G4UniformRand() < z0/tPathLength) + zPathLength = z0*exp(log(G4UniformRand())/(kz+1.)); + else zPathLength = tPathLength-(tPathLength-z0) + *exp(log(1.-G4UniformRand())/(kz+1.)); + } + else zPathLength = zmean; + } + + tLast = tPathLength; + zLast = zPathLength; + + return zPathLength; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4VParticleChange* G4MultipleScattering::AlongStepDoIt( + const G4Track& track,const G4Step& Step) +{ + // only a geom path->true path transformation is performed + + fParticleChange.Initialize(track); + + G4double geomPathLength = track.GetStepLength(); + G4double truePathLength; + + if (fTransportMeanFreePath > biglambda) truePathLength = geomPathLength; + else if(geomPathLength == zLast) truePathLength = tLast; + else + { + if (geomPathLength <= z1) + { + if (geomPathLength < fTransportMeanFreePath) + truePathLength = -fTransportMeanFreePath + *log(1.-geomPathLength/fTransportMeanFreePath); + else truePathLength = range; + + lambda1 = -1.; + } + else + { + if ((geomPathLength-z1)/(cth1*lambda1) < 1.) + truePathLength = 0.5*tLast-lambda1 + *log(1.-(geomPathLength-z1)/(cth1*lambda1)); + else truePathLength = range; + } + } + + fParticleChange.SetTrueStepLength(truePathLength); + + return &fParticleChange; + +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4VParticleChange* G4MultipleScattering::PostStepDoIt( + const G4Track& trackData, + const G4Step& stepData) +{ + const G4double kappa = 2.5, kappapl1 = kappa+1., kappami1 = kappa-1. ; + + G4bool isOut; + + fParticleChange.Initialize(trackData); + + G4double truestep = stepData.GetStepLength(); + + const G4DynamicParticle* aParticle = trackData.GetDynamicParticle(); + G4double KineticEnergy = aParticle->GetKineticEnergy(); + + fTransportMeanFreePath = (*theTransportMeanFreePathTable) + (materialIndex)->GetValue(KineticEnergy,isOut); + + // change direction first ( scattering ) + G4double tau = truestep/fTransportMeanFreePath; + G4double cth; + + if (tau < tausmall) cth = 1.; + else if(tau > taubig) cth = -1.+2.*G4UniformRand(); + else + { + if(lambda1 > 0.) tau = 0.5*tLast/lambda1 + +(truestep-0.5*tLast)/fTransportMeanFreePath; + if(tau > taubig) cth = -1.+2.*G4UniformRand(); + else + { + G4double e=exp(-tau); + if (palfa < 0.) cth = e; + else + { + G4double a = exp( palfa*tau), ap1=a+1., am1=a-1., aw1 = 1./a; + G4double w = exp(-pbeta*tau), b = 2.*w/(1.-w), bw1=w; + G4double c = 1.+pc0*tau, cp1=c+1., cm1=c-1.; + G4double gamma1 = pgamma-1.; + G4double w1 = exp(log(cp1)*gamma1), w2=exp(log(cm1)*gamma1); + G4double cw1 = c-gamma1*(w1*cm1-w2*cp1)/((gamma1-1.)*(w1-w2)); + G4double q = 1.-exp(-pq0-pq1*tau); + G4double prob = (e-cw1)/(q*aw1+(1.-q)*bw1-cw1); + if (G4UniformRand() <= prob) + { + if (G4UniformRand() <= q) + cth = a-am1*ap1/sqrt(am1*am1+4.*a*G4UniformRand()); + else cth = -1.+2.*exp(log(G4UniformRand())/(b+1.)); + } + else cth = c-cp1*cm1/exp(log(w2+(w1-w2)*G4UniformRand())/gamma1); + } + } + } + + G4double sth = sqrt(1.-cth*cth); + G4double phi = twopi*G4UniformRand(); + G4double dirx = sth*cos(phi), diry = sth*sin(phi), dirz = cth; + + G4ParticleMomentum ParticleDirection = aParticle->GetMomentumDirection(); + + G4ThreeVector newDirection(dirx,diry,dirz); + newDirection.rotateUz(ParticleDirection); + fParticleChange.SetMomentumChange(newDirection.x(), + newDirection.y(), + newDirection.z()); + + if (fLatDisplFlag) + { + // compute mean lateral displacement, only for safety > tolerance ! + G4double safetyminustolerance = stepData.GetPostStepPoint()->GetSafety(); + G4double rmean, etau; + + if (safetyminustolerance > 0.) + { + if (tau < tausmall) rmean = 0.; + else if(tau < taulim) rmean = 5.*tau*tau*tau/12.; + else + { + if(tau0.) rmean = 2.*fTransportMeanFreePath*sqrt(rmean/3.); + else rmean = 0.; + + // for rmean > 0) only + if (rmean > 0.) + { + if (rmean>safetyminustolerance) rmean = safetyminustolerance; + + // sample direction of lateral displacement + phi = twopi*G4UniformRand(); + dirx = cos(phi); diry = sin(phi); dirz = 0.; + + G4ThreeVector latDirection(dirx,diry,dirz); + latDirection.rotateUz(ParticleDirection); + + // compute new endpoint of the Step + G4ThreeVector newPosition = stepData.GetPostStepPoint()->GetPosition() + + rmean*latDirection; + + G4Navigator* navigator = + G4TransportationManager::GetTransportationManager() + ->GetNavigatorForTracking(); + navigator->LocateGlobalPointWithinVolume(newPosition); + + fParticleChange.SetPositionChange(newPosition); + } + } + } + + return &fParticleChange; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + + G4bool G4MultipleScattering::StorePhysicsTable(G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + G4String filename; + // store mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + if (!theTransportMeanFreePathTable->StorePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->StorePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to store the PhysicsTables in " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... + +G4bool G4MultipleScattering::RetrievePhysicsTable( + G4ParticleDefinition* particle, + const G4String& directory, + G4bool ascii) +{ + // delete theTransportMeanFreePathTable + if (theTransportMeanFreePathTable != 0) { + theTransportMeanFreePathTable->clearAndDestroy(); + delete theTransportMeanFreePathTable; + } + + G4String filename; + + // retreive mean free path table + filename = GetPhysicsTableFileName(particle,directory,"MeanFreePath",ascii); + theTransportMeanFreePathTable = + new G4PhysicsTable(G4Material::GetNumberOfMaterials()); + if (!theTransportMeanFreePathTable->RetrievePhysicsTable(filename, ascii) ){ + G4cout << " FAIL theMeanFreePathTable->RetrievePhysicsTable in " << filename + << G4endl; + return false; + } + + G4cout << GetProcessName() << " for " << particle->GetParticleName() + << ": Success to retrieve the PhysicsTables from " + << directory << G4endl; + return true; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... void G4MultipleScattering::PrintInfoDefinition() { @@ -590,9 +705,10 @@ void G4MultipleScattering::PrintInfoDefinition() comments += " displacement of the particle , too."; G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy, - "Energy") + << "\n PhysicsTables from " + << G4BestUnit(LowestKineticEnergy ,"Energy") << " to " << G4BestUnit(HighestKineticEnergy,"Energy") << " in " << TotBin << " bins. \n"; } +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... diff --git a/source/processes/electromagnetic/utils/src/G4MultipleScatteringx.cc b/source/processes/electromagnetic/utils/src/G4MultipleScatteringx.cc deleted file mode 100644 index 46f72bd5a7..0000000000 --- a/source/processes/electromagnetic/utils/src/G4MultipleScatteringx.cc +++ /dev/null @@ -1,643 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4MultipleScatteringx.cc,v 1.4.2.1 2001/06/28 19:12:48 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -------------------------------------------------------------- -// 16/05/01 value of cparm changed , L.Urban -// 18/05/01 V.Ivanchenko Clean up againist Linux ANSI compilation -// -------------------------------------------------------------- - -#include "G4MultipleScatteringx.hh" -#include "G4Navigator.hh" -#include "G4TransportationManager.hh" - - G4MultipleScatteringx::G4MultipleScatteringx(const G4String& processName) - : G4VContinuousDiscreteProcess(processName), - theTransportMeanFreePathTable(0), - fTransportMeanFreePath (1.e12), - range(1.e10*mm), - alpha1(5.), - stepFlag(0), - biglambda (1.e10*mm), - LowestKineticEnergy(0.1*keV), - HighestKineticEnergy(100.*TeV), - TotBin(100), - theElectron(G4Electron::Electron()), - thePositron(G4Positron::Positron()), - lastMaterial(0), - lastKineticEnergy(0.), - materialIndex(0), - tLast (0.0), - zLast (0.0), - Tlimit(1.*keV), - scatteringparameter1(0.9), - scatteringparameter2(5.0), - scatteringparameter3(1.0), - boundary(false), - tuning (1.00), - cparm (1.5), - fLatDisplFlag(true), - NuclCorrPar (0.0615), - FactPar(0.40) - { } - - G4MultipleScatteringx::~G4MultipleScatteringx() - { - if(theTransportMeanFreePathTable) - { - theTransportMeanFreePathTable->clearAndDestroy() ; - delete theTransportMeanFreePathTable ; - } - } - -// .........methods.............................. - - void G4MultipleScatteringx::BuildPhysicsTable( - const G4ParticleDefinition& aParticleType) - - // tables are built for MATERIALS - { - const G4double sigmafactor = twopi*classic_electr_radius* - classic_electr_radius ; - G4double KineticEnergy,AtomicNumber,AtomicWeight, - sigma,lambda ; - G4double density ; - - // destroy old tables if any - if(theTransportMeanFreePathTable) - { - theTransportMeanFreePathTable->clearAndDestroy() ; - delete theTransportMeanFreePathTable ; - } - - // create table - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length() ; - - theTransportMeanFreePathTable = new G4PhysicsTable(numOfMaterials) ; - - // loop for materials - for (G4int J=0; JGetElementVector() ; - const G4double* theAtomicNumDensityVector = - material->GetAtomicNumDensityVector() ; - const G4int NumberOfElements = - material->GetNumberOfElements() ; - density = material->GetDensity() ; - - // loop for kinetic energy values - for (G4int i=0; iGetLowEdgeEnergy(i) ; - sigma = 0. ; - - // loop for element in the material - for (G4int iel=0; ielGetZ() ; - AtomicWeight = (*theElementVector)(iel)->GetA() ; - sigma += theAtomicNumDensityVector[iel]* - ComputeTransportCrossSection(aParticleType, - KineticEnergy, - AtomicNumber,AtomicWeight) ; - } - sigma *= sigmafactor ; - - lambda = 1./sigma ; - - aVector->PutValue(i,lambda) ; - } - - theTransportMeanFreePathTable->insert(aVector) ; - - } - - if( (&aParticleType == G4Electron::Electron()) || - (&aParticleType == G4MuonPlus::MuonPlus()) || - (&aParticleType == G4Proton::Proton()) ) - { - PrintInfoDefinition() ; - } - } - - - G4double G4MultipleScatteringx::ComputeTransportCrossSection( - const G4ParticleDefinition& aParticleType, - G4double KineticEnergy, - G4double AtomicNumber,G4double AtomicWeight) - { - const G4double epsfactor = 2.*electron_mass_c2*electron_mass_c2* - Bohr_radius*Bohr_radius/(hbarc*hbarc) ; - const G4double epsmin = 1.e-4 , epsmax = 1.e10 ; - - - const G4double Zdat[15] = {4.,6.,13.,20.,26.,29.,32.,38.,47., - 50.,56.,64.,74.,79.,82. } ; - - const G4double Tdat[22] = - { 0.0001*MeV,0.0002*MeV,0.0004*MeV,0.0007*MeV, - 0.001*MeV,0.002*MeV,0.004*MeV,0.007*MeV,0.01*MeV, - 0.02*MeV,0.04*MeV,0.07*MeV,0.1*MeV,0.2*MeV, - 0.4*MeV,0.7*MeV,1.*MeV,2.*MeV,4.*MeV, - 7.*MeV,10.*MeV,20.*MeV} ; - - // corr. factors for e-/e+ lambda - - const G4double celectron[15][22] = - {{1.125,1.072,1.051,1.047,1.047,1.050,1.052,1.054, - 1.054,1.057,1.062,1.069,1.075,1.090,1.105,1.111, - 1.112,1.108,1.100,1.093,1.089,1.087 }, - {1.408,1.246,1.143,1.096,1.077,1.059,1.053,1.051, - 1.052,1.053,1.058,1.065,1.072,1.087,1.101,1.108, - 1.109,1.105,1.097,1.090,1.086,1.082 }, - {2.833,2.268,1.861,1.612,1.486,1.309,1.204,1.156, - 1.136,1.114,1.106,1.106,1.109,1.119,1.129,1.132, - 1.131,1.124,1.113,1.104,1.099,1.098 }, - {3.879,3.016,2.380,2.007,1.818,1.535,1.340,1.236, - 1.190,1.133,1.107,1.099,1.098,1.103,1.110,1.113, - 1.112,1.105,1.096,1.089,1.085,1.098 }, - {6.937,4.330,2.886,2.256,1.987,1.628,1.395,1.265, - 1.203,1.122,1.080,1.065,1.061,1.063,1.070,1.073, - 1.073,1.070,1.064,1.059,1.056,1.056 }, - {9.616,5.708,3.424,2.551,2.204,1.762,1.485,1.330, - 1.256,1.155,1.099,1.077,1.070,1.068,1.072,1.074, - 1.074,1.070,1.063,1.059,1.056,1.052 }, - {11.72,6.364,3.811,2.806,2.401,1.884,1.564,1.386, - 1.300,1.180,1.112,1.082,1.073,1.066,1.068,1.069, - 1.068,1.064,1.059,1.054,1.051,1.050 }, - {18.08,8.601,4.569,3.183,2.662,2.025,1.646,1.439, - 1.339,1.195,1.108,1.068,1.053,1.040,1.039,1.039, - 1.039,1.037,1.034,1.031,1.030,1.036 }, - {18.22,10.48,5.333,3.713,3.115,2.367,1.898,1.631, - 1.498,1.301,1.171,1.105,1.077,1.048,1.036,1.033, - 1.031,1.028,1.024,1.022,1.021,1.024 }, - {14.14,10.65,5.710,3.929,3.266,2.453,1.951,1.669, - 1.528,1.319,1.178,1.106,1.075,1.040,1.027,1.022, - 1.020,1.017,1.015,1.013,1.013,1.020 }, - {14.11,11.73,6.312,4.240,3.478,2.566,2.022,1.720, - 1.569,1.342,1.186,1.102,1.065,1.022,1.003,0.997, - 0.995,0.993,0.993,0.993,0.993,1.011 }, - {22.76,20.01,8.835,5.287,4.144,2.901,2.219,1.855, - 1.677,1.410,1.224,1.121,1.073,1.014,0.986,0.976, - 0.974,0.972,0.973,0.974,0.975,0.987 }, - {50.77,40.85,14.13,7.184,5.284,3.435,2.520,2.059, - 1.837,1.512,1.283,1.153,1.091,1.010,0.969,0.954, - 0.950,0.947,0.949,0.952,0.954,0.963 }, - {65.87,59.06,15.87,7.570,5.567,3.650,2.682,2.182, - 1.939,1.579,1.325,1.178,1.108,1.014,0.965,0.947, - 0.941,0.938,0.940,0.944,0.946,0.954 }, - // {45.60,47.34,15.92,7.810,5.755,3.767,2.760,2.239, // paper..... - {55.60,47.34,15.92,7.810,5.755,3.767,2.760,2.239, - 1.985,1.609,1.343,1.188,1.113,1.013,0.960,0.939, - 0.933,0.930,0.933,0.936,0.939,0.949 }}; - - const G4double cpositron[15][22] = { - {2.589,2.044,1.658,1.446,1.347,1.217,1.144,1.110, - 1.097,1.083,1.080,1.086,1.092,1.108,1.123,1.131, - 1.131,1.126,1.117,1.108,1.103,1.100 }, - {3.904,2.794,2.079,1.710,1.543,1.325,1.202,1.145, - 1.122,1.096,1.089,1.092,1.098,1.114,1.130,1.137, - 1.138,1.132,1.122,1.113,1.108,1.102 }, - {7.970,6.080,4.442,3.398,2.872,2.127,1.672,1.451, - 1.357,1.246,1.194,1.179,1.178,1.188,1.201,1.205, - 1.203,1.190,1.173,1.159,1.151,1.145 }, - {9.714,7.607,5.747,4.493,3.815,2.777,2.079,1.715, - 1.553,1.353,1.253,1.219,1.211,1.214,1.225,1.228, - 1.225,1.210,1.191,1.175,1.166,1.174 }, - {17.97,12.95,8.628,6.065,4.849,3.222,2.275,1.820, - 1.624,1.382,1.259,1.214,1.202,1.202,1.214,1.219, - 1.217,1.203,1.184,1.169,1.160,1.151 }, - {24.83,17.06,10.84,7.355,5.767,3.707,2.546,1.996, - 1.759,1.465,1.311,1.252,1.234,1.228,1.238,1.241, - 1.237,1.222,1.201,1.184,1.174,1.159 }, - {23.26,17.15,11.52,8.049,6.375,4.114,2.792,2.155, - 1.880,1.535,1.353,1.281,1.258,1.247,1.254,1.256, - 1.252,1.234,1.212,1.194,1.183,1.170 }, - {22.33,18.01,12.86,9.212,7.336,4.702,3.117,2.348, - 2.015,1.602,1.385,1.297,1.268,1.251,1.256,1.258, - 1.254,1.237,1.214,1.195,1.185,1.179 }, - {33.91,24.13,15.71,10.80,8.507,5.467,3.692,2.808, - 2.407,1.873,1.564,1.425,1.374,1.330,1.324,1.320, - 1.312,1.288,1.258,1.235,1.221,1.205 }, - {32.14,24.11,16.30,11.40,9.015,5.782,3.868,2.917, - 2.490,1.925,1.596,1.447,1.391,1.342,1.332,1.327, - 1.320,1.294,1.264,1.240,1.226,1.214 }, - {29.51,24.07,17.19,12.28,9.766,6.238,4.112,3.066, - 2.602,1.995,1.641,1.477,1.414,1.356,1.342,1.336, - 1.328,1.302,1.270,1.245,1.231,1.233 }, - {38.19,30.85,21.76,15.35,12.07,7.521,4.812,3.498, - 2.926,2.188,1.763,1.563,1.484,1.405,1.382,1.371, - 1.361,1.330,1.294,1.267,1.251,1.239 }, - {49.71,39.80,27.96,19.63,15.36,9.407,5.863,4.155, - 3.417,2.478,1.944,1.692,1.589,1.480,1.441,1.423, - 1.409,1.372,1.330,1.298,1.280,1.258 }, - {59.25,45.08,30.36,20.83,16.15,9.834,6.166,4.407, - 3.641,2.648,2.064,1.779,1.661,1.531,1.482,1.459, - 1.442,1.400,1.354,1.319,1.299,1.272 }, - {56.38,44.29,30.50,21.18,16.51,10.11,6.354,4.542, - 3.752,2.724,2.116,1.817,1.692,1.554,1.499,1.474, - 1.456,1.412,1.364,1.328,1.307,1.282 }}; - - G4double Z23,ParticleMass,rat2,Charge,TotalEnergy,beta2,bg2, - eps,Z1,Z2,ratZ,T,E,b2small,b2big,ratb2,c1,c2,cc1,cc2, - corr,sigma,corrfactor,ChargeSquare ; - G4int iZ,iT ; - - Z23 = 2.*log(AtomicNumber)/3. ; - Z23 = exp(Z23) ; - - ParticleMass = aParticleType.GetPDGMass() ; - - rat2 = ParticleMass/electron_mass_c2 ; - rat2 = rat2*rat2 ; - - Charge = aParticleType.GetPDGCharge() ; - ChargeSquare = Charge*Charge/(eplus*eplus) ; - - TotalEnergy = KineticEnergy + ParticleMass ; - - beta2 = KineticEnergy*(TotalEnergy+ParticleMass)/ - (TotalEnergy*TotalEnergy) ; - bg2 = KineticEnergy*(TotalEnergy+ParticleMass)/ - (ParticleMass*ParticleMass) ; - - eps = rat2*epsfactor*bg2/Z23 ; - - if(eps epsmax) - w1=log(2.*eps)+1./eps-3./(8.*eps*eps) ; - else - w1=log((a+1.)/(a-1.))-2./(a+1.) ; - - w = 1./((1.-x0)*eps) ; - if(w < epsmin) - w2=-log(w)-1.+2.*w-1.5*w*w ; - else - w2 = log((a-x0)/(a-1.))-(1.-x0)/(a-x0) ; - - corrnuclsize = w1/w2 ; - - // #################################################### - corrnuclsize = exp(-FactPar*proton_mass_c2/KineticEnergy)* - (corrnuclsize-1.)+1. ; - } - - // correct this value using the corrections computed for e+/e- - KineticEnergy *= electron_mass_c2/ParticleMass ; - - // interpolate in AtomicNumber and beta2 - - // get bin number in Z - iZ = 14 ; - - while ((iZ>=0)&&(Zdat[iZ]>=AtomicNumber)) iZ -= 1 ; - if (iZ==14) iZ = 13 ; - if (iZ==-1) iZ = 0 ; - - Z1 = Zdat[iZ] ; - Z2 = Zdat[iZ+1] ; - ratZ = (AtomicNumber-Z1)/(Z2-Z1) ; - - // get bin number in T (beta2) - iT = 21 ; - while ((iT>=0)&&(Tdat[iT]>=KineticEnergy)) - iT -= 1 ; - if(iT==21) - iT = 20 ; - if(iT==-1) - iT = 0 ; - - // calculate betasquare values - T = Tdat[iT] ; - E = T + electron_mass_c2 ; - b2small = T*(E+electron_mass_c2)/(E*E) ; - T = Tdat[iT+1] ; - E = T + electron_mass_c2 ; - b2big = T*(E+electron_mass_c2)/(E*E) ; - ratb2 = (beta2-b2small)/(b2big-b2small) ; - - corrfactor = tuning*(1.+cparm)/(1.+cparm*beta2) ; - - if(Charge < 0.) - { - c1 = celectron[iZ][iT] ; - c2 = celectron[iZ+1][iT] ; - cc1 = c1+ratZ*(c2-c1) ; - - c1 = celectron[iZ][iT+1] ; - c2 = celectron[iZ+1][iT+1] ; - cc2 = c1+ratZ*(c2-c1) ; - - corr = cc1+ratb2*(cc2-cc1) ; - - sigma /= corr ; - - } - - if(Charge > 0.) - { - c1 = cpositron[iZ][iT] ; - c2 = cpositron[iZ+1][iT] ; - cc1 = c1+ratZ*(c2-c1) ; - - c1 = cpositron[iZ][iT+1] ; - c2 = cpositron[iZ+1][iT+1] ; - cc2 = c1+ratZ*(c2-c1) ; - - corr = cc1+ratb2*(cc2-cc1) ; - - sigma /= corr ; - } - - sigma *= corrfactor ; - - // nucl. size correction for particles other than e+/e- only at present !!!! - if((&aParticleType != G4Electron::Electron()) && - (&aParticleType != G4Positron::Positron()) ) - sigma /= corrnuclsize ; - - return sigma ; - } - - - G4VParticleChange* G4MultipleScatteringx::PostStepDoIt( - const G4Track& trackData, - const G4Step& stepData) - { - static G4double taulim=1.e-6,randlim = 0.25*taulim*taulim ; - static const G4double tausmall = 5.e-5,taubig =10., - kappa = 2.5, kappapl1 = kappa+1., kappami1 = kappa-1. ; - const G4DynamicParticle* aParticle ; - G4double KineticEnergy,truestep,tau,cth,sth,phi, - dirx,diry,dirz,w,etau,rmean,safetyminustolerance; - G4double prob = 0.0; - G4bool isOut; - - fParticleChange.Initialize(trackData) ; - - truestep = stepData.GetStepLength() ; - - aParticle = trackData.GetDynamicParticle() ; - - KineticEnergy = aParticle->GetKineticEnergy() ; - - if(stepFlag == 0) - { - fTransportMeanFreePath = (*theTransportMeanFreePathTable) - (materialIndex)->GetValue(KineticEnergy,isOut); - } - - // change direction first ( scattering ) .......................... - - static G4double cp0 = 3.218 ; - static G4double cp1 = 118.08 ; - static G4double cmax=5.0 ; - - static G4double alfa0=0.180 ; - static G4double alfa1=53.08 ; - static G4double alfamax = 1.0 ; - - G4double alfa ; - G4double a,ap1,am1,b,c,c1,c2,c3,u1,u2,u3,v1,v2,v3,I0,I1,I2,e ; - G4double w1,w2 ; - - if(stepFlag == 0) - { - tau = truestep/fTransportMeanFreePath ; - } - else - { - tau = truestep/range ; - if(tau < taulim) - prob = exp(-(alpha1-1.)*tau)*(1.+scatteringparameter1*tau) ; - else if(tau < 1.) - prob = exp((alpha1-1.)*log(1.-tau))*(1.+scatteringparameter1*tau) ; - else - prob = 0. ; - } - - if(tau >= taulim) - { - if(stepFlag == 0) - { - if(tau < taubig) - { - - e=exp(-tau) ; - - alfa =alfa0+alfa1*tau ; - if(alfa > alfamax) alfa=alfamax ; - a = exp(alfa*tau) ; - am1 = a-1. ; - ap1 = a+1. ; - - c=cp0+cp1*tau ; - if(c > cmax) c=cmax ; - if(c > scatteringparameter2) c=scatteringparameter2 ; - c1=c-1. ; - c2=c-2. ; - c3=c-3. ; - - u3=exp(log(ap1)*c3) ; - v3=exp(log(am1)*c3) ; - u2=u3*ap1 ; - v2=v3*am1 ; - u1=u2*ap1 ; - v1=v2*am1 ; - - I0 = (1./v1-1./u1)/c1 ; - I1 = a*I0-(1./v2-1./u2)/c2 ; - I2 = a*a*I0-2.*a*(1./v2-1./u2)/c2+(1./v3-1./u3)/c3 ; - - b = c/(am1+c) ; - if(b > 1.) b = 1. ; // from the definition of f(x) - - prob = e*(I0-b*I1)/(I1-b*I2) ; - if(prob > 1.) prob = 1. ; - - if(G4UniformRand() <= prob) - { - w1 = 1.-a*b ; - w2 = G4std::max(w1/am1,w1/ap1)+b ; - - do - { - cth = a -am1*ap1/exp(log(v2+G4UniformRand()*(u2-v2))/c2) ; - } while ( G4UniformRand() > (w1/(a-cth)+b)/w2 ) ; - } - else - { - cth = -1.+2.*G4UniformRand() ; - } - } - else - { - cth = -1.+2.*G4UniformRand() ; - } - } - else - { - if(G4UniformRand()GetMomentumDirection(); - - G4ThreeVector newDirection(dirx,diry,dirz) ; - - - newDirection.rotateUz(ParticleDirection) ; - fParticleChange.SetMomentumChange(newDirection.x(), - newDirection.y(), - newDirection.z()) ; - - if(fLatDisplFlag) - { - // compute mean lateral displacement ............... - // only for safety > tolerance !!!!!!!!! - safetyminustolerance = stepData.GetPostStepPoint()->GetSafety(); - - if(safetyminustolerance > 0.) - { - if(tau0.) - rmean = 2.*fTransportMeanFreePath*sqrt(rmean/3.) ; - else - rmean = 0. ; - - // for rmean > 0) only - if(rmean>0.) - { - if(rmean>safetyminustolerance) - rmean = safetyminustolerance ; - - // sample direction of lateral displacement - phi = twopi*G4UniformRand() ; - - dirx = cos(phi) ; - diry = sin(phi) ; - dirz = 0. ; - - G4ThreeVector latDirection(dirx,diry,dirz); - - latDirection.rotateUz(ParticleDirection) ; - - // compute new endpoint of the Step - G4ThreeVector newPosition= - stepData.GetPostStepPoint()->GetPosition()+ - rmean*latDirection; - - G4Navigator *navigator= - G4TransportationManager::GetTransportationManager() - ->GetNavigatorForTracking(); - navigator->LocateGlobalPointWithinVolume( newPosition ); - - fParticleChange.SetPositionChange(newPosition) ; - } - } - } - - - return &fParticleChange ; - - } - - -void G4MultipleScatteringx::PrintInfoDefinition() -{ - G4String comments = " Tables of transport mean free paths."; - comments += "\n New model of MSC , computes the lateral \n"; - comments += " displacement of the particle , too."; - - G4cout << G4endl << GetProcessName() << ": " << comments - << "\n PhysicsTables from " << G4BestUnit(LowestKineticEnergy, - "Energy") - << " to " << G4BestUnit(HighestKineticEnergy,"Energy") - << " in " << TotBin << " bins. \n"; -} - diff --git a/source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc b/source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc index 400920122d..6a9810494c 100644 --- a/source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc +++ b/source/processes/electromagnetic/utils/src/G4VEnergyLoss.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VEnergyLoss.cc,v 1.21.2.1 2001/06/28 19:12:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEnergyLoss.cc,v 1.28 2001/11/08 15:56:52 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- @@ -33,6 +33,9 @@ // bugfix in fluct. // (some variables are doubles instead of ints now),L.Urban 23/03/01 // 18/05/01 V.Ivanchenko Clean up againist Linux ANSI compilation +// 17-09-01 migration of Materials to pure STL (mma) +// 26-10-01 static inline functions moved from .hh file (mma) +// 08.11.01 some static methods,data members are not static L.Urban // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -42,12 +45,6 @@ //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -G4double G4VEnergyLoss::ParticleMass ; -G4double G4VEnergyLoss::taulow ; -G4double G4VEnergyLoss::tauhigh ; -G4double G4VEnergyLoss::ltaulow ; -G4double G4VEnergyLoss::ltauhigh ; - G4bool G4VEnergyLoss::rndmStepFlag = false; G4bool G4VEnergyLoss::EnlossFlucFlag = true; @@ -104,14 +101,39 @@ G4VEnergyLoss::G4VEnergyLoss(G4VEnergyLoss& right) //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +void G4VEnergyLoss::SetRndmStep(G4bool value) {rndmStepFlag = value;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VEnergyLoss::SetEnlossFluc(G4bool value) {EnlossFlucFlag = value;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VEnergyLoss::SetSubSec(G4bool value) {subSecFlag = value;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VEnergyLoss::SetMinDeltaCutInRange(G4double value) +{MinDeltaCutInRange = value; setMinDeltaCutInRange = true;} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + +void G4VEnergyLoss::SetStepFunction(G4double c1, G4double c2) +{ + dRoverRange = c1; finalRange = c2; + c1lim=dRoverRange; + c2lim=2.*(1-dRoverRange)*finalRange; + c3lim=-(1.-dRoverRange)*finalRange*finalRange; +} + +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... + G4PhysicsTable* G4VEnergyLoss::BuildRangeTable( G4PhysicsTable* theDEDXTable,G4PhysicsTable* theRangeTable, G4double LowestKineticEnergy,G4double HighestKineticEnergy,G4int TotBin) // Build range table from the energy loss table { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theRangeTable) { theRangeTable->clearAndDestroy(); @@ -143,10 +165,8 @@ void G4VEnergyLoss::BuildRangeVector(G4PhysicsTable* theDEDXTable, G4int nbin=100,i; G4bool isOut; - // ?????????????????????????????????? - static const G4double small = 1.e-6 ; - - static G4double masslimit = 0.52*MeV ; + const G4double small = 1.e-6 ; + const G4double masslimit = 0.52*MeV ; G4double tlim=2.*MeV,t1=0.1*MeV,t2=0.025*MeV ; G4double tlime=0.2*keV,factor=2.*electron_mass_c2 ; @@ -348,9 +368,7 @@ G4PhysicsTable* G4VEnergyLoss::BuildLabTimeTable(G4PhysicsTable* theDEDXTable, G4double HighestKineticEnergy,G4int TotBin) { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theLabTimeTable) { theLabTimeTable->clearAndDestroy(); @@ -382,9 +400,7 @@ G4PhysicsTable* G4VEnergyLoss::BuildProperTimeTable(G4PhysicsTable* theDEDXTable G4double HighestKineticEnergy,G4int TotBin) { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theProperTimeTable) { theProperTimeTable->clearAndDestroy(); @@ -608,9 +624,7 @@ G4PhysicsTable* G4VEnergyLoss::BuildInverseRangeTable(G4PhysicsTable* theRangeTa { G4double SmallestRange,BiggestRange ; G4bool isOut ; - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theInverseRangeTable) { theInverseRangeTable->clearAndDestroy(); @@ -704,9 +718,7 @@ G4PhysicsTable* G4VEnergyLoss::BuildRangeCoeffATable(G4PhysicsTable* theRangeTab // Build tables of coefficients for the energy loss calculation // create table for coefficients "A" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theRangeCoeffATable) { theRangeCoeffATable->clearAndDestroy(); @@ -767,9 +779,7 @@ G4PhysicsTable* G4VEnergyLoss::BuildRangeCoeffBTable(G4PhysicsTable* theRangeTab // Build tables of coefficients for the energy loss calculation // create table for coefficients "B" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theRangeCoeffBTable) { theRangeCoeffBTable->clearAndDestroy(); @@ -829,9 +839,7 @@ G4PhysicsTable* G4VEnergyLoss::BuildRangeCoeffCTable(G4PhysicsTable* theRangeTab // Build tables of coefficients for the energy loss calculation // create table for coefficients "C" { - const G4MaterialTable* theMaterialTable= - G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); if(theRangeCoeffCTable) { theRangeCoeffCTable->clearAndDestroy(); @@ -892,12 +900,12 @@ G4double G4VEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, // calculate actual loss from the mean loss // The model used to get the fluctuation is essentially the same as in Glandz in Geant3. { - static const G4double minLoss = 1.*eV ; - static const G4double probLim = 0.01 ; - static const G4double sumaLim = -log(probLim) ; - static const G4double alim=10.; - static const G4double kappa = 10. ; - static const G4double factor = twopi_mc2_rcl2 ; + const G4double minLoss = 1.*eV ; + const G4double probLim = 0.01 ; + const G4double sumaLim = -log(probLim) ; + const G4double alim=10.; + const G4double kappa = 10. ; + const G4double factor = twopi_mc2_rcl2 ; // check if the material has changed ( cache mechanism) @@ -932,7 +940,7 @@ G4double G4VEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, G4double Tkin = aParticle->GetKineticEnergy(); ParticleMass = aParticle->GetMass() ; - threshold =((*G4Electron::Electron()).GetCutsInEnergy())[imat]; + threshold =((G4Electron::Electron())->GetEnergyCuts())[imat]; G4double rmass = electron_mass_c2/ParticleMass; G4double tau = Tkin/ParticleMass, tau1 = tau+1., tau2 = tau*(tau+2.); G4double Tm = 2.*electron_mass_c2*tau2/(1.+2.*tau1*rmass+rmass*rmass); @@ -1104,5 +1112,31 @@ G4double G4VEnergyLoss::GetLossWithFluct(const G4DynamicParticle* aParticle, return loss ; } -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... +//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... +G4bool G4VEnergyLoss::EqualCutVectors( G4double* vec1, G4double* vec2 ) +{ + if ( (vec1==0 ) || (vec2==0) ) return false; + + G4bool flag = true; + + for (size_t j=0; flag && jIsFilledVectorExist() diff --git a/source/processes/electromagnetic/xrays/include/G4Cerenkov.hh b/source/processes/electromagnetic/xrays/include/G4Cerenkov.hh index 96face4757..8a11033aed 100644 --- a/source/processes/electromagnetic/xrays/include/G4Cerenkov.hh +++ b/source/processes/electromagnetic/xrays/include/G4Cerenkov.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Cerenkov.hh,v 1.4.4.1 2001/06/28 19:12:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Cerenkov.hh,v 1.5 2001/07/11 10:03:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/processes/electromagnetic/xrays/include/G4ForwardXrayTR.hh b/source/processes/electromagnetic/xrays/include/G4ForwardXrayTR.hh index 140008697c..83385455ca 100644 --- a/source/processes/electromagnetic/xrays/include/G4ForwardXrayTR.hh +++ b/source/processes/electromagnetic/xrays/include/G4ForwardXrayTR.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ForwardXrayTR.hh,v 1.6.4.1 2001/06/28 19:12:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ForwardXrayTR.hh,v 1.7 2001/07/11 10:03:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4ForwardXrayTR -- header file // diff --git a/source/processes/electromagnetic/xrays/include/G4Scintillation.hh b/source/processes/electromagnetic/xrays/include/G4Scintillation.hh index fc9093f764..50a573782e 100644 --- a/source/processes/electromagnetic/xrays/include/G4Scintillation.hh +++ b/source/processes/electromagnetic/xrays/include/G4Scintillation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Scintillation.hh,v 1.4.4.1 2001/06/28 19:12:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Scintillation.hh,v 1.5 2001/07/11 10:03:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/processes/electromagnetic/xrays/include/G4TransitionRadiation.hh b/source/processes/electromagnetic/xrays/include/G4TransitionRadiation.hh index 5f244e11de..3b7031a0ae 100644 --- a/source/processes/electromagnetic/xrays/include/G4TransitionRadiation.hh +++ b/source/processes/electromagnetic/xrays/include/G4TransitionRadiation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TransitionRadiation.hh,v 1.5.4.1 2001/06/28 19:12:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TransitionRadiation.hh,v 1.6 2001/07/11 10:03:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4TransitionRadiation -- header file // diff --git a/source/processes/electromagnetic/xrays/src/G4Cerenkov.cc b/source/processes/electromagnetic/xrays/src/G4Cerenkov.cc index 3f823fca77..8e6dda373e 100644 --- a/source/processes/electromagnetic/xrays/src/G4Cerenkov.cc +++ b/source/processes/electromagnetic/xrays/src/G4Cerenkov.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Cerenkov.cc,v 1.9.4.1 2001/06/28 19:12:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Cerenkov.cc,v 1.12 2001/11/07 17:07:40 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // Cerenkov Radiation Class Implementation @@ -33,7 +33,8 @@ // Version: 2.1 // Created: 1996-02-21 // Author: Juliet Armstrong -// Updated: 2000-11-12 by Peter Gumplinger +// Updated: 2001-09-17, migration of Materials to pure STL (mma) +// 2000-11-12 by Peter Gumplinger // > add check on CerenkovAngleIntegrals->IsFilledVectorExist() // in method GetAverageNumberOfPhotons // > and a test for MeanNumPhotons <= 0.0 in DoIt @@ -289,7 +290,7 @@ G4Cerenkov::AlongStepDoIt(const G4Track& aTrack, const G4Step& aStep) G4Track* aSecondaryTrack = new G4Track(aCerenkovPhoton,aSecondaryTime,aSecondaryPosition); - aSecondaryTrack->SetTouchable(0); + aSecondaryTrack->SetTouchableHandle((G4VTouchable*)0); aSecondaryTrack->SetParentID(aTrack.GetTrackID()); @@ -314,7 +315,7 @@ void G4Cerenkov::BuildThePhysicsTable() const G4MaterialTable* theMaterialTable= G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); // create new physics table @@ -330,7 +331,7 @@ void G4Cerenkov::BuildThePhysicsTable() // Retrieve vector of refraction indices for the material // from the material's optical properties table - G4Material* aMaterial = (*theMaterialTable)(i); + G4Material* aMaterial = (*theMaterialTable)[i]; G4MaterialPropertiesTable* aMaterialPropertiesTable = aMaterial->GetMaterialPropertiesTable(); @@ -467,7 +468,7 @@ G4Cerenkov::GetAverageNumberOfPhotons(const G4DynamicParticle* aParticle, // - Refraction Indices for the current material // - new G4PhysicsOrderedFreeVector allocated to hold CAI's - G4int materialIndex = G4Material::GetMaterialTable()->index(aMaterial); + G4int materialIndex = aMaterial->GetIndex(); // Retrieve the Cerenkov Angle Integrals for this material diff --git a/source/processes/electromagnetic/xrays/src/G4ForwardXrayTR.cc b/source/processes/electromagnetic/xrays/src/G4ForwardXrayTR.cc index 0334334124..54255b1dec 100644 --- a/source/processes/electromagnetic/xrays/src/G4ForwardXrayTR.cc +++ b/source/processes/electromagnetic/xrays/src/G4ForwardXrayTR.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ForwardXrayTR.cc,v 1.4.4.1 2001/06/28 19:12:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ForwardXrayTR.cc,v 1.7 2001/10/24 16:40:54 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4ForwardXrayTR class -- implementation file @@ -34,6 +34,7 @@ // History: // 1st version 11.09.97 V. Grichine (Vladimir.Grichine@cern.ch ) // 2nd version 17.12.97 V. Grichine +// 17-09-01, migration of Materials to pure STL (mma) #include @@ -44,7 +45,6 @@ #include "G4ForwardXrayTR.hh" #include "G4Material.hh" -#include "G4MaterialTable.hh" #include "globals.hh" #include "G4PhysicsTable.hh" #include "G4PhysicsVector.hh" @@ -100,10 +100,10 @@ G4ForwardXrayTR::G4ForwardXrayTR() { G4int iMat, jMat, iTkin, iTR, iPlace ; static - const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4int numOfMat = theMaterialTable->length() ; + const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); + G4int numOfMat = G4Material::GetNumberOfMaterials(); fGammaCutInKineticEnergy = new G4double[numOfMat] ; - fGammaCutInKineticEnergy = fPtrGamma->GetCutsInEnergy() ; + fGammaCutInKineticEnergy = fPtrGamma->GetEnergyCuts() ; fMatIndex1 = -1 ; fMatIndex2 = -1 ; fAngleDistrTable = new G4PhysicsTable(numOfMat*(numOfMat - 1)*fTotBin) ; @@ -221,11 +221,11 @@ G4ForwardXrayTR( const G4String& matName1, // G4Material* pMat1, { // fMatIndex1 = pMat1->GetIndex() ; // fMatIndex2 = pMat2->GetIndex() ; - G4int iMat, jMat ; + G4int iMat; static const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - G4int numOfMat = theMaterialTable->length() ; + G4int numOfMat = G4Material::GetNumberOfMaterials(); for(iMat=0;iMatlength() ; + G4int numOfMat = G4Material::GetNumberOfMaterials() ; fGammaCutInKineticEnergy = new G4double[numOfMat] ; - fGammaCutInKineticEnergy = fPtrGamma->GetCutsInEnergy() ; + fGammaCutInKineticEnergy = fPtrGamma->GetEnergyCuts() ; fAngleDistrTable = new G4PhysicsTable(2*fTotBin) ; fEnergyDistrTable = new G4PhysicsTable(2*fTotBin) ; @@ -570,7 +570,7 @@ G4VParticleChange* G4ForwardXrayTR::PostStepDoIt(const G4Track& aTrack, G4double W, W1, W2, E1, E2 ; static const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - numOfMat = theMaterialTable->length() ; + numOfMat = G4Material::GetNumberOfMaterials() ; G4StepPoint* pPreStepPoint = aStep.GetPreStepPoint(); G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint(); @@ -599,14 +599,14 @@ G4VParticleChange* G4ForwardXrayTR::PostStepDoIt(const G4Track& aTrack, && ( iMat != fMatIndex1 && iMat != fMatIndex2 ) && ( jMat != fMatIndex1 && jMat != fMatIndex2 ) ) - || (*theMaterialTable)(iMat)->GetState() == - (*theMaterialTable)(jMat)->GetState() + || (*theMaterialTable)[iMat]->GetState() == + (*theMaterialTable)[jMat]->GetState() - ||( (*theMaterialTable)(iMat)->GetState() == kStateSolid - && (*theMaterialTable)(jMat)->GetState() == kStateLiquid ) + ||( (*theMaterialTable)[iMat]->GetState() == kStateSolid + && (*theMaterialTable)[jMat]->GetState() == kStateLiquid ) - ||( (*theMaterialTable)(iMat)->GetState() == kStateLiquid - && (*theMaterialTable)(jMat)->GetState() == kStateSolid ) ) + ||( (*theMaterialTable)[iMat]->GetState() == kStateLiquid + && (*theMaterialTable)[jMat]->GetState() == kStateSolid ) ) { return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep) ; } @@ -796,11 +796,11 @@ G4ForwardXrayTR::GetEnergyTR(G4int iMat, G4int jMat, G4int iTkin) const G4int iPlace, numOfMat, numOfTR, iTR, iTransfer ; G4double energyTR = 0.0 ; // return this value for no TR photons G4double energyPos ; - G4double W1, W2, E1, E2 ; + G4double W1, W2; static const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable() ; - numOfMat = theMaterialTable->length() ; + numOfMat = G4Material::GetNumberOfMaterials() ; // The case of equal or approximate (in terms of plasma energy) materials @@ -809,14 +809,14 @@ G4ForwardXrayTR::GetEnergyTR(G4int iMat, G4int jMat, G4int iTkin) const if ( iMat == jMat - || (*theMaterialTable)(iMat)->GetState() == - (*theMaterialTable)(jMat)->GetState() + || (*theMaterialTable)[iMat]->GetState() == + (*theMaterialTable)[jMat]->GetState() - ||( (*theMaterialTable)(iMat)->GetState() == kStateSolid - && (*theMaterialTable)(jMat)->GetState() == kStateLiquid ) + ||( (*theMaterialTable)[iMat]->GetState() == kStateSolid + && (*theMaterialTable)[jMat]->GetState() == kStateLiquid ) - ||( (*theMaterialTable)(iMat)->GetState() == kStateLiquid - && (*theMaterialTable)(jMat)->GetState() == kStateSolid ) ) + ||( (*theMaterialTable)[iMat]->GetState() == kStateLiquid + && (*theMaterialTable)[jMat]->GetState() == kStateSolid ) ) { return energyTR ; } diff --git a/source/processes/electromagnetic/xrays/src/G4Scintillation.cc b/source/processes/electromagnetic/xrays/src/G4Scintillation.cc index f23176c55f..74724a5104 100644 --- a/source/processes/electromagnetic/xrays/src/G4Scintillation.cc +++ b/source/processes/electromagnetic/xrays/src/G4Scintillation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Scintillation.cc,v 1.5.4.1 2001/06/28 19:12:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Scintillation.cc,v 1.8 2001/11/07 17:07:41 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // Scintillation Light Class Implementation @@ -36,6 +36,7 @@ // Updated: 2000-09-18 by Peter Gumplinger // > change: aSecondaryPosition=x0+rand*aStep.GetDeltaPosition(); // aSecondaryTrack->SetTouchable(0); +// 2001-09-17, migration of Materials to pure STL (mma) // // mail: gum@triumf.ca // @@ -156,11 +157,7 @@ G4Scintillation::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) //////////////////////////////////////////////////////////////// - G4double Pmin = Intensity->GetMinPhotonMomentum(); - G4double Pmax = Intensity->GetMaxPhotonMomentum(); - G4double dp = Pmax - Pmin; - - G4int materialIndex = G4Material::GetMaterialTable()->index(aMaterial); + G4int materialIndex = aMaterial->GetIndex(); // Retrieve the Scintillation Integral for this material // new G4PhysicsOrderedFreeVector allocated to hold CII's @@ -252,7 +249,7 @@ G4Scintillation::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) G4Track* aSecondaryTrack = new G4Track(aScintillationPhoton,aSecondaryTime,aSecondaryPosition); - aSecondaryTrack->SetTouchable(0); + aSecondaryTrack->SetTouchableHandle((G4VTouchable*)0); aSecondaryTrack->SetParentID(aTrack.GetTrackID()); @@ -278,7 +275,7 @@ void G4Scintillation::BuildThePhysicsTable() const G4MaterialTable* theMaterialTable = G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); // create new physics table @@ -295,7 +292,7 @@ void G4Scintillation::BuildThePhysicsTable() // for the material from the material's optical // properties table - G4Material* aMaterial = (*theMaterialTable)(i); + G4Material* aMaterial = (*theMaterialTable)[i]; G4MaterialPropertiesTable* aMaterialPropertiesTable = aMaterial->GetMaterialPropertiesTable(); diff --git a/source/processes/electromagnetic/xrays/src/G4TransitionRadiation.cc b/source/processes/electromagnetic/xrays/src/G4TransitionRadiation.cc index 5a4cba3b1f..5d7fe0cbd0 100644 --- a/source/processes/electromagnetic/xrays/src/G4TransitionRadiation.cc +++ b/source/processes/electromagnetic/xrays/src/G4TransitionRadiation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TransitionRadiation.cc,v 1.2.4.1 2001/06/28 19:12:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TransitionRadiation.cc,v 1.3 2001/07/11 10:03:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4TransitionRadiation class -- implementation file diff --git a/source/processes/hadronic/GNUmakefile b/source/processes/hadronic/GNUmakefile index e11bc468d9..4864315297 100644 --- a/source/processes/hadronic/GNUmakefile +++ b/source/processes/hadronic/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.5 2000/06/09 15:24:11 hpw Exp $ +# $Id: GNUmakefile,v 1.8 2001/11/16 14:19:15 hpw Exp $ # ---------------------------------------------------------------- # GNUmakefile for hadronic processes library. G.Folger 10-Dec-97. # ---------------------------------------------------------------- @@ -25,6 +25,11 @@ SUBDIRS += models/generator/quark_gluon_string SUBDIRS += models/generator/string_common SUBDIRS += models/generator/string_fragmentation SUBDIRS += models/generator/util +SUBDIRS += models/chiral_inv_phase_space/body +SUBDIRS += models/chiral_inv_phase_space/interface +SUBDIRS += models/coherent_elastic +SUBDIRS += models/cascade/evaporation +SUBDIRS += models/cascade/utils SUBLIBS = G4hadronic_mgt G4hadronic_util G4hadronic_proc SUBLIBS += G4hadronic_xsect G4hadronic_stop @@ -33,6 +38,11 @@ SUBLIBS += G4hadronic_deex G4hadronic_diffstring G4hadronic_HE_gen G4hadronic_ki SUBLIBS += G4hadronic_man_gen G4hadronic_preequ G4hadronic_radioactivedecay SUBLIBS += G4hadronic_qgstring G4hadronic_string_common SUBLIBS += G4hadronic_stringfrag G4hadronic_util_gen +SUBLIBS += G4hadronic_body_ci +SUBLIBS += G4hadronic_interface_ci +SUBLIBS += G4hadronic_coherent_elastic +SUBLIBS += G4hadronic_hetcpp_evaporation +SUBLIBS += G4hadronic_hetcpp_utils ifndef G4INSTALL G4INSTALL = ../../.. diff --git a/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh b/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh index 1ed675f1fd..32a4242b78 100644 --- a/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh +++ b/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/cross_sections/include/G4ElectroNuclearCrossSection.hh b/source/processes/hadronic/cross_sections/include/G4ElectroNuclearCrossSection.hh new file mode 100644 index 0000000000..9fafd8f30f --- /dev/null +++ b/source/processes/hadronic/cross_sections/include/G4ElectroNuclearCrossSection.hh @@ -0,0 +1,186 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ElectroNuclearCrossSection.hh,v 1.6 2001/11/30 14:58:04 stesting Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// GEANT4 physics class: G4ElectroNuclearCrossSection -- header file +// M.V. Kossov, ITEP(Moscow), 24-OCT-01 +// + +#ifndef G4ElectroNuclearCrossSection_h +#define G4ElectroNuclearCrossSection_h 1 + +#include "G4VCrossSectionDataSet.hh" +#include "G4DynamicParticle.hh" +#include "G4Element.hh" +#include "G4ParticleTable.hh" +#include "G4NucleiProperties.hh" +#include "G4NucleiPropertiesTable.hh" +#include "g4std/vector" +#include "Randomize.hh" +#include "G4Electron.hh" +#include "G4Positron.hh" + +class G4ElectroNuclearCrossSection : public G4VCrossSectionDataSet +{ +public: + + G4ElectroNuclearCrossSection() // Constructor @@?? + { + //theHadronCrossSections = G4HadronCrossSections::Instance(); + } + + ~G4ElectroNuclearCrossSection() {} + + G4bool IsApplicable(const G4DynamicParticle* aParticle, const G4Element* anElement) + { + //return theHadronCrossSections->IsApplicable(aParticle, anElement); + // Possible prototype + G4bool result = false; + if( aParticle->GetDefinition()==G4Electron::ElectronDefinition()) result = true; + if( aParticle->GetDefinition()==G4Positron::PositronDefinition()) result = true; + return result; + } + + G4double GetCrossSection(const G4DynamicParticle* aParticle, const G4Element* anElement, + G4double temperature=0.); + + G4double GetEffectivePhotonEnergy(); + + void BuildPhysicsTable(const G4ParticleDefinition&) {} + + void DumpPhysicsTable(const G4ParticleDefinition&) {} + +private: + G4int GetFunctions(G4double a, G4double* y, G4double* z); + G4double LinearFit(G4double X, G4int N, const G4double* XN, const G4double* YN); + G4double ThresholdEnergy(G4int Z, G4int N); + G4double HighEnergyPhi(G4double lE); + G4double HighEnergyFun(G4double lE); + G4double SolveTheEquation(G4double f); + G4double Fun(G4double x); + G4double DFun(G4double x); + +// Body +private: + static G4int lastF; // Last used in the cross section TheFirstBin + static G4double* lastPhi; // Pointer to the last array of the Phi function + static G4double* lastFun; // Pointer to the last array of the Fun function + static G4int lastL; // Last used in the cross section TheLastBin + static G4double lastLE; // Last used in the cross section TheLogE + static G4double lastSig; // Last value of the Cross Section + static G4double lastH; // Last value of the High energy A-dependence +}; + +// Gives the threshold energy for different nuclei (min of p- and n-threshold) +inline G4double G4ElectroNuclearCrossSection::ThresholdEnergy(G4int Z, G4int N) +{ + // CHIPS - Direct GEANT + //static const G4double mNeut = G4QPDGCode(2112).GetMass(); + //static const G4double mProt = G4QPDGCode(2212).GetMass(); + static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0); + static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1); + // --------- + static const G4double infEn = 9.e27; + + G4int A=Z+N; + if(A<1) return infEn; + else if(A==1) return 134.9766; // Pi0 threshold for the nucleon + // CHIPS - Direct GEANT + //G4double mT= G4QPDGCode(111).GetNuclMass(Z,N,0); + G4double mT= 0.; + if(G4NucleiPropertiesTable::IsInTable(Z,A)) mT=G4NucleiProperties::GetNuclearMass(A,Z); + else return 0.; // If it is not in the Table of Stable Nuclei, then the Threshold=0 + // --------- + G4double mP= infEn; + //if(Z) mP= G4QPDGCode(111).GetNuclMass(Z-1,N,0); + if(Z&&G4NucleiPropertiesTable::IsInTable(Z-1,A-1)) mP=G4NucleiProperties::GetNuclearMass(A-1,Z-1); + else return infEn; + G4double mN= infEn; + //if(N) mN= G4QPDGCode(111).GetNuclMass(Z,N-1,0); + if(N&&G4NucleiPropertiesTable::IsInTable(Z,A-1)) mN=G4NucleiProperties::GetNuclearMass(A-1,Z); + else return infEn; + G4double dP= mP+mProt-mT; + G4double dN= mN+mNeut-mT; + if(dPIsApplicable(aParticle, anElement); + // Possible prototype + G4bool result = false; + if( aParticle->GetDefinition()->GetPDGEncoding()==22) result = true; + return result; + } + + G4double GetCrossSection(const G4DynamicParticle* aParticle, const G4Element* anElement, + G4double temperature=0.); + //{ + // return theHadronCrossSections->GetInelasticCrossSection(aParticle, + // anElement); + //} + + void BuildPhysicsTable(const G4ParticleDefinition&) {} + + void DumpPhysicsTable(const G4ParticleDefinition&) {} + +private: + G4double GetGDRc1(G4int Z, G4int N); + G4double GetGDRp1(G4int Z, G4int N); + G4double GetGDRt1(G4int Z, G4int N); + G4double GetGDRs1(G4int Z, G4int N); + G4double GetGDRc2(G4int Z, G4int N); + G4double GetGDRp2(G4int Z, G4int N); + G4double GetGDRt2(G4int Z, G4int N); + G4double GetGDRs2(G4int Z, G4int N); + G4double GetQDAmp(G4int Z, G4int N); + G4double GetDelAm(G4int Z, G4int N); + G4double GetDelWd(G4int Z, G4int N); + G4double GetDelPs(G4int Z, G4int N); + G4double GetDelTh(G4int Z, G4int N); + G4double GetDelSl(G4int Z, G4int N); + G4double GetRopAm(G4int Z, G4int N); + G4double GetRopWd(G4int Z, G4int N); + G4double GetRopPs(G4int Z, G4int N); + G4double LinearFit(G4double X, G4int N, const G4double* XN, const G4double* YN); + G4double ThresholdEnergy(G4int Z, G4int N); + +// Body +//private: + + //G4HadronCrossSections* theHadronCrossSections; +}; + +// Calculate the logAmplitude of the 1-st GDR maximum +inline G4double G4PhotoNuclearCrossSection::GetGDRc1(G4int Z, G4int N) +{ + static const G4int nN=13; + static G4double X[nN]={0.693,1.386,1.792,1.946,2.197,2.485,2.773,3.296,3.689,4.152,4.777,5.334, + 5.472}; + static G4double Y[nN]={4.2,13.9,13.9,13.6,20.5,28.2,28.7,28.5,29.,28.4,28.15,27.8,25.9}; + + return LinearFit(log(G4double(Z+N)), nN, X, Y); +} + +// Calculate the A-power of the 1-st GDR maximum +inline G4double G4PhotoNuclearCrossSection::GetGDRp1(G4int Z, G4int N) +{ + G4double p=8.; + G4int A=Z+N; + if(A<12) p=6.; + if(A< 8) p=4.; + if(A< 4) p=2.; + return p; +} + +// Calculate the Threshold of the 1-st GDR maximum +inline G4double G4PhotoNuclearCrossSection::GetGDRt1(G4int Z, G4int N) +{ + static const G4int nN=13; + static G4double X[nN]={0.693,1.386,1.792,1.946,2.197,2.485,2.773,3.296,3.689,4.152,4.777,5.334, + 5.472}; + static G4double Y[nN]={1.4,3.13,3.08,2.9,3.09,3.09,3.09,3.02,2.98,2.9,2.745,2.585,2.42}; + + return LinearFit(log(G4double(Z+N)), nN, X, Y); +} + +// Calculate the Slope of the 1-st GDR maximum +inline G4double G4PhotoNuclearCrossSection::GetGDRs1(G4int Z, G4int N) +{ + static const G4int nN=13; + static G4double X[nN]={0.693,1.386,1.792,1.946,2.197,2.485,2.773,3.296,3.689,4.152,4.777,5.334, + 5.472}; + static G4double Y[nN]={.12,.12,.12,.12,.06,.03,.03,.06,.05,.065,.06,.059,.061}; + + return LinearFit(log(G4double(Z+N)), nN, X, Y); +} + +// Calculate the logAmplitude of the 2-nd GDR maximum +inline G4double G4PhotoNuclearCrossSection::GetGDRc2(G4int Z, G4int N) +{ + static const G4int nN=13; + static G4double X[nN]={0.693,1.386,1.792,1.946,2.197,2.485,2.773,3.296,3.689,4.152,4.777,5.334, + 5.472}; + static G4double Y[nN]={1.85,7.5,6.3,8.2,12.35,15.8,16.1,16.2,16.8,17.1,16.1,15.5,16.6}; + + return LinearFit(log(G4double(Z+N)), nN, X, Y); +} + +// Calculate the A-power of the 2-nd GDR maximum +inline G4double G4PhotoNuclearCrossSection::GetGDRp2(G4int Z, G4int N) +{ + G4double p=4.; + G4int A=Z+N; + if(A<12) p=3.; + if(A< 8) p=2.; + if(A< 4) p=1.; + return p; +} + +// Calculate the Threshold of the 2-nd GDR maximum +inline G4double G4PhotoNuclearCrossSection::GetGDRt2(G4int Z, G4int N) +{ + static const G4int nN=13; + static G4double X[nN]={0.693,1.386,1.792,1.946,2.197,2.485,2.773,3.296,3.689,4.152,4.777,5.334, + 5.472}; + static G4double Y[nN]={1.4,3.22,3.11,3.39,3.48,3.34,3.46,3.35,3.4,3.22,3.09,3.05,2.6}; + + return LinearFit(log(G4double(Z+N)), nN, X, Y); +} + +// Calculate the Slope of the 2-nd GDR maximum +inline G4double G4PhotoNuclearCrossSection::GetGDRs2(G4int Z, G4int N) +{ + static const G4int nN=13; + static G4double X[nN]={0.693,1.386,1.792,1.946,2.197,2.485,2.773,3.296,3.689,4.152,4.777,5.334, + 5.472}; + static G4double Y[nN]={.12,.094,.09,.088,.14,.082,.079,.074,.071,.065,.061,.058,.05}; + + return LinearFit(log(G4double(Z+N)), nN, X, Y); +} + +// Calculate the Amplitude of the QuasiDeuteron region [exp/(1+exp)] +inline G4double G4PhotoNuclearCrossSection::GetQDAmp(G4int Z, G4int N) +{ + G4double A=Z+N; + G4double lnA=log(A); + return exp(-1.7+lnA*0.84)/(1.+exp(7*(2.38-lnA))); +} + +// Calculate the Amplitude of the Delta Resonance [.41*(Z+N)] +inline G4double G4PhotoNuclearCrossSection::GetDelAm(G4int Z, G4int N) +{ + G4double A=Z+N; + return .41*A; +} + +// Calculate the Width of the Delta Resonance [11.9-ln(A)*1.24] +inline G4double G4PhotoNuclearCrossSection::GetDelWd(G4int Z, G4int N) +{ + G4double A=Z+N; + G4double lnA=log(A); + return 11.9-lnA*1.24; +} + +// Calculate the Position of the Delta Resonance [5.84-.09/(1+.003*A*A)] +inline G4double G4PhotoNuclearCrossSection::GetDelPs(G4int Z, G4int N) +{ + G4double A=Z+N; + return 5.84-.09/(1+.003*A*A); +} + +// Calculate the Threshold of the Delta Resonance [5.13-.00075*A] +inline G4double G4PhotoNuclearCrossSection::GetDelTh(G4int Z, G4int N) +{ + G4double A=Z+N; + return 5.13-0.00075*A; +} + +// Calculate the Threshold of the Delta Resonance [.04->.09] +inline G4double G4PhotoNuclearCrossSection::GetDelSl(G4int Z, G4int N) +{ + G4double A=Z+N; + if(A<7) return .04; + return .09; +} + +// Calculate the Amplitude of the Roper Resonance [-2.+ln(A)*0.84] +inline G4double G4PhotoNuclearCrossSection::GetRopAm(G4int Z, G4int N) +{ + G4double A=Z+N; + G4double lnA=log(A); + return exp(-2.+lnA*0.84); +} + +// Calculate the Width of the Roper Resonance [.1+1.65*ln(A)] +inline G4double G4PhotoNuclearCrossSection::GetRopWd(G4int Z, G4int N) +{ + G4double A=Z+N; + G4double lnA=log(A); + return .1+1.65*lnA; +} + +// Calculate the Position of the Roper Resonance [6.46+.061*ln(A)] +inline G4double G4PhotoNuclearCrossSection::GetRopPs(G4int Z, G4int N) +{ + G4double A=Z+N; + G4double lnA=log(A); + return 6.46+.061*lnA; +} + + +// Gives the threshold energy for different nuclei (min of p- and n-threshold) +inline G4double G4PhotoNuclearCrossSection::ThresholdEnergy(G4int Z, G4int N) +{ + // CHIPS - Direct GEANT + //static const G4double mNeut = G4QPDGCode(2112).GetMass(); + //static const G4double mProt = G4QPDGCode(2212).GetMass(); + static const G4double mNeut = G4NucleiProperties::GetNuclearMass(1,0); + static const G4double mProt = G4NucleiProperties::GetNuclearMass(1,1); + // --------- + static const G4double infEn = 9.e27; + + G4int A=Z+N; + if(A<1) return infEn; + else if(A==1) return 134.9766; // Pi0 threshold for the nucleon + // CHIPS - Direct GEANT + //G4double mT= G4QPDGCode(111).GetNuclMass(Z,N,0); + G4double mT= 0.; + if(G4NucleiPropertiesTable::IsInTable(Z,A)) mT=G4NucleiProperties::GetNuclearMass(A,Z); + else return 0.; // If it is not in the Table of Stable Nuclei, then the Threshold=0 + // --------- + G4double mP= infEn; + //if(Z) mP= G4QPDGCode(111).GetNuclMass(Z-1,N,0); + if(Z&&G4NucleiPropertiesTable::IsInTable(Z-1,A-1)) mP=G4NucleiProperties::GetNuclearMass(A-1,Z-1); + else return infEn; + G4double mN= infEn; + //if(N) mN= G4QPDGCode(111).GetNuclMass(Z,N-1,0); + if(N&&G4NucleiPropertiesTable::IsInTable(Z,A-1)) mN=G4NucleiProperties::GetNuclearMass(A-1,Z); + else return infEn; + G4double dP= mP+mProt-mT; + G4double dN= mN+mNeut-mT; + if(dP colN; // Vector of N for calculated nucleus + static G4std::vector colZ; // Vector of Z for calculated nucleus + static G4std::vector colF; // Vector of LastZeroPosition in the phi-function + static G4std::vector colH; // Vector of high energy coefficient + static G4std::vector Phi; // Vector of pointers to the Phi functions + static G4std::vector Fun; // Vector of pointers to the Fun functions + // *** End of Static Definitions (Associative Memory) *** + const G4double Energy = aPart->GetKineticEnergy()/MeV; + const G4double lE=log(Energy); + const G4int targetAtomicNumber = static_cast(anEle->GetN()+.499); //@@ Nat mixture + const G4int targZ = static_cast(anEle->GetZ()); + const G4int targN = targetAtomicNumber-targZ; + if (Energy<=ThresholdEnergy(targZ, targN) || Energy<=lEMi) + { + lastLE=lE; + return 0.; + } + G4int PDG=aPart->GetDefinition()->GetPDGEncoding(); + if( PDG == 11 || PDG == -11) + { + G4double A=targN+targZ; + if(targN!=lastN || targZ!=lastZ) // This nucleus was not the last in use + { + lastLE = 0.; + lastN = targN; // The last N of calculated nucleus + lastZ = targZ; // The last Z of calculated nucleus + G4int n=colN.size(); + G4bool in=false; + if(n) for(G4int i=0; i=Xh) return YN[N-1];//-| + G4double Xp=0.; // | + G4int j=0; // | + while (X>Xj && j=0) + { + G4int f=nN-2; // Very high A is default (more than Pb) + G4int h=nN-1; + if(aL[h]) r=L[h]; + G4double xi=A[f]; + G4double xa=A[h]; + G4double b=(a-xi)/(xa-xi); + for(G4int m=0; m"<GetKineticEnergy()/MeV; + const G4double lE=log(kinEnergy); + const G4int targetAtomicNumber = static_cast(anEle->GetN()+.499); //@@ Nat mixture + const G4int targZ = static_cast(anEle->GetZ()); + const G4int targN = targetAtomicNumber-targZ; + if (kinEnergy0.09] + static G4double lastRopAm; // The last Amplitude of the Roper Resonance [-2.+ln(A)*0.84] + static G4double lastRopWd; // The last Width of the Roper Resonance [.1+1.65*ln(A)] + static G4double lastRopPs; // The last Position of the Roper Resonance [6.46+.061*ln(A)] + static G4std::vector colN; // N of calculated nucleus + static G4std::vector colZ; // Z of calculated nucleus + static G4std::vector HighE; // High Energy A-dependence + static G4std::vector GDRc1; // logAmplitude of the 1-st GDR maximum + static G4std::vector GDRp1; // A-power of the 1-st GDR maximum + static G4std::vector GDRt1; // Threshold of the 1-st GDR maximum + static G4std::vector GDRs1; // Slope of the 1-st GDR maximum + static G4std::vector GDRc2; // logAmplitude of the 2-nd GDR maximum + static G4std::vector GDRp2; // A-power of the 2-nd GDR maximum + static G4std::vector GDRt2; // Threshold of the 2-nd GDR maximum + static G4std::vector GDRs2; // Slope of the 2-nd GDR maximum + static G4std::vector QDAmp; // Amplitude of the QuasiDeuteron region [exp/(1+exp)] + static G4std::vector QDWid; // Width of the QuasiDeuteron region [.4] or R(H1,H2) + static G4std::vector QDPos; // Position of the QuasiDeuteron region [3.7] or R(H1,H2) + static G4std::vector DelAm; // Amplitude of the Delta Resonance [.41*(Z+N)] + static G4std::vector DelWd; // Width of the Delta Resonance [11.9-ln(A)*1.24] + static G4std::vector DelPs; // Position of the Delta Resonance [5.84-.09/(1+.003*A2)] + static G4std::vector DelTh; // Threshold of the Delta Resonance [5.13-.00075*A] + static G4std::vector DelSl; // Slope of the Delta Resonance [0.04->0.09] + static G4std::vector RopAm; // Amplitude of the Roper Resonance [-2.+ln(A)*0.84] + static G4std::vector RopWd; // Width of the Roper Resonance [.1+1.65*ln(A)] + static G4std::vector RopPs; // Position of the Roper Resonance [6.46+.061*ln(A)] + G4double sigma=0.; + if( aPart->GetDefinition()->GetPDGEncoding() == 22 ) + { + G4double A=targN+targZ; + if(targN!=lastN || targZ!=lastZ) // Otherwise the set of parameters is ready + { + lastN = targN; // The last N of calculated nucleus + lastZ = targZ; // The last Z of calculated nucleus + G4int n=colN.size(); + G4bool in=false; + if(n) for(G4int i=0; i1) sigma+=exp(lastGDRc1-lE*lastGDRp1)/(1.+exp((lastGDRt1-lE)/lastGDRs1))+ // 1-st GDR + exp(lastGDRc2-lE*lastGDRp2)/(1.+exp((lastGDRt2-lE)/lastGDRs2)); // 2-nd GDR + sigma+=lastQDAmp/(1.+lastQDWid*qdeut*qdeut) + lastRopAm/(1.+lastRopWd*roper*roper)+ // QD+Roper + lastDelAm/(1.+lastDelWd*delta*delta)/(1.+exp((lastDelTh-lE)/lastDelSl))+ // Delta + lastHighE*(0.0116*exp(lE*0.16)+.4*exp(-lE*0.2))/(1.+exp((7.-lE)/0.2)); // High E + } // End of "sigma" calculation + else return 0.; + return sigma*millibarn; +} + +// Correction function for Be,C @@ Move to header +G4double G4PhotoNuclearCrossSection::LinearFit(G4double X, G4int N, const G4double* XN, + const G4double* YN) +{ + G4double Xj=XN[0]; + G4double Xh=XN[N-1]; + if(X<=Xj) return YN[0]; //-------+ + else if(X>=Xh) return YN[N-1];//-| + G4double Xp=0.; // | + G4int j=0; // | + while (X>Xj && jGetN(); const G4double nTargetProtons = anEle->GetZ(); - const G4double nTargetNeutrons = targetAtomicNumber-nTargetProtons; const G4double kineticEnergy = aPart->GetKineticEnergy()/MeV; const G4double nProjProtons = aPart->GetDefinition()->GetPDGCharge(); const G4double projectileAtomicNumber = aPart->GetDefinition()->GetBaryonNumber(); - const G4double nProjNeutrons = projectileAtomicNumber-nProjProtons; const G4double nuleonRadius=1.1E-15; const G4double myNuleonRadius=1.36E-15; diff --git a/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc b/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc index 392d9d07af..b094e3fb6b 100644 --- a/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc +++ b/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VCrossSectionDataSet.cc,v 1.2.8.1 2001/06/28 19:12:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VCrossSectionDataSet.cc,v 1.4 2001/08/01 17:03:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // GEANT4 physics abstract class: G4VCrossSectionDataSet diff --git a/source/processes/hadronic/management/include/G4EnergyRangeManager.hh b/source/processes/hadronic/management/include/G4EnergyRangeManager.hh index 1a8a24da41..c70699db76 100644 --- a/source/processes/hadronic/management/include/G4EnergyRangeManager.hh +++ b/source/processes/hadronic/management/include/G4EnergyRangeManager.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EnergyRangeManager.hh,v 1.2.8.1 2001/06/28 19:12:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EnergyRangeManager.hh,v 1.4 2001/08/01 17:03:23 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Energy Range Manager // original by H.P. Wellisch diff --git a/source/processes/hadronic/management/include/G4HadronInelasticProcess.hh b/source/processes/hadronic/management/include/G4HadronInelasticProcess.hh index 10b7604537..c8e35c583b 100644 --- a/source/processes/hadronic/management/include/G4HadronInelasticProcess.hh +++ b/source/processes/hadronic/management/include/G4HadronInelasticProcess.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -43,6 +43,7 @@ #include "G4HadronCrossSections.hh" #include "G4CrossSectionDataStore.hh" #include "G4HadronInelasticDataSet.hh" +#include "G4ParticleChange.hh" class G4HadronInelasticProcess : public G4HadronicProcess @@ -81,6 +82,17 @@ G4VParticleChange *PostStepDoIt( const G4Track &aTrack, const G4Step &aStep ) { + if(0==theLastCrossSection) + { + G4cerr << "G4HadronInelasticProcess: called for final state, while cross-section was zero"< allModels; + G4std::vector allModels; static G4HadronicInteractionRegistry theRegistry; }; diff --git a/source/processes/hadronic/management/include/G4HadronicProcess.hh b/source/processes/hadronic/management/include/G4HadronicProcess.hh index c5356e16a7..3eca6775e1 100644 --- a/source/processes/hadronic/management/include/G4HadronicProcess.hh +++ b/source/processes/hadronic/management/include/G4HadronicProcess.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -48,7 +48,7 @@ #include "G4PhysicsVector.hh" #include "G4Nucleus.hh" #include "G4ReactionProduct.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" #include "G4VIsotopeProduction.hh" #include "G4IsoParticleChange.hh" @@ -61,7 +61,7 @@ { isoIsOnAnyway = 0; } virtual ~G4HadronicProcess() - { theProductionModels.clearAndDestroy(); } + { unsigned int i; for(i=0; iRegisterMe( a ); } @@ -111,7 +111,7 @@ void DisableIsotopeCounting() {isoIsOnAnyway = -1;} void RegisterIsotopeProductionModel(G4VIsotopeProduction * aModel) - { theProductionModels.insert(aModel); } + { theProductionModels.push_back(aModel); } static G4IsoParticleChange * GetIsotopeProductionInfo() { @@ -154,7 +154,7 @@ G4int isoIsOnAnyway; // true(1), false(-1) or default(0) G4IsoParticleChange theIsoPC; - G4RWTPtrOrderedVector theProductionModels; + G4std::vector theProductionModels; static G4IsoParticleChange * theIsoResult; static G4IsoParticleChange * theOldIsoResult; diff --git a/source/processes/hadronic/management/include/G4InelasticInteraction.hh b/source/processes/hadronic/management/include/G4InelasticInteraction.hh index bda03d273e..002591b7c9 100644 --- a/source/processes/hadronic/management/include/G4InelasticInteraction.hh +++ b/source/processes/hadronic/management/include/G4InelasticInteraction.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4InelasticInteraction.hh,v 1.2.8.1 2001/06/28 19:12:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4InelasticInteraction.hh,v 1.6 2001/12/07 11:18:38 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Inelastic Interaction // This class is an abstract base class, since the pure virtual @@ -71,6 +71,8 @@ G4FastVector &vec, G4int &vecLen ); + void Rotate(G4FastVector &vec, G4int &vecLen); + void GetNormalizationConstant( const G4double availableEnergy, G4double &n, G4double &anpn ); @@ -92,6 +94,11 @@ G4ReactionProduct ¤tParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged ); + private: + + G4double cache; + G4ThreeVector what; + }; #endif diff --git a/source/processes/hadronic/management/include/G4IsoParticleChange.hh b/source/processes/hadronic/management/include/G4IsoParticleChange.hh index d0fab79eb7..06833865db 100644 --- a/source/processes/hadronic/management/include/G4IsoParticleChange.hh +++ b/source/processes/hadronic/management/include/G4IsoParticleChange.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/management/include/G4VIsotopeProduction.hh b/source/processes/hadronic/management/include/G4VIsotopeProduction.hh index 72663f5954..2f7170f3ba 100644 --- a/source/processes/hadronic/management/include/G4VIsotopeProduction.hh +++ b/source/processes/hadronic/management/include/G4VIsotopeProduction.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/management/src/G4EnergyRangeManager.cc b/source/processes/hadronic/management/src/G4EnergyRangeManager.cc index 2262c5606b..e6b2c08067 100644 --- a/source/processes/hadronic/management/src/G4EnergyRangeManager.cc +++ b/source/processes/hadronic/management/src/G4EnergyRangeManager.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EnergyRangeManager.cc,v 1.3.8.1 2001/06/28 19:12:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EnergyRangeManager.cc,v 1.5 2001/08/01 17:03:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Energy Range Manager // original by H.P. Wellisch diff --git a/source/processes/hadronic/management/src/G4HadronInelasticProcess.cc b/source/processes/hadronic/management/src/G4HadronInelasticProcess.cc index f3cc16b1de..0a517becc0 100644 --- a/source/processes/hadronic/management/src/G4HadronInelasticProcess.cc +++ b/source/processes/hadronic/management/src/G4HadronInelasticProcess.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -53,24 +53,20 @@ // returns the mean free path in GEANT4 internal units - const G4RWTPtrVector *theElementVector = - aMaterial->GetElementVector(); - const G4double *theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector(); G4double aTemp = aMaterial->GetTemperature(); - G4Element *anElement = (*theElementVector)[0]; - G4int j = anElement->GetIndex(); G4double sigma = 0.0; for( G4int i=0; iGetElementVector())[i], aTemp); sigma += theAtomicNumDensityVector[i] * xSection; } sigma *= aScaleFactor; + theLastCrossSection = sigma; if( sigma > 0.0 ) return 1.0/sigma; else diff --git a/source/processes/hadronic/management/src/G4HadronicInteraction.cc b/source/processes/hadronic/management/src/G4HadronicInteraction.cc index 7ae278e978..793004241b 100644 --- a/source/processes/hadronic/management/src/G4HadronicInteraction.cc +++ b/source/processes/hadronic/management/src/G4HadronicInteraction.cc @@ -14,15 +14,12 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4HadronicInteraction.cc,v 1.2.8.1 2001/06/28 19:12:57 gunter Exp $ -// GEANT4 tag $Name: $ // // Hadronic Interaction base class // original by H.P. Wellisch @@ -46,6 +43,7 @@ { if( aMaterial == theMinMaterials[i] )return theMinEnergyList[i]; } + if(IsBlocked()) return 0.*GeV; if( verboseLevel > 0 ) G4cout << "*** Warning from HadronicInteraction::GetMinEnergy" << G4endl << " material " << aMaterial->GetName() @@ -116,6 +114,7 @@ { if( aMaterial == theMaxMaterials[i] )return theMaxEnergyList[i]; } + if(IsBlocked()) return 0.*GeV; if( verboseLevel > 0 ) G4cout << "*** Warning from HadronicInteraction::GetMaxEnergy" << G4endl << " material " << aMaterial->GetName() diff --git a/source/processes/hadronic/management/src/G4HadronicInteractionRegistry.cc b/source/processes/hadronic/management/src/G4HadronicInteractionRegistry.cc index 67bd1220af..ab9501c0c7 100644 --- a/source/processes/hadronic/management/src/G4HadronicInteractionRegistry.cc +++ b/source/processes/hadronic/management/src/G4HadronicInteractionRegistry.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -46,7 +46,7 @@ AddModel(G4HadronicInteraction * aModel) G4bool alreadyThere = false; for(G4int i=0; iGetZ()); - currentN = (*theElementVector)(0)->GetN(); + currentZ = G4double( ((*theElementVector)[0])->GetZ()); + currentN = (*theElementVector)[0]->GetN(); targetNucleus.SetParameters(currentN, currentZ); - return (*theElementVector)(0); + return (*theElementVector)[0]; } const G4double *theAtomicNumberDensity = aMaterial->GetAtomicNumDensityVector(); @@ -59,7 +59,7 @@ for( i=0; i < numberOfElements; ++i ) { runningSum.push_back(theAtomicNumberDensity[i] * - dispatch->GetMicroscopicCrossSection( aParticle, (*theElementVector)(i), aTemp)); + dispatch->GetMicroscopicCrossSection( aParticle, (*theElementVector)[i], aTemp)); crossSectionTotal+=runningSum[i]; } @@ -68,16 +68,16 @@ { if( random<=runningSum[i]/crossSectionTotal ) { - currentZ = G4double((*theElementVector)(i)->GetZ()); - currentN = (*theElementVector)(i)->GetN(); + currentZ = G4double( ((*theElementVector)[i])->GetZ()); + currentN = ((*theElementVector)[i])->GetN(); targetNucleus.SetParameters(currentN, currentZ); - return (*theElementVector)(i); + return (*theElementVector)[i]; } } - currentZ = G4double((*theElementVector)(numberOfElements-1)->GetZ()); - currentN = (*theElementVector)(numberOfElements-1)->GetN(); + currentZ = G4double((*theElementVector)[numberOfElements-1]->GetZ()); + currentN = (*theElementVector)[numberOfElements-1]->GetN(); targetNucleus.SetParameters(currentN, currentZ); - return (*theElementVector)(numberOfElements-1); + return (*theElementVector)[numberOfElements-1]; } G4VParticleChange *G4HadronicProcess::GeneralPostStepDoIt( @@ -91,7 +91,18 @@ aMaterial, anElement ); G4VParticleChange *result = theInteraction->ApplyYourself( aTrack, targetNucleus); - ResetNumberOfInteractionLengthLeft(); + if(getenv("HadronicDoitLogging") ) + { + G4cout << "HadronicDoitLogging " + << GetProcessName() <<" " + << aParticle->GetDefinition()->GetPDGEncoding()<<" " + << kineticEnergy<<" " + << aParticle->GetMomentum()<<" " + << targetNucleus.GetN()<<" " + << targetNucleus.GetZ()<<" " + << G4endl; + } + ClearNumberOfInteractionLengthLeft(); if(isoIsOnAnyway!=-1) { if(isoIsEnabled||isoIsOnAnyway) @@ -113,9 +124,9 @@ theIsoResult = new G4IsoParticleChange; G4bool done = false; G4IsoResult * anIsoResult = NULL; - for(G4int i=0; iGetIsotope(aTrack, aNucleus); + anIsoResult = theProductionModels[i]->GetIsotope(aTrack, aNucleus); if(anIsoResult!=NULL) { done = true; @@ -175,7 +186,7 @@ // prepare the IsoResult. char the1[100] = {""}; G4std::ostrstream ost1(the1, 100, G4std::ios::out); - ost1 <GetMomentum(); theReactionDynamics.ProduceStrangeParticlePairs( vec, vecLen, modifiedOriginal, originalTarget, currentParticle, targetParticle, @@ -252,7 +253,11 @@ targetNucleus, incidentHasChanged, targetHasChanged, leadFlag, leadingStrangeParticle ); - if( finishedGenXPt )return; + if( finishedGenXPt ) + { + Rotate(vec, vecLen); + return; + } G4bool finishedTwoClu = false; if( modifiedOriginal.GetTotalMomentum()/MeV < 1.0 ) { @@ -272,7 +277,11 @@ targetHasChanged, leadFlag, leadingStrangeParticle ); } - if( finishedTwoClu )return; + if( finishedTwoClu ) + { + Rotate(vec, vecLen); + return; + } // // PNBlackTrackEnergy is the kinetic energy available for // proton/neutron black track particles [was enp(1) in fortran code] @@ -299,6 +308,20 @@ targetNucleus, targetHasChanged ); } + void G4InelasticInteraction:: + Rotate(G4FastVector &vec, G4int &vecLen) + { + G4double rotation = 2.*pi*G4UniformRand(); + cache = rotation; + G4int i; + for( i=0; iGetMomentum(); + momentum = momentum.rotate(rotation, what); + vec[i]->SetMomentum(momentum); + } + } + void G4InelasticInteraction::SetUpChange( G4FastVector &vec, @@ -371,7 +394,9 @@ { G4DynamicParticle *p1 = new G4DynamicParticle; p1->SetDefinition( targetParticle.GetDefinition() ); - p1->SetMomentum( targetParticle.GetMomentum() ); + G4ThreeVector momentum = targetParticle.GetMomentum(); + momentum = momentum.rotate(cache, what); + p1->SetMomentum( momentum ); theParticleChange.AddSecondary( p1 ); } G4DynamicParticle *p; diff --git a/source/processes/hadronic/models/GNUmakefile b/source/processes/hadronic/models/GNUmakefile index 51d1552b04..3255384c56 100644 --- a/source/processes/hadronic/models/GNUmakefile +++ b/source/processes/hadronic/models/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.5 2000/06/27 15:24:19 gcosmo Exp $ +# $Id: GNUmakefile,v 1.8 2001/11/16 14:19:19 hpw Exp $ # -------------------------------------------------------------- # GNUmakefile for hadronic models library. G.Folger 10-Dec-97 # -------------------------------------------------------------- @@ -20,12 +20,22 @@ SUBDIRS += generator/string_common SUBDIRS += generator/string_fragmentation SUBDIRS += generator/util SUBDIRS += radiative_decay +SUBDIRS += chiral_inv_phase_space/body +SUBDIRS += chiral_inv_phase_space/interface +SUBDIRS += coherent_elastic +SUBDIRS += cascade/evaporation +SUBDIRS += cascade/utils SUBLIBS = G4hadronic_HE G4hadronic_LE G4hadronic_neu G4hadronic_iso SUBLIBS += G4hadronic_deex G4hadronic_diffstring G4hadronic_HE_gen G4hadronic_kinetic SUBLIBS += G4hadronic_man_gen G4hadronic_preequ G4hadronic_radioactivedecay SUBLIBS += G4hadronic_qgstring G4hadronic_string_common SUBLIBS += G4hadronic_stringfrag G4hadronic_util_gen +SUBLIBS += G4hadronic_body_ci +SUBLIBS += G4hadronic_interface_ci +SUBLIBS += G4hadronic_coherent_elastic +SUBLIBS += G4hadronic_hetcpp_evaporation +SUBLIBS += G4hadronic_hetcpp_utils ifndef G4INSTALL G4INSTALL = ../../../.. diff --git a/source/processes/hadronic/models/cascade/GNUmakefile b/source/processes/hadronic/models/cascade/GNUmakefile new file mode 100644 index 0000000000..e15152fa3f --- /dev/null +++ b/source/processes/hadronic/models/cascade/GNUmakefile @@ -0,0 +1,18 @@ +# -------------------------------------------------------------- +# GNUmakefile for chips library. HPW 20-Nov-99 +# -------------------------------------------------------------- + +name := G4hadronic_hetcpp + +SUBDIRS = evaporation +SUBDIRS += utils + +SUBLIBS = G4hadronic_hetcpp_evaporation +SUBLIBS += G4hadronic_hetcpp_utils + +ifndef G4INSTALL + G4INSTALL = ../../../../.. +endif + + +include $(G4INSTALL)/config/globlib.gmk diff --git a/source/processes/hadronic/models/cascade/evaporation/GNUmakefile b/source/processes/hadronic/models/cascade/evaporation/GNUmakefile new file mode 100644 index 0000000000..134a5991b6 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/GNUmakefile @@ -0,0 +1,36 @@ +# $Id: GNUmakefile,v 1.5 2001/11/16 14:22:18 hpw Exp $ +# ----------------------------------------------------------- +# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96. +# ----------------------------------------------------------- + +name := G4hadronic_hetcpp_evaporation + +ifndef G4INSTALL + G4INSTALL = ../../../../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/track/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/management/include \ + -I$(G4BASE)/processes/management/include \ + -I$(G4BASE)/processes/hadronic/management/include/ \ + -I$(G4BASE)/processes/hadronic/util/include \ + -I$(G4BASE)/processes/hadronic/cross_sections/include/ \ + -I$(G4BASE)/processes/hadronic/models/generator/management/include/ \ + -I$(G4BASE)/processes/hadronic/models/generator/util/include/ \ + -I$(G4BASE)/processes/hadronic/models/generator/de_excitation/include/ \ + -I$(G4BASE)/processes/hadronic/models/cascade/utils/include \ + -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/particles/leptons/include \ + -I$(G4BASE)/particles/bosons/include \ + -I$(G4BASE)/particles/hadrons/mesons/include \ + -I$(G4BASE)/particles/hadrons/barions/include \ + -I$(G4BASE)/particles/hadrons/ions/include \ + -I$(G4BASE)/materials/include + +include $(G4INSTALL)/config/common.gmk diff --git a/source/processes/hadronic/models/cascade/evaporation/doc/evaporation.mdl b/source/processes/hadronic/models/cascade/evaporation/doc/evaporation.mdl new file mode 100644 index 0000000000..e9ddd9f034 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/doc/evaporation.mdl @@ -0,0 +1,5468 @@ + +(object Petal + version 43 + _written "Rational Rose 6.0.9242" + charSet 0) + +(object Design "Logical View" + is_unit TRUE + is_loaded TRUE + quid "393E22009578" + defaults (object defaults + rightMargin 0.250000 + leftMargin 0.250000 + topMargin 0.250000 + bottomMargin 0.500000 + pageOverlap 0.250000 + clipIconLabels TRUE + autoResize TRUE + snapToGrid TRUE + gridX 16 + gridY 16 + defaultFont (object Font + size 14 + face "courier" + bold FALSE + italics FALSE + underline FALSE + strike FALSE + color 0 + default_color TRUE) + showMessageNum 1 + showClassOfObject TRUE + notation "Unified") + root_usecase_package (object Class_Category "Use Case View" + quid "393E2200F6A9" + exportControl "Public" + global TRUE + logical_models (list unit_reference_list) + logical_presentations (list unit_reference_list + (object UseCaseDiagram "Main" + quid "393E2223E200" + title "Main" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + root_category (object Class_Category "Logical View" + quid "393E2200F6A8" + exportControl "Public" + global TRUE + subsystem "Component View" + quidu "393E2200F6AA" + logical_models (list unit_reference_list + (object Class "G4BertiniEvaporation" + quid "393E2246EC48" + operations (list Operations + (object Operation "BreakItUp" + quid "393E22AFF570" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setVerboseLevel" + quid "393E23B4A180" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BertiniEvaporationChannel" + quid "393E22D76108" + documentation "G4BertiniEvaportionChannel" + operations (list Operations + (object Operation "setNucleusA" + quid "393E233E0468" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setNucleusZ" + quid "393E23481028" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setExcitationEnergy" + quid "393E23535828" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setQ" + quid "393E235A97A8" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setPairingCorrection" + quid "393E23617778" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "getProbability" + quid "393E236F65F8" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "getThresh" + quid "393E237C0540" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "emit" + quid "393E23836A38" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BENeutronChannel" + quid "393E2483F4B8" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "393E29F70BF8" + supplier "Logical View::G4BertiniEvaporationChannel" + quidu "393E22D76108")) + operations (list Operations + (object Operation "calculateProbability" + quid "393E24A63F80" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "emit" + quid "393E24AFD258" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "sampleKineticEnergy" + quid "393E24B750F0" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BEChargedChannel" + quid "393E24D14F08" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "393E29ED0248" + supplier "Logical View::G4BertiniEvaporationChannel" + quidu "393E22D76108")) + operations (list Operations + (object Operation "calculateProbability" + quid "393E250E05F0" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "emit" + quid "393E2516DEA0" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "sampleKineticEnergy" + quid "393E252B1620" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "coulombFactor" + quid "393E2536DED0" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "coulombFactorForProton" + quid "393E25414DC8" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "qmFactorForProton" + quid "393E2559E3F0" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "qmFactorForAlpha" + quid "393E256305D8" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BEProtonChannel" + quid "393E25A38210" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "393E28EF75C8" + supplier "Logical View::G4BEChargedChannel" + quidu "393E24D14F08")) + used_nodes (list uses_relationship_list + (object Uses_Relationship + quid "393E28B99F30" + supplier "Logical View::G4BEChargedChannel" + quidu "393E24D14F08")) + operations (list Operations + (object Operation "emit" + quid "393E25DB0A30" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "coulombFactor" + quid "393E25EE6740" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "qmFactor" + quid "393E25F61000" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BEDeuteronChannel" + quid "393E2614D900" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "393E28DEB970" + supplier "Logical View::G4BEChargedChannel" + quidu "393E24D14F08")) + operations (list Operations + (object Operation "emit" + quid "393E263DED30" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "coulombFactor" + quid "393E264453E8" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "qmFactor" + quid "393E264E05F8" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BETritonChannel" + quid "393E2660C698" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "393E29158448" + supplier "Logical View::G4BEChargedChannel" + quidu "393E24D14F08")) + operations (list Operations + (object Operation "emit" + quid "393E26832AB0" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "coulombFactor" + quid "393E268B3B58" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "qmFactor" + quid "393E26A33780" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BeHe3Channel" + quid "393E26F70A48" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "393E2922F480" + supplier "Logical View::G4BEChargedChannel" + quidu "393E24D14F08")) + operations (list Operations + (object Operation "emit" + quid "393E271242E0" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "coulombFactor" + quid "393E271DDB30" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "qmFactor" + quid "393E27253440" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BEHe4Channel" + quid "393E273CB170" + superclasses (list inheritance_relationship_list + (object Inheritance_Relationship + quid "393E29299390" + supplier "Logical View::G4BEChargedChannel" + quidu "393E24D14F08")) + operations (list Operations + (object Operation "emit" + quid "393E277009D8" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "coulombFactor" + quid "393E27757DC8" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "qmFactor" + quid "393E277A5238" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Class "G4BEGammaDeexcitationChannel" + quid "393E2E39F3A0" + operations (list Operations + (object Operation "setVerboseLevel" + quid "393E2EA39450" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setNucleusA" + quid "393E2EAAD840" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setNucleusZ" + quid "393E2EB37420" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "setExcitationEnergy" + quid "393E2EBAA408" + concurrency "Sequential" + opExportControl "Public" + uid 0) + (object Operation "emit" + quid "393E2EC6E380" + concurrency "Sequential" + opExportControl "Public" + uid 0))) + (object Association "$UNNAMED$0" + quid "393E23ECB140" + roles (list role_list + (object Role "$UNNAMED$1" + quid "393E23F0F318" + supplier "Logical View::G4BertiniEvaporationChannel" + quidu "393E22D76108" + client_cardinality (value cardinality "6") + is_navigable TRUE) + (object Role "$UNNAMED$2" + quid "393E23F0FA50" + supplier "Logical View::G4BertiniEvaporation" + quidu "393E2246EC48" + client_cardinality (value cardinality "1") + is_aggregate TRUE))) + (object Association "$UNNAMED$3" + quid "393E2F3F9200" + roles (list role_list + (object Role "$UNNAMED$4" + quid "393E2F468710" + supplier "Logical View::G4BertiniEvaporation" + quidu "393E2246EC48" + client_cardinality (value cardinality "1") + is_navigable TRUE + is_aggregate TRUE) + (object Role "$UNNAMED$5" + quid "393E2F46A4C8" + supplier "Logical View::G4BEGammaDeexcitationChannel" + quidu "393E2E39F3A0" + client_cardinality (value cardinality "1"))))) + logical_presentations (list unit_reference_list + (object ClassDiagram "Main" + quid "393E2224CFC8" + title "Main" + zoom 70 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list + (object ClassView "Class" "Logical View::G4BENeutronChannel" @1 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2080, 1376) + label (object ItemLabel + Parent_View @1 + location (1736, 1247) + nlines 1 + max_width 688 + justify 0 + label "G4BENeutronChannel") + icon_style "Icon" + quidu "393E2483F4B8" + compartment (object Compartment + Parent_View @1 + location (1736, 1321) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 4 + max_width 692) + width 706 + height 288 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::G4BEChargedChannel" @2 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1072, 1472) + label (object ItemLabel + Parent_View @2 + location (703, 1253) + nlines 1 + max_width 738 + justify 0 + label "G4BEChargedChannel") + icon_style "Icon" + quidu "393E24D14F08" + compartment (object Compartment + Parent_View @2 + location (703, 1327) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 8 + max_width 748) + width 756 + height 468 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::G4BEProtonChannel" @3 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (384, 2144) + label (object ItemLabel + Parent_View @3 + location (59, 2015) + nlines 1 + max_width 650 + justify 0 + label "G4BEProtonChannel") + icon_style "Icon" + quidu "393E25A38210" + compartment (object Compartment + Parent_View @3 + location (59, 2089) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 4 + max_width 496) + width 668 + height 288 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::G4BEDeuteronChannel" @4 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (800, 2544) + label (object ItemLabel + Parent_View @4 + location (442, 2415) + nlines 1 + max_width 716 + justify 0 + label "G4BEDeuteronChannel") + icon_style "Icon" + quidu "393E2614D900" + compartment (object Compartment + Parent_View @4 + location (442, 2489) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 4 + max_width 496) + width 734 + height 288 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::G4BETritonChannel" @5 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1280, 2144) + label (object ItemLabel + Parent_View @5 + location (954, 2015) + nlines 1 + max_width 652 + justify 0 + label "G4BETritonChannel") + icon_style "Icon" + quidu "393E2660C698" + compartment (object Compartment + Parent_View @5 + location (954, 2089) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 4 + max_width 496) + width 670 + height 288 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::G4BeHe3Channel" @6 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1776, 2544) + label (object ItemLabel + Parent_View @6 + location (1507, 2415) + nlines 1 + max_width 538 + justify 0 + label "G4BeHe3Channel") + icon_style "Icon" + quidu "393E26F70A48" + compartment (object Compartment + Parent_View @6 + location (1507, 2489) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 4 + max_width 496) + width 556 + height 288 + annotation 8 + autoResize TRUE) + (object ClassView "Class" "Logical View::G4BEHe4Channel" @7 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2112, 2144) + label (object ItemLabel + Parent_View @7 + location (1842, 2015) + nlines 1 + max_width 540 + justify 0 + label "G4BEHe4Channel") + icon_style "Icon" + quidu "393E273CB170" + compartment (object Compartment + Parent_View @7 + location (1842, 2089) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 4 + max_width 496) + width 558 + height 288 + annotation 8 + autoResize TRUE) + (object InheritView "" @8 + stereotype TRUE + quidu "393E28EF75C8" + client @3 + supplier @2 + line_style 0) + (object InheritView "" @9 + stereotype TRUE + quidu "393E29158448" + client @5 + supplier @2 + line_style 0) + (object InheritView "" @10 + stereotype TRUE + quidu "393E29299390" + client @7 + supplier @2 + line_style 0) + (object ClassView "Class" "Logical View::G4BertiniEvaporationChannel" @11 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1072, 736) + label (object ItemLabel + Parent_View @11 + location (571, 495) + nlines 1 + max_width 1002 + justify 0 + label "G4BertiniEvaporationChannel") + icon_style "Icon" + quidu "393E22D76108" + compartment (object Compartment + Parent_View @11 + location (571, 569) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 9 + max_width 692) + width 1020 + height 512 + annotation 8 + autoResize TRUE) + (object InheritView "" @12 + stereotype TRUE + quidu "393E29ED0248" + client @2 + supplier @11 + line_style 0) + (object InheritView "" @13 + stereotype TRUE + quidu "393E29F70BF8" + client @1 + supplier @11 + line_style 0) + (object ClassView "Class" "Logical View::G4BertiniEvaporation" @14 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (1568, 128) + label (object ItemLabel + Parent_View @14 + location (1192, 22) + nlines 1 + max_width 752 + justify 0 + label "G4BertiniEvaporation") + icon_style "Icon" + quidu "393E2246EC48" + compartment (object Compartment + Parent_View @14 + location (1192, 96) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 3 + max_width 552) + width 770 + height 242 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$0" @15 + location (1374, 364) + stereotype TRUE + quidu "393E23ECB140" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$1" @16 + Parent_View @15 + location (990, -20) + stereotype TRUE + line_color 3342489 + quidu "393E23F0F318" + client @15 + supplier @11 + line_style 0 + label (object SegLabel @17 + Parent_View @16 + location (1249, 434) + font (object Font + size 10) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "6" + pctDist 0.900000 + height 54 + orientation 1)) + (object RoleView "$UNNAMED$2" @18 + Parent_View @15 + location (990, -20) + stereotype TRUE + line_color 3342489 + quidu "393E23F0FA50" + client @15 + supplier @14 + line_style 0 + label (object SegLabel @19 + Parent_View @18 + location (1418, 227) + font (object Font + size 10) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 0)))) + (object ClassView "Class" "Logical View::G4BEGammaDeexcitationChannel" @20 + ShowCompartmentStereotypes TRUE + IncludeAttribute TRUE + IncludeOperation TRUE + location (2368, 656) + label (object ItemLabel + Parent_View @20 + location (1844, 495) + nlines 1 + max_width 1048 + justify 0 + label "G4BEGammaDeexcitationChannel") + icon_style "Icon" + quidu "393E2E39F3A0" + compartment (object Compartment + Parent_View @20 + location (1844, 569) + font (object Font + size 10) + icon_style "Icon" + anchor 2 + nlines 6 + max_width 656) + width 1066 + height 352 + annotation 8 + autoResize TRUE) + (object AssociationViewNew "$UNNAMED$3" @21 + location (1926, 364) + stereotype TRUE + quidu "393E2F3F9200" + roleview_list (list RoleViews + (object RoleView "$UNNAMED$4" @22 + Parent_View @21 + location (-298, 76) + stereotype TRUE + line_color 3342489 + quidu "393E2F468710" + client @21 + supplier @14 + line_style 0 + label (object SegLabel @23 + Parent_View @22 + location (1740, 305) + font (object Font + size 10) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 0)) + (object RoleView "$UNNAMED$5" @24 + Parent_View @21 + location (-298, 76) + stereotype TRUE + line_color 3342489 + quidu "393E2F46A4C8" + client @21 + supplier @20 + line_style 0 + label (object SegLabel @25 + Parent_View @24 + location (2054, 512) + font (object Font + size 10) + anchor 2 + anchor_loc 1 + nlines 1 + max_width 15 + justify 0 + label "1" + pctDist 0.900000 + height 54 + orientation 1)))) + (object InheritView "" @26 + stereotype TRUE + quidu "393E2922F480" + client @6 + supplier @2 + vertices (list Points + (1752, 2399) + (1691, 1989) + (1352, 1706)) + line_style 0) + (object InheritView "" @27 + stereotype TRUE + quidu "393E28DEB970" + client @4 + supplier @2 + vertices (list Points + (810, 2399) + (845, 1943) + (958, 1706)) + line_style 0))))) + root_subsystem (object SubSystem "Component View" + quid "393E2200F6AA" + physical_models (list unit_reference_list) + physical_presentations (list unit_reference_list + (object Module_Diagram "Main" + quid "393E22237EF8" + title "Main" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + process_structure (object Processes + quid "393E2200F6AB" + ProcsNDevs (list + (object Process_Diagram "Deployment View" + quid "393E2200F6AD" + title "Deployment View" + zoom 100 + max_height 28350 + max_width 21600 + origin_x 0 + origin_y 0 + items (list diagram_item_list)))) + properties (object Properties + attributes (list Attribute_Set + (object Attribute + tool "Ada83" + name "propertyId" + value "838326200") + (object Attribute + tool "Ada83" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "SpecFileExtension" + value "1.ada") + (object Attribute + tool "Ada83" + name "SpecFileBackupExtension" + value "1.ad~") + (object Attribute + tool "Ada83" + name "SpecFileTemporaryExtension" + value "1.ad#") + (object Attribute + tool "Ada83" + name "BodyFileExtension" + value "2.ada") + (object Attribute + tool "Ada83" + name "BodyFileBackupExtension" + value "2.ad~") + (object Attribute + tool "Ada83" + name "BodyFileTemporaryExtension" + value "2.ad#") + (object Attribute + tool "Ada83" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "Ada83" + name "GenerateBodies" + value FALSE) + (object Attribute + tool "Ada83" + name "GenerateStandardOperations" + value TRUE) + (object Attribute + tool "Ada83" + name "ImplicitParameter" + value TRUE) + (object Attribute + tool "Ada83" + name "CommentWidth" + value 60) + (object Attribute + tool "Ada83" + name "StopOnError" + value FALSE) + (object Attribute + tool "Ada83" + name "ErrorLimit" + value 30) + (object Attribute + tool "Ada83" + name "FileNameFormat" + value "128vx_b") + (object Attribute + tool "Ada83" + name "Directory" + value "$ROSEADA83_SOURCE"))) + (object Attribute + tool "Ada83" + name "default__Class" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "CodeName" + value "") + (object Attribute + tool "Ada83" + name "ClassName" + value "Object") + (object Attribute + tool "Ada83" + name "ClassAccess" + value ("ImplementationSet" 43)) + (object Attribute + tool "Ada83" + name "ImplementationType" + value (value Text "")) + (object Attribute + tool "Ada83" + name "IsSubtype" + value FALSE) + (object Attribute + tool "Ada83" + name "PolymorphicUnit" + value FALSE) + (object Attribute + tool "Ada83" + name "HandleName" + value "Handle") + (object Attribute + tool "Ada83" + name "HandleAccess" + value ("ImplementationSet" 45)) + (object Attribute + tool "Ada83" + name "Discriminant" + value "") + (object Attribute + tool "Ada83" + name "Variant" + value "") + (object Attribute + tool "Ada83" + name "EnumerationLiteralPrefix" + value "A_") + (object Attribute + tool "Ada83" + name "RecordFieldPrefix" + value "The_") + (object Attribute + tool "Ada83" + name "GenerateStandardOperations" + value TRUE) + (object Attribute + tool "Ada83" + name "ImplicitParameter" + value TRUE) + (object Attribute + tool "Ada83" + name "ClassParameterName" + value "This") + (object Attribute + tool "Ada83" + name "DefaultConstructorKind" + value ("ConstructorKindSet" 199)) + (object Attribute + tool "Ada83" + name "DefaultConstructorName" + value "Create") + (object Attribute + tool "Ada83" + name "InlineDefaultConstructor" + value FALSE) + (object Attribute + tool "Ada83" + name "CopyConstructorKind" + value ("ConstructorKindSet" 199)) + (object Attribute + tool "Ada83" + name "CopyConstructorName" + value "Copy") + (object Attribute + tool "Ada83" + name "InlineCopyConstructor" + value FALSE) + (object Attribute + tool "Ada83" + name "DestructorName" + value "Free") + (object Attribute + tool "Ada83" + name "InlineDestructor" + value FALSE) + (object Attribute + tool "Ada83" + name "ClassEqualityOperation" + value "") + (object Attribute + tool "Ada83" + name "HandleEqualityOperation" + value "") + (object Attribute + tool "Ada83" + name "InlineEquality" + value FALSE) + (object Attribute + tool "Ada83" + name "IsTask" + value FALSE) + (object Attribute + tool "Ada83" + name "ImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Public" + value 45) + (object Attribute + tool "Ada83" + name "Private" + value 43) + (object Attribute + tool "Ada83" + name "LimitedPrivate" + value 200) + (object Attribute + tool "Ada83" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada83" + name "ConstructorKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Procedure" + value 202) + (object Attribute + tool "Ada83" + name "Function" + value 199) + (object Attribute + tool "Ada83" + name "DoNotCreate" + value 201))))) + (object Attribute + tool "Ada83" + name "default__Module-Spec" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Generate" + value TRUE) + (object Attribute + tool "Ada83" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "Ada83" + name "FileName" + value "AUTO GENERATE") + (object Attribute + tool "Ada83" + name "ReturnType" + value "") + (object Attribute + tool "Ada83" + name "GenericFormalParameters" + value (value Text "")) + (object Attribute + tool "Ada83" + name "AdditionalWiths" + value (value Text "")))) + (object Attribute + tool "Ada83" + name "default__Module-Body" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Generate" + value TRUE) + (object Attribute + tool "Ada83" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "Ada83" + name "FileName" + value "AUTO GENERATE") + (object Attribute + tool "Ada83" + name "ReturnType" + value "") + (object Attribute + tool "Ada83" + name "AdditionalWiths" + value (value Text "")))) + (object Attribute + tool "Ada83" + name "default__Operation" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "CodeName" + value "") + (object Attribute + tool "Ada83" + name "SubprogramImplementation" + value ("SubprogramImplementationSet" 2)) + (object Attribute + tool "Ada83" + name "ClassParameterMode" + value ("ParameterModeSet" 203)) + (object Attribute + tool "Ada83" + name "Inline" + value FALSE) + (object Attribute + tool "Ada83" + name "EntryCode" + value (value Text "")) + (object Attribute + tool "Ada83" + name "ExitCode" + value (value Text "")) + (object Attribute + tool "Ada83" + name "SubprogramImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Body" + value 2) + (object Attribute + tool "Ada83" + name "Separate" + value 223) + (object Attribute + tool "Ada83" + name "Spec" + value 224))) + (object Attribute + tool "Ada83" + name "ParameterModeSet" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "In" + value 204) + (object Attribute + tool "Ada83" + name "Out" + value 205) + (object Attribute + tool "Ada83" + name "InOut" + value 203) + (object Attribute + tool "Ada83" + name "FunctionReturn" + value 206))))) + (object Attribute + tool "Ada83" + name "default__Has" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "CodeName" + value "") + (object Attribute + tool "Ada83" + name "NameIfUnlabeled" + value "The_${supplier}") + (object Attribute + tool "Ada83" + name "DataMemberName" + value "${relationship}") + (object Attribute + tool "Ada83" + name "GetName" + value "Get_${relationship}") + (object Attribute + tool "Ada83" + name "InlineGet" + value TRUE) + (object Attribute + tool "Ada83" + name "SetName" + value "Set_${relationship}") + (object Attribute + tool "Ada83" + name "InlineSet" + value TRUE) + (object Attribute + tool "Ada83" + name "IsConstant" + value FALSE) + (object Attribute + tool "Ada83" + name "InitialValue" + value "") + (object Attribute + tool "Ada83" + name "Variant" + value "") + (object Attribute + tool "Ada83" + name "ContainerGeneric" + value "List") + (object Attribute + tool "Ada83" + name "ContainerType" + value "") + (object Attribute + tool "Ada83" + name "ContainerDeclarations" + value (value Text "")) + (object Attribute + tool "Ada83" + name "SelectorName" + value "") + (object Attribute + tool "Ada83" + name "SelectorType" + value ""))) + (object Attribute + tool "Ada83" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "CodeName" + value "") + (object Attribute + tool "Ada83" + name "DataMemberName" + value "${attribute}") + (object Attribute + tool "Ada83" + name "GetName" + value "Get_${attribute}") + (object Attribute + tool "Ada83" + name "InlineGet" + value TRUE) + (object Attribute + tool "Ada83" + name "SetName" + value "Set_${attribute}") + (object Attribute + tool "Ada83" + name "InlineSet" + value TRUE) + (object Attribute + tool "Ada83" + name "IsConstant" + value FALSE) + (object Attribute + tool "Ada83" + name "Variant" + value ""))) + (object Attribute + tool "Ada83" + name "default__Association" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "NameIfUnlabeled" + value "The_${targetClass}") + (object Attribute + tool "Ada83" + name "GetName" + value "Get_${association}") + (object Attribute + tool "Ada83" + name "InlineGet" + value FALSE) + (object Attribute + tool "Ada83" + name "SetName" + value "Set_${association}") + (object Attribute + tool "Ada83" + name "InlineSet" + value FALSE) + (object Attribute + tool "Ada83" + name "GenerateAssociate" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada83" + name "AssociateName" + value "Associate") + (object Attribute + tool "Ada83" + name "InlineAssociate" + value FALSE) + (object Attribute + tool "Ada83" + name "GenerateDissociate" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada83" + name "DissociateName" + value "Dissociate") + (object Attribute + tool "Ada83" + name "InlineDissociate" + value FALSE) + (object Attribute + tool "Ada83" + name "ProcedureKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Procedure" + value 202) + (object Attribute + tool "Ada83" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada83" + name "FunctionKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Function" + value 199) + (object Attribute + tool "Ada83" + name "DoNotCreate" + value 201))))) + (object Attribute + tool "Ada83" + name "default__Role" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "CodeName" + value "") + (object Attribute + tool "Ada83" + name "NameIfUnlabeled" + value "The_${targetClass}") + (object Attribute + tool "Ada83" + name "DataMemberName" + value "${target}") + (object Attribute + tool "Ada83" + name "GetName" + value "Get_${target}") + (object Attribute + tool "Ada83" + name "InlineGet" + value TRUE) + (object Attribute + tool "Ada83" + name "SetName" + value "Set_${target}") + (object Attribute + tool "Ada83" + name "InlineSet" + value TRUE) + (object Attribute + tool "Ada83" + name "InitialValue" + value "") + (object Attribute + tool "Ada83" + name "ContainerGeneric" + value "List") + (object Attribute + tool "Ada83" + name "ContainerType" + value "") + (object Attribute + tool "Ada83" + name "ContainerDeclarations" + value (value Text "")) + (object Attribute + tool "Ada83" + name "SelectorName" + value "") + (object Attribute + tool "Ada83" + name "SelectorType" + value "") + (object Attribute + tool "Ada83" + name "ProcedureKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Procedure" + value 202) + (object Attribute + tool "Ada83" + name "DoNotCreate" + value 201))))) + (object Attribute + tool "Ada83" + name "default__Subsystem" + value (list Attribute_Set + (object Attribute + tool "Ada83" + name "Directory" + value "AUTO GENERATE"))) + (object Attribute + tool "Ada83" + name "HiddenTool" + value FALSE) + (object Attribute + tool "Ada95" + name "propertyId" + value "838326200") + (object Attribute + tool "Ada95" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "SpecFileExtension" + value "1.ada") + (object Attribute + tool "Ada95" + name "SpecFileBackupExtension" + value "1.ad~") + (object Attribute + tool "Ada95" + name "SpecFileTemporaryExtension" + value "1.ad#") + (object Attribute + tool "Ada95" + name "BodyFileExtension" + value "2.ada") + (object Attribute + tool "Ada95" + name "BodyFileBackupExtension" + value "2.ad~") + (object Attribute + tool "Ada95" + name "BodyFileTemporaryExtension" + value "2.ad#") + (object Attribute + tool "Ada95" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "Ada95" + name "GenerateBodies" + value FALSE) + (object Attribute + tool "Ada95" + name "GenerateStandardOperations" + value FALSE) + (object Attribute + tool "Ada95" + name "ImplicitParameter" + value FALSE) + (object Attribute + tool "Ada95" + name "CommentWidth" + value 60) + (object Attribute + tool "Ada95" + name "StopOnError" + value FALSE) + (object Attribute + tool "Ada95" + name "ErrorLimit" + value 30) + (object Attribute + tool "Ada95" + name "FileNameFormat" + value "128vx_b") + (object Attribute + tool "Ada95" + name "Directory" + value "$ROSEADA95_SOURCE"))) + (object Attribute + tool "Ada95" + name "default__Class" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "CodeName" + value "") + (object Attribute + tool "Ada95" + name "TypeName" + value "Object") + (object Attribute + tool "Ada95" + name "TypeVisibility" + value ("TypeVisibilitySet" 43)) + (object Attribute + tool "Ada95" + name "TypeImplementation" + value ("TypeImplementationSet" 208)) + (object Attribute + tool "Ada95" + name "TypeControl" + value ("TypeControlSet" 225)) + (object Attribute + tool "Ada95" + name "TypeControlName" + value "Controlled_${type}") + (object Attribute + tool "Ada95" + name "TypeDefinition" + value (value Text "")) + (object Attribute + tool "Ada95" + name "RecordImplementation" + value ("RecordImplementationSet" 209)) + (object Attribute + tool "Ada95" + name "RecordKindPackageName" + value "${class}_Record_Kinds") + (object Attribute + tool "Ada95" + name "IsLimited" + value FALSE) + (object Attribute + tool "Ada95" + name "IsSubtype" + value FALSE) + (object Attribute + tool "Ada95" + name "GenerateAccessType" + value ("GenerateAccessTypeSet" 230)) + (object Attribute + tool "Ada95" + name "AccessTypeName" + value "Handle") + (object Attribute + tool "Ada95" + name "AccessTypeVisibility" + value ("TypeVisibilitySet" 45)) + (object Attribute + tool "Ada95" + name "AccessTypeDefinition" + value (value Text "")) + (object Attribute + tool "Ada95" + name "MaybeAliased" + value FALSE) + (object Attribute + tool "Ada95" + name "ParameterizedImplementation" + value ("ParameterizedImplementationSet" 11)) + (object Attribute + tool "Ada95" + name "ParentClassName" + value "Superclass") + (object Attribute + tool "Ada95" + name "EnumerationLiteralPrefix" + value "A_") + (object Attribute + tool "Ada95" + name "RecordFieldPrefix" + value "The_") + (object Attribute + tool "Ada95" + name "ArrayOfTypeName" + value "Array_Of_${type}") + (object Attribute + tool "Ada95" + name "AccessArrayOfTypeName" + value "Access_Array_Of_${type}") + (object Attribute + tool "Ada95" + name "ArrayOfAccessTypeName" + value "Array_Of_${access_type}") + (object Attribute + tool "Ada95" + name "AccessArrayOfAccessTypeName" + value "Access_Array_Of_${access_type}") + (object Attribute + tool "Ada95" + name "ArrayIndexDefinition" + value "Positive range <>") + (object Attribute + tool "Ada95" + name "GenerateStandardOperations" + value TRUE) + (object Attribute + tool "Ada95" + name "ImplicitParameter" + value TRUE) + (object Attribute + tool "Ada95" + name "ImplicitParameterName" + value "This") + (object Attribute + tool "Ada95" + name "GenerateDefaultConstructor" + value ("SubprogramKindSet" 199)) + (object Attribute + tool "Ada95" + name "DefaultConstructorName" + value "Create") + (object Attribute + tool "Ada95" + name "InlineDefaultConstructor" + value FALSE) + (object Attribute + tool "Ada95" + name "GenerateCopyConstructor" + value ("SubprogramKindSet" 199)) + (object Attribute + tool "Ada95" + name "CopyConstructorName" + value "Copy") + (object Attribute + tool "Ada95" + name "InlineCopyConstructor" + value FALSE) + (object Attribute + tool "Ada95" + name "GenerateDestructor" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada95" + name "DestructorName" + value "Free") + (object Attribute + tool "Ada95" + name "InlineDestructor" + value FALSE) + (object Attribute + tool "Ada95" + name "GenerateTypeEquality" + value ("FunctionKindSet" 201)) + (object Attribute + tool "Ada95" + name "TypeEqualityName" + value "${quote}=${quote}") + (object Attribute + tool "Ada95" + name "InlineEquality" + value FALSE) + (object Attribute + tool "Ada95" + name "TypeImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Tagged" + value 208) + (object Attribute + tool "Ada95" + name "Record" + value 210) + (object Attribute + tool "Ada95" + name "Mixin" + value 211) + (object Attribute + tool "Ada95" + name "Protected" + value 44) + (object Attribute + tool "Ada95" + name "Task" + value 212))) + (object Attribute + tool "Ada95" + name "RecordImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "SingleType" + value 209) + (object Attribute + tool "Ada95" + name "MultipleTypes" + value 213))) + (object Attribute + tool "Ada95" + name "ParameterizedImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Generic" + value 11) + (object Attribute + tool "Ada95" + name "Unconstrained" + value 214))) + (object Attribute + tool "Ada95" + name "TypeVisibilitySet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Public" + value 45) + (object Attribute + tool "Ada95" + name "Private" + value 43))) + (object Attribute + tool "Ada95" + name "SubprogramKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Procedure" + value 202) + (object Attribute + tool "Ada95" + name "Function" + value 199) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada95" + name "ProcedureKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Procedure" + value 202) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada95" + name "FunctionKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Function" + value 199) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada95" + name "TypeControlSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "None" + value 225) + (object Attribute + tool "Ada95" + name "InitializationOnly" + value 226) + (object Attribute + tool "Ada95" + name "AssignmentFinalizationOnly" + value 227) + (object Attribute + tool "Ada95" + name "All" + value 228))) + (object Attribute + tool "Ada95" + name "GenerateAccessTypeSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Always" + value 229) + (object Attribute + tool "Ada95" + name "Auto" + value 230))))) + (object Attribute + tool "Ada95" + name "default__Module-Spec" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Generate" + value TRUE) + (object Attribute + tool "Ada95" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "Ada95" + name "FileName" + value "AUTO GENERATE") + (object Attribute + tool "Ada95" + name "ReturnType" + value "") + (object Attribute + tool "Ada95" + name "GenericFormalParameters" + value (value Text "")) + (object Attribute + tool "Ada95" + name "AdditionalWiths" + value (value Text "")))) + (object Attribute + tool "Ada95" + name "default__Module-Body" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Generate" + value TRUE) + (object Attribute + tool "Ada95" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "Ada95" + name "FileName" + value "AUTO GENERATE") + (object Attribute + tool "Ada95" + name "ReturnType" + value "") + (object Attribute + tool "Ada95" + name "AdditionalWiths" + value (value Text "")))) + (object Attribute + tool "Ada95" + name "default__Operation" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "CodeName" + value "") + (object Attribute + tool "Ada95" + name "SubprogramImplementation" + value ("SubprogramImplementationSet" 2)) + (object Attribute + tool "Ada95" + name "Renames" + value "") + (object Attribute + tool "Ada95" + name "GenerateOverriding" + value TRUE) + (object Attribute + tool "Ada95" + name "ImplicitParameterMode" + value ("ParameterModeSet" 203)) + (object Attribute + tool "Ada95" + name "GenerateAccessOperation" + value FALSE) + (object Attribute + tool "Ada95" + name "Inline" + value FALSE) + (object Attribute + tool "Ada95" + name "EntryCode" + value (value Text "")) + (object Attribute + tool "Ada95" + name "ExitCode" + value (value Text "")) + (object Attribute + tool "Ada95" + name "EntryBarrierCondition" + value "True") + (object Attribute + tool "Ada95" + name "SubprogramImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Abstract" + value 221) + (object Attribute + tool "Ada95" + name "Body" + value 2) + (object Attribute + tool "Ada95" + name "Renaming" + value 222) + (object Attribute + tool "Ada95" + name "Separate" + value 223) + (object Attribute + tool "Ada95" + name "Spec" + value 224))) + (object Attribute + tool "Ada95" + name "ParameterModeSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "In" + value 204) + (object Attribute + tool "Ada95" + name "Out" + value 205) + (object Attribute + tool "Ada95" + name "InOut" + value 203))))) + (object Attribute + tool "Ada95" + name "default__Has" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "CodeName" + value "") + (object Attribute + tool "Ada95" + name "NameIfUnlabeled" + value "The_${supplier}") + (object Attribute + tool "Ada95" + name "RecordFieldImplementation" + value ("RecordFieldImplementationSet" 216)) + (object Attribute + tool "Ada95" + name "RecordFieldName" + value "${relationship}") + (object Attribute + tool "Ada95" + name "GenerateGet" + value ("FunctionKindSet" 199)) + (object Attribute + tool "Ada95" + name "GenerateAccessGet" + value ("FunctionKindSet" 201)) + (object Attribute + tool "Ada95" + name "GetName" + value "Get_${relationship}") + (object Attribute + tool "Ada95" + name "InlineGet" + value TRUE) + (object Attribute + tool "Ada95" + name "GenerateSet" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada95" + name "GenerateAccessSet" + value ("ProcedureKindSet" 201)) + (object Attribute + tool "Ada95" + name "SetName" + value "Set_${relationship}") + (object Attribute + tool "Ada95" + name "InlineSet" + value TRUE) + (object Attribute + tool "Ada95" + name "InitialValue" + value "") + (object Attribute + tool "Ada95" + name "ContainerImplementation" + value ("ContainerImplementationSet" 217)) + (object Attribute + tool "Ada95" + name "ContainerGeneric" + value "List") + (object Attribute + tool "Ada95" + name "ContainerType" + value "") + (object Attribute + tool "Ada95" + name "ContainerDeclarations" + value (value Text "")) + (object Attribute + tool "Ada95" + name "SelectorName" + value "") + (object Attribute + tool "Ada95" + name "SelectorType" + value "") + (object Attribute + tool "Ada95" + name "RecordFieldImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Component" + value 216) + (object Attribute + tool "Ada95" + name "Discriminant" + value 218) + (object Attribute + tool "Ada95" + name "AccessDiscriminant" + value 219))) + (object Attribute + tool "Ada95" + name "ContainerImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Array" + value 217) + (object Attribute + tool "Ada95" + name "Generic" + value 11))) + (object Attribute + tool "Ada95" + name "ProcedureKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Procedure" + value 202) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada95" + name "FunctionKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Function" + value 199) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))))) + (object Attribute + tool "Ada95" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "CodeName" + value "") + (object Attribute + tool "Ada95" + name "RecordFieldImplementation" + value ("RecordFieldImplementationSet" 216)) + (object Attribute + tool "Ada95" + name "RecordFieldName" + value "${attribute}") + (object Attribute + tool "Ada95" + name "GenerateGet" + value ("FunctionKindSet" 199)) + (object Attribute + tool "Ada95" + name "GenerateAccessGet" + value ("FunctionKindSet" 201)) + (object Attribute + tool "Ada95" + name "GetName" + value "Get_${attribute}") + (object Attribute + tool "Ada95" + name "InlineGet" + value TRUE) + (object Attribute + tool "Ada95" + name "GenerateSet" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada95" + name "GenerateAccessSet" + value ("ProcedureKindSet" 201)) + (object Attribute + tool "Ada95" + name "SetName" + value "Set_${attribute}") + (object Attribute + tool "Ada95" + name "InlineSet" + value TRUE) + (object Attribute + tool "Ada95" + name "RecordFieldImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Component" + value 216) + (object Attribute + tool "Ada95" + name "Discriminant" + value 218) + (object Attribute + tool "Ada95" + name "AccessDiscriminant" + value 219))) + (object Attribute + tool "Ada95" + name "ProcedureKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Procedure" + value 202) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada95" + name "FunctionKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Function" + value 199) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))))) + (object Attribute + tool "Ada95" + name "default__Association" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "NameIfUnlabeled" + value "The_${targetClass}") + (object Attribute + tool "Ada95" + name "GenerateGet" + value ("FunctionKindSet" 199)) + (object Attribute + tool "Ada95" + name "GetName" + value "Get_${association}") + (object Attribute + tool "Ada95" + name "InlineGet" + value FALSE) + (object Attribute + tool "Ada95" + name "GenerateSet" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada95" + name "SetName" + value "Set_${association}") + (object Attribute + tool "Ada95" + name "InlineSet" + value FALSE) + (object Attribute + tool "Ada95" + name "GenerateAssociate" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada95" + name "AssociateName" + value "Associate") + (object Attribute + tool "Ada95" + name "InlineAssociate" + value FALSE) + (object Attribute + tool "Ada95" + name "GenerateDissociate" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada95" + name "DissociateName" + value "Dissociate") + (object Attribute + tool "Ada95" + name "InlineDissociate" + value FALSE) + (object Attribute + tool "Ada95" + name "ProcedureKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Procedure" + value 202) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada95" + name "FunctionKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Function" + value 199) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))))) + (object Attribute + tool "Ada95" + name "default__Role" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "CodeName" + value "") + (object Attribute + tool "Ada95" + name "NameIfUnlabeled" + value "The_${targetClass}") + (object Attribute + tool "Ada95" + name "RecordFieldName" + value "${target}") + (object Attribute + tool "Ada95" + name "GenerateGet" + value ("FunctionKindSet" 199)) + (object Attribute + tool "Ada95" + name "GenerateAccessGet" + value ("FunctionKindSet" 201)) + (object Attribute + tool "Ada95" + name "GetName" + value "Get_${target}") + (object Attribute + tool "Ada95" + name "InlineGet" + value TRUE) + (object Attribute + tool "Ada95" + name "GenerateSet" + value ("ProcedureKindSet" 202)) + (object Attribute + tool "Ada95" + name "GenerateAccessSet" + value ("ProcedureKindSet" 201)) + (object Attribute + tool "Ada95" + name "SetName" + value "Set_${target}") + (object Attribute + tool "Ada95" + name "InlineSet" + value TRUE) + (object Attribute + tool "Ada95" + name "InitialValue" + value "") + (object Attribute + tool "Ada95" + name "ContainerImplementation" + value ("ContainerImplementationSet" 217)) + (object Attribute + tool "Ada95" + name "ContainerGeneric" + value "List") + (object Attribute + tool "Ada95" + name "ContainerType" + value "") + (object Attribute + tool "Ada95" + name "ContainerDeclarations" + value (value Text "")) + (object Attribute + tool "Ada95" + name "SelectorName" + value "") + (object Attribute + tool "Ada95" + name "SelectorType" + value "") + (object Attribute + tool "Ada95" + name "ProcedureKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Procedure" + value 202) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))) + (object Attribute + tool "Ada95" + name "ContainerImplementationSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Array" + value 217) + (object Attribute + tool "Ada95" + name "Generic" + value 11))) + (object Attribute + tool "Ada95" + name "FunctionKindSet" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Function" + value 199) + (object Attribute + tool "Ada95" + name "DoNotCreate" + value 201))))) + (object Attribute + tool "Ada95" + name "default__Subsystem" + value (list Attribute_Set + (object Attribute + tool "Ada95" + name "Directory" + value "AUTO GENERATE"))) + (object Attribute + tool "Ada95" + name "HiddenTool" + value FALSE) + (object Attribute + tool "CORBA" + name "propertyId" + value "809135966") + (object Attribute + tool "CORBA" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "CORBA" + name "Editor" + value ("EditorType" 100)) + (object Attribute + tool "CORBA" + name "IncludePath" + value "") + (object Attribute + tool "CORBA" + name "StopOnError" + value TRUE) + (object Attribute + tool "CORBA" + name "EditorType" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "BuiltIn" + value 100) + (object Attribute + tool "CORBA" + name "WindowsShell" + value 101))))) + (object Attribute + tool "CORBA" + name "default__Class" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "ArrayDimensions" + value "") + (object Attribute + tool "CORBA" + name "ConstValue" + value "") + (object Attribute + tool "CORBA" + name "ImplementationType" + value ""))) + (object Attribute + tool "CORBA" + name "default__Module-Spec" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "AdditionalIncludes" + value (value Text "")) + (object Attribute + tool "CORBA" + name "CmIdentification" + value (value Text " %X% %Q% %Z% %W%")) + (object Attribute + tool "CORBA" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "CORBA" + name "InclusionProtectionSymbol" + value "AUTO GENERATE"))) + (object Attribute + tool "CORBA" + name "default__Module-Body" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "AdditionalIncludes" + value (value Text "")) + (object Attribute + tool "CORBA" + name "CmIdentification" + value (value Text " %X% %Q% %Z% %W%")) + (object Attribute + tool "CORBA" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "CORBA" + name "InclusionProtectionSymbol" + value "AUTO GENERATE"))) + (object Attribute + tool "CORBA" + name "default__Operation" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "Context" + value "") + (object Attribute + tool "CORBA" + name "OperationIsOneWay" + value FALSE))) + (object Attribute + tool "CORBA" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "ArrayDimensions" + value "") + (object Attribute + tool "CORBA" + name "CaseSpecifier" + value "") + (object Attribute + tool "CORBA" + name "IsReadOnly" + value FALSE) + (object Attribute + tool "CORBA" + name "Order" + value ""))) + (object Attribute + tool "CORBA" + name "default__Role" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "ArrayDimensions" + value "") + (object Attribute + tool "CORBA" + name "CaseSpecifier" + value "") + (object Attribute + tool "CORBA" + name "GenerateForwardReference" + value FALSE) + (object Attribute + tool "CORBA" + name "IsReadOnly" + value FALSE) + (object Attribute + tool "CORBA" + name "Order" + value "") + (object Attribute + tool "CORBA" + name "BoundedRoleType" + value ("AssocTypeSet" 47)) + (object Attribute + tool "CORBA" + name "AssocTypeSet" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "Array" + value 24) + (object Attribute + tool "CORBA" + name "Sequence" + value 47))))) + (object Attribute + tool "CORBA" + name "default__Uses" + value (list Attribute_Set + (object Attribute + tool "CORBA" + name "GenerateForwardReference" + value FALSE))) + (object Attribute + tool "CORBA" + name "HiddenTool" + value FALSE) + (object Attribute + tool "DDL" + name "propertyId" + value "809135966") + (object Attribute + tool "DDL" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "DDL" + name "Directory" + value "AUTO GENERATE") + (object Attribute + tool "DDL" + name "DataBase" + value ("DataBaseSet" 800)) + (object Attribute + tool "DDL" + name "DataBaseSet" + value (list Attribute_Set + (object Attribute + tool "DDL" + name "ANSI" + value 800) + (object Attribute + tool "DDL" + name "Oracle" + value 801) + (object Attribute + tool "DDL" + name "SQLServer" + value 802) + (object Attribute + tool "DDL" + name "Sybase" + value 803) + (object Attribute + tool "DDL" + name "Watcom" + value 804))) + (object Attribute + tool "DDL" + name "PrimaryKeyColumnName" + value "Id") + (object Attribute + tool "DDL" + name "PrimaryKeyColumnType" + value "NUMBER(5)") + (object Attribute + tool "DDL" + name "ViewName" + value "V_") + (object Attribute + tool "DDL" + name "TableName" + value "T_") + (object Attribute + tool "DDL" + name "InheritSuffix" + value "_V") + (object Attribute + tool "DDL" + name "DropClause" + value FALSE) + (object Attribute + tool "DDL" + name "BaseViews" + value FALSE) + (object Attribute + tool "DDL" + name "DDLScriptFilename" + value "DDL1.SQL"))) + (object Attribute + tool "DDL" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "DDL" + name "ColumnType" + value "VARCHAR") + (object Attribute + tool "DDL" + name "Length" + value "") + (object Attribute + tool "DDL" + name "NullsOK" + value TRUE) + (object Attribute + tool "DDL" + name "PrimaryKey" + value FALSE) + (object Attribute + tool "DDL" + name "Unique" + value FALSE) + (object Attribute + tool "DDL" + name "CompositeUnique" + value FALSE) + (object Attribute + tool "DDL" + name "CheckConstraint" + value ""))) + (object Attribute + tool "DDL" + name "HiddenTool" + value FALSE) + (object Attribute + tool "Java" + name "propertyId" + value "809135966") + (object Attribute + tool "Java" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "Java" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "Java" + name "StopOnError" + value FALSE) + (object Attribute + tool "Java" + name "UsePrefixes" + value FALSE) + (object Attribute + tool "Java" + name "Editor" + value ("EditorType" 100)) + (object Attribute + tool "Java" + name "VM" + value ("VMType" 200)) + (object Attribute + tool "Java" + name "ClassPath" + value "") + (object Attribute + tool "Java" + name "EditorType" + value (list Attribute_Set + (object Attribute + tool "Java" + name "BuiltIn" + value 100) + (object Attribute + tool "Java" + name "WindowsShell" + value 101))) + (object Attribute + tool "Java" + name "VMType" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Sun" + value 200) + (object Attribute + tool "Java" + name "Microsoft" + value 201))) + (object Attribute + tool "Java" + name "InstanceVariablePrefix" + value "m_") + (object Attribute + tool "Java" + name "ClassVariablePrefix" + value "s_") + (object Attribute + tool "Java" + name "DefaultAttributeDataType" + value "int") + (object Attribute + tool "Java" + name "DefaultOperationReturnType" + value "void"))) + (object Attribute + tool "Java" + name "default__Class" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Final" + value FALSE) + (object Attribute + tool "Java" + name "Static" + value FALSE) + (object Attribute + tool "Java" + name "GenerateDefaultConstructor" + value TRUE) + (object Attribute + tool "Java" + name "ConstructorIs" + value ("Ctor_Set" 62)) + (object Attribute + tool "Java" + name "Ctor_Set" + value (list Attribute_Set + (object Attribute + tool "Java" + name "public" + value 62) + (object Attribute + tool "Java" + name "protected" + value 63) + (object Attribute + tool "Java" + name "private" + value 64) + (object Attribute + tool "Java" + name "package" + value 65))) + (object Attribute + tool "Java" + name "GenerateFinalizer" + value FALSE) + (object Attribute + tool "Java" + name "GenerateStaticInitializer" + value FALSE) + (object Attribute + tool "Java" + name "GenerateInstanceInitializer" + value FALSE))) + (object Attribute + tool "Java" + name "default__Module-Spec" + value (list Attribute_Set + (object Attribute + tool "Java" + name "CmIdentification" + value (value Text "")) + (object Attribute + tool "Java" + name "CopyrightNotice" + value (value Text "")))) + (object Attribute + tool "Java" + name "default__Module-Body" + value (list Attribute_Set + (object Attribute + tool "Java" + name "CmIdentification" + value (value Text "")) + (object Attribute + tool "Java" + name "CopyrightNotice" + value (value Text "")))) + (object Attribute + tool "Java" + name "default__Operation" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Abstract" + value FALSE) + (object Attribute + tool "Java" + name "Static" + value FALSE) + (object Attribute + tool "Java" + name "Final" + value FALSE) + (object Attribute + tool "Java" + name "Native" + value FALSE) + (object Attribute + tool "Java" + name "Synchronized" + value FALSE))) + (object Attribute + tool "Java" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Final" + value FALSE) + (object Attribute + tool "Java" + name "Transient" + value FALSE) + (object Attribute + tool "Java" + name "Volatile" + value FALSE) + (object Attribute + tool "Java" + name "PropertyType" + value ("BeanProperty_Set" 71)) + (object Attribute + tool "Java" + name "BeanProperty_Set" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Not A Property" + value 71) + (object Attribute + tool "Java" + name "Simple" + value 72) + (object Attribute + tool "Java" + name "Bound" + value 73) + (object Attribute + tool "Java" + name "Constrained" + value 74))) + (object Attribute + tool "Java" + name "IndividualChangeMgt" + value FALSE) + (object Attribute + tool "Java" + name "Read/Write" + value ("Read/Write_Set" 81)) + (object Attribute + tool "Java" + name "Read/Write_Set" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Read & Write" + value 81) + (object Attribute + tool "Java" + name "Read Only" + value 82) + (object Attribute + tool "Java" + name "Write Only" + value 83))))) + (object Attribute + tool "Java" + name "default__Role" + value (list Attribute_Set + (object Attribute + tool "Java" + name "ContainerClass" + value "") + (object Attribute + tool "Java" + name "InitialValue" + value "") + (object Attribute + tool "Java" + name "Final" + value FALSE) + (object Attribute + tool "Java" + name "Transient" + value FALSE) + (object Attribute + tool "Java" + name "Volatile" + value FALSE) + (object Attribute + tool "Java" + name "PropertyType" + value ("BeanProperty_Set" 71)) + (object Attribute + tool "Java" + name "BeanProperty_Set" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Not A Property" + value 71) + (object Attribute + tool "Java" + name "Simple" + value 72) + (object Attribute + tool "Java" + name "Bound" + value 73) + (object Attribute + tool "Java" + name "Constrained" + value 74))) + (object Attribute + tool "Java" + name "IndividualChangeMgt" + value FALSE) + (object Attribute + tool "Java" + name "Read/Write" + value ("Read/Write_Set" 81)) + (object Attribute + tool "Java" + name "Read/Write_Set" + value (list Attribute_Set + (object Attribute + tool "Java" + name "Read & Write" + value 81) + (object Attribute + tool "Java" + name "Read Only" + value 82) + (object Attribute + tool "Java" + name "Write Only" + value 83))))) + (object Attribute + tool "Java" + name "HiddenTool" + value FALSE) + (object Attribute + tool "cg" + name "propertyId" + value "809135966") + (object Attribute + tool "cg" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "cg" + name "AllowGenerateOverNewerAnnotations" + value FALSE) + (object Attribute + tool "cg" + name "AllowGenerateOverNewerVersion" + value FALSE) + (object Attribute + tool "cg" + name "UseMSVC" + value FALSE) + (object Attribute + tool "cg" + name "HeaderFileExtension" + value "h") + (object Attribute + tool "cg" + name "HeaderFileBackupExtension" + value "h~") + (object Attribute + tool "cg" + name "HeaderFileTemporaryExtension" + value "h#") + (object Attribute + tool "cg" + name "CodeFileExtension" + value "cpp") + (object Attribute + tool "cg" + name "CodeFileBackupExtension" + value "cp~") + (object Attribute + tool "cg" + name "CodeFileTemporaryExtension" + value "cp#") + (object Attribute + tool "cg" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "cg" + name "StopOnError" + value FALSE) + (object Attribute + tool "cg" + name "ErrorLimit" + value 30) + (object Attribute + tool "cg" + name "Directory" + value "$ROSECPP_SOURCE") + (object Attribute + tool "cg" + name "PathSeparator" + value "") + (object Attribute + tool "cg" + name "FileNameFormat" + value "128vx_b") + (object Attribute + tool "cg" + name "BooleanType" + value "int") + (object Attribute + tool "cg" + name "AllowTemplates" + value TRUE) + (object Attribute + tool "cg" + name "AllowExplicitInstantiations" + value FALSE) + (object Attribute + tool "cg" + name "AllowProtectedInheritance" + value TRUE) + (object Attribute + tool "cg" + name "CommentWidth" + value 60) + (object Attribute + tool "cg" + name "OneByValueContainer" + value "$targetClass") + (object Attribute + tool "cg" + name "OneByReferenceContainer" + value "$targetClass *") + (object Attribute + tool "cg" + name "OptionalByValueContainer" + value "OptionalByValue<$targetClass>") + (object Attribute + tool "cg" + name "OptionalByReferenceContainer" + value "$targetClass *") + (object Attribute + tool "cg" + name "FixedByValueContainer" + value "$targetClass[$limit]") + (object Attribute + tool "cg" + name "UnorderedFixedByValueContainer" + value "$targetClass[$limit]") + (object Attribute + tool "cg" + name "FixedByReferenceContainer" + value "$targetClass *[$limit]") + (object Attribute + tool "cg" + name "UnorderedFixedByReferenceContainer" + value "$targetClass *[$limit]") + (object Attribute + tool "cg" + name "BoundedByValueContainer" + value "BoundedListByValue<$targetClass,$limit>") + (object Attribute + tool "cg" + name "UnorderedBoundedByValueContainer" + value "BoundedSetByValue<$targetClass,$limit>") + (object Attribute + tool "cg" + name "BoundedByReferenceContainer" + value "BoundedListByReference<$targetClass,$limit>") + (object Attribute + tool "cg" + name "UnorderedBoundedByReferenceContainer" + value "BoundedSetByReference<$targetClass,$limit>") + (object Attribute + tool "cg" + name "UnboundedByValueContainer" + value "UnboundedListByValue<$targetClass>") + (object Attribute + tool "cg" + name "UnorderedUnboundedByValueContainer" + value "UnboundedSetByValue<$targetClass>") + (object Attribute + tool "cg" + name "UnboundedByReferenceContainer" + value "UnboundedListByReference<$targetClass>") + (object Attribute + tool "cg" + name "UnorderedUnboundedByReferenceContainer" + value "UnboundedSetByReference<$targetClass>") + (object Attribute + tool "cg" + name "QualifiedByValueContainer" + value "AssociationByValue<$qualtype, $qualcont>") + (object Attribute + tool "cg" + name "UnorderedQualifiedByValueContainer" + value "DictionaryByValue<$qualtype, $qualcont>") + (object Attribute + tool "cg" + name "QualifiedByReferenceContainer" + value "AssociationByReference<$qualtype, $qualcont>") + (object Attribute + tool "cg" + name "UnorderedQualifiedByReferenceContainer" + value "DictionaryByReference<$qualtype, $qualcont>") + (object Attribute + tool "cg" + name "AlwaysKeepOrphanedCode" + value FALSE))) + (object Attribute + tool "cg" + name "compiler2.1__Project" + value (list Attribute_Set + (object Attribute + tool "cg" + name "AllowGenerateOverNewerAnnotations" + value FALSE) + (object Attribute + tool "cg" + name "AllowGenerateOverNewerVersion" + value FALSE) + (object Attribute + tool "cg" + name "HeaderFileExtension" + value "h") + (object Attribute + tool "cg" + name "HeaderFileBackupExtension" + value "h~") + (object Attribute + tool "cg" + name "HeaderFileTemporaryExtension" + value "h#") + (object Attribute + tool "cg" + name "CodeFileExtension" + value "cpp") + (object Attribute + tool "cg" + name "CodeFileBackupExtension" + value "cp~") + (object Attribute + tool "cg" + name "CodeFileTemporaryExtension" + value "cp#") + (object Attribute + tool "cg" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "cg" + name "StopOnError" + value FALSE) + (object Attribute + tool "cg" + name "ErrorLimit" + value 30) + (object Attribute + tool "cg" + name "Directory" + value "$ROSECPP_SOURCE") + (object Attribute + tool "cg" + name "BooleanType" + value "int") + (object Attribute + tool "cg" + name "AllowTemplates" + value FALSE) + (object Attribute + tool "cg" + name "AllowExplicitInstantiations" + value FALSE) + (object Attribute + tool "cg" + name "AllowProtectedInheritance" + value FALSE) + (object Attribute + tool "cg" + name "OneByValueContainer" + value "$targetClass") + (object Attribute + tool "cg" + name "OneByReferenceContainer" + value "$targetClass *") + (object Attribute + tool "cg" + name "OptionalByValueContainer" + value "OptionalByValue(sizeof($targetClass))") + (object Attribute + tool "cg" + name "OptionalByReferenceContainer" + value "$targetClass *") + (object Attribute + tool "cg" + name "FixedByValueContainer" + value "$targetClass[$limit]") + (object Attribute + tool "cg" + name "UnorderedFixedByValueContainer" + value "$targetClass[$limit]") + (object Attribute + tool "cg" + name "FixedByReferenceContainer" + value "$targetClass *[$limit]") + (object Attribute + tool "cg" + name "UnorderedFixedByReferenceContainer" + value "$targetClass *[$limit]") + (object Attribute + tool "cg" + name "BoundedByValueContainer" + value "BoundedListByValue(sizeof($targetClass),$limit)") + (object Attribute + tool "cg" + name "UnorderedBoundedByValueContainer" + value "BoundedSetByValue(sizeof($targetClass),$limit)") + (object Attribute + tool "cg" + name "BoundedByReferenceContainer" + value "BoundedListByReference($limit)") + (object Attribute + tool "cg" + name "UnorderedBoundedByReferenceContainer" + value "BoundedSetByReference($limit)") + (object Attribute + tool "cg" + name "UnboundedByValueContainer" + value "UnboundedListByValue(sizeof($targetClass))") + (object Attribute + tool "cg" + name "UnorderedUnboundedByValueContainer" + value "UnboundedSetByValue(sizeof($targetClass))") + (object Attribute + tool "cg" + name "UnboundedByReferenceContainer" + value "UnboundedListByReference") + (object Attribute + tool "cg" + name "UnorderedUnboundedByReferenceContainer" + value "UnboundedSetByReference") + (object Attribute + tool "cg" + name "QualifiedByValueContainer" + value "AssociationByValue(sizeof($qualtype), sizeof($qualcont))") + (object Attribute + tool "cg" + name "UnorderedQualifiedByValueContainer" + value "DictionaryByValue(sizeof($qualtype), sizeof($qualcont))") + (object Attribute + tool "cg" + name "QualifiedByReferenceContainer" + value "AssociationByReference(sizeof($qualtype), sizeof($qualcont))") + (object Attribute + tool "cg" + name "UnorderedQualifiedByReferenceContainer" + value "DictionaryByReference(sizeof($qualtype), sizeof($qualcont))") + (object Attribute + tool "cg" + name "PathSeparator" + value "") + (object Attribute + tool "cg" + name "FileNameFormat" + value "128vx_b") + (object Attribute + tool "cg" + name "AlwaysKeepOrphanedCode" + value FALSE))) + (object Attribute + tool "cg" + name "compiler3.0__Project" + value (list Attribute_Set + (object Attribute + tool "cg" + name "AllowGenerateOverNewerAnnotations" + value FALSE) + (object Attribute + tool "cg" + name "AllowGenerateOverNewerVersion" + value FALSE) + (object Attribute + tool "cg" + name "HeaderFileExtension" + value "h") + (object Attribute + tool "cg" + name "HeaderFileBackupExtension" + value "h~") + (object Attribute + tool "cg" + name "HeaderFileTemporaryExtension" + value "h#") + (object Attribute + tool "cg" + name "CodeFileExtension" + value "cpp") + (object Attribute + tool "cg" + name "CodeFileBackupExtension" + value "cp~") + (object Attribute + tool "cg" + name "CodeFileTemporaryExtension" + value "cp#") + (object Attribute + tool "cg" + name "CreateMissingDirectories" + value TRUE) + (object Attribute + tool "cg" + name "StopOnError" + value FALSE) + (object Attribute + tool "cg" + name "ErrorLimit" + value 30) + (object Attribute + tool "cg" + name "Directory" + value "$ROSECPP_SOURCE") + (object Attribute + tool "cg" + name "BooleanType" + value "int") + (object Attribute + tool "cg" + name "AllowTemplates" + value TRUE) + (object Attribute + tool "cg" + name "AllowExplicitInstantiations" + value FALSE) + (object Attribute + tool "cg" + name "AllowProtectedInheritance" + value TRUE) + (object Attribute + tool "cg" + name "OneByValueContainer" + value "$targetClass") + (object Attribute + tool "cg" + name "OneByReferenceContainer" + value "$targetClass *") + (object Attribute + tool "cg" + name "OptionalByValueContainer" + value "OptionalByValue<$targetClass>") + (object Attribute + tool "cg" + name "OptionalByReferenceContainer" + value "$targetClass *") + (object Attribute + tool "cg" + name "FixedByValueContainer" + value "$targetClass[$limit]") + (object Attribute + tool "cg" + name "UnorderedFixedByValueContainer" + value "$targetClass[$limit]") + (object Attribute + tool "cg" + name "FixedByReferenceContainer" + value "$targetClass *[$limit]") + (object Attribute + tool "cg" + name "UnorderedFixedByReferenceContainer" + value "$targetClass *[$limit]") + (object Attribute + tool "cg" + name "BoundedByValueContainer" + value "BoundedListByValue<$targetClass,$limit>") + (object Attribute + tool "cg" + name "UnorderedBoundedByValueContainer" + value "BoundedSetByValue<$targetClass,$limit>") + (object Attribute + tool "cg" + name "BoundedByReferenceContainer" + value "BoundedListByReference<$targetClass,$limit>") + (object Attribute + tool "cg" + name "UnorderedBoundedByReferenceContainer" + value "BoundedSetByReference<$targetClass,$limit>") + (object Attribute + tool "cg" + name "UnboundedByValueContainer" + value "UnboundedListByValue<$targetClass>") + (object Attribute + tool "cg" + name "UnorderedUnboundedByValueContainer" + value "UnboundedSetByValue<$targetClass>") + (object Attribute + tool "cg" + name "UnboundedByReferenceContainer" + value "UnboundedListByReference<$targetClass>") + (object Attribute + tool "cg" + name "UnorderedUnboundedByReferenceContainer" + value "UnboundedSetByReference<$targetClass>") + (object Attribute + tool "cg" + name "QualifiedByValueContainer" + value "AssociationByValue<$qualtype, $qualcont>") + (object Attribute + tool "cg" + name "UnorderedQualifiedByValueContainer" + value "DictionaryByValue<$qualtype, $qualcont>") + (object Attribute + tool "cg" + name "QualifiedByReferenceContainer" + value "AssociationByReference<$qualtype, $qualcont>") + (object Attribute + tool "cg" + name "UnorderedQualifiedByReferenceContainer" + value "DictionaryByReference<$qualtype, $qualcont>") + (object Attribute + tool "cg" + name "PathSeparator" + value "") + (object Attribute + tool "cg" + name "FileNameFormat" + value "128vx_b") + (object Attribute + tool "cg" + name "AlwaysKeepOrphanedCode" + value FALSE))) + (object Attribute + tool "cg" + name "default__Class" + value (list Attribute_Set + (object Attribute + tool "cg" + name "CodeName" + value "") + (object Attribute + tool "cg" + name "ImplementationType" + value "") + (object Attribute + tool "cg" + name "ClassKey" + value "class") + (object Attribute + tool "cg" + name "GenerateEmptyRegions" + value ("GenerateEmptyRegionSet" 3)) + (object Attribute + tool "cg" + name "GenerateEmptyRegionSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "None" + value 0) + (object Attribute + tool "cg" + name "Preserved" + value 1) + (object Attribute + tool "cg" + name "Unpreserved" + value 2) + (object Attribute + tool "cg" + name "All" + value 3))) + (object Attribute + tool "cg" + name "PutBodiesInSpec" + value FALSE) + (object Attribute + tool "cg" + name "GenerateDefaultConstructor" + value ("GenerateSet" 199)) + (object Attribute + tool "cg" + name "DefaultConstructorVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "InlineDefaultConstructor" + value FALSE) + (object Attribute + tool "cg" + name "ExplicitDefaultConstructor" + value FALSE) + (object Attribute + tool "cg" + name "GenerateCopyConstructor" + value ("GenerateSet" 199)) + (object Attribute + tool "cg" + name "CopyConstructorVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "InlineCopyConstructor" + value FALSE) + (object Attribute + tool "cg" + name "ExplicitCopyConstructor" + value FALSE) + (object Attribute + tool "cg" + name "GenerateDestructor" + value TRUE) + (object Attribute + tool "cg" + name "DestructorVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "DestructorKind" + value ("ThreeKindSet" 200)) + (object Attribute + tool "cg" + name "InlineDestructor" + value FALSE) + (object Attribute + tool "cg" + name "GenerateAssignmentOperation" + value ("GenerateSet" 199)) + (object Attribute + tool "cg" + name "AssignmentVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "AssignmentKind" + value ("ThreeKindSet" 200)) + (object Attribute + tool "cg" + name "InlineAssignmentOperation" + value FALSE) + (object Attribute + tool "cg" + name "GenerateEqualityOperations" + value ("GenerateSet" 199)) + (object Attribute + tool "cg" + name "EqualityVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "EqualityKind" + value ("FriendKindSet" 200)) + (object Attribute + tool "cg" + name "InlineEqualityOperations" + value FALSE) + (object Attribute + tool "cg" + name "GenerateRelationalOperations" + value FALSE) + (object Attribute + tool "cg" + name "RelationalVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "RelationalKind" + value ("FriendKindSet" 200)) + (object Attribute + tool "cg" + name "InlineRelationalOperations" + value FALSE) + (object Attribute + tool "cg" + name "GenerateStorageMgmtOperations" + value FALSE) + (object Attribute + tool "cg" + name "StorageMgmtVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "InlineStorageMgmtOperations" + value FALSE) + (object Attribute + tool "cg" + name "GenerateSubscriptOperation" + value FALSE) + (object Attribute + tool "cg" + name "SubscriptVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "SubscriptKind" + value ("ThreeKindSet" 200)) + (object Attribute + tool "cg" + name "SubscriptResultType" + value "") + (object Attribute + tool "cg" + name "InlineSubscriptOperation" + value FALSE) + (object Attribute + tool "cg" + name "GenerateDereferenceOperation" + value FALSE) + (object Attribute + tool "cg" + name "DereferenceVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "DereferenceKind" + value ("ThreeKindSet" 200)) + (object Attribute + tool "cg" + name "DereferenceResultType" + value "") + (object Attribute + tool "cg" + name "InlineDereferenceOperation" + value FALSE) + (object Attribute + tool "cg" + name "GenerateIndirectionOperation" + value FALSE) + (object Attribute + tool "cg" + name "IndirectionVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "IndirectionKind" + value ("ThreeKindSet" 200)) + (object Attribute + tool "cg" + name "IndirectionResultType" + value "") + (object Attribute + tool "cg" + name "InlineIndirectionOperation" + value FALSE) + (object Attribute + tool "cg" + name "GenerateStreamOperations" + value FALSE) + (object Attribute + tool "cg" + name "StreamVisibility" + value ("VisibilitySet" 45)) + (object Attribute + tool "cg" + name "InlineStreamOperations" + value FALSE) + (object Attribute + tool "cg" + name "ThreeKindSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Common" + value 200) + (object Attribute + tool "cg" + name "Virtual" + value 201) + (object Attribute + tool "cg" + name "Abstract" + value 202))) + (object Attribute + tool "cg" + name "KindSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Common" + value 200) + (object Attribute + tool "cg" + name "Virtual" + value 201) + (object Attribute + tool "cg" + name "Abstract" + value 202) + (object Attribute + tool "cg" + name "Static" + value 203))) + (object Attribute + tool "cg" + name "FriendKindSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Common" + value 200) + (object Attribute + tool "cg" + name "Virtual" + value 201) + (object Attribute + tool "cg" + name "Abstract" + value 202) + (object Attribute + tool "cg" + name "Friend" + value 204))) + (object Attribute + tool "cg" + name "GenerateSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "DeclareAndDefine" + value 199) + (object Attribute + tool "cg" + name "DeclareOnly" + value 205) + (object Attribute + tool "cg" + name "DoNotDeclare" + value 206))) + (object Attribute + tool "cg" + name "VisibilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Public" + value 45) + (object Attribute + tool "cg" + name "Protected" + value 44) + (object Attribute + tool "cg" + name "Private" + value 43) + (object Attribute + tool "cg" + name "Implementation" + value 14))))) + (object Attribute + tool "cg" + name "default__Module-Spec" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Generate" + value TRUE) + (object Attribute + tool "cg" + name "GenerateEmptyRegions" + value ("GenerateEmptyRegionSet" 3)) + (object Attribute + tool "cg" + name "GenerateEmptyRegionSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "None" + value 0) + (object Attribute + tool "cg" + name "Preserved" + value 1) + (object Attribute + tool "cg" + name "Unpreserved" + value 2) + (object Attribute + tool "cg" + name "All" + value 3))) + (object Attribute + tool "cg" + name "CmIdentification" + value (value Text " %X% %Q% %Z% %W%")) + (object Attribute + tool "cg" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "cg" + name "FileName" + value "AUTO GENERATE") + (object Attribute + tool "cg" + name "AllowExtensionlessFileName" + value FALSE) + (object Attribute + tool "cg" + name "InclusionProtectionSymbol" + value "AUTO GENERATE") + (object Attribute + tool "cg" + name "IncludeFormat" + value (value Text +|// $package +|#include "$file" +| + )) + (object Attribute + tool "cg" + name "IncludeBySimpleName" + value FALSE) + (object Attribute + tool "cg" + name "IncludePrecompiledHeader" + value FALSE) + (object Attribute + tool "cg" + name "IncludeOrder" + value "AMIR") + (object Attribute + tool "cg" + name "AdditionalIncludes" + value (value Text "")) + (object Attribute + tool "cg" + name "InliningStyle" + value ("InliningStyleSet" 207)) + (object Attribute + tool "cg" + name "InliningStyleSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "InClassDeclaration" + value 208) + (object Attribute + tool "cg" + name "FollowingClassDeclaration" + value 207))) + (object Attribute + tool "cg" + name "TypesDefined" + value (value Text "")) + (object Attribute + tool "cg" + name "IncludeClosure" + value (value Text "")))) + (object Attribute + tool "cg" + name "default__Module-Body" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Generate" + value TRUE) + (object Attribute + tool "cg" + name "GenerateEmptyRegions" + value ("GenerateEmptyRegionSet" 3)) + (object Attribute + tool "cg" + name "GenerateEmptyRegionSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "None" + value 0) + (object Attribute + tool "cg" + name "Preserved" + value 1) + (object Attribute + tool "cg" + name "Unpreserved" + value 2) + (object Attribute + tool "cg" + name "All" + value 3))) + (object Attribute + tool "cg" + name "CmIdentification" + value (value Text " %X% %Q% %Z% %W%")) + (object Attribute + tool "cg" + name "CopyrightNotice" + value (value Text "")) + (object Attribute + tool "cg" + name "FileName" + value "AUTO GENERATE") + (object Attribute + tool "cg" + name "AllowExtensionlessFileName" + value FALSE) + (object Attribute + tool "cg" + name "IncludeFormat" + value (value Text +|// $package +|#include "$file" +| + )) + (object Attribute + tool "cg" + name "IncludeBySimpleName" + value FALSE) + (object Attribute + tool "cg" + name "IncludePrecompiledHeader" + value TRUE) + (object Attribute + tool "cg" + name "IncludeOrder" + value "AMIR") + (object Attribute + tool "cg" + name "AdditionalIncludes" + value (value Text "")) + (object Attribute + tool "cg" + name "InliningStyle" + value ("InliningStyleSet" 207)) + (object Attribute + tool "cg" + name "InliningStyleSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "InClassDeclaration" + value 208) + (object Attribute + tool "cg" + name "FollowingClassDeclaration" + value 207))) + (object Attribute + tool "cg" + name "TypesDefined" + value (value Text "")) + (object Attribute + tool "cg" + name "IncludeClosure" + value (value Text "")))) + (object Attribute + tool "cg" + name "default__Operation" + value (list Attribute_Set + (object Attribute + tool "cg" + name "CodeName" + value "") + (object Attribute + tool "cg" + name "OperationKind" + value ("OperationKindSet" 200)) + (object Attribute + tool "cg" + name "OperationKindSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Common" + value 200) + (object Attribute + tool "cg" + name "Virtual" + value 201) + (object Attribute + tool "cg" + name "Abstract" + value 202) + (object Attribute + tool "cg" + name "Static" + value 203) + (object Attribute + tool "cg" + name "Friend" + value 204))) + (object Attribute + tool "cg" + name "GenerateAbstractBody" + value FALSE) + (object Attribute + tool "cg" + name "OperationIsConst" + value FALSE) + (object Attribute + tool "cg" + name "OperationIsExplicit" + value FALSE) + (object Attribute + tool "cg" + name "Inline" + value FALSE) + (object Attribute + tool "cg" + name "EntryCode" + value (value Text "")) + (object Attribute + tool "cg" + name "ExitCode" + value (value Text "")) + (object Attribute + tool "cg" + name "CCRegion" + value "") + (object Attribute + tool "cg" + name "GenerateEmptyRegions" + value ("GenerateEmptyRegionSet" 3)) + (object Attribute + tool "cg" + name "GenerateEmptyRegionSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "None" + value 0) + (object Attribute + tool "cg" + name "Preserved" + value 1) + (object Attribute + tool "cg" + name "Unpreserved" + value 2) + (object Attribute + tool "cg" + name "All" + value 3))) + (object Attribute + tool "cg" + name "BodyAnnotations" + value ""))) + (object Attribute + tool "cg" + name "default__Has" + value (list Attribute_Set + (object Attribute + tool "cg" + name "CodeName" + value "") + (object Attribute + tool "cg" + name "Ordered" + value TRUE) + (object Attribute + tool "cg" + name "NameIfUnlabeled" + value "the_$supplier") + (object Attribute + tool "cg" + name "GenerateDataMember" + value TRUE) + (object Attribute + tool "cg" + name "DataMemberName" + value "$relationship") + (object Attribute + tool "cg" + name "DataMemberVisibility" + value ("DataMemberVisibilitySet" 14)) + (object Attribute + tool "cg" + name "DataMemberVisibilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Public" + value 45) + (object Attribute + tool "cg" + name "Protected" + value 44) + (object Attribute + tool "cg" + name "Private" + value 43) + (object Attribute + tool "cg" + name "Implementation" + value 14) + (object Attribute + tool "cg" + name "AtRelationshipVisibility" + value 210))) + (object Attribute + tool "cg" + name "DataMemberMutability" + value ("DataMemberMutabilitySet" 0)) + (object Attribute + tool "cg" + name "DataMemberMutabilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Unrestricted" + value 0) + (object Attribute + tool "cg" + name "Mutable" + value 1) + (object Attribute + tool "cg" + name "Const" + value 2))) + (object Attribute + tool "cg" + name "DataMemberIsVolatile" + value FALSE) + (object Attribute + tool "cg" + name "DataMemberFieldSize" + value "") + (object Attribute + tool "cg" + name "InitialValue" + value (value Text "")) + (object Attribute + tool "cg" + name "GenerateGetOperation" + value TRUE) + (object Attribute + tool "cg" + name "GenerateSetOperation" + value TRUE) + (object Attribute + tool "cg" + name "GetName" + value "get_$relationship") + (object Attribute + tool "cg" + name "SetName" + value "set_$relationship") + (object Attribute + tool "cg" + name "GetSetKinds" + value ("GetSetKindsSet" 200)) + (object Attribute + tool "cg" + name "GetSetKindsSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Common" + value 200) + (object Attribute + tool "cg" + name "Virtual" + value 201) + (object Attribute + tool "cg" + name "Abstract" + value 202) + (object Attribute + tool "cg" + name "Static" + value 203) + (object Attribute + tool "cg" + name "Friend" + value 204))) + (object Attribute + tool "cg" + name "ContainerClass" + value "") + (object Attribute + tool "cg" + name "SelectorName" + value "") + (object Attribute + tool "cg" + name "SelectorType" + value "") + (object Attribute + tool "cg" + name "GetIsConst" + value TRUE) + (object Attribute + tool "cg" + name "GetResultIsConst" + value ("GetResultIsConstSet" 2)) + (object Attribute + tool "cg" + name "GetResultIsConstSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "False" + value 0) + (object Attribute + tool "cg" + name "True" + value 1) + (object Attribute + tool "cg" + name "Same_As_Function" + value 2))) + (object Attribute + tool "cg" + name "GetSetByReference" + value FALSE) + (object Attribute + tool "cg" + name "InlineGet" + value TRUE) + (object Attribute + tool "cg" + name "SetReturnsValue" + value FALSE) + (object Attribute + tool "cg" + name "InlineSet" + value TRUE) + (object Attribute + tool "cg" + name "ForwardReferenceOnly" + value FALSE) + (object Attribute + tool "cg" + name "HasRelTypeSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Array" + value 24) + (object Attribute + tool "cg" + name "Sequence" + value 47))))) + (object Attribute + tool "cg" + name "default__Association" + value (list Attribute_Set + (object Attribute + tool "cg" + name "NameIfUnlabeled" + value "the_$targetClass"))) + (object Attribute + tool "cg" + name "default__Inherit" + value (list Attribute_Set + (object Attribute + tool "cg" + name "InstanceArguments" + value ""))) + (object Attribute + tool "cg" + name "default__Role" + value (list Attribute_Set + (object Attribute + tool "cg" + name "CodeName" + value "") + (object Attribute + tool "cg" + name "ForwardReferenceOnly" + value FALSE) + (object Attribute + tool "cg" + name "NameIfUnlabeled" + value "the_$targetClass") + (object Attribute + tool "cg" + name "GenerateDataMember" + value TRUE) + (object Attribute + tool "cg" + name "DataMemberName" + value "$target") + (object Attribute + tool "cg" + name "DataMemberVisibility" + value ("DataMemberVisibilitySet" 14)) + (object Attribute + tool "cg" + name "DataMemberVisibilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Public" + value 45) + (object Attribute + tool "cg" + name "Protected" + value 44) + (object Attribute + tool "cg" + name "Private" + value 43) + (object Attribute + tool "cg" + name "Implementation" + value 14) + (object Attribute + tool "cg" + name "AtRelationshipVisibility" + value 210))) + (object Attribute + tool "cg" + name "DataMemberMutability" + value ("DataMemberMutabilitySet" 0)) + (object Attribute + tool "cg" + name "DataMemberMutabilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Unrestricted" + value 0) + (object Attribute + tool "cg" + name "Mutable" + value 1) + (object Attribute + tool "cg" + name "Const" + value 2))) + (object Attribute + tool "cg" + name "DataMemberIsVolatile" + value FALSE) + (object Attribute + tool "cg" + name "DataMemberFieldSize" + value "") + (object Attribute + tool "cg" + name "InitialValue" + value (value Text "")) + (object Attribute + tool "cg" + name "ContainerClass" + value "") + (object Attribute + tool "cg" + name "ContainerGet" + value "$data.get($keys)") + (object Attribute + tool "cg" + name "ContainerSet" + value "$data.set($keys,$value)") + (object Attribute + tool "cg" + name "QualifiedContainer" + value "") + (object Attribute + tool "cg" + name "AssocClassContainer" + value "$supplier *") + (object Attribute + tool "cg" + name "AssocClassInitialValue" + value (value Text "")) + (object Attribute + tool "cg" + name "GetSetKinds" + value ("GetSetKindsSet" 200)) + (object Attribute + tool "cg" + name "GetSetKindsSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Common" + value 200) + (object Attribute + tool "cg" + name "Virtual" + value 201) + (object Attribute + tool "cg" + name "Abstract" + value 202) + (object Attribute + tool "cg" + name "Static" + value 203) + (object Attribute + tool "cg" + name "Friend" + value 204))) + (object Attribute + tool "cg" + name "GetSetByReference" + value FALSE) + (object Attribute + tool "cg" + name "GenerateGetOperation" + value TRUE) + (object Attribute + tool "cg" + name "GetName" + value "get_$target") + (object Attribute + tool "cg" + name "GetIsConst" + value TRUE) + (object Attribute + tool "cg" + name "GetResultIsConst" + value ("GetResultIsConstSet" 2)) + (object Attribute + tool "cg" + name "GetResultIsConstSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "False" + value 0) + (object Attribute + tool "cg" + name "True" + value 1) + (object Attribute + tool "cg" + name "Same_As_Function" + value 2))) + (object Attribute + tool "cg" + name "InlineGet" + value TRUE) + (object Attribute + tool "cg" + name "GenerateSetOperation" + value TRUE) + (object Attribute + tool "cg" + name "SetName" + value "set_$target") + (object Attribute + tool "cg" + name "SetReturnsValue" + value FALSE) + (object Attribute + tool "cg" + name "InlineSet" + value TRUE) + (object Attribute + tool "cg" + name "QualifiedGetSetByReference" + value ("QualifiedGetSetByReferenceSet" 2)) + (object Attribute + tool "cg" + name "QualifiedGetSetByReferenceSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "False" + value 0) + (object Attribute + tool "cg" + name "True" + value 1) + (object Attribute + tool "cg" + name "Same_As_GetSetByReference" + value 2))) + (object Attribute + tool "cg" + name "GenerateQualifiedGetOperation" + value TRUE) + (object Attribute + tool "cg" + name "QualifiedGetName" + value "get_$target") + (object Attribute + tool "cg" + name "QualifiedGetIsConst" + value TRUE) + (object Attribute + tool "cg" + name "QualifiedGetResultIsConst" + value ("GetResultIsConstSet" 2)) + (object Attribute + tool "cg" + name "InlineQualifiedGet" + value TRUE) + (object Attribute + tool "cg" + name "GenerateQualifiedSetOperation" + value TRUE) + (object Attribute + tool "cg" + name "QualifiedSetName" + value "set_$target") + (object Attribute + tool "cg" + name "QualifiedSetReturnsValue" + value FALSE) + (object Attribute + tool "cg" + name "InlineQualifiedSet" + value TRUE) + (object Attribute + tool "cg" + name "GenerateAssocClassDataMember" + value TRUE) + (object Attribute + tool "cg" + name "AssocClassDataMemberName" + value "$target") + (object Attribute + tool "cg" + name "AssocClassDataMemberVisibility" + value ("DataMemberVisibilitySet" 14)) + (object Attribute + tool "cg" + name "DataMemberVisibilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Public" + value 45) + (object Attribute + tool "cg" + name "Protected" + value 44) + (object Attribute + tool "cg" + name "Private" + value 43) + (object Attribute + tool "cg" + name "Implementation" + value 14) + (object Attribute + tool "cg" + name "AtRelationshipVisibility" + value 210))) + (object Attribute + tool "cg" + name "AssocClassDataMemberMutability" + value ("DataMemberMutabilitySet" 0)) + (object Attribute + tool "cg" + name "DataMemberMutabilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Unrestricted" + value 0) + (object Attribute + tool "cg" + name "Mutable" + value 1) + (object Attribute + tool "cg" + name "Const" + value 2))) + (object Attribute + tool "cg" + name "AssocClassDataMemberIsVolatile" + value FALSE) + (object Attribute + tool "cg" + name "AssocClassGetSetKinds" + value ("GetSetKindsSet" 200)) + (object Attribute + tool "cg" + name "GenerateAssocClassGetOperation" + value TRUE) + (object Attribute + tool "cg" + name "AssocClassGetName" + value "get_$target") + (object Attribute + tool "cg" + name "AssocClassGetIsConst" + value TRUE) + (object Attribute + tool "cg" + name "AssocClassGetResultIsConst" + value ("GetResultIsConstSet" 2)) + (object Attribute + tool "cg" + name "InlineAssocClassGet" + value TRUE) + (object Attribute + tool "cg" + name "GenerateAssocClassSetOperation" + value TRUE) + (object Attribute + tool "cg" + name "AssocClassSetName" + value "set_$target") + (object Attribute + tool "cg" + name "AssocClassSetReturnsValue" + value FALSE) + (object Attribute + tool "cg" + name "InlineAssocClassSet" + value TRUE) + (object Attribute + tool "cg" + name "AssocClassForwardReferenceOnly" + value TRUE) + (object Attribute + tool "cg" + name "AssocTypeSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Array" + value 24) + (object Attribute + tool "cg" + name "Sequence" + value 47))))) + (object Attribute + tool "cg" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "cg" + name "CodeName" + value "") + (object Attribute + tool "cg" + name "GenerateDataMember" + value TRUE) + (object Attribute + tool "cg" + name "DataMemberName" + value "$attribute") + (object Attribute + tool "cg" + name "DataMemberVisibility" + value ("DataMemberVisibilitySet" 14)) + (object Attribute + tool "cg" + name "DataMemberVisibilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Public" + value 45) + (object Attribute + tool "cg" + name "Protected" + value 44) + (object Attribute + tool "cg" + name "Private" + value 43) + (object Attribute + tool "cg" + name "Implementation" + value 14) + (object Attribute + tool "cg" + name "AtAttributeVisibility" + value 211))) + (object Attribute + tool "cg" + name "DataMemberMutability" + value ("DataMemberMutabilitySet" 0)) + (object Attribute + tool "cg" + name "DataMemberMutabilitySet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Unrestricted" + value 0) + (object Attribute + tool "cg" + name "Mutable" + value 1) + (object Attribute + tool "cg" + name "Const" + value 2))) + (object Attribute + tool "cg" + name "DataMemberIsVolatile" + value FALSE) + (object Attribute + tool "cg" + name "DataMemberFieldSize" + value "") + (object Attribute + tool "cg" + name "GenerateGetOperation" + value TRUE) + (object Attribute + tool "cg" + name "GenerateSetOperation" + value TRUE) + (object Attribute + tool "cg" + name "GetName" + value "get_$attribute") + (object Attribute + tool "cg" + name "SetName" + value "set_$attribute") + (object Attribute + tool "cg" + name "GetSetKinds" + value ("GetSetKindsSet" 200)) + (object Attribute + tool "cg" + name "GetSetKindsSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Common" + value 200) + (object Attribute + tool "cg" + name "Virtual" + value 201) + (object Attribute + tool "cg" + name "Abstract" + value 202) + (object Attribute + tool "cg" + name "Static" + value 203) + (object Attribute + tool "cg" + name "Friend" + value 204))) + (object Attribute + tool "cg" + name "GetIsConst" + value TRUE) + (object Attribute + tool "cg" + name "GetResultIsConst" + value ("GetResultIsConstSet" 2)) + (object Attribute + tool "cg" + name "GetResultIsConstSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "False" + value 0) + (object Attribute + tool "cg" + name "True" + value 1) + (object Attribute + tool "cg" + name "Same_As_Function" + value 2))) + (object Attribute + tool "cg" + name "GetSetByReference" + value FALSE) + (object Attribute + tool "cg" + name "InlineGet" + value TRUE) + (object Attribute + tool "cg" + name "SetReturnsValue" + value FALSE) + (object Attribute + tool "cg" + name "InlineSet" + value TRUE) + (object Attribute + tool "cg" + name "CCRegion" + value ""))) + (object Attribute + tool "cg" + name "default__Uses" + value (list Attribute_Set + (object Attribute + tool "cg" + name "ForwardReferenceOnly" + value FALSE) + (object Attribute + tool "cg" + name "BodyReferenceOnly" + value FALSE))) + (object Attribute + tool "cg" + name "default__Subsystem" + value (list Attribute_Set + (object Attribute + tool "cg" + name "Directory" + value "AUTO GENERATE") + (object Attribute + tool "cg" + name "DirectoryIsOnSearchList" + value FALSE) + (object Attribute + tool "cg" + name "PrecompiledHeader" + value ""))) + (object Attribute + tool "cg" + name "default__Category" + value (list Attribute_Set + (object Attribute + tool "cg" + name "IsNamespace" + value FALSE) + (object Attribute + tool "cg" + name "Indent" + value 2) + (object Attribute + tool "cg" + name "CodeName" + value "") + (object Attribute + tool "cg" + name "GenerateEmptyRegions" + value ("GenerateEmptyRegionSet" 3)) + (object Attribute + tool "cg" + name "GenerateEmptyRegionSet" + value (list Attribute_Set + (object Attribute + tool "cg" + name "None" + value 0) + (object Attribute + tool "cg" + name "Preserved" + value 1) + (object Attribute + tool "cg" + name "Unpreserved" + value 2) + (object Attribute + tool "cg" + name "All" + value 3))))) + (object Attribute + tool "MSVC" + name "propertyId" + value "809135966") + (object Attribute + tool "MSVC" + name "default__Project" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Version" + value "5.0"))) + (object Attribute + tool "MSVC" + name "default__Class" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Type" + value ("MSVCClassTypeSet" 0)) + (object Attribute + tool "MSVC" + name "MSVCClassTypeSet" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Normal" + value 0) + (object Attribute + tool "MSVC" + name "Interface_Part" + value 1) + (object Attribute + tool "MSVC" + name "Connection_Part" + value 2) + (object Attribute + tool "MSVC" + name "Class_Factory" + value 3))) + (object Attribute + tool "MSVC" + name "CObjectFunctionality" + value ("CObjectFunctionalitySet" 0)) + (object Attribute + tool "MSVC" + name "CObjectFunctionalitySet" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "None" + value 0) + (object Attribute + tool "MSVC" + name "Dynamic" + value 1) + (object Attribute + tool "MSVC" + name "Dyncreate" + value 2) + (object Attribute + tool "MSVC" + name "Serial" + value 3))) + (object Attribute + tool "MSVC" + name "GenerateOverrideGroup" + value FALSE) + (object Attribute + tool "MSVC" + name "GenerateDataGroup" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_DATA_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateFieldGroup" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_FIELD_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateMessageGroup" + value FALSE) + (object Attribute + tool "MSVC" + name "GenerateMessageMap" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_MSG_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "MESSAGE_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "OLEFactory" + value ("OLEFactorySet" 0)) + (object Attribute + tool "MSVC" + name "OLEFactorySet" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "None" + value 0) + (object Attribute + tool "MSVC" + name "Built_in" + value 1) + (object Attribute + tool "MSVC" + name "Simple" + value 2) + (object Attribute + tool "MSVC" + name "Licensed" + value 3))) + (object Attribute + tool "MSVC" + name "OLEName" + value "") + (object Attribute + tool "MSVC" + name "OLEClassID" + value "") + (object Attribute + tool "MSVC" + name "GenerateOLECtlType" + value FALSE) + (object Attribute + tool "MSVC" + name "OLECtlType" + value "") + (object Attribute + tool "MSVC" + name "GenerateOLETypeLib" + value FALSE) + (object Attribute + tool "MSVC" + name "OLETypeLibID" + value "") + (object Attribute + tool "MSVC" + name "OLETypeLibMajor" + value "") + (object Attribute + tool "MSVC" + name "OLETypeLibMinor" + value "") + (object Attribute + tool "MSVC" + name "GeneratePropPageIDs" + value FALSE) + (object Attribute + tool "MSVC" + name "OLEPropPageIDs" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateDispatchMap" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_DISPATCH_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "AFX_DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "StockProperties" + value (value Text "")) + (object Attribute + tool "MSVC" + name "StockFunctions" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DispatchDefValue" + value "") + (object Attribute + tool "MSVC" + name "GenerateDispIdEnum" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_DISP_ID_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateInterfaceMap" + value FALSE) + (object Attribute + tool "MSVC" + name "INTERFACE_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "InitInterface" + value "") + (object Attribute + tool "MSVC" + name "GenerateEventMap" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_EVENT_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "AFX_EVENT_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "EVENT_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "StockEvents" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateEventSinkMap" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_EVENTSINK_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "AFX_EVENTSINK_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "EVENTSINK_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "PropNotifySinks" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateConnectionMap" + value FALSE) + (object Attribute + tool "MSVC" + name "CONNECTION_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "ConnectionPointIID" + value "") + (object Attribute + tool "MSVC" + name "InheritanceType" + value "") + (object Attribute + tool "MSVC" + name "DeclSpec" + value "") + (object Attribute + tool "MSVC" + name "OLECommands" + value (value Text "")) + (object Attribute + tool "MSVC" + name "MFCDeclares" + value (value Text "")) + (object Attribute + tool "MSVC" + name "MFCImplements" + value (value Text "")) + (object Attribute + tool "MSVC" + name "ATL_Declares" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateCOMMap" + value FALSE) + (object Attribute + tool "MSVC" + name "COM_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateConnectionPointMap" + value FALSE) + (object Attribute + tool "MSVC" + name "CONNECTION_POINT_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateMsgMap" + value FALSE) + (object Attribute + tool "MSVC" + name "MSG_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GeneratePropertyMap" + value FALSE) + (object Attribute + tool "MSVC" + name "PROPERTY_MAP_Entries" + value (value Text "")))) + (object Attribute + tool "MSVC" + name "default__Operation" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Type" + value ("MSVCOperationTypeSet" 0)) + (object Attribute + tool "MSVC" + name "MSVCOperationTypeSet" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Normal" + value 0) + (object Attribute + tool "MSVC" + name "Virtual_Override" + value 1) + (object Attribute + tool "MSVC" + name "Message_Handler" + value 2) + (object Attribute + tool "MSVC" + name "Dispatch_Handler" + value 3) + (object Attribute + tool "MSVC" + name "Event_Firing_Function" + value 4) + (object Attribute + tool "MSVC" + name "Event_Sink_Handler" + value 5) + (object Attribute + tool "MSVC" + name "Std_OLE_Method" + value 6) + (object Attribute + tool "MSVC" + name "Command_Parser" + value 7) + (object Attribute + tool "MSVC" + name "Property_Get_Function" + value 8) + (object Attribute + tool "MSVC" + name "Property_Set_Function" + value 9) + (object Attribute + tool "MSVC" + name "Property_Notify_Function" + value 10) + (object Attribute + tool "MSVC" + name "Macro_Generated_Function" + value 11))) + (object Attribute + tool "MSVC" + name "AFX_MSG_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "MESSAGE_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "AFX_DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "AFX_EVENT_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "EVENT_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "AFX_EVENTSINK_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "EVENTSINK_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "CallType" + value "") + (object Attribute + tool "MSVC" + name "DeclSpec" + value "") + (object Attribute + tool "MSVC" + name "BodyImage" + value (value Text "")))) + (object Attribute + tool "MSVC" + name "default__Role" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Type" + value ("MSVCAttributeTypeSet" 0)) + (object Attribute + tool "MSVC" + name "MSVCAttributeTypeSet" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Normal" + value 0) + (object Attribute + tool "MSVC" + name "Member_Property" + value 1) + (object Attribute + tool "MSVC" + name "Get_Set_Property" + value 2) + (object Attribute + tool "MSVC" + name "Dialog_Data" + value 3) + (object Attribute + tool "MSVC" + name "Field_Data" + value 4) + (object Attribute + tool "MSVC" + name "Stock_Property" + value 5))) + (object Attribute + tool "MSVC" + name "AFX_DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DeclSpec" + value "") + (object Attribute + tool "MSVC" + name "PointerBase" + value "") + (object Attribute + tool "MSVC" + name "CallType" + value "") + (object Attribute + tool "MSVC" + name "StockPropertyImplementation" + value ""))) + (object Attribute + tool "MSVC" + name "default__Has" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Type" + value ("MSVCAttributeTypeSet" 0)) + (object Attribute + tool "MSVC" + name "MSVCAttributeTypeSet" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Normal" + value 0) + (object Attribute + tool "MSVC" + name "Member_Property" + value 1) + (object Attribute + tool "MSVC" + name "Get_Set_Property" + value 2) + (object Attribute + tool "MSVC" + name "Dialog_Data" + value 3) + (object Attribute + tool "MSVC" + name "Field_Data" + value 4) + (object Attribute + tool "MSVC" + name "Stock_Property" + value 5))) + (object Attribute + tool "MSVC" + name "AFX_DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DeclSpec" + value "") + (object Attribute + tool "MSVC" + name "PointerBase" + value "") + (object Attribute + tool "MSVC" + name "CallType" + value "") + (object Attribute + tool "MSVC" + name "StockPropertyImplementation" + value ""))) + (object Attribute + tool "MSVC" + name "default__Attribute" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Type" + value ("MSVCAttributeTypeSet" 0)) + (object Attribute + tool "MSVC" + name "MSVCAttributeTypeSet" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "Normal" + value 0) + (object Attribute + tool "MSVC" + name "Member_Property" + value 1) + (object Attribute + tool "MSVC" + name "Get_Set_Property" + value 2) + (object Attribute + tool "MSVC" + name "Dialog_Data" + value 3) + (object Attribute + tool "MSVC" + name "Field_Data" + value 4) + (object Attribute + tool "MSVC" + name "Stock_Property" + value 5))) + (object Attribute + tool "MSVC" + name "AFX_DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DISPATCH_MAP_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "DeclSpec" + value "") + (object Attribute + tool "MSVC" + name "PointerBase" + value "") + (object Attribute + tool "MSVC" + name "CallType" + value "") + (object Attribute + tool "MSVC" + name "StockPropertyImplementation" + value ""))) + (object Attribute + tool "MSVC" + name "default__Module-Spec" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "GenerateIncludesGroup" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_INCLUDES_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateInsertLocation" + value FALSE))) + (object Attribute + tool "MSVC" + name "default__Module-Body" + value (list Attribute_Set + (object Attribute + tool "MSVC" + name "GenerateIncludesGroup" + value FALSE) + (object Attribute + tool "MSVC" + name "AFX_INCLUDES_Entries" + value (value Text "")) + (object Attribute + tool "MSVC" + name "GenerateInsertLocation" + value FALSE))) + (object Attribute + tool "cg" + name "HiddenTool" + value FALSE) + (object Attribute + tool "Rose Model Integrator" + name "HiddenTool" + value FALSE) + (object Attribute + tool "Rose Web Publisher" + name "HiddenTool" + value FALSE)) + quid "393E2200F6AC")) diff --git a/source/processes/hadronic/models/cascade/evaporation/doc/evaporation.mdl.eps b/source/processes/hadronic/models/cascade/evaporation/doc/evaporation.mdl.eps new file mode 100644 index 0000000000..b8f3a9fb82 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/doc/evaporation.mdl.eps @@ -0,0 +1,1256 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 27.0 267.0 565.0 773.0 +%%Creator: tlampen using rose_exe +%%CreationDate: Mon Jun 12 21:29:04 2000 +%%Title: bertini +%%EndComments + +%%BeginProlog +200 dict begin +%%BeginResource: Units and resolution +/cm { 300 mul 2.54 div } def +/PageHeight 26.9 cm def + /PageWidth 20.6 cm def +/LineSpace 0.05 cm def +%%EndResource + +%%BeginResource: PenBrush +/TmpPenArray 5 array def +/PenArray 5 array def + /lpStyle 0 def + /lpWidth 1 def + /lpRed 2 def + /lpGreen 3 def + /lpBlue 4 def +/BrushArray 6 array def + /lbStyle 0 def + /lbRed 1 def + /lbGreen 2 def + /lbBlue 3 def + /lbHatchStyle 4 def + /lpPattern 5 def +/BkColorArray 5 array def + /bkRed 0 def + /bkGreen 1 def + /bkBlue 2 def +/TextColorArray 3 array def + /TextRed 0 def + /TextGreen 1 def + /TextBlue 2 def +/PenDashArray [ [] [0.2 cm 0.1 cm] [0.1 cm 0.1 cm] [0.3 cm 0.1 cm 0.1 cm 0.1 cm] [0.3 cm 0.1 cm 0.1 cm 0.1 cm 0.1 cm 0.1 cm] [] [] ] def + +/HatchStyleArray [ {HS_HORIZ} {HS_VERT} {HS_BDIAG} {HS_FDIAG} {HS_CROSS} {HS_DIAGCROSS} ] def + +/UpdatePen + {/PenArray exch def /PenWidthMemo PenArray lpWidth get def } def +/UpdateBrush + {/BrushArray exch def} def + +/UpdateBkColor + {/BkColorArray exch def} def + +/UpdateBkMode + {/BkMode exch def} def + +/UpdateTextColor + {/TextColorArray exch def} def + +/HS_HORIZ + {0 LineSpace PageHeight { /i exch def 0 i MyMatrix itransform moveto PageWidth i MyMatrix idtransform lineto } for stroke } def +/HS_VERT + {0 LineSpace PageWidth { /i exch def i 0 MyMatrix itransform moveto i PageHeight MyMatrix idtransform lineto } for stroke } def +/HS_CROSS + { HS_HORIZ HS_VERT } def + +/HS_FDIAG + {0 LineSpace 1.4 mul PageWidth 2 mul + { /i exch def i PageWidth sub 0 MyMatrix itransform moveto i + PageHeight MyMatrix idtransform lineto } for stroke } def +/HS_BDIAG + {0 LineSpace 1.4 mul PageWidth 2 mul + { /i exch def i 0 MyMatrix itransform moveto i PageWidth sub + PageHeight MyMatrix idtransform lineto } for stroke } def +/HS_DIAGCROSS + { HS_FDIAG HS_BDIAG } def + +/StrokeWithPen +{/join exch def /Penwidth PenArray lpWidth get + def Penwidth setlinewidth + PenArray lpWidth get 1 le { 0 setlinecap } + { PenArray lpWidth get 5 gt { 1 setlinecap } { 2 setlinecap } ifelse } ifelse + join { PenArray lpWidth get 5 le {0 setlinejoin 3 setmiterlimit} + { PenArray lpWidth get 8 gt { 1 setlinejoin } { 2 setlinejoin } ifelse } ifelse } if + join LineJoin -1 ne and {SetLineJoin setlinejoin} if + join MiterLimit -1 ne and {MiterLimit miterlimit} if + PenArray lpRed get 255 div PenArray lpGreen get 255 div PenArray lpBlue get 255 div setrgbcolor + /PenStyle PenArray lpStyle get def + PenStyle 5 lt { PenDashArray PenStyle get 0 setdash stroke } + { PenStyle 6 eq { [] 0 setdash stroke } {newpath} ifelse } ifelse + join {0 setlinejoin 10 setmiterlimit} if } def + +/FillWithBkColor + { gsave BkColorArray bkRed get 255 div +BkColorArray bkGreen get 255 div BkColorArray bkBlue get +255 div setrgbcolor fill grestore } def + +/FillWithBrush + {/BrushStyle BrushArray lbStyle get def + BrushStyle 2 eq dup BrushStyle 0 eq or + { BrushArray lbRed get 255 div BrushArray lbGreen get 255 div BrushArray lbBlue get 255 div setrgbcolor + { gsave BkMode 2 eq {FillWithBkColor} if clip +PenArray lpWidth get PenWidthMemo dup 0 ne {div} {pop} ifelse setlinewidth + HatchStyleArray BrushArray lbHatchStyle get get exec + grestore } + { fill } ifelse } + {BrushStyle 3 eq {BrushArray 5 get p SHR + gsave clip /Tmp save def pfill Tmp restore grestore} {pop}ifelse + } ifelse } def + +/Fill&Stroke + { gsave FillWithBrush grestore StrokeWithPen } def + /patfont 10 dict def patfont begin + /FontType 3 def + /FontMatrix [1 0 0 -1 0 0] def + /FontBBox [0 0 16 16] + def/Encoding StandardEncoding def + /BuildChar{pop pop 16 0 0 0 16 16 + setcachedevice 16 16 false [1 0 0 1 .25 .25]{pat}imagemask}bind def + end +/p{/pat 32 string def + {}forall 0 1 7{dup 2 mul pat exch 3 index put dup + 2 mul 1 add pat exch 3 index put dup 2 mul 16 add pat exch 3 index + put 2 mul 17 add pat exch 2 index put pop}for}bind def + +/AU{1 add cvi 15 or}bind def +/AD{1 sub cvi -16 and}bind def +/SHR{pathbbox +AU/Y1 exch def AU/X1 exch def AD/Y0 exch def AD/X0 exch def}bind def + +/M /moveto load def + +/pfill{/PatFont patfont +definefont setfont/ch(AAAA)def X0 64 X1{Y1 -16 Y0{1 index exch M ch +show}for pop}for}bind def +%%EndResource + +%%BeginResource: LineTo +/LineTo + { /y exch def /x exch def + moveto x y lineto currentpoint false StrokeWithPen } def +%%EndResource + +%%BeginResource: RectanglePath +/RectanglePath +{ +3 index 3 index moveto 3 index 1 index lineto +1 index 1 index lineto 1 index 3 index lineto +3 index 3 index lineto pop pop pop pop closepath} def +/RectanglePathBackwards +{ +3 index 3 index moveto 1 index 3 index lineto +1 index 1 index lineto 3 index 1 index lineto +3 index 3 index lineto pop pop pop pop closepath} def +%%EndResource + +%%BeginResource: EllipticPath +/EllipticPath +{matrix currentmatrix dup 3 index 6 index sub 2 div +3 index 6 index sub 2 div +7 index 2 index add +7 index 2 index add +matrix translate 3 1 roll matrix scale +exch matrix concatmatrix exch matrix concatmatrix setmatrix +1 0 moveto 0 0 1 360 0 arcn closepath +setmatrix +pop pop pop pop +}def +/EllipticPathBackwards +{matrix currentmatrix dup 3 index 6 index sub 2 div +3 index 6 index sub 2 div +7 index 2 index add +7 index 2 index add +matrix translate 3 1 roll matrix scale +exch matrix concatmatrix exch matrix concatmatrix setmatrix +1 0 moveto 0 0 1 0 360 arc closepath +setmatrix +pop pop pop pop +}def +%%EndResource + +%%BeginResource: Rectangle +/RectangleOutLine +{/y2 exch def /x2 exch def /y1 exch def /x1 exch def + newpath + x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto + closepath + false StrokeWithPen } def + +/FillRectangle +{/y2 exch def /x2 exch def /y1 exch def /x1 exch def + /MyMatrix matrix def + newpath + x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto + closepath + FillWithBrush} def +/FrameRectangle +{/y2 exch def /x2 exch def /y1 exch def /x1 exch def + /MyMatrix matrix def + /x1 x1 0.5 sub def /x2 x2 0.5 add def /y2 y2 0.5 sub def /y1 y1 0.5 add def newpath + x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto x1 y1 lineto + /x1 x1 1 add def /x2 x2 1 sub def /y2 y2 1 add def /y1 y1 1 sub def + x1 y1 moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto x1 y1 lineto + closepath + FillWithBrush} def +%%EndResource + +%%BeginResource: Polygon +/Polygon +{/MyMatrix matrix def + newpath PolylineArray PolylineMode 1 sub get exec closepath + true Fill&Stroke } def + +/FillPolygon +{/MyMatrix matrix def + newpath PolylineArray PolylineMode 1 sub get exec closepath + FillWithBrush } def +%%EndResource + +%%BeginResource: Polyline +/PolylineArray [ {DrawPolyline} {Bezier} ] def +/Polyline +{PolylineArray PolylineMode 1 sub get exec pop pop currentpoint true StrokeWithPen } def +/Bezier +{/nbPoint exch def /nbCurves nbPoint 1 sub 3 idiv def /nbLeft nbPoint 1 sub nbCurves 3 mul sub def + moveto 1 1 nbCurves { pop 4 2 roll 6 -2 roll curveto } for + nbLeft 1 eq { lineto } {nbLeft 2 eq { 4 2 roll 2 copy curveto } if } ifelse + } def +/DrawPolyline +{/nbPoint exch def moveto + 1 1 nbPoint 1 sub { pop lineto } for + } def + +%%EndResource + +%%BeginResource: Ellipse +/Ellipse +{gsave + /Dy exch def /Dx exch def /Cy exch def /Cx exch def + Cx Cy translate Dx Dy scale + /MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def + newpath 0 0 1 0 360 arc closepath + 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate + PenArray TmpPenArray copy pop + PenArray lpWidth PenArray lpWidth get Dx abs Dy abs add 2 div div put + false Fill&Stroke + TmpPenArray PenArray copy pop + grestore } def + +/FillEllipse +{gsave + /Dy exch def /Dx exch def /Cy exch def /Cx exch def + Cx Cy translate Dx Dy scale + /MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def + newpath 0 0 1 0 360 arc closepath + PenArray TmpPenArray copy pop + PenArray lpWidth PenArray lpWidth get Dx abs Dy abs add 2 div div put + FillWithBrush + TmpPenArray PenArray copy pop + grestore } def +%%EndResource + +%%BeginResource: Arc +/Arc +{ gsave + /ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def + Cx Cy translate Dx Dy + scale 1 -1 scale + newpath + ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse + 1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate + PenArray TmpPenArray copy pop + PenArray lpWidth PenArray lpWidth get Dx abs Dy abs add 2 div div put + false StrokeWithPen + TmpPenArray PenArray copy pop + grestore } def +%%EndResource + +%%BeginResource: Pie +/Pie +{gsave + /ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def + Cx Cy translate Dx Dy scale + 1 -1 scale + /MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def + newpath 0 0 moveto ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse closepath + 1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate + PenArray TmpPenArray copy pop + PenArray lpWidth PenArray lpWidth get Dx abs Dy abs add 2 div div put + true Fill&Stroke + TmpPenArray PenArray copy pop + grestore } def +%%EndResource + +%%BeginResource: Chord +/Chord +{gsave + /ang1 exch def /ang2 exch def /Dy exch def /Dx exch def /Cy exch def /Cx exch def + Cx Cy translate Dx Dy scale + 1 -1 scale + /MyMatrix Dx Dy matrix scale Cx Cy matrix translate matrix concatmatrix def + newpath ClockWise {0 0 1 ang2 ang1 narc} {0 0 1 ang2 ang1 arc} ifelse closepath + 1 -1 scale 1 Dx div 1 Dy div scale 0 Cx sub 0 Cy sub translate + PenArray TmpPenArray copy pop + PenArray lpWidth PenArray lpWidth get Dx abs Dy abs add 2 div div put + true Fill&Stroke + TmpPenArray PenArray copy pop + grestore } def +%%EndResource + +%%BeginResource: RoundRectangle + /min {1 index 1 index le { pop} {exch pop} ifelse } def +/RoundRectangle +{/r2 exch def /r1 exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def + y2 2 div r2 min cvi /r2 exch def + x2 2 div r1 min cvi /r1 exch def + /width x2 r1 idiv def /height y2 r2 idiv def + gsave + x1 y1 translate r1 r2 scale + 1 -1 scale + /MyMatrix r1 r2 matrix scale x1 y1 matrix translate matrix concatmatrix def + newpath + 1 1 1 180 270 arc + width 1 sub 0 lineto width 1 sub 1 1 270 0 arc + width height 1 sub lineto width 1 sub height 1 sub 1 0 90 arc + 1 height lineto 1 height 1 sub 1 90 180 arc + closepath + PenArray TmpPenArray copy pop + PenArray lpWidth PenArray lpWidth get r1 abs r2 abs add 2 div div put + false Fill&Stroke + TmpPenArray PenArray copy pop + grestore } def +%%EndResource + +%%BeginResource: TextOut +/TextOut +{TextColorArray 0 get 255 div TextColorArray 1 get 255 div TextColorArray 2 get 255 div setrgbcolor +gsave translate rotate +0 0 moveto /expwidth exch def dup stringwidth pop expwidth exch div -1 scale show pop pop currentpoint grestore} def +%%EndResource + +%%BeginResource: MwSetFont +/EncodingDict 256 dict def +EncodingDict begin +0 [/.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + /space /exclam /quotedbl /numbersign + /dollar /percent /ampersand /quotesingle + /parenleft /parenright /asterisk /plus + /comma /hyphen /period /slash /zero /one + /two /three /four /five /six /seven + /eight /nine /colon /semicolon /less + /equal /greater /question /at /A /B /C + /D /E /F /G /H /I /J /K /L /M /N /O /P + /Q /R /S /T /U /V /W /X /Y /Z + /bracketleft /backslash /bracketright + /asciicircum /underscore /grave /a + /b /c /d /e /f /g /h /i /j /k /l /m /n + /o /p /q /r /s /t /u /v /w /x /y /z + /braceleft /bar /braceright /asciitilde + /.notdef /.notdef /.notdef /quotesinglbase + /florin /quotedblbase /ellipsis /dagger + /daggerdbl /circumflex /perthousand /Scaron + /guilsinglleft /OE /.notdef /.notdef + /.notdef /.notdef /quoteleft /quoteright + /quotedblleft /quotedblright /bullet /endash + /emdash /tilde /trademark /scaron + /guilsinglright /oe /.notdef /.notdef + /Ydieresis /.notdef /exclamdown /cent + /sterling /currency /yen /brokenbar + /section /dieresis /copyright + /ordfeminine /guillemotleft /logicalnot + /hyphen /registered /macron /degree + /plusminus /twosuperior /threesuperior + /acute /mu /paragraph /periodcentered + /cedilla /onesuperior /ordmasculine + /guillemotright /onequarter /onehalf + /threequarters /questiondown /Agrave + /Aacute /Acircumflex /Atilde /Adieresis + /Aring /AE /Ccedilla /Egrave /Eacute + /Ecircumflex /Edieresis /Igrave /Iacute + /Icircumflex /Idieresis /Eth /Ntilde + /Ograve /Oacute /Ocircumflex /Otilde + /Odieresis /multiply /Oslash /Ugrave + /Uacute /Ucircumflex /Udieresis /Yacute + /Thorn /germandbls /agrave /aacute + /acircumflex /atilde /adieresis /aring + /ae /ccedilla /egrave /eacute + /ecircumflex /edieresis /igrave /iacute + /icircumflex /idieresis /eth /ntilde + /ograve /oacute /ocircumflex /otilde + /odieresis /divide /oslash /ugrave + /uacute /ucircumflex /udieresis /yacute + /thorn /ydieresis] def +end +/fntdict 100 dict def + +/MwScaleAndSetFont +{ + 2 index findfont dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + dup EncodingDict exch known + {EncodingDict exch get /Encoding exch def} {pop} ifelse + currentdict end /font0 exch definefont + exch scalefont setfont pop +} def + +/MwSetFont +{ + % look in cache of scaled fonts + 1 index /askedsize exch def + 2 index /askedname exch def + fntdict askedname known + { % font name found in cache - what about the size + /fntszdict fntdict askedname get def + fntszdict askedsize known + { + % font size found in cache + fntszdict askedsize get setfont pop pop pop + } + { + MwScaleAndSetFont + fntszdict askedsize currentfont put + } + ifelse + } + { % not found in cache + MwScaleAndSetFont + /fntszdict 200 dict def + fntszdict askedsize currentfont put + fntdict askedname fntszdict put + } + ifelse +} def +%%EndResource + +%%BeginResource: DisplayBB +/DisplayBB {gsave initgraphics 72 300 div 72 300 div scale 0 3300 translate +1 -1 scale 1 setlinewidth 1 0 0 setrgbcolor +/y2 exch def /x2 exch def /y1 exch def /x1 exch def +newpath x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto closepath +stroke grestore } def +%%EndResource + +%%EndProlog + +%%BeginSetup +[{ +%%BeginFeature: *InputSlot AUTO +6 statusdict /setpapertray get exec +%%EndFeature +} stopped cleartomark +[{ +%%BeginFeature: *PageRegion LETTER +LETTER +%%EndFeature +} stopped cleartomark +%%EndSetup + +%%Page: +%%BeginPageSetup +/ClockWise false def /LineJoin -1 def /MiterLimit -1 def /PolylineMode 1 def /LineCap 0 def +[0 0 0 0 0] UpdatePen +[0 255 255 255 0 <>] UpdateBrush +[0 0 0] UpdateTextColor +[255 255 255] UpdateBkColor +2 UpdateBkMode +0 0 + +% All the numbers (for positions, length or font size) given +% in this file are expressed in pixels, but interpreted by +% Postscript as points (1/72 inch)! +% -->so scale accordingly! +72 300 div 72 300 div scale + +% So that (0, 0) is at top-left corner of paper sheet (takes postscript scaling into account too) +0 3300 translate +1 -1 scale + +/Courier 38 0 MwSetFont +gstate /Mwgstate exch def +%%EndPageSetup: +[0 1 0 0 0] UpdatePen +[0 2957 0 0 0] UpdatePen +Mwgstate setgstate newpath +75 75 2357 3032 RectanglePath +clip newpath +/Courier 38 0 MwSetFont +[0 1 0 0 0] UpdatePen +[1 0 0 0 0 <>] UpdateBrush +1433 1043 1987 1269 FillRectangle +1433 1043 1987 1269 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BENeutronChannel) 522 -0.00 1449 1094 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +1433 1109 1987 1269 FillRectangle +1433 1109 1987 1269 RectangleOutLine +1433 1125 1987 1269 FillRectangle +1433 1125 1987 1269 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ calculateProbability\(\)) 450 -0.00 1440 1171 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 1440 1204 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ sampleKineticEnergy\(\)) 432 -0.00 1440 1237 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +621 1048 1214 1415 FillRectangle +621 1048 1214 1415 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BEChargedChannel) 522 -0.00 657 1099 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +621 1113 1214 1415 FillRectangle +621 1113 1214 1415 RectangleOutLine +621 1130 1214 1415 FillRectangle +621 1130 1214 1415 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ calculateProbability\(\)) 450 -0.00 628 1176 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 628 1209 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ sampleKineticEnergy\(\)) 432 -0.00 628 1242 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ coulombFactor\(\)) 319 -0.00 628 1275 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ coulombFactorForProton\(\)) 488 -0.00 628 1308 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ qmFactorForProton\(\)) 394 -0.00 628 1341 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ qmFactorForAlpha\(\)) 375 -0.00 628 1374 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +114 1647 638 1872 FillRectangle +114 1647 638 1872 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BEProtonChannel) 493 -0.00 130 1698 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +114 1712 638 1872 FillRectangle +114 1712 638 1872 RectangleOutLine +114 1729 638 1872 FillRectangle +114 1729 638 1872 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 121 1775 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ coulombFactor\(\)) 319 -0.00 121 1808 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ qmFactor\(\)) 225 -0.00 121 1841 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +415 1961 991 2187 FillRectangle +415 1961 991 2187 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BEDeuteronChannel) 551 -0.00 428 2012 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +415 2027 991 2187 FillRectangle +415 2027 991 2187 RectangleOutLine +415 2043 991 2187 FillRectangle +415 2043 991 2187 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 422 2089 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ coulombFactor\(\)) 319 -0.00 422 2122 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ qmFactor\(\)) 225 -0.00 422 2155 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +818 1647 1344 1872 FillRectangle +818 1647 1344 1872 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BETritonChannel) 493 -0.00 834 1698 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +818 1712 1344 1872 FillRectangle +818 1712 1344 1872 RectangleOutLine +818 1729 1344 1872 FillRectangle +818 1729 1344 1872 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 825 1775 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ coulombFactor\(\)) 319 -0.00 825 1808 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ qmFactor\(\)) 225 -0.00 825 1841 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +1253 1961 1689 2187 FillRectangle +1253 1961 1689 2187 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BeHe3Channel) 406 -0.00 1268 2012 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +1253 2027 1689 2187 FillRectangle +1253 2027 1689 2187 RectangleOutLine +1253 2043 1689 2187 FillRectangle +1253 2043 1689 2187 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 1260 2089 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ coulombFactor\(\)) 319 -0.00 1260 2122 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ qmFactor\(\)) 225 -0.00 1260 2155 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +1516 1647 1954 1872 FillRectangle +1516 1647 1954 1872 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BEHe4Channel) 406 -0.00 1532 1698 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +1516 1712 1954 1872 FillRectangle +1516 1712 1954 1872 RectangleOutLine +1516 1729 1954 1872 FillRectangle +1516 1729 1954 1872 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 1523 1775 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ coulombFactor\(\)) 319 -0.00 1523 1808 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ qmFactor\(\)) 225 -0.00 1523 1841 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +pop pop 492 1646 +727 1416 LineTo +[0 255 255 255 0 <>] UpdateBrush +682 1436 705 1462 727 1416 3 Polygon +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +pop pop 1045 1646 +973 1416 LineTo +[0 255 255 255 0 <>] UpdateBrush +971 1466 1004 1455 973 1416 3 Polygon +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +pop pop 1560 1646 +1203 1416 LineTo +[0 255 255 255 0 <>] UpdateBrush +1233 1456 1252 1428 1203 1416 3 Polygon +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +517 452 1318 854 FillRectangle +517 452 1318 854 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BertiniEvaporationChannel) 783 -0.00 526 503 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +517 518 1318 854 FillRectangle +517 518 1318 854 RectangleOutLine +517 534 1318 854 FillRectangle +517 534 1318 854 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ setNucleusA\(\)) 282 -0.00 524 580 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ setNucleusZ\(\)) 282 -0.00 524 613 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ setExcitationEnergy\(\)) 432 -0.00 524 646 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ setQ\(\)) 150 -0.00 524 679 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ setPairingCorrection\(\)) 450 -0.00 524 712 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ getProbability\(\)) 338 -0.00 524 745 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ getThresh\(\)) 244 -0.00 524 778 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 524 811 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +pop pop 918 1047 +918 855 LineTo +[0 255 255 255 0 <>] UpdateBrush +900 902 935 902 918 855 3 Polygon +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +pop pop 1531 1043 +1234 855 LineTo +[0 255 255 255 0 <>] UpdateBrush +1265 895 1284 865 1234 855 3 Polygon +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +1005 81 1609 270 FillRectangle +1005 81 1609 270 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BertiniEvaporation) 580 -0.00 1018 131 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +1005 146 1609 270 FillRectangle +1005 146 1609 270 RectangleOutLine +1005 162 1609 270 FillRectangle +1005 162 1609 270 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ BreakItUp\(\)) 244 -0.00 1012 208 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ setVerboseLevel\(\)) 357 -0.00 1012 241 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +[0 0 0 0 0 <>] UpdateBrush +pop pop 1155 361 +1082 452 LineTo +[0 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(6) 19 -0.00 1047 425 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[0 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +pop pop 1082 452 +1109 437 LineTo +pop pop 1082 452 +1091 422 LineTo +[1 0 0 0 0 <>] UpdateBrush +[0 0 0 0 0 <>] UpdateBrush +pop pop 1155 361 +1229 271 LineTo +[0 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(1) 19 -0.00 1180 262 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[0 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +1229 271 1206 280 1202 304 1225 294 1229 271 5 Polygon +[0 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[0 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(6) 19 -0.00 1047 425 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[0 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[0 255 255 255 0 <>] UpdateBrush +[0 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(1) 19 -0.00 1180 262 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[0 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +1517 452 2354 728 FillRectangle +1517 452 2354 728 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(G4BEGammaDeexcitationChannel) 812 -0.00 1530 503 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +1517 518 2354 728 FillRectangle +1517 518 2354 728 RectangleOutLine +1517 534 2354 728 FillRectangle +1517 534 2354 728 RectangleOutLine +[1 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(+ setVerboseLevel\(\)) 357 -0.00 1525 580 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ setNucleusA\(\)) 282 -0.00 1525 613 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ setNucleusZ\(\)) 282 -0.00 1525 646 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ setExcitationEnergy\(\)) 432 -0.00 1525 679 TextOut +[255 255 255] UpdateBkColor +[255 255 255] UpdateBkColor +(+ emit\(\)) 150 -0.00 1525 712 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[1 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 48 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 27 0 MwSetFont +/Courier 38 0 MwSetFont +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +[0 0 0 0 0 <>] UpdateBrush +pop pop 1589 361 +1452 271 LineTo +[0 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(1) 19 -0.00 1433 323 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[0 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +1452 271 1464 293 1488 294 1477 272 1452 271 5 Polygon +[0 0 0 0 0 <>] UpdateBrush +pop pop 1488 294 +1517 300 LineTo +pop pop 1488 294 +1505 320 LineTo +[1 0 0 0 0 <>] UpdateBrush +[0 0 0 0 0 <>] UpdateBrush +pop pop 1589 361 +1727 452 LineTo +[0 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(1) 19 -0.00 1680 486 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[0 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[0 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(1) 19 -0.00 1433 323 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[0 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[0 255 255 255 0 <>] UpdateBrush +[0 0 0 0 0 <>] UpdateBrush +/Courier 31 0 MwSetFont +/Courier 38 0 MwSetFont +/Courier 31 0 MwSetFont +[0 0 0 0 0 <>] UpdateBrush +1 UpdateBkMode +[255 255 255] UpdateBkColor +(1) 19 -0.00 1680 486 TextOut +[255 255 255] UpdateBkColor +2 UpdateBkMode +[0 0 0 0 0 <>] UpdateBrush +/Courier 38 0 MwSetFont +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +pop pop 1452 1961 +1404 1638 LineTo +1138 1416 LineTo +[0 255 255 255 0 <>] UpdateBrush +1163 1459 1185 1432 1138 1416 3 Polygon +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush +[1 0 0 0 0 <>] UpdateBrush +pop pop 712 1961 +739 1602 LineTo +828 1416 LineTo +[0 255 255 255 0 <>] UpdateBrush +792 1451 823 1465 828 1416 3 Polygon +[1 0 0 0 0 <>] UpdateBrush +[0 255 255 255 0 <>] UpdateBrush + pop pop % pop out coordinates for current pen position + showpage +end +% end of the MainWin EPS file diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BEChargedChannel.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BEChargedChannel.hh new file mode 100644 index 0000000000..3ea12a1896 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BEChargedChannel.hh @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#ifndef G4BEChargedChannel_h +#define G4BEChargedChannel_h 1 + +#include "globals.hh" +#include "G4BertiniEvaporationChannel.hh" +#include "Randomize.hh" + +class G4BEChargedChannel : public G4BertiniEvaporationChannel +{ +public: + G4BEChargedChannel(); + virtual ~G4BEChargedChannel(); + + virtual void calculateProbability(); + virtual G4DynamicParticle * emit() = 0; + virtual G4double coulombFactor() = 0; + G4double coulombFactorForProton(); + G4double qmFactorForProton(); + G4double qmFactorForAlpha(); + G4double sampleKineticEnergy(); + +protected: + G4double A; + G4double spin; +}; + + +#endif diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BEDeuteronChannel.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BEDeuteronChannel.hh new file mode 100644 index 0000000000..db3d89dd92 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BEDeuteronChannel.hh @@ -0,0 +1,48 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#ifndef G4BEDeuteronChannel_h +#define G4BEDeuteronChannel_h 1 + +#include "G4BEChargedChannel.hh" + +class G4BEDeuteronChannel : public G4BEChargedChannel +{ +public: + G4BEDeuteronChannel(); + virtual ~G4BEDeuteronChannel(); + + G4DynamicParticle * emit(); + G4double constant(); + virtual G4double coulombFactor(); + virtual G4double qmFactor( ); + +private: +}; + + +#endif diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BEGammaDeexcitation.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BEGammaDeexcitation.hh new file mode 100644 index 0000000000..fd9143e2c3 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BEGammaDeexcitation.hh @@ -0,0 +1,59 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#ifndef G4BEGammaDeexcitation_h +#define G4BEGammaDeexcitation_h 1 + +#include "globals.hh" + +class G4BEGammaDeexcitation +{ +public: + G4BEGammaDeexcitation(); + virtual ~G4BEGammaDeexcitation(); + + void setVerboseLevel( G4int verbose ); + + void setNucleusA( G4int inputA ); + void setNucleusZ( G4int inputZ ); + void setExcitationEnergy( G4double inputE ); + + G4DynamicParticle * emit(); + +private: + G4double sampleKineticEnergy(); + G4int verboseLevel; + G4int nucleusA; + G4int nucleusZ; + G4double excitationEnergy; + void isotropicCosines( G4double&, + G4double&, + G4double& ); +}; + + +#endif diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BEHe3Channel.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BEHe3Channel.hh new file mode 100644 index 0000000000..33fc64eae1 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BEHe3Channel.hh @@ -0,0 +1,48 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#ifndef G4BEHe3Channel_h +#define G4BEHe3Channel_h 1 + +#include "G4BEChargedChannel.hh" + +class G4BEHe3Channel : public G4BEChargedChannel +{ +public: + G4BEHe3Channel(); + virtual ~G4BEHe3Channel(); + + G4DynamicParticle * emit(); + G4double constant(); + virtual G4double coulombFactor(); + virtual G4double qmFactor( ); + +private: +}; + + +#endif diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BEHe4Channel.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BEHe4Channel.hh new file mode 100644 index 0000000000..7e10ddb2d3 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BEHe4Channel.hh @@ -0,0 +1,48 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#ifndef G4BEHe4Channel_h +#define G4BEHe4Channel_h 1 + +#include "G4BEChargedChannel.hh" + +class G4BEHe4Channel : public G4BEChargedChannel +{ +public: + G4BEHe4Channel(); + virtual ~G4BEHe4Channel(); + + G4DynamicParticle * emit(); + G4double constant(); + virtual G4double coulombFactor(); + virtual G4double qmFactor( ); + +private: +}; + + +#endif diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BENeutronChannel.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BENeutronChannel.hh new file mode 100644 index 0000000000..4af37d3bad --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BENeutronChannel.hh @@ -0,0 +1,50 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#ifndef G4BENeutronChannel_h +#define G4BENeutronChannel_h 1 + +#include "globals.hh" +#include "G4BertiniEvaporationChannel.hh" + +class G4BENeutronChannel : public G4BertiniEvaporationChannel +{ +public: + G4BENeutronChannel(); + virtual ~G4BENeutronChannel(); + + virtual void calculateProbability(); + + G4DynamicParticle * emit(); + G4double sampleKineticEnergy(); + +private: + G4double alpha(); + G4double beta(); +}; + +#endif diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BEProtonChannel.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BEProtonChannel.hh new file mode 100644 index 0000000000..17b48f1d52 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BEProtonChannel.hh @@ -0,0 +1,48 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, 30-May-2000 + +#ifndef G4BEProtonChannel_h +#define G4BEProtonChannel_h 1 + +#include "G4BEChargedChannel.hh" + +class G4BEProtonChannel : public G4BEChargedChannel +{ +public: + G4BEProtonChannel(); + virtual ~G4BEProtonChannel(); + + G4DynamicParticle * emit(); + G4double constant(); + virtual G4double coulombFactor(); + virtual G4double qmFactor( ); + +private: +}; + + +#endif diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BETritonChannel.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BETritonChannel.hh new file mode 100644 index 0000000000..3e40eaf46f --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BETritonChannel.hh @@ -0,0 +1,48 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#ifndef G4BETritonChannel_h +#define G4BETritonChannel_h 1 + +#include "G4BEChargedChannel.hh" + +class G4BETritonChannel : public G4BEChargedChannel +{ +public: + G4BETritonChannel(); + virtual ~G4BETritonChannel(); + + G4DynamicParticle * emit(); + G4double constant(); + virtual G4double coulombFactor(); + virtual G4double qmFactor( ); + +private: +}; + + +#endif diff --git a/source/visualization/management/include/G4VisCommandsCreateScene.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BertiniEvaporation.hh similarity index 52% rename from source/visualization/management/include/G4VisCommandsCreateScene.hh rename to source/processes/hadronic/models/cascade/evaporation/include/G4BertiniEvaporation.hh index a32d6abc46..dce2256476 100644 --- a/source/visualization/management/include/G4VisCommandsCreateScene.hh +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BertiniEvaporation.hh @@ -14,52 +14,52 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VisCommandsCreateScene.hh,v 1.3.4.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/create_scene/ commands -// John Allison 7th September 1997 +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 -#ifndef G4VISCOMMANDSCREATESCENE_HH -#define G4VISCOMMANDSCREATESCENE_HH +#ifndef G4BertiniEvaporation_h +#define G4BertiniEvaporation_h 1 #include "globals.hh" -#include "G4UImanager.hh" +#include "G4LayeredNucleus.hh" +#include "G4BertiniEvaporationChannel.hh" +#include "G4ParticleChange.hh" +#include "G4VEvaporation.hh" -///////////////////////////////////////////// /vis~/create_scene/... //// -//vis \hline -//vis /vis~/create\_scene/ && -//vis ...menu of scene creation commands. \\% -class G4VisCommandCreateScene { -public: - G4String GetCommandName () const {return "/vis~/create_scene/";} - G4String GetGuidance () const { - return "...menu of scene creation commands."; - } -}; -////////////////////////////////// /vis~/create_scene/clear //// -//cr_sc \hline -//cr_sc /vis~/create\_scene/clear && -//cr_sc Same as {\tt /vis~/clear/scene}. \\% -class G4VisCommandCreateSceneClear { +class G4BertiniEvaporation : public G4VEvaporation +{ + public: - G4String GetCommandName () const {return "/vis~/create_scene/clear";} - G4String GetGuidance () const { - return "Same as /vis~/clear/scene."; - } - void SetValue () { - G4UImanager* UI = G4UImanager::GetUIpointer (); - UI -> ApplyCommand("/vis~/clear/scene"); + G4BertiniEvaporation(); + ~G4BertiniEvaporation(); + + virtual G4FragmentVector * BreakItUp(const G4Fragment &theNucleus) + { + G4LayeredNucleus aNuc( theNucleus.GetA(), theNucleus.GetZ() ); + aNuc.AddExcitationEnergy(theNucleus.GetExcitationEnergy()); + return BreakItUp(aNuc); } + G4FragmentVector * BreakItUp( G4LayeredNucleus & nucleus); + void setVerboseLevel( const G4int verbose ); + +private: + G4int verboseLevel; + G4std::vector< G4BertiniEvaporationChannel * > channelVector; + void fillResult( G4std::vector< G4DynamicParticle * > secondaryParticleVector, + G4FragmentVector * aResult ); + void splitBe8( const G4double E, + const G4ThreeVector boost, + G4std::vector< G4DynamicParticle * > & secondaryParticleVector); + void isotropicCosines( G4double & u, G4double & v,G4double & w ); }; #endif diff --git a/source/processes/hadronic/models/cascade/evaporation/include/G4BertiniEvaporationChannel.hh b/source/processes/hadronic/models/cascade/evaporation/include/G4BertiniEvaporationChannel.hh new file mode 100644 index 0000000000..ee668917e1 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/include/G4BertiniEvaporationChannel.hh @@ -0,0 +1,88 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#ifndef G4BertiniEvaporationChannel_h +#define G4BertiniEvaporationChannel_h 1 + +#include "globals.hh" +#include "G4DynamicParticle.hh" +#include "G4NucleiProperties.hh" + +class G4BertiniEvaporationChannel +{ +public: + G4BertiniEvaporationChannel(); + virtual ~G4BertiniEvaporationChannel(); + + void setVerboseLevel( G4int verbose ); + void setNucleusA( G4int inputA ); + void setNucleusZ( G4int inputZ ); + G4int getParticleA(); + G4int getParticleZ(); + void setExcitationEnergy( G4double inputE ); + void setQ( G4double inputQ ); + void setPairingCorrection( G4int isCorrection ); + G4double getLevelDensityParameter(); + G4String getName(); + + virtual G4double getProbability() ; + virtual void setProbability( G4double newProb ) ; + virtual void calculateProbability() = 0 ; + virtual G4double qmFactor (); + virtual G4double getQ(); + virtual G4double getCoulomb(); + virtual G4double getThresh(); + + virtual G4DynamicParticle* emit() = 0; + +protected: + G4String name; + G4int verboseLevel; + G4int nucleusA; + G4int nucleusZ; + G4int particleA; + G4int particleZ; + G4double exmass; + G4double emissionProbability; + G4double rho; + G4double correction; + G4double excitationEnergy; + // G4int massInNeutronMasses; + G4int spin; + G4double Q( G4double a, G4double z ); + G4double pairingEnergyProtons( G4int A ); + G4double pairingEnergyNeutrons( G4int N ); + G4double cameron( G4double a, G4double z ); + G4double cameronShellCorrectionP( G4int Z ); + G4double cameronShellCorrectionN( G4int N ); + void isotropicCosines( G4double&, + G4double&, + G4double& ); +}; + + +#endif diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BEChargedChannel.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BEChargedChannel.cc new file mode 100644 index 0000000000..d9116b88e4 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BEChargedChannel.cc @@ -0,0 +1,202 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "G4BEChargedChannel.hh" + + +G4BEChargedChannel::G4BEChargedChannel() +{ + verboseLevel = 0; +} + + +G4BEChargedChannel::~G4BEChargedChannel() +{ +} + + +void G4BEChargedChannel::calculateProbability() +{ + G4int residualZ = nucleusZ - particleZ; + G4int residualA = nucleusA - particleA; + +// Check if nucleus is too small, if this evaporation channel +// leads to an impossible residual nucleus or if there is no enough +// energy. + if ( nucleusA < 2.0 * particleA || + nucleusZ < 2.0 * particleZ || + residualA <= residualZ || + excitationEnergy - getThresh() - correction < 0 ) + { + if ( verboseLevel >= 6 ) + G4cout << "G4BEChargedChannel : calculateProbability for " << getName() << " = 0 " << G4endl; + emissionProbability = 0; + return; + } + + // In HETC88 s-s0 was used in exp( s ), in which s0 was either 50 or + // max(s_i), where i goes over all channels. + + G4double levelParam = getLevelDensityParameter(); + G4double s = 2 * sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) ); + G4double constant = A / 2 * ( 2 * spin + 1 ) * ( 1 + coulombFactor() ); + G4double eye1 = ( pow( s, 2 ) - 3 * s + 3 ) / ( 4 * pow( levelParam, 2 ) ) * exp( s ); + + emissionProbability = constant * pow( residualA, 0.6666666 ) * eye1; + + if ( verboseLevel >= 6 ) + G4cout << "G4BEChargedChannel : calculateProbability for " << getName() << G4endl + << " res A = " << residualA << G4endl + << " res Z = " << residualZ << G4endl + << " c*(c_i+1) = "<< constant << G4endl + << " qmfactor = "<< qmFactor() << G4endl + << " coulombfactor = "<< coulombFactor() << G4endl + << " E = " << excitationEnergy << G4endl + << " correction = " << correction << G4endl + << " eye1 = " << eye1 << G4endl + << " levelParam = " << levelParam << G4endl + << " thresh = " << getThresh() << G4endl + << " s = " << s << G4endl + << " probability = " << emissionProbability << G4endl; + + return; +} + + +G4double G4BEChargedChannel::sampleKineticEnergy() +{ +// G4double randExp1; +// G4double randExp2; +// G4double s; +// G4double levelParam; +// G4double kineticEnergyAv; +// G4double kineticEnergy; + +// randExp1 = RandExponential::shoot( 1 ); +// randExp2 = RandExponential::shoot( 1 ); +// levelParam = getLevelDensityParameter(); +// s = 2 * sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) ); +// kineticEnergyAv = 2 * ( pow( s, 3 ) - 6.0 * pow( s, 2 ) + 15.0 * s - 15.0 ) / +// ( ( 2.0 * pow( s, 2 ) - 6.0 * s + 6.0 ) * levelParam ); + +// kineticEnergy = 0.5 * ( randExp1 + randExp2 ) * kineticEnergyAv + getThresh() - getQ(); + +// if ( verboseLevel >= 10 ) +// G4cout << " G4BEChargedChannel : sampleKineticEnergy() " << G4endl +// << " kinetic e = " << kineticEnergy << G4endl +// << " average = " << kineticEnergyAv << G4endl +// << " s = " << s << G4endl +// << " levelParam = " << levelParam << G4endl +// << " randExp1 = " << randExp1 << G4endl +// << " randExp2 = " << randExp2 << G4endl; + + G4double levelParam; + levelParam = getLevelDensityParameter(); + + const G4double xMax = excitationEnergy - getThresh() - correction; // maximum number + const G4double xProb = ( - 1 + sqrt ( 1 + 4 * levelParam * xMax ) ) / ( 2 * levelParam ); // most probable value + const G4double m = xProb * exp ( 2 * sqrt ( levelParam * ( xMax - xProb ) ) ); // maximum value of P(x) + + // Sample x according to density function P(x) with rejection method + G4double r1; + G4double r2; + G4int koe=0; + do + { + r1 = G4UniformRand() * xMax; + r2 = G4UniformRand() * m; + koe++; + } + while ( r1 * exp ( 2 * sqrt ( levelParam * ( xMax - r1 ) ) ) < r2 ); + +// G4cout << "Q ch " << koe << G4endl; + G4double kineticEnergy = r1 + getCoulomb(); // add coulomb potential; + + if ( verboseLevel >= 10 ) + G4cout << " G4BENeutronChannel : sampleKineticEnergy() " << G4endl + << " kinetic n e = " << kineticEnergy << G4endl + << " levelParam = " << levelParam << G4endl + << " thresh= " << getThresh() << G4endl; + + return kineticEnergy; +} + + +G4double G4BEChargedChannel::coulombFactorForProton() +{ + // Coefficient c_p:s for empirical cross section formula are + // defined with the proton constant. See Dostrovsky, Phys. Rev., + // vol. 116, 1959. + G4double t[7] = { 0.08 , 0 , -0.06 , -0.1 , -0.1 , -0.1 , -0.1 }; + G4int Z = nucleusZ - particleZ; + + if ( Z >= 70.0 ) return t[6]; + if ( Z <= 10.0 ) return t[0]; + + // Linear interpolation + G4int n = G4int( 0.1 * Z + 1.0 ); + G4float x = ( 10 * n - Z ) * 0.1; + G4double ret_val = x * t[n - 2] + ( 1.0 - x ) * t[n-1]; + + return ret_val; +} + + +G4double G4BEChargedChannel::qmFactorForProton() +{ + // Coefficient k_p for empirical cross section formula are defined + // with the proton constant. See Dostrovsky, Phys. Rev., vol. 116, + // 1959 + G4double t[7] = { 0.36, 0.51, 0.60, 0.66, 0.68, 0.69, 0.69 }; + G4int Z = nucleusZ - particleZ; + + if ( Z >= 70.0 ) return t[6]; + if ( Z <= 10.0 ) return t[0]; + + // Linear interpolation + G4int n = G4int( 0.1 * Z + 1.0 ); + G4float x = ( 10 * n - Z ) * 0.1; + return x * t[n - 2] + ( 1.0 - x ) * t[n-1]; +} + + +G4double G4BEChargedChannel::qmFactorForAlpha() +{ +// Coefficient k_alpha for empirical cross section formula presented +// in Dostrovsky, Phys. Rev., vol. 116, 1959 + + G4double t[7] = { 0.77, 0.81, 0.85, 0.89, 0.93, 0.97, 1.00 }; + G4int Z = nucleusZ - particleZ; + + if ( Z >= 70.0 ) return t[6]; + if ( Z <= 10.0 ) return t[0]; + + // Linear interpolation + G4int n = G4int( 0.1 * Z + 1.0 ); + G4float x = ( 10 * n - Z ) * 0.1; + return x * t[n - 2] + ( 1.0 - x ) * t[n-1]; +} diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BEDeuteronChannel.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BEDeuteronChannel.cc new file mode 100644 index 0000000000..14319ff2b7 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BEDeuteronChannel.cc @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "G4BEDeuteronChannel.hh" +#include "G4Deuteron.hh" + + +G4BEDeuteronChannel::G4BEDeuteronChannel() +{ + name = "deuteron"; + verboseLevel = 0; + particleA = 2; + particleZ = 1; + rho = 0.70588; + exmass = G4NucleiProperties::GetMassExcess( particleA, particleZ ); + A=2; + spin = 1; +} + + +G4BEDeuteronChannel::~G4BEDeuteronChannel() +{ +} + + +G4DynamicParticle* G4BEDeuteronChannel::emit() +{ + G4double u, v, w; + G4DynamicParticle * pParticle = new G4DynamicParticle; + pParticle -> SetDefinition( G4Deuteron::Deuteron() ); + pParticle -> SetKineticEnergy( sampleKineticEnergy() ); + isotropicCosines( u, v, w ); + pParticle -> SetMomentumDirection( u, v, w ); + return pParticle; +} + + +G4double G4BEDeuteronChannel::coulombFactor() +{ + // Coefficient c_i representing the variation of charged-particle + // capture cross sections with Z for each particle. See Dostrovsky, + // Phys. Rev. 116, 1959. + return 0.5 * coulombFactorForProton(); +} + + +G4double G4BEDeuteronChannel::qmFactor() +{ + // Coefficient k_i representing the quantum mechanical barrier + // penetration, see Dostrovsky, Phys. Rev. 116, 1959. + return qmFactorForProton() + 0.06; +} diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BEGammaDeexcitation.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BEGammaDeexcitation.cc new file mode 100644 index 0000000000..2a14b193ed --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BEGammaDeexcitation.cc @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "globals.hh" +#include "G4ios.hh" +#include "Randomize.hh" +#include "G4Neutron.hh" +#include "G4Proton.hh" +#include "G4Deuteron.hh" +#include "G4Triton.hh" +#include "G4Alpha.hh" +#include "G4Nucleus.hh" +#include "G4BEGammaDeexcitation.hh" + + +G4BEGammaDeexcitation::G4BEGammaDeexcitation() +{ +} + + +G4BEGammaDeexcitation::~G4BEGammaDeexcitation() +{ +} + + +void G4BEGammaDeexcitation::setVerboseLevel( G4int level ) +{ + verboseLevel = level ; +} + + +void G4BEGammaDeexcitation::setNucleusA( G4int a ) +{ + nucleusA = a; +} + + +void G4BEGammaDeexcitation::setNucleusZ( G4int z ) +{ + nucleusZ = z; +} + + +void G4BEGammaDeexcitation::setExcitationEnergy( G4double energy ) +{ + excitationEnergy = energy; +} + + +G4double G4BEGammaDeexcitation::sampleKineticEnergy() +{ + return excitationEnergy * G4UniformRand(); +} + + +G4DynamicParticle * G4BEGammaDeexcitation::emit() +{ + // Isotropic distribution assumed to gammas + G4double u, v, w; + G4DynamicParticle * pParticle = new G4DynamicParticle; + pParticle -> SetDefinition( G4Gamma::Gamma() ); + pParticle -> SetKineticEnergy( sampleKineticEnergy() ); + isotropicCosines( u, v, w ); + pParticle -> SetMomentumDirection( u, v, w ); + return pParticle; +} + + +void G4BEGammaDeexcitation::isotropicCosines( G4double & u, + G4double & v, + G4double & w ) +{ + // Samples isotropic random direction cosines. + G4double CosTheta = 1.0 - 2.0 * G4UniformRand(); + G4double SinTheta = sqrt( 1.0 - CosTheta * CosTheta ); + G4double Phi = twopi * G4UniformRand(); + + u = cos( Phi ) * SinTheta; + v = cos( Phi ) * CosTheta, + w = sin( Phi ); + + return; +} diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BEHe3Channel.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BEHe3Channel.cc new file mode 100644 index 0000000000..62415712af --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BEHe3Channel.cc @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "G4BEHe3Channel.hh" +#include "G4He3.hh" + +G4BEHe3Channel::G4BEHe3Channel() +{ + name = "He3"; + verboseLevel = 0; + particleA = 3; + particleZ = 2; + rho = 0.70588; + A=3; + spin = 0.5; +} + + +G4BEHe3Channel::~G4BEHe3Channel() +{ +} + + +G4DynamicParticle* G4BEHe3Channel::emit() +{ + G4double u , v , w; + G4DynamicParticle * pParticle = new G4DynamicParticle; + pParticle -> SetDefinition( G4He3::He3() ); + pParticle -> SetKineticEnergy( sampleKineticEnergy() ); + isotropicCosines( u, v, w); + pParticle -> SetMomentumDirection( u, v, w); + return pParticle; +} + + +G4double G4BEHe3Channel::coulombFactor() +{ + return 0; +} + + +G4double G4BEHe3Channel::qmFactor() +{ + // Coefficient representing the quantum mechanical barrier + // penetration, see Dostrovsky, Phys. Rev. 116, 1959. + return qmFactorForAlpha() - 0.06; +} diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BEHe4Channel.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BEHe4Channel.cc new file mode 100644 index 0000000000..913881124a --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BEHe4Channel.cc @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "G4BEHe4Channel.hh" +#include "G4Alpha.hh" + +G4BEHe4Channel::G4BEHe4Channel() +{ + name = "He4"; + verboseLevel = 0; + particleA = 4; + particleZ = 2; + rho = 0.70588; + A=4; + spin = 0; +} + + +G4BEHe4Channel::~G4BEHe4Channel() +{ +} + + +G4DynamicParticle * G4BEHe4Channel::emit() +{ + G4double u , v , w; + G4DynamicParticle * pParticle = new G4DynamicParticle; + pParticle -> SetDefinition( G4Alpha::Alpha() ); + pParticle -> SetKineticEnergy( sampleKineticEnergy() ); + isotropicCosines( u , v , w ); + pParticle -> SetMomentumDirection( u , v , w ); + return pParticle; +} + + +G4double G4BEHe4Channel::coulombFactor() +{ + return 0; +} + + +G4double G4BEHe4Channel::qmFactor() +{ + // Coefficient representing the quantum mechanical barrier + // penetration, see Dostrovsky, Phys. Rev. 116, 1959. + return qmFactorForAlpha(); +} diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BENeutronChannel.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BENeutronChannel.cc new file mode 100644 index 0000000000..6d3fda106e --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BENeutronChannel.cc @@ -0,0 +1,201 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "globals.hh" +#include "G4ios.hh" +#include "Randomize.hh" +#include "G4Neutron.hh" +#include "G4Proton.hh" +#include "G4Deuteron.hh" +#include "G4Triton.hh" +#include "G4Alpha.hh" +#include "G4ParticleTable.hh" +#include "G4Nucleus.hh" +#include "G4BENeutronChannel.hh" + + +G4BENeutronChannel::G4BENeutronChannel() +{ + name = "neutron"; + particleA = 1; + particleZ = 0; + verboseLevel = 0; + rho = 0; +} + + +G4BENeutronChannel::~G4BENeutronChannel() +{ +} + + +void G4BENeutronChannel::calculateProbability() +{ + const G4int residualZ = nucleusZ - particleZ; + const G4int residualA = nucleusA - particleA; + + if ( nucleusA < 2.0 * particleA || + nucleusZ < 2.0 * particleZ || + residualA <= residualZ || + excitationEnergy - getThresh() - correction < 0 ) + { + if ( verboseLevel >= 6 ) + G4cout << "G4BENeutronChannel : calculateProbability = 0 " << G4endl; + emissionProbability = 0; + return; + } + + // In HETC88 s-s0 was used in exp( s ), in which s0 was either 50 or + // max(s_i), where i goes over all channels. + + const G4double levelParam = getLevelDensityParameter(); + + const G4double s = 2 * sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) ); + const G4double temp = ( pow( s, 2 ) - 3 * s + 3 ) / ( 4 * pow( levelParam, 2 ) ) + + beta() * ( s - 1 ) / ( 2 * levelParam ); + const G4double eye0 = exp( s ) * ( s - 1 ) / ( 2 * levelParam ); + const G4double eye1 = ( pow( s, 2 ) - 3*s +3 ) * exp( s ) / ( 4 * pow( levelParam, 2 ) ) ; + + emissionProbability = pow( residualA, 0.666666 ) * alpha() * ( eye1 + beta() * eye0 ); + + if ( verboseLevel >= 6 ) + G4cout << "G4BENeutronChannel : calculateProbability " << G4endl + << " res A = " << residualA << G4endl + << " res Z = " << residualZ << G4endl + << " alpha = " << alpha() << G4endl + << " beta = " << beta() << G4endl + << " E = " << excitationEnergy << G4endl + << " correction = " << correction << G4endl + << " eye1 = " << eye1 << G4endl + << " eye0 = " << eye0 << G4endl + << " levelParam = " << levelParam << G4endl + << " thresh = " << getThresh() << G4endl + << " s = " << s << G4endl + << " probability = " << emissionProbability << G4endl; + + return; +} + + +G4double G4BENeutronChannel::sampleKineticEnergy() +{ + // Samples the kinetic energy of the particle in CMS + // + // Algorithm used in HETC98 + // +// G4double e1; +// G4double e2; +// G4double s; +// G4double levelParam; +// G4double eye0; +// G4double eye1; +// G4double kineticEnergyAv; +// G4double kineticEnergy; + +// e1 = RandExponential::shoot( 1 ); +// e2 = RandExponential::shoot( 1 ); + +// levelParam = getLevelDensityParameter(); +// s = 2 * sqrt( levelParam * ( excitationEnergy - getThresh() - correction ) ); +// eye0 = 0.5 * ( s - 1 ) * exp( s ) / levelParam; +// eye1 = ( pow( s, 2 ) - 3*s + 3 ) * exp( s ) / ( 4 * pow( levelParam, 2 ) ); +// kineticEnergyAv = 2 * ( pow( s, 3 ) - 6.0 * pow( s, 2 ) + 15.0 * s - 15.0 ) / +// ( ( 2.0 * pow( s, 2 ) - 6.0 * s + 6.0 ) * levelParam ); +// kineticEnergyAv = ( kineticEnergyAv + beta() ) / ( 1.0 + beta() * eye0 +// / eye1 ); + +// kineticEnergy = 0.5 * ( e1 + e2 ) * kineticEnergyAv + getThresh() - getQ(); + + //////////////// + // A random number is sampled from the density function + // P(x) = x * exp ( 2 sqrt ( a ( xMax - x ) ) ) [not normalized], + // x belongs to [ 0, xMax ] + // with the 'Hit or Miss' -method + // Kinetic energy is this energy scaled properly + + G4double levelParam; + levelParam = getLevelDensityParameter(); + + const G4double xMax = excitationEnergy - getThresh() - correction + beta(); // maximum number + const G4double xProb = ( - 1 + sqrt ( 1 + 4 * levelParam * xMax ) ) / ( 2 * levelParam ); // most probable value + const G4double m = xProb * exp ( 2 * sqrt ( levelParam * ( xMax - xProb ) ) ); // maximum value of P(x) + + // Sample x according to density function P(x) with rejection method + G4double r1; + G4double r2; + G4int koe=0; + do + { + r1 = beta() + G4UniformRand() * ( xMax - beta() ); + r2 = G4UniformRand() * m; + koe++; + } + while ( r1 * exp ( 2 * sqrt ( levelParam * ( xMax - r1 ) ) ) < r2 ); + +// G4cout << koe << G4endl; + G4double kineticEnergy = r1 - beta(); + + if ( verboseLevel >= 10 ) + G4cout << " G4BENeutronChannel : sampleKineticEnergy() " << G4endl + << " kinetic n e = " << kineticEnergy << G4endl + << " levelParam = " << levelParam << G4endl + << " thresh= " << getThresh() << G4endl + << " beta= " << beta() << G4endl; + + return kineticEnergy; +} + + +G4DynamicParticle * G4BENeutronChannel::emit() +{ + G4double u; + G4double v; + G4double w; + G4DynamicParticle * pParticle = new G4DynamicParticle; + + pParticle -> SetDefinition( G4Neutron::Neutron() ); + pParticle -> SetKineticEnergy( sampleKineticEnergy() ); + isotropicCosines( u, v, w ); + pParticle -> SetMomentumDirection( u , v , w ); + + return pParticle; +} + + +G4double G4BENeutronChannel::alpha() +{ + const G4double residualA = nucleusA - particleA; + return 0.76 + 1.93 * pow( residualA, -0.33333 ); +} + + +G4double G4BENeutronChannel::beta() +{ + G4double residualA = nucleusA - particleA; + return ( 1.66 * pow ( residualA, -0.66666 ) - 0.05 )/alpha()*MeV; +} + diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BEProtonChannel.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BEProtonChannel.cc new file mode 100644 index 0000000000..f222668a35 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BEProtonChannel.cc @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, 30-May-2000 + +#include "G4BEProtonChannel.hh" +#include "G4Proton.hh" + +G4BEProtonChannel::G4BEProtonChannel() +{ + name = "proton"; + verboseLevel = 0; + particleA = 1; + particleZ = 1; + rho = 0; + A=1; + spin = 0.5; +} + + +G4BEProtonChannel::~G4BEProtonChannel() +{ +} + + +G4DynamicParticle* G4BEProtonChannel::emit() +{ + G4double u , v , w; + G4DynamicParticle * pParticle = new G4DynamicParticle; + pParticle -> SetDefinition( G4Proton::Proton() ); + pParticle -> SetKineticEnergy( sampleKineticEnergy() ); + isotropicCosines( u , v , w ); + pParticle -> SetMomentumDirection( u , v , w ); + return pParticle; +} + + +G4double G4BEProtonChannel::coulombFactor() +{ + return coulombFactorForProton(); +} + + +G4double G4BEProtonChannel::qmFactor() +{ + // Coefficient representing the quantum mechanical barrier + // penetration, see Dostrovsky, Phys. Rev. 116, 1959. + return qmFactorForProton(); +} diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BETritonChannel.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BETritonChannel.cc new file mode 100644 index 0000000000..d60e31e88c --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BETritonChannel.cc @@ -0,0 +1,71 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "G4BETritonChannel.hh" +#include "G4Triton.hh" + +G4BETritonChannel::G4BETritonChannel() +{ + name = "triton"; + verboseLevel = 0; + particleA = 3; + particleZ = 1; + rho = 0.70588; + A=3; + spin = 0.5; +} + + +G4BETritonChannel::~G4BETritonChannel() +{ +} + + +G4DynamicParticle* G4BETritonChannel::emit() +{ + G4double u , v , w; + G4DynamicParticle * pParticle = new G4DynamicParticle; + pParticle -> SetDefinition( G4Triton::Triton() ); + pParticle -> SetKineticEnergy( sampleKineticEnergy() ); + isotropicCosines( u , v , w ); + pParticle -> SetMomentumDirection( u , v , w ); + return pParticle; +} + + +G4double G4BETritonChannel::coulombFactor() +{ + return 0.333333*coulombFactorForProton(); +} + + +G4double G4BETritonChannel::qmFactor() +{ + // Coefficient representing the quantum mechanical barrier + // penetration, see Dostrovsky, Phys. Rev. 116, 1959. + return qmFactorForProton() + 0.12; +} diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BertiniEvaporation.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BertiniEvaporation.cc new file mode 100644 index 0000000000..98d1e650b0 --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BertiniEvaporation.cc @@ -0,0 +1,413 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "globals.hh" +#include "G4BertiniEvaporation.hh" +#include "G4BENeutronChannel.hh" +#include "G4BEProtonChannel.hh" +#include "G4BEDeuteronChannel.hh" +#include "G4BETritonChannel.hh" +#include "G4BEHe3Channel.hh" +#include "G4BEHe4Channel.hh" +#include "G4BEGammaDeexcitation.hh" + +// verboseLevels : 4 inform about basic probabilities and branchings +// 6 some details about calculations +// 8 inform about final values +// 10 inform everything + +G4BertiniEvaporation::G4BertiniEvaporation() +{ + G4cout << "Info G4BertiniEvaporation: This is still very fresh code."<< G4endl; + G4cout << " G4BertiniEvaporation: feed-back for improvement is very wellcome."<< G4endl; + verboseLevel = 0; + + channelVector.push_back( new G4BENeutronChannel ); + channelVector.push_back( new G4BEProtonChannel ); + channelVector.push_back( new G4BEDeuteronChannel); + channelVector.push_back( new G4BETritonChannel ); + channelVector.push_back( new G4BEHe3Channel ); + channelVector.push_back( new G4BEHe4Channel ); +} + + +G4BertiniEvaporation::~G4BertiniEvaporation() +{ + while ( !channelVector.empty() ) + { + delete channelVector.back(); + channelVector.pop_back(); + } +} + + +void G4BertiniEvaporation::setVerboseLevel( const G4int verbose ) +{ + verboseLevel = verbose; + + // Update verbose level to all evaporation channels. + G4std::vector< G4BertiniEvaporationChannel * >::iterator iChannel = channelVector.begin(); + for ( ; iChannel != channelVector.end() ; *iChannel++ ) + ( *iChannel )->setVerboseLevel( verboseLevel ); +} + + +G4FragmentVector * G4BertiniEvaporation::BreakItUp( G4LayeredNucleus & nucleus ) +{ + G4int nucleusA; + G4int nucleusZ; + G4int i; + G4double totalProbability; + G4double excE; + G4double newExcitation; + G4double nucleusTotalMomentum; + G4double nucleusKineticEnergy; + G4double mRes; // Mass of residual nucleus. + G4ThreeVector nucleusMomentumVector; + G4DynamicParticle *pEmittedParticle; + G4std::vector< G4DynamicParticle * > secondaryParticleVector; + G4FragmentVector * result = new G4FragmentVector; + + // Read properties of the nucleus. + nucleusA = ( G4int ) nucleus.GetN(); // GetN should in fact get GetA + nucleusZ = ( G4int ) nucleus.GetZ(); + excE = nucleus.GetEnergyDeposit(); + nucleusMomentumVector = nucleus.GetMomentum(); + + // Move to CMS frame, save initial velocity of the nucleus to boostToLab vector. + G4ThreeVector boostToLab( ( 1/G4NucleiProperties::GetAtomicMass( nucleusA, nucleusZ ) ) + * nucleusMomentumVector ); // xx mass ok? + + if ( verboseLevel >= 10 ) + G4cout << " G4BertiniEvaporation : initial kinematics : boostToLab vector = " << boostToLab << G4endl + << " excitation energy : " << excE<< G4endl; + + if ( nucleusA == 8 && nucleusZ == 4 ) + { + splitBe8( excE, boostToLab, secondaryParticleVector ); + fillResult( secondaryParticleVector, result); + return result; + } + + // Initialize evaporation channels and calculate sum of emission + // probabilities. + G4std::vector< G4BertiniEvaporationChannel * >::iterator iChannel = channelVector.begin(); + totalProbability = 0; + for ( ; iChannel != channelVector.end() ; *iChannel++ ) + { + ( *iChannel )->setNucleusA( nucleusA ); + ( *iChannel )->setNucleusZ( nucleusZ ); + ( *iChannel )->setExcitationEnergy( excE ); + ( *iChannel )->setPairingCorrection( 1 ); + ( *iChannel )->calculateProbability(); + totalProbability += ( *iChannel )->getProbability(); + } + + // If no evaporation process is possible, try without pairing energy. + if ( totalProbability == 0 ) + { + if ( verboseLevel >= 4 ) + G4cout << "G4BertiniEvaporation : no emission possible with pairing correction, trying without it" << G4endl; + for ( iChannel = channelVector.begin() ; iChannel != channelVector.end() ; *iChannel++ ) + { + ( *iChannel )->setPairingCorrection(0); + ( *iChannel )->calculateProbability(); + totalProbability += ( *iChannel )->getProbability(); + } + if ( verboseLevel >= 4 ) + G4cout << " probability without correction " << totalProbability << G4endl; + + } + + // Normal evaporation cycle follows. + // Particles are evaporated till all probabilities are zero. + while ( totalProbability > 0 ) + { + G4BertiniEvaporationChannel *pSelectedChannel; + + // Sample active emission channel. + G4double sampledProbability = G4UniformRand() * totalProbability; + if ( verboseLevel >= 10 ) G4cout << " RandomProb : " << sampledProbability << G4endl; + for ( iChannel = channelVector.begin() ; iChannel != channelVector.end() ; *iChannel++ ) + { + sampledProbability -= ( *iChannel )->getProbability(); + if ( sampledProbability < 0 ) break; + } + pSelectedChannel = ( *iChannel ); + if ( iChannel == channelVector.end() ) + G4Exception( "G4BertiniEvaporation : Error while sampling evaporation particle" ); + + if ( verboseLevel >= 4 ) + G4cout << "G4BertiniEvaporation : particle " << pSelectedChannel->getName() << " selected " << G4endl; + + // Max 10 tries to get a physically acceptable particle energy + // in this emission channel. + i = 0; + + do + { + pEmittedParticle = pSelectedChannel->emit(); + // This loop checks that particle with too large energy is not emitted. + // CMS frame is considered in this loop. Nonrelativistic treatment. xxx + + + const G4int zRes = nucleusZ - pSelectedChannel->getParticleZ(); + const G4int aRes = nucleusA - pSelectedChannel->getParticleA(); + const G4double eBind = G4NucleiProperties::GetBindingEnergy( aRes, zRes ); // Binding energy of the nucleus. + mRes = G4NucleiProperties::GetAtomicMass( aRes, zRes ); // Mass of the target nucleus + // In HETC88: + // eBind = Z * (-0.78244) + A * 8.36755 - cameron ( A , Z ); + // mRes = zRes * 938.79304 + ( aRes - zRes ) * 939.57548 - eBind; + // where cameron ( A, Z ) is the mass excess by Cameron, see Canadian Journal of Physics, + // vol. 35, 1957, p.1022 + + nucleusTotalMomentum = pEmittedParticle->GetTotalMomentum(); // CMS frame + nucleusKineticEnergy = pow( nucleusTotalMomentum, 2 ) / ( 2 * mRes ); + newExcitation = excE - pEmittedParticle->GetKineticEnergy() - nucleusKineticEnergy - pSelectedChannel->getQ(); + + if ( verboseLevel >= 10) + G4cout << "G4BertiniEvaporation : Kinematics " << G4endl + << " part kinetic E in CMS = " + << pEmittedParticle->GetKineticEnergy() << G4endl + << " new excitation E = " + << newExcitation << G4endl; + + i++; + if ( !( newExcitation > 0 ) && i < 10) delete pEmittedParticle; + } while ( !( newExcitation > 0 ) && i < 10 ); + + if ( i >= 10 ) + { + // No appropriate particle energy found. + // Set probability of this channel to zero + // and try to sample another particle on the + // next round. + delete pEmittedParticle; + + if ( verboseLevel >= 4 ) + G4cout << "G4BertiniEvaporation : No appropriate energy for particle " + << pSelectedChannel->getName() << " found." << G4endl; + + pSelectedChannel->setProbability( 0 ); + + totalProbability = 0; + for ( ; iChannel != channelVector.end() ; *iChannel++ ) + totalProbability += ( *iChannel )->getProbability(); + } // Treatment of physically unacceptable particle ends. + else + { + // Good particle found. + + // Transform particle properties to lab frame and save it. + G4LorentzVector particleFourVector = pEmittedParticle->Get4Momentum(); + G4LorentzVector nucleusFourVector( - pEmittedParticle->GetMomentum(), // CMS Frame. + nucleusKineticEnergy + mRes ); // Total energy. + particleFourVector.boost( boostToLab ); + nucleusFourVector.boost( boostToLab ); + G4DynamicParticle *pPartLab = new G4DynamicParticle( pEmittedParticle->GetDefinition(), + particleFourVector.e(), // Total energy + particleFourVector.vect() ); // momentum vector + secondaryParticleVector.push_back( pPartLab ); + + // Update residual nucleus and boostToLab vector. + nucleusA = nucleusA - pSelectedChannel->getParticleA(); + nucleusZ = nucleusZ - pSelectedChannel->getParticleZ(); + excE = newExcitation; + boostToLab = G4ThreeVector ( ( 1/mRes ) * nucleusFourVector.vect() ); + + if ( verboseLevel >= 10 ) + G4cout << " particle mom in cms " << pEmittedParticle->GetMomentum() << G4endl + << " particle mom in cms " << pEmittedParticle->GetTotalMomentum() << G4endl + << " Etot in cms " << pEmittedParticle->GetTotalEnergy() << G4endl + << " Ekin in cms " << pEmittedParticle->GetKineticEnergy() << G4endl + << " particle mass " << pEmittedParticle->GetMass() << G4endl + << " boost vect " << boostToLab << G4endl + << " boosted 4v " << particleFourVector << G4endl + << " nucleus 4v " << nucleusFourVector << G4endl + << " nucl cm mom " << nucleusTotalMomentum << G4endl + << " particle k.e. in lab " << pPartLab->GetKineticEnergy() << G4endl + << " new boost vector " << boostToLab << G4endl; + + delete pEmittedParticle; + + // If the residual nucleus is Be8, split it. + if ( nucleusA == 8 && nucleusZ == 4 ) + { + splitBe8( excE, boostToLab, secondaryParticleVector ); + fillResult( secondaryParticleVector, result); + return result; + } + + // Update evaporation channels and + // total emission probability. + totalProbability = 0; + for ( iChannel = channelVector.begin() ; iChannel != channelVector.end() ; *iChannel++ ) + { + ( *iChannel )->setNucleusA( nucleusA ); + ( *iChannel )->setNucleusZ( nucleusZ ); + ( *iChannel )->setExcitationEnergy( excE ); + ( *iChannel )->calculateProbability(); + totalProbability += ( *iChannel )->getProbability(); + } + } // Treatment of physically acceptable particle ends. + } // End of evaporation cycle. + + // Gamma de-excitation. + G4BEGammaDeexcitation *pGammaChannel = new G4BEGammaDeexcitation; + pGammaChannel->setNucleusA( nucleusA ); + pGammaChannel->setNucleusZ( nucleusZ ); + pGammaChannel->setVerboseLevel( verboseLevel ); + pGammaChannel->setExcitationEnergy( excE ); + + // Emit equally sampled photons until all the excitation energy is + // used; the last photon gets the remaining de-excitation energy. + // Change of momentum of the nucleus is neglected. + G4double gammaEnergy; + G4double totalDeExcEnergy = 0; + + while ( excE > 0 ) + { + pEmittedParticle = pGammaChannel->emit(); + gammaEnergy = pEmittedParticle->GetKineticEnergy(); + + if ( ( totalDeExcEnergy + gammaEnergy ) > excE ) + { + // All the remaining energy is used here. + gammaEnergy = excE - totalDeExcEnergy; + excE = 0; + } + + totalDeExcEnergy += gammaEnergy; + + if ( verboseLevel >= 10 ) + G4cout << " G4BertiniEvaporation : gamma de-excitation, g of " << gammaEnergy << " MeV " << G4endl; + + G4LorentzVector gammaFourVector( pEmittedParticle->GetMomentum(), + pEmittedParticle->GetKineticEnergy() ); + gammaFourVector.boost( boostToLab ); + pEmittedParticle->SetKineticEnergy( gammaFourVector.e() ); + pEmittedParticle->SetMomentumDirection( gammaFourVector.vect().unit() ); + + secondaryParticleVector.push_back( pEmittedParticle ); + + } + + delete pGammaChannel; + + // Residual nucleus is not returned. + + fillResult( secondaryParticleVector, result); + + return result; +} + + +void G4BertiniEvaporation::splitBe8( const G4double E, + const G4ThreeVector boostToLab, + G4std::vector< G4DynamicParticle * > & secondaryParticleVector ) +{ + G4double kineticEnergy; + G4double u; + G4double v; + G4double w; + const G4double Be8DecayEnergy = 0.093 * MeV; + + if ( E <= 0 ) G4Exception( "G4BertiniEvaporation : excitation energy < 0 " ); + if ( verboseLevel >= 4 ) G4cout << " Be8 split to 2 x He4" << G4endl; + + kineticEnergy = 0.5 * ( E + Be8DecayEnergy ); + + // Create two alpha particles in CMS frame. + isotropicCosines( u , v , w ); + G4ThreeVector momentumDirectionCMS( u, v, w ); + + G4DynamicParticle *pP1Cms = new G4DynamicParticle( G4Alpha::Alpha(), + momentumDirectionCMS, + kineticEnergy ); + G4DynamicParticle *pP2Cms = new G4DynamicParticle( G4Alpha::Alpha(), + -momentumDirectionCMS, + kineticEnergy ); + G4LorentzVector fourVector1( pP1Cms->GetMomentum(), + pP1Cms->GetTotalEnergy() ); + G4LorentzVector fourVector2( pP2Cms->GetMomentum(), + pP2Cms->GetTotalEnergy() ); + + // Transform into lab frame by transforming the four vectors. Then + // add to the vector of secondary particles. + fourVector1.boost( boostToLab ); + fourVector2.boost( boostToLab ); + G4DynamicParticle * pP1Lab = new G4DynamicParticle( G4Alpha::Alpha(), + fourVector1.vect(), + fourVector1.e() ); + G4DynamicParticle * pP2Lab = new G4DynamicParticle( G4Alpha::Alpha(), + fourVector2.vect(), + fourVector2.e() ); + secondaryParticleVector.push_back( pP1Lab ); + secondaryParticleVector.push_back( pP2Lab ); + + delete pP1Cms; + delete pP2Cms; + + return; +} + + +void G4BertiniEvaporation::fillResult( G4std::vector secondaryParticleVector, + G4FragmentVector * aResult ) +{ + // Fill the vector pParticleChange with secondary particles stored in vector. + for ( G4int i = 0 ; i < secondaryParticleVector.size() ; i++ ) + { + G4int aZ = secondaryParticleVector[i]->GetDefinition()->GetPDGCharge(); + G4int aA = secondaryParticleVector[i]->GetDefinition()->GetBaryonNumber(); + G4LorentzVector aMomentum = secondaryParticleVector[i]->Get4Momentum(); + if(aA>0) + { + aResult->push_back( new G4Fragment(aA, aZ, aMomentum) ); + } + else + { + aResult->push_back( new G4Fragment(aMomentum, secondaryParticleVector[i]->GetDefinition()) ); + } + } + return; +} + + +void G4BertiniEvaporation::isotropicCosines( G4double & u, G4double & v, G4double & w ) +{ + // Samples isotropic random direction cosines. + G4double CosTheta = 1.0 - 2.0 * G4UniformRand(); + G4double SinTheta = sqrt( 1.0 - CosTheta * CosTheta ); + G4double Phi = twopi * G4UniformRand(); + + u = cos( Phi ) * SinTheta; + v = cos( Phi ) * CosTheta, + w = sin( Phi ); + + return; +} diff --git a/source/processes/hadronic/models/cascade/evaporation/src/G4BertiniEvaporationChannel.cc b/source/processes/hadronic/models/cascade/evaporation/src/G4BertiniEvaporationChannel.cc new file mode 100644 index 0000000000..9178c3b1ee --- /dev/null +++ b/source/processes/hadronic/models/cascade/evaporation/src/G4BertiniEvaporationChannel.cc @@ -0,0 +1,400 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// Implementation of the HETC88 code into Geant4. +// Evaporation and De-excitation parts +// T. Lampen, Helsinki Institute of Physics, May-2000 + +#include "globals.hh" +#include "G4ios.hh" +#include "Randomize.hh" +#include "G4Neutron.hh" +#include "G4Proton.hh" +#include "G4Deuteron.hh" +#include "G4Triton.hh" +#include "G4Alpha.hh" +#include "G4ParticleTable.hh" +#include "G4Nucleus.hh" +#include "G4BertiniEvaporationChannel.hh" + + +G4BertiniEvaporationChannel::G4BertiniEvaporationChannel() +{ + verboseLevel = 0; +} + + +G4BertiniEvaporationChannel::~G4BertiniEvaporationChannel() +{ +} + + +void G4BertiniEvaporationChannel::setVerboseLevel( G4int level ) +{ + verboseLevel = level; +} + + +void G4BertiniEvaporationChannel::setNucleusA( G4int a ) +{ + nucleusA = a; +} + + +void G4BertiniEvaporationChannel::setNucleusZ( G4int z ) +{ + nucleusZ = z; +} + + +G4int G4BertiniEvaporationChannel::getParticleA() +{ + return particleA; +} + + +G4int G4BertiniEvaporationChannel::getParticleZ() +{ + return particleZ; +} + + +void G4BertiniEvaporationChannel::setExcitationEnergy(G4double energy ) +{ + excitationEnergy = energy; +} + + +void G4BertiniEvaporationChannel::setPairingCorrection( G4int isCorrection ) +{ + G4int residualZ = nucleusZ - particleZ; + G4int residualA = nucleusA - particleA; + + // Note: pairing energy is zero for odd nucleon number. + + if ( isCorrection ) correction = pairingEnergyProtons( residualZ ) + + pairingEnergyNeutrons( residualA - residualZ ); + else correction = 0; +} + + +G4double G4BertiniEvaporationChannel::getProbability() +{ + if ( verboseLevel >= 4 ) + G4cout << "G4BerEvaporationChannel : probability of particle " << name + << " is " << emissionProbability << G4endl; + + return emissionProbability; +} + + +G4String G4BertiniEvaporationChannel::getName() +{ + return name; +} + + +void G4BertiniEvaporationChannel::setProbability( G4double newProb ) +{ + emissionProbability = newProb; + return; +} + + +G4double G4BertiniEvaporationChannel::getQ() +{ + // The reaction Q is calculated by using the excess masses of the + // secondary particle and the initial and residual nuclei + G4int residualZ = nucleusZ - particleZ; + G4int residualA = nucleusA - particleA; + G4int residualN = residualA - residualZ; + G4int nucleusN = nucleusA - nucleusZ; + + // All the following are by default in MeV + const G4double e1 = G4NucleiProperties::GetMassExcess( residualA, residualZ ); + const G4double e2 = G4NucleiProperties::GetMassExcess( nucleusA, nucleusZ ); + + return e1 - e2 + G4NucleiProperties::GetMassExcess( particleA, particleZ ); + // In HETC88 : Mass excesses were calculated with the Cameron mass excess formula, + // see Cameron, Canadian Journal of Physics, + // vol. 35, 1957, p.1022 + // Also mass excesses of particles were + // 8.3675, 7.5851, 13.7279, 15.8381, 15.8195, 3.6092 for + // n, p, D, T, 3He, 4He +} + + +G4double G4BertiniEvaporationChannel::getThresh() +{ + G4double threshold = getQ() + getCoulomb(); + return threshold; +} + + +G4double G4BertiniEvaporationChannel::getCoulomb() +{ + G4int residualZ = nucleusZ - particleZ; + G4int residualA = nucleusA - particleA; + const G4double factor = 0.84696; // = e / ( 4 pi epsilon_0 r0 ) * 10^-6, r0=1.7E-15 + // In HETC88 this factor was 0.88235, perhaps due to different r0 + + G4double coulomb = factor * particleZ * qmFactor() * residualZ / + ( pow( residualA, 0.33333333 ) + rho ) * MeV; + + if ( verboseLevel >= 10 ) + G4cout << " G4BertiniEvaporationChannel::getThresh() " << G4endl + << " residualZ " << residualZ << G4endl + << " residualA " << residualA << G4endl + << " qmFactor " << qmFactor() << G4endl + << " Q " << getQ() << G4endl + << " rho " << rho << G4endl + << " part Z " << particleZ << G4endl + << " (correction) " << correction << G4endl; + + return coulomb; +} + + +G4double G4BertiniEvaporationChannel::qmFactor() +{ + // Coefficient k_p for empirical cross section + // formula presented in Dostrovsky, Phys. Rev., + // vol. 116, 1959 + return 0; +} + + +G4double G4BertiniEvaporationChannel::getLevelDensityParameter() +{ + G4int residualZ = nucleusZ - particleZ; + G4int residualA = nucleusA - particleA; + G4double b0 = 8; + G4double y0 = 1.5; + + G4double temp = ( residualA - 2.0 * residualZ ) / residualA; + G4double smallA = residualA * ( 1.0 + y0 * pow( temp, 2 ) ) / b0 / MeV; + + // In HETC98 b0 = b0(E). + + return smallA; +} + + +void G4BertiniEvaporationChannel::isotropicCosines( G4double & u, G4double & v, G4double & w ) +{ + // Samples isotropic random direction cosines. + G4double CosTheta = 1.0 - 2.0 * G4UniformRand(); + G4double SinTheta = sqrt( 1.0 - CosTheta * CosTheta ); + G4double Phi = twopi * G4UniformRand(); + + u = cos( Phi ) * SinTheta; + v = cos( Phi ) * CosTheta, + w = sin( Phi ); + + return; +} + + +G4double G4BertiniEvaporationChannel::pairingEnergyProtons(G4int Z) +{ + // Pairing energy for protons P(Z), see + // Cameron, Nuclear Level Spacings, p. 1040 + // Canadian Journal of Physics, vol 36, 1958 + G4double table [130] = { + 0.00000000E+00, 0.54399996E+01, 0.00000000E+00, 0.27599993E+01, 0.00000000E+00, + 0.33399992E+01, 0.00000000E+00, 0.26999998E+01, 0.00000000E+00, 0.18999996E+01, + 0.00000000E+00, 0.21199999E+01, 0.00000000E+00, 0.21299992E+01, 0.00000000E+00, + 0.15399990E+01, 0.00000000E+00, 0.14199991E+01, 0.00000000E+00, 0.15099993E+01, + 0.00000000E+00, 0.17299995E+01, 0.00000000E+00, 0.14399996E+01, 0.00000000E+00, + 0.14499998E+01, 0.00000000E+00, 0.13699999E+01, 0.00000000E+00, 0.10899992E+01, + 0.00000000E+00, 0.13599997E+01, 0.00000000E+00, 0.14199991E+01, 0.00000000E+00, + 0.13299990E+01, 0.00000000E+00, 0.11999998E+01, 0.00000000E+00, 0.99999988E+00, + 0.00000000E+00, 0.11599998E+01, 0.00000000E+00, 0.12799997E+01, 0.00000000E+00, + 0.13799992E+01, 0.00000000E+00, 0.13799992E+01, 0.00000000E+00, 0.13199997E+01, + 0.00000000E+00, 0.10399990E+01, 0.00000000E+00, 0.11099997E+01, 0.00000000E+00, + 0.11299992E+01, 0.00000000E+00, 0.12099991E+01, 0.00000000E+00, 0.14299994E+01, + 0.00000000E+00, 0.11499996E+01, 0.00000000E+00, 0.98999995E+00, 0.00000000E+00, + 0.90999997E+00, 0.00000000E+00, 0.91999996E+00, 0.00000000E+00, 0.99999988E+00, + 0.00000000E+00, 0.11099997E+01, 0.00000000E+00, 0.12299995E+01, 0.00000000E+00, + 0.84999996E+00, 0.00000000E+00, 0.97999996E+00, 0.00000000E+00, 0.71999997E+00, + 0.00000000E+00, 0.79999995E+00, 0.00000000E+00, 0.76999998E+00, 0.00000000E+00, + 0.88999999E+00, 0.00000000E+00, 0.91999996E+00, 0.00000000E+00, 0.79999995E+00, + 0.00000000E+00, 0.80999994E+00, 0.00000000E+00, 0.69000000E+00, 0.00000000E+00, + 0.69999999E+00, 0.00000000E+00, 0.75999999E+00, 0.00000000E+00, 0.72999996E+00, + 0.00000000E+00, 0.79999995E+00, 0.00000000E+00, 0.73999995E+00, 0.00000000E+00, + 0.72999996E+00, 0.00000000E+00, 0.71999997E+00, 0.00000000E+00, 0.71999997E+00, + 0.00000000E+00, 0.71999997E+00, 0.00000000E+00, 0.70999998E+00, 0.00000000E+00, + 0.69000000E+00, 0.00000000E+00, 0.67999995E+00, 0.00000000E+00, 0.65999997E+00, + 0.00000000E+00, 0.60999995E+00, 0.00000000E+00, 0.41999996E+00, 0.00000000E+00, + 0.35999995E+00, 0.00000000E+00, 0.40999997E+00, 0.00000000E+00, 0.48999995E+00 + }; + if ( Z>130 ) G4Exception( " G4BertiniEvaporationChannel: pairing energy for protons called with too large Z " ); + return table[ Z-1 ]*MeV; +} + + +G4double G4BertiniEvaporationChannel::pairingEnergyNeutrons(G4int N) +{ +// Pairing energy for neutrons P(N), see +// Cameron, Nuclear Level Spacings, p. 1040 +// Canadian Journal of Physics, vol 36, 1958 + G4double table[200] = { + 0.00000000E+00, 0.59799995E+01, 0.00000000E+00, 0.27699995E+01, 0.00000000E+00, + 0.31599998E+01, 0.00000000E+00, 0.30099993E+01, 0.00000000E+00, 0.16799994E+01, + 0.00000000E+00, 0.17299995E+01, 0.00000000E+00, 0.21699991E+01, 0.00000000E+00, + 0.17399998E+01, 0.00000000E+00, 0.17500000E+01, 0.00000000E+00, 0.17199993E+01, + 0.00000000E+00, 0.16299992E+01, 0.00000000E+00, 0.14099998E+01, 0.00000000E+00, + 0.12899990E+01, 0.00000000E+00, 0.14699993E+01, 0.00000000E+00, 0.13199997E+01, + 0.00000000E+00, 0.14599991E+01, 0.00000000E+00, 0.14399996E+01, 0.00000000E+00, + 0.14599991E+01, 0.00000000E+00, 0.15199995E+01, 0.00000000E+00, 0.15099993E+01, + 0.00000000E+00, 0.14699993E+01, 0.00000000E+00, 0.14499998E+01, 0.00000000E+00, + 0.12799997E+01, 0.00000000E+00, 0.12299995E+01, 0.00000000E+00, 0.12699995E+01, + 0.00000000E+00, 0.61999995E+00, 0.00000000E+00, 0.75999999E+00, 0.00000000E+00, + 0.12299995E+01, 0.00000000E+00, 0.12199993E+01, 0.00000000E+00, 0.13999996E+01, + 0.00000000E+00, 0.13599997E+01, 0.00000000E+00, 0.12999992E+01, 0.00000000E+00, + 0.12899990E+01, 0.00000000E+00, 0.12399998E+01, 0.00000000E+00, 0.12799997E+01, + 0.00000000E+00, 0.12399998E+01, 0.00000000E+00, 0.11999998E+01, 0.00000000E+00, + 0.94000000E+00, 0.00000000E+00, 0.99999988E+00, 0.00000000E+00, 0.10499992E+01, + 0.00000000E+00, 0.53999996E+00, 0.00000000E+00, 0.59999996E+00, 0.00000000E+00, + 0.75000000E+00, 0.00000000E+00, 0.75000000E+00, 0.00000000E+00, 0.84999996E+00, + 0.00000000E+00, 0.96999997E+00, 0.00000000E+00, 0.10199995E+01, 0.00000000E+00, + 0.10499992E+01, 0.00000000E+00, 0.10599995E+01, 0.00000000E+00, 0.10699997E+01, + 0.00000000E+00, 0.10599995E+01, 0.00000000E+00, 0.10499992E+01, 0.00000000E+00, + 0.10199995E+01, 0.00000000E+00, 0.96999997E+00, 0.00000000E+00, 0.90999997E+00, + 0.00000000E+00, 0.82999998E+00, 0.00000000E+00, 0.73999995E+00, 0.00000000E+00, + 0.65999997E+00, 0.00000000E+00, 0.60999995E+00, 0.00000000E+00, 0.60999995E+00, + 0.00000000E+00, 0.89999998E+00, 0.00000000E+00, 0.51999998E+00, 0.00000000E+00, + 0.80999994E+00, 0.00000000E+00, 0.67999995E+00, 0.00000000E+00, 0.71999997E+00, + 0.00000000E+00, 0.76999998E+00, 0.00000000E+00, 0.67999995E+00, 0.00000000E+00, + 0.66999996E+00, 0.00000000E+00, 0.79999995E+00, 0.00000000E+00, 0.67999995E+00, + 0.00000000E+00, 0.63999999E+00, 0.00000000E+00, 0.57999998E+00, 0.00000000E+00, + 0.54999995E+00, 0.00000000E+00, 0.56999993E+00, 0.00000000E+00, 0.56999993E+00, + 0.00000000E+00, 0.54999995E+00, 0.00000000E+00, 0.59999996E+00, 0.00000000E+00, + 0.57999998E+00, 0.00000000E+00, 0.57999998E+00, 0.00000000E+00, 0.60999995E+00, + 0.00000000E+00, 0.63000000E+00, 0.00000000E+00, 0.64999998E+00, 0.00000000E+00, + 0.65999997E+00, 0.00000000E+00, 0.64999998E+00, 0.00000000E+00, 0.64999998E+00, + 0.00000000E+00, 0.63999999E+00, 0.00000000E+00, 0.63999999E+00, 0.00000000E+00, + 0.63000000E+00, 0.00000000E+00, 0.60999995E+00, 0.00000000E+00, 0.58999997E+00, + 0.00000000E+00, 0.54999995E+00, 0.00000000E+00, 0.38999999E+00, 0.00000000E+00, + 0.35999995E+00, 0.00000000E+00, 0.39999998E+00, 0.00000000E+00, 0.39999998E+00, + 0.00000000E+00, 0.39999998E+00, 0.00000000E+00, 0.39999998E+00, 0.00000000E+00, + 0.39999998E+00, 0.00000000E+00, 0.39999998E+00, 0.00000000E+00, 0.39999998E+00 + }; + if ( N > 200 ) G4Exception( " G4BertiniEvaporationChannel: pairing energy for neutrons called with too large Z " ); + return table[ N-1 ]*MeV; +} + + +G4double G4BertiniEvaporationChannel::cameronShellCorrectionP(G4int Z) +{ + // Gives the binding energy correction depending in Z + // due to shell correction and pairing energies in MeV + // + // see Cameron, Canadian Journal of Physics, + // vol. 35, 1957, p.1022 + G4double table[130] = { + 0.26169998E+02, 0.19250000E+02, 0.24209991E+02, 0.20919998E+02, 0.23149994E+02, + 0.18009995E+02, 0.19549988E+02, 0.16939987E+02, 0.19729996E+02, 0.17069992E+02, + 0.18209991E+02, 0.14990000E+02, 0.16009995E+02, 0.12040000E+02, 0.13270000E+02, + 0.11089998E+02, 0.12169999E+02, 0.10259998E+02, 0.11040000E+02, 0.84099998E+01, + 0.97899990E+01, 0.73599997E+01, 0.81499996E+01, 0.56299992E+01, 0.58799992E+01, + 0.31699991E+01, 0.33199997E+01, 0.81999993E+00, 0.18299999E+01, 0.96999997E+00, + 0.23299999E+01, 0.12699995E+01, 0.29199991E+01, 0.16099997E+01, 0.29099998E+01, + 0.13499994E+01, 0.23999996E+01, 0.88999999E+00, 0.17399998E+01, 0.35999995E+00, + 0.94999999E+00, -0.64999998E+00, -0.39999995E-01, -0.17299995E+01, -0.95999998E+00, + -0.28699999E+01, -0.20499992E+01, -0.40499992E+01, -0.33999996E+01, -0.57199993E+01, + -0.37499990E+01, -0.41299992E+01, -0.24199991E+01, -0.28499994E+01, -0.10099993E+01, + -0.13299990E+01, 0.53999996E+00, -0.20000000E-01, 0.17399998E+01, 0.75000000E+00, + 0.22399998E+01, 0.99999988E+00, 0.19799995E+01, 0.78999996E+00, 0.15399990E+01, + 0.38999999E+00, 0.10799999E+01, 0.00000000E+00, 0.77999997E+00, -0.34999996E+00, + 0.57999998E+00, -0.54999995E+00, 0.58999997E+00, -0.60999995E+00, 0.58999997E+00, + -0.34999996E+00, 0.31999993E+00, -0.95999998E+00, -0.51999998E+00, -0.20799999E+01, + -0.24599991E+01, -0.36399994E+01, -0.15499992E+01, -0.95999998E+00, 0.96999997E+00, + 0.88000000E+00, 0.23699999E+01, 0.17500000E+01, 0.27199993E+01, 0.18999996E+01, + 0.25499992E+01, 0.14599991E+01, 0.19299994E+01, 0.85999995E+00, 0.11699991E+01, + 0.79999983E-01, 0.38999999E+00, -0.75999999E+00, -0.38999999E+00, -0.15099993E+01, + -0.11699991E+01, -0.23599997E+01, -0.19499998E+01, -0.30599995E+01, -0.26199999E+01, + -0.35499992E+01, -0.29499998E+01, -0.37499990E+01, -0.30699997E+01, -0.37899990E+01, + -0.30599995E+01, -0.37699995E+01, -0.30499992E+01, -0.37799997E+01, -0.31199999E+01, + -0.38999996E+01, -0.33499994E+01, -0.42399998E+01, -0.38599997E+01, -0.49199991E+01, + -0.50599995E+01, -0.67699995E+01, -0.74099998E+01, -0.91799994E+01, -0.10160000E+02, + -0.11120000E+02, -0.97599993E+01, -0.92299995E+01, -0.79599991E+01, -0.76499996E+01, + }; + if ( Z > 130 ) G4Exception( " G4BertiniEvaporationChannel: shell correction for protons called with too large Z " ); + return table[ Z-1 ]*MeV; +} + + +G4double G4BertiniEvaporationChannel::cameronShellCorrectionN(G4int N) +{ + // Gives the binding energy correction depending in N + // due to shell correction and pairing energies in MeV + // + // see Cameron, Canadian Journal of Physics, + // vol. 35, 1957, p.1022 + G4double table[200] = { + -0.83199997E+01, -0.15899999E+02, -0.11509999E+02, -0.14309999E+02, -0.11570000E+02, + -0.15899999E+02, -0.13909999E+02, -0.16029999E+02, -0.12129999E+02, -0.13869999E+02, + -0.12249998E+02, -0.14399999E+02, -0.13069999E+02, -0.15799998E+02, -0.13809999E+02, + -0.14980000E+02, -0.12629999E+02, -0.13759999E+02, -0.11369999E+02, -0.12379998E+02, + -0.92299995E+01, -0.96499996E+01, -0.76399994E+01, -0.91699991E+01, -0.80499992E+01, + -0.97199993E+01, -0.88699989E+01, -0.10759999E+02, -0.86399994E+01, -0.88899994E+01, + -0.65999994E+01, -0.71299992E+01, -0.47699995E+01, -0.53299990E+01, -0.30599995E+01, + -0.37899990E+01, -0.17199993E+01, -0.27899990E+01, -0.92999995E+00, -0.21899996E+01, + -0.51999998E+00, -0.18999996E+01, -0.44999999E+00, -0.21999998E+01, -0.12199993E+01, + -0.30699997E+01, -0.24199991E+01, -0.43699999E+01, -0.39399996E+01, -0.60799999E+01, + -0.44899998E+01, -0.45000000E+01, -0.31399994E+01, -0.29299994E+01, -0.10399990E+01, + -0.13599997E+01, 0.69000000E+00, 0.20999998E+00, 0.21099997E+01, 0.13299990E+01, + 0.32900000E+01, 0.24599991E+01, 0.42999992E+01, 0.33199997E+01, 0.47899990E+01, + 0.36199999E+01, 0.49699993E+01, 0.36399994E+01, 0.46299992E+01, 0.30699997E+01, + 0.40599995E+01, 0.24899998E+01, 0.32999992E+01, 0.14599991E+01, 0.20599995E+01, + 0.50999999E+00, 0.73999995E+00, -0.11799994E+01, -0.12599993E+01, -0.35399990E+01, + -0.39699993E+01, -0.52599993E+01, -0.41799994E+01, -0.37099991E+01, -0.20999994E+01, + -0.16999998E+01, -0.79999983E-01, -0.17999995E+00, 0.94000000E+00, 0.26999998E+00, + 0.11299992E+01, 0.79999983E-01, 0.90999997E+00, -0.30999994E+00, 0.48999995E+00, + -0.77999997E+00, 0.79999983E-01, -0.11499996E+01, -0.22999996E+00, -0.14099998E+01, + -0.41999996E+00, -0.15499992E+01, -0.54999995E+00, -0.16599998E+01, -0.65999997E+00, + -0.17299995E+01, -0.75000000E+00, -0.17399998E+01, -0.77999997E+00, -0.16899996E+01, + -0.77999997E+00, -0.15999994E+01, -0.75000000E+00, -0.14599991E+01, -0.66999996E+00, + -0.12599993E+01, -0.50999999E+00, -0.10399990E+01, -0.52999997E+00, -0.18399992E+01, + -0.24199991E+01, -0.45199995E+01, -0.47599993E+01, -0.63299990E+01, -0.67599993E+01, + -0.78099995E+01, -0.57999992E+01, -0.53699999E+01, -0.36299992E+01, -0.33499994E+01, + -0.17500000E+01, -0.18799992E+01, -0.60999995E+00, -0.89999998E+00, 0.89999974E-01, + -0.31999993E+00, 0.54999995E+00, -0.13000000E+00, 0.69999999E+00, -0.59999999E-01, + 0.48999995E+00, -0.19999999E+00, 0.39999998E+00, -0.21999997E+00, 0.35999995E+00, + -0.89999974E-01, 0.57999998E+00, 0.11999995E+00, 0.75000000E+00, 0.14999998E+00, + 0.69999999E+00, 0.16999996E+00, 0.11099997E+01, 0.88999999E+00, 0.18499994E+01, + 0.16199999E+01, 0.25399990E+01, 0.22899990E+01, 0.31999998E+01, 0.29099998E+01, + 0.38399992E+01, 0.35299997E+01, 0.44799995E+01, 0.41499996E+01, 0.51199999E+01, + 0.47799997E+01, 0.57500000E+01, 0.53899994E+01, 0.63099995E+01, 0.59099998E+01, + 0.68699999E+01, 0.63299990E+01, 0.71299992E+01, 0.66099997E+01, 0.72999992E+01, + 0.63099995E+01, 0.62699995E+01, 0.48299999E+01, 0.44899998E+01, 0.28499994E+01, + 0.23199997E+01, 0.57999998E+00, -0.10999995E+00, -0.97999996E+00, 0.80999994E+00, + 0.17699995E+01, 0.33699999E+01, 0.41299992E+01, 0.55999994E+01, 0.61499996E+01, + 0.72899990E+01, 0.73499994E+01, 0.79499998E+01, 0.76699991E+01, 0.81599998E+01, + 0.78299990E+01, 0.83099995E+01, 0.80099993E+01, 0.85299997E+01, 0.82699995E+01 + }; + if ( N > 130 ) G4Exception( " G4BertiniEvaporationChannel: shell correction for protons called with too large N " ); + return table[ N-1 ]*MeV; +} + diff --git a/source/processes/electromagnetic/integral/GNUmakefile b/source/processes/hadronic/models/cascade/utils/GNUmakefile similarity index 53% rename from source/processes/electromagnetic/integral/GNUmakefile rename to source/processes/hadronic/models/cascade/utils/GNUmakefile index 21470da6dc..8e1afbc715 100644 --- a/source/processes/electromagnetic/integral/GNUmakefile +++ b/source/processes/hadronic/models/cascade/utils/GNUmakefile @@ -1,12 +1,12 @@ -# $Id: GNUmakefile,v 1.1 2001/03/05 10:55:19 maire Exp $ -# -------------------------------------------------------------------- -# GNUmakefile for electromagnetic sub-library. John Allison, 25/6/98. -# -------------------------------------------------------------------- +# $Id: GNUmakefile,v 1.2 2001/11/16 14:22:37 hpw Exp $ +# ----------------------------------------------------------- +# GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96. +# ----------------------------------------------------------- -name := G4integral +name := G4hadronic_hetcpp_utils ifndef G4INSTALL - G4INSTALL = ../../../.. + G4INSTALL = ../../../../../.. endif include $(G4INSTALL)/config/architecture.gmk @@ -14,24 +14,19 @@ include $(G4INSTALL)/config/architecture.gmk CPPFLAGS += -I$(G4BASE)/global/management/include \ -I$(G4BASE)/global/HEPRandom/include \ -I$(G4BASE)/global/HEPGeometry/include \ - -I$(G4BASE)/geometry/management/include \ - -I$(G4BASE)/geometry/magneticfield/include \ - -I$(G4BASE)/geometry/volumes/include \ -I$(G4BASE)/track/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/management/include \ -I$(G4BASE)/processes/management/include \ - -I$(G4BASE)/processes/electromagnetic/utils/include \ - -I$(G4BASE)/processes/electromagnetic/standard/include \ + -I$(G4BASE)/processes/hadronic/management/include/ \ + -I$(G4BASE)/processes/hadronic/util/include \ + -I$(G4BASE)/processes/hadronic/cross_sections/include/ \ -I$(G4BASE)/particles/management/include \ - -I$(G4BASE)/particles/bosons/include \ -I$(G4BASE)/particles/leptons/include \ - -I$(G4BASE)/particles/hadrons/barions/include \ + -I$(G4BASE)/particles/bosons/include \ -I$(G4BASE)/particles/hadrons/mesons/include \ + -I$(G4BASE)/particles/hadrons/barions/include \ -I$(G4BASE)/particles/hadrons/ions/include \ - -I$(G4BASE)/intercoms/include \ - -I$(G4BASE)/materials/include - + -I$(G4BASE)/materials/include + include $(G4INSTALL)/config/common.gmk - -CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS)) -CXXFLAGS_WITHOUT_O := $(filter-out +O% , $(CXXFLAGS_WITHOUT_O)) - diff --git a/source/processes/hadronic/models/cascade/utils/include/G4LayeredNucleus.hh b/source/processes/hadronic/models/cascade/utils/include/G4LayeredNucleus.hh new file mode 100644 index 0000000000..cbcbc87721 --- /dev/null +++ b/source/processes/hadronic/models/cascade/utils/include/G4LayeredNucleus.hh @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// original class G4Nucleus by H.P. Wellisch +// modified by J.L. Chuma, TRIUMF, 19-Nov-1996 +// last modified: 27-Mar-1997 +// Chr. Volcker, 10-Nov-1997: new methods and class variables. +// M.G. Pia, 2 Oct 1998: modified GetFermiMomentum (original design was +// the source of memory leaks) +// This class G4LayeredNucleus by T. Lampen 14.6.2000 + + +#ifndef G4LayeredNucleus_h +#define G4LayeredNucleus_h 1 + +#include "G4Nucleus.hh" + +class G4LayeredNucleus : public G4Nucleus +{ +public: + + G4LayeredNucleus() : G4Nucleus() + { + } + + G4LayeredNucleus( const G4double A, const G4double Z ) : G4Nucleus ( A, Z ) + { + } + + G4LayeredNucleus( const G4Material *aMaterial ) : G4Nucleus ( aMaterial ) + { + } + + G4ThreeVector GetMomentum(); + void SetMomentum(const G4ThreeVector& mom); + +private: + + G4ThreeVector momentumVector; + +}; + +#endif + diff --git a/source/visualization/management/src/G4VisCommandsCamera.cc b/source/processes/hadronic/models/cascade/utils/src/G4LayeredNucleus.cc similarity index 58% rename from source/visualization/management/src/G4VisCommandsCamera.cc rename to source/processes/hadronic/models/cascade/utils/src/G4LayeredNucleus.cc index 1064874a8e..44b885d1a4 100644 --- a/source/visualization/management/src/G4VisCommandsCamera.cc +++ b/source/processes/hadronic/models/cascade/utils/src/G4LayeredNucleus.cc @@ -21,35 +21,36 @@ // ******************************************************************** // // -// $Id: G4VisCommandsCamera.cc,v 1.7.4.1 2001/06/28 19:16:15 gunter Exp $ -// GEANT4 tag $Name: $ // -// +// Modified version of the G4Nucleus class by T. Lampen, HIP, June 2000 + // original G4Nucleusby H.P. Wellisch + // modified by J.L. Chuma, TRIUMF, 19-Nov-1996 + // last modified: 27-Mar-1997 + // J.P.Wellisch: 23-Apr-97: minor simplifications + // modified by J.L.Chuma 24-Jul-97 to set the total momentum in Cinema and + // EvaporationEffects + // modified by J.L.Chuma 21-Oct-97 put abs() around the totalE^2-mass^2 + // in calculation of total momentum in + // Cinema and EvaporationEffects + // Chr. Volcker, 10-Nov-1997: new methods and class variables. + // HPW added utilities for low energy neutron transport. (12.04.1998) + // M.G. Pia, 2 Oct 1998: modified GetFermiMomentum to avoid memory leaks + +#include "G4LayeredNucleus.hh" +#include "Randomize.hh" -#include "G4VisCommandsCamera.hh" - -#include "G4UnitsTable.hh" - -void G4VisCommandCameraReset::SetValue () { - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - const G4Scene* pScene = pVMan -> GetCurrentScene (); - G4ViewParameters& vp = pVMan -> SetCurrentViewParameters (); - vp.SetCurrentTargetPoint (G4Point3D()); - vp.SetZoomFactor (1.); - vp.SetDolly (0.); - vp.SetViewpointDirection (G4Vector3D (0., 0., 1.)); - vp.SetUpVector (G4Vector3D (0., 1., 0.)); - G4cout << "Target point reset to centre of scene, (" - << G4BestUnit (pScene -> GetStandardTargetPoint (), "Length") - << ")"; - G4cout << "\nZoom factor reset to 1."; - G4cout << "\nDolly distance reset to 0."; - G4cout << "\nViewpoint direction reset to +z."; - G4cout << "\nUp vector reset to +y."; - G4cout << G4endl; - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - } +G4ThreeVector G4LayeredNucleus::GetMomentum() +{ + return momentumVector; } + + +void G4LayeredNucleus::SetMomentum( const G4ThreeVector& mom ) + { + momentumVector = mom; + } + + + +/* end of file */ + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/GNUmakefile b/source/processes/hadronic/models/chiral_inv_phase_space/GNUmakefile new file mode 100644 index 0000000000..07c7440ce1 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/GNUmakefile @@ -0,0 +1,18 @@ +# -------------------------------------------------------------- +# GNUmakefile for chips library. HPW 20-Nov-99 +# -------------------------------------------------------------- + +name := G4hadronic_chips + +SUBDIRS = body +SUBDIRS += interface + +SUBLIBS = G4hadronic_body_ci +SUBLIBS += G4hadronic_interface_ci + +ifndef G4INSTALL + G4INSTALL = ../../../../.. +endif + + +include $(G4INSTALL)/config/globlib.gmk diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/GNUmakefile b/source/processes/hadronic/models/chiral_inv_phase_space/body/GNUmakefile new file mode 100644 index 0000000000..f9d504134b --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/GNUmakefile @@ -0,0 +1,32 @@ +# ----------------------------------------------------------- +# GNUmakefile for chips granular library. HPW 20-Nov-99 +# ----------------------------------------------------------- + +name := G4hadronic_body_ci + +ifndef G4INSTALL + G4INSTALL = ../../../../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk + +CPPFLAGS += -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/HEPRandom/include \ + -I$(G4BASE)/global/HEPGeometry/include \ + -I$(G4BASE)/track/include \ + -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/management/include \ + -I$(G4BASE)/processes/management/include \ + -I$(G4BASE)/processes/hadronic/management/include/ \ + -I$(G4BASE)/processes/hadronic/util/include \ + -I$(G4BASE)/processes/hadronic/cross_sections/include/ \ + -I$(G4BASE)/processes/hadronic/models/generator/util/include \ + -I$(G4BASE)/particles/management/include \ + -I$(G4BASE)/particles/leptons/include \ + -I$(G4BASE)/particles/bosons/include \ + -I$(G4BASE)/particles/hadrons/mesons/include \ + -I$(G4BASE)/particles/hadrons/barions/include \ + -I$(G4BASE)/particles/hadrons/ions/include \ + -I$(G4BASE)/materials/include + +include $(G4INSTALL)/config/common.gmk diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Chips.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Chips.hh new file mode 100644 index 0000000000..d158725fd8 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Chips.hh @@ -0,0 +1,47 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4Chips.hh,v 1.10 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4Chips ---------------- +// by Mikhail Kossov, September 1999. +// namespace for constants of the CHIPS Model +// ------------------------------------------------------------ + +#ifndef G4Chips_h +#define G4Chips_h 1 + +// >>> D O E S N O T W O R K - N O T U S E D N O W <<< +// Instead the "static const G4double" are used in the member functions + +namespace G4Chips +{ + // To have 3 quarks in Nucleon Temperature should be < M_N/4 (234 MeV) + const G4double Temperature = 200.; // Temperature of Quasmon (constant of the model) +} + +// Now the same constants or types should be made global (if it is necessary) +// +const double& G4Chips::Temperature Temperature; +// typedef G4Chips::NewType Newtype; diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCHIPSWorld.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCHIPSWorld.hh new file mode 100755 index 0000000000..505fd98252 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCHIPSWorld.hh @@ -0,0 +1,84 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QCHIPSWorld.hh,v 1.10 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QCHIPSWorld ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for CHIPS World of particles in CHIPS Model +// ------------------------------------------------------------ + +#ifndef G4QCHIPSWorld_h +#define G4QCHIPSWorld_h 1 + +#include "g4std/iostream" +#include "globals.hh" +#include "G4QParticleVector.hh" + +class G4QCHIPSWorld +{ +public: + // Constructors + G4QCHIPSWorld(G4int nOfParts = 0); // Construction with N particles + G4QCHIPSWorld(const G4QCHIPSWorld& right); // Copy Constructor by value + G4QCHIPSWorld(G4QCHIPSWorld* right); // Copy Constructor by pointer + + ~G4QCHIPSWorld(); // Destructor + + // Overloaded Operators + const G4QCHIPSWorld& operator=(const G4QCHIPSWorld& right); + + // Selectors + G4QParticle* GetQParticle(G4int PDG) const; // Get pointer to particle in CHIPS World + G4QParticle* GetQParticle(G4QPDGCode QPDG) const; // Get pointer to particle in CHIPS World + G4QParticle* GetQParticle(G4QPDGCode* pQP) const; // Get pointer to particle in CHIPS World + G4int GetQPEntries() const; // Get a#of particles in CHIPS World + +private: + G4QParticleVector* InitCHIPSWorld(G4int nOfParts);// nOfParts<0 kills the CHIPS World @@?? + +// Body +private: + G4QParticleVector* qWorld; // Pointer to the CHIPS World (C++ Hip) +}; + + +inline G4QParticle* G4QCHIPSWorld::GetQParticle(G4int PDG) const +{ + return (*qWorld)[G4QPDGCode(PDG).GetQCode()]; +} +inline G4QParticle* G4QCHIPSWorld::GetQParticle(G4QPDGCode QPDG) const +{ + return (*qWorld)[QPDG.GetQCode()]; +} +inline G4QParticle* G4QCHIPSWorld::GetQParticle(G4QPDGCode* pQP) const +{ + return (*qWorld)[pQP->GetQCode()]; +} +inline G4int G4QCHIPSWorld::GetQPEntries() const {return (*qWorld).size();} + +#endif + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidate.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidate.hh new file mode 100644 index 0000000000..09ffad84de --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidate.hh @@ -0,0 +1,136 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QCandidate.hh,v 1.13 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QCandidate ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for Quasmon initiated Candidates used by the CHIPS Model +// ---------------------------------------------------------------------- + +#ifndef G4QCandidate_h +#define G4QCandidate_h 1 + +#include "G4QHadron.hh" +#include "G4QParentClusterVector.hh" +#include "g4std/algorithm" + +class G4QCandidate : public G4QHadron +{ +public: + G4QCandidate(); // Default Constructor + G4QCandidate(G4int PDGcode); // Constructor by PDG Code + G4QCandidate(const G4QCandidate& right); // Copy Constructor by value + G4QCandidate(G4QCandidate* right); // Copy Constructor by pointer + ~G4QCandidate(); // Destructor + // Overloaded Operators + const G4QCandidate& operator=(const G4QCandidate& right); + G4int operator==(const G4QCandidate &right) const; + G4int operator!=(const G4QCandidate &right) const; + // Specific Selectors + G4QParentCluster* TakeParClust(G4int nPC);// Get pointer to Parent Cluster from ParClastVector + G4int GetPClustEntries() const; // Get a number of Parent Clusters in ParClastVector + G4bool GetPossibility() const; // Get possibility(true)/forbiding(false) to be a hadr./fragm. + G4bool GetParPossibility() const; // Get possibility(true)/forbiding(false) to be a parent + G4double GetKMin() const; // Get k-minimal for the candidate + G4double GetEBMass() const; // Get bound mass in respect to Environment + G4double GetNBMass() const; // Get bound mass in respect to TotalNucleus + G4double GetDenseProbability() const; // Get dense-probability for the candidate + G4double GetPreProbability() const; // Get pre-probability for the candidate + G4double GetRelProbability() const; // Get the relative probility of hadronization + G4double GetIntegProbability() const; // Get integrated probability for randomization + G4double GetSecondRelProb() const; // Get 2nd relative probility of hadronization + G4double GetSecondIntProb() const; // Get 2nd integ. probability for randomization + // Specific Modifiers + void ClearParClustVector(); // Clear the Parent Claster Vector of the Candidate + void FillPClustVec(G4QParentCluster* pCl);// Fill pointer to Parent Cluster in ParClastVector + void SetPossibility(G4bool choice); // Set possibility(true)/forbiding(false) to be a hadr./fragm. + void SetParPossibility(G4bool choice); // Set possibility(true)/forbiding(false) to be a parent + void SetKMin(G4double kmin); // Set k-minimal for the candidate + void SetDenseProbability(G4double prep); // Set dense-probability for the candidate + void SetPreProbability(G4double prep); // Set pre-probability for the candidate + void SetRelProbability(G4double relP); // Set the relative probility of hadronization + void SetIntegProbability(G4double intP); // Set integrated probability for randomization + void SetSecondRelProb(G4double relP); // Set 2nd relative probility of hadronization + void SetSecondIntProb(G4double intP); // Set 2nd integr. probability for randomization + void SetEBMass(G4double newMass); // Set mass bounded to Environment + void SetNBMass(G4double newMass); // Set mass bounded to Total Nucleus + +// Body +private: + G4bool possible; // permission/forbiding preFlag to be a hadron/fragment + G4bool parPossible; // permission/forbiding preFlag to be a parent + G4double kMin; // mu^2/2M (Q-case), ~BindingEnergy (Clust.-case) + G4double denseProbability; // a#of clusters of the type in dense region + G4double preProbability; // a#of clusters of the type or Q-suppression + G4double relativeProbability; // relative probability of hadronization + G4double integralProbability; // integrated probability of randomization + G4double secondRelProbability; // spare relative probability of hadronization + G4double secondIntProbability; // spare integrated probability of randomization + G4QParentClusterVector thePClusters; // vector of parent clusters for candid.-fragment + G4double EBMass; // Bound Mass of the cluster in the Environment + G4double NBMass; // Bound Mass of the cluster in the Total Nucleus +}; + +inline G4int G4QCandidate::operator==(const G4QCandidate &right) const {return this==&right;} +inline G4int G4QCandidate::operator!=(const G4QCandidate &right) const {return this!=&right;} + +inline G4QParentCluster* G4QCandidate::TakeParClust(G4int nPC) {return thePClusters[nPC];} +inline G4int G4QCandidate::GetPClustEntries() const {return thePClusters.size();} +inline G4bool G4QCandidate::GetPossibility() const {return possible;} +inline G4bool G4QCandidate::GetParPossibility() const {return parPossible;} +inline G4double G4QCandidate::GetKMin() const {return kMin;} +inline G4double G4QCandidate::GetEBMass() const {return EBMass;} +inline G4double G4QCandidate::GetNBMass() const {return NBMass;} +inline G4double G4QCandidate::GetDenseProbability() const {return denseProbability;} +inline G4double G4QCandidate::GetPreProbability() const {return preProbability;} +inline G4double G4QCandidate::GetRelProbability() const {return relativeProbability;} +inline G4double G4QCandidate::GetIntegProbability() const {return integralProbability;} +inline G4double G4QCandidate::GetSecondRelProb() const {return secondRelProbability;} +inline G4double G4QCandidate::GetSecondIntProb() const {return secondIntProbability;} + +inline void G4QCandidate::ClearParClustVector() +{ + G4std::for_each(thePClusters.begin(), thePClusters.end(), DeleteQParentCluster()); + thePClusters.clear(); +} + +inline void G4QCandidate::FillPClustVec(G4QParentCluster* pCl) +{ + G4QParentCluster* npCl = new G4QParentCluster(pCl); + thePClusters.push_back(npCl); // Fill new instance of PCl +} +inline void G4QCandidate::SetPossibility(G4bool choice) {possible=choice;} +inline void G4QCandidate::SetParPossibility(G4bool choice) {parPossible=choice;} +inline void G4QCandidate::SetKMin(G4double kmin) {kMin=kmin;} +inline void G4QCandidate::SetDenseProbability(G4double prep) {denseProbability=prep;} +inline void G4QCandidate::SetPreProbability(G4double prep) {preProbability=prep;} +inline void G4QCandidate::SetRelProbability(G4double relP) {relativeProbability=relP;} +inline void G4QCandidate::SetIntegProbability(G4double intP) {integralProbability=intP;} +inline void G4QCandidate::SetSecondRelProb(G4double relP) {secondRelProbability=relP;} +inline void G4QCandidate::SetSecondIntProb(G4double intP) {secondIntProbability=intP;} +inline void G4QCandidate::SetEBMass(G4double newM) {EBMass=newM;} +inline void G4QCandidate::SetNBMass(G4double newM) {NBMass=newM;} + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidateVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidateVector.hh new file mode 100644 index 0000000000..b368b7cc5a --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QCandidateVector.hh @@ -0,0 +1,41 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QCandidateVector.hh,v 1.11 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QCandidateVector ---------------- +// by Mikhail Kossov, Sept 1999. +// Type defenition for Quasmon initiated Candidates used by CHIPS model +// ----------------------------------------------------------------- + +#ifndef G4QCandidateVector_h +#define G4QCandidateVector_h 1 + +#include "G4QCandidate.hh" +#include "g4std/vector" + +typedef G4std::vector G4QCandidateVector; +struct DeleteQCandidate{ void operator()(G4QCandidate * aQ){delete aQ;}}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QChipolino.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QChipolino.hh new file mode 100755 index 0000000000..3b52e06ea9 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QChipolino.hh @@ -0,0 +1,112 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QChipolino.hh,v 1.9 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QChipolino ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for Chipolino (Double Hadron) in CHIPS Model +// ---------------------------------------------------------- + +#ifndef G4QChipolino_h +#define G4QChipolino_h 1 + +#include "globals.hh" +//#include "G4QContent.hh" +#include "G4QPDGCode.hh" + +class G4QChipolino +{ +public: + // Constructors + G4QChipolino(); // Default Constructor + G4QChipolino(G4QContent& QContent); // Construction by Quark Content + G4QChipolino(const G4QChipolino& right); // Copy constructor by value + G4QChipolino(G4QChipolino* right); // Copy constructor by pointer + + ~G4QChipolino(); // Destructor + + // Operators + const G4QChipolino& operator=(const G4QChipolino& right); + G4int operator==(const G4QChipolino& right) const; + G4int operator!=(const G4QChipolino& right) const; + + // Selectors + G4double GetMass(); // Get mass of the Chipolino (MinDoubleHadronMass) + G4double GetMass2(); // Get mass^2 of the Chipolino + G4QPDGCode GetQPDG1(); // Get 1-st QPDG of the Chipolino + G4QPDGCode GetQPDG2(); // Get 2-nd QPDG of the Chipolino + G4QContent GetQContent() const; // Get private quark content of the Chipolino + G4QContent GetQContent1() const; // Get 1-st quark content of the Chipolino + G4QContent GetQContent2() const; // Get 2-st quark content of the Chipolino + + // Modifiers + void SetHadronQPDG(const G4QPDGCode& QPDG); // Set QPDG of 1-st Hadron of the Chipolino + void SetHadronPDGCode(const G4int& PDGCode);// Set PDGCode of 1-st Hadron of the Chipolino + void SetHadronQCont(const G4QContent& QC); // Set QContent of 1-st Hadron of the Chipolino + +private: + G4QPDGCode theQPDG1; // QPDG of the 1-st Hadron of the Chipolino + G4QPDGCode theQPDG2; // QPDG of the 2-nd Hadron of the Chipolino + G4QContent theQCont; // Quark Content of the whole Chipolino + G4QContent theQCont1; // Quark Content of the 1-st Hadron of Chipolino + G4double minM; // Minimal Mass of Chipolino +}; + +G4std::ostream& operator<<(G4std::ostream& lhs, G4QChipolino& rhs); +//G4std::ostream& operator<<(G4std::ostream& lhs, const G4QChipolino& rhs); +inline G4int G4QChipolino::operator==(const G4QChipolino& right) const {return this==&right;} +inline G4int G4QChipolino::operator!=(const G4QChipolino& right) const {return this!=&right;} + +inline G4double G4QChipolino::GetMass() {return minM;} +inline G4double G4QChipolino::GetMass2() {return minM*minM;} +inline G4QPDGCode G4QChipolino::GetQPDG1() {return theQPDG1;} +inline G4QPDGCode G4QChipolino::GetQPDG2() {return theQPDG2;} +inline G4QContent G4QChipolino::GetQContent1() const {return theQCont1;} +inline G4QContent G4QChipolino::GetQContent2() const {return theQCont - theQCont1;} +inline G4QContent G4QChipolino::GetQContent() const {return theQCont;} + + +inline void G4QChipolino::SetHadronQPDG(const G4QPDGCode& newQPDG) +{ + theQPDG1 = newQPDG; + theQCont1 = theQPDG1.GetQuarkContent(); + G4QContent theQCont2 = theQCont - theQCont1; + theQPDG2 = G4QPDGCode(theQCont2.GetSPDGCode()); +} + +inline void G4QChipolino::SetHadronPDGCode(const G4int& PDGCode) +{ + theQPDG1.SetPDGCode(PDGCode); + SetHadronQPDG(theQPDG1); +} +inline void G4QChipolino::SetHadronQCont(const G4QContent& QCont) + {SetHadronPDGCode(QCont.GetSPDGCode());} + +#endif + + + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QContent.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QContent.hh new file mode 100644 index 0000000000..b949499e21 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QContent.hh @@ -0,0 +1,317 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QContent.hh,v 1.14 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QContent ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for Quasmon initiated Contents used by the CHIPS Model +// ---------------------------------------------------------------------- + +#ifndef G4QContent_h +#define G4QContent_h 1 + +#include "g4std/iostream" +#include "globals.hh" +#include "Randomize.hh" + +class G4QContent +{ +public: + G4QContent(G4int d=0, G4int u=0, G4int s=0, G4int ad=0, G4int au=0, G4int as=0); + G4QContent(const G4QContent& rhs); // Copy constructor by value + G4QContent(G4QContent* rhs); // Copy constructor by pointer + + ~G4QContent(); + + // Overloaded operators + const G4QContent& operator=(const G4QContent& rhs); + G4int operator==(const G4QContent& rhs) const; + G4int operator!=(const G4QContent& rhs) const; + G4QContent operator+=(G4QContent& rhs); + G4QContent operator-=(G4QContent& rhs); + G4QContent operator*=(G4int& rhs); + G4QContent operator+=(const G4QContent& rhs); + G4QContent operator-=(const G4QContent& rhs); + G4QContent operator*=(const G4int& rhs); + + // Selectors + G4int GetCharge() const; + G4int GetBaryonNumber() const; + G4int GetStrangeness() const; + G4int GetSPDGCode() const; + G4int GetZNSPDGCode() const; + G4int NOfCombinations(const G4QContent& rhs) const; //@@ can be an "operator/" + G4int GetQ() const; + G4int GetAQ() const; + G4int GetTot() const; + G4bool CheckNegative() const; + + G4int GetP() const; // A#of protons + G4int GetN() const; // A#of neutrons + G4int GetL() const; // A#of lambdas + G4int GetAP() const; // A#of anti-protons + G4int GetAN() const; // A#of anti-neutrons + G4int GetAL() const; // A#of anti-lambdas + + G4int GetD() const; // A#of d-quarks + G4int GetU() const; // A#of u-quarks + G4int GetS() const; // A#of s-quarks + G4int GetAD() const; // A#of anti-d-quarks + G4int GetAU() const; // A#of anti-u-quarks + G4int GetAS() const; // A#of anti-s-quarks + + G4int GetNetD() const; // A net#of d-quarks + G4int GetNetU() const; // A net#of u-quarks + G4int GetNetS() const; // A net#of s-quarks + G4int GetNetAD() const; // A net#of anti-d-quarks + G4int GetNetAU() const; // A net#of anti-u-quarks + G4int GetNetAS() const; // A net#of anti-s-quarks + + G4int GetDD() const; // A#of dd-di-quarks + G4int GetUU() const; // A#of uu-di-quarks + G4int GetSS() const; // A#of ss-di-quarks + G4int GetUD() const; // A#of ud-di-quarks + G4int GetDS() const; // A#of ds-di-quarks + G4int GetUS() const; // A#of us-di-quarks + G4int GetADAD() const; // A#of anti-dd-di-quarks + G4int GetAUAU() const; // A#of anti-uu-di-quarks + G4int GetASAS() const; // A#of anti-ss-di-quarks + G4int GetAUAD() const; // A#of anti-ud-di-quarks + G4int GetADAS() const; // A#of anti-ds-di-quarks + G4int GetAUAS() const; // A#of anti-us-di-quarks + + // Modifiers + void Anti(); + G4QContent IndQ (G4int ind=0); + G4QContent IndAQ(G4int ind=0); + G4QContent SplitChipo(G4double mQ); + G4bool SubtractHadron(G4QContent h); + G4bool SubtractPi0(); + G4bool SubtractPion(); + G4bool SubtractKaon(G4double mQ); + + void SetD (G4int n=0); + void SetU (G4int n=0); + void SetS (G4int n=0); + void SetAD(G4int n=0); + void SetAU(G4int n=0); + void SetAS(G4int n=0); + + void IncD (G4int n=1); + void IncU (G4int n=1); + void IncS (G4int n=1); + void IncAD(G4int n=1); + void IncAU(G4int n=1); + void IncAS(G4int n=1); + void IncQAQ(const G4int& nQAQ=1, const G4double& sProb = 1.); + + void DecD (G4int n=1); + void DecU (G4int n=1); + void DecS (G4int n=1); + void DecAD(G4int n=1); + void DecAU(G4int n=1); + void DecAS(G4int n=1); + G4int DecQAQ(const G4int& nQAQ=1); + +private: + G4QContent GetThis() const; + + // Body +private: // C S + G4int nD; // a#of d-quarks (-1/3)( 0) + G4int nU; // a#of u-quarks (+2/3)( 0) + G4int nS; // a#of s-quarks (-1/3)(+1) + G4int nAD; // a#of anti-d-quarks (+1/3)( 0) + G4int nAU; // a#of anti-u-quarks (-2/3)( 0) + G4int nAS; // a#of anti-s-quarks (+1/3)(-1) +}; + +// Not member operators +G4std::ostream& operator<<(G4std::ostream& lhs, G4QContent& rhs); +G4std::ostream& operator<<(G4std::ostream& lhs, const G4QContent& rhs); +G4QContent operator+(const G4QContent& lhs, const G4QContent& rhs); +G4QContent operator-(const G4QContent& lhs, const G4QContent& rhs); +G4QContent operator*(const G4QContent& lhs, const G4int& rhs); +G4QContent operator*(const G4int& lhs, const G4QContent& rhs); +//G4int operator/(const G4QContent& lhs, const G4QContent& rhs); // Combinations +// Not member functions +//---------------------------------------------------------------------------------------- + +inline G4int G4QContent::operator==(const G4QContent& rhs) const {return this==&rhs;} +inline G4int G4QContent::operator!=(const G4QContent& rhs) const {return this!=&rhs;} +inline G4int G4QContent::GetQ() const {return nU+nD+nS;} +inline G4int G4QContent::GetAQ() const {return nAU+nAD+nAS;} +inline G4int G4QContent::GetTot() const {return nU+nD+nS+nAU+nAD+nAS;} +inline G4int G4QContent::GetStrangeness() const {return nS-nAS;} +// @@ Temporary for tests +inline G4bool G4QContent::CheckNegative() const{return nU<0||nD<0||nS<0||nAU<0||nAD<0||nAS<0;} + +inline G4int G4QContent::GetU() const{return nU;} +inline G4int G4QContent::GetD() const{return nD;} +inline G4int G4QContent::GetS() const{return nS;} +inline G4int G4QContent::GetAU() const{return nAU;} +inline G4int G4QContent::GetAD() const{return nAD;} +inline G4int G4QContent::GetAS() const{return nAS;} + +inline G4int G4QContent::GetNetU() const{return nU-nAU;} +inline G4int G4QContent::GetNetD() const{return nD-nAD;} +inline G4int G4QContent::GetNetS() const{return nS-nAS;} +inline G4int G4QContent::GetNetAU() const{return nAU-nU;} +inline G4int G4QContent::GetNetAD() const{return nAD-nD;} +inline G4int G4QContent::GetNetAS() const{return nAS-nS;} + +inline G4int G4QContent::GetUU() const{return nU*(nU-1)/2;} +inline G4int G4QContent::GetDD() const{return nD*(nD-1)/2;} +inline G4int G4QContent::GetSS() const{return nS*(nS-1)/2;} +inline G4int G4QContent::GetUD() const{return nU*nD;} +inline G4int G4QContent::GetUS() const{return nU*nS;} +inline G4int G4QContent::GetDS() const{return nD*nS;} +inline G4int G4QContent::GetAUAU() const{return nAU*(nAU-1)/2;} +inline G4int G4QContent::GetADAD() const{return nAD*(nAD-1)/2;} +inline G4int G4QContent::GetASAS() const{return nAS*(nAS-1)/2;} +inline G4int G4QContent::GetAUAD() const{return nAU*nAD;} +inline G4int G4QContent::GetAUAS() const{return nAU*nAS;} +inline G4int G4QContent::GetADAS() const{return nAD*nAS;} + +// Convert particle to anti-particle +inline G4int G4QContent::GetZNSPDGCode() const +{ + G4int kD=nD-nAD; // A net # of d quarks + G4int kU=nU-nAU; // A net # of u quarks + G4int kS=nS-nAS; // A net # of s quarks + // if(kD>=0&&kU>=0&&kS>=0&&kD+kU+kS>0) // => "Normal nucleus" case + //{ + // G4int b=(kU+kD-kS-kS)/3; + // G4int d=kU-kD; + // G4int n=(b-d)/2; + // return 90000000+1000*(1000*kS+n+d)+n; + //} + //else if(kD<=0&&kU<=0&&kS<=0&&kD+kU+kS<0) // => "Normal anti-nucleus" case + //{ + // G4int b=(kS+kS-kD-kU)/3; + // G4int d=kD-kU; + // G4int n=(b-d)/2; + // return -90000000-1000*(1000*kS+n+d)-n; // @@ double notation for anti-nuclei + //} + //else + //{ + G4int b=(kU+kD-kS-kS)/3; // Baryon number-n*{LAMBDA=kS) + G4int d=kU-kD; // Isotopic shift + G4int n=(b-d)/2; // A#of neutrons + return 90000000+1000*(1000*kS+n+d)+n; + //} + //return 0; +} + +// Convert particle to anti-particle +inline void G4QContent::Anti() +{ + G4int r=nD; + nD = nAD; + nAD= r; + r = nU; + nU = nAU; + nAU= r; + r = nS; + nS = nAS; + nAS= r; +} + +// Add Quark Content +inline G4QContent G4QContent::operator+=(const G4QContent& rhs) +// ======================================================= +{ + nD += rhs.nD; + nU += rhs.nU; + nS += rhs.nS; + nAD+= rhs.nAD; + nAU+= rhs.nAU; + nAS+= rhs.nAS; + return *this; +} + +// Add Quark Content +inline G4QContent G4QContent::operator+=(G4QContent& rhs) +// ======================================================= +{ + nD += rhs.nD; + nU += rhs.nU; + nS += rhs.nS; + nAD+= rhs.nAD; + nAU+= rhs.nAU; + nAS+= rhs.nAS; + return *this; +} + +// Multiply Quark Content by integer number +inline G4QContent G4QContent::operator*=(const G4int& rhs) +// =================================================== +{ + nU *= rhs; + nD *= rhs; + nS *= rhs; + nAU*= rhs; + nAD*= rhs; + nAS*= rhs; + return *this; +} + +// Multiply Quark Content by integer number +inline G4QContent G4QContent::operator*=(G4int& rhs) +// =================================================== +{ + nU *= rhs; + nD *= rhs; + nS *= rhs; + nAU*= rhs; + nAD*= rhs; + nAS*= rhs; + return *this; +} + +inline void G4QContent::SetU(G4int n) {nU=n;} +inline void G4QContent::SetD(G4int n) {nD=n;} +inline void G4QContent::SetS(G4int n) {nS=n;} +inline void G4QContent::SetAU(G4int n){nAU=n;} +inline void G4QContent::SetAD(G4int n){nAD=n;} +inline void G4QContent::SetAS(G4int n){nAS=n;} + +inline void G4QContent::IncU(G4int n) {nU+=n;} +inline void G4QContent::IncD(G4int n) {nD+=n;} +inline void G4QContent::IncS(G4int n) {nS+=n;} +inline void G4QContent::IncAU(G4int n){nAU+=n;} +inline void G4QContent::IncAD(G4int n){nAD+=n;} +inline void G4QContent::IncAS(G4int n){nAS+=n;} + +inline void G4QContent::DecU(G4int n) {nU-=n;} +inline void G4QContent::DecD(G4int n) {nD-=n;} +inline void G4QContent::DecS(G4int n) {nS-=n;} +inline void G4QContent::DecAU(G4int n){nAU-=n;} +inline void G4QContent::DecAD(G4int n){nAD-=n;} +inline void G4QContent::DecAS(G4int n){nAS-=n;} + +// Private member functions +inline G4QContent G4QContent::GetThis()const{return G4QContent(nD,nU,nS,nAD,nAU,nAS);} +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChan.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChan.hh new file mode 100755 index 0000000000..f5981f2c5a --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChan.hh @@ -0,0 +1,94 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QDecayChan.hh,v 1.9 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QDecayChan ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for Decay Channel definition in CHIPS Model +// ------------------------------------------------------------ + +#ifndef G4QDecayChan_h +#define G4QDecayChan_h 1 + +#include "g4std/iostream" +#include "globals.hh" +#include "G4QPDGCodeVector.hh" + +class G4QDecayChan +{ +public: + // Constructors + G4QDecayChan(); // Default Constructor + G4QDecayChan(G4QPDGCodeVector secHadr, G4double probLimit = 1.); // General Constructor + G4QDecayChan(G4double pLev, G4int PDG1, G4int PDG2, G4int PDG3=0); // Detailed Constructor + G4QDecayChan(const G4QDecayChan& right); // Copy Constructor by value + G4QDecayChan(G4QDecayChan* right); // Copy Constructor by pointer + + ~G4QDecayChan(); // Destructor + + // Operators + const G4QDecayChan& operator=(const G4QDecayChan& right); + G4int operator==(const G4QDecayChan& rhs) const; + G4int operator!=(const G4QDecayChan& rhs) const; + + // Selectors + G4double GetDecayChanLimit() const; // Get a Decay Channel Probability Limit + G4double GetMinMass() const; // Get a Minimum Mass for the Decay Channel + G4QPDGCodeVector GetVecOfSecHadrons(); // Get a Vector of secondary PDG-particles + + // Modifiers + void SetDecayChanLimit(G4double newDecChanLim);// Set a Decay Channel Probability Limit + void SetMinMass(G4double newMinMass); // Set a Minimum Mass for the Decay Channel + void SetVecOfSecHadrons(G4QPDGCodeVector hadV);// Set a Vector of secondary PDG-particles + + //private: + // Encapsulated functions + +private: + // the Body + G4double aDecayChanLimit; + G4double theMinMass; + G4QPDGCodeVector aVecOfSecHadrons; +}; + +// Not member operators +G4std::ostream& operator<<(G4std::ostream& lhs, G4QDecayChan& rhs); +//---------------------------------------------------------------------------------------- + +inline G4int G4QDecayChan::operator==(const G4QDecayChan& rhs) const {return this==&rhs;} +inline G4int G4QDecayChan::operator!=(const G4QDecayChan& rhs) const {return this!=&rhs;} + +inline G4double G4QDecayChan::GetDecayChanLimit() const {return aDecayChanLimit;} +inline G4double G4QDecayChan::GetMinMass() const {return theMinMass;} +inline G4QPDGCodeVector G4QDecayChan::GetVecOfSecHadrons() {return aVecOfSecHadrons;} + +inline void G4QDecayChan::SetDecayChanLimit(G4double DCL) {aDecayChanLimit=DCL;} +inline void G4QDecayChan::SetMinMass(G4double minMass) {theMinMass=minMass;} +inline void G4QDecayChan::SetVecOfSecHadrons(G4QPDGCodeVector VSH) {aVecOfSecHadrons=VSH;} + +#endif + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChanVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChanVector.hh new file mode 100755 index 0000000000..ed1a570eac --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QDecayChanVector.hh @@ -0,0 +1,41 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QDecayChanVector.hh,v 1.8 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QCandidateVector ---------------- +// by Mikhail Kossov, Sept 1999. +// Type defenition for Decay Channel Vector in CHIPS model +// -------------------------------------------------------------- + +#ifndef G4QDecayChanVector_h +#define G4QDecayChanVector_h 1 + +#include "G4QDecayChan.hh" +#include "g4std/vector" + +typedef G4std::vector G4QDecayChanVector; +struct DeleteQDecayChan{void operator()(G4QDecayChan *aQ){delete aQ;}}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh new file mode 100644 index 0000000000..3abd218014 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QEnvironment.hh @@ -0,0 +1,107 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QEnvironment.hh,v 1.9 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QEnvironment ---------------- +// by Mikhail Kossov, August 2000. +// header for Multy Quasmon Environment in the CHIPS Model +// ------------------------------------------------------------ + +#ifndef G4QEnvironment_h +#define G4QEnvironment_h 1 + +// Standard G4-headers +#include "G4QuasmonVector.hh" + +class G4QEnvironment +{ +public: + G4QEnvironment(const G4QHadronVector& projHadrons, const G4int targPDG); + G4QEnvironment(const G4QEnvironment& right); // copy QEnvironment by value + G4QEnvironment(G4QEnvironment* right); // copy QEnvironment by pointer + ~G4QEnvironment(); + + // Overloaded operators + const G4QEnvironment& operator=(const G4QEnvironment& right); + int operator==(const G4QEnvironment &right) const; + int operator!=(const G4QEnvironment &right) const; + + //Selectors + G4QNucleus GetEnvironment() const; + G4QuasmonVector* GetQuasmons(); + G4QHadronVector* GetQHadrons(); + G4QHadronVector* Fragment(); // Unresp. wrapper for HadronizeQEnvironment() + + // Static functions + static void SetParameters( G4double solAn=0.4, G4bool efFlag=false, G4double piThresh=141.4, + G4double mpisq=20000., G4double dinum=1880.); + // General functions + G4ThreeVector RndmDir(); // Randomize 3D direction (@@subst by libFunc) + +private: + G4QHadronVector HadronizeQEnvironment(); // Main HadronizationFunction used in Fragment + void CreateQuasmon(const G4QContent& projQC, const G4LorentzVector& proj4M); + void InitClustersVector(G4int maxC, G4int maxA); // Init.NucCclusters for 1st interact + void CleanUp(); // Makes theEnvironment=vacuum & kill Quasmons + void PrepareInteractionProbabilities(const G4QContent& projQC, G4double AP); + void EvaporateResidual(G4QHadron* evap, G4bool corFlag = false);// Final Evaporation + void DecayDibaryon(G4QHadron* dB); // Decay of any di-baryon (deuteron is kept) + void DecayThreeBaryon(G4QHadron* dB); // Decay of ppp, nnn or LLL states + void DecayAntiStrange(G4QHadron* dB); // Decay of the nucleus, containing K+/K0 + void DecayAlphaBar(G4QHadron* dB); // Decay of alpha+p or alpha+n states + void DecayAlphaDiN(G4QHadron* dB); // Decay of alpha+p+p states + void DecayAlphaAlpha(G4QHadron* dB); // Decay of alpha+alpha state + G4bool CheckGroundState(G4Quasmon* quasm, G4bool corFlag = false);// as G4Q for TotHadrV + G4bool DecayInEnvQ(G4Quasmon* quasm); // Use befor evaporation in PANIC case + +// Body +private: + // Static Parameters + static G4bool EnergyFlux; // Flag for Energy Flux use instead of Multy Quasmon + static G4double SolidAngle; // Part of Solid Angle to capture secondaries (@@A-dep) + static G4double PiPrThresh; // Pion Production Threshold for gammas + static G4double M2ShiftVir; // Shift for M2=-Q2=m_pi^2 of the virtual gamma + static G4double DiNuclMass; // Double Nucleon Mass for virtual normalization + // Output hadrons + G4QHadronVector theQHadrons; // Vector of generated secondary hadrons + // Internal working parameters + G4QCHIPSWorld theWorld; // the CHIPS World + G4int nBarClust; // Maximum barion number of clusters (Calc. @ Interaction) + G4double f2all; // Ratio of free nucleons to free+dense nucleons (do we need it in Quasmon?) + G4QuasmonVector theQuasmons; // Intermediate vector of Quasmons before fragmentation (***delete***) + G4QCandidateVector theQCandidates; // Vector of possible candidates to clusters (***delete***) + G4QNucleus theEnvironment; // Initial Nucleus & later Residual Nuclear Environment + G4LorentzVector tot4Mom; // Total 4-momentum in the reaction +}; + +inline int G4QEnvironment::operator==(const G4QEnvironment &right) const {return this == &right;} +inline int G4QEnvironment::operator!=(const G4QEnvironment &right) const {return this != &right;} +inline G4QNucleus G4QEnvironment::GetEnvironment() const {return theEnvironment;} +#endif + + + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh new file mode 100644 index 0000000000..eeb268b04c --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QHadron.hh @@ -0,0 +1,192 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QHadron.hh,v 1.15 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QHadron ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for Hadrons generated by the CHIPS Model +// ------------------------------------------------------ + +#ifndef G4QHadron_h +#define G4QHadron_h 1 + +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "G4LorentzVector.hh" +#include "Randomize.hh" +#include "G4QParticle.hh" + +class G4QHadron +{ +public: + // Constructors + G4QHadron(); // Default Constructor + G4QHadron(G4LorentzVector p); // Kinematical Constructor + G4QHadron(G4int PDGcode, G4LorentzVector p=G4LorentzVector(0.,0.,0.,0.));// CHIPS World Hadron + G4QHadron(G4QPDGCode QPDG, G4LorentzVector p=G4LorentzVector(0.,0.,0.,0.));// CHIPS World Had. + G4QHadron(G4QContent QC, G4LorentzVector p=G4LorentzVector(0.,0.,0.,0.));// QC defined Hadron + G4QHadron(G4int PDG, G4double m, G4QContent QC); // Constructor for a Chipolino or a Quasmon + G4QHadron(G4QPDGCode QPDG, G4double m, G4QContent QC); // Con. for a Chipolino or a Quasmon + G4QHadron(G4int PDG, G4LorentzVector p, G4QContent QC);// Constructor for Chipolino or Quasmon + G4QHadron(G4QPDGCode QPDG, G4LorentzVector p, G4QContent QC);// Con. for Chipolino or Quasmon + G4QHadron(G4QParticle* pPart, G4double maxM); // Constructor for a resonance with RANDOM m + G4QHadron(const G4QHadron& right); // Copy constructor by object + G4QHadron(G4QHadron* right); // Copy constructor by pointer + ~G4QHadron(); // Destructor + // Operators + const G4QHadron& operator=(const G4QHadron& right); + G4int operator==(const G4QHadron& right) const; + G4int operator!=(const G4QHadron& right) const; + // Selectors + G4int GetPDGCode() const; // Get PDG code of the Hadron + G4int GetQCode() const; // Get Q code of the Hadron + G4QPDGCode GetQPDG() const; // Get QPDG of the Hadron + G4LorentzVector Get4Momentum() const; // Get 4-mom of the Hadron + G4QContent GetQC() const; // Get private quark content + G4double GetMass() const; // Get a mass of the Hadron + G4double GetMass2() const; // Get an m^2 value for the Hadron + G4double GetWidth() const; // Get Width of Hadron + G4int GetNFragments() const; // Get a#of Fragments of this Hadron + G4int GetCharge() const; // Get Charge of the Hadron + G4int GetStrangeness() const; // Get Strangeness of the Hadron + G4int GetBaryonNumber() const; // Get Baryon Number of the Hadron + // Modifiers + void SetQPDG(const G4QPDGCode& QPDG); // Set QPDG of the Hadron + void Set4Momentum(const G4LorentzVector& aMom); // Set 4-mom of the Hadron + void SetQC(const G4QContent& newQC); // Set new private quark content + void SetNFragments(const G4int& nf); // Set a#of Fragments of this Hadron + void NegPDGCode(); + void MakeAntiHadron(); // Make AntiHadron of this Hadron + // General + G4double RandomizeMass(G4QParticle* pPart, G4double maxM); // Randomize a mass value + G4bool TestRealNeutral(); + G4bool DecayIn2(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom); + G4bool CorMDecayIn2(G4double corM, G4LorentzVector& fr4Mom);//->This(new mass corM)+fr4Mom(correct) + G4bool CorEDecayIn2(G4double corE, G4LorentzVector& fr4Mom);//->This(E+=corE,P)+fr4Mom(fE-=corE,fP) + G4bool RelDecayIn2(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom, G4LorentzVector& dir, + G4double maxCost, G4double minCost = -1.); + G4bool DecayIn3(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom, G4LorentzVector& t4Mom); + +private: + // Private methods + void DefineQC(G4int PDGCode); + +private: + G4QPDGCode theQPDG; // Instance of QPDG for the Hadron + G4LorentzVector theMomentum; // The 4-mom of Hadron + G4QContent valQ; // QC ( @@ ?? for Quasmon and Chipolino) + G4int nFragm; // =0 - stable, =N - decayed in N particles +}; + +inline G4int G4QHadron::operator==(const G4QHadron &right) const {return this==&right;} +inline G4int G4QHadron::operator!=(const G4QHadron &right) const {return this!=&right;} + +inline G4int G4QHadron::GetPDGCode() const {return theQPDG.GetPDGCode();} +inline G4int G4QHadron::GetQCode() const {return theQPDG.GetQCode();} +inline G4QPDGCode G4QHadron::GetQPDG() const {return theQPDG;} +inline G4QContent G4QHadron::GetQC() const {return valQ;} +inline G4LorentzVector G4QHadron::Get4Momentum() const {return theMomentum;} +inline G4int G4QHadron::GetNFragments() const {return nFragm;} +//@@ This is an example how to make other inline selectors for the 4-Momentum of the Hadron +inline G4double G4QHadron::GetMass() const {return theMomentum.m();} +inline G4double G4QHadron::GetMass2() const {return theMomentum.m2();} +//@@ This is an example how to make other inline selectors for the Hadron +inline G4int G4QHadron::GetCharge() const {return valQ.GetCharge();} +inline G4int G4QHadron::GetStrangeness() const {return valQ.GetStrangeness();} +inline G4int G4QHadron::GetBaryonNumber() const {return valQ.GetBaryonNumber();} + +inline void G4QHadron::MakeAntiHadron() {if(TestRealNeutral()) NegPDGCode();} +inline void G4QHadron::SetQPDG(const G4QPDGCode& newQPDG) +{ + theQPDG = newQPDG; + G4int PDG= newQPDG.GetPDGCode(); + G4int Q = newQPDG.GetQCode(); + //G4cout<<"G4QHadron::SetQPDG is called with PDGCode="< G4QHadronVector; +struct DeleteQHadron { void operator()(G4QHadron * aQ){delete aQ;}}; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QNucleus.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QNucleus.hh new file mode 100755 index 0000000000..5cb6c6a0d7 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QNucleus.hh @@ -0,0 +1,212 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QNucleus.hh,v 1.12 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QNucleus ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for Quasmon initiated Candidates used by the CHIPS Model +// ---------------------------------------------------------------------- + +#ifndef G4QNucleus_h +#define G4QNucleus_h 1 + +#include "G4QCandidateVector.hh" + +class G4QNucleus : public G4QHadron +{ +public: + G4QNucleus(); // Default Constructor + G4QNucleus(G4int nucPDG); // At Rest PDG-Constructor + G4QNucleus(G4LorentzVector p, G4int nucPDG); // Full PDG-Constructor + G4QNucleus(G4QContent nucQC); // At Rest QuarkCont-Constructor + G4QNucleus(G4QContent nucQC, G4LorentzVector p); // Full QuarkCont-Constructor + G4QNucleus(G4int z, G4int n, G4int s); // At Rest ZNS-Constructor + G4QNucleus(G4int z, G4int n, G4int s, G4LorentzVector p);// Full ZNS-Constructor + G4QNucleus(const G4QNucleus& right); // Copy Constructor by value + G4QNucleus(G4QNucleus* right); // Copy Constructor by pointer + ~G4QNucleus(); // Destructor + // Overloaded Operators + const G4QNucleus & operator=(const G4QNucleus &right); + G4int operator==(const G4QNucleus &right) const; + G4int operator!=(const G4QNucleus &right) const; + // Specific Selectors + G4int GetPDG() const; // Get a PDG Code of the nucleus + G4int GetZ() const; // Get a#of protons + G4int GetN() const; // Get a#of neutrons + G4int GetS() const; // Get a#of lambdas + G4int GetA() const; // Get A of the nucleus + G4int GetDZ() const; // Get a#of protons in dense region + G4int GetDN() const; // Get a#of neutrons in dense region + G4int GetDS() const; // Get a#of lambdas in dense region + G4int GetDA() const; // Get A of the dense part of nucleus + G4int GetMaxClust() const; // Get Max BarNum of Clusters + G4double GetProbability(G4int bn=0) const; // probab. for the cluster with BarN + G4double GetMZNS() const; // Get GS mass of Nucleus(not H || Q) + G4double GetGSMass() const; // Get GS mass of Nucleus(not Hadron) + G4QContent GetQCZNS() const; // Get ZNS quark content of Nucleus + + // Specific Modifiers + G4bool EvaporateBaryon(G4QHadron* h1,G4QHadron* h2); // Evaporate one Baryon from Nucleus + G4bool SplitBaryon(); // Is it possible to split a baryon/alpha + G4bool Split2Baryons(); // Is it possible to split two baryons? + void InitByPDG(G4int newPDG); // Init existing nucleus by new PDG + void InitByQC(G4QContent newQC); // Init existing nucleus by new QCont + void IncProbability(G4int bn); // Add one cluster to probability + void Increase(G4int PDG, G4LorentzVector LV = G4LorentzVector(0.,0.,0.,0.)); + void Increase(G4QContent QC, G4LorentzVector LV = G4LorentzVector(0.,0.,0.,0.)); + void Reduce(G4int PDG); // Reduce Nucleus by PDG fragment + void CalculateMass(); // Recalculate (calculate) the mass + void SetMaxClust(G4int maxC); // Set Max BarNum of Clusters + void PrepareCandidates(G4QCandidateVector& theQCandidates, G4bool piF, G4bool gaF); + G4int UpdateClusters(G4bool din); // Return a#of clusters & calc. probab's + G4QNucleus operator+=(const G4QNucleus& rhs); // Add a cluster to the nucleus + G4QNucleus operator-=(const G4QNucleus& rhs); // Subtract a cluster from a nucleus + G4QNucleus operator*=(const G4int& rhs); // Multiplication of the Nucleus + // Static functions + static void SetParameters(G4double fN, G4double fD, G4double cP, G4double mR=1.); + // Specific General Functions + G4int RandomizeBinom(G4double p,G4int N); // Randomize according to Binomial Law + G4double CoulombBarrier(const G4double& cZ, const G4double& cA, G4double dZ=0., G4double dA=0.); + G4double BindingEnergy(const G4double& cZ, const G4double& cA, G4double dZ=0., G4double dA=0.); + G4double CoulBarPenProb(const G4double& CB, const G4double& E, const G4int& C, const G4int& B); + +private: + // Specific Encapsulated Functions + void SetZNSQC(G4int z, G4int n, G4int s); // Set QC, using Z,N,S + G4QNucleus GetThis() const; // @@ Check for memory leak + +// Body +private: + // Static Parameters + static G4double freeNuc; // probability of the quasi-free baryon on surface + static G4double freeDib; // probability of the quasi-free dibaryon on surface + static G4double clustProb; // clusterization probability in dense region + static G4double mediRatio; // relative vacuum hadronization probability + // The basic + G4int Z; // Z of the Nucleus + G4int N; // N of the Nucleus + G4int S; // S of the Nucleus + // The secondaries + G4int dZ; // Z of the dense region of the nucleus + G4int dN; // N of the dense region of the nucleus + G4int dS; // S of the dense region of the nucleus + G4int maxClust; // Baryon Number of the last calculated cluster + G4double probVect[256]; // Cluster probability ("a#of issues" can be real) Vector +}; + +G4std::ostream& operator<<(G4std::ostream& lhs, G4QNucleus& rhs); +G4std::ostream& operator<<(G4std::ostream& lhs, const G4QNucleus& rhs); + +inline G4int G4QNucleus::operator==(const G4QNucleus &right) const {return this==&right;} +inline G4int G4QNucleus::operator!=(const G4QNucleus &right) const {return this!=&right;} + +inline G4int G4QNucleus::GetPDG()const {return 90000000+1000*(1000*S+Z)+N;} +inline G4int G4QNucleus::GetZ() const {return Z;} +inline G4int G4QNucleus::GetN() const {return N;} +inline G4int G4QNucleus::GetS() const {return S;} +inline G4int G4QNucleus::GetA() const {return Z+N+S;} +inline G4int G4QNucleus::GetDZ() const {return dZ;} +inline G4int G4QNucleus::GetDN() const {return dN;} +inline G4int G4QNucleus::GetDS() const {return dS;} +inline G4int G4QNucleus::GetDA() const {return dZ+dN+dS;} +inline G4int G4QNucleus::GetMaxClust() const {return maxClust;} +inline G4double G4QNucleus::GetProbability(G4int bn) const {return probVect[bn];} + +// Init existing nucleus by new Quark Content +inline void G4QNucleus::InitByQC(G4QContent newQC) +{// ============================================= + G4int PDG=G4QPDGCode(newQC).GetPDGCode(); + InitByPDG(PDG); +} + +inline G4double G4QNucleus::GetMZNS() const {return GetQPDG().GetNuclMass(Z,N,S);} +inline G4double G4QNucleus::GetGSMass() const {return GetQPDG().GetMass();} +inline G4QContent G4QNucleus::GetQCZNS() const +{ + if(S>=0) return G4QContent(Z+N+N+S,Z+Z+N+S,S,0,0,0); + else return G4QContent(Z+N+N+S,Z+Z+N+S,0,0,0,-S); +} +inline void G4QNucleus::SetMaxClust(G4int maxC) {maxClust=maxC;} +inline void G4QNucleus::CalculateMass() + {Set4Momentum(G4LorentzVector(0.,0.,0.,GetGSMass()));} +// Add Cluster +inline G4QNucleus G4QNucleus::operator+=(const G4QNucleus& rhs) +// ======================================================= +{ + Z+=rhs.Z; + N+=rhs.N; + S+=rhs.S; + // Atributes of aHadron + G4int newPDG= GetPDGCode() + rhs.GetPDGCode() - 90000000; + SetQPDG (newPDG); + G4QContent newQC = GetQC() + rhs.GetQC(); + SetQC (newQC); + G4LorentzVector newLV = Get4Momentum() + rhs.Get4Momentum(); + Set4Momentum (newLV); + return *this; +} + +// Subtract Cluster +inline G4QNucleus G4QNucleus::operator-=(const G4QNucleus& rhs) +// ======================================================= +{ + Z-=rhs.Z; + N-=rhs.N; + S-=rhs.S; + // Atributes of aHadron + G4int newPDG= GetPDGCode() - rhs.GetPDGCode() + 90000000; + SetQPDG (newPDG); + G4QContent newQC = GetQC() - rhs.GetQC(); + SetQC (newQC); + G4LorentzVector newLV = Get4Momentum() - rhs.Get4Momentum(); + Set4Momentum (newLV); + return *this; +} + +// Multiply Nucleus by integer value +inline G4QNucleus G4QNucleus::operator*=(const G4int& rhs) +// =================================================== +{ + Z*=rhs; + N*=rhs; + S*=rhs; + // Atributes of aHadron + G4int newPDG= rhs*(GetPDGCode() - 90000000) + 90000000; + SetQPDG (newPDG); + G4QContent newQC = rhs*GetQC(); + SetQC (newQC); + G4LorentzVector newLV = rhs*Get4Momentum(); + Set4Momentum (newLV); + return *this; +} + +// Private member functions +inline G4QNucleus G4QNucleus::GetThis()const{return G4QNucleus(Z,N,S);} + +#endif + + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCode.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCode.hh new file mode 100755 index 0000000000..2a61b757a1 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCode.hh @@ -0,0 +1,256 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QPDGCode.hh,v 1.11 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QPDGCode ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for Hadron definition in CHIPS Model +// ------------------------------------------------------------ + +#ifndef G4QPDGCode_h +#define G4QPDGCode_h 1 + +#include "g4std/iostream" +#include "globals.hh" +#include "G4ParticleTable.hh" +#include "G4NucleiProperties.hh" +#include "G4NucleiPropertiesTable.hh" +#include "G4QContent.hh" + +class G4QPDGCode +{ +public: + // Constructors + G4QPDGCode(G4int PDGCode = 0); // Construction by PDGCode + G4QPDGCode(G4QContent QCont); // Construction by Quark Content + G4QPDGCode(const G4QPDGCode& rhs); // Copy Constructor by value + G4QPDGCode(G4QPDGCode* rhs); // Copy Constructor by pointer + + ~G4QPDGCode(); // Destructor + + // Operators + const G4QPDGCode& operator=(const G4QPDGCode& rhs); + G4int operator==(const G4QPDGCode& rhs) const; + G4int operator==(const G4int& rhs) const; + G4int operator!=(const G4QPDGCode& rhs) const; + G4int operator!=(const G4int& rhs) const; + G4QPDGCode operator+=(const G4int& rhs); + G4QPDGCode operator+=(const G4QPDGCode& rhs); + G4QPDGCode operator-=(const G4int& rhs); + G4QPDGCode operator-=(const G4QPDGCode& rhs); + G4QPDGCode operator*=(const G4int& rhs); + G4QPDGCode operator/=(const G4int& rhs); + + // Selectors + G4double GetMass(); // GS Mass for the QHadron + G4double GetMass2(); // Squared GS Mass for the QHadron + G4double GetWidth(); // Width for the QHadron + G4double GetNuclMass(G4int Z, G4int N, G4int S); // Wrapper for nuclear mass calculation + G4double GetNuclMass(G4int PDGCode); // Wrapper for nuclear mass calculation + G4QContent GetQuarkContent() const; // Get QC for the particle + G4int GetBaryNum() const; // Get Baryon Number of the Hadron + G4int GetSpin() const; // Returns 2s+1 for hadrons or 1 for nuclei + G4int GetCharge() const; // Get Charge of the Hadron + G4int GetPDGCode() const; // Get PDG code of the Hadron + G4int GetQCode() const; // Get Q code of the Hadron + G4QContent GetExQContent(G4int i, G4int o) const; // Get Q Content for the Quark Exchange + G4int GetRelCrossIndex(G4int i, G4int o) const; // Relative Cross Index for q_i->q_o + G4int GetNumOfComb(G4int i, G4int o) const; // Get number of Combinations for q_i->q_o + G4int GetTotNumOfComb(G4int i) const; // Get a total # of Combinations for q_i + + // Modifiers + void SetPDGCode(G4int newPDGCode); // Set PDG code of the Hadron + void InitByQCont(G4QContent QCont); // Init existing QPDG by Quark Content + void InitByQCode(G4int QCode); // Init existing QPDG by Q Code + + // General + G4bool TestRealNeutral(); + void NegPDGCode(); + +private: + // Encapsulated functions + G4bool TestRealNeutral(const G4int& PDGCode); + G4int MakeQCode(const G4int& PDGCode); // Make Q Code, using PDG Code + G4int MakePDGCode(const G4int& QCode); // Make PDG Code, using Q Code + +private: + // the Body + G4int thePDGCode; + G4int theQCode; +}; + +// Not member operators +G4std::ostream& operator<<(G4std::ostream& lhs, G4QPDGCode& rhs); +G4std::ostream& operator<<(G4std::ostream& lhs, const G4QPDGCode& rhs); +G4int operator+(const G4QPDGCode& lhs, const G4QPDGCode& rhs); +G4int operator+(const G4QPDGCode& lhs, const G4int& rhs); +G4int operator+(const G4int& lhs, const G4QPDGCode& rhs); +G4int operator-(const G4QPDGCode& lhs, const G4QPDGCode& rhs); +G4int operator-(const G4QPDGCode& lhs, const G4int& rhs); +G4int operator-(const G4int& lhs, const G4QPDGCode& rhs); +G4int operator*(const G4QPDGCode& lhs, const G4QPDGCode& rhs); +G4int operator*(const G4QPDGCode& lhs, const G4int& rhs); +G4int operator*(const G4int& lhs, const G4QPDGCode& rhs); +G4int operator/(const G4QPDGCode& lhs, const G4QPDGCode& rhs); +G4int operator/(const G4QPDGCode& lhs, const G4int& rhs); +G4int operator/(const G4int& lhs, const G4QPDGCode& rhs); +G4int operator%(const G4QPDGCode& lhs, const G4int& rhs); +// Not member functions +//---------------------------------------------------------------------------------------- + +inline G4int G4QPDGCode::operator==(const G4QPDGCode& rhs) const {return this==&rhs;} +inline G4int G4QPDGCode::operator==(const G4int& rhs) const {return thePDGCode==rhs;} +inline G4int G4QPDGCode::operator!=(const G4QPDGCode& rhs) const {return this!=&rhs;} +inline G4int G4QPDGCode::operator!=(const G4int& rhs) const {return thePDGCode!=rhs;} + +inline G4QPDGCode G4QPDGCode::operator+=(const G4QPDGCode& rhs) +{ + thePDGCode+=rhs.GetPDGCode(); + if(!thePDGCode) theQCode = -2; + else theQCode = MakeQCode(thePDGCode); + return *this; +} +inline G4QPDGCode G4QPDGCode::operator+=(const G4int& rhs) +{ + thePDGCode+=rhs; + if(!thePDGCode) theQCode = -2; + else theQCode = MakeQCode(thePDGCode); + return *this; +} +inline G4QPDGCode G4QPDGCode::operator-=(const G4QPDGCode& rhs) +{ + thePDGCode-=rhs.GetPDGCode(); + if(!thePDGCode) theQCode = -2; + else theQCode = MakeQCode(thePDGCode); + return *this; +} +inline G4QPDGCode G4QPDGCode::operator-=(const G4int& rhs) +{ + thePDGCode-=rhs; + if(!thePDGCode) theQCode = -2; + else theQCode = MakeQCode(thePDGCode); + return *this; +} +inline G4QPDGCode G4QPDGCode::operator*=(const G4int& rhs) +{ + thePDGCode*=rhs; + if(!thePDGCode) theQCode = -2; + else theQCode = MakeQCode(thePDGCode); + return *this; +} +inline G4QPDGCode G4QPDGCode::operator/=(const G4int& rhs) +{ + thePDGCode/=rhs; + if(!thePDGCode) theQCode = -2; + else theQCode = MakeQCode(thePDGCode); + return *this; +} + +inline G4double G4QPDGCode::GetMass2() {G4double m=GetMass(); return m*m;} +inline G4double G4QPDGCode::GetNuclMass(G4int PDG) +{ + if(PDG>80000000) + { + G4int szn=PDG-90000000; + G4int ds=0; + G4int dz=0; + G4int dn=0; + if(szn<-100000) + { + G4int ns=(-szn)/1000000+1; + szn+=ns*1000000; + ds+=ns; + } + else if(szn<-100) + { + G4int nz=(-szn)/1000+1; + szn+=nz*1000; + dz+=nz; + } + else if(szn<0) + { + G4int nn=-szn; + szn=0; + dn+=nn; + } + G4int sz =szn/1000; + G4int n =szn%1000; + if(n>700) + { + n-=1000; + dz--; + } + G4int z =sz%1000-dz; + if(z>700) + { + z-=1000; + ds--; + } + G4int s =sz/1000-ds; + return GetNuclMass(z,n,s); + } + return 0.; +} +inline G4int G4QPDGCode::GetPDGCode() const {return thePDGCode;} +inline G4int G4QPDGCode::GetQCode() const {return theQCode;} +inline G4int G4QPDGCode::GetCharge() const {return GetQuarkContent().GetCharge();} +inline G4int G4QPDGCode::GetBaryNum() const {return GetQuarkContent().GetBaryonNumber();} +inline G4int G4QPDGCode::GetSpin() const +{ + if(thePDGCode<80000000) return thePDGCode%10; + else if(GetQuarkContent().GetTot()%2) return 3; + else return 1; +} +inline void G4QPDGCode::NegPDGCode() {thePDGCode=-thePDGCode;} +inline G4bool G4QPDGCode::TestRealNeutral(){return TestRealNeutral(thePDGCode);} + +// Redefinition of the PDG instance +inline void G4QPDGCode::SetPDGCode(G4int newPDGCode) +// ======================================== +{ + thePDGCode=newPDGCode; + if(!thePDGCode) theQCode = -2; + else theQCode = MakeQCode(newPDGCode); +} + +// Init existing QPDG by Quark Content +inline void G4QPDGCode::InitByQCont(G4QContent QCont) +{// ========================================= + thePDGCode = QCont.GetSPDGCode(); + if(!thePDGCode) theQCode = -2; + else theQCode = MakeQCode(thePDGCode); +} + +// Init existing QPDG by Quark Content +inline void G4QPDGCode::InitByQCode(G4int QCode) +{// ==================================== + theQCode = QCode; + thePDGCode = MakePDGCode(QCode); +} + +#endif + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCodeVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCodeVector.hh new file mode 100755 index 0000000000..9d3f3371a4 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QPDGCodeVector.hh @@ -0,0 +1,44 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QPDGCodeVector.hh,v 1.8 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QCandidateVector ---------------- +// by Mikhail Kossov, Sept 1999. +// Type defenition for Hadron definition in CHIPS model +// --------------------------------------------------------------- + +#ifndef G4QPDGCodeVector_h +#define G4QPDGCodeVector_h 1 + +#include "G4QPDGCode.hh" +#include "g4std/vector" + +typedef G4std::vector G4QPDGCodeVector; +struct DeleteQPDGCode{ void operator()(G4QPDGCode *aN){delete aN;} }; + + +#endif + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentCluster.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentCluster.hh new file mode 100755 index 0000000000..0c1c294461 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentCluster.hh @@ -0,0 +1,131 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QParentCluster.hh,v 1.10 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QParentCluster ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for a Parent nuclear cluster in the CHIPS Model +// ------------------------------------------------------------- + +#ifndef G4QParentCluster_h +#define G4QParentCluster_h 1 + +#include "g4std/iostream" +#include "globals.hh" +#include "G4QContent.hh" + +class G4QParentCluster +{ +public: + // Constructors + G4QParentCluster(G4int PDGCode = 0); // Construction by PDGCode + G4QParentCluster(G4int PDGCode, G4double prob); // Construction by PDGCode & Probab + G4QParentCluster(const G4QParentCluster& rhs); // Copy Constructor by value + G4QParentCluster(G4QParentCluster* rhs); // Copy Constructor by pointer + + ~G4QParentCluster(); // Destructor + + // Operators + const G4QParentCluster& operator=(const G4QParentCluster& rhs); + G4int operator==(const G4QParentCluster& rhs) const; + G4int operator!=(const G4QParentCluster& rhs) const; + + // Selectors + G4int GetPDGCode() const; // Get PDG code of the Parent Cluster + G4double GetProbability() const; // Get a probability of hadronization on it + G4int GetNQPart2() const; // Get n-2 for the fragment + G4QContent GetTransQC() const; // Get QuarkCont of a Pseudo Exchange Meson + G4double GetLow() const; // Get a low limit for randomization + G4double GetHigh() const; // Get a high limit for randomization + G4double GetEBMass() const; // Get a Nuclear Bounded mass of the parent cluster + G4double GetEBind() const; // Get Environment Binding energy for the parent cluster + G4double GetNBMass() const; // Get an Environmental bounded mass of the parent cluster + G4double GetNBind() const; // Get Total Nucleus Binding energy for the parent cluster + + // Modifiers + void SetPDGCode(G4int newPDGCode); // Set PDG code of the Parent Cluster + void SetProbability(G4double probab); // Set probab. to hadronize on this cluster + void SetNQPart2(G4int nm2); // Get n-2 for the fragment + void SetTransQC(G4QContent newTrans); // Set QuarkCont of a Pseudo Exchange Meson + void SetLow(G4double loLim); // Set a low limit for hadronization + void SetHigh(G4double hiLim); // Set a high limit for hadronization + void SetEBMass(G4double bMass); // Set a bounded mass of the parent cluster in E + void SetEBind(G4double bEn); // Set binding energy of the parent cluster in E + void SetNBMass(G4double bMass); // Set a bounded mass of the parent cluster in N + void SetNBind(G4double bEn); // Set binding energy of the parent cluster in N + + // General + +private: + // Encapsulated functions + +private: + // the Body + G4int thePDGCode; + G4double theProbability; + // Secondary + G4int nQPart2; + G4QContent transQC; // Quark Content of pseudo exchange meson + G4double lowLimit; + G4double highLimit; + G4double theEnvBoundedMass; + G4double theEnvBindingEnergy; + G4double theNucBoundedMass; + G4double theNucBindingEnergy; +}; + +// Not member operators +G4std::ostream& operator<<(G4std::ostream& lhs, G4QParentCluster& rhs); +G4std::ostream& operator<<(G4std::ostream& lhs, const G4QParentCluster& rhs); + +inline G4int G4QParentCluster::operator==(const G4QParentCluster& rhs) const {return this==&rhs;} +inline G4int G4QParentCluster::operator!=(const G4QParentCluster& rhs) const {return this!=&rhs;} + +inline G4int G4QParentCluster::GetPDGCode() const {return thePDGCode;} +inline G4double G4QParentCluster::GetProbability() const {return theProbability;} +inline G4int G4QParentCluster::GetNQPart2() const {return nQPart2;} +inline G4QContent G4QParentCluster::GetTransQC() const {return transQC;} +inline G4double G4QParentCluster::GetHigh() const {return highLimit;} +inline G4double G4QParentCluster::GetLow() const {return lowLimit;} +inline G4double G4QParentCluster::GetEBMass() const {return theEnvBoundedMass;} +inline G4double G4QParentCluster::GetEBind() const {return theEnvBindingEnergy;} +inline G4double G4QParentCluster::GetNBMass() const {return theNucBoundedMass;} +inline G4double G4QParentCluster::GetNBind() const {return theNucBindingEnergy;} + +inline void G4QParentCluster::SetPDGCode(G4int newPDGCode) {thePDGCode = newPDGCode;} +inline void G4QParentCluster::SetProbability(G4double prob) {theProbability = prob;} +inline void G4QParentCluster::SetNQPart2(G4int nm2) {nQPart2 = nm2;} +inline void G4QParentCluster::SetTransQC(G4QContent newTrans) {transQC=newTrans;} +inline void G4QParentCluster::SetHigh(G4double hiLim) {highLimit = hiLim;} +inline void G4QParentCluster::SetLow(G4double loLim) {lowLimit = loLim;} +inline void G4QParentCluster::SetEBMass(G4double bMass) {theEnvBoundedMass = bMass;} +inline void G4QParentCluster::SetNBMass(G4double bMass) {theNucBoundedMass = bMass;} +inline void G4QParentCluster::SetEBind(G4double bEn) {theEnvBindingEnergy= bEn;} +inline void G4QParentCluster::SetNBind(G4double bEn) {theNucBindingEnergy= bEn;} + +#endif + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentClusterVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentClusterVector.hh new file mode 100755 index 0000000000..7a79168ce4 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParentClusterVector.hh @@ -0,0 +1,43 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QParentClusterVector.hh,v 1.8 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QCandidateVector ---------------- +// by Mikhail Kossov, Sept 1999. +// Type defenition of Parent nuclear cluster Vector in CHIPS model +// --------------------------------------------------------------- + +#ifndef G4QParentClusterVector_h +#define G4QParentClusterVector_h 1 + +#include "G4QParentCluster.hh" +#include "g4std/vector" + +typedef G4std::vector G4QParentClusterVector; +struct DeleteQParentCluster{ void operator()(G4QParentCluster *aN){delete aN;} }; + +#endif + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticle.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticle.hh new file mode 100755 index 0000000000..c56d3276f8 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QParticle.hh @@ -0,0 +1,129 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QParticle.hh,v 1.10 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QParticle ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for Particles in the CHIPS Model +// --------------------------------------------------- + +#ifndef G4QParticle_h +#define G4QParticle_h 1 + +#include "g4std/iostream" +#include "globals.hh" +#include "G4QDecayChanVector.hh" + +class G4QParticle +{ +public: + // Constructors + G4QParticle(); // Default Constructor + G4QParticle(G4int thePDG); // PDGCode Constructor + G4QParticle(const G4QParticle& right); // Copy Constructor by value + G4QParticle(G4QParticle* right); // Copy Constructor by pointer + + ~G4QParticle(); // Destructor + + // Operators + const G4QParticle& operator=(const G4QParticle& right); + G4int operator==(const G4QParticle& rhs) const; + G4int operator!=(const G4QParticle& rhs) const; + + // Selectors + G4QPDGCode GetQPDG() const; // Get a PDG-Particle of the Particle + G4int GetPDGCode() const; // Get a PDG Code of the Particle + G4int GetQCode() const; // Get a Q Code of the Particle + G4int GetSpin() const; // Get 2s+1 of the Particle + G4int GetCharge() const; // Get a Charge of the Particle + G4int GetStrange() const; // Get a Strangeness of the Particle + G4int GetBaryNum() const; // Get a Baryon Number of the Particle + G4QContent GetQContent(); // Get Quark Content of the Particle + G4QDecayChanVector GetDecayVector(); // Get a Decay Vector for the Particle + G4double GetMass(); // Get a mass value for the Particle + G4double GetWidth(); // Get a width value for the Particle + + // Modifiers + G4QDecayChanVector InitDecayVector(G4int Q); // Init Decay Vector in the CHIPS World by Q code + void InitPDGParticle(G4int thePDGCode); + void InitQParticle(G4int theQCode); + + // General + G4double MinMassOfFragm(); // Minimal mass of decaing fragments + +private: + // Encapsulated functions + +private: + // the Body + G4QPDGCode aQPDG; + G4QDecayChanVector aDecay; + G4QContent aQuarkCont; // @@ Secondary (added for acceleration - check) +}; + +// Not member operators +G4std::ostream& operator<<(G4std::ostream& lhs, G4QParticle& rhs); +// Not member functions +//---------------------------------------------------------------------------------------- + +inline G4int G4QParticle::operator==(const G4QParticle& rhs) const {return this==&rhs;} +inline G4int G4QParticle::operator!=(const G4QParticle& rhs) const {return this!=&rhs;} + +inline G4QPDGCode G4QParticle::GetQPDG() const {return aQPDG;} +inline G4int G4QParticle::GetPDGCode() const {return aQPDG.GetPDGCode();} +inline G4int G4QParticle::GetSpin() const {return aQPDG.GetSpin();} +inline G4int G4QParticle::GetCharge() const {return aQuarkCont.GetCharge();} +inline G4int G4QParticle::GetStrange() const {return aQuarkCont.GetStrangeness();} +inline G4int G4QParticle::GetBaryNum() const {return aQuarkCont.GetBaryonNumber();} +inline G4QContent G4QParticle::GetQContent() {return aQuarkCont;} +inline G4QDecayChanVector G4QParticle::GetDecayVector() {return aDecay;} +inline G4double G4QParticle::GetMass() {return aQPDG.GetMass();} +inline G4double G4QParticle::GetWidth() {return aQPDG.GetWidth();} + +inline G4double G4QParticle::MinMassOfFragm() +{ + G4int nCh=aDecay.size(); + G4double m=GetMass(); + G4double min=m; + if(nCh) + { + min=aDecay[0]->GetMinMass(); + if(nCh>1) for(G4int j=1; jGetMinMass(); + if(next G4QParticleVector; +struct DeleteQParticle{ void operator()(G4QParticle *aN){delete aN;} }; + +#endif + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSelector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSelector.hh new file mode 100755 index 0000000000..8fe4a2f3d8 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QSelector.hh @@ -0,0 +1,66 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QSelector.hh,v 1.7 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QSelector ---------------- +// by Mikhail Kossov, Sept 1999. +// class header for decay Selection for Hadrons of CHIPS Model +// ------------------------------------------------------------ + +#ifndef G4QSelector_h +#define G4QSelector_h 1 + +//#include "globals.hh" +#include "G4QHadronVector.hh" +#include "G4QPDGCodeVector.hh" + +class G4QSelector +{ +public: + // Constructors + G4QSelector(); // Default Constructor + G4QSelector(G4QHadronVector hadronVec); // Constructor for the Hadrons Set + ~G4QSelector(); // Destructor + // Operators + const G4QSelector& operator=(const G4QSelector& right); + G4int operator==(const G4QSelector& right) const; + G4int operator!=(const G4QSelector& right) const; + // Selectors + G4QHadronVector GetHadrons() const; // Get PDG code of the Hadron + // Modifiers + void SetHadrons(G4QHadronVector hadronVec); // Get PDG code of the Hadron + G4bool SelectPDGSet(G4QPDGCodeVector thePDGCodes); // Select event with the PDGCode Set +private: + G4QHadronVector theHadrons; // Vector of Hadron +}; + +inline G4int G4QSelector::operator==(const G4QSelector& right) const {return this==&right;} +inline G4int G4QSelector::operator!=(const G4QSelector& right) const {return this!=&right;} + +inline G4QHadronVector G4QSelector::GetHadrons() const {return theHadrons;} + +inline void G4QSelector::SetHadrons(G4QHadronVector hadronVec) {theHadrons=hadronVec;} + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Quasmon.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Quasmon.hh new file mode 100644 index 0000000000..79e53b1ce1 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4Quasmon.hh @@ -0,0 +1,179 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4Quasmon.hh,v 1.19 2001/11/26 14:11:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4Quasmon ---------------- +// by Mikhail Kossov, July 1999. +// class for a Quasmon used by the CHIPS Model +// ------------------------------------------------------------ + +#ifndef G4Quasmon_h +#define G4Quasmon_h 1 + +// Standard G4-headers +#include "G4ios.hh" +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "G4LorentzVector.hh" +#include "G4LorentzRotation.hh" +//CHIPS-headers +#include "G4QCHIPSWorld.hh" +#include "G4QChipolino.hh" +#include "G4QHadronVector.hh" +#include "G4QNucleus.hh" + +class G4Quasmon +{ +public: + G4Quasmon(G4QContent qQCont = G4QContent(0,0,0,0,0,0), + G4LorentzVector q4M = G4LorentzVector(0.,0.,0.,0.), + G4LorentzVector ph4M = G4LorentzVector(0.,0.,0.,0.));// Direct Constructor + G4Quasmon(const G4Quasmon& right); // Copy Quasmon by object + G4Quasmon(G4Quasmon* right); // Copy Quasmon by pointer + + ~G4Quasmon(); + + // Overloaded Operators + const G4Quasmon& operator=(const G4Quasmon& right); + int operator==(const G4Quasmon &right) const; + int operator!=(const G4Quasmon &right) const; + + // Static functions + static void SetParameters(G4double temperature, G4double ssin2g, G4double etaetap); + static void SetTemper(G4double temperature); + static void SetSOverU(G4double ssin2g); + static void SetEtaSup(G4double etaetap); + + //Selectors + G4double GetTemper() const; + G4double GetSOverU() const; + G4double GetEtaSup() const; + G4LorentzVector Get4Momentum() const; + G4QContent GetQC() const; + G4QPDGCode GetQPDG() const; + G4int GetStatus() const; + + //Modifiers + G4QHadronVector* Fragment(G4QNucleus& nucEnviron, G4int nQ); // Pub-wrapper for "HadronizeQuasmon(,)" + void ClearOutput(); // Clear but not destroy the output + void InitQuasmon(const G4QContent& qQCont, const G4LorentzVector& q4M); + void IncreaseBy(const G4Quasmon* pQuasm); // as operator+= but by pointer + void KillQuasmon(); // Kill Quasmon (status=0) + +private: + G4QHadronVector HadronizeQuasmon(G4QNucleus& qEnv, G4int nQ); // Return new neuclear environment + G4double GetRandomMass(G4int PDGCode, G4double maxM); + void ModifyInMatterCandidates(); + void InitCandidateVector(G4int maxMes, G4int maxBar, G4int maxClust); + void CalculateNumberOfQPartons(G4double qMass); + void CalculateHadronizationProbabilities(G4double excE, G4double kQ, G4double kLS, + G4bool piF, G4bool gaF); + void FillHadronVector(G4QHadron* qHadron); + G4int RandomPoisson(G4double meanValue); + G4double GetQPartonMomentum(G4double mMinResidual2, G4double mCandidate2); + G4bool DecayOutHadron(G4QHadron* qHadron, G4int DFlag=0); + G4bool CheckGroundState(G4bool corFlag = false); // Forbid correction by default + void KillEnvironment(); // Kill Environment (Z,N,S=0,LV=0) + +// Body +private: + // Static Parameters + static G4double Temperature; // Quasmon Temperature + static G4double SSin2Gluons; // Percent of ssbar sea in a constituen gluon + static G4double EtaEtaprime; // Part of eta-prime in all etas + // Hadronic input + G4LorentzVector q4Mom; // 4-momentum of the Quasmon +++++ + G4QContent valQ; // Quark Content of the Quasmon +++++ + G4QNucleus theEnvironment; // Nuclear (or Vacuum) Environment around the Quasmon + // Output + G4int status; // -1-Panic,0-Done,1-FilledSomething,2-DidNothing,3-StopedByCB,4-JustBorn + G4QHadronVector theQHadrons; // Vector of generated secondary hadrons +++++ + // Internal working objects (@@ it is possible to sacrifice some of them in future) + G4QCHIPSWorld theWorld; // Pointer to the CHIPS World + G4LorentzVector phot4M; // Gamma 4-momentum for interaction with a quark-parton + G4int nBarClust; // Maximum barion number of clusters in the Environment @@ ?? + G4int nOfQ; // number of quark-partons in the Quasmon (just to accelerate) + G4QCandidateVector theQCandidates; // Vector of possible secondary hadrons/clusters (**delete!**) + G4double f2all; // Ratio of free nucleons to free+freeInDense nucleons @@ ?? + G4double rEP; // E+p for the Residual Coloured Quasmon im LS +++++ + G4double rMo; // p for the Residual Coloured Quasmon im LS +++++ + G4double totMass; // Mass of total compound system curQuasmon+curEnvironment + G4int bEn; // BaryoNumber of the Limit Active Nuclear Environment + G4double mbEn; // Mass of the LimActNucEnv + G4LorentzVector bEn4M; // 4-momentum of the LimitActiveNuclearEnviron + G4QContent bEnQC; // QuarkContent of the LimitActiveNuclEnv +}; + +inline int G4Quasmon::operator==(const G4Quasmon &right) const {return this == &right;} +inline int G4Quasmon::operator!=(const G4Quasmon &right) const {return this != &right;} +inline G4double G4Quasmon::GetTemper() const {return Temperature;} +inline G4double G4Quasmon::GetSOverU() const {return SSin2Gluons;} +inline G4double G4Quasmon::GetEtaSup() const {return EtaEtaprime;} +inline G4LorentzVector G4Quasmon::Get4Momentum() const {return q4Mom;} +inline G4QContent G4Quasmon::GetQC() const {return valQ;} +inline G4QPDGCode G4Quasmon::GetQPDG() const {return G4QPDGCode(valQ);} +inline G4int G4Quasmon::GetStatus() const {return status;} +inline void G4Quasmon::ClearOutput() + {G4std::for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron()); + theQHadrons.clear(); + } +inline void G4Quasmon::KillEnvironment() + {theEnvironment=G4QNucleus(0,0,0,G4LorentzVector(0.,0.,0.,0.));} +inline G4double G4Quasmon::GetRandomMass(G4int PDG, G4double maxM) +{ + G4QParticle* part = theWorld.GetQParticle(PDG); + return G4QHadron(part, maxM).GetMass(); +} + +inline void G4Quasmon::IncreaseBy(const G4Quasmon* pQuasm) +{ + valQ += pQuasm->GetQC(); + q4Mom += pQuasm->Get4Momentum(); + status= 3; +} + +inline void G4Quasmon::InitQuasmon(const G4QContent& qQCont, const G4LorentzVector& q4M) +{ + valQ = qQCont; + q4Mom = q4M; + status= 3; +} + +inline void G4Quasmon::KillQuasmon() +{ + static const G4QContent zeroQC(0,0,0,0,0,0); + static const G4LorentzVector nothing(0.,0.,0.,0.); + phot4M= nothing; + valQ = zeroQC; + q4Mom = nothing; + status= 0; +} + +#endif + + + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonVector.hh b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonVector.hh new file mode 100644 index 0000000000..b2358ac297 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/include/G4QuasmonVector.hh @@ -0,0 +1,41 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QuasmonVector.hh,v 1.9 2001/11/26 14:11:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QuasmonVector ---------------- +// by Mikhail Kossov, Sept 1999. +// Type definition for a Vector of Quasmons - output of CHIPS model +// ---------------------------------------------------------------- + +#ifndef G4QuasmonVector_h +#define G4QuasmonVector_h 1 + +#include "G4Quasmon.hh" +#include "g4std/vector" + +typedef G4std::vector G4QuasmonVector; +struct DeleteQuasmon{ void operator()(G4Quasmon *aN){delete aN;} }; + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCHIPSWorld.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCHIPSWorld.cc new file mode 100755 index 0000000000..2802600521 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QCHIPSWorld.cc @@ -0,0 +1,122 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QCHIPSWorld.cc,v 1.17 2001/11/26 14:11:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QCHIPSWorld ---------------- +// by Mikhail Kossov, Sept 1999. +// class for the CHIPS World definition in CHIPS Model +// ------------------------------------------------------------------- + +//#define debug +//#define pdebug + +#include "G4QCHIPSWorld.hh" + +G4QCHIPSWorld::G4QCHIPSWorld(G4int nOfParts) +{ + qWorld = InitCHIPSWorld(nOfParts); // Initialization of the CHIPS World with N particles +} + +G4QCHIPSWorld::G4QCHIPSWorld(const G4QCHIPSWorld& right) +{ + qWorld = right.qWorld; +} + +G4QCHIPSWorld::G4QCHIPSWorld(G4QCHIPSWorld* right) +{ + qWorld = right->qWorld; +} + +G4QCHIPSWorld::~G4QCHIPSWorld() {} + +const G4QCHIPSWorld& G4QCHIPSWorld::operator=(const G4QCHIPSWorld &right) +{// =================================================================== + qWorld = right.qWorld; + + return *this; +} + +// Standard output for CHIPS World +G4std::ostream& operator<<(G4std::ostream& lhs, G4QCHIPSWorld& rhs) +// ============================================ +{ + // @@ Later make a list of activated particles and clusters + lhs << "[ a#of particles in the CHIPS World =" << rhs.GetQPEntries() << "]"; + return lhs; +} + +//Initialize the CHIPS World of Quasmons +G4QParticleVector* G4QCHIPSWorld::InitCHIPSWorld(G4int nOfParts) +// ============================================= +{ + static G4int mnofParts = 486; // max number of particles (up to A=80) + static G4QParticleVector theWorld; // *** A body of the CHIPS World *** + static int init = 0; // Initialization counter (private) +#ifdef debug + G4cout<<"G4QCHIPSWorld::InitCHIPSWorld: n="<"<Get4Momentum()); + SetQPDG (right->GetQPDG()); + SetQC (right->GetQC()); + SetNFragments (right->GetNFragments()); + possible = right->possible; + parPossible = right->parPossible; + kMin = right->kMin; + denseProbability = right->denseProbability; + preProbability = right->preProbability; + relativeProbability = right->relativeProbability; + integralProbability = right->integralProbability; + secondRelProbability= right->secondRelProbability; + secondIntProbability= right->secondIntProbability; + // thePClusters + G4int nParCl = right->thePClusters.size(); + if(nParCl) for(G4int ip=0; ipthePClusters[ip]); + thePClusters.push_back(curPC); + } +} + +G4QCandidate::~G4QCandidate() +{ +#ifdef debug + G4cout<<"~G4QCandidate: before thePClusters nC="< Anti-fragment + { + //G4cerr<<"***G4QChipolino: ***Anti-nuclear fragments*** rQC="<=0&&nN>=0)||(nI<0&&nN>=-nI)) // Delta isn't necessary + { + if(nI>0) // Excess of antiprotons + { + theQPDG1 = G4QPDGCode(-(90000000+1000*(nN+nI-1)+nN)); // A Fragment-AProton + theQPDG2 = G4QPDGCode(-2212); // An Anti-Proton + } + else // Excess of a-neutrons + { + theQPDG1 = G4QPDGCode(-(90000000+1000*(nN+nI)+nN-1)); // A Fragment-ANeutron + theQPDG2 = G4QPDGCode(-2112); // An Anti-Neutron + } + } + else if((nI>=0&&nN>-2)||(nI<0&&nN>-nI-2)) // Delta can be a part + { + if(nI>0) // Excess of au-quarks + { + theQPDG1=G4QPDGCode(-(90000000+1000*(nN+nI-2)+nN+1)); // A Fragment-AProton + theQPDG2=G4QPDGCode(-2224); // An Anti-Delta++ + } + else // Excess of ad-quarks + { + theQPDG1=G4QPDGCode(-(90000000+1000*(nN+nI+1)+nN-2)); // A Fragment-ANeutron + theQPDG2=G4QPDGCode(-1114); // An Anti-Delta- + } + } + else + { + G4cerr<<"***G4QChipolino: **A**Isotopic asymmetry (without S)*** rQC="<0) // Excess of au-quarks + { + nN+=1; + theQPDG1 = G4QPDGCode(-(90000000+1000*(nN+nI-1)+nN)); // An Anti-Fragment + theQPDG2 = G4QPDGCode(-321); // A K- meson + } + else + { + theQPDG1 = G4QPDGCode(-(90000000+1000*(nN+nI+1)+nN)); // An AntiFragment + theQPDG2 = G4QPDGCode(-311); // An Anti-K0 meson + } + } + else + { + G4cerr<<"***G4QChipolino: ***Too many kaons are needed*** rQC="<=0&&nN>=0)||(nI<0&&nN>=-nI)) // Delta isn't necessary + { + if(nI>0) // Excess of protons + { + theQPDG1 = G4QPDGCode(-(90000000+1000*(kS*1000+nN+nI-1)+nN));// A Fragment-AProton + theQPDG2 = G4QPDGCode(-2212); // An Anti-Proton + } + else // Excess of neutrons + { + theQPDG1 = G4QPDGCode(-(90000000+1000*(kS*1000+nN+nI)+nN-1));//A Fragment-ANeutron + theQPDG2 = G4QPDGCode(-2112); // An Anti-Neutron + } + } + else if((nI>=0&&nN>-2)||(nI<0&&nN>-nI-2)) // Delta can be a part + { + if(nI>0) // Excess of au-quarks + { + theQPDG1=G4QPDGCode(-(90000000+1000*(kS*1000+nN+nI-2)+nN+1));// A Fragment-AProton + theQPDG2=G4QPDGCode(-2224); // An Anti-Delta++ + } + else // Excess of ad-quarks + { + theQPDG1=G4QPDGCode(-(90000000+1000*(kS*1000+nN+nI+1)+nN-2));//A Fragment-ANeutron + theQPDG2=G4QPDGCode(-1114); // An Anti-Delta- + } + } + else + { + G4cerr<<"***G4QChipolino: **A**Isotopic assimetry (with S)*** rQC="<mD) lam=mD; + G4int lD=mD-lam; // Residual ad-quarks + G4int lU=mU-lam; // Residual au-quarks + G4int lS=mS-lam; // Residual as-quarks + if(lD+lU+lS!=3||lD<0||lU<0||lS<0) + { + G4cerr<<"***G4QChipolino:*AntiFragm* rQC="< Nuclear Fragment + { + if(!kS) // No strange quarks + { + G4int nI=kU-kD; // Isotopic shift + G4int nN=(kU+kD-nI*3)/6; + if(!mS) // No kaons + { + if((nI>=0&&nN>=0)||(nI<0&&nN>=-nI)) // Delta isn't necessary + { + if(nI>0) // Excess of protons + { + theQPDG1 = G4QPDGCode(90000000+1000*(nN+nI-1)+nN); // A Fragment-Proton + theQPDG2 = G4QPDGCode(2212); // A Proton + } + else // Excess of neutrons + { + theQPDG1 = G4QPDGCode(90000000+1000*(nN+nI)+nN-1); // A Fragment-Neutron + theQPDG2 = G4QPDGCode(2112); // A Neutron + } + } + else if((nI>=0&&nN>-2)||(nI<0&&nN>-nI-2)) // Delta can be a part + { + if(nI>0) // Excess of u-quarks + { + theQPDG1=G4QPDGCode(90000000+1000*(nN+nI-2)+nN+1); // A Fragment-Proton + theQPDG2=G4QPDGCode(2224); // A Delta++ + } + else // Excess of d-quarks + { + theQPDG1=G4QPDGCode(90000000+1000*(nN+nI+1)+nN-2); // A Fragment-Neutron + theQPDG2=G4QPDGCode(1114); // A Delta- + } + } + else + { + G4cerr<<"***G4QChipolino: ***Isotopic assimetry (without S)*** rQC="<0) // Excess of u-quarks + { + nN+=1; + theQPDG1 = G4QPDGCode(90000000+1000*(nN+nI-1)+nN); // A Fragment + theQPDG2 = G4QPDGCode(321); // A K+ meson + } + else + { + theQPDG1 = G4QPDGCode(90000000+1000*(nN+nI+1)+nN); // A Fragment + theQPDG2 = G4QPDGCode(311); // A K0 meson + } + } + else + { + G4cerr<<"***G4QChipolino: ***Too many kaons are needed*** rQC="<=0&&nN>=0)||(nI<0&&nN>=-nI)) // Delta isn't necessary + { + if(nI>0) // Excess of protons + { + theQPDG1 = G4QPDGCode(90000000+1000*(kS*1000+nN+nI-1)+nN);// A Fragment-Proton + theQPDG2 = G4QPDGCode(2212); // A Proton + } + else // Excess of neutrons + { + theQPDG1 = G4QPDGCode(90000000+1000*(kS*1000+nN+nI)+nN-1);// A Fragment-Neutron + theQPDG2 = G4QPDGCode(2112); // A Neutron + } + } + else if((nI>=0&&nN>-2)||(nI<0&&nN>-nI-2)) // Delta can be a part + { + if(nI>0) // Excess of u-quarks + { + theQPDG1=G4QPDGCode(90000000+1000*(kS*1000+nN+nI-2)+nN+1);// A Fragment-Proton + theQPDG2=G4QPDGCode(2224); // A Delta++ + } + else // Excess of d-quarks + { + theQPDG1=G4QPDGCode(90000000+1000*(kS*1000+nN+nI+1)+nN-2);// A Fragment-Neutron + theQPDG2=G4QPDGCode(1114); // A Delta- + } + } + else + { + G4cerr<<"***G4QChipolino: ***Isotopic assimetry (with S)*** rQC="<kD) lam=kD; + G4int lD=kD-lam; // Residual d-quarks + G4int lU=kU-lam; // Residual u-quarks + G4int lS=kS-lam; // Residual s-quarks + if(lD+lU+lS!=3||lD<0||lU<0||lS<0) + { + G4cerr<<"***G4QChipolino: *Fragment* rQC="<theQPDG1; + theQPDG2 = right->theQPDG2; + theQCont = right->theQCont; + theQCont1 = right->theQCont1; + minM = right->minM; +} + +const G4QChipolino& G4QChipolino::operator=(const G4QChipolino &right) +{ + theQPDG1 = right.theQPDG1; + theQPDG2 = right.theQPDG2; + theQCont = right.theQCont; + theQCont1 = right.theQCont1; + minM = right.minM; + + return *this; +} + +G4QChipolino::~G4QChipolino() {} + +// Standard output for G4QChipolino +G4std::ostream& operator<<(G4std::ostream& lhs, G4QChipolino& rhs) +{// =========================================== + lhs<<"{1="<nU; + nD = right->nD; + nS = right->nS; + nAU = right->nAU; + nAD = right->nAD; + nAS = right->nAS; +} + +// Assignment operator (copy stile for possible Vector extention) +const G4QContent& G4QContent::operator=(const G4QContent &right) +{// ============================================== + nU = right.nU; + nD = right.nD; + nS = right.nS; + nAU = right.nAU; + nAD = right.nAD; + nAS = right.nAS; + + return *this; +} + +// Standard output for QC {d,u,s,ad,au,as} +G4std::ostream& operator<<(G4std::ostream& lhs, G4QContent& rhs) +{// ========================================= + lhs << "{" << rhs.GetD() << "," << rhs.GetU() << "," << rhs.GetS() << "," + << rhs.GetAD() << "," << rhs.GetAU() << "," << rhs.GetAS() << "}"; + return lhs; +} + +// Standard output for const QC {d,u,s,ad,au,as} +G4std::ostream& operator<<(G4std::ostream& lhs, const G4QContent& rhs) +{// =============================================== + lhs << "{" << rhs.GetD() << "," << rhs.GetU() << "," << rhs.GetS() << "," + << rhs.GetAD() << "," << rhs.GetAU() << "," << rhs.GetAS() << "}"; + return lhs; +} + +// Subtract Quark Content +G4QContent G4QContent::operator-=(const G4QContent& rhs) +// ============================================= +{ +#ifdef debug + G4cout<<"G4QC::-=(const): is called:"<0||dAU>0) + { + G4int kU=dU; + if(kU0||dAD>0) + { + G4int kD=dD; + if(kDrU&&nAU>rAU) + { + rU +=1; + rAU+=1; + } + else + { + rD +=1; + rAD+=1; + } + } + nD -= rD; + if (nD<0) + { + nAD -= nD; + nD = 0; + } + nU -= rU; + if (nU<0) + { + nAU -= nU; + nU = 0; + } + nS -= rS; + if (nS<0) + { + nAS -= nS; + nS = 0; + } + nAD -= rAD; + if (nAD<0) + { + nD -= nAD; + nAD = 0; + } + nAU -= rAU; + if (nAU<0) + { + nU -= nAU; + nAU = 0; + } + nAS -= rAS; + if (nAS<0) + { + nS -= nAS; + nAS = 0; + } + return *this; +} + +// Subtract Quark Content +G4QContent G4QContent::operator-=(G4QContent& rhs) +// ======================================= +{ +#ifdef debug + G4cout<<"G4QC::-=: is called:"<0||dAU>0) + { + G4int kU=dU; + if(kU0||dAD>0) + { + G4int kD=dD; + if(kDrU&&nAU>rAU) + { + rU +=1; + rAU+=1; + } + else + { + rD +=1; + rAD+=1; + } + } + nD -= rD; + if (nD<0) + { + nAD -= nD; + nD = 0; + } + nU -= rU; + if (nU<0) + { + nAU -= nU; + nU = 0; + } + nS -= rS; + if (nS<0) + { + nAS -= nS; + nS = 0; + } + nAD -= rAD; + if (nAD<0) + { + nD -= nAD; + nAD = 0; + } + nAU -= rAU; + if (nAU<0) + { + nU -= nAU; + nAU = 0; + } + nAS -= rAS; + if (nAS<0) + { + nS -= nAS; + nAS = 0; + } + return *this; +} + +// Overloading of QC addition +G4QContent operator+(const G4QContent& lhs, const G4QContent& rhs) +{// ======================================================= + G4QContent s = lhs; + return s += rhs; +} + +// Overloading of QC subtraction +G4QContent operator-(const G4QContent& lhs, const G4QContent& rhs) +{// ======================================================= + G4QContent s = lhs; + return s -= rhs; +} + +// Overloading of QC multiplication by Int +G4QContent operator*(const G4QContent& lhs, const G4int& rhs) +{// ======================================================= + G4QContent s = lhs; + return s *= rhs; +} + +// Overloading of Int times QC multiplication +G4QContent operator*(const G4int& lhs, const G4QContent& rhs) +{// ======================================================= + G4QContent s = rhs; + return s *= lhs; +} + +// Destructor - - - - - - - +G4QContent::~G4QContent() {} + +// Subtract neutral pion from Quark Content (with possible hidden strangeness) +G4bool G4QContent::SubtractPi0() +{// ========================= +#ifdef debug + G4cout<<"G4QC::SubtractPi0 is called: U="<0) // baryonium + { + G4QContent la(1,1,1,0,0,0); + G4QContent nt(2,1,0,0,0,0); + G4QContent pr(1,2,0,0,0,0); + G4QContent ks(0,1,2,0,0,0); + if (nD>nU) ks=G4QContent(1,0,2,0,0,0); + G4QContent dm(3,0,0,0,0,0); + G4QContent dp(0,3,0,0,0,0); + G4QContent om(0,0,3,0,0,0); + if (nU>=nD&&nU>=nS) + { + if (r.SubtractHadron(pr)) return r-pr; + else if(r.SubtractHadron(dp)) return r-dp; + else if(r.SubtractHadron(nt)) return r-nt; + else if(r.SubtractHadron(la)) return r-la; + else if(r.SubtractHadron(dm)) return r-dm; + else + { + //#ifdef erdebug + G4cerr<<"***G4QCont::SplitChipo: Dibaryon (1) tot=6, b=2, qCont="<=nU&&nD>=nS) + { + if (r.SubtractHadron(nt)) return r-nt; + else if(r.SubtractHadron(dm)) return r-dm; + else if(r.SubtractHadron(pr)) return r-pr; + else if(r.SubtractHadron(dp)) return r-dp; + else if(r.SubtractHadron(la)) return r-la; + else + { + //#ifdef erdebug + G4cerr<<"***G4QContent::SplitChipo: Dibaryon (2) tot=6, b=2, qCont="<=nAU) nUP=nAU; + else nUP= nU; + + G4int nDP=0; // D/AD min factor (a#of d which can be subtracted) + if (nD>=nAD) nDP=nAD; + else nDP= nD; + + G4int nSP=0; // S/AS min factor (a#of s which can be subtracted) + if (nS>=nAS) nSP=nAS; + else nSP= nS; + + G4int nLP =nUP+nDP; // a#of light quark pairs which can be subtracted + G4int nTotP=nLP+nSP; // total#of existing pairs which can be subtracted + G4int nReal=nQAQ; // demanded #of pairs for reduction (by demand) + G4int nRet =nTotP-nQAQ; // a#of additional pairs for further reduction + if (nQAQ<0) // === Limited reduction case @@ not tuned for baryons !! + { + G4int res=tot+nQAQ; +#ifdef pdebug + G4cout<<"G4QC::DecQC: tot="<(base*G4UniformRand()); // Random integer "SortOfQuark" + if (nUP && j2 || nUP>1 || (nD<2 && nS<2))) // --- U-Ubar pair + { +#ifdef pdebug + G4cout<<"G4QC::DecQC: decrementing UAU pair UP="<>>OUT<<< nRet="<nAU && nAU>0) + { + mU=nU-nAU; + n-=nAU+nAU; + } + if (nAU>nU && nU>0) + { + mU=nAU-nU; + n-=nU+nU; + } + if ( nD>nAD && nAD>0) + { + mD=nD-nAD; + n-=nAD+nAD; + } + if (nAD>nD && nD>0) + { + mD=nAD-nD; + n-=nD+nD; + } + if ( nS>nAS && nAS>0) + { + mS=nS-nAS; + n-=nAS+nAS; + } + if (nAS>nS && nS>0) + { + mS= nAS-nS; + n-=nS+nS; + } + // ---------------------- Cancelation of q-qbar pairs in case of an equality + if (nAD==nD && nD>0) + { + G4int dD=nD+nD; + if(n>dD) + { + mD=0; + n-=dD; + } + else if (n==dD) + { + mD=2; + n=2; + } + else + { +#ifdef pdebug + G4cout<<"***G4QC::SPDG: CancelationD U="<0) + { + G4int dU=nU+nU; + if(n>dU) + { + mU=0; + n-=dU; + } + else if (n==dU) + { + mU=2; + n=2; + } + else + { +#ifdef pdebug + G4cout<<"***G4QC::SPDG: CancelationU U="<0) //@@ Starts with S-quarks - should be randomized and mass limited + { + G4int dS=nS+nS; + if(n>dS) + { + mS=0; + n-=dS; + } + else if (n==dS) + { + mS=2; + n=2; + } + else + { +#ifdef pdebug + G4cout<<"***G4QC::SPDG: CancelationS U="<4 SuperExo: U="<1) + { +#ifdef debug + G4cout<<"***G4QC::SPDG: Strangeness="<0) // Strange Mesons + { + p=301; + if (mS==2) + { + //if (G4UniformRand()<0.333) p=221; // eta + //else p+=30; // eta' + p=221; + } + else if (mU==1 && mD==0) p+=20; + else if (mU==0 && mD==1) p+=10; + else + { +#ifdef debug + G4cout<<"*G4QC::SPDG:Exotic MesonS U="<0) // Isotopic Mesons + { + p=201; + if (mU==2 && mD==0) p=221; + else if (mU==1 && mD==1) p+=10; + else + { +#ifdef debug + G4cout<<"*G4QC::SPDG:Exotic MesonU U="<GetMass(); + aVecOfSecHadrons.push_back(firstPDG); + G4QPDGCode* secondPDG = new G4QPDGCode(PDG2); + theMinMass+=secondPDG->GetMass(); + aVecOfSecHadrons.push_back(secondPDG); + if(PDG3) + { + G4QPDGCode* thirdPDG = new G4QPDGCode(PDG3); + theMinMass+=thirdPDG->GetMass(); + aVecOfSecHadrons.push_back(thirdPDG); + } +#ifdef debug + cout<<"G4QDecayChan is defined with pL="<GetPDGCode(); + } + lhs << "]"; + return lhs; +} + + + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc new file mode 100644 index 0000000000..95740dd875 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc @@ -0,0 +1,4206 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QEnvironment.cc,v 1.42 2001/11/28 13:32:07 stesting Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QEnvironment ---------------- +// by Mikhail Kossov, August 2000. +// class for Multy Quasmon Environment used by the CHIPS Model +// ------------------------------------------------------------ + +//#define debug +//#define pdebug +//#define ppdebug +//#define sdebug + +#include "G4QEnvironment.hh" + +G4QEnvironment::G4QEnvironment(const G4QHadronVector& projHadrons, const G4int targPDG) : + theEnvironment(90000000) // User is responsible for projHadrons(Vector) +{ + G4int nHadrons=projHadrons.size(); // A#of hadrons in the input Vector + if(!nHadrons||targPDG==90000000) + { + G4cerr<<"***G4QEnvironment: a#of INPUT QHadrons="< "Interaction with vacuum" case + { + G4int hPDG = curHadr->GetPDGCode();// A PDG Code of the projQHadron + if(!hPDG||hPDG==10) // Check for the validity of the QHadron (@@ 10 OK?) + { + G4cerr<<"***G4QEnvironment::Constructor: wrong PDG("<GetQCode(); // One more check for valid of the QHadron + if(hQ<0) + { + G4cerr<<"***G4QEnvironment::Constructor: Q<0, PDG=("<GetPDGCode(); // A PDG Code of the projQHadron + if(!hPDG||hPDG==10) // Check for the validity of the QHadron + { + G4cerr<<"***G4QEnvironment::Constructor:Vacuum, 1st Hadron wrong PDG="<GetQCode(); // One more check for valid of the QHadron + if(hQ<0) + { + G4cerr<<"***G4QEnvironment::Constructor:Vacuum, Q<0, 1st HPDG="<Get4Momentum(); + G4QContent hQC = curHadr->GetQC(); + if(!targPDG||targPDG==10) G4cout<<"G4QEnv::CreateQ; (1) PDG="<80000000&&targPDG!=90000000) // Interaction with a nuclear target + { + G4double tgMass=theEnvironment.GetMass(); // mass of the target (QEnvironment) nucleus +#ifdef pdebug + G4cout<<"G4QEnvironment::CreateQ:Interact "<size(); // For the selection LOOP ^ ^ + G4ThreeVector dir = RndmDir(); // For the selection in the LOOP ^ ^ +#ifdef pdebug + G4cout<<"G4QEnvironment::CreateQ: Loop over "<operator[](ind); // Pointer to the current hadron ^ ^ + G4int shDFL= curHadr->GetNFragments(); // A#of decay fragments for proj. ^ ^ + G4LorentzVector sh4m = curHadr->Get4Momentum(); // 4Mom for the projectile ^ ^ + G4ThreeVector shDIR= sh4m.vect().unit(); // Projection to the random direction ^ ^ +#ifdef pdebug + G4cout<<"G4QE::CrQ:##"<GetPDGCode()<GetPDGCode(); // Only for debug printing ^ ^ + G4LorentzVector h4M = curHadr->Get4Momentum(); // Only for gebug printing ^ ^ + G4cout<<"G4QE::CrQ: Fill #"<GetPDGCode(); // Only for gebug printing ^ ^ + G4LorentzVector h4M = curHadr->Get4Momentum(); // Only for gebug printing ^ ^ + G4cout<<"G4QE::CrQ: Fill OUT #"<begin(), output->end(), DeleteQHadron()); // DESTROING output >------^ + delete output; // =============================================^ + if(!efFlag) // => Not Energy Flux case: MultyQuasmon case ^ + { + if(!(input.size())) return; // *** RETURN *** Without Quasmon creation-------^ +#ifdef pdebug + G4cout<<"G4QEnvironment::CreateQ: Creation of a fake Quasmon to restore parameters"<--------^-----^ + input.clear(); + theEnvironment =muq->GetEnvironment(); // Get residual Environment after interaction + G4QuasmonVector* outQ = muq->GetQuasmons();// Copy of quasmons **!!DESTROY!!** <---^-----+ + G4QHadronVector* outH = muq->GetQHadrons();// Copy of hadrons **!!DESTROY!!** <----^--+ ^ + G4int noh = outH->size(); // a#oh hadrons in TmpEnviron UpToNow ^ ^ ^ + if(noh) for(G4int kh=0; khoperator[](kh)); // Make a copy to destroy tmp ^ ^ ^ + theQHadrons.push_back(curH); // Fill new Hadrons in theQHadrons ^ ^ ^ + } + G4std::for_each(outH->begin(), outH->end(), DeleteQHadron());// >------------------------------------^==^ ^ + delete outH; // >====================================^==^ ^ +#ifdef pdebug + G4cout<<"G4QEnvironment::CreateQ: before delete muq"<size(); // A#of Quasmons in MultyQuasmon output ^ +#ifdef pdebug + G4cout<<"G4QEnvironment::CreateQ: after GetQuasmon nMQ="<operator[](mh)); // Make a copy to destroy temporary (?) ^ + theQuasmons.push_back(curQ); // Fill new Quasmon-copies in theQuasmons ^ + } + G4std::for_each(outQ->begin(), outQ->end(), DeleteQuasmon()); // >------------------------------------------^ + delete outQ; // >==========================================^ +#ifdef pdebug + G4cout<<"G4QEnvironment::CreateQ: befor return"< Energy Flux case + { + if (!efCounter) return; // *** RETURN *** Without Quasmon creation + } + } // End of Hyperon annihilation case + else EnFlQC=projQC; // If it's not anti-baryon don't use Energy Flux + G4double EnFlP=ef4Mom.rho(); + PrepareInteractionProbabilities(EnFlQC,EnFlP); // Interaction probabilities for clusters +#ifdef pdebug + G4cout<<"G4QEnvironment::CreateQ: Interaction Probabilities are calculated"<GetIntegProbability(); + G4int i=0; + G4QContent curQC; // Quark Content of the selected cluster + if(nCandid<=0) + { + G4cerr<<"***G4QEnv::CreateQ: nC="<3) //@@ ***TMP*** PhotonAbsorbtion by q is closed + { + q4Mom=G4LorentzVector(0.,0.,0.,tgMass-envMass);// Photon interacts with BoundedCluster + valQ=curQC; +#ifdef pdebug + G4cout<<"G4QEnv::CreateQ:Q="<GetPDGCode(); + if(cPDG>80000000&&cPDG!=90000000) // ===> Cluster case + { + G4QNucleus cN(cPDG); + G4int zc = cN.GetZ(); // "Z" of the cluster + G4int nc = cN.GetN(); // "N" of the cluster + ///////////G4int sc = cN.GetS(); // "S" of the cluster + G4int ac = cN.GetA(); // "A" of the cluster + G4double nOfCl=curCand->GetPreProbability(); // A number of clusters of the type + G4double dOfCl=curCand->GetDenseProbability();// A number of clusters in dense region + if(cPDG==91000000||cPDG==90001000||cPDG==90000001) + { + allB+=nOfCl; + denseB+=dOfCl; + } + G4QContent pQC=curCand->GetQC(); // Quark Content of the candidate + ////////////G4int pC = projQC.GetCharge(); // Charge of the projectile + G4QContent qQC=pQC+projQC; // Total Quark content of the Compound + G4QPDGCode qQPDG(qQC); + G4int qC = qQPDG.GetQCode(); + G4double d = abs(zc-nc); + G4double fact=1./pow(2.,d); + if (qC<-1) probab=0.; + //else if((pPDG==-211&&AP<10.||pPDG==22&&AP<150.)&&ac<2) probab=0.; //PiCapAtRest/GamUndrPi(D) + //else if(pPDG==22&&AP<152.&&ac<2) probab=nOfCl*ac*fact*.5; //GamUnderPi (only quark capture) + ///////////////////////////////else if((pPDG==-211&&AP<10.)&&ac<2) probab=0;//PiCapAtRest(D) + //else if(pPDG==-211&&AP<10.) probab=nOfCl*fact; // special PiCaptureAtRest + //else if(pPDG==-211&&AP<10.) probab=nOfCl*ac*(ac-1)*fact; + else probab=nOfCl*ac*fact; + //else probab=dOfCl*ac*fact; + //if(ac>1) probab=0.; // Suppress clusters + //if(ac>2) probab=0.; // Suppress heavy clusters +#ifdef sdebug + G4int pPDG = projQC.GetSPDGCode(); // PDG code of the projectile particle + G4int rPDG = qQC.GetSPDGCode(); + G4double baryn = qQC.GetBaryonNumber(); + G4double charge= qQC.GetCharge(); + G4double dq= abs(baryn-charge-charge); + G4cout<<"G4QE::PrepIntProb:C="< HADRONIZE Q-ENVIRONMENT="< Fill QEnviron + { + G4int nPDG = theEnvironment.GetPDG(); // PDG code of the residual Nucl.Environ. +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE: ***NO QUASMONS*** Env="<80000000) + { + G4QHadron* rNucleus = new G4QHadron(theEnvironment); // Create a Hadron for the Environment + theQHadrons.push_back(rNucleus); // Fill GS - no further decay (delete equivalent) +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE: >>>> Fill Environment"< "Environment is Vacuum" case + { +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE: ***Vacuum*** #ofQ="<GetStatus())nlq++; + if(nQuasmons) for(G4int iq=0; iqGetStatus(); // Status of the Quasmon before fragmentation + if(ist) + { + G4QHadronVector* output=theQuasmons[iq]->Fragment(vE,1);//!!!DESTROY!!! <----------------+ + G4int ast=theQuasmons[iq]->GetStatus(); // Status of the Quasmon after fragmentation ^ + if(!ast) nlq--; // Reduce nlq is Quasmon decayed ^ + G4int nHadrons = output->size(); // A#of output Hadrons in the Quasmon ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE: ***Vacuum*** Q#"<GetQPDG().GetPDGCode()==90001001)G4cout<<"G4QE::HQE: Get Deute"<GetQC(); + G4int tQBN=totQC.GetBaryonNumber();// Baryon Number of not decayed Quasmon ^ + G4QNucleus tqN(totQC); // Define the quasmon as a nucleus ^ + G4double gsM=tqN.GetMZNS(); // GS Mass ^ + G4LorentzVector tot4M=theQuasmons[iq]->Get4Momentum(); + G4double totQM=tot4M.m(); // Real Mass of Quasmon ^ + if(tQBN>0&&totQM>gsM) // => "Try Quasmon evaporation" case ^ + { + G4QHadron* nuclQ = new G4QHadron(totQC,tot4M); + EvaporateResidual(nuclQ); // Try to evaporate Quasmon (delete equivalent) ^ + theQuasmons[iq]->KillQuasmon(); // Kill evaporated Quasmon ^ + nlq--; + } + else if(iq+11) // => "Try to merge with next" case ^ + { + G4int s=theQuasmons[iq+1]->GetStatus();//Status of the next Quasmon ^ + theQuasmons[iq+1]->IncreaseBy(theQuasmons[iq]);// Merge with the next Quasmon ^ + theQuasmons[iq]->KillQuasmon(); // Kill the week Quasmon ^ + if(s) nlq--; // Reduce a number of "living Quasmons" ^ + } + else if(iq+1==nQuasmons&&iq&&nlq>1) // => "Quasmon stack is exhosted" case ^ + { + G4int s=theQuasmons[0]->GetStatus(); // Status of the first Quasmon ^ + theQuasmons[0]->IncreaseBy(theQuasmons[iq]);// Merge with the first Quasmon ^ + theQuasmons[iq]->KillQuasmon(); // Kill the week Quasmon ^ + if(s) nlq--; // Reduce a number of "living Quasmons" ^ + } + else // "Have a chance to recover" case ^ + { +#ifdef pdebug + G4cout<<"***G4QEnv::HadrQE:"<Get4Momentum(); // 4Mom of the previouse Quasmon ^ + lastQC = theLast->GetQC(); // Quark Content of the previouse Quasmon ^ + } + else // Just Clear and destroy the Last ^ + { + theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT ^ + delete theLast; // the last QHadron is deleated as instance ^ + } + totQC+=lastQC; // Update (increase) the total QC ^ + tot4M+=last4M; // Update (increase) the total 4-momentum ^ + totQM=tot4M.m(); // Calculate new real total mass ^ + G4QNucleus nN(totQC); // Define the Quasmon as a nucleus ^ + gsM=nN.GetMZNS(); // Calculate the new GS Mass ^ + dM = totQM-gsM; // Escitation energy for the Quasmon ^ + if(dM>0) // "Mass of Q is big enough" case ^ + { + theQuasmons[iq]->InitQuasmon(totQC,tot4M);// Update the week Quasmon ^ + G4QHadronVector* curout=theQuasmons[iq]->Fragment(vE,1);//!!!DESTROY!!! <----+ ^ + G4int ast=theQuasmons[iq]->GetStatus(); // Status of the Quasmon ^ ^ + if(!ast) nlq--; // Reduce nlq is Quasmon decayed ^ ^ + G4int nHadrons=curout->size(); // A#of output Hadrons in the week Quasmon ^ ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQEnv:VacuumRecoverQ#"<0) // => "QHadrons from Quasmon to Output" ^ ^ + { + for (G4int ih=0; ihoperator[](ih)); // ^ ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE:Recovered, H#"<begin(), output->end(), DeleteQHadron());// >--------------------^ + delete output; // >============================================^ + } // End of check for the already decayed Quasmon + } // End of the LOOP over Quasmons + } + else // ==> "Nuclear environment" case + { +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE:FRAGMENTATION IN NUCLEAR ENVIRONMENT nQ="<1&&envA<13) premC = 24/envA; + if(envA>1&&envA<19) premC = 36/envA; + //if(envA>1&&envA<25) premC = 48/envA; + //if(envA>1&&envA<31) premC = 60/envA; + G4int sumstat= 2; // Sum of statuses of all Quasmons + G4bool force = false; // Prototype of the Force Major Flag + G4int totC = 0; // Counter for the "infinit" loop + G4int totCM = 227; // Limit for this counter + while (sumstat||totC>"<GetQC(); + totQC += QQC; + G4LorentzVector Q4M= pQ->Get4Momentum(); + tot4M += Q4M; + G4double QM = Q4M.m(); + sumM += QM; + G4int Qst= pQ->GetStatus(); + sumstat += Qst; +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE:#"< "Still try to decay Quasmons" case + { + if(!fCount)premC--; // Reduce premium efforts counter + for (G4int jq=0; jqGetStatus(); // Old status of the Quasmon + if(status) // Skip dead Quasmons + { + G4QHadronVector* output=pQ->Fragment(theEnvironment,eCount);//**!!DESTROY!!** <------+ + status = pQ->GetStatus(); // New status after fragmentation attempt ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE: **FragmAttempt** jq="< "Suck in the existing Quasmon" case ^ + { + G4QContent tQC=inpH->GetQC()+pQ->GetQC(); // ^ + G4LorentzVector tLV=hLV+pQ->Get4Momentum();// ^ + pQ->InitQuasmon(tQC,tLV); // Reinitialize the current Quasmon ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE:Medium, H#"< "Suck in the existing Quasmon" case ^ + { + G4QContent tQC=inpH->GetQC()+theEnvironment.GetQCZNS();// ^ + G4LorentzVector tLV=hLV+theEnvironment.Get4Momentum(); // ^ + theEnvironment=G4QNucleus(tQC,tLV); // Reinit the current Environment ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE:Medium, H#"< "Hadron can go out" case ^ + { + G4QHadron* curH = new G4QHadron(inpH); // ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE:Medium, H#"<KillQuasmon(); // If BackFusion succeeded, kill the Quasmon ^ + return theQHadrons; + } + if(status<0&&nHadrons) + { + G4cerr<<"***G4QEnv::HadrQE: nH="<Get4Momentum()+theEnvironment.Get4Momentum(); // ^ + G4double tM=t4M.m(); // Real total (with environment) mass ^ + G4QContent qQC= pQ->GetQC(); // QuarkContent of the Quasmon ^ + G4QContent envQC=theEnvironment.GetQCZNS(); // QuarkCont of NucEnviron ^ + G4QContent curQC=envQC+qQC; // Total Quark Content ^ + G4QNucleus curE(curQC); // Pseudo nucleus for the Total System ^ + G4double curM=curE.GetMZNS();// min mass of the Total System ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQEnv:#"< gstM="<Get4Momentum(); // 4Mom for the Quasmon ^ + G4QPDGCode QPDGQ=pQ->GetQPDG();// QPDG Code for the Quasmon ^ + G4int PDGQ=QPDGQ.GetPDGCode(); // PDG Code of the QUASMON ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQEnv: vacuum PDGQ="< gsM="<KillQuasmon(); // Make done the current Quasmon ^ + } + else if(qMKillQuasmon(); + // return theQHadrons; + //} + G4int ppm=jq; // Initialized by PANIC Quasmon pointer ^ + G4int nRQ=0; // Prototype of a#of additional real Quasmons ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQEnv: ***PANIC*** for jq="<Get4Momentum().vect(); // momentum of the PANIC Quasmon ^ + G4double dpm=1.e+30; // Just a big number (dot product of momenta) ^ + for(G4int ir=0; irGetStatus(); // Status of a Quasmon ^ + if(Qst>0) // Skip the dead Quasmon ^ + { + nRQ++; // Increment real-Quasmon-counter ^ + G4double dp=vp.dot(rQ->Get4Momentum().vect()); + if(dpGetQC(); + G4LorentzVector r4M= rQ->Get4Momentum(); + rQC += pQ->GetQC(); + r4M += pQ->Get4Momentum(); + rQ->InitQuasmon(rQC, r4M); // Make new Quasmon ^ + pQ->KillQuasmon(); // Delete old Quasmon ^ + } + else // No candidate to resolve PANIC was found ^ + { + //if(eCount==1 && CheckGroundState(pQ, true)) // BackFusion attempt ^ + if(eCount==1 && CheckGroundState(pQ)) // BackFusion attempt ^ + { + pQ->KillQuasmon(); // ^ + return theQHadrons; // ^ + } +#ifdef pdebug + G4cout<<"G4QEnv::HadrQEnv: Cann't resolve PANIC, try to Evaporate"<begin(), output->end(), DeleteQHadron()); // >--------------------------------------------^ + delete output; // >============================================^ + } + } // End of fragmentation LOOP over Quasmons (jq) + } + else if(totMass>totM+.001) // ==> "Try Evaporation or decay" case + { +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE: M="<"M"case + { + G4cerr<<"***G4QEnv::HadrQEnv: Meson (2) PDG="<SetNFragments(2); // Put a#of Fragments=2 + //theQHadrons.push_back(delta); // Fill the residual DELTA (delete equivalent) + // Instead + delete delta; + // + G4LorentzVector b4Mom(0.,0.,0.,mBar); + G4LorentzVector m4Mom(0.,0.,0.,mMes); + if(!G4QHadron(tot4M).DecayIn2(b4Mom, m4Mom)) + { + G4cerr<<"***G4QEnv::HadronizeQEnv: B="<(?) mD="<B+M decay failed"); + } +#ifdef pdebug + G4cout<<"G4QEnv::HadronizeQEnv: DELTA="< Bar=" + <(?) mChipo="<1+2 decay failed"); + } +#ifdef pdebug + G4cout<<"G4QEnv::HadronizeQEnv: Chipo="< h1=" + <(?) mTot="< h="<(?) mTot="< h="<Fragment(vacuum,1);//**!!DESTROY!!** <-+ ^ + delete resid; //_______________________________^_____^ + G4int nHadrons = curout->size(); // a#of Hadrons in the outHV ^ + if(nHadrons>0) // Transfer QHadrons to Output ^ + { + for (G4int ih=0; ihoperator[](ih)); // ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE:NewB<2, H#"<begin(), curout->end(), DeleteQHadron()); // >-----------------------------^ + delete curout; // >=============================^ + return theQHadrons; + } + } + else + { + G4QContent tQC =totQC; // Not subtracted copy for error prints + G4int NaK =0; // a#of additional Kaons/anti-Kaons + G4int aKPDG =0; // PDG of additional Kaons/anti-Kaons + G4double MaK =0.; // Total Mass of additional Kaons/anti-Kaons + G4int NPi =0; // a#of additional pions + G4int PiPDG =0; // PDG of additional pions + G4double MPi =0.; // Total Mass of additional pions + if (totBN>0&&totS<0&&totChg+totChg>=totBN)// => "additional K+" case + { + aKPDG=321; + NaK=-totS; + MaK=mK*NaK; + totQC+=totS*KpQC; + totChg+=totS; // Charge reduction (totS<0!) + totS=0; // Anti-strangness goes to anti-Kaons + } + else if (totBN>0&&totS<0) // => "additional aK0" case + { + aKPDG=311; + NaK=-totS; + MaK=mK0*NaK; + totQC+=totS*K0QC; + totS=0; // Anti-strangness goes to anti-Kaons + } + else if (totBN>0&&totS>totBN&&totBN "additional K0" case + {// @@ Here Ksi0 check should be added totS=2>totBN=1&&totBN=10&&totS>totBN&&totChg<0) // => "additional K-" case + {// @@ Here Ksi- check should be added totS=2>totBN=1&&totChg=-1<0 + aKPDG=-321; + NaK=totS-totBN; + MaK=mK0*NaK; + totQC+=NaK*KpQC; + totChg+=NaK; // Increase residual charge + totS-=NaK; // Reduce residual strangeness + } + // === Now residual DELTAS should be subtracted === + if (totBN>0&&totChg>totBN-totS) // => "additional PI+" case + {// @@ Here Sigma+ check should be added totChg=1>totBn=1-totS=1 + PiPDG=211; + NPi=totChg-totBN+totS; + MPi=mPi*NPi; + totQC-=NPi*PiQC; + totChg-=NPi; + } + else if (totBN>0&&totChg<0) // => "additional PI-" case + {// @@ Here Sigma- check should be added totChg<0 + PiPDG=-211; + NPi=-totChg; + MPi=mPi*NPi; + totQC+=NPi*PiQC; // Now anti-Pions must be subtracted + totChg+=NPi; + } + else if (!totBN&&totChg>1-totS) // => "additional PI+" case + {// @@ Here Sigma+ check should be added totChg=1>totBn=1-totS=1 + PiPDG=211; + NPi=totChg+totS-1; + MPi=mPi*NPi; + totQC-=NPi*PiQC; + totChg-=NPi; + } + else if (!totBN&&totChg<-1-totS) // => "additional PI-" case + {// @@ Here Sigma- check should be added totChg<0 + PiPDG=-211; + NPi-=totChg+totS+1; + MPi=mPi*NPi; + totQC+=NPi*PiQC; // Now anti-Pions must be subtracted + totChg+=NPi; + } + G4double totRM=0.; // min (GroundSt) Mass of the Residual System + if(totBN<2) + { + totPDG=totQC.GetSPDGCode(); // Minimal PDG Code for the Residual compound + if(totPDG) totRM=G4QPDGCode(totPDG).GetMass(); // min Mass of the Residual System + else G4Exception("G4QEnv::HadrQEnv: Impossible PDG for B=1"); + } + else + { + G4QNucleus totN(totQC,tot4M); // Excited nucleus for the Residual System + totRM=totN.GetMZNS(); // min (GroundSt) Mass of the Residual System + totPDG=totN.GetPDG(); // Total PDG Code for the Current compound + } + if(NaK) // ==> "Decay in K0 or K+ + NPi" case + {//@@ Can (must) be moved to EvaporateResidual ?? + if(NaK==1&&!NPi) // ==> "One anti-strange K" case + { + G4LorentzVector m4Mom(0.,0.,0.,MaK); + G4LorentzVector n4Mom(0.,0.,0.,totRM); + if(!G4QHadron(tot4M).DecayIn2(m4Mom, n4Mom)) + { + G4cerr<<"***G4QEnv::HadronizeQEnv: M="<(?) mSN="< M=" + <(?)SN="< nK="<(?)SN="< N*K="< "One isobar" case + { + G4LorentzVector m4Mom(0.,0.,0.,MPi); + G4LorentzVector n4Mom(0.,0.,0.,totRM); + if(!G4QHadron(tot4M).DecayIn2(m4Mom, n4Mom)) + { + G4cerr<<"***G4QEnv::HadronizeQEnv: M="<(?) mSN="< M=" + <(?)SN="< N*PI="<0, tBN="<0.001&&totBN>0)EvaporateResidual(evH); // Try to evaporate residual (delete equiv.) + else if(totBN==2) DecayDibaryon(evH); // Decay dibaryon (delete equivalent) + else if(totBN==5) DecayAlphaBar(evH); //DelEqu + else if(totPDG==90004004) DecayAlphaAlpha(evH); //DelEqu + else theQHadrons.push_back(evH);// Fill to OUTPUT as it is (delete equiv.) + } + else if(nQuasmons==1&&QPDG!=22) // => "Decay in Quasmon + QEnviron" case + { + G4int envPDG = theEnvironment.GetPDG();// PDGCode of the NuclQEnvironment +#ifdef pdebug + G4cout<<"G4QEnv::HadrQEnv: nQ=1, QPDG=="< "Quasmon-Chipolino or Environment-Dibaryon" case + else if(QPDG==10||QPDG==92000000||QPDG==90002000||QPDG==90000002) + { + G4QContent QQC = pQ->GetQC(); // Quark Content of the Quasmon + G4QPDGCode h1QPDG=nQPDG; // QPDG of the first hadron + G4double h1M =mNeut; // Mass of the first hadron + G4QPDGCode h2QPDG=h1QPDG; // QPDG of the second hadron + G4double h2M =mNeut; // Mass of the second hadron + if(QPDG==10) + { + G4QChipolino QChip(QQC); // define the Quasmon as a Chipolino + h1QPDG=QChip.GetQPDG1(); // QPDG of the first hadron + h1M =h1QPDG.GetMass(); // Mass of the first hadron + h2QPDG=QChip.GetQPDG2(); // QPDG of the second hadron + h2M =h2QPDG.GetMass(); // Mass of the second hadron + } + else if(QPDG==90002000) + { + h1QPDG=pQPDG; // QPDG of the first hadron + h1M =mProt; // Mass of the first hadron + h2QPDG=h1QPDG; // QPDG of the second hadron + h2M =mProt; // Mass of the second hadron + } + else if(QPDG==92000000) + { + h1QPDG=lQPDG; // QPDG of the first hadron + h1M =mLamb; // Mass of the first hadron + h2QPDG=h1QPDG; // QPDG of the second hadron + h2M =mLamb; // Mass of the second hadron + } + if(h1M+h2M+envM "Three parts decay" case + { + G4LorentzVector h14M(0.,0.,0.,h1M); + G4LorentzVector h24M(0.,0.,0.,h2M); + G4LorentzVector e4M(0.,0.,0.,envM); + if(!G4QHadron(tot4M).DecayIn3(h14M,h24M,e4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< h1="<KillQuasmon(); + return theQHadrons; + } +#ifdef pdebug + G4cerr<<"***G4QEnv::HadQEnv: tM="< "Two particles decay" case + { + G4double QM = pQ->Get4Momentum().m();// Real Mass of the Quasmon + G4double GSM= QQPDG.GetMass(); // GS Mass of the Quasmon + if(QMtotMass) + { +#ifdef pdebug + G4cerr<<"***G4QEnv::HadrQE: QM="< totM="< "Possible decay" case + { + G4LorentzVector fq4M(0.,0.,0.,GSM); + G4LorentzVector qe4M(0.,0.,0.,envM); + if(!G4QHadron(tot4M).DecayIn2(fq4M,qe4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< QPDG="<Get4Momentum(); + lastQC = theLast->GetQC(); + } + else theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT + delete theLast; // the last QHadron is deleated as instance + totQC+=lastQC; // Update (increase) the total QC + tot4M+=last4M; // Update (increase) the total 4-momentum + totMass=tot4M.m(); // Calculate new real total mass + G4int bn=totQC.GetBaryonNumber(); // The BaryNum after addition + totPDG=totQC.GetSPDGCode(); + if(bn>1) + { + totS =totQC.GetStrangeness(); // Total Strangeness of this System + if(totS>=0) // => "This is a normal nucleus" case + { + G4QNucleus newN(totQC,tot4M); + totPDG=newN.GetPDG(); + totM =newN.GetMZNS(); // Calculate new minimum (GS) mass + } + else if(totS==-1) // => "Try to decay in K+/aK0 and finish" case + { + G4double m1=mK; + G4int PDG1=321; + G4QNucleus newNp(totQC-KpQC); + G4int PDG2=newNp.GetPDG(); + G4double m2=newNp.GetMZNS(); + G4QNucleus newN0(totQC-K0QC); + G4double m3=newN0.GetMZNS(); + if (m3+mK0 "aK0+ResA is better" case + { + m1 =mK0; + PDG1=311; + m2 =m3; + PDG2=newN0.GetPDG(); + } + if(totMass>m1+m2) // => "can decay" case + { + G4LorentzVector fq4M(0.,0.,0.,m1); + G4LorentzVector qe4M(0.,0.,0.,m2); + if(!G4QHadron(tot4M).DecayIn2(fq4M,qe4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< aK="< "Continue reversion" case + } + else if(totS==-2) // => "Try to decay in 2(K+/aK0) and finish" case + { + G4double m1=mK; + G4int PDG1=321; + G4double m2=mK0; + G4int PDG2=311; + G4QNucleus newNp0(totQC-KpQC-K0QC); + G4int PDG3=newNp0.GetPDG(); + G4double m3=newNp0.GetMZNS(); // M-K^0-K^+ + G4QNucleus newN00(totQC-K0QC-K0QC); + G4double m4=newN00.GetMZNS(); // M-2*K^0 + G4QNucleus newNpp(totQC-KpQC-KpQC); + G4double m5=newNpp.GetMZNS(); // M-2*K^+ + if (m4+mK0+mK0 "2K0+ResA is the best" case + { + m1 =mK0; + PDG1=311; + m3 =m4; + PDG3=newN00.GetPDG(); + } + else if(m5+mK+mK "2Kp+ResA is the best" case + { + m2 =mK; + PDG1=321; + m3 =m5; + PDG3=newNpp.GetPDG(); + } + if(totMass>m1+m2+m3) // => "can decay" case + { + G4LorentzVector k14M(0.,0.,0.,m1); + G4LorentzVector k24M(0.,0.,0.,m2); + G4LorentzVector ra4M(0.,0.,0.,m3); + if(!G4QHadron(tot4M).DecayIn3(k14M,k24M,ra4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< aK="< "Continue reversion" case + } + else totM=300000.; // => "Continue reversion" case + } + else + { + if (totPDG==1114||totPDG==2224||totPDG==10) // Decay right now and finish + { + G4double m1=mNeut; + G4int PDG1=2112; + G4double m2=mPi; + G4int PDG2=-211; + if(totPDG==2224) + { + m1=mProt; + PDG1=2212; + m2=mPi; + PDG2=211; + } + else if(totPDG==10) // "Chipolino" case + { + G4QChipolino resChip(totQC); // define the residual as a Chipolino + G4QPDGCode h1=resChip.GetQPDG1(); + PDG1=h1.GetPDGCode(); // PDG code of the first hadron + m1 =h1.GetMass(); // Mass of the first hadron + G4QPDGCode h2=resChip.GetQPDG2(); + PDG2=h2.GetPDGCode(); // PDG code of the second hadron + m2 =h2.GetMass(); // Mass of the second hadron + } + if(totMass>m1+m2) + { + G4LorentzVector fq4M(0.,0.,0.,m1); + G4LorentzVector qe4M(0.,0.,0.,m2); + if(!G4QHadron(tot4M).DecayIn2(fq4M,qe4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< h1="<0)DecayAntiStrange(evH); + else if(dM>0.001&&totBN>2)EvaporateResidual(evH); // Evaporate ResidNucl (del.equiv) + else if(totBN==2) DecayDibaryon(evH); // Decay dibaryon (delete equivalent) + else if(totBN==5) DecayAlphaBar(evH); // "Alpha+Baryon Decay" case (delete eq.) + else if(totPDG==90004004) DecayAlphaAlpha(evH); // "Alpha+Alpha Decay" case (del eq.) + else theQHadrons.push_back(evH);// Fill to OUTPUT as it is (delete equivalent) + } + } + CleanUp(); + } + } + } // End of the "Nuclear Environment" case + return theQHadrons; +} // End of the main member function HadronizeQEnvironment + +// Clean up the QEnvironment to Zero +void G4QEnvironment::CleanUp() +// ========================= +{ + static const G4QNucleus vacuum(90000000); + theEnvironment=vacuum; + G4int nQuasmons = theQuasmons.size(); + if (nQuasmons) for (G4int iq=0; iqKillQuasmon(); +} + +//Evaporate Residual Nucleus +void G4QEnvironment::EvaporateResidual(G4QHadron* qH, G4bool corFlag) +{// ================================================================ + static const G4double mHel6 = G4QPDGCode(2112).GetNuclMass(2,4,0); + static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double mDeut = G4QPDGCode(2112).GetNuclMass(1,1,0); + static const G4double mNeut = G4QPDGCode(2112).GetMass(); + static const G4double mProt = G4QPDGCode(2212).GetMass(); + static const G4double mLamb = G4QPDGCode(3122).GetMass(); + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mPi0 = G4QPDGCode(111).GetMass(); + static const G4double mK = G4QPDGCode(321).GetMass(); + static const G4double mK0 = G4QPDGCode(311).GetMass(); + static const G4QContent neutQC(2,1,0,0,0,0); + static const G4QContent protQC(1,2,0,0,0,0); + static const G4QContent lambQC(1,1,1,0,0,0); + static const G4QContent deutQC(3,3,0,0,0,0); + static const G4QContent alphQC(6,6,0,0,0,0); + G4int thePDG = qH->GetPDGCode(); // Get PDG code of the Residual Nucleus + /// @@@@@@@ *** TEMPORARY TO AVOID HYPERMUCLEI FOR GEANT4 *** @@@@@@@ + if(thePDG!=91000000 && thePDG>90999999) + { + G4int S=(thePDG-90000000)/1000000; + thePDG-=S*999999; + qH->SetQPDG(G4QPDGCode(thePDG)); + } + /// @@@ *** ^^^ END OF TEMPORARY ^^^ *** @@@ + G4QContent theQC = qH->GetQC(); // Quark Content of the hadron + G4int theBN=theQC.GetBaryonNumber(); + if(!thePDG) thePDG = theQC.GetSPDGCode(); // If PDG code's not transferred, get it from QC + G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of the Residual Nucleus + G4double totMass = qH->GetMass(); // Get Real Mass of the Residual Nucleus +#ifdef pdebug + G4cout<<"G4QEnvironment::EvaporateResidual(EvaRes): ===IN==> PDG="< "Nothing in the INPUT Hadron" case KEEP IT! + { + delete qH; +#ifdef debug + G4cerr<<"***G4QEnv::EvaRes: Residual Nucleus is jast a vacuum PDG=90000000, 4Mom="< "ISO-dibarion" case + { + G4int nucPDG = 2112; + G4double nucM = mNeut; + G4int piPDG = -211; + if(thePDG==90002999) + { + nucPDG = 2212; + nucM = mProt; + piPDG = 211; + } + if(totMass>mPi+nucM+nucM) + { + G4LorentzVector n14M(0.,0.,0.,nucM); + G4LorentzVector n24M(0.,0.,0.,nucM); + G4LorentzVector pi4M(0.,0.,0.,mPi); + if(!G4QHadron(q4M).DecayIn3(n14M,n24M,pi4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< 2N="<0&&thePDG>88000000&&thePDG<89000000) // === two anti-K in the nucleus + { + G4int bZ=theQC.GetCharge(); + G4int bN=theBN-bZ; + G4int k1PDG = 321; + G4double mK1= mK; + G4int k2PDG = 321; + G4double mK2= mK; + G4int nucPDG = thePDG; + if(bZ>=bN) nucPDG+=999000; + else + { + nucPDG+=999999; + k1PDG = 311; + mK1= mK0; + } + if(bZ>bN) nucPDG+=999000; + else + { + nucPDG+=999999; + k2PDG = 311; + mK2= mK0; + } + G4double nucM = G4QNucleus(nucPDG).GetGSMass(); + G4cerr<<"G4QEnv::HadQEnv: M="< N="<80000000&&thePDG!=90000000||thePDG==2112||thePDG==2212||thePDG==3122) + { // @@ Should be improved for Sigma+, Sigma-, Ksi0 & Ksi- content in the Total Residual Nucleus + if(thePDG<80000000) // => "Switch from QHadron coding to QNuclear coding" + { + if (thePDG==2112) thePDG=90000001; // n + else if(thePDG==2212) thePDG=90001000; // p + else if(thePDG==3122) thePDG=91000000; // lambda + } + G4QNucleus qNuc(q4M,thePDG); // Make a Nucleus out of the Total Residual Nucleus + G4double GSMass =qNuc.GetGSMass(); // Ground State Mass of the Total Residual Nucleus + G4QContent totQC=qNuc.GetQCZNS(); // QuarkContent of the TotalResidualNucleus (=theQC?) + G4int bA =qNuc.GetA(); // A#of baryons in the Total Residual Nucleus + G4int bZ =qNuc.GetZ(); // A#of protons in the Total Residual Nucleus + G4int bN =qNuc.GetN(); // A#of neutrons in the Total Residual Nucleus + G4int bS =qNuc.GetS(); // A#of lambdas in the Total Residual Nucleus +#ifdef debug + if(bZ==2&&bN==5)G4cout<<"G4QE::EvR: GSM="< " + <GSMass+.003)//==>"Fuse&DecayTechnology to avoid gammaDec" + //if(2>3) // Close "Fuse&Decay Technology" ***@@@*** + { +#ifdef debug + G4cout<<"G4QEnv::EvaR: Can't SplitBar s="< GSM="<GetBaryonNumber(); + G4int nFragm = theLast->GetNFragments(); + //////////////////G4int gam = theLast->GetPDGCode(); +#ifdef debug + G4cout<<"G4QEnv::EvaRes:*BackFusion* lBN="< "Delete Decayed Hadrons" case + { + G4QHadron* thePrev = theQHadrons[nOfOUT-2]; + nFragm = thePrev->GetNFragments(); +#ifdef debug + G4int prevPDG = thePrev->GetPDGCode(); + G4cout<<"G4QEnv::EvaRes:DelTheLast, nFr="<Get4Momentum(); + G4QContent lastQC = theLast->GetQC(); + G4double lastM = last4M.m(); // Mass of the BackFused Fragment + totQC+=lastQC; // Update (increase) the total QC + q4M+=last4M; // Update (increase) the total 4-momentum + totMass=q4M.m(); // Calculate new real total mass + G4int totPDG=totQC.GetSPDGCode(); // The updated PDG for the Total Residual Nucleus + G4int totBN=totQC.GetBaryonNumber(); // Baryon number of the Total Residual Nucleus + G4double dM=totMass-GSMass -lastM; +#ifdef debug + G4cout<<"G4QE::EvR:TM="<-0.001) + { + G4QHadron* evH = new G4QHadron(totPDG,q4M);// Create QHadron for the TotalResidNucleus + if(dM<=0.) + { + theQHadrons.pop_back(); // lastQHadron is excluded from QHadrV as it's in TRN + if(totBN==2)DecayDibaryon(evH); // Fill dibaryon (with decay products) + else theQHadrons.push_back(evH); // Just Fill TRN to HVect as it's (delete equivalent) + } + else // Decay TotalResidualNucleus in GSM + Last and Break + { + G4LorentzVector r4Mom(0.,0.,0.,GSMass); + if(!G4QHadron(q4M).DecayIn2(last4M,r4Mom)) + { + theQHadrons.pop_back(); // lastQHadron is excluded from QHadrV as it's in TRN + delete theLast; //!When killing, DON'T forget to delete last QHadron as an instance! + theQHadrons.push_back(evH); // Just Fill TRN to Vect as it is (delete equivalent) +#ifdef debug + G4cout<<"***G4QEnv::EvaRes: DecayIn L"<Set4Momentum(last4M); // Already exists: don't create&fill, just set 4Mom + G4QHadron* nuclH = new G4QHadron(thePDG,r4Mom); + if(thePDG==92000000||thePDG==90002000||thePDG==90000002)DecayDibaryon(nuclH);//DelEq + else theQHadrons.push_back(nuclH);// Fill the Residual Nucleus (delete equivalent) + } + break; + } + } + thePDG=totPDG; // Make a Residual Nucleus out of the TotResidNucl + GSMass=G4QPDGCode(thePDG).GetMass(); // Update the Total Residual Nucleus mass + theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT + delete theLast;//!! When killing, DON'T forget to delete the last QHadron as an instance!! + nOfOUT--; // Update the value of OUTPUT entries + } + } + if(!nOfOUT || !corFlag) + { + G4LorentzVector h4Mom(0.,0.,0.,GSMass);// GSMass should be updated in previous while-LOOP + G4LorentzVector g4Mom(0.,0.,0.,0.); + if(!G4QHadron(q4M).DecayIn2(h4Mom, g4Mom)) + { + G4cerr<<"***G4QEnv::EvaRes: h="<tM="<totResN="<DecayIn2(a4Mom,b4Mom)) + { + theQHadrons.push_back(qH); // Fill as it is (delete equivalent) + G4cout<<"G4QEnv::EvaRes: rP="< Evaporation of excited system + { +#ifdef debug + G4cout<<"G4QEnv::EvaRes: ***EVA*** tPDG="< GS="<Get4Momentum(); + r4M=rHadron->Get4Momentum(); + bM = b4M.m(); // Real mass of the evaporated dibaryon + rM = r4M.m(); // Real mass of the residual nucleus + bB=bHadron->GetBaryonNumber(); // Baryon number of the evaporated baryon + rB=rHadron->GetBaryonNumber(); // Baryon number of the residual nucleus + bPDG=bHadron->GetPDGCode(); + rPDG=rHadron->GetPDGCode(); +#ifdef debug + G4int bC=bHadron->GetCharge(); // Baryon number of the evaporated baryon + //G4int rC=rHadron->GetCharge(); // Baryon number of the residual nucleus + G4double bCB=qNuc.CoulombBarrier(bC,bB); + //G4double rCB=qNuc.CoulombBarrier(rC,rB); + G4cout<<"G4QEnv::EvaRes: Attempt #"< "< bCB="< 2 - unexpected evaporated fragment"<2) EvaporateResidual(rHadron); // Continue evaporation (@@ Self-call) + else if(rB==2) // => "Dibaryon" case needs decay + { + G4double rGSM = rHadron->GetQPDG().GetMass();// Ground State mass of the dibaryon +#ifdef debug + G4cout<<"G4QEnv::EvaRes: ResidDibarionM="< M="< "Dibaryon Decay" case (delete equivalent) + } + else if(rB==5) DecayAlphaBar(rHadron); // "Alpha+Baryon Decay" case (delete equival.) + else if(rPDG==90004004) DecayAlphaAlpha(rHadron);// "Alpha+Alpha Decay" case (delete equiv.) + else theQHadrons.push_back(rHadron); // Fill ResidNucleus=Baryon to Output HadronVector + } // End of fail in decay check + } // End of Evaporation of excited system + } + else // => "Decay if it is impossible to evaporate" case + { +#ifdef debug + G4cout<<"G4QEnv::EvaRes: InputHadron4M="<GetQC(); // Quark content of the hadron + G4QChipolino resChip(totQC); // define the Residual as a Chipolino + G4QPDGCode h1=resChip.GetQPDG1(); + G4double m1 =h1.GetMass(); // Mass of the first hadron + G4QPDGCode h2=resChip.GetQPDG2(); + G4double m2 =h2.GetMass(); // Mass of the second hadron + if(totMass>=m1+m2) + { + delete qH; // Chipolino should not be in a sequence + G4LorentzVector fq4M(0.,0.,0.,m1); + G4LorentzVector qe4M(0.,0.,0.,m2); + if(!G4QHadron(q4M).DecayIn2(fq4M,qe4M)) + { + G4cerr<<"***G4QEnv::EvaRes: tM="< h1M="<h1+h2 DecayIn2 did not succeed"); + } + G4QHadron* H2 = new G4QHadron(h2.GetPDGCode(),qe4M); + theQHadrons.push_back(H2); // (delete equivalent) + G4QHadron* H1 = new G4QHadron(h1.GetPDGCode(),fq4M); + theQHadrons.push_back(H1); // (delete equivalent) + } + else + { + G4cerr<<"***G4QEnv::EvaRes: M="<2)theQHadrons.push_back(qH); + else if ((thePDG==221||thePDG==331)&&totMass>mPi+mPi) // "Decay in pipi" case + { + G4LorentzVector fq4M(0.,0.,0.,mPi); + G4LorentzVector qe4M(0.,0.,0.,mPi); + if(!G4QHadron(q4M).DecayIn2(fq4M,qe4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< pi+ + pi-"<Pi+Pi DecayIn2 did not succeed"); + } + delete qH; + G4QHadron* H1 = new G4QHadron(211,fq4M); + theQHadrons.push_back(H1); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(-211,qe4M); + theQHadrons.push_back(H2); // (delete equivalent) + } + else if ((thePDG==221||thePDG==331)&&totMass>mPi0+mPi0) // "Decay in 2pi0" case + { + G4LorentzVector fq4M(0.,0.,0.,mPi0); + G4LorentzVector qe4M(0.,0.,0.,mPi0); + if(!G4QHadron(q4M).DecayIn2(fq4M,qe4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< pi0 + pi0"<Pi+Pi DecayIn2 did not succeed"); + } + delete qH; + G4QHadron* H1 = new G4QHadron(111,fq4M); + theQHadrons.push_back(H1); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(111,qe4M); + theQHadrons.push_back(H2); // (delete equivalent) + } + else if (totMass>totM) // "Radiative Hadron decay" case + { + G4LorentzVector fq4M(0.,0.,0.,0.); + G4LorentzVector qe4M(0.,0.,0.,totM); + if(!G4QHadron(q4M).DecayIn2(fq4M,qe4M)) + { + G4cerr<<"***G4QEnv::HadQEnv: tM="< h1M="<H+gamma DecayIn2 did not succeed"); + } + delete qH; + G4QHadron* H1 = new G4QHadron(22,fq4M); + theQHadrons.push_back(H1); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(thePDG,qe4M); + theQHadrons.push_back(H2); // (delete equivalent) + } + else + { + G4cerr<<"***G4QEnv::EvaRes: ResNuc="<1.||r2<.01) + { + x = G4UniformRand(); + y = G4UniformRand(); + z = G4UniformRand(); + r2=x*x+y*y+z*z; + } + G4double r=sqrt(r2); + return G4ThreeVector(x/r,y/r,z/r); +} // End of RndmDir + +//The public Hadronisation routine with delete responsibility of User (!) +G4QHadronVector* G4QEnvironment::Fragment() +{// ========================== + static const G4QPDGCode gQPDG(22); + static const G4QPDGCode pipQPDG(211); + static const G4QPDGCode pimQPDG(-211); + static const G4QPDGCode nQPDG(2112); + static const G4QPDGCode pQPDG(2212); + static const G4QPDGCode lQPDG(3122); + static const G4QPDGCode aQPDG(90002002); + static const G4QPDGCode a6QPDG(90002004); + static const G4QPDGCode be6QPDG(90004002); + static const G4QPDGCode b7QPDG(90005002); + static const G4QPDGCode a8QPDG(90002006); + static const G4QPDGCode c10QPDG(90006004); + static const G4QPDGCode o14QPDG(90008006); + static const G4QPDGCode o15QPDG(90008007); + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double mHe6 = G4QPDGCode(2112).GetNuclMass(2,4,0); + static const G4double mBe6 = G4QPDGCode(2112).GetNuclMass(4,2,0); + static const G4double mB7 = G4QPDGCode(2112).GetNuclMass(5,2,0); + static const G4double mHe8 = G4QPDGCode(2112).GetNuclMass(2,6,0); + static const G4double mC10 = G4QPDGCode(2112).GetNuclMass(6,4,0); + static const G4double mO14 = G4QPDGCode(2112).GetNuclMass(8,6,0); + static const G4double mO15 = G4QPDGCode(2112).GetNuclMass(8,7,0); + static const G4double third=1./3.; + ///////////////static const G4double nPDG=90000001; + G4int envA=theEnvironment.GetBaryonNumber(); + ///////////////G4int envC=theEnvironment.GetCharge(); +#ifdef pdebug + G4cout<<"G4QEnvironment(G4QE)::Fragment(Fr): ***called*** envA="< 2N="<SetQPDG(nuQPDG); + theQHadrons[ipo]->Set4Momentum(n14M); + G4QHadron* nuH = new G4QHadron(nucPDG,n24M); + theQHadrons.push_back(nuH); // (delete equivalent) + G4QHadron* piH = new G4QHadron(tPDG,pi4M); + theQHadrons.push_back(piH); // (delete equivalent) + } + else if(hBN>1 || hPDG==22 && hE<.001) // Nucleus is found: Swap with the last & evap + { + G4QHadron* theLast = theQHadrons[nHadr-1]; + G4QHadron* theCurr = theQHadrons[ipo]; + G4QHadron* curHadr = new G4QHadron(theCurr);// Remember the current hadron + theCurr->SetQPDG(theLast->GetQPDG()); // the formal current is substituted by the last + theCurr->Set4Momentum(theLast->Get4Momentum()); + theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron as an instance !!* + if(hPDG!=22) EvaporateResidual(curHadr); // Try to evaporate the Nucleus (delete equiv) + nHadr=theQHadrons.size(); + } +#ifdef pdebug + G4int hNFrag= theQHadrons[ipo]->GetNFragments(); + G4QContent hQC = theQHadrons[ipo]->GetQC(); + G4cout<<"G4QE::Fr:h#"<>>h="<0&&!hS&&(nHadr>3||hB<2)) // ThermonuclBackFusion condition (VIMP for gamA TotCS) + //if(2>3) // Close the ThermonuclearBackFusion (VIMP for gamA TotCS) + { +#ifdef ppdebug + //if(nHadr==3) + G4cout<<"G4QE::Fr:h="<tM="<tM+.001&&pCM20||hB==1&&bB>0)&&bM+hM>tM+.001 + && (pCM23||pCM2tM+.001&&(pCM23 || + // pCM290000000)) + //if(!bF&&(bB<3||hB<3)&&bM+hM>tM+.001&&pCM23||bPDG>90000000)&&bM+hM>tM+.001&&pCM2tM+.001&&pCM2tM+.001&&sM-bM-hMtM+.001&&sM-bM-hMGetPDGCode(); + if(sPDG==89999003||sPDG==90002999||sPDG==89999002||sPDG==90001999) + G4cerr<<"***nD-/pD++G4QEnv::Fr:h="<["<["< sM="<SetQPDG(fQPDG); + curHadr->Set4Momentum(f4Mom); + backH->SetQPDG(rQPDG); + backH->Set4Momentum(g4Mom); + } + else + { + if(!G4QHadron(s4M).DecayIn3(f4Mom,g4Mom,t4Mom)) + { + G4cerr<<"***G4QE::Fr:(3)***FUSION*** tM["< sM="<10e-6?"<0.0001) // Energy or momentum is not conserved + { +#ifdef pdebug + if(dem>1.)G4cerr<<"***G4QE::Fr:E/Mom conservation="<Get4Momentum(); // 4-mom of the previous hadron + G4double cHM = curHadr->GetMass(); // Mass of the current hadron + G4double pHM = prevHadr->GetMass(); // Mass of the current hadron + tot4Mom+=cH4Mom+pH4Mom; + G4double totRM=tot4Mom.m(); + if(cHM+pHM<=totRM+.03) // *** Make the final correction *** + { + if(!G4QHadron(tot4Mom).DecayIn2(pH4Mom,cH4Mom)) + { + G4cerr<<"***G4QE::Fr:**Correction**tot4M="< sM="<Set4Momentum(cH4Mom); + prevHadr->Set4Momentum(pH4Mom); + } +#ifdef pdebug + else + { + G4cerr<<"*!*G4QE::Fr: Cann't correct "<"<(theQHadrons.size())-1) // Need swap with the Last + { + curHadr->SetNFragments(0); + curHadr->Set4Momentum(theLast->Get4Momentum()); + //curHadr->SetQC(theLast->GetQC()); + curHadr->SetQPDG(theLast->GetQPDG()); +#ifdef pdebug + G4cout<<"G4QE::Fr: Exchange with the last is done"<nH="<size()<Get4Momentum(); // Get 4-momentum of the Dibaryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decayin dybaryon +#ifdef pdebug + G4cout<<"G4QEnv::DecayDibaryon: *Called* PDG="<? TotM="<Get4Momentum(); // Get 4-momentum of the Dibaryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying tribaryon + G4int qS = qH->GetStrangeness();// Strangness of the nuclear state + G4int qB = qH->GetBaryonNumber(); +#ifdef pdebug + G4cout<<"G4QEnv::DecayAntiStran:*Called* PDG="< TotM="<tM="<Get4Momentum(); // Get 4-momentum of the Dibaryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying tribaryon +#ifdef pdebug + G4cout<<"G4QEnv::DecayThreeBaryon: *Called* PDG="<? TotM="<Get4Momentum(); // Get 4-momentum of the Dibaryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decayin dybaryon +#ifdef pdebug + G4cout<<"G4QEnv::DecayDibaryon: *Called* PDG="<? TotM="<Get4Momentum(); // Get 4-momentum of the Alpha-Baryon + G4double qM = q4M.m(); // Mass of Alpha-Baryon + G4int qPDG = qH->GetPDGCode(); // PDG Code of the decayin Alpha-Baryon +#ifdef pdebug + G4cout<<"G4QEnv::DecayAlphaBar: *Called* PDG="<0.&&dM<1.) + { + G4cerr<<"***Corrected***G4QEnv::DecayAlphaBar:fPDG="< TotM="< TotM="<GetPDGCode(); // PDG Code of the decayin dialpha + if(qPDG!=90004004) + { + G4cerr<<"***G4QEnv::DecayAlphaAlpha: qPDG="<Get4Momentum(); // Get 4-momentum of the Dibaryon +#ifdef pdebug + G4cout<<"G4QEnv::DecayAlphaAlpha: *Called* PDG="<? TotM="<GetQC(); // Quark content of the Quasmon + G4int resQPDG=valQ.GetSPDGCode(); // Reachable in a member function + G4double resQMa=G4QPDGCode(resQPDG).GetMass(); // GS Mass of the Residual Quasmon + G4double resEMa=0.; // GS Mass of the Empty Residual Environment + G4bool bsCond=false; // BaryonSeparetionCondition for Quasmon in vacuum + G4LorentzVector enva4M=G4LorentzVector(0.,0.,0.,0.); + G4LorentzVector reTLV=quasm->Get4Momentum(); // Prototyoe of the 4-Mom of the Residual Nucleus + G4double resSMa=resQMa; // Prototype of MinimalSplitMass of ResidualNucleus + G4int envPDG=theEnvironment.GetPDG(); + if(envPDG!=90000000) // => "Environment is not vacuum" case + { // @@@@@@@@@@@@@@@@@@@ CALL SUBROUTINE @@@@@@@@@ + resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment + enva4M=G4LorentzVector(0.,0.,0.,resEMa); // 4-Mom of the Residual Environment + reTLV+=enva4M; // 4-Mom of Residual Nucleus + resSMa+=resEMa; // Minimal Split Mass of Residual Nucleus + } + else // Calculate BaryonSeparetionCondition for vacQuasm + { + G4double resQM=reTLV.m(); // CM Mass of the Residual vacQuasmon + G4int baryn=valQ.GetBaryonNumber(); // Baryon Number of the Residual vacQuasmon + if(baryn>1) // => "Can split baryon" case + { + if(valQ.GetN()) // ===> "Can split neutron" case + { + G4QContent resQC=valQ-neutQC; // QC of Residual for the Neutron + G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Neutron + G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual + if(resMas+mNeut "Can split proton" case + { + G4QContent resQC=valQ-protQC; // QC of Residual for the Proton + G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Proton + G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual + if(resMas+mProt "Can split lambda" case + { + G4QContent resQC=valQ-lambQC; // QC of Residual for the Lambda + G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Lambda + G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual + if(resMas+mLamb0. Correct?"<0 && corFlag) // *** CORRECTION *** + { + G4QHadron* theLast = theQHadrons[nOfOUT-1]; + if(theLast->GetNFragments() || theLast->GetPDGCode()==22) return false;// Decayed H or gamma + G4LorentzVector hadr4M = theLast->Get4Momentum(); + G4double hadrMa=hadr4M.m(); + G4LorentzVector tmpTLV=reTLV+hadr4M; // Tot (ResidNucl+LastHadron) 4-Mom +#ifdef pdebug + G4cout<<"G4QEnv::CheckGS: YES,4M/M="< rSM+hM="<resSMa+hadrMa) // resMa contains 2 Hadrons: resQ and Environ + { + if(resEMa) // => "The not vacuum Environment exist" case + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon + G4QHadron* quasH = new G4QHadron(valQ, quas4M); + G4QHadron* envaH = new G4QHadron(theEnvironment.GetQCZNS(),enva4M); + if(!G4QHadron(tmpTLV).DecayIn3(hadr4M,quas4M,enva4M)) + { + delete quasH; // Delete "Quasmon Hadron" + delete envaH; // Delete "Environ Hadron" + G4cerr<<"***G4QEnv::CheckGS: Decay in Fragm+ResQ+ResEnv did not succeeded"<Set4Momentum(hadr4M); + quasH->Set4Momentum(quas4M); + if(resQPDG==92000000||resQPDG==90002000||resQPDG==90000002)DecayDibaryon(quasH); // DelEqu + else if(resQPDG==90002003||resQPDG==90003002) DecayAlphaBar(quasH); //DelEqu + else if(resQPDG==90004004) DecayAlphaAlpha(quasH); //DelEqu + else theQHadrons.push_back(quasH); // Fill ResidQuasm Hadron (delete equivalent) + envaH->Set4Momentum(enva4M); + if(envPDG==92000000||envPDG==90002000||envPDG==90000002) DecayDibaryon(envaH); // DelEqu + else if(envPDG==90002003||envPDG==90003002) DecayAlphaBar(envaH); //DelEqu + else if(envPDG==90004004) DecayAlphaAlpha(envaH); //DelEqu + else theQHadrons.push_back(envaH); // Fill 2nd Hadron (delete equivalent) + } + } + else // => "The Environment is vacuum" case (DecayIn2) + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon + G4QHadron* quasH = new G4QHadron(valQ, quas4M); + if(!G4QHadron(tmpTLV).DecayIn2(hadr4M,quas4M)) + { + delete quasH; // Delete "Quasmon Hadron" + G4cerr<<"***G4QEnv::CheckGS: Decay in Fragm+ResQ did not succeeded"<Set4Momentum(hadr4M); + quasH->Set4Momentum(quas4M); + if(resQPDG==92000000||resQPDG==90002000||resQPDG==90000002)DecayDibaryon(quasH); // DelEq + else if(resQPDG==90002003||resQPDG==90003002) DecayAlphaBar(quasH); //DelEqu + else if(resQPDG==90004004) DecayAlphaAlpha(quasH); //DelEqu + else theQHadrons.push_back(quasH); // Fill ResidQuasmHadron (delete equivalent) + } + } + } + else // "CORRECTION" !!! + { + if(nOfOUT>1 && corFlag) + { + G4QHadron* thePrev = theQHadrons[nOfOUT-2]; // Get pointer to previos before last hadron + if(thePrev->GetNFragments()||thePrev->GetNFragments()) return false; // Decayed H or gamma + G4LorentzVector prev4M = thePrev->Get4Momentum(); + G4double prevMa=prev4M.m(); // Mass of previous hadron + tmpTLV+=prev4M; // Increment Total 4-Mom of TotalResidNucl + G4QContent totQC=valQ+theEnvironment.GetQCZNS();// Quark Content of the ResidNucl=ResidQ+Env + G4int totPDG=totQC.GetSPDGCode(); // PDG Code of Total Residual Nucleus + G4double tQMa=G4QPDGCode(totPDG).GetMass(); // GS Mass of the Residual Nucleus +#ifdef pdebug + G4cout<<"G4QEnv::CheckGS:NO, T="<r+p+l="<tQMa+hadrMa+prevMa) + { + G4LorentzVector nuc4M = G4LorentzVector(0.,0.,0.,tQMa); // 4-Mom of ResidNucleus at rest + G4QHadron* nucH = new G4QHadron(totQC, nuc4M); + if(!G4QHadron(tmpTLV).DecayIn3(hadr4M,prev4M,nuc4M)) + { + delete nucH; // Delete "Residual Nucleus Hadron" + G4cerr<<"***G4QEnv::CheckGS: Decay in ResidNucl+LastH+PrevH did not succeeded"<Set4Momentum(hadr4M); + thePrev->Set4Momentum(prev4M); + nucH->Set4Momentum(nuc4M); +#ifdef pdebug + G4cout<<"G4QEnv::CheckGS:***SUCCEED***>CHECK, D4M="<GetQC(); // Quark content of the Quasmon + G4int resQPDG=valQ.GetSPDGCode(); // Reachable in a member function + G4double resQMa=G4QPDGCode(resQPDG).GetMass(); // GS Mass of the Residual Quasmon + G4LorentzVector enva4M=G4LorentzVector(0.,0.,0.,0.); + G4LorentzVector reTLV=quasm->Get4Momentum(); // Prototyoe of the 4-Mom of the Residual Nucleus + G4double resSMa=resQMa; // Prototype of MinimalSplitMass of ResidualNucleus + G4int envPDG=theEnvironment.GetPDG(); // PDG Code of the Environment + if(envPDG!=90000000) // => "Environment is not vacuum" case + { + G4double resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment + enva4M=G4LorentzVector(0.,0.,0.,resEMa); // 4-Mom of the Residual Environment + reTLV+=enva4M; // 4-Mom of Residual Nucleus + resSMa+=resEMa; // Minimal Split Mass of Residual Nucleus + G4double resTMa=reTLV.m(); // CM Mass of the Residual Nucleus (Quasm+Environ) + //#ifdef pdebug + G4cout<<"G4QEnv::DecayInEnvQ: totM="< rQM+rEM="<resSMa) + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon + G4QHadron* quasH = new G4QHadron(valQ, quas4M); + G4QHadron* envaH = new G4QHadron(envPDG, enva4M); + if(!G4QHadron(reTLV).DecayIn2(enva4M,quas4M)) + { + delete quasH; // Delete "Quasmon Hadron" + delete quasH; // Delete "Enviromnent Hadron" + G4cerr<<"***G4Quasm::DecayInEnvQ: Decay in Envuronment+ResQuasm did not succeeded"<Set4Momentum(quas4M); + if(resQPDG==92000000||resQPDG==90002000||resQPDG==90000002) DecayDibaryon(quasH); // DelEqu + else if(resQPDG==90002003||resQPDG==90003002) DecayAlphaBar(quasH); //DelEqu + else if(resQPDG==90004004) DecayAlphaAlpha(quasH); //DelEqu + else theQHadrons.push_back(quasH); // Fill ResidQuasm Hadron (delete equivalent) + envaH->Set4Momentum(enva4M); + if(envPDG==92000000||envPDG==90002000||envPDG==90000002) DecayDibaryon(envaH); // DelEquival + else if(envPDG==90002003||envPDG==90003002) DecayAlphaBar(envaH); //DelEqu + else if(envPDG==90004004) DecayAlphaAlpha(envaH); //DelEqu + else theQHadrons.push_back(envaH); // Fill Environment Hadron (delete equivalent) + } + } + else return false; + } + else return false; // => "Environment is vacuum" case + return true; +} // End of "DecayInEnvQ" diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QHadron.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QHadron.cc new file mode 100644 index 0000000000..f5862ac4d9 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QHadron.cc @@ -0,0 +1,536 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QHadron.cc,v 1.22 2001/11/26 14:11:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QHadron ---------------- +// by Mikhail Kossov, Sept 1999. +// class for Quasmon initiated Hadrons generated by CHIPS Model +// ------------------------------------------------------------------ + +//#define debug +//#define pdebug +//#define sdebug + +#include "G4QHadron.hh" + +G4QHadron::G4QHadron() : + theQPDG(0),theMomentum(0.,0.,0.,0.),valQ(0,0,0,0,0,0),nFragm(0) +{} + +G4QHadron::G4QHadron(G4LorentzVector p) : + theQPDG(0),theMomentum(p),valQ(0,0,0,0,0,0),nFragm(0) +{} + +// For Chipolino or Quasmon doesn't make any sense +G4QHadron::G4QHadron(G4int PDGCode, G4LorentzVector p) : + theQPDG(PDGCode),theMomentum(p),nFragm(0) +{ + if(GetQCode()>-1) + { + if(theMomentum.e()==0.) theMomentum.setE(theQPDG.GetMass()); + valQ=theQPDG.GetQuarkContent(); + } + else if(PDGCode>80000000) DefineQC(PDGCode); + else G4cerr<<"***G4QHaron:(P) PDG="<-1) + { + if(theMomentum.e()==0.) theMomentum.setE(theQPDG.GetMass()); + valQ=theQPDG.GetQuarkContent(); + } + else + { + G4cerr<<"***G4QHaron:(QP) PDG="<GetQPDG()),theMomentum(0.,0.,0.,0.),nFragm(0) +{ +#ifdef debug + G4cout<<"G4QHadron is created & randomized with maxM="<theMomentum; + theQPDG = right->theQPDG; + valQ = right->valQ; + nFragm = right->nFragm; +} + +const G4QHadron& G4QHadron::operator=(const G4QHadron &right) +{ + theMomentum = right.theMomentum; + theQPDG = right.theQPDG; + valQ = right.valQ; + nFragm = right.nFragm; + + return *this; +} + +G4QHadron::~G4QHadron() {} + +// Decay of the Hadron in 2 particles (f + s) in respect to the direction of refference particle +G4bool G4QHadron::RelDecayIn2(G4LorentzVector& f4Mom, G4LorentzVector& s4Mom, + G4LorentzVector& dir, G4double maxCost, G4double minCost) +{// =================================================================== + G4double fM2 = f4Mom.m2(); + G4double fM = sqrt(fM2); // Mass of the 1st Hadron + G4double sM2 = s4Mom.m2(); + G4double sM = sqrt(sM2); // Mass of the 2nd Hadron + G4double iM2 = theMomentum.m2(); + G4double iM = sqrt(iM2); // Mass of the decaying hadron + G4ThreeVector ltb = theMomentum.boostVector(); // Boost vector for backward Lorentz Trans. + G4ThreeVector ltf = -ltb; // Boost vector for forward Lorentz Trans. + G4LorentzVector cdir = dir; // A copy to make a transformation to CMS + cdir.boost(ltf); // Direction transpormed to CMS of the Momentum + G4ThreeVector vdir = cdir.vect(); // 3-Vector of the direction-particle +#ifdef debug + G4cout<<"G4QHadron::RelDecayIn2: dir="< 0.) // the refference particle isn't at rest in CMS + { + vx = vdir.unit(); // Ort in the direction of the reference particle + G4ThreeVector vv= vx.orthogonal(); // Not normed orthogonal vector (!) + vy = vv.unit(); // First ort orthogonal to the direction + vz = vx.cross(vy); // Second ort orthoganal to the direction + } +#ifdef debug + G4cout<<"G4QHadron::RelDecayIn2:iM="< fM="<iM="< fM="< iM="<fM="< iM="< corE="<r+s+t +G4bool G4QHadron::DecayIn3(G4LorentzVector& f4Mom,G4LorentzVector& s4Mom,G4LorentzVector& t4Mom) +{// ========================================================================================= +#ifdef debug + G4cout<<"G4QHadron::DecayIn3:"<pf="< iM="< rR) + { + m12s = m12sMin + m12sBase*G4UniformRand(); + G4double e1=m12s-fM2-sM2; + G4double e2=iM2-m12s-tM2; + G4double four12=4*m12s; + G4double m13sRange=sqrt((e1*e1-four12*fM2)*(e2*e2-four12*tM2))/m12s; + rR = m13sRange/m13sBase; + rnd= G4UniformRand(); +#ifdef debug + G4cout<<"G4QHadron::DecayIn3: try to decay #"<<++tr<<", rR="< maxM="<MinMassOfFragm(); + if(minM>maxM) + { +#ifdef debug + G4cerr<<"***G4QHadron::RandomizeMass:for PDG="< maxM="<Called< PDG="<80000000) // including 90000000 (OK) + { + G4int szn=nucPDG-NUCPDG; + G4int ds=0; + G4int dz=0; + G4int dn=0; + if(szn<-100000) + { + G4int ns=(-szn)/1000000+1; + szn+=ns*1000000; + ds+=ns; + } + else if(szn<-100) + { + G4int nz=(-szn)/1000+1; + szn+=nz*1000; + dz+=nz; + } + else if(szn<0) + { + G4int nn=-szn; + szn=0; + dn+=nn; + } + G4int sz =szn/1000; + G4int n =szn%1000; + if(n>700) + { + n-=1000; + dz--; + } + G4int z =sz%1000-dz; + if(z>700) + { + z-=1000; + ds--; + } + Z =z; + N =n; + S =sz/1000-ds; + SetZNSQC(Z,N,S); + G4QPDGCode nPDG(nucPDG); + SetQPDG(nPDG); + G4LorentzVector p(0.,0.,0.,nPDG.GetMass()); + Set4Momentum(p); + SetNFragments(0); +#ifdef debug + G4cout<<"G4QNucleus::InitByPDG:->QPDG="<2 + maxi=3; +#ifdef debug + G4cout<<"G4QNucleus::UpdateClusters:p1="<80000000&&cPDG!=NUCPDG) + { + G4int curPDG=GetPDG(); + G4int newPDG=curPDG-cPDG+NUCPDG; // PDG Code of Residual Nucleus + if(newPDG==NUCPDG) InitByPDG(NUCPDG); // Empty + else + { + if(abs(newPDG)mPi+nucM+nucM) + { + G4LorentzVector n14M(0.,0.,0.,nucM); + G4LorentzVector n24M(0.,0.,0.,nucM); + G4LorentzVector pi4M(0.,0.,0.,mPi); + if(!DecayIn3(n14M,n24M,pi4M)) + { + G4cerr<<"***G4QNucl::EvapBary: tM="< 2N="<SetQPDG(db); + h2->SetQPDG(pi); + h1->Set4Momentum(n14M); + h2->Set4Momentum(pi4M); + return true; + } + else + { + G4cerr<<"***G4QNucleus::EvaporateBaryon: M="<SetQPDG(pQPDG); + h2->SetQPDG(pQPDG); + if(!DecayIn2(h1mom,h2mom)) return false; + } + else if(N==2) + { + h1mom=G4LorentzVector(0.,0.,0.,mNeut); + h2mom=h1mom; + h1->SetQPDG(nQPDG); + h2->SetQPDG(nQPDG); + if(!DecayIn2(h1mom,h2mom)) return false; + } + else if(N==1&&Z==1) + { + if(totMass<=mNP) + { +#ifdef pdebug + cout<<"G4QNucleus::EvaporateBaryon: Photon ### d+g ###, dM="<SetQPDG(gQPDG); + h2->SetQPDG(NPQPDG); + } + else + { + h1mom=G4LorentzVector(0.,0.,0.,mProt); + h2mom=G4LorentzVector(0.,0.,0.,mNeut); + h1->SetQPDG(pQPDG); + h2->SetQPDG(nQPDG); + } + if(!DecayIn2(h1mom,h2mom)) return false; + } + else if(Z==1&&S==1) + { + h1mom=G4LorentzVector(0.,0.,0.,mProt); + h2mom=G4LorentzVector(0.,0.,0.,mLamb); + h1->SetQPDG(pQPDG); + h2->SetQPDG(lQPDG); + if(!DecayIn2(h1mom,h2mom)) return false; + } + else + { + h1mom=G4LorentzVector(0.,0.,0.,mNeut); + h2mom=G4LorentzVector(0.,0.,0.,mLamb); + h1->SetQPDG(nQPDG); + h2->SetQPDG(lQPDG); + if(!DecayIn2(h1mom,h2mom)) return false; + } + h1->Set4Momentum(h1mom); + h2->Set4Momentum(h2mom); + return true; + } + else if(a>2) + { + G4bool nFlag = false; // Flag of possibility to radiate neutron + G4bool pFlag = false; // Flag of possibility to radiate proton + G4bool lFlag = false; // Flag of possibility to radiate lambda + G4bool aFlag = false; // Flag of possibility to radiate alpha + G4bool nnFlag = false; // Flag of possibility to radiate 2 neutrons + G4bool npFlag = false; // Flag of possibility to radiate neutron+proton + G4bool nlFlag = false; // Flag of possibility to radiate neutron+lambda + G4bool ppFlag = false; // Flag of possibility to radiate 2 protons + G4bool plFlag = false; // Flag of possibility to radiate proton+lambda + G4bool llFlag = false; // Flag of possibility to radiate 2 lambdas + G4bool paFlag = false; // Flag of possibility to radiate proton+alpha + G4bool naFlag = false; // Flag of possibility to radiate neutron+alpha + G4bool laFlag = false; // Flag of possibility to radiate lambda+alpha + G4bool aaFlag = false; // Flag of possibility to radiate alpha+alpha + G4bool nnnF = false; + G4bool nnpF = false; + G4bool nppF = false; + G4bool pppF = false; + G4bool nnlF = false; + G4bool nplF = false; + G4bool pplF = false; + G4bool nllF = false; + G4bool pllF = false; + G4bool lllF = false; + G4bool nnaF = false; + G4bool npaF = false; + G4bool ppaF = false; + G4bool nlaF = false; + G4bool plaF = false; + G4bool llaF = false; + G4bool paaF = false; + G4bool naaF = false; + G4bool laaF = false; + G4bool aaaF = false; + G4double GSMass = GetGSMass(); // Ground State mass of the Nucleus + G4double GSResNN= GSMass; // Prototype of Residual Nuclear Mass for n+n + G4double GSResNP= GSMass; // Prototype of Residual Nuclear Mass for n+p + G4double GSResNL= GSMass; // Prototype of Residual Nuclear Mass for n+l + G4double GSResPP= GSMass; // Prototype of Residual Nuclear Mass for p+p + G4double GSResPL= GSMass; // Prototype of Residual Nuclear Mass for p+l + G4double GSResLL= GSMass; // Prototype of Residual Nuclear Mass for l+l + G4double GSResNA= GSMass; // Prototype of Residual Nuclear Mass for n+alpha + G4double GSResPA= GSMass; // Prototype of Residual Nuclear Mass for p+alpha + G4double GSResLA= GSMass; // Prototype of Residual Nuclear Mass for l+alpha + G4double GSResAA= GSMass; // Prototype of Residual Nuclear Mass for alpha+alpha + G4double GSResNa= GSMass; // Prototype of Residual Nuclear Mass for alpha + G4double GSReNNN= GSMass; // Prototype of Residual Nuclear Mass for n+n+n + G4double GSReNNP= GSMass; // Prototype of Residual Nuclear Mass for n+n+p + G4double GSReNPP= GSMass; // Prototype of Residual Nuclear Mass for n+p+p + G4double GSRePPP= GSMass; // Prototype of Residual Nuclear Mass for p+p+p + G4double GSReNNL= GSMass; // Prototype of Residual Nuclear Mass for n+n+l + G4double GSReNPL= GSMass; // Prototype of Residual Nuclear Mass for n+p+l + G4double GSRePPL= GSMass; // Prototype of Residual Nuclear Mass for p+p+l + G4double GSReNLL= GSMass; // Prototype of Residual Nuclear Mass for n+l+l + G4double GSRePLL= GSMass; // Prototype of Residual Nuclear Mass for p+l+l + G4double GSReLLL= GSMass; // Prototype of Residual Nuclear Mass for l+l+l + G4double GSReNNA= GSMass; // Prototype of Residual Nuclear Mass for n+n+a + G4double GSReNPA= GSMass; // Prototype of Residual Nuclear Mass for n+p+a + G4double GSRePPA= GSMass; // Prototype of Residual Nuclear Mass for p+p+a + G4double GSReNLA= GSMass; // Prototype of Residual Nuclear Mass for n+l+a + G4double GSRePLA= GSMass; // Prototype of Residual Nuclear Mass for p+l+a + G4double GSReLLA= GSMass; // Prototype of Residual Nuclear Mass for l+l+a + G4double GSRePAA= GSMass; // Prototype of Residual Nuclear Mass for p+a+a + G4double GSReNAA= GSMass; // Prototype of Residual Nuclear Mass for n+a+a + G4double GSReLAA= GSMass; // Prototype of Residual Nuclear Mass for l+a+a + G4double GSReAAA= GSMass; // Prototype of Residual Nuclear Mass for a+a+a + G4QPDGCode PQPDG(22); // Prototype of QPDG for ResidualNucleus to proton + G4QPDGCode NQPDG(22); // Prototype of QPDG for ResidualNucleus to neutron + G4QPDGCode LQPDG(22); // Prototype of QPDG for ResidualNucleus to lambda + G4QPDGCode AQPDG(22); // Prototype of QPDG for ResidualNucleus to alpha + G4QPDGCode nnQPDG(22); // Prototype of QPDG for ResidualNucleus to nn-dibar. + G4QPDGCode npQPDG(22); // Prototype of QPDG for ResidualNucleus to np-dibar. + G4QPDGCode nlQPDG(22); // Prototype of QPDG for ResidualNucleus to nl-dibar. + G4QPDGCode ppQPDG(22); // Prototype of QPDG for ResidualNucleus to pp-dibar. + G4QPDGCode plQPDG(22); // Prototype of QPDG for ResidualNucleus to pl-dibar. + G4QPDGCode llQPDG(22); // Prototype of QPDG for ResidualNucleus to ll-dibar. + G4QPDGCode naQPDG(22); // Prototype of QPDG for ResidualNucleus to n+alpha + G4QPDGCode paQPDG(22); // Prototype of QPDG for ResidualNucleus to p+alpha + G4QPDGCode laQPDG(22); // Prototype of QPDG for ResidualNucleus to l+alpha + G4QPDGCode aaQPDG(22); // Prototype of QPDG for ResidualNucleus to alph+alph + G4QPDGCode dbQPDG(22); // Prototype of chosen dibaryon QPDG + G4QPDGCode fQPDG(22); // Prototype of QPDG of the Second Baryon + G4double rMass = 0.; // Prototype of mass of Residual Nucleus + G4double eMass = 0.; // Prototype of mass of Evaporated Baryon + G4double fMass = 0.; // Prototype of mass of the Second Baryon +#ifdef pdebug + G4cout<<"G4QNuc::EvaB:a>2, totM="< GSMass="<0) + { + PQPDG=G4QPDGCode(90000000+1000*(1000*S+Z-1)+N); + GSResNp=PQPDG.GetMass(); + G4double mpls=GSResNp+mProt; + G4double mmin=GSResNp-mProt; + pp2m=(tM2-mpls*mpls)*(tM2-mmin*mmin)/qtM2; + if(pp2m>=0.000001) + { + pFlag=true; + pBnd=mProt-GSMass+GSResNp; // Binding energy for proton + G4double eMax=sqrt(mP2+pp2m); +#ifdef pdebug + G4cout<<"G4QNucleus::EvapBaryon:pm="<"<"<"<"<pMin ||nFlag&&nExcess>nMin ||lFlag&&lExcess>lMin ||aFlag&&aExcess>aMin) + && minE"<nCBPP&&r<=lCBPP) + { +#ifdef pdebug + G4cout<<"G4QNucleus::EvapBar:LAMBDA is selected for evapor,r="<zCBPP&&r<=nCBPP) + { +#ifdef pdebug + G4cout<<"G4QNucleus::EvapBary: N is selected for evapor,r="<2)three=false; // @@@@@@@@@@@@@@@@@@ + //else if(PDG==pPDG&&(pnCond&&ppCond&&plCond&&paCond)) // @@@@@@@@@@@@@@@@@@@ + if(PDG==pPDG&&(pnCond&&ppCond&&plCond&&paCond))//p is out,p+b+RN decay can't happen + { +#ifdef pdebug + G4cout<<"G4QN::EB:*p*: n="<1&&GSResPP!=GSMass&&fMass+mProt+SPPBarr+GSResPP2&&N>1&&a>4&&GSResPL!=GSMass&&fMass+SAPBarr+mAlph+GSResPAzLim&&r<=sLim) + { + eMass = mLamb; + dbQPDG= PLQPDG; + rMass = GSResPL; + rQPDG = plQPDG; +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBary: P+L"<nLim&&r<=zLim) + { + eMass = mProt; + dbQPDG= PPQPDG; + rMass = GSResPP; + rQPDG = ppQPDG; +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBary: P+P"<zLim&&r<=sLim) + { + eMass = mLamb; + dbQPDG= NLQPDG; + rMass = GSResNL; + rQPDG = nlQPDG; +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBary: N+L"<nLim&&r<=zLim) + { + eMass = mProt; + dbQPDG= NPQPDG; + rMass = GSResNP; + rQPDG = npQPDG; +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBary: N+P"<zLim&&r<=sLim) + { + eMass = mLamb; + dbQPDG= LLQPDG; + rMass = GSResLL; + rQPDG = llQPDG; +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBary: L+L"<nLim&&r<=zLim) + { + eMass = mProt; + dbQPDG= PLQPDG; + rMass = GSResPL; + rQPDG = plQPDG; +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBary: L+P"<zLim&&r<=sLim) + { + eMass = mLamb; + dbQPDG= LAQPDG; + rMass = GSResLA; + rQPDG = laQPDG; +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBary: A+L"<nLim&&r<=zLim) + { + eMass = mProt; + dbQPDG= PAQPDG; + rMass = GSResPA; + rQPDG = paQPDG; +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBary: A+P"< Decay in 3 Baryons + Residual is impossible at this point + { + if(secB) // Decay in 2Baryons(2a,a+bary)+ResidN is possible + //if(2>3) + { +#ifdef pdebug + G4cout<<"G4QNucleus::EvaporateBaryon: Decay in 2 baryons"<mNeut+mNeut+GSResNN) + nnLim+=N*(N-1)*pow(totMass-mNeut-mNeut-GSResNN,2); + G4double nzLim=nnLim; + if(npFlag&&totMass>mNeut+mProt+PBarr+GSResNP) + { + if(barf) nzLim+=2*N*Z*pow(totMass-mNeut-mProt-PBarr-GSResNP,2); + else nzLim+=2*N*Z*pow(totMass-mNeut-mProt-GSResNP,2); + } + G4double zzLim=nzLim; + if(ppFlag&&totMass>mProt+mProt+SPPBarr+GSResPP) + { + if(barf) zzLim+=Z*(Z-1)*pow(totMass-mProt-mProt-SPPBarr-GSResPP,2); + else zzLim+=Z*(Z-1)*pow(totMass-mProt-mProt-GSResPP,2); + } + G4double nlLim=zzLim; + if(nlFlag&&totMass>mNeut+mLamb+GSResNL) + nlLim+=2*N*S*pow(totMass-mNeut-mLamb-GSResNL,2); + G4double zlLim=nlLim; + if(plFlag&&totMass>mProt+PBarr+mLamb+GSResPL) + { + if(barf) zlLim+=2*Z*S*pow(totMass-mProt-mLamb-PBarr-GSResPL,2); + else zlLim+=2*Z*S*pow(totMass-mProt-mLamb-GSResPL,2); + } + G4double llLim=zlLim; + if(llFlag&&totMass>mLamb+mLamb+GSResLL) + llLim+=S*(S-1)*pow(totMass-mLamb-mLamb-GSResLL,2); + G4double naLim=llLim; + if(naFlag&&totMass>mNeut+mAlph+ABarr+GSResNA) + { + if(barf) naLim+=(N-3)*alp*pow(totMass-mNeut-mAlph-ABarr-GSResNA,2); + else naLim+=(N-3)*alp*pow(totMass-mNeut-mAlph-GSResNA,2); + } + G4double zaLim=naLim; + if(paFlag&&totMass>mProt+SAPBarr+mAlph+GSResPA) + { + if(barf) zaLim+=(Z-3)*alp*pow(totMass-mProt-mAlph-SAPBarr-GSResPA,2); + else zaLim+=(Z-3)*alp*pow(totMass-mProt-mAlph-GSResPA,2); + } + G4double laLim=zaLim; + if(laFlag&&totMass>mLamb+mAlph+ABarr+GSResLA) + { + if(barf) laLim+=S*alp*pow(totMass-mLamb-mAlph-ABarr-GSResLA,2); + else laLim+=S*alp*pow(totMass-mLamb-mAlph-GSResLA,2); + } + G4double aaLim=laLim; + if(alpha&&aaFlag&&totMass>mAlph+mAlph+SAABarr+GSResAA) + { + if(barf) aaLim+=alp*pow(totMass-mAlph-mAlph-SAABarr-GSResAA,2)* + alpha*(Z-2)*(Z-3)*(N-2)*(N-3)*7/(a-5)/(a-6)/(a-7); + else aaLim+=alp*pow(totMass-mAlph-mAlph-GSResAA,2)* + alpha*(Z-2)*(Z-3)*(N-2)*(N-3)*7/(a-5)/(a-6)/(a-7); + } + G4double r = aaLim*G4UniformRand(); + if (aaLim&&laLimSetQPDG(gQPDG); + h1->Set4Momentum(G4LorentzVector(0.,0.,0.,0.)); + if (Z>0) + { + h2->SetQPDG(pQPDG); + h2->Set4Momentum(G4LorentzVector(0.,0.,0.,mProt)); + } + else if(N>0) + { + h2->SetQPDG(nQPDG); + h2->Set4Momentum(G4LorentzVector(0.,0.,0.,mNeut)); + } + else if(S>0) + { + h2->SetQPDG(lQPDG); + h2->Set4Momentum(G4LorentzVector(0.,0.,0.,mLamb)); + } + else return false; + return true; + } + if(a<1) G4cerr<<"***G4QNucleus::EvaporateBaryon: A="<s && iaN)G4cout<<"***G4QN::RandB for N="<GetPDGCode(); + G4int cBN = curCand->GetBaryonNumber(); + //if(piF&&gaF&&cPDG!=90000001&&cPDG!=90001000) // Both flags, which is in case of pi-first-int + //if(piF&&gaF&&cBN!=1&&cBN!=3) // Both flags, which is in case of pi-first-int + if(piF&&gaF&&cBN!=1) // Should be both, which is in case of pi-first-int + { + curCand->SetPreProbability(0.); + curCand->SetDenseProbability(0.); + curCand->SetPossibility(false); +#ifdef pdebug + if(cPDG==90001001) G4cout<<"G4QNucleus::PrepareCand: piF/gaF fragments are blocked"<80000000&&cPDG!=90000000) // ===> Cluster case + { + G4QNucleus cN(cPDG); + G4int zc = cN.GetZ(); // "Z" of the cluster + G4int nc = cN.GetN(); // "N" of the cluster + G4int sc = cN.GetS(); // "S" of the cluster + G4int ac = cN.GetA(); // "A" of the cluster + if(ac<=maxClust) + { + pos = probVect[ac]; // Get a cluster probability normalization factor + G4int dac=ac+ac; + if (piF&&!gaF) pos*=(zc+ac)/ac; // For piF 1-st interaction act (#of u-quarks) + else if(gaF&&!piF) + { + pos*=(zc+dac)/dac; // For gaF 1-st interaction act (sum of Q_q^2) + //pos*=(zc+ac)/ac; // For piF 1-st interaction act (#of u-quarks) + //pos*=zc/ac; // For gaF 1-st interaction act (#of protons) +#ifdef pdebug + if(cPDG==90001000) G4cout<<"G4QNucleus::PrepareCand: proton gaF enhanced"<2 + { + if(acm3) // ***RECALCULATION*** is closed (comb uncom'd) + { + G4double rat=1.; + if(s>0.) rat/=s; + if(pos) pos*=rat; + curCand->SetPreProbability(pos); + curCand->SetDenseProbability(pos); + for(int ir=1; irGetPreProbability(); + if(pos) + { + pos*=rat; +#ifdef pdebug + G4cout<<"G4QN::PrepC: i="<SetPreProbability(0.); + curCand->SetDenseProbability(0.); + curCand->SetPossibility(false); // This candidate is not possible + } + } + else + { + curCand->SetPreProbability(pos); // ===> Hadronic case in Vacuum + curCand->SetDenseProbability(0.); // ===> Hadronic case in Vacuum + } + curCand->SetPossibility(true); // All candidates are possible at this point + } + } // End of the LOOP over Candidates +#ifdef pdebug + G4cout<<"G4QNucl::PrepCand:coveredP="<(cZ); + G4int cN=static_cast(cA-cZ); + G4int sZ=iZ; + G4int sN=cN; + if(delZ||dA) + { + G4int dz=static_cast(delZ); + G4int dn=static_cast(dA-delZ); + GSM=G4QNucleus(Z-dz,N-dn,S).GetGSMass(); + sZ-=dz; + sN-=dn; + } + return G4QNucleus(Z-sZ,N-sN,S).GetGSMass()+G4QNucleus(iZ,cN,0).GetGSMass()-GSM; +} // End of "BindingEnergy" + +//Coulomb Barrier Reflection Probability (CB - Coulomb Barrier, E - Kinetic Energy) +G4double G4QNucleus::CoulBarPenProb(const G4double& CB, const G4double& E, + const G4int& C, const G4int& B) +{// = A.Lepretre et al, Nucl.Phys., A390 (1982) 221-239 = + static const G4double mNeut= G4QPDGCode(2112).GetMass(); // Mass of neutron + static const G4double mProt= G4QPDGCode(2212).GetMass(); // Mass of proton + static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0); // Mass of deuteron + static const G4double mTrit= G4QPDGCode(2112).GetNuclMass(1,2,0); // Mass of tritium + static const G4double mHel3= G4QPDGCode(2112).GetNuclMass(2,1,0); // Mass of Helium 3 + static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0); // Mass of alpha + static const G4double wellDebth=27.; //@@ Should be jus binding energy @@ done + //if(B>1) return 1.; + G4double nA=GetA(); + //G4double nA=GetA()-B; + //if(nA==40) G4cout<<"G4QN::CBPP:Z="<8&&nA<12||nA>16&&nA<40) return 1.; // "OverBarrierReflection is closed" cond + //else if(nA>8&&nA<12||nA>16&&nA<40) return 1.; // "OverBarrierReflection is closed" Condition + else if(nA<12||nA>16&&nA<40) return 1.; // "OverBarrierReflection is closed" Condition + //else if(nA<12||nA>16) return 1.; // "OverBarrierReflection is closed" Condition + //else if(nA<12) return 1.; // @@@@@ Over barrier reflection is closed @@@ !!! @@@ + //if(B+B>Z+N+S) return 1.; + //G4double wD=wellDebth*B; + G4double wD=wellDebth; + //G4double wD=0.; + G4double GSM=GetGSMass(); + if(3<2); + //else if(nA<7&&B>0) wD=0.; // Only Coulomb Barrier can reflect !!! + //else if((nA<12||nA>16)&&B>0) wD=0.; // Only Coulomb Barrier can reflect !!! O16 E-dep of gamA + //else if((nA<12||nA>27)&&B>0) wD=0.; // Only Coulomb Barrier can reflect !!! O16 E-dep of gamA + //else if(nA<9&&B>0) return 1.; // Only Coulomb Barrier can reflect !!! O16 E-dep of gamA + //else if(B>0) wD=0.; // Only Coulomb Barrier can reflect !!! + //else if(B==1) wD=0.; + else if(B==1&&C==1) wD=G4QNucleus(Z-1,N,S).GetGSMass()+mProt-GSM; + else if(B==1&&C==0) wD=G4QNucleus(Z,N-1,S).GetGSMass()+mNeut-GSM; + //else if(B==1&&C==0) wD=0.; + //else if(B>1) return 1.; + else if(B>1) wD=0.; + //else if(B==2) wD=0.; + else if(B==2&&C==0) wD=G4QNucleus(Z,N-2,S).GetGSMass()+mNeut+mNeut-GSM; + else if(B==2&&C==1) wD=G4QNucleus(Z-1,N-1,S).GetGSMass()+mDeut-GSM; + else if(B==2&&C==2) wD=G4QNucleus(Z-2,N,S).GetGSMass()+mProt+mProt-GSM; + //else if(B>2) wD=0.; + //else if(B>2) return 1.; + //else if(B==3) wD=0.; + else if(B==3&&C==1) wD=G4QNucleus(Z-1,N-2,S).GetGSMass()+mTrit-GSM; + //else if(B==3&&C==1) wD=0.; + else if(B==3&&C==2) wD=G4QNucleus(Z-2,N-1,S).GetGSMass()+mHel3-GSM; + //else if(B>3) wD=0.; + //else if(B==4) wD=0.; + else if(B==4&&C==2) wD=G4QNucleus(Z-2,N-2,S).GetGSMass()+mAlph-GSM; + //else if(B>4) wD=0.; + //else if(B>4) return 1.; + else if(B>4) wD=G4QNucleus(Z-C,N-B+C,S).GetGSMass()+G4QNucleus(C,B-C,S).GetGSMass()-GSM; + if(wD<0.) wD=0.; + G4double sR=0.; + //if(nA<27) sR=sqrt(wD/(E+wD)); + //else sR=sqrt((CB+wD)/(E+wD)); + sR=sqrt((CB+wD)/(E+wD)); + //sR=sqrt(wD/(E+wD)); +#ifdef ppdebug + G4cout<<"G4QN::CBPP:sR="<=1.) return 0.; + return 1.-sR*sR*sR; +} // End of "CoulBarPenProb" + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc new file mode 100755 index 0000000000..fe0b78c7ff --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QPDGCode.cc @@ -0,0 +1,1099 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QPDGCode.cc,v 1.25 2001/11/28 13:47:07 stesting Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QPDGCode ---------------- +// by Mikhail Kossov, Sept 1999. +// class for Hadron definitions in CHIPS Model +// ------------------------------------------------------------------- + +//#define debug +//#define pdebug + +#include "G4QPDGCodeVector.hh" + +G4QPDGCode::G4QPDGCode(G4int PDGCode): thePDGCode(PDGCode) +{ + if(PDGCode) theQCode=MakeQCode(PDGCode); + else + { +#ifdef pdebug + G4cout<<"***G4QPDGCode: Constructed with PDGCode=0, QCode=-2"<thePDGCode; + theQCode =rhs->theQCode; +} + +const G4QPDGCode& G4QPDGCode::operator=(const G4QPDGCode& rhs) +{ + thePDGCode =rhs.thePDGCode; + theQCode =rhs.theQCode; + + return *this; +} + +G4QPDGCode::~G4QPDGCode() {} + +// Standard output for QPDGCode +G4std::ostream& operator<<(G4std::ostream& lhs, G4QPDGCode& rhs) +// ========================================= +{ + lhs << "[ PDG=" << rhs.GetPDGCode() << ", Q=" << rhs.GetQCode() << "]"; + return lhs; +} + +// Standard output for const QPDGCode +G4std::ostream& operator<<(G4std::ostream& lhs, const G4QPDGCode& rhs) +// =============================================== +{ + lhs << "[ PDG=" << rhs.GetPDGCode() << ", Q=" << rhs.GetQCode() << "]"; + return lhs; +} + +// Overloading of QPDGCode addition +G4int operator+(const G4QPDGCode& lhs, const G4QPDGCode& rhs) +// ======================================================= +{ + G4int s = lhs.GetPDGCode(); + return s += rhs.GetPDGCode(); +} +G4int operator+(const G4QPDGCode& lhs, const G4int& rhs) +// ======================================================= +{ + G4int s = lhs.GetPDGCode(); + return s += rhs; +} +G4int operator+(const G4int& lhs, const G4QPDGCode& rhs) +// ======================================================= +{ + G4int s = lhs; + return s += rhs.GetPDGCode(); +} + +// Overloading of QPDGCode subtraction +G4int operator-(const G4QPDGCode& lhs, const G4QPDGCode& rhs) +// ======================================================= +{ + G4int s = lhs.GetPDGCode(); + return s -= rhs.GetPDGCode(); +} +G4int operator-(const G4QPDGCode& lhs, const G4int& rhs) +// ======================================================= +{ + G4int s = lhs.GetPDGCode(); + return s -= rhs; +} +G4int operator-(const G4int& lhs, const G4QPDGCode& rhs) +// ======================================================= +{ + G4int s = lhs; + return s -= rhs.GetPDGCode(); +} + +// Overloading of QPDGCode multiplication +G4int operator*(const G4QPDGCode& lhs, const G4QPDGCode& rhs) +// ======================================================= +{ + G4int s = lhs.GetPDGCode(); + return s *= rhs.GetPDGCode(); +} +G4int operator*(const G4QPDGCode& lhs, const G4int& rhs) +// ======================================================= +{ + G4int s = lhs.GetPDGCode(); + return s *= rhs; +} +G4int operator*(const G4int& lhs, const G4QPDGCode& rhs) +// ======================================================= +{ + G4int s = lhs; + return s *= rhs.GetPDGCode(); +} + +// Overloading of QPDGCode division +G4int operator/(const G4QPDGCode& lhs, const G4QPDGCode& rhs) +{// ======================================================= + G4int s = lhs.GetPDGCode(); + return s /= rhs.GetPDGCode(); +} +G4int operator/(const G4QPDGCode& lhs, const G4int& rhs) +{// ================================================== + G4int s = lhs.GetPDGCode(); + return s /= rhs; +} +G4int operator/(const G4int& lhs, const G4QPDGCode& rhs) +{// ================================================== + G4int s = lhs; + return s /= rhs.GetPDGCode(); +} + +// Overloading of QPDGCode residual +G4int operator%(const G4QPDGCode& lhs, const G4int& rhs) +{// ================================================== + G4int s = lhs.GetPDGCode(); + return s %= rhs; +} + +// TRUE if it is not RealNeutral (111,221,331 etc), FALSE if it is. +G4bool G4QPDGCode::TestRealNeutral(const G4int& PDGCode) +{// ================================================= + if(PDGCode>0 && PDGCode<999) // RealNeutral are always positive && mesons + { + if(PDGCode==22) return false; // Photon + G4int p=PDGCode/10; + if(p/10==p%10) return false; // This is a RealNeutral + } + return true; +} + +// Make a Q Code out of the PDG Code +G4int G4QPDGCode::MakePDGCode(const G4int& QCode) +{// =========================================== + //static const G4int modi = 81; // Q Codes for more than di-baryon nuclei + static const G4int modi = 89; // Q Codes for more than di-baryon nuclei "IsoNuclei" + static G4int qC[modi] = { 22, 110, 220, 330, 111, 211, 221, 311, 321, 331, + 2112, 2212, 3122, 3112, 3212, 3222, 3312, 3322, 113, 213, + 223, 313, 323, 333, 1114, 2114, 2214, 2224, 3124, 3114, + 3214, 3224, 3314, 3324, 3334, 115, 215, 225, 315, 325, + 335, 2116, 2216, 3126, 3116, 3216, 3226, 3316, 3326, 117, + 217, 227, 317, 327, 337, 1118, 2118, 2218, 2228, 3128, + 3118, 3218, 3228, 3318, 3328, 3338, 119, 219, 229, 319, + 329, 339, 90002999 , 89999003 , 90003998 , 89998004 , + 90003999 , 89999004 , 90004998 , 89998005 , + 90000001 , 90001000 , 91000000 , 90000002 , + 90001001 , 90002000 , 91000001 , 91001000 , 92000000}; + static G4int aC[15] = {1,1000,999001,1000000,1000999,1999000,1999999, // sum 1 + 2,1001,2000,1000001,1001000,1999001,2000000,2000999}; // sum 2 + if (QCode<0) + { + G4cerr<<"***G4QPDGCode::MakePDGCode: negative Q Code ="<=modi) + { + G4int q=QCode-modi; // Starting BarNum=3 + G4int a=q/15+1; // BarNum/2 + G4int b=q%15; + return 90000000+a*1001+aC[b]; + } + return qC[theQCode]; +} + +// Make a Q Code out of the PDG Code +G4int G4QPDGCode::MakeQCode(const G4int& PDGCode) +{// =========================================== + G4int PDGC=abs(PDGCode); // Qcode is always not negative + if (PDGC<80000000) // Baryons & Mesons + { + if(PDGC>10000000) return -2; // Impossible code + if (PDGC==10) return -1; // Chipolino + else if(PDGC==22) return 0; // Photon + else if(PDGC==110) return 1; // Low R-P: Sigma (pi,pi S-wave) + else if(PDGC==220) return 2; // Midle Regeon-Pomeron + else if(PDGC==330) return 3; // High Regeon-Pomeron + G4int p=PDGC/10; // Quark Content + G4int r=PDGC%10; // 2s+1 + G4int Q= 0; + if (!r) + { +#ifdef pdebug + G4cout<<"***G4QPDGCode::MakeQCode: (0) Unknown in Q-System code: "<700) + { + n-=1000; + dz--; + } + G4int z=sz%1000-dz; + if(z>700) + { + z-=1000; + ds--; + } + G4int s=sz/1000-ds; + G4int d=n+n+z+s; // a#of d quarks + G4int u=n+z+z+s; // a#of u quarks + G4int t=d+u+s; // tot#of quarks + if(t%3 || abs(t)<3) // b=0 are in mesons + { +#ifdef pdebug + G4cout<<"***G4QPDGCode::MakeQCode: Unknown PDGCode="<80000000) // Nuclear coding + { + G4int szn=thePDGCode-90000000; + //if(szn==0) return m[4]; // mPi0 %%???? MK ???? + if(szn==0) return 0.; + G4int ds=0; + G4int dz=0; + G4int dn=0; + if(szn<-100000) + { + G4int ns=(-szn)/1000000+1; + szn+=ns*1000000; + ds+=ns; + } + else if(szn<-100) + { + G4int nz=(-szn)/1000+1; + szn+=nz*1000; + dz+=nz; + } + else if(szn<0) + { + G4int nn=-szn; + szn=0; + dn+=nn; + } + G4int sz =szn/1000; + G4int n =szn%1000; + if(n>700) + { + n-=1000; + dz--; + } + G4int z =sz%1000-dz; + if(z>700) + { + z-=1000; + ds--; + } + G4int s =sz/1000-ds; + return GetNuclMass(z,n,s); + } + else if(ab<0||!thePDGCode) + { +#ifdef debug + if(thePDGCode!=10) + G4cout<<"***G4QPDGCode::GetMass: m=100000., QCode="<151)=-57.56-5.542*X**1.05 + static const G4double b8=10.5; // (Lambda binding energy exponent) + static const G4double b9=-1./3.; + static const G4double a2=0.13; // Lambda binding energy for the deutron+Lambda system (MeV) + static const G4double a3=2.2; // Lambda binding energy for (t or He3)+Lambda system (MeV) + static const G4double um=931.49432; // Umified atomic mass unit (MeV) + static const G4double me =0.511; // electron mass (MeV) :: n:8.071, p:7.289 + static G4double c[9][9]={// z=1 =2 =3 =4 =5 =6 =7 =8 =9 + {13.136,14.931,25.320,38.000,45.000,55.000,65.000,75.000,85.000}, //n=1 + {14.950, 2.425,11.680,18.374,27.870,35.094,48.000,60.000,72.000}, //n=2 + {25.930,11.390,14.086,15.770,22.921,28.914,39.700,49.000,60.000}, //n=3 + {36.830,17.594,14.908, 4.942,12.416,15.699,24.960,32.048,45.000}, //n=4 + {41.860,26.110,20.946,11.348,12.051,10.650,17.338,23.111,33.610}, //n=5 + {45.000,31.598,24.954,12.607, 8.668, 0.000, 5.345, 8.006,16.780}, //n=6 + {50.000,40.820,33.050,20.174,13.369, 3.125, 2.863, 2.855,10.680}, //n=7 + {55.000,48.810,40.796,25.076,16.562, 3.020, 0.101,-4.737,1.9520}, //n=8 + {60.000,55.000,50.100,33.660,23.664, 9.873, 5.683,-0.809,0.8730}}; //n=9 +#ifdef debug + G4cout<<"G4QPDGCode::GetNuclMass called with Z="<=0) // Bn*LAMBDA's + (-(N+Z))*Kaons + { + if (N<0&&Z<0) return Bn*mL-Z*mK -N*mK0+0.001* S ; + else if(N<0) return Bn*mL+Z*mPi-A*mK0+0.001*(Z+S); + else return Bn*mL+N*mPi-A*mK +0.001*(N+S); + } + if(!Bn) // => "GS Mesons - octet" case (without eta&pi0) + { + if (N==1&&Z==-1||N==-1&&Z==1) return mPi; + else if(N==1&&S==-1||N==-1&&S==1) return mK0; + else if(S==1&&Z==-1||S==-1&&Z==1) return mK; + else return 0.; // Exotic mesons (4q) + } + if(Bn==1) // => "GS Baryons - decuplet" case (withoutSigma0) + { + if (Z== 1 && N== 0 && S== 0) return mP; + else if(Z== 0 && N== 1 && S== 0) return mN; + else if(Z== 0 && N== 0 && S== 1) return mL; + // @@ For future improvement of Octet baryon production (@@change decays!) + //else if(Z== 1 && N==-1 && S== 1) return mSp; // Lower than LAMBDA + pi+ + //else if(Z==-1 && N== 1 && S== 1) return mSm; // Lower than LAMBDA + pi- + //else if(Z== 0 && N==-1 && S== 2) return mKz; // Lower than LAMBDA + K0 + //else if(Z==-1 && N== 0 && S== 2) return mKm; // Lower than LAMBDA + K- + } + // === Start mesonic extraction === + G4double k=0.; // Mass Sum of K+ mesons + if(S<0) // @@ Can be improved by K0/K+ search of minimum + { + if(Bn<0) return 0.; // @@ Make it for antinuclei @@ (Bn<0) + if(Z>0) + { + if(Z>=-S) // => "Enough protons in nucleus" case + { + k=-S*mK; + Z+=S; + } + else + { + k=Z*mK-(S+Z)*mK0; + N+=S+Z; + if(N<0) return 0.; // @@ Antiparticles aren't implemented @@ + Z=0; + } + } + else if(N>0) + { + if(N>=-S) // => "Enough neutrons in nucleus" case + { + k-=S*mK0; + N+=S; + } + else + { + k+=N*mK0-(S+N)*mK; + Z+=S+N; + if(Z<0) return 0.; // @@ Antiparticles aren't implemented @@ + N=0; + } + } + else return 0.; // @@ Antiparticles aren't implemented @@ + S=0; + } + if(N<0) + { + k+=-N*mPi; + Z+=N; // A=Z+N>=0 + N=0; + } + if(Z<0) + { + k+=-Z*mPi; + N+=Z; // A=Z+N>=0 + Z=0; + } + A=Z+N; + if (!A) return k+S*mL+S*.001; // @@ multy LAMBDA states are not implemented + G4double m=k+A*um; // Expected mass in atomic units + G4double D=N-Z; // Isotopic shift of the nucleus + if(A+S<1&&k==0.||Z<0||N<0) // @@ Can be generalized to anti-nuclei + { +#ifdef debug + G4cerr<<"***G4QPDGCode::GetNuclMass: A="<maxM) m=maxM; + if(S>0) + { + G4double bs=0.; + if (S==2) bs=a2; + else if(S==3) bs=a3; + else if(S>3) bs=b7*exp(-b8/(A+1.)); + m+=S*(mL-bs); + } +#ifdef debug + G4cout<<"G4QPDGCode::GetNuclMass: >>>OUT<<< m="<700) + { + n-=1000; + dz--; + } + G4int z =sz%1000-dz; + if(z>700) + { + z-=1000; + ds--; + } + s =sz/1000-ds; + G4int b=z+n+s; + d=n+b; + u=z+b; + if (d<0&&u<0&&s<0) return G4QContent(0,0,0,-d,-u,-s); + else if (u<0&&s<0) return G4QContent(d,0,0,0,-u,-s); + else if (d<0&&s<0) return G4QContent(0,u,0,-d,0,-s); + else if (d<0&&u<0) return G4QContent(0,0,s,-d,-u,0); + else if (u<0) return G4QContent(d,0,s,0,-u,0); + else if (s<0) return G4QContent(d,u,0,0,0,-s); + else if (d<0) return G4QContent(0,u,s,-d,0,0); + else return G4QContent(d,u,s,0,0,0); + } + return G4QContent(0,0,0,0,0,0); +} + +// Quark Content of pseudo-meson for q_i->q_o Quark Exchange +G4QContent G4QPDGCode::GetExQContent(G4int i, G4int o) const +{// ================================================== + G4QContent cQC(0,0,0,0,0,0); + if (!i) cQC.IncAD(); + else if(i==1) cQC.IncAU(); + else if(i==2) cQC.IncAS(); + else G4cerr<<"***G4QPDGCode::GetExQContent: strange entering quark i="<thePDGCode; + theProbability = rhs->theProbability; + nQPart2 = rhs->nQPart2; + transQC = rhs->transQC; + lowLimit = rhs->lowLimit; + highLimit = rhs->highLimit; + theEnvBoundedMass = rhs->theEnvBoundedMass; + theEnvBindingEnergy = rhs->theEnvBindingEnergy; + theNucBoundedMass = rhs->theNucBoundedMass; + theNucBindingEnergy = rhs->theNucBindingEnergy; +} + +const G4QParentCluster& G4QParentCluster::operator=(const G4QParentCluster& rhs) +{ + thePDGCode = rhs.thePDGCode; + theProbability = rhs.theProbability; + nQPart2 = rhs.nQPart2; + transQC = rhs.transQC; + lowLimit = rhs.lowLimit; + highLimit = rhs.highLimit; + theEnvBoundedMass = rhs.theEnvBoundedMass; + theEnvBindingEnergy = rhs.theEnvBindingEnergy; + theNucBoundedMass = rhs.theNucBoundedMass; + theNucBindingEnergy = rhs.theNucBindingEnergy; + + return *this; +} + +G4QParentCluster::~G4QParentCluster() {} + +// Standard output for G4QParentCluster +G4std::ostream& operator<<(G4std::ostream& lhs, G4QParentCluster& rhs) +{// =============================================== + lhs << "[ParClPDG=" << rhs.GetPDGCode() << ", probab=" << rhs.GetProbability() << "]"; + return lhs; +} + +// Standard output for const G4QParentCluster +G4std::ostream& operator<<(G4std::ostream& lhs, const G4QParentCluster& rhs) +{// =============================================== + lhs << "[ParClPDG=" << rhs.GetPDGCode() << ", probab=" << rhs.GetProbability() << "]"; + return lhs; +} + + + + + diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParticle.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParticle.cc new file mode 100755 index 0000000000..bdcc23e791 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QParticle.cc @@ -0,0 +1,698 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4QParticle.cc,v 1.17 2001/11/26 14:11:47 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4QParticle ---------------- +// by Mikhail Kossov, Sept 1999. +// class for Particles in the CHIPS Model +// ------------------------------------------------------------------- + +//#define debug +//#define pdebug + +#include "G4QParticleVector.hh" + +G4QParticle::G4QParticle() {} + +G4QParticle::G4QParticle(G4int thePDG) +{ + aQPDG = G4QPDGCode(thePDG); + aQuarkCont = aQPDG.GetQuarkContent(); + aDecay = InitDecayVector(aQPDG.GetQCode()); +} + +G4QParticle::G4QParticle(const G4QParticle& right) +{ + aQPDG = right.aQPDG; + //aDecay (Vector) + G4int nD = right.aDecay.size(); + if(nD) for(G4int id=0; idaQPDG; + //aDecay (Vector) + G4int nD = right->aDecay.size(); + if(nD) for(G4int id=0; idaDecay[id]); + aDecay.push_back(curD); + } + + aQuarkCont = right->aQuarkCont; +} + +G4QParticle::~G4QParticle() +{ + G4std::for_each(aDecay.begin(), aDecay.end(), DeleteQDecayChan()); +} + +// Assignment operator +const G4QParticle& G4QParticle::operator=(const G4QParticle &right) +{ + aQPDG = right.aQPDG; + //aDecay (Vector) + G4int nD = right.aDecay.size(); + if(nD) for(G4int id=0; idGetDecayChanLimit() << "PDG codes"; + G4QPDGCodeVector PCV=DCV[i]->GetVecOfSecHadrons(); + G4int m = PCV.size(); + for (int j=0; jGetPDGCode() ; + } + } + return lhs; +} + +// Initialize the PDG-Particle by QCode @@ Can be improved, using PDG.DATA file +G4QDecayChanVector G4QParticle::InitDecayVector(G4int nQ) +// =================================================== +{ + //static G4int nP = 486; // Up to A=80 + static G4int nP = 494; // Up to A=80 "Isonuclear revision" + static G4QDecayChanVector* DecayDB = new G4QDecayChanVector[nP]; + static int limit= 0; + if(nQ>=limit && nQ= 0)DecayDB[ 0] = NULL; // gamma + if(limit<= 1 && nQ>= 1) // Low sigma=pi,pi S-wave : f_0 (800) + { + DecayDB[ 1].push_back(new G4QDecayChan(.333,211,-211)); + DecayDB[ 1].push_back(new G4QDecayChan(1.00,111, 111)); + } + if(limit<= 2 && nQ>= 2) // Midle Regeon-Pomeron : f_0 (980) + { + DecayDB[ 2].push_back(new G4QDecayChan(.333,211,-211)); + DecayDB[ 2].push_back(new G4QDecayChan(1.00,111, 111)); + } + if(limit<= 3 && nQ>= 3) // High Regeon-Pomeron : f_0 (1500) + { + DecayDB[ 3].push_back(new G4QDecayChan(.300,221, 331)); + DecayDB[ 3].push_back(new G4QDecayChan(.600,221, 221)); + DecayDB[ 3].push_back(new G4QDecayChan(.650,311,-311)); + DecayDB[ 3].push_back(new G4QDecayChan(.700,321,-321)); + DecayDB[ 3].push_back(new G4QDecayChan(.800,211,-211)); + DecayDB[ 3].push_back(new G4QDecayChan(1.00,111, 111)); + } + //if(limit<= 4 && nQ>= 4)DecayDB[ 4].push_back(new G4QDecayChan(1.00, 22, 22));//Pi 0 + //if(limit<= 5 && nQ>= 5)DecayDB[ 5] = NULL; // Pi + + if(limit<= 6 && nQ>= 6) // eta + { + DecayDB[ 6].push_back(new G4QDecayChan(.231,211,-211,111)); + DecayDB[ 6].push_back(new G4QDecayChan(.553,111, 111,111)); + DecayDB[ 6].push_back(new G4QDecayChan(.603,211,-211, 22)); + DecayDB[ 6].push_back(new G4QDecayChan(1.00, 22, 22)); + } + //if(limit<= 7 && nQ>= 7) // K 0 (K_short - probab 1/2) @@@@@@@@@@@@ + //{ + // DecayDB[ 7].push_back(new G4QDecayChan(.6861,211,-211)); + // DecayDB[ 7].push_back(new G4QDecayChan(1.00, 111, 111)); + //} + //if(limit<= 8 && nQ>= 8)DecayDB[ 8] = NULL; // K + + if(limit<= 9 && nQ>= 9) // eta' + { + DecayDB[ 9].push_back(new G4QDecayChan(.438,211,-211,221)); + DecayDB[ 9].push_back(new G4QDecayChan(.645,111, 111,221)); + DecayDB[ 9].push_back(new G4QDecayChan(.675, 22, 223)); + DecayDB[ 9].push_back(new G4QDecayChan(.677,111, 111,111)); + DecayDB[ 9].push_back(new G4QDecayChan(.979, 22, 113)); + DecayDB[ 9].push_back(new G4QDecayChan(1.00, 22, 22)); + } + //if(limit<= 10 && nQ>= 10)DecayDB[ 10] = NULL; // n + //if(limit<= 11 && nQ>= 11)DecayDB[ 11] = NULL; // p + //if(limit<= 12 && nQ>= 12) // Lambda ===>>> all week decays are closed at this time + //{ + // DecayDB[ 12].push_back(new G4QDecayChan(.640,2212,-211)); + // DecayDB[ 12].push_back(new G4QDecayChan(1.00,2112, 111)); + //} + //if(limit<= 13 && nQ>= 13)DecayDB[ 13].push_back(new G4QDecayChan(1.00,2112,-211)); // Sigma - + if(limit<= 14 && nQ>= 14)DecayDB[ 14].push_back(new G4QDecayChan(1.00,3122, 22));//Sigma 0(EM) + //if(limit<= 15 && nQ>= 15) // Sigma + + //{ + // DecayDB[ 15].push_back(new G4QDecayChan(.484,2112, 211)); + // DecayDB[ 15].push_back(new G4QDecayChan(1.00,2212, 111)); + //} + //if(limit<= 16 && nQ>= 16)DecayDB[ 16].push_back(new G4QDecayChan(1.00,3122,-211)); // Ksi - + //if(limit<= 17 && nQ>= 17)DecayDB[ 17].push_back(new G4QDecayChan(1.00,3122, 111)); // Ksi 0 + if(limit<= 18 && nQ>= 18)DecayDB[ 18].push_back(new G4QDecayChan(1.00, 211,-211)); // rho 0 + if(limit<= 19 && nQ>= 19)DecayDB[ 19].push_back(new G4QDecayChan(1.00, 211, 111)); // rho + + if(limit<= 20 && nQ>= 20) // omega + { + DecayDB[ 20].push_back(new G4QDecayChan(.892, 211,-211,111)); + DecayDB[ 20].push_back(new G4QDecayChan(.914, 211,-211)); + DecayDB[ 20].push_back(new G4QDecayChan(1.00, 22, 111)); + } + if(limit<= 21 && nQ>= 21) // K* 0 + { + DecayDB[ 21].push_back(new G4QDecayChan(.667,-211, 321)); + DecayDB[ 21].push_back(new G4QDecayChan(1.00, 111, 311)); + } + if(limit<= 22 && nQ>= 22) // K* + + { + DecayDB[ 22].push_back(new G4QDecayChan(.667, 211, 311)); + DecayDB[ 22].push_back(new G4QDecayChan(1.00, 111, 321)); + } + if(limit<= 23 && nQ>= 23) // phi + { + DecayDB[ 23].push_back(new G4QDecayChan(.341, 311,-311)); + DecayDB[ 23].push_back(new G4QDecayChan(.832, 321,-321)); + DecayDB[ 23].push_back(new G4QDecayChan(.850, 22, 221)); + DecayDB[ 23].push_back(new G4QDecayChan(.900, 211,-213)); + DecayDB[ 23].push_back(new G4QDecayChan(.950,-211, 213)); + DecayDB[ 23].push_back(new G4QDecayChan(1.00, 111, 113)); + } + if(limit<= 24 && nQ>= 24)DecayDB[ 24].push_back(new G4QDecayChan(1.00,2112,-211)); // Delta - + if(limit<= 25 && nQ>= 25) // Delta 0 + { + DecayDB[ 25].push_back(new G4QDecayChan(.333,2212,-211)); + DecayDB[ 25].push_back(new G4QDecayChan(1.00,2112, 111)); + } + if(limit<= 26 && nQ>= 26) // Delta + + { + DecayDB[ 26].push_back(new G4QDecayChan(.333,2112, 211)); + DecayDB[ 26].push_back(new G4QDecayChan(1.00,2212, 111)); + } + if(limit<= 27 && nQ>= 27)DecayDB[ 27].push_back(new G4QDecayChan(1.00,2212, 211)); // Delta ++ + if(limit<= 28 && nQ>= 28) // Lambda* (1520) + { + DecayDB[ 28].push_back(new G4QDecayChan(.230,3112,-311)); + DecayDB[ 28].push_back(new G4QDecayChan(.460,3222,-321)); + DecayDB[ 28].push_back(new G4QDecayChan(.463,3112,211,111)); + DecayDB[ 28].push_back(new G4QDecayChan(.466,3212,211,-211)); + DecayDB[ 28].push_back(new G4QDecayChan(.467,3212,111,111)); + DecayDB[ 28].push_back(new G4QDecayChan(.470,3222,-211,111)); + DecayDB[ 28].push_back(new G4QDecayChan(.540,3122,211,-211)); + DecayDB[ 28].push_back(new G4QDecayChan(.570,3122,111,111)); + DecayDB[ 28].push_back(new G4QDecayChan(.710,3222,-211)); + DecayDB[ 28].push_back(new G4QDecayChan(.850,3212, 111)); + DecayDB[ 28].push_back(new G4QDecayChan(.990,3112, 211)); + DecayDB[ 28].push_back(new G4QDecayChan(1.00,3122, 22)); + } + if(limit<= 29 && nQ>= 29) // Sigma* - + { + DecayDB[ 29].push_back(new G4QDecayChan(.060,3112, 111)); + DecayDB[ 29].push_back(new G4QDecayChan(.120,3212,-211)); + DecayDB[ 29].push_back(new G4QDecayChan(1.00,3122,-211)); + } + if(limit<= 30 && nQ>= 30) // Sigma* 0 + { + DecayDB[ 30].push_back(new G4QDecayChan(.040,3112, 211)); + DecayDB[ 30].push_back(new G4QDecayChan(.080,3222,-211)); + DecayDB[ 30].push_back(new G4QDecayChan(.120,3212, 111)); + DecayDB[ 30].push_back(new G4QDecayChan(1.00,3122, 111)); + } + if(limit<= 31 && nQ>= 31) // Sigma* + + { + DecayDB[ 31].push_back(new G4QDecayChan(.060,3212, 211)); + DecayDB[ 31].push_back(new G4QDecayChan(.120,3222, 111)); + DecayDB[ 31].push_back(new G4QDecayChan(1.00,3122, 211)); + } + if(limit<= 32 && nQ>= 32) // Ksi* - + { + DecayDB[ 32].push_back(new G4QDecayChan(.667,3322,-211)); + DecayDB[ 32].push_back(new G4QDecayChan(1.00,3312, 111)); + } + if(limit<= 33 && nQ>= 33) // Ksi* 0 + { + DecayDB[ 33].push_back(new G4QDecayChan(.667,3312, 211)); + DecayDB[ 33].push_back(new G4QDecayChan(1.00,3322, 111)); + } + //if(limit<= 34 && nQ>= 34) // OMEGA - (Weak) + //{ + // DecayDB[ 34].push_back(new G4QDecayChan(.678,3122, 321)); + // DecayDB[ 34].push_back(new G4QDecayChan(.914,3322,-211)); + // DecayDB[ 34].push_back(new G4QDecayChan(1.00,3312, 111)); + //} + if(limit<= 35 && nQ>= 35) // a_2 0 + { + DecayDB[ 35].push_back(new G4QDecayChan(.068, 211,-211,223)); + DecayDB[ 35].push_back(new G4QDecayChan(.102, 111, 111,223)); + DecayDB[ 35].push_back(new G4QDecayChan(.126, 321,-321)); + DecayDB[ 35].push_back(new G4QDecayChan(.150, 311,-311)); + DecayDB[ 35].push_back(new G4QDecayChan(.298, 111, 221)); + DecayDB[ 35].push_back(new G4QDecayChan(.532,-211, 213)); + DecayDB[ 35].push_back(new G4QDecayChan(.766, 211,-213)); + DecayDB[ 35].push_back(new G4QDecayChan(1.00, 111, 113)); + } + if(limit<= 36 && nQ>= 36) // a_2 + + { + DecayDB[ 36].push_back(new G4QDecayChan(.102,111,211,223)); + DecayDB[ 36].push_back(new G4QDecayChan(.150, 321,-311)); + DecayDB[ 36].push_back(new G4QDecayChan(.298, 211, 221)); + DecayDB[ 36].push_back(new G4QDecayChan(.649, 211, 113)); + DecayDB[ 36].push_back(new G4QDecayChan(1.00, 111, 213)); + } + if(limit<= 37 && nQ>= 37) // f_2 0 + { + DecayDB[ 37].push_back(new G4QDecayChan(.005, 221, 221)); + DecayDB[ 37].push_back(new G4QDecayChan(.028, 311,-311)); + DecayDB[ 37].push_back(new G4QDecayChan(.051, 321,-321)); + DecayDB[ 37].push_back(new G4QDecayChan(.123, 111, 113)); + DecayDB[ 37].push_back(new G4QDecayChan(.126, 111, 221)); + DecayDB[ 37].push_back(new G4QDecayChan(.154, 211,-211,113)); + DecayDB[ 37].push_back(new G4QDecayChan(.718, 211,-211)); + DecayDB[ 37].push_back(new G4QDecayChan(1.00, 111, 111)); + } + if(limit<= 38 && nQ>= 38) // K_2 0 + { + DecayDB[ 38].push_back(new G4QDecayChan(.028, 311, 223)); + DecayDB[ 38].push_back(new G4QDecayChan(.074, 211,-211,313)); + DecayDB[ 38].push_back(new G4QDecayChan(.143,111,-211,323)); + DecayDB[ 38].push_back(new G4QDecayChan(.166,111, 111,313)); + DecayDB[ 38].push_back(new G4QDecayChan(.190,-211, 323)); + DecayDB[ 38].push_back(new G4QDecayChan(.314, 111, 313)); + DecayDB[ 38].push_back(new G4QDecayChan(.357, 311, 113)); + DecayDB[ 38].push_back(new G4QDecayChan(.500, 321,-213)); + DecayDB[ 38].push_back(new G4QDecayChan(.750,-211, 321)); + DecayDB[ 38].push_back(new G4QDecayChan(1.00, 111, 311)); + } + if(limit<= 39 && nQ>= 39) // K_2 + + { + DecayDB[ 39].push_back(new G4QDecayChan(.028, 321, 223)); + DecayDB[ 39].push_back(new G4QDecayChan(.074,211,-211,323)); + DecayDB[ 39].push_back(new G4QDecayChan(.143,111, 211,313)); + DecayDB[ 39].push_back(new G4QDecayChan(.166,111, 111,323)); + DecayDB[ 39].push_back(new G4QDecayChan(.190, 211, 313)); + DecayDB[ 39].push_back(new G4QDecayChan(.314, 111, 323)); + DecayDB[ 39].push_back(new G4QDecayChan(.357, 311, 213)); + DecayDB[ 39].push_back(new G4QDecayChan(.500, 321, 113)); + DecayDB[ 39].push_back(new G4QDecayChan(.750, 211, 311)); + DecayDB[ 39].push_back(new G4QDecayChan(1.00, 111, 321)); + } + if(limit<= 40 && nQ>= 40) // f_2' 0 + { + DecayDB[ 40].push_back(new G4QDecayChan(.103, 221, 221)); + DecayDB[ 40].push_back(new G4QDecayChan(.547, 311,-311)); + DecayDB[ 40].push_back(new G4QDecayChan(.991, 321,-321)); + DecayDB[ 40].push_back(new G4QDecayChan(.997, 211,-211)); + DecayDB[ 40].push_back(new G4QDecayChan(1.00, 111, 111)); + } + if(limit<= 41 && nQ>= 41) // N_5/2 0 + { + DecayDB[ 41].push_back(new G4QDecayChan(.040, 211, 1114)); + DecayDB[ 41].push_back(new G4QDecayChan(.080, 111, 2114)); + DecayDB[ 41].push_back(new G4QDecayChan(.120,-211, 2214)); + DecayDB[ 41].push_back(new G4QDecayChan(.180, 2112, 113)); + DecayDB[ 41].push_back(new G4QDecayChan(.210, 2212,-213)); + DecayDB[ 41].push_back(new G4QDecayChan(.340, 2112, 110)); + DecayDB[ 41].push_back(new G4QDecayChan(.780, 2212,-211)); + DecayDB[ 41].push_back(new G4QDecayChan(1.00, 2112, 111)); + } + if(limit<= 42 && nQ>= 42) // N_5/2 + + { + DecayDB[ 42].push_back(new G4QDecayChan(.040,-211, 2224)); + DecayDB[ 42].push_back(new G4QDecayChan(.080, 211, 2114)); + DecayDB[ 42].push_back(new G4QDecayChan(.120, 111, 2214)); + DecayDB[ 42].push_back(new G4QDecayChan(.180, 2112, 213)); + DecayDB[ 42].push_back(new G4QDecayChan(.210, 2212, 113)); + DecayDB[ 42].push_back(new G4QDecayChan(.340, 2212, 229)); + DecayDB[ 42].push_back(new G4QDecayChan(.780, 2112, 211)); + DecayDB[ 42].push_back(new G4QDecayChan(1.00, 2212, 111)); + } + if(limit<= 43 && nQ>= 43) // LAMBDA_5/2 + { + DecayDB[ 43].push_back(new G4QDecayChan(.350, 2112,-311)); + DecayDB[ 43].push_back(new G4QDecayChan(.700, 2212,-321)); + DecayDB[ 43].push_back(new G4QDecayChan(.740, 211, 3114)); + DecayDB[ 43].push_back(new G4QDecayChan(.780,-211, 3224)); + DecayDB[ 43].push_back(new G4QDecayChan(.820, 111, 3214)); + DecayDB[ 43].push_back(new G4QDecayChan(.880, 3112, 211)); + DecayDB[ 43].push_back(new G4QDecayChan(.940, 3222,-211)); + DecayDB[ 43].push_back(new G4QDecayChan(1.00, 3212, 111)); + } + if(limit<= 44 && nQ>= 44) // SIGMA_5/2 - + { + DecayDB[ 44].push_back(new G4QDecayChan(.600, 2112,-321)); + DecayDB[ 44].push_back(new G4QDecayChan(.660,-211, 3214)); + DecayDB[ 44].push_back(new G4QDecayChan(.720, 111, 3114)); + DecayDB[ 44].push_back(new G4QDecayChan(.810, 3212,-211)); + DecayDB[ 44].push_back(new G4QDecayChan(.900, 3112, 111)); + DecayDB[ 44].push_back(new G4QDecayChan(1.00, 3122,-211)); + } + if(limit<= 45 && nQ>= 45) // SIGMA_5/2 0 + { + DecayDB[ 45].push_back(new G4QDecayChan(.300, 2112,-311)); + DecayDB[ 45].push_back(new G4QDecayChan(.600, 2212,-321)); + DecayDB[ 45].push_back(new G4QDecayChan(.640, 211, 3114)); + DecayDB[ 45].push_back(new G4QDecayChan(.680,-211, 3224)); + DecayDB[ 45].push_back(new G4QDecayChan(.720, 111, 3214)); + DecayDB[ 45].push_back(new G4QDecayChan(.780, 3112, 211)); + DecayDB[ 45].push_back(new G4QDecayChan(.840, 3222,-211)); + DecayDB[ 45].push_back(new G4QDecayChan(.900, 3212, 111)); + DecayDB[ 45].push_back(new G4QDecayChan(1.00, 3122, 111)); + } + if(limit<= 46 && nQ>= 46) // SIGMA_5/2 + + { + DecayDB[ 46].push_back(new G4QDecayChan(.600, 2212,-311)); + DecayDB[ 46].push_back(new G4QDecayChan(.660, 211, 3214)); + DecayDB[ 46].push_back(new G4QDecayChan(.720, 111, 3224)); + DecayDB[ 46].push_back(new G4QDecayChan(.810, 3212, 211)); + DecayDB[ 46].push_back(new G4QDecayChan(.900, 3222, 111)); + DecayDB[ 46].push_back(new G4QDecayChan(1.00, 3122, 211)); + } + if(limit<= 47 && nQ>= 47) // KSI_5/2 - + { + DecayDB[ 47].push_back(new G4QDecayChan(.400, 3112,-311)); + DecayDB[ 47].push_back(new G4QDecayChan(.800, 3212,-321)); + DecayDB[ 47].push_back(new G4QDecayChan(1.00, 3122,-321)); + } + if(limit<= 48 && nQ>= 48) // KSI_5/2 0 + { + DecayDB[ 48].push_back(new G4QDecayChan(.400, 3212,-311)); + DecayDB[ 48].push_back(new G4QDecayChan(.800, 3222,-321)); + DecayDB[ 48].push_back(new G4QDecayChan(1.00, 3122,-311)); + } + if(limit<= 49 && nQ>= 49) // rho_3 0 + { + DecayDB[ 49].push_back(new G4QDecayChan(.019,311,-313)); + DecayDB[ 49].push_back(new G4QDecayChan(.038,321,-323)); + DecayDB[ 49].push_back(new G4QDecayChan(.046,311,-311)); + DecayDB[ 49].push_back(new G4QDecayChan(.054,321,-321)); + DecayDB[ 49].push_back(new G4QDecayChan(.224,111, 223)); + DecayDB[ 49].push_back(new G4QDecayChan(.404,111,-211,213)); + DecayDB[ 49].push_back(new G4QDecayChan(.584,111, 211,-213)); + DecayDB[ 49].push_back(new G4QDecayChan(.764,111, 111,113)); + DecayDB[ 49].push_back(new G4QDecayChan(1.00,211,-211)); + } + if(limit<= 50 && nQ>= 50) // rho_3 + + { + DecayDB[ 50].push_back(new G4QDecayChan(.019, 321,-313)); + DecayDB[ 50].push_back(new G4QDecayChan(.038,-311, 323)); + DecayDB[ 50].push_back(new G4QDecayChan(.054, 321,-311)); + DecayDB[ 50].push_back(new G4QDecayChan(.224, 211, 223)); + DecayDB[ 50].push_back(new G4QDecayChan(.404,211,-211,213)); + DecayDB[ 50].push_back(new G4QDecayChan(.584,211,211,-213)); + DecayDB[ 50].push_back(new G4QDecayChan(.764,211,111,113)); + DecayDB[ 50].push_back(new G4QDecayChan(1.00, 211, 111)); + } + if(limit<= 51 && nQ>= 51) // omega_3 + { + DecayDB[ 51].push_back(new G4QDecayChan(.020,211,-211,223)); + DecayDB[ 51].push_back(new G4QDecayChan(.040,111, 111,223)); + DecayDB[ 51].push_back(new G4QDecayChan(.060, 211,-213)); + DecayDB[ 51].push_back(new G4QDecayChan(.080,-211, 213)); + DecayDB[ 51].push_back(new G4QDecayChan(1.00, 111, 113)); + } + if(limit<= 52 && nQ>= 52) // K_3 0 + { + DecayDB[ 52].push_back(new G4QDecayChan(.030, 111, 315)); + DecayDB[ 52].push_back(new G4QDecayChan(.060,-211, 325)); + DecayDB[ 52].push_back(new G4QDecayChan(.340, 311, 331)); + DecayDB[ 52].push_back(new G4QDecayChan(.400, 111, 313)); + DecayDB[ 52].push_back(new G4QDecayChan(.520,-211, 323)); + DecayDB[ 52].push_back(new G4QDecayChan(.620, 311, 113)); + DecayDB[ 52].push_back(new G4QDecayChan(.820, 321,-213)); + DecayDB[ 52].push_back(new G4QDecayChan(.940,-211, 321)); + DecayDB[ 52].push_back(new G4QDecayChan(1.00, 111, 311)); + } + if(limit<= 53 && nQ>= 53) // K_3 + + { + DecayDB[ 53].push_back(new G4QDecayChan(.030, 211, 315)); + DecayDB[ 53].push_back(new G4QDecayChan(.060, 111, 325)); + DecayDB[ 53].push_back(new G4QDecayChan(.340, 321, 331)); + DecayDB[ 53].push_back(new G4QDecayChan(.400, 211, 313)); + DecayDB[ 53].push_back(new G4QDecayChan(.520, 111, 323)); + DecayDB[ 53].push_back(new G4QDecayChan(.620, 311, 213)); + DecayDB[ 53].push_back(new G4QDecayChan(.820, 321, 113)); + DecayDB[ 53].push_back(new G4QDecayChan(.940, 211, 311)); + DecayDB[ 53].push_back(new G4QDecayChan(1.00, 111, 321)); + } + if(limit<= 54 && nQ>= 54) // phi_3 + { + DecayDB[ 54].push_back(new G4QDecayChan(.250, 321,-321)); + DecayDB[ 54].push_back(new G4QDecayChan(.500, 311,-311)); + DecayDB[ 54].push_back(new G4QDecayChan(.625, 321,-323)); + DecayDB[ 54].push_back(new G4QDecayChan(.750,-321, 323)); + DecayDB[ 54].push_back(new G4QDecayChan(.875, 311,-313)); + DecayDB[ 54].push_back(new G4QDecayChan(1.00,-311, 313)); + } + if(limit<= 55 && nQ>= 55) // DELTA_7/2 - + { + DecayDB[ 55].push_back(new G4QDecayChan(.200, 2112,-213 )); + DecayDB[ 55].push_back(new G4QDecayChan(.320,-211 , 2114)); + DecayDB[ 55].push_back(new G4QDecayChan(.500, 111 , 1114)); + DecayDB[ 55].push_back(new G4QDecayChan(1.00, 2112,-211 )); + } + if(limit<= 56 && nQ>= 56) // DELTA_7/2 0 + { + DecayDB[ 56].push_back(new G4QDecayChan(.133, 2112, 113 )); + DecayDB[ 56].push_back(new G4QDecayChan(.200, 2212,-213 )); + DecayDB[ 56].push_back(new G4QDecayChan(.360,-211 , 2214)); + DecayDB[ 56].push_back(new G4QDecayChan(.480, 211 , 1114)); + DecayDB[ 56].push_back(new G4QDecayChan(.500, 111 , 2114)); + DecayDB[ 56].push_back(new G4QDecayChan(.666, 2212,-211 )); + DecayDB[ 56].push_back(new G4QDecayChan(1.00, 2112, 111 )); + } + if(limit<= 57 && nQ>= 57) // DELTA_7/2 + + { + DecayDB[ 57].push_back(new G4QDecayChan(.133, 2112, 213 )); + DecayDB[ 57].push_back(new G4QDecayChan(.200, 2212, 113 )); + DecayDB[ 57].push_back(new G4QDecayChan(.360,-211 , 2224)); + DecayDB[ 57].push_back(new G4QDecayChan(.480, 211 , 2114)); + DecayDB[ 57].push_back(new G4QDecayChan(.500, 111 , 2214)); + DecayDB[ 57].push_back(new G4QDecayChan(.666, 2112, 211 )); + DecayDB[ 57].push_back(new G4QDecayChan(1.00, 2212, 111 )); + } + if(limit<= 58 && nQ>= 58) // DELTA_7/2 ++ + { + DecayDB[ 58].push_back(new G4QDecayChan(.200, 2212, 213 )); + DecayDB[ 58].push_back(new G4QDecayChan(.320, 211 , 2214)); + DecayDB[ 58].push_back(new G4QDecayChan(.500, 111 , 2224)); + DecayDB[ 58].push_back(new G4QDecayChan(1.00, 2212, 211 )); + } + if(limit<= 59 && nQ>= 59) // LAMBDA_7/2 + { + DecayDB[ 59].push_back(new G4QDecayChan(.160, 3122, 223 )); + DecayDB[ 59].push_back(new G4QDecayChan(.260, 2112,-313 )); + DecayDB[ 59].push_back(new G4QDecayChan(.360, 2212,-323 )); + DecayDB[ 59].push_back(new G4QDecayChan(.400, 3312, 321 )); + DecayDB[ 59].push_back(new G4QDecayChan(.440, 3322, 311 )); + DecayDB[ 59].push_back(new G4QDecayChan(.480, 3122, 221 )); + DecayDB[ 59].push_back(new G4QDecayChan(.520, 2112,-311 )); + DecayDB[ 59].push_back(new G4QDecayChan(.560, 2212,-321 )); + DecayDB[ 59].push_back(new G4QDecayChan(.600, 3112, 211 )); + DecayDB[ 59].push_back(new G4QDecayChan(.800, 3222,-211 )); + DecayDB[ 59].push_back(new G4QDecayChan(1.00, 3212, 111 )); + } + if(limit<= 60 && nQ>= 60) // SIGMA_7/2 - + { + DecayDB[ 60].push_back(new G4QDecayChan(.030, 2112,-323 )); + DecayDB[ 60].push_back(new G4QDecayChan(.165,-311 , 1114)); + DecayDB[ 60].push_back(new G4QDecayChan(.210,-321 , 2114)); + DecayDB[ 60].push_back(new G4QDecayChan(.390,-211 , 3124)); + DecayDB[ 60].push_back(new G4QDecayChan(.450,-211 , 3214)); + DecayDB[ 60].push_back(new G4QDecayChan(.510, 111 , 3114)); + DecayDB[ 60].push_back(new G4QDecayChan(.540, 311 , 3314)); + DecayDB[ 60].push_back(new G4QDecayChan(.570,-211 , 3212)); + DecayDB[ 60].push_back(new G4QDecayChan(.600, 111 , 3112)); + DecayDB[ 60].push_back(new G4QDecayChan(.780,-321 , 2112)); + DecayDB[ 60].push_back(new G4QDecayChan(1.00,-211 , 3122)); + } + if(limit<= 61 && nQ>= 61) // SIGMA_7/2 0 + { + DecayDB[ 61].push_back(new G4QDecayChan(.015, 2112,-313 )); + DecayDB[ 61].push_back(new G4QDecayChan(.030, 2212,-321 )); + DecayDB[ 61].push_back(new G4QDecayChan(.120,-311 , 2114)); + DecayDB[ 61].push_back(new G4QDecayChan(.210,-321 , 2214)); + DecayDB[ 61].push_back(new G4QDecayChan(.390, 111 , 3124)); + DecayDB[ 61].push_back(new G4QDecayChan(.450,-211 , 3224)); + DecayDB[ 61].push_back(new G4QDecayChan(.510, 211 , 3114)); + DecayDB[ 61].push_back(new G4QDecayChan(.525, 311 , 3324)); + DecayDB[ 61].push_back(new G4QDecayChan(.540, 321 , 3314)); + DecayDB[ 61].push_back(new G4QDecayChan(.570,-211 , 3222)); + DecayDB[ 61].push_back(new G4QDecayChan(.600, 211 , 3112)); + DecayDB[ 61].push_back(new G4QDecayChan(.690,-311 , 2112)); + DecayDB[ 61].push_back(new G4QDecayChan(.780,-321 , 2212)); + DecayDB[ 61].push_back(new G4QDecayChan(1.00, 111 , 3122)); + } + if(limit<= 62 && nQ>= 62) // SIGMA_7/2 + + { + DecayDB[ 62].push_back(new G4QDecayChan(.030, 2212,-313 )); + DecayDB[ 62].push_back(new G4QDecayChan(.165,-321 , 2224)); + DecayDB[ 62].push_back(new G4QDecayChan(.210,-311 , 2214)); + DecayDB[ 62].push_back(new G4QDecayChan(.390, 211 , 3124)); + DecayDB[ 62].push_back(new G4QDecayChan(.450, 211 , 3214)); + DecayDB[ 62].push_back(new G4QDecayChan(.510, 111 , 3224)); + DecayDB[ 62].push_back(new G4QDecayChan(.540, 321 , 3324)); + DecayDB[ 62].push_back(new G4QDecayChan(.570, 211 , 3212)); + DecayDB[ 62].push_back(new G4QDecayChan(.600, 111 , 3222)); + DecayDB[ 62].push_back(new G4QDecayChan(.780,-311 , 2212)); + DecayDB[ 62].push_back(new G4QDecayChan(1.00, 211 , 3122)); + } + if(limit<= 63 && nQ>= 63) // KSI_7/2 - + { + DecayDB[ 63].push_back(new G4QDecayChan(.400, 3112,-311)); + DecayDB[ 63].push_back(new G4QDecayChan(.800, 3212,-321)); + DecayDB[ 63].push_back(new G4QDecayChan(1.00, 3122,-321)); + } + if(limit<= 64 && nQ>= 64) // KSI_7/2 0 + { + DecayDB[ 64].push_back(new G4QDecayChan(.400, 3212,-311)); + DecayDB[ 64].push_back(new G4QDecayChan(.800, 3222,-321)); + DecayDB[ 64].push_back(new G4QDecayChan(1.00, 3122,-311)); + } + if(limit<= 65 && nQ>= 65) // OMEGA_7/2 - + { + DecayDB[ 65].push_back(new G4QDecayChan(.250,-311 , 3314)); + DecayDB[ 65].push_back(new G4QDecayChan(.500,-321 , 3324)); + DecayDB[ 65].push_back(new G4QDecayChan(.750, 3312,-313 )); + DecayDB[ 65].push_back(new G4QDecayChan(1.00, 3322,-323 )); + } + if(limit<= 66 && nQ>= 66) // a_4 0 + { + DecayDB[ 66].push_back(new G4QDecayChan(.200, 311,-311)); + DecayDB[ 66].push_back(new G4QDecayChan(.400, 321,-321)); + DecayDB[ 66].push_back(new G4QDecayChan(.600, 111, 221)); + DecayDB[ 66].push_back(new G4QDecayChan(1.00, 111, 211,-211)); + } + if(limit<= 67 && nQ>= 67) // a_4 + + { + DecayDB[ 67].push_back(new G4QDecayChan(.400, 321,-311)); + DecayDB[ 67].push_back(new G4QDecayChan(.600, 211, 221)); + DecayDB[ 67].push_back(new G4QDecayChan(.800, 211, 211,-211)); + DecayDB[ 67].push_back(new G4QDecayChan(1.00, 211, 111, 111)); + } + if(limit<= 68 && nQ>= 68) // f_4 0 + { + DecayDB[ 68].push_back(new G4QDecayChan(.020, 333, 333)); + DecayDB[ 68].push_back(new G4QDecayChan(.340, 223, 223)); + DecayDB[ 68].push_back(new G4QDecayChan(.350, 221, 221)); + DecayDB[ 68].push_back(new G4QDecayChan(.360, 311,-311)); + DecayDB[ 68].push_back(new G4QDecayChan(.370, 321,-321)); + DecayDB[ 68].push_back(new G4QDecayChan(.670, 213,-213)); + DecayDB[ 68].push_back(new G4QDecayChan(.820, 113, 113)); + DecayDB[ 68].push_back(new G4QDecayChan(.940, 211,-211)); + DecayDB[ 68].push_back(new G4QDecayChan(1.00, 111, 111)); + } + if(limit<= 69 && nQ>= 69) // K_4 0 + { + DecayDB[ 69].push_back(new G4QDecayChan(.060, 333, 313)); + DecayDB[ 69].push_back(new G4QDecayChan(.260, 223, 313)); + DecayDB[ 69].push_back(new G4QDecayChan(.380, 313, 113)); + DecayDB[ 69].push_back(new G4QDecayChan(.400, 323,-213)); + DecayDB[ 69].push_back(new G4QDecayChan(.500, 223, 311)); + DecayDB[ 69].push_back(new G4QDecayChan(.550, 311, 113)); + DecayDB[ 69].push_back(new G4QDecayChan(.600, 321,-213)); + DecayDB[ 69].push_back(new G4QDecayChan(.700, 311, 113)); + DecayDB[ 69].push_back(new G4QDecayChan(.800, 321,-213)); + DecayDB[ 69].push_back(new G4QDecayChan(.900, 311, 111)); + DecayDB[ 69].push_back(new G4QDecayChan(1.00, 321,-211)); + } + if(limit<= 70 && nQ>= 70) // K_4 + + { + DecayDB[ 70].push_back(new G4QDecayChan(.060, 333, 323)); + DecayDB[ 70].push_back(new G4QDecayChan(.260, 223, 323)); + DecayDB[ 70].push_back(new G4QDecayChan(.380, 313, 213)); + DecayDB[ 70].push_back(new G4QDecayChan(.400, 323, 113)); + DecayDB[ 70].push_back(new G4QDecayChan(.500, 223, 321)); + DecayDB[ 70].push_back(new G4QDecayChan(.550, 321, 113)); + DecayDB[ 70].push_back(new G4QDecayChan(.600, 311, 213)); + DecayDB[ 70].push_back(new G4QDecayChan(.700, 311, 211)); + DecayDB[ 70].push_back(new G4QDecayChan(.800, 321, 111)); + DecayDB[ 70].push_back(new G4QDecayChan(.900, 311, 211)); + DecayDB[ 70].push_back(new G4QDecayChan(1.00, 321, 111)); + } + if(limit<= 71 && nQ>= 71)DecayDB[ 71].push_back(new G4QDecayChan(1.00, 333, 333));//phi_4(2300) + if(limit<= 72 && nQ>= 72)DecayDB[ 72].push_back(new G4QDecayChan(1.00, 2212, 2224)); //pDelta++ + if(limit<= 73 && nQ>= 73)DecayDB[ 73].push_back(new G4QDecayChan(1.00, 2112, 1114)); //nDelta- + if(limit<= 74 && nQ>= 74)DecayDB[ 74].push_back(new G4QDecayChan(1.00, 2224, 2224)); //D++D++ + if(limit<= 75 && nQ>= 75)DecayDB[ 75].push_back(new G4QDecayChan(1.00, 1114, 1114)); //Del-Del- + if(limit<= 76 && nQ>= 76)DecayDB[ 76].push_back(new G4QDecayChan(1.,2212,2212,2224));//ppDelta++ + if(limit<= 77 && nQ>= 77)DecayDB[ 77].push_back(new G4QDecayChan(1.,2112,2112,1114));//nnDelta- + if(limit<= 78 && nQ>= 78)DecayDB[ 78].push_back(new G4QDecayChan(1.,2212,2224,2224));//pD++D++ + if(limit<= 79 && nQ>= 79)DecayDB[ 79].push_back(new G4QDecayChan(1.,2112,1114,1114));//nDel-Del- + if(limit<= 83 && nQ>= 83)DecayDB[ 83].push_back(new G4QDecayChan(1.00, 2112, 2112)); //nn + if(limit<= 84 && nQ>= 84)DecayDB[ 84].push_back(new G4QDecayChan(1.00, 2212, 2112)); //pn + if(limit<= 85 && nQ>= 85)DecayDB[ 85].push_back(new G4QDecayChan(1.00, 2212, 2212)); //pp + // ------- Nuclear fragments + //if(limit<= 80 && nQ>=80) + //{ + // if(limit<80) limit=80; + // for (int i=limit; i=0; ind--) // A Loop to fill + { + ////////G4int c=theHadrons[ind]->GetPDGCode(); // PDGCode + } + + delete yes; + return false; +} + +G4QSelector::~G4QSelector() {} diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc new file mode 100644 index 0000000000..e2ff98c2d9 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4Quasmon.cc @@ -0,0 +1,4443 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4Quasmon.cc,v 1.37 2001/11/29 14:29:14 stesting Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ---------------- G4Quasmon ---------------- +// by Mikhail Kossov, July 1999. +// class for an excited hadronic state used by the CHIPS Model +// ------------------------------------------------------------ + +//#define debug +//#define pdebug +//#define ppdebug +//#define tdebug +//#define sdebug + +#include "G4Quasmon.hh" + +G4Quasmon::G4Quasmon(G4QContent qQCont, G4LorentzVector q4M, G4LorentzVector ph4M): + q4Mom(q4M), valQ(qQCont), phot4M(ph4M) +{ +#ifdef debug + G4cout<<"G4Quasmon: **DIRECT CREATION** QC="<0.) q4Mom+=phot4M; // In case of capture by a quark it will be subtracted back + G4int nP= theWorld.GetQPEntries(); // A#of initialized particles in CHIPS World + //@@ Make special parametyer to cut high resonances !! + G4int nMesons = 45; + if (nP<24) nMesons = 9; + else if(nP<41) nMesons = 18; + else if(nP<55) nMesons = 27; + else if(nP<72) nMesons = 36; + G4int nBaryons = 72; + if (nP<35) nBaryons = 16; + else if(nP<49) nBaryons = 36; + else if(nP<66) nBaryons = 52; + //G4int nClusters= nP-72; + G4int nClusters= nP-80; // "IsoNuclei" + InitCandidateVector(nMesons,nBaryons,nClusters); +#ifdef debug + G4cout<<"G4Quasmon: Candidates are initialized. nMesons="<>>DONE<<<"<nOfBaryons) maxBar=nOfBaryons; + if(maxBar>=0) for (i=0; i=0) for (i=0; i m_n + m_p + static const G4double BIG = 1000000.; + static const G4double BIG2 = BIG*BIG; + static const G4QContent neutQC(2,1,0,0,0,0); + static const G4QContent protQC(1,2,0,0,0,0); + static const G4QContent lambQC(1,1,1,0,0,0); + static const G4QContent PiQC(0,1,0,1,0,0); + static const G4QContent K0QC(1,0,0,0,0,1); + static const G4QContent KpQC(0,1,0,0,0,1); + static const G4QContent zeroQC(0,0,0,0,0,0); + static const G4LorentzVector zeroLV(0.,0.,0.,0.); + static const G4QNucleus vacuum= G4QNucleus(zeroLV,NUCPDG); + static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0); + static const G4double mTrit= G4QPDGCode(2112).GetNuclMass(1,2,0); + static const G4double mHel3= G4QPDGCode(2112).GetNuclMass(2,1,0); + static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0); + ///////////static const G4double mLit6= G4QPDGCode(2112).GetNuclMass(3,3,0); + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + ///////////static const G4double m2N = mNeut*mNeut; + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mPi0 = G4QPDGCode(111).GetMass(); + static const G4double mK = G4QPDGCode(321).GetMass(); + static const G4double mK0 = G4QPDGCode(311).GetMass(); + static const G4double mEta = G4QPDGCode(221).GetMass(); + static const G4double mEtaP= G4QPDGCode(331).GetMass(); + static const G4double diPiM= mPi0 + mPi0; + static const G4double PiNM = mPi + mNeut; + ////////////static const G4double mPi2 = mPi * mPi; + static const G4double mPi02= mPi0* mPi0; + ////////////static const G4double mK2 = mK * mK; + ////////////static const G4double mK02 = mK0 * mK0; + ////////////static const G4double mEta2= mEta*mEta; + ////////////static const G4double mEP2 = mEtaP*mEtaP; + static const G4double mP2 = mProt*mProt; + ////////////static const G4double CBKinMin = 0.1; // .1 MeV of KinEnergy is needed to try to pen. + ////////////static const G4double alpha = 1./137.0359895; // Fine-structure constant + ////////////static const G4double third =1./3.; + ////////////static const G4double conCon=197.327; // Conversion constant (hc) + ////////////static const G4double rCB = 1.09; // R=r_CB*(a^1/3+A^1/3) - CoulBarrierRadius(fm) +#ifdef debug + G4cout<<"G4Quasmon(G4Q)::HadronizeQuasmon(HQ): *==>>> START QUASMON HADRONIZATION <<<==*"<-.000001) + { + qM2=0.; + G4double p=q4Mom.rho(); + if(p<.01) + { +#ifdef debug + G4cout<<"G4Q::HQ:NothingToDo after correction: Q4M="< s) cQ.DecQAQ((tQ-s)/2); // Reduce QC to minimum QC +#ifdef debug + G4int rsPDG = cQ.GetSPDGCode(); // PDG for the lowest residual Quasmon state + G4cout<<"G4Q::HQ:eN="<mPi0) miM2=mPi02; + else miM2=mP2; + } + else // "Env. exists" case - find k_min & k_max + { + minK=100000.; + if(piF&&quasM>iniQM) maxK=mNeut/2.+(quasM-iniQM)*iniQM/(iniQM+mNeut); + else if(quasM>iniQM) + { + G4double limK=envM/2.+(quasM-iniQM)*iniQM/(iniQM+envM); + if(limK0&&iniBN>1) // "Neutron-hadron" estimate + //{ + // G4double iK=1000000.; + // G4double dqm=quasM+quasM; + // if(envA>0) + // { + // G4QContent rtQC=valQ-neutQC+envQC; // Total Residual Quark Content + // G4QNucleus rtN(rtQC); // Create a pseudo-nucleus for the TotalResidual + // G4double rtM =rtN.GetMZNS(); // Min Mass of total residual Nucleus + // G4double bnRQ=rtM-envM; // Bound mass of residual Quasmon + // G4double sm2=qM2+m2N-bnRQ*bnRQ; + // G4double fqm=dqm+dqm; + // G4double aK=sm2/fqm; +#ifdef debug + // G4double kts=.135; // Test value of k + // G4double dkts=kts+kts; + // G4double fu=dkts*(dkts*quasM-sm2)+quasM*m2N; + // G4cout<<"G4Q::HQ:MQ="<=mNeut+bnRQ) + // { + // G4double srm=sqrt(sm2*sm2-4.*qM2*m2N)/fqm; + // iK=aK-srm; + // aK+=srm; + // } + // else iK=aK; + // if(aK0&&totBN>1) // "Neutron-cluster" estimate + { + G4QNucleus tmpNN(totZ,totN-1,0); + G4double delN=tmpNN.GetMZNS()+mNeut-totM; + if(envN>0&&envA>1) + { + G4QNucleus envNN(envZ,envN-1,0); + G4double delEN=envNN.GetMZNS()+mNeut-envM; + if(delEN>delN) delN=delEN; + } + delN*=qurF; + if(delN0&&totBN>1) // "Proton-cluster" estimate + { + G4double proCB=theEnvironment.CoulombBarrier(1,1); + G4QNucleus tmpPN(totZ-1,totN,0); + G4double delP=tmpPN.GetMZNS()+mProt-totM+proCB; + if(envZ>0&&envA>1) + { + G4QNucleus envPN(envZ-1,envN,0); + G4double delEP=envPN.GetMZNS()+mProt-envM+proCB; + if(delEP>delP) delP=delEP; + } + delP*=qurF; + if(delP0&&totZ>0&&totBN>2) // "Deuteron-cluster" estimate + { + G4double proCB=theEnvironment.CoulombBarrier(1,2); + G4QNucleus tmpDN(totZ-1,totN-1,0); + G4double delD=tmpDN.GetMZNS()+mDeut-totM+proCB; + if(envN>0&&envZ>0&&envA>2) + { + G4QNucleus envDN(envZ-1,envN-1,0); + G4double delED=envDN.GetMZNS()+mDeut-envM+proCB; + if(delED>delD) delD=delED; + } + delD*=qurF; + if(delD1&&totZ>0&&totBN>3) // "Triton-cluster" estimate + { + G4double proCB=theEnvironment.CoulombBarrier(1,3); + G4QNucleus tmpTN(totZ-1,totN-2,0); + G4double delT=tmpTN.GetMZNS()+mTrit-totM+proCB; + if(envN>1&&envZ>0&&envA>3) + { + G4QNucleus envTN(envZ-1,envN-2,0); + G4double delET=envTN.GetMZNS()+mTrit-envM+proCB; + if(delET>delT) delT=delET; + } + delT*=qurF; + if(delT0&&totZ>1&&totBN>3) // "He3-cluster" estimate + { + G4double proCB=theEnvironment.CoulombBarrier(2,3); + G4QNucleus tmpRN(totZ-2,totN-1,0); + G4double delR=tmpRN.GetMZNS()+mHel3-totM+proCB; + if(envN>0&&envZ>1&&envA>3) + { + G4QNucleus envRN(envZ-2,envN-1,0); + G4double delER=envRN.GetMZNS()+mHel3-envM+proCB; + if(delER>delR) delR=delER; + } + delR*=qurF; + if(delR1&&totZ>1&&totBN>4) // "Alpha-cluster" estimate + { + G4double proCB=theEnvironment.CoulombBarrier(2,4); + G4QNucleus tmpAN(totZ-2,totN-2,0); + G4double delA=tmpAN.GetMZNS()+mAlph-totM+proCB; + if(envN>1&&envZ>1&&envA>4) + { + G4QNucleus envAN(envZ-2,envN-2,0); + G4double delEA=envAN.GetMZNS()+mAlph-envM+proCB; + if(delEA>delA) delA=delEA; + } + delA*=qurF; + if(delA*qurF2&&totZ>2&&totBN>6) // "Li6-cluster" estimate ?????? + //{ + // G4double proCB=theEnvironment.CoulombBarrier(3,6); + // G4QNucleus tmpLN(totZ-3,totN-3,0); + // G4double delL=tmpLN.GetMZNS()+mLit6-totM+proCB; + // if(envN>2&&envZ>2&&envA>6) + // { + // G4QNucleus envLN(envZ-3,envN-3,0); + // G4double delEL=envLN.GetMZNS()+mLit6-envM+proCB; + // if(delEL>delL) delL=delEL; + // } + // delL*=qurF; + // if(delLquasM) minK=0.; + } + //if(addPhoton>0.) nOfQ=valQ.GetQ()-valQ.GetAQ(); + //if(addPhoton>0.&&quasM<1500.&&G4UniformRand()0.&&iniBN<2)// PhotonAbsorbDiagramContrib(@@HiddenPar) + if(addPhoton>0.&&(iniBN<2||G4UniformRand()<0.5))// PhotonAbsorbDiagramContrib(@@HiddenPar) + //if(addPhoton>0.&&(G4UniformRand()<.5||iniBN<2))// PhotonAbsorbDiagramContrib(@@HiddenPar) + //if(addPhoton>0.&&G4UniformRand()<0.5)// PhotonAbsorbDiagramContrib(@@HiddenPar) + //if(addPhoton>0.&&G4UniformRand()<0.75)// PhotonAbsorbDiagramContrib(@@HiddenPar) + //if(addPhoton>0.)// PhotonAbsorbDiagramContrib(@@ A photon is always captured by quark) + //if(2>3) // Photon capture by quark is closed + { + // ===OR=== 1/(p_g,p_q) interaction + gintFlag=true; + q4Mom-= phot4M; // recover Quasmon-Cluster without the Photon + qM2 = q4Mom.m2(); // Update the Current squared mass of Quasmon + quasM = sqrt(qM2); // Update the Current Mass of Quasmon + G4double kpow=static_cast(nOfQ-2); + if(kpow<1.) kpow=1.; + G4bool frat=true; // k/(k+p) factor of QuarkExchange + while (frat) + { + G4double rn=pow((1.-(minK+minK)/quasM),kpow)*G4UniformRand(); + kMom=(1.-pow(rn,1./kpow))*quasM/2.; + frat=G4UniformRand()>addPhoton/(addPhoton+kMom); + } + cost=addPhoton/momPhoton; // =1 for the real photon + // Takes into account that the mass of the quark-parton is small but not zero + //G4double hms=12.5; // m_q^2/2 (12.5 means m_q=5 MeV) + //G4double hms=2.; // m_q^2/2 (2. means m_q=2 MeV) + G4double hms=50.; // m_q^2/2 (50. means m_q=10 MeV) + G4double x=kMom*kMom/hms; + G4double dc=(pow(x,G4UniformRand())-1.)/x; // smearing of the "delta-function" for m=0 + cost-=dc; // @@ smear in both sides for virtual photons +#ifdef debug + G4cout<<"G4Q::HQ:**PHOTON is SUB'ED from Q** k="<(nOfQ-2); + //G4double kst=0.; + //if(maxK+maxKminK) + //{ + // G4double rn=(pow((1.-(minK+minK)/quasM),kpow)-kst)*G4UniformRand(); + // kMom=(1.-pow(kst+rn,1./kpow))*quasM/2.; + //} + //else kMom=(minK+maxK); + //^^^ Direct calculation + G4double rnc=G4UniformRand(); + cost = 1.-rnc-rnc; + } + G4double cQM2=qM2-(kMom+kMom)*quasM; + G4double cQM=sqrt(cQM2); // Mass of the coloured residual Quasmom + k4Mom=zeroLV; + cr4Mom=G4LorentzVector(0.,0.,0.,cQM); + if(!G4QHadron(q4Mom).RelDecayIn2(k4Mom, cr4Mom, q4Mom, cost, cost))// Q->ColResidQ+k + { +#ifdef debug + G4cerr<<"*G4Q::HQ:(PhBack)QM="<>>K-ITERATION #"<k="<GetIntegProbability(); +#ifdef debug + G4cout<<"G4Q::HQ: ***RANDOMIZE A CANDIDATE*** #OfCandidates="<qCB&&envM+iniQM3) // Decay in GSQuasmon+GSEnviron **Is closed** + { + G4QHadron* resNuc = new G4QHadron(valQ,q4Mom);// Createa Hadron for Quasmon + resNuc->CorMDecayIn2(iniQM,env4M); // Recalculate the fr4Mom for ResidualGSMass + //@@CHECK CoulBar and may be evaporate instead + FillHadronVector(resNuc); // Fill the OutgoingQuasmon (delete equivalent) +#ifdef debug + G4LorentzVector oQ4Mom=resNuc->Get4Momentum(); + G4cout<<"G4Q::HQ: outQM="<mPi0+iniQM) + { + gamPDG=111; + gamM=mPi0; + } + G4LorentzVector r4Mom(0.,0.,0.,gamM); // mass of the photon/Pi0 + G4LorentzVector s4Mom(0.,0.,0.,iniQM); // mass of the GSQuasmon + if(!G4QHadron(q4Mom).DecayIn2(r4Mom, s4Mom)) + { + G4cerr<<"**G4Q::HQ:Q="<g/pi0+GSQ="< HadrVec, Q="<g/pi0("<minK="<8.)G4Exception("G4Quas::HQ: Why a candidate is not found?"); + //if(totMass>envM+iniQM&&excE>minK&&excE>1.&&minK)G4Exception("G4Q::HQ:Why it'sn't found?"); + //G4Exception("G4Quasmon::HadronizeQuasmon: Why a candidate is not found?"); +#endif + qEnv=theEnvironment; + return theQHadrons; + } + } + else + { + G4double totP = maxP * G4UniformRand(); + while(theQCandidates[i]->GetIntegProbability() < totP) i++; + } +#ifdef debug + G4cout<<"G4Q::HQ: fp="<=nCandid) + { + G4cerr<<"***G4Q::HQ: Cand#"<= Tot#"<1&&totMass>totM&&totS>=0) + { +#ifdef ppdebug + G4cout<<"G4Quasm::HadrQuasm:NEEDS-EVAP-1:Q="< Chipolino case + { + fchipo=true; + G4QChipolino chipQ(valQ); + G4QPDGCode QPDG1=chipQ.GetQPDG1(); + sPDG = QPDG1.GetPDGCode(); + sMass= QPDG1.GetMass(); + G4QPDGCode QPDG2=chipQ.GetQPDG2(); + rPDG = QPDG2.GetPDGCode(); + rMass= QPDG2.GetMass(); + if(sMass+rMass>quasM) //@@ Evaporate but try 3Ptcl decay with Environ + { + if(totBN>1&&totMass>totM&&totS>=0) + { +#ifdef ppdebug + G4cout<<"G4Quasm::HadrQ:NEEDS-EVAP-2:Q4M="< miM="<@@ Final decay in MinHadr+(PI0 or GAMMA) + { + sMass=G4QPDGCode(sPDG).GetMass(); + rPDG=envPDG; + if (rPDG>80000000&&rPDG!=NUCPDG) + { + rMass=theEnvironment.GetMZNS(); + q4Mom+=G4LorentzVector(0.,0.,0.,rMass); + valQ +=theEnvironment.GetQC(); + quasM=q4Mom.m(); + KillEnvironment(); + fred=true; // Flag of environment reduction + } + else if(rPDG!=NUCPDG&&totBN>1&&totMass>totM&&totS>=0) // Evaporation + { +#ifdef ppdebug + G4QContent nTotQC=totQC-neutQC; + G4QNucleus nTotN(nTotQC); // PseudoNucleus for TotalResidual to neutron + G4double nTotM =nTotN.GetMZNS(); // MinimumMass of the Total Residual to neutron + G4double dMnT=totMass-nTotM-mNeut; // Energy excess for the neutron + G4QContent pTotQC=totQC-protQC; + G4QNucleus pTotN(pTotQC); // PseudoNucleus for TotalResidual to proton + G4double pTotM =pTotN.GetMZNS(); // Minimum Mass of the Total Residual to proton + G4double dMpT=totMass-pTotM-mProt; // Energy excess for neutron + if(dMpT>dMnT)dMnT=dMpT; + G4cout<<"G4Q::HQ:NEEDS-EVAP-3: sP="<GetPDGCode(); // PDG of the selected candidate + //////////////////G4double prpr=curCand->GetPreProbability(); + //@@ For clusters should be another randomization & a loop over possible parent clusters + if(sPDG>80000000&&sPDG!=NUCPDG) // ===> "Fragment" case + { + int ip=0; + G4int nParCandid = curCand->GetPClustEntries(); + G4double sppm = curCand->TakeParClust(nParCandid-1)->GetProbability(); + if (sppm<=0) // Impossible to find a parent cluster + { + G4cerr<<"***G4Quasmon::HadronizeQuasmon: cP="<GetIntegProbability() + <<",nC="<TakeParClust(ip)->GetProbability(); + G4cerr< "Parent cluster was found" case + { + G4double totPP = sppm * G4UniformRand(); + while(curCand->TakeParClust(ip)->GetProbability() < totPP) ip++; +#ifdef debug + G4cout<<"G4Q::HQ:p#ip="<TakeParClust(ip); + pPDG = parCluster->GetPDGCode(); + G4QPDGCode pQPDG(pPDG); + pQC = pQPDG.GetQuarkContent(); + pBaryn= pQC.GetBaryonNumber(); + pMass = parCluster->GetEBMass(); //Environment Bounded Mass + pNMass = parCluster->GetNBMass(); // NucleusBoundedMass @@ Env.Reduce dosn't work + pM2 = pMass*pMass; + transQC = parCluster->GetTransQC(); + delta = parCluster->GetEBind(); // Environmental Binding + deltaN = parCluster->GetNBind(); // Nuclear Binding + loli = parCluster->GetLow(); + hili = parCluster->GetHigh(); + //G4double dhil=.0001*(hili-loli); // Safety factor + //loli += dhil; + //hili -= dhil; + npqp2 = parCluster->GetNQPart2(); + // @@ Here one can get other useful parameters of the parent cluster for hadronization + G4QPDGCode sQPDG(curCand->GetPDGCode()); + sQC = sQPDG.GetQuarkContent(); + if(sPDG==90001001 && G4UniformRand()>0.75) sMass=np; //@@ n-p pair + //if(sPDG==90001001 && G4UniformRand()>1.0) sMass=np; //@@ no n-p pair + else sMass = sQPDG.GetMass(); + sM2 = sMass*sMass; // Squared mass of the fragment + curQ += transQC; // Subtract ExchangeMesonQC from QC of Quasmon +#ifdef debug + G4cout<<"G4Q::HQ:valQ="< "Hadron" case + { + pBaryn=1; + sMass = theQCandidates[i]->GetMass(); // Mass is randomized on probability level + sM2=theQCandidates[i]->GetMass2(); // Sq. Mass is randomized on probability level + curQ-= theQCandidates[i]->GetQC(); // Subtract outHadron QC from QC of Quasmon +#ifdef debug + G4cout<<"G4Q::HQ:valQ="<80000000&&sPDG!=NUCPDG) // ==> Nuclear fragment candidate hadronization + { +#ifdef debug + G4cout<<"G4Q::HQ: BoundM="< colouredCluster (cc) + G4LorentzVector cl4Mom(0.,0.,0.,pMass); // 4-momentum prototype for parent cluster + G4LorentzVector tot4Mom=q4Mom+cl4Mom; // @@ Just for checking +#ifdef debug + G4cout<<"G4Q::HQ:Q("<k("< frM2="<ColDec>>>CF("<F("< get residual Quasmon mass + rQ4Mom=cr4Mom+kp4Mom; // 4-momentum of residual Quasmon + /////G4double rQM2=rQ4Mom.m2(); // @@ Temporary before the "kt" is defined + G4LorentzVector retN4Mom=rQ4Mom+ResEnv4Mom; + reTNM2=retN4Mom.m2(); // Real mass of TotalResidNucleus for Fragment + //@@ === One can add here anothe cuts for q randomization === + //if(rQM2>=minSqT) // tmpTM2 = SqrdGSMass of TotResidualNucleus + // ***VTN*** + if(reTNM2>=tmpTM2) // tmpTM2 = SqrdGSMass of TotResidualNucleus + // ***VRQ*** + //if(rQM2>=minSqB) // tmpTM2 = SqrdGSMass of TotResidualNucleus + { + qCond=false; + ffdc=false; +#ifdef debug + //G4cout<<"G4Q::HQ:Attempt#"<"<"<"<MEMrQM2) + // ***VTN*** + if(reTNM2>MEMrQM2) + { + //MEMrQM2=rQM2; + // ***VTN*** + MEMrQM2=reTNM2; + //------------ + MEMkp4M=kp4Mom; + MEMfr4M=fr4Mom; + MEMrQ4M=rQ4Mom; + MEMreM2=reTNM2; + } + else + { + //rQM2=MEMrQM2; + // ***VTN*** + reTNM2=MEMrQM2; + //----------- + kp4Mom=MEMkp4M; + fr4Mom=MEMfr4M; + rQ4Mom=MEMrQ4M; + reTNM2=MEMreM2; + } + } + qCount++; + } + quexf=true; // Quark Exchange is successfully done +#ifdef debug + G4cout<<"G4Q::HQ:RQ("<"<1200.||kn1200.||kt "HadronicCandidate hadronization" case + { + kt = (quasM-dk)*(quasM-sM2/dk); + //@@@@@@@@ rQ4Mom (4-momentum of residual Quasmon) could be defined here?! How? + if(envPDG>80000000&&envPDG!=NUCPDG) + { + // *** LIM *** + G4LorentzVector TCRN=q4Mom-k4Mom; + if(envA<=bEn) TCRN+=env4M; + else TCRN+=bEn4M; + kn=TCRN.m2(); + } + else kn=kt; + } + // *** LIM *** + G4LorentzVector tL=rQ4Mom; // @@ Is rQ4Mom calculated for hadrons?? + if(envA-pBaryn<=bEn) tL+=G4LorentzVector(0.,0.,0.,reM); + else tL+=bEn4M; + G4double tM=tL.m(); // Real Residual Total Nucleus Mass (hadr/frag) + // Residual S+S limit (absolute low limit for corresponding P-resonance) for R->S+S Decay +#ifdef debug + G4cout<<"G4Q::HQ:k="<T2="<rtM="< T="<>>>> rMass="<H("<rM="< HadronVec, Q="< s4M="<80000000&&(sPDG<80000000||envPDG!=pPDG))aMass=0.; + if((sPDG<80000000&&envPDG>80000000&&envPDG!=NUCPDG||sPDG>80000000&&sPDG!=NUCPDG + &&envPDG>pPDG) && iniBN>0||iniBN>1||rPDG==10) aMass=0.; // No Pi0 condition (eg in NucE) +#ifdef debug + G4cout<<"G4Q::HQ:rPDG="<reMass+aMass||envPDG>NUCPDG&&envPDG>pPDG&&reTNM2>tmpTM2)||fdul) + // >>>>>>>>>>> Decay Q->S+H or Q/C->H1+H2 or suck in or evaporate or slow down or decay etc. + { + // === At this point decide what to do, if fragmentation in this Candidate is impossible === +#ifdef debug + G4cout<<"G4Q::HQ: Yes, hsf="<retNM) tmpT=G4QNucleus(tmpTQ,retN4Mom); + /////////G4double fM2=fr4Mom.m2(); // Squared mass of the outgoing fragment + G4QPDGCode sQPDG(sPDG); + // tmpNM - mass of residual environment (M), retNM - mass of TotalNucl [MN=sqrt((E+M)^2-p^2] + // tmpRM - mass GS mass of ResidQuasmon (m_GS), rQ4Mom - 4-momentum of ResidQuasmon (E,p,m) + ////G4double m2=rQ4Mom.m2(); // Real Squared Mass of the ResidualQuasmon + // potE=[sqrt(E^2*M^2-m^2*M^2+m_GS^2*MN*2)-m^2-E*M]/MN=-U (binding energy should be cut off) + //G4double pEc=2*(tmpRM+tmpNM-retNM); // DoubledBindingEnergy (virial theorem) + /////////G4double pEc=tmpRM+tmpNM-retNM; // BindingEnergy (relativistic effect) +#ifdef debug + G4int sB=sQPDG.GetBaryNum(); + G4double sCB=theEnvironment.CoulombBarrier(sQPDG.GetCharge(),sB); + G4bool bSplit=tmpT.SplitBaryon(); // Possibility to split a baryon from the TotResN + G4int rB=rQPDG.GetBaryNum(); + G4double rCB=theEnvironment.CoulombBarrier(rQPDG.GetCharge(),rB); + G4double EQ=rQ4Mom.e(); // EnergyOfResidualQuasmon (E) + G4double em=tmpNM*EQ; // ResEnvM * EnergyOfResidualQuasmon (M*E) + G4double mM=retNM*tmpRM; // TotResNuclM*GSMassResidualQuasmon (m_GS*MN) + G4double pEn=(sqrt(em*em-m2*tmpNM*tmpNM+mM*mM)-m2-em)/retNM; //Real BindingEnergy + G4double pEt=tmpNM*(EQ+tmpNM-retNM)/retNM; // Energy Transfer to nucleus + G4double PQ=rQ4Mom.rho(); // 3MomentumOfResidualQuasmon (p) + G4double pPt=tmpNM*PQ/retNM; // 3Momentum Transfer to nucleus + G4cout<<"G4Q::HQ:rNM="< mMRE="<tmpNM+tmpRM||bSplit)&&ppC) //=> "Go out & drop ExcitedNucleus" + // The condition below is just that the Residual Nucleus is heavier than the GS of the ResN + if(2>3) // *** Attempt GoOutDropExcNucl is closed *** + { + G4LorentzVector retQ4Mom=retN4Mom-G4LorentzVector(0.,0.,0.,tmpNM); +#ifdef debug + G4double retQ3M=retQ4Mom.rho(); + G4cout<<"G4Q::HQ:*CheckFermiMotion* rQ3M="<tmpNM+tmpRM&&retQ3M>100000.) // FermiMotionCut for DecayIn3 (@@dir) *Closed* + //if(retNM>tmpNM+tmpRM) // Decay in Q+E+F (@@don't conserve dir of Fr.) + if(2>3) // *** Closed *** + { + G4LorentzVector re4M = G4LorentzVector(0.,0.,0.,tmpNM); // GS Mass of Residual Environ + G4LorentzVector rq4M = G4LorentzVector(0.,0.,0.,tmpRM); // GS Mass of Residual Quasmon +#ifdef debug + G4cout<<"G4Q::HQ: >***>>>YES<<<***< rQM="< "Normal decay" !!!!! + { + G4QHadron* candHadr = new G4QHadron(sPDG,fr4Mom);// Createa a Hadron for the Candidate + FillHadronVector(candHadr); // Fill the RadiatedHadron (delete equivalent) + theEnvironment.Reduce(pPDG); // Update NuclearEnviron after Q->RQ+F + q4Mom = retQ4Mom; // Update Quasmon's 4-mom + valQ += transQC; // Update the Quark Content of Quasmon +#ifdef debug + G4cout<<"G4Q::HQ:***LetAnyway>>s="<0.) //Lose momentum,go out,leave GSResNuc + //else if(nQuasms==1&&tmpTM+sMass+sCB0.) //Lose momentum,go out,leave GSResNuc + //else if(nQuasms==1&&tmpTM+sMass0.&&epC)//"Lose 3-mom. to GSTotNM & go out" + else if(2>3) // *************** Decay in Fragm + GSResidNucleus is Closed **************** + { + G4LorentzVector dif1=tot4M-retN4Mom-fr4Mom; + qEnv = G4QNucleus(tmpTQ,retN4Mom); // Createa Nucleus for the TotalResidualNucleus +#ifdef debug + G4cout<<"***G4Q::HQ: ***KeepEnvironmentMoving***, nQ="< GSM="<tM="<.027*fraM) G4Exception("G4Quasmon::HadronizeQuasmon: Why Fail? (6)"); //@@ TMP + //if(excE>60.) G4Exception("G4Quasmon::HadronizeQuasmon: Why Fail? (6)"); //@@ TMP + //if(totMassTotM");//@@TMP + G4Exception("G4Quasmon::HadronizeQuasmon: Why Fail? (6) Products are more than total"); +#endif +#ifdef debug + G4cout<<"G4Quasm::HQ:Q="<mLamb+mPi0) + { + nucM = mLamb; + nucPDG= 3122; + piM = mPi0; + piPDG = 111; + } + else if(abs(totZ)==1&&totMass>mLamb+mPi) + { + nucM = mLamb; + nucPDG= 3122; + piM = mPi; + if(totZ>0) piPDG = 211; + else piPDG =-211; + } + else + { + G4cerr<<"***G4Q::HQ:tZ="<mNeut+mK0) + { + nucM = mNeut; + nucPDG= 2112; + piM = mK0; + piPDG = 311; + } + else if(totZ==2&&totMass>mProt+mK) + { + piM = mK; + piPDG = 321; + } + else if(totZ==1&&totMass>mProt+mK0&&G4UniformRand()>0.5) + { + piM = mK0; + piPDG = 311; + } + else if(totZ==1&&totMass>=mNeut+mK) + { + nucM = mNeut; + nucPDG= 2112; + piM = mK; + piPDG = 321; + } + else + { + G4cerr<<"***G4Q::HQ:tZ="<PiNM&&!totS) // Decay in nucleon & pion + { + if(!totZ&&totMass>mProt+mPi&&G4UniformRand()<0.5) + { + piM = mPi; + piPDG = -211; + } + else if(!totZ&&totMass>mNeut+mPi0) + { + nucM = mNeut; + nucPDG= 2112; + piM = mPi0; + piPDG = 111; + } + else if(totZ==1&&totMass>mNeut+mPi&&G4UniformRand()<0.5) + { + nucM = mNeut; + nucPDG= 2112; + piM = mPi; + piPDG = 211; + } + else if(totZ==1&&totMass>mProt+mPi0) + { + piM = mPi0; + piPDG = 111; + } + else if(totZ==-1) + { + nucM = mNeut; + nucPDG= 2112; + piM = mPi; + piPDG = -211; + } + else if(totZ==2) + { + piM = mPi; + piPDG = 211; + } + else + { + G4cerr<<"***G4Q::HQ:totZ="<1) + { + G4cerr<<"***G4Q::HQ:totZ="<gam/pi/K+N="<GPK="< M="<mPi0) + { + rPDG=111; + reMass=mPi0; + } + else + { + rPDG=22; + reMass=0.; + } + } + G4double freeRQM=rQPDG.GetMass(); + G4int RQB = rQPDG.GetBaryNum(); + G4double fRQW= 3*rQPDG.GetWidth(); + if(fRQW<.001) fRQW=.001; + G4QPDGCode sQPDG(sPDG); + G4int sChg=sQPDG.GetCharge(); + G4int sBaryn=sQPDG.GetBaryNum(); + G4double sCB=theEnvironment.CoulombBarrier(sChg,sBaryn); +#ifdef debug + G4cout<<"G4Q::HQ:frCB="<QM="< tM="<quasM) + { + if(mNeut+mK<=quasM+.001) + { + reMass=mNeut; + rPDG =2112; + rQPDG=G4QPDGCode(rPDG); + rChg=rQPDG.GetCharge(); + rBaryn=rQPDG.GetBaryNum(); + rCB=theEnvironment.CoulombBarrier(rChg,rBaryn); +#ifdef debug + G4cout<<"G4Q::HQ:NCB="<80000000) + { + G4cout<<"G4Q::HQ:Q->RQ+QEXF s="< rPDG="<HdronVect s4M="< "KinEn is below CB, try once more" case + { +#ifdef ppdebug + //G4cout<<"****G4Q::HQ:E-9: sKE="<80000000) q4Mom-=G4LorentzVector(0.,0.,0.,pMass); + qEnv=theEnvironment; + return theQHadrons; + } + else if(abs(reMass-freeRQM) "ResidQ is a GSHadron/Fragment" case + { + G4QHadron* curHadr1 = new G4QHadron(rPDG,r4Mom);// Create RealHadron for the ResidQ + FillHadronVector(curHadr1); // Fill "new curHadr1" (delete equivalent) + G4QHadron* curHadr2 = new G4QHadron(sPDG,s4Mom);// Creation Hadron for theCandidate + FillHadronVector(curHadr2); // Fill "new curHadr2" (delete equivalent) +#ifdef debug + G4cout<<"G4Q::HQ:Decay of Quasmon in RQ="<1&&totMass>totM&&totS>=0) //@@ ?? +#ifdef ppdebug + G4cout<<"G4Q::HQ:*NEEDS-EVAP-10* RTNM="<80000000) q4Mom-=G4LorentzVector(0.,0.,0.,pMass); + qEnv=theEnvironment; + return theQHadrons; + } + else // Only the ResidualTotalNucleus can evaporate + { + G4QHadron* curHadr2 = new G4QHadron(sPDG,s4Mom);// Creation Hadron for the Out Hadron + FillHadronVector(curHadr2); // Fill "new curHadr2" (delete equivalent) + q4Mom = r4Mom; + if(sMass>80000000) + { + theEnvironment.Reduce(pPDG); // Update NuclearEnviron after Q->RQ+QEXF + valQ += transQC; // Update the Quark Content of Quasmon + } + else valQ = curQ; // Update the Quark Content of Quasmon +#ifdef debug + G4cout<<"***>G4Q::HQ:S="< rK0M + mK0) + { + rPDG = rK0PDG; // PDG of the Residual System to K0 + rMass = rK0M; + sPDG = 311; + sMass = mK0; + } + else + { + rPDG = rKPPDG; // PDG of the Residual System to K+ + rMass = rKPM; + sPDG = 321; + sMass = mK; + } + G4LorentzVector r4Mom(0.,0.,0.,rMass); + G4LorentzVector s4Mom(0.,0.,0.,sMass); // Mass is random since probab. time + if(!G4QHadron(tot4M).DecayIn2(r4Mom, s4Mom)) + { + G4cerr<<"***G4Q::HQ: tM="< rPDG="<HadronVector s="<=iniBN) // Try to decay in K+ + { + sPDG = 321; + sMass= mK; + G4QNucleus totN(valQ+KpQC); // Nucleus Residual after Kp sub. + rPDG = totN.GetPDG(); + rMass= totN.GetMZNS(); + } + else if(iniS<0) // Try to decay in K0 + { + sPDG = 311; + sMass= mK0; + G4QNucleus totN(valQ+K0QC); // Nucleus Residual after K0 sub. + rPDG = totN.GetPDG(); + rMass= totN.GetMZNS(); + } + else if(iniQChg>iniBN-iniS) // Try to decay in Pi+ + { + sPDG = 211; + sMass= mPi; + G4QNucleus totN(valQ-PiQC); // Nucleus Residual after Pi+ sub. + rPDG = totN.GetPDG(); + rMass= totN.GetMZNS(); + } + else if(iniQChg<0) // Try to decay in Pi- + { + sPDG = -211; + sMass= mPi; + G4QNucleus totN(valQ+PiQC); // Nucleus Residual after Pi- sub. + rPDG = totN.GetPDG(); + rMass= totN.GetMZNS(); + } + else + { + sPDG = 22; + sMass= 0.; + rPDG = iniPDG; + rMass= iniQM; + } + ffin = true; + } +#ifdef debug + G4cout<<"G4Q::HQ:MQ="<sPDG="<s="<>>G4Quasmon::HadrQ:EmergencyHadron="< "Hadron in NuclMedia or NuclCand" case + { + // Now the CoulBar reflection should be taken into account + G4QContent outQC = G4QPDGCode(sPDG).GetQuarkContent(); + G4int outBar = outQC.GetBaryonNumber(); + G4int outChg = outQC.GetCharge(); + G4double outCB = theEnvironment.CoulombBarrier(outChg,outBar); + // Now the Coulomb Potential should be taken into account //@@ How to take into account ?? + if(nucflag) rQ4Mom+=pMass-pNMass; // Make a correction to 4Mom of ResidQuasmon + G4QHadron tmpRQH(valQ+transQC,rQ4Mom); // Temporary QHadron for the Residual Quasmon + // Now the CoulBar reflection should be taken into account + G4double outT = fr4Mom.e()-fr4Mom.m(); + G4double outProb = theEnvironment.CoulBarPenProb(outCB,outT,outChg,outBar); + if(G4UniformRand()RQ+F + G4LorentzVector sumL=theEnvironment.Get4Momentum()+q4Mom; //@@ For Check Print Only + check += fr4Mom; //@@ Just for checking + ccheck+=G4QPDGCode(sPDG).GetCharge(); //@@ Just for checking + q4Mom = rQ4Mom; // Update the 4Mom of the Quasmon + valQ += transQC; // Update the Quark Content of Quasmon + G4QHadron* candHadr = new G4QHadron(sPDG,fr4Mom);// Createa a Hadron for the Candidate + FillHadronVector(candHadr); // Fill the RadiatedHadron(delete equivalent) +#ifdef debug + G4cout<<"G4Q::HQ:QuarkExchangeHadronizationThroughCB Q="<>>>>>>>> NuclearMatter SUBCHECK >>>>>>>>>>>>>"<>***>>FinalCHEK>>***>> 4M="< ResidualQ 4M="<GetPDGCode(); // Get PDG code of the Hadron to switch + G4LorentzVector t = qH->Get4Momentum(); // 4-Mom of Chipolino +#ifdef ppdebug + G4cout<<"G4Quasmon::FillHadronVector:Hadron's PDG="<Get4Momentum()<80000000 && (thePDG<90000000 || thePDG%1000>500 || thePDG%1000000>500000) + && thePDG!=90002999 && thePDG!=89999003 && thePDG!=90003998 && thePDG!=89998004 + && thePDG!=90003999 && thePDG!=89999004 && thePDG!=90004998 && thePDG!=89998005) + { // Translation from CHIPS encoding to PDG encoding + if (thePDG==90999999) thePDG=-311; // anti-K0 === Meson OCTET + else if(thePDG==90999000) thePDG=-321; // K- + else if(thePDG==89000001) thePDG=311; // K0 + else if(thePDG==89001000) thePDG=321; // K+ + else if(thePDG==90000999) thePDG=211; // pi+ + else if(thePDG==89999001) thePDG=-211; // pi- + else if(thePDG==89999999) thePDG=-2112; // anti-neutron === anti-OCTET(reduced to SEPTUM Lam/S0) + else if(thePDG==89999000) thePDG=-2212; // anti-proton + else if(thePDG==89000000) thePDG=-3122; // anti-lambda + else if(thePDG==88999002) thePDG=-3222; // anti-SIGMA+ + else if(thePDG==89000999) thePDG=-3222; // anti-SIGMA- + else if(thePDG==88000001) thePDG=-3322; // anti-KSI0 + else if(thePDG==88001000) thePDG=-3312; // anti-KSI- + else if(thePDG==89999002) thePDG=1114; // Delta-(resonance) === bary-DECUPLET/OCTET + else if(thePDG==90001999) thePDG=2224; // Delta++(resonance) (Delta0&Delta+ a covered by n&p) + else if(thePDG==90999001) thePDG=3112; // Sigma- + else if(thePDG==91000999) thePDG=3222; // Sigma+ (Sigma0 iz covered by Lambda) + else if(thePDG==91999000) thePDG=3312; // Ksi- + else if(thePDG==91999999) thePDG=3322; // Ksi0 + else if(thePDG==92998999) thePDG=3112; // Omega-(resonance) + else G4cerr<<"*G4Quasmon::FillHadronVector:PDG="<Get4Momentum().m()<SetQPDG(G4QPDGCode(thePDG)); + } + if (thePDG==10) // Chipolino decays (@@always - Chipolino is not kept in HadV (*Example*)) + { + G4double rM = t.m(); // Mass of Chipolino + G4QContent chipQC = qH->GetQC(); // QC of Chipolino + G4QContent h1QC = chipQC.SplitChipo(rM); // Extract QC of one of the Hadrons of Chipolino + G4QContent h2QC = chipQC - h1QC; // Define QC of the second Hadron + G4int h1PDG = h1QC.GetSPDGCode(); // PDGCode of the First Hadron + G4int h2PDG = h2QC.GetSPDGCode(); // PDGCode of the First Hadron + if(!h1PDG || !h2PDG) + { + G4cerr<<"***FillHV:h1QC="<Get4Momentum(); + G4LorentzVector s4Mom = sHadr->Get4Momentum(); + if(!qH->DecayIn2(f4Mom,s4Mom)) + { + delete fHadr; // Delete "new fHadr" + delete sHadr; // Delete "new sHadr" + G4cerr<<"***G4Q::FillHadronVector:ChipQC"<SetNFragments(2); + //theQHadrons.push_back(qH); // (delete equivalent) + // Instead + delete qH; + // + fHadr->Set4Momentum(f4Mom); // Put the randomized 4Mom to 1-st Hadron + FillHadronVector(fHadr); // Fill 1st Hadron (delete equivalent) + sHadr->Set4Momentum(s4Mom); // Put the randomized 4Mom to 2-nd Hadron + FillHadronVector(sHadr); // Fill 2nd Hadron (delete equivalent) + } + } + // pD++,nD-,ppD++,nnD-,D++D++,D-D-,pD++D++,nD-D- "nuclear states" + else if(thePDG>80000000 && + thePDG==90002999&&thePDG==89999003&&thePDG==90003999&&thePDG==89999004&&thePDG==90003998&& + thePDG==89998004&&thePDG==90004998&&thePDG==89998005 && !DecayOutHadron(qH)) + { +#ifdef pdebug + G4cout<<"***G4Quasmon::FillHadronVector: Emergency OUTPUT, PDGcode= "<80000000&&thePDG!=90000000) // === Decay-Evaporation of the BarionicFragment === + { + G4double fragMas=qH->GetMass(); // Real Mass of the nuclear fragment + G4QNucleus qNuc(t,thePDG); // Make a Nucleus out of the Hadron + G4double GSMass =qNuc.GetGSMass(); // GrState Mass of the nuclear fragment + G4QContent totQC=qNuc.GetQCZNS(); // Total Quark Content of Residual Nucleus + G4int nN =qNuc.GetN(); // A#of neutrons in the Nucleus + G4int nZ =qNuc.GetZ(); // A#of protons in the Nucleus + G4int nS =qNuc.GetS(); // A#of protons in the Nucleus + G4int bA =qNuc.GetA(); // A#of baryons in the Nucleus +#ifdef pdebug + G4cout<<"G4Quasm::FillHadrVect: Nucl="<0) // => "Anti-strangeness or ISOBAR" case + { + G4double m1=mPi; + G4int PDG1=-211; + G4QNucleus newNpm(totQC+PiQC); + G4int PDG2=newNpm.GetPDG(); + G4double m2=newNpm.GetMZNS(); + if(nN<0) + { + PDG1 =211; + G4QNucleus newNpp(totQC-PiQC); + PDG2 =newNpp.GetPDG(); + m2 =newNpp.GetMZNS(); + } + if(nS<0) + { + m1 =mK; + PDG1 =321; + G4QNucleus newNp(totQC-KpQC); + PDG2 =newNp.GetPDG(); + m2 =newNp.GetMZNS(); + G4QNucleus newN0(totQC-K0QC); + G4double m3=newN0.GetMZNS(); + if (m3+mK0 "aK0+ResA is better" case + { + m1 =mK0; + PDG1=311; + m2 =m3; + PDG2=newN0.GetPDG(); + } + } + if(fragMas>m1+m2) // => "can decay" case + { + G4LorentzVector fq4M(0.,0.,0.,m1); + G4LorentzVector qe4M(0.,0.,0.,m2); + if(!qH->DecayIn2(fq4M,qe4M)) + { + G4cerr<<"***G4Quasm::FillHadrV: QM="< Mes="<SetNFragments(2); // Put a#of Fragments=2 + //theQHadrons.push_back(qH); + // Instead + delete qH; + // + G4QHadron* H1 = new G4QHadron(PDG1,fq4M); + theQHadrons.push_back(H1); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(PDG2,qe4M); + FillHadronVector(H2); // (delete equivalent) + } + else if(m1+m2-fragMas<0.01) // Split the 4-momentum + { + G4double r1=m1/fragMas; + G4double r2=1.-r1; + //qH->SetNFragments(2); // Put a#of Fragments=2 + //theQHadrons.push_back(qH); + // Instead + delete qH; + // + G4QHadron* H1 = new G4QHadron(PDG1,r1*t); + theQHadrons.push_back(H1); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(PDG2,r2*t); + FillHadronVector(H2); // (delete equivalent) + } + else + { + G4cerr<<"***G4Quasm::FillHadrVec: PDG="<0&&bA>1) // It's nucleus and there is a neutron + { + G4QContent resQC=totQC-neutQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + nResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (nResPDG==90000001) nResM=mNeut; + else if(nResPDG==90001000) nResM=mProt; + else if(nResPDG==91000000) nResM=mLamb; + else nResM=resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double pResM =1000000.; // Prototype of mass of residual for a proton + G4int pResPDG=0; // Prototype of PDGCode of residual for a proton + if(nZ>0&&bA>1) // It's nucleus and there is a proton + { + G4QContent resQC=totQC-protQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + pResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (pResPDG==90000001) pResM=mNeut; + else if(pResPDG==90001000) pResM=mProt; + else if(pResPDG==91000000) pResM=mLamb; + else pResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } + G4double lResM =1000000.; // Prototype of mass of residual for a Lambda + G4int lResPDG=0; // Prototype of PDGCode of residual for a Lambda + if(nS>0&&bA>1) // It's nucleus and there is a Lambda + { + G4QContent resQC=totQC-lambQC; + G4QNucleus resN(resQC); // Pseudo nucleus for the Residual Nucleus + lResPDG=resN.GetPDG(); // PDG of the Residual Nucleus + if (lResPDG==90000001) lResM=mNeut; + else if(lResPDG==90001000) lResM=mProt; + else if(lResPDG==91000000) lResM=mLamb; + else lResM =resN.GetMZNS(); // min mass of the Residual Nucleus + } +#ifdef pdebug + G4cout<<"G4Quasm::FillHadrVect: rP="<DecayIn2(a4Mom,b4Mom)) + { + theQHadrons.push_back(qH); // No decay (delete equivalent) + G4cerr<<"***G4Q::FillHadronVector: Be8 decay did not succeed"<SetNFragments(2); // Fill a#of fragments to decaying Hadron + //theQHadrons.push_back(qH); // Fill hadron with nf=2 (delete equivalent) + // Instead + delete qH; + // + G4QHadron* HadrB = new G4QHadron(barPDG,a4Mom); + FillHadronVector(HadrB); // Fill 1st Hadron (delete equivalent) + G4QHadron* HadrR = new G4QHadron(resPDG,b4Mom); + FillHadronVector(HadrR); // Fill 2nd Hadron (delete equivalent) + } + } + else + { +#ifdef pdebug + G4cout<<"G4Quasm::FillHadrVect: Leave as it is"< GSM="<GSMass) + { + G4int gamPDG=22; + G4double gamM=0.; + if(fragMas>mPi0+GSMass) + { + gamPDG=111; + gamM=mPi0; + } + G4LorentzVector a4Mom(0.,0.,0.,gamM); + G4LorentzVector b4Mom(0.,0.,0.,GSMass); + if(!qH->DecayIn2(a4Mom,b4Mom)) + { + theQHadrons.push_back(qH); // No decay (delete equivalent) + G4cerr<<"***G4Q::FillHadronVector: N*->gamma/pi0+N decay did not succeed"<Set4Momentum(b4Mom); + theQHadrons.push_back(qH); // Fill corrected baryon in the HadronVector + } + } + else // ===> Evaporation of excited system + { +#ifdef pdebug + G4cout<<"G4Quasm::FillHadrVect:Evaporate "< GS="<kMin QParton Momentum for the current Quasmon +#ifdef pdebug + //G4cout<<"G4Quasmon::GetQPartonMomentum: ***called*** mR="<kLim || qMass<=0. || nOfQ<2) + { + G4cerr<<"***G4Q::GetQPMom: kMax="<2) p = pow(r,n-1); + G4double nx = n*x; + G4double c = p*r*(1.+nx); + G4double od = c - vRndm; +#ifdef pdebug + G4cout<<"G4Q::GetQPMom:>>>First x="< nitMax="<1.) x=0.9; + if(x<0.) x=.01; + G4double kCand=kLim*x; + if(kCand>=kMax)kCand=kMax-.001; + if(kCand<=kMin)kCand=kMin+.001; + return kCand; + } + return 0.; +} // End of "GetQPartonMomentum" + +// For the given quasmon mass calculate a number of quark-partons in the system +void G4Quasmon::CalculateNumberOfQPartons(G4double qMass) +// ===================================================== +{ + static const G4double mK0 = G4QPDGCode(311).GetMass(); + // @@ Temporary here. To have 3 quarks in Nucleon Temperature should be < M_N/4 (234 MeV) + // M^2=4*n*(n-1)*T^2 => n = M/2T + 1/2 + T/4M + o(T^3/16M^3) + // @@ Genius (better than 10**(-3) even for n=2!) but useless + //G4double qMOver2T = qMass/(Temperature+Temperature); + //G4double est = qMOver2T+1.+0.125/qMOver2T; + // @@ Longer but exact + G4double qMOverT = qMass/Temperature; + G4int valc = valQ.GetTot(); + // ................................. + // --- Exponent, Double Split, Poisson 1 ============ + //G4int b = valQ.GetBaryonNumber(); + //G4int mq= 3*b; + //if (!b) mq=2; + //G4double mean = ((1.+sqrt(1.+qMOverT*qMOverT))/2. - mq)/2.; + //if(mean<0.) nOfQ=mq; + // --- Uncomment up to here ================^^^^^^^^^ + // Exponent ------ + //else nOfQ=mq-2*mean*log(G4UniformRand()); + // Poisson 1 ------ + //else nOfQ=mq+2*RandomPoisson(mean); + // Double Split ------ + //else + //{ + // G4int imean = static_cast(mean); + // G4double dm = mean - imean; + // if(G4UniformRand()>dm) nOfQ=mq+imean+imean; + // else nOfQ=mq+imean+imean+2; + //} + // ......... + // Poisson 2 ============= + if(valc%2==0)nOfQ = 2*RandomPoisson((1.+sqrt(1.+qMOverT*qMOverT))/4.); // abs(b) is even + else nOfQ = 1+2*RandomPoisson((1.+sqrt(1.+qMOverT*qMOverT))/4.-0.5); // abs(b) is odd + // +#ifdef pdebug + G4cout<<"G4Q::Calc#ofQP:QM="<stran) stran=astra; + G4int nMaxStrangeSea=static_cast((qMass-stran*mK0)/(mK0+mK0));//KK is a minimum for s-sea + if (absb) nMaxStrangeSea=static_cast((qMass-absb)/672.); //LambdaK is a minimum for s-sea +#ifdef pdebug + G4cout<<"G4Q::Calc#ofQP:"<0)valQ.IncQAQ(nSeaPairs,SSin2Gluons); + else morDec=valQ.DecQAQ(-nSeaPairs); +#ifdef pdebug + if(morDec) G4cout<<"G4Q::Calc#ofQP: "<nMaxStrangeSea) // @@@@@@@ Too many strange sea ?????? + { +#ifdef pdebug + G4cout<<"G4Q::Calc#ofQP:**Reduce** S="<GetPDGCode(); // PDGC of the Candidate + G4bool poss = curCand->GetPossibility(); // Possibility for the Candidate + G4QContent tmpTQ=totQC-curCand->GetQC(); + G4QNucleus tmpT(tmpTQ); // Nucleus for Total Resid. Nucleus for Fragment + G4double tmpTM=tmpT.GetMZNS(); // GSMass of Total Residual Nucleus for Fragment + G4QPDGCode cQPDG(cPDG); // QPDG for the candidate + G4double frM=cQPDG.GetMass(); // Vacuum mass of the candidate + if(cPDG>80000000&&cPDG!=90000000) // Modify Fragments to take into account CurNuclEnv + { + if(totMasstM="<SetPossibility(false); + } + G4QNucleus cNuc(cPDG); // Fake nucleus for the Candidate + G4int cP = cNuc.GetZ(); // A#of protons in the Current Environment + G4int cN = cNuc.GetN(); // A#of neutrons in the Current Environment + G4int cL = cNuc.GetS(); // A#of lambdas in the Current Environment + G4QPDGCode cQPDG(cPDG); // QPDG of the Current Cluster +#ifdef debug + if(cPDG==90001000) G4cout<<"G4Q::MIM:>>>cPDG=90001000<<<, possibility="<=cP&&eN>=cN&&eL>=cL&&poss) // Cluster exists & possible + { + G4double clME = 0.; // Prototype of the BoundClusterMass in Environment + G4double clMN = 0.; // Prototype of the BoundClusterMass in TotNucleus + G4double renvM = 0; // Prototype of the residual Environ mass + if(cP==eP&&cN==eN&&cL==eL)clME=cQPDG.GetMass();// The only not bound Cluster of Environment + else // Bound Cluster in the Environment + { + renvM = cQPDG.GetNuclMass(eP-cP,eN-cN,eL-cL); // Mass of residual for Environment + clME = envM-renvM; + } + if(cP==tP&&cN==tN&&cL==tL)clMN=cQPDG.GetMass(); // The only not bound Cluster of TotNucleus + else // Bound Cluster in Total Nucleus + { + renvM = cQPDG.GetNuclMass(tP-cP,tN-cN,tL-cL); // Mass of residual for Total Nucleus + clMN = totM-renvM; + } + curCand->SetParPossibility(true); + curCand->SetEBMass(clME); + curCand->SetNBMass(clMN); +#ifdef sdebug + G4int envPDGC = theEnvironment.GetPDGCode(); // PDG Code of Current Environment + G4cout<<"G4Q:ModMatC:C="<SetParPossibility(false); + } // @@ Modification of hadron masses in nuclear matter are not implemented yet + } +} // End of "ModifyInMatterCandidates" + +// Randomize the Resonance masses and calculate probabilities of hadronization for them +void G4Quasmon::CalculateHadronizationProbabilities(G4double E, G4double kVal, G4double kLS, + G4bool piF, G4bool gaF) +// ======================================================================================= +{ + G4int vap = nOfQ-3; // Vacuum power + G4double mQ2 = q4Mom.m2(); // Squared Mass of the Quasmon + G4double eQ = q4Mom.e(); // LS Energy of the Quasmon + G4double mQ = sqrt(mQ2); // Mass of the decaying Quasmon + G4double dk = kVal + kVal; // Double momentu of quark-parton in QCM + G4double rQ2 = mQ2-dk*mQ; // Min Residual Colored Quasmon Squared Mass + //////////////G4double rQ = sqrt(rQ2); + G4double mQk = mQ-dk; // For acceleration + G4double vaf = theEnvironment.GetProbability()*mQk/kVal/vap; //@@ !! Vacuum factor + //G4double vaf = mQk/kVal/vap; //@@ Vacuum factor (instead of in G4QNucleus) + G4double accumulatedProbability = 0.; + G4double secondAccumProbability = 0.; + G4int qBar =valQ.GetBaryonNumber(); // BaryNum of Quasmon + G4int absb = abs(qBar); // Abs BaryNum of Quasmon + G4int nofU = valQ.GetU()- valQ.GetAU(); // A#of u-quarks + G4int dofU = nofU+nofU; + G4int nofD = valQ.GetD()- valQ.GetAD(); // A#of d-quarks + G4int dofD = nofD+nofD; + G4int qChg = valQ.GetCharge(); + G4int qIso = qBar-qChg-qChg; // Charge of Quasmon + ////////////////G4int aQuI = abs(qIso); // Abs value for estimate + ///////////////G4int oeQB = qBar%2; // odd(1)/even(0) QBaryn flag + G4int maxC = theQCandidates.size(); // A#of candidates + ///////////////G4double totZ = theEnvironment.GetZ() + valQ.GetCharge(); // Z of the Nucleus + ///////////////G4double totA = theEnvironment.GetA() + valQ.GetBaryonNumber(); // A of the Nucleus + G4double envM = theEnvironment.GetMass(); // Mass of the Current Environment + G4int envPDGC = theEnvironment.GetPDGCode(); // PDG Code of Current Environment + G4int envN = theEnvironment.GetN(); // N of current Nuclear Environment + G4int envZ = theEnvironment.GetZ(); // Z of current Nuclear Environment + ////////////////G4int envS = theEnvironment.GetS(); // S of current Nuclear Environment + G4int envA = theEnvironment.GetA(); // A of current Nuclear Environment + G4QContent envQC=theEnvironment.GetQCZNS(); // QuarkContent of the current Nuclear Environ. + ///////G4double addPhoton=phot4M.e(); // Photon energy for capture by quark-parton +#ifdef sdebug + G4int maxB = theEnvironment.GetMaxClust(); // Maximum BaryNum for clusters + G4cout<<"G4Q::CalculateHadronizationProbabilities:Q="<ClearParClustVector(); // Clear Parent Cluster Vector for the Fragment + G4double probability = 0.; + G4double secondProbab = 0.; + G4int resPDG=0; + G4double comb=0.; + G4int cPDG = curCand->GetPDGCode(); + G4QContent candQC = curCand->GetQC(); + G4QContent tmpTQ=envQC+valQ-candQC; // QC for Total ResidualNucleus for the Cluster + G4QNucleus tmpT(tmpTQ); // Nucleus for Total ResidNucleus for Fragment + G4double tmpTM=tmpT.GetMZNS(); // GSMass of Total ResidualNucleus for Fragment + G4QPDGCode cQPDG(cPDG); // QPDG for the candidate + G4double frM=cQPDG.GetMass(); // Vacuum mass of the candidate + G4int cU=candQC.GetU()-candQC.GetAU(); + ////////////G4int dU=cU+cU; + G4int cD=candQC.GetD()-candQC.GetAD(); + ////////////G4int dD=cD+cD; + G4int dUD=abs(cU-cD); + ////////////G4int cS=candQC.GetS()-candQC.GetAS(); + G4bool pos=curCand->GetPossibility()&&totMass>tmpTM+frM; + //G4bool pos=curCand->GetPossibility(); +#ifdef pdebug + if(cPDG==111||cPDG==90001000||cPDG==90000001||cPDG==90000002||cPDG==90001001||cPDG==90002002) + G4cout<<"G4Q::CHP:==*****==>>>c="<80000000&&cPDG!=90000000&&dUD<2))) // 2 (OK) or 3 + { + G4QContent curQ = valQ; // Make a current copy of the Quasmon QuarkCont + G4int baryn= candQC.GetBaryonNumber(); // Baryon number of the Candidate + G4int cC = candQC.GetCharge(); // Charge of the Candidate + G4double CB=0.; + if(envA) CB=theEnvironment.CoulombBarrier(cC,baryn); + /////////////G4int cI = baryn-cC-cC; + G4int cNQ= candQC.GetTot()-2; // A#of quark-partons in the candidate - 2 (OK) + //G4int cNQ= candQC.GetTot()+baryn-2; // A#of q-partons + string-junktions - 2 (q-link) + //G4int cNQ= candQC.GetTot()*2-4; // A#of q-partons + string-junktions - 2 (bag-link?) + G4double resM=0.; // Prototype for minMass of residual hadron + if(cPDG>80000000&&cPDG!=90000000&&baryn<=envA) //===> "Nuclear Fragment" case (QUark EXchange) + { + G4int pc=0; // Parents counter + G4double pcomb=0.; // Summed probability of parent clusters + G4double frM2=frM*frM; + //////////G4double qMax=frM+CB-kLS; + //////////G4double qM2=qMax+qMax; + G4int iQmin=0; + G4int iQmax=3; + G4int oQmin=0; + G4int oQmax=3; + if (dofU<=nofD) iQmax=1; // d-quark (u-quark is forbiden) + else if(dofD<=nofU) iQmin=1; // u-quark (d-quark is forbiden) + if(piF) // pi- transfer it's charge to the quark + { + iQmin=0; + iQmax=1; + } +#ifdef pdebug + if(baryn<5) + G4cout<<"G4Q::CHP:***>>>c="<oQmin) for(int iq=iQmin; iq0.) qFact=4.; + if(iq==1&&gaF) + { + qFact=4.; +#ifdef pdebug + if(cPDG==90001000) G4cout<<"G4Q::CHP: proton gaF enhanced"<nDel="<0.) // Kinematical analysis of hadronization + { +#ifdef debug + if(baryn<5)G4cout<<"G4Q::CHP: fM="<="<0.&&ne<1.)kf=pow(ne,cNQ); + // == Prepare for the residual nucleus restriction == + // *** LIM *** + G4QContent rtQC=valQ+ioQC; // Total Residual Quark Content + if(envA-barot<=bEn) rtQC+=envQC-parQC; // Total Residual Quark Content + else rtQC+=bEnQC; + G4QNucleus rtN(rtQC); // Create PseudoNucleus for totResid. + G4double rtM=rtN.GetGSMass(); // MinMass of residual Q+(Env-ParC) system + G4double rtEP=rEP; // E+Mom of the real TotColouredResidSys + // *** LIM *** + if(envA-barot<=bEn) rtEP+=envM-boundM; + else rtEP+=mbEn; + G4double rtE=rtEP-rMo; // Energy of the real TotColouredResidSys + ////////////G4double rtEMP=rtE-rMo; +#ifdef pdebug + G4QContent tmpEQ=envQC-parQC; // Quark content for Residual Environment + G4QNucleus tmpN(tmpEQ); // Pseudo nucleus for Residual Environment + G4double tmpNM=tmpN.GetMZNS(); // Mass of Residual Environment + if(baryn<5)G4cout<<"G4Q::CHP:RN="<"<0.&&nz<1.&&nzrQ2&&!piF&&!gaF&&baryn>3) // ==> Check of Residual Virtual Quasmon + if(minBM2>rQ2&&!piF&&!gaF&&baryn>2) // ==> Check of Residual Virtual Quasmon + //if(minBM2>rQ2&&baryn>2) // ==> Check of Residual Virtual Quasmon + //if(minBM2>rQ2&&!piF&&baryn>3) // ==> Check of Residual Virtual Quasmon + //if(minBM2>rQ2&&!piF&&baryn>2) // ==> Check of Residual Virtual Quasmon + //if(minBM2>rQ2&&!piF&&!gaF) // ==> Check of Residual Virtual Quasmon + //if(minBM2>rQ2&&!piF) // ==> Check of Residual Virtual Quasmon + //if(minBM2>rQ2) // ==> Check of Residual (Virtual?) Quasmon + //if(2>3) + { + G4double nz=0; + nz=1.-(minBM2-rQ2)/(boundM*rEP); + if(atrest) nz=1.-(minBM2-rQ2+pmk*dked)/(boundM*(rEP+pmk)); + //nz=1.-(minBM2-rQ2)/(nucBM*rEP); + //if(atrest) nz=1.-(minBM2-rQ2+pmk*dkd)/(nucBM*(rEP+pmk)); +#ifdef pdebug + if(baryn<5) + G4cout<<"G4Q::CHP:q="<"<0.&&nz<1.&&nzrQ2&&baryn>3) // ==> Check of Residual Quasmon + if(minM2>rQ2&&!piF&&!gaF&&baryn>3) // ==> Check of Residual Quasmon + //if(minM2>rQ2&&!piF&&baryn>2) // ==> Check of Residual Quasmon + //if(minM2>rQ2&&!piF&&baryn>3) // ==> Check of Residual Quasmon + //if(minM2>rQ2&&!piF&&!gaF) // ==> Check of Residual Quasmon + //if(minM2>rQ2&&!piF) // ==> Check of Residual Quasmon + //if(minM2>rQ2) // ==> Check of Residual (Virtual?) Quasmon + //if(2>3) + { + G4double nz=0; + nz=1.-(minM2-rQ2)/(boundM*rEP); + if(atrest) nz=1.-(minM2-rQ2+pmk*dked)/(boundM*(rEP+pmk)); + //nz=1.-(minM2-rQ2)/(nucBM*rEP); + //if(atrest) nz=1.-(minM2-rQ2+pmk*dkd)/(nucBM*(rEP+pmk)); +#ifdef pdebug + if(baryn<5) + G4cout<<"G4Q::CHP:q="<"<0.&&nz<1.&&nz1.)kf=1.; + G4double high = kf; +#ifdef pdebug + if(baryn<5) + G4cout<<"G4Q::CHP:kf="<="<="<0.&&nz>lz) + // { + // newl=pow(nz,cNQ); + // if(newl>low) low=newl; + // } + // else if(nz>1.) low=10.; + //} + kf-=low; +#ifdef pdebug + if(baryn<5) + G4cout<<"G4Q::CHP:>>"< End of Quark Exchange "iq" Test LOOP + } // ---> End of Nuclear Case of fragmentation + else if(cPDG<80000000) // ===> "Hadron" case (QUark FUsion mechanism) + { + comb = valQ.NOfCombinations(candQC); + if(cPDG==111||cPDG==221||cPDG==331||cPDG==113||cPDG==223||cPDG==333||cPDG==115||cPDG==225|| + cPDG==335||cPDG==117||cPDG==227||cPDG==337||cPDG==110||cPDG==220||cPDG==330) + { + G4QContent tQCd(1,0,0,1,0,0); + G4QContent tQCu(0,1,0,0,1,0); + G4QContent tQCs(0,0,1,0,0,1); + G4double cmd=valQ.NOfCombinations(tQCd); + G4double cmu=valQ.NOfCombinations(tQCu); + G4double cms=valQ.NOfCombinations(tQCs); + if(cPDG!=333&&cPDG!=335&&cPDG!=337) comb=(cmd+cmu)/2.; + if(cPDG==331||cPDG==221) comb =(comb + cms)/2.; //eta,eta' + // Hadronization in eta/eta' suppression (conversion to rho/omega) + if(cPDG==221||cPDG==331) comb*=EtaEtaprime; // eta/eta': -2*(1-e) + if(cPDG==113||cPDG==223) comb*=2.-EtaEtaprime; // rho/omega: 2*(1-e) +#ifdef pdebug + if(cPDG==111) G4cout<<"G4Q::CHP:comb="<>>PDG="<683.&&!absb)) resPDG=221;// eta minimum residual instead of pi0 +#ifdef pdebug + if(aPDG<10000&&aPDG%10<3) + G4cout<<"G4Q::CHP:cPDG="<"<frM-CB+resTM &&(resPDG>80000000&&resPDG!=90000000||resPDG<10000)) + { +#ifdef pdebug + if(aPDG<10000&&aPDG%10<3) + G4cout<<"G4Q::CHP:ind="< cM="<0. && vap>0 && zMax>zMin) + { + probability = vaf*(pow(zMax, vap)-pow(zMin, vap)); +#ifdef pdebug + if(aPDG<10000&&aPDG%10<3) + G4cout<<"G4Q::CHP:#"< Low baryon number case (tuned on p-ap) + { + if(cPDG==110||cPDG==220||cPDG==330) + probability*=comb; // f_0's (sigma) have spin 0 + else probability*=comb*(abs(cPDG)%10); // Spin of resonance + } + } + } + else + { +#ifdef pdebug + if(aPDG<10000&&aPDG%10<3) + G4cout<<"G4Q::CHP:cM=0["< End of Hadronic Case of fragmentation + else probability=0.; +#ifdef pdebug + G4int aPDG = abs(cPDG); + if(cPDG>90000000&&baryn<5||aPDG<10000&&aPDG%10<3) + G4cout<<"G4Q::CHP:^^^cPDG="<0"<0 && corFlag) // *** CORRECTION *** + { + G4QHadron* theLast = theQHadrons[nOfOUT-1]; + if(!(theLast->GetNFragments()) && theLast->GetPDGCode()!=22) // Not decayed hadron && not gamma + { + G4LorentzVector hadr4M=theLast->Get4Momentum(); + G4double hadrMa=hadr4M.m(); // Mass of the Last hadron (==GSMass) + G4LorentzVector tmpTLV=reTLV+hadr4M; // Tot (ResidNucl+LastHadron) 4-Mom +#ifdef pdebug + G4cout<<"G4Q::CheckGS:YES,tLV="<rSM+hM="<resSMa+hadrMa) // resMa contains 2 Hadrons: resQ and Environ + { + if(resEMa) // => "The not vacuum Environment exists" case + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon + if(!G4QHadron(tmpTLV).DecayIn3(hadr4M,quas4M,enva4M)) + { + G4cerr<<"***G4Quasm::CheckGS: Decay in Fragm+ResQ+ResEnv did not succeeded"<Set4Momentum(quas4M); // @@ + FillHadronVector(quasH); // Fill ResidQuasm Hadron (delete equivalent) + theLast->Set4Momentum(hadr4M); + } + } + else // => "The Environ is vacuum" case (DecayIn2) + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon + G4QHadron* quasH = new G4QHadron(valQ, quas4M); + if(!G4QHadron(tmpTLV).DecayIn2(hadr4M,quas4M)) + { + delete quasH; // Delete "new Quasmon Hadron" + G4cerr<<"***G4Quasm::CheckGS: Decay in Fragm+ResQ did not succeeded"<Set4Momentum(hadr4M); + quasH->Set4Momentum(quas4M); + FillHadronVector(quasH); // Fill ResidQuasmHadron (delete equivalent) + } + } + } + else // "CORRECTION" !!!! + { + if(nOfOUT>1 && corFlag) + { + G4QHadron* thePrev = theQHadrons[nOfOUT-2]; // Get pointer to prev-before-last hadron + if(thePrev->GetNFragments()||thePrev->GetPDGCode()==22) return false; // Decayed or gamma + G4LorentzVector prev4M=thePrev->Get4Momentum(); // 4-mom of the Previous but Last Hadron + G4double prevMa=prev4M.m(); // Mass of previous hadron (==GSMass) + tmpTLV+=prev4M; // Increment Total 4-Mom of TotalResidNucl + G4QContent totQC=valQ+envaQC; // Quark Cont of the ResidNucl=ResidQ+Env + G4int totPDG=totQC.GetSPDGCode(); // PDG Code of Total Residual Nucleus + G4double totQMa=G4QPDGCode(totPDG).GetMass(); // GS Mass of the Residual Nucleus + G4double totNMa=tmpTLV.m(); // Real Mass of the Total Residual nucleus +#ifdef pdebug + G4cout<<"G4Q::CheckGS:NO, 4M/M="<r+p+l="<totQMa+hadrMa+prevMa) + { + G4LorentzVector nuc4M = G4LorentzVector(0.,0.,0.,totQMa); // 4-Mom of ResidNucl at rest + if(!G4QHadron(tmpTLV).DecayIn3(hadr4M,prev4M,nuc4M)) + { + G4cerr<<"***G4Quasm::CheckGS:DecayIn3 ResidNuc+LastH+PrevH did not succeeded"<Set4Momentum(hadr4M); + thePrev->Set4Momentum(prev4M); +#ifdef pdebug + G4cout<<"G4Q::CheckGS: Yes, Check D4M="<GetQC(); + G4int resLPDG =tmpLNQ.GetSPDGCode(); + G4double resLastM=G4QPDGCode(resLPDG).GetMass(); // GSMass of ResidNucl for the LastH + G4QContent tmpPNQ=totQC+theLast->GetQC(); + G4int resPPDG =tmpPNQ.GetSPDGCode(); + G4double resPrevM=G4QPDGCode(resPPDG).GetMass(); // GSMass of ResidNucl for the PrevH + //////G4bool which = true; // The LastH is absorbed, PrevH is radiated +#ifdef pdebug + G4cout<<"G4Quasm::CheckGS: NO, tM="< rp+l="< rl+p=" + <resLastM+hadrMa) // "Just exclude the Last" case + { + theQHadrons.pop_back(); // the LastH is excluded from OUTPUT HV + theQHadrons.pop_back(); // the PrevH is excluded from OUTPUT HV + theQHadrons.push_back(theLast); // LastH substitute Prev H in OUTPUT HV + G4QHadron* destrP=thePrev; // destruction Pointer for the QHadron + delete destrP; // the Last QHadron is destructed + thePrev=theLast; + resPPDG=resLPDG; + resPrevM=resLastM; + prev4M = hadr4M; + } + else if (totNMa>resPrevM+prevMa) // "Just exclude the Last" case + { + theQHadrons.pop_back(); + delete theLast; + } + else return false; + //return false; // @@@@@@@@@@@@@@@@@@@@@ temporary + G4LorentzVector nuc4M = G4LorentzVector(0.,0.,0.,resPrevM);// 4-M of ResidNucl to PrevH + if(!G4QHadron(tmpTLV).DecayIn2(prev4M,nuc4M)) + { + G4cerr<<"***G4Quasm::CheckGS:DecayIn2 (ResNucl+LastH)+PrevH didn't succeeded"<Set4Momentum(prev4M); +#ifdef pdebug + G4cout<<"G4Q::CheckGS:Yes, Check D4M="<GetQPDG(); + G4int thePDG = theQPDG.GetPDGCode(); // Get the PDG code of decaying hadron + G4int pap = 0; // --- particle + if(thePDG<0) pap = 1; // --- anti-particle + G4LorentzVector t = qHadron->Get4Momentum(); // Get 4-momentum of decaying hadron + G4double m = t.m(); // Get the mass value of decaying Hadron + // --- Randomize a channel of decay + G4QDecayChanVector decV = theWorld.GetQParticle(theQPDG)->GetDecayVector(); + G4int nChan = decV.size(); +#ifdef tdebug + G4cout<<"G4Quasmon::DecayOutHadron: PDG="<1) + { + G4double rnd = G4UniformRand(); // Random value to select a Decay Channel + for(i=0; iGetPDGCode() + <<","<GetPDGCode(); + if(nPart>2) G4cout<<","<GetPDGCode(); + G4cout<3) + { + G4cerr<<"***G4Q::DecayOutH: n="<>>>>"<GetPDGCode(); + G4int sPDG=cV[1]->GetPDGCode(); + if(fPDG!=22 && sPDG!=22 || abs(thePDG)%10>2 || DFlag) + { + if(cV[0]->GetWidth()==0.) + { // Randomize only the second Hardon or none + fHadr = new G4QHadron(cV[0]->GetPDGCode()); // the First Hadron is created *1* + if(cV[1]->GetWidth()==0.)sHadr = new G4QHadron(sPDG);// the Second Hadron is created *2* + else + { + G4QParticle* sPart=theWorld.GetQParticle(cV[1]);// Particle for the Second Hadron + G4double sdm = m - fHadr->GetMass(); // MaxMassLimit for the 2-nd Hadron + sHadr = new G4QHadron(sPart,sdm); // the Second Hadron is created *2* + if(sPDG<0) sHadr->MakeAntiHadron(); + } + } + else + { // Randomize masses of both Hadrons + G4QParticle* sPart=theWorld.GetQParticle(cV[1]);// Particle for the Second Hadron + G4double mim = sPart->MinMassOfFragm(); // MinMassLimit for the Second Hadron + G4double fdm = m - mim; // MaxMassLimit for the First Hadron + G4QParticle* fPart=theWorld.GetQParticle(cV[0]);// Particle for the First Hadron + fHadr = new G4QHadron(fPart,fdm); // the 1-st Hadron is initialized *1* + if(fPDG<0) fHadr->MakeAntiHadron(); + G4double fm=fHadr->GetMass(); // Mass of the first hadron + G4double sdm = m - fm; // MaxMassLimit for the Second Hadron + sHadr = new G4QHadron(sPart,sdm); // the 2-nd Hadron is initialized *2* + if(sPDG<0) sHadr->MakeAntiHadron(); +#ifdef tdebug + G4cout<<"G4Q::DOH:M="<SetNFragments(2); + //theQHadrons.push_back(qHadron); // Fill with NFr=2 (delete equivalent) + // Instead + delete qHadron; + // + fHadr->Set4Momentum(f4Mom); // Put the randomized 4Mom to 1-st Hadron + FillHadronVector(fHadr); // Fill 1st Hadron (delete equivalent) + sHadr->Set4Momentum(s4Mom); // Put the randomized 4Mom to 2-nd Hadron + FillHadronVector(sHadr); // Fill 2nd Hadron (delete equivalent) + } + } + else + { + if(thePDG==89999003||thePDG==90002999) G4cerr<<"***(1)***G4Q::DOH:8999003/90002999"<GetPDGCode(); + G4int sPDG=cV[1]->GetPDGCode(); + G4int tPDG=cV[2]->GetPDGCode(); + if(cV[0]->GetWidth()==0.) // Don't randomize the First Hardon + { + fHadr = new G4QHadron(fPDG); // the First Hadron is created *1* + if(cV[1]->GetWidth()==0.) + { + sHadr = new G4QHadron(sPDG); // the Second Hadron is created *2* + if(cV[2]->GetWidth()==0.)tHadr = new G4QHadron(tPDG);//the Third Hadron is created *3* + else + { + G4QParticle* tPart=theWorld.GetQParticle(cV[2]); // Particle for the 3-rd Hadron + G4double tdm = m-fHadr->GetMass()-sHadr->GetMass();// MaxMassLimit for the 2d Hadron + tHadr = new G4QHadron(tPart,tdm); // the 3-rd Hadron is created *3* + if(tPDG<0) tHadr->MakeAntiHadron(); + } + } + else // Randomize 2nd & 3rd Hadrons + { + m-=fHadr->GetMass(); // Reduce the residual MaxMassLimit + G4QParticle* tPart=theWorld.GetQParticle(cV[2]);// Particle for the 3-rd Hadron + G4double mim = tPart->MinMassOfFragm(); // MinMassLimit for the 3rd Hadron + G4double sdm = m - mim; // MaxMassLimit for the 2nd Hadron + G4QParticle* sPart=theWorld.GetQParticle(cV[1]);// Particle for the 2-nd Hadron + sHadr = new G4QHadron(sPart,sdm); // the Second Hadron is created *2* + if(sPDG<0) sHadr->MakeAntiHadron(); + G4double tdm = m - sHadr->GetMass(); // MaxMassLimit for the 3-rd Hadron + tHadr = new G4QHadron(tPart,tdm); // the Third Hadron is created *3* + if(tPDG<0) tHadr->MakeAntiHadron(); + } + } + else // Randomize masses of all three Hadrons + { + G4QParticle* sPart=theWorld.GetQParticle(cV[1]); // Particle for the Second Hadron + G4double smim = sPart->MinMassOfFragm(); // MinMassLimit for the Second Hadron + G4QParticle* tPart=theWorld.GetQParticle(cV[2]); // Particle for the Third Hadron + G4double tmim = tPart->MinMassOfFragm(); // MinMassLimit for the Third Hadron + G4double fdm = m - smim - tmim; // MaxMassLimit for the First Hadron + G4QParticle* fPart=theWorld.GetQParticle(cV[0]); // Particle for the First Hadron + fHadr = new G4QHadron(fPart,fdm); // the First Hadron is created *1* + if(fPDG<0) fHadr->MakeAntiHadron(); + m-=fHadr->GetMass(); // Reduce the residual MaxMassLimit ! + G4double sdm = m - tmim; // MaxMassLimit for the Second Hadron + sHadr = new G4QHadron(sPart,sdm); // the Second Hadron is created *2* + if(sPDG<0) sHadr->MakeAntiHadron(); + G4double tdm = m - sHadr->GetMass(); // MaxMassLimit for the Third Hadron + tHadr = new G4QHadron(tPart,tdm); // the Third Hadron is created *3* + if(tPDG<0) tHadr->MakeAntiHadron(); + } +#ifdef tdebug + G4cout<<"G4Quasmon::DecayOutHadron:3Dec. m1="<GetMass()<<",m2="<GetMass() + <<",m3="<GetMass()<MakeAntiHadron(); + sHadr->MakeAntiHadron(); + tHadr->MakeAntiHadron(); + } + G4LorentzVector f4Mom = fHadr->Get4Momentum(); // Get 4-mom of the First Hadron (mass) + G4LorentzVector s4Mom = sHadr->Get4Momentum(); // Get 4-mom of the Second Hadron (mass) + G4LorentzVector t4Mom = tHadr->Get4Momentum(); // Get 4-mom of the Third Hadron (mass) + if(!qHadron->DecayIn3(f4Mom,s4Mom,t4Mom)) + { + delete fHadr; // Delete "new fHadr" + delete sHadr; // Delete "new sHadr" + delete tHadr; // Delete "new tHadr" + G4cerr<<"***G4Q::DecayOutHadron:in3, PDGC="<SetNFragments(3); + //theQHadrons.push_back(qHadron); // Fill with NFr=3 (delete equivalent) + // Instead + delete qHadron; + // + fHadr->Set4Momentum(f4Mom); // Put the randomized 4Mom to 1-st Hadron + FillHadronVector(fHadr); // Fill 1st Hadron (delete equivalent) + sHadr->Set4Momentum(s4Mom); // Put the randomized 4Mom to 2-nd Hadron + FillHadronVector(sHadr); // Fill 2nd Hadron (delete equivalent) + tHadr->Set4Momentum(t4Mom); // Put the randomized 4Mom to 3-rd Hadron + FillHadronVector(tHadr); // Fill 3rd Hadron (delete equivalent) + } + } + } + else + { +#ifdef pdebug + G4cout<<"G4Quasmon::DecayOutHadron: Fill PDG= "<>>>"<Initialize(aTrack); + aResult->SetStatusChange(fStopAndKill); + } + //projectile properties needed in constructor of quasmon + G4LorentzVector proj4Mom; + proj4Mom = aTrack.GetDynamicParticle()->Get4Momentum(); + G4int projectilePDGCode = aTrack.GetDynamicParticle() + ->GetDefinition() + ->GetPDGEncoding(); + + //target properties needed in constructor of quasmon + G4int targetZ = G4int(aTargetNucleus.GetZ()+0.5); + G4int targetA = G4int(aTargetNucleus.GetN()+0.5); + G4int targetPDGCode = 90000000 + 1000*targetZ + (targetA-targetZ); + // NOT NECESSARY ______________ + G4double targetMass = G4ParticleTable::GetParticleTable()->GetIonTable() + ->GetIonMass(targetZ, targetA); + G4LorentzVector targ4Mom(0.,0.,0.,targetMass); + // END OF NOT NECESSARY^^^^^^^^ + + G4int nop = 164; // nuclear clusters up to A=21 + G4double fractionOfSingleQuasiFreeNucleons = 0.4; + G4double fractionOfPairedQuasiFreeNucleons = 0.0; + if(targetA>27) fractionOfPairedQuasiFreeNucleons = 0.04; + G4double clusteringCoefficient = 4.; + G4double temperature = 180.; + G4double halfTheStrangenessOfSee = 0.1; // = s/d = s/u + G4double etaToEtaPrime = 0.3; + + // construct and fragment the quasmon + G4QCHIPSWorld aWorld(nop); // Create CHIPS World of nop particles + G4QNucleus::SetParameters(fractionOfSingleQuasiFreeNucleons, + fractionOfPairedQuasiFreeNucleons, + clusteringCoefficient); + G4Quasmon::SetParameters(temperature, + halfTheStrangenessOfSee, + etaToEtaPrime); +// G4cout << "Input info "<< projectilePDGCode << " " +// << targetPDGCode <<" " +// << 1./MeV*proj4Mom<<" " +// << 1./MeV*targ4Mom << " " +// << nop << G4endl; + G4QHadronVector projHV; + G4QHadron* iH = new G4QHadron(projectilePDGCode, 1./MeV*proj4Mom); + projHV.push_back(iH); + G4QEnvironment* pan= new G4QEnvironment(projHV, targetPDGCode); + G4std::for_each(projHV.begin(), projHV.end(), DeleteQHadron()); + projHV.clear(); + //G4Quasmon* pan= new G4Quasmon(projectilePDGCode, targetPDGCode, 1./MeV*proj4Mom, 1./MeV*targ4Mom, nop); + G4QHadronVector* output = pan->Fragment(); + delete pan; + + // Fill the particle change. + aResult->SetNumberOfSecondaries(output->size()); + G4DynamicParticle * theSec; +#ifdef CHIPSdebug + G4cout << "G4ChiralInvariantPhaseSpace: NEW EVENT #ofHadrons="<size()<size(); particle++) + { + if(output->operator[](particle)->GetNFragments() != 0) + { + delete output->operator[](particle); + continue; + } + theSec = new G4DynamicParticle; + G4int pdgCode = output->operator[](particle)->GetPDGCode(); +#ifdef CHIPSdebug + G4cout << "G4ChiralInvariantPhaseSpace: h#"<GetDefinition(); + if((aD != G4Electron::ElectronDefinition()) && (aD != G4Positron::PositronDefinition())) + { + G4Exception("Called G4ElectroNuclearReaction for particle other than electron or positron"); + } + + theResult.Initialize(aTrack); + + const G4ElementTable* aTab = G4Element::GetElementTable(); + G4Element * anElement = 0; + G4int aZ = static_cast(aTargetNucleus.GetZ()+.1); + for(size_t ii=0; iisize(); ii++) + { + if ( abs((*aTab)[ii]->GetZ()-aZ) < .1) + { + anElement = (*aTab)[ii]; + break; + } + } + if(0==anElement) + { + G4cout << "G4ElectroNuclearReaction::ApplyYourself - trying to react on an element"<3.*GeV) + { + xSec = theData.GetCrossSection(aTrack.GetDynamicParticle(), anElement); + photonEnergy = theData.GetEffectivePhotonEnergy(); + } + if(aTrack.GetDynamicParticle()->GetKineticEnergy() - photonEnergy < 0) + { + G4Exception("G4ElectroNuclearReaction: photonEnergy above electron energy"); + } + theResult.SetEnergyChange(aTrack.GetDynamicParticle()->GetKineticEnergy() - photonEnergy); + + G4ThreeVector photonDirection = aTrack.GetMomentumDirection(); + G4DynamicParticle localGamma(G4Gamma::GammaDefinition(), photonDirection, photonEnergy); + G4ThreeVector position(0,0,0); + G4Track localTrack(&localGamma, 0., position); + G4VParticleChange * result = theModel.ApplyYourself(localTrack, aTargetNucleus, &theResult); + return result; +} + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4GammaNuclearReaction.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4GammaNuclearReaction.hh new file mode 100644 index 0000000000..24b3750b85 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4GammaNuclearReaction.hh @@ -0,0 +1,55 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#ifndef G4GammaNuclearReaction_h +#define G4GammaNuclearReaction_h + +#include "globals.hh" +#include "G4HadronicInteraction.hh" +#include "G4ChiralInvariantPhaseSpace.hh" +#include "G4Gamma.hh" + +class G4GammaNuclearReaction : public G4HadronicInteraction +{ + public: + virtual ~G4GammaNuclearReaction() + { + } + + G4VParticleChange * ApplyYourself(const G4Track& aTrack, G4Nucleus& aTargetNucleus); + + private: + G4ChiralInvariantPhaseSpace theModel; +}; + +inline +G4VParticleChange * G4GammaNuclearReaction:: +ApplyYourself(const G4Track& aTrack, G4Nucleus& aTargetNucleus) +{ + if(aTrack.GetDynamicParticle()->GetDefinition() != G4Gamma::GammaDefinition()) + { + G4Exception("Called G4GammaNuclearReaction for particle other than gamma"); + } + return theModel.ApplyYourself(aTrack, aTargetNucleus); +} + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4PionMinusNuclearAtRestChips.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4PionMinusNuclearAtRestChips.hh new file mode 100644 index 0000000000..649c4c08c3 --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4PionMinusNuclearAtRestChips.hh @@ -0,0 +1,104 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#ifndef G4PionMinusNuclearAtRestChips_h +#define G4PionMinusNuclearAtRestChips_h + +#include "globals.hh" +#include "G4VRestProcess.hh" +#include "G4StopElementSelector.hh" +#include "G4PionMinus.hh" +#include "G4ChiralInvariantPhaseSpace.hh" + +class G4PionMinusNuclearAtRestChips : public G4VRestProcess +{ + private: + // hide assignment operator as private + G4PionMinusNuclearAtRestChips& operator=(const G4PionMinusNuclearAtRestChips &right); + G4PionMinusNuclearAtRestChips(const G4PionMinusNuclearAtRestChips& ); + + public: + + G4PionMinusNuclearAtRestChips(const G4String& processName ="PionMinusAnnihilationAtRest") + : G4VRestProcess (processName) {} + + ~G4PionMinusNuclearAtRestChips() {} + + G4bool IsApplicable(const G4ParticleDefinition& aParticle) + { + return ( &aParticle == G4PionMinus::PionMinusDefinition() ); + } + + // null physics table + void BuildPhysicsTable(const G4ParticleDefinition&){} + + G4double AtRestGetPhysicalInteractionLength(const G4Track&track, + G4ForceCondition*condition); + + // zero mean lifetime + G4double GetMeanLifeTime(const G4Track& aTrack, + G4ForceCondition* condition) {return 0.0;} + + G4VParticleChange* AtRestDoIt(const G4Track&, const G4Step&); + + private: + G4ChiralInvariantPhaseSpace theModel; + G4StopElementSelector theSelector; // Assume identical laws as for muons +}; + +inline +G4VParticleChange * G4PionMinusNuclearAtRestChips:: +AtRestDoIt(const G4Track& aTrack, const G4Step&aStep) +{ + if(aTrack.GetDynamicParticle()->GetDefinition() != G4PionMinus::PionMinus()) + { + G4Exception("Calling G4PionMinusNuclearAtRestChips with particle other than pi-!!!"); + } + + // Create target + G4Element * theTarget = theSelector.GetElement(aTrack.GetMaterial()); + G4Nucleus aTargetNucleus(theTarget->GetN() ,theTarget->GetZ()); + + // Call chips + return theModel.ApplyYourself(aTrack, aTargetNucleus); +} + +G4double G4PionMinusNuclearAtRestChips:: +AtRestGetPhysicalInteractionLength(const G4Track&track, + G4ForceCondition*condition) +{ + ResetNumberOfInteractionLengthLeft(); + *condition = NotForced; + currentInteractionLength = GetMeanLifeTime(track, condition); +#ifdef CHIPSdebug + if ((currentInteractionLength <0.0) || (verboseLevel>2)) + { + G4cout << "G4PionMinusNuclearAtRestChips::AtRestGetPhysicalInteractionLength "; + G4cout << "[ " << GetProcessName() << "]" <DumpInfo(); + G4cout << " in Material " << track.GetMaterial()->GetName() <GetDefinition() != G4PionMinus::PionMinusDefinition()) +// { +// G4Exception("Called G4PionMinusNuclearReaction for particle other than PionMinus"); +// } + return theModel.ApplyYourself(aTrack, aTargetNucleus); +} + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ProtonAntiProtonAtRestChips.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ProtonAntiProtonAtRestChips.hh new file mode 100644 index 0000000000..12d9f73acc --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ProtonAntiProtonAtRestChips.hh @@ -0,0 +1,117 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#ifndef G4ProtonAntiProtonAtRestChips_h +#define G4ProtonAntiProtonAtRestChips_h + +#include "globals.hh" +#include "G4VRestProcess.hh" +#include "G4ParticleTable.hh" +#include "G4Quasmon.hh" +#include "G4QHadronVector.hh" +#include "G4ParticleChange.hh" +#include "G4LorentzVector.hh" +#include "G4DynamicParticle.hh" +#include "G4IonTable.hh" +#include "G4Neutron.hh" +#include "G4StopElementSelector.hh" +#include "G4ChiralInvariantPhaseSpace.hh" + +class G4ProtonAntiProtonAtRestChips : public G4VRestProcess +{ + private: + // hide assignment operator as private + G4ProtonAntiProtonAtRestChips& operator=(const G4ProtonAntiProtonAtRestChips &right); + G4ProtonAntiProtonAtRestChips(const G4ProtonAntiProtonAtRestChips& ); + + public: + + G4ProtonAntiProtonAtRestChips(const G4String& processName ="AntiProtonAnnihilationAtRest") + : G4VRestProcess (processName) {} + + ~G4ProtonAntiProtonAtRestChips() {} + + G4bool IsApplicable(const G4ParticleDefinition& aParticle) + { + return ( &aParticle == G4AntiProton::AntiProtonDefinition() ); + } + + // null physics table + void BuildPhysicsTable(const G4ParticleDefinition&){} + + G4double AtRestGetPhysicalInteractionLength(const G4Track&track, + G4ForceCondition*condition); + + // zero mean lifetime + G4double GetMeanLifeTime(const G4Track& aTrack, + G4ForceCondition* condition) {return 0.0;} + + G4VParticleChange* AtRestDoIt(const G4Track&, const G4Step&); + + private: + G4ChiralInvariantPhaseSpace theModel; + G4StopElementSelector theSelector; // Assume identical laws as for muons +}; + +inline +G4VParticleChange * G4ProtonAntiProtonAtRestChips:: +AtRestDoIt(const G4Track& aTrack, const G4Step&aStep) +{ + // Create target + G4Element * theTarget = theSelector.GetElement(aTrack.GetMaterial()); + G4Nucleus aTargetNucleus(theTarget->GetN() ,theTarget->GetZ()); + + // Check model validity - note this will be a sub-branch in the ordinary stopping @@@@@@ + // in the long haul. @@@@@@ + if(aTrack.GetDynamicParticle()->GetDefinition() != G4AntiProton::AntiProton()) + { + G4Exception("Calling G4ProtonAntiProtonAtRestChips with particle other than p-bar!!!"); + } + if(aTargetNucleus.GetZ() != 1) + { + G4Exception("Calling G4ProtonAntiProtonAtRestChips for target other than Hydrogen!!!"); + } + + // Call chips + return theModel.ApplyYourself(aTrack, aTargetNucleus); +} + +G4double G4ProtonAntiProtonAtRestChips:: +AtRestGetPhysicalInteractionLength(const G4Track&track, + G4ForceCondition*condition) +{ + ResetNumberOfInteractionLengthLeft(); + *condition = NotForced; + currentInteractionLength = GetMeanLifeTime(track, condition); +#ifdef CHIPSdebug + if ((currentInteractionLength <0.0) || (verboseLevel>2)) + { + G4cout << "G4ProtonAntiProtonAtRestChips::AtRestGetPhysicalInteractionLength "; + G4cout << "[ " << GetProcessName() << "]" <DumpInfo(); + G4cout << " in Material " << track.GetMaterial()->GetName() <GetDefinition() != G4AntiProton::AntiProton()) + { + G4Exception("Calling G4ProtonAntiProtonReaction with particle other than p-bar!!!"); + } + if(aTargetNucleus.GetZ() != 1) + { + G4Exception("Calling G4ProtonAntiProtonReaction for target other than Hydrogen!!!"); + } + return theModel.ApplyYourself(aTrack, aTargetNucleus); +} + +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4StringChipsInterface.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4StringChipsInterface.hh new file mode 100644 index 0000000000..1d31614d6a --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4StringChipsInterface.hh @@ -0,0 +1,43 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#ifndef G4StringChipsInterface_h +#define G4StringChipsInterface_h + +#include "G4VIntraNuclearTransportModel.hh" +#include "G4ChiralInvariantPhaseSpace.hh" + +class G4StringChipsInterface : public G4VIntraNuclearTransportModel +{ + public: + G4StringChipsInterface(); + virtual G4VParticleChange* ApplyYourself(const G4Track& aTrack, + G4Nucleus& theNucleus); + + virtual G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, + G4V3DNucleus* theNucleus); + private: + + G4ChiralInvariantPhaseSpace theModel; + G4double theEnergyLossPerFermi; +}; +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4StringChipsParticleLevelInterface.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4StringChipsParticleLevelInterface.hh new file mode 100644 index 0000000000..4b0fe5197a --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4StringChipsParticleLevelInterface.hh @@ -0,0 +1,54 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#ifndef G4StringChipsParticleLevelInterface_h +#define G4StringChipsParticleLevelInterface_h + +#include "G4VIntraNuclearTransportModel.hh" +#include "G4ChiralInvariantPhaseSpace.hh" + +class G4StringChipsParticleLevelInterface : public G4VIntraNuclearTransportModel +{ + public: + G4StringChipsParticleLevelInterface(); + virtual G4VParticleChange* ApplyYourself(const G4Track& aTrack, + G4Nucleus& theNucleus); + + virtual G4ReactionProductVector* Propagate(G4KineticTrackVector* theSecondaries, + G4V3DNucleus* theNucleus); + private: + + G4ChiralInvariantPhaseSpace theModel; + G4double theEnergyLossPerFermi; + + G4double theInnerCoreDensityCut; + + G4double fractionOfSingleQuasiFreeNucleons; + G4double fractionOfPairedQuasiFreeNucleons; + G4double clusteringCoefficient; + G4double temperature; + G4double halfTheStrangenessOfSee; + G4double etaToEtaPrime; + G4double fusionToExchange; + G4int nop; +}; +#endif diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4StringChipsInterface.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4StringChipsInterface.cc new file mode 100644 index 0000000000..4c4e44793c --- /dev/null +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4StringChipsInterface.cc @@ -0,0 +1,419 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#include "G4StringChipsInterface.hh" +#include "globals.hh" +#include "G4Pair.hh" +#include "g4std/list" +#include "G4KineticTrackVector.hh" +#include "G4Nucleon.hh" +#include "G4LorentzRotation.hh" + +G4StringChipsInterface::G4StringChipsInterface() +{ +#ifdef CHIPSdebug + G4cout << "Please enter the energy loss per fermi in GeV"<> theEnergyLossPerFermi; +#endif + + theEnergyLossPerFermi *= GeV; + // theEnergyLossPerFermi = 1.*GeV; +} + +G4VParticleChange* G4StringChipsInterface:: +ApplyYourself(const G4Track& aTrack, G4Nucleus& theNucleus) +{ + return theModel.ApplyYourself(aTrack, theNucleus); +} + +G4ReactionProductVector* G4StringChipsInterface:: +Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus) +{ + // Protection for non physical conditions + + if(theSecondaries->size() == 1) + G4Exception("G4StringChipsInterface: Only one particle from String models!"); + + // Calculate the mean energy lost + G4Pair theImpact = theNucleus->RefetchImpactXandY(); + G4double impactX = theImpact.first; + G4double impactY = theImpact.second; + G4double inpactPar2 = impactX*impactX + impactY*impactY; + + G4double radius2 = theNucleus->GetNuclearRadius(5*perCent); + radius2 *= radius2; + G4double pathlength = 0; + if(radius2 - inpactPar2>0) pathlength = 2.*sqrt(radius2 - inpactPar2); + G4double theEnergyLostInFragmentation = theEnergyLossPerFermi*pathlength/fermi; + + // now select all particles in range + G4std::list > theSorted; + G4std::list >::iterator current; + for(unsigned int secondary = 0; secondarysize(); secondary++) + { + G4LorentzVector a4Mom = theSecondaries->operator[](secondary)->Get4Momentum(); + +#ifdef CHIPSdebug + G4cout <<"ALL STRING particles "<operator[](secondary)->GetDefinition()->GetPDGCharge()<<" " + << theSecondaries->operator[](secondary)->GetDefinition()->GetPDGEncoding()<<" " + << a4Mom < it; + it.first = toSort; + it.second = theSecondaries->operator[](secondary); + G4bool inserted = false; + for(current = theSorted.begin(); current!=theSorted.end(); current++) + { + if((*current).first > toSort) + { + theSorted.insert(current, it); + inserted = true; + break; + } + } + if(!inserted) + { + theSorted.push_front(it); + } + } + + G4LorentzVector proj4Mom(0.,0.,0.,0.); + // @@ Use the G4QContent class, which is exactly (nD,nU,nS,nAD,nAU,nAS) ! + // The G4QContent class is a basic clas in CHIPS (not PDG Code as in GEANT4), + // so in CHIPS on can has a hadronic obgect (Quasmon) with any Quark Content. + // As a simple extantion for the hadron (which is a special case for Hadron) + // there is a clas G4QChipolino, which is a Quasmon, which can decay in two + // hadrons. In future the three-hadron class can be added... + G4int nD = 0; + G4int nU = 0; + G4int nS = 0; + G4int nAD = 0; + G4int nAU = 0; + G4int nAS = 0; + G4std::list >::iterator firstEscaping = theSorted.begin(); + G4double runningEnergy = 0; + G4int particleCount = 0; + G4LorentzVector theLow = (*(theSorted.begin())).second->Get4Momentum(); + G4LorentzVector theHigh; + +#ifdef CHIPSdebug + G4cout << "CHIPS ENERGY LOST "<GetDefinition()->GetQuarkContent(3)!=0 || + (*current).second->GetDefinition()->GetAntiQuarkContent(3) !=0) + { + G4KineticTrack * aResult = (*current).second; + G4ParticleDefinition * pdef=aResult->GetDefinition(); + secondaries = NULL; + if ( pdef->GetPDGWidth() > 0 && pdef->GetPDGLifeTime() < 5E-17*s ) + { + secondaries = aResult->Decay(); + } + if ( secondaries == NULL ) + { + theSec = new G4ReactionProduct(aResult->GetDefinition()); + G4LorentzVector current4Mom = aResult->Get4Momentum(); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + } + else + { + for (unsigned int aSecondary=0; aSecondarysize(); aSecondary++) + { + theSec = new G4ReactionProduct(secondaries->operator[](aSecondary)->GetDefinition()); + G4LorentzVector current4Mom = secondaries->operator[](aSecondary)->Get4Momentum(); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + } + G4std::for_each(secondaries->begin(), secondaries->end(), DeleteKineticTrack()); + delete secondaries; + } + continue; + } + runningEnergy += (*current).second->Get4Momentum().t(); + if(runningEnergy > theEnergyLostInFragmentation) break; + +#ifdef CHIPSdebug + G4cout <<"ABSORBED STRING particles "<second->GetDefinition()->GetPDGCharge()<<" " + << current->second->GetDefinition()->GetPDGEncoding()<<" " + << current->second->Get4Momentum() <Get4Momentum(); + proj4Mom += (*current).second->Get4Momentum(); + +#ifdef CHIPSdebug + G4cout << "sorted rapidities "<second->Get4Momentum().rapidity()< G4QContent class) + nD += (*current).second->GetDefinition()->GetQuarkContent(1); + nU += (*current).second->GetDefinition()->GetQuarkContent(2); + nS += (*current).second->GetDefinition()->GetQuarkContent(3); + nAD += (*current).second->GetDefinition()->GetAntiQuarkContent(1); + nAU += (*current).second->GetDefinition()->GetAntiQuarkContent(2); + nAS += (*current).second->GetDefinition()->GetAntiQuarkContent(3); + } + // construct G4QContent + +#ifdef CHIPSdebug + G4cout << "Quark content: d="<StartLoop(); + G4Nucleon * aNucleon; + G4int resA = 0; + G4int resZ = 0; + G4ThreeVector hitMomentum(0,0,0); + G4double hitMass = 0; + G4int hitCount = 0; + while((aNucleon = theNucleus->GetNextNucleon())) + { + if(!aNucleon->AreYouHit()) + { + resA++; + resZ+=G4int (aNucleon->GetDefinition()->GetPDGCharge()); + } + else + { + hitMomentum += aNucleon->GetMomentum().vect(); + hitMass += aNucleon->GetMomentum().m(); + hitCount ++; + } + } + G4int targetPDGCode = 90000000 + 1000*resZ + (resA-resZ); + G4double targetMass = theNucleus->GetMass(); + targetMass -= hitMass; + G4double targetEnergy = sqrt(hitMomentum.mag2()+targetMass*targetMass); + // !! @@ Target should be at rest: hitMomentum=(0,0,0) @@ !! M.K. + G4LorentzVector targ4Mom(-1.*hitMomentum, targetEnergy); + + // construct the quasmon + G4int nop = 223; // ?????? + G4double fractionOfSingleQuasiFreeNucleons = 0.15; + G4double fractionOfPairedQuasiFreeNucleons = 0.01; + G4double clusteringCoefficient = 5.; + G4double temperature = 180.; + G4double halfTheStrangenessOfSee = 0.1; // = s/d = s/u + G4double etaToEtaPrime = 0.3; + + G4QNucleus::SetParameters(fractionOfSingleQuasiFreeNucleons, + fractionOfPairedQuasiFreeNucleons, + clusteringCoefficient); + G4Quasmon::SetParameters(temperature, + halfTheStrangenessOfSee, + etaToEtaPrime); + +#ifdef CHIPSdebug + G4cout << "G4QNucleus parameters "<< fractionOfSingleQuasiFreeNucleons << " " + << fractionOfPairedQuasiFreeNucleons << " "<< clusteringCoefficient << G4endl; + G4cout << "G4Quasmon parameters "<< temperature << " "<< halfTheStrangenessOfSee << " " + <Fragment(); + delete pan; + } + else + { + output = new G4QHadronVector; + } + + // Fill the result. +#ifdef CHIPSdebug + G4cout << "NEXT EVENT"<GetDefinition(); + secondaries = NULL; + if ( pdef->GetPDGWidth() > 0 && pdef->GetPDGLifeTime() < 5E-17*s ) + { + secondaries = aResult->Decay(); + } + if ( secondaries == NULL ) + { + theSec = new G4ReactionProduct(aResult->GetDefinition()); + G4LorentzVector current4Mom = aResult->Get4Momentum(); + current4Mom = toLab*current4Mom; + current4Mom.boost(targ4Mom.boostVector()); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + } + else + { + for (unsigned int aSecondary=0; aSecondarysize(); aSecondary++) + { + theSec = new G4ReactionProduct(secondaries->operator[](aSecondary)->GetDefinition()); + G4LorentzVector current4Mom = secondaries->operator[](aSecondary)->Get4Momentum(); + current4Mom = toLab*current4Mom; + current4Mom.boost(targ4Mom.boostVector()); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + } + G4std::for_each(secondaries->begin(), secondaries->end(), DeleteKineticTrack()); + delete secondaries; + } + } + G4std::for_each(theSecondaries->begin(), theSecondaries->end(), DeleteKineticTrack()); + delete theSecondaries; + + // now add the quasmon output +#ifdef CHIPSdebug + G4cout << "Number of particles from string"<size()<size()<size(); particle++) + { + if(output->operator[](particle)->GetNFragments() != 0) + { + delete output->operator[](particle); + continue; + } + theSec = new G4ReactionProduct; + G4int pdgCode = output->operator[](particle)->GetPDGCode(); + G4ParticleDefinition * theDefinition; + // Note that I still have to take care of strange nuclei + // For this I need the mass calculation, and a changed interface + // for ion-table ==> work for Hisaya @@@@@@@ + // Then I can sort out the pdgCode. I also need a decau process + // for strange nuclei; may be another chips interface + if(pdgCode>90000000) + { + G4int aZ = (pdgCode-90000000)/1000; + if (aZ>1000) aZ=aZ%1000; // patch for strange nuclei, to be repaired @@@@ + G4int anN = pdgCode-90000000-1000*aZ; + if(anN>1000) anN=anN%1000; // patch for strange nuclei, to be repaired @@@@ + if(pdgCode==91000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==92000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==93000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==94000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==95000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==96000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==97000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==98000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(aZ == 0 && anN == 1) theDefinition = G4Neutron::Neutron(); + else theDefinition = G4ParticleTable::GetParticleTable()->FindIon(aZ,anN+aZ,0,aZ); + } + else + { + theDefinition = G4ParticleTable::GetParticleTable()->FindParticle(output->operator[](particle)->GetPDGCode()); + } +#ifdef CHIPSdebug + G4cout << "Particle code produced = "<< pdgCode <operator[](particle)->Get4Momentum(); + current4Mom = toLab*current4Mom; + current4Mom.boost(targ4Mom.boostVector()); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + +#ifdef CHIPSdebug + G4cout <<"CHIPS particles "<GetPDGCharge()<<" " + << theDefinition->GetPDGEncoding()<<" " + << current4Mom <operator[](particle); + } + delete output; +#ifdef CHIPSdebug + G4cout << "Number of particles"<size()<> theEnergyLossPerFermi; + theEnergyLossPerFermi *= GeV; + G4cout << "Please enter nop"<> nop; + G4cout << "Please enter the fractionOfSingleQuasiFreeNucleons"<> fractionOfSingleQuasiFreeNucleons; + G4cout << "Please enter the fractionOfPairedQuasiFreeNucleons"<> fractionOfPairedQuasiFreeNucleons; + G4cout << "Please enter the clusteringCoefficient"<> clusteringCoefficient; + G4cout << "Please enter the temperature"<> temperature; + G4cout << "Please enter halfTheStrangenessOfSee"<> halfTheStrangenessOfSee; + G4cout << "Please enter the etaToEtaPrime"<> etaToEtaPrime; + G4cout << "Please enter the fusionToExchange"<> fusionToExchange; + G4cout << "Please enter the cut-off for calculating the nuclear radius in percent"<> theInnerCoreDensityCut; + } +} + +G4VParticleChange* G4StringChipsParticleLevelInterface:: +ApplyYourself(const G4Track& aTrack, G4Nucleus& theNucleus) +{ + return theModel.ApplyYourself(aTrack, theNucleus); +} + +G4ReactionProductVector* G4StringChipsParticleLevelInterface:: +Propagate(G4KineticTrackVector* theSecondaries, G4V3DNucleus* theNucleus) +{ + // Protection for non physical conditions + + if(theSecondaries->size() == 1) + { + G4ReactionProductVector * theFastResult = new G4ReactionProductVector; + G4ReactionProduct * theFastSec; + theFastSec = new G4ReactionProduct((*theSecondaries)[0]->GetDefinition()); + G4LorentzVector current4Mom = (*theSecondaries)[0]->Get4Momentum(); + theFastSec->SetTotalEnergy(current4Mom.t()); + theFastSec->SetMomentum(current4Mom.vect()); + theFastResult->push_back(theFastSec); + return theFastResult; +// G4Exception("G4StringChipsParticleLevelInterface: Only one particle from String models!"); + } + + // target properties needed in constructor of quasmon, and for boosting to + // target rest frame + // remove all hit nucleons to get Target code + theNucleus->StartLoop(); + G4Nucleon * aNucleon; + G4int resA = 0; + G4int resZ = 0; + G4ThreeVector hitMomentum(0,0,0); + G4double hitMass = 0; + unsigned int hitCount = 0; + while((aNucleon = theNucleus->GetNextNucleon())) + { + if(!aNucleon->AreYouHit()) + { + resA++; + resZ+=G4int (aNucleon->GetDefinition()->GetPDGCharge()); + } + else + { + hitMomentum += aNucleon->GetMomentum().vect(); + hitMass += aNucleon->GetMomentum().m(); + hitCount ++; + } + } + G4int targetPDGCode = 90000000 + 1000*resZ + (resA-resZ); + G4double targetMass = theNucleus->GetMass(); + targetMass -= hitMass; + G4double targetEnergy = sqrt(hitMomentum.mag2()+targetMass*targetMass); + // !! @@ Target should be at rest: hitMomentum=(0,0,0) @@ !! M.K. + G4LorentzVector targ4Mom(-1.*hitMomentum, targetEnergy); + + // Calculate the mean energy lost + G4Pair theImpact = theNucleus->RefetchImpactXandY(); + G4double impactX = theImpact.first; + G4double impactY = theImpact.second; + G4double inpactPar2 = impactX*impactX + impactY*impactY; + + G4double radius2 = theNucleus->GetNuclearRadius(theInnerCoreDensityCut*perCent); + radius2 *= radius2; + G4double pathlength = 0; + if(radius2 - inpactPar2>0) pathlength = 2.*sqrt(radius2 - inpactPar2); + G4double theEnergyLostInFragmentation = theEnergyLossPerFermi*pathlength/fermi; + + // now select all particles in range + G4std::list > theSorted; + G4std::list >::iterator current; + for(unsigned int secondary = 0; secondarysize(); secondary++) + { + G4LorentzVector a4Mom = theSecondaries->operator[](secondary)->Get4Momentum(); +#ifdef CHIPSdebug + G4cout <<"ALL STRING particles "<operator[](secondary)->GetDefinition()->GetPDGCharge()<<" " + << theSecondaries->operator[](secondary)->GetDefinition()->GetPDGEncoding()<<" " + << a4Mom < it; + it.first = toSort; + it.second = theSecondaries->operator[](secondary); + G4bool inserted = false; + for(current = theSorted.begin(); current!=theSorted.end(); current++) + { + if((*current).first > toSort) + { + theSorted.insert(current, it); + inserted = true; + break; + } + } + if(!inserted) + { + theSorted.push_back(it); + } + } + + G4LorentzVector proj4Mom(0.,0.,0.,0.); + G4int nD = 0; + G4int nU = 0; + G4int nS = 0; + G4int nAD = 0; + G4int nAU = 0; + G4int nAS = 0; + G4std::list >::iterator firstEscaping = theSorted.begin(); + G4double runningEnergy = 0; + G4int particleCount = 0; + G4LorentzVector theLow = (*(theSorted.begin())).second->Get4Momentum(); + G4LorentzVector theHigh; + +#ifdef CHIPSdebug + G4cout << "CHIPS ENERGY LOST "< theContents; + G4std::vector theMomenta; + G4ReactionProductVector * theResult = new G4ReactionProductVector; + G4ReactionProduct * theSec; + G4KineticTrackVector * secondaries; + + for(current = theSorted.begin(); current!=theSorted.end(); current++) + { + firstEscaping = current; + if((*current).second->GetDefinition()->GetQuarkContent(3)!=0 || + (*current).second->GetDefinition()->GetAntiQuarkContent(3) !=0) + { + G4KineticTrack * aResult = (*current).second; + G4ParticleDefinition * pdef=aResult->GetDefinition(); + secondaries = NULL; + if ( pdef->GetPDGWidth() > 0 && pdef->GetPDGLifeTime() < 5E-17*s ) + { + secondaries = aResult->Decay(); + } + if ( secondaries == NULL ) + { + theSec = new G4ReactionProduct(aResult->GetDefinition()); + G4LorentzVector current4Mom = aResult->Get4Momentum(); + current4Mom.boost(targ4Mom.boostVector()); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + } + else + { + for (unsigned int aSecondary=0; aSecondarysize(); aSecondary++) + { + theSec = new G4ReactionProduct(secondaries->operator[](aSecondary)->GetDefinition()); + G4LorentzVector current4Mom = secondaries->operator[](aSecondary)->Get4Momentum(); + current4Mom.boost(targ4Mom.boostVector()); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + } + G4std::for_each(secondaries->begin(), secondaries->end(), DeleteKineticTrack()); + delete secondaries; + } + } + + runningEnergy += (*current).second->Get4Momentum().t(); + if((*current).second->GetDefinition() == G4Proton::Proton()) + runningEnergy-=G4Proton::Proton()->GetPDGMass(); + if((*current).second->GetDefinition() == G4Neutron::Neutron()) + runningEnergy-=G4Neutron::Neutron()->GetPDGMass(); + +#ifdef CHIPSdebug + G4cout << "sorted rapidities "<<(*current).second->Get4Momentum().rapidity()< theEnergyLostInFragmentation) break; + +#ifdef CHIPSdebug + G4cout <<"ABSORBED STRING particles "<<(*current).second->GetDefinition()->GetPDGCharge()<<" " + << (*current).second->GetDefinition()->GetPDGEncoding()<<" " + << (*current).second->Get4Momentum() <Get4Momentum(); + proj4Mom = (*current).second->Get4Momentum(); + proj4Mom.boost(-1.*targ4Mom.boostVector()); + nD = (*current).second->GetDefinition()->GetQuarkContent(1); + nU = (*current).second->GetDefinition()->GetQuarkContent(2); + nS = (*current).second->GetDefinition()->GetQuarkContent(3); + nAD = (*current).second->GetDefinition()->GetAntiQuarkContent(1); + nAU = (*current).second->GetDefinition()->GetAntiQuarkContent(2); + nAS = (*current).second->GetDefinition()->GetAntiQuarkContent(3); + G4QContent aProjectile(nD, nU, nS, nAD, nAU, nAS); + +#ifdef CHIPSdebug_1 + G4cout << G4endl; + G4cout << "Quark content: d="<GetDefinition(); + secondaries = NULL; + if ( pdef->GetPDGWidth() > 0 && pdef->GetPDGLifeTime() < 5E-17*s ) + { + secondaries = aResult->Decay(); + } + if ( secondaries == NULL ) + { + theSec = new G4ReactionProduct(aResult->GetDefinition()); + G4LorentzVector current4Mom = aResult->Get4Momentum(); + current4Mom.boost(targ4Mom.boostVector()); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + } + else + { + for (unsigned int aSecondary=0; aSecondarysize(); aSecondary++) + { + theSec = new G4ReactionProduct(secondaries->operator[](aSecondary)->GetDefinition()); + G4LorentzVector current4Mom = secondaries->operator[](aSecondary)->Get4Momentum(); + current4Mom.boost(targ4Mom.boostVector()); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + } + G4std::for_each(secondaries->begin(), secondaries->end(), DeleteKineticTrack()); + delete secondaries; + } + } + G4std::for_each(theSecondaries->begin(), theSecondaries->end(), DeleteKineticTrack()); + delete theSecondaries; + + // now add the quasmon output + G4int maxParticle=output->size(); +#ifdef CHIPSdebug + G4cout << "Number of particles from string"<size()<operator[](particle)->GetNFragments() != 0) + { + delete output->operator[](particle); + continue; + } + G4int pdgCode = output->operator[](particle)->GetPDGCode(); + + +#ifdef CHIPSdebug + G4cerr << "PDG code of chips particle = "< work for Hisaya @@@@@@@ + // Then I can sort out the pdgCode. I also need a decau process + // for strange nuclei; may be another chips interface + if(pdgCode>90000000) + { + G4int aZ = (pdgCode-90000000)/1000; + if (aZ>1000) aZ=aZ%1000; // patch for strange nuclei, to be repaired @@@@ + G4int anN = pdgCode-90000000-1000*aZ; + if(anN>1000) anN=anN%1000; // patch for strange nuclei, to be repaired @@@@ + if(pdgCode==91000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==92000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==93000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==94000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==95000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==96000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==97000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(pdgCode==98000000) theDefinition = G4Lambda::LambdaDefinition(); + else if(aZ == 0 && anN == 1) theDefinition = G4Neutron::Neutron(); + else theDefinition = G4ParticleTable::GetParticleTable()->FindIon(aZ,anN+aZ,0,aZ); + } + else theDefinition = G4ParticleTable::GetParticleTable()->FindParticle(pdgCode); + +#ifdef CHIPSdebug + G4cout << "Particle code produced = "<< pdgCode <operator[](particle)->Get4Momentum(); + current4Mom.boost(targ4Mom.boostVector()); + theSec->SetTotalEnergy(current4Mom.t()); + theSec->SetMomentum(current4Mom.vect()); + theResult->push_back(theSec); + +#ifdef CHIPSdebug + G4cout <<"CHIPS particles "<GetPDGCharge()<<" " + << theDefinition->GetPDGEncoding()<<" " + << current4Mom <operator[](particle); + } + delete output; + +#ifdef CHIPSdebug + G4cout << "Number of particles"<size()<GetTotalMomentum(); + G4double Px = aParticle->GetMomentum().x(); + G4double Py = aParticle->GetMomentum().y(); + G4double Pz = aParticle->GetMomentum().z(); + G4double ek = aParticle->GetKineticEnergy(); + G4ThreeVector theInitial = aParticle->GetMomentum(); + + if (verboseLevel > 1) { + G4double E = aParticle->GetTotalEnergy(); + G4double E0 = aParticle->GetDefinition()->GetPDGMass(); + G4double Q = aParticle->GetDefinition()->GetPDGCharge(); + G4double N = targetNucleus.GetN(); + G4double Z = targetNucleus.GetZ(); + G4cout << "G4LEnp:ApplyYourself: incident particle: " + << aParticle->GetDefinition()->GetParticleName() << G4endl; + G4cout << "P = " << P/GeV << " GeV/c" + << ", Px = " << Px/GeV << " GeV/c" + << ", Py = " << Py/GeV << " GeV/c" + << ", Pz = " << Pz/GeV << " GeV/c" << G4endl; + G4cout << "E = " << E/GeV << " GeV" + << ", kinetic energy = " << ek/GeV << " GeV" + << ", mass = " << E0/GeV << " GeV" + << ", charge = " << Q << G4endl; + G4cout << "G4LEnp:ApplyYourself: material:" << G4endl; + G4cout << "A = " << N + << ", Z = " << Z + << ", atomic mass " + << G4Proton::Proton()->GetPDGMass()/GeV << "GeV" + << G4endl; + // + // GHEISHA ADD operation to get total energy, mass, charge + // + E += G4Proton::Proton()->GetPDGMass(); + G4double E02 = E*E - P*P; + E0 = sqrt(abs(E02)); + if (E02 < 0)E0 *= -1; + Q += Z; + G4cout << "G4LEnp:ApplyYourself: total:" << G4endl; + G4cout << "E = " << E/GeV << " GeV" + << ", mass = " << E0/GeV << " GeV" + << ", charge = " << Q << G4endl; + } + + // Find energy bin + + G4int je1 = 0; + G4int je2 = NENERGY - 1; + ek = ek/GeV; + do { + G4int midBin = (je1 + je2)/2; + if (ek < elab[midBin]) + je2 = midBin; + else + je1 = midBin; + } while (je2 - je1 > 1); + // G4int j; + //abs(ek-elab[je1]) < abs(ek-elab[je2]) ? j = je1 : j = je2; + G4double delab = elab[je2] - elab[je1]; + + // Sample the angle + + G4float sample = G4UniformRand(); + G4int ke1 = 0; + G4int ke2 = NANGLE - 1; + G4double dsig = sig[je2][0] - sig[je1][0]; + G4double rc = dsig/delab; + G4double b = sig[je1][0] - rc*elab[je1]; + G4double sigint1 = rc*ek + b; + G4double sigint2 = 0.; + + if (verboseLevel > 1) G4cout << "sample=" << sample << G4endl + << ke1 << " " << ke2 << " " + << sigint1 << " " << sigint2 << G4endl; + + do { + G4int midBin = (ke1 + ke2)/2; + dsig = sig[je2][midBin] - sig[je1][midBin]; + rc = dsig/delab; + b = sig[je1][midBin] - rc*elab[je1]; + G4double sigint = rc*ek + b; + if (sample < sigint) { + ke2 = midBin; + sigint2 = sigint; + } + else { + ke1 = midBin; + sigint1 = sigint; + } + if (verboseLevel > 1)G4cout << ke1 << " " << ke2 << " " + << sigint1 << " " << sigint2 << G4endl; + } while (ke2 - ke1 > 1); + + // sigint1 and sigint2 should be recoverable from above loop + + // G4double dsig = sig[je2][ke1] - sig[je1][ke1]; + // G4double rc = dsig/delab; + // G4double b = sig[je1][ke1] - rc*elab[je1]; + // G4double sigint1 = rc*ek + b; + + // G4double dsig = sig[je2][ke2] - sig[je1][ke2]; + // G4double rc = dsig/delab; + // G4double b = sig[je1][ke2] - rc*elab[je1]; + // G4double sigint2 = rc*ek + b; + + dsig = sigint2 - sigint1; + rc = 1./dsig; + b = ke1 - rc*sigint1; + G4double kint = rc*sample + b; + G4double theta = (0.5 + kint)*pi/180.; + + // G4int k; + //abs(sample-sig[j][ke1]) < abs(sample-sig[j][ke2]) ? k = ke1 : k = ke2; + // G4double theta = (0.5 + k)*pi/180.; + + if (verboseLevel > 1) { + G4cout << " energy bin " << je1 << " energy=" << elab[je1] << G4endl; + G4cout << " angle bin " << kint << " angle=" << theta/degree << G4endl; + } + + + // Get the target particle + + G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); + + G4double E1 = aParticle->GetTotalEnergy(); + G4double M1 = aParticle->GetDefinition()->GetPDGMass(); + G4double E2 = targetParticle->GetTotalEnergy(); + G4double M2 = targetParticle->GetDefinition()->GetPDGMass(); + G4double totalEnergy = E1 + E2; + G4double pseudoMass = sqrt(totalEnergy*totalEnergy - P*P); + // pseudoMass also = sqrt(M1*M1 + M2*M2 + 2*M2*E1) + + // Transform into centre of mass system + + G4double px = (M2/pseudoMass)*Px; + G4double py = (M2/pseudoMass)*Py; + G4double pz = (M2/pseudoMass)*Pz; + G4double p = sqrt(px*px + py*py + pz*pz); + + if (verboseLevel > 1) { + G4cout << " E1, M1 (GeV) " << E1/GeV << " " << M1/GeV << G4endl; + G4cout << " E2, M2 (GeV) " << E2/GeV << " " << M2/GeV << G4endl; + G4cout << " particle 1 momentum in CM " << px/GeV << " " << py/GeV << " " + << pz/GeV << " " << p/GeV << G4endl; + } + + // First scatter w.r.t. Z axis + G4double phi = G4UniformRand()*twopi; + G4double pxnew = p*sin(theta)*cos(phi); + G4double pynew = p*sin(theta)*sin(phi); + G4double pznew = p*cos(theta); + + // Rotate according to the direction of the incident particle + if (px*px + py*py > 0) { + G4double cost, sint, ph, cosp, sinp, a, b, c; + cost = pz/p; + sint = (sqrt(abs((1-cost)*(1+cost))) + sqrt(px*px+py*py)/p)/2; + py < 0 ? ph = 3*halfpi : ph = halfpi; + if (abs(px) > 0.000001*GeV) ph = atan2(py,px); + cosp = cos(ph); + sinp = sin(ph); + px = (cost*cosp*pxnew - sinp*pynew + sint*cosp*pznew); + py = (cost*sinp*pxnew + cosp*pynew + sint*sinp*pznew); + pz = (-sint*pxnew + cost*pznew); + // G4ThreeVector it(a,b,c); + // p0->SetMomentum(it); + // G4ThreeVector aTargetMom = theInitial - it; + // targetParticle->SetMomentum(aTargetMom); + } + else { + px = pxnew; + py = pynew; + pz = pznew; + } + + if (verboseLevel > 1) { + G4cout << " AFTER SCATTER..." << G4endl; + G4cout << " particle 1 momentum in CM " << px/GeV << " " << py/GeV << " " + << pz/GeV << " " << p/GeV << G4endl; + } + + // Transform to lab system + + G4double E1pM2 = E1 + M2; + G4double betaCM = P/E1pM2; + G4double betaCMx = Px/E1pM2; + G4double betaCMy = Py/E1pM2; + G4double betaCMz = Pz/E1pM2; + G4double gammaCM = E1pM2/sqrt(E1pM2*E1pM2 - P*P); + + if (verboseLevel > 1) { + G4cout << " betaCM " << betaCMx << " " << betaCMy << " " + << betaCMz << " " << betaCM << G4endl; + G4cout << " gammaCM " << gammaCM << G4endl; + } + + // Now following GLOREN... + + G4double BETA[5], PA[5], PB[5]; + BETA[1] = -betaCMx; + BETA[2] = -betaCMy; + BETA[3] = -betaCMz; + BETA[4] = gammaCM; + + //The incident particle... + + PA[1] = px; + PA[2] = py; + PA[3] = pz; + PA[4] = sqrt(M1*M1 + p*p); + + G4double BETPA = BETA[1]*PA[1] + BETA[2]*PA[2] + BETA[3]*PA[3]; + G4double BPGAM = (BETPA * BETA[4]/(BETA[4] + 1.) - PA[4]) * BETA[4]; + + PB[1] = PA[1] + BPGAM * BETA[1]; + PB[2] = PA[2] + BPGAM * BETA[2]; + PB[3] = PA[3] + BPGAM * BETA[3]; + PB[4] = (PA[4] - BETPA) * BETA[4]; + + G4DynamicParticle* newP = new G4DynamicParticle; + newP->SetDefinition(aParticle->GetDefinition()); + newP->SetMomentum(G4ThreeVector(PB[1], PB[2], PB[3])); + + //The target particle... + + PA[1] = -px; + PA[2] = -py; + PA[3] = -pz; + PA[4] = sqrt(M2*M2 + p*p); + + BETPA = BETA[1]*PA[1] + BETA[2]*PA[2] + BETA[3]*PA[3]; + BPGAM = (BETPA * BETA[4]/(BETA[4] + 1.) - PA[4]) * BETA[4]; + + PB[1] = PA[1] + BPGAM * BETA[1]; + PB[2] = PA[2] + BPGAM * BETA[2]; + PB[3] = PA[3] + BPGAM * BETA[3]; + PB[4] = (PA[4] - BETPA) * BETA[4]; + + targetParticle->SetMomentum(G4ThreeVector(PB[1], PB[2], PB[3])); + + if (verboseLevel > 1) { + G4cout << " particle 1 momentum in LAB " + << newP->GetMomentum()*(1./GeV) + << " " << newP->GetTotalMomentum()/GeV << G4endl; + G4cout << " particle 2 momentum in LAB " + << targetParticle->GetMomentum()*(1./GeV) + << " " << targetParticle->GetTotalMomentum()/GeV << G4endl; + G4cout << " TOTAL momentum in LAB " + << (newP->GetMomentum()+targetParticle->GetMomentum())*(1./GeV) + << " " + << (newP->GetMomentum()+targetParticle->GetMomentum()).mag()/GeV + << G4endl; + } + + // charge symmetry.... + if(G4UniformRand()<.5) + { + theParticleChange.SetNumberOfSecondaries(1); + theParticleChange.SetMomentumChange(newP->GetMomentumDirection()); + theParticleChange.SetEnergyChange(newP->GetKineticEnergy()); + delete newP; + G4DynamicParticle* p1 = new G4DynamicParticle; + p1->SetDefinition(targetParticle->GetDefinition()); + p1->SetMomentum(targetParticle->GetMomentum()); + theParticleChange.AddSecondary(p1); + } + else + { + theParticleChange.SetNumberOfSecondaries(2); + theParticleChange.SetStatusChange(fStopAndKill); + G4DynamicParticle * pA = new G4DynamicParticle; + pA->SetDefinition(targetParticle->GetDefinition()); + pA->SetMomentum(newP->GetMomentum()); + G4DynamicParticle * pB = new G4DynamicParticle; + pB->SetDefinition(newP->GetDefinition()); + pB->SetMomentum(targetParticle->GetMomentum()); + delete newP; + theParticleChange.AddSecondary(pA); + theParticleChange.AddSecondary(pB); + } + return &theParticleChange; +} + + // end of file diff --git a/source/processes/hadronic/models/coherent_elastic/src/G4LEpp.cc b/source/processes/hadronic/models/coherent_elastic/src/G4LEpp.cc new file mode 100644 index 0000000000..c604cce783 --- /dev/null +++ b/source/processes/hadronic/models/coherent_elastic/src/G4LEpp.cc @@ -0,0 +1,372 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// + + // G4 Low energy model: n-n or p-p scattering + // F.W. Jones, L.G. Greeniaus, H.P. Wellisch + + +#include "G4LEpp.hh" +#include "Randomize.hh" +#include "G4ios.hh" + +// Initialization of static data arrays: +#include "G4LEppData.hh" + +G4LEpp::G4LEpp() : + G4HadronicInteraction() +{ + // theParticleChange.SetNumberOfSecondaries(1); + // SetMinEnergy(10.*MeV); + // SetMaxEnergy(1200.*MeV); + + SetCoulombSuppression(1); + + SetMinEnergy(0.); + SetMaxEnergy(1200.*GeV); +} + +G4LEpp::~G4LEpp() +{ + // theParticleChange.Clear(); +} + + +void +G4LEpp::SetCoulombSuppression(G4int State) +{ + if (State) { + for(G4int i=0; iGetTotalMomentum(); + G4double Px = aParticle->GetMomentum().x(); + G4double Py = aParticle->GetMomentum().y(); + G4double Pz = aParticle->GetMomentum().z(); + G4double ek = aParticle->GetKineticEnergy(); + G4ThreeVector theInitial = aParticle->GetMomentum(); + + if (verboseLevel > 1) { + G4double E = aParticle->GetTotalEnergy(); + G4double E0 = aParticle->GetDefinition()->GetPDGMass(); + G4double Q = aParticle->GetDefinition()->GetPDGCharge(); + G4double N = targetNucleus.GetN(); + G4double Z = targetNucleus.GetZ(); + G4cout << "G4LEpp:ApplyYourself: incident particle: " + << aParticle->GetDefinition()->GetParticleName() << G4endl; + G4cout << "P = " << P/GeV << " GeV/c" + << ", Px = " << Px/GeV << " GeV/c" + << ", Py = " << Py/GeV << " GeV/c" + << ", Pz = " << Pz/GeV << " GeV/c" << G4endl; + G4cout << "E = " << E/GeV << " GeV" + << ", kinetic energy = " << ek/GeV << " GeV" + << ", mass = " << E0/GeV << " GeV" + << ", charge = " << Q << G4endl; + G4cout << "G4LEpp:ApplyYourself: material:" << G4endl; + G4cout << "A = " << N + << ", Z = " << Z + << ", atomic mass " + << G4Proton::Proton()->GetPDGMass()/GeV << "GeV" + << G4endl; + // + // GHEISHA ADD operation to get total energy, mass, charge + // + E += G4Proton::Proton()->GetPDGMass(); + G4double E02 = E*E - P*P; + E0 = sqrt(abs(E02)); + if (E02 < 0)E0 *= -1; + Q += Z; + G4cout << "G4LEpp:ApplyYourself: total:" << G4endl; + G4cout << "E = " << E/GeV << " GeV" + << ", mass = " << E0/GeV << " GeV" + << ", charge = " << Q << G4endl; + } + + // Find energy bin + + G4int je1 = 0; + G4int je2 = NENERGY - 1; + ek = ek/GeV; + do { + G4int midBin = (je1 + je2)/2; + if (ek < elab[midBin]) + je2 = midBin; + else + je1 = midBin; + } while (je2 - je1 > 1); + // G4int j; + //abs(ek-elab[je1]) < abs(ek-elab[je2]) ? j = je1 : j = je2; + G4double delab = elab[je2] - elab[je1]; + + // Sample the angle + + G4float sample = G4UniformRand(); + G4int ke1 = 0; + G4int ke2 = NANGLE - 1; + G4double dsig = sig[je2][0] - sig[je1][0]; + G4double rc = dsig/delab; + G4double b = sig[je1][0] - rc*elab[je1]; + G4double sigint1 = rc*ek + b; + G4double sigint2 = 0.; + + if (verboseLevel > 1) G4cout << "sample=" << sample << G4endl + << ke1 << " " << ke2 << " " + << sigint1 << " " << sigint2 << G4endl; + + do { + G4int midBin = (ke1 + ke2)/2; + dsig = sig[je2][midBin] - sig[je1][midBin]; + rc = dsig/delab; + b = sig[je1][midBin] - rc*elab[je1]; + G4double sigint = rc*ek + b; + if (sample < sigint) { + ke2 = midBin; + sigint2 = sigint; + } + else { + ke1 = midBin; + sigint1 = sigint; + } + if (verboseLevel > 1)G4cout << ke1 << " " << ke2 << " " + << sigint1 << " " << sigint2 << G4endl; + } while (ke2 - ke1 > 1); + + // sigint1 and sigint2 should be recoverable from above loop + + // G4double dsig = sig[je2][ke1] - sig[je1][ke1]; + // G4double rc = dsig/delab; + // G4double b = sig[je1][ke1] - rc*elab[je1]; + // G4double sigint1 = rc*ek + b; + + // G4double dsig = sig[je2][ke2] - sig[je1][ke2]; + // G4double rc = dsig/delab; + // G4double b = sig[je1][ke2] - rc*elab[je1]; + // G4double sigint2 = rc*ek + b; + + dsig = sigint2 - sigint1; + rc = 1./dsig; + b = ke1 - rc*sigint1; + G4double kint = rc*sample + b; + G4double theta = (0.5 + kint)*pi/180.; + + // G4int k; + //abs(sample-sig[j][ke1]) < abs(sample-sig[j][ke2]) ? k = ke1 : k = ke2; + // G4double theta = (0.5 + k)*pi/180.; + + if (verboseLevel > 1) { + G4cout << " energy bin " << je1 << " energy=" << elab[je1] << G4endl; + G4cout << " angle bin " << kint << " angle=" << theta/degree << G4endl; + } + + + // Get the target particle + + G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); + + G4double E1 = aParticle->GetTotalEnergy(); + G4double M1 = aParticle->GetDefinition()->GetPDGMass(); + G4double E2 = targetParticle->GetTotalEnergy(); + G4double M2 = targetParticle->GetDefinition()->GetPDGMass(); + G4double totalEnergy = E1 + E2; + G4double pseudoMass = sqrt(totalEnergy*totalEnergy - P*P); + // pseudoMass also = sqrt(M1*M1 + M2*M2 + 2*M2*E1) + + // Transform into centre of mass system + + G4double px = (M2/pseudoMass)*Px; + G4double py = (M2/pseudoMass)*Py; + G4double pz = (M2/pseudoMass)*Pz; + G4double p = sqrt(px*px + py*py + pz*pz); + + if (verboseLevel > 1) { + G4cout << " E1, M1 (GeV) " << E1/GeV << " " << M1/GeV << G4endl; + G4cout << " E2, M2 (GeV) " << E2/GeV << " " << M2/GeV << G4endl; + G4cout << " particle 1 momentum in CM " << px/GeV << " " << py/GeV << " " + << pz/GeV << " " << p/GeV << G4endl; + } + + // First scatter w.r.t. Z axis + G4double phi = G4UniformRand()*twopi; + G4double pxnew = p*sin(theta)*cos(phi); + G4double pynew = p*sin(theta)*sin(phi); + G4double pznew = p*cos(theta); + + // Rotate according to the direction of the incident particle + if (px*px + py*py > 0) { + G4double cost, sint, ph, cosp, sinp, a, b, c; + cost = pz/p; + sint = (sqrt(abs((1-cost)*(1+cost))) + sqrt(px*px+py*py)/p)/2; + py < 0 ? ph = 3*halfpi : ph = halfpi; + if (abs(px) > 0.000001*GeV) ph = atan2(py,px); + cosp = cos(ph); + sinp = sin(ph); + px = (cost*cosp*pxnew - sinp*pynew + sint*cosp*pznew); + py = (cost*sinp*pxnew + cosp*pynew + sint*sinp*pznew); + pz = (-sint*pxnew + cost*pznew); + // G4ThreeVector it(a,b,c); + // p0->SetMomentum(it); + // G4ThreeVector aTargetMom = theInitial - it; + // targetParticle->SetMomentum(aTargetMom); + } + else { + px = pxnew; + py = pynew; + pz = pznew; + } + + if (verboseLevel > 1) { + G4cout << " AFTER SCATTER..." << G4endl; + G4cout << " particle 1 momentum in CM " << px/GeV << " " << py/GeV << " " + << pz/GeV << " " << p/GeV << G4endl; + } + + // Transform to lab system + + G4double E1pM2 = E1 + M2; + G4double betaCM = P/E1pM2; + G4double betaCMx = Px/E1pM2; + G4double betaCMy = Py/E1pM2; + G4double betaCMz = Pz/E1pM2; + G4double gammaCM = E1pM2/sqrt(E1pM2*E1pM2 - P*P); + + if (verboseLevel > 1) { + G4cout << " betaCM " << betaCMx << " " << betaCMy << " " + << betaCMz << " " << betaCM << G4endl; + G4cout << " gammaCM " << gammaCM << G4endl; + } + + // Now following GLOREN... + + G4double BETA[5], PA[5], PB[5]; + BETA[1] = -betaCMx; + BETA[2] = -betaCMy; + BETA[3] = -betaCMz; + BETA[4] = gammaCM; + + //The incident particle... + + PA[1] = px; + PA[2] = py; + PA[3] = pz; + PA[4] = sqrt(M1*M1 + p*p); + + G4double BETPA = BETA[1]*PA[1] + BETA[2]*PA[2] + BETA[3]*PA[3]; + G4double BPGAM = (BETPA * BETA[4]/(BETA[4] + 1.) - PA[4]) * BETA[4]; + + PB[1] = PA[1] + BPGAM * BETA[1]; + PB[2] = PA[2] + BPGAM * BETA[2]; + PB[3] = PA[3] + BPGAM * BETA[3]; + PB[4] = (PA[4] - BETPA) * BETA[4]; + + G4DynamicParticle* newP = new G4DynamicParticle; + newP->SetDefinition(aParticle->GetDefinition()); + newP->SetMomentum(G4ThreeVector(PB[1], PB[2], PB[3])); + + + //The target particle... + + PA[1] = -px; + PA[2] = -py; + PA[3] = -pz; + PA[4] = sqrt(M2*M2 + p*p); + + BETPA = BETA[1]*PA[1] + BETA[2]*PA[2] + BETA[3]*PA[3]; + BPGAM = (BETPA * BETA[4]/(BETA[4] + 1.) - PA[4]) * BETA[4]; + + PB[1] = PA[1] + BPGAM * BETA[1]; + PB[2] = PA[2] + BPGAM * BETA[2]; + PB[3] = PA[3] + BPGAM * BETA[3]; + PB[4] = (PA[4] - BETPA) * BETA[4]; + + targetParticle->SetMomentum(G4ThreeVector(PB[1], PB[2], PB[3])); + + G4double ektotal = newP->GetKineticEnergy() + + targetParticle->GetKineticEnergy(); + + if (verboseLevel > 1) { + G4cout << " particle 1 momentum in LAB " + << newP->GetMomentum()*(1./GeV) + << " " << newP->GetTotalMomentum()/GeV << G4endl; + G4cout << " particle 2 momentum in LAB " + << targetParticle->GetMomentum()*(1./GeV) + << " " << targetParticle->GetTotalMomentum()/GeV << G4endl; + G4cout << " TOTAL momentum in LAB " + << (newP->GetMomentum()+targetParticle->GetMomentum())*(1./GeV) + << " " + << (newP->GetMomentum()+targetParticle->GetMomentum()).mag()/GeV + << G4endl; + } + + // if (theta < pi/2.) { + theParticleChange.SetNumberOfSecondaries(1); + // G4double p = newP->GetMomentum().mag(); + // G4ThreeVector m = newP->GetMomentum(); + // if (p > DBL_MIN) + // theParticleChange.SetMomentumChange(m.x()/p, m.y()/p, m.z()/p); + // else + // theParticleChange.SetMomentumChange(0., 0., 0.); + + theParticleChange.SetMomentumDirectionChange( + newP->GetMomentumDirection()); + theParticleChange.SetEnergyChange(newP->GetKineticEnergy()); + delete newP; + + // } + // else { + // // charge exchange + // theParticleChange.SetNumberOfSecondaries(2); + // theParticleChange.AddSecondary(newP); + // theParticleChange.SetStatusChange(fStopAndKill); + // // theParticleChange.SetEnergyChange(0.0); + // } + + // Recoil particle + G4DynamicParticle* p1 = new G4DynamicParticle; + p1->SetDefinition(targetParticle->GetDefinition()); + p1->SetMomentum(targetParticle->GetMomentum()); + theParticleChange.AddSecondary(p1); + + + return &theParticleChange; +} + + // end of file diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaCoulombBarrier.hh index b439ca8565..417e8b880a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaCoulombBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaCoulombBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AlphaCoulombBarrier.hh,v 1.2.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AlphaCoulombBarrier.hh,v 1.4 2001/08/01 17:04:07 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationChannel.hh index 83a0fca526..888ae72e90 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AlphaEvaporationChannel.hh,v 1.2.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AlphaEvaporationChannel.hh,v 1.4 2001/08/01 17:04:07 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationProbability.hh index bada6a8e33..58d74e0f1e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4AlphaEvaporationProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AlphaEvaporationProbability.hh,v 1.2.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AlphaEvaporationProbability.hh,v 1.4 2001/08/01 17:04:08 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4B9FermiFragment.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4B9FermiFragment.hh index b3903f5997..66e5d8dc32 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4B9FermiFragment.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4B9FermiFragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4B9FermiFragment.hh,v 1.3.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4B9FermiFragment.hh,v 1.5 2001/08/01 17:04:08 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4Be8FermiFragment.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4Be8FermiFragment.hh index 8c21e00562..4ee180185a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4Be8FermiFragment.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4Be8FermiFragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Be8FermiFragment.hh,v 1.3.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Be8FermiFragment.hh,v 1.5 2001/08/01 17:04:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertPairingCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertPairingCorrections.hh index b257dd5b09..d17526d480 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertPairingCorrections.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertPairingCorrections.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronGilbertPairingCorrections.hh,v 1.3.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronGilbertPairingCorrections.hh,v 1.5 2001/08/01 17:04:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertShellCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertShellCorrections.hh index c61cc7c89b..5b3b6a7dd0 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertShellCorrections.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronGilbertShellCorrections.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronGilbertShellCorrections.hh,v 1.3.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronGilbertShellCorrections.hh,v 1.5 2001/08/01 17:04:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronShellPlusPairingCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronShellPlusPairingCorrections.hh index a1e81a529f..c89d53ca20 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronShellPlusPairingCorrections.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronShellPlusPairingCorrections.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronShellPlusPairingCorrections.hh,v 1.3.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronShellPlusPairingCorrections.hh,v 1.5 2001/08/01 17:04:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfPairingCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfPairingCorrections.hh index 1861d943d1..8843b94a29 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfPairingCorrections.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfPairingCorrections.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronTruranHilfPairingCorrections.hh,v 1.3.2.1 2001/06/28 19:12:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronTruranHilfPairingCorrections.hh,v 1.5 2001/08/01 17:04:10 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfShellCorrections.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfShellCorrections.hh index 12dbc5d3a5..7e6e2db0ce 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfShellCorrections.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CameronTruranHilfShellCorrections.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronTruranHilfShellCorrections.hh,v 1.3.2.1 2001/06/28 19:12:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronTruranHilfShellCorrections.hh,v 1.5 2001/08/01 17:04:10 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CompetitiveFission.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CompetitiveFission.hh index 4e92256212..b9c1989d4c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4CompetitiveFission.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CompetitiveFission.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CompetitiveFission.hh,v 1.4.2.1 2001/06/28 19:12:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CompetitiveFission.hh,v 1.6 2001/08/01 17:04:11 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ConstantLevelDensityParameter.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ConstantLevelDensityParameter.hh index 7cadd34716..d070a49b8c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ConstantLevelDensityParameter.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ConstantLevelDensityParameter.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ConstantLevelDensityParameter.hh,v 1.3.2.1 2001/06/28 19:12:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ConstantLevelDensityParameter.hh,v 1.5 2001/08/01 17:04:11 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations (photon evaporation) // by C. Dallapiccola (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ContinuumGammaDeexcitation.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ContinuumGammaDeexcitation.hh index e01996aa21..2dac49464c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ContinuumGammaDeexcitation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ContinuumGammaDeexcitation.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ContinuumGammaTransition.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ContinuumGammaTransition.hh index 8552ac6326..82cd245653 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ContinuumGammaTransition.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ContinuumGammaTransition.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4CoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4CoulombBarrier.hh index ef65181cdb..e36c5a54f0 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4CoulombBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4CoulombBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CoulombBarrier.hh,v 1.2.2.1 2001/06/28 19:13:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CoulombBarrier.hh,v 1.5 2001/10/08 17:15:48 larazb Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) @@ -58,7 +58,9 @@ private: virtual G4double BarrierPenetrationFactor(const G4double aZ) const {return 1.0;} - + virtual G4double CalcCompoundRadius(const G4double ZRes) const + { + return 2.173*fermi*(1.0+0.006103*G4double(GetZ())*ZRes)/(1.0+0.009443*G4double(GetZ())*ZRes); + } }; - #endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronCoulombBarrier.hh index d1926e22d7..ec08780b17 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronCoulombBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronCoulombBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DeuteronCoulombBarrier.hh,v 1.1.8.1 2001/06/28 19:13:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DeuteronCoulombBarrier.hh,v 1.3 2001/08/01 17:04:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationChannel.hh index 4e63755b9a..308f1aefe0 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DeuteronEvaporationChannel.hh,v 1.2.2.1 2001/06/28 19:13:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DeuteronEvaporationChannel.hh,v 1.4 2001/08/01 17:04:14 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationProbability.hh index 23f5d3a7a1..494bf55d18 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DeuteronEvaporationProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DeuteronEvaporationProbability.hh,v 1.2.2.1 2001/06/28 19:13:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DeuteronEvaporationProbability.hh,v 1.4 2001/08/01 17:04:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4DiscreteGammaDeexcitation.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4DiscreteGammaDeexcitation.hh index b92320b8c1..79e822377e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4DiscreteGammaDeexcitation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DiscreteGammaDeexcitation.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4DiscreteGammaTransition.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4DiscreteGammaTransition.hh index dae2024adc..bd8eefa689 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4DiscreteGammaTransition.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DiscreteGammaTransition.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4DummyProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4DummyProbability.hh index 71e7139c56..71341e9a1a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4DummyProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4DummyProbability.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability.hh index 8d7e2b4e71..6918509a11 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability001.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability001.hh index 3d95c343b0..46d36f8893 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability001.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability001.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability01.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability01.hh index 1603d7d4c3..aa34b63078 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability01.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability01.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability10.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability10.hh index c1ca776690..5509922b89 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability10.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability10.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability100.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability100.hh index 62b1a9e0d5..8e7491e0ce 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability100.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1Probability100.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability001.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability001.hh index 4a254b6790..6913e1f7d5 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability001.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability001.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability01.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability01.hh index fea9535a21..294e416206 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability01.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability01.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability1.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability1.hh index 2e3003e34e..ff86ba6468 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability1.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability1.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability10.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability10.hh index d84222b749..ef329a6239 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability10.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability10.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability100.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability100.hh index 4d2609f348..725d893a8a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability100.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4E1SingleProbability100.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4Evaporation.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4Evaporation.hh index 7bf9d37431..d68f5692a9 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4Evaporation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4Evaporation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Evaporation.hh,v 1.5.2.1 2001/06/28 19:13:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Evaporation.hh,v 1.8 2001/10/05 16:13:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -46,8 +46,8 @@ class G4Evaporation : public G4VEvaporation public: G4Evaporation(); G4Evaporation(G4std::vector * aChannelsVector) : - theChannels(aChannelsVector), - myOwnChannelsVector(false) + myOwnChannelsVector(false), + theChannels(aChannelsVector) {}; ~G4Evaporation(); diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationChannel.hh index 5311f3766d..fef0a6dc0b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EvaporationChannel.hh,v 1.5.2.1 2001/06/28 19:13:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvaporationChannel.hh,v 1.7 2001/08/01 17:04:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationLevelDensityParameter.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationLevelDensityParameter.hh index 0cf81c65bd..a3189b0650 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationLevelDensityParameter.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationLevelDensityParameter.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EvaporationLevelDensityParameter.hh,v 1.4.2.1 2001/06/28 19:13:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvaporationLevelDensityParameter.hh,v 1.6 2001/08/01 17:04:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationProbability.hh index e0e7b26060..f1ed216012 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4EvaporationProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EvaporationProbability.hh,v 1.4.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvaporationProbability.hh,v 1.6 2001/08/01 17:04:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ExcitationHandler.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ExcitationHandler.hh index 7155010a42..3038e38914 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ExcitationHandler.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ExcitationHandler.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ExcitationHandler.hh,v 1.5.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitationHandler.hh,v 1.7 2001/08/01 17:04:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4FermiBreakUp.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4FermiBreakUp.hh index 8c3d240d61..63109c7057 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FermiBreakUp.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FermiBreakUp.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FermiBreakUp.hh,v 1.3.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FermiBreakUp.hh,v 1.5 2001/08/01 17:04:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4FermiConfiguration.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4FermiConfiguration.hh index 1f5aae811e..4db6b92212 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FermiConfiguration.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FermiConfiguration.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FermiConfiguration.hh,v 1.5.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FermiConfiguration.hh,v 1.8 2001/10/22 11:52:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) @@ -30,7 +30,7 @@ #ifndef G4FermiConfiguration_h #define G4FermiConfiguration_h 1 -#include +#include "g4std/deque" #include "globals.hh" #include "Randomize.hh" diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4FermiConfigurationList.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4FermiConfigurationList.hh index 1c4aa98f93..e2043e37af 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FermiConfigurationList.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FermiConfigurationList.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FermiConfigurationList.hh,v 1.4.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FermiConfigurationList.hh,v 1.6 2001/08/01 17:04:27 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionBarrier.hh index 52bf53357d..411c8c9b61 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FissionBarrier.hh,v 1.3.8.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FissionBarrier.hh,v 1.5 2001/08/01 17:04:27 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionLevelDensityParameter.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionLevelDensityParameter.hh index d79a884fff..4e41b29ae3 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionLevelDensityParameter.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionLevelDensityParameter.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FissionLevelDensityParameter.hh,v 1.4.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FissionLevelDensityParameter.hh,v 1.6 2001/08/01 17:04:28 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionParameters.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionParameters.hh index db292bda66..0d4009221a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionParameters.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionParameters.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FissionParameters.hh,v 1.4.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FissionParameters.hh,v 1.6 2001/08/01 17:04:29 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionProbability.hh index bb7a000584..1b6e1a52ef 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4FissionProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4FissionProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FissionProbability.hh,v 1.4.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FissionProbability.hh,v 1.6 2001/08/01 17:04:30 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4He3CoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4He3CoulombBarrier.hh index 693dd22a29..85079c3f5a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4He3CoulombBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4He3CoulombBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4He3CoulombBarrier.hh,v 1.1.8.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He3CoulombBarrier.hh,v 1.3 2001/08/01 17:04:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationChannel.hh index 2fd544cb74..0bde115070 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4He3EvaporationChannel.hh,v 1.2.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He3EvaporationChannel.hh,v 1.4 2001/08/01 17:04:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationProbability.hh index 700aefe989..1886cb0fe4 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4He3EvaporationProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4He3EvaporationProbability.hh,v 1.2.2.1 2001/06/28 19:13:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He3EvaporationProbability.hh,v 1.4 2001/08/01 17:04:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4He5FermiFragment.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4He5FermiFragment.hh index 227e768f41..ac6ba3727d 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4He5FermiFragment.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4He5FermiFragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4He5FermiFragment.hh,v 1.3.2.1 2001/06/28 19:13:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He5FermiFragment.hh,v 1.5 2001/08/01 17:04:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4Li5FermiFragment.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4Li5FermiFragment.hh index c9ac01225b..062ba2cb5e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4Li5FermiFragment.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4Li5FermiFragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Li5FermiFragment.hh,v 1.3.2.1 2001/06/28 19:13:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Li5FermiFragment.hh,v 1.5 2001/08/01 17:04:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronCoulombBarrier.hh index 8f17c3aabb..6a4249a9d5 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronCoulombBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronCoulombBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronCoulombBarrier.hh,v 1.1.8.1 2001/06/28 19:13:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronCoulombBarrier.hh,v 1.3 2001/08/01 17:04:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationChannel.hh index 0af7322955..d84389153c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronEvaporationChannel.hh,v 1.2.2.1 2001/06/28 19:13:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronEvaporationChannel.hh,v 1.4 2001/08/01 17:04:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationProbability.hh index 8cd62b1e44..a745725583 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4NeutronEvaporationProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronEvaporationProbability.hh,v 1.2.2.1 2001/06/28 19:13:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronEvaporationProbability.hh,v 1.4 2001/08/01 17:04:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4NuclearLevel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4NuclearLevel.hh index 1c4c61d073..cfeff16b0c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4NuclearLevel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4NuclearLevel.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4NuclearLevelManager.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4NuclearLevelManager.hh index 670518692b..670957ab32 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4NuclearLevelManager.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4NuclearLevelManager.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4PairingCorrection.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4PairingCorrection.hh index f770689b25..873f748d09 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4PairingCorrection.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4PairingCorrection.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PairingCorrection.hh,v 1.1.2.1 2001/06/28 19:13:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PairingCorrection.hh,v 1.3 2001/08/01 17:04:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ParaFissionModel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ParaFissionModel.hh index 4c6f8f2f16..f83681b23e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ParaFissionModel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ParaFissionModel.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4PhotonEvaporation.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4PhotonEvaporation.hh index 1baf351e79..48ef2773ca 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4PhotonEvaporation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4PhotonEvaporation.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonCoulombBarrier.hh index ea85697633..06524b3e72 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonCoulombBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonCoulombBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ProtonCoulombBarrier.hh,v 1.1.8.1 2001/06/28 19:13:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProtonCoulombBarrier.hh,v 1.3 2001/08/01 17:04:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationChannel.hh index bcfeecf8bf..90aaf28808 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ProtonEvaporationChannel.hh,v 1.2.2.1 2001/06/28 19:13:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProtonEvaporationChannel.hh,v 1.4 2001/08/01 17:04:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationProbability.hh index c6aead184b..5cd77595d0 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4ProtonEvaporationProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ProtonEvaporationProbability.hh,v 1.2.2.1 2001/06/28 19:13:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProtonEvaporationProbability.hh,v 1.4 2001/08/01 17:04:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4PtrLevelVector.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4PtrLevelVector.hh index 79c1e66071..e02e0722e1 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4PtrLevelVector.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4PtrLevelVector.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -41,11 +41,11 @@ #ifndef G4PTRLEVELVECTOR_HH #define G4PTRLEVELVECTOR_HH -class G4NuclearLevel; -#include "g4rw/tpsrtvec.h" - -typedef G4RWTPtrSortedVector G4PtrLevelVector; +#include "G4NuclearLevel.hh" +#include "g4std/vector" +typedef G4std::vector G4PtrLevelVector; +struct DeleteLevel { void operator () (G4NuclearLevel * aL) {delete aL;} }; #endif diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4RandGeneralTmp.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4RandGeneralTmp.hh index e22fdc2087..1867c69350 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4RandGeneralTmp.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4RandGeneralTmp.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4RandGeneralTmp.icc b/source/processes/hadronic/models/generator/de_excitation/include/G4RandGeneralTmp.icc index 948fb439f0..1644f95197 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4RandGeneralTmp.icc +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4RandGeneralTmp.icc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4Solver.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4Solver.hh index 4c257cf7b0..d459f7e4d2 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4Solver.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4Solver.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Solver.hh,v 1.3.2.1 2001/06/28 19:13:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Solver.hh,v 1.5 2001/08/01 17:04:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4Solver.icc b/source/processes/hadronic/models/generator/de_excitation/include/G4Solver.icc index 104a9c3504..1685786119 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4Solver.icc +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4Solver.icc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -128,9 +128,7 @@ G4bool G4Solver::Brent(Function & theFunction) G4double c = b; G4double fc = fb; G4double d = 0.0; - G4double fd = 0.0; G4double e = 0.0; - G4double fe = 0.0; diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StableFermiFragment.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StableFermiFragment.hh index 860073f8b4..9d6ea898b9 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StableFermiFragment.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StableFermiFragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StableFermiFragment.hh,v 1.3.2.1 2001/06/28 19:13:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StableFermiFragment.hh,v 1.5 2001/08/01 17:04:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMF.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMF.hh index 41519a8832..04de392e99 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMF.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMF.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMF.hh,v 1.4.2.1 2001/06/28 19:13:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMF.hh,v 1.6 2001/08/01 17:04:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFChannel.hh index e69432a9cc..9bfa947bf6 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFChannel.hh,v 1.4.2.1 2001/06/28 19:13:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFChannel.hh,v 1.7 2001/10/22 11:52:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -30,7 +30,7 @@ #ifndef G4StatMFChannel_h #define G4StatMFChannel_h 1 -#include +#include "g4std/deque" #include "G4StatMFParameters.hh" #include "G4StatMFFragment.hh" diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFFragment.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFFragment.hh index f0b76d7e33..dd0be0d9c0 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFFragment.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFFragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFFragment.hh,v 1.4.2.1 2001/06/28 19:13:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFFragment.hh,v 1.6 2001/08/01 17:04:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroBiNucleon.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroBiNucleon.hh index cac454c5fd..982f3c6083 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroBiNucleon.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroBiNucleon.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroBiNucleon.hh,v 1.4.2.1 2001/06/28 19:13:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroBiNucleon.hh,v 1.6 2001/08/01 17:04:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroChemicalPotential.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroChemicalPotential.hh index 5b1876ef8d..f06ba51070 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroChemicalPotential.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroChemicalPotential.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroChemicalPotential.hh,v 1.4.2.1 2001/06/28 19:13:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroChemicalPotential.hh,v 1.6 2001/08/01 17:04:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroMultiNucleon.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroMultiNucleon.hh index 3003af4c3a..32c2b9b9d5 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroMultiNucleon.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroMultiNucleon.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroMultiNucleon.hh,v 1.3.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroMultiNucleon.hh,v 1.5 2001/08/01 17:04:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroMultiplicity.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroMultiplicity.hh index e15480184f..d0f5fd35a5 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroMultiplicity.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroMultiplicity.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroMultiplicity.hh,v 1.4.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroMultiplicity.hh,v 1.6 2001/08/01 17:04:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroNucleon.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroNucleon.hh index 459c70fcf7..508856f00f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroNucleon.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroNucleon.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroNucleon.hh,v 1.4.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroNucleon.hh,v 1.7 2001/10/05 16:13:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -39,8 +39,8 @@ public: // Default constructor G4StatMFMacroNucleon() : - _NeutronMeanMultiplicity(0.0),_ProtonMeanMultiplicity(0.0), - G4VStatMFMacroCluster(1) {}; + G4VStatMFMacroCluster(1), _NeutronMeanMultiplicity(0.0),_ProtonMeanMultiplicity(0.0) + {}; // Destructor ~G4StatMFMacroNucleon() {}; diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTemperature.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTemperature.hh index 3466049e07..fe21a21561 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTemperature.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTemperature.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroTemperature.hh,v 1.5.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroTemperature.hh,v 1.8 2001/10/05 16:13:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -48,8 +48,8 @@ public: theA(anA), theZ(aZ), _ExEnergy(ExEnergy), - _Kappa(kappa), _FreeInternalE0(FreeE0), + _Kappa(kappa), _MeanMultiplicity(0.0), _MeanTemperature(0.0), _ChemPotentialMu(0.0), diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTetraNucleon.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTetraNucleon.hh index 072d7282ee..17b6143296 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTetraNucleon.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTetraNucleon.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroTetraNucleon.hh,v 1.4.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroTetraNucleon.hh,v 1.6 2001/08/01 17:04:48 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTriNucleon.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTriNucleon.hh index 7e5ca19d3d..80618fc81f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTriNucleon.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacroTriNucleon.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroTriNucleon.hh,v 1.4.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroTriNucleon.hh,v 1.6 2001/08/01 17:04:48 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacrocanonical.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacrocanonical.hh index ed7e363d98..0c9dbf77b2 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacrocanonical.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMacrocanonical.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroCanonical.hh,v 1.6.2.1 2001/06/28 19:13:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroCanonical.hh,v 1.9 2001/10/06 08:32:27 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -50,7 +50,7 @@ class G4StatMFMacroCanonical : public G4VStatMFEnsemble { public: // G4StatMFMacroCanonical class must be initialized with a G4Fragment. - G4StatMFMacroCanonical(const G4Fragment & theFragment); + G4StatMFMacroCanonical(G4Fragment const & theFragment); // destructor ~G4StatMFMacroCanonical(); diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicroManager.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicroManager.hh index c0ac522f97..148467abae 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicroManager.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicroManager.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMicroManager.hh,v 1.3.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMicroManager.hh,v 1.5 2001/08/01 17:04:49 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicroPartition.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicroPartition.hh index 5dd4fe2435..77b9580f56 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicroPartition.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicroPartition.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMicroPartition.hh,v 1.6.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMicroPartition.hh,v 1.8 2001/08/01 17:04:49 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicrocanonical.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicrocanonical.hh index a445114c2c..02fdee9971 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicrocanonical.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFMicrocanonical.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMicroCanonical.hh,v 1.5.2.1 2001/06/28 19:13:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMicroCanonical.hh,v 1.7 2001/08/01 17:04:49 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFParameters.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFParameters.hh index 278e7b2c83..d361b80f05 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFParameters.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4StatMFParameters.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFParameters.hh,v 1.3.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFParameters.hh,v 1.5 2001/08/01 17:04:51 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonCoulombBarrier.hh index 84a22981d3..b59b108c6a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonCoulombBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonCoulombBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TritonCoulombBarrier.hh,v 1.2.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TritonCoulombBarrier.hh,v 1.4 2001/08/01 17:04:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationChannel.hh index 45579204b2..d3cb72545e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TritonEvaporationChannel.hh,v 1.2.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TritonEvaporationChannel.hh,v 1.4 2001/08/01 17:04:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationProbability.hh index 48ebed9699..75e199226a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4TritonEvaporationProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TritonEvaporationProbability.hh,v 1.2.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TritonEvaporationProbability.hh,v 1.4 2001/08/01 17:04:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4UnstableFermiFragment.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4UnstableFermiFragment.hh index 38521d870e..10fee0f7da 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4UnstableFermiFragment.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4UnstableFermiFragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4UnstableFermiFragment.hh,v 1.4.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UnstableFermiFragment.hh,v 1.7 2001/10/22 11:52:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) @@ -30,7 +30,7 @@ #ifndef G4UnstableFermiFragment_h #define G4UnstableFermiFragment_h 1 -#include +#include "g4std/deque" #include "G4VFermiFragment.hh" #include "Randomize.hh" diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VCoulombBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VCoulombBarrier.hh index 24024531f4..38f30bb93c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VCoulombBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VCoulombBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VCoulombBarrier.hh,v 1.2.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VCoulombBarrier.hh,v 1.4 2001/08/01 17:04:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VEmissionProbability.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VEmissionProbability.hh index aade7ca421..d1768a0fc8 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VEmissionProbability.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VEmissionProbability.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VEmissionProbability.hh,v 1.4.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEmissionProbability.hh,v 1.6 2001/08/01 17:04:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporation.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporation.hh index a4896c93c0..8d26128388 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VEvaporation.hh,v 1.3.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEvaporation.hh,v 1.5 2001/08/01 17:04:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) written from G4Evaporation.hh (May 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporationChannel.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporationChannel.hh index e53c7e3a3c..b0d043d6ae 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporationChannel.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VEvaporationChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VEvaporationChannel.hh,v 1.4.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEvaporationChannel.hh,v 1.6 2001/08/01 17:04:56 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VFermiBreakUp.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VFermiBreakUp.hh index 7a28454d9f..ff6e9c4efd 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VFermiBreakUp.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VFermiBreakUp.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VFermiBreakUp.hh,v 1.3.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFermiBreakUp.hh,v 1.5 2001/08/01 17:04:56 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VFermiFragment.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VFermiFragment.hh index 56e8f4837b..2203966e53 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VFermiFragment.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VFermiFragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VFermiFragment.hh,v 1.3.2.1 2001/06/28 19:13:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFermiFragment.hh,v 1.5 2001/08/01 17:04:56 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VFissionBarrier.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VFissionBarrier.hh index 6b691703b3..ed0002cc9f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VFissionBarrier.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VFissionBarrier.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VFissionBarrier.hh,v 1.3.8.1 2001/06/28 19:13:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFissionBarrier.hh,v 1.5 2001/08/01 17:04:57 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VGammaDeexcitation.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VGammaDeexcitation.hh index 312f886a7e..090dd4aa06 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VGammaDeexcitation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VGammaDeexcitation.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VGammaTransition.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VGammaTransition.hh index 349ad2c75c..0e05ca90b2 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VGammaTransition.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VGammaTransition.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VLevelDensityParameter.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VLevelDensityParameter.hh index facd22135c..5b24664214 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VLevelDensityParameter.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VLevelDensityParameter.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VLevelDensityParameter.hh,v 1.3.2.1 2001/06/28 19:13:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VLevelDensityParameter.hh,v 1.5 2001/08/01 17:04:59 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VMultiFragmentation.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VMultiFragmentation.hh index 5932e49d1d..cc37530b19 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VMultiFragmentation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VMultiFragmentation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VMultiFragmentation.hh,v 1.4.2.1 2001/06/28 19:13:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMultiFragmentation.hh,v 1.6 2001/08/01 17:05:00 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VPhotonEvaporation.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VPhotonEvaporation.hh index f5bf692724..c3c3d8297b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VPhotonEvaporation.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VPhotonEvaporation.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VStatMFEnsemble.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VStatMFEnsemble.hh index ccc8a6f5aa..2ef4aeec53 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VStatMFEnsemble.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VStatMFEnsemble.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VStatMFEnsemble.hh,v 1.3.2.1 2001/06/28 19:13:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VStatMFEnsemble.hh,v 1.5 2001/08/01 17:05:01 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/include/G4VStatMFMacroCluster.hh b/source/processes/hadronic/models/generator/de_excitation/include/G4VStatMFMacroCluster.hh index c6db4a1198..88a753d244 100644 --- a/source/processes/hadronic/models/generator/de_excitation/include/G4VStatMFMacroCluster.hh +++ b/source/processes/hadronic/models/generator/de_excitation/include/G4VStatMFMacroCluster.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VStatMFMacroCluster.hh,v 1.5.2.1 2001/06/28 19:13:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VStatMFMacroCluster.hh,v 1.7 2001/08/01 17:05:01 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaCoulombBarrier.cc index 739ef5c305..2f0d517b3b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaCoulombBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaCoulombBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AlphaCoulombBarrier.cc,v 1.2.2.1 2001/06/28 19:13:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AlphaCoulombBarrier.cc,v 1.4 2001/08/01 17:05:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationChannel.cc index 811975eaca..93a7f9584b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AlphaEvaporationChannel.cc,v 1.2.2.1 2001/06/28 19:13:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AlphaEvaporationChannel.cc,v 1.4 2001/08/01 17:05:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationProbability.cc index 7a0b6102f0..335eb32775 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4AlphaEvaporationProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AlphaEvaporationProbability.cc,v 1.2.2.1 2001/06/28 19:13:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AlphaEvaporationProbability.cc,v 1.4 2001/08/01 17:05:10 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4B9FermiFragment.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4B9FermiFragment.cc index 40594e1a82..cc60f0079e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4B9FermiFragment.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4B9FermiFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4B9FermiFragment.cc,v 1.4.2.1 2001/06/28 19:13:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4B9FermiFragment.cc,v 1.6 2001/08/01 17:05:11 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4Be8FermiFragment.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4Be8FermiFragment.cc index ce7e8ee79c..5ca22d2111 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4Be8FermiFragment.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4Be8FermiFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Be8FermiFragment.cc,v 1.5.2.1 2001/06/28 19:13:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Be8FermiFragment.cc,v 1.7 2001/08/01 17:05:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertPairingCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertPairingCorrections.cc index 4dcb2a3ba8..eb5d84121a 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertPairingCorrections.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertPairingCorrections.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronGilbertPairingCorrections.cc,v 1.2.2.1 2001/06/28 19:13:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronGilbertPairingCorrections.cc,v 1.5 2001/10/05 16:13:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -72,4 +72,5 @@ G4CameronGilbertPairingCorrections G4CameronGilbertPairingCorrections::theInstan G4CameronGilbertPairingCorrections::G4CameronGilbertPairingCorrections(G4double dummy) { G4double even_more_dummy = dummy; + even_more_dummy/=2.; } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertShellCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertShellCorrections.cc index 6e5c3b2e75..6027deb8b2 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertShellCorrections.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronGilbertShellCorrections.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronGilbertShellCorrections.cc,v 1.2.2.1 2001/06/28 19:13:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronGilbertShellCorrections.cc,v 1.5 2001/10/05 16:13:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -72,4 +72,5 @@ G4CameronGilbertShellCorrections G4CameronGilbertShellCorrections::theInstance(1 G4CameronGilbertShellCorrections::G4CameronGilbertShellCorrections(G4double dummy) { G4double even_more_dumy = dummy; + even_more_dumy/=2.; } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronShellPlusPairingCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronShellPlusPairingCorrections.cc index 9fa12728ad..05c3c8268b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronShellPlusPairingCorrections.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronShellPlusPairingCorrections.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronShellPlusPairingCorrections.cc,v 1.2.2.1 2001/06/28 19:13:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronShellPlusPairingCorrections.cc,v 1.5 2001/10/05 16:13:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -90,4 +90,5 @@ G4CameronShellPlusPairingCorrections G4CameronShellPlusPairingCorrections::theIn G4CameronShellPlusPairingCorrections::G4CameronShellPlusPairingCorrections(G4double dummy) { G4double even_more_dummy = dummy; + even_more_dummy/=2.; } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfPairingCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfPairingCorrections.cc index e9bef6a7e9..3285a083d3 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfPairingCorrections.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfPairingCorrections.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronTruranHilfPairingCorrections.cc,v 1.2.2.1 2001/06/28 19:13:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronTruranHilfPairingCorrections.cc,v 1.5 2001/10/05 16:13:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -77,4 +77,5 @@ G4CameronTruranHilfPairingCorrections G4CameronTruranHilfPairingCorrections::th G4CameronTruranHilfPairingCorrections::G4CameronTruranHilfPairingCorrections(G4double dummy) { G4double even_more_dummy = dummy; + even_more_dummy/=2.; } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfShellCorrections.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfShellCorrections.cc index f3652c7aca..21d5c18e93 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfShellCorrections.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CameronTruranHilfShellCorrections.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CameronTruranHilfShellCorrections.cc,v 1.2.2.1 2001/06/28 19:13:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CameronTruranHilfShellCorrections.cc,v 1.5 2001/10/05 16:13:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -79,4 +79,5 @@ G4CameronTruranHilfShellCorrections G4CameronTruranHilfShellCorrections::theInst G4CameronTruranHilfShellCorrections::G4CameronTruranHilfShellCorrections(G4double dummy) { G4double even_more_dummy = dummy; + even_more_dummy/=2.; } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CompetitiveFission.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CompetitiveFission.cc index f104ba9825..89b852d130 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4CompetitiveFission.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CompetitiveFission.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CompetitiveFission.cc,v 1.6.2.1 2001/06/28 19:13:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CompetitiveFission.cc,v 1.9 2001/10/05 16:13:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) @@ -242,16 +242,16 @@ G4int G4CompetitiveFission::FissionAtomicNumber(const G4int A, const G4FissionPa const G4double A1 = theParam.GetA1(); const G4double A2 = theParam.GetA2(); const G4double As = theParam.GetAs(); - const G4double Sigma1 = theParam.GetSigma1(); +// const G4double Sigma1 = theParam.GetSigma1(); const G4double Sigma2 = theParam.GetSigma2(); const G4double SigmaS = theParam.GetSigmaS(); const G4double w = theParam.GetW(); - G4double FasymAsym = 2.0*exp(-((A2-As)*(A2-As))/(2.0*Sigma2*Sigma2)) + - exp(-((A1-As)*(A1-As))/(2.0*Sigma1*Sigma1)); +// G4double FasymAsym = 2.0*exp(-((A2-As)*(A2-As))/(2.0*Sigma2*Sigma2)) + +// exp(-((A1-As)*(A1-As))/(2.0*Sigma1*Sigma1)); - G4double FsymA1A2 = exp(-((As-(A1+A2))*(As-(A1+A2)))/(2.0*SigmaS*SigmaS)); +// G4double FsymA1A2 = exp(-((As-(A1+A2))*(As-(A1+A2)))/(2.0*SigmaS*SigmaS)); G4double C2A = A2 + 3.72*Sigma2; diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ConstantLevelDensityParameter.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ConstantLevelDensityParameter.cc index 5127b984df..c53317d04d 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4ConstantLevelDensityParameter.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ConstantLevelDensityParameter.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ContinuumGammaDeexcitation.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ContinuumGammaDeexcitation.cc index 970036caad..57ab5bbc7f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4ContinuumGammaDeexcitation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ContinuumGammaDeexcitation.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ContinuumGammaTransition.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ContinuumGammaTransition.cc index 0285dfe0b5..f21bc5873f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4ContinuumGammaTransition.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ContinuumGammaTransition.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -56,7 +56,7 @@ G4ContinuumGammaTransition::G4ContinuumGammaTransition( G4int Z, G4int A, G4double excitation, G4int verbose): - _nucleusZ(Z), _nucleusA(A), _excitation(excitation), _levelManager(levelManager) + _nucleusA(A), _nucleusZ(Z), _excitation(excitation), _levelManager(levelManager) { const G4PtrLevelVector* levels = levelManager.GetLevels(); G4double eTolerance = 0.; @@ -65,7 +65,7 @@ G4ContinuumGammaTransition::G4ContinuumGammaTransition( G4int lastButOne = levelManager.NumberOfLevels() - 2; if (lastButOne >= 0) { - eTolerance = levelManager.MaxLevelEnergy() - levels->at(lastButOne)->Energy(); + eTolerance = levelManager.MaxLevelEnergy() - levels->operator[](lastButOne)->Energy(); if (eTolerance < 0.) eTolerance = 0.; } } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4CoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4CoulombBarrier.cc index 8ad21e1ac3..bc350c54be 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4CoulombBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4CoulombBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4CoulombBarrier.cc,v 1.2.2.1 2001/06/28 19:13:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4CoulombBarrier.cc,v 1.5 2001/10/08 17:15:48 larazb Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) @@ -71,8 +71,7 @@ G4double G4CoulombBarrier::GetCoulombBarrier(const G4int ARes, const G4int ZRes, if (GetA() == 1 && GetZ() == 0) { Barrier = 0.0; // Neutron Coulomb Barrier is 0 } else { - G4double CompoundRadius = 2.173*fermi*(1.0+0.006103*G4double(GetZ())*G4double(ZRes))/ - (1.0+0.009443*G4double(GetZ())*G4double(ZRes)); + G4double CompoundRadius = CalcCompoundRadius(G4double(ZRes)); Barrier = elm_coupling/CompoundRadius * G4double(GetZ())*G4double(ZRes)/ (pow(G4double(GetA()),1./3.) + pow(G4double(ARes),1./3.)); diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronCoulombBarrier.cc index 85f29dc4fa..98c622a864 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronCoulombBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronCoulombBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DeuteronCoulombBarrier.cc,v 1.2.2.1 2001/06/28 19:13:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DeuteronCoulombBarrier.cc,v 1.4 2001/08/01 17:05:21 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationChannel.cc index 15dac85e4d..51b5dc5926 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DeuteronEvaporationChannel.cc,v 1.2.2.1 2001/06/28 19:13:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DeuteronEvaporationChannel.cc,v 1.4 2001/08/01 17:05:21 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationProbability.cc index a9c49ba56f..a3d04bbe61 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DeuteronEvaporationProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DeuteronEvaporationProbability.cc,v 1.2.2.1 2001/06/28 19:13:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DeuteronEvaporationProbability.cc,v 1.4 2001/08/01 17:05:22 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DiscreteGammaDeexcitation.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DiscreteGammaDeexcitation.cc index edf10c0e3b..3743b4d5d0 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4DiscreteGammaDeexcitation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DiscreteGammaDeexcitation.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DiscreteGammaTransition.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DiscreteGammaTransition.cc index f2d9d3b5f5..0d3801c4c9 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4DiscreteGammaTransition.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DiscreteGammaTransition.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -45,7 +45,7 @@ G4DiscreteGammaTransition::G4DiscreteGammaTransition(const G4NuclearLevel& level): - _level(level), _excitation(0.), _gammaEnergy(0.), _gammaCreationTime(0.) + _gammaEnergy(0.), _level(level), _excitation(0.), _gammaCreationTime(0.) { } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4DummyProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4DummyProbability.cc index 60da19bf16..1f992a2056 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4DummyProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4DummyProbability.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability.cc index cfae6ae771..6c1810e84e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability001.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability001.cc index c4467897f4..4c73bca8ce 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability001.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability001.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability01.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability01.cc index 90ede2cce2..d40f67191c 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability01.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability01.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability10.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability10.cc index 442fdf2fc4..b63e6be894 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability10.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability10.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability100.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability100.cc index 2bef233664..33fc888a5b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability100.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1Probability100.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability001.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability001.cc index a4e6ee5738..4e7dfe6dc4 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability001.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability001.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability01.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability01.cc index 7ca50db992..9963dacd1b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability01.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability01.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability1.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability1.cc index 7b5ee126ae..0358501535 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability1.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability1.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability10.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability10.cc index 30f1c958b0..b24cf988b1 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability10.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability10.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability100.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability100.cc index f447742651..db40dfff17 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability100.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4E1SingleProbability100.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4Evaporation.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4Evaporation.cc index 827415d171..e431e98903 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4Evaporation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4Evaporation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Evaporation.cc,v 1.5.2.1 2001/06/28 19:13:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Evaporation.cc,v 1.7 2001/08/01 17:05:28 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationChannel.cc index 71c44c795f..7612a16389 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EvaporationChannel.cc,v 1.6.2.1 2001/06/28 19:13:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvaporationChannel.cc,v 1.9 2001/10/05 16:13:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) @@ -39,8 +39,8 @@ G4EvaporationChannel::G4EvaporationChannel(const G4int theA, const G4int theZ, Z(theZ), theEvaporationProbabilityPtr(aEmissionStrategy), theCoulombBarrierPtr(aCoulombBarrier), - MaximalKineticEnergy(-1000.0), - EmissionProbability(0.0) + EmissionProbability(0.0), + MaximalKineticEnergy(-1000.0) { theLevelDensityPtr = new G4EvaporationLevelDensityParameter; MyOwnLevelDensity = true; @@ -49,13 +49,13 @@ G4EvaporationChannel::G4EvaporationChannel(const G4int theA, const G4int theZ, G4EvaporationChannel::G4EvaporationChannel(const G4int theA, const G4int theZ, const G4String & aName, G4VEmissionProbability * aEmissionStrategy, G4VCoulombBarrier * aCoulombBarrier): + G4VEvaporationChannel(aName), A(theA), Z(theZ), theEvaporationProbabilityPtr(aEmissionStrategy), theCoulombBarrierPtr(aCoulombBarrier), - MaximalKineticEnergy(-1000.0), EmissionProbability(0.0), - G4VEvaporationChannel(aName) + MaximalKineticEnergy(-1000.0) { theLevelDensityPtr = new G4EvaporationLevelDensityParameter; MyOwnLevelDensity = true; @@ -64,13 +64,13 @@ G4EvaporationChannel::G4EvaporationChannel(const G4int theA, const G4int theZ, c G4EvaporationChannel::G4EvaporationChannel(const G4int theA, const G4int theZ, const G4String * aName, G4VEmissionProbability * aEmissionStrategy, G4VCoulombBarrier * aCoulombBarrier): + G4VEvaporationChannel(aName), A(theA), Z(theZ), theEvaporationProbabilityPtr(aEmissionStrategy), theCoulombBarrierPtr(aCoulombBarrier), - MaximalKineticEnergy(-1000.0), EmissionProbability(0.0), - G4VEvaporationChannel(aName) + MaximalKineticEnergy(-1000.0) { theLevelDensityPtr = new G4EvaporationLevelDensityParameter; MyOwnLevelDensity = true; diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationLevelDensityParameter.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationLevelDensityParameter.cc index aa813580f8..9a0d024f90 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationLevelDensityParameter.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationLevelDensityParameter.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EvaporationLevelDensityParameter.cc,v 1.4.2.1 2001/06/28 19:13:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvaporationLevelDensityParameter.cc,v 1.6 2001/08/01 17:05:29 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationProbability.cc index cabff23a7c..52da4b82d3 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4EvaporationProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EvaporationProbability.cc,v 1.4.2.1 2001/06/28 19:13:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvaporationProbability.cc,v 1.6 2001/08/01 17:05:29 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ExcitationHandler.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ExcitationHandler.cc index 8cd7e88610..6db7eb7613 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4ExcitationHandler.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ExcitationHandler.cc @@ -14,16 +14,13 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ExcitationHandler.cc,v 1.8.2.1 2001/06/28 19:13:15 gunter Exp $ -// GEANT4 tag $Name: $ -// // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) // Modif (30 June 1998) by V. Lara: @@ -38,11 +35,13 @@ #include "G4ExcitationHandler.hh" +#include "g4std/list" -G4ExcitationHandler::G4ExcitationHandler():MyOwnEvaporationClass(true), - MyOwnMultiFragmentationClass(true),MyOwnFermiBreakUpClass(true), - MyOwnPhotonEvaporationClass(true), - maxAForFermiBreakUp(16),maxZForFermiBreakUp(8),minEForMultiFrag(1000.0*MeV) // make Multifrag. unavailable + +G4ExcitationHandler::G4ExcitationHandler(): + maxZForFermiBreakUp(8),maxAForFermiBreakUp(16),minEForMultiFrag(1000.0*MeV), // make Multifrag. unavailable + MyOwnEvaporationClass(true), MyOwnMultiFragmentationClass(true),MyOwnFermiBreakUpClass(true), + MyOwnPhotonEvaporationClass(true) { // change by 3.0 theTableOfParticles = G4ParticleTable::GetParticleTable(); @@ -60,10 +59,10 @@ G4ExcitationHandler::G4ExcitationHandler(const G4ExcitationHandler &right) G4ExcitationHandler::~G4ExcitationHandler() { - if (MyOwnEvaporationClass) delete theEvaporation; - if (MyOwnMultiFragmentationClass) delete theMultiFragmentation; - if (MyOwnFermiBreakUpClass) delete theFermiModel; - if (MyOwnPhotonEvaporationClass) delete thePhotonEvaporation; + if (MyOwnEvaporationClass) delete theEvaporation; + if (MyOwnMultiFragmentationClass) delete theMultiFragmentation; + if (MyOwnFermiBreakUpClass) delete theFermiModel; + if (MyOwnPhotonEvaporationClass) delete thePhotonEvaporation; } @@ -95,230 +94,154 @@ G4ReactionProductVector * G4ExcitationHandler::BreakItUp(const G4Fragment &theIn G4double exEnergy = theInitialState.GetExcitationEnergy(); G4double A = theInitialState.GetA(); G4int Z = G4int(theInitialState.GetZ()); - G4int Zmax = GetMaxZ(); - G4double Amax = GetMaxA(); - - // Test applicability - if (A <= 4) { - G4cerr << "Does not make sense to deexcite" << G4endl; - G4cerr << theInitialState << G4endl; - G4Exception("G4ExcitationHandler.cc: I can't deexcite your compound nucleus"); - } - - // Initial State De-Excitation - if(AG4NucleiPropertiesTable::GetBindingEnergy(Z,A)) { - - theResult = theFermiModel->BreakItUp(theInitialState); - - } else if (exEnergy>GetMinE()*A) { - - theResult = theMultiFragmentation->BreakItUp(theInitialState); - - } else { - - theResult = theEvaporation->BreakItUp(theInitialState); - } - - - - - // De-Excitation loop - - - G4Fragment theExcitedNucleus; G4FragmentVector* theTempResult = 0; + G4Fragment theExcitedNucleus; + + // Test applicability + if (A > 4) { + // Initial State De-Excitation + if(AG4NucleiPropertiesTable::GetBindingEnergy(Z,A)) { + + theResult = theFermiModel->BreakItUp(theInitialState); + + } else if (exEnergy>GetMinE()*A) { + + theResult = theMultiFragmentation->BreakItUp(theInitialState); + + } else { + + theResult = theEvaporation->BreakItUp(theInitialState); + } + - // Check if there are excited fragments - for (G4int i = 0; i < theResult->size(); i++) { - exEnergy = (*theResult)[i]->GetExcitationEnergy(); - if (exEnergy > 0.0) { - A = (*theResult)[i]->GetA(); - Z = G4int((*theResult)[i]->GetZ()); - theExcitedNucleus = *((*theResult)[i]); - // try to de-excite this fragment - if(AG4NucleiPropertiesTable::GetBindingEnergy(Z,A)) { - // Fermi Breakup - theTempResult = theFermiModel->BreakItUp(theExcitedNucleus); - } else if(exEnergy>GetMinE()*A) { - // Multifragmentation - theTempResult = theMultiFragmentation->BreakItUp(theExcitedNucleus); - } else { - // Evaporation - theTempResult = theEvaporation->BreakItUp(theExcitedNucleus); - } - // The Nucleus has been fragmented? - if (theTempResult->size() > 1) { - // If so : - // Remove excited fragment from the result - // delete theResult->removeAt(i--); - delete (*theResult)[i]; - theResult->erase(&(*theResult)[i--]); - // and add theTempResult elements to theResult - while (!theTempResult->empty()) { - theResult->push_back(*(theTempResult->end()-1)); + // De-Excitation loop + // ------------------ + // Check if there are excited fragments + G4std::list theResultList; + G4FragmentVector::iterator j; + G4std::list::iterator i; + for (j = theResult->begin(); j != theResult->end();j++) + theResultList.push_back(*j); + theResult->clear(); + for (i = theResultList.begin(); i != theResultList.end(); i++) { + exEnergy = (*i)->GetExcitationEnergy(); + if (exEnergy > 0.0) { + A = (*i)->GetA(); + Z = G4int((*i)->GetZ()); + theExcitedNucleus = *(*i); + // try to de-excite this fragment + if(AG4NucleiPropertiesTable::GetBindingEnergy(Z,A)) { + // Fermi Breakup + theTempResult = theFermiModel->BreakItUp(theExcitedNucleus); + } else if(exEnergy>GetMinE()*A) { + // Multifragmentation + theTempResult = theMultiFragmentation->BreakItUp(theExcitedNucleus); + } else { + // Evaporation + theTempResult = theEvaporation->BreakItUp(theExcitedNucleus); + } + // The Nucleus has been fragmented? + if (theTempResult->size() > 1) { + // If so : + + // Remove excited fragment from the result + // delete theResult->removeAt(i--); + delete (*i); + i = theResultList.erase(i--); + // and add theTempResult elements to theResult + while (!theTempResult->empty()) { + theResultList.push_back(*(theTempResult->end()-1)); theTempResult->pop_back(); + } + delete theTempResult; + } else { // If not : + // it doesn't matter, we Follow with the next fragment but + // I have to make + while ( !theTempResult->empty() ) { + delete *(theTempResult->end()-1); + theTempResult->pop_back(); + } + delete theTempResult; } - delete theTempResult; - } else { // If not : - // it doesn't matter, we Follow with the next fragment but - // I have to make - while ( !theTempResult->empty() ) { - delete *(theTempResult->end()-1); - theTempResult->pop_back(); - } - delete theTempResult; } } + for (i = theResultList.begin(); i != theResultList.end(); i++) + theResult->push_back(*i); + theResultList.clear(); + } else { // if A > 4 + theResult->push_back(new G4Fragment(theInitialState)); } - -// // Check if there are excited fragments -// G4FragmentVector::iterator i; -// for (i = theResult->begin(); i != theResult->end(); i++) { -// exEnergy = (*i)->GetExcitationEnergy(); -// if (exEnergy > 0.0) { -// A = (*i)->GetA(); -// Z = G4int((*i)->GetZ()); -// theExcitedNucleus = *(*i); -// // try to de-excite this fragment -// if(AG4NucleiPropertiesTable::GetBindingEnergy(Z,A)) { -// // Fermi Breakup -// theTempResult = theFermiModel->BreakItUp(theExcitedNucleus); -// } else if(exEnergy>GetMinE()*A) { -// // Multifragmentation -// theTempResult = theMultiFragmentation->BreakItUp(theExcitedNucleus); -// } else { -// // Evaporation -// theTempResult = theEvaporation->BreakItUp(theExcitedNucleus); -// } -// // The Nucleus has been fragmented? -// if (theTempResult->size() > 1) { -// // If so : - -// // Remove excited fragment from the result -// // delete theResult->removeAt(i--); -// delete *i; -// theResult->erase(i--); -// G4FragmentVector::iterator tmpIterator = i; -// i = theResult->begin(); -// while ( i != tmpIterator) i++; -// // and add theTempResult elements to theResult -// while (theTempResult->size() > 0) { -// theResult->insert(theTempResult->begin()); -// theTempResult->erase(theTempResult->begin()); -// } -// delete theTempResult; -// } else { // If not : -// // it doesn't matter, we Follow with the next fragment but -// // I have to make -// while ( !theTempResult->empty() ) { -// delete *(theTempResult->end()-1); -// theTempResult->pop_back(); -// } -// delete theTempResult; -// } -// } -// } - // Now we try to deexcite by means of PhotonEvaporation those fragments // which are excited. theTempResult = 0; + G4std::list theResultList; + G4std::list::iterator j; + G4FragmentVector::iterator i; + for (i = theResult->begin(); i != theResult->end();i++) + theResultList.push_back(*i); + theResult->clear(); - for (G4int j = 0; j < theResult->size(); j++) { - if (theResult->operator[](j)->GetExcitationEnergy() > 0.0 && - theResult->operator[](j)->GetA() > 1) { - theExcitedNucleus = *(theResult->operator[](j)); - theTempResult = thePhotonEvaporation->BreakItUp(theExcitedNucleus); - // If Gamma Evaporation has succeed then - if (theTempResult->size() > 1) { - // Remove excited fragment from the result - delete theResult->operator[](j); - theResult->erase(&theResult->operator[](j--)); - // and add theTempResult elements to theResult - while (!theTempResult->empty()) { - theResult->push_back(*(theTempResult->end()-1)); - theTempResult->pop_back(); - } - delete theTempResult; - } - // In other case, just clean theTempResult and continue - else { - while (!theTempResult->empty()) { - delete *(theTempResult->end()-1); - theTempResult->pop_back(); - } - delete theTempResult; + for (j = theResultList.begin(); j != theResultList.end(); j++) { + if ((*j)->GetExcitationEnergy() > 0.0 && (*j)->GetA() > 1) { + theExcitedNucleus = *(*j); + theTempResult = thePhotonEvaporation->BreakItUp(theExcitedNucleus); + // If Gamma Evaporation has succeed then + if (theTempResult->size() > 1) { + // Remove excited fragment from the result + delete (*j); + theResultList.erase(j--); + // and add theTempResult elements to theResult + while (!theTempResult->empty()) { + theResultList.push_back(*(theTempResult->end()-1)); + theTempResult->pop_back(); + } + delete theTempResult; + } + // In other case, just clean theTempResult and continue + else { + while (!theTempResult->empty()) { + delete *(theTempResult->end()-1); + theTempResult->pop_back(); + } + delete theTempResult; #ifdef debug - G4cout << "G4ExcitationHandler: Gamma Evaporation could not deexcite the nucleus: " - << G4endl - << "-----------------------------------------------------------------------" - << G4endl; - G4cout << theExcitedNucleus - << G4endl - << "-----------------------------------------------------------------------" - << G4endl; + G4cout << "G4ExcitationHandler: Gamma Evaporation could not deexcite the nucleus: " + << G4endl + << "-----------------------------------------------------------------------" + << G4endl; + G4cout << theExcitedNucleus + << G4endl + << "-----------------------------------------------------------------------" + << G4endl; #endif - G4double GammaEnergy = (theResult->operator[](j))->GetExcitationEnergy(); - G4double cosTheta = 1. - 2. * G4UniformRand(); - G4double sinTheta = sqrt(1. - cosTheta * cosTheta); - G4double phi = twopi * G4UniformRand(); - G4ThreeVector GammaP(GammaEnergy * sinTheta * cos(phi), - GammaEnergy * sinTheta * sin(phi), - GammaEnergy * cosTheta ); - - - G4LorentzVector Gamma4P(GammaP,GammaEnergy); - G4double Mass = (theResult->operator[](j))->GetGroundStateMass(); - G4ThreeVector ResidualP = (theResult->operator[](j))->GetMomentum().vect(); - G4LorentzVector Residual4P(ResidualP,sqrt(Mass*Mass+ResidualP.mag2())); - (theResult->operator[](j))->SetMomentum(Residual4P); - - } - } + G4double GammaEnergy = (*j)->GetExcitationEnergy(); + G4double cosTheta = 1. - 2. * G4UniformRand(); + G4double sinTheta = sqrt(1. - cosTheta * cosTheta); + G4double phi = twopi * G4UniformRand(); + G4ThreeVector GammaP(GammaEnergy * sinTheta * cos(phi), + GammaEnergy * sinTheta * sin(phi), + GammaEnergy * cosTheta ); + + + G4LorentzVector Gamma4P(GammaP,GammaEnergy); + G4double Mass = (*j)->GetGroundStateMass(); + G4ThreeVector ResidualP = (*j)->GetMomentum().vect(); + G4LorentzVector Residual4P(ResidualP,sqrt(Mass*Mass+ResidualP.mag2())); + (*j)->SetMomentum(Residual4P); + theResultList.push_back( new G4Fragment(Gamma4P,G4Gamma::GammaDefinition()) ); + } + } } + for (j = theResultList.begin(); j != theResultList.end(); j++) + theResult->push_back(*j); + theResultList.clear(); -// for (i = theResult->begin(); i != theResult->end(); i++) { -// if ((*i)->GetExcitationEnergy() > 0.0 && (*i)->GetA() > 1) { -// theExcitedNucleus = **i; -// -// theTempResult = thePhotonEvaporation->BreakItUp(theExcitedNucleus); -// -// // If Gamma Evaporation has succeed then -// if (theTempResult->size() > 1) { -// // Remove excited fragment from the result -// delete *i; -// theResult->erase(i--); -// G4FragmentVector::iterator tmpIterator = i; -// i = theResult->begin(); -// while (i != tmpIterator) i++; -// // and add theTempResult elements to theResult -// while (!theTempResult->empty()) { -// theResult->push_back(*(theTempResult->end()-1)); -// theTempResult->pop_back(); -// } -// } -// // In other case, just clean theTempResult and continue -// else { -// while (!theTempResult->empty()) { -// delete *(theTempResult->end()-1); -// theTempResult->pop_back(); -// } -//#ifdef debug -// G4cout << "G4ExcitationHandler: Gamma Evaporation could not deexcite the nucleus: " -// << G4endl; -// G4cout << theExcitedNucleus << G4endl; -//#endif -// } -// // theTempResult->clearAndDestroy(); -// delete theTempResult; -// } -// } #ifdef debug CheckConservation(theInitialState,theResult); @@ -348,7 +271,7 @@ G4ExcitationHandler::Transform(G4FragmentVector * theFragmentVector) const G4FragmentVector::iterator i; for (i = theFragmentVector->begin(); i != theFragmentVector->end(); i++) { -// theFragmentVector->at(i)->DumpInfo(); + // std::cout << (*i) <<'\n'; theFragmentA = G4int((*i)->GetA()); theFragmentZ = G4int((*i)->GetZ()); theFragmentMomentum = (*i)->GetMomentum(); @@ -366,18 +289,18 @@ G4ExcitationHandler::Transform(G4FragmentVector * theFragmentVector) const } else if (theFragmentA == 3 && theFragmentZ == 2) { // helium3 theKindOfFragment = theHelium3; } else if (theFragmentA == 4 && theFragmentZ == 2) { // alpha - theKindOfFragment = theAlpha; + theKindOfFragment = theAlpha; } else { theKindOfFragment = theTableOfParticles->FindIon(theFragmentZ,theFragmentA,0,theFragmentZ); } if (theKindOfFragment != 0) - { - G4ReactionProduct * theNew = new G4ReactionProduct(theKindOfFragment); - theNew->SetMomentum(theFragmentMomentum.vect()); - theNew->SetTotalEnergy(theFragmentMomentum.e()); - theNew->SetFormationTime((*i)->GetCreationTime()); - theReactionProductVector->insert(theNew); - } + { + G4ReactionProduct * theNew = new G4ReactionProduct(theKindOfFragment); + theNew->SetMomentum(theFragmentMomentum.vect()); + theNew->SetTotalEnergy(theFragmentMomentum.e()); + theNew->SetFormationTime((*i)->GetCreationTime()); + theReactionProductVector->push_back(theNew); + } } if (theFragmentVector != 0) { @@ -387,18 +310,24 @@ G4ExcitationHandler::Transform(G4FragmentVector * theFragmentVector) const } delete theFragmentVector; } - G4int debugit; - for(debugit=0; debugitlength(); debugit++) - { - if(theReactionProductVector->at(debugit)->GetTotalEnergy()<1.*eV) + G4ReactionProductVector::iterator debugit; + for(debugit=theReactionProductVector->begin(); + debugit!=theReactionProductVector->end(); debugit++) { - G4cerr << "G4ExcitationHandler: Warning: Photonevaporation data not exact."<removeAt(debugit); + if((*debugit)->GetTotalEnergy()<1.*eV) + { + if(getenv("G4DebugPhotonevaporationData")) + { + G4cerr << "G4ExcitationHandler: Warning: Photonevaporation data not exact."<erase(debugit); + if(debugit!=theReactionProductVector->begin()) debugit--; + } } - } return theReactionProductVector; } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4FermiBreakUp.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4FermiBreakUp.cc index 468087922c..4c12591163 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FermiBreakUp.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FermiBreakUp.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FermiBreakUp.cc,v 1.4.2.1 2001/06/28 19:13:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FermiBreakUp.cc,v 1.6 2001/08/01 17:05:30 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4FermiConfiguration.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4FermiConfiguration.cc index 75b12abba4..96e2095f42 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FermiConfiguration.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FermiConfiguration.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FermiConfiguration.cc,v 1.5.2.1 2001/06/28 19:13:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FermiConfiguration.cc,v 1.8 2001/10/05 16:13:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) @@ -293,7 +293,7 @@ const G4FermiConfiguration & G4FermiConfiguration::operator=(const G4FermiConfig G4bool G4FermiConfiguration::operator==(const G4FermiConfiguration &right) const { if (Index.size() == right.Index.size()) { - for (G4int i = 0; i < Index.size(); i++) { + for (unsigned int i = 0; i < Index.size(); i++) { if (Index[i] != right.Index[i]) return false; } return true; @@ -388,7 +388,7 @@ G4double G4FermiConfiguration::CoulombBarrier(void) G4double SumA = 0, SumZ = 0; G4double CoulombEnergy = 0.; - for (G4int i = 0; i < Index.size(); i++) { + for (unsigned int i = 0; i < Index.size(); i++) { G4double z = theListOfFragments[Index[i]-1]->GetZ(); G4double a = theListOfFragments[Index[i]-1]->GetA(); CoulombEnergy += (z*z) / pow(a, 1./3.); diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4FermiConfigurationList.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4FermiConfigurationList.cc index f1ae6fdcea..7192e94c0e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FermiConfigurationList.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FermiConfigurationList.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FermiConfigurationList.cc,v 1.5.2.1 2001/06/28 19:13:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FermiConfigurationList.cc,v 1.7 2001/08/01 17:05:30 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionBarrier.cc index 3435b29c06..1600708bb9 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FissionBarrier.cc,v 1.4.2.1 2001/06/28 19:13:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FissionBarrier.cc,v 1.6 2001/08/01 17:05:30 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionLevelDensityParameter.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionLevelDensityParameter.cc index 308afa76d2..b7fed82757 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionLevelDensityParameter.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionLevelDensityParameter.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FissionLevelDensityParameter.cc,v 1.4.2.1 2001/06/28 19:13:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FissionLevelDensityParameter.cc,v 1.6 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionParameters.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionParameters.cc index 186a582472..93258bccfa 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionParameters.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionParameters.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FissionParameters.cc,v 1.5.2.1 2001/06/28 19:13:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FissionParameters.cc,v 1.7 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionProbability.cc index d385754f00..83973bf661 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4FissionProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4FissionProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FissionProbability.cc,v 1.4.2.1 2001/06/28 19:13:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FissionProbability.cc,v 1.6 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4He3CoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4He3CoulombBarrier.cc index 2353d78fc4..e2bc37003f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4He3CoulombBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4He3CoulombBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4He3CoulombBarrier.cc,v 1.2.2.1 2001/06/28 19:13:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He3CoulombBarrier.cc,v 1.4 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationChannel.cc index 7a3b48c32f..b5204516a1 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4He3EvaporationChannel.cc,v 1.2.2.1 2001/06/28 19:13:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He3EvaporationChannel.cc,v 1.4 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationProbability.cc index 1fcc8b9fee..cda6dce994 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4He3EvaporationProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4He3EvaporationProbability.cc,v 1.2.2.1 2001/06/28 19:13:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He3EvaporationProbability.cc,v 1.4 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4He5FermiFragment.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4He5FermiFragment.cc index afe928ea39..973c7e209b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4He5FermiFragment.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4He5FermiFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4He5FermiFragment.cc,v 1.4.2.1 2001/06/28 19:13:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4He5FermiFragment.cc,v 1.6 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4Li5FermiFragment.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4Li5FermiFragment.cc index db933da065..e4489600c5 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4Li5FermiFragment.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4Li5FermiFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Li5FermiFragment.cc,v 1.4.2.1 2001/06/28 19:13:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Li5FermiFragment.cc,v 1.6 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronCoulombBarrier.cc index 8d5d0728b1..4376c80999 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronCoulombBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronCoulombBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronCoulombBarrier.cc,v 1.2.2.1 2001/06/28 19:13:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronCoulombBarrier.cc,v 1.4 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationChannel.cc index a0aa452dca..a245f42495 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronEvaporationChannel.cc,v 1.2.2.1 2001/06/28 19:13:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronEvaporationChannel.cc,v 1.4 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationProbability.cc index ca22d695aa..e3c662f07e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4NeutronEvaporationProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronEvaporationProbability.cc,v 1.2.2.1 2001/06/28 19:13:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronEvaporationProbability.cc,v 1.4 2001/08/01 17:05:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4NuclearLevel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4NuclearLevel.cc index 2b0bfbffbc..90207ec8b2 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4NuclearLevel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4NuclearLevel.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -53,7 +53,7 @@ G4NuclearLevel::G4NuclearLevel(const G4double energy, const G4double halfLife, _energy = energy; _halfLife = halfLife; _angularMomentum = angularMomentum; - G4int i; + unsigned int i; for (i=0; i #include "g4std/fstream" #include "g4std/strstream" +#include "g4std/algorithm" G4NuclearLevelManager::G4NuclearLevelManager(): _nucleusA(0), _nucleusZ(0), _levels(0), _levelEnergy(0), _gammaEnergy(0), _probability(0) { } -G4NuclearLevelManager::G4NuclearLevelManager(G4int Z, G4int A): _nucleusZ(Z), _nucleusA(A) +G4NuclearLevelManager::G4NuclearLevelManager(G4int Z, G4int A): _nucleusA(A), _nucleusZ(Z) { @@ -65,11 +66,14 @@ G4NuclearLevelManager::G4NuclearLevelManager(G4int Z, G4int A): _nucleusZ(Z), _n MakeLevels(); } - G4NuclearLevelManager::~G4NuclearLevelManager() { if ( _levels ) { - if (_levels->entries()>0) _levels->clearAndDestroy(); + if (_levels->size()>0) + { + G4std::for_each(_levels->begin(), _levels->end(), DeleteLevel()); + _levels->clear(); + } delete _levels; _levels = 0; } @@ -115,7 +119,7 @@ G4bool G4NuclearLevelManager::IsValid(G4int Z, G4int A) const G4int G4NuclearLevelManager::NumberOfLevels() const { G4int n = 0; - if (_levels != 0) n = _levels->entries(); + if (_levels != 0) n = _levels->size(); return n; } @@ -133,10 +137,10 @@ const G4NuclearLevel* G4NuclearLevelManager::NearestLevel(G4double energy, G4dou G4double diff = 9999. * GeV; if (_levels != 0) { - G4int i = 0; - for (i=0; i<_levels->entries(); i++) + unsigned int i = 0; + for (i=0; i<_levels->size(); i++) { - G4double e = _levels->at(i)->Energy(); + G4double e = _levels->operator[](i)->Energy(); G4double eDiff = abs(e - energy); if (eDiff < diff && eDiff <= eDiffMax) { @@ -145,8 +149,8 @@ const G4NuclearLevel* G4NuclearLevelManager::NearestLevel(G4double energy, G4dou } } } - if (_levels != 0 && iNear >= 0 && iNear < _levels->entries()) - { return _levels->at(iNear); } + if (_levels != 0 && iNear >= 0 && iNear < static_cast(_levels->size()) ) + { return _levels->operator[](iNear); } else { return 0; } } @@ -157,7 +161,7 @@ G4double G4NuclearLevelManager::MinLevelEnergy() const G4double eMin = 9999.*GeV; if (_levels != 0) { - if (_levels->entries() > 0) eMin = _levels->first()->Energy(); + if (_levels->size() > 0) eMin = _levels->front()->Energy(); } return eMin; } @@ -168,7 +172,7 @@ G4double G4NuclearLevelManager::MaxLevelEnergy() const G4double eMax = 0.; if (_levels != 0) { - if (_levels->entries() > 0) eMax = _levels->last()->Energy(); + if (_levels->size() > 0) eMax = _levels->back()->Energy(); } return eMax; } @@ -176,14 +180,14 @@ G4double G4NuclearLevelManager::MaxLevelEnergy() const const G4NuclearLevel* G4NuclearLevelManager::HighestLevel() const { - if (_levels!= 0 && _levels->entries() > 0) return _levels->first(); + if (_levels!= 0 && _levels->size() > 0) return _levels->front(); else return 0; } const G4NuclearLevel* G4NuclearLevelManager::LowestLevel() const { - if (_levels != 0 && _levels->entries() > 0) return _levels->last(); + if (_levels != 0 && _levels->size() > 0) return _levels->back(); else return 0; } @@ -242,7 +246,10 @@ void G4NuclearLevelManager::MakeLevels() if (_levels != 0) { - if (_levels->entries()>0) _levels->clearAndDestroy(); + if (_levels->size()>0) + { + for(unsigned int i=0; i<_levels->size(); i++) delete _levels->operator[](i); + } delete _levels; } @@ -296,7 +303,7 @@ void G4NuclearLevelManager::MakeLevels() thisLevelEnergies, thisLevelWeights, thisLevelPolarities); - _levels->insert(newLevel); + _levels->push_back(newLevel); // Reset data vectors thisLevelEnergies.clear(); thisLevelWeights.clear(); @@ -318,9 +325,9 @@ void G4NuclearLevelManager::MakeLevels() thisLevelEnergies, thisLevelWeights, thisLevelPolarities); - _levels->insert(newLevel); + _levels->push_back(newLevel); } - + G4std::sort(_levels->begin(), _levels->end()); return; } @@ -328,7 +335,7 @@ void G4NuclearLevelManager::MakeLevels() void G4NuclearLevelManager::PrintAll() { G4int nLevels = 0; - if (_levels != 0) nLevels = _levels->entries(); + if (_levels != 0) nLevels = _levels->size(); G4cout << " ==== G4NuclearLevelManager ==== (" << _nucleusZ << ", " << _nucleusA << ") has " << nLevels << " levels" << G4endl @@ -338,7 +345,7 @@ void G4NuclearLevelManager::PrintAll() G4int i = 0; for (i=0; iat(i)->PrintAll(); } + { _levels->operator[](i)->PrintAll(); } } @@ -355,12 +362,13 @@ G4NuclearLevelManager::G4NuclearLevelManager(const G4NuclearLevelManager &right) if (right._levels != 0) { _levels = new G4PtrLevelVector; - G4int n = right._levels->entries(); + G4int n = right._levels->size(); G4int i; for (i=0; iinsert(new G4NuclearLevel(*(right._levels->at(i)))); + _levels->push_back(new G4NuclearLevel(*(right._levels->operator[](i)))); } + G4std::sort(_levels->begin(), _levels->end()); } else { diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4PairingCorrection.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4PairingCorrection.cc index 01e7d474f9..c1933ab349 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4PairingCorrection.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4PairingCorrection.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PairingCorrection.cc,v 1.1.2.1 2001/06/28 19:13:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PairingCorrection.cc,v 1.4 2001/10/05 16:13:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -48,4 +48,5 @@ G4PairingCorrection G4PairingCorrection::theInstance(10.0); G4PairingCorrection::G4PairingCorrection(G4double dummy) { G4double even_more_dummy = dummy; + even_more_dummy/=2.; } diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4PhotonEvaporation.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4PhotonEvaporation.cc index f1074b8ed3..35d6b6d3b4 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4PhotonEvaporation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4PhotonEvaporation.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonCoulombBarrier.cc index c6e8b0e21c..05fc8fa5ad 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonCoulombBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonCoulombBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ProtonCoulombBarrier.cc,v 1.2.2.1 2001/06/28 19:13:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProtonCoulombBarrier.cc,v 1.4 2001/08/01 17:05:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationChannel.cc index 88ea77fe6c..aeb26060df 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ProtonEvaporationChannel.cc,v 1.2.2.1 2001/06/28 19:13:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProtonEvaporationChannel.cc,v 1.4 2001/08/01 17:05:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationProbability.cc index 705ec099fc..08647472ce 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4ProtonEvaporationProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ProtonEvaporationProbability.cc,v 1.2.2.1 2001/06/28 19:13:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProtonEvaporationProbability.cc,v 1.4 2001/08/01 17:05:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4RandGeneralTmp.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4RandGeneralTmp.cc index f45ecec63e..5c59eb8eda 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4RandGeneralTmp.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4RandGeneralTmp.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4Solver.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4Solver.cc index 9833fb55da..abd83b1841 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4Solver.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4Solver.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Solver.cc,v 1.2.2.1 2001/06/28 19:13:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Solver.cc,v 1.4 2001/08/01 17:05:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StableFermiFragment.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StableFermiFragment.cc index 2d75bf0080..c7dcac8b24 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StableFermiFragment.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StableFermiFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StableFermiFragment.cc,v 1.3.2.1 2001/06/28 19:13:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StableFermiFragment.cc,v 1.5 2001/08/01 17:05:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMF.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMF.cc index 9f8ff173f0..5855fbf33e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMF.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMF.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMF.cc,v 1.6.2.1 2001/06/28 19:13:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMF.cc,v 1.9 2001/10/05 16:13:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -102,7 +102,6 @@ G4FragmentVector * G4StatMF::BreakItUp(const G4Fragment &theFragment) G4int Iterations = 0; G4double Temperature = 0.0; - G4double EnergyCoulomb = 0.0; G4bool FirstTime = true; G4StatMFChannel * theChannel = 0; diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFChannel.cc index 52fa41637f..e9d56b2c29 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFChannel.cc,v 1.5.2.1 2001/06/28 19:13:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFChannel.cc,v 1.8 2001/10/05 16:13:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -62,7 +62,7 @@ G4bool G4StatMFChannel::operator!=(const G4StatMFChannel & right) const G4bool G4StatMFChannel::CheckFragments(void) { - for (G4int i = 0; i < _theFragments.size(); i++) { + for (unsigned int i = 0; i < _theFragments.size(); i++) { G4int A = G4int(_theFragments[i]->GetA()); G4int Z = G4int(_theFragments[i]->GetZ()); if (A > 1 && (Z >= A || Z <= 0) || (A==1 && Z > A) || A <= 0) return false; @@ -94,7 +94,7 @@ void G4StatMFChannel::CreateFragment(const G4double A, const G4double Z) G4double G4StatMFChannel::GetFragmentsCoulombEnergy(void) { G4double Coulomb = 0.0; - for (G4int i = 0;i < _theFragments.size(); i++) + for (unsigned int i = 0;i < _theFragments.size(); i++) Coulomb += _theFragments[i]->GetCoulombEnergy(); return Coulomb; } @@ -107,7 +107,7 @@ G4double G4StatMFChannel::GetFragmentsEnergy(const G4double T) const G4double TranslationalEnergy = (3./2.)*T*_theFragments.size(); - for (G4int i = 0;i < _theFragments.size(); i++) + for (unsigned int i = 0;i < _theFragments.size(); i++) Energy += _theFragments[i]->GetEnergy(T); return Energy + TranslationalEnergy; } @@ -126,7 +126,7 @@ G4FragmentVector * G4StatMFChannel::GetFragments(const G4double anA, G4FragmentVector * theResult = new G4FragmentVector; - for (G4int i = 0; i < _theFragments.size(); i++) + for (unsigned int i = 0; i < _theFragments.size(); i++) theResult->push_back(_theFragments[i]->GetFragment(T)); return theResult; @@ -175,7 +175,7 @@ void G4StatMFChannel::PlaceFragments(const G4double anA) // Sample the position of the remaining fragments G4bool ThereAreOverlaps = false; - for (G4int i = 1; i < _theFragments.size(); i++) { + for (unsigned int i = 1; i < _theFragments.size(); i++) { G4int counter = 0; do { R = (Rsys - R0*pow(_theFragments[i]->GetA(),1./3.))* @@ -183,7 +183,7 @@ void G4StatMFChannel::PlaceFragments(const G4double anA) _theFragments[i]->SetPosition(IsotropicVector(R)); // Check that there are not overlapping fragments - for (G4int j = 0; j < i; j++) { + for (unsigned int j = 0; j < i; j++) { G4ThreeVector FragToFragVector = _theFragments[i]->GetPosition() - _theFragments[j]->GetPosition(); diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFFragment.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFFragment.cc index 432264e39e..2e657c82ff 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFFragment.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFFragment.cc,v 1.6.2.1 2001/06/28 19:13:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFFragment.cc,v 1.8 2001/08/01 17:05:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroBiNucleon.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroBiNucleon.cc index b45ed45266..40d7f0edf4 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroBiNucleon.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroBiNucleon.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroBiNucleon.cc,v 1.6.2.1 2001/06/28 19:13:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroBiNucleon.cc,v 1.8 2001/08/01 17:05:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroChemicalPotential.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroChemicalPotential.cc index b3f3e6e2b2..2b8b1cc5cd 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroChemicalPotential.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroChemicalPotential.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroChemicalPotential.cc,v 1.4.2.1 2001/06/28 19:13:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroChemicalPotential.cc,v 1.6 2001/08/01 17:05:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroMultiNucleon.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroMultiNucleon.cc index 2c57dd959f..5530b3710b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroMultiNucleon.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroMultiNucleon.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroMultiNucleon.cc,v 1.7.2.1 2001/06/28 19:13:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroMultiNucleon.cc,v 1.9 2001/08/01 17:05:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroMultiplicity.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroMultiplicity.cc index 6dd5dad594..d3a8e032f1 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroMultiplicity.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroMultiplicity.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroMultiplicity.cc,v 1.3.2.1 2001/06/28 19:13:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroMultiplicity.cc,v 1.5 2001/08/01 17:05:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroNucleon.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroNucleon.cc index e9c7295e80..eb78405e63 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroNucleon.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroNucleon.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroNucleon.cc,v 1.5.2.1 2001/06/28 19:13:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroNucleon.cc,v 1.7 2001/08/01 17:05:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTemperature.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTemperature.cc index cf12bc2513..0c096fce4e 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTemperature.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTemperature.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroTemperature.cc,v 1.6.2.1 2001/06/28 19:13:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroTemperature.cc,v 1.8 2001/08/01 17:05:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTetraNucleon.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTetraNucleon.cc index f93c7a3a94..aa331e4d32 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTetraNucleon.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTetraNucleon.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroTetraNucleon.cc,v 1.6.2.1 2001/06/28 19:13:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroTetraNucleon.cc,v 1.8 2001/08/01 17:05:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTriNucleon.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTriNucleon.cc index b47eb2ec5a..9ed0289da9 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTriNucleon.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacroTriNucleon.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroTriNucleon.cc,v 1.6.2.1 2001/06/28 19:13:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroTriNucleon.cc,v 1.8 2001/08/01 17:05:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacrocanonical.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacrocanonical.cc index 2e16a29d23..720c639bc5 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacrocanonical.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMacrocanonical.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMacroCanonical.cc,v 1.7.2.1 2001/06/28 19:13:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMacroCanonical.cc,v 1.10 2001/10/06 07:33:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara // -------------------------------------------------------------------- @@ -85,7 +85,7 @@ void G4StatMFMacroCanonical::Initialize(const G4Fragment & theFragment) { // Excitation Energy - G4double U = theFragment.GetExcitationEnergy(); +// G4double U = theFragment.GetExcitationEnergy(); G4double A = theFragment.GetA(); G4double Z = theFragment.GetZ(); @@ -159,7 +159,6 @@ G4StatMFChannel * G4StatMFMacroCanonical::ChooseAandZ(const G4Fragment &theFragm G4std::vector FragmentsA; G4int i = 0; - G4int s = 0; for (i = 0; i < A; i++) { // if (ANumbers(i) == 0) continue; for (G4int j = 0; j < ANumbers[i]; j++) FragmentsA.push_back(i+1); diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicroManager.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicroManager.cc index 580c6ea0b6..bf64a20471 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicroManager.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicroManager.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMicroManager.cc,v 1.2.2.1 2001/06/28 19:13:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMicroManager.cc,v 1.5 2001/10/05 16:13:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -186,7 +186,7 @@ G4StatMFChannel * G4StatMFMicroManager::ChooseChannel(const G4double A0, const G G4double RandNumber = _Normalization * _WW * G4UniformRand(); G4double AccumWeight = 0.0; - for (G4int i = 0; i < _Partition.size(); i++) { + for (unsigned int i = 0; i < _Partition.size(); i++) { AccumWeight += _Partition[i]->GetProbability(); if (RandNumber < AccumWeight) return _Partition[i]->ChooseZ(A0,Z0,MeanT); diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicroPartition.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicroPartition.cc index 231f2fd2ad..6e59c788f3 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicroPartition.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicroPartition.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMicroPartition.cc,v 1.9.2.1 2001/06/28 19:13:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMicroPartition.cc,v 1.12 2001/10/05 16:13:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara // -------------------------------------------------------------------- @@ -96,7 +96,7 @@ G4double G4StatMFMicroPartition::GetCoulombEnergy(void) (G4StatMFParameters::Getr0()*pow(theA,1./3.)); - for (G4int i = 0; i < _thePartition.size(); i++) + for (unsigned int i = 0; i < _thePartition.size(); i++) CoulombEnergy += _theCoulombFreeEnergy[i] - elm_coupling*(3./5.)* (theZ/theA)*(theZ/theA)*pow(_thePartition[i],5./3.)/ G4StatMFParameters::Getr0(); @@ -114,7 +114,7 @@ G4double G4StatMFMicroPartition::GetPartitionEnergy(const G4double T) // We use the aprox that Z_f ~ Z/A * A_f - for (G4int i = 0; i < _thePartition.size(); i++) { + for (unsigned int i = 0; i < _thePartition.size(); i++) { if (_thePartition[i] == 0 || _thePartition[i] == 1) { PartitionEnergy += _theCoulombFreeEnergy[i]; @@ -227,10 +227,10 @@ G4double G4StatMFMicroPartition::CalcPartitionProbability(const G4double U, // Factorial of fragment multiplicity G4double Fact = 1.0; - G4int i; + unsigned int i; for (i = 0; i < _thePartition.size() - 1; i++) { G4double f = 1.0; - for (G4int ii = i+1; i< _thePartition.size(); i++) + for (unsigned int ii = i+1; i< _thePartition.size(); i++) if (_thePartition[i] == _thePartition[ii]) f++; Fact *= f; } @@ -302,7 +302,7 @@ G4StatMFChannel * G4StatMFMicroPartition::ChooseZ(const G4double A0, const G4dou do { G4double CC = G4StatMFParameters::GetGamma0()*8.0; G4int SumZ = 0; - for (G4int i = 0; i < _thePartition.size(); i++) { + for (unsigned int i = 0; i < _thePartition.size(); i++) { G4double ZMean; G4double Af = _thePartition[i]; if (Af > 1.5 && Af < 4.5) ZMean = 0.5*Af; @@ -320,7 +320,7 @@ G4StatMFChannel * G4StatMFMicroPartition::ChooseZ(const G4double A0, const G4dou FragmentsZ[0] += ZBalance; G4StatMFChannel * theChannel = new G4StatMFChannel; - for (G4int i = 0; i < _thePartition.size(); i++) + for (unsigned int i = 0; i < _thePartition.size(); i++) theChannel->CreateFragment(_thePartition[i],FragmentsZ[i]); diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicrocanonical.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicrocanonical.cc index cfc3516c04..0bd38b1193 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicrocanonical.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFMicrocanonical.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFMicroCanonical.cc,v 1.5.2.1 2001/06/28 19:13:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFMicroCanonical.cc,v 1.9 2001/10/06 08:32:28 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara @@ -65,7 +65,7 @@ G4bool G4StatMFMicroCanonical::operator!=(const G4StatMFMicroCanonical & right) // constructor -G4StatMFMicroCanonical::G4StatMFMicroCanonical(const G4Fragment & theFragment) +G4StatMFMicroCanonical::G4StatMFMicroCanonical(G4Fragment const & theFragment) { // Perform class initialization Initialize(theFragment); @@ -91,7 +91,7 @@ G4StatMFMicroCanonical::~G4StatMFMicroCanonical() void G4StatMFMicroCanonical::Initialize(const G4Fragment & theFragment) { - G4int i; + unsigned int i; // Excitation Energy G4double U = theFragment.GetExcitationEnergy(); @@ -204,7 +204,7 @@ G4double G4StatMFMicroCanonical::CalcEntropyOfCompoundNucleus(const G4Fragment & // Calculates Temperature and Entropy of compound nucleus { const G4double A = theFragment.GetA(); - const G4double Z = theFragment.GetZ(); +// const G4double Z = theFragment.GetZ(); const G4double U = theFragment.GetExcitationEnergy(); const G4double A13 = pow(A,1.0/3.0); @@ -286,7 +286,7 @@ G4StatMFChannel * G4StatMFMicroCanonical::ChooseAandZ(const G4Fragment & theFra } else { G4double AccumWeight = _WCompoundNucleus; - for (G4int i = 1; i <= _ThePartitionManagerVector.size(); i++) { + for (unsigned int i = 1; i <= _ThePartitionManagerVector.size(); i++) { AccumWeight += _ThePartitionManagerVector[i-1]->GetProbability(); if (RandNumber < AccumWeight) { return _ThePartitionManagerVector[i-1]-> diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFParameters.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFParameters.cc index 15fd0501f6..903db6a3a4 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFParameters.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4StatMFParameters.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StatMFParameters.cc,v 1.3.2.1 2001/06/28 19:13:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StatMFParameters.cc,v 1.5 2001/08/01 17:05:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonCoulombBarrier.cc index 3ca7799e61..81a79b8097 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonCoulombBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonCoulombBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TritonCoulombBarrier.cc,v 1.2.2.1 2001/06/28 19:13:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TritonCoulombBarrier.cc,v 1.4 2001/08/01 17:05:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationChannel.cc index dc2402a47c..ce6862a963 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TritonEvaporationChannel.cc,v 1.2.2.1 2001/06/28 19:13:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TritonEvaporationChannel.cc,v 1.4 2001/08/01 17:05:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov. 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationProbability.cc index 6089dcc9b9..5a672922e5 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4TritonEvaporationProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TritonEvaporationProbability.cc,v 1.2.2.1 2001/06/28 19:13:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TritonEvaporationProbability.cc,v 1.4 2001/08/01 17:05:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4UnstableFermiFragment.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4UnstableFermiFragment.cc index bc250e87d3..267235c53f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4UnstableFermiFragment.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4UnstableFermiFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4UnstableFermiFragment.cc,v 1.4.2.1 2001/06/28 19:13:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UnstableFermiFragment.cc,v 1.6 2001/08/01 17:05:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VCoulombBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VCoulombBarrier.cc index 81f166343a..2663ccc27b 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VCoulombBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VCoulombBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VCoulombBarrier.cc,v 1.2.2.1 2001/06/28 19:13:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VCoulombBarrier.cc,v 1.4 2001/08/01 17:05:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VEmissionProbability.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VEmissionProbability.cc index 5bef46fa47..e2b227b0fe 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VEmissionProbability.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VEmissionProbability.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VEmissionProbability.cc,v 1.4.2.1 2001/06/28 19:13:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEmissionProbability.cc,v 1.6 2001/08/01 17:05:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VEvaporation.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VEvaporation.cc index 7fa62a694d..02c96e7d50 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VEvaporation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VEvaporation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VEvaporation.cc,v 1.3.2.1 2001/06/28 19:13:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEvaporation.cc,v 1.5 2001/08/01 17:05:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) writen from G4Evaporation.cc (May 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VEvaporationChannel.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VEvaporationChannel.cc index 39ce7eab07..253c68085f 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VEvaporationChannel.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VEvaporationChannel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VEvaporationChannel.cc,v 1.3.2.1 2001/06/28 19:13:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEvaporationChannel.cc,v 1.5 2001/08/01 17:05:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VFermiBreakUp.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VFermiBreakUp.cc index d73eb8c263..599658bf86 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VFermiBreakUp.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VFermiBreakUp.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VFermiBreakUp.cc,v 1.3.2.1 2001/06/28 19:13:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFermiBreakUp.cc,v 1.5 2001/08/01 17:05:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VFermiFragment.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VFermiFragment.cc index de7af49bbd..a2efb0f19d 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VFermiFragment.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VFermiFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VFermiFragment.cc,v 1.3.2.1 2001/06/28 19:13:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFermiFragment.cc,v 1.5 2001/08/01 17:05:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VFissionBarrier.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VFissionBarrier.cc index 437c831190..be0c4d9f78 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VFissionBarrier.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VFissionBarrier.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VFissionBarrier.cc,v 1.3.8.1 2001/06/28 19:13:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFissionBarrier.cc,v 1.5 2001/08/01 17:05:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VGammaDeexcitation.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VGammaDeexcitation.cc index 0a78d974d5..3e94862f64 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VGammaDeexcitation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VGammaDeexcitation.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -53,7 +53,7 @@ #include "G4ParticleTable.hh" #include "G4IonTable.hh" -G4VGammaDeexcitation::G4VGammaDeexcitation(): _verbose(0), _transition(0) +G4VGammaDeexcitation::G4VGammaDeexcitation(): _transition(0), _verbose(0) { } @@ -201,7 +201,7 @@ void G4VGammaDeexcitation::UpdateNucleus(const G4Fragment* gamma) if(newExcitation < 0) newExcitation = 0; - G4ThreeVector p3Residual(p4Nucleus - pGamma); + G4ThreeVector p3Residual(G4ThreeVector(p4Nucleus) - pGamma); G4double newEnergy = sqrt(p3Residual * p3Residual + (Mass + newExcitation) * (Mass + newExcitation)); G4LorentzVector p4Residual(p3Residual, newEnergy); diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VLevelDensityParameter.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VLevelDensityParameter.cc index b92289eb77..d8a096b3e4 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VLevelDensityParameter.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VLevelDensityParameter.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VLevelDensityParameter.cc,v 1.3.2.1 2001/06/28 19:13:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VLevelDensityParameter.cc,v 1.5 2001/08/01 17:05:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VMultiFragmentation.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VMultiFragmentation.cc index 350423a707..e693302114 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VMultiFragmentation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VMultiFragmentation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VMultiFragmentation.cc,v 1.4.2.1 2001/06/28 19:13:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VMultiFragmentation.cc,v 1.6 2001/08/01 17:05:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1998) diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VPhotonEvaporation.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VPhotonEvaporation.cc index c28c5e7fbc..9e0a2e4630 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VPhotonEvaporation.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VPhotonEvaporation.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VStatMFEnsemble.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VStatMFEnsemble.cc index 6a5235d5cc..a74b026c07 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VStatMFEnsemble.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VStatMFEnsemble.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VStatMFEnsemble.cc,v 1.3.2.1 2001/06/28 19:13:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VStatMFEnsemble.cc,v 1.5 2001/08/01 17:05:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/de_excitation/src/G4VStatMFMacroCluster.cc b/source/processes/hadronic/models/generator/de_excitation/src/G4VStatMFMacroCluster.cc index 7dd4762b95..355e796235 100644 --- a/source/processes/hadronic/models/generator/de_excitation/src/G4VStatMFMacroCluster.cc +++ b/source/processes/hadronic/models/generator/de_excitation/src/G4VStatMFMacroCluster.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VStatMFMacroCluster.cc,v 1.4.2.1 2001/06/28 19:13:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VStatMFMacroCluster.cc,v 1.6 2001/08/01 17:05:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveHHScatterer.hh b/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveHHScatterer.hh index f60596792f..0e43361919 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveHHScatterer.hh +++ b/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveHHScatterer.hh @@ -14,14 +14,14 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DiffractiveHHScatterer.hh,v 1.2.8.2 2001/06/28 20:19:55 gunter Exp $ +// $Id: G4DiffractiveHHScatterer.hh,v 1.4 2001/08/01 17:05:44 hpw Exp $ #ifndef G4DiffractiveHHScatterer_h #define G4DiffractiveHHScatterer_h 1 diff --git a/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveSplitableHadron.hh b/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveSplitableHadron.hh index 1caab2dae2..e7930ee075 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveSplitableHadron.hh +++ b/source/processes/hadronic/models/generator/diffractive_string/include/G4DiffractiveSplitableHadron.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DiffractiveSplitableHadron.hh,v 1.3.8.2 2001/06/28 20:19:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DiffractiveSplitableHadron.hh,v 1.5 2001/08/01 17:05:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4DiffractiveSplitableHadron_h diff --git a/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFModel.hh b/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFModel.hh index 87e338527f..ff73ea49eb 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFModel.hh +++ b/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFModel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FTFModel.hh,v 1.4.6.2 2001/06/28 20:19:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FTFModel.hh,v 1.6 2001/08/01 17:05:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description // Final state production code for hadron inelastic scattering above 20 GeV diff --git a/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFParticipants.hh b/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFParticipants.hh index de7516a4bb..0df1ebcd56 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFParticipants.hh +++ b/source/processes/hadronic/models/generator/diffractive_string/include/G4FTFParticipants.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FTFParticipants.hh,v 1.3.8.2 2001/06/28 20:19:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FTFParticipants.hh,v 1.7 2001/10/05 16:13:58 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4FTFParticipants_h @@ -37,7 +37,7 @@ // ------------------------------------------------------------ #include "G4VParticipants.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" #include "G4Nucleon.hh" #include "G4V3DNucleus.hh" #include "G4Fancy3DNucleus.hh" @@ -64,7 +64,7 @@ class G4FTFParticipants : public G4VParticipants private: - G4RWTPtrOrderedVector theInteractions; + G4std::vector theInteractions; G4int currentInteraction; @@ -80,7 +80,7 @@ void G4FTFParticipants::StartLoop() inline G4bool G4FTFParticipants::Next() { - return ++currentInteraction < theInteractions.entries(); + return ++currentInteraction < static_cast(theInteractions.size()); } diff --git a/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveHHScatterer.cc b/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveHHScatterer.cc index cf3083f2c9..659d2c3642 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveHHScatterer.cc +++ b/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveHHScatterer.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -50,16 +50,16 @@ Scatter(const G4KineticTrack & aTrack, const G4KineticTrack & bTrack) string = theExcitation->String(& aHadron, true); // Projectile fragments=theStringFragmentation->FragmentString(*string); - for (G4int aFragment=0; aFragment < fragments->entries(); aFragment++) + for (unsigned int aFragment=0; aFragment < fragments->size(); aFragment++) { - result->append(fragments->at(aFragment)); + result->push_back(fragments->operator[](aFragment)); } string = theExcitation->String(& bHadron, false); // Target fragments=theStringFragmentation->FragmentString(*string); - for (G4int bFragment=0; bFragment < fragments->entries(); bFragment++) + for (unsigned int bFragment=0; bFragment < fragments->size(); bFragment++) { - result->append(fragments->at(bFragment)); + result->push_back(fragments->operator[](bFragment)); } diff --git a/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveSplitableHadron.cc b/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveSplitableHadron.cc index f4de7406d0..b02a2cffc7 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveSplitableHadron.cc +++ b/source/processes/hadronic/models/generator/diffractive_string/src/G4DiffractiveSplitableHadron.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DiffractiveSplitableHadron.cc,v 1.2.8.2 2001/06/28 20:19:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DiffractiveSplitableHadron.cc,v 1.7 2001/10/25 16:15:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ @@ -75,6 +75,8 @@ const G4DiffractiveSplitableHadron & G4DiffractiveSplitableHadron::operator=(con void G4DiffractiveSplitableHadron::SplitUp() { + if (IsSplit()) return; + Splitting(); // Split once only... if (Parton[0] != NULL) return; @@ -111,7 +113,7 @@ void G4DiffractiveSplitableHadron::ChooseStringEnds(G4int PDGcode,G4int * aEnd, { const G4double udspin1= 1./6.; const G4double uuspin1= 1./3.; - const G4double udspin0= 1./2.; +// const G4double udspin0= 1./2.; //@ G4int absPDGcode=abs(PDGcode); @@ -160,7 +162,9 @@ void G4DiffractiveSplitableHadron::ChooseStringEnds(G4int PDGcode,G4int * aEnd, } else { *aEnd=j100; - *bEnd= Diquark( j1000, j10, 0); + // Careful, there is no diquark q1=q2, (q1 q2)0, + // possible for Omega- + *bEnd= Diquark( j1000, j10, j1000 != j100 ? 0 : 1); } } else { @@ -168,7 +172,8 @@ void G4DiffractiveSplitableHadron::ChooseStringEnds(G4int PDGcode,G4int * aEnd, if ( random < udspin1 ) { *aEnd=j1000; - *bEnd= Diquark( j100, j10, 0); + // as above, but with charmed barions + *bEnd= Diquark( j100, j10, j100 != j10 ? 0 : 10); } else if ( random < (udspin1 + uuspin1) ) { *aEnd= j10; diff --git a/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFModel.cc b/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFModel.cc index 17117eda1a..2d421e655d 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFModel.cc +++ b/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFModel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FTFModel.cc,v 1.4.8.2 2001/06/28 20:19:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FTFModel.cc,v 1.9 2001/10/20 10:45:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ @@ -97,6 +97,8 @@ G4ExcitedStringVector * G4FTFModel::GetStrings() return theStrings; } +struct DeleteVSplitableHadron { void operator()(G4VSplitableHadron * aH){delete aH;} }; + G4ExcitedStringVector * G4FTFModel::BuildStrings() { @@ -106,18 +108,19 @@ G4ExcitedStringVector * G4FTFModel::BuildStrings() G4ExcitedStringVector * strings; strings = new G4ExcitedStringVector(); - G4RWTPtrOrderedVector primaries; - G4RWTPtrOrderedVector targets; + G4std::vector primaries; + G4std::vector targets; theParticipants.StartLoop(); // restart a loop while ( theParticipants.Next() ) { const G4InteractionContent & interaction=theParticipants.GetInteraction(); // do not allow for duplicates ... - if ( ! primaries.contains(interaction.GetProjectile()) ) - primaries.insert(interaction.GetProjectile()); - if ( ! targets.contains(interaction.GetTarget()) ) - targets.insert(interaction.GetTarget()); + if ( primaries.end() == G4std::find(primaries.begin(), primaries.end(), interaction.GetProjectile()) ) + primaries.push_back(interaction.GetProjectile()); + + if ( targets.end() == G4std::find(targets.begin(), targets.end(),interaction.GetTarget()) ) + targets.push_back(interaction.GetTarget()); } @@ -125,20 +128,22 @@ G4ExcitedStringVector * G4FTFModel::BuildStrings() // targets.entries() << G4endl; - G4int ahadron; - for ( ahadron=0; ahadron < primaries.entries() ; ahadron++) + unsigned int ahadron; + for ( ahadron=0; ahadron < primaries.size() ; ahadron++) { G4bool isProjectile=true; - strings->insert(theExcitation->String(primaries[ahadron], isProjectile)); + strings->push_back(theExcitation->String(primaries[ahadron], isProjectile)); } - for ( ahadron=0; ahadron < targets.entries() ; ahadron++) + for ( ahadron=0; ahadron < targets.size() ; ahadron++) { G4bool isProjectile=false; - strings->insert(theExcitation->String(targets[ahadron], isProjectile)); + strings->push_back(theExcitation->String(targets[ahadron], isProjectile)); } - primaries.clearAndDestroy(); - targets.clearAndDestroy(); + G4std::for_each(primaries.begin(), primaries.end(), DeleteVSplitableHadron()); + primaries.clear(); + G4std::for_each(targets.begin(), targets.end(), DeleteVSplitableHadron()); + targets.clear(); return strings; } diff --git a/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFParticipants.cc b/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFParticipants.cc index 96f9c9b3c6..00b6de3e67 100644 --- a/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFParticipants.cc +++ b/source/processes/hadronic/models/generator/diffractive_string/src/G4FTFParticipants.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FTFParticipants.cc,v 1.3.8.2 2001/06/28 20:19:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FTFParticipants.cc,v 1.6 2001/10/04 20:00:28 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -74,7 +74,8 @@ void G4FTFParticipants::BuildInteractions(const G4ReactionProduct &thePrimary) StartLoop(); // reset Loop over Interactions - theInteractions.clearAndDestroy(); + for(unsigned int i=0; i theImpactParameter; theImpactParameter = theNucleus->ChooseImpactXandY(xyradius); @@ -112,7 +113,7 @@ void G4FTFParticipants::BuildInteractions(const G4ReactionProduct &thePrimary) theNucleus->StartLoop(); G4Nucleon * nucleon; - while ( nucleon=theNucleus->GetNextNucleon() ) + while ( (nucleon=theNucleus->GetNextNucleon()) ) { G4double impact2= sqr(impactX - nucleon->GetPosition().x()) + sqr(impactY - nucleon->GetPosition().y()); @@ -134,7 +135,7 @@ void G4FTFParticipants::BuildInteractions(const G4ReactionProduct &thePrimary) } G4InteractionContent * aInteraction = new G4InteractionContent(primarySplitable); aInteraction->SetTarget(targetSplitable); - theInteractions.insert(aInteraction); + theInteractions.push_back(aInteraction); } } diff --git a/source/processes/hadronic/models/generator/high_energy/include/G4TheoFSGenerator.hh b/source/processes/hadronic/models/generator/high_energy/include/G4TheoFSGenerator.hh index f5fd363758..eb2db75513 100644 --- a/source/processes/hadronic/models/generator/high_energy/include/G4TheoFSGenerator.hh +++ b/source/processes/hadronic/models/generator/high_energy/include/G4TheoFSGenerator.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TheoFSGenerator.hh,v 1.3.6.1 2001/06/28 19:13:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TheoFSGenerator.hh,v 1.5 2001/08/01 17:05:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Class Description diff --git a/source/processes/hadronic/models/generator/high_energy/src/G4TheoFSGenerator.cc b/source/processes/hadronic/models/generator/high_energy/src/G4TheoFSGenerator.cc index d0040d3c40..f90821e702 100644 --- a/source/processes/hadronic/models/generator/high_energy/src/G4TheoFSGenerator.cc +++ b/source/processes/hadronic/models/generator/high_energy/src/G4TheoFSGenerator.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TheoFSGenerator.cc,v 1.3.18.1 2001/06/28 19:13:27 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TheoFSGenerator.cc,v 1.6 2001/10/04 20:00:28 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4TheoFSGenerator #include "G4DynamicParticle.hh" @@ -82,17 +82,17 @@ G4VParticleChange * G4TheoFSGenerator::ApplyYourself(const G4Track & thePrimary, theTransport->Propagate(theInitialResult, theHighEnergyGenerator->GetWoundedNucleus()); // Fill particle change - int i; - theParticleChange->SetNumberOfSecondaries(theTransportResult->entries()); - for(i=0; ientries(); i++) + unsigned int i; + theParticleChange->SetNumberOfSecondaries(theTransportResult->size()); + for(i=0; isize(); i++) { G4DynamicParticle * aNew = - new G4DynamicParticle(theTransportResult->at(i)->GetDefinition(), - theTransportResult->at(i)->GetTotalEnergy(), - theTransportResult->at(i)->GetMomentum()); - G4double newTime = theParticleChange->GetGlobalTime(theTransportResult->at(i)->GetFormationTime()); + new G4DynamicParticle(theTransportResult->operator[](i)->GetDefinition(), + theTransportResult->operator[](i)->GetTotalEnergy(), + theTransportResult->operator[](i)->GetMomentum()); + G4double newTime = theParticleChange->GetGlobalTime(theTransportResult->operator[](i)->GetFormationTime()); theParticleChange->AddSecondary(aNew, newTime); - delete theTransportResult->at(i); + delete theTransportResult->operator[](i); } // some garbage collection diff --git a/source/processes/hadronic/models/generator/kinetic_model/GNUmakefile b/source/processes/hadronic/models/generator/kinetic_model/GNUmakefile index f29e4617cf..ecd38a363b 100644 --- a/source/processes/hadronic/models/generator/kinetic_model/GNUmakefile +++ b/source/processes/hadronic/models/generator/kinetic_model/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.1 1999/01/07 16:12:03 gunter Exp $ +# $Id: GNUmakefile,v 1.3 2000/10/19 15:49:15 brunengo Exp $ # ----------------------------------------------------------- # GNUmakefile for hadronic library. Gabriele Cosmo, 18/9/96. # ----------------------------------------------------------- @@ -14,11 +14,13 @@ include $(G4INSTALL)/config/architecture.gmk G4TMPDIR = $(G4TMP)/$(G4SYSTEM)/$(name) CPPFLAGS += -I$(G4BASE)/global/management/include \ + -I$(G4BASE)/global/STLInterface/g4rw \ -I$(G4BASE)/global/HEPRandom/include \ -I$(G4BASE)/global/HEPNumerics/include \ -I$(G4BASE)/global/HEPGeometry/include \ -I$(G4BASE)/track/include \ -I$(G4BASE)/geometry/volumes/include \ + -I$(G4BASE)/geometry/magneticfield/include \ -I$(G4BASE)/geometry/management/include \ -I$(G4BASE)/processes/management/include \ -I$(G4BASE)/processes/hadronic/management/include/ \ diff --git a/source/processes/hadronic/models/generator/kinetic_model/include/G4GeneratorPrecompoundInterface.hh b/source/processes/hadronic/models/generator/kinetic_model/include/G4GeneratorPrecompoundInterface.hh index b78eeeebd4..41f69614dc 100644 --- a/source/processes/hadronic/models/generator/kinetic_model/include/G4GeneratorPrecompoundInterface.hh +++ b/source/processes/hadronic/models/generator/kinetic_model/include/G4GeneratorPrecompoundInterface.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/kinetic_model/src/G4GeneratorPrecompoundInterface.cc b/source/processes/hadronic/models/generator/kinetic_model/src/G4GeneratorPrecompoundInterface.cc index a019ecae76..b1a9ef3e63 100644 --- a/source/processes/hadronic/models/generator/kinetic_model/src/G4GeneratorPrecompoundInterface.cc +++ b/source/processes/hadronic/models/generator/kinetic_model/src/G4GeneratorPrecompoundInterface.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -48,30 +48,30 @@ result1=theSecondaries; result=new G4KineticTrackVector(); - for (G4int aResult=0; aResult < result1->entries(); aResult++) + for (unsigned int aResult=0; aResult < result1->size(); aResult++) { G4ParticleDefinition * pdef; - pdef=result1->at(aResult)->GetDefinition(); + pdef=result1->operator[](aResult)->GetDefinition(); secondaries=NULL; if ( pdef->IsShortLived() ) { - secondaries = result1->at(aResult)->Decay(); + secondaries = result1->operator[](aResult)->Decay(); } if ( secondaries == NULL ) { - result->insert(result1->at(aResult)); - result1->at(aResult)=NULL; //protect for clearAndDestroy + result->push_back(result1->operator[](aResult)); + result1->operator[](aResult)=NULL; //protect for clearAndDestroy } else { - for (G4int aSecondary=0; aSecondaryentries(); aSecondary++) + for (unsigned int aSecondary=0; aSecondarysize(); aSecondary++) { - result1->append(secondaries->at(aSecondary)); + result1->push_back(secondaries->operator[](aSecondary)); } delete secondaries; } } - result1->clearAndDestroy(); + G4std::for_each(result1->begin(), result1->end(), DeleteKineticTrack()); delete result1; @@ -86,30 +86,30 @@ G4double exEnergy = 0; G4ThreeVector exciton3Momentum(0,0,0); // loop over secondaries - for(G4int list=0; list < result->entries(); list++) + for(unsigned int list=0; list < result->size(); list++) { - G4KineticTrack *aTrack = result->at(list); + G4KineticTrack *aTrack = result->operator[](list); if(aTrack->GetDefinition() != G4Proton::Proton() && aTrack->GetDefinition() != G4Neutron::Neutron()) { G4ReactionProduct * theNew = new G4ReactionProduct(aTrack->GetDefinition()); theNew->SetMomentum(aTrack->Get4Momentum().vect()); theNew->SetTotalEnergy(aTrack->Get4Momentum().e()); - theTotalResult->insert(theNew); + theTotalResult->push_back(theNew); } else if(aTrack->Get4Momentum().t() - aTrack->Get4Momentum().mag()>80*MeV) { G4ReactionProduct * theNew = new G4ReactionProduct(aTrack->GetDefinition()); theNew->SetMomentum(aTrack->Get4Momentum().vect()); theNew->SetTotalEnergy(aTrack->Get4Momentum().e()); - theTotalResult->insert(theNew); + theTotalResult->push_back(theNew); } else if(aTrack->GetPosition().mag() > theNucleus->GetNuclearRadius()) { G4ReactionProduct * theNew = new G4ReactionProduct(aTrack->GetDefinition()); theNew->SetMomentum(aTrack->Get4Momentum().vect()); theNew->SetTotalEnergy(aTrack->Get4Momentum().e()); - theTotalResult->insert(theNew); + theTotalResult->push_back(theNew); } else { @@ -163,11 +163,11 @@ // call pre-compound const G4Fragment aFragment(anInitialState); G4ReactionProductVector * aPreResult = theDeExcitation->DeExcite(aFragment); - +// G4ReactionProductVector * aPreResult = new G4ReactionProductVector; // fill pre-compound part into the result, and return - for(G4int ll=0; llentries(); ll++) + for(unsigned int ll=0; llsize(); ll++) { - theTotalResult->insert(aPreResult->at(ll)); + theTotalResult->push_back(aPreResult->operator[](ll)); } delete aPreResult; } @@ -177,7 +177,7 @@ } // now return - result->clearAndDestroy(); + G4std::for_each(result->begin(), result->end(), DeleteKineticTrack()); delete result; return theTotalResult; } diff --git a/source/processes/hadronic/models/generator/management/include/G4V3DNucleus.hh b/source/processes/hadronic/models/generator/management/include/G4V3DNucleus.hh index 87b0c54570..7ff1173be4 100644 --- a/source/processes/hadronic/models/generator/management/include/G4V3DNucleus.hh +++ b/source/processes/hadronic/models/generator/management/include/G4V3DNucleus.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4V3DNucleus.hh,v 1.4.8.1 2001/06/28 19:13:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4V3DNucleus.hh,v 1.6 2001/08/01 17:08:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4V3DNucleus_h #define G4V3DNucleus_h 1 diff --git a/source/processes/hadronic/models/generator/management/include/G4VAnnihilator.hh b/source/processes/hadronic/models/generator/management/include/G4VAnnihilator.hh index e106605339..a04c84cefb 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VAnnihilator.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VAnnihilator.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/management/include/G4VCrossSectionBase.hh b/source/processes/hadronic/models/generator/management/include/G4VCrossSectionBase.hh index b0a36555b0..807226ddc7 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VCrossSectionBase.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VCrossSectionBase.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -35,7 +35,7 @@ class G4VCrossSectionBase public: //Constructors G4VCrossSectionBase(); - ~G4VCrossSectionBase(); + virtual ~G4VCrossSectionBase(); public: virtual G4double GetTotCrossSection(G4int ProjectileEncoding, G4int TargetEncoding, G4double Energy)=0; diff --git a/source/processes/hadronic/models/generator/management/include/G4VElasticScatterer.hh b/source/processes/hadronic/models/generator/management/include/G4VElasticScatterer.hh index 79780ecafd..92a6efb1e3 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VElasticScatterer.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VElasticScatterer.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -30,7 +30,7 @@ class G4VElasticScatterer { public: G4VElasticScatterer(); - ~G4VElasticScatterer(); + virtual ~G4VElasticScatterer(); public: virtual G4KineticTrackVector* Scatter(const G4KineticTrack &aProjectile, const G4KineticTrack &aTarget)= 0; }; diff --git a/source/processes/hadronic/models/generator/management/include/G4VHighEnergyGenerator.hh b/source/processes/hadronic/models/generator/management/include/G4VHighEnergyGenerator.hh index aa92941dd7..b918521664 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VHighEnergyGenerator.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VHighEnergyGenerator.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VHighEnergyGenerator.hh,v 1.4.6.1 2001/06/28 19:13:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VHighEnergyGenerator.hh,v 1.6 2001/08/01 17:08:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VHighEnergyGenerator_h #define G4VHighEnergyGenerator_h 1 diff --git a/source/processes/hadronic/models/generator/management/include/G4VInElasticScatterer.hh b/source/processes/hadronic/models/generator/management/include/G4VInElasticScatterer.hh index ee4dc9f94a..e1e40d3e68 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VInElasticScatterer.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VInElasticScatterer.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/management/include/G4VIntraNuclearTransportModel.hh b/source/processes/hadronic/models/generator/management/include/G4VIntraNuclearTransportModel.hh index e4ff3a7497..e1c55e7c71 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VIntraNuclearTransportModel.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VIntraNuclearTransportModel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VIntraNuclearTransportModel.hh,v 1.6.6.2 2001/06/28 20:19:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VIntraNuclearTransportModel.hh,v 1.8 2001/08/01 17:08:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: G4IntraNuclearTransportMode.hh,v 1.0 1998/06/30 // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/generator/management/include/G4VKineticNucleon.hh b/source/processes/hadronic/models/generator/management/include/G4VKineticNucleon.hh index 77d48b3e78..0b649861bd 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VKineticNucleon.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VKineticNucleon.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VKineticNucleon.hh,v 1.2.8.1 2001/06/28 19:13:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VKineticNucleon.hh,v 1.4 2001/08/01 17:08:14 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VKineticNucleon_h #define G4VKineticNucleon_h 1 diff --git a/source/processes/hadronic/models/generator/management/include/G4VNuclearDensity.hh b/source/processes/hadronic/models/generator/management/include/G4VNuclearDensity.hh index cb4893066d..d19770e191 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VNuclearDensity.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VNuclearDensity.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VNuclearDensity.hh,v 1.3.8.1 2001/06/28 19:13:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VNuclearDensity.hh,v 1.5 2001/08/01 17:08:14 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VNuclearDensity_h #define G4VNuclearDensity_h 1 diff --git a/source/processes/hadronic/models/generator/management/include/G4VPreCompoundModel.hh b/source/processes/hadronic/models/generator/management/include/G4VPreCompoundModel.hh index 224f65772c..2527880086 100644 --- a/source/processes/hadronic/models/generator/management/include/G4VPreCompoundModel.hh +++ b/source/processes/hadronic/models/generator/management/include/G4VPreCompoundModel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VPreCompoundModel.hh,v 1.4.6.1 2001/06/28 19:13:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPreCompoundModel.hh,v 1.6 2001/08/01 17:08:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VPreCompoundModel_h diff --git a/source/processes/hadronic/models/generator/management/src/G4V3DNucleus.cc b/source/processes/hadronic/models/generator/management/src/G4V3DNucleus.cc index 6b69e427b8..0b0b607a09 100644 --- a/source/processes/hadronic/models/generator/management/src/G4V3DNucleus.cc +++ b/source/processes/hadronic/models/generator/management/src/G4V3DNucleus.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4V3DNucleus.cc,v 1.2.8.1 2001/06/28 19:13:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4V3DNucleus.cc,v 1.4 2001/08/01 17:08:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4V3DNucleus.hh" diff --git a/source/processes/hadronic/models/generator/management/src/G4VAnnihilator.cc b/source/processes/hadronic/models/generator/management/src/G4VAnnihilator.cc index 0d48b06d17..0e0ff79191 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VAnnihilator.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VAnnihilator.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/management/src/G4VCrossSectionBase.cc b/source/processes/hadronic/models/generator/management/src/G4VCrossSectionBase.cc index 540be84c51..b4e188b421 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VCrossSectionBase.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VCrossSectionBase.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/management/src/G4VElasticScatterer.cc b/source/processes/hadronic/models/generator/management/src/G4VElasticScatterer.cc index 327771f306..6588c2fc95 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VElasticScatterer.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VElasticScatterer.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/management/src/G4VHighEnergyGenerator.cc b/source/processes/hadronic/models/generator/management/src/G4VHighEnergyGenerator.cc index 3ebb739702..5d0d816e9c 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VHighEnergyGenerator.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VHighEnergyGenerator.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VHighEnergyGenerator.cc,v 1.2.8.1 2001/06/28 19:13:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VHighEnergyGenerator.cc,v 1.4 2001/08/01 17:08:21 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VHighEnergyGenerator #include "G4VHighEnergyGenerator.hh" diff --git a/source/processes/hadronic/models/generator/management/src/G4VInElasticScatterer.cc b/source/processes/hadronic/models/generator/management/src/G4VInElasticScatterer.cc index d8ab8fbb13..82fee6f32d 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VInElasticScatterer.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VInElasticScatterer.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/management/src/G4VIntraNuclearTransportModel.cc b/source/processes/hadronic/models/generator/management/src/G4VIntraNuclearTransportModel.cc index 156bde0b87..97d5f966d8 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VIntraNuclearTransportModel.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VIntraNuclearTransportModel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VIntraNuclearTransportModel.cc,v 1.3.8.2 2001/06/28 20:19:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VIntraNuclearTransportModel.cc,v 1.5 2001/08/01 17:08:23 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: G4VIntraNuclearTransportModel.cc,v 1.0 1998/06/30 // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/generator/management/src/G4VKineticNucleon.cc b/source/processes/hadronic/models/generator/management/src/G4VKineticNucleon.cc index f48c83574d..b30afc2042 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VKineticNucleon.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VKineticNucleon.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VKineticNucleon.cc,v 1.2.8.1 2001/06/28 19:13:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VKineticNucleon.cc,v 1.4 2001/08/01 17:08:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VKineticNucleon.hh" diff --git a/source/processes/hadronic/models/generator/management/src/G4VNuclearDensity.cc b/source/processes/hadronic/models/generator/management/src/G4VNuclearDensity.cc index d008e6605d..f77e044bc2 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VNuclearDensity.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VNuclearDensity.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VNuclearDensity.cc,v 1.2.8.1 2001/06/28 19:13:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VNuclearDensity.cc,v 1.4 2001/08/01 17:08:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VNuclearDensity.hh" diff --git a/source/processes/hadronic/models/generator/management/src/G4VPreCompoundModel.cc b/source/processes/hadronic/models/generator/management/src/G4VPreCompoundModel.cc index 738a59ff8a..5d4f52405b 100644 --- a/source/processes/hadronic/models/generator/management/src/G4VPreCompoundModel.cc +++ b/source/processes/hadronic/models/generator/management/src/G4VPreCompoundModel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VPreCompoundModel.cc,v 1.2.8.1 2001/06/28 19:13:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPreCompoundModel.cc,v 1.4 2001/08/01 17:08:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VPreCompoundModel.hh" diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/include/G4LowEIonFragmentation.hh b/source/processes/hadronic/models/generator/pre_equilibrium/include/G4LowEIonFragmentation.hh new file mode 100644 index 0000000000..110f160042 --- /dev/null +++ b/source/processes/hadronic/models/generator/pre_equilibrium/include/G4LowEIonFragmentation.hh @@ -0,0 +1,93 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4LowEIonFragmentation.hh,v 1.6 2001/10/06 08:17:01 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// by H.P. Wellisch + +#ifndef G4LowEIonFragmentation_h +#define G4LowEIonFragmentation_h 1 + + +#include "G4PreCompoundModel.hh" +#include "G4HadronicInteraction.hh" +#include "G4ExcitationHandler.hh" +#include "G4Fancy3DNucleus.hh" + +class G4LowEIonFragmentation : public G4HadronicInteraction +{ +public: + + G4LowEIonFragmentation(G4ExcitationHandler * const value) + { + theHandler = value; + theModel = new G4PreCompoundModel(theHandler); + } + + G4LowEIonFragmentation() + { + theHandler = new G4ExcitationHandler; + theModel = new G4PreCompoundModel(theHandler); + } + + ~G4LowEIonFragmentation() {delete theModel;} + +private: + + G4LowEIonFragmentation(const G4LowEIonFragmentation &right) {}; + + const G4LowEIonFragmentation& operator=(const G4LowEIonFragmentation &right); + + G4bool operator==(const G4LowEIonFragmentation &right) const; + + G4bool operator!=(const G4LowEIonFragmentation &right) const; + +public: + G4VParticleChange * ApplyYourself(const G4Track & thePrimary, G4Nucleus & theNucleus); + static G4double GetCrossSection() + { +// clog << "area/millibarn = "<GetDefinition()->GetBaryonNumber(); + G4double aProjectileZ = thePrimary.GetDynamicParticle()->GetDefinition()->GetPDGCharge(); + + // Get Maximum radius of both + + G4Fancy3DNucleus aPrim; + aPrim.Init(aProjectileA, aProjectileZ); + G4double projectileOuterRadius = aPrim.GetOuterRadius(); + + G4Fancy3DNucleus aTarg; + aTarg.Init(aTargetA, aTargetZ); + G4double targetOuterRadius = aTarg.GetOuterRadius(); + + // Get the Impact parameter + G4int particlesFromProjectile = 0; + G4int chargedFromProjectile = 0; + G4double impactParameter = 0; + G4double x,y; + G4Nucleon * pNucleon; + // need at lease one particle from the projectile model beyond the + // projectileHorizon. + while(0==particlesFromProjectile) + { + do + { + x = 2*G4UniformRand() - 1; + y = 2*G4UniformRand() - 1; + } + while(x*x + y*y > 1); + impactParameter = sqrt(x*x+y*y)*(targetOuterRadius+projectileOuterRadius); + totalTries++; + area = pi*(targetOuterRadius+projectileOuterRadius)* + (targetOuterRadius+projectileOuterRadius); + G4double projectileHorizon = impactParameter-targetOuterRadius; + + // Empirical boundary transparency. + G4double empirical = G4UniformRand(); + if(projectileHorizon/projectileOuterRadius>empirical) continue; + + // Calculate the number of nucleons involved in collision + // From projectile + aPrim.StartLoop(); + while((pNucleon = aPrim.GetNextNucleon())) + { + if(pNucleon->GetPosition().y()>projectileHorizon) + { + // We have one + particlesFromProjectile++; + if(pNucleon->GetParticleType()==G4Proton::ProtonDefinition()) + { + chargedFromProjectile++; + } + } + } + } + hits ++; + + // From target: + G4double targetHorizon = impactParameter-projectileOuterRadius; + G4int chargedFromTarget = 0; + G4int particlesFromTarget = 0; + aTarg.StartLoop(); + while((pNucleon = aTarg.GetNextNucleon())) + { + if(pNucleon->GetPosition().y()>targetHorizon) + { + // We have one + particlesFromTarget++; + if(pNucleon->GetParticleType()==G4Proton::ProtonDefinition()) + { + chargedFromTarget++; + } + } + } + + // Energy sharing between projectile and target. Note that this is a quite simplistic kinetically. + G4ThreeVector exciton3Momentum = thePrimary.GetMomentum(); + exciton3Momentum *= particlesFromProjectile/aProjectileA; + + G4double compoundEnergy = thePrimary.GetTotalEnergy()*particlesFromProjectile/aProjectileA; + G4double targetMass = G4ParticleTable::GetParticleTable() + ->GetIonTable()->GetIonMass(aTargetZ ,aTargetA); + compoundEnergy += targetMass; + G4LorentzVector fragment4Momentum(exciton3Momentum, compoundEnergy); + + // take the nucleons and fill the Fragments + G4Fragment anInitialState; + anInitialState.SetA(aTargetA+particlesFromProjectile); + anInitialState.SetZ(aTargetZ+chargedFromProjectile); + anInitialState.SetNumberOfParticles(particlesFromProjectile); + anInitialState.SetNumberOfHoles(particlesFromTarget); + anInitialState.SetNumberOfCharged(chargedFromProjectile + chargedFromTarget); + anInitialState.SetMomentum(fragment4Momentum); + + // Fragment the Fragment using Pre-compound + G4ReactionProductVector* thePreCompoundResult; + thePreCompoundResult = theModel->DeExcite(anInitialState); + + // De-excite the projectile using ExcitationHandler + + G4ReactionProductVector * theExcitationResult = 0; + if(particlesFromProjectile != aProjectileA) + { + G4ThreeVector residual3Momentum = thePrimary.GetMomentum(); + residual3Momentum -= exciton3Momentum; + G4double residualEnergy = thePrimary.GetTotalEnergy()*(1.-particlesFromProjectile/aProjectileA); + G4LorentzVector residual4Momentum(residual3Momentum, residualEnergy); + + G4Fragment initialState2; + initialState2.SetA(aProjectileA-particlesFromProjectile); + initialState2.SetZ(aProjectileZ-chargedFromProjectile); + initialState2.SetNumberOfHoles((aProjectileA-particlesFromProjectile)/2.); + initialState2.SetNumberOfParticles((aProjectileZ-chargedFromProjectile)/2.); + initialState2.SetNumberOfCharged((aProjectileZ-chargedFromProjectile)/2.); + + + initialState2.SetMomentum(residual4Momentum); + theExcitationResult = theHandler->BreakItUp(initialState2); + } + + // Fill the particle change + G4int nSecondaries = 0; + if(theExcitationResult) nSecondaries+=theExcitationResult->size(); + if(thePreCompoundResult) nSecondaries+=thePreCompoundResult->size(); + theResult.SetNumberOfSecondaries(nSecondaries); + + unsigned int k; + if(theExcitationResult!=0) + { + for(k=0; ksize(); k++) + { + G4DynamicParticle* p0 = new G4DynamicParticle; + p0->SetDefinition( theExcitationResult->operator[](k)->GetDefinition() ); + p0->SetMomentum( theExcitationResult->operator[](k)->GetMomentum() ); + theResult.AddSecondary(p0); + } + } + + for(k=0; ksize(); k++) + { + G4DynamicParticle* p0 = new G4DynamicParticle; + p0->SetDefinition(thePreCompoundResult->operator[](k)->GetDefinition()); + p0->SetMomentum(thePreCompoundResult->operator[](k)->GetMomentum()); + theResult.AddSecondary(p0); + } + + // clean up + G4std::for_each(thePreCompoundResult->begin(), thePreCompoundResult->end(), DeleteReactionProduct()); + if(theExcitationResult) + { + G4std::for_each(theExcitationResult->begin(), theExcitationResult->end(), DeleteReactionProduct()); + } + delete thePreCompoundResult; + if(theExcitationResult) delete theExcitationResult; + + // return the particle change + return &theResult; + +} diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundEmission.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundEmission.cc index 06917bdff2..0b58cd3d75 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundEmission.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundEmission.cc @@ -14,15 +14,37 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PreCompoundEmission.cc,v 1.3.2.1 2001/06/28 19:13:34 gunter Exp $ -// GEANT4 tag $Name: $ +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4PreCompoundEmission.cc,v 1.7 2001/09/27 16:51:56 larazb Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear Preequilibrium // by V. Lara @@ -52,6 +74,7 @@ G4PreCompoundEmission::G4PreCompoundEmission(const G4Fragment& aFragment) { // Assume that projectile is a proton ProjEnergy = aFragment.GetExcitationEnergy(); + theIncidentDirection = aFragment.GetMomentum().vect().unit(); } @@ -173,18 +196,22 @@ G4ThreeVector G4PreCompoundEmission::AngularDistribution(G4VPreCompoundFragment G4double an = 3.0*sqrt((ProjEnergy+Ef)*(KineticEnergyOfEmittedFragment+Bemission+Ef))/ (zeta*2.0*aFragment.GetNumberOfExcitons()*Eav); - // (zeta*(aFragment.GetNumberOfExcitons()-1.0)*Eav); +// (zeta*(aFragment.GetNumberOfExcitons()-1.0)*Eav); - G4double normalization = pi*bessi0(an); - + // G4double normalization = pi*bessi0(an); + // Normalization is expesive to calculate + // And rejection method is selfnormalized + // So, I only need the maximum + G4double normalization = exp(an); G4double theta = 0.0; G4double distrib = 0.0; do { theta = pi*G4UniformRand(); - distrib = exp(an*cos(theta))/normalization; - } while ( G4UniformRand() > distrib ); + // distrib = exp(an*cos(theta))/normalization; + distrib = exp(an*cos(theta)); + } while ( G4UniformRand()*normalization > distrib ); G4double phi = twopi*G4UniformRand(); @@ -192,11 +219,15 @@ G4ThreeVector G4PreCompoundEmission::AngularDistribution(G4VPreCompoundFragment G4double EmittedMass = theFragment->GetNuclearMass(); G4double pmag = sqrt(KineticEnergyOfEmittedFragment*(KineticEnergyOfEmittedFragment+2.0*EmittedMass)); - G4double sinTheta = sin(theta); - G4double cosTheta = sqrt(1.0-sinTheta*sinTheta); - G4ThreeVector momentum = G4ParticleMomentum(pmag*cos(phi)*sinTheta,pmag*sin(phi)*sinTheta,pmag*cosTheta); - + G4double sinTheta = sin(theta); + // G4double cosTheta = sqrt(1.0-sinTheta*sinTheta); + G4double cosTheta = cos(theta); + + G4ThreeVector momentum(pmag*cos(phi)*sinTheta,pmag*sin(phi)*sinTheta,pmag*cosTheta); + // theta is the angle wrt the incident direction + momentum.rotateUz(theIncidentDirection); + return momentum; } @@ -227,31 +258,31 @@ G4double G4PreCompoundEmission::rho(const G4double p, const G4double h, const G4 return tot; } -G4double G4PreCompoundEmission::bessi0(const G4double x) const - // Returns the modified Bessel function I_0(x) for any real x. -{ - G4double ax,ans; - G4double y; +// G4double G4PreCompoundEmission::bessi0(const G4double x) const +// // Returns the modified Bessel function I_0(x) for any real x. +// { +// G4double ax,ans; +// G4double y; - if ((ax=fabs(x)) < 3.75) { /* Polynomial fit. */ - y=x/3.75; - y*=y; - ans=1.0+y*(3.5156229+y*(3.0899424+ - y*(1.2067492+ - y*(0.2659732+ - y*(0.360768e-1+ - y*0.45813e-2))))); - } else { - y=3.75/ax; - ans=(exp(ax)/sqrt(ax))*(0.39894228+y*(0.1328592e-1+ - y*(0.225319e-2+ - y*(-0.157565e-2+ - y*(0.916281e-2+ - y*(-0.2057706e-1+ - y*(0.2635537e-1+ - y*(-0.1647633e-1+ - y*0.392377e-2)))))))); - } - return ans; +// if ((ax=fabs(x)) < 3.75) { /* Polynomial fit. */ +// y=x/3.75; +// y*=y; +// ans=1.0+y*(3.5156229+y*(3.0899424+ +// y*(1.2067492+ +// y*(0.2659732+ +// y*(0.360768e-1+ +// y*0.45813e-2))))); +// } else { +// y=3.75/ax; +// ans=(exp(ax)/sqrt(ax))*(0.39894228+y*(0.1328592e-1+ +// y*(0.225319e-2+ +// y*(-0.157565e-2+ +// y*(0.916281e-2+ +// y*(-0.2057706e-1+ +// y*(0.2635537e-1+ +// y*(-0.1647633e-1+ +// y*0.392377e-2)))))))); +// } +// return ans; -} +// } diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundFragmentVector.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundFragmentVector.cc index 0a2a845fc8..0a8dd56fc2 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundFragmentVector.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundFragmentVector.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PreCompoundFragmentVector.cc,v 1.3.2.1 2001/06/28 19:13:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PreCompoundFragmentVector.cc,v 1.5 2001/08/01 17:08:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear Preequilibrium // by V. Lara diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundModel.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundModel.cc index a557780f5a..c5895f3a24 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundModel.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundModel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PreCompoundModel.cc,v 1.11.2.1 2001/06/28 19:13:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PreCompoundModel.cc,v 1.16 2001/10/04 20:00:30 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara @@ -96,14 +96,14 @@ G4VParticleChange * G4PreCompoundModel::ApplyYourself(const G4Track & thePrimary // fill particle change theResult.SetStatusChange(fStopAndKill); - theResult.SetNumberOfSecondaries(result->length()); - for(G4int i=0; ilength(); i++) + theResult.SetNumberOfSecondaries(result->size()); + for(unsigned int i=0; isize(); i++) { G4DynamicParticle * aNew = - new G4DynamicParticle(result->at(i)->GetDefinition(), - result->at(i)->GetTotalEnergy(), - result->at(i)->GetMomentum()); - delete result->at(i); + new G4DynamicParticle(result->operator[](i)->GetDefinition(), + result->operator[](i)->GetTotalEnergy(), + result->operator[](i)->GetMomentum()); + delete result->operator[](i); theResult.AddSecondary(aNew); } delete result; @@ -124,6 +124,16 @@ G4ReactionProductVector* G4PreCompoundModel::DeExcite(const G4Fragment & theInit // Copy of the initial state G4Fragment aFragment(theInitialState); + if (aFragment.GetA() < 5) { + G4ReactionProduct * theRP = new G4ReactionProduct(G4ParticleTable::GetParticleTable()-> + GetIon(aFragment.GetZ(),aFragment.GetA(), + aFragment.GetExcitationEnergy())); + theRP->SetMomentum(aFragment.GetMomentum().vect()); + theRP->SetTotalEnergy(aFragment.GetMomentum().e()); + Result->push_back(theRP); + return Result; + } + G4PreCompoundEmission aEmission(theInitialState); // Main loop. It is performed until equilibrium deexcitation. @@ -178,7 +188,7 @@ G4ReactionProductVector* G4PreCompoundModel::DeExcite(const G4Fragment & theInit ThereIsTransition = false; // Perform the emission and Add emitted fragment to Result - Result->insert(aEmission.PerformEmission(aFragment)); + Result->push_back(aEmission.PerformEmission(aFragment)); } } else { // Perform Equilibrium Emission @@ -201,8 +211,11 @@ void G4PreCompoundModel::PerformEquilibriumEmission(const G4Fragment & aFragment G4ReactionProductVector * theEquilibriumResult; theEquilibriumResult = GetExcitationHandler()->BreakItUp(aFragment); - while (theEquilibriumResult->entries() > 0) Result->insert(theEquilibriumResult->removeFirst()); - + while (theEquilibriumResult->size() > 0) + { + Result->push_back(*theEquilibriumResult->begin()); + theEquilibriumResult->erase(theEquilibriumResult->begin()); + } delete theEquilibriumResult; return; } diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundNeutron.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundNeutron.cc index 9d1ef3505b..b425c2c8ea 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundNeutron.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundNeutron.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PreCompoundNeutron.cc,v 1.7.2.1 2001/06/28 19:13:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PreCompoundNeutron.cc,v 1.9 2001/08/01 17:08:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundParameters.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundParameters.cc index 74e915c251..e77e439d6e 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundParameters.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundParameters.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PreCompoundParameters.cc,v 1.4.2.1 2001/06/28 19:13:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PreCompoundParameters.cc,v 1.6 2001/08/01 17:08:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundProton.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundProton.cc index f094a3a360..4c951d8f5e 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundProton.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundProton.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PreCompoundProton.cc,v 1.6.2.1 2001/06/28 19:13:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PreCompoundProton.cc,v 1.8 2001/08/01 17:08:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundTransitions.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundTransitions.cc index 0787281ec6..1e36273b48 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundTransitions.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4PreCompoundTransitions.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PreCompoundTransitions.cc,v 1.6.2.1 2001/06/28 19:13:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PreCompoundTransitions.cc,v 1.9 2001/08/01 17:08:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara @@ -159,7 +159,13 @@ G4Fragment G4PreCompoundTransitions::PerformTransition(const G4Fragment & aFragm if ((deltaN > 0 || result.GetNumberOfCharged() > 0) && (G4UniformRand() <= result.GetZ()/result.GetA())){ result.SetNumberOfCharged(result.GetNumberOfCharged()+deltaN/2); - } + } + + // Number of charged can not be greater that number of particles + if ( result.GetNumberOfParticles() < result.GetNumberOfCharged() ) { + result.SetNumberOfCharged(result.GetNumberOfParticles()); + } + return result; } diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4VPreCompoundFragment.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4VPreCompoundFragment.cc index 3f669b536c..d99eed6491 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4VPreCompoundFragment.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4VPreCompoundFragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VPreCompoundFragment.cc,v 1.8.2.1 2001/06/28 19:13:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPreCompoundFragment.cc,v 1.11.2.1 2001/12/04 15:32:46 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara @@ -48,8 +48,9 @@ G4VPreCompoundFragment::G4VPreCompoundFragment(const G4VPreCompoundFragment & ri G4VPreCompoundFragment::G4VPreCompoundFragment(const G4double anA, const G4double aZ, G4VCoulombBarrier* aCoulombBarrier): - theA(anA),theZ(aZ), theCoulombBarrierPtr(aCoulombBarrier), + theA(anA),theZ(aZ), theRestNucleusA(0.0),theRestNucleusZ(0.0),theCoulombBarrier(0.0), + theCoulombBarrierPtr(aCoulombBarrier),theBindingEnergy(0.0), theMaximalKineticEnergy(-1.0),theExcitonLevelDensityRatio(0.0),theEmissionProbability(0.0), theCondensationProbability(0.0),theMomentum(0.0,0.0,0.0,0.0),theFragmentName("No Name") {} @@ -57,8 +58,9 @@ G4VPreCompoundFragment::G4VPreCompoundFragment(const G4double anA, G4VPreCompoundFragment::G4VPreCompoundFragment(const G4double anA, const G4double aZ, G4VCoulombBarrier* aCoulombBarrier, const G4String & aName): - theA(anA),theZ(aZ), theCoulombBarrierPtr(aCoulombBarrier), + theA(anA),theZ(aZ), theRestNucleusA(0.0),theRestNucleusZ(0.0),theCoulombBarrier(0.0), + theCoulombBarrierPtr(aCoulombBarrier), theBindingEnergy(0.0), theMaximalKineticEnergy(-1.0),theExcitonLevelDensityRatio(0.0),theEmissionProbability(0.0), theCondensationProbability(0.0),theMomentum(0.0,0.0,0.0,0.0),theFragmentName(aName) {} @@ -109,7 +111,12 @@ G4std::ostream& operator << (G4std::ostream &out, const G4VPreCompoundFragment & G4std::ostream& operator << (G4std::ostream &out, const G4VPreCompoundFragment *theFragment) { +#ifdef G4USE_STD_NAMESPACE + G4std::ios::fmtflags old_floatfield = out.flags(); + out.setf(G4std::ios::floatfield); +#else long old_floatfield = out.setf(0,G4std::ios::floatfield); +#endif out << "PreCompound Model Emitted Fragment: A = " << G4std::setprecision(3) << theFragment->theA diff --git a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4VPreCompoundIon.cc b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4VPreCompoundIon.cc index 07f4004979..755ae2d247 100644 --- a/source/processes/hadronic/models/generator/pre_equilibrium/src/G4VPreCompoundIon.cc +++ b/source/processes/hadronic/models/generator/pre_equilibrium/src/G4VPreCompoundIon.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VPreCompoundIon.cc,v 1.8.2.1 2001/06/28 19:13:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPreCompoundIon.cc,v 1.10 2001/08/01 17:08:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // by V. Lara diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4ASCCrossSection.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4ASCCrossSection.hh index 20f9e49534..8aa6c310d1 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4ASCCrossSection.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4ASCCrossSection.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4AnnihilationCrossSection.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4AnnihilationCrossSection.hh index 55c847aa33..3222bd4d09 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4AnnihilationCrossSection.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4AnnihilationCrossSection.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4BaryonSplitter.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4BaryonSplitter.hh index 5537c54e67..e7093f4c2d 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4BaryonSplitter.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4BaryonSplitter.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4DiffractiveStringBuilder.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4DiffractiveStringBuilder.hh index f0fd0cbab0..2959343ded 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4DiffractiveStringBuilder.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4DiffractiveStringBuilder.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4GammaAnnCrossSection.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4GammaAnnCrossSection.hh index 21b91339b4..7ed196e2a5 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4GammaAnnCrossSection.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4GammaAnnCrossSection.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -34,6 +34,7 @@ class G4GammaAnnCrossSection : public G4VAnnihilationCrossSection G4GammaAnnCrossSection(); G4bool InCharge(G4int aCode, G4int bCode); G4double GetXsec(G4double s); + virtual ~G4GammaAnnCrossSection(){} private: diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4HeavyIonParticipants.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4HeavyIonParticipants.hh new file mode 100644 index 0000000000..18fb284a1c --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4HeavyIonParticipants.hh @@ -0,0 +1,120 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#ifndef G4HeavyIonParticipants_h +#define G4HeavyIonParticipants_h 1 + +#include "Randomize.hh" +#include "G4VParticipants.hh" +#include "G4Nucleon.hh" +#include "G4InteractionContent.hh" +#include "G4PomeronCrossSection.hh" +#include "G4DiffractiveExcitation.hh" +#include "G4SingleDiffractiveExcitation.hh" +#include "G4PartonPair.hh" +#include "G4QGSMSplitableHadron.hh" + +class G4HeavyIonParticipants : public G4VParticipants +{ + enum { SOFT, HARD, DIFFRACTIVE }; + public: + G4HeavyIonParticipants(); + G4HeavyIonParticipants(const G4HeavyIonParticipants &right); + const G4HeavyIonParticipants & operator=(const G4HeavyIonParticipants &right); + ~G4HeavyIonParticipants(); + + int operator==(const G4HeavyIonParticipants &right) const; + int operator!=(const G4HeavyIonParticipants &right) const; + + G4PartonPair* GetNextPartonPair(); + void BuildInteractions(const G4ReactionProduct &thePrimary); + void StartPartonPairLoop(); + virtual void DoLorentzBoost(G4ThreeVector & aBoost) + { + if(theNucleus) theNucleus->DoLorentzBoost(aBoost); + theBoost = aBoost; + } + + private: + void SplitHadrons(); + void PerformSoftCollisions(); + void PerformDiffractiveCollisions(); + + private: + G4std::vector theInteractions; + struct DeleteInteractionContent {void operator()(G4InteractionContent*aC){delete aC;}}; + G4std::vector theTargets; + G4std::vector theProjectiles; + struct DeleteSplitableHadron{void operator()(G4VSplitableHadron*aS){delete aS;}}; + G4std::vector thePartonPairs; + struct DeletePartonPair{void operator()(G4PartonPair*aP){delete aP;}}; + G4Fancy3DNucleus theIncoming; + + G4SingleDiffractiveExcitation theSingleDiffExcitation; + G4DiffractiveExcitation theDiffExcitaton; + G4int ModelMode; + G4bool IsSingleDiffractive(); + + G4ThreeVector theBoost; + + private: + // model parameters HPW + const G4int nCutMax; + const G4double ThersholdParameter; + const G4double QGSMThershold; + const G4double theNucleonRadius; + +}; + + +inline G4bool G4HeavyIonParticipants::IsSingleDiffractive() +{ + G4bool result=false; + if(G4UniformRand()<1.) result = true; + return result; +} + +inline void G4HeavyIonParticipants::StartPartonPairLoop() +{ +} + +inline G4PartonPair* G4HeavyIonParticipants::GetNextPartonPair() +{ + if (thePartonPairs.empty()) return 0; + G4PartonPair * result = thePartonPairs.back(); + thePartonPairs.pop_back(); + return result; +} + + +inline void G4HeavyIonParticipants::SplitHadrons() +{ + unsigned int i; + for(i = 0; i < theInteractions.size(); i++) + { + theInteractions[i]->SplitHadrons(); + } +} + +#endif + + diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4InelasticSplitableHadron.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4InelasticSplitableHadron.hh index 43b7f672aa..6be6fd2209 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4InelasticSplitableHadron.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4InelasticSplitableHadron.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4InelasticSplitableHadron.hh,v 1.2.8.1 2001/06/28 19:13:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4InelasticSplitableHadron.hh,v 1.4 2001/08/01 17:08:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4InelasticSplitableHadron_h diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4MesonSplitter.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4MesonSplitter.hh index f8f3a0017f..90758a1bd5 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4MesonSplitter.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4MesonSplitter.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4PartonPair.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4PartonPair.hh index f3aacd4dde..edff65388f 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4PartonPair.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4PartonPair.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4PartonStringAnnihilator.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4PartonStringAnnihilator.hh index 9e73cb01b4..d0229f5bbc 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4PartonStringAnnihilator.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4PartonStringAnnihilator.hh @@ -14,14 +14,14 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PartonStringAnnihilator.hh,v 1.3.8.2 2001/06/28 20:19:57 gunter Exp $ +// $Id: G4PartonStringAnnihilator.hh,v 1.5 2001/08/01 17:08:33 hpw Exp $ // ----------------------------------------------------------------------------- // GEANT 4 class implementation file // diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSMParameters.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSMParameters.hh index c6bd6cee5d..78c5144674 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSMParameters.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSMParameters.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSMSplitableHadron.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSMSplitableHadron.hh index b78c4415bc..1ec7467817 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSMSplitableHadron.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSMSplitableHadron.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -28,6 +28,7 @@ #include "G4MesonSplitter.hh" #include "G4BaryonSplitter.hh" #include "Randomize.hh" +#include "g4std/deque" // based on prototype by Maxim Komogorov // Splitting into methods, and centralizing of model parameters HPW Feb 1999 @@ -42,6 +43,7 @@ class G4QGSMSplitableHadron : public G4VSplitableHadron G4QGSMSplitableHadron(const G4ReactionProduct & aPrimary); G4QGSMSplitableHadron(const G4ReactionProduct & aPrimary, G4bool Direction); G4QGSMSplitableHadron(const G4Nucleon & aNucleon); + G4QGSMSplitableHadron(const G4Nucleon & aNucleon, G4bool Direction); virtual ~G4QGSMSplitableHadron(); @@ -65,8 +67,8 @@ class G4QGSMSplitableHadron : public G4VSplitableHadron // aggregated data G4bool Direction; // FALSE is target. - candidate for more detailed design. @@@@ HPW - G4PartonVector Color; - G4PartonVector AntiColor; + G4std::deque Color; + G4std::deque AntiColor; private: // associated classes G4MesonSplitter theMesonSplitter; @@ -84,12 +86,18 @@ class G4QGSMSplitableHadron : public G4VSplitableHadron inline G4Parton* G4QGSMSplitableHadron::GetNextParton() { - return Color.isEmpty()?0:Color.removeLast(); + if(Color.size()==0) return 0; + G4Parton * result = Color.back(); + Color.pop_back(); + return result; } inline G4Parton* G4QGSMSplitableHadron::GetNextAntiParton() { - return AntiColor.isEmpty()?0:AntiColor.removeFirst(); + if(AntiColor.size() == 0) return 0; + G4Parton * result = AntiColor.front(); + AntiColor.pop_front(); + return result; } #endif diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSModel.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSModel.hh index 4627f52f59..bccbb72a04 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSModel.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSModel.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -45,6 +45,7 @@ //***************************************************************************************** +template class G4QGSModel : public G4VPartonStringModel { // Constructors @@ -62,7 +63,7 @@ public: virtual G4ExcitedStringVector * GetStrings(); private: - G4QGSParticipants theParticipants; + ParticipantType theParticipants; G4DiffractiveStringBuilder theDiffractiveStringBuilder; G4SoftStringBuilder theSoftStringBuilder; @@ -77,6 +78,8 @@ private: //***************************************************************************************** +#include "G4QGSModel.icc" + #endif diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSModel.cc b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSModel.icc similarity index 64% rename from source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSModel.cc rename to source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSModel.icc index ddb649706c..9158effd0b 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSModel.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSModel.icc @@ -14,29 +14,32 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // -#include "G4QGSModel.hh" #include //**************************************************************************************************************** -G4QGSModel::G4QGSModel() +template +G4QGSModel::G4QGSModel() { G4VPartonStringModel::SetThisPointer(this); } -G4QGSModel::G4QGSModel(const G4QGSModel &right) +template +G4QGSModel::G4QGSModel(const G4QGSModel &right) { G4VPartonStringModel::SetThisPointer(this); } -G4QGSModel::~G4QGSModel() +template +G4QGSModel::~G4QGSModel() { } -void G4QGSModel::Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aProjectile) +template +void G4QGSModel::Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aProjectile) { // clean-up and consistency with design, HPW Feb 1999 theParticipants.Init(aNucleus.GetN(),aNucleus.GetZ()); @@ -44,11 +47,26 @@ void G4QGSModel::Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aPro theCurrentVelocity.setY(0); // HPW Feb 1999 // this is an approximation, neglecting the motion of nucleons in the nucleus & p,n mass differences. @@@ - G4double vz = aProjectile.Get4Momentum().pz()/ - (aProjectile.Get4Momentum().e() + G4Proton::Proton()->GetPDGMass()); +// G4double vz_old = aProjectile.Get4Momentum().pz()/ +// (aProjectile.Get4Momentum().e() + G4Proton::Proton()->GetPDGMass()); + G4double nCons = 1; + if(abs(aProjectile.GetDefinition()->GetBaryonNumber()) !=0) + { + nCons = abs(aProjectile.GetDefinition()->GetBaryonNumber()); + } + G4double pz_per_projectile = aProjectile.Get4Momentum().pz()/nCons; +// G4double e_per_projectile = aProjectile.Get4Momentum().vect()*aProjectile.Get4Momentum().vect(); +// e_per_projectile /=nCons*nCons; +// e_per_projectile += G4Proton::Proton()->GetPDGMass()*G4Proton::Proton()->GetPDGMass(); + G4double e_per_projectile = aProjectile.Get4Momentum()*aProjectile.Get4Momentum(); + e_per_projectile += aProjectile.Get4Momentum().vect()*aProjectile.Get4Momentum().vect(); + e_per_projectile /=nCons*nCons; + e_per_projectile = sqrt(e_per_projectile); + e_per_projectile += G4Proton::Proton()->GetPDGMass(); + G4double vz = pz_per_projectile/e_per_projectile; //--DEBUG-- cout << "IncomingMomentum "<DoLorentzBoost(-theCurrentVelocity); + theParticipants.DoLorentzBoost(-theCurrentVelocity); G4LorentzVector Mom = aProjectile.Get4Momentum(); Mom.boost(-theCurrentVelocity); G4ReactionProduct theProjectile; @@ -60,7 +78,8 @@ void G4QGSModel::Init(const G4Nucleus & aNucleus, const G4DynamicParticle & aPro theParticipants.GetWoundedNucleus()->DoLorentzBoost(theCurrentVelocity); } -G4ExcitedStringVector * G4QGSModel::GetStrings() +template +G4ExcitedStringVector * G4QGSModel::GetStrings() { // clean-up and consistancy with design, HPW Feb 1999 // also fixing a memory leak, removing unnecessary caching, and @@ -81,18 +100,19 @@ G4ExcitedStringVector * G4QGSModel::GetStrings() // G4cout << "soft "<Get4Momentum()<Boost(theCurrentVelocity); - theStrings->insert(aString); + theStrings->push_back(aString); delete aPair; } //--DEBUG-- cout << G4endl; - for(G4int i=0; ilength(); i++) - { -// cout << "String = "<at(i)->Get4Momentum()<size(); i++) +// { +// cout << "String = "<operator[](i)->Get4Momentum()< +G4V3DNucleus* G4QGSModel::GetWoundedNucleus() const { return theParticipants.GetWoundedNucleus(); } diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSParticipants.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSParticipants.hh index b9f282f52f..7240b3e3d2 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSParticipants.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4QGSParticipants.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -45,25 +45,36 @@ class G4QGSParticipants : public G4VParticipants int operator==(const G4QGSParticipants &right) const; int operator!=(const G4QGSParticipants &right) const; + virtual void DoLorentzBoost(Hep3Vector aBoost) + { + if(theNucleus) theNucleus->DoLorentzBoost(aBoost); + theBoost = aBoost; + } + G4PartonPair* GetNextPartonPair(); void BuildInteractions(const G4ReactionProduct &thePrimary); void StartPartonPairLoop(); - - private: + + private: void SplitHadrons(); void PerformSoftCollisions(); void PerformDiffractiveCollisions(); private: - G4RWTPtrOrderedVector theInteractions; - G4RWTPtrOrderedVector theTargets; - G4RWTPtrOrderedVector thePartonPairs; + struct DeleteInteractionContent {void operator()(G4InteractionContent*aC){delete aC;}}; + G4std::vector theInteractions; + struct DeleteSplitableHadron{void operator()(G4VSplitableHadron*aS){delete aS;}}; + G4std::vector theTargets; + struct DeletePartonPair{void operator()(G4PartonPair*aP){delete aP;}}; + G4std::vector thePartonPairs; G4SingleDiffractiveExcitation theSingleDiffExcitation; G4DiffractiveExcitation theDiffExcitaton; G4int ModelMode; G4bool IsSingleDiffractive(); + G4ThreeVector theBoost; + private: // model parameters HPW const G4int nCutMax; @@ -76,7 +87,7 @@ class G4QGSParticipants : public G4VParticipants inline G4bool G4QGSParticipants::IsSingleDiffractive() { - G4bool result; + G4bool result=false; if(G4UniformRand()<1.) result = true; return result; } @@ -87,17 +98,19 @@ inline void G4QGSParticipants::StartPartonPairLoop() inline G4PartonPair* G4QGSParticipants::GetNextPartonPair() { -if (thePartonPairs.isEmpty()) return 0; -return thePartonPairs.removeLast(); + if (thePartonPairs.empty()) return 0; + G4PartonPair * result = thePartonPairs.back(); + thePartonPairs.pop_back(); + return result; } inline void G4QGSParticipants::SplitHadrons() { - G4int i; - for(i = 0; i < theInteractions.length(); i++) + unsigned int i; + for(i = 0; i < theInteractions.size(); i++) { - theInteractions.at(i)->SplitHadrons(); + theInteractions[i]->SplitHadrons(); } } diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPBaryon.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPBaryon.hh index d1fc18f86c..2814d0274f 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPBaryon.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPBaryon.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -77,7 +77,7 @@ class G4SPBaryon ~G4SPBaryon() { - for(G4int i=0;i theBaryons; + G4std::vector theBaryons; }; @@ -44,7 +46,7 @@ inline const G4SPBaryon * G4SPBaryonTable:: GetBaryon(G4ParticleDefinition * aDefinition) { G4SPBaryon * result = 0; - for(G4int i=0; iGetDefinition()==aDefinition) { diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPPartonInfo.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPPartonInfo.hh index 323c5b5b96..ea6fc42136 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPPartonInfo.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SPPartonInfo.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SoftStringBuilder.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SoftStringBuilder.hh index 4124affc2d..dc61139bfb 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SoftStringBuilder.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4SoftStringBuilder.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4VAnnihilationCrossSection.hh b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4VAnnihilationCrossSection.hh index c9339b1b69..abfb879cf5 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/include/G4VAnnihilationCrossSection.hh +++ b/source/processes/hadronic/models/generator/quark_gluon_string/include/G4VAnnihilationCrossSection.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4ASCCrossSection.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4ASCCrossSection.cc index 40625f8e22..de27b060e7 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4ASCCrossSection.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4ASCCrossSection.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4AnnihilationCrossSection.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4AnnihilationCrossSection.cc index d5be0939cd..a67c000025 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4AnnihilationCrossSection.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4AnnihilationCrossSection.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4BaryonSplitter.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4BaryonSplitter.cc index 08f1efd7a4..e5e83ec362 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4BaryonSplitter.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4BaryonSplitter.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4DiffractiveStringBuilder.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4DiffractiveStringBuilder.cc index 1f7d90bf08..6521997539 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4DiffractiveStringBuilder.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4DiffractiveStringBuilder.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4GammaAnnCrossSection.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4GammaAnnCrossSection.cc index dd1acdbfc4..46ce5ebc84 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4GammaAnnCrossSection.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4GammaAnnCrossSection.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4HeavyIonParticipants.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4HeavyIonParticipants.cc new file mode 100644 index 0000000000..112e0ccf7b --- /dev/null +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4HeavyIonParticipants.cc @@ -0,0 +1,264 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#include "globals.hh" +#include "G4HeavyIonParticipants.hh" +#include "G4LorentzVector.hh" +#include "G4Pair.hh" +#include "g4std/algorithm" + +// Class G4HeavyIonParticipants + +// HPW April 2001 +// Promoting model parameters from local variables class properties + +G4HeavyIonParticipants::G4HeavyIonParticipants() : theDiffExcitaton(0.7*GeV, 250*MeV, 250*MeV), + nCutMax(7),ThersholdParameter(0.45*GeV), + QGSMThershold(3*GeV),theNucleonRadius(1.5*fermi) +{ +} + +G4HeavyIonParticipants::G4HeavyIonParticipants(const G4HeavyIonParticipants &right) +: nCutMax(right.nCutMax),ThersholdParameter(right.ThersholdParameter), + QGSMThershold(right.QGSMThershold),theNucleonRadius(right.theNucleonRadius) +{ +} + + +G4HeavyIonParticipants::~G4HeavyIonParticipants() +{ +} + +void G4HeavyIonParticipants::BuildInteractions(const G4ReactionProduct &thePrimary) +{ + G4PomeronCrossSection theProtonProbability(G4Proton::Proton()); // @@@ should be data member + G4PomeronCrossSection theNeutronProbability(G4Neutron::Neutron()); // @@@ should be data member + G4double outerRadiusA = theNucleus->GetOuterRadius(); + theIncoming.Init(thePrimary.GetDefinition()->GetBaryonNumber(), + thePrimary.GetDefinition()->GetPDGCharge() ); + theIncoming.DoLorentzBoost(-theBoost); + G4double outerRadiusB = theIncoming.GetOuterRadius(); + ModelMode = SOFT; + + // first find the collisions HPW + G4std::for_each(theInteractions.begin(), theInteractions.end(), DeleteInteractionContent()); + theInteractions.clear(); + G4int totalCuts = 0; + G4double impactUsed = 0; + G4int deb1, deb2; + while(theInteractions.empty()) + { + // choose random impact parameter HPW + G4Pair theImpactParameter; + theImpactParameter = theNucleus->ChooseImpactXandY(outerRadiusA+outerRadiusB+theNucleonRadius); + G4double impactX = theImpactParameter.first; + G4double impactY = theImpactParameter.second; + + // loop over nuclei to find collissions HPW + theIncoming.StartLoop(); + G4Nucleon * iNucleon; + G4Nucleon * pNucleon; + deb1 = 0; + while( (iNucleon = theIncoming.GetNextNucleon()) ) + { + deb1 ++; + deb2 = 0; + theNucleus->StartLoop(); + G4int nucleonCount = 0; // debug + while( (pNucleon = theNucleus->GetNextNucleon()) ) + { + deb2 ++; + if(totalCuts>nCutMax) break; + nucleonCount++; // debug + // Needs to be moved to Probability class @@@ + G4double s = (iNucleon->Get4Momentum() + pNucleon->Get4Momentum()).mag2(); + G4double Distance2 = sqr(impactX - pNucleon->GetPosition().x() - iNucleon->GetPosition().x()) + + sqr(impactY - pNucleon->GetPosition().y() - iNucleon->GetPosition().y()); + G4PomeronCrossSection * theProbability; + G4double Probability; + if(iNucleon->GetDefinition() == G4Proton::Proton()) theProbability = &theProtonProbability; + if(iNucleon->GetDefinition() == G4Neutron::Neutron()) theProbability = &theNeutronProbability; + Probability = theNeutronProbability.GetInelasticProbability(s, Distance2); +// test for inelastic collision + G4double rndNumber = G4UniformRand(); +// ModelMode = DIFFRACTIVE; +// if(deb1<2) +// { +// Probability = 5; // HPW for debugging +// } +// else +// { +// Probability = -5; +// } + if (Probability > rndNumber) + { + +//--DEBUG-- cout << "DEBUG p="<< Probability<<" r="<GetProjectile(); + G4Parton* aParton = aProjectile->GetNextParton(); + G4PartonPair * aPartonPair; + // projectile first HPW + if (aParton) + { + aPartonPair = new G4PartonPair(aParton, aProjectile->GetNextAntiParton(), + G4PartonPair::DIFFRACTIVE, + G4PartonPair::PROJECTILE); + thePartonPairs.push_back(aPartonPair); + } + // then target HPW + G4VSplitableHadron* aTarget = anIniteraction->GetTarget(); + aParton = aTarget->GetNextParton(); + if (aParton) + { + aPartonPair = new G4PartonPair(aParton, aTarget->GetNextAntiParton(), + G4PartonPair::DIFFRACTIVE, + G4PartonPair::TARGET); + thePartonPairs.push_back(aPartonPair); + } + } +} + +void G4HeavyIonParticipants::PerformSoftCollisions() +{ + G4std::vector::iterator i; + for(i = theInteractions.begin(); i != theInteractions.end(); i++) + { + G4InteractionContent* anIniteraction = *i; + G4PartonPair * aPair = NULL; + if (anIniteraction->GetNumberOfSoftCollisions()) + { + G4VSplitableHadron* pProjectile = anIniteraction->GetProjectile(); + G4VSplitableHadron* pTarget = anIniteraction->GetTarget(); + for (G4int j = 0; j < anIniteraction->GetNumberOfSoftCollisions(); j++) + { + aPair = new G4PartonPair(pTarget->GetNextParton(), pProjectile->GetNextAntiParton(), + G4PartonPair::SOFT, G4PartonPair::TARGET); + thePartonPairs.push_back(aPair); + aPair = new G4PartonPair(pProjectile->GetNextParton(), pTarget->GetNextAntiParton(), + G4PartonPair::SOFT, G4PartonPair::PROJECTILE); + thePartonPairs.push_back(aPair); + } + delete *i; + i=theInteractions.erase(i); + i--; + } + } +} diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4InelasticSplitableHadron.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4InelasticSplitableHadron.cc index f57fb4de40..253498181d 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4InelasticSplitableHadron.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4InelasticSplitableHadron.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -134,7 +134,7 @@ void G4InelasticSplitableHadron::GetValenceQuarkFlavors(G4int PDGcode, G4int& aE { G4int Swap = aEnd; aEnd = bEnd; - bEnd = aEnd; + bEnd = Swap; } return; } @@ -158,7 +158,7 @@ void G4InelasticSplitableHadron::GetValenceQuarkFlavors(G4int PDGcode, G4int& aE { G4int Swap = aEnd; aEnd = bEnd; - bEnd = aEnd; + bEnd = Swap; } } diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4MesonSplitter.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4MesonSplitter.cc index 289471dcea..aa5c5dc3ca 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4MesonSplitter.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4MesonSplitter.cc @@ -14,17 +14,26 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // #include "G4MesonSplitter.hh" +#include "Randomize.hh" G4bool G4MesonSplitter::SplitMeson(G4int PDGcode, G4int* aEnd, G4int* bEnd) { G4int absPDGcode = abs(PDGcode); + if(absPDGcode == 22) + { + G4int it=1; + if(G4UniformRand()<.5) it++; + *aEnd = it; + *bEnd = -it; + return TRUE; + } if (absPDGcode >= 1000) return FALSE; G4int heavy = absPDGcode/100; diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonPair.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonPair.cc index 959ba2f5df..2ee6bc3e95 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonPair.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonPair.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonStringAnnihilator.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonStringAnnihilator.cc index 86b47f07cf..d78b6578da 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonStringAnnihilator.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4PartonStringAnnihilator.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSMParameters.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSMParameters.cc index 34e4a88263..637386885c 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSMParameters.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSMParameters.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSMSplitableHadron.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSMSplitableHadron.cc index 9787936186..fabcc050e5 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSMSplitableHadron.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4QGSMSplitableHadron.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -50,7 +50,7 @@ void G4QGSMSplitableHadron::InitParameters() // changing rapidity distribution for projectile like beta = 2.5;// Note that this number is still assumed in the algorithm // needs to be generalized. - theMinPz = 0.8*G4PionMinus::PionMinus()->GetPDGMass(); + theMinPz = 0.5*G4PionMinus::PionMinus()->GetPDGMass(); // theMinPz = 0.1*G4PionMinus::PionMinus()->GetPDGMass(); // theMinPz = G4PionMinus::PionMinus()->GetPDGMass(); // as low as possible, otherwise, we have unphysical boundary conditions in the sampling. @@ -87,6 +87,13 @@ G4QGSMSplitableHadron::G4QGSMSplitableHadron(const G4Nucleon & aNucleon) InitParameters(); } +G4QGSMSplitableHadron::G4QGSMSplitableHadron(const G4Nucleon & aNucleon, G4bool aDirection) + : G4VSplitableHadron(aNucleon) +{ + InitParameters(); + Direction = aDirection; +} + G4QGSMSplitableHadron::~G4QGSMSplitableHadron(){} const G4QGSMSplitableHadron & G4QGSMSplitableHadron::operator=(const G4QGSMSplitableHadron &right) @@ -100,7 +107,9 @@ const G4QGSMSplitableHadron & G4QGSMSplitableHadron::operator=(const G4QGSMSplit void G4QGSMSplitableHadron::SplitUp() { - if (!Color.isEmpty()) return; + if (IsSplit()) return; + Splitting(); + if (Color.size()!=0) return; if (GetSoftCollisionCount() == 0) { DiffractiveSplitUp(); @@ -126,7 +135,8 @@ void G4QGSMSplitableHadron::DiffractiveSplitUp() G4double pt2 = HadronMom.perp2(); G4double transverseMass2 = HadronMom.plus()*HadronMom.minus(); G4double maxAvailMomentum2 = sqr(sqrt(transverseMass2) - sqrt(pt2)); - G4ThreeVector pt = GaussianPt(widthOfPtSquare, maxAvailMomentum2); + G4ThreeVector pt(0.,0.,0.); + if(maxAvailMomentum2/widthOfPtSquare>0.01) pt = GaussianPt(widthOfPtSquare, maxAvailMomentum2); G4LorentzVector LeftMom(pt, 0.); G4LorentzVector RightMom; @@ -147,8 +157,8 @@ void G4QGSMSplitableHadron::DiffractiveSplitUp() RightMom.setE (0.5*(RightPlus + RightMinus)); Left->Set4Momentum(LeftMom); Right->Set4Momentum(RightMom); - Color.insert(Left); - AntiColor.insert(Right); + Color.push_back(Left); + AntiColor.push_back(Right); } @@ -160,20 +170,61 @@ void G4QGSMSplitableHadron::SoftSplitUp() G4double SumPx = 0.; G4ThreeVector Pos = GetPosition(); G4int nSeaPair = GetSoftCollisionCount()-1; + + // here the condition,to ensure viability of splitting, also in cases + // where difractive excitation occured together with soft scattering. + // G4double LightConeMomentum = (Direction)? Get4Momentum().plus() : Get4Momentum().minus(); + // G4double Xmin = theMinPz/LightConeMomentum; + G4double Xmin = theMinPz/( Get4Momentum().e() - GetDefinition()->GetPDGMass() ); + while(Xmin>=1-(2*nSeaPair+1)*Xmin) Xmin*=0.95; + G4int aSeaPair; for (aSeaPair = 0; aSeaPair < nSeaPair; aSeaPair++) { - G4int aPDGCode = 1 + (G4int)(G4UniformRand()/StrangeSuppress); + // choose quark flavour, d:u:s = 1:1:(1/StrangeSuppress-2) + + G4int aPDGCode = 1 + (G4int)(G4UniformRand()/StrangeSuppress); + + // BuildSeaQuark() determines quark spin, isospin and colour + // via parton-constructor G4Parton(aPDGCode) G4Parton * aParton = BuildSeaQuark(false, aPDGCode, nSeaPair); + +// G4cerr << "G4QGSMSplitableHadron::SoftSplitUp()" << G4endl; + +// G4cerr << "Parton 1: " +// << " PDGcode: " << aPDGCode +// << " - Name: " << aParton->GetDefinition()->GetParticleName() +// << " - Type: " << aParton->GetDefinition()->GetParticleType() +// << " - Spin-3: " << aParton->GetSpinZ() +// << " - Colour: " << aParton->GetColour() << G4endl; + + // save colour a spin-3 for anti-quark + + G4int firstPartonColour = aParton->GetColour(); + G4double firstPartonSpinZ = aParton->GetSpinZ(); + SumPx += aParton->Get4Momentum().px(); SumPy += aParton->Get4Momentum().py(); - Color.insert(aParton); + Color.push_back(aParton); + + // create anti-quark aParton = BuildSeaQuark(true, aPDGCode, nSeaPair); + aParton->SetSpinZ(-firstPartonSpinZ); + aParton->SetColour(-firstPartonColour); + +// G4cerr << "Parton 2: " +// << " PDGcode: " << -aPDGCode +// << " - Name: " << aParton->GetDefinition()->GetParticleName() +// << " - Type: " << aParton->GetDefinition()->GetParticleType() +// << " - Spin-3: " << aParton->GetSpinZ() +// << " - Colour: " << aParton->GetColour() << G4endl; +// G4cerr << "------------" << G4endl; + SumPx += aParton->Get4Momentum().px(); SumPy += aParton->Get4Momentum().py(); - AntiColor.insert(aParton); + AntiColor.push_back(aParton); } // Valence quark G4Parton* pColorParton = NULL; @@ -203,12 +254,10 @@ void G4QGSMSplitableHadron::SoftSplitUp() G4LorentzVector AntiColorMom(-SumPx, -SumPy, 0, 0); pAntiColorParton->Set4Momentum(AntiColorMom); } - Color.insert(pColorParton); - AntiColor.insert(pAntiColorParton); + Color.push_back(pColorParton); + AntiColor.push_back(pAntiColorParton); // Sample X - G4double LightConeMomentum = (Direction)? Get4Momentum().plus() : Get4Momentum().minus(); - G4double Xmin = theMinPz/LightConeMomentum; G4int nAttempt = 0; G4double SumX = 0; G4double aBeta = beta; @@ -229,29 +278,29 @@ void G4QGSMSplitableHadron::SoftSplitUp() ColorX = SampleX(Xmin, NumberOfUnsampledSeaQuarks, 2*nSeaPair, aBeta); HPWtest = ColorX; while (ColorX < Xmin || ColorX > 1.|| 1. - ColorX <= Xmin); - Color.last()->SetX(SumX = ColorX);// this is the valenz quark. + Color.back()->SetX(SumX = ColorX);// this is the valenz quark. for(G4int aPair = 0; aPair < nSeaPair; aPair++) { NumberOfUnsampledSeaQuarks--; ColorX = SampleX(Xmin, NumberOfUnsampledSeaQuarks, 2*nSeaPair, aBeta); - Color.at(aPair)->SetX(ColorX); + Color[aPair]->SetX(ColorX); SumX += ColorX; NumberOfUnsampledSeaQuarks--; AntiColorX = SampleX(Xmin, NumberOfUnsampledSeaQuarks, 2*nSeaPair, aBeta); - AntiColor.at(aPair)->SetX(AntiColorX); // the 'sea' partons + AntiColor[aPair]->SetX(AntiColorX); // the 'sea' partons SumX += AntiColorX; if (1. - SumX <= Xmin) break; } } while (1. - SumX <= Xmin); - AntiColor.last()->SetX(1. - SumX); // the di-quark takes the rest, then go to momentum + (*(AntiColor.end()-1))->SetX(1. - SumX); // the di-quark takes the rest, then go to momentum G4double lightCone = ((!Direction) ? Get4Momentum().minus() : Get4Momentum().plus()); for(aSeaPair = 0; aSeaPair < nSeaPair+1; aSeaPair++) { - G4Parton* aParton = Color.at(aSeaPair); + G4Parton* aParton = Color[aSeaPair]; aParton->DefineMomentumInZ(lightCone, Direction); - aParton = AntiColor.at(aSeaPair); + aParton = AntiColor[aSeaPair]; aParton->DefineMomentumInZ(lightCone, Direction); } //--DEBUG-- cout <GetPDGEncoding(); @@ -276,8 +325,48 @@ void G4QGSMSplitableHadron::GetValenceQuarkFlavors(const G4ParticleDefinition * Parton1 = new G4Parton(aEnd); Parton1->SetPosition(GetPosition()); +// G4cerr << "G4QGSMSplitableHadron::GetValenceQuarkFlavors()" << G4endl; +// G4cerr << "Parton 1: " +// << " PDGcode: " << aEnd +// << " - Name: " << Parton1->GetDefinition()->GetParticleName() +// << " - Type: " << Parton1->GetDefinition()->GetParticleType() +// << " - Spin-3: " << Parton1->GetSpinZ() +// << " - Colour: " << Parton1->GetColour() << G4endl; + Parton2 = new G4Parton(bEnd); Parton2->SetPosition(GetPosition()); + +// G4cerr << "Parton 2: " +// << " PDGcode: " << bEnd +// << " - Name: " << Parton2->GetDefinition()->GetParticleName() +// << " - Type: " << Parton2->GetDefinition()->GetParticleType() +// << " - Spin-3: " << Parton2->GetSpinZ() +// << " - Colour: " << Parton2->GetColour() << G4endl; +// G4cerr << "... now checking for color and spin conservation - yielding: " << G4endl; + + // colour of parton 1 choosen at random by G4Parton(aEnd) + // colour of parton 2 is the opposite: + + Parton2->SetColour(-(Parton1->GetColour())); + + // isospin-3 of both partons is handled by G4Parton(PDGCode) + + // spin-3 of parton 1 and 2 choosen at random by G4Parton(aEnd) + // spin-3 of parton 2 may be constrained by spin of original particle: + + if ( abs(Parton1->GetSpinZ() + Parton2->GetSpinZ()) > aPart->GetPDGSpin()) + { + Parton2->SetSpinZ(-(Parton2->GetSpinZ())); + } + +// G4cerr << "Parton 2: " +// << " PDGcode: " << bEnd +// << " - Name: " << Parton2->GetDefinition()->GetParticleName() +// << " - Type: " << Parton2->GetDefinition()->GetParticleType() +// << " - Spin-3: " << Parton2->GetSpinZ() +// << " - Colour: " << Parton2->GetColour() << G4endl; +// G4cerr << "------------" << G4endl; + } @@ -319,7 +408,17 @@ SampleX(G4double anXmin, G4int nSea, G4int totalSea, G4double aBeta) do { x1 = -1.; - while(x1=1-(totalSea+1)*anXmin) x1 = G4UniformRand(); + G4int debcount=0; + while(x1=1-(totalSea+1)*anXmin) + { + debcount ++; + if(debcount>10000) + { + G4cout << "anXmin = "< theImpactParameter; @@ -84,9 +87,12 @@ void G4QGSParticipants::BuildInteractions(const G4ReactionProduct &thePrimary) // loop over nuclei to find collissions HPW theNucleus->StartLoop(); G4int nucleonCount = 0; // debug - while( pNucleon = theNucleus->GetNextNucleon() ) + while( (pNucleon = theNucleus->GetNextNucleon()) ) { - if(totalCuts>nCutMax) break; + if(totalCuts>1.5*thePrimary.GetKineticEnergy()/GeV) + { + break; + } nucleonCount++; // debug // Needs to be moved to Probability class @@@ G4double s = (aPrimaryMomentum + pNucleon->Get4Momentum()).mag2(); @@ -100,7 +106,7 @@ void G4QGSParticipants::BuildInteractions(const G4ReactionProduct &thePrimary) { //--DEBUG-- cout << "DEBUG p="<< Probability<<" r="<GetProjectile(); G4Parton* aParton = aProjectile->GetNextParton(); G4PartonPair * aPartonPair; @@ -184,7 +193,7 @@ void G4QGSParticipants::PerformDiffractiveCollisions() aPartonPair = new G4PartonPair(aParton, aProjectile->GetNextAntiParton(), G4PartonPair::DIFFRACTIVE, G4PartonPair::PROJECTILE); - thePartonPairs.insert(aPartonPair); + thePartonPairs.push_back(aPartonPair); } // then target HPW G4VSplitableHadron* aTarget = anIniteraction->GetTarget(); @@ -194,17 +203,17 @@ void G4QGSParticipants::PerformDiffractiveCollisions() aPartonPair = new G4PartonPair(aParton, aTarget->GetNextAntiParton(), G4PartonPair::DIFFRACTIVE, G4PartonPair::TARGET); - thePartonPairs.insert(aPartonPair); + thePartonPairs.push_back(aPartonPair); } } } void G4QGSParticipants::PerformSoftCollisions() { - G4int i; - for(i = 0; i < theInteractions.length(); i++) + G4std::vector::iterator i; + for(i = theInteractions.begin(); i != theInteractions.end(); i++) { - G4InteractionContent* anIniteraction = theInteractions.at(i); + G4InteractionContent* anIniteraction = *i; G4PartonPair * aPair = NULL; if (anIniteraction->GetNumberOfSoftCollisions()) { @@ -214,12 +223,14 @@ void G4QGSParticipants::PerformSoftCollisions() { aPair = new G4PartonPair(pTarget->GetNextParton(), pProjectile->GetNextAntiParton(), G4PartonPair::SOFT, G4PartonPair::TARGET); - thePartonPairs.insert(aPair); + thePartonPairs.push_back(aPair); aPair = new G4PartonPair(pProjectile->GetNextParton(), pTarget->GetNextAntiParton(), G4PartonPair::SOFT, G4PartonPair::PROJECTILE); - thePartonPairs.insert(aPair); + thePartonPairs.push_back(aPair); } - delete theInteractions.removeAt(i--); + delete *i; + i=theInteractions.erase(i); + i--; } } } diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4SPBaryon.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4SPBaryon.cc index 1c00e96608..ab6024b529 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4SPBaryon.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4SPBaryon.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4SoftStringBuilder.cc b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4SoftStringBuilder.cc index 9f8ee5a2f5..611ca79036 100644 --- a/source/processes/hadronic/models/generator/quark_gluon_string/src/G4SoftStringBuilder.cc +++ b/source/processes/hadronic/models/generator/quark_gluon_string/src/G4SoftStringBuilder.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/generator/string_common/include/G4DiffractiveExcitation.hh b/source/processes/hadronic/models/generator/string_common/include/G4DiffractiveExcitation.hh index f6abd3d882..2349a97941 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4DiffractiveExcitation.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4DiffractiveExcitation.hh @@ -14,14 +14,14 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DiffractiveExcitation.hh,v 1.4.8.2 2001/06/28 20:19:57 gunter Exp $ +// $Id: G4DiffractiveExcitation.hh,v 1.6 2001/08/01 17:08:57 hpw Exp $ #ifndef G4DiffractiveExcitation_h #define G4DiffractiveExcitation_h 1 diff --git a/source/processes/hadronic/models/generator/string_common/include/G4EventGenerator.hh b/source/processes/hadronic/models/generator/string_common/include/G4EventGenerator.hh index a77f64fc00..1f893f4408 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4EventGenerator.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4EventGenerator.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EventGenerator.hh,v 1.2.8.1 2001/06/28 19:13:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EventGenerator.hh,v 1.4 2001/08/01 17:08:57 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4EventGenerator_h #define G4EventGenerator_h 1 diff --git a/source/processes/hadronic/models/generator/string_common/include/G4InteractionCode.hh b/source/processes/hadronic/models/generator/string_common/include/G4InteractionCode.hh index 25d426740a..f8fb499614 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4InteractionCode.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4InteractionCode.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4InteractionCode.hh,v 1.2.8.1 2001/06/28 19:13:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4InteractionCode.hh,v 1.4 2001/08/01 17:08:58 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4InteractionCode_h #define G4InteractionCode_h 1 diff --git a/source/processes/hadronic/models/generator/string_common/include/G4InteractionContent.hh b/source/processes/hadronic/models/generator/string_common/include/G4InteractionContent.hh index 9f04b2ffb9..e8aec595fd 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4InteractionContent.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4InteractionContent.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4InteractionContent.hh,v 1.3.8.2 2001/06/28 20:19:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4InteractionContent.hh,v 1.5 2001/08/01 17:08:58 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4InteractionContent_h diff --git a/source/processes/hadronic/models/generator/string_common/include/G4PomeronCrossSection.hh b/source/processes/hadronic/models/generator/string_common/include/G4PomeronCrossSection.hh index ca832f26ef..ce9f0d8188 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4PomeronCrossSection.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4PomeronCrossSection.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -23,8 +23,8 @@ #ifndef G4PomeronCrossSection_h #define G4PomeronCrossSection_h 1 // -// $Id: G4PomeronCrossSection.hh,v 1.3.8.1 2001/06/28 19:13:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PomeronCrossSection.hh,v 1.6 2001/11/13 14:56:53 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4Proton.hh" #include "G4Neutron.hh" @@ -38,6 +38,7 @@ #include "G4KaonZero.hh" #include "G4KaonZeroShort.hh" #include "G4KaonZeroLong.hh" +#include "G4Gamma.hh" class G4PomeronCrossSection { @@ -57,6 +58,8 @@ class G4PomeronCrossSection G4PomeronCrossSection(const G4KaonZeroLong * ); G4PomeronCrossSection(const G4KaonZeroShort * ); + G4PomeronCrossSection(const G4Gamma * ); + ~G4PomeronCrossSection(); // s = (center of mass energy)**2 G4double GetTotalCrossSection(const G4double s); @@ -104,6 +107,8 @@ class G4PomeronCrossSection void InitForNucleon(); void InitForPion(); void InitForKaon(); + void InitForGamma(); + G4double Expand(G4double z); inline G4double Z(const G4double Scms); inline G4double SigP(const G4double Scms); diff --git a/source/processes/hadronic/models/generator/string_common/include/G4SingleDiffractiveExcitation.hh b/source/processes/hadronic/models/generator/string_common/include/G4SingleDiffractiveExcitation.hh index b80368330c..af712bedac 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4SingleDiffractiveExcitation.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4SingleDiffractiveExcitation.hh @@ -14,14 +14,14 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4SingleDiffractiveExcitation.hh,v 1.2.8.2 2001/06/28 20:19:57 gunter Exp $ +// $Id: G4SingleDiffractiveExcitation.hh,v 1.4 2001/08/01 17:08:58 hpw Exp $ #ifndef G4SingleDiffractiveExcitation_h #define G4SingleDiffractiveExcitation_h 1 diff --git a/source/processes/hadronic/models/generator/string_common/include/G4StringModel.hh b/source/processes/hadronic/models/generator/string_common/include/G4StringModel.hh index 8d0014c785..997e533ddd 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4StringModel.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4StringModel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StringModel.hh,v 1.3.8.1 2001/06/28 19:13:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StringModel.hh,v 1.5 2001/08/01 17:08:58 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4StringModel_h #define G4StringModel_h 1 diff --git a/source/processes/hadronic/models/generator/string_common/include/G4VParticipants.hh b/source/processes/hadronic/models/generator/string_common/include/G4VParticipants.hh index 51fb7ab750..77a39f9408 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VParticipants.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VParticipants.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VParticipants.hh,v 1.2.8.2 2001/06/28 20:19:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VParticipants.hh,v 1.4 2001/08/01 17:08:59 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VParticipants_h diff --git a/source/processes/hadronic/models/generator/string_common/include/G4VPartonStringModel.hh b/source/processes/hadronic/models/generator/string_common/include/G4VPartonStringModel.hh index 19a1229264..7d439fba05 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VPartonStringModel.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VPartonStringModel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VPartonStringModel.hh,v 1.3.8.2 2001/06/28 20:19:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPartonStringModel.hh,v 1.5 2001/08/01 17:08:59 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VPartonStringModel_h #define G4VPartonStringModel_h 1 diff --git a/source/processes/hadronic/models/generator/string_common/include/G4VSplitableHadron.hh b/source/processes/hadronic/models/generator/string_common/include/G4VSplitableHadron.hh index 8a960eaf05..4ad8ddbf79 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VSplitableHadron.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VSplitableHadron.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VSplitableHadron.hh,v 1.3.8.2 2001/06/28 20:19:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSplitableHadron.hh,v 1.8 2001/11/29 14:22:49 stesting Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VSplitableHadron_h @@ -45,7 +45,7 @@ class G4Nucleon; class G4Parton; class G4VKineticNucleon; -#include "g4rw/tpordvec.h" +#include "g4std/vector" class G4VSplitableHadron { @@ -69,6 +69,7 @@ class G4VSplitableHadron G4ParticleDefinition * GetDefinition() const; void IncrementCollisionCount(G4int aCount); + void SetCollisionCount(G4int aCount); void SetPosition(const G4ThreeVector &aPosition); const G4ThreeVector & GetPosition() const; @@ -76,10 +77,12 @@ class G4VSplitableHadron virtual void SplitUp() = 0; virtual G4Parton * GetNextParton() = 0 ; virtual G4Parton * GetNextAntiParton() = 0 ; + G4bool IsSplit() { return isSplit;} protected: G4int GetSoftCollisionCount(); + void Splitting() {isSplit = true;} private: @@ -95,6 +98,8 @@ class G4VSplitableHadron G4ThreeVector thePosition; G4int theCollisionCount; + G4bool isSplit; + }; inline G4int G4VSplitableHadron::GetSoftCollisionCount() @@ -102,6 +107,11 @@ inline G4int G4VSplitableHadron::GetSoftCollisionCount() return theCollisionCount; } +inline void G4VSplitableHadron::SetCollisionCount(G4int aCount) +{ + theCollisionCount = aCount; +} + inline void G4VSplitableHadron::Set4Momentum(const G4LorentzVector &a4Momentum) { the4Momentum=a4Momentum; diff --git a/source/processes/hadronic/models/generator/string_common/include/G4VStringFragmentation.hh b/source/processes/hadronic/models/generator/string_common/include/G4VStringFragmentation.hh index 764481fc84..32b5ffda2e 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VStringFragmentation.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VStringFragmentation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VStringFragmentation.hh,v 1.3.8.1 2001/06/28 19:13:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VStringFragmentation.hh,v 1.6 2001/10/02 14:09:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VStringFragmentation_h #define G4VStringFragmentation_h 1 @@ -35,7 +35,7 @@ class G4VStringFragmentation { public: G4VStringFragmentation(); - ~G4VStringFragmentation(); + virtual ~G4VStringFragmentation(); private: G4VStringFragmentation(const G4VStringFragmentation &right); diff --git a/source/processes/hadronic/models/generator/string_common/include/G4VertexCode.hh b/source/processes/hadronic/models/generator/string_common/include/G4VertexCode.hh index f011354d7a..4579d3f962 100644 --- a/source/processes/hadronic/models/generator/string_common/include/G4VertexCode.hh +++ b/source/processes/hadronic/models/generator/string_common/include/G4VertexCode.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VertexCode.hh,v 1.2.8.1 2001/06/28 19:13:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VertexCode.hh,v 1.4 2001/08/01 17:09:00 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VertexCode_h #define G4VertexCode_h 1 diff --git a/source/processes/hadronic/models/generator/string_common/src/G4DiffractiveExcitation.cc b/source/processes/hadronic/models/generator/string_common/src/G4DiffractiveExcitation.cc index 8f92f2c159..34ebbe21c8 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4DiffractiveExcitation.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4DiffractiveExcitation.cc @@ -14,14 +14,14 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DiffractiveExcitation.cc,v 1.8.2.2 2001/06/28 20:19:58 gunter Exp $ +// $Id: G4DiffractiveExcitation.cc,v 1.10 2001/08/01 17:09:02 hpw Exp $ // ------------------------------------------------------------ // GEANT 4 class implemetation file // diff --git a/source/processes/hadronic/models/generator/string_common/src/G4EventGenerator.cc b/source/processes/hadronic/models/generator/string_common/src/G4EventGenerator.cc index c945e875b4..8d27d00557 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4EventGenerator.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4EventGenerator.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4EventGenerator.cc,v 1.2.8.1 2001/06/28 19:13:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EventGenerator.cc,v 1.4 2001/08/01 17:09:02 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4EventGenerator #include "G4EventGenerator.hh" diff --git a/source/processes/hadronic/models/generator/string_common/src/G4InteractionContent.cc b/source/processes/hadronic/models/generator/string_common/src/G4InteractionContent.cc index 56815d6156..9596407b30 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4InteractionContent.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4InteractionContent.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4InteractionContent.cc,v 1.3.8.2 2001/06/28 20:19:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4InteractionContent.cc,v 1.5 2001/08/01 17:09:02 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/generator/string_common/src/G4PomeronCrossSection.cc b/source/processes/hadronic/models/generator/string_common/src/G4PomeronCrossSection.cc index 064e997bbe..fde50fcae6 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4PomeronCrossSection.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4PomeronCrossSection.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PomeronCrossSection.cc,v 1.3.8.1 2001/06/28 19:13:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PomeronCrossSection.cc,v 1.7 2001/11/13 14:58:16 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4PomeronCrossSection.hh" @@ -91,6 +91,10 @@ G4PomeronCrossSection::G4PomeronCrossSection(const G4KaonZeroShort * particle) { InitForKaon(); } +G4PomeronCrossSection::G4PomeronCrossSection(const G4Gamma * particle) +{ + InitForGamma(); +} G4double G4PomeronCrossSection::GetTotalCrossSection(const G4double s) { @@ -214,6 +218,19 @@ void G4PomeronCrossSection::InitForKaon() pomeron_Alpha_Hard = 1.47; } +void G4PomeronCrossSection::InitForGamma() +{ + pomeron_S= 1.7*GeV*GeV; +// pomeron_Gamma= 1.42/GeV/GeV; + pomeron_Gamma= 2.07/GeV/GeV; + pomeron_C= 1.7; + pomeron_Rsquare= 2.16/GeV/GeV; + pomeron_Alpha= 1.0808; + pomeron_Alphaprime= 0.25/GeV/GeV; + pomeron_Gamma_Hard = 0.0002/GeV/GeV; + pomeron_Alpha_Hard = 1.47; +} + G4double G4PomeronCrossSection::Expand(G4double z) { diff --git a/source/processes/hadronic/models/generator/string_common/src/G4SingleDiffractiveExcitation.cc b/source/processes/hadronic/models/generator/string_common/src/G4SingleDiffractiveExcitation.cc index fe7ec199bd..bf156135e7 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4SingleDiffractiveExcitation.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4SingleDiffractiveExcitation.cc @@ -14,14 +14,14 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4SingleDiffractiveExcitation.cc,v 1.5.2.2 2001/06/28 20:19:59 gunter Exp $ +// $Id: G4SingleDiffractiveExcitation.cc,v 1.8 2001/10/05 16:17:15 hpw Exp $ // ------------------------------------------------------------ // GEANT 4 class implemetation file // @@ -160,7 +160,7 @@ G4bool G4SingleDiffractiveExcitation:: || (Pprojectile+Qmomentum).e() < 0. ); - G4double Ecms=Pprojectile.e() + Ptarget.e(); +// G4double Ecms=Pprojectile.e() + Ptarget.e(); Pprojectile += Qmomentum; diff --git a/source/processes/hadronic/models/generator/string_common/src/G4StringModel.cc b/source/processes/hadronic/models/generator/string_common/src/G4StringModel.cc index 64f472c49c..daf2c2e960 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4StringModel.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4StringModel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StringModel.cc,v 1.2.8.1 2001/06/28 19:13:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StringModel.cc,v 1.4 2001/08/01 17:09:04 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4StringModel #include "G4StringModel.hh" diff --git a/source/processes/hadronic/models/generator/string_common/src/G4VParticipants.cc b/source/processes/hadronic/models/generator/string_common/src/G4VParticipants.cc index dba74a6f0d..36c5a1c36e 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4VParticipants.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4VParticipants.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VParticipants.cc,v 1.2.8.2 2001/06/28 20:19:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VParticipants.cc,v 1.4 2001/08/01 17:09:04 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/generator/string_common/src/G4VPartonStringModel.cc b/source/processes/hadronic/models/generator/string_common/src/G4VPartonStringModel.cc index e0369330b9..34019e3fb6 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4VPartonStringModel.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4VPartonStringModel.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VPartonStringModel.cc,v 1.7.8.2 2001/06/28 20:19:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPartonStringModel.cc,v 1.10 2001/10/04 20:00:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //// ------------------------------------------------------------ // GEANT 4 class implementation file @@ -99,14 +99,14 @@ G4KineticTrackVector * G4VPartonStringModel::Scatter(const G4Nucleus &theNucleus } G4KineticTrackVector * theResult = 0; - for ( G4int astring=0; astring < strings->entries(); astring++) + for ( unsigned int astring=0; astring < strings->size(); astring++) { // rotate string to lab frame, models have it aligned to z - strings->at(astring)->LorentzRotate(toLab); + (*strings)[astring]->LorentzRotate(toLab); } theResult = stringFragmentationModel->FragmentStrings(strings); - strings->clearAndDestroy(); + G4std::for_each(strings->begin(), strings->end(), DeleteString() ); delete strings; return theResult; diff --git a/source/processes/hadronic/models/generator/string_common/src/G4VSplitableHadron.cc b/source/processes/hadronic/models/generator/string_common/src/G4VSplitableHadron.cc index d5cf27dfa0..b5e3b18716 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4VSplitableHadron.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4VSplitableHadron.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VSplitableHadron.cc,v 1.2.8.2 2001/06/28 20:20:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSplitableHadron.cc,v 1.6 2001/10/05 16:17:16 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ @@ -38,12 +38,12 @@ #include "G4VKineticNucleon.hh" G4VSplitableHadron::G4VSplitableHadron() - : theCollisionCount(0), theDefinition(NULL) + : theDefinition(NULL), theCollisionCount(0), isSplit(false) { } G4VSplitableHadron::G4VSplitableHadron(const G4ReactionProduct & aPrimary) - : theCollisionCount(0) + : theCollisionCount(0), isSplit(false) { theDefinition=aPrimary.GetDefinition(); the4Momentum.setVect(aPrimary.GetMomentum()); @@ -53,6 +53,7 @@ G4VSplitableHadron::G4VSplitableHadron(const G4ReactionProduct & aPrimary) G4VSplitableHadron::G4VSplitableHadron(const G4Nucleon & aNucleon) { theCollisionCount=0; + isSplit = false; theDefinition=aNucleon.GetParticleType(); the4Momentum=aNucleon.GetMomentum(); thePosition=aNucleon.GetPosition(); @@ -61,6 +62,7 @@ G4VSplitableHadron::G4VSplitableHadron(const G4Nucleon & aNucleon) G4VSplitableHadron::G4VSplitableHadron(const G4VKineticNucleon * aNucleon) { theCollisionCount=0; + isSplit = false; theDefinition=aNucleon->GetDefinition(); the4Momentum=aNucleon->Get4Momentum(); thePosition=aNucleon->GetPosition(); @@ -69,6 +71,7 @@ G4VSplitableHadron::G4VSplitableHadron(const G4VKineticNucleon * aNucleon) G4VSplitableHadron::G4VSplitableHadron(const G4VSplitableHadron &right) { theCollisionCount=0; + isSplit = false; theDefinition= right.GetDefinition(); the4Momentum= right.Get4Momentum(); thePosition= right.GetPosition(); diff --git a/source/processes/hadronic/models/generator/string_common/src/G4VStringFragmentation.cc b/source/processes/hadronic/models/generator/string_common/src/G4VStringFragmentation.cc index f597093c17..381c5220e0 100644 --- a/source/processes/hadronic/models/generator/string_common/src/G4VStringFragmentation.cc +++ b/source/processes/hadronic/models/generator/string_common/src/G4VStringFragmentation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VStringFragmentation.cc,v 1.2.8.1 2001/06/28 19:13:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VStringFragmentation.cc,v 1.4 2001/08/01 17:09:05 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VStringFragmentation #include "G4VStringFragmentation.hh" diff --git a/source/processes/hadronic/models/generator/string_fragmentation/include/G4ExcitedStringDecay.hh b/source/processes/hadronic/models/generator/string_fragmentation/include/G4ExcitedStringDecay.hh index 4be28a381f..60a319685e 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/include/G4ExcitedStringDecay.hh +++ b/source/processes/hadronic/models/generator/string_fragmentation/include/G4ExcitedStringDecay.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ExcitedStringDecay.hh,v 1.6.8.1 2001/06/28 19:13:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedStringDecay.hh,v 1.9 2001/10/04 20:00:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4ExcitedStringDecay_h #define G4ExcitedStringDecay_h 1 @@ -77,17 +77,17 @@ FragmentStrings(const G4ExcitedStringVector * theStrings) G4LorentzVector KTsum; G4bool NeedEnergyCorrector=false; - for ( G4int astring=0; astring < theStrings->entries(); astring++) + for ( unsigned int astring=0; astring < theStrings->size(); astring++) { - KTsum+= theStrings->at(astring)->Get4Momentum(); + KTsum+= theStrings->operator[](astring)->Get4Momentum(); G4KineticTrackVector * generatedKineticTracks = NULL; - if ( theStrings->at(astring)->IsExcited() ) + if ( theStrings->operator[](astring)->IsExcited() ) { - generatedKineticTracks=FragmentString(*theStrings->at(astring)); + generatedKineticTracks=FragmentString(*theStrings->operator[](astring)); } else { generatedKineticTracks = new G4KineticTrackVector; - generatedKineticTracks->insert(theStrings->at(astring)->GetKineticTrack()); + generatedKineticTracks->push_back(theStrings->operator[](astring)->GetKineticTrack()); } if (generatedKineticTracks == NULL) @@ -97,14 +97,14 @@ FragmentStrings(const G4ExcitedStringVector * theStrings) } G4LorentzVector KTsum1; - for ( G4int aTrack=0; aTrackentries();aTrack++) + for ( unsigned int aTrack=0; aTracksize();aTrack++) { - theResult->insert(generatedKineticTracks->at(aTrack)); + theResult->push_back(generatedKineticTracks->operator[](aTrack)); KTsum1+= (*generatedKineticTracks)[aTrack]->Get4Momentum(); } - if ( abs((KTsum1.e()-theStrings->at(astring)->Get4Momentum().e()) / KTsum1.e()) > perMillion ) + if ( abs((KTsum1.e()-theStrings->operator[](astring)->Get4Momentum().e()) / KTsum1.e()) > perMillion ) { NeedEnergyCorrector=true; } diff --git a/source/processes/hadronic/models/generator/string_fragmentation/include/G4FragmentingString.hh b/source/processes/hadronic/models/generator/string_fragmentation/include/G4FragmentingString.hh new file mode 100644 index 0000000000..3a4d174ecf --- /dev/null +++ b/source/processes/hadronic/models/generator/string_fragmentation/include/G4FragmentingString.hh @@ -0,0 +1,147 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4FragmentingString.hh,v 1.1 2001/10/09 10:38:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#ifndef G4FragmentingString_h +#define G4FragmentingString_h 1 + +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// ---------------- G4FragmentingString ---------------- +// by Gunter Folger, September 2001. +// class for an excited string used in Fragmention +// ------------------------------------------------------------ + +#include "G4ios.hh" +#include "globals.hh" +#include "G4ThreeVector.hh" +#include "G4LorentzVector.hh" +#include "G4ParticleDefinition.hh" + +class G4ExcitedString; + +class G4FragmentingString +{ + + public: + + G4FragmentingString(const G4FragmentingString &right); + G4FragmentingString(const G4ExcitedString &excited); + G4FragmentingString(const G4FragmentingString &old, + G4ParticleDefinition * newdecay, + const G4LorentzVector *momentum); + + ~G4FragmentingString(); + + int operator==(const G4FragmentingString &right) const; + + int operator!=(const G4FragmentingString &right) const; + + + G4LorentzVector Get4Momentum() const; + + G4ThreeVector StablePt(); + G4ThreeVector DecayPt(); + + G4double LightConePlus(); + G4double LightConeMinus(); + G4double LightConeDecay(); + + G4double Mass() const; + G4double Mass2() const; + + + G4ParticleDefinition* GetLeftParton(void) const; + G4ParticleDefinition* GetRightParton(void) const; + + G4ParticleDefinition* GetStableParton() const; // stable at the moment + G4ParticleDefinition* GetDecayParton() const; // currently involved in fragmentation + + void SetLeftPartonStable(); + void SetRightPartonStable(); + + G4int GetDecayDirection() const; + + G4bool DecayIsQuark(); + G4bool StableIsQuark(); + G4bool FourQuarkString(void) const; + + + private: + + G4ParticleDefinition *LeftParton, *RightParton; + G4ThreeVector Ptleft,Ptright; // Pt (px,py) for partons (pz ignored!) + G4double Pplus, Pminus; // p-, p+ of string, Plus ass. to Left! + + G4ParticleDefinition * theStableParton, * theDecayParton; + + enum DecaySide { None, Left, Right }; + DecaySide decaying; +}; + +inline +int G4FragmentingString::operator==(const G4FragmentingString &right) const +{ + return this == &right; +} + +inline +int G4FragmentingString::operator!=(const G4FragmentingString &right) const +{ + return this != &right; +} + + +inline +G4ParticleDefinition * G4FragmentingString::GetStableParton() const +{ + return theStableParton; +} + +inline +G4ParticleDefinition * G4FragmentingString::GetDecayParton() const +{ + return theDecayParton; +} + +inline +G4ParticleDefinition* G4FragmentingString::GetLeftParton(void) const + { + return LeftParton; + } + +inline +G4ParticleDefinition* G4FragmentingString::GetRightParton(void) const + { + return RightParton; + } + + + +#endif + + diff --git a/source/processes/hadronic/models/generator/string_fragmentation/include/G4HadronBuilder.hh b/source/processes/hadronic/models/generator/string_fragmentation/include/G4HadronBuilder.hh new file mode 100644 index 0000000000..e01fe1322e --- /dev/null +++ b/source/processes/hadronic/models/generator/string_fragmentation/include/G4HadronBuilder.hh @@ -0,0 +1,76 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4HadronBuilder.hh,v 1.2 2001/10/30 08:33:26 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ----------------------------------------------------------------------------- +// GEANT 4 class header file +// +// History: +// Gunter Folger, August/September 2001 +// Create class; +// ----------------------------------------------------------------------------- +// + +#ifndef G4HadronBuilder_h +#define G4HadronBuilder_h 1 + +#include "globals.hh" +#include +#include "G4ParticleDefinition.hh" +#include "G4ParticleDefinition.hh" + +class G4HadronBuilder +{ +public: + + + G4ParticleDefinition * Build(G4ParticleDefinition * black, G4ParticleDefinition * white); + G4ParticleDefinition * BuildLowSpin(G4ParticleDefinition * black, G4ParticleDefinition * white); + G4ParticleDefinition * BuildHighSpin(G4ParticleDefinition * black, G4ParticleDefinition * white); + +// ctor + G4HadronBuilder(G4double mesonMix, G4double barionMix, + G4std::vector scalarMesonMix, + G4std::vector vectorMesonMix); + +private: + + G4HadronBuilder(); // no default ctor + + enum Spin { SpinZero=1, SpinHalf=2, SpinOne=3, SpinThreeHalf=4 }; + + G4ParticleDefinition * Meson(G4ParticleDefinition * black, G4ParticleDefinition * white, Spin spin); + + G4ParticleDefinition * Barion(G4ParticleDefinition * black, G4ParticleDefinition * white, Spin spin); + + G4double mesonSpinMix; + G4double barionSpinMix; + G4std::vector scalarMesonMixings; + G4std::vector vectorMesonMixings; + +}; + + +#endif diff --git a/source/processes/hadronic/models/generator/string_fragmentation/include/G4LundStringFragmentation.hh b/source/processes/hadronic/models/generator/string_fragmentation/include/G4LundStringFragmentation.hh index edc707ce67..6f5e76cb4c 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/include/G4LundStringFragmentation.hh +++ b/source/processes/hadronic/models/generator/string_fragmentation/include/G4LundStringFragmentation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LundStringFragmentation.hh,v 1.2.8.2 2001/06/28 20:20:00 gunter Exp $ -// GEANT4 tag $Name: $ Maxim Komogorov +// $Id: G4LundStringFragmentation.hh,v 1.5 2001/10/04 20:00:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ Maxim Komogorov // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file @@ -43,7 +43,7 @@ public: G4LundStringFragmentation(); // G4LundStringFragmentation(G4double sigmaPt); G4LundStringFragmentation(const G4LundStringFragmentation &right); - ~G4LundStringFragmentation(); + virtual ~G4LundStringFragmentation(); public: const G4LundStringFragmentation & operator=(const G4LundStringFragmentation &right); diff --git a/source/processes/hadronic/models/generator/string_fragmentation/include/G4QGSMFragmentation.hh b/source/processes/hadronic/models/generator/string_fragmentation/include/G4QGSMFragmentation.hh index 288b4d243c..37d93e9015 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/include/G4QGSMFragmentation.hh +++ b/source/processes/hadronic/models/generator/string_fragmentation/include/G4QGSMFragmentation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4QGSMFragmentation.hh,v 1.3.8.2 2001/06/28 20:20:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4QGSMFragmentation.hh,v 1.5 2001/08/01 17:09:07 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/generator/string_fragmentation/include/G4VKinkyStringDecay.hh b/source/processes/hadronic/models/generator/string_fragmentation/include/G4VKinkyStringDecay.hh new file mode 100644 index 0000000000..32057117d8 --- /dev/null +++ b/source/processes/hadronic/models/generator/string_fragmentation/include/G4VKinkyStringDecay.hh @@ -0,0 +1,69 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VKinkyStringDecay.hh,v 1.5 2001/10/05 16:17:36 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// Maxim Komogorov +// +// ----------------------------------------------------------------------------- +// GEANT 4 class implementation file +// +// History: first implementation, Maxim Komogorov, 10-Oct-1998 +// ----------------------------------------------------------------------------- + +#ifndef G4VKinkyStringDecay_h +#define G4VKinkyStringDecay_h 1 + +#include "G4VLongitudinalStringDecay.hh" + +//*********************************************************************************************** + +class G4VKinkyStringDecay + { + +// Constructors +public: + G4VKinkyStringDecay(G4VLongitudinalStringDecay* theModal); + virtual ~G4VKinkyStringDecay() {}; + +// +public: + G4KineticTrackVector* FragmentString(const G4ExcitedString& String); + virtual G4double GetLightConeGluonZ(G4double zmin, G4double zmax); + void SetLongitudinalStringDecay(G4VLongitudinalStringDecay*); + +private: + G4VLongitudinalStringDecay* theLongitudinalStringDecay; + + }; + +//***************************************************************************************** + +inline void G4VKinkyStringDecay::SetLongitudinalStringDecay(G4VLongitudinalStringDecay* theModal) + { + theLongitudinalStringDecay = theModal; + } + +//***************************************************************************************************** + +#endif diff --git a/source/processes/hadronic/models/generator/string_fragmentation/include/G4VLongitudinalStringDecay.hh b/source/processes/hadronic/models/generator/string_fragmentation/include/G4VLongitudinalStringDecay.hh index 337aafc61a..3c08669c7b 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/include/G4VLongitudinalStringDecay.hh +++ b/source/processes/hadronic/models/generator/string_fragmentation/include/G4VLongitudinalStringDecay.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VLongitudinalStringDecay.hh,v 1.7.8.2 2001/06/28 20:20:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VLongitudinalStringDecay.hh,v 1.12 2001/10/10 08:23:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // Maxim Komogorov // // ----------------------------------------------------------------------------- @@ -36,14 +36,16 @@ #include "G4DynamicParticle.hh" #include "G4KineticTrack.hh" #include "G4KineticTrackVector.hh" +#include "G4HadronBuilder.hh" +class G4FragmentingString; //********************************************************************************************** class G4VLongitudinalStringDecay { public: G4VLongitudinalStringDecay(); - ~G4VLongitudinalStringDecay(); + virtual ~G4VLongitudinalStringDecay(); private: // G4VLongitudinalStringDecay(const G4VLongitudinalStringDecay &right); @@ -53,20 +55,7 @@ private: public: G4KineticTrackVector* FragmentString(const G4ExcitedString& theString); - G4bool FragmentString(G4KineticTrackVector* aHadrons, const G4ExcitedString* theString); G4KineticTrackVector* DecayResonans (G4KineticTrackVector* aHadrons); - - G4int SampleQuarkFlavor(void); - void SampleQuarkPt(G4double* thePx, G4double* thePy); - G4double GetDiquarkSuppress() {return DiquarkSuppress;}; - G4double GetDiquarkBreakProb() {return DiquarkBreakProb;}; - G4double GetStrangeSuppress() {return StrangeSuppress;}; - G4double GetClusterMass() {return ClusterMass;}; - G4int GetClusterLoopInterrupt() {return ClusterLoopInterrupt;}; - - G4ParticleDefinition* CreateHadron(G4int id1, G4int id2, G4bool theGivenSpin, G4int theSpin); - void Sample4Momentum(G4LorentzVector* Mom, G4double Mass, G4LorentzVector* AntiMom, G4double AntiMass, G4double InitialMass); - void SetSigmaTransverseMomentum(G4double aQT); void SetStrangenessSuppression(G4double aValue); void SetDiquarkSuppression(G4double aValue); @@ -77,14 +66,24 @@ public: void SetScalarMesonMixings( G4std::vector aVector); void SetVectorMesonMixings( G4std::vector aVector); + +// used by G4VKinkyStringDecy.. + G4int SampleQuarkFlavor(void); + G4ThreeVector SampleQuarkPt(); +private: + G4double GetDiquarkSuppress() {return DiquarkSuppress;}; + G4double GetDiquarkBreakProb() {return DiquarkBreakProb;}; + G4double GetStrangeSuppress() {return StrangeSuppress;}; + G4double GetClusterMass() {return ClusterMass;}; + G4int GetClusterLoopInterrupt() {return ClusterLoopInterrupt;}; + + G4ParticleDefinition* CreateHadron(G4int id1, G4int id2, G4bool theGivenSpin, G4int theSpin); + void Sample4Momentum(G4LorentzVector* Mom, G4double Mass, G4LorentzVector* AntiMom, G4double AntiMass, G4double InitialMass); + protected: // Additional protected declarations virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition* pHadron, G4double Px, G4double Py) = 0; - void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *); - G4ParticleDefinition* FindParticle(G4int Encoding); - - // Additional Implementation Declarations private: G4double MassCut; @@ -96,92 +95,49 @@ private: G4double StrangeSuppress ; G4int StringLoopInterrupt; G4int ClusterLoopInterrupt; + G4int SideOfDecay; + G4HadronBuilder *hadronizer; void ConstructParticle(); G4double pspin_meson; G4double pspin_barion; - G4double pmix_meson1[6]; - G4double pmix_meson0[6]; + G4std::vector vectorMesonMix; + G4std::vector scalarMesonMix; G4bool PastInitPhase; -class SimpleString -{ -private: - class SideOfString; -public: - SimpleString(const G4ExcitedString& excitedString, G4VLongitudinalStringDecay * stringdecay) - : left(new SideOfString(excitedString.GetLeftParton()->GetPDGcode(),excitedString.Get4Momentum().mag())), - right(new SideOfString(excitedString.GetRightParton()->GetPDGcode(),excitedString.Get4Momentum().mag())), - MassSquare(excitedString.Get4Momentum().mag2()), - theStringDecay(stringdecay), - decay(0), stable(0), Side(0) - {}; - ~SimpleString() - { - delete right; - delete left; - }; - SideOfString * Left(){return left;}; - SideOfString * Right(){return right;}; - SideOfString * Stable(){return stable;}; - SideOfString * Decay(){return decay;}; - const G4double MassSquared(){return MassSquare;}; - G4ParticleDefinition * Splitup(G4int & NewDecayEncoding); - G4bool SplitLast(G4KineticTrackVector * LeftVector,G4KineticTrackVector * RightVector); - G4int GetDecayDirection() { return Side;}; - void update(); + G4KineticTrackVector * LightFragmentationTest(const G4ExcitedString * const theString); + G4bool StopFragmenting(const G4FragmentingString * const string); + G4bool IsFragmentable(const G4FragmentingString * const string); +// G4double MinFragmentationMass(G4ExcitedString * theString, +// G4ParticleDefinition*& Hadron1, +// G4ParticleDefinition*& Hadron2); + typedef G4std::pair pDefPair; + typedef G4ParticleDefinition * (G4HadronBuilder::*Pcreate) + (G4ParticleDefinition*, G4ParticleDefinition*); + G4double FragmentationMass( + const G4FragmentingString * const string, + Pcreate build=0, + pDefPair * pdefs=0); + G4KineticTrack * Splitup(G4FragmentingString *string, G4FragmentingString *&newString); + G4LorentzVector * SplitEandP(G4ParticleDefinition * pHadron, G4FragmentingString * string); + G4bool SplitLast(G4FragmentingString * string, + G4KineticTrackVector * LeftVector, + G4KineticTrackVector * RightVector); + void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *); + G4ExcitedString *CPExcited(const G4ExcitedString& string); + G4ParticleDefinition* FindParticle(G4int Encoding); -private: - SimpleString(){G4cout << " error calling bad ctor for class SimpleString"<< G4endl;}; - - SideOfString * left, * right; - SideOfString * decay, * stable; - G4double MassSquare; - G4VLongitudinalStringDecay *theStringDecay; - G4int Side; - class SideOfString - { - public: - G4int Encoding(){return theEncoding;}; - G4double w(){return thew;}; - G4double Px(){return thepx;}; - G4double Py(){return thepy;}; - void decreasew(G4double deltaw){thew -= deltaw;}; - void setEncoding(G4int aEncoding){theEncoding=aEncoding;}; - void setpxpy(G4double px,G4double py){thepx=px; thepy=py;}; + // Additional Implementation Declarations + G4ParticleDefinition * QuarkSplitup(G4ParticleDefinition* decay, + G4ParticleDefinition *&created); + G4ParticleDefinition * DiQuarkSplitup(G4ParticleDefinition* decay, + G4ParticleDefinition *&created); + + pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true); - SideOfString(G4int aEncoding, G4double aw) - { - theEncoding = aEncoding; - thew = aw; - thepx = thepy = 0; - } - ; - SideOfString(void) {}; - // void Init(G4int aEncoding, G4double aw) { - // theEncoding = aEncoding; - // thew = aw; - // thepx = thepy = 0; - // }; - - private: - G4int theEncoding; - G4double thew, thepx, thepy; - - }; -}; - - G4KineticTrackVector * LightFragmentationTest(const G4ExcitedString& theString); - G4bool StopFragmenting(SimpleString& string); - G4double IsFragmentable(SimpleString & theString); - G4double MinFragmentationMass(SimpleString & theString, - G4ParticleDefinition*& Hadron1, - G4ParticleDefinition*& Hadron2); - G4KineticTrack * SplitEandP(G4ParticleDefinition * pHadron, - SimpleString * string, G4int newDecayEncoding); }; diff --git a/source/processes/hadronic/models/generator/string_fragmentation/src/G4ExcitedStringDecay.cc b/source/processes/hadronic/models/generator/string_fragmentation/src/G4ExcitedStringDecay.cc index 67262a67b3..e751b439eb 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4ExcitedStringDecay.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4ExcitedStringDecay.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -61,17 +61,17 @@ EnergyAndMomentumCorrector(G4KineticTrackVector* Output, G4LorentzVector& TotalC { const int nAttemptScale = 500; const double ErrLimit = 1.E-5; - if (Output->isEmpty()) + if (Output->empty()) return TRUE; G4LorentzVector SumMom; G4double SumMass = 0; G4double TotalCollisionMass = TotalCollisionMom.m(); // Calculate sum hadron 4-momenta and summing hadron mass - G4int cHadron; - for(cHadron = 0; cHadron < Output->length(); cHadron++) + unsigned int cHadron; + for(cHadron = 0; cHadron < Output->size(); cHadron++) { - SumMom += Output->at(cHadron)->Get4Momentum(); - SumMass += Output->at(cHadron)->GetDefinition()->GetPDGMass(); + SumMom += Output->operator[](cHadron)->Get4Momentum(); + SumMass += Output->operator[](cHadron)->GetDefinition()->GetPDGMass(); } if (SumMass > TotalCollisionMass) return FALSE; SumMass = SumMom.m2(); @@ -88,13 +88,13 @@ EnergyAndMomentumCorrector(G4KineticTrackVector* Output, G4LorentzVector& TotalC for(G4int cAttempt = 0; cAttempt < nAttemptScale; cAttempt++) { G4double Sum = 0; - for(cHadron = 0; cHadron < Output->length(); cHadron++) + for(cHadron = 0; cHadron < Output->size(); cHadron++) { - G4LorentzVector HadronMom = Output->at(cHadron)->Get4Momentum(); + G4LorentzVector HadronMom = Output->operator[](cHadron)->Get4Momentum(); HadronMom.setVect(Scale*HadronMom.vect()); - G4double E = sqrt(HadronMom.vect().mag2() + sqr(Output->at(cHadron)->GetDefinition()->GetPDGMass())); + G4double E = sqrt(HadronMom.vect().mag2() + sqr(Output->operator[](cHadron)->GetDefinition()->GetPDGMass())); HadronMom.setE(E); - Output->at(cHadron)->Set4Momentum(HadronMom); + Output->operator[](cHadron)->Set4Momentum(HadronMom); Sum += E; } Scale = TotalCollisionMass/Sum; diff --git a/source/processes/hadronic/models/generator/string_fragmentation/src/G4FragmentingString.cc b/source/processes/hadronic/models/generator/string_fragmentation/src/G4FragmentingString.cc new file mode 100644 index 0000000000..48ca1c0b56 --- /dev/null +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4FragmentingString.cc @@ -0,0 +1,216 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4FragmentingString.cc,v 1.3 2001/10/29 14:27:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + + +// ------------------------------------------------------------ +// GEANT 4 class implementation file +// +// ---------------- G4FragmentingString ---------------- +// by Gunter Folger, September 2001. +// class for an excited string used in Fragmention +// ------------------------------------------------------------ + + +// G4FragmentingString +#include "G4FragmentingString.hh" +#include "G4ExcitedString.hh" + +//--------------------------------------------------------------------------------- + +//--------------------------------------------------------------------------------- + +G4FragmentingString::G4FragmentingString(const G4FragmentingString &old) +{ + LeftParton=old.LeftParton; + RightParton=old.RightParton; + Ptleft=old.Ptleft; + Ptright=old.Ptright; + Pplus=old.Pplus; + Pminus=old.Pminus; + decaying=old.decaying; +} + +//--------------------------------------------------------------------------------- + +G4FragmentingString::G4FragmentingString(const G4ExcitedString &excited) +{ + LeftParton=excited.GetLeftParton()->GetDefinition(); + RightParton=excited.GetRightParton()->GetDefinition(); + Ptleft=excited.GetLeftParton()->Get4Momentum().vect(); + Ptleft.setZ(0.); + Ptright=excited.GetRightParton()->Get4Momentum().vect(); + Ptright.setZ(0.); + G4LorentzVector P=excited.Get4Momentum(); + Pplus =P.e() + P.pz(); + Pminus=P.e() - P.pz(); + decaying=None; +} + +//--------------------------------------------------------------------------------- + +G4FragmentingString::G4FragmentingString(const G4FragmentingString &old, + G4ParticleDefinition * newdecay, + const G4LorentzVector *momentum) +{ + decaying=None; + if ( old.decaying == Left ) + { + RightParton= old.RightParton; + Ptright = old.Ptright; + LeftParton = newdecay; + Ptleft = old.Ptleft - momentum->vect(); + Ptleft.setZ(0.); + } else if ( old.decaying == Right ) + { + RightParton = newdecay; + Ptright = old.Ptright - momentum->vect(); + Ptright.setZ(0.); + LeftParton = old.LeftParton; + Ptleft = old.Ptleft; + } else + { + G4Exception("G4FragmentingString::G4FragmentingString: no decay Direction defined"); + } + Pplus = old.Pplus - (momentum->e() + momentum->pz()); + Pminus = old.Pminus - (momentum->e() - momentum->pz()); + + G4double Eold=0.5 * (old.Pplus + old.Pminus); + G4double Enew=0.5 * (Pplus + Pminus); +} + + +//--------------------------------------------------------------------------------- + +G4FragmentingString::~G4FragmentingString() +{} + + +//--------------------------------------------------------------------------------- + +void G4FragmentingString::SetLeftPartonStable() +{ + theStableParton=GetLeftParton(); + theDecayParton=GetRightParton(); + decaying=Right; +} + +//--------------------------------------------------------------------------------- + +void G4FragmentingString::SetRightPartonStable() +{ + theStableParton=GetRightParton(); + theDecayParton=GetLeftParton(); + decaying=Left; +} + +//--------------------------------------------------------------------------------- + +G4int G4FragmentingString::GetDecayDirection() const +{ + if (decaying == Left ) return +1; + else if (decaying == Right) return -1; + else G4Exception("G4FragmentingString::GetDecayDirection: decay side UNdefined!"); + return 0; +} + +//--------------------------------------------------------------------------------- + +G4bool G4FragmentingString::FourQuarkString() const +{ + return LeftParton->GetParticleSubType()== "di_quark" + && RightParton->GetParticleSubType()== "di_quark"; +} + +//--------------------------------------------------------------------------------- + +G4bool G4FragmentingString::DecayIsQuark() +{ + return theDecayParton->GetParticleSubType()== "quark"; +} + +G4bool G4FragmentingString::StableIsQuark() +{ + return theStableParton->GetParticleSubType()== "quark"; +} + +//--------------------------------------------------------------------------------- + +G4ThreeVector G4FragmentingString::StablePt() +{ + if (decaying == Left ) return Ptright; + else if (decaying == Right ) return Ptleft; + else G4Exception("G4FragmentingString::DecayPt: decay side UNdefined!"); + return G4ThreeVector(); +} + +G4ThreeVector G4FragmentingString::DecayPt() +{ + if (decaying == Left ) return Ptleft; + else if (decaying == Right ) return Ptright; + else G4Exception("G4FragmentingString::DecayPt: decay side UNdefined!"); + return G4ThreeVector(); +} + +//--------------------------------------------------------------------------------- + +G4double G4FragmentingString::LightConePlus() +{ + return Pplus; +} + +G4double G4FragmentingString::LightConeMinus() +{ + return Pminus; +} + +G4double G4FragmentingString::LightConeDecay() +{ + if (decaying == Left ) return Pplus; + else if (decaying == Right ) return Pminus; + else G4Exception("G4FragmentingString::DecayPt: decay side UNdefined!"); + return 0; +} + +//--------------------------------------------------------------------------------- + +G4LorentzVector G4FragmentingString::Get4Momentum() const +{ + G4LorentzVector momentum(Ptleft+Ptright,0); + momentum.setPz(0.5*(Pplus-Pminus)); + momentum.setE(0.5*(Pplus+Pminus)); + return momentum; +} + +G4double G4FragmentingString::Mass2() const +{ + return Pplus*Pminus - (Ptleft+Ptright).mag2(); +} + +G4double G4FragmentingString::Mass() const +{ + return sqrt(this->Mass2()); +} diff --git a/source/processes/hadronic/models/generator/string_fragmentation/src/G4HadronBuilder.cc b/source/processes/hadronic/models/generator/string_fragmentation/src/G4HadronBuilder.cc new file mode 100644 index 0000000000..0d21769388 --- /dev/null +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4HadronBuilder.cc @@ -0,0 +1,273 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4HadronBuilder.cc,v 1.3 2001/10/30 08:33:27 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// ----------------------------------------------------------------------------- +// GEANT 4 class implementation file +// +// History: +// Gunter Folger, August/September 2001 +// Create class; algorithm previously in G4VLongitudinalStringDecay. +// ----------------------------------------------------------------------------- + +#include "G4HadronBuilder.hh" +#include "Randomize.hh" +#include "G4ParticleTable.hh" + +G4HadronBuilder::G4HadronBuilder(G4double mesonMix, G4double barionMix, + G4std::vector scalarMesonMix, + G4std::vector vectorMesonMix) +{ + mesonSpinMix=mesonMix; + barionSpinMix=barionMix; + scalarMesonMixings=scalarMesonMix; + vectorMesonMixings=vectorMesonMix; +} + +G4ParticleDefinition * G4HadronBuilder::Build(G4ParticleDefinition * black, G4ParticleDefinition * white) +{ + + if (black->GetParticleSubType()== "di_quark" || white->GetParticleSubType()== "di_quark" ) { + +// Barion + Spin spin = (G4UniformRand() < barionSpinMix) ? SpinHalf : SpinThreeHalf; + return Barion(black,white,spin); + + } else { + +// Meson + Spin spin = (G4UniformRand() < mesonSpinMix) ? SpinZero : SpinOne; + return Meson(black,white,spin); + + } +} + +//------------------------------------------------------------------------- + +G4ParticleDefinition * G4HadronBuilder::BuildLowSpin(G4ParticleDefinition * black, G4ParticleDefinition * white) +{ + if ( black->GetParticleSubType()== "quark" && white->GetParticleSubType()== "quark" ) { + return Meson(black,white, SpinZero); + } else { +// will return a SpinThreeHalf Barion if all quarks the same + return Barion(black,white, SpinHalf); + } +} + +//------------------------------------------------------------------------- + +G4ParticleDefinition * G4HadronBuilder::BuildHighSpin(G4ParticleDefinition * black, G4ParticleDefinition * white) +{ + if ( black->GetParticleSubType()== "quark" && white->GetParticleSubType()== "quark" ) { + return Meson(black,white, SpinOne); + } else { + return Barion(black,white,SpinThreeHalf); + } +} + +//------------------------------------------------------------------------- + +G4ParticleDefinition * G4HadronBuilder::Meson(G4ParticleDefinition * black, + G4ParticleDefinition * white, Spin theSpin) +{ +#ifdef G4VERBOSE +// Verify Input Charge + + G4double charge = black->GetPDGCharge() + + white->GetPDGCharge(); + if (abs(charge) > 2 || abs(3.*charge - 3*G4int(charge)) > perCent ) + { + G4cerr << " G4HadronBuilder::Build()" << G4endl; + G4cerr << " Invalid total charge found for on input: " + << charge<< G4endl; + G4cerr << " PGDcode input quark1/quark2 : " << + black->GetPDGEncoding() << " / "<< + white->GetPDGEncoding() << G4endl; + G4cerr << G4endl; + } +#endif + + G4int id1= black->GetPDGEncoding(); + G4int id2= white->GetPDGEncoding(); +// G4int ifl1= G4std::max(abs(id1), abs(id2)); + if ( abs(id1) < abs(id2) ) + { + G4int xchg = id1; + id1 = id2; + id2 = xchg; + } + + if (abs(id1) > 3 ) + G4Exception("G4HadronBuilder::Meson : Illegal Quark content as input"); + + G4int PDGEncoding=0; + + if (id1 + id2 == 0) { + G4double rmix = G4UniformRand(); + G4int imix = 2*abs(id1) - 1; + if(theSpin == SpinZero) { + PDGEncoding = 110*(1 + (G4int)(rmix + scalarMesonMixings[imix - 1]) + + (G4int)(rmix + scalarMesonMixings[imix]) + ) + theSpin; + } else { + PDGEncoding = 110*(1 + (G4int)(rmix + vectorMesonMixings[imix - 1]) + + (G4int)(rmix + vectorMesonMixings[imix]) + ) + theSpin; + } + } else { + PDGEncoding = 100 * abs(id1) + 10 * abs(id2) + theSpin; + G4bool IsUp = (abs(id1)&1) == 0; // quark 1 up type quark (u or c) + G4bool IsAnti = id1 < 0; // quark 1 is antiquark? + if( (IsUp && IsAnti ) || (!IsUp && !IsAnti ) ) + PDGEncoding = - PDGEncoding; + } + + + G4ParticleDefinition * MesonDef= + G4ParticleTable::GetParticleTable()->FindParticle(PDGEncoding); +#ifdef G4VERBOSE + if (MesonDef == 0 ) { + G4cerr << " G4HadronBuilder - Warning: No particle for PDGcode= " + << PDGEncoding << G4endl; + } + if ( ( black->GetPDGCharge() + + white->GetPDGCharge() + - MesonDef->GetPDGCharge() ) > perCent ) { + G4cerr << " G4HadronBuilder - Warning: Incorrect Charge : " + << " Quark1/2 = " + << black->GetParticleName() << " / " + << white->GetParticleName() + << " resulting Hadron " << MesonDef->GetParticleName() + << G4endl; + } +#endif + + return MesonDef; +} + + +G4ParticleDefinition * G4HadronBuilder::Barion(G4ParticleDefinition * black, + G4ParticleDefinition * white,Spin theSpin) +{ + +#ifdef G4VERBOSE +// Verify Input Charge + G4double charge = black->GetPDGCharge() + + white->GetPDGCharge(); + if (abs(charge) > 2 || abs(3.*charge - 3*G4int(charge)) > perCent ) + { + G4cerr << " G4HadronBuilder::Build()" << G4endl; + G4cerr << " Invalid total charge found for on input: " + << charge<< G4endl; + G4cerr << " PGDcode input quark1/quark2 : " << + black->GetPDGEncoding() << " / "<< + white->GetPDGEncoding() << G4endl; + G4cerr << G4endl; + } +#endif + G4int id1= black->GetPDGEncoding(); + G4int id2= white->GetPDGEncoding(); + if ( abs(id1) < abs(id2) ) + { + G4int xchg = id1; + id1 = id2; + id2 = xchg; + } + + if (abs(id1) < 1000 || abs(id2) > 3 ) + G4Exception("G4HadronBuilder::Barion: Illegal quark content as input"); + + G4int ifl1= abs(id1)/1000; + G4int ifl2 = (abs(id1) - ifl1 * 1000)/100; + G4int diquarkSpin = abs(id1)%10; + G4int ifl3 = id2; + if (id1 < 0) + { + ifl1 = - ifl1; + ifl2 = - ifl2; + } + //... Construct barion, distinguish Lambda and Sigma barions. + G4int kfla = abs(ifl1); + G4int kflb = abs(ifl2); + G4int kflc = abs(ifl3); + + G4int kfld = G4std::max(kfla,kflb); + kfld = G4std::max(kfld,kflc); + G4int kflf = G4std::min(kfla,kflb); + kflf = G4std::min(kflf,kflc); + + G4int kfle = kfla + kflb + kflc - kfld - kflf; + + //... barion with content uuu or ddd or sss has always spin = 3/2 + theSpin = (kfla == kflb && kflb == kflc)? SpinThreeHalf : theSpin; + + G4int kfll = 0; + if(theSpin == SpinHalf && kfld > kfle && kfle > kflf) { +// Spin J=1/2 and all three quarks different +// Two states exist: (uds -> lambda or sigma0) +// - lambda: s(ud)0 s : 3122; ie. reverse the two lighter quarks +// - sigma0: s(ud)1 s : 3212 + if(diquarkSpin == 1 ) { + if ( kfla == kfld) { // heaviest quark in diquark + kfll = 1; + } else { + kfll = (G4int)(0.25 + G4UniformRand()); + } + } + if(diquarkSpin == 3 && kfla != kfld) + kfll = (G4int)(0.75 + G4UniformRand()); + } + + G4int PDGEncoding; + if (kfll == 1) + PDGEncoding = 1000 * kfld + 100 * kflf + 10 * kfle + theSpin; + else + PDGEncoding = 1000 * kfld + 100 * kfle + 10 * kflf + theSpin; + + if (id1 < 0) + PDGEncoding = -PDGEncoding; + + + G4ParticleDefinition * BarionDef= + G4ParticleTable::GetParticleTable()->FindParticle(PDGEncoding); +#ifdef G4VERBOSE + if (BarionDef == 0 ) { + G4cerr << " G4HadronBuilder - Warning: No particle for PDGcode= " + << PDGEncoding << G4endl; + } + if ( ( black->GetPDGCharge() + + white->GetPDGCharge() + - BarionDef->GetPDGCharge() ) > perCent ) { + G4cerr << " G4HadronBuilder - Warning: Incorrect Charge : " + << " DiQuark/Quark = " + << black->GetParticleName() << " / " + << white->GetParticleName() + << " resulting Hadron " << BarionDef->GetParticleName() + << G4endl; + } +#endif + + return BarionDef; +} diff --git a/source/processes/hadronic/models/generator/string_fragmentation/src/G4LundStringFragmentation.cc b/source/processes/hadronic/models/generator/string_fragmentation/src/G4LundStringFragmentation.cc index 91f44111cf..8a3fade97d 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4LundStringFragmentation.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4LundStringFragmentation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LundStringFragmentation.cc,v 1.2.8.2 2001/06/28 20:20:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LundStringFragmentation.cc,v 1.4 2001/08/01 17:09:08 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/generator/string_fragmentation/src/G4QGSMFragmentation.cc b/source/processes/hadronic/models/generator/string_fragmentation/src/G4QGSMFragmentation.cc index ec815281fb..9ed26c3e33 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4QGSMFragmentation.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4QGSMFragmentation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4QGSMFragmentation.cc,v 1.4.8.2 2001/06/28 20:20:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4QGSMFragmentation.cc,v 1.6 2001/08/01 17:09:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/generator/string_fragmentation/src/G4VKinkyStringDecay.cc b/source/processes/hadronic/models/generator/string_fragmentation/src/G4VKinkyStringDecay.cc new file mode 100644 index 0000000000..8a0b7b924e --- /dev/null +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4VKinkyStringDecay.cc @@ -0,0 +1,114 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4VKinkyStringDecay.cc,v 1.7 2001/10/09 10:50:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// Maxim Komogorov +// +// ----------------------------------------------------------------------------- +// GEANT 4 class implementation file +// +// History: first implementation, Maxim Komogorov, 10-Oct-1998 +// ----------------------------------------------------------------------------- + +#include "G4VKinkyStringDecay.hh" +#include "G4KineticTrackVector.hh" +#include "G4KineticTrack.hh" +#include "Randomize.hh" + +//***************************************************************************************************** + +G4VKinkyStringDecay::G4VKinkyStringDecay(G4VLongitudinalStringDecay* theModal) + { + this->SetLongitudinalStringDecay(theModal); + } + +//***************************************************************************************************** + +G4double G4VKinkyStringDecay::GetLightConeGluonZ(G4double zmin, G4double zmax) + { + G4double z, yf; + do { + z = zmin + G4UniformRand()*(zmax-zmin); + yf = z*z +sqr(1 - z); + } + while (G4UniformRand() > yf); + return z; + } + +//***************************************************************************************************** + +G4KineticTrackVector* G4VKinkyStringDecay::FragmentString(const G4ExcitedString& String) + { + G4LorentzVector Mom = String.GetGluon()->Get4Momentum(); + G4ThreeVector Pos = String.GetGluon()->GetPosition(); + G4int QuarkEncoding = theLongitudinalStringDecay->SampleQuarkFlavor(); + G4ThreeVector Pquark=theLongitudinalStringDecay->SampleQuarkPt(); + G4double Pt2 = Pquark.mag2(); + G4double z = GetLightConeGluonZ(0, 1); + G4double w = Mom.e() + Mom.pz(); + //... now compute quark longitudinal momentum and energy + + Pquark.setZ( (z*w - Pt2/(z*w))*0.5); + G4double E = (z*w + Pt2/(z*w))*0.5; + + G4Parton* AntiColor = new G4Parton(-QuarkEncoding); + AntiColor->SetPosition(Pos); + G4LorentzVector AntiColorMom(-Pquark, E); + AntiColor->Set4Momentum(AntiColorMom); + G4Parton* Color = new G4Parton(*String.GetColorParton()); + G4ExcitedString Str1(Color, AntiColor, String.GetDirection()); + G4KineticTrackVector* KTV1 = theLongitudinalStringDecay->FragmentString(Str1); + + Color = new G4Parton(QuarkEncoding); + Color->SetPosition(Pos); + G4LorentzVector ColorMom(Pquark, E); + Color->Set4Momentum(ColorMom); + AntiColor = new G4Parton(*String.GetAntiColorParton()); + G4ExcitedString Str2(Color, AntiColor, String.GetDirection()); + G4KineticTrackVector* KTV2 = theLongitudinalStringDecay->FragmentString(Str2); + + if (KTV1 && KTV2) + while(!KTV2->empty()) + { + KTV1->push_back(KTV2->back()); + KTV1->erase(KTV1->end()-1); + } + return KTV1; + } + +//***************************************************************************************************** + + + + + + + + + + + + + + diff --git a/source/processes/hadronic/models/generator/string_fragmentation/src/G4VLongitudinalStringDecay.cc b/source/processes/hadronic/models/generator/string_fragmentation/src/G4VLongitudinalStringDecay.cc index 3c9793a068..1bae5f3afc 100644 --- a/source/processes/hadronic/models/generator/string_fragmentation/src/G4VLongitudinalStringDecay.cc +++ b/source/processes/hadronic/models/generator/string_fragmentation/src/G4VLongitudinalStringDecay.cc @@ -21,18 +21,19 @@ // ******************************************************************** // // -// $Id: G4VLongitudinalStringDecay.cc,v 1.6.8.2 2001/06/28 20:20:01 gunter Exp $ -// GEANT4 tag $Name: $ -// Maxim Komogorov +// $Id: G4VLongitudinalStringDecay.cc,v 1.22 2001/11/21 16:46:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file // // History: first implementation, Maxim Komogorov, 1-Jul-1998 +// redesign Gunter Folger, August/September 2001 // ----------------------------------------------------------------------------- #include "G4ios.hh" #include "Randomize.hh" #include "G4VLongitudinalStringDecay.hh" +#include "G4FragmentingString.hh" #include "G4ParticleDefinition.hh" #include "G4ParticleTypes.hh" @@ -49,7 +50,6 @@ #include "G4Quarks.hh" #include "G4Gluons.hh" - //******************************************************************************** // Constructors @@ -66,7 +66,7 @@ G4VLongitudinalStringDecay::G4VLongitudinalStringDecay() SigmaQT = 0.5 * GeV; - StrangeSuppress = 0.44; + StrangeSuppress = 0.44; // 27 % strange quarks produced, ie. u:d:s=1:1:0.27 DiquarkSuppress = 0.1; DiquarkBreakProb = 0.1; @@ -76,98 +76,127 @@ G4VLongitudinalStringDecay::G4VLongitudinalStringDecay() //... pspin_barion is probability to create 3/2 barion pspin_barion = 0.5; - //... pmix_meson0[] is quark mixing parameters for scalar mesons (Variable spin=1) - pmix_meson1[0] = 0.5; - pmix_meson1[1] = 0.0; - pmix_meson1[2] = 0.5; - pmix_meson1[3] = 0.0; - pmix_meson1[4] = 1.0; - pmix_meson1[5] = 1.0; + //... vectorMesonMix[] is quark mixing parameters for vector mesons (Variable spin = 3) + vectorMesonMix.resize(6); + vectorMesonMix[0] = 0.5; + vectorMesonMix[1] = 0.0; + vectorMesonMix[2] = 0.5; + vectorMesonMix[3] = 0.0; + vectorMesonMix[4] = 1.0; + vectorMesonMix[5] = 1.0; - //... pmix_meson1[] is quark mixing parameters for vector mesons (Variable spin = 3) - pmix_meson0[0] = 0.5; - pmix_meson0[1] = 0.25; - pmix_meson0[2] = 0.5; - pmix_meson0[3] = 0.25; - pmix_meson0[4] = 1.0; - pmix_meson0[5] = 0.5; + //... scalarMesonMix[] is quark mixing parameters for scalar mesons (Variable spin=1) + scalarMesonMix.resize(6); + scalarMesonMix[0] = 0.5; + scalarMesonMix[1] = 0.25; + scalarMesonMix[2] = 0.5; + scalarMesonMix[3] = 0.25; + scalarMesonMix[4] = 1.0; + scalarMesonMix[5] = 0.5; // Parameters may be changed until the first fragmentation starts PastInitPhase=false; - + hadronizer = new G4HadronBuilder(pspin_meson,pspin_barion, + scalarMesonMix,vectorMesonMix); } G4VLongitudinalStringDecay::~G4VLongitudinalStringDecay() { + delete hadronizer; } -//******************************************************************************** +//=============================================================================================------------- + // Operators //const & G4VLongitudinalStringDecay::operator=(const G4VLongitudinalStringDecay &right) // { // } +//---------------------------------------------------------------------------------------------------------- + int G4VLongitudinalStringDecay::operator==(const G4VLongitudinalStringDecay &right) const { G4Exception("G4VLongitudinalStringDecay::operator== forbidden"); return false; -// return !memcmp(this, &right, sizeof(G4VLongitudinalStringDecay)); } +//---------------------------------------------------------------------------------------------------------- + int G4VLongitudinalStringDecay::operator!=(const G4VLongitudinalStringDecay &right) const { G4Exception("G4VLongitudinalStringDecay::operator!= forbidden"); return true; -// return memcmp(this, &right, sizeof(G4VLongitudinalStringDecay)); } - -//******************************************************************************** +//========================================================================================================== G4int G4VLongitudinalStringDecay::SampleQuarkFlavor(void) { return (1 + (int)(G4UniformRand()/StrangeSuppress)); } -//******************************************************************************** +//---------------------------------------------------------------------------------------------------------- -void G4VLongitudinalStringDecay::SampleQuarkPt(G4double* thePx, G4double* thePy) +G4VLongitudinalStringDecay::pDefPair G4VLongitudinalStringDecay::CreatePartonPair(G4int NeedParticle,G4bool AllowDiquarks) +{ +// NeedParticle = +1 for Particle, -1 for Antiparticle + + if ( AllowDiquarks && G4UniformRand() < DiquarkSuppress ) + { + // Create a Diquark - AntiDiquark pair , first in pair is anti to IsParticle + G4int q1 = SampleQuarkFlavor(); + G4int q2 = SampleQuarkFlavor(); + G4int spin = (q1 != q2 && G4UniformRand() <= 0.5)? 1 : 3; + // convention: quark with higher PDG number is first + G4int PDGcode = (G4std::max(q1,q2) * 1000 + G4std::min(q1,q2) * 100 + spin) * NeedParticle; + return pDefPair (FindParticle(-PDGcode),FindParticle(PDGcode)); + + + } else { + // Create a Quark - AntiQuark pair, first in pair IsParticle + G4int PDGcode=SampleQuarkFlavor()*NeedParticle; + return pDefPair (FindParticle(PDGcode),FindParticle(-PDGcode)); + } + +} + +//---------------------------------------------------------------------------------------------------------- + +G4ThreeVector G4VLongitudinalStringDecay::SampleQuarkPt() { G4double Pt = -log(G4UniformRand()); - Pt = sqrt(Pt); - Pt *= SigmaQT; + Pt = SigmaQT * sqrt(Pt); G4double phi = 2.*pi*G4UniformRand(); - *thePx = Pt * cos(phi); - *thePy = Pt * sin(phi); + return G4ThreeVector(Pt * cos(phi),Pt * sin(phi),0); } - -//******************************************************************************** +//---------------------------------------------------------------------------------------------------------- void G4VLongitudinalStringDecay::CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector* Hadrons) { // `yo-yo` formation time const G4double kappa = 1.0 * GeV/fermi; - for(G4int c1 = 0; c1 < Hadrons->length(); c1++) + for(G4int c1 = 0; c1 < Hadrons->size(); c1++) { G4double SumPz = 0; G4double SumE = 0; for(G4int c2 = 0; c2 < c1; c2++) { - SumPz += Hadrons->at(c2)->Get4Momentum().pz(); - SumE += Hadrons->at(c2)->Get4Momentum().e(); + SumPz += Hadrons->operator[](c2)->Get4Momentum().pz(); + SumE += Hadrons->operator[](c2)->Get4Momentum().e(); } - G4double HadronE = Hadrons->at(c1)->Get4Momentum().e(); - G4double HadronPz = Hadrons->at(c1)->Get4Momentum().pz(); - Hadrons->at(c1)->SetFormationTime((theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)); + G4double HadronE = Hadrons->operator[](c1)->Get4Momentum().e(); + G4double HadronPz = Hadrons->operator[](c1)->Get4Momentum().pz(); + Hadrons->operator[](c1)->SetFormationTime((theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)); G4ThreeVector aPosition(0, 0, (theInitialStringMass - 2.*SumE - HadronE + HadronPz)/(2.*kappa)); - Hadrons->at(c1)->SetPosition(aPosition); + Hadrons->operator[](c1)->SetPosition(aPosition); } } -//******************************************************************************** +//---------------------------------------------------------------------------------------------------------- + /* void G4VLongitudinalStringDecay::CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector* Hadrons) { @@ -191,340 +220,306 @@ void G4VLongitudinalStringDecay::CalculateHadronTimePosition(G4double theInitial Hadrons->at(c1)->SetPosition(Hadrons->at(c1-1)->GetPosition()); } */ -//******************************************************************************** -G4ParticleDefinition* G4VLongitudinalStringDecay::CreateHadron(G4int id1, G4int id2, G4bool theGivenSpin, G4int theSpin) - { +//---------------------------------------------------------------------------------------------------------- - G4int PDGEncoding; - if (abs(id1) < abs(id2)) - { - int xchg = id1; - id1 = id2; - id2 = xchg; - } - G4int ifl1 = abs(id1); - //... Construct meson with account flavor mixing - if (abs(id1) < 1000 && abs(id2) < 1000) - { - G4int spin = theSpin; - if(!theGivenSpin) - spin = 2*(G4int)(pspin_meson + G4UniformRand()) + 1; - if (id1 + id2 == 0) - { - G4double rmix = G4UniformRand(); - G4int imix = 2*ifl1 - 1; - if(spin == 1) - { - PDGEncoding = 110*(1 + (G4int)(rmix + pmix_meson0[imix - 1]) - + (G4int)(rmix + pmix_meson0[imix])) + spin; - } - else - { - PDGEncoding = 110*(1 + (G4int)(rmix + pmix_meson1[imix - 1]) - + (G4int)(rmix + pmix_meson1[imix])) + spin; - } - } - else - { - G4int kfs = abs((id2 < 0)? id2 : id1); - PDGEncoding = 100 * ifl1 + 10 * abs(id2) + spin; - if((!(ifl1&1) && kfs == ifl1) || ((ifl1&1) && kfs != ifl1)) - PDGEncoding = - PDGEncoding; - } - } - else - { - ifl1 /= 1000; - G4int ifl2 = (abs(id1) - ifl1 * 1000)/100; - G4int kflds = abs(id1)%10; - G4int ifl3 = id2; - if (id1 < 0) - { - ifl1 = - ifl1; - ifl2 = - ifl2; - } - //... Construct barion, distinguish Lambda and Sigma barions. - G4int kfla = abs(ifl1); - G4int kflb = abs(ifl2); - G4int kflc = abs(ifl3); - - G4int kfld = G4std::max(kfla,kflb); - kfld = G4std::max(kfld,kflc); - G4int kflf = G4std::min(kfla,kflb); - kflf = G4std::min(kflf,kflc); - - G4int kfle = kfla + kflb + kflc - kfld - kflf; - //... barion with content uuu or ddd or sss has always spin = 4 - G4int spin = (kfla == kflb && kflb == kflc)? 4: theSpin; - if(!theGivenSpin) - spin = (pspin_barion > G4UniformRand() || (kfla == kflb && kfla == kflc))? 4 : 2; - - G4int kfll = 0; - if(spin == 2 && kfld > kfle && kfle > kflf) - { - if(kflds == 1 && kfla == kfld) - kfll = 1; - if(kflds == 1 && kfla != kfld) - kfll = (G4int)(0.25 + G4UniformRand()); - if(kflds == 3 && kfla != kfld) - kfll = (G4int)(0.75 + G4UniformRand()); - } - if (kfll == 1) - PDGEncoding = 1000 * kfld + 100 * kflf + 10 * kfle + spin; - else - PDGEncoding = 1000 * kfld + 100 * kfle + 10 * kflf + spin; - if (id1 < 0) - PDGEncoding = -PDGEncoding; - } - return FindParticle(PDGEncoding); - } +G4ParticleDefinition * + G4VLongitudinalStringDecay::QuarkSplitup(G4ParticleDefinition* + decay, G4ParticleDefinition *&created) +{ + G4int IsParticle=(decay->GetPDGEncoding()>0) ? -1 : +1; // if we have a quark, we need antiquark (or diquark) + pDefPair QuarkPair = CreatePartonPair(IsParticle); + created = QuarkPair.second; + return hadronizer->Build(QuarkPair.first, decay); -//******************************************************************************************************* -//******************************************************************************* - -void G4VLongitudinalStringDecay::SimpleString::update() -{ - MassSquare = left->w()*right->w() - sqr(left->Px() + right->Px()) - sqr(left->Py() + right->Py()); } -G4ParticleDefinition * G4VLongitudinalStringDecay::SimpleString::Splitup(G4int & NewDecayEncoding) + +//---------------------------------------------------------------------------------------------------------- + +G4ParticleDefinition *G4VLongitudinalStringDecay::DiQuarkSplitup( + G4ParticleDefinition* decay, + G4ParticleDefinition *&created) { - //...the main iteration loop for the fragmentation is started here: - //... stable and non-stable hadrons can be produced ... update theGivenSpin flag - //...theGivenSpin = false; - //...Initialize di_quark_break flag + //... can Diquark break or not? + if (G4UniformRand() < DiquarkBreakProb ){ + //... Diquark break + G4int stableQuarkEncoding = decay->GetPDGEncoding()/1000; + G4int decayQuarkEncoding = (decay->GetPDGEncoding()/100)%10; + if (G4UniformRand() < 0.5) + { + G4int Swap = stableQuarkEncoding; + stableQuarkEncoding = decayQuarkEncoding; + decayQuarkEncoding = Swap; + } + G4int IsParticle=(decayQuarkEncoding>0) ? -1 : +1; + // if we have a quark, we need antiquark) + pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted + //... Build new Diquark + G4int QuarkEncoding=QuarkPair.second->GetPDGEncoding(); + G4int i10 = G4std::max(abs(QuarkEncoding), abs(stableQuarkEncoding)); + G4int i20 = G4std::min(abs(QuarkEncoding), abs(stableQuarkEncoding)); + G4int spin = (i10 != i20 && G4UniformRand() <= 0.5)? 1 : 3; + G4int NewDecayEncoding = -1*IsParticle*(i10 * 1000 + i20 * 100 + spin); + created = FindParticle(NewDecayEncoding); + G4ParticleDefinition * decayQuark=FindParticle(decayQuarkEncoding); + + return hadronizer->Build(QuarkPair.first, decayQuark); + + } else { + //... Diquark does not break + + G4int IsParticle=(decay->GetPDGEncoding()>0) ? +1 : -1; + // if we have a diquark, we need quark) + pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted + created = QuarkPair.second; + + return hadronizer->Build(QuarkPair.first, decay); + } +} + +//----------------------------------------------------------------------------------------- + +G4KineticTrack * G4VLongitudinalStringDecay::Splitup( + G4FragmentingString *string, + G4FragmentingString *&newString) +{ //... random choice of string end to use for creating the hadron (decay) - Side = (G4UniformRand() < 0.5)? 1: -1; - if (Side < 0) + SideOfDecay = (G4UniformRand() < 0.5)? 1: -1; + if (SideOfDecay < 0) { - decay = Right(); - stable = Left(); + string->SetLeftPartonStable(); } else { - decay = Left(); - stable = Right(); + string->SetRightPartonStable(); } - - //... if string end is a quark - G4int signdecayEncoding = decay->Encoding()/abs(decay->Encoding()); - G4int QuarkEncoding; - if (abs(decay->Encoding()) < 1000) - { - //... it is quark ... Generate q,qbar or qq,qqbar pair - if (G4UniformRand() >= theStringDecay->GetDiquarkSuppress()) - { - //... q,qbar pair is choosen, sample quark flavor ifln - QuarkEncoding = -signdecayEncoding*theStringDecay->SampleQuarkFlavor(); - NewDecayEncoding = -QuarkEncoding; - } - else - { - //... sample quarks and Construct Diquark ifln - G4int i1 = theStringDecay->SampleQuarkFlavor(); - G4int i2 = theStringDecay->SampleQuarkFlavor(); - G4int i10 = G4std::max(i1,i2); - G4int i20 = G4std::min(i1,i2); - G4int spin = (i10 != i20 && G4UniformRand() <= 0.5)? 1 : 3; - QuarkEncoding = signdecayEncoding * (i10 * 1000 + i20 * 100 + spin); - NewDecayEncoding = -QuarkEncoding; - } - } - else - { - //... it is Diquark ... - //... can Diquark break or not? - if (G4UniformRand() < theStringDecay->GetDiquarkBreakProb()) - { - //... Diquark break - G4int stableQuarkEncoding = decay->Encoding()/1000; - G4int decayQuarkEncoding = (decay->Encoding()/100)%10; - if (G4UniformRand() < 0.5) - { - G4int Swap = stableQuarkEncoding; - stableQuarkEncoding = decayQuarkEncoding; - decayQuarkEncoding = Swap; - } - Decay()->setEncoding(decayQuarkEncoding); - - QuarkEncoding = -decayQuarkEncoding/abs(decayQuarkEncoding)*theStringDecay->SampleQuarkFlavor(); - //... Build new Diquark - G4int i10 = G4std::max(abs(QuarkEncoding), abs(stableQuarkEncoding)); - G4int i20 = G4std::min(abs(QuarkEncoding), abs(stableQuarkEncoding)); - G4int spin = (i10 != i20 && G4UniformRand() <= 0.5)? 1 : 3; - NewDecayEncoding = -QuarkEncoding/abs(QuarkEncoding)*(i10 * 1000 + i20 * 100 + spin); - } - else - { - //... Diquark does not break - QuarkEncoding = signdecayEncoding*theStringDecay->SampleQuarkFlavor(); - NewDecayEncoding = -QuarkEncoding; - } - } - //... Construct produced hadron: encoding, mass and transverse momentum + G4ParticleDefinition *newStringEnd; + G4ParticleDefinition * HadronDefinition; + if (string->DecayIsQuark()) + { + HadronDefinition= QuarkSplitup(string->GetDecayParton(), newStringEnd); + } else { + HadronDefinition= DiQuarkSplitup(string->GetDecayParton(), newStringEnd); + } +// create new String from old, ie. keep Left and Right order, but replace decay + G4LorentzVector* HadronMomentum=SplitEandP(HadronDefinition, string); + + G4KineticTrack * Hadron =0; + if ( HadronMomentum != 0 ) { - G4ParticleDefinition * pHadron = theStringDecay->CreateHadron(decay->Encoding(), QuarkEncoding, false, 1); - return pHadron; + G4ThreeVector Pos; + Hadron = new G4KineticTrack(HadronDefinition, 0,Pos, *HadronMomentum); + + G4double HadronPz=HadronMomentum->pz(); + G4double HadronE=HadronMomentum->e(); + + newString=new G4FragmentingString(*string,newStringEnd, + HadronMomentum); + + delete HadronMomentum; + } + return Hadron; } -G4bool G4VLongitudinalStringDecay::SimpleString::SplitLast(G4KineticTrackVector * LeftVector, - G4KineticTrackVector * RightVector) +//----------------------------------------------------------------------------------------- + +G4LorentzVector * G4VLongitudinalStringDecay::SplitEandP(G4ParticleDefinition * pHadron, + G4FragmentingString * string) +{ + G4double HadronMass = pHadron->GetPDGMass(); + + // calculate and assign hadron transverse momentum component HadronPx andHadronPy + G4ThreeVector thePt; + thePt=SampleQuarkPt(); + G4ThreeVector HadronPt = thePt +string->DecayPt(); + HadronPt.setZ(0); + //... sample z to define hadron longitudinal momentum and energy + //... but first check the available phase space + G4double DecayQuarkMass2 = sqr(string->GetDecayParton()->GetPDGMass()); + G4double HadronMass2T = sqr(HadronMass) + HadronPt.mag2(); + if (DecayQuarkMass2 + HadronMass2T >= SmoothParam*(string->Mass2()) ) + return 0; // have to start all over! + + //... then compute allowed z region z_min <= z <= z_max + + G4double zMin = HadronMass2T/(string->Mass2()); + G4double zMax = 1. - DecayQuarkMass2/(string->Mass2()); + if (zMin >= zMax) return 0; // have to start all over! + + G4double z = GetLightConeZ(zMin, zMax, + string->GetDecayParton()->GetPDGEncoding(), pHadron, + HadronPt.x(), HadronPt.y()); + + //... now compute hadron longitudinal momentum and energy + // longitudinal hadron momentum component HadronPz + + HadronPt.setZ(0.5* string->GetDecayDirection() * + (z * string->LightConeDecay() - + HadronMass2T/(z * string->LightConeDecay()))); + G4double HadronE = 0.5* (z * string->LightConeDecay() + + HadronMass2T/(z * string->LightConeDecay())); + + G4LorentzVector * a4Momentum= new G4LorentzVector(HadronPt,HadronE); + + return a4Momentum; +} + + +//----------------------------------------------------------------------------------------- + +G4bool G4VLongitudinalStringDecay::SplitLast(G4FragmentingString * string, + G4KineticTrackVector * LeftVector, + G4KineticTrackVector * RightVector) { //... perform last cluster decay - G4double ResidualStringPx = Left()->Px() + Right()->Px(); - G4double ResidualStringPy = Left()->Py() + Right()->Py(); - G4double ResidualMass = sqrt(MassSquared()); - G4double ResidualStringPz = (Left()->w() - Right()->w())/2.; - G4double ResidualStringE = (Left()->w() + Right()->w())/2.; - G4ThreeVector ClusterVel(ResidualStringPx/ResidualStringE, ResidualStringPy/ResidualStringE, ResidualStringPz/ResidualStringE); + G4ThreeVector ClusterVel =string->Get4Momentum().boostVector(); + G4double ResidualMass =string->Mass(); G4ParticleDefinition* pLastHadron; - G4double ClusterMassCut = theStringDecay->GetClusterMass(); + G4double ClusterMassCut = ClusterMass; G4int cClusterInterrupt = 0; G4ParticleDefinition * LeftHadron, * RightHadron; do { - if (cClusterInterrupt++ >= theStringDecay->GetClusterLoopInterrupt()) + if (cClusterInterrupt++ >= ClusterLoopInterrupt) { return false; } - //... if any ifl is a Diquark - G4int signLeftEncoding = Left()->Encoding()/abs(Left()->Encoding()); - G4int QuarkEncoding; - if (!(abs(Left()->Encoding()) > 1000 || abs(Right()->Encoding()) > 1000)) - { - //... there are quarks on cluster ends - //... randomly choose q,qbar pair or qq,qqbar pair - if (G4UniformRand() > theStringDecay->GetDiquarkSuppress()) - { - //... q,qbar pair is choosen, sample quark flavor ifln - QuarkEncoding = -signLeftEncoding*theStringDecay->SampleQuarkFlavor(); - } - else - { - //... sample quarks and Construct Diquark ifln - G4int i1 = theStringDecay->SampleQuarkFlavor(); - G4int i2 = theStringDecay->SampleQuarkFlavor(); - G4int i10 = G4std::max(i1,i2); - G4int i20 = G4std::min(i1,i2); - G4int spin = (i10 != i20 && G4UniformRand() <= 0.5)? 1: 3; - QuarkEncoding = signLeftEncoding*(i10 * 1000 + i20 * 100 + spin); - } - } - else - { - //... there is a Diquark on cluster ends - //... randomly choose q,qbar pair - QuarkEncoding = ((abs(Left()->Encoding()) < 1000)? -signLeftEncoding : signLeftEncoding)*theStringDecay->SampleQuarkFlavor(); - } - //... encodings and masses of hadrons - //... theGivenSpin = false; //means any hadron (with given quark content) can be built - //... theSpin = 1; - LeftHadron = theStringDecay->CreateHadron(Left()->Encoding(), QuarkEncoding, false, 1); - RightHadron = theStringDecay->CreateHadron(Right()->Encoding(), -QuarkEncoding, false, 1); + G4int QuarkEncoding; + G4ParticleDefinition * quark; + string->SetLeftPartonStable(); // to query quark contents.. + if (string->DecayIsQuark() && string->StableIsQuark() ) + { + //... there are quarks on cluster ends + LeftHadron= QuarkSplitup(string->GetLeftParton(), quark); + } else { + //... there is a Diquark on cluster ends + G4int IsParticle; + if ( string->StableIsQuark() ) { + IsParticle=(string->GetLeftParton()->GetPDGEncoding()>0) ? -1 : +1; + } else { + IsParticle=(string->GetLeftParton()->GetPDGEncoding()>0) ? +1 : -1; + } + pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted + quark = QuarkPair.second; + LeftHadron=hadronizer->Build(QuarkPair.first, string->GetLeftParton()); + } + RightHadron = hadronizer->Build(string->GetRightParton(), quark); //... repeat procedure, if mass of cluster is too low to produce hadrons //... ClusterMassCut = 0.15*GeV model parameter - if (QuarkEncoding < 3) - ClusterMassCut = 0.; + if ( quark->GetParticleSubType()== "quark" ) {ClusterMassCut = 0.;} + else {ClusterMassCut = ClusterMass;} } while (ResidualMass <= LeftHadron->GetPDGMass() + RightHadron->GetPDGMass() + ClusterMassCut); //... compute hadron momenta and energies G4LorentzVector LeftMom, RightMom; G4ThreeVector Pos; - theStringDecay->Sample4Momentum(&LeftMom, LeftHadron->GetPDGMass(), &RightMom, RightHadron->GetPDGMass(), ResidualMass); + Sample4Momentum(&LeftMom, LeftHadron->GetPDGMass(), &RightMom, RightHadron->GetPDGMass(), ResidualMass); LeftMom.boost(ClusterVel); RightMom.boost(ClusterVel); - LeftVector->insert(new G4KineticTrack(LeftHadron, 0, Pos, LeftMom)); - RightVector->insert(new G4KineticTrack(RightHadron, 0, Pos, RightMom)); + LeftVector->push_back(new G4KineticTrack(LeftHadron, 0, Pos, LeftMom)); + RightVector->push_back(new G4KineticTrack(RightHadron, 0, Pos, RightMom)); return true; } -//***************************************************************************************************** //---------------------------------------------------------------------------------------------------------- + G4KineticTrackVector* G4VLongitudinalStringDecay::FragmentString(const G4ExcitedString& theString) { // Can no longer modify Parameters for Fragmentation. PastInitPhase=true; // check if string has enough mass to fragment... - G4KineticTrackVector * LeftVector=LightFragmentationTest(theString); + G4KineticTrackVector * LeftVector=LightFragmentationTest(&theString); if ( LeftVector != 0 ) return LeftVector; LeftVector = new G4KineticTrackVector; G4KineticTrackVector * RightVector=new G4KineticTrackVector; - - G4bool success=false; - - for ( G4int attempts=0; attempts < StringLoopInterrupt; attempts++) - { - SimpleString currentString(theString, this); - LeftVector->clearAndDestroy(); - RightVector->clearAndDestroy(); +// this should work but its only a semi deep copy. %GF G4ExcitedString theStringInCMS(theString); + G4ExcitedString *theStringInCMS=CPExcited(theString); + G4LorentzRotation toCms=theStringInCMS->TransformToAlignedCms(); + + G4bool success=false, inner_sucess=true; + G4int attempt=0; + while ( !success && attempt++ < StringLoopInterrupt ) + { + G4FragmentingString *currentString=new G4FragmentingString(*theStringInCMS); + + G4std::for_each(LeftVector->begin(), LeftVector->end(), DeleteKineticTrack()); + LeftVector->clear(); + G4std::for_each(RightVector->begin(), RightVector->end(), DeleteKineticTrack()); + RightVector->clear(); + + inner_sucess=true; // set false on failure.. while (! StopFragmenting(currentString) ) { // Split current string into hadron + new string - G4int newDecayEncoding; // used as output from SplitUp... - G4ParticleDefinition * hadronDefinition=currentString.Splitup(newDecayEncoding); - G4KineticTrack * Hadron=SplitEandP(hadronDefinition,¤tString, newDecayEncoding); - if ( Hadron == 0 ) goto ENDLOOP; - if ( currentString.GetDecayDirection() > 0 ) - LeftVector->insert(Hadron); - else - RightVector->insert(Hadron); - currentString.update(); - if ( ! IsFragmentable(currentString) ) goto ENDLOOP; + G4FragmentingString *newString=0; // used as output from SplitUp... + G4KineticTrack * Hadron=Splitup(currentString,newString); + if ( Hadron != 0 && IsFragmentable(newString)) + { + if ( currentString->GetDecayDirection() > 0 ) + LeftVector->push_back(Hadron); + else + RightVector->push_back(Hadron); + delete currentString; + currentString=newString; + } else { + // abandon ... start from the beginning + if (newString) delete newString; + if (Hadron) delete Hadron; + inner_sucess=false; + break; + } } // Split current string into 2 final Hadrons - if ( ! currentString.SplitLast(LeftVector, RightVector) ) goto ENDLOOP; - success=true; - break; // Success!!! -ENDLOOP: ; - + if ( inner_sucess && + SplitLast(currentString,LeftVector, RightVector) ) + { + success=true; + } + delete currentString; } + delete theStringInCMS; + if ( ! success ) { - LeftVector->clearAndDestroy(); - RightVector->clearAndDestroy(); + G4std::for_each(LeftVector->begin(), LeftVector->end(), DeleteKineticTrack()); + LeftVector->clear(); + G4std::for_each(RightVector->begin(), RightVector->end(), DeleteKineticTrack()); + delete RightVector; return LeftVector; } - // After the next procedure LeftVector will be contained List of Hadrons - // in correct order. - while(!RightVector->isEmpty()) - LeftVector->insert(RightVector->removeLast()); + // Join Left- and RightVector into LeftVector in correct order. + while(!RightVector->empty()) + { + LeftVector->push_back(RightVector->back()); + RightVector->erase(RightVector->end()-1); + } delete RightVector; CalculateHadronTimePosition(theString.Get4Momentum().mag(), LeftVector); - // Make backward lorenz boost - G4LorentzRotation toCms(-1*theString.Get4Momentum().boostVector()); - G4LorentzVector pLeftRest= toCms*theString.GetLeftParton()->Get4Momentum(); - G4LorentzVector pRightRest= toCms*theString.GetRightParton()->Get4Momentum(); - - toCms.rotateZ(-1*pLeftRest.phi()); - toCms.rotateY(-1*pLeftRest.theta()); - - pLeftRest=toCms*theString.GetLeftParton()->Get4Momentum(); - pRightRest=toCms*theString.GetRightParton()->Get4Momentum(); G4LorentzRotation toObserverFrame(toCms.inverse()); - for(int C1 = 0; C1 < LeftVector->length(); C1++) + for(int C1 = 0; C1 < LeftVector->size(); C1++) { - G4KineticTrack* Hadron = LeftVector->at(C1); + G4KineticTrack* Hadron = LeftVector->operator[](C1); G4LorentzVector Momentum = Hadron->Get4Momentum(); Momentum = toObserverFrame*Momentum; Hadron->Set4Momentum(Momentum); G4LorentzVector Coordinate(Hadron->GetPosition(), Hadron->GetFormationTime()); Momentum = toObserverFrame*Coordinate; Hadron->SetFormationTime(Momentum.e()); - G4ThreeVector aPosition(Momentum.px(), Momentum.py(), Momentum.pz()); + G4ThreeVector aPosition(Momentum.vect()); Hadron->SetPosition(theString.GetPosition()+aPosition); } return LeftVector; @@ -532,174 +527,123 @@ ENDLOOP: ; } -G4KineticTrack * G4VLongitudinalStringDecay::SplitEandP(G4ParticleDefinition * pHadron, - G4VLongitudinalStringDecay::SimpleString * string, G4int newDecayEncoding) + +//---------------------------------------------------------------------------------------------------------- + +G4ExcitedString *G4VLongitudinalStringDecay::CPExcited(const G4ExcitedString & in) { - G4double HadronMass = pHadron->GetPDGMass(); - - // calculate and assign hadron transverse momentum component HadronPx andHadronPy - G4double thePx, thePy; - SampleQuarkPt(&thePx, &thePy); - G4double HadronPx = string->Decay()->Px() + thePx; - G4double HadronPy = string->Decay()->Py() + thePy; - //... sample z to define hadron longitudinal momentum and energy - //... but first check the available phase space - G4double DecayQuarkMass2 = sqr(FindParticle(string->Decay()->Encoding())->GetPDGMass()); - G4double HadronMass2T = HadronMass*HadronMass + HadronPx*HadronPx + HadronPy*HadronPy; - if (DecayQuarkMass2 + HadronMass2T >= SmoothParam*string->Decay()->w()*string->Stable()->w()) - return 0; // have to start all over! - - //... then compute allowed z region z_min <= z <= z_max - - G4double zMin = HadronMass2T/(string->Decay()->w()*string->Stable()->w()); - G4double zMax = 1. - DecayQuarkMass2/(string->Decay()->w()*string->Stable()->w()); - if (zMin >= zMax) return 0; // have to start all over! - - -//####wasGF G4double z = GetLightConeZ(zMin, zMax, QuarkEncoding, pHadron, HadronPx, HadronPy); - G4double z = GetLightConeZ(zMin, zMax, string->Decay()->Encoding(), pHadron, HadronPx, HadronPy); - - //... now compute hadron longitudinal momentum and energy - //longitudinal hadron momentum component HadronPz - - G4double HadronPz = (z * string->Decay()->w() - HadronMass2T/(z * string->Decay()->w()))*0.5; - HadronPz *= string->GetDecayDirection(); - //total hadron energy HadronE - G4double HadronE = (z * string->Decay()->w() + HadronMass2T/(z * string->Decay()->w()))*0.5; - - //...update (after hadron separation) string light-cone variables - - string->Decay()->setEncoding(newDecayEncoding); - string->Decay()->setpxpy(-thePx,-thePy); - string->Left()->decreasew(HadronE + HadronPz); - string->Right()->decreasew(HadronE - HadronPz); - - G4LorentzVector a4Momentum(HadronPx,HadronPy,HadronPz,HadronE); - G4ThreeVector Pos; - G4KineticTrack * Hadron = new G4KineticTrack(pHadron, 0, Pos, a4Momentum); - - return Hadron; + G4Parton *Left=new G4Parton(*in.GetLeftParton()); + G4Parton *Right=new G4Parton(*in.GetRightParton()); + return new G4ExcitedString(Left,Right,in.GetDirection()); } -G4double G4VLongitudinalStringDecay::MinFragmentationMass(SimpleString & theString, - G4ParticleDefinition *& Hadron1,G4ParticleDefinition *& Hadron2) +G4double G4VLongitudinalStringDecay::FragmentationMass( + const G4FragmentingString * + const string, + Pcreate build, + pDefPair * pdefs) { - G4int LeftEncoding = theString.Left()->Encoding(); - G4int RightEncoding = theString.Right()->Encoding(); - + G4double mass; - // qq - (qq)bar - G4bool FourQuarkString = abs(LeftEncoding) > 1000 && abs(RightEncoding) > 1000; - // q - qbar - G4bool QQbarString = abs(LeftEncoding) < 1000 && abs(RightEncoding) < 1000; + if ( build==0 ) build=&G4HadronBuilder::BuildLowSpin; - Hadron2=0; + G4ParticleDefinition *Hadron1, *Hadron2=0; - if (!FourQuarkString ) + if (!string->FourQuarkString() ) { // spin 0 meson or spin 1/2 barion will be built - G4int theSpinLight = QQbarString ? 1: 2; - Hadron1 = CreateHadron(LeftEncoding, RightEncoding, true, theSpinLight); + Hadron1 = (hadronizer->*build)(string->GetLeftParton(), + string->GetRightParton()); mass= (Hadron1)->GetPDGMass(); } else { - //... string is qq--qqbar type: Build two stable hadrons, - //... but we need extra uubar or ddbar quark pair - G4int iflc = (G4UniformRand() < 0.5)? 1 : 2; - if (LeftEncoding < 0) iflc = -iflc; + //... string is qq--qqbar: Build two stable hadrons, + //... with extra uubar or ddbar quark pair + G4int iflc = (G4UniformRand() < 0.5)? 1 : 2; + if (string->GetLeftParton()->GetPDGEncoding() < 0) iflc = -iflc; - //... theSpin = 2; spin 1/2 baryons will be built - Hadron1 = CreateHadron(LeftEncoding, iflc, true, 2); - Hadron2 = CreateHadron(RightEncoding,-iflc, true, 2); - - mass= (Hadron1)->GetPDGMass() + (Hadron2)->GetPDGMass(); + //... theSpin = 4; spin 3/2 baryons will be built + Hadron1 = (hadronizer->*build)(string->GetLeftParton(),FindParticle(iflc)); + Hadron2 =(hadronizer->*build)(string->GetRightParton(),FindParticle(-iflc)); + mass = (Hadron1)->GetPDGMass() + (Hadron2)->GetPDGMass(); } + + if ( pdefs != 0 ) + { // need to return hadrons as well.... + pdefs->first = Hadron1; + pdefs->second = Hadron2; + } + return mass; } - -G4double G4VLongitudinalStringDecay::IsFragmentable(SimpleString & theString) -{ - G4ParticleDefinition * Hadron1=0, * Hadron2=0; - return sqr(MinFragmentationMass(theString, Hadron1, Hadron2)+MassCut) < theString.MassSquared(); +//---------------------------------------------------------------------------------------------------------- + +G4bool G4VLongitudinalStringDecay::IsFragmentable(const G4FragmentingString * string) +{ + return sqr(FragmentationMass(string)+MassCut) < + string->Mass2(); } - -G4KineticTrackVector* G4VLongitudinalStringDecay::LightFragmentationTest(const G4ExcitedString& theString) +//---------------------------------------------------------------------------------------------------------- + +G4bool G4VLongitudinalStringDecay::StopFragmenting(const G4FragmentingString * const string) +{ + return + sqr(FragmentationMass(string,&G4HadronBuilder::BuildHighSpin)+MassCut) > + string->Get4Momentum().mag2(); +} + +//---------------------------------------------------------------------------------------------------------- + +G4KineticTrackVector* G4VLongitudinalStringDecay::LightFragmentationTest(const + G4ExcitedString * const string) { // Check string decay threshold + + G4KineticTrackVector * result=0; // return 0 when string exceeds the mass cut - SimpleString aString(theString,this); - - G4KineticTrackVector * result=0; // return 0 when string exceeds the mass cut -); - - G4ParticleDefinition * Hadron1=0, * Hadron2 =0; - if ( sqr(MinFragmentationMass(aString, Hadron1, Hadron2)+MassCut) < theString.Get4Momentum().mag2()) - return 0; + pDefPair hadrons((G4ParticleDefinition *)0,(G4ParticleDefinition *)0); + G4FragmentingString aString(*string); + if ( sqr(FragmentationMass(&aString,0,&hadrons)+MassCut) < aString.Mass2()) { + return 0; + } result=new G4KineticTrackVector; - if ( Hadron2 ==0 ) + if ( hadrons.second ==0 ) { // Substitute string by light hadron, Note that Energy is not conserved here! - G4ThreeVector Mom3 = theString.Get4Momentum().vect(); - G4LorentzVector Mom(Mom3, sqrt(Mom3.mag2() + sqr(Hadron1->GetPDGMass()))); - result->insert(new G4KineticTrack(Hadron1, 0, theString.GetPosition(), Mom)); + G4ThreeVector Mom3 = string->Get4Momentum().vect(); + G4LorentzVector Mom(Mom3, + sqrt(Mom3.mag2() + sqr(hadrons.first->GetPDGMass()))); + result->push_back(new G4KineticTrack(hadrons.first, 0, string->GetPosition(), Mom)); } else { //... string was qq--qqbar type: Build two stable hadrons, G4LorentzVector Mom1, Mom2; - Sample4Momentum(&Mom1, Hadron1->GetPDGMass(), &Mom2, Hadron2->GetPDGMass(), theString.Get4Momentum().mag()); - result->insert(new G4KineticTrack(Hadron1, 0, theString.GetPosition(), Mom1)); - result->insert(new G4KineticTrack(Hadron2, 0, theString.GetPosition(), Mom2)); - G4ThreeVector Velocity = theString.Get4Momentum().boostVector(); + Sample4Momentum(&Mom1, hadrons.first->GetPDGMass(), + &Mom2,hadrons.second->GetPDGMass(), + string->Get4Momentum().mag()); + result->push_back(new G4KineticTrack(hadrons.first, 0, string->GetPosition(), Mom1)); + result->push_back(new G4KineticTrack(hadrons.second, 0, string->GetPosition(), Mom2)); + G4ThreeVector Velocity = string->Get4Momentum().boostVector(); result->Boost(Velocity); } + return result; } -G4bool G4VLongitudinalStringDecay::StopFragmenting(SimpleString& string) -{ - G4double SumMass = MassCut; - - // qq - (qq)bar - G4bool FourQuarkString = abs(string.Left()->Encoding()) > 1000 && abs(string.Right()->Encoding()) > 1000; - // q - qbar - G4bool QQbarString = abs(string.Left()->Encoding()) < 1000 && abs(string.Right()->Encoding()) < 1000; - - if ( ! FourQuarkString ) - { - //... string is q --qbar or q--qq type: Build a stable hadron - // spin 1 meson or spin 3/2 barion will be built - G4int theSpin = QQbarString ? 3: 4; // 2*J+1 - SumMass+= CreateHadron(string.Left()->Encoding(), string.Right()->Encoding(), true, theSpin)->GetPDGMass(); - }else - { - //... string is qq--qqbar type: Build two stable hadrons, - // need extra uubar or ddbar quark pair - G4int iflc = (G4UniformRand() < 0.5)? 1 : 2; - if (string.Left()->Encoding() < 0) iflc = -iflc; - - //... theSpin = 4; spin 3/2 baryons will be built - SumMass += CreateHadron(string.Left()->Encoding(), iflc, true, 4)->GetPDGMass() + - CreateHadron(string.Right()->Encoding(),-iflc, true, 4)->GetPDGMass(); - } - return string.MassSquared() <= sqr(SumMass); -} - - - -//***************************************************************************************************** +//---------------------------------------------------------------------------------------------------------- G4ParticleDefinition* G4VLongitudinalStringDecay::FindParticle(G4int Encoding) { G4ParticleDefinition* ptr = G4ParticleTable::GetParticleTable()->FindParticle(Encoding); - if (ptr == NULL) ptr = G4ParticleTable::GetParticleTable()->FindParticle(-Encoding); - if (ptr == NULL) + if (ptr == NULL) { G4cout << "Particle with encoding "<isEmpty()) - aHadrons->insert(Output->removeLast()); - delete Output; - return TRUE; - } - return FALSE; - } - - -//***************************************************************************************************** - - -G4KineticTrackVector* G4VLongitudinalStringDecay::DecayResonans (G4KineticTrackVector* aHadrons) - { - G4KineticTrackVector* Out = new G4KineticTrackVector; - for(G4int c1 = 0; c1 < aHadrons->length(); c1++) - { - G4KineticTrack* pKT = aHadrons->at(c1); - if (abs(pKT->GetDefinition()->GetPDGEncoding())%10 > 2) - { - /* G4KineticTrackVector* pKTV = pKT->Decay(); - if (pKTV) - { - while(!pKTV->isEmpty()) - Out->insert(pKTV->removeLast()); - pKTV->clearAndDestroy(); - delete pKTV; - continue; - }*/ - } - Out->insert(new G4KineticTrack(*pKT)); - } - return Out; - } - - -//***************************************************************************************************** +//---------------------------------------------------------------------------------------------------------- void G4VLongitudinalStringDecay::Sample4Momentum(G4LorentzVector* Mom, G4double Mass, G4LorentzVector* AntiMom, G4double AntiMass, G4double InitialMass) { @@ -771,9 +672,9 @@ void G4VLongitudinalStringDecay::Sample4Momentum(G4LorentzVector* Mom, G4double AntiMom->setPx(-px); AntiMom->setPy(-py); AntiMom->setPz(-pz); AntiMom->setE (sqrt(Pabs*Pabs + AntiMass*AntiMass)); } - -//*********************************************************************************************************** - + +//---------------------------------------------------------------------------------------------------------- + void G4VLongitudinalStringDecay::SetSigmaTransverseMomentum(G4double aValue) { if ( PastInitPhase ) { @@ -783,6 +684,8 @@ void G4VLongitudinalStringDecay::SetSigmaTransverseMomentum(G4double aValue) } } +//---------------------------------------------------------------------------------------------------------- + void G4VLongitudinalStringDecay::SetStrangenessSuppression(G4double aValue) { if ( PastInitPhase ) { @@ -792,6 +695,8 @@ void G4VLongitudinalStringDecay::SetStrangenessSuppression(G4double aValue) } } +//---------------------------------------------------------------------------------------------------------- + void G4VLongitudinalStringDecay::SetDiquarkSuppression(G4double aValue) { if ( PastInitPhase ) { @@ -809,7 +714,8 @@ void G4VLongitudinalStringDecay::SetDiquarkBreakProbability(G4double aValue) DiquarkBreakProb = aValue; } } - + +//---------------------------------------------------------------------------------------------------------- void G4VLongitudinalStringDecay::SetVectorMesonProbability(G4double aValue) { @@ -817,18 +723,28 @@ void G4VLongitudinalStringDecay::SetVectorMesonProbability(G4double aValue) G4Exception("4VLongitudinalStringDecay::SetVectorMesonProbability after FragmentString() not allowed"); } else { pspin_meson = aValue; + delete hadronizer; + hadronizer = new G4HadronBuilder(pspin_meson,pspin_barion, + scalarMesonMix,vectorMesonMix); } } +//---------------------------------------------------------------------------------------------------------- + void G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability(G4double aValue) { if ( PastInitPhase ) { G4Exception("4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability after FragmentString() not allowed"); } else { pspin_barion = aValue; + delete hadronizer; + hadronizer = new G4HadronBuilder(pspin_meson,pspin_barion, + scalarMesonMix,vectorMesonMix); } } +//---------------------------------------------------------------------------------------------------------- + void G4VLongitudinalStringDecay::SetScalarMesonMixings(G4std::vector aVector) { if ( PastInitPhase ) { @@ -836,15 +752,20 @@ void G4VLongitudinalStringDecay::SetScalarMesonMixings(G4std::vector a } else { if ( aVector.size() < 6 ) G4Exception("4VLongitudinalStringDecay::SetScalarMesonMixings( argument Vector too small"); - pmix_meson1[0] = aVector[0]; - pmix_meson1[1] = aVector[1]; - pmix_meson1[2] = aVector[2]; - pmix_meson1[3] = aVector[3]; - pmix_meson1[4] = aVector[4]; - pmix_meson1[5] = aVector[5]; + scalarMesonMix[0] = aVector[0]; + scalarMesonMix[1] = aVector[1]; + scalarMesonMix[2] = aVector[2]; + scalarMesonMix[3] = aVector[3]; + scalarMesonMix[4] = aVector[4]; + scalarMesonMix[5] = aVector[5]; + delete hadronizer; + hadronizer = new G4HadronBuilder(pspin_meson,pspin_barion, + scalarMesonMix,vectorMesonMix); } } +//---------------------------------------------------------------------------------------------------------- + void G4VLongitudinalStringDecay::SetVectorMesonMixings(G4std::vector aVector) { if ( PastInitPhase ) { @@ -852,11 +773,16 @@ void G4VLongitudinalStringDecay::SetVectorMesonMixings(G4std::vector a } else { if ( aVector.size() < 6 ) G4Exception("4VLongitudinalStringDecay::SetVectorMesonMixings( argument Vector too small"); - pmix_meson0[0] = aVector[0]; - pmix_meson0[1] = aVector[1]; - pmix_meson0[2] = aVector[2]; - pmix_meson0[3] = aVector[3]; - pmix_meson0[4] = aVector[4]; - pmix_meson0[5] = aVector[5]; + vectorMesonMix[0] = aVector[0]; + vectorMesonMix[1] = aVector[1]; + vectorMesonMix[2] = aVector[2]; + vectorMesonMix[3] = aVector[3]; + vectorMesonMix[4] = aVector[4]; + vectorMesonMix[5] = aVector[5]; + delete hadronizer; + hadronizer = new G4HadronBuilder(pspin_meson,pspin_barion, + scalarMesonMix,vectorMesonMix); + } } +//******************************************************************************************************* diff --git a/source/processes/hadronic/models/generator/util/include/G4ExcitedString.hh b/source/processes/hadronic/models/generator/util/include/G4ExcitedString.hh index 961f8714b8..4e8f8404e7 100644 --- a/source/processes/hadronic/models/generator/util/include/G4ExcitedString.hh +++ b/source/processes/hadronic/models/generator/util/include/G4ExcitedString.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ExcitedString.hh,v 1.5.8.2 2001/06/28 20:20:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedString.hh,v 1.9 2001/10/06 08:17:01 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4ExcitedString_h @@ -44,6 +44,7 @@ #include "G4Parton.hh" #include "G4PartonVector.hh" #include "G4KineticTrack.hh" +#include "g4std/algorithm" class G4ExcitedString { @@ -137,7 +138,7 @@ inline G4LorentzVector G4ExcitedString::Get4Momentum() const { G4LorentzVector momentum; - for ( G4int index=0; index < thePartons.entries() ; index++ ) + for ( unsigned int index=0; index < thePartons.size() ; index++ ) { momentum += thePartons[index]->Get4Momentum(); } @@ -147,7 +148,7 @@ G4LorentzVector G4ExcitedString::Get4Momentum() const inline void G4ExcitedString::LorentzRotate(const G4LorentzRotation & rotation) { - for ( G4int index=0; index < thePartons.entries() ; index++ ) + for ( unsigned int index=0; index < thePartons.size() ; index++ ) { thePartons[index]->Set4Momentum(rotation*thePartons[index]->Get4Momentum()); } @@ -157,18 +158,18 @@ inline void G4ExcitedString::InsertParton(G4Parton *aParton, const G4Parton * addafter) { - G4int insert_index=1; + G4PartonVector::iterator insert_index; if ( addafter != NULL ) { - insert_index=thePartons.index(addafter); - if (insert_index == G4std::string::npos) // No object addafter in thePartons + insert_index=G4std::find(thePartons.begin(), thePartons.end(), addafter); + if (insert_index == thePartons.end()) // No object addafter in thePartons { G4Exception("G4ExcitedString::InsertParton called with invalid second argument"); } } - thePartons.insertAt(insert_index+1, aParton); + thePartons.insert(insert_index+1, aParton); } inline @@ -177,7 +178,7 @@ G4LorentzRotation G4ExcitedString::TransformToCenterOfMass() G4LorentzVector momentum=Get4Momentum(); G4LorentzRotation toCms(-1*momentum.boostVector()); - for ( G4int index=0; index < thePartons.entries() ; index++ ) + for ( unsigned int index=0; index < thePartons.size() ; index++ ) { momentum=toCms * thePartons[index]->Get4Momentum(); thePartons[index]->Set4Momentum(momentum); @@ -195,7 +196,7 @@ G4LorentzRotation G4ExcitedString::TransformToAlignedCms() toAlignedCms.rotateZ(-1*momentum.phi()); toAlignedCms.rotateY(-1*momentum.theta()); - for ( G4int index=0; index < thePartons.entries() ; index++ ) + for ( unsigned int index=0; index < thePartons.size() ; index++ ) { momentum=toAlignedCms * thePartons[index]->Get4Momentum(); thePartons[index]->Set4Momentum(momentum); diff --git a/source/processes/hadronic/models/generator/util/include/G4ExcitedStringVector.hh b/source/processes/hadronic/models/generator/util/include/G4ExcitedStringVector.hh index 8225d2b7be..70e13645d4 100644 --- a/source/processes/hadronic/models/generator/util/include/G4ExcitedStringVector.hh +++ b/source/processes/hadronic/models/generator/util/include/G4ExcitedStringVector.hh @@ -14,18 +14,18 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ExcitedStringVector.hh,v 1.3.8.2 2001/06/28 20:20:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedStringVector.hh,v 1.6 2001/10/04 20:00:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4ExcitedStringVector_h -#define G4ExcitedStringPartonVector_h 1 +#define G4ExcitedStringVector_h 1 // ------------------------------------------------------------ // GEANT 4 class header file @@ -35,8 +35,9 @@ // ------------------------------------------------------------ #include "G4ExcitedString.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" -typedef G4RWTPtrOrderedVector G4ExcitedStringVector; +typedef G4std::vector G4ExcitedStringVector; +struct DeleteString { void operator()(G4ExcitedString* aS){delete aS;} }; #endif diff --git a/source/processes/hadronic/models/generator/util/include/G4Fancy3DNucleus.hh b/source/processes/hadronic/models/generator/util/include/G4Fancy3DNucleus.hh index 1283be0f39..7ada2b2d48 100644 --- a/source/processes/hadronic/models/generator/util/include/G4Fancy3DNucleus.hh +++ b/source/processes/hadronic/models/generator/util/include/G4Fancy3DNucleus.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Fancy3DNucleus.hh,v 1.6.8.2 2001/06/28 20:20:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Fancy3DNucleus.hh,v 1.9 2001/10/04 20:00:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4Fancy3DNucleus_h #define G4Fancy3DNucleus_h 1 @@ -41,7 +41,7 @@ #include "G4Nucleon.hh" #include "G4VNuclearDensity.hh" #include "G4FermiMomentum.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" class G4Fancy3DNucleus : public G4V3DNucleus { @@ -68,7 +68,7 @@ class G4Fancy3DNucleus : public G4V3DNucleus void Init(G4double theA, G4double theZ); G4bool StartLoop(); G4Nucleon * GetNextNucleon(); - const G4RWTPtrOrderedVector & GetNucleons(); + const G4std::vector & GetNucleons(); G4int GetMassNumber(); G4double GetMass(); G4int GetCharge(); @@ -87,7 +87,8 @@ class G4Fancy3DNucleus : public G4V3DNucleus G4int myA; G4int myZ; G4Nucleon * theNucleons; - G4RWTPtrOrderedVector theRWNucleons; // should not have two... + G4std::vector theRWNucleons; // should not have two... + struct DeleteNucleon{ void operator()(G4Nucleon *aN){delete aN;} }; G4int currentNucleon; G4VNuclearDensity * theDensity; G4FermiMomentum theFermi; diff --git a/source/processes/hadronic/models/generator/util/include/G4FermiMomentum.hh b/source/processes/hadronic/models/generator/util/include/G4FermiMomentum.hh index a52540ce5d..47d258389b 100644 --- a/source/processes/hadronic/models/generator/util/include/G4FermiMomentum.hh +++ b/source/processes/hadronic/models/generator/util/include/G4FermiMomentum.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FermiMomentum.hh,v 1.3.2.1 2001/06/28 19:13:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FermiMomentum.hh,v 1.5 2001/08/01 17:09:17 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4FermiMomentum_h #define G4FermiMomentum_h 1 diff --git a/source/processes/hadronic/models/generator/util/include/G4Fragment.hh b/source/processes/hadronic/models/generator/util/include/G4Fragment.hh index 96da9082fc..86a2116e5d 100644 --- a/source/processes/hadronic/models/generator/util/include/G4Fragment.hh +++ b/source/processes/hadronic/models/generator/util/include/G4Fragment.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Fragment.hh,v 1.8.2.1 2001/06/28 19:13:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Fragment.hh,v 1.11 2001/10/04 20:00:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) @@ -32,7 +32,7 @@ #include "G4ios.hh" #include "g4std/iomanip" -#include "g4rw/tpordvec.h" +#include "g4std/vector" #include "globals.hh" #include "G4LorentzVector.hh" @@ -49,7 +49,6 @@ class G4ParticleDefinition; class G4Fragment; // Forward deckaration -//typedef G4RWTPtrOrderedVector G4FragmentVector; typedef G4std::vector G4FragmentVector; diff --git a/source/processes/hadronic/models/generator/util/include/G4FragmentVector.hh b/source/processes/hadronic/models/generator/util/include/G4FragmentVector.hh index df54df0d83..cc6d9c1cf1 100644 --- a/source/processes/hadronic/models/generator/util/include/G4FragmentVector.hh +++ b/source/processes/hadronic/models/generator/util/include/G4FragmentVector.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FragmentVector.hh,v 1.2.8.1 2001/06/28 19:13:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FragmentVector.hh,v 1.4 2001/08/01 17:09:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) diff --git a/source/processes/hadronic/models/generator/util/include/G4GeneralPhaseSpaceDecay.hh b/source/processes/hadronic/models/generator/util/include/G4GeneralPhaseSpaceDecay.hh index c647c69485..85790457eb 100644 --- a/source/processes/hadronic/models/generator/util/include/G4GeneralPhaseSpaceDecay.hh +++ b/source/processes/hadronic/models/generator/util/include/G4GeneralPhaseSpaceDecay.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4GeneralPhaseSpaceDecay.hh,v 1.3.8.2 2001/06/28 20:20:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeneralPhaseSpaceDecay.hh,v 1.5 2001/08/01 17:09:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //$Id: G4GeneralPhaseSpaceDecay.hh,v 1.1 1997/05/21 // ---------------------------------------------------------------- diff --git a/source/processes/hadronic/models/generator/util/include/G4KineticTrack.hh b/source/processes/hadronic/models/generator/util/include/G4KineticTrack.hh index 37993da673..139ee2f9d6 100644 --- a/source/processes/hadronic/models/generator/util/include/G4KineticTrack.hh +++ b/source/processes/hadronic/models/generator/util/include/G4KineticTrack.hh @@ -14,15 +14,13 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KineticTrack.hh,v 1.3.8.2 2001/06/28 20:20:01 gunter Exp $ -// GEANT4 tag $Name: $ // // $Id: G4KineticTrack.hh,v 1.0 1998/05/20 // ----------------------------------------------------------------------------- @@ -93,14 +91,14 @@ class G4KineticTrack : public G4VKineticNucleon // LB move to public (before was private) LB G4double* GetActualWidth() const; + G4double GetActualMass() const; + private: G4int GetnChannels() const; void SetnChannels(const G4int aChannel); - G4double GetActualMass() const; - void SetActualWidth(G4double* anActualWidth); G4double EvaluateTotalActualWidth(); @@ -108,9 +106,9 @@ class G4KineticTrack : public G4VKineticNucleon G4double EvaluateCMMomentum (const G4double mass, const G4double* m_ij) const; - G4double IntegrateCMMomentum() const; + G4double IntegrateCMMomentum(const G4double lowerLimit) const; - G4double IntegrateCMMomentum(const G4double polemass) const; + G4double IntegrateCMMomentum(const G4double lowerLimit ,const G4double polemass) const; G4double IntegrateCMMomentum2() const; @@ -121,13 +119,15 @@ class G4KineticTrack : public G4VKineticNucleon const G4double rmass, const G4double mass) const; - friend G4double IntegrandFunction1 (G4double xmass); +private: + G4double IntegrandFunction1 (G4double xmass) const; + G4double IntegrandFunction2 (G4double xmass) const; + G4double IntegrandFunction3 (G4double xmass) const; + G4double IntegrandFunction4 (G4double xmass) const; +public: + // friend G4double IntegrandFunction3 (G4double xmass); - friend G4double IntegrandFunction2 (G4double xmass); - - friend G4double IntegrandFunction3 (G4double xmass); - - friend G4double IntegrandFunction4 (G4double xmass); + // friend G4double IntegrandFunction4 (G4double xmass); // LB new variable created LB G4int chosench; @@ -227,7 +227,7 @@ inline G4double G4KineticTrack::GetActualMass() const G4ThreeVector theMomentum = the4Momentum.vect(); G4double theMomentum2 = theMomentum.mag2(); G4double theTotalEnergy = the4Momentum.e(); - G4double theMass = sqrt(theTotalEnergy * theTotalEnergy - theMomentum2); + G4double theMass = sqrt(abs(theTotalEnergy * theTotalEnergy - theMomentum2)); return theMass; } diff --git a/source/processes/hadronic/models/generator/util/include/G4KineticTrackVector.hh b/source/processes/hadronic/models/generator/util/include/G4KineticTrackVector.hh index 95cf4798ff..546c14c38f 100644 --- a/source/processes/hadronic/models/generator/util/include/G4KineticTrackVector.hh +++ b/source/processes/hadronic/models/generator/util/include/G4KineticTrackVector.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KineticTrackVector.hh,v 1.3.8.1 2001/06/28 19:13:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KineticTrackVector.hh,v 1.6 2001/10/04 20:00:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // Modified at 8-Oct-1998 by Maxim Komogorov. Methods BoostBeam,Boost,Shift // were added. @@ -32,9 +32,9 @@ #include "globals.hh" #include "G4KineticTrack.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" -class G4KineticTrackVector : public G4RWTPtrOrderedVector +class G4KineticTrackVector : public G4std::vector { public: G4KineticTrackVector(); @@ -45,5 +45,7 @@ public: void Shift(G4ThreeVector& Pos); }; +struct DeleteKineticTrack{void operator()(G4KineticTrack * aT){delete aT;}}; + #endif diff --git a/source/processes/hadronic/models/generator/util/include/G4NuclearFermiDensity.hh b/source/processes/hadronic/models/generator/util/include/G4NuclearFermiDensity.hh index d945330258..a9ea83e9c1 100644 --- a/source/processes/hadronic/models/generator/util/include/G4NuclearFermiDensity.hh +++ b/source/processes/hadronic/models/generator/util/include/G4NuclearFermiDensity.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NuclearFermiDensity.hh,v 1.3.8.1 2001/06/28 19:13:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NuclearFermiDensity.hh,v 1.5 2001/08/01 17:09:19 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NuclearFermiDensity_h #define G4NuclearFermiDensity_h 1 diff --git a/source/processes/hadronic/models/generator/util/include/G4NuclearShellModelDensity.hh b/source/processes/hadronic/models/generator/util/include/G4NuclearShellModelDensity.hh index 80a0394550..f1185b6135 100644 --- a/source/processes/hadronic/models/generator/util/include/G4NuclearShellModelDensity.hh +++ b/source/processes/hadronic/models/generator/util/include/G4NuclearShellModelDensity.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NuclearShellModelDensity.hh,v 1.3.8.1 2001/06/28 19:13:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NuclearShellModelDensity.hh,v 1.5 2001/08/01 17:09:19 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NuclearShellModelDensity_h #define G4NuclearShellModelDensity_h 1 diff --git a/source/processes/hadronic/models/generator/util/include/G4Nucleon.hh b/source/processes/hadronic/models/generator/util/include/G4Nucleon.hh index 8416811490..2860ab5e10 100644 --- a/source/processes/hadronic/models/generator/util/include/G4Nucleon.hh +++ b/source/processes/hadronic/models/generator/util/include/G4Nucleon.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Nucleon.hh,v 1.3.8.2 2001/06/28 20:20:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Nucleon.hh,v 1.5 2001/08/01 17:09:20 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4Nucleon_h #define G4Nucleon_h 1 diff --git a/source/processes/hadronic/models/generator/util/include/G4Parton.hh b/source/processes/hadronic/models/generator/util/include/G4Parton.hh index 79c0f53a48..203c567013 100644 --- a/source/processes/hadronic/models/generator/util/include/G4Parton.hh +++ b/source/processes/hadronic/models/generator/util/include/G4Parton.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Parton.hh,v 1.9.8.2 2001/06/28 20:20:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Parton.hh,v 1.13 2001/08/01 17:09:21 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4Parton_h @@ -41,16 +41,20 @@ #include "G4LorentzVector.hh" #include "g4std/iostream" #include "G4ParticleTable.hh" +#include "Randomize.hh" class G4Parton { public: G4Parton() { - PDGencoding=0; - theColour = 1; - theIsoSpinZ = 0.5; - theSpinZ = 0.5; + // CAUTION: + // this is a preliminary definition yielding u and d quarks only! + // + PDGencoding=(G4int)(2.*G4UniformRand()); + theColour = (G4int)(3.*G4UniformRand())+1; + theIsoSpinZ = ((G4int)(G4UniformRand()))-0.5; + theSpinZ = ((G4int)(G4UniformRand()))-0.5; } G4Parton(G4int PDGencoding); @@ -81,10 +85,10 @@ class G4Parton void SetColour(G4int aColour) {theColour = aColour;} G4int GetColour() {return theColour;} - void SetIsoSpinZ(G4int anIsoSpinZ) {theIsoSpinZ = anIsoSpinZ;} + void SetIsoSpinZ(G4double anIsoSpinZ) {theIsoSpinZ = anIsoSpinZ;} G4double GetIsoSpinZ() {return theIsoSpinZ;} - void SetSpinZ(G4int anIsoSpinZ) {theIsoSpinZ = anIsoSpinZ;} + void SetSpinZ(G4double aSpinZ) {theSpinZ = aSpinZ;} G4double GetSpinZ() {return theSpinZ;} private: diff --git a/source/processes/hadronic/models/generator/util/include/G4PartonVector.hh b/source/processes/hadronic/models/generator/util/include/G4PartonVector.hh index d6d5d0e104..acaba684bb 100644 --- a/source/processes/hadronic/models/generator/util/include/G4PartonVector.hh +++ b/source/processes/hadronic/models/generator/util/include/G4PartonVector.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PartonVector.hh,v 1.3.8.2 2001/06/28 20:20:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PartonVector.hh,v 1.6 2001/10/04 20:00:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4PartonVector_h #define G4PartonVector_h 1 @@ -35,8 +35,9 @@ // ------------------------------------------------------------ #include "G4Parton.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" -typedef G4RWTPtrOrderedVector G4PartonVector; +typedef G4std::vector G4PartonVector; +struct DeleteParton{ void operator()(G4Parton*aP){delete aP;} }; #endif diff --git a/source/processes/hadronic/models/generator/util/include/G4SampleResonance.hh b/source/processes/hadronic/models/generator/util/include/G4SampleResonance.hh new file mode 100644 index 0000000000..ea171f3052 --- /dev/null +++ b/source/processes/hadronic/models/generator/util/include/G4SampleResonance.hh @@ -0,0 +1,84 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4SampleResonance.hh,v 1.4 2001/10/04 20:00:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// + +#ifndef G4SampleResonance_h +#define G4SampleResonance_h 1 + +// ------------------------------------------------------------ +// GEANT 4 class header file +// +// ---------------- G4SampleResonance ---------------- +// by Henning Weber, March 2001. +// helper class for sampling resonance masses +// ------------------------------------------------------------ + +#include "globals.hh" +#include "g4std/map" +#include "G4ParticleDefinition.hh" + + +class G4SampleResonance +{ +public: + + G4double GetMinimumMass(const G4ParticleDefinition* p) const; + G4double SampleMass(const G4double poleMass, + const G4double gamma, + const G4double minMass, + const G4double maxMass) const; + G4double SampleMass(const G4ParticleDefinition* p, const G4double maxMass) const; + +private: + + G4double BrWigInt0(const G4double x, const G4double gamma, const G4double m0) const + { return 2.0*gamma*atan( 2.0 * (x-m0)/ gamma ); } + + G4double BrWigInt1(const G4double x, const G4double gamma, const G4double m0) const + { return 0.5*gamma*gamma*log( (x-m0)*(x-m0)+gamma*gamma/4.0 ) + m0*BrWigInt0(x,gamma,m0); } + + G4double BrWigInv(const G4double x, const G4double gamma, const G4double m0) const + { return 0.5*gamma*tan( 0.5*x/gamma )+m0; } + +public: + + typedef G4std::map >::const_iterator minMassMapIterator; + typedef G4std::map > minMassMapType; + +private: + + static minMassMapType minMassCache; + +}; + + +#endif + + + + + + diff --git a/source/processes/hadronic/models/generator/util/src/G4ExcitedString.cc b/source/processes/hadronic/models/generator/util/src/G4ExcitedString.cc index 7223093ecc..09cda0172c 100644 --- a/source/processes/hadronic/models/generator/util/src/G4ExcitedString.cc +++ b/source/processes/hadronic/models/generator/util/src/G4ExcitedString.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ExcitedString.cc,v 1.3.8.2 2001/06/28 20:20:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ExcitedString.cc,v 1.6 2001/10/04 20:00:33 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ @@ -36,14 +36,15 @@ // G4ExcitedString #include "G4ExcitedString.hh" +#include "g4std/algorithm" //G4ExcitedString::G4ExcitedString(const G4ExcitedString &right) //{} G4ExcitedString::G4ExcitedString(G4Parton* Color, G4Parton* AntiColor, G4int Direction) { - thePartons.insert(Color); - thePartons.insert(AntiColor); + thePartons.push_back(Color); + thePartons.push_back(AntiColor); thePosition = Color->GetPosition(); theDirection = Direction; theTrack=0; @@ -51,9 +52,9 @@ G4ExcitedString::G4ExcitedString(G4Parton* Color, G4Parton* AntiColor, G4int Dir G4ExcitedString::G4ExcitedString(G4Parton* Color, G4Parton* Gluon, G4Parton* AntiColor, G4int Direction) { - thePartons.insert(Color); - thePartons.insert(Gluon); - thePartons.insert(AntiColor); + thePartons.push_back(Color); + thePartons.push_back(Gluon); + thePartons.push_back(AntiColor); thePosition = Color->GetPosition(); theDirection = Direction; theTrack=0; @@ -68,7 +69,7 @@ G4ExcitedString::G4ExcitedString(G4KineticTrack * track) G4ExcitedString::~G4ExcitedString() { - thePartons.clearAndDestroy(); + G4std::for_each(thePartons.begin(), thePartons.end(), DeleteParton()); } @@ -89,7 +90,7 @@ G4ExcitedString::~G4ExcitedString() void G4ExcitedString::Boost(G4ThreeVector& Velocity) { - for(G4int cParton = 0; cParton < thePartons.entries() ; cParton++ ) + for(unsigned int cParton = 0; cParton < thePartons.size() ; cParton++ ) { G4LorentzVector Mom = thePartons[cParton]->Get4Momentum(); Mom.boost(Velocity); @@ -101,41 +102,45 @@ void G4ExcitedString::Boost(G4ThreeVector& Velocity) G4Parton* G4ExcitedString::GetColorParton(void) const { - G4int Encoding = thePartons.first()->GetPDGcode(); + G4Parton * start = *(thePartons.begin()); + G4Parton * end = *(thePartons.end()-1); + G4int Encoding = start->GetPDGcode(); if (Encoding < -1000 || ((Encoding < 1000) && (Encoding > 0))) - return thePartons.first(); - return thePartons.last(); + return start; + return end; } //--------------------------------------------------------------------------------- G4Parton* G4ExcitedString::GetGluon(void) const { - return thePartons.at(1); + return thePartons[1]; } //--------------------------------------------------------------------------------- G4Parton* G4ExcitedString::GetGluon(G4int GluonPos) const { - return thePartons.at(1 + GluonPos); + return thePartons[1 + GluonPos]; } //--------------------------------------------------------------------------------- G4Parton* G4ExcitedString::GetAntiColorParton(void) const { - G4int Encoding = thePartons.first()->GetPDGcode(); + G4Parton * start = *(thePartons.begin()); + G4Parton * end = *(thePartons.end()-1); + G4int Encoding = start->GetPDGcode(); if (Encoding < -1000 || ((Encoding < 1000) && (Encoding > 0))) - return thePartons.last(); - return thePartons.first(); + return end; + return start; } //--------------------------------------------------------------------------------- G4bool G4ExcitedString::IsItKinkyString(void) const { - return (thePartons.entries() > 2); + return (thePartons.size() > 2); } //--------------------------------------------------------------------------------- @@ -149,14 +154,14 @@ G4int G4ExcitedString::GetDirection(void) const G4Parton* G4ExcitedString::GetLeftParton(void) const { - return thePartons.first(); + return *thePartons.begin(); } //--------------------------------------------------------------------------------- G4Parton* G4ExcitedString::GetRightParton(void) const { - return thePartons.last(); + return *(thePartons.end()-1); } //********************************************************************************* diff --git a/source/processes/hadronic/models/generator/util/src/G4Fancy3DNucleus.cc b/source/processes/hadronic/models/generator/util/src/G4Fancy3DNucleus.cc index dce4231e82..0548e74f42 100644 --- a/source/processes/hadronic/models/generator/util/src/G4Fancy3DNucleus.cc +++ b/source/processes/hadronic/models/generator/util/src/G4Fancy3DNucleus.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Fancy3DNucleus.cc,v 1.8.8.2 2001/06/28 20:20:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Fancy3DNucleus.cc,v 1.14 2001/10/20 10:48:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -38,7 +38,7 @@ #include "G4NucleiPropertiesTable.hh" #include "Randomize.hh" #include "G4ios.hh" -#include "g4rw/tvvector.h" +#include "g4std/algorithm" G4Fancy3DNucleus::G4Fancy3DNucleus() : nucleondistance(0.8*fermi) @@ -79,11 +79,11 @@ G4Fancy3DNucleus::~G4Fancy3DNucleus() void G4Fancy3DNucleus::Init(G4double theA, G4double theZ) { - G4int i; // G4cout << "G4Fancy3DNucleus::Init(theA, theZ) called"< & G4Fancy3DNucleus::GetNucleons() +const G4std::vector & G4Fancy3DNucleus::GetNucleons() { - if ( theRWNucleons.isEmpty() ) + if ( theRWNucleons.size()==0 ) { for (G4int i=0; i< myA; i++) { - theRWNucleons.append(theNucleons+i); + theRWNucleons.push_back(theNucleons+i); } } return theRWNucleons; @@ -316,7 +316,7 @@ void G4Fancy3DNucleus::ChooseFermiMomenta() // G4ThreeVector sum; // for (G4int index=0; indexGetPDGMass() + BindingEnergy()/myA; - G4LorentzVector tempV(momentum[i],energy); + G4LorentzVector tempV(momentum[i],sqrt(energy*energy+momentum[i].mag2())); theNucleons[i].SetMomentum(tempV); } @@ -343,7 +343,7 @@ void G4Fancy3DNucleus::ChooseFermiMomenta() } int operator < (const G4Fancy3DNucleusHelper &right) const { - return this->Size testSums(myA-1); // Sorted on delta.mag() + G4std::vector testSums; // Sorted on delta.mag() + for ( G4int aNucleon=0; aNucleon < myA-1; aNucleon++){ G4ThreeVector delta=2*((momentum[aNucleon]*testDir)* testDir); - testSums.insert(new G4Fancy3DNucleusHelper(delta,delta.mag(),aNucleon)); + testSums.push_back(G4Fancy3DNucleusHelper(delta,delta.mag(),aNucleon)); } + G4std::sort(testSums.begin(), testSums.end()); // reduce Momentum Sum until the next would be allowed. - G4int index=testSums.entries(); - while ( (sum-testSums[--index]->vector()).mag()>PFermi && index>0) + G4int index=testSums.size(); + while ( (sum-testSums[--index].vector()).mag()>PFermi && index>0) { // Only take one which improve, ie. don't change sign and overshoot... - if ( sum.mag() > (sum-testSums[index]->vector()).mag() ) { -// momentum[testSums[index]->index()]-=testSums[index]->vector(); -// sum-=testSums[index]->vector(); + if ( sum.mag() > (sum-testSums[index].vector()).mag() ) { + momentum[testSums[index].index()]-=testSums[index].vector(); + sum-=testSums[index].vector(); } } - if ( (sum-testSums[index]->vector()).mag() <= PFermi ) + if ( (sum-testSums[index].vector()).mag() <= PFermi ) { G4int best=-1; G4double pBest=2*PFermi; // anything larger than PFermi for ( G4int aNucleon=0; aNucleon<=index; aNucleon++) { // find the momentum closest to choosen momentum for last Nucleon. - G4double pTry=(testSums[aNucleon]->vector()-sum).mag(); + G4double pTry=(testSums[aNucleon].vector()-sum).mag(); if ( pTry < PFermi && abs(momentum[myA-1].mag() - pTry ) < pBest ) { @@ -419,14 +424,14 @@ G4bool G4Fancy3DNucleus::ReduceSum(G4ThreeVector * momentum, G4double *pFermiM) } } if ( best < 0 ) G4Exception( " Logic error in Fancy3DNucleus"); -// momentum[testSums[best]->index()]-=testSums[best]->vector(); -// momentum[myA-1]=testSums[best]->vector()-sum; + momentum[testSums[best].index()]-=testSums[best].vector(); + momentum[myA-1]=testSums[best].vector()-sum; - testSums.clearAndDestroy(); + testSums.clear(); return true; } - testSums.clearAndDestroy(); + testSums.clear(); // try to compensate momentum using another Nucleon.... diff --git a/source/processes/hadronic/models/generator/util/src/G4FermiMomentum.cc b/source/processes/hadronic/models/generator/util/src/G4FermiMomentum.cc index a5ee6443a7..a204e8b786 100644 --- a/source/processes/hadronic/models/generator/util/src/G4FermiMomentum.cc +++ b/source/processes/hadronic/models/generator/util/src/G4FermiMomentum.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4FermiMomentum.cc,v 1.2.8.1 2001/06/28 19:13:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FermiMomentum.cc,v 1.4 2001/08/01 17:09:26 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4FermiMomentum.hh" diff --git a/source/processes/hadronic/models/generator/util/src/G4Fragment.cc b/source/processes/hadronic/models/generator/util/src/G4Fragment.cc index 4d935ffaa3..f849086609 100644 --- a/source/processes/hadronic/models/generator/util/src/G4Fragment.cc +++ b/source/processes/hadronic/models/generator/util/src/G4Fragment.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Fragment.cc,v 1.9.2.1 2001/06/28 19:13:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Fragment.cc,v 1.12 2001/11/29 15:41:25 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (May 1998) @@ -139,7 +139,12 @@ G4bool G4Fragment::operator!=(const G4Fragment &right) const G4std::ostream& operator << (G4std::ostream &out, const G4Fragment *theFragment) { +#ifdef G4USE_STD_NAMESPACE + G4std::ios::fmtflags old_floatfield = out.flags(); + out.setf(G4std::ios::floatfield); +#else long old_floatfield = out.setf(0,G4std::ios::floatfield); +#endif out << "Fragment: A = " << G4std::setprecision(3) << theFragment->theA diff --git a/source/processes/hadronic/models/generator/util/src/G4GeneralPhaseSpaceDecay.cc b/source/processes/hadronic/models/generator/util/src/G4GeneralPhaseSpaceDecay.cc index 8f206c4d96..ff54fdafb1 100644 --- a/source/processes/hadronic/models/generator/util/src/G4GeneralPhaseSpaceDecay.cc +++ b/source/processes/hadronic/models/generator/util/src/G4GeneralPhaseSpaceDecay.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4GeneralPhaseSpaceDecay.cc,v 1.2.8.2 2001/06/28 20:20:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GeneralPhaseSpaceDecay.cc,v 1.5 2001/10/05 16:17:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: G4GeneralSpaceDecay.cc,v 1.0 1998/05/21 // ---------------------------------------------------------------- @@ -79,13 +79,13 @@ G4GeneralPhaseSpaceDecay::G4GeneralPhaseSpaceDecay(const G4String& theParentName const G4String& theDaughterName1, const G4String& theDaughterName2, const G4String& theDaughterName3) : - parentmass(theParentMass), G4VDecayChannel("Phase Space", theParentName,theBR, theNumberOfDaughters, theDaughterName1, theDaughterName2, - theDaughterName3) + theDaughterName3), + parentmass(theParentMass) { if (GetVerboseLevel()>1) G4cout << "G4GeneralPhaseSpaceDecay:: constructor " << G4endl; } @@ -134,7 +134,7 @@ G4DecayProducts *G4GeneralPhaseSpaceDecay::OneBodyDecayIt() { if (GetVerboseLevel()>1) G4cout << "G4GeneralPhaseSpaceDecay::OneBodyDecayIt()"<GetPDGMass(); +// G4double daughtermass = daughters[0]->GetPDGMass(); //create parent G4DynamicParticle at rest G4ParticleMomentum dummy; @@ -166,7 +166,7 @@ G4DecayProducts *G4GeneralPhaseSpaceDecay::TwoBodyDecayIt() G4double daughtermomentum; daughtermass[0] = daughters[0]->GetPDGMass(); daughtermass[1] = daughters[1]->GetPDGMass(); - G4double sumofdaughtermass = daughtermass[0] + daughtermass[1]; +// G4double sumofdaughtermass = daughtermass[0] + daughtermass[1]; //create parent G4DynamicParticle at rest G4ParticleMomentum dummy; diff --git a/source/processes/hadronic/models/generator/util/src/G4KineticTrack.cc b/source/processes/hadronic/models/generator/util/src/G4KineticTrack.cc index 353d02e0b0..82109dcf3a 100644 --- a/source/processes/hadronic/models/generator/util/src/G4KineticTrack.cc +++ b/source/processes/hadronic/models/generator/util/src/G4KineticTrack.cc @@ -14,17 +14,13 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KineticTrack.cc,v 1.10.6.2 2001/06/28 20:20:03 gunter Exp $ -// GEANT4 tag $Name: $ -// -// $Id: G4KineticTrack.cc,v 1.0 1998/05/20 // ----------------------------------------------------------------------------- // GEANT 4 class implementation file // @@ -46,12 +42,18 @@ #include "G4GeneralPhaseSpaceDecay.hh" #include "G4DecayProducts.hh" #include "G4LorentzRotation.hh" +#include "G4SampleResonance.hh" +#include "G4Integrator.hh" +#include "G4KaonZero.hh" +#include "G4KaonZeroShort.hh" +#include "G4KaonZeroLong.hh" +#include "G4AntiKaonZero.hh" // // Some static clobal for integration // -static G4double G4KineticTrack_Gmass, G4KineticTrack_Gmass1, G4KineticTrack_Gmass2,G4KineticTrack_Ggamma1,G4KineticTrack_Ggamma2,G4KineticTrack_xmass1; +static G4double G4KineticTrack_Gmass, G4KineticTrack_xmass1; // // Default constructor @@ -124,11 +126,23 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, G4double aFormationTime, G4ThreeVector aPosition, G4LorentzVector& a4Momentum) : - theDefinition(aDefinition), theFormationTime(aFormationTime), thePosition(aPosition), the4Momentum(a4Momentum) { + theDefinition = aDefinition; + if(G4KaonZero::KaonZero() == theDefinition || + G4AntiKaonZero::AntiKaonZero() == theDefinition) + { + if(G4UniformRand()<0.5) + { + theDefinition = G4KaonZeroShort::KaonZeroShort(); + } + else + { + theDefinition = G4KaonZeroLong::KaonZeroLong(); + } + } // // Initialize the InitialCoordinates 4vector // @@ -172,12 +186,12 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, // cout << " ****CONSTR*** ActualMass ******* " << theActualMass << G4endl; G4int index; for (index = nChannels - 1; index >= 0; index--) - { + { G4VDecayChannel* theChannel = theDecayTable->GetDecayChannel(index); G4int nDaughters = theChannel->GetNumberOfDaughters(); G4double theMotherWidth; - if (nDaughters == 2) - { + if (nDaughters == 2 || nDaughters == 3) + { G4double thePoleMass = theDefinition->GetPDGMass(); theMotherWidth = theDefinition->GetPDGWidth(); G4double thePoleWidth = theChannel->GetBR()*theMotherWidth; @@ -187,161 +201,183 @@ G4KineticTrack::G4KineticTrack(G4ParticleDefinition* aDefinition, theDaughterIsShortLived = new G4bool[nDaughters]; G4int n; for (n = 0; n < nDaughters; n++) - { + { aDaughter = theChannel->GetDaughter(n); theDaughterMass[n] = aDaughter->GetPDGMass(); theDaughterWidth[n] = aDaughter->GetPDGWidth(); theDaughterIsShortLived[n] = aDaughter->IsShortLived(); - } - + } + // // Check whether both the decay products are stable // G4double theActualMom = 0.0; G4double thePoleMom = 0.0; - - if ( !theDaughterIsShortLived[0] && !theDaughterIsShortLived[1] ) - { - - // G4cout << G4endl << "Both the " << nDaughters << - // " decay products are stable!"; - // cout << " LB: Both decay products STABLE !" << G4endl; - // cout << " parent: " << theChannel->GetParentName() << G4endl; - // cout << " particle1: " << theChannel->GetDaughterName(0) << G4endl; - // cout << " particle2: " << theChannel->GetDaughterName(1) << G4endl; - - theActualMom = EvaluateCMMomentum(theActualMass, - theDaughterMass); - thePoleMom = EvaluateCMMomentum(thePoleMass, - theDaughterMass); - // cout << G4endl; - // cout << " LB: ActualMass/DaughterMass " << theActualMass << " " << theDaughterMass << G4endl; - // cout << " LB: ActualMom " << theActualMom << G4endl; - // cout << " LB: PoleMom " << thePoleMom << G4endl; - // cout << G4endl; - } - else if ( !theDaughterIsShortLived[0] && theDaughterIsShortLived[1] ) - { - - // G4cout << G4endl << "Only the first of the " << nDaughters <<" decay products is stable!"; - // cout << " LB: only the first decay product is STABLE !" << G4endl; - // cout << " parent: " << theChannel->GetParentName() << G4endl; - // cout << " particle1: " << theChannel->GetDaughterName(0) << G4endl; - // cout << " particle2: " << theChannel->GetDaughterName(1) << G4endl; - + G4SampleResonance aSampler; + if (nDaughters==2) + { + if ( !theDaughterIsShortLived[0] && !theDaughterIsShortLived[1] ) + { + + // G4cout << G4endl << "Both the " << nDaughters << + // " decay products are stable!"; + // cout << " LB: Both decay products STABLE !" << G4endl; + // cout << " parent: " << theChannel->GetParentName() << G4endl; + // cout << " particle1: " << theChannel->GetDaughterName(0) << G4endl; + // cout << " particle2: " << theChannel->GetDaughterName(1) << G4endl; + + theActualMom = EvaluateCMMomentum(theActualMass, + theDaughterMass); + thePoleMom = EvaluateCMMomentum(thePoleMass, + theDaughterMass); + // cout << G4endl; + // cout << " LB: ActualMass/DaughterMass " << theActualMass << " " << theDaughterMass << G4endl; + // cout << " LB: ActualMom " << theActualMom << G4endl; + // cout << " LB: PoleMom " << thePoleMom << G4endl; + // cout << G4endl; + } + else if ( !theDaughterIsShortLived[0] && theDaughterIsShortLived[1] ) + { + + // G4cout << G4endl << "Only the first of the " << nDaughters <<" decay products is stable!"; + // cout << " LB: only the first decay product is STABLE !" << G4endl; + // cout << " parent: " << theChannel->GetParentName() << G4endl; + // cout << " particle1: " << theChannel->GetDaughterName(0) << G4endl; + // cout << " particle2: " << theChannel->GetDaughterName(1) << G4endl; + // global variable definition - G4KineticTrack_Gmass = theActualMass; - G4KineticTrack_Gmass1 = theDaughterMass[0]; - G4KineticTrack_Gmass2 = theDaughterMass[1]; - G4KineticTrack_Ggamma2 = theDaughterWidth[1]; - theActualMom = IntegrateCMMomentum(); - - G4KineticTrack_Gmass = thePoleMass; - thePoleMom = IntegrateCMMomentum(thePoleMass); - // cout << " LB Parent Mass = " << G4KineticTrack_Gmass << G4endl; - // cout << " LB Actual Mass = " << theActualMass << G4endl; - // cout << " LB Daughter1 Mass = " << G4KineticTrack_Gmass1 << G4endl; - // cout << " LB Daughter2 Mass = " << G4KineticTrack_Gmass2 << G4endl; - // cout << " The Actual Momentum = " << theActualMom << G4endl; - // cout << " The Pole Momentum = " << thePoleMom << G4endl; - // cout << G4endl; - - } - else if ( theDaughterIsShortLived[0] && !theDaughterIsShortLived[1] ) - { - -// G4cout << G4endl << "Only the second of the " << nDaughters << - // " decay products is stable!"; - // cout << " LB: only the second decay product is STABLE !" << G4endl; - // cout << " parent: " << theChannel->GetParentName() << G4endl; - // cout << " particle1: " << theChannel->GetDaughterName(0) << G4endl; - // cout << " particle2: " << theChannel->GetDaughterName(1) << G4endl; - + G4double lowerLimit = aSampler.GetMinimumMass(theChannel->GetDaughter(1)); + theActualMom = IntegrateCMMomentum(lowerLimit); + thePoleMom = IntegrateCMMomentum(lowerLimit, thePoleMass); + // cout << " LB Parent Mass = " << G4KineticTrack_Gmass << G4endl; + // cout << " LB Actual Mass = " << theActualMass << G4endl; + // cout << " LB Daughter1 Mass = " << G4KineticTrack_Gmass1 << G4endl; + // cout << " LB Daughter2 Mass = " << G4KineticTrack_Gmass2 << G4endl; + // cout << " The Actual Momentum = " << theActualMom << G4endl; + // cout << " The Pole Momentum = " << thePoleMom << G4endl; + // cout << G4endl; + + } + else if ( theDaughterIsShortLived[0] && !theDaughterIsShortLived[1] ) + { + + // G4cout << G4endl << "Only the second of the " << nDaughters << + // " decay products is stable!"; + // cout << " LB: only the second decay product is STABLE !" << G4endl; + // cout << " parent: " << theChannel->GetParentName() << G4endl; + // cout << " particle1: " << theChannel->GetDaughterName(0) << G4endl; + // cout << " particle2: " << theChannel->GetDaughterName(1) << G4endl; + // // Swap the content of the theDaughterMass and theDaughterWidth arrays!!! // - - G4SwapObj(theDaughterMass, theDaughterMass + 1); - G4SwapObj(theDaughterWidth, theDaughterWidth + 1); - + + G4SwapObj(theDaughterMass, theDaughterMass + 1); + G4SwapObj(theDaughterWidth, theDaughterWidth + 1); + // global variable definition - G4KineticTrack_Gmass = theActualMass; - G4KineticTrack_Gmass1 = theDaughterMass[0]; - G4KineticTrack_Gmass2 = theDaughterMass[1]; - G4KineticTrack_Ggamma2 = theDaughterWidth[1]; - theActualMom = IntegrateCMMomentum(); - - G4KineticTrack_Gmass = thePoleMass; - thePoleMom = IntegrateCMMomentum(thePoleMass); - // cout << " LB Parent Mass = " << G4KineticTrack_Gmass << G4endl; - // cout << " LB Actual Mass = " << theActualMass << G4endl; - // cout << " LB Daughter1 Mass = " << G4KineticTrack_Gmass1 << G4endl; - // cout << " LB Daughter2 Mass = " << G4KineticTrack_Gmass2 << G4endl; - // cout << " The Actual Momentum = " << theActualMom << G4endl; - // cout << " The Pole Momentum = " << thePoleMom << G4endl; - // cout << G4endl; - - } - else if ( theDaughterIsShortLived[0] && theDaughterIsShortLived[1] ) - { - + G4double lowerLimit = aSampler.GetMinimumMass(theChannel->GetDaughter(0)); + theActualMom = IntegrateCMMomentum(lowerLimit); + thePoleMom = IntegrateCMMomentum(lowerLimit, thePoleMass); + // cout << " LB Parent Mass = " << G4KineticTrack_Gmass << G4endl; + // cout << " LB Actual Mass = " << theActualMass << G4endl; + // cout << " LB Daughter1 Mass = " << G4KineticTrack_Gmass1 << G4endl; + // cout << " LB Daughter2 Mass = " << G4KineticTrack_Gmass2 << G4endl; + // cout << " The Actual Momentum = " << theActualMom << G4endl; + // cout << " The Pole Momentum = " << thePoleMom << G4endl; + // cout << G4endl; + + } + else if ( theDaughterIsShortLived[0] && theDaughterIsShortLived[1] ) + { + // G4cout << G4endl << "Both the " << nDaughters << // " decay products are resonances!"; - // cout << " LB: both decay products are RESONANCES !" << G4endl; - // cout << " parent: " << theChannel->GetParentName() << G4endl; - // cout << " particle1: " << theChannel->GetDaughterName(0) << G4endl; - // cout << " particle2: " << theChannel->GetDaughterName(1) << G4endl; - + // cout << " LB: both decay products are RESONANCES !" << G4endl; + // cout << " parent: " << theChannel->GetParentName() << G4endl; + // cout << " particle1: " << theChannel->GetDaughterName(0) << G4endl; + // cout << " particle2: " << theChannel->GetDaughterName(1) << G4endl; + // global variable definition - G4KineticTrack_Gmass = theActualMass; - G4KineticTrack_Gmass1 = theDaughterMass[0]; - G4KineticTrack_Ggamma1 = theDaughterWidth[0]; - G4KineticTrack_Gmass2 = theDaughterMass[1]; - G4KineticTrack_Ggamma2 = theDaughterWidth[1]; - theActualMom = IntegrateCMMomentum2(); - - G4KineticTrack_Gmass = thePoleMass; - thePoleMom = IntegrateCMMomentum2(); - // cout << " LB Parent Mass = " << G4KineticTrack_Gmass << G4endl; - // cout << " LB Daughter1 Mass = " << G4KineticTrack_Gmass1 << G4endl; - // cout << " LB Daughter2 Mass = " << G4KineticTrack_Gmass2 << G4endl; - // cout << " The Actual Momentum = " << theActualMom << G4endl; - // cout << " The Pole Momentum = " << thePoleMom << G4endl; - // cout << G4endl; - - } - - G4double theMassRatio = thePoleMass / theActualMass; + G4KineticTrack_Gmass = theActualMass; + theActualMom = IntegrateCMMomentum2(); + G4KineticTrack_Gmass = thePoleMass; + thePoleMom = IntegrateCMMomentum2(); + // cout << " LB Parent Mass = " << G4KineticTrack_Gmass << G4endl; + // cout << " LB Daughter1 Mass = " << G4KineticTrack_Gmass1 << G4endl; + // cout << " LB Daughter2 Mass = " << G4KineticTrack_Gmass2 << G4endl; + // cout << " The Actual Momentum = " << theActualMom << G4endl; + // cout << " The Pole Momentum = " << thePoleMom << G4endl; + // cout << G4endl; + + } + } + else // (nDaughter==3) + { + + int nShortLived = 0; + if ( theDaughterIsShortLived[0] ) + { + nShortLived++; + } + if ( theDaughterIsShortLived[1] ) + { + nShortLived++; + G4SwapObj(theDaughterMass, theDaughterMass + 1); + G4SwapObj(theDaughterWidth, theDaughterWidth + 1); + } + if ( theDaughterIsShortLived[2] ) + { + nShortLived++; + G4SwapObj(theDaughterMass, theDaughterMass + 2); + G4SwapObj(theDaughterWidth, theDaughterWidth + 2); + } + if ( nShortLived == 0 ) + { + theDaughterMass[1]+=theDaughterMass[2]; + theActualMom = EvaluateCMMomentum(theActualMass, + theDaughterMass); + thePoleMom = EvaluateCMMomentum(thePoleMass, + theDaughterMass); + } +// else if ( nShortLived == 1 ) + else if ( nShortLived >= 1 ) + { + // need the shortlived particle in slot 1! (very bad style...) + G4SwapObj(theDaughterMass, theDaughterMass + 1); + G4SwapObj(theDaughterWidth, theDaughterWidth + 1); + theDaughterMass[0] += theDaughterMass[2]; + theActualMom = IntegrateCMMomentum(0.0); + thePoleMom = IntegrateCMMomentum(0.0, thePoleMass); + } +// else +// { +// G4Exception ("can't handle more than one shortlived in 3 particle output channel"); +// } + + } + + G4double l=0; // needs to be generalized + G4double theMassRatio = thePoleMass / theActualMass; G4double theMomRatio = theActualMom / thePoleMom; - G4int l = 0; /* code has to be made more general */ - -// -// Evaluate tha "actual widths" -// - theActualWidth[index] = thePoleWidth * theMassRatio * pow(theMomRatio, (2 * l + 1)) * (1.2 / (1+ 0.2*pow(theMomRatio, (2 * l)))); - - // cout << " LB The Mass Ratio = " << theMassRatio << G4endl; - // cout << " LB The Mom. Ratio = " << theMomRatio << G4endl; - // cout << " LB The Pole Width = " << thePoleWidth << G4endl; - // cout << " LB The Actual Width = " << theActualWidth[index] << "index: " << index << G4endl; - delete [] theDaughterMass; theDaughterMass = 0; delete [] theDaughterWidth; theDaughterWidth = 0; delete [] theDaughterIsShortLived; theDaughterIsShortLived = 0; - } - else - { - theMotherWidth = theDefinition->GetPDGWidth(); - theActualWidth[index] = theChannel->GetBR()*theMotherWidth; - } - } + } + + else // nDaughter = 1 ( e.g. K0 decays 50% to Kshort, 50% Klong + { + theMotherWidth = theDefinition->GetPDGWidth(); + theActualWidth[index] = theChannel->GetBR()*theMotherWidth; + } + } //////////////// // DEBUG // @@ -505,7 +541,7 @@ G4KineticTrackVector* G4KineticTrack::Decay() theDynamicParticle = theDecayProducts->PopProducts(); theDefinition = theDynamicParticle->GetDefinition(); the4Momentum = toMoving*theDynamicParticle->Get4Momentum(); - theDecayProductList->insert(new G4KineticTrack (theDefinition, + theDecayProductList->push_back(new G4KineticTrack (theDefinition, theFormationTime, thePosition, the4Momentum)); @@ -521,135 +557,106 @@ G4KineticTrackVector* G4KineticTrack::Decay() } } -G4double G4KineticTrack_IntegrandFunction1(G4double xmass) +G4double G4KineticTrack::IntegrandFunction1(G4double xmass) const { - // G4double mass = theActualMass; /* the actual mass value */ - G4double mass = G4KineticTrack_Gmass; /* the actual mass value */ - // G4double mass1 = theDaughterMass[0]; - G4double mass1 = G4KineticTrack_Gmass1; - // G4double mass2 = theDaughterMass[1]; - G4double mass2 = G4KineticTrack_Gmass2; - // G4double gamma2 = theDaughterWidth[1]; - G4double gamma2 = G4KineticTrack_Ggamma2; - G4KineticTrack wei; - G4double result = (1. / (2 * mass)) * - sqrt(((mass * mass) - (mass1 + xmass) * (mass1 + xmass)) * - ((mass * mass) - (mass1 - xmass) * (mass1 - xmass))) * - wei.BrWig(gamma2, mass2, xmass); + G4double mass = theActualMass; /* the actual mass value */ + G4double mass1 = theDaughterMass[0]; + G4double mass2 = theDaughterMass[1]; + G4double gamma2 = theDaughterWidth[1]; + + G4double result = (1. / (2 * mass)) * + sqrt(G4std::max((((mass * mass) - (mass1 + xmass) * (mass1 + xmass)) * + ((mass * mass) - (mass1 - xmass) * (mass1 - xmass))),0.0)) * + BrWig(gamma2, mass2, xmass); + return result; +} + +G4double G4KineticTrack::IntegrandFunction2(G4double xmass) const +{ + G4double mass = theDefinition->GetPDGMass(); /* the pole mass value */ + G4double mass1 = theDaughterMass[0]; + G4double mass2 = theDaughterMass[1]; + G4double gamma2 = theDaughterWidth[1]; + G4double result = (1. / (2 * mass)) * + sqrt(G4std::max((((mass * mass) - (mass1 + xmass) * (mass1 + xmass)) * + ((mass * mass) - (mass1 - xmass) * (mass1 - xmass))),0.0)) * + BrWig(gamma2, mass2, xmass); return result; } -G4double G4KineticTrack_IntegrandFunction2(G4double xmass) +G4double G4KineticTrack::IntegrandFunction3(G4double xmass) const { - // G4double mass = theDefinition->GetPDGMass(); /* the pole mass value */ - G4double mass = G4KineticTrack_Gmass; /* the actual mass value */ - // G4double mass1 = theDaughterMass[0]; - G4double mass1 = G4KineticTrack_Gmass1; - // G4double mass2 = theDaughterMass[1]; - G4double mass2 = G4KineticTrack_Gmass2; - // G4double gamma2 = theDaughterWidth[1]; - G4double gamma2 = G4KineticTrack_Ggamma2; - G4KineticTrack wei; - G4double result = (1. / (2 * mass)) * - sqrt(((mass * mass) - (mass1 + xmass) * (mass1 + xmass)) * - ((mass * mass) - (mass1 - xmass) * (mass1 - xmass))) * - wei.BrWig(gamma2, mass2, xmass); - return result; + const G4double mass = G4KineticTrack_Gmass; /* the actual mass value */ +// const G4double mass1 = theDaughterMass[0]; + const G4double mass2 = theDaughterMass[1]; + const G4double gamma2 = theDaughterWidth[1]; + + const G4double result = (1. / (2 * mass)) * + sqrt(((mass * mass) - (G4KineticTrack_xmass1 + xmass) * (G4KineticTrack_xmass1 + xmass)) * + ((mass * mass) - (G4KineticTrack_xmass1 - xmass) * (G4KineticTrack_xmass1 - xmass))) * + BrWig(gamma2, mass2, xmass); + return result; } -G4double G4KineticTrack_IntegrandFunction3(G4double xmass) +G4double G4KineticTrack::IntegrandFunction4(G4double xmass) const { - G4double mass = G4KineticTrack_Gmass; /* the actual mass value */ - G4double mass1 = G4KineticTrack_Gmass1; - G4double gamma1 = G4KineticTrack_Ggamma1; - G4double mass2 = G4KineticTrack_Gmass2; - G4double gamma2 = G4KineticTrack_Ggamma2; - G4KineticTrack wei; - G4double result = (1. / (2 * mass)) * - sqrt(((mass * mass) - (G4KineticTrack_xmass1 + xmass) * (G4KineticTrack_xmass1 + xmass)) * - ((mass * mass) - (G4KineticTrack_xmass1 - xmass) * (G4KineticTrack_xmass1 - xmass))) * - wei.BrWig(gamma2, mass2, xmass); - return result; + const G4double mass = G4KineticTrack_Gmass; + const G4double mass1 = theDaughterMass[0]; + const G4double gamma1 = theDaughterWidth[0]; +// const G4double mass2 = theDaughterMass[1]; + + G4KineticTrack_xmass1 = xmass; + + const G4double theLowerLimit = 0.0; + const G4double theUpperLimit = mass - xmass; + const G4int nIterations = 100; + + G4Integrator integral; + G4double result = BrWig(gamma1, mass1, xmass)* + integral.Simpson(this, &G4KineticTrack::IntegrandFunction3, theLowerLimit, theUpperLimit, nIterations); + + return result; } -G4double G4KineticTrack_IntegrandFunction4(G4double xmass) +G4double G4KineticTrack::IntegrateCMMomentum(const G4double theLowerLimit) const { - G4double mass = G4KineticTrack_Gmass; - G4double mass1 = G4KineticTrack_Gmass1; - G4double gamma1 = G4KineticTrack_Ggamma1; - G4double mass2 = G4KineticTrack_Gmass2; - G4double gamma2 = G4KineticTrack_Ggamma2; - G4KineticTrack wei; - G4double G4KineticTrack_xmass1=xmass; - G4double theLowerLimit = 0.0; - G4double theUpperLimit = mass - xmass; - G4int nIterations = 100; - G4SimpleIntegration theIntegrandMomentum(&G4KineticTrack_IntegrandFunction3); - G4double result = wei.BrWig(gamma1, mass1, xmass)* - theIntegrandMomentum.Simpson(theLowerLimit, - theUpperLimit, - nIterations); - return result; + const G4double theUpperLimit = theActualMass - theDaughterMass[0]; + const G4int nIterations = 100; + + if (theLowerLimit>=theUpperLimit) return 0.0; + + G4Integrator integral; + G4double theIntegralOverMass2 = integral.Simpson(this, &G4KineticTrack::IntegrandFunction1, + theLowerLimit, theUpperLimit, nIterations); + return theIntegralOverMass2; } -G4double G4KineticTrack::IntegrateCMMomentum() const +G4double G4KineticTrack::IntegrateCMMomentum(const G4double theLowerLimit, const G4double poleMass) const { - G4double theLowerLimit = 0.0; - G4double theUpperLimit = theActualMass - theDaughterMass[0]; - G4int nIterations = 100; - G4SimpleIntegration theIntegrandMomentum(&G4KineticTrack_IntegrandFunction1); - G4double theIntegralOverMass2; - if(theUpperLimit>0.) - theIntegralOverMass2 = theIntegrandMomentum.Simpson(theLowerLimit, - theUpperLimit, - nIterations); - else - theIntegralOverMass2 = 0.; + const G4double theUpperLimit = poleMass - theDaughterMass[0]; + const G4int nIterations = 100; + + if (theLowerLimit>=theUpperLimit) return 0.0; - // G4cout << G4endl << "Inside IntegrateCMMomentum (actual mass case): "; - // G4cout << G4endl << " Integration result = " << theIntegralOverMass2 << G4endl ; - return theIntegralOverMass2; + G4Integrator integral; + const G4double theIntegralOverMass2 = integral.Simpson(this, &G4KineticTrack::IntegrandFunction2, + theLowerLimit, theUpperLimit, nIterations); + return theIntegralOverMass2; } -G4double G4KineticTrack::IntegrateCMMomentum(const G4double polemass) const -{ - G4double theLowerLimit = 0.0; - G4double theUpperLimit = polemass - theDaughterMass[0]; - G4int nIterations = 100; - G4SimpleIntegration theIntegrandMomentum(&G4KineticTrack_IntegrandFunction1); - G4double theIntegralOverMass2; - if(theUpperLimit>0.) - theIntegralOverMass2 = theIntegrandMomentum.Simpson(theLowerLimit, - theUpperLimit, - nIterations); - else - theIntegralOverMass2 = 0.; - - // G4cout << G4endl << "Inside IntegrateCMMomentum (pole mass case): "; - // G4cout << G4endl << " Integration result = " << theIntegralOverMass2 << G4endl; - // G4cout << G4endl << " Lower / upper limit " << theLowerLimit << " / " << theUpperLimit << G4endl; - - return theIntegralOverMass2; -} G4double G4KineticTrack::IntegrateCMMomentum2() const { - G4double theLowerLimit = 0.0; - G4double theUpperLimit = theActualMass; - G4int nIterations = 100; - G4SimpleIntegration theIntegrandMomentum(&G4KineticTrack_IntegrandFunction4); - G4double theIntegralOverMass2; - if(theUpperLimit>0.) - theIntegralOverMass2 = theIntegrandMomentum.Simpson(theLowerLimit, - theUpperLimit, - nIterations); - else - theIntegralOverMass2 = 0.; - - // G4cout << G4endl << "Inside IntegrateCMMomentum 2: "; - // G4cout << G4endl << " Integration result = " << theIntegralOverMass2 << G4endl; - - return theIntegralOverMass2; + const G4double theLowerLimit = 0.0; + const G4double theUpperLimit = theActualMass; + const G4int nIterations = 100; + + if (theLowerLimit>=theUpperLimit) return 0.0; + + G4Integrator integral; + G4double theIntegralOverMass2 = integral.Simpson(this, &G4KineticTrack::IntegrandFunction4, + theLowerLimit, theUpperLimit, nIterations); + return theIntegralOverMass2; } diff --git a/source/processes/hadronic/models/generator/util/src/G4KineticTrackVector.cc b/source/processes/hadronic/models/generator/util/src/G4KineticTrackVector.cc index 44c8c564ed..f30014c9e0 100644 --- a/source/processes/hadronic/models/generator/util/src/G4KineticTrackVector.cc +++ b/source/processes/hadronic/models/generator/util/src/G4KineticTrackVector.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -23,8 +23,8 @@ #include "G4KineticTrackVector.hh" G4KineticTrackVector::G4KineticTrackVector() - { - } +{ +} //**************************************************************************************************************** @@ -33,9 +33,9 @@ G4KineticTrackVector::G4KineticTrackVector() void G4KineticTrackVector::BoostBeam(G4ThreeVector& BeamMom) { - for(G4int c1 = 0; c1 < length(); c1++) + for(unsigned int c1 = 0; c1 < size(); c1++) { - G4KineticTrack& KT =*at(c1); + G4KineticTrack& KT =**(begin()+c1); G4LorentzVector Mom = KT.Get4Momentum(); G4ThreeVector Velocity = (1/sqrt(BeamMom.mag2() + sqr(KT.GetDefinition()->GetPDGMass())))*BeamMom; Mom.boost(Velocity); @@ -46,9 +46,9 @@ void G4KineticTrackVector::BoostBeam(G4ThreeVector& BeamMom) void G4KineticTrackVector::Boost(G4ThreeVector& Velocity) { - for(G4int c1 = 0; c1 < length(); c1++) + for(unsigned int c1 = 0; c1 < size(); c1++) { - G4KineticTrack& KT =*at(c1); + G4KineticTrack& KT =**(begin()+c1); G4LorentzVector Mom = KT.Get4Momentum(); Mom.boost(Velocity); KT.Set4Momentum(Mom); @@ -59,9 +59,9 @@ void G4KineticTrackVector::Boost(G4ThreeVector& Velocity) void G4KineticTrackVector::Shift(G4ThreeVector& Pos) { - for(G4int c1 = 0; c1 < length(); c1++) + for(unsigned int c1 = 0; c1 < size(); c1++) { - G4KineticTrack& KT =*at(c1); + G4KineticTrack& KT =**(begin()+c1); KT.SetPosition(KT.GetPosition() + Pos); } } diff --git a/source/processes/hadronic/models/generator/util/src/G4NuclearFermiDensity.cc b/source/processes/hadronic/models/generator/util/src/G4NuclearFermiDensity.cc index fe6b02b589..1e8889bb42 100644 --- a/source/processes/hadronic/models/generator/util/src/G4NuclearFermiDensity.cc +++ b/source/processes/hadronic/models/generator/util/src/G4NuclearFermiDensity.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NuclearFermiDensity.cc,v 1.6.8.1 2001/06/28 19:13:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NuclearFermiDensity.cc,v 1.8 2001/08/01 17:09:30 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4NuclearFermiDensity.hh" diff --git a/source/processes/hadronic/models/generator/util/src/G4NuclearShellModelDensity.cc b/source/processes/hadronic/models/generator/util/src/G4NuclearShellModelDensity.cc index 518bfc2f53..b02928833f 100644 --- a/source/processes/hadronic/models/generator/util/src/G4NuclearShellModelDensity.cc +++ b/source/processes/hadronic/models/generator/util/src/G4NuclearShellModelDensity.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NuclearShellModelDensity.cc,v 1.4.8.1 2001/06/28 19:13:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NuclearShellModelDensity.cc,v 1.6 2001/08/01 17:09:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4NuclearShellModelDensity.hh" diff --git a/source/processes/hadronic/models/generator/util/src/G4Nucleon.cc b/source/processes/hadronic/models/generator/util/src/G4Nucleon.cc index 0e188e5c94..0a10222baf 100644 --- a/source/processes/hadronic/models/generator/util/src/G4Nucleon.cc +++ b/source/processes/hadronic/models/generator/util/src/G4Nucleon.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Nucleon.cc,v 1.3.8.2 2001/06/28 20:20:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Nucleon.cc,v 1.5 2001/08/01 17:09:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4Nucleon.hh" diff --git a/source/processes/hadronic/models/generator/util/src/G4Parton.cc b/source/processes/hadronic/models/generator/util/src/G4Parton.cc index d6e8a36104..a1a61075d5 100644 --- a/source/processes/hadronic/models/generator/util/src/G4Parton.cc +++ b/source/processes/hadronic/models/generator/util/src/G4Parton.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4Parton.cc,v 1.7.8.2 2001/06/28 20:20:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Parton.cc,v 1.12 2001/11/15 14:10:48 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file @@ -38,15 +38,66 @@ G4Parton::G4Parton(G4int PDGcode) { PDGencoding=PDGcode; theX = 0; - theDefinition=G4ParticleTable::GetParticleTable()->FindParticle(PDGencoding);; + theDefinition=G4ParticleTable::GetParticleTable()->FindParticle(PDGencoding); if (theDefinition == NULL) { G4cout << "Encoding = "<GetParticleType() == "quarks") { + theColour = ((G4int)(3.*G4UniformRand())+1)*(abs(PDGencoding)/PDGencoding) ; + } + // + // colour by random in (-1,-2,-3)=(Rbar,Gbar,Bbar)=(GB,RB,RG) for di-quarks and + // in (1,2,3)=(R,G,B)=(GB,RB,RG) for anti-di-quarks: + // + else if (theDefinition->GetParticleType() == "diquarks") { + theColour = -((G4int)(3.*G4UniformRand())+1)*(abs(PDGencoding)/PDGencoding); + } + // + // colour by random in (-11,-12,...,-33)=(RRbar,RGbar,RBbar,...,BBbar) for gluons: + // + else if (theDefinition->GetParticleType() == "gluons") { + theColour = -(((G4int)(3.*G4UniformRand())+1)*10 + ((G4int)(3.*G4UniformRand())+1)); + } + else { + G4cout << "Encoding = "<GetParticleType() == "quarks") || (theDefinition->GetParticleType() == "diquarks")){ + theIsoSpinZ = theDefinition->GetPDGIsospin3(); + } + // + // isospin-z choosen at random from PDG-encoded isospin for gluons (should be zero): + // + else { + G4int thisPDGiIsospin=theDefinition->GetPDGiIsospin(); + if (thisPDGiIsospin == 0) { + theIsoSpinZ = 0; + } + else { + theIsoSpinZ = ((G4int)((thisPDGiIsospin+1)*G4UniformRand()))-thisPDGiIsospin*0.5; + } + } + // + // spin-z choosen at random from PDG-encoded spin: + // + G4int thisPDGiSpin=theDefinition->GetPDGiSpin(); + if (thisPDGiSpin == 0) { + theSpinZ = 0; + } + else { + G4int rand=((G4int)((thisPDGiSpin+1)*G4UniformRand())); + theSpinZ = rand-thisPDGiSpin*0.5;; + } } G4Parton::G4Parton(const G4Parton &right) @@ -76,7 +127,10 @@ const G4Parton & G4Parton::operator=(const G4Parton &right) } G4Parton::~G4Parton() -{} +{ +// cout << "G4Parton::~G4Parton(): this = "<IsShortLived() ) + { + minMassMapIterator i = minMassCache.find(p); + if ( i!=minMassCache.end() ) + { + minResonanceMass = (*i).second; + } + else + { + // G4cout << "--> request for " << p->GetParticleName() << G4endl; + + const G4DecayTable* theDecays = const_cast(p)->GetDecayTable(); + const G4int nDecays = theDecays->entries(); + + for (G4int i=0; iGetDecayChannel(i); + const G4int nDaughters = aDecay->GetNumberOfDaughters(); + + G4double minChannelMass = 0; + + for (G4int j=0; j(aDecay)->GetDaughter(j); + G4double minMass = GetMinimumMass(aDaughter); + if (!minMass) minMass = DBL_MAX; // exclude gamma channel; + minChannelMass+=minMass; + } + // G4cout << "channel mass for the above is " << minChannelMass/MeV << G4endl; + if (minChannelMass < minResonanceMass) minResonanceMass = minChannelMass; + + } + // replace this as soon as the compiler supports mutable!! + G4SampleResonance* self = const_cast(this); + (self->minMassCache)[p] = minResonanceMass; + + } + } + else + { + + minResonanceMass = p->GetPDGMass(); + + } + // G4cout << "minimal mass for " << p->GetParticleName() << " is " << minResonanceMass/MeV << G4endl; + + return minResonanceMass; +} + + + +G4double G4SampleResonance::SampleMass(const G4ParticleDefinition* p, const G4double maxMass) const +{ + return SampleMass(p->GetPDGMass(), p->GetPDGWidth(), GetMinimumMass(p), maxMass); +} + + +G4double G4SampleResonance::SampleMass(const G4double poleMass, + const G4double gamma, + const G4double minMass, + const G4double maxMass) const +{ + // Chooses a mass randomly between minMass and maxMass + // according to a Breit-Wigner function with constant + // width gamma and pole poleMass + + if ( minMass > maxMass ) + { + G4Exception("SampleResonanceMass: mass range negative (minMass>maxMass)"); + } + + G4double returnMass; + + if ( gamma < DBL_EPSILON ) + { + returnMass = G4std::max(minMass, G4std::min(maxMass, poleMass)); + } + else + { + double fmin = BrWigInt0(minMass, gamma, poleMass); + double fmax = BrWigInt0(maxMass, gamma, poleMass); + double f = fmin + (fmax-fmin)*G4UniformRand(); + returnMass = BrWigInv(f, gamma, poleMass); + } + + return returnMass; +} + + + + diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh index ac7c5f07f8..3d30ace44c 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiKaonZeroInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiKaonZeroInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiKaonZeroInelastic.hh,v 1.8 2001/08/01 17:09:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh index 8c3dcf1da6..85e69b9cf7 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiLambdaInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiLambdaInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiLambdaInelastic.hh,v 1.8 2001/08/01 17:09:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh index c674564ce8..acef2fb542 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiNeutronInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiNeutronInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiNeutronInelastic.hh,v 1.8 2001/08/01 17:09:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh index db56d8b96d..e73847edf0 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiOmegaMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiOmegaMinusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiOmegaMinusInelastic.hh,v 1.8 2001/08/01 17:09:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh index 02faf08026..0f38d0a4e8 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiProtonInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiProtonInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiProtonInelastic.hh,v 1.8 2001/08/01 17:09:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh index 69f95204da..5478178ec7 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiSigmaMinusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiSigmaMinusInelastic.hh,v 1.8 2001/08/01 17:09:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh index 711c635111..941afbe7db 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaPlusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiSigmaPlusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiSigmaPlusInelastic.hh,v 1.8 2001/08/01 17:09:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh index f618eea9d4..c1ace89c0d 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiSigmaZeroInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiSigmaZeroInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiSigmaZeroInelastic.hh,v 1.8 2001/08/01 17:09:37 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh index ea38e9f2f4..d52d1a0f05 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiXiMinusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiXiMinusInelastic.hh,v 1.8 2001/08/01 17:09:38 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh index fe192f4f20..fc50855ef2 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEAntiXiZeroInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiXiZeroInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiXiZeroInelastic.hh,v 1.8 2001/08/01 17:09:38 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh index f28a88b49d..641b7b5bfb 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEInelastic.hh,v 1.8 2001/08/01 17:09:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy (GHE) model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh index 309beb324a..23c9102320 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonMinusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonMinusInelastic.hh,v 1.8 2001/08/01 17:09:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh index e23e5dd136..0a92295893 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonPlusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonPlusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonPlusInelastic.hh,v 1.8 2001/08/01 17:09:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh index 86bd338ed7..7907b00ea7 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonZeroInelastic.hh,v 1.5.4.1 2001/06/28 19:13:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonZeroInelastic.hh,v 1.7 2001/08/01 17:09:40 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh index 0debc19292..b151b9d293 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroLongInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonZeroLongInelastic.hh,v 1.6.4.1 2001/06/28 19:13:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonZeroLongInelastic.hh,v 1.8 2001/08/01 17:09:40 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh index c93bd84d79..daa82d8656 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEKaonZeroShortInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonZeroShortInelastic.hh,v 1.6.4.1 2001/06/28 19:13:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonZeroShortInelastic.hh,v 1.8 2001/08/01 17:09:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh index 7aa33f9dc7..ebafddcbf8 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HELambdaInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HELambdaInelastic.hh,v 1.6.4.1 2001/06/28 19:13:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HELambdaInelastic.hh,v 1.8 2001/08/01 17:09:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh index e80f69529a..33a108154b 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HENeutronInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HENeutronInelastic.hh,v 1.6.4.1 2001/06/28 19:13:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HENeutronInelastic.hh,v 1.8 2001/08/01 17:09:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh index f6d25042dd..ebb32a35c6 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEOmegaMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEOmegaMinusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEOmegaMinusInelastic.hh,v 1.8 2001/08/01 17:09:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh index f441c23dfd..23476116f2 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPionMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEPionMinusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPionMinusInelastic.hh,v 1.8 2001/08/01 17:09:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh index f6d40f1ca1..653d0d642a 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPionPlusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEPionPlusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPionPlusInelastic.hh,v 1.8 2001/08/01 17:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh b/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh index 79457dd9d8..fea742393a 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEPlot.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEPlot.hh,v 1.4.4.1 2001/06/28 19:13:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPlot.hh,v 1.6 2001/08/01 17:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha friend class G4HEPlot -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh index d42921f7ba..d93507b10c 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEProtonInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEProtonInelastic.hh,v 1.6.4.1 2001/06/28 19:13:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEProtonInelastic.hh,v 1.8 2001/08/01 17:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh index f92f72af2f..0002890c02 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HESigmaMinusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HESigmaMinusInelastic.hh,v 1.8 2001/08/01 17:09:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh index 4ab0502163..21372ec8eb 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaPlusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HESigmaPlusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HESigmaPlusInelastic.hh,v 1.8 2001/08/01 17:09:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh index bee2f556d7..6f5aa8721f 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HESigmaZeroInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HESigmaZeroInelastic.hh,v 1.6.4.1 2001/06/28 19:13:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HESigmaZeroInelastic.hh,v 1.8 2001/08/01 17:09:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEVector.hh b/source/processes/hadronic/models/high_energy/include/G4HEVector.hh index 1bfaacc50e..a7870fcd18 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEVector.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEVector.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEVector.hh,v 1.5.4.1 2001/06/28 19:13:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEVector.hh,v 1.7 2001/08/01 17:09:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha friend class G4KinematicParticle -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh index 4b80e3223d..88ef5368f2 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEXiMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEXiMinusInelastic.hh,v 1.6.4.1 2001/06/28 19:13:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEXiMinusInelastic.hh,v 1.8 2001/08/01 17:09:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh b/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh index c9efa45c7e..9d57d7b592 100644 --- a/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh +++ b/source/processes/hadronic/models/high_energy/include/G4HEXiZeroInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEXiZeroInelastic.hh,v 1.6.4.1 2001/06/28 19:13:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEXiZeroInelastic.hh,v 1.8 2001/08/01 17:09:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Gheisha High Energy model class -- header file diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc index 5ff7b64715..608de24369 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiKaonZeroInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiKaonZeroInelastic.cc,v 1.4.4.1 2001/06/28 19:13:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiKaonZeroInelastic.cc,v 1.7 2001/10/05 16:10:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -220,8 +220,8 @@ G4HEAntiKaonZeroInelastic::FirstIntInCasAntiKaonZero( G4bool &inElastic, G4int antiKaonZeroCode = AntiKaonZero.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc index 69d775d5ac..a1f64e3fb2 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiLambdaInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiLambdaInelastic.cc,v 1.4.4.1 2001/06/28 19:13:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiLambdaInelastic.cc,v 1.7 2001/10/05 16:10:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -215,12 +215,12 @@ G4HEAntiLambdaInelastic::FirstIntInCasAntiLambda( G4bool &inElastic, static const G4int numMulAn = 400; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc index 5a3a927cb2..f6a2025b19 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiNeutronInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiNeutronInelastic.cc,v 1.4.4.1 2001/06/28 19:13:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiNeutronInelastic.cc,v 1.7 2001/10/05 16:10:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -219,8 +219,8 @@ void G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc index f133493378..cd2538a40b 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiOmegaMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiOmegaMinusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiOmegaMinusInelastic.cc,v 1.7 2001/10/05 16:10:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -211,12 +211,12 @@ G4HEAntiOmegaMinusInelastic::FirstIntInCasAntiOmegaMinus( G4bool &inElastic, static const G4int numMulAn = 400; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc index 12c9cfefe0..fdeb899b77 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiProtonInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiProtonInelastic.cc,v 1.4.4.1 2001/06/28 19:13:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiProtonInelastic.cc,v 1.7 2001/10/05 16:10:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -219,8 +219,8 @@ G4HEAntiProtonInelastic::FirstIntInCasAntiProton( G4bool &inElastic, G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc index 6540de1161..291ff77938 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiSigmaMinusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiSigmaMinusInelastic.cc,v 1.7 2001/10/05 16:10:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -218,8 +218,8 @@ G4HEAntiSigmaMinusInelastic::FirstIntInCasAntiSigmaMinus( G4bool &inElastic, G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc index 427e9c2c9f..506b9574f4 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaPlusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiSigmaPlusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiSigmaPlusInelastic.cc,v 1.7 2001/10/05 16:10:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -215,12 +215,12 @@ G4HEAntiSigmaPlusInelastic::FirstIntInCasAntiSigmaPlus( G4bool &inElastic, static const G4int numMulAn = 400; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc index 469d6682a3..4b57f27c74 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiSigmaZeroInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiSigmaZeroInelastic.cc,v 1.4.4.1 2001/06/28 19:13:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiSigmaZeroInelastic.cc,v 1.6 2001/08/01 17:09:53 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc index eaad9afd18..537eecaa31 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiXiMinusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiXiMinusInelastic.cc,v 1.7 2001/10/05 16:10:40 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -214,12 +214,12 @@ G4HEAntiXiMinusInelastic::FirstIntInCasAntiXiMinus( G4bool &inElastic, static const G4int numMulAn = 400; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc index c1c5ae0d38..9e99e20eb2 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEAntiXiZeroInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEAntiXiZeroInelastic.cc,v 1.4.4.1 2001/06/28 19:13:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEAntiXiZeroInelastic.cc,v 1.7 2001/10/05 16:10:40 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -215,12 +215,12 @@ G4HEAntiXiZeroInelastic::FirstIntInCasAntiXiZero( G4bool &inElastic, static const G4int numMulAn = 400; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc index ff5d83d97c..99930b862c 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEInelastic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -366,7 +366,6 @@ G4HEInelastic::StrangeParticlePairProduction( G4int antilambdaCode = AntiLambda.getCode(); G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); G4int incidentCode = incidentParticle.getCode(); G4double targetMass = targetParticle.getMass(); @@ -633,14 +632,11 @@ G4HEInelastic::HighEnergyCascading(G4bool &successful, G4String mesonType = PionPlus.getType(); G4String baryonType = Proton.getType(); - G4int targetCode = targetParticle.getCode(); G4double targetMass = targetParticle.getMass(); - G4double targetCharge = targetParticle.getCharge(); G4int incidentCode = incidentParticle.getCode(); G4double incidentMass = incidentParticle.getMass(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); - G4double incidentCharge = incidentParticle.getCharge(); G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentKineticEnergy = incidentParticle.getKineticEnergy(); G4String incidentType = incidentParticle.getType(); @@ -649,7 +645,7 @@ G4HEInelastic::HighEnergyCascading(G4bool &successful, // some local variables - G4int i, j, k, l; + G4int i, j, l; if (verboseLevel > 1) G4cout << " G4HEInelastic::HighEnergyCascading " << G4endl; successful = false; @@ -766,7 +762,7 @@ G4HEInelastic::HighEnergyCascading(G4bool &successful, G4double centerOfMassEnergy = sqrt( sqr(incidentMass)+sqr(targetMass) +2.0*targetMass*incidentEnergy ); - G4double availableEnergy = centerOfMassEnergy - ( targetMass + incidentMass ); +// G4double availableEnergy = centerOfMassEnergy - ( targetMass + incidentMass ); G4double tavai1 = centerOfMassEnergy/2.0 - incidentMass; G4double tavai2 = centerOfMassEnergy/2.0 - targetMass; @@ -1589,7 +1585,7 @@ G4HEInelastic::HighEnergyCascading(G4bool &successful, if( atomicWeight > 1.5 && G4UniformRand() > sprob ) { - G4double ekw, tex, cost, sint, pp, eka, etb; + G4double cost, sint, pp, eka; G4int spall, nbl; // first add protons and neutrons @@ -1798,7 +1794,6 @@ G4HEInelastic::TuningOfHighEnergyCascading( G4HEVector pv[], G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); G4double incidentCharge = incidentParticle.getCharge(); G4double incidentMass = incidentParticle.getMass(); - G4int incidentCode = incidentParticle.getCode(); G4double targetMass = targetParticle.getMass(); G4int pionPlusCode = PionPlus.getCode(); G4int pionMinusCode = PionMinus.getCode(); @@ -2128,28 +2123,18 @@ G4HEInelastic::HighEnergyClusterProduction(G4bool &successful, G4int protonCode = Proton.getCode(); G4double protonMass = Proton.getMass(); G4int neutronCode = Neutron.getCode(); - G4double neutronMass = Neutron.getMass(); G4double kaonPlusMass = KaonPlus.getMass(); - G4int kaonPlusCode = KaonPlus.getCode(); - G4int kaonMinusCode = KaonMinus.getCode(); - G4int kaonZeroSCode = KaonZeroShort.getCode(); - G4int kaonZeroLCode = KaonZeroLong.getCode(); - G4int kaonZeroCode = KaonZero.getCode(); - G4int antiKaonZeroCode = AntiKaonZero.getCode(); G4int pionPlusCode = PionPlus.getCode(); G4int pionZeroCode = PionZero.getCode(); G4int pionMinusCode = PionMinus.getCode(); G4String mesonType = PionPlus.getType(); G4String baryonType = Proton.getType(); - G4int targetCode = targetParticle.getCode(); G4double targetMass = targetParticle.getMass(); - G4double targetCharge = targetParticle.getCharge(); G4int incidentCode = incidentParticle.getCode(); G4double incidentMass = incidentParticle.getMass(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); - G4double incidentCharge = incidentParticle.getCharge(); G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentKineticEnergy = incidentParticle.getKineticEnergy(); G4String incidentType = incidentParticle.getType(); @@ -2158,7 +2143,7 @@ G4HEInelastic::HighEnergyClusterProduction(G4bool &successful, // some local variables - G4int i, j, k, l; + G4int i, j; if(verboseLevel > 1) G4cout << " G4HEInelastic::HighEnergyClusterProduction " << G4endl; @@ -2267,7 +2252,6 @@ G4HEInelastic::HighEnergyClusterProduction(G4bool &successful, xpnhmf *= xhmf/rpnhmf; } npnhmf = Poisson( xpnhmf ); - G4int ntarg = nshhmf + npnhmf; while (npnhmf > 0) { @@ -2826,7 +2810,7 @@ G4HEInelastic::HighEnergyClusterProduction(G4bool &successful, if( atomicWeight > 1.5 && G4UniformRand() > sprob) { - G4double ekw, tex, cost, sint, ekin2, ran, pp, eka; + G4double cost, sint, ekin2, ran, pp, eka; G4int spall, nbl; // first add protons and neutrons @@ -3019,7 +3003,6 @@ G4HEInelastic::MediumEnergyCascading(G4bool &successful, G4int protonCode = Proton.getCode(); G4double protonMass = Proton.getMass(); G4int neutronCode = Neutron.getCode(); - G4double neutronMass = Neutron.getMass(); G4double kaonPlusMass = KaonPlus.getMass(); G4int kaonPlusCode = KaonPlus.getCode(); G4int kaonMinusCode = KaonMinus.getCode(); @@ -3033,14 +3016,11 @@ G4HEInelastic::MediumEnergyCascading(G4bool &successful, G4String mesonType = PionPlus.getType(); G4String baryonType = Proton.getType(); - G4int targetCode = targetParticle.getCode(); G4double targetMass = targetParticle.getMass(); - G4double targetCharge = targetParticle.getCharge(); G4int incidentCode = incidentParticle.getCode(); G4double incidentMass = incidentParticle.getMass(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); - G4double incidentCharge = incidentParticle.getCharge(); G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentKineticEnergy = incidentParticle.getKineticEnergy(); G4String incidentType = incidentParticle.getType(); @@ -3049,7 +3029,7 @@ G4HEInelastic::MediumEnergyCascading(G4bool &successful, // some local variables - G4int i, j, k, l; + G4int i, j, l; if(verboseLevel > 1) G4cout << " G4HEInelastic::MediumEnergyCascading " << G4endl; @@ -3164,7 +3144,7 @@ G4HEInelastic::MediumEnergyCascading(G4bool &successful, G4double centerOfMassEnergy = sqrt( sqr(incidentMass)+sqr(targetMass) +2.0*targetMass*incidentEnergy ); - G4double availableEnergy = centerOfMassEnergy - ( targetMass + incidentMass ); +// G4double availableEnergy = centerOfMassEnergy - ( targetMass + incidentMass ); G4double tavai1 = centerOfMassEnergy/2.0 - incidentMass; G4double tavai2 = centerOfMassEnergy/2.0 - targetMass; @@ -3662,7 +3642,6 @@ G4HEInelastic::MediumEnergyCascading(G4bool &successful, G4HEVector* tempV = new G4HEVector[18]; - G4double totalMass = 0.0; npg = 0; for( i=0; i < vecLen; i++ ) { @@ -3906,7 +3885,7 @@ G4HEInelastic::MediumEnergyCascading(G4bool &successful, if( atomicWeight > 1.5 ) { - G4double ekw, tex, sprob, cost, sint, pp, eka, etb; + G4double sprob, cost, sint, pp, eka; G4int spall, nbl; // sprob is the probability of self-absorption in heavy molecules @@ -4099,28 +4078,18 @@ G4HEInelastic::MediumEnergyClusterProduction(G4bool &successful, G4int protonCode = Proton.getCode(); G4double protonMass = Proton.getMass(); G4int neutronCode = Neutron.getCode(); - G4double neutronMass = Neutron.getMass(); G4double kaonPlusMass = KaonPlus.getMass(); - G4int kaonPlusCode = KaonPlus.getCode(); - G4int kaonMinusCode = KaonMinus.getCode(); - G4int kaonZeroSCode = KaonZeroShort.getCode(); - G4int kaonZeroLCode = KaonZeroLong.getCode(); - G4int kaonZeroCode = KaonZero.getCode(); - G4int antiKaonZeroCode = AntiKaonZero.getCode(); G4int pionPlusCode = PionPlus.getCode(); G4int pionZeroCode = PionZero.getCode(); G4int pionMinusCode = PionMinus.getCode(); G4String mesonType = PionPlus.getType(); G4String baryonType = Proton.getType(); - G4int targetCode = targetParticle.getCode(); G4double targetMass = targetParticle.getMass(); - G4double targetCharge = targetParticle.getCharge(); G4int incidentCode = incidentParticle.getCode(); G4double incidentMass = incidentParticle.getMass(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); - G4double incidentCharge = incidentParticle.getCharge(); G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentKineticEnergy = incidentParticle.getKineticEnergy(); G4String incidentType = incidentParticle.getType(); @@ -4129,7 +4098,7 @@ G4HEInelastic::MediumEnergyClusterProduction(G4bool &successful, // some local variables - G4int i, j, k, l; + G4int i, j; if(verboseLevel > 1) G4cout << " G4HEInelastic::MediumEnergyClusterProduction " << G4endl; @@ -4763,7 +4732,7 @@ G4HEInelastic::MediumEnergyClusterProduction(G4bool &successful, if( atomicWeight > 1.5 ) { - G4double ekw, tex, sprob, cost, sint, ekin2, ran, pp, eka; + G4double sprob, cost, sint, ekin2, ran, pp, eka; G4int spall, nbl; // sprob is the probability of self-absorption in heavy molecules @@ -4952,30 +4921,13 @@ G4HEInelastic::QuasiElasticScattering(G4bool &successful, // All quantities on the G4HEVector Array pv are in GeV- units. G4int protonCode = Proton.getCode(); - G4double protonMass = Proton.getMass(); - G4int neutronCode = Neutron.getCode(); - G4double neutronMass = Neutron.getMass(); - G4double kaonPlusMass = KaonPlus.getMass(); - G4int kaonPlusCode = KaonPlus.getCode(); - G4int kaonMinusCode = KaonMinus.getCode(); - G4int kaonZeroSCode = KaonZeroShort.getCode(); - G4int kaonZeroLCode = KaonZeroLong.getCode(); - G4int kaonZeroCode = KaonZero.getCode(); - G4int antiKaonZeroCode = AntiKaonZero.getCode(); - G4int pionPlusCode = PionPlus.getCode(); - G4int pionZeroCode = PionZero.getCode(); - G4int pionMinusCode = PionMinus.getCode(); G4String mesonType = PionPlus.getType(); G4String baryonType = Proton.getType(); - G4int targetCode = targetParticle.getCode(); G4double targetMass = targetParticle.getMass(); - G4double targetCharge = targetParticle.getCharge(); - G4int incidentCode = incidentParticle.getCode(); G4double incidentMass = incidentParticle.getMass(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); - G4double incidentCharge = incidentParticle.getCharge(); G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentKineticEnergy = incidentParticle.getKineticEnergy(); G4String incidentType = incidentParticle.getType(); @@ -5086,7 +5038,7 @@ G4HEInelastic::QuasiElasticScattering(G4bool &successful, if( atomicWeight > 1.5 ) { - G4double ekw, tex, sprob, cost, sint, ekin2, ran, pp, eka; + G4double sprob, cost, sint, ekin2, ran, pp, eka; G4double ekin, cfa, ekin1, phi, pvMass, pvEnergy; G4int spall, nbl; // sprob is the probability of self-absorption in heavy molecules @@ -5302,7 +5254,7 @@ G4HEInelastic::ElasticScattering(G4bool &successful, } G4double eps = 0.001; G4int ind1 = 10; - G4double t, val; + G4double t; G4int ier1; ier1 = rtmi(&t, t1, t2, eps, ind1, aa, bb, cc, dd, rr); if (verboseLevel > 1) @@ -5709,9 +5661,9 @@ G4HEInelastic::NBodyPhaseSpace(G4int npart, G4HEVector pv[], G4double rm1 = pvcms.getMass() - rm; rm -= pv[2].getMass(); wps = (npart-3)*pow(rm1/sqr(M_2PI), npart-4)/(4*M_PI*pvcms.getMass()); - for (i=3; i=npart-1;i++) wps /= i-2; + for (i=3; (i=npart-1);i++) wps /= i-2; // @@@@@@@@@@ bug @@@@@@@@@ G4double xxx = rm1/sqr(M_2PI); - for (i=1; i=npart-4; i++) wps /= xxx/i; + for (i=1; (i=npart-4); i++) wps /= xxx/i; // @@@@@@@@@@ bug @@@@@@@@@ wps /= (4*M_PI*pvcms.getMass()); G4double p2,cost,sint,phi; j = 1; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc index 3517ee21b6..9d4fa5cef9 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonMinusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonMinusInelastic.cc,v 1.7 2001/10/05 16:10:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -224,8 +224,8 @@ void G4int antiKaonZeroCode = AntiKaonZero.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc index 328a6d6ce0..4b21164bc1 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonPlusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonPlusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonPlusInelastic.cc,v 1.7 2001/10/05 16:10:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -223,8 +223,8 @@ G4HEKaonPlusInelastic::FirstIntInCasKaonPlus( G4bool &inElastic, G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc index 9d91702fde..7c92c73bef 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonZeroInelastic.cc,v 1.4.4.1 2001/06/28 19:13:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonZeroInelastic.cc,v 1.7 2001/10/05 16:10:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -221,8 +221,8 @@ G4HEKaonZeroInelastic::FirstIntInCasKaonZero( G4bool &inElastic, G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc index 4ef24e24fa..69819aedc5 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroLongInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonZeroLongInelastic.cc,v 1.4.4.1 2001/06/28 19:13:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonZeroLongInelastic.cc,v 1.6 2001/08/01 17:10:04 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc index 5725d9c821..6dd10cf6c9 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEKaonZeroShortInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEKaonZeroShortInelastic.cc,v 1.4.4.1 2001/06/28 19:13:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEKaonZeroShortInelastic.cc,v 1.6 2001/08/01 17:10:05 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc index 0ea0a1ecf5..ddc91b57c3 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HELambdaInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HELambdaInelastic.cc,v 1.4.4.1 2001/06/28 19:13:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HELambdaInelastic.cc,v 1.7 2001/10/05 16:10:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -217,12 +217,12 @@ G4HELambdaInelastic::FirstIntInCasLambda( G4bool &inElastic, static const G4int numMul = 1200; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc index 6b273311a2..8ec3cadad5 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HENeutronInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HENeutronInelastic.cc,v 1.4.4.1 2001/06/28 19:13:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HENeutronInelastic.cc,v 1.7 2001/10/05 16:10:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -221,8 +221,8 @@ G4HENeutronInelastic::FirstIntInCasNeutron( G4bool &inElastic, G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc index 04f25ef137..9f305c6fc6 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEOmegaMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEOmegaMinusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEOmegaMinusInelastic.cc,v 1.7 2001/10/05 16:10:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -217,12 +217,12 @@ G4HEOmegaMinusInelastic::FirstIntInCasOmegaMinus( G4bool &inElastic, static const G4int numMul = 1200; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc index 384242cd0a..db0da817d5 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPionMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEPionMinusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPionMinusInelastic.cc,v 1.7 2001/10/05 16:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -216,12 +216,12 @@ G4HEPionMinusInelastic::FirstIntInCasPionMinus( G4bool &inElastic, static const G4int numMul = 1200; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc index 754f805c39..17bc6eac44 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPionPlusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEPionPlusInelastic.cc,v 1.5.2.1 2001/06/28 19:13:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPionPlusInelastic.cc,v 1.8 2001/10/05 16:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -223,8 +223,8 @@ G4HEPionPlusInelastic::FirstIntInCasPionPlus( G4bool &inElastic, G4double pionMass = PionPlus.getMass(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc b/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc index ab85135380..444809d13f 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEPlot.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEPlot.cc,v 1.4.4.1 2001/06/28 19:13:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEPlot.cc,v 1.6 2001/08/01 17:10:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc index 3e2fb9ef0b..c065703309 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEProtonInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEProtonInelastic.cc,v 1.4.4.1 2001/06/28 19:13:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEProtonInelastic.cc,v 1.7 2001/10/05 16:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -226,8 +226,8 @@ G4HEProtonInelastic::FirstIntInCasProton( G4bool &inElastic, G4double pionMass = PionPlus.getMass(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc index 5529d831b1..63968f2731 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HESigmaMinusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HESigmaMinusInelastic.cc,v 1.7 2001/10/05 16:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -221,8 +221,8 @@ G4HESigmaMinusInelastic::FirstIntInCasSigmaMinus( G4bool &inElastic, G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc index 4f34fe69d1..45c1c31287 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaPlusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HESigmaPlusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HESigmaPlusInelastic.cc,v 1.7 2001/10/05 16:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -217,12 +217,12 @@ G4HESigmaPlusInelastic::FirstIntInCasSigmaPlus( G4bool &inElastic, static const G4int numMul = 1200; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc index df10d0a857..5f0dae3941 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HESigmaZeroInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HESigmaZeroInelastic.cc,v 1.4.4.1 2001/06/28 19:13:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HESigmaZeroInelastic.cc,v 1.7 2001/10/05 16:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -48,7 +48,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); G4HEVector incidentParticle(aParticle); G4HELambdaInelastic theLambdaInelastic; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEVector.cc b/source/processes/hadronic/models/high_energy/src/G4HEVector.cc index 240ea04451..3485535f96 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEVector.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEVector.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEVector.cc,v 1.7.2.1 2001/06/28 19:13:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEVector.cc,v 1.10 2001/10/04 20:00:34 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc index 0aa886894d..72ee926e3c 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEXiMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEXiMinusInelastic.cc,v 1.4.4.1 2001/06/28 19:13:59 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEXiMinusInelastic.cc,v 1.7 2001/10/05 16:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -221,8 +221,8 @@ G4HEXiMinusInelastic::FirstIntInCasXiMinus( G4bool &inElastic, G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc b/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc index 7732a69607..8910ecace4 100644 --- a/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc +++ b/source/processes/hadronic/models/high_energy/src/G4HEXiZeroInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4HEXiZeroInelastic.cc,v 1.4.4.1 2001/06/28 19:14:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HEXiZeroInelastic.cc,v 1.7 2001/10/05 16:10:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -47,7 +47,7 @@ ApplyYourself( const G4Track &aTrack, G4Nucleus &targetNucleus ) G4HEVector * pv = new G4HEVector[MAXPART]; theParticleChange.Initialize( aTrack ); const G4DynamicParticle *aParticle = aTrack.GetDynamicParticle(); - G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); +// G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); const G4double A = targetNucleus.GetN(); const G4double Z = targetNucleus.GetZ(); G4HEVector incidentParticle(aParticle); @@ -217,12 +217,12 @@ G4HEXiZeroInelastic::FirstIntInCasXiZero( G4bool &inElastic, static const G4int numMul = 1200; static const G4int numSec = 60; - G4int neutronCode = Neutron.getCode(); +// G4int neutronCode = Neutron.getCode(); G4int protonCode = Proton.getCode(); G4int targetCode = targetParticle.getCode(); - G4double incidentMass = incidentParticle.getMass(); - G4double incidentEnergy = incidentParticle.getEnergy(); +// G4double incidentMass = incidentParticle.getMass(); +// G4double incidentEnergy = incidentParticle.getEnergy(); G4double incidentTotalMomentum = incidentParticle.getTotalMomentum(); static G4bool first = true; diff --git a/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.hh index e6defd67b2..4708e4fd91 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.icc b/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.icc index 880d015435..3a5af6df18 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.icc +++ b/source/processes/hadronic/models/isotope_production/include/G4ElementIsoCrossSections.icc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/isotope_production/include/G4IsoProdCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4IsoProdCrossSections.hh index a9f8fe238a..89b4053a94 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4IsoProdCrossSections.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4IsoProdCrossSections.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoIsoCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoIsoCrossSections.hh index f99001934b..48d90d5da2 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoIsoCrossSections.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4NeutronIsoIsoCrossSections.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsotopeProduction.hh b/source/processes/hadronic/models/isotope_production/include/G4NeutronIsotopeProduction.hh index 2e0daef0ed..01c02fb0f0 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4NeutronIsotopeProduction.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4NeutronIsotopeProduction.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -43,7 +43,7 @@ class G4NeutronIsotopeProduction : public G4VIsotopeProduction public: G4NeutronIsotopeProduction(); - ~G4NeutronIsotopeProduction(); + virtual ~G4NeutronIsotopeProduction(); G4IsoResult * GetIsotope(const G4Track & aTrack, const G4Nucleus & aNucleus); diff --git a/source/processes/hadronic/models/isotope_production/include/G4ProtonIsoIsoCrossSections.hh b/source/processes/hadronic/models/isotope_production/include/G4ProtonIsoIsoCrossSections.hh index e185beffd6..9c551dd3ef 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4ProtonIsoIsoCrossSections.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4ProtonIsoIsoCrossSections.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/isotope_production/include/G4ProtonIsotopeProduction.hh b/source/processes/hadronic/models/isotope_production/include/G4ProtonIsotopeProduction.hh index 2ab48031cd..a06315bd20 100644 --- a/source/processes/hadronic/models/isotope_production/include/G4ProtonIsotopeProduction.hh +++ b/source/processes/hadronic/models/isotope_production/include/G4ProtonIsotopeProduction.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/isotope_production/src/G4IsoProdCrossSection.cc b/source/processes/hadronic/models/isotope_production/src/G4IsoProdCrossSection.cc index b2bdf25b6d..345c53363e 100644 --- a/source/processes/hadronic/models/isotope_production/src/G4IsoProdCrossSection.cc +++ b/source/processes/hadronic/models/isotope_production/src/G4IsoProdCrossSection.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoIsoCrossSections.cc b/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoIsoCrossSections.cc index b0ea0b327a..451c59d22e 100644 --- a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoIsoCrossSections.cc +++ b/source/processes/hadronic/models/isotope_production/src/G4NeutronIsoIsoCrossSections.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsotopeProduction.cc b/source/processes/hadronic/models/isotope_production/src/G4NeutronIsotopeProduction.cc index 341a6c85cd..e917801703 100644 --- a/source/processes/hadronic/models/isotope_production/src/G4NeutronIsotopeProduction.cc +++ b/source/processes/hadronic/models/isotope_production/src/G4NeutronIsotopeProduction.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -30,10 +30,10 @@ G4NeutronIsotopeProduction() for(G4int i=0; i< numberOfElements; i++) { theData[i] = new G4ElementIsoCrossSections; - if((*(G4Element::GetElementTable()))(i)->GetZ()>12 && - (*(G4Element::GetElementTable()))(i)->GetZ()<84) // @@@@@@ workaround to ne fixed in G4NeutronHPNames. + if((*(G4Element::GetElementTable()))[i]->GetZ()>12 && + (*(G4Element::GetElementTable()))[i]->GetZ()<84) // @@@@@@ workaround to ne fixed in G4NeutronHPNames. { - theData[i]->Init((*(G4Element::GetElementTable()))(i)); + theData[i]->Init((*(G4Element::GetElementTable()))[i]); } } } @@ -59,9 +59,12 @@ GetIsotope(const G4Track& aTrack, // get the isotope G4Material * theMaterial = aTrack.GetMaterial(); - if(theMaterial->GetZ()<13) return NULL; //@@@@@@ workaround to ne fixed in G4NeutronHPNames. - if(theMaterial->GetZ()>83) return NULL; //@@@@@@ workaround to ne fixed in G4NeutronHPNames. G4int nEleInMat = theMaterial->GetNumberOfElements(); + for(G4int check = 0; checkGetElement(check)->GetZ()<13) return NULL; //@@@@@@ workaround to ne fixed in G4NeutronHPNames. + if(theMaterial->GetElement(check)->GetZ()>83) return NULL; //@@@@@@ workaround to ne fixed in G4NeutronHPNames. + } G4int index; G4double * xSec = new G4double[nEleInMat]; G4double sum = 0; diff --git a/source/processes/hadronic/models/low_energy/include/G4LCapture.hh b/source/processes/hadronic/models/low_energy/include/G4LCapture.hh index 3cf391b423..77ed59ddef 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LCapture.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LCapture.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LCapture.hh,v 1.5.6.1 2001/06/28 19:14:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LCapture.hh,v 1.7 2001/08/01 17:10:41 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Low energy model: neutron capture -- header file diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh index 94d8691709..c6bb7a3d09 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAlphaInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAlphaInelastic.hh,v 1.3.6.1 2001/06/28 19:14:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAlphaInelastic.hh,v 1.5 2001/08/01 17:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy Alpha Inelastic Process // J.L. Chuma, TRIUMF, 21-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh index 7d4d637b26..1eb20259d3 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiLambdaInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiLambdaInelastic.hh,v 1.3.6.1 2001/06/28 19:14:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiLambdaInelastic.hh,v 1.5 2001/08/01 17:10:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy AntiLambda Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh index fa93ca5397..eb9aa234a6 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiNeutronInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiNeutronInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiNeutronInelastic.hh,v 1.5 2001/08/01 17:10:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy AntiNeutron Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh index af462faf2f..29f2d2a845 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiOmegaMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiOmegaMinusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiOmegaMinusInelastic.hh,v 1.5 2001/08/01 17:10:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy AntiOmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh index b43e4f2ed7..bd8c229904 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiProtonInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiProtonInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiProtonInelastic.hh,v 1.5 2001/08/01 17:10:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy AntiProton Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh index 8c0039af59..2b788bccbb 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiSigmaMinusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiSigmaMinusInelastic.hh,v 1.5 2001/08/01 17:10:45 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy AntiSigmaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh index 4703bc0322..b480ad9e4e 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiSigmaPlusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiSigmaPlusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiSigmaPlusInelastic.hh,v 1.5 2001/08/01 17:10:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy AntiSigmaPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh index 275faaabb5..21ebaa45aa 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiXiMinusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiXiMinusInelastic.hh,v 1.5 2001/08/01 17:10:46 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy AntiXiMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh index 767a4fe050..85ca490869 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEAntiXiZeroInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiXiZeroInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiXiZeroInelastic.hh,v 1.5 2001/08/01 17:10:47 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy AntiXiZero Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh index 77dab57595..7c031b3750 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEDeuteronInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEDeuteronInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEDeuteronInelastic.hh,v 1.5 2001/08/01 17:10:48 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy Deuteron Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh index de5553a699..6d00db59c7 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEKaonMinusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEKaonMinusInelastic.hh,v 1.5 2001/08/01 17:10:49 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy KaonMinus Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh index c198964e48..ab68bba7c4 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonPlusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEKaonPlusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEKaonPlusInelastic.hh,v 1.5 2001/08/01 17:10:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy KaonPlus Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh index 024bbe9810..a136fca6fc 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroLInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEKaonZeroLInelastic.hh,v 1.3.6.1 2001/06/28 19:14:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEKaonZeroLInelastic.hh,v 1.5 2001/08/01 17:10:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy KaonZeroL Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh index e98ac69511..05e42361ba 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEKaonZeroSInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEKaonZeroSInelastic.hh,v 1.3.6.1 2001/06/28 19:14:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEKaonZeroSInelastic.hh,v 1.5 2001/08/01 17:10:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy KaonZeroS Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh index eb607f7f93..226f939885 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LELambdaInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LELambdaInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LELambdaInelastic.hh,v 1.5 2001/08/01 17:10:51 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy Lambda Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LENeutronInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LENeutronInelastic.hh index ba4cc48171..04cdc2627f 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LENeutronInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LENeutronInelastic.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh index a2acbf44fa..cde6b37df3 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEOmegaMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEOmegaMinusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEOmegaMinusInelastic.hh,v 1.5 2001/08/01 17:10:51 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy OmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh index 6b63093866..68add0c45c 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEPionMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEPionMinusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEPionMinusInelastic.hh,v 1.5 2001/08/01 17:10:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy PionMinus Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh index f84706001f..8a0d7c8de3 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEPionPlusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEPionPlusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEPionPlusInelastic.hh,v 1.5 2001/08/01 17:10:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy PionPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh index 5e9f2bf2d1..83c8005cda 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEProtonInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEProtonInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEProtonInelastic.hh,v 1.5 2001/08/01 17:10:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy Proton Inelastic Process // original by H.P. Wellisch diff --git a/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh index 46df7da194..ff9991d5c8 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LESigmaMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LESigmaMinusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LESigmaMinusInelastic.hh,v 1.5 2001/08/01 17:10:53 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy SigmaMinus Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh index 17783634dd..1873290f41 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LESigmaPlusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LESigmaPlusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LESigmaPlusInelastic.hh,v 1.5 2001/08/01 17:10:53 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy SigmaPlus Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh index 748009f5d5..0c87b7ab9a 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LETritonInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LETritonInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LETritonInelastic.hh,v 1.5 2001/08/01 17:10:53 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy Triton Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh index 720335d8d1..79ab8635a7 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEXiMinusInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEXiMinusInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEXiMinusInelastic.hh,v 1.5 2001/08/01 17:10:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy XiMinus Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh b/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh index 30d42b1b98..4354849973 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LEXiZeroInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEXiZeroInelastic.hh,v 1.3.6.1 2001/06/28 19:14:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEXiZeroInelastic.hh,v 1.5 2001/08/01 17:10:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy XiZero Inelastic Process // original by J.L. Chuma, TRIUMF, 03-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/include/G4LElastic.hh b/source/processes/hadronic/models/low_energy/include/G4LElastic.hh index 9839370f65..57ebebca47 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LElastic.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LElastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LElastic.hh,v 1.5.6.1 2001/06/28 19:14:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LElastic.hh,v 1.7 2001/08/01 17:10:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Model: Low energy elastic scattering -- header file diff --git a/source/processes/hadronic/models/low_energy/include/G4LFission.hh b/source/processes/hadronic/models/low_energy/include/G4LFission.hh index c6275f3546..c613b72eca 100644 --- a/source/processes/hadronic/models/low_energy/include/G4LFission.hh +++ b/source/processes/hadronic/models/low_energy/include/G4LFission.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LFission.hh,v 1.5.6.1 2001/06/28 19:14:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LFission.hh,v 1.7 2001/08/01 17:10:56 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Low-energy Model: Fission -- header file diff --git a/source/processes/hadronic/models/low_energy/src/G4LCapture.cc b/source/processes/hadronic/models/low_energy/src/G4LCapture.cc index caecad3600..ff358d2901 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LCapture.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LCapture.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LCapture.cc,v 1.4.8.1 2001/06/28 19:14:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LCapture.cc,v 1.7 2001/10/05 16:11:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Model: Low-energy Neutron Capture @@ -62,7 +62,7 @@ G4LCapture::ApplyYourself(const G4Track& aTrack, G4Nucleus& targetNucleus) theParticleChange.Initialize(aTrack); const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - const G4Material* aMaterial = aTrack.GetMaterial(); +// const G4Material* aMaterial = aTrack.GetMaterial(); theParticleChange.SetStatusChange(fStopAndKill); G4double N = targetNucleus.GetN(); @@ -75,7 +75,6 @@ G4LCapture::ApplyYourself(const G4Track& aTrack, G4Nucleus& targetNucleus) G4double E = aParticle->GetTotalEnergy()/GeV; G4double E0 = aParticle->GetDefinition()->GetPDGMass()/GeV; G4double Q = aParticle->GetDefinition()->GetPDGCharge(); - G4double pv6 = aParticle->GetDefinition()->GetPDGCharge(); if (verboseLevel > 1) { G4cout << "G4LCapture:ApplyYourself: incident particle:" << G4endl; G4cout << "P " << P << " GeV/c" << G4endl; diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAlphaInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAlphaInelastic.cc index 255fc6e26d..ae174d3220 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAlphaInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAlphaInelastic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -25,7 +25,9 @@ // Hadronic Process: Alpha Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 // Last modified: 27-Mar-1997 - + // J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0] + // from NuclearReaction + // #include "G4LEAlphaInelastic.hh" #include "Randomize.hh" #include "G4Electron.hh" @@ -63,21 +65,21 @@ massVec[6] = targetNucleus.AtomicMass( A+2.0, Z+2.0 )-(Z+2.0)*G4Electron::Electron()->GetPDGMass(); massVec[7] = massVec[3]; massVec[8] = targetNucleus.AtomicMass( A+2.0, Z )-(Z)*G4Electron::Electron()->GetPDGMass(); - - G4FastVector vec; // vec will contain the secondary particles + // + G4FastVector vec; // vec will contain the secondary particles G4int vecLen = 0; vec.Initialize( 0 ); - + // theReactionDynamics.NuclearReaction( vec, vecLen, originalIncident, targetNucleus, theAtomicMass, massVec ); - - G4double p = originalIncident->GetTotalMomentum(); - theParticleChange.SetMomentumChange( originalIncident->GetMomentum() * (1.0/p) ); - theParticleChange.SetEnergyChange( originalIncident->GetKineticEnergy() ); - - theParticleChange.SetNumberOfSecondaries( vecLen ); + // + G4double p = vec[0]->GetMomentum().mag(); + theParticleChange.SetMomentumChange( vec[0]->GetMomentum() *(1./p)); + theParticleChange.SetEnergyChange( vec[0]->GetKineticEnergy() ); + // + theParticleChange.SetNumberOfSecondaries( vecLen-1 ); G4DynamicParticle *pd; - for( G4int i=0; iSetDefinition( vec[i]->GetDefinition() ); @@ -85,7 +87,7 @@ theParticleChange.AddSecondary( pd ); delete vec[i]; } - + // return &theParticleChange; } diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc index f6c6858d1b..93c22aa912 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiLambdaInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiLambdaInelastic.cc,v 1.2.8.1 2001/06/28 19:14:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiLambdaInelastic.cc,v 1.4 2001/08/01 17:10:59 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiLambda Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc index 84962d14c0..e8ee1d54db 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiNeutronInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiNeutronInelastic.cc,v 1.3.2.1 2001/06/28 19:14:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiNeutronInelastic.cc,v 1.6 2001/10/05 16:11:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiNeutron Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 @@ -273,8 +273,6 @@ G4ParticleDefinition *aProton = G4Proton::Proton(); G4ParticleDefinition *anAntiProton = G4AntiProton::AntiProton(); G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); - G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); - G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); // energetically possible to produce pion(s) --> inelastic scattering // otherwise quasi-elastic scattering diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc index eb51c5e513..a0ca7a71e4 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiOmegaMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiOmegaMinusInelastic.cc,v 1.2.8.1 2001/06/28 19:14:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiOmegaMinusInelastic.cc,v 1.5 2001/10/05 16:11:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiOmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 @@ -147,7 +147,7 @@ // const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass()/MeV; const G4double etOriginal = originalIncident->GetTotalEnergy()/MeV; - const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV; +// const G4double pOriginal = originalIncident->GetTotalMomentum()/MeV; const G4double targetMass = targetParticle.GetMass()/MeV; G4double centerofmassEnergy = sqrt( mOriginal*mOriginal + targetMass*targetMass + diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc index e1f11b8e9e..4ac8c0eae2 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiProtonInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiProtonInelastic.cc,v 1.3.2.1 2001/06/28 19:14:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiProtonInelastic.cc,v 1.6 2001/10/05 16:11:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiProton Inelastic Process // J.L. Chuma, TRIUMF, 13-Feb-1997 @@ -276,8 +276,6 @@ G4ParticleDefinition *aProton = G4Proton::Proton(); G4ParticleDefinition *anAntiNeutron = G4AntiNeutron::AntiNeutron(); G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); - G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); - G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); const G4double anhl[] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.90, 0.6,0.52,0.47,0.44,0.41,0.39,0.37,0.35,0.34,0.24, diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc index c99fe72d83..116c88a234 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiSigmaMinusInelastic.cc,v 1.2.8.1 2001/06/28 19:14:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiSigmaMinusInelastic.cc,v 1.4 2001/08/01 17:11:02 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiSigmaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc index 3a8e583d3a..e1d6826acb 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiSigmaPlusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiSigmaPlusInelastic.cc,v 1.2.8.1 2001/06/28 19:14:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiSigmaPlusInelastic.cc,v 1.4 2001/08/01 17:11:03 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiSigmaPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc index e8a8e6d010..c2850817aa 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiXiMinusInelastic.cc,v 1.2.8.1 2001/06/28 19:14:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiXiMinusInelastic.cc,v 1.4 2001/08/01 17:11:04 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiXiMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc index f139413d00..45aeea8850 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEAntiXiZeroInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEAntiXiZeroInelastic.cc,v 1.2.8.1 2001/06/28 19:14:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEAntiXiZeroInelastic.cc,v 1.4 2001/08/01 17:11:04 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiXiZero Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEDeuteronInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEDeuteronInelastic.cc index 1d7982ab85..38e8febbb6 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEDeuteronInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEDeuteronInelastic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -25,7 +25,9 @@ // Hadronic Process: Deuteron Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 // Last modified: 27-Mar-1997 - + // J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0] + // from NuclearReaction + // #include "G4LEDeuteronInelastic.hh" #include "Randomize.hh" #include "G4Electron.hh" @@ -47,8 +49,8 @@ } // Work-around for lack of model above 100 MeV - if (originalIncident->GetKineticEnergy()/MeV > 100. || - originalIncident->GetKineticEnergy() <= 0.1*MeV) return &theParticleChange; + if( originalIncident->GetKineticEnergy()/MeV > 100. || + originalIncident->GetKineticEnergy() <= 0.1*MeV )return &theParticleChange; G4double N = targetNucleus.GetN(); G4double Z = targetNucleus.GetZ(); @@ -64,20 +66,20 @@ massVec[7] = massVec[3]; massVec[8] = targetNucleus.AtomicMass( N, Z-1.0 )-(Z-1.0)*G4Electron::Electron()->GetPDGMass(); - G4FastVector vec; // vec will contain the secondary particles + G4FastVector vec; // vec will contain the secondary particles G4int vecLen = 0; vec.Initialize( 0 ); theReactionDynamics.NuclearReaction( vec, vecLen, originalIncident, targetNucleus, theAtomicMass, massVec ); - - G4double p = originalIncident->GetTotalMomentum(); - theParticleChange.SetMomentumChange( originalIncident->GetMomentum() * (1.0/p) ); - theParticleChange.SetEnergyChange( originalIncident->GetKineticEnergy() ); - - theParticleChange.SetNumberOfSecondaries( vecLen ); + // + G4double p = vec[0]->GetMomentum().mag(); + theParticleChange.SetMomentumChange( vec[0]->GetMomentum() * (1.0/p) ); + theParticleChange.SetEnergyChange( vec[0]->GetKineticEnergy() ); + // + theParticleChange.SetNumberOfSecondaries( vecLen-1 ); G4DynamicParticle *pd; - for( G4int i=0; iSetDefinition( vec[i]->GetDefinition() ); diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc index bc556719d6..7956a4448d 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEKaonMinusInelastic.cc,v 1.4.2.1 2001/06/28 19:14:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEKaonMinusInelastic.cc,v 1.7 2001/10/05 16:11:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy KaonMinus Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 @@ -45,7 +45,6 @@ // create the target particle G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); - G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); if( verboseLevel > 1 ) diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc index dd8d79a709..5de2f091d3 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonPlusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEKaonPlusInelastic.cc,v 1.3.2.1 2001/06/28 19:14:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEKaonPlusInelastic.cc,v 1.6 2001/10/05 16:11:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy KaonPlus Inelastic Process // J.L. Chuma, TRIUMF, 05-Feb-1997 @@ -44,7 +44,6 @@ // create the target particle G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); - G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); if( verboseLevel > 1 ) diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroLInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroLInelastic.cc index 729b1b93dc..f36c1c7b26 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroLInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroLInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEKaonZeroLInelastic.cc,v 1.4.2.1 2001/06/28 19:14:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEKaonZeroLInelastic.cc,v 1.7 2001/10/05 16:11:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy KaonZeroLong Inelastic Process // J.L. Chuma, TRIUMF, 11-Feb-1997 @@ -212,7 +212,6 @@ const G4double expxu = 82.; // upper bound for arg. of exp const G4double expxl = -expxu; // lower bound for arg. of exp - G4ParticleDefinition *aKaonPlus = G4KaonPlus::KaonPlus(); G4ParticleDefinition *aKaonMinus = G4KaonMinus::KaonMinus(); G4ParticleDefinition *aKaonZS = G4KaonZeroShort::KaonZeroShort(); G4ParticleDefinition *aKaonZL = G4KaonZeroLong::KaonZeroLong(); diff --git a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroSInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroSInelastic.cc index 6ba226021f..d9a6a7c25f 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroSInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEKaonZeroSInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEKaonZeroSInelastic.cc,v 1.3.2.1 2001/06/28 19:14:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEKaonZeroSInelastic.cc,v 1.5 2001/08/01 17:11:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Low Energy KaonZeroShort Inelastic Process // J.L. Chuma, TRIUMF, 11-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc index e1f053c752..f94850bb50 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LELambdaInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LELambdaInelastic.cc,v 1.2.8.1 2001/06/28 19:14:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LELambdaInelastic.cc,v 1.4 2001/08/01 17:11:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Lambda Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LENeutronInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LENeutronInelastic.cc index 298a6f6790..67a5699b57 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LENeutronInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LENeutronInelastic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -138,19 +138,7 @@ G4ReactionProduct &modifiedOriginal, G4ReactionProduct &targetParticle, G4Nucleus &targetNucleus ) - { - G4ParticleDefinition *aProton = G4Proton::Proton(); - G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); - G4ParticleDefinition *aDeuteron = G4Deuteron::Deuteron(); - G4ParticleDefinition *aTriton = G4Triton::Triton(); - G4ParticleDefinition *anAlpha = G4Alpha::Alpha(); - - const G4double aProtonMass = aProton->GetPDGMass()/MeV; - const G4double aNeutronMass = aNeutron->GetPDGMass()/MeV; - const G4double aDeuteronMass = aDeuteron->GetPDGMass()/MeV; - const G4double aTritonMass = aTriton->GetPDGMass()/MeV; - const G4double anAlphaMass = anAlpha->GetPDGMass()/MeV; - + { const G4double A = targetNucleus.GetN(); // atomic weight const G4double Z = targetNucleus.GetZ(); // atomic number @@ -222,7 +210,7 @@ theParticleChange.AddSecondary( pd ); return; } - G4FastVector vec; // vec will contain the secondary particles + G4FastVector vec; // vec will contain the secondary particles G4int vecLen = 0; vec.Initialize( 0 ); @@ -359,7 +347,7 @@ const G4double expxl = -expxu; // lower bound for arg. of exp G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); G4ParticleDefinition *aProton = G4Proton::Proton(); - G4int ieab = availableEnergy*5.0/GeV; + G4int ieab = static_cast(availableEnergy*5.0/GeV); const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; G4double test, w0, wp, wt, wm; if( (availableEnergy < 2.0*GeV) && (G4UniformRand() >= supp[ieab]) ) diff --git a/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc index 18b08cc40a..07c76b86a2 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEOmegaMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEOmegaMinusInelastic.cc,v 1.2.8.1 2001/06/28 19:14:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEOmegaMinusInelastic.cc,v 1.5 2001/10/05 16:11:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: OmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 @@ -44,7 +44,7 @@ // create the target particle G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); - G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); +// G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); if( verboseLevel > 1 ) @@ -145,7 +145,7 @@ // const G4double mOriginal = originalIncident->GetDefinition()->GetPDGMass(); const G4double etOriginal = originalIncident->GetTotalEnergy(); - const G4double pOriginal = originalIncident->GetTotalMomentum(); +// const G4double pOriginal = originalIncident->GetTotalMomentum(); const G4double targetMass = targetParticle.GetMass(); G4double centerofmassEnergy = sqrt( mOriginal*mOriginal + targetMass*targetMass + diff --git a/source/processes/hadronic/models/low_energy/src/G4LEPionMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEPionMinusInelastic.cc index dc1c120907..8a3240e262 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEPionMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEPionMinusInelastic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -42,7 +42,7 @@ // create the target particle G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); - G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); +// G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); if( verboseLevel > 1 ) diff --git a/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc index 063421ab1a..75f85285b2 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEPionPlusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEPionPlusInelastic.cc,v 1.3.2.1 2001/06/28 19:14:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEPionPlusInelastic.cc,v 1.6 2001/10/05 16:11:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: PionPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Nov-1996 @@ -44,7 +44,7 @@ // create the target particle G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle(); - G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); +// G4double targetMass = originalTarget->GetDefinition()->GetPDGMass(); G4ReactionProduct targetParticle( originalTarget->GetDefinition() ); if( verboseLevel > 1 ) diff --git a/source/processes/hadronic/models/low_energy/src/G4LEProtonInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEProtonInelastic.cc index 289a261516..06fe73b3ec 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEProtonInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEProtonInelastic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -132,7 +132,7 @@ { const G4double N = targetNucleus.GetN(); // atomic weight const G4double Z = targetNucleus.GetZ(); // atomic number - G4double currentKinetic = originalIncident->GetKineticEnergy()/MeV; +// G4double currentKinetic = originalIncident->GetKineticEnergy()/MeV; // // calculate Q-value of reactions // @@ -148,7 +148,7 @@ massVec[7] = massVec[3]; massVec[8] = targetNucleus.AtomicMass( N-1.0, Z-1.0 )-(Z-1.0)*G4Electron::Electron()->GetPDGMass(); - G4FastVector vec; // vec will contain the secondary particles + G4FastVector vec; // vec will contain the secondary particles G4int vecLen = 0; vec.Initialize( 0 ); @@ -276,7 +276,7 @@ const G4double expxl = -expxu; // lower bound for arg. of exp G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); G4ParticleDefinition *aProton = G4Proton::Proton(); - G4int ieab = availableEnergy*5.0/GeV; + G4int ieab = static_cast(availableEnergy*5.0/GeV); const G4double supp[] = {0.,0.4,0.55,0.65,0.75,0.82,0.86,0.90,0.94,0.98}; G4double test, w0, wp, wt, wm; if( (availableEnergy < 2.0*GeV) && (G4UniformRand() >= supp[ieab]) ) diff --git a/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc index f2beb7c70c..01650084e2 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LESigmaMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LESigmaMinusInelastic.cc,v 1.2.8.1 2001/06/28 19:14:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LESigmaMinusInelastic.cc,v 1.4 2001/08/01 17:11:14 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: SigmaMinus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc index 79af3086b0..94a7bc0e29 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LESigmaPlusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LESigmaPlusInelastic.cc,v 1.2.8.1 2001/06/28 19:14:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LESigmaPlusInelastic.cc,v 1.4 2001/08/01 17:11:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: SigmaPlus Inelastic Process // J.L. Chuma, TRIUMF, 19-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LETritonInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LETritonInelastic.cc index 3ead7ecde7..e92feaddab 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LETritonInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LETritonInelastic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -24,7 +24,9 @@ // Hadronic Process: Triton Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 // Last modified: 27-Mar-1997 - + // J.L. Chuma, 08-May-2001: Update original incident passed back in vec[0] + // from NuclearReaction + // #include "G4LETritonInelastic.hh" #include "Randomize.hh" #include "G4Electron.hh" @@ -64,20 +66,20 @@ massVec[7] = massVec[3]; massVec[8] = targetNucleus.AtomicMass( N+1.0, Z-1.0 )-(Z-1.0)*G4Electron::Electron()->GetPDGMass(); - G4FastVector vec; // vec will contain the secondary particles + G4FastVector vec; // vec will contain the secondary particles G4int vecLen = 0; vec.Initialize( 0 ); theReactionDynamics.NuclearReaction( vec, vecLen, originalIncident, targetNucleus, theAtomicMass, massVec ); - - G4double p = originalIncident->GetTotalMomentum(); - theParticleChange.SetMomentumChange( originalIncident->GetMomentum() * (1.0/p) ); - theParticleChange.SetEnergyChange( originalIncident->GetKineticEnergy() ); - - theParticleChange.SetNumberOfSecondaries( vecLen ); + // + G4double p = vec[0]->GetMomentum().mag(); + theParticleChange.SetMomentumChange( vec[0]->GetMomentum()*(1./p) ); + theParticleChange.SetEnergyChange( vec[0]->GetKineticEnergy() ); + // + theParticleChange.SetNumberOfSecondaries( vecLen-1 ); G4DynamicParticle *pd; - for( G4int i=0; iSetDefinition( vec[i]->GetDefinition() ); diff --git a/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc index baa8a43e65..171e5b249b 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEXiMinusInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEXiMinusInelastic.cc,v 1.2.8.1 2001/06/28 19:14:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEXiMinusInelastic.cc,v 1.4 2001/08/01 17:11:17 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: XiMinus Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc b/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc index 1f8dfbcaf7..072cea7e09 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LEXiZeroInelastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LEXiZeroInelastic.cc,v 1.2.8.1 2001/06/28 19:14:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LEXiZeroInelastic.cc,v 1.4 2001/08/01 17:11:17 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: XiZero Inelastic Process // J.L. Chuma, TRIUMF, 20-Feb-1997 diff --git a/source/processes/hadronic/models/low_energy/src/G4LElastic.cc b/source/processes/hadronic/models/low_energy/src/G4LElastic.cc index 9799910e93..08bce43194 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LElastic.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LElastic.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LElastic.cc,v 1.3.8.1 2001/06/28 19:14:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LElastic.cc,v 1.6 2001/10/05 16:11:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Physics model class G4LElastic // @@ -47,7 +47,6 @@ G4LElastic::ApplyYourself(const G4Track& aTrack, G4Nucleus& targetNucleus) theParticleChange.Initialize(aTrack); const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - G4double Z = targetNucleus.GetZ(); G4double atno2 = targetNucleus.GetN(); // Elastic scattering off Hydrogen @@ -152,7 +151,7 @@ G4LElastic::ApplyYourself(const G4Track& aTrack, G4Nucleus& targetNucleus) } G4double eps = 0.001; G4int ind1 = 10; - G4double t, val; + G4double t; G4int ier1; ier1 = Rtmi(&t, t1, t2, eps, ind1, aa, bb, cc, dd, rr); diff --git a/source/processes/hadronic/models/low_energy/src/G4LFission.cc b/source/processes/hadronic/models/low_energy/src/G4LFission.cc index 896549cb88..f62f991da6 100644 --- a/source/processes/hadronic/models/low_energy/src/G4LFission.cc +++ b/source/processes/hadronic/models/low_energy/src/G4LFission.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LFission.cc,v 1.5.2.1 2001/06/28 19:14:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LFission.cc,v 1.8 2001/10/05 16:11:32 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4 Model: Low Energy Fission @@ -86,7 +86,6 @@ G4LFission::ApplyYourself(const G4Track & aTrack,G4Nucleus & targetNucleus) theParticleChange.Initialize(aTrack); const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - const G4Material* aMaterial = aTrack.GetMaterial(); G4double N = targetNucleus.GetN(); G4double Z = targetNucleus.GetZ(); @@ -188,8 +187,6 @@ G4LFission::ApplyYourself(const G4Track & aTrack,G4Nucleus & targetNucleus) theParticleChange.AddSecondary(aGamma); } - G4double ex = exn + exg; - // Distribute momentum vectors and do Lorentz transformation G4Track* theSecondary; diff --git a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh index c091186d7f..097c659534 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationIterator.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4InterpolationIterator.hh,v 1.3.18.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4InterpolationIterator.hh,v 1.5 2001/07/26 09:27:49 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4InterpolationIterator_h #define G4InterpolationIterator_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh index 2b5fbcd88e..2411dd1539 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationManager.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4InterpolationManager.hh,v 1.5.8.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4InterpolationManager.hh,v 1.7 2001/07/26 09:27:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4InterpolationManager_h #define G4InterpolationManager_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh index 0d82b6532b..3b3e08d375 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4InterpolationScheme.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4InterpolationScheme.hh,v 1.2.18.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4InterpolationScheme.hh,v 1.4 2001/07/26 09:27:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4InterpolationScheme_h #define G4InterpolationScheme_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh index c59140e1ec..284eda0798 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP2AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP2AInelasticFS.hh,v 1.5 2001/07/26 09:27:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP2AInelasticFS_h #define G4NeutronHP2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh index 5e2818b678..54e9967775 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2N2AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP2N2AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP2N2AInelasticFS.hh,v 1.5 2001/07/26 09:27:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP2N2AInelasticFS_h #define G4NeutronHP2N2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh index 8dd7a582a0..17c9a84e48 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NAInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP2NAInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP2NAInelasticFS.hh,v 1.5 2001/07/26 09:27:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP2NAInelasticFS_h #define G4NeutronHP2NAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh index 53d2e0ef24..90c9ffc4a7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NDInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP2NDInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP2NDInelasticFS.hh,v 1.5 2001/07/26 09:27:50 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP2NDInelasticFS_h #define G4NeutronHP2NDInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh index 5f060d684b..b959a47296 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP2NInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP2NInelasticFS.hh,v 1.5 2001/07/26 09:27:51 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP2NInelasticFS_h #define G4NeutronHP2NInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh index 316b9d287a..f1bd0b702d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2NPInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP2NPInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP2NPInelasticFS.hh,v 1.5 2001/07/26 09:27:51 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP2NPInelasticFS_h #define G4NeutronHP2NPInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh index 01065c536c..ac1aab54d3 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP2PInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP2PInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP2PInelasticFS.hh,v 1.5 2001/07/26 09:27:51 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP2PInelasticFS_h #define G4NeutronHP2PInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh index 6cbeac1261..27b33cd695 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP3AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP3AInelasticFS.hh,v 1.5 2001/07/26 09:27:51 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP3AInelasticFS_h #define G4NeutronHP3AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh index eb482f6f5c..75527e482b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NAInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP3NAInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP3NAInelasticFS.hh,v 1.5 2001/07/26 09:27:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP3NAInelasticFS_h #define G4NeutronHP3NAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh index 2ec3abb9f9..ad3dbc5172 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP3NInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP3NInelasticFS.hh,v 1.5 2001/07/26 09:27:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP3NInelasticFS_h #define G4NeutronHP3NInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh index 54be8cdc7d..b004eb931c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP3NPInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP3NPInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP3NPInelasticFS.hh,v 1.5 2001/07/26 09:27:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP3NPInelasticFS_h #define G4NeutronHP3NPInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh index 22d469659e..baa03f95e1 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHP4NInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHP4NInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHP4NInelasticFS.hh,v 1.5 2001/07/26 09:27:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHP4NInelasticFS_h #define G4NeutronHP4NInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh index 4015fd8bf5..e0a5200f6c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPAInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPAInelasticFS.hh,v 1.5 2001/07/26 09:27:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPAInelasticFS_h #define G4NeutronHPAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh index 36b4eb2d6b..5992c1146a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngular.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPAngular.hh,v 1.4.8.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPAngular.hh,v 1.6 2001/07/26 09:27:52 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPAngular_h #define G4NeutronHPAngular_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh index 729c76528d..8e664ee541 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPAngularP.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPAngularP.hh,v 1.4.8.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPAngularP.hh,v 1.6 2001/07/26 09:27:53 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPAngularP_h #define G4NeutronHPAngularP_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh index a128ed7c47..ccf353e951 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPArbitaryTab.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPArbitaryTab.hh,v 1.4.8.1 2001/06/28 19:14:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPArbitaryTab.hh,v 1.7 2001/10/04 20:00:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPArbitaryTab_h #define G4NeutronHPArbitaryTab_h 1 @@ -51,7 +51,7 @@ class G4NeutronHPArbitaryTab : public G4VNeutronHPEDis inline void Init(G4std::ifstream & theData) { - G4int i, total; + G4int i; theFractionalProb.Init(theData, eV); theData >> nDistFunc; // = number of incoming n energy points theDistFunc = new G4NeutronHPVector [nDistFunc]; diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh index 97fc9a1a24..9ea08380a0 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCapture.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPCapture.hh,v 1.4.6.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPCapture.hh,v 1.6 2001/07/26 09:27:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh index aa051160fe..d775607392 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureData.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPCaptureData.hh,v 1.4.2.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPCaptureData.hh,v 1.6 2001/07/26 09:27:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPCaptureData_h #define G4NeutronHPCaptureData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh index 6553002921..f11a863ad8 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPCaptureFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPCaptureFS.hh,v 1.5.4.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPCaptureFS.hh,v 1.7 2001/07/26 09:27:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPCaptureFS_h #define G4NeutronHPCaptureFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh index d1757ecb65..beb21a438d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPChannel.hh,v 1.5.2.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPChannel.hh,v 1.8 2001/10/04 20:00:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 @@ -63,7 +63,6 @@ public: ~G4NeutronHPChannel() { delete theChannelData; - G4int i; // Following statement disabled to avoid SEGV // theBuffer is also deleted as "theChannelData" in // ~G4NeutronHPIsoData. FWJ 06-Jul-1999 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh index 001d81d24e..0e22926c4c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPChannelList.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPChannelList.hh,v 1.3.8.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPChannelList.hh,v 1.5 2001/07/26 09:27:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh index e2d79ecf5d..2f9add8283 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContAngularPar.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPContAngularPar.hh,v 1.4.8.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPContAngularPar.hh,v 1.6 2001/07/26 09:27:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPContAngularPar_h #define G4NeutronHPContAngularPar_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh index d26c3b8c8d..c9844f57d8 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPContEnergyAngular.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPContEnergyAngular.hh,v 1.4.8.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPContEnergyAngular.hh,v 1.6 2001/07/26 09:27:54 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPContEnergyAngular_h #define G4NeutronHPContEnergyAngular_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh index 5e0c29c939..6aafaff80d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPD2AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPD2AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPD2AInelasticFS.hh,v 1.5 2001/07/26 09:27:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPD2AInelasticFS_h #define G4NeutronHPD2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh index a605c816a8..0f46b4a4e3 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDAInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPDAInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPDAInelasticFS.hh,v 1.5 2001/07/26 09:27:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPDAInelasticFS_h #define G4NeutronHPDAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh index 28310430a2..941c2d13a4 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPDInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPDInelasticFS.hh,v 1.5 2001/07/26 09:27:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPDInelasticFS_h #define G4NeutronHPDInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh index 41984207c7..08fb694558 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPData.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPData.hh,v 1.3.8.1 2001/06/28 19:14:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPData.hh,v 1.5 2001/07/26 09:27:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh index b2d08bb30c..b5dbac7e62 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataPoint.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPDataPoint.hh,v 1.3.18.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPDataPoint.hh,v 1.5 2001/07/26 09:27:55 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPDataPoint_h #define G4NeutronHPDataPoint_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataUsed.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataUsed.hh index a0ca6179b5..17bd87f2f9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataUsed.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDataUsed.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh index 8f61a58239..2401121c33 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDeExGammas.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPDeExGammas.hh,v 1.4.8.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPDeExGammas.hh,v 1.7 2001/10/04 20:00:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPDeExGammas_h #define G4NeutronHPDeExGammas_h 1 @@ -65,12 +65,12 @@ class G4NeutronHPDeExGammas theResult = theLevels[aLevel]. GetDecayGammas(); G4ReactionProduct * theCurrent; - G4int i; - for(i=0; ilength(); i++) + unsigned int i; + for(i=0; isize(); i++) { theCurrent = new G4ReactionProduct; - *theCurrent = *(theResult->at(i)); - delete theResult->at(i); + *theCurrent = *(theResult->operator[](i)); + delete theResult->operator[](i); G4double costheta = 2.*G4UniformRand()-1; G4double theta = acos(costheta); G4double phi = twopi*G4UniformRand(); @@ -78,7 +78,7 @@ class G4NeutronHPDeExGammas G4double en = theCurrent->GetTotalMomentum(); G4ThreeVector temp(en*sinth*cos(phi), en*sinth*sin(phi), en*costheta ); theCurrent->SetMomentum( temp ) ; - result->insert(theCurrent); + result->push_back(theCurrent); } delete theResult; return result; diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh index 6553a9f405..5c74a37fe4 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPDiscreteTwoBody.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPDiscreteTwoBody.hh,v 1.4.8.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPDiscreteTwoBody.hh,v 1.6 2001/07/26 09:27:56 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPDiscreteTwoBody_h #define G4NeutronHPDiscreteTwoBody_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh index b4739da661..7d4451550f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPElastic.hh,v 1.3.6.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPElastic.hh,v 1.5 2001/07/26 09:27:57 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: High Precision low E neutron tracking // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh index fe90b5279e..ed1d2e796d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticData.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPElasticData.hh,v 1.4.2.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPElasticData.hh,v 1.6 2001/07/26 09:27:57 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPElasticData_h #define G4NeutronHPElasticData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh index 4cfcc75938..3b5e352b31 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPElasticFS.hh,v 1.3.18.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPElasticFS.hh,v 1.5 2001/07/26 09:27:57 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPElasticFS_h #define G4NeutronHPElasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh index 75e8a3f1df..2e0a86f308 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPElementData.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPElementData.hh,v 1.3.14.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPElementData.hh,v 1.5 2001/07/26 09:27:57 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh index ed4d1c2d75..7432691e31 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnAngCorrelation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPEnAngCorrelation.hh,v 1.4.8.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPEnAngCorrelation.hh,v 1.6 2001/07/26 09:27:57 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPEnAngCorrelation_h #define G4NeutronHPEnAngCorrelation_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh index 976fe9427c..0ceb5aef2c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEnergyDistribution.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPEnergyDistribution.hh,v 1.4.8.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPEnergyDistribution.hh,v 1.6 2001/07/26 09:27:57 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPEnergyDistribution_h #define G4NeutronHPEnergyDistribution_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh index db8eb8daec..ef6300974b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPEvapSpectrum.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPEvapSpectrum.hh,v 1.4.8.1 2001/06/28 19:14:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPEvapSpectrum.hh,v 1.6 2001/07/26 09:27:58 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPEvapSpectrum_h #define G4NeutronHPEvapSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh index a244051004..a34aaf2385 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFCFissionFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFCFissionFS.hh,v 1.3.18.1 2001/06/28 19:14:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFCFissionFS.hh,v 1.5 2001/07/26 09:27:58 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFCFissionFS_h #define G4NeutronHPFCFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh index 6953a88049..7d0c6c525f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFSFissionFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFSFissionFS.hh,v 1.3.18.1 2001/06/28 19:14:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFSFissionFS.hh,v 1.5 2001/07/26 09:27:58 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFSFissionFS_h #define G4NeutronHPFSFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh index f5afb63b0b..839b0fffb5 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFastLegendre.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFastLegendre.hh,v 1.5.8.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFastLegendre.hh,v 1.8 2001/10/04 20:00:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFastLegendre_h #define G4NeutronHPFastLegendre_h 1 @@ -150,7 +150,7 @@ class G4NeutronHPFastLegendre inline G4double Interpolate(G4int bin, G4int l, G4double y1, G4double y2, G4double x) { - G4double slope = 0, off = 0, x1=0, x2=0, x1mx2; + G4double slope = 0, off = 0, x2=0, x1mx2; G4int half = (theNbin[l]-1)/2; // x1 = (bin-half)/G4double(half); x2 = (bin+1-half)/G4double(half); diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh index e03f1ffa0d..f3b45b4a1e 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPField.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPField.hh,v 1.3.18.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPField.hh,v 1.5 2001/07/26 09:27:59 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPField_h #define G4NeutronHPField_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh index ad37c13fb3..a1808591f4 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFieldPoint.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFieldPoint.hh,v 1.3.18.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFieldPoint.hh,v 1.5 2001/07/26 09:27:59 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFieldPoint_h #define G4NeutronHPFieldPoint_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh index 8e428ce8ba..ae8258a963 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFinalState.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFinalState.hh,v 1.4.2.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFinalState.hh,v 1.6 2001/07/26 09:27:59 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFinalState_h #define G4NeutronHPFinalState_h diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh index cfe5b22a85..09a34d916c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFission.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFission.hh,v 1.3.6.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFission.hh,v 1.5 2001/07/26 09:28:00 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: High Precision low E neutron tracking // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh index 6da2cdf6e6..6d5243a000 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionBaseFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFissionBaseFS.hh,v 1.4.8.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFissionBaseFS.hh,v 1.6 2001/07/26 09:28:01 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFissionBaseFS_h #define G4NeutronHPFissionBaseFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh index c18854e560..01f28d4638 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionData.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFissionData.hh,v 1.4.2.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFissionData.hh,v 1.6 2001/07/26 09:28:01 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFissionData_h #define G4NeutronHPFissionData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh index 7589f19f2f..6efe6887ff 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionERelease.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFissionERelease.hh,v 1.4.8.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFissionERelease.hh,v 1.6 2001/07/26 09:28:01 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFissionERelease_h #define G4NeutronHPFissionERelease_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh index 9b5d949820..340ba8227d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFissionFS.hh,v 1.3.18.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFissionFS.hh,v 1.5 2001/07/26 09:28:02 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFissionFS_h #define G4NeutronHPFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh index 6ef43b2b7a..7724d4b854 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPFissionSpectrum.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPFissionSpectrum.hh,v 1.4.8.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPFissionSpectrum.hh,v 1.6 2001/07/26 09:28:02 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPFissionSpectrum_h #define G4NeutronHPFissionSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh index 004b9a7415..5fe2d65311 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPGamma.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPGamma.hh,v 1.5.4.1 2001/06/28 19:14:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPGamma.hh,v 1.8 2001/10/04 20:00:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPGamma_h #define G4NeutronHPGamma_h 1 @@ -67,7 +67,7 @@ class G4NeutronHPGamma G4DynamicParticle * theNew = new G4DynamicParticle; theNew->SetDefinition(G4Gamma::Gamma()); theNew->SetKineticEnergy(gammaEnergy); - theResult->insert(theNew); + theResult->push_back(theNew); return theResult; } diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHash.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHash.hh index 0d70f39cf6..1815421b2b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHash.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHash.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -79,6 +79,9 @@ public: delete theUpper; theUpper = 0; } + theIndex.clear(); + theData.clear(); + prepared = false; } G4bool Prepared() const {return prepared;} @@ -107,7 +110,7 @@ public: { lower = theUpper->GetMinIndex(e); } - G4int i; + unsigned int i; for(i=lower; ie) diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh index a50d4dcb00..60ea2c241d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPHe3InelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPHe3InelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPHe3InelasticFS.hh,v 1.5 2001/07/26 09:28:03 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPHe3InelasticFS_h #define G4NeutronHPHe3InelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh index e8f269a886..80bb99be25 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelastic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPInelastic.hh,v 1.3.6.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPInelastic.hh,v 1.5 2001/07/26 09:28:04 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: High Precision low E neutron tracking // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh index 10b0a9ddaa..9b4ebf737a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticBaseFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPInelasticBaseFS.hh,v 1.4.8.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPInelasticBaseFS.hh,v 1.6 2001/07/26 09:28:05 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPInelasticBaseFS_h #define G4NeutronHPInelasticBaseFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh index 4d062da22d..77243bacde 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticCompFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPInelasticCompFS.hh,v 1.5.4.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPInelasticCompFS.hh,v 1.7 2001/07/26 09:28:05 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPInelasticCompFS_h #define G4NeutronHPInelasticCompFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh index e9f015af68..bd4aa1ad45 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInelasticData.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPInelasticData.hh,v 1.4.2.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPInelasticData.hh,v 1.6 2001/07/26 09:28:06 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPInelasticData_h #define G4NeutronHPInelasticData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh index 3389405296..cb31e669f7 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPInterpolator.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPInterpolator.hh,v 1.5.8.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPInterpolator.hh,v 1.7 2001/07/26 09:28:06 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPInterpolator_h #define G4NeutronHPInterpolator_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh index 7ee593c0c7..2a64f7afb9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsoData.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPIsoData.hh,v 1.7.8.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPIsoData.hh,v 1.9 2001/07/26 09:28:07 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPIsoData_h #define G4NeutronHPIsoData_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh index 0b9fe51c3c..fd56f2ae07 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPIsotropic.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPIsotropic.hh,v 1.4.8.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPIsotropic.hh,v 1.6 2001/07/26 09:28:07 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPIsotropic_h #define G4NeutronHPIsotropic_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh index 365e90f134..f159dccb4d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPKallbachMannSyst.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPKallbachMannSyst.hh,v 1.3.18.1 2001/06/28 19:14:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPKallbachMannSyst.hh,v 1.5 2001/07/26 09:28:08 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPKallbachMannSyst_h #define G4NeutronHPKallbachMannSyst_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh index bccf96a216..2db5c6462a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLCFissionFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPLCFissionFS.hh,v 1.3.18.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPLCFissionFS.hh,v 1.5 2001/07/26 09:28:08 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPLCFissionFS_h #define G4NeutronHPLCFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh index 682b3f7985..f39bc56b36 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLabAngularEnergy.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPLabAngularEnergy.hh,v 1.4.8.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPLabAngularEnergy.hh,v 1.6 2001/07/26 09:28:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPLabAngularEnergy_h #define G4NeutronHPLabAngularEnergy_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh index bbfdaf7455..aa569de634 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreStore.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPLegendreStore.hh,v 1.4.8.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPLegendreStore.hh,v 1.6 2001/07/26 09:28:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPLegendreStore_h #define G4NeutronHPLegendreStore_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh index 78f18c5093..ecd7854d88 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLegendreTable.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPLegendreTable.hh,v 1.4.8.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPLegendreTable.hh,v 1.6 2001/07/26 09:28:11 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPLegendreTable_h #define G4NeutronHPLegendreTable_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh index 448bea61c7..83489b536b 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPLevel.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPLevel.hh,v 1.4.8.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPLevel.hh,v 1.6 2001/07/26 09:28:11 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPLevel_h #define G4NeutronHPLevel_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPList.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPList.hh index 30f3857eff..b54d21fc3f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPList.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPList.hh @@ -14,16 +14,13 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPList.hh,v 1.4.8.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ -// #ifndef G4NeutronHPList_h #define G4NeutronHPList_h 1 @@ -37,8 +34,8 @@ class G4NeutronHPList G4NeutronHPList() { - theData = new G4double[100]; - nPoints=100; + theData = new G4double[2]; + nPoints=2; nEntries=0; } diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh index d6b65dd48d..700a3088a5 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPMadlandNixSpectrum.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPMadlandNixSpectrum.hh,v 1.4.8.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPMadlandNixSpectrum.hh,v 1.6 2001/07/26 09:28:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPMadlandNixSpectrum_h #define G4NeutronHPMadlandNixSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh index 7a2744abc0..a488b3d72d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPN2AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPN2AInelasticFS.hh,v 1.5 2001/07/26 09:28:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPN2AInelasticFS_h #define G4NeutronHPN2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh index b763abc1a0..8906bf98f6 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN2PInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPN2PInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPN2PInelasticFS.hh,v 1.5 2001/07/26 09:28:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPN2PInelasticFS_h #define G4NeutronHPN2PInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh index c3f951f83c..f2caa07c2c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPN3AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPN3AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPN3AInelasticFS.hh,v 1.5 2001/07/26 09:28:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPN3AInelasticFS_h #define G4NeutronHPN3AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh index f4720b701b..e22e7fb791 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNAInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNAInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNAInelasticFS.hh,v 1.5 2001/07/26 09:28:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNAInelasticFS_h #define G4NeutronHPNAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh index 5b8a64858d..09a2802ccc 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNBodyPhaseSpace.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNBodyPhaseSpace.hh,v 1.4.8.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNBodyPhaseSpace.hh,v 1.6 2001/07/26 09:28:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNBodyPhaseSpace_h #define G4NeutronHPNBodyPhaseSpace_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh index 3068279fa6..aaf83cc0c6 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPND2AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPND2AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPND2AInelasticFS.hh,v 1.5 2001/07/26 09:28:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPND2AInelasticFS_h #define G4NeutronHPND2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh index 83dc839fcc..fe88fad11c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNDInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNDInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNDInelasticFS.hh,v 1.5 2001/07/26 09:28:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNDInelasticFS_h #define G4NeutronHPNDInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh index c0feef880f..b863779f0d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNHe3InelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNHe3InelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNHe3InelasticFS.hh,v 1.5 2001/07/26 09:28:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNHe3InelasticFS_h #define G4NeutronHPNHe3InelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh index c21e4db560..973426cd03 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNInelasticFS.hh,v 1.5 2001/07/26 09:28:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNInelasticFS_h #define G4NeutronHPNInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh index f59f55ea18..1c1c9eecd5 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPAInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNPAInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNPAInelasticFS.hh,v 1.5 2001/07/26 09:28:16 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNPAInelasticFS_h #define G4NeutronHPNPAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh index 62808a19a2..8f8c000e87 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNPInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNPInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNPInelasticFS.hh,v 1.5 2001/07/26 09:28:16 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNPInelasticFS_h #define G4NeutronHPNPInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh index f2059d51fb..abd9cceb26 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNT2AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNT2AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNT2AInelasticFS.hh,v 1.5 2001/07/26 09:28:16 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNT2AInelasticFS_h #define G4NeutronHPNT2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh index b87764e028..65ce36beef 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNTInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNTInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNTInelasticFS.hh,v 1.5 2001/07/26 09:28:16 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNTInelasticFS_h #define G4NeutronHPNTInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh index 8849913852..684863b334 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNXInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNXInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNXInelasticFS.hh,v 1.5 2001/07/26 09:28:16 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNXInelasticFS_h #define G4NeutronHPNXInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh index d5d4d756fa..373a7a39d8 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNames.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNames.hh,v 1.6.8.1 2001/06/28 19:14:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNames.hh,v 1.9 2001/07/26 09:28:16 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNames_h #define G4NeutronHPNames_h 1 @@ -46,10 +46,24 @@ class G4NeutronHPNames G4String GetName(G4int i) { return theString[i]; } void SetMaxOffSet(G4int anOffset) { theMaxOffSet = anOffset; } - private: + public: static const G4String theString[99]; G4int theMaxOffSet; - + G4String itoa(int current) + { + const char theDigits[11] = "0123456789"; + G4String result; + int digit; + do + { + digit = current-10*(current/10); + result=theDigits[digit]+result; + current/=10; + } + while(current!=0); + return result; + } }; + #endif diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh index 420f5d80fa..fa7d0520f2 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPNeutronYield.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPNeutronYield.hh,v 1.4.8.1 2001/06/28 19:14:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPNeutronYield.hh,v 1.6 2001/07/26 09:28:17 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPNeutronYield_h #define G4NeutronHPNeutronYield_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh index 867e772c94..835584ff6c 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPAInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPPAInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPPAInelasticFS.hh,v 1.5 2001/07/26 09:28:17 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPPAInelasticFS_h #define G4NeutronHPPAInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh index 232a96be9b..b453ed5022 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPDInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPPDInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPPDInelasticFS.hh,v 1.5 2001/07/26 09:28:17 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPPDInelasticFS_h #define G4NeutronHPPDInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh index 2b6802cd0a..d0cc465bc9 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPPInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPPInelasticFS.hh,v 1.5 2001/07/26 09:28:17 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPPInelasticFS_h #define G4NeutronHPPInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh index 1bd09af912..e793adccf5 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPTInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPPTInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPPTInelasticFS.hh,v 1.5 2001/07/26 09:28:17 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPPTInelasticFS_h #define G4NeutronHPPTInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh index a28f024f79..cb0b6847dc 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPartial.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPPartial.hh,v 1.4.8.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPPartial.hh,v 1.7 2001/10/04 20:00:35 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPPartial_h #define G4NeutronHPPartial_h 1 @@ -66,7 +66,6 @@ class G4NeutronHPPartial { G4int i; G4double e; - G4int neg; for( i=0; i> e; diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh index 9009e77603..5aded81065 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonDist.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPPhotonDist.hh,v 1.4.8.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPPhotonDist.hh,v 1.6 2001/07/26 09:28:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Very Low Energy Neutron X-Sections // original by H.P. Wellisch, TRIUMF, 14-Feb-97 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh index 15aeaa4927..a66ad86a86 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPhotonXSection.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPPhotonXSection.hh,v 1.4.8.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPPhotonXSection.hh,v 1.6 2001/07/26 09:28:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPPhotonXSection_h #define G4NeutronHPPhotonXSection_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh index f8374c2887..cd309c4c4a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPPolynomExpansion.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPPolynomExpansion.hh,v 1.4.8.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPPolynomExpansion.hh,v 1.6 2001/07/26 09:28:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPPolynomExpansion_h #define G4NeutronHPPolynomExpansion_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh index 39b8d1e932..4c7fdfd6f4 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPProduct.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPProduct.hh,v 1.4.8.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPProduct.hh,v 1.6 2001/07/26 09:28:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPProduct_h #define G4NeutronHPProduct_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh index 5995147219..3bb73b874d 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSCFissionFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPSCFissionFS.hh,v 1.3.18.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPSCFissionFS.hh,v 1.5 2001/07/26 09:28:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPSCFissionFS_h #define G4NeutronHPSCFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh index 366ff27942..3fcf66819a 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPSimpleEvapSpectrum.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPSimpleEvapSpectrum.hh,v 1.4.8.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPSimpleEvapSpectrum.hh,v 1.6 2001/07/26 09:28:18 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPSimpleEvapSpectrum_h #define G4NeutronHPSimpleEvapSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh index dcd07cc05c..726bd2e385 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPT2AInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPT2AInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPT2AInelasticFS.hh,v 1.5 2001/07/26 09:28:19 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPT2AInelasticFS_h #define G4NeutronHPT2AInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh index 734691c76c..6648c0e4a8 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTCFissionFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPTCFissionFS.hh,v 1.3.18.1 2001/06/28 19:14:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPTCFissionFS.hh,v 1.5 2001/07/26 09:28:20 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPTCFissionFS_h #define G4NeutronHPTCFissionFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh index e1fd0bf99b..e8cf018149 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPTInelasticFS.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPTInelasticFS.hh,v 1.3.18.1 2001/06/28 19:14:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPTInelasticFS.hh,v 1.5 2001/07/26 09:28:20 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPTInelasticFS_h #define G4NeutronHPTInelasticFS_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPThermalBoost.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPThermalBoost.hh index 62b9d35b22..5995766a11 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPThermalBoost.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPThermalBoost.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPVector.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPVector.hh index 692d43cf02..e094fabef1 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPVector.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPVector.hh @@ -14,16 +14,12 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // -// -// $Id: G4NeutronHPVector.hh,v 1.15.2.1 2001/06/28 19:14:21 gunter Exp $ -// GEANT4 tag $Name: $ -// #ifndef G4NeutronHPVector_h #define G4NeutronHPVector_h 1 @@ -249,14 +245,14 @@ class G4NeutronHPVector nEntries=0; theManager.CleanUp(); maxValue = -DBL_MAX; + theHash.Clear(); } // merges the vectors active and passive into *this inline void Merge(G4NeutronHPVector * active, G4NeutronHPVector * passive) { CleanUp(); - G4int s = 0, n=0, i=0, m=0; - G4bool flag; + G4int s = 0, n=0, m=0; G4NeutronHPVector * tmp; G4int a = s, p = n, t; while (aGetVectorLength()&&pGetVectorLength()) diff --git a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh index ee20c8b9b6..e6b6a4ce9f 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4NeutronHPWattSpectrum.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronHPWattSpectrum.hh,v 1.4.8.1 2001/06/28 19:14:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPWattSpectrum.hh,v 1.6 2001/07/26 09:28:21 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4NeutronHPWattSpectrum_h #define G4NeutronHPWattSpectrum_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh index ba7fd36693..2bfdc172f8 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEDis.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VNeutronHPEDis.hh,v 1.4.8.1 2001/06/28 19:14:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VNeutronHPEDis.hh,v 1.6 2001/07/26 09:28:21 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VNeutronHPEDis_h #define G4VNeutronHPEDis_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh index ad7d0b1815..0ef729cebd 100644 --- a/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh +++ b/source/processes/hadronic/models/neutron_hp/include/G4VNeutronHPEnergyAngular.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4VNeutronHPEnergyAngular.hh,v 1.4.8.1 2001/06/28 19:14:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VNeutronHPEnergyAngular.hh,v 1.6 2001/07/26 09:28:22 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VNeutronHPEnergyAngular_h #define G4VNeutronHPEnergyAngular_h 1 diff --git a/source/processes/hadronic/models/neutron_hp/src/G4InterpolationManager.cc b/source/processes/hadronic/models/neutron_hp/src/G4InterpolationManager.cc index 2568aaba25..55a29ab3b3 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4InterpolationManager.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4InterpolationManager.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2AInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2AInelasticFS.cc index 89881ad577..c217520c51 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2AInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2AInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2N2AInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2N2AInelasticFS.cc index e3cfe11c17..9116e07dc2 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2N2AInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2N2AInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NAInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NAInelasticFS.cc index 37aead4747..d686ed96ad 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NAInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NAInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NDInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NDInelasticFS.cc index f085fb70b8..bd8e20ee49 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NDInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NDInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NInelasticFS.cc index 8e27b8d950..072e870aa3 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NPInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NPInelasticFS.cc index 90cb01065a..07ed2c1517 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NPInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2NPInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2PInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2PInelasticFS.cc index a766f40546..0ed7e05fb5 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2PInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP2PInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3AInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3AInelasticFS.cc index d3bbc5ad02..ac9d7bfb6a 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3AInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3AInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NAInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NAInelasticFS.cc index a3053ca268..18b6bf984e 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NAInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NAInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NInelasticFS.cc index 9b696bb590..395fb33456 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NPInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NPInelasticFS.cc index 80fdfba81c..7c4a104a7e 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NPInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP3NPInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP4NInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP4NInelasticFS.cc index 546737aeb0..06b0210653 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP4NInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHP4NInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPAInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPAInelasticFS.cc index e75cfc5016..bd6188d4e1 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPAInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPAInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPAngular.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPAngular.cc index 6d3d5c2867..2bb01e282d 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPAngular.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPAngular.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -29,7 +29,6 @@ void G4NeutronHPAngular::Init(G4std::ifstream & aDataFile) { // G4cout << "here we are entering the Angular Init"<> theAngularDistributionType >> targetMass; aDataFile >> frameFlag; if(theAngularDistributionType == 0) @@ -66,7 +65,7 @@ void G4NeutronHPAngular::Init(G4std::ifstream & aDataFile) theProbArray = new G4NeutronHPPartial(nEnergy, nEnergy); theProbArray->InitInterpolation(aDataFile); G4double temp, energy; - G4int tempdep, nPoints; + G4int tempdep; for(G4int i=0; i> temp >> energy >> tempdep; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPArbitaryTab.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPArbitaryTab.cc index 032b2dfa6b..da4c07bbad 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPArbitaryTab.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPArbitaryTab.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCapture.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCapture.cc index c973f3d28c..db76dbcb7d 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCapture.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPCapture.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -49,7 +49,7 @@ for (G4int i=0; iFindIon(theBaseZ, theBaseA+1, 0, theBaseZ) ); theOne->SetMomentum( (*i)->GetMomentum().vect() ) ; theOne->SetTotalEnergy( (*i)->GetMomentum().t() ); - thePhotons->insert(theOne); + thePhotons->push_back(theOne); delete *i; } delete products; @@ -96,7 +96,7 @@ // add them to the final state G4int nPhotons = 0; - if(thePhotons!=NULL) nPhotons=thePhotons->length(); + if(thePhotons!=NULL) nPhotons=thePhotons->size(); G4int nParticles = nPhotons; if(1==nPhotons) nParticles = 2; theResult.SetNumberOfSecondaries(nParticles); @@ -104,7 +104,7 @@ // back to lab system for(i=0; iat(i)->Lorentz(*(thePhotons->at(i)), theTarget); + thePhotons->operator[](i)->Lorentz(*(thePhotons->operator[](i)), theTarget); } // Recoil, if only one gamma @@ -118,7 +118,7 @@ // Can be done slightly better @ G4ThreeVector aMomentum = theTrack.GetMomentum() +theTarget.GetMomentum() - -thePhotons->at(0)->GetMomentum(); + -thePhotons->operator[](0)->GetMomentum(); G4ThreeVector theMomUnit = aMomentum.unit(); G4double aKinEnergy = theTrack.GetKineticEnergy() @@ -136,10 +136,10 @@ { // back to lab system G4DynamicParticle * theOne = new G4DynamicParticle; - theOne->SetDefinition(thePhotons->at(i)->GetDefinition()); - theOne->SetMomentum(thePhotons->at(i)->GetMomentum()); + theOne->SetDefinition(thePhotons->operator[](i)->GetDefinition()); + theOne->SetMomentum(thePhotons->operator[](i)->GetMomentum()); theResult.AddSecondary(theOne); - delete thePhotons->at(i); + delete thePhotons->operator[](i); } delete thePhotons; // clean up the primary neutron diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPChannel.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPChannel.cc index a6bd0ceb8b..6133234373 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPChannel.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPChannel.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -134,9 +134,8 @@ void G4NeutronHPChannel::Harmonise(G4NeutronHPVector *& theStore, G4NeutronHPVector * theNew) { - G4int s = 0, n=0, i=0, m=0; + G4int s = 0, n=0, m=0; G4NeutronHPVector * theMerge = new G4NeutronHPVector; - G4bool flag; G4NeutronHPVector * anActive = theStore; G4NeutronHPVector * aPassive = theNew; G4NeutronHPVector * tmp; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPChannelList.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPChannelList.cc index 3418c76c80..6e1722f308 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPChannelList.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPChannelList.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPContAngularPar.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPContAngularPar.cc index cbdbfef87f..df6eebdd7c 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPContAngularPar.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPContAngularPar.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPContEnergyAngular.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPContEnergyAngular.cc index b0e05d00c3..e334196fd7 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPContEnergyAngular.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPContEnergyAngular.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -29,7 +29,7 @@ G4ReactionProduct * G4NeutronHPContEnergyAngular::Sample(G4double anEnergy, G4double massCode, G4double mass) { G4ReactionProduct * result; - G4int i,ii,iii; + G4int i; G4int it; for(i=0;i> dummy; - G4bool flag; - + // G4int dummy; G4cin >> dummy; G4LPhysicsFreeVector * theResult = new G4LPhysicsFreeVector(len, emin, emax); for (G4int i=0; iGetVecNbOfAtomsPerVolume(); diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticData.cc index 9673ae4591..eeb9855430 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticData.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticFS.cc index 755364051e..3fbcb302ef 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPElasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -115,7 +115,6 @@ } G4ParticleChange * G4NeutronHPElasticFS::ApplyYourself(const G4Track & theTrack) { - G4int i, ii, iii; // G4cout << "G4NeutronHPElasticFS::ApplyYourself+"<GetVectorLength()); - G4bool flag; // G4cout << "Harmonise 1: "<GetEnergy(s)<<" "<GetEnergy(0)<GetEnergy(s)GetEnergy(0)&&sGetVectorLength() ) { diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPEnAngCorrelation.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPEnAngCorrelation.cc index 682486798e..e703a493f5 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPEnAngCorrelation.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPEnAngCorrelation.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -39,10 +39,10 @@ G4ReactionProduct * G4NeutronHPEnAngCorrelation::SampleOne(G4double anEnergy) while(temp == NULL) temp = theProducts[i++].Sample(anEnergy); // is the multiplicity correct - if(temp->length()!=1) G4Exception("SampleOne: Yield not correct"); + if(temp->size()!=1) G4Exception("SampleOne: Yield not correct"); // fill result - result = temp->at(0); + result = temp->operator[](0); // some garbage collection delete temp; @@ -90,11 +90,11 @@ G4ReactionProductVector * G4NeutronHPEnAngCorrelation::Sample(G4double anEnergy) } if(it!=NULL) { - for(G4int ii=0; iilength(); ii++) + for(unsigned int ii=0; iisize(); ii++) { if(frameFlag==1) // target rest { - it->at(ii)->Lorentz(*(it->at(ii)), -1.*theTarget); + it->operator[](ii)->Lorentz(*(it->operator[](ii)), -1.*theTarget); } else if(frameFlag==2) // CMS { @@ -103,13 +103,13 @@ G4ReactionProductVector * G4NeutronHPEnAngCorrelation::Sample(G4double anEnergy) it->at(ii)->GetTotalEnergy()<<" "<< it->at(ii)->GetMomentum()<at(ii)->Lorentz(*(it->at(ii)), -1.*theCMS); + it->operator[](ii)->Lorentz(*(it->operator[](ii)), -1.*theCMS); } else { G4Exception("G4NeutronHPEnAngCorrelation::Sample: The frame of the finalstate is not specified"); } - result->insert(it->at(ii)); + result->push_back(it->operator[](ii)); } delete it; } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFCFissionFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFCFissionFS.cc index 9c619865b8..b6fc2975bc 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFCFissionFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFCFissionFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFSFissionFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFSFissionFS.cc index d2a2d3decd..b3e0ef8794 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFSFissionFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFSFissionFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -136,7 +136,7 @@ G4DynamicParticle * it = new G4DynamicParticle; it->SetDefinition(theNeutrons[i].GetDefinition()); it->SetMomentum(theNeutrons[i].GetMomentum()); - aResult->insert(it); + aResult->push_back(it); } delete [] theNeutrons; // return the result @@ -179,17 +179,17 @@ G4DynamicParticleVector * G4NeutronHPFSFissionFS::GetPhotons() if(temp == NULL) return NULL; // lorentz transform, and add photons to final state - G4int i; + unsigned int i; G4DynamicParticleVector * result = new G4DynamicParticleVector; - for(i=0; ilength(); i++) + for(i=0; isize(); i++) { // back to lab - temp->at(i)->Lorentz(*temp->at(i), -1.*theTarget); + temp->operator[](i)->Lorentz(*(temp->operator[](i)), -1.*theTarget); G4DynamicParticle * theOne = new G4DynamicParticle; - theOne->SetDefinition(temp->at(i)->GetDefinition()); - theOne->SetMomentum(temp->at(i)->GetMomentum()); - result->insert(theOne); - delete temp->at(i); + theOne->SetDefinition(temp->operator[](i)->GetDefinition()); + theOne->SetMomentum(temp->operator[](i)->GetMomentum()); + result->push_back(theOne); + delete temp->operator[](i); } delete temp; return result; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre.cc index 4aaeb121e1..c70a941588 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_14.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_14.cc index f72b57320f..48ebece4aa 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_14.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_14.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_18.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_18.cc index de89d0f040..20cc8d11aa 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_18.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_18.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_21.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_21.cc index 0e03498613..0c0250855b 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_21.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_21.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_24.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_24.cc index d802dc3ce5..592394b548 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_24.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_24.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_26.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_26.cc index 614060e15b..0431361c40 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_26.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_26.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_28.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_28.cc index 8c00bae50e..c3f6c8a85b 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_28.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_28.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_30.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_30.cc index 308a919b4f..a84d92e572 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_30.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFastLegendre_30.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPField.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPField.cc index 4cff99a024..fcd9d2926d 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPField.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPField.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -40,7 +40,6 @@ G4double G4NeutronHPField::GetY(G4double e, G4int j) { - G4int found = 0; G4int low = 0; G4int high = 0; G4int i; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFieldPoint.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFieldPoint.cc index b5fc89f0fe..abbd6d94c6 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFieldPoint.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFieldPoint.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFission.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFission.cc index ea59f858e9..3817476a4f 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFission.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFission.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -40,9 +40,9 @@ for (G4int i=0; iGetZ()>89) + if((*(G4Element::GetElementTable()))[i]->GetZ()>89) { - theFission[i].Init((*(G4Element::GetElementTable()))(i), dirName); + theFission[i].Init((*(G4Element::GetElementTable()))[i], dirName); theFission[i].Register(&theFS); } } @@ -64,7 +64,7 @@ { xSec = new G4double[n]; G4double sum=0; - G4int i, it, index; + G4int i, index; const G4double * NumAtomsPerVolume = theMaterial->GetVecNbOfAtomsPerVolume(); G4double rWeight; G4NeutronHPThermalBoost aThermalE; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionBaseFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionBaseFS.cc index 7b4c201c87..bc728097b4 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionBaseFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionBaseFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -56,7 +56,6 @@ ifstream theData(filename, ios::in|ios::nocreate); #endif G4int dummy; - G4double dumm; if(!(theData)) { theData.close(); @@ -124,7 +123,7 @@ G4DynamicParticleVector * G4NeutronHPFissionBaseFS::ApplyYourself(G4int nPrompt) G4DynamicParticle * it = new G4DynamicParticle; it->SetDefinition(theNeutrons[i].GetDefinition()); it->SetMomentum(theNeutrons[i].GetMomentum()); - aResult->insert(it); + aResult->push_back(it); } delete [] theNeutrons; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionData.cc index 3376f77f37..d68d79f1b0 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionData.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionFS.cc index 9a30e61da9..e27c2d6951 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPFissionFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -82,7 +82,8 @@ xSec[1] = xSec[0]+theSC.GetXsec(eKinetic); xSec[2] = xSec[1]+theTC.GetXsec(eKinetic); xSec[3] = xSec[2]+theLC.GetXsec(eKinetic); - G4int i, it; + G4int it; + unsigned int i; G4double random = G4UniformRand(); for(i=0; i<4; i++) { @@ -132,21 +133,21 @@ { theDecayConstants = new G4double[delayed]; G4int nPhotons = 0; - if(thePhotons!=NULL) nPhotons = thePhotons->length(); + if(thePhotons!=NULL) nPhotons = thePhotons->size(); theResult.SetNumberOfSecondaries(nPhotons+Prompt+delayed); - for(i=0; ilength(); i++) + for(i=0; isize(); i++) { - theResult.AddSecondary(theNeutrons->at(i)); + theResult.AddSecondary(theNeutrons->operator[](i)); } delete theNeutrons; G4DynamicParticleVector * theDelayed = NULL; theDelayed = theFS.ApplyYourself(0, delayed, theDecayConstants); - for(i=0; ilength(); i++) + for(i=0; isize(); i++) { G4double time = -log(G4UniformRand())/theDecayConstants[i]; time += theResult.GetTimeChange(); - theResult.AddSecondary(theDelayed->at(i), time); + theResult.AddSecondary(theDelayed->operator[](i), time); } delete theDelayed; } @@ -158,17 +159,18 @@ if(Prompt==0&&delayed==0) Prompt=all; theNeutrons = theFS.ApplyYourself(Prompt, delayed, theDecayConstants); G4int nPhotons = 0; - if(thePhotons!=NULL) nPhotons = thePhotons->length(); + if(thePhotons!=NULL) nPhotons = thePhotons->size(); theResult.SetNumberOfSecondaries(nPhotons+Prompt+delayed); - for(i=0; iat(i)); + theResult.AddSecondary(theNeutrons->operator[](i0)); } - for(i=Prompt; iat(i), time); + theResult.AddSecondary(theNeutrons->operator[](i0), time); } delete theNeutrons; } @@ -177,10 +179,10 @@ G4int nPhotons = 0; if(thePhotons!=NULL) { - nPhotons = thePhotons->length(); - for(i=0; ilength(); i++) + nPhotons = thePhotons->size(); + for(i=0; isize(); i++) { - theResult.AddSecondary(thePhotons->at(i)); + theResult.AddSecondary(thePhotons->operator[](i)); } delete thePhotons; } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPGamma.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPGamma.cc index ba5563c82d..5818120af2 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPGamma.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPGamma.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPHe3InelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPHe3InelasticFS.cc index 7fcc02aa85..bae39e7a42 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPHe3InelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPHe3InelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelastic.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelastic.cc index 765bb525b2..717cc1a042 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelastic.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelastic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -29,8 +29,8 @@ // based on the Program) you indicate your acceptance of this statement, // and all its terms. // -// $Id: G4NeutronHPInelastic.cc,v 1.8.2.1 2001/06/28 19:14:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronHPInelastic.cc,v 1.12 2001/10/19 11:54:51 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4NeutronHPInelastic.hh" @@ -47,11 +47,10 @@ dirName = dirName + tString; numEle = G4Element::GetNumberOfElements(); theInelastic = new G4NeutronHPChannelList[numEle]; - G4bool toBeInitialised = true; for (G4int i=0; iSample(eKinetic); @@ -236,29 +237,30 @@ void G4NeutronHPInelasticBaseFS::BaseApply(const G4Track & theTrack, else if(theAngularDistribution!= NULL) { G4bool * Done = new G4bool[nDef]; - for(i=0; ilength(); i++) + for(i=0; isize(); i++) { for(ii=0; iiat(i)->GetDefinition() == theDefs[ii]) + if(!Done[ii] && tmpHadrons->operator[](i)->GetDefinition() == theDefs[ii]) Done[ii] = true; } } G4ReactionProduct * aHadron; - for(i=0; iSetDefinition(theDefs[i]); + aHadron->SetDefinition(theDefs[i0]); aHadron->SetKineticEnergy(theEnergyDistribution->Sample(eKinetic, dummy)); } else @@ -266,7 +268,7 @@ void G4NeutronHPInelasticBaseFS::BaseApply(const G4Track & theTrack, G4Exception("No energy distribution to sample from in InelasticBaseFS::BaseApply"); } theAngularDistribution->SampleAndUpdate(*aHadron); - tmpHadrons->insert(aHadron); + tmpHadrons->push_back(aHadron); } } delete [] Done; @@ -286,10 +288,10 @@ void G4NeutronHPInelasticBaseFS::BaseApply(const G4Track & theTrack, thePhotons = theFinalStatePhotons->GetPhotons(anEnergy); if(thePhotons!=NULL) { - for(i=0; ilength(); i++) + for(i=0; isize(); i++) { // back to lab - thePhotons->at(i)->Lorentz(*(thePhotons->at(i)), -1.*theTarget); + thePhotons->operator[](i)->Lorentz(*(thePhotons->operator[](i)), -1.*theTarget); } } } @@ -306,29 +308,29 @@ void G4NeutronHPInelasticBaseFS::BaseApply(const G4Track & theTrack, G4double eBindT = G4NucleiPropertiesTable::GetBindingEnergy(1,3); G4double eBindHe3 = G4NucleiPropertiesTable::GetBindingEnergy(2,3); G4double eBindA = G4NucleiPropertiesTable::GetBindingEnergy(2,4); - for(i=0; ilength(); i++) + for(i=0; isize(); i++) { - if(tmpHadrons->at(i)->GetDefinition() == G4Neutron::Neutron()) + if(tmpHadrons->operator[](i)->GetDefinition() == G4Neutron::Neutron()) { eBindProducts+=eBindN; } - else if(tmpHadrons->at(i)->GetDefinition() == G4Proton::Proton()) + else if(tmpHadrons->operator[](i)->GetDefinition() == G4Proton::Proton()) { eBindProducts+=eBindP; } - else if(tmpHadrons->at(i)->GetDefinition() == G4Deuteron::Deuteron()) + else if(tmpHadrons->operator[](i)->GetDefinition() == G4Deuteron::Deuteron()) { eBindProducts+=eBindD; } - else if(tmpHadrons->at(i)->GetDefinition() == G4Triton::Triton()) + else if(tmpHadrons->operator[](i)->GetDefinition() == G4Triton::Triton()) { eBindProducts+=eBindT; } - else if(tmpHadrons->at(i)->GetDefinition() == G4He3::He3()) + else if(tmpHadrons->operator[](i)->GetDefinition() == G4He3::He3()) { eBindProducts+=eBindHe3; } - else if(tmpHadrons->at(i)->GetDefinition() == G4Alpha::Alpha()) + else if(tmpHadrons->operator[](i)->GetDefinition() == G4Alpha::Alpha()) { eBindProducts+=eBindA; } @@ -358,9 +360,9 @@ void G4NeutronHPInelasticBaseFS::BaseApply(const G4Track & theTrack, if(thePhotons==NULL) thePhotons = new G4ReactionProductVector; if(theOtherPhotons != NULL) { - for(G4int ii=0; iilength(); ii++) + for(unsigned int ii=0; iisize(); ii++) { - thePhotons->insert(theOtherPhotons->at(ii)); + thePhotons->push_back(theOtherPhotons->operator[](ii)); } delete theOtherPhotons; } @@ -370,9 +372,9 @@ void G4NeutronHPInelasticBaseFS::BaseApply(const G4Track & theTrack, } // fill the result - G4int nSecondaries = tmpHadrons->length(); - G4int nPhotons = 0; - if(thePhotons!=NULL) nPhotons = thePhotons->length(); + unsigned int nSecondaries = tmpHadrons->size(); + unsigned int nPhotons = 0; + if(thePhotons!=NULL) nPhotons = thePhotons->size(); nSecondaries += nPhotons; theResult.SetNumberOfSecondaries(nSecondaries); G4DynamicParticle * theSec; @@ -380,20 +382,20 @@ void G4NeutronHPInelasticBaseFS::BaseApply(const G4Track & theTrack, for(i=0; iSetDefinition(tmpHadrons->at(i)->GetDefinition()); - theSec->SetMomentum(tmpHadrons->at(i)->GetMomentum()); + theSec->SetDefinition(tmpHadrons->operator[](i)->GetDefinition()); + theSec->SetMomentum(tmpHadrons->operator[](i)->GetMomentum()); theResult.AddSecondary(theSec); - delete tmpHadrons->at(i); + delete tmpHadrons->operator[](i); } if(thePhotons != NULL) { for(i=0; iSetDefinition(thePhotons->at(i)->GetDefinition()); - theSec->SetMomentum(thePhotons->at(i)->GetMomentum()); + theSec->SetDefinition(thePhotons->operator[](i)->GetDefinition()); + theSec->SetMomentum(thePhotons->operator[](i)->GetMomentum()); theResult.AddSecondary(theSec); - delete thePhotons->at(i); + delete thePhotons->operator[](i); } } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticCompFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticCompFS.cc index bd649f73bb..b3f9e92027 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticCompFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticCompFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -151,7 +151,7 @@ G4int G4NeutronHPInelasticCompFS::SelectExitChannel(G4double eKinetic) { G4double running[50]; running[0] = 0; - G4int i; + unsigned int i; for(i=0; i<50; i++) { if(i!=0) running[i]=running[i-1]; @@ -165,10 +165,11 @@ G4int G4NeutronHPInelasticCompFS::SelectExitChannel(G4double eKinetic) G4int it = 50; if(0!=sum) { - for(i=0; i<50; i++) + G4int i0; + for(i0=0; i0<50; i0++) { - it = i; - if(random < running[i]/sum) break; + it = i0; + if(random < running[i0]/sum) break; } } //debug: it = 1; @@ -215,7 +216,7 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part G4ReactionProduct boosted; boosted.Lorentz(theNeutron, theTarget); eKinetic = boosted.GetKineticEnergy(); - G4double momentumInCMS = boosted.GetTotalMomentum(); +// G4double momentumInCMS = boosted.GetTotalMomentum(); // select exit channel for composite FS class. G4int it = SelectExitChannel(eKinetic); @@ -231,7 +232,6 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part (targetMass - residualMass)*G4Neutron::Neutron()->GetPDGMass(); G4int nothingWasKnownOnHadron = 0; G4int dummy; - G4int nSecGamma = 0; G4double eGamm = 0; G4int iLevel=it-1; if(50==it) @@ -296,7 +296,7 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part eGamm*sin(acos(costh))*sin(phi), eGamm*costh); if(thePhotons == NULL) thePhotons = new G4ReactionProductVector; - thePhotons->insert(theRestEnergy); + thePhotons->push_back(theRestEnergy); } } } @@ -318,14 +318,14 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part thePhotons = theFinalStatePhotons[it]->GetPhotons(anEnergy); G4double aBaseEnergy = theFinalStatePhotons[it]->GetLevelEnergy(); G4double testEnergy = 0; - if(thePhotons!=NULL && thePhotons->entries()!=0) aBaseEnergy-=thePhotons->at(0)->GetTotalEnergy(); + if(thePhotons!=NULL && thePhotons->size()!=0) aBaseEnergy-=thePhotons->operator[](0)->GetTotalEnergy(); if(theFinalStatePhotons[it]->NeedsCascade()) { while(aBaseEnergy>0.01*keV) { // cascade down the levels G4bool foundMatchingLevel = false; - G4int closest; + G4int closest = 2; G4double deltaEold = -1; for(G4int i=1; iGetPhotons(anEnergy); - thePhotons->insert(theNext->at(0)); - aBaseEnergy = testEnergy-theNext->at(0)->GetTotalEnergy(); + thePhotons->push_back(theNext->operator[](0)); + aBaseEnergy = testEnergy-theNext->operator[](0)->GetTotalEnergy(); delete theNext; foundMatchingLevel = true; break; // ===> } - if(deltaEGetPhotons(anEnergy); - thePhotons->insert(theNext->at(0)); - testEnergy = theFinalStatePhotons[closest]->GetLevelEnergy(); - aBaseEnergy = testEnergy-theNext->at(0)->GetTotalEnergy(); + thePhotons->push_back(theNext->operator[](0)); + aBaseEnergy = aBaseEnergy-theNext->operator[](0)->GetTotalEnergy(); delete theNext; } } } } + unsigned int i0; if(thePhotons!=NULL) { - for(i=0; ilength(); i++) + for(i0=0; i0size(); i0++) { // back to lab - thePhotons->at(i)->Lorentz(*(thePhotons->at(i)), -1.*theTarget); + thePhotons->operator[](i0)->Lorentz(*(thePhotons->operator[](i0)), -1.*theTarget); } } if(nothingWasKnownOnHadron) @@ -379,10 +379,11 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part G4double totalPhotonEnergy = 0; if(thePhotons!=NULL) { - G4int nPhotons = thePhotons->length(); - for(i=0; isize(); + unsigned int i0; + for(i0=0; i0at(i)->GetTotalEnergy(); + totalPhotonEnergy += thePhotons->operator[](i0)->GetTotalEnergy(); } } availableEnergy -= totalPhotonEnergy; @@ -412,14 +413,15 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part G4ThreeVector totalMomentum(0); if(theParticles != NULL) { - nSecondaries = theParticles->length(); + nSecondaries = theParticles->size(); G4ParticleDefinition * aDef; - for(i=0; ilength(); i++) + unsigned int i0; + for(i0=0; i0size(); i0++) { - aDef = theParticles->at(i)->GetDefinition(); + aDef = theParticles->operator[](i0)->GetDefinition(); totalBaryonNumber+=aDef->GetBaryonNumber(); totalCharge+=G4int(aDef->GetPDGCharge()+eps); - totalMomentum += theParticles->at(i)->GetMomentum(); + totalMomentum += theParticles->operator[](i0)->GetMomentum(); } if(totalBaryonNumber!=G4int(theBaseA+eps+incidentParticle->GetDefinition()->GetBaryonNumber())) { @@ -433,7 +435,7 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part } G4int nPhotons = 0; - if(thePhotons!=NULL) nPhotons = thePhotons->length(); + if(thePhotons!=NULL) nPhotons = thePhotons->size(); nSecondaries += nPhotons; theResult.SetNumberOfSecondaries(nSecondaries); @@ -458,7 +460,7 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part { for(i=0; iat(i)->GetMomentum(); + totalPhotonMomentum += thePhotons->operator[](i)->GetMomentum(); } } theSec = new G4DynamicParticle; @@ -468,13 +470,13 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part } else { - for(i=0; ilength(); i++) + for(i0=0; i0size(); i0++) { theSec = new G4DynamicParticle; - theSec->SetDefinition(theParticles->at(i)->GetDefinition()); - theSec->SetMomentum(theParticles->at(i)->GetMomentum()); + theSec->SetDefinition(theParticles->operator[](i0)->GetDefinition()); + theSec->SetMomentum(theParticles->operator[](i0)->GetMomentum()); theResult.AddSecondary(theSec); - delete theParticles->at(i); + delete theParticles->operator[](i0); } delete theParticles; if(needsSeparateRecoil && residualZ!=0) @@ -499,9 +501,9 @@ void G4NeutronHPInelasticCompFS::CompositeApply(const G4Track & theTrack, G4Part { theSec = new G4DynamicParticle; theSec->SetDefinition(G4Gamma::Gamma()); - theSec->SetMomentum(thePhotons->at(i)->GetMomentum()); + theSec->SetMomentum(thePhotons->operator[](i)->GetMomentum()); theResult.AddSecondary(theSec); - delete thePhotons->at(i); + delete thePhotons->operator[](i); } // some garbage collection delete thePhotons; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticData.cc index 6fd71fe6d5..5c1d7ebaa0 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInelasticData.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInterpolator.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInterpolator.cc index 32c03ffa00..62bd951561 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInterpolator.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPInterpolator.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPIsoData.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPIsoData.cc index 53b0561f47..c994e6dcd3 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPIsoData.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPIsoData.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -52,7 +52,6 @@ // accommodating deficiencie of some compilers if(theChannel.eof()) {theChannel.close(); return false;} if(!theChannel) {theChannel.close(); return false;} - G4int count; G4int dummy; theChannel >> dummy >> dummy; theChannelData = new G4NeutronHPVector; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPIsotropic.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPIsotropic.cc index 5623269454..a9eaf6b5e1 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPIsotropic.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPIsotropic.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPKallbachMannSyst.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPKallbachMannSyst.cc index 0ebb76bf1e..44f23006e4 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPKallbachMannSyst.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPKallbachMannSyst.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLCFissionFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLCFissionFS.cc index 17bb5e4e56..57eb49e8f3 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLCFissionFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLCFissionFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLabAngularEnergy.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLabAngularEnergy.cc index 00ec3d936c..ea1975ece8 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLabAngularEnergy.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLabAngularEnergy.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -229,7 +229,7 @@ G4ReactionProduct * G4NeutronHPLabAngularEnergy::Sample(G4double anEnergy, G4dou } { // calculate theta - G4double x, x1, x2, y1, y2, y; + G4double x, x1, x2, y1, y2; x = random; x1 = theThVec.GetY(ith-1)-theThVec.GetY(0); // integrals x2 = theThVec.GetY(ith)-theThVec.GetY(0); diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLegendreStore.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLegendreStore.cc index a3200bb12f..3a524db8df 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLegendreStore.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPLegendreStore.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -35,7 +35,7 @@ G4double G4NeutronHPLegendreStore::SampleMax (G4double anEnergy) { G4double result; - G4int i0, i1, i2, i3, i4; + G4int i0; G4int low, high; G4NeutronHPFastLegendre theLeg; for (i0=0; i0nEntries) G4Exception("Skipped some index numbers in G4NeutronHPList"); if(i==nPoints) { - nPoints += 50; + nPoints = static_cast(1.5*nPoints); G4double * buff = new G4double[nPoints]; for (G4int j=0; jGetMass()); G4double energy; G4double max; - G4double tMass = GetTarget()->GetMass(); - G4double pMass = GetNeutron()->GetMass(); if(theTotalCount<=3) { max = maxE/2.; diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPND2AInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPND2AInelasticFS.cc index 41c7d8a406..f40d7beaa6 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPND2AInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPND2AInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNDInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNDInelasticFS.cc index ce4e239e2e..331f1610a2 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNDInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNDInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNHe3InelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNHe3InelasticFS.cc index f192d147f2..98cfe56c47 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNHe3InelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNHe3InelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNInelasticFS.cc index 3d66f4fb13..a67042c56d 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNPAInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNPAInelasticFS.cc index ae34cfdb06..bc3ef62c25 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNPAInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNPAInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNPInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNPInelasticFS.cc index bec3e7eced..64630e07f3 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNPInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNPInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNT2AInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNT2AInelasticFS.cc index 30beb7efac..53e869949e 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNT2AInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNT2AInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNTInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNTInelasticFS.cc index 928b2317ed..1933bd6455 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNTInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNTInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNXInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNXInelasticFS.cc index acf7a72aed..78e21a36be 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNXInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNXInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNames.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNames.cc index 90bf866382..e9da3f70aa 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNames.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPNames.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -55,64 +55,64 @@ G4int myZ = Z; G4String * theName = NULL; G4String theFileName(""); - G4int offA = 0, offZ = 0, inc = 1; + G4int inc = 1; - G4std::ifstream check; + G4std::ifstream * check = new G4std::ifstream(".dummy"); G4bool first = true; // G4cout << "entered GetName!!!"<close(); + delete check; aFlag = false; if(first) { aFlag = true; first = false; - char the1[1000] = {""}; - G4std::ostrstream ost1(the1, 1000, G4std::ios::out); - ost1 <close(); + delete check; aFlag = false; } else { - char the1[1000] = {""}; - G4std::ostrstream ost1(the1, 1000, G4std::ios::out); - ost1 <theMaxOffSet||myZ==0||myA==0) - if(inc>0) - { - inc*= -1; - myZ = Z; - myA = A; - }else{ - G4cout <<"G4NeutronHPNames: Sorry, this material does not come near to any data."<theMaxOffSet) + do { - first = true; - myA = A; - myZ+=inc; - }else{ - myA+=inc; + if (abs(myZ-Z)>theMaxOffSet||myZ==0||myA==0) + if(inc>0) + { + inc*= -1; + myZ = Z; + myA = A; + }else{ + G4cout <<"G4NeutronHPNames: Sorry, this material does not come near to any data."<theMaxOffSet) + { + first = true; + myA = A; + myZ+=inc; + }else{ + myA+=inc; + } } + while(myZ==0 || myA==0); } - while(!(check)); + while(!(*check)); // G4cout << "Names::GetName: last theName proposal = "<< *theName <<" "<close(); + delete check; + } return result; } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPAInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPAInelasticFS.cc index dd7c0d3dbb..52dfb598c3 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPAInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPAInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPDInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPDInelasticFS.cc index 43b762b1a1..a3bc2292cd 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPDInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPDInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPInelasticFS.cc index 2795f63aba..dc87e519fc 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPTInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPTInelasticFS.cc index bcede79a10..b4341b3e46 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPTInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPTInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPartial.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPartial.cc index e4a26f2ce2..44b910c582 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPartial.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPPartial.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -47,7 +47,7 @@ G4NeutronHPVector * G4NeutronHPPartial::GetY(G4double e1) } if(i==nData) i--; if(0==i) i=1; - G4double x1,x2,y1,y2,y, off, slope; + G4double x1,x2,y1,y2,y; G4int i1=0, ib=0; G4double E1 = X[i-1]; G4double E2 = X[i]; @@ -97,7 +97,6 @@ G4NeutronHPVector * G4NeutronHPPartial::GetY(G4double e1) G4double G4NeutronHPPartial::Sample(G4double x) { - G4double result=0; G4int i; for (i=0; i> repFlag) { aDataFile >> targetMass; - G4int d1=0; - G4double e=0, y=0, z=0; if(repFlag==1) { // multiplicities @@ -112,8 +110,6 @@ void G4NeutronHPPhotonDist::InitAngular(G4std::ifstream & aDataFile) theGammas[i]*=eV; theShells[i]*=eV; } - G4double eNeu, coeff; - G4int nPoly, nProb; nNeu = new G4int [nDiscrete2-nIso]; if(tabulationType==1)theLegendre=new G4NeutronHPLegendreTable *[nDiscrete2-nIso]; if(tabulationType==2)theAngular =new G4NeutronHPAngularP *[nDiscrete2-nIso]; @@ -227,7 +223,7 @@ G4ReactionProductVector * G4NeutronHPPhotonDist::GetPhotons(G4double anEnergy) { G4ReactionProduct * theOne = new G4ReactionProduct; theOne->SetDefinition(G4Gamma::Gamma()); - thePhotons->insert(theOne); + thePhotons->push_back(theOne); } G4int count=0; for(i=0; iGetY(anEnergy); //@@@ look at, seems fishy G4double eGamm = temp->Sample(); - thePhotons->at(count)->SetKineticEnergy(eGamm); + thePhotons->operator[](count)->SetKineticEnergy(eGamm); delete temp; } else // discrete { - thePhotons->at(count)->SetKineticEnergy(energy[i]); + thePhotons->operator[](count)->SetKineticEnergy(energy[i]); } count++; if(count > nSecondaries) G4Exception("G4NeutronHPPhotonDist::GetPhotons inconsistancy"); } } // now do the angular distributions... - G4double count1=0; if( isoFlag == 1) { for (i=0; i< nSecondaries; i++) @@ -272,9 +267,9 @@ G4ReactionProductVector * G4NeutronHPPhotonDist::GetPhotons(G4double anEnergy) G4double theta = acos(costheta); G4double phi = twopi*G4UniformRand(); G4double sinth = sin(theta); - G4double en = thePhotons->at(i)->GetTotalEnergy(); + G4double en = thePhotons->operator[](i)->GetTotalEnergy(); G4ThreeVector temp(en*sinth*cos(phi), en*sinth*sin(phi), en*cos(theta) ); - thePhotons->at(i)->SetMomentum( temp ) ; + thePhotons->operator[](i)->SetMomentum( temp ) ; // G4cout << "Isotropic distribution in PhotonDist"<at(i)->GetTotalEnergy(); + G4double currentEnergy = thePhotons->operator[](i)->GetTotalEnergy(); for(ii=0; iiat(i)->GetTotalEnergy(); + G4double en = thePhotons->operator[](i)->GetTotalEnergy(); G4ThreeVector tempVector(en*sinth*cos(phi), en*sinth*sin(phi), en*cos(theta) ); - thePhotons->at(i)->SetMomentum( tempVector ) ; + thePhotons->operator[](i)->SetMomentum( tempVector ) ; } else if(tabulationType==1) { // legendre polynomials - G4double rand = G4UniformRand(); G4int it; for (iii=0; iiiat(i)->GetTotalEnergy(); + G4double en = thePhotons->operator[](i)->GetTotalEnergy(); G4ThreeVector tempVector(en*sinth*cos(phi), en*sinth*sin(phi), en*cos(theta) ); - thePhotons->at(i)->SetMomentum( tempVector ) ; + thePhotons->operator[](i)->SetMomentum( tempVector ) ; } else { @@ -334,9 +328,9 @@ G4ReactionProductVector * G4NeutronHPPhotonDist::GetPhotons(G4double anEnergy) G4double theta = acos(costh); G4double phi = twopi*G4UniformRand(); G4double sinth = sin(theta); - G4double en = thePhotons->at(i)->GetTotalEnergy(); + G4double en = thePhotons->operator[](i)->GetTotalEnergy(); G4ThreeVector tmpVector(en*sinth*cos(phi), en*sinth*sin(phi), en*costh ); - thePhotons->at(i)->SetMomentum( tmpVector ) ; + thePhotons->operator[](i)->SetMomentum( tmpVector ) ; } } } @@ -367,7 +361,6 @@ G4ReactionProductVector * G4NeutronHPPhotonDist::GetPhotons(G4double anEnergy) theOne->SetDefinition(G4Electron::Electron()); } theOne->SetTotalEnergy(totalEnergy); - G4double count1=0; if( isoFlag == 1) { G4double costheta = 2.*G4UniformRand()-1; @@ -399,7 +392,6 @@ G4ReactionProductVector * G4NeutronHPPhotonDist::GetPhotons(G4double anEnergy) else if(tabulationType==1) { // legendre polynomials - G4double rand = G4UniformRand(); G4int it; for (iii=0; iiiSetMomentum( tmpVector ) ; } } - thePhotons->insert(theOne); + thePhotons->push_back(theOne); } else { diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPProduct.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPProduct.cc index b51655656d..1e658db313 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPProduct.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPProduct.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -38,14 +38,14 @@ G4ReactionProductVector * G4NeutronHPProduct::Sample(G4double anEnergy) theDist->SetTarget(theTarget); theDist->SetNeutron(theNeutron); G4int i; - G4double eMax = GetTarget()->GetMass()+GetNeutron()->GetMass() - - theActualStateQValue; +// G4double eMax = GetTarget()->GetMass()+GetNeutron()->GetMass() +// - theActualStateQValue; theCurrentMultiplicity = static_cast(mean); G4ReactionProduct * tmp; for(i=0;iSample(anEnergy, theMassCode, theMass); - if(tmp != NULL) result->insert(tmp); + if(tmp != NULL) result->push_back(tmp); } if(multi == 0) { @@ -56,7 +56,7 @@ G4ReactionProductVector * G4NeutronHPProduct::Sample(G4double anEnergy) { tmp = theDist->Sample(anEnergy, theMassCode, theMass); tmp->SetDefinition(G4Proton::Proton()); - if(tmp != NULL) result->insert(tmp); + if(tmp != NULL) result->push_back(tmp); } return result; } diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPSCFissionFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPSCFissionFS.cc index 2dd42fd1d7..c292d6460f 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPSCFissionFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPSCFissionFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPT2AInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPT2AInelasticFS.cc index 2a0d31f312..6efe91eda2 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPT2AInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPT2AInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPTCFissionFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPTCFissionFS.cc index 789a47c623..43f5b5122c 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPTCFissionFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPTCFissionFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPTInelasticFS.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPTInelasticFS.cc index 0785a65622..8d5a9796db 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPTInelasticFS.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPTInelasticFS.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPVector.cc b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPVector.cc index 23e3d7538d..60e95788fa 100644 --- a/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPVector.cc +++ b/source/processes/hadronic/models/neutron_hp/src/G4NeutronHPVector.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -31,7 +31,7 @@ G4NeutronHPVector * result = new G4NeutronHPVector; G4int j=0; G4double x; - G4double yl, yr, y; + G4double y; G4int running = 0; for(G4int i=0; inEntries) G4Exception("Skipped some index numbers in G4NeutronHPVector"); if(i==nPoints) { - nPoints = static_cast(1.5*nPoints); + nPoints = static_cast(1.2*nPoints); G4NeutronHPDataPoint * buff = new G4NeutronHPDataPoint[nPoints]; for (G4int j=0; jGetVectorLength() ) @@ -331,6 +330,12 @@ G4double G4NeutronHPVector::Sample() // Samples X according to distribution Y { G4double result; + G4int j; + for(j=0; j theNumberOfSecondaries) { - theListOfSecondaries->SetElement(theNumberOfSecondaries, aTrack); - theNumberOfSecondaries++; - } else { -#ifdef G4VERBOSE - if (verboseLevel>0) { - G4cerr << "G4VParticleChange::AddSecondary() Warning "; - G4cerr << "theListOfSecondaries is full !! " << G4endl; - G4cerr << " The object will not be added in theListOfSecondaries" << G4endl; - } -#endif - } -} - - - -#endif - - - - - - - - - - - - - - - - diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RIsotopeTable.hh b/source/processes/hadronic/models/radiative_decay/include/G4RIsotopeTable.hh index 1cb9e9100a..4fbf5e8c53 100644 --- a/source/processes/hadronic/models/radiative_decay/include/G4RIsotopeTable.hh +++ b/source/processes/hadronic/models/radiative_decay/include/G4RIsotopeTable.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecay.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecay.hh index e22237b61f..7e77424b6e 100644 --- a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecay.hh +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecay.hh @@ -219,12 +219,11 @@ private: G4RIsotopeTable *theIsotopeTable; - G4int verboseLevel; - G4NucleusLimits theNucleusLimits; - const G4double LowestBinValue; const G4double HighestBinValue; + const G4double LowestBinValue; + const G4int TotBin; G4bool AnalogueMC; @@ -253,6 +252,9 @@ private: // Remainder of life time at rest G4double fRemainderLifeTime; + G4int verboseLevel; + + // ParticleChange for decay process G4ParticleChangeForRadDecay fParticleChangeForRadDecay; diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayMode.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayMode.hh index ecbadfa69a..454ac0fe1c 100644 --- a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayMode.hh +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayMode.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRate.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRate.hh index 7992117615..a19e8d5b70 100644 --- a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRate.hh +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRate.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRateVector.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRateVector.hh index 2457f698b7..b4b6afda6c 100644 --- a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRateVector.hh +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecayRateVector.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecaymessenger.hh b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecaymessenger.hh index 28c928a3cb..3775ade0bc 100644 --- a/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecaymessenger.hh +++ b/source/processes/hadronic/models/radiative_decay/include/G4RadioactiveDecaymessenger.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/include/G4UIcmdWithNucleusLimits.hh b/source/processes/hadronic/models/radiative_decay/include/G4UIcmdWithNucleusLimits.hh index e987800877..c6e1896bc2 100644 --- a/source/processes/hadronic/models/radiative_decay/include/G4UIcmdWithNucleusLimits.hh +++ b/source/processes/hadronic/models/radiative_decay/include/G4UIcmdWithNucleusLimits.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/include/G4UserLimitsForRD.hh b/source/processes/hadronic/models/radiative_decay/include/G4UserLimitsForRD.hh index beb8802850..fd28a89664 100644 --- a/source/processes/hadronic/models/radiative_decay/include/G4UserLimitsForRD.hh +++ b/source/processes/hadronic/models/radiative_decay/include/G4UserLimitsForRD.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/src/G4BetaFermiFunction.cc b/source/processes/hadronic/models/radiative_decay/src/G4BetaFermiFunction.cc index 0b933dbcb9..2da08ec789 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4BetaFermiFunction.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4BetaFermiFunction.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/src/G4NuclearDecayChannel.cc b/source/processes/hadronic/models/radiative_decay/src/G4NuclearDecayChannel.cc index b97e1d9189..1b79ee0019 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4NuclearDecayChannel.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4NuclearDecayChannel.cc @@ -273,7 +273,9 @@ G4DecayProducts *G4NuclearDecayChannel::DecayIt (G4double theParentMass) for( G4int index=0; index < numberOfDaughters; index++) {theParentMass += daughters[index]->GetPDGMass();} theParentMass += Qtransition ; - + // bug fix for beta+ decay (flei 25/09/01) + if (decayMode == 2) theParentMass -= 2*0.511 * MeV; + if (GetVerboseLevel()>1) { G4cout << "G4NuclearDecayChannel::DecayIt "; G4cout << "the decay mass = " << theParentMass << G4endl; @@ -333,7 +335,7 @@ G4DecayProducts *G4NuclearDecayChannel::DecayIt (G4double theParentMass) // dynamicDaughter = products->PopProducts(); G4LorentzVector daughterMomentum = dynamicDaughter->Get4Momentum(); - G4ThreeVector daughterMomentum1 = dynamicDaughter->Get4Momentum(); + G4ThreeVector const daughterMomentum1 = G4ThreeVector(daughterMomentum); // // // Now define a G4Fragment with the correct A, Z and excitation, and declare and @@ -454,7 +456,7 @@ G4DecayProducts *G4NuclearDecayChannel::BetaDecayIt() // //create daughter G4DynamicParticle G4double costheta, sintheta, phi, sinphi, cosphi; - G4double costhetan, sinthetan, phin, sinphin, cosphin; + // G4double costhetan, sinthetan, phin, sinphin, cosphin; costheta = 2.*G4UniformRand()-1.0; sintheta = sqrt((1.0-costheta)*(1.0+costheta)); phi = 2.0*M_PI*G4UniformRand()*rad; @@ -480,7 +482,7 @@ G4DecayProducts *G4NuclearDecayChannel::BetaDecayIt() } else { //calculate daughter momentum // Generate two - G4double rd1, rd2, rd; + G4double rd1, rd2; G4double daughtermomentum[3]; G4double daughterenergy[3]; G4double momentummax=0.0, momentumsum = 0.0; diff --git a/source/processes/hadronic/models/radiative_decay/src/G4NucleusLimits.cc b/source/processes/hadronic/models/radiative_decay/src/G4NucleusLimits.cc index 5909ede923..cb5d91632c 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4NucleusLimits.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4NucleusLimits.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/src/G4RIsotopeTable.cc b/source/processes/hadronic/models/radiative_decay/src/G4RIsotopeTable.cc index b734270b35..8edf1173df 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4RIsotopeTable.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4RIsotopeTable.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -44,6 +44,8 @@ // 1) levelTolerance = 2.0 keV // 2) changes to verbose control // +// 18,July 2001 F.Lei +// tidy up the print out at run level // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /////////////////////////////////////////////////////////////////////////////// @@ -182,10 +184,12 @@ G4double G4RIsotopeTable::GetMeanLifeTime (G4int Z, G4int A, G4double& aE) if (!DecaySchemeFile ) { - G4cout <<"G4RIsotopeTable::GetMeanLife() : " - <<"cannot find ion radioactive decay file: " - <0) { + G4cout <<"G4RIsotopeTable::GetMeanLife() : " + <<"cannot find ion radioactive decay file: " + <0) { + G4cout <<"G4RIsotopeTable::GetMeanLife() : "; + G4cout <<"cannot find ion of required excitation E = " << aE << G4endl; + G4cout <<"state in radioactive data file " <1) { @@ -226,7 +228,7 @@ void G4RadioactiveDecay::SelectAVolume(const G4String aVolume) G4LogicalVolumeStore *theLogicalVolumes; G4LogicalVolume *volume; theLogicalVolumes=G4LogicalVolumeStore::GetInstance(); - for (G4int i = 0; i < theLogicalVolumes->size(); i++){ + for (size_t i = 0; i < theLogicalVolumes->size(); i++){ volume=(*theLogicalVolumes)[i]; if (volume->GetName() == aVolume) { ValidVolumes.push_back(aVolume); @@ -252,7 +254,7 @@ void G4RadioactiveDecay::DeselectAVolume(const G4String aVolume) G4LogicalVolumeStore *theLogicalVolumes; G4LogicalVolume *volume; theLogicalVolumes=G4LogicalVolumeStore::GetInstance(); - for (G4int i = 0; i < theLogicalVolumes->size(); i++){ + for (size_t i = 0; i < theLogicalVolumes->size(); i++){ volume=(*theLogicalVolumes)[i]; if (volume->GetName() == aVolume) { G4std::vector::iterator location; @@ -288,7 +290,7 @@ void G4RadioactiveDecay::SelectAllVolumes() if (GetVerboseLevel()>0) G4cout << " RDM Applies to all Volumes" << G4endl; #endif - for (G4int i = 0; i < theLogicalVolumes->size(); i++){ + for (size_t i = 0; i < theLogicalVolumes->size(); i++){ volume=(*theLogicalVolumes)[i]; ValidVolumes.push_back(volume->GetName()); #ifdef G4VERBOSE @@ -328,7 +330,7 @@ G4bool G4RadioactiveDecay::IsRateTableReady(const G4ParticleDefinition & // been calculated. // G4String aParticleName = aParticle.GetParticleName(); - for (G4int i = 0; i < theDecayRateTableVector.size(); i++) + for (size_t i = 0; i < theDecayRateTableVector.size(); i++) { if (theDecayRateTableVector[i].GetIonName() == aParticleName) return true ; @@ -348,7 +350,7 @@ void G4RadioactiveDecay::GetDecayRateTable(const G4ParticleDefinition & G4String aParticleName = aParticle.GetParticleName(); - for (G4int i = 0; i < theDecayRateTableVector.size(); i++) + for (size_t i = 0; i < theDecayRateTableVector.size(); i++) { if (theDecayRateTableVector[i].GetIonName() == aParticleName) { @@ -869,6 +871,13 @@ G4DecayTable *G4RadioactiveDecay::LoadDecayTable (G4ParticleDefinition modeSumBR[6] += b; } break; + case ERROR: + default: + // + // + G4cout << " There is an error in decay mode selection! exit RDM now" << G4endl; + exit(0); + } } } @@ -960,7 +969,6 @@ void G4RadioactiveDecay::AddDecayRateTable(const G4ParticleDefinition &theParent G4bool stable = false; G4int i; G4int j; - G4int k; G4VDecayChannel *theChannel = NULL; G4NuclearDecayChannel *theNuclearDecayChannel = NULL; G4ITDecayChannel *theITChannel = NULL; @@ -1138,6 +1146,7 @@ void G4RadioactiveDecay::AddDecayRateTable(const G4ParticleDefinition &theParent // // they are in two parts, first the les than n ones rates.clear(); + size_t k; for (k = 0; k < RP.size(); k++){ theRate = TP[k]/(TP[k]-TaoPlus) * theBR * RP[k]; rates.push_back(theRate); @@ -1274,7 +1283,7 @@ G4VParticleChange* G4RadioactiveDecay::DecayIt(const G4Track& theTrack, const G4 << " is not selected for the RDM"<< G4endl; G4cout << " There are " << ValidVolumes.size() << " volumes" << G4endl; G4cout << " The Valid volumes are " << G4endl; - for (G4int i = 0; i< ValidVolumes.size(); i++) + for (size_t i = 0; i< ValidVolumes.size(); i++) G4cout << ValidVolumes[i] << G4endl; } #endif @@ -1458,14 +1467,14 @@ G4VParticleChange* G4RadioactiveDecay::DecayIt(const G4Track& theTrack, const G4 G4double taotime; G4double decayRate; - G4int i; - G4int j; + size_t i; + size_t j; G4int numberOfSecondaries; G4int totalNumberOfSecondaries = 0; - G4double currentTime; + G4double currentTime = 0.; G4int ndecaych; G4DynamicParticle* asecondaryparticle; - G4DecayProducts* products = NULL; + // G4DecayProducts* products = NULL; G4std::vector secondaryparticles; G4std::vector pw; pw.clear(); diff --git a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayMode.cc b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayMode.cc index 5d12a1e060..3da2719561 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayMode.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayMode.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRate.cc b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRate.cc index 11cf3d7e6f..703dcdeb24 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRate.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRate.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRateVector.cc b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRateVector.cc index 8e02aa3f6a..a6434d9f2e 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRateVector.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecayRateVector.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecaymessenger.cc b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecaymessenger.cc index 34697d2a7c..64ef831828 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecaymessenger.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4RadioactiveDecaymessenger.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/models/radiative_decay/src/G4UIcmdWithNucleusLimits.cc b/source/processes/hadronic/models/radiative_decay/src/G4UIcmdWithNucleusLimits.cc index a1dabcf9c6..68061ee651 100644 --- a/source/processes/hadronic/models/radiative_decay/src/G4UIcmdWithNucleusLimits.cc +++ b/source/processes/hadronic/models/radiative_decay/src/G4UIcmdWithNucleusLimits.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/processes/include/G4AlphaInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AlphaInelasticProcess.hh index 00e8fd8888..f75d6f67b9 100644 --- a/source/processes/hadronic/processes/include/G4AlphaInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AlphaInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AlphaInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AlphaInelasticProcess.hh,v 1.5 2001/08/01 17:12:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Alpha Inelastic Process // J.L. Chuma, TRIUMF, 21-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4AntiLambdaInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AntiLambdaInelasticProcess.hh index 24d10ec881..5c7d128244 100644 --- a/source/processes/hadronic/processes/include/G4AntiLambdaInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiLambdaInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiLambdaInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiLambdaInelasticProcess.hh,v 1.5 2001/08/01 17:12:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiLambda Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4AntiNeutronInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AntiNeutronInelasticProcess.hh index ae0f852471..cf9796dab7 100644 --- a/source/processes/hadronic/processes/include/G4AntiNeutronInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiNeutronInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiNeutronInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutronInelasticProcess.hh,v 1.5 2001/08/01 17:12:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiNeutron Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4AntiOmegaMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AntiOmegaMinusInelasticProcess.hh index b34ef03cf7..583a672d2b 100644 --- a/source/processes/hadronic/processes/include/G4AntiOmegaMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiOmegaMinusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiOmegaMinusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiOmegaMinusInelasticProcess.hh,v 1.5 2001/08/01 17:12:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiOmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4AntiProtonInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AntiProtonInelasticProcess.hh index e63604e738..0ae09bdc59 100644 --- a/source/processes/hadronic/processes/include/G4AntiProtonInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiProtonInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiProtonInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiProtonInelasticProcess.hh,v 1.5 2001/08/01 17:12:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiProton Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4AntiSigmaMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AntiSigmaMinusInelasticProcess.hh index 7f6fd21f61..2155ccd168 100644 --- a/source/processes/hadronic/processes/include/G4AntiSigmaMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiSigmaMinusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiSigmaMinusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmaMinusInelasticProcess.hh,v 1.5 2001/08/01 17:12:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiSigmaMinus Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4AntiSigmaPlusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AntiSigmaPlusInelasticProcess.hh index b0104909b5..f4e6d19df1 100644 --- a/source/processes/hadronic/processes/include/G4AntiSigmaPlusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiSigmaPlusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiSigmaPlusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiSigmaPlusInelasticProcess.hh,v 1.5 2001/08/01 17:12:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiSigmaPlus Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4AntiXiMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AntiXiMinusInelasticProcess.hh index 1345c7587e..c8dafe8281 100644 --- a/source/processes/hadronic/processes/include/G4AntiXiMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiXiMinusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiXiMinusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXiMinusInelasticProcess.hh,v 1.5 2001/08/01 17:12:09 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiXiMinus Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4AntiXiZeroInelasticProcess.hh b/source/processes/hadronic/processes/include/G4AntiXiZeroInelasticProcess.hh index 2f1c1181c0..a2da2939c7 100644 --- a/source/processes/hadronic/processes/include/G4AntiXiZeroInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4AntiXiZeroInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiXiZeroInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiXiZeroInelasticProcess.hh,v 1.5 2001/08/01 17:12:10 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: AntiXiZero Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4DeuteronInelasticProcess.hh b/source/processes/hadronic/processes/include/G4DeuteronInelasticProcess.hh index 174749a630..4b674748bc 100644 --- a/source/processes/hadronic/processes/include/G4DeuteronInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4DeuteronInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DeuteronInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DeuteronInelasticProcess.hh,v 1.5 2001/08/01 17:12:10 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Deuteron Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh b/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh new file mode 100644 index 0000000000..afd06bade3 --- /dev/null +++ b/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// + // Hadronic Process: Ion Inelastic Process + // J.P. Wellisch, CERN, Apr. 14 2000 + // Last modified: 03-Apr-1997 + +#ifndef G4ElectronNuclearProcess_h +#define G4ElectronNuclearProcess_h 1 + +// Class Description +// Process for Ion Inelastic scattering; +// to be used in your physics list in case you need this physics. +// Class Description - End + +#include "G4HadronInelasticProcess.hh" +#include "G4Electron.hh" +#include "G4ElectroNuclearCrossSection.hh" + + + class G4ElectronNuclearProcess : public G4HadronInelasticProcess + { + public: + + G4ElectronNuclearProcess( + const G4String& processName = "ElectroNuclear" ) : + + G4HadronInelasticProcess( processName, G4Electron::Electron() ) + { + G4CrossSectionDataStore * theStore = GetCrossSectionDataStore(); + theStore->AddDataSet(&theData); + } + + ~G4ElectronNuclearProcess() + { } + private: + + G4ElectroNuclearCrossSection theData; + }; + +#endif + diff --git a/source/processes/hadronic/processes/include/G4HadronCaptureProcess.hh b/source/processes/hadronic/processes/include/G4HadronCaptureProcess.hh index 95f97611bd..da86d4491e 100644 --- a/source/processes/hadronic/processes/include/G4HadronCaptureProcess.hh +++ b/source/processes/hadronic/processes/include/G4HadronCaptureProcess.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -115,10 +115,6 @@ private: // Note: DEC compiler won't accept "const G4ParticleDefinition" here // because it instantiates the ClearAndDestroy method that deletes the // pointers in the dictionary. - // G4RWTPtrHashDictionary - // thePhysicsDictionary; - - // G4HadronicCrossSections theCrossSectionData; G4CrossSectionDataStore* theCrossSectionDataStore; G4double GetMicroscopicCrossSection(const G4DynamicParticle* aParticle, diff --git a/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh b/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh index 12d302bff7..be789de769 100644 --- a/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4HadronElasticProcess.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -121,10 +121,6 @@ private: // Note: DEC compiler won't accept "const G4ParticleDefinition" here // because it instantiates the ClearAndDestroy method that deletes the // pointers in the dictionary. - // G4RWTPtrHashDictionary - // thePhysicsDictionary; - - // G4HadronCrossSections theCrossSectionData; G4CrossSectionDataStore* theCrossSectionDataStore; diff --git a/source/processes/hadronic/processes/include/G4HadronFissionProcess.hh b/source/processes/hadronic/processes/include/G4HadronFissionProcess.hh index c22ca6f68b..096fd911c2 100644 --- a/source/processes/hadronic/processes/include/G4HadronFissionProcess.hh +++ b/source/processes/hadronic/processes/include/G4HadronFissionProcess.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -120,10 +120,6 @@ private: // Note: DEC compiler won't accept "const G4ParticleDefinition" here // because it instantiates the ClearAndDestroy method that deletes the // pointers in the dictionary. - // G4RWTPtrHashDictionary - // thePhysicsDictionary; - - // G4HadronicCrossSections theCrossSectionData; G4CrossSectionDataStore* theCrossSectionDataStore; G4double GetMicroscopicCrossSection(const G4DynamicParticle* aParticle, diff --git a/source/processes/hadronic/processes/include/G4IonInelasticProcess.hh b/source/processes/hadronic/processes/include/G4IonInelasticProcess.hh index 164bd525d3..653cb4991d 100644 --- a/source/processes/hadronic/processes/include/G4IonInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4IonInelasticProcess.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/processes/include/G4KaonMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4KaonMinusInelasticProcess.hh index 8ca7b5cbf6..585d0bbe1f 100644 --- a/source/processes/hadronic/processes/include/G4KaonMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4KaonMinusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KaonMinusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonMinusInelasticProcess.hh,v 1.5 2001/08/01 17:12:11 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: KaonMinus Inelastic Process // J.L. Chuma, TRIUMF, 12-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4KaonPlusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4KaonPlusInelasticProcess.hh index dd71f1ac07..b3a0b2ca15 100644 --- a/source/processes/hadronic/processes/include/G4KaonPlusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4KaonPlusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KaonPlusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonPlusInelasticProcess.hh,v 1.5 2001/08/01 17:12:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: KaonPlus Inelastic Process // J.L. Chuma, TRIUMF, 05-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4KaonZeroLInelasticProcess.hh b/source/processes/hadronic/processes/include/G4KaonZeroLInelasticProcess.hh index 5c0f43183e..12b5145774 100644 --- a/source/processes/hadronic/processes/include/G4KaonZeroLInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4KaonZeroLInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KaonZeroLInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonZeroLInelasticProcess.hh,v 1.5 2001/08/01 17:12:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4 Process: KaonZeroL Inelastic Process // J.L. Chuma, TRIUMF, 11-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4KaonZeroSInelasticProcess.hh b/source/processes/hadronic/processes/include/G4KaonZeroSInelasticProcess.hh index c46a71bd3a..258c1b8b95 100644 --- a/source/processes/hadronic/processes/include/G4KaonZeroSInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4KaonZeroSInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KaonZeroSInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonZeroSInelasticProcess.hh,v 1.5 2001/08/01 17:12:12 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4 Process: KaonZeroS InelasticProcess Process // J.L. Chuma, TRIUMF, 11-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4LambdaInelasticProcess.hh b/source/processes/hadronic/processes/include/G4LambdaInelasticProcess.hh index 7c44d9ed41..a0fdb2c830 100644 --- a/source/processes/hadronic/processes/include/G4LambdaInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4LambdaInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LambdaInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LambdaInelasticProcess.hh,v 1.5 2001/08/01 17:12:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process : Lambda Inelastic Process // J.L. Chuma, TRIUMF, 18-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4NeutronInelasticProcess.hh b/source/processes/hadronic/processes/include/G4NeutronInelasticProcess.hh index 899ececf05..68a17d9746 100644 --- a/source/processes/hadronic/processes/include/G4NeutronInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4NeutronInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronInelasticProcess.hh,v 1.5 2001/08/01 17:12:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Neutron Inelastic Process // original by H.P. Wellisch diff --git a/source/processes/hadronic/processes/include/G4OmegaMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4OmegaMinusInelasticProcess.hh index 0864900e3b..400931b90c 100644 --- a/source/processes/hadronic/processes/include/G4OmegaMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4OmegaMinusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4OmegaMinusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OmegaMinusInelasticProcess.hh,v 1.5 2001/08/01 17:12:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: OmegaMinus Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh b/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh new file mode 100644 index 0000000000..87515279b3 --- /dev/null +++ b/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh @@ -0,0 +1,63 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// + // Hadronic Process: Ion Inelastic Process + // J.P. Wellisch, CERN, Apr. 14 2000 + // Last modified: 03-Apr-1997 + +#ifndef G4PhotoNuclearProcess_h +#define G4PhotoNuclearProcess_h 1 + +// Class Description +// Process for Ion Inelastic scattering; +// to be used in your physics list in case you need this physics. +// Class Description - End + +#include "G4HadronInelasticProcess.hh" +#include "G4Gamma.hh" +#include "G4PhotoNuclearCrossSection.hh" + + + class G4PhotoNuclearProcess : public G4HadronInelasticProcess + { + public: + + G4PhotoNuclearProcess( + const G4String& processName = "PhotonInelastic" ) : + + G4HadronInelasticProcess( processName, G4Gamma::Gamma() ) + { + G4CrossSectionDataStore * theStore = GetCrossSectionDataStore(); + theStore->AddDataSet(&theData); + } + + ~G4PhotoNuclearProcess() + { } + private: + + G4PhotoNuclearCrossSection theData; + }; + +#endif + diff --git a/source/processes/hadronic/processes/include/G4PionMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4PionMinusInelasticProcess.hh index c5daff4a56..da85e032f3 100644 --- a/source/processes/hadronic/processes/include/G4PionMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4PionMinusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PionMinusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionMinusInelasticProcess.hh,v 1.5 2001/08/01 17:12:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // PionMinus Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4PionPlusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4PionPlusInelasticProcess.hh index 87246e072e..5720f5a3e7 100644 --- a/source/processes/hadronic/processes/include/G4PionPlusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4PionPlusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PionPlusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionPlusInelasticProcess.hh,v 1.5 2001/08/01 17:12:13 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // PionPlus Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4PositronNuclearProcess.hh b/source/processes/hadronic/processes/include/G4PositronNuclearProcess.hh new file mode 100644 index 0000000000..cc0270b734 --- /dev/null +++ b/source/processes/hadronic/processes/include/G4PositronNuclearProcess.hh @@ -0,0 +1,64 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * authors in the GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// + // Hadronic Process: Ion Inelastic Process + // J.P. Wellisch, CERN, Apr. 14 2000 + // Last modified: 03-Apr-1997 + +#ifndef G4PositronNuclearProcess_h +#define G4PositronNuclearProcess_h 1 + +// Class Description +// Process for Ion Inelastic scattering; +// to be used in your physics list in case you need this physics. +// Class Description - End + +#include "G4HadronInelasticProcess.hh" +#include "G4Positron.hh" +#include "G4ElectroNuclearCrossSection.hh" + + + class G4PositronNuclearProcess : public G4HadronInelasticProcess + { + public: + + G4PositronNuclearProcess( + const G4String& processName = "PositronNuclear" ) : + + G4HadronInelasticProcess( processName, G4Positron::Positron() ) + { + G4CrossSectionDataStore * theStore = GetCrossSectionDataStore(); + theStore->AddDataSet(&theData); + } + + ~G4PositronNuclearProcess() + { } + + private: + + G4ElectroNuclearCrossSection theData; + }; + +#endif + diff --git a/source/processes/hadronic/processes/include/G4ProtonInelasticProcess.hh b/source/processes/hadronic/processes/include/G4ProtonInelasticProcess.hh index ea25712283..b8724cd4d9 100644 --- a/source/processes/hadronic/processes/include/G4ProtonInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4ProtonInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ProtonInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProtonInelasticProcess.hh,v 1.5 2001/08/01 17:12:14 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Proton Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4SigmaMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4SigmaMinusInelasticProcess.hh index 9fa2921056..6608553c79 100644 --- a/source/processes/hadronic/processes/include/G4SigmaMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4SigmaMinusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4SigmaMinusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmaMinusInelasticProcess.hh,v 1.5 2001/08/01 17:12:14 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4 Process: SigmaMinus Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4SigmaPlusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4SigmaPlusInelasticProcess.hh index 73e7f8fceb..22c2336170 100644 --- a/source/processes/hadronic/processes/include/G4SigmaPlusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4SigmaPlusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4SigmaPlusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SigmaPlusInelasticProcess.hh,v 1.5 2001/08/01 17:12:14 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4 Process: SigmaPlus Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4TritonInelasticProcess.hh b/source/processes/hadronic/processes/include/G4TritonInelasticProcess.hh index aad4ebc2a0..a15e2df256 100644 --- a/source/processes/hadronic/processes/include/G4TritonInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4TritonInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4TritonInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TritonInelasticProcess.hh,v 1.5 2001/08/01 17:12:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Triton Inelastic Process // J.L. Chuma, TRIUMF, 25-Feb-1997 diff --git a/source/processes/hadronic/processes/include/G4XiMinusInelasticProcess.hh b/source/processes/hadronic/processes/include/G4XiMinusInelasticProcess.hh index c5f84e870b..f1156d970d 100644 --- a/source/processes/hadronic/processes/include/G4XiMinusInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4XiMinusInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4XiMinusInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XiMinusInelasticProcess.hh,v 1.5 2001/08/01 17:12:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4 Process: XiMinus Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/include/G4XiZeroInelasticProcess.hh b/source/processes/hadronic/processes/include/G4XiZeroInelasticProcess.hh index 924d01bf45..b6b3b383a7 100644 --- a/source/processes/hadronic/processes/include/G4XiZeroInelasticProcess.hh +++ b/source/processes/hadronic/processes/include/G4XiZeroInelasticProcess.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4XiZeroInelasticProcess.hh,v 1.3.6.1 2001/06/28 19:14:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XiZeroInelasticProcess.hh,v 1.5 2001/08/01 17:12:15 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4 Process: XiZero Inelastic Process // J.L. Chuma, TRIUMF, 05-Nov-1996 diff --git a/source/processes/hadronic/processes/src/G4HadronCaptureProcess.cc b/source/processes/hadronic/processes/src/G4HadronCaptureProcess.cc index aa4622458c..a168c0014b 100644 --- a/source/processes/hadronic/processes/src/G4HadronCaptureProcess.cc +++ b/source/processes/hadronic/processes/src/G4HadronCaptureProcess.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -97,17 +97,15 @@ GetMeanFreePathBasic(const G4DynamicParticle* aParticle, const G4ElementVector* theElementVector; const G4double* theAtomicNumDensityVector; - G4int J = aMaterial->GetIndex(); - theElementVector = aMaterial->GetElementVector(); theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector(); G4double aTemp = aMaterial->GetTemperature(); G4double sigma = 0.; - for (G4int i = 0; i < aMaterial->GetNumberOfElements(); i++) { + for (unsigned int i = 0; i < aMaterial->GetNumberOfElements(); i++) { sigma = sigma + theAtomicNumDensityVector[i] * - GetMicroscopicCrossSection(aParticle, (*theElementVector)(i), aTemp); + GetMicroscopicCrossSection(aParticle, (*theElementVector)[i], aTemp); } if (verboseLevel > 1) G4cout << "G4HadronCaptureProcess::GetMeanFreePathBasic: sigma=" @@ -135,29 +133,4 @@ DumpPhysicsTable(const G4ParticleDefinition& aParticleType) } theCrossSectionDataStore->DumpPhysicsTable(aParticleType); - - // RWBoolean exists = thePhysicsDictionary.contains(&aParticleType); - // if (verboseLevel > 1) { - // G4cout << "DumpPhysicsTable: exists=" << exists << G4endl; - // } - // if (!exists) { - // G4cout << "DumpPhysicsTable: no phyics table for " << - // aParticleType.GetParticleName() << G4endl; - // return; - // } - // G4PhysicsTable* pt = thePhysicsDictionary.findValue(&aParticleType); - // - // const G4ElementTable* et = G4Element::GetElementTable(); - // G4int numOfElements = G4Element::GetNumberOfElements(); - // if (verboseLevel > 1) - // G4cout << "DumpPhysicsTable: numOfElements=" << numOfElements << G4endl; - // G4LPhysicsFreeVector* pv; - // for (G4int J = 0; J < numOfElements; J++) { - // G4cout << G4endl << "Capture cross section data for " << - // aParticleType.GetParticleName() << " on " << - // ((*et)[J])->GetName() << G4endl << G4endl; - // G4cout << G4endl << "Ek(GeV) sigma(mb)" << G4endl << G4endl; - // pv = (G4LPhysicsFreeVector*)(*thePhysicsTable)(J); - // pv->DumpValues(); - // } } diff --git a/source/processes/hadronic/processes/src/G4HadronElasticProcess.cc b/source/processes/hadronic/processes/src/G4HadronElasticProcess.cc index 0f827f5959..c004c1c65c 100644 --- a/source/processes/hadronic/processes/src/G4HadronElasticProcess.cc +++ b/source/processes/hadronic/processes/src/G4HadronElasticProcess.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -108,17 +108,15 @@ GetMeanFreePathBasic(const G4DynamicParticle* aParticle, const G4ElementVector* theElementVector; const G4double* theAtomicNumDensityVector; - G4int J = aMaterial->GetIndex(); - theElementVector = aMaterial->GetElementVector(); theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector(); G4double aTemp = aMaterial->GetTemperature(); G4double sigma = 0.; - for (G4int i = 0; i < aMaterial->GetNumberOfElements(); i++) { + for (unsigned int i = 0; i < aMaterial->GetNumberOfElements(); i++) { sigma = sigma + theAtomicNumDensityVector[i] * - GetMicroscopicCrossSection(aParticle, (*theElementVector)(i), aTemp); + GetMicroscopicCrossSection(aParticle, (*theElementVector)[i], aTemp); } if (verboseLevel > 1) G4cout << "G4HadronElasticProcess::GetMeanFreePathBasic: sigma=" diff --git a/source/processes/hadronic/processes/src/G4HadronFissionProcess.cc b/source/processes/hadronic/processes/src/G4HadronFissionProcess.cc index cd79e68442..21401355af 100644 --- a/source/processes/hadronic/processes/src/G4HadronFissionProcess.cc +++ b/source/processes/hadronic/processes/src/G4HadronFissionProcess.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -70,46 +70,6 @@ G4HadronFissionProcess::BuildThePhysicsTable(G4ParticleDefinition& aParticleType theCrossSectionDataStore->BuildPhysicsTable(aParticleType); - // G4double LowEdgeEnergy, Value; - // G4bool isOutRange; - // - // static const G4ElementTable* theElementTable; - // theElementTable = G4Element::GetElementTable(); - // G4int numOfElements = G4Element::GetNumberOfElements(); - // if (verboseLevel > 1) { - // G4cout << "BuildThePhysicsTable: numOfElements " << numOfElements << G4endl; - // G4cout << "BuildThePhysicsTable: thePhysicsTable " << thePhysicsTable << G4endl; - // G4cout << " for particle: " << aParticleType.GetParticleName() << " " << - // aParticleType.GetPDGEncoding() << G4endl; - // } - // RWBoolean exists = thePhysicsDictionary.contains(&aParticleType); - // if (verboseLevel > 1) { - // G4cout << "exists=" << exists << G4endl; - // } - // if (exists) { - // thePhysicsTable = thePhysicsDictionary.findValue(&aParticleType); - // if (verboseLevel > 1) { - // G4cout << " Retrieve tPT=" << thePhysicsTable << G4endl; - // } - //// Remove any previous items from table - // thePhysicsTable->clearAndDestroy(); - // thePhysicsTable->resize(numOfElements); - // } - // else { - // thePhysicsTable = new G4PhysicsTable(numOfElements); - // if (verboseLevel > 1) { - // G4cout << " make new tPT=" << thePhysicsTable << G4endl; - // G4cout << " entries() = " << thePhysicsTable->entries() << G4endl; - // } - // thePhysicsDictionary.insertKeyAndValue(&aParticleType, thePhysicsTable); - // } - //// Make a PhysicsVector for each element - // for (G4int J = 0; J < numOfElements; J++) { - // (*thePhysicsTable)(J) = - // theCrossSectionData.MakePhysicsVector(*this, - // aParticleType, - // (*theElementTable)[J]); - // } } @@ -136,17 +96,15 @@ G4HadronFissionProcess::GetMeanFreePathBasic(const G4DynamicParticle* aParticle, const G4ElementVector* theElementVector; const G4double* theAtomicNumDensityVector; - G4int J = aMaterial->GetIndex(); - theElementVector = aMaterial->GetElementVector(); theAtomicNumDensityVector = aMaterial->GetAtomicNumDensityVector(); G4double aTemp = aMaterial->GetTemperature(); G4double sigma = 0.; - for (G4int i = 0; i < aMaterial->GetNumberOfElements(); i++) { + for (unsigned int i = 0; i < aMaterial->GetNumberOfElements(); i++) { sigma = sigma + theAtomicNumDensityVector[i] * - GetMicroscopicCrossSection(aParticle, (*theElementVector)(i), aTemp); + GetMicroscopicCrossSection(aParticle, (*theElementVector)[i], aTemp); } if (verboseLevel > 1) G4cout << "G4HadronFissionProcess::GetMeanFreePathBasic: sigma=" @@ -169,28 +127,4 @@ DumpPhysicsTable(const G4ParticleDefinition& aParticleType) theCrossSectionDataStore->DumpPhysicsTable(aParticleType); - // RWBoolean exists = thePhysicsDictionary.contains(&aParticleType); - // if (verboseLevel > 1) { - // G4cout << "DumpPhysicsTable: exists=" << exists << G4endl; - // } - // if (!exists) { - // G4Exception("G4HadronFissionProcess::DumpPhysicsTable: " - // "no physics table for particle"); - // return; - // } - // G4PhysicsTable* pt = thePhysicsDictionary.findValue(&aParticleType); - // - // const G4ElementTable* et = G4Element::GetElementTable(); - // G4int numOfElements = G4Element::GetNumberOfElements(); - // if (verboseLevel > 1) - // G4cout << "DumpPhysicsTable: numOfElements=" << numOfElements << G4endl; - // G4LPhysicsFreeVector* pv; - // for (G4int J = 0; J < numOfElements; J++) { - // G4cout << G4endl << "Fission cross section data for " << - // aParticleType.GetParticleName() << " on " << - // ((*et)[J])->GetName() << G4endl << G4endl; - // G4cout << G4endl << "Ek(GeV) sigma(mb)" << G4endl << G4endl; - // pv = (G4LPhysicsFreeVector*)(*thePhysicsTable)(J); - // pv->DumpValues(); - // } } diff --git a/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh b/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh index c3e66ed0c5..2396588ccc 100644 --- a/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4AntiNeutronAnnihilationAtRest.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiNeutronAnnihilationAtRest.hh,v 1.3.6.2 2001/06/28 20:20:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiNeutronAnnihilationAtRest.hh,v 1.5 2001/08/01 17:12:19 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh b/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh index 6b9305fc7d..5c95574d0a 100644 --- a/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4AntiProtonAnnihilationAtRest.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiProtonAnnihilationAtRest.hh,v 1.3.6.2 2001/06/28 20:20:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiProtonAnnihilationAtRest.hh,v 1.5 2001/08/01 17:12:19 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh b/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh index bd53956ee8..e1e6bfa028 100644 --- a/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh +++ b/source/processes/hadronic/stopping/include/G4DistributionGenerator.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DistributionGenerator.hh,v 1.3.8.2 2001/06/28 20:20:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DistributionGenerator.hh,v 1.6 2001/10/04 20:00:39 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,7 +41,7 @@ #ifndef G4DISTRIBUTIONGENERATOR_HH #define G4DISTRIBUTIONGENERATOR_HH -#include "g4rw/tvordvec.h" +#include "g4std/vector" #include "globals.hh" #include "Randomize.hh" @@ -52,8 +52,8 @@ class G4DistributionGenerator public: // Constructor - G4DistributionGenerator(G4RWTValOrderedVector& x, - G4RWTValOrderedVector& values); + G4DistributionGenerator(G4std::vector& x, + G4std::vector& values); G4DistributionGenerator(); // Destructor @@ -69,8 +69,8 @@ private: // Copy constructor // G4DistributionGenerator(const G4DistributionGenerator& ); - G4RWTValOrderedVector _x; - G4RWTValOrderedVector _cumProb; + G4std::vector _x; + G4std::vector _cumProb; }; diff --git a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh index 08fc8388cc..5999142840 100644 --- a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh +++ b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorption.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KaonMinusAbsorption.hh,v 1.3.6.2 2001/06/28 20:20:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonMinusAbsorption.hh,v 1.5 2001/08/01 17:12:19 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh index 0d7393f3b6..8be37e0f1e 100644 --- a/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4KaonMinusAbsorptionAtRest.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4KaonMinusAbsorptionAtRest.hh,v 1.4.6.2 2001/06/28 20:20:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4KaonMinusAbsorptionAtRest.hh,v 1.7 2001/10/04 20:00:40 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1997 @@ -45,9 +45,6 @@ // to be used in your physics list in case you need this physics. // Class Description - End - -#include "g4rw/tpordvec.h" - #include "globals.hh" #include "Randomize.hh" #include "G4VRestProcess.hh" diff --git a/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh b/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh index 32af3cca0e..dce46b5e3c 100644 --- a/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh +++ b/source/processes/hadronic/stopping/include/G4MuMinusCaptureCascade.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh b/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh index 97a08ab708..3daf1bb0da 100644 --- a/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4MuonMinusCaptureAtRest.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4MuonMinusCaptureAtRest.hh,v 1.4.6.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonMinusCaptureAtRest.hh,v 1.6 2001/08/01 17:12:20 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh b/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh index e62755878c..125d7819a5 100644 --- a/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4NeutronCaptureAtRest.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronCaptureAtRest.hh,v 1.3.6.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronCaptureAtRest.hh,v 1.5 2001/08/01 17:12:20 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh b/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh index 3754216ed7..3647dc681d 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusAbsorptionAtRest.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusAbsorptionAtRest.hh,v 1.3.6.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusAbsorptionAtRest.hh,v 1.5 2001/08/01 17:12:21 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh index 4c6a4d5d58..2192b0630e 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopAbsorption.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopAbsorption.hh,v 1.4.8.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopAbsorption.hh,v 1.7 2001/10/04 20:00:40 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -43,8 +43,6 @@ #ifndef G4PIMINUSSTOPABSORPTION_HH #define G4PIMINUSSTOPABSORPTION_HH -#include "g4rw/tpordvec.h" - #include "globals.hh" #include "G4DynamicParticle.hh" #include "G4DynamicParticleVector.hh" diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh index a6bab33cc8..7c05779f2c 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopAl.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopAl.hh,v 1.3.8.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopAl.hh,v 1.7 2001/10/05 16:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPAL_HH #define G4PIMINUSSTOPAL_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" @@ -68,12 +64,6 @@ public: // Destructor virtual ~G4PiMinusStopAl(); - // Definitions of absorption products - // virtual G4RWTValOrderedVector* DefinitionVector(); - - // 4-vectors of absorption products - // virtual G4RWTPtrOrderedVector* P4Vector(); - // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons(); diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh index b3565b1be0..f69e5c8aa3 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopC.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopC.hh,v 1.3.8.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopC.hh,v 1.6 2001/10/04 20:00:40 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPC_HH #define G4PIMINUSSTOPC_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh index 03e953ba78..24c42b4bee 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopCo.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopCo.hh,v 1.3.8.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopCo.hh,v 1.7 2001/10/05 16:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPCO_HH #define G4PIMINUSSTOPCO_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" @@ -68,12 +64,6 @@ public: // Destructor virtual ~G4PiMinusStopCo(); - // Definitions of absorption products - // virtual G4RWTValOrderedVector* DefinitionVector(); - - // 4-vectors of absorption products - // virtual G4RWTPtrOrderedVector* P4Vector(); - // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons(); diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh index 4a211dcedc..1940c90b0d 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopCu.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopCu.hh,v 1.3.8.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopCu.hh,v 1.7 2001/10/05 16:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPCU_HH #define G4PIMINUSSTOPCU_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" @@ -68,12 +64,6 @@ public: // Destructor virtual ~G4PiMinusStopCu(); - // Definitions of absorption products - // virtual G4RWTValOrderedVector* DefinitionVector(); - - // 4-vectors of absorption products - // virtual G4RWTPtrOrderedVector* P4Vector(); - // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons(); diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh index 73be4bbefe..00d76d4779 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopLi.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopLi.hh,v 1.3.8.2 2001/06/28 20:20:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopLi.hh,v 1.7 2001/10/05 16:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPLI_HH #define G4PIMINUSSTOPLI_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" @@ -68,12 +64,6 @@ public: // Destructor virtual ~G4PiMinusStopLi(); - // Definitions of absorption products - // virtual G4RWTValOrderedVector* DefinitionVector(); - - // 4-vectors of absorption products - // virtual G4RWTPtrOrderedVector* P4Vector(); - // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons(); diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh index 0e160ef3b2..fe2f14dc3d 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopMaterial.hh @@ -14,14 +14,14 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopMaterial.hh,v 1.4.8.2 2001/06/28 20:20:06 gunter Exp $ +// $Id: G4PiMinusStopMaterial.hh,v 1.7 2001/10/04 20:00:40 hpw Exp $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -42,9 +42,6 @@ #ifndef G4PIMINUSSTOPMATERIAL_HH #define G4PIMINUSSTOPMATERIAL_HH -#include "g4rw/tvordvec.h" -#include "g4rw/tpordvec.h" -#include "g4rw/cstring.h" #include "globals.hh" #include "G4LorentzVector.hh" //#include "G4String.hh" @@ -72,19 +69,19 @@ public: virtual ~G4PiMinusStopMaterial(); // Definitions of absorption products - virtual G4RWTPtrOrderedVector* DefinitionVector(); + virtual G4std::vector* DefinitionVector(); // 4-vectors of absorption products - virtual G4RWTPtrOrderedVector* P4Vector(const G4double binding, - const G4double mass); + virtual G4std::vector* P4Vector(const G4double binding, + const G4double mass); // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons()=0; protected: - G4RWTPtrOrderedVector* _definitions; - G4RWTPtrOrderedVector* _momenta; + G4std::vector* _definitions; + G4std::vector* _momenta; G4DistributionGenerator* _distributionE; G4DistributionGenerator* _distributionAngle; G4double theR; diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh index 08ecb96790..92b0d5e5c1 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopN.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopN.hh,v 1.3.8.2 2001/06/28 20:20:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopN.hh,v 1.7 2001/10/05 16:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPN_HH #define G4PIMINUSSTOPN_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" @@ -68,12 +64,6 @@ public: // Destructor virtual ~G4PiMinusStopN(); - // Definitions of absorption products - // virtual G4RWTValOrderedVector* DefinitionVector(); - - // 4-vectors of absorption products - // virtual G4RWTPtrOrderedVector* P4Vector(); - // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons(); diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh index 0177fabe6c..b4d776741a 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopO.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopO.hh,v 1.3.8.2 2001/06/28 20:20:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopO.hh,v 1.7 2001/10/05 16:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPO_HH #define G4PIMINUSSTOPO_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" @@ -68,12 +64,6 @@ public: // Destructor virtual ~G4PiMinusStopO(); - // Definitions of absorption products - // virtual G4RWTValOrderedVector* DefinitionVector(); - - // 4-vectors of absorption products - // virtual G4RWTPtrOrderedVector* P4Vector(); - // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons(); diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh index cdac9806b2..2df6fd454b 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopPb.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopPb.hh,v 1.3.8.2 2001/06/28 20:20:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopPb.hh,v 1.7 2001/10/05 16:09:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPPB_HH #define G4PIMINUSSTOPPB_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" @@ -68,12 +64,6 @@ public: // Destructor virtual ~G4PiMinusStopPb(); - // Definitions of absorption products - // virtual G4RWTValOrderedVector* DefinitionVector(); - - // 4-vectors of absorption products - // virtual G4RWTPtrOrderedVector* P4Vector(); - // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons(); diff --git a/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh b/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh index 2f6361086f..ce7670c64b 100644 --- a/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh +++ b/source/processes/hadronic/stopping/include/G4PiMinusStopTa.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopTa.hh,v 1.3.8.2 2001/06/28 20:20:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopTa.hh,v 1.7 2001/10/05 16:09:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -41,10 +41,6 @@ #ifndef G4PIMINUSSTOPTA_HH #define G4PIMINUSSTOPTA_HH -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" - #include "G4PiMinusStopMaterial.hh" #include "globals.hh" #include "G4LorentzVector.hh" @@ -68,12 +64,6 @@ public: // Destructor virtual ~G4PiMinusStopTa(); - // Definitions of absorption products - // virtual G4RWTValOrderedVector* DefinitionVector(); - - // 4-vectors of absorption products - // virtual G4RWTPtrOrderedVector* P4Vector(); - // Number of final nucleons, out of generated absorption products virtual G4double FinalNucleons(); diff --git a/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh b/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh index ceb26eb0c9..ea96ae6683 100644 --- a/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh +++ b/source/processes/hadronic/stopping/include/G4PionMinusAbsorptionAtRest.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PionMinusAbsorptionAtRest.hh,v 1.3.6.2 2001/06/28 20:20:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PionMinusAbsorptionAtRest.hh,v 1.5 2001/08/01 17:12:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh b/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh index 25d616b4a1..50d74a701d 100644 --- a/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopDeexcitation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StopDeexcitation.hh,v 1.3.8.2 2001/06/28 20:20:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StopDeexcitation.hh,v 1.5 2001/08/01 17:12:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh b/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh index 47f17da296..c55a1d4965 100644 --- a/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh +++ b/source/processes/hadronic/stopping/include/G4StopDeexcitationAlgorithm.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StopDeexcitationAlgorithm.hh,v 1.3.8.2 2001/06/28 20:20:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StopDeexcitationAlgorithm.hh,v 1.5 2001/08/01 17:12:24 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh b/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh index d320652b2d..97f844b0e5 100644 --- a/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopDummyDeexcitation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StopDummyDeexcitation.hh,v 1.3.8.2 2001/06/28 20:20:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StopDummyDeexcitation.hh,v 1.5 2001/08/01 17:12:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/include/G4StopElementSelector.hh b/source/processes/hadronic/stopping/include/G4StopElementSelector.hh index a5caf1f5f7..4346c9ce72 100644 --- a/source/processes/hadronic/stopping/include/G4StopElementSelector.hh +++ b/source/processes/hadronic/stopping/include/G4StopElementSelector.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh b/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh index a261ad10a2..0820884e4e 100644 --- a/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh +++ b/source/processes/hadronic/stopping/include/G4StopTheoDeexcitation.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StopTheoDeexcitation.hh,v 1.3.8.2 2001/06/28 20:20:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StopTheoDeexcitation.hh,v 1.5 2001/08/01 17:12:25 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc b/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc index 4da849a68e..ceee4ca83e 100644 --- a/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4AntiNeutronAnnihilationAtRest.cc @@ -14,16 +14,13 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiNeutronAnnihilationAtRest.cc,v 1.2.8.2 2001/06/28 20:20:07 gunter Exp $ -// GEANT4 tag $Name: $ -// // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 // CERN Geneva Switzerland @@ -171,15 +168,14 @@ G4VParticleChange* G4AntiNeutronAnnihilationAtRest::AtRestDoIt( // probabilities are included. if (random<=runningSum) { - targetCharge = G4double((*theElementVector)(i2)->GetZ()); - targetAtomicMass = (*theElementVector)(i2)->GetN(); + targetCharge = G4double( ((*theElementVector)[i2])->GetZ()); + targetAtomicMass = (*theElementVector)[i2]->GetN(); } } if (random>runningSum) { - targetCharge = G4double((*theElementVector)(numberOfElements-1)->GetZ()); - targetAtomicMass = (*theElementVector)(numberOfElements-1)->GetN(); - + targetCharge = G4double( ((*theElementVector)[numberOfElements-1])->GetZ()); + targetAtomicMass = (*theElementVector)[numberOfElements-1]->GetN(); } if (verboseLevel>1) { diff --git a/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc b/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc index 731367f243..39cf632f98 100644 --- a/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4AntiProtonAnnihilationAtRest.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4AntiProtonAnnihilationAtRest.cc,v 1.2.8.2 2001/06/28 20:20:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AntiProtonAnnihilationAtRest.cc,v 1.5 2001/10/19 11:55:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 @@ -171,14 +171,14 @@ G4VParticleChange* G4AntiProtonAnnihilationAtRest::AtRestDoIt( // probabilities are included. if (random<=runningSum) { - targetCharge = G4double((*theElementVector)(i2)->GetZ()); - targetAtomicMass = (*theElementVector)(i2)->GetN(); + targetCharge = G4double((*theElementVector)[i2]->GetZ()); + targetAtomicMass = (*theElementVector)[i2]->GetN(); } } if (random>runningSum) { - targetCharge = G4double((*theElementVector)(numberOfElements-1)->GetZ()); - targetAtomicMass = (*theElementVector)(numberOfElements-1)->GetN(); + targetCharge = G4double((*theElementVector)[numberOfElements-1]->GetZ()); + targetAtomicMass = (*theElementVector)[numberOfElements-1]->GetN(); } diff --git a/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc b/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc index 096be83366..d2a448827b 100644 --- a/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc +++ b/source/processes/hadronic/stopping/src/G4DistributionGenerator.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DistributionGenerator.cc,v 1.4.8.2 2001/06/28 20:20:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DistributionGenerator.cc,v 1.8 2001/10/05 16:09:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -45,38 +45,38 @@ // Constructor -G4DistributionGenerator::G4DistributionGenerator(G4RWTValOrderedVector& x, - G4RWTValOrderedVector& values) +G4DistributionGenerator::G4DistributionGenerator(G4std::vector& x, + G4std::vector& values) { _x = x; // Check boundaries: must be size(x) = size(values) + 1 - if (x.entries() != (values.entries() + 1)) + if (x.size() != (values.size() + 1)) { G4cout << " Inconsistent parameters in G4DistributionGenerator " << G4endl; } - assert (x.entries() == (values.entries() + 1)); + assert (x.size() == (values.size() + 1)); G4double tot = 0.; - int i; - for (i=0; i 0.); - _cumProb.insert(0.); - // _cumProb.insert(values[0] / tot); + _cumProb.push_back(0.); + // _cumProb.push_back(values[0] / tot); G4double sum = 0.; - for (i=0; iGetZ()); - targetAtomicMass = (*theElementVector)(i2)->GetN(); + targetCharge = G4double( ((*theElementVector)[i2])->GetZ()); + targetAtomicMass = (*theElementVector)[i2]->GetN(); } } if (random>runningSum) { - targetCharge = G4double((*theElementVector)(numberOfElements-1)->GetZ()); - targetAtomicMass = (*theElementVector)(numberOfElements-1)->GetN(); + targetCharge = G4double((*theElementVector)[numberOfElements-1]->GetZ()); + targetAtomicMass = (*theElementVector)[numberOfElements-1]->GetN(); } diff --git a/source/processes/hadronic/stopping/src/G4KaonMinusAbsorptionAtRest.cc b/source/processes/hadronic/stopping/src/G4KaonMinusAbsorptionAtRest.cc index d2454c7ce7..f9bf246fc7 100644 --- a/source/processes/hadronic/stopping/src/G4KaonMinusAbsorptionAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4KaonMinusAbsorptionAtRest.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -126,8 +126,8 @@ G4VParticleChange* G4KaonMinusAbsorptionAtRest::AtRestDoIt // Secondary interactions G4DynamicParticle* thePion; - G4int i; - for(i = 0; i < absorptionProducts->length(); i++) + unsigned int i; + for(i = 0; i < absorptionProducts->size(); i++) { thePion = (*absorptionProducts)[i]; if (thePion->GetDefinition() == G4PionMinus::PionMinus() @@ -136,7 +136,8 @@ G4VParticleChange* G4KaonMinusAbsorptionAtRest::AtRestDoIt { if (AbsorbPionByNucleus(thePion)) { - absorptionProducts->remove(thePion); + absorptionProducts->erase(absorptionProducts->begin()+i); + i--; delete thePion; if (verboseLevel > 1) G4cout << "G4KaonMinusAbsorption::AtRestDoIt: Pion absorbed in Nucleus" @@ -147,7 +148,7 @@ G4VParticleChange* G4KaonMinusAbsorptionAtRest::AtRestDoIt G4DynamicParticle* theSigma; G4DynamicParticle* theLambda; - for (i = 0; i < absorptionProducts->length(); i++) + for (i = 0; i < absorptionProducts->size(); i++) { theSigma = (*absorptionProducts)[i]; if (theSigma->GetDefinition() == G4SigmaMinus::SigmaMinus() @@ -156,9 +157,10 @@ G4VParticleChange* G4KaonMinusAbsorptionAtRest::AtRestDoIt { theLambda = SigmaLambdaConversion(theSigma); if (theLambda != 0){ - absorptionProducts->remove(theSigma); + absorptionProducts->erase(absorptionProducts->begin()+i); + i--; delete theSigma; - absorptionProducts->append(theLambda); + absorptionProducts->push_back(theLambda); if (verboseLevel > 1) G4cout << "G4KaonMinusAbsorption::AtRestDoIt: SigmaLambdaConversion Done" @@ -171,11 +173,9 @@ G4VParticleChange* G4KaonMinusAbsorptionAtRest::AtRestDoIt G4double productEnergy = 0.; G4ThreeVector pProducts(0.,0.,0.); - G4int nN = 0; - G4int nP = 0; - G4int nAbsorptionProducts = 0; - if (absorptionProducts != 0) nAbsorptionProducts = absorptionProducts->entries(); + unsigned int nAbsorptionProducts = 0; + if (absorptionProducts != 0) nAbsorptionProducts = absorptionProducts->size(); for ( i = 0; ientries(); + unsigned int nFragmentationProducts = 0; + if (fragmentationProducts != 0) nFragmentationProducts = fragmentationProducts->size(); //Initialize ParticleChange aParticleChange.Initialize(track); @@ -242,12 +242,12 @@ G4VParticleChange* G4KaonMinusAbsorptionAtRest::AtRestDoIt for(i=0; iat(i)->GetDefinition(), - fragmentationProducts->at(i)->GetTotalEnergy(), - fragmentationProducts->at(i)->GetMomentum()); - G4double newTime = aParticleChange.GetGlobalTime(fragmentationProducts->at(i)->GetFormationTime()); + new G4DynamicParticle((*fragmentationProducts)[i]->GetDefinition(), + (*fragmentationProducts)[i]->GetTotalEnergy(), + (*fragmentationProducts)[i]->GetMomentum()); + G4double newTime = aParticleChange.GetGlobalTime((*fragmentationProducts)[i]->GetFormationTime()); aParticleChange.AddSecondary(aNew, newTime); - delete fragmentationProducts->at(i); + delete (*fragmentationProducts)[i]; } if (fragmentationProducts != 0) delete fragmentationProducts; @@ -426,14 +426,14 @@ G4DynamicParticleVector* G4KaonMinusAbsorptionAtRest::KaonNucleonReaction() theReactionKinematics.TwoBodyScattering( &modifiedHadron, &aNucleon, producedBaryon, producedMeson); - products->append(producedBaryon); - products->append(producedMeson); + products->push_back(producedBaryon); + products->push_back(producedMeson); if (verboseLevel > 1) { G4cout << "G4KaonMinusAbsorption::KaonNucleonReaction: Number of primaries = " - << products->entries() + << products->size() << ": " <GetParticleName() << ", " <GetParticleName() << G4endl; } @@ -534,9 +534,9 @@ G4DynamicParticle* G4KaonMinusAbsorptionAtRest::SigmaLambdaConversion(G4DynamicP // -G4NucleiPropertiesTable::GetAtomicMass(newZ,A) // -nucleonMass; // equivalent to -'initialBindingEnergy+nucleus.GetBindingEnergy' ! - G4double massDifference = - -G4NucleiPropertiesTable::GetBindingEnergy(Z,A) - +G4NucleiPropertiesTable::GetBindingEnergy(newZ,A); + //G4double massDifference = + // -G4NucleiPropertiesTable::GetBindingEnergy(Z,A) + // +G4NucleiPropertiesTable::GetBindingEnergy(newZ,A); // Add energy and momentum to nucleus, change Z,A diff --git a/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc b/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc index 86dcfedd89..f8de2661b8 100644 --- a/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc +++ b/source/processes/hadronic/stopping/src/G4MuMinusCaptureCascade.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -94,7 +94,7 @@ G4double G4MuMinusCaptureCascade::GetKShellEnergy(G4double Z) G4double Xuser) { G4double Yuser = 0.0; - G4int i; + size_t i; if(N < 1) return Yuser; @@ -228,7 +228,7 @@ void G4MuMinusCaptureCascade::DoBoundMuonMinusDecay(G4double Z, G4double massA, { // Simulation on Decay of mu- on a K-shell of the muonic atom - G4double Energy, r, x; + G4double Energy, x; G4double xmax = ( 1.0 + Emass*Emass/ (MuMass*MuMass) ); G4double KEnergy = GetKShellEnergy(Z); diff --git a/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc b/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc index 9b00265a15..7cb3f4eaf6 100644 --- a/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4MuonMinusCaptureAtRest.cc,v 1.5.8.2 2001/06/28 20:20:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonMinusCaptureAtRest.cc,v 1.7 2001/08/01 17:12:31 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc b/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc index 05fdc0e380..f14634240b 100644 --- a/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4NeutronCaptureAtRest.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4NeutronCaptureAtRest.cc,v 1.2.8.2 2001/06/28 20:20:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NeutronCaptureAtRest.cc,v 1.5 2001/10/19 11:55:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- // GEANT 4 class implementation file --- Copyright CERN 1998 @@ -162,14 +162,14 @@ G4VParticleChange* G4NeutronCaptureAtRest::AtRestDoIt( // probabilities are included. if (random<=runningSum) { - targetCharge = G4double((*theElementVector)(i2)->GetZ()); - targetAtomicMass = (*theElementVector)(i2)->GetN(); + targetCharge = G4double((*theElementVector)[i2]->GetZ()); + targetAtomicMass = (*theElementVector)[i2]->GetN(); } } if (random>runningSum) { - targetCharge = G4double((*theElementVector)(numberOfElements-1)->GetZ()); - targetAtomicMass = (*theElementVector)(numberOfElements-1)->GetN(); + targetCharge = G4double((*theElementVector)[numberOfElements-1]->GetZ()); + targetAtomicMass = (*theElementVector)[numberOfElements-1]->GetN(); } diff --git a/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc b/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc index fc08f8d045..87d7d229e8 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusAbsorptionAtRest.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusAbsorptionAtRest.cc,v 1.4.8.2 2001/06/28 20:20:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusAbsorptionAtRest.cc,v 1.9 2001/10/19 11:55:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -104,20 +104,20 @@ G4VParticleChange* G4PiMinusAbsorptionAtRest::AtRestDoIt(const G4Track& track, c G4double Z; G4double random = G4UniformRand(); const G4ElementVector* theElementVector = material->GetElementVector(); - G4int i; + unsigned int i; G4double sum = 0; G4double totalsum=0; for(i=0; iGetNumberOfElements(); ++i) { - if((*theElementVector)(i)->GetZ()!=1) totalsum+=material->GetFractionVector()[i]; + if((*theElementVector)[i]->GetZ()!=1) totalsum+=material->GetFractionVector()[i]; } for (i = 0; iGetNumberOfElements(); ++i) { - if((*theElementVector)(i)->GetZ()!=1) sum += material->GetFractionVector()[i]; + if((*theElementVector)[i]->GetZ()!=1) sum += material->GetFractionVector()[i]; if ( sum/totalsum > random ) { - A = (*theElementVector)(i)->GetA()*mole/g; - Z = (*theElementVector)(i)->GetZ(); + A = (*theElementVector)[i]->GetA()*mole/g; + Z = (*theElementVector)[i]->GetZ(); break; } } @@ -146,13 +146,13 @@ G4VParticleChange* G4PiMinusAbsorptionAtRest::AtRestDoIt(const G4Track& track, c G4double pNucleus = (stopAbsorption.RecoilMomentum()).mag(); G4ReactionProductVector* fragmentationProducts = stopDeexcitation.DoBreakUp(newA,newZ,excitation,pNucleus); - G4int nAbsorptionProducts = 0; + unsigned int nAbsorptionProducts = 0; if (absorptionProducts != 0) - { nAbsorptionProducts = absorptionProducts->entries(); } + { nAbsorptionProducts = absorptionProducts->size(); } - G4int nFragmentationProducts = 0; + unsigned int nFragmentationProducts = 0; if (fragmentationProducts != 0) - { nFragmentationProducts = fragmentationProducts->entries(); } + { nFragmentationProducts = fragmentationProducts->size(); } if (verboseLevel>0) { @@ -167,18 +167,18 @@ G4VParticleChange* G4PiMinusAbsorptionAtRest::AtRestDoIt(const G4Track& track, c aParticleChange.SetNumberOfSecondaries(G4int(nAbsorptionProducts + nFragmentationProducts)); for (i = 0; iat(i)); } + { aParticleChange.AddSecondary((*absorptionProducts)[i]); } // for (i = 0; iat(i)); } for(i=0; iat(i)->GetDefinition(), - fragmentationProducts->at(i)->GetMomentum()); - G4double newTime = aParticleChange.GetGlobalTime(fragmentationProducts->at(i)->GetFormationTime()); + new G4DynamicParticle((*fragmentationProducts)[i]->GetDefinition(), + (*fragmentationProducts)[i]->GetMomentum()); + G4double newTime = aParticleChange.GetGlobalTime((*fragmentationProducts)[i]->GetFormationTime()); aParticleChange.AddSecondary(aNew, newTime); - delete fragmentationProducts->at(i); + delete (*fragmentationProducts)[i]; } if (fragmentationProducts != 0) delete fragmentationProducts; diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc index 9f9045113b..66dcc82624 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopAbsorption.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopAbsorption.cc,v 1.6.8.2 2001/06/28 20:20:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopAbsorption.cc,v 1.10 2001/10/05 16:09:44 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -40,9 +40,7 @@ #include "G4PiMinusStopAbsorption.hh" -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" +#include "g4std/vector" #include "globals.hh" #include "Randomize.hh" @@ -83,14 +81,14 @@ G4PiMinusStopAbsorption::~G4PiMinusStopAbsorption() G4DynamicParticleVector* G4PiMinusStopAbsorption::DoAbsorption() { - G4RWTPtrOrderedVector* defNucleons = _materialAlgo->DefinitionVector(); + G4std::vector* defNucleons = _materialAlgo->DefinitionVector(); G4double newA = _nucleusA; G4double newZ = _nucleusZ; if (defNucleons != 0) { - for (G4int i=0; ientries(); i++) + for (unsigned int i=0; isize(); i++) { if ( (*defNucleons)[i] == G4Proton::Proton()) { @@ -106,15 +104,15 @@ G4DynamicParticleVector* G4PiMinusStopAbsorption::DoAbsorption() G4double mass = G4NucleiProperties::GetNuclearMass(newA,newZ); - G4RWTPtrOrderedVector* p4Nucleons = _materialAlgo->P4Vector(binding,mass); + G4std::vector* p4Nucleons = _materialAlgo->P4Vector(binding,mass); if (defNucleons != 0 && p4Nucleons != 0) { - int nNucleons = p4Nucleons->entries(); + unsigned int nNucleons = p4Nucleons->size(); G4double seen = _materialAlgo->FinalNucleons() / 2.; G4int maxN = nNucleons; - if (defNucleons->entries() < nNucleons) { maxN = defNucleons->entries(); } + if (defNucleons->size() < nNucleons) { maxN = defNucleons->size(); } for (G4int i=0; iappend(product); } + { _absorptionProducts->push_back(product); } else { delete product; } } @@ -140,7 +138,7 @@ G4ThreeVector G4PiMinusStopAbsorption::RecoilMomentum() { G4ThreeVector pProducts(0.,0.,0.); - for (G4int i = 0; i< _absorptionProducts->entries(); i++) + for (unsigned int i = 0; i< _absorptionProducts->size(); i++) { pProducts = pProducts + (*_absorptionProducts)[i]->GetMomentum(); } @@ -151,7 +149,7 @@ G4ThreeVector G4PiMinusStopAbsorption::RecoilMomentum() G4int G4PiMinusStopAbsorption::NProtons() { G4int n = 0; - G4int entries = _absorptionProducts->entries(); + G4int entries = _absorptionProducts->size(); for (int i = 0; iGetDefinition() == G4Proton::Proton()) @@ -164,7 +162,7 @@ G4int G4PiMinusStopAbsorption::NProtons() G4int G4PiMinusStopAbsorption::NNeutrons() { G4int n = 0; - G4int entries = _absorptionProducts->entries(); + G4int entries = _absorptionProducts->size(); for (int i = 0; iGetDefinition() == G4Neutron::Neutron()) @@ -183,7 +181,7 @@ G4double G4PiMinusStopAbsorption::Energy() G4int nP = 0; - G4int nAbsorptionProducts = _absorptionProducts->entries(); + G4int nAbsorptionProducts = _absorptionProducts->size(); for (int i = 0; i(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; i(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; i(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; i(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; i(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; i(); - // _momenta = new G4RWTPtrOrderedVector(); _definitions = 0; _momenta = 0; _distributionE = 0; @@ -83,29 +79,29 @@ G4PiMinusStopMaterial::~G4PiMinusStopMaterial() if (_definitions != 0) delete _definitions; _definitions = 0; - _momenta->clearAndDestroy(); + for(unsigned int i=0; i<_momenta->size(); i++) delete(*_momenta)[i]; if (_momenta != 0) delete _momenta; delete _distributionE; delete _distributionAngle; } -G4RWTPtrOrderedVector* G4PiMinusStopMaterial::DefinitionVector() +G4std::vector* G4PiMinusStopMaterial::DefinitionVector() { - _definitions->append(G4Neutron::Neutron()); + _definitions->push_back(G4Neutron::Neutron()); G4double ranflat = G4UniformRand(); if (ranflat < theR) - { _definitions->append(G4Proton::Proton()); } + { _definitions->push_back(G4Proton::Proton()); } else - { _definitions->append(G4Neutron::Neutron()); } + { _definitions->push_back(G4Neutron::Neutron()); } return _definitions; } -G4RWTPtrOrderedVector* G4PiMinusStopMaterial::P4Vector(const G4double binding, +G4std::vector* G4PiMinusStopMaterial::P4Vector(const G4double binding, const G4double massNucleus) { @@ -164,8 +160,8 @@ G4RWTPtrOrderedVector* G4PiMinusStopMaterial::P4Vector(const G4 } while ((eKin1 + eKin2 + eRecoil) > availableE); - _momenta->append(new G4LorentzVector(p1)); - _momenta->append(new G4LorentzVector(p2)); + _momenta->push_back(new G4LorentzVector(p1)); + _momenta->push_back(new G4LorentzVector(p2)); return _momenta; @@ -192,7 +188,7 @@ G4double G4PiMinusStopMaterial::RecoilEnergy(const G4double mass) { G4ThreeVector p(0.,0.,0.); - for (G4int i = 0; i< _momenta->entries(); i++) + for (unsigned int i = 0; i< _momenta->size(); i++) { p = p + (*_momenta)[i]->vect(); } diff --git a/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc b/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc index de6485f08e..aaf1f0ddc1 100644 --- a/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc +++ b/source/processes/hadronic/stopping/src/G4PiMinusStopN.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4PiMinusStopN.cc,v 1.4.8.2 2001/06/28 20:20:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PiMinusStopN.cc,v 1.7 2001/10/04 20:00:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -42,9 +42,7 @@ #include "G4PiMinusStopN.hh" -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" +#include "g4std/vector" #include "globals.hh" #include "Randomize.hh" @@ -107,28 +105,28 @@ G4PiMinusStopN::G4PiMinusStopN() // R ratio theR = 1. / (1. + npRatio); - _definitions = new G4RWTPtrOrderedVector(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; i(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; i(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; i(); - _momenta = new G4RWTPtrOrderedVector(); + _definitions = new G4std::vector(); + _momenta = new G4std::vector(); - G4RWTValOrderedVector eKinVector; - G4RWTValOrderedVector eKinDataVector; + G4std::vector eKinVector; + G4std::vector eKinDataVector; int i; for (i=0; i angleVector; - G4RWTValOrderedVector angleDataVector; + G4std::vector angleVector; + G4std::vector angleDataVector; for (i=0; iGetPDGMass()/GeV), - pdefPionMinus(G4PionMinus::PionMinus()), pdefGamma(G4Gamma::Gamma()), pdefPionZero(G4PionZero::PionZero()), + pdefPionMinus(G4PionMinus::PionMinus()), pdefProton(G4Proton::Proton()), pdefNeutron(G4Neutron::Neutron()), pdefDeuteron(G4Deuteron::Deuteron()), @@ -164,14 +164,14 @@ G4VParticleChange* G4PionMinusAbsorptionAtRest::AtRestDoIt( // probabilities are included. if (random<=runningSum) { - targetCharge = G4double((*theElementVector)(i2)->GetZ()); - targetAtomicMass = (*theElementVector)(i2)->GetN(); + targetCharge = G4double((*theElementVector)[i2]->GetZ()); + targetAtomicMass = (*theElementVector)[i2]->GetN(); } } if (random>runningSum) { - targetCharge = G4double((*theElementVector)(numberOfElements-1)->GetZ()); - targetAtomicMass = (*theElementVector)(numberOfElements-1)->GetN(); + targetCharge = G4double((*theElementVector)[numberOfElements-1]->GetZ()); + targetAtomicMass = (*theElementVector)[numberOfElements-1]->GetN(); } diff --git a/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc index 11661b9abd..966dfb0125 100644 --- a/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopDeexcitation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StopDeexcitation.cc,v 1.4.8.2 2001/06/28 20:20:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StopDeexcitation.cc,v 1.7 2001/10/04 20:00:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -40,9 +40,7 @@ #include "G4StopDeexcitation.hh" -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" -#include "g4rw/cstring.h" +#include "g4std/vector" #include "globals.hh" #include "Randomize.hh" diff --git a/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc index 8b2c570a22..a7a0f2639c 100644 --- a/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopDummyDeexcitation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StopDummyDeexcitation.cc,v 1.4.8.2 2001/06/28 20:20:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StopDummyDeexcitation.cc,v 1.7 2001/10/04 20:00:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -42,9 +42,6 @@ #include "G4StopDummyDeexcitation.hh" -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" - #include "globals.hh" #include "G4DynamicParticleVector.hh" #include "G4ThreeVector.hh" diff --git a/source/processes/hadronic/stopping/src/G4StopElementSelector.cc b/source/processes/hadronic/stopping/src/G4StopElementSelector.cc index 9cd6581b89..8664f605e4 100644 --- a/source/processes/hadronic/stopping/src/G4StopElementSelector.cc +++ b/source/processes/hadronic/stopping/src/G4StopElementSelector.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -75,14 +75,14 @@ G4Element* G4StopElementSelector::GetElement(const G4Material* aMaterial) const G4int numberOfElements = aMaterial->GetNumberOfElements(); const G4ElementVector* theElementVector = aMaterial->GetElementVector(); - if(1 == numberOfElements) return (*theElementVector)(0); + if(1 == numberOfElements) return (*theElementVector)[0]; const G4double* theAtomicNumberDensity = aMaterial->GetAtomicNumDensityVector(); G4double sum = 0.0; for ( i=0; i < numberOfElements; i++ ) { - Z = (*theElementVector)(i)->GetZ(); + Z = (*theElementVector)[i]->GetZ(); // Halogens if( (9.0 == Z) || (17.0 == Z) || (35.0 == Z) || (53.0 == Z) || (85.0 == Z) ) { @@ -105,7 +105,7 @@ G4Element* G4StopElementSelector::GetElement(const G4Material* aMaterial) // Selection of element do { i++; - Z = (*theElementVector)(i)->GetZ(); + Z = (*theElementVector)[i]->GetZ(); // Galogens if( (9.0 == Z) || (17.0 == Z) || (35.0 == Z) || (53.0 == Z) || (85.0 == Z) ) { @@ -121,7 +121,7 @@ G4Element* G4StopElementSelector::GetElement(const G4Material* aMaterial) } } while ( (sum < random) && (i < numberOfElements - 1) ); - return (*theElementVector)(i); + return (*theElementVector)[i]; } //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... @@ -198,7 +198,7 @@ G4double G4StopElementSelector::GetMuonCaptureRate(G4double Z, G4double A) (2.0 * (A - Z) / Z + abs(a2ze - 1.) ) * b0c / (A * 4.) ); // == Mu capture data are taken if exist - for (G4int j = 0; j < ListZE; j++) { + for (unsigned int j = 0; j < ListZE; j++) { if( ListZExp[j] == i + 1) { lambda = ListCaptureVel[j] / microsecond; break; diff --git a/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc b/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc index d4691f3be7..993ee938fa 100644 --- a/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc +++ b/source/processes/hadronic/stopping/src/G4StopTheoDeexcitation.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StopTheoDeexcitation.cc,v 1.4.8.2 2001/06/28 20:20:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StopTheoDeexcitation.cc,v 1.7 2001/10/04 20:00:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------------- // GEANT 4 class file --- Copyright CERN 1998 @@ -44,9 +44,6 @@ #include "G4StopTheoDeexcitation.hh" -#include "g4rw/tpordvec.h" -#include "g4rw/tvordvec.h" - #include "globals.hh" #include "G4ThreeVector.hh" #include "G4LorentzVector.hh" diff --git a/source/processes/hadronic/util/include/DumpFrame.hh b/source/processes/hadronic/util/include/DumpFrame.hh index cfce860fe3..d1cc1915b3 100644 --- a/source/processes/hadronic/util/include/DumpFrame.hh +++ b/source/processes/hadronic/util/include/DumpFrame.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/util/include/G4DynamicParticleVector.hh b/source/processes/hadronic/util/include/G4DynamicParticleVector.hh index 1bdf889ad5..395b01ae86 100644 --- a/source/processes/hadronic/util/include/G4DynamicParticleVector.hh +++ b/source/processes/hadronic/util/include/G4DynamicParticleVector.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4DynamicParticleVector.hh,v 1.3.8.2 2001/06/28 20:20:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DynamicParticleVector.hh,v 1.8 2001/10/06 06:53:06 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // History: first implementation, alternative to G4FastVector @@ -36,16 +36,10 @@ #include "globals.hh" #include "G4ios.hh" -class G4DynamicParticle; -#include "g4rw/tpordvec.h" +#include "G4DynamicParticle.hh" +#include "g4std/vector" -// #ifdef STL -// //in future use STL vector as container of dynamic particles ... -// typedef Vector G4DynamicParticleVector; -// #elseifdef RWT - -typedef G4RWTPtrOrderedVector G4DynamicParticleVector; - -// #endif +typedef G4std::vector G4DynamicParticleVector; +struct DeleteDynamicParticle {void operator()(G4DynamicParticle*aP) {delete aP;}}; #endif diff --git a/source/processes/hadronic/util/include/G4GHEKinematicsVector.hh b/source/processes/hadronic/util/include/G4GHEKinematicsVector.hh index 5639ad09fe..5ff56cb776 100644 --- a/source/processes/hadronic/util/include/G4GHEKinematicsVector.hh +++ b/source/processes/hadronic/util/include/G4GHEKinematicsVector.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4GHEKinematicsVector.hh,v 1.2.8.2 2001/06/28 20:20:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GHEKinematicsVector.hh,v 1.4 2001/08/01 17:12:40 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1998 diff --git a/source/processes/hadronic/util/include/G4IsoResult.hh b/source/processes/hadronic/util/include/G4IsoResult.hh index 31e53a5b13..85dfc8e29f 100644 --- a/source/processes/hadronic/util/include/G4IsoResult.hh +++ b/source/processes/hadronic/util/include/G4IsoResult.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -42,6 +42,8 @@ public: theMotherNucleus = aMother; } + ~G4IsoResult(); + G4String GetIsotope() { return theIsoName; } G4Nucleus GetMotherNucleus() { return theMotherNucleus; } diff --git a/source/processes/hadronic/util/include/G4LightMedia.hh b/source/processes/hadronic/util/include/G4LightMedia.hh index 7cc44059c7..d90a07b421 100644 --- a/source/processes/hadronic/util/include/G4LightMedia.hh +++ b/source/processes/hadronic/util/include/G4LightMedia.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LightMedia.hh,v 1.2.8.1 2001/06/28 19:15:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LightMedia.hh,v 1.4 2001/08/01 17:12:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Light Media Charge and/or Strangeness Exchange // J.L. Chuma, TRIUMF, 21-Feb-1997 diff --git a/source/processes/hadronic/util/include/G4Nucleus.hh b/source/processes/hadronic/util/include/G4Nucleus.hh index 21a48f21aa..7bb6136fea 100644 --- a/source/processes/hadronic/util/include/G4Nucleus.hh +++ b/source/processes/hadronic/util/include/G4Nucleus.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -90,10 +90,13 @@ pnBlackTrackEnergy=right.pnBlackTrackEnergy; dtaBlackTrackEnergy=right.dtaBlackTrackEnergy; theTemp = right.theTemp; + excitationEnergy = right.excitationEnergy; + momentum = right.momentum; + fermiMomentum = right.fermiMomentum; } return *this; } - + inline G4bool operator==( const G4Nucleus &right ) const { return ( this == (G4Nucleus *) &right ); } diff --git a/source/processes/hadronic/util/include/G4Pair.hh b/source/processes/hadronic/util/include/G4Pair.hh index bdd63669d3..f1431f9f53 100644 --- a/source/processes/hadronic/util/include/G4Pair.hh +++ b/source/processes/hadronic/util/include/G4Pair.hh @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * diff --git a/source/processes/hadronic/util/include/G4ParticleVector.hh b/source/processes/hadronic/util/include/G4ParticleVector.hh index 2eab8240ec..9af44d349a 100644 --- a/source/processes/hadronic/util/include/G4ParticleVector.hh +++ b/source/processes/hadronic/util/include/G4ParticleVector.hh @@ -14,19 +14,16 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ParticleVector.hh,v 1.3.8.1 2001/06/28 19:15:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleVector.hh,v 1.7 2001/10/05 16:10:06 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // -// ------------------------------------------------------------ -// HPW decoupling theo models from RW (Mon Mar 16 1998) -// ------------------------------------------------------------ #ifndef G4ParticleVector_h #define G4ParticleVector_h 1 @@ -34,13 +31,9 @@ #include "globals.hh" #include "G4ios.hh" #include "G4DynamicParticle.hh" -#include "g4rw/tpordvec.h" +#include "g4std/vector" -// #ifdef STL -// for future use STL vector as container -// typedef Vector G4ParticleVector; -// #elseifdef RWT - -typedef G4RWTPtrOrderedVector G4ParticleVector; +typedef G4std::vector G4ParticleVector; +struct DeleteDynamicParticle {void operator()(G4DynamicParticle*aP) {delete aP;}}; #endif diff --git a/source/processes/hadronic/util/include/G4ReactionDynamics.hh b/source/processes/hadronic/util/include/G4ReactionDynamics.hh index 73341a1b73..cfcd285505 100644 --- a/source/processes/hadronic/util/include/G4ReactionDynamics.hh +++ b/source/processes/hadronic/util/include/G4ReactionDynamics.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ReactionDynamics.hh,v 1.2.8.1 2001/06/28 19:15:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReactionDynamics.hh,v 1.6 2001/10/04 20:00:43 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Reaction Dynamics // original by H.P. Wellisch @@ -47,7 +47,7 @@ G4ReactionDynamics() {} - ~G4ReactionDynamics() {} + virtual ~G4ReactionDynamics() {} virtual G4double FindInelasticity() { return 0.0; } @@ -120,7 +120,7 @@ G4bool &targetHasChanged ); void NuclearReaction( // derived from NUCREC - G4FastVector &vec, + G4FastVector &vec, G4int &vecLen, const G4DynamicParticle *originalIncident, const G4Nucleus &aNucleus, diff --git a/source/processes/hadronic/util/include/G4ReactionKinematics.hh b/source/processes/hadronic/util/include/G4ReactionKinematics.hh index ae9c6bbe7c..457e7637be 100644 --- a/source/processes/hadronic/util/include/G4ReactionKinematics.hh +++ b/source/processes/hadronic/util/include/G4ReactionKinematics.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ReactionKinematics.hh,v 1.2.8.2 2001/06/28 20:20:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReactionKinematics.hh,v 1.4 2001/08/01 17:12:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 class header file --- Copyright CERN 1995 diff --git a/source/processes/hadronic/util/include/G4ReactionProduct.hh b/source/processes/hadronic/util/include/G4ReactionProduct.hh index f05d6ca2c6..aba53d8567 100644 --- a/source/processes/hadronic/util/include/G4ReactionProduct.hh +++ b/source/processes/hadronic/util/include/G4ReactionProduct.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ReactionProduct.hh,v 1.2.8.1 2001/06/28 19:15:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReactionProduct.hh,v 1.4 2001/08/01 17:12:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // J.L. Chuma, TRIUMF, 31-Oct-1996 // last modified: 19-Dec-1996 diff --git a/source/processes/hadronic/util/include/G4ReactionProductVector.hh b/source/processes/hadronic/util/include/G4ReactionProductVector.hh index 0ade96beb0..4c92068c6e 100644 --- a/source/processes/hadronic/util/include/G4ReactionProductVector.hh +++ b/source/processes/hadronic/util/include/G4ReactionProductVector.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ReactionProductVector.hh,v 1.3.8.2 2001/06/28 20:20:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReactionProductVector.hh,v 1.7 2001/10/05 16:10:06 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // History: first implementation, alternative to G4FastVector @@ -36,16 +36,10 @@ #include "globals.hh" #include "G4ios.hh" -class G4ReactionProduct; -#include "g4rw/tpordvec.h" +#include "G4ReactionProduct.hh" +#include "g4std/vector" -// #ifdef STL -// //in future use STL vector as container of reaction products ... -// typedef Vector G4ReactionProductVector; -// #elseifdef RWT - -typedef G4RWTPtrOrderedVector G4ReactionProductVector; - -// #endif +typedef G4std::vector G4ReactionProductVector; +struct DeleteReactionProduct{ void operator()(G4ReactionProduct * aR){delete aR;} }; #endif diff --git a/source/processes/hadronic/util/include/G4StableIsotopes.hh b/source/processes/hadronic/util/include/G4StableIsotopes.hh index 988548e410..2c747560b9 100644 --- a/source/processes/hadronic/util/include/G4StableIsotopes.hh +++ b/source/processes/hadronic/util/include/G4StableIsotopes.hh @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StableIsotopes.hh,v 1.4.6.1 2001/06/28 19:15:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StableIsotopes.hh,v 1.6 2001/08/01 17:12:42 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4StableIsotopes_h #define G4StableIsotopes_h 1 diff --git a/source/processes/hadronic/util/src/G4IsoResult.cc b/source/processes/hadronic/util/src/G4IsoResult.cc new file mode 100644 index 0000000000..be6a5013d3 --- /dev/null +++ b/source/processes/hadronic/util/src/G4IsoResult.cc @@ -0,0 +1,25 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#include "G4IsoResult.hh" + +G4IsoResult::~G4IsoResult(){} diff --git a/source/processes/hadronic/util/src/G4LightMedia.cc b/source/processes/hadronic/util/src/G4LightMedia.cc index f8fa8c0ae3..1c47da2b1b 100644 --- a/source/processes/hadronic/util/src/G4LightMedia.cc +++ b/source/processes/hadronic/util/src/G4LightMedia.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4LightMedia.cc,v 1.2.8.1 2001/06/28 19:15:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LightMedia.cc,v 1.5 2001/10/05 16:10:06 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Hadronic Process: Light Media Charge and/or Strangeness Exchange // J.L. Chuma, TRIUMF, 21-Feb-1997 @@ -37,10 +37,8 @@ const G4Nucleus & targetNucleus ) { G4ParticleDefinition* aNeutron = G4Neutron::Neutron(); - G4ParticleDefinition* aProton = G4Proton::Proton(); G4ParticleDefinition* aPiZero = G4PionZero::PionZero(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -77,11 +75,9 @@ const G4Nucleus& targetNucleus ) { G4ParticleDefinition* aNeutron = G4Neutron::Neutron(); - G4ParticleDefinition* aProton = G4Proton::Proton(); G4ParticleDefinition* aKaonZS = G4KaonZeroShort::KaonZeroShort(); G4ParticleDefinition* aKaonZL = G4KaonZeroLong::KaonZeroLong(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -112,12 +108,10 @@ const G4DynamicParticle* incidentParticle, const G4Nucleus& targetNucleus ) { - G4ParticleDefinition* aNeutron = G4Neutron::Neutron(); G4ParticleDefinition* aProton = G4Proton::Proton(); G4ParticleDefinition* aKaonPlus = G4KaonPlus::KaonPlus(); G4ParticleDefinition* aKaonZL = G4KaonZeroLong::KaonZeroLong(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -176,9 +170,7 @@ const G4Nucleus& targetNucleus ) { G4ParticleDefinition* aNeutron = G4Neutron::Neutron(); - G4ParticleDefinition* aProton = G4Proton::Proton(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -204,10 +196,8 @@ const G4Nucleus& targetNucleus ) { G4ParticleDefinition* aProton = G4Proton::Proton(); - G4ParticleDefinition* aNeutron = G4Neutron::Neutron(); G4ParticleDefinition* anAntiNeutron = G4AntiNeutron::AntiNeutron(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -234,10 +224,8 @@ const G4DynamicParticle* incidentParticle, const G4Nucleus& targetNucleus ) { - G4ParticleDefinition* aNeutron = G4Neutron::Neutron(); G4ParticleDefinition* aProton = G4Proton::Proton(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -262,11 +250,9 @@ const G4DynamicParticle* incidentParticle, const G4Nucleus& targetNucleus ) { - G4ParticleDefinition* aProton = G4Proton::Proton(); G4ParticleDefinition* aNeutron = G4Neutron::Neutron(); G4ParticleDefinition* anAntiProton = G4AntiProton::AntiProton(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -296,9 +282,7 @@ G4ParticleDefinition* aSigmaPlus = G4SigmaPlus::SigmaPlus(); G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus(); G4ParticleDefinition* aSigmaZero = G4SigmaZero::SigmaZero(); - G4ParticleDefinition* aLambda = G4Lambda::Lambda(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -376,9 +360,7 @@ G4ParticleDefinition* anAntiSigmaPlus = G4AntiSigmaPlus::AntiSigmaPlus(); G4ParticleDefinition* anAntiSigmaMinus = G4AntiSigmaMinus::AntiSigmaMinus(); G4ParticleDefinition* anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero(); - G4ParticleDefinition* anAntiLambda = G4AntiLambda::AntiLambda(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -457,9 +439,7 @@ G4ParticleDefinition* aProton = G4Proton::Proton(); G4ParticleDefinition* aLambda = G4Lambda::Lambda(); G4ParticleDefinition* aSigmaZero = G4SigmaZero::SigmaZero(); - G4ParticleDefinition* aSigmaPlus = G4SigmaPlus::SigmaPlus(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -521,9 +501,7 @@ G4ParticleDefinition* aProton = G4Proton::Proton(); G4ParticleDefinition* aLambda = G4Lambda::Lambda(); G4ParticleDefinition* aSigmaZero = G4SigmaZero::SigmaZero(); - G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -585,9 +563,7 @@ G4ParticleDefinition* aProton = G4Proton::Proton(); G4ParticleDefinition* anAntiLambda = G4AntiLambda::AntiLambda(); G4ParticleDefinition* anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero(); - G4ParticleDefinition* anAntiSigmaPlus = G4AntiSigmaPlus::AntiSigmaPlus(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -646,9 +622,7 @@ G4ParticleDefinition* aProton = G4Proton::Proton(); G4ParticleDefinition* anAntiLambda = G4AntiLambda::AntiLambda(); G4ParticleDefinition* anAntiSigmaZero = G4AntiSigmaZero::AntiSigmaZero(); - G4ParticleDefinition* anAntiSigmaMinus = G4AntiSigmaMinus::AntiSigmaMinus(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -711,9 +685,7 @@ G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus(); G4ParticleDefinition* aSigmaPlus = G4SigmaPlus::SigmaPlus(); G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus(); - G4ParticleDefinition* aXiZero = G4XiZero::XiZero(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -796,10 +768,8 @@ G4ParticleDefinition* aLambda = G4Lambda::Lambda(); G4ParticleDefinition* aSigmaZero = G4SigmaZero::SigmaZero(); G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus(); - G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus(); G4ParticleDefinition* aXiZero = G4XiZero::XiZero(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -888,9 +858,7 @@ G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus(); G4ParticleDefinition* aSigmaPlus = G4SigmaPlus::SigmaPlus(); G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus(); - G4ParticleDefinition* aXiZero = G4XiZero::XiZero(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -977,10 +945,8 @@ G4ParticleDefinition* aLambda = G4Lambda::Lambda(); G4ParticleDefinition* aSigmaZero = G4SigmaZero::SigmaZero(); G4ParticleDefinition* aSigmaMinus = G4SigmaMinus::SigmaMinus(); - G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus(); G4ParticleDefinition* aXiZero = G4XiZero::XiZero(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -1066,9 +1032,7 @@ G4ParticleDefinition* aSigmaPlus = G4SigmaPlus::SigmaPlus(); G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus(); G4ParticleDefinition* aXiZero = G4XiZero::XiZero(); - G4ParticleDefinition* anOmegaMinus = G4OmegaMinus::OmegaMinus(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); @@ -1169,9 +1133,7 @@ G4ParticleDefinition* aSigmaPlus = G4SigmaPlus::SigmaPlus(); G4ParticleDefinition* aXiMinus = G4XiMinus::XiMinus(); G4ParticleDefinition* aXiZero = G4XiZero::XiZero(); - G4ParticleDefinition* anOmegaMinus = G4OmegaMinus::OmegaMinus(); - const G4double atomicWeight = targetNucleus.GetN(); const G4double atomicNumber = targetNucleus.GetZ(); G4DynamicParticle* targetParticle = targetNucleus.ReturnTargetParticle(); diff --git a/source/processes/hadronic/util/src/G4Nucleus.cc b/source/processes/hadronic/util/src/G4Nucleus.cc index 4473bb6117..fc3dcd9d3a 100644 --- a/source/processes/hadronic/util/src/G4Nucleus.cc +++ b/source/processes/hadronic/util/src/G4Nucleus.cc @@ -14,7 +14,7 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * @@ -92,7 +92,7 @@ G4ReactionProduct G4Nucleus::GetThermalNucleus(G4double targetMass, G4double tem G4double random = G4UniformRand(); G4double sum = 0; const G4ElementVector *theElementVector = aMaterial->GetElementVector(); - G4int i; + unsigned int i; for(i=0; iGetNumberOfElements(); ++i ) { sum += aMaterial->GetAtomicNumDensityVector()[i]; @@ -102,8 +102,8 @@ G4ReactionProduct G4Nucleus::GetThermalNucleus(G4double targetMass, G4double tem { running += aMaterial->GetAtomicNumDensityVector()[i]; if( running/sum > random ) { - aEff = (*theElementVector)(i)->GetA()*mole/g; - zEff = (*theElementVector)(i)->GetZ(); + aEff = (*theElementVector)[i]->GetA()*mole/g; + zEff = (*theElementVector)[i]->GetZ(); break; } } @@ -185,13 +185,10 @@ G4ReactionProduct G4Nucleus::GetThermalNucleus(G4double targetMass, G4double tem G4double G4Nucleus::GetThermalPz( const G4double mass, const G4double temp ) const { - G4double result = 0.0; - for( int i=0; i<12 ; ++i ) - result += G4UniformRand() - 0.5; + G4double result = G4RandGauss::shoot(); result *= sqrt(k_Boltzmann*temp*mass); // Das ist impuls (Pz), // nichtrelativistische rechnung // Maxwell verteilung angenommen - if ( G4UniformRand()<0.5 ) result =-result; return result; } diff --git a/source/processes/hadronic/util/src/G4ReactionDynamics.cc b/source/processes/hadronic/util/src/G4ReactionDynamics.cc index 14ff24d2b6..9f14db7630 100644 --- a/source/processes/hadronic/util/src/G4ReactionDynamics.cc +++ b/source/processes/hadronic/util/src/G4ReactionDynamics.cc @@ -354,7 +354,6 @@ G4int innerCounter, outerCounter; G4bool eliminateThisParticle, resetEnergies, constantCrossSection; - G4double phi = G4UniformRand()*twopi; G4double forwardKinetic = 0.0, backwardKinetic = 0.0; // // process the secondary particles in reverse order @@ -368,6 +367,7 @@ for( i=(vecLen-1); i>=0; --i ) { + G4double phi = G4UniformRand()*twopi; if( vec[i]->GetNewlyAdded() ) // added from intranuclear cascade { if( vec[i]->GetSide() == -2 ) // is a nucleon @@ -456,6 +456,7 @@ } innerCounter = 0; // bug: reset the x,y components of the momentum, please. @@@@@@@ + vec[i]->SetMomentum( pt*cos(phi)*GeV, pt*sin(phi)*GeV ); // // start of inner iteration loop // @@ -585,7 +586,7 @@ } } } // closes outer loop - + if( eliminateThisParticle ) // not enough energy, eliminate this particle { if( vec[i]->GetSide() > 0 ) @@ -621,6 +622,7 @@ // set pt and phi values, they are changed somewhat in the iteration loop // set mass parameter for lambda fragmentation model // + G4double phi = G4UniformRand()*twopi; G4double ran = -log(1.0-G4UniformRand()); if( currentParticle.GetDefinition() == aPiMinus || currentParticle.GetDefinition() == aPiZero || @@ -844,8 +846,8 @@ } // closes outer loop if( eliminateThisParticle ) // not enough energy, eliminate target { - G4cerr << "eliminating target particle" << G4endl; - exit( EXIT_FAILURE ); + G4cerr << "Warning: eliminating target particle" << G4endl; +// exit( EXIT_FAILURE ); } } // @@ -866,7 +868,7 @@ pp = sqrt( abs( totalEnergy*totalEnergy - vecMass*vecMass ) )*GeV; pp1 = pseudoParticle[6].GetMomentum().mag()/MeV; if( pp1 < 1.0e-6*GeV ) - { + { rthnve = pi*G4UniformRand(); phinve = twopi*G4UniformRand(); G4double srth = sin(rthnve); @@ -1059,7 +1061,7 @@ pseudoParticle[3].SetTotalEnergy( sqrt( pOriginal*pOriginal + mOriginal*mOriginal )*GeV ); - G4double ekin0 = pseudoParticle[3].GetKineticEnergy()/GeV; +// G4double ekin0 = pseudoParticle[3].GetKineticEnergy()/GeV; pseudoParticle[4].SetMomentum( 0.0, 0.0, 0.0 ); pseudoParticle[4].SetMass( protonMass*numberofFinalStateNucleons*MeV ); @@ -1335,7 +1337,6 @@ G4int i; G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); G4ParticleDefinition *aProton = G4Proton::Proton(); - G4ParticleDefinition *anAntiProton = G4AntiProton::AntiProton(); G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); @@ -1909,7 +1910,7 @@ pseudoParticle[5].SetMass( protonMass*numberofFinalStateNucleons*MeV ); pseudoParticle[5].SetTotalEnergy( protonMass*numberofFinalStateNucleons*MeV ); - G4double ekin0 = pseudoParticle[4].GetKineticEnergy()/GeV; +// G4double ekin0 = pseudoParticle[4].GetKineticEnergy()/GeV; G4double theoreticalKinetic = pseudoParticle[4].GetTotalEnergy()/GeV + pseudoParticle[5].GetTotalEnergy()/GeV; @@ -2094,9 +2095,6 @@ // The b values are parametrizations from experimental data. // Not available values are taken from those of similar reactions. // - G4int i; - G4ParticleDefinition *aProton = G4Proton::Proton(); - G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); @@ -2105,9 +2103,7 @@ G4ParticleDefinition *aKaonZeroS = G4KaonZeroShort::KaonZeroShort(); G4ParticleDefinition *aKaonZeroL = G4KaonZeroLong::KaonZeroLong(); - // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); - const G4double kaonMinusMass = aKaonMinus->GetPDGMass()/GeV; - + // DEBUGGING --> DumpFrames::DumpFrame(vec, vecLen); static const G4double expxu = 82.; // upper bound for arg. of exp static const G4double expxl = -expxu; // lower bound for arg. of exp @@ -2117,16 +2113,16 @@ const G4double pOriginal = modifiedOriginal.GetMomentum().mag()/GeV; G4double currentMass = currentParticle.GetMass()/GeV; G4double targetMass = targetParticle.GetDefinition()->GetPDGMass()/GeV; - G4double centerofmassEnergy = sqrt( mOriginal*mOriginal + - targetMass*targetMass + - 2.0*targetMass*etOriginal ); // GeV +// G4double centerofmassEnergy = sqrt( mOriginal*mOriginal + +// targetMass*targetMass + +// 2.0*targetMass*etOriginal ); // GeV targetMass = targetParticle.GetMass()/GeV; const G4double atomicWeight = targetNucleus.GetN(); - const G4double atomicNumber = targetNucleus.GetZ(); +// const G4double atomicNumber = targetNucleus.GetZ(); G4double etCurrent = currentParticle.GetTotalEnergy()/GeV; G4double pCurrent = currentParticle.GetTotalMomentum()/GeV; - G4double ekCurrent = currentParticle.GetKineticEnergy()/GeV; +// G4double ekCurrent = currentParticle.GetKineticEnergy()/GeV; G4double cmEnergy = sqrt( currentMass*currentMass + targetMass*targetMass + 2.0*targetMass*etCurrent ); // in GeV @@ -2562,7 +2558,7 @@ G4double ran; if( x > 9.9 ) // use normal distribution with sigma^2 = - iran = G4std::max( 0.0, x+normal()*sqrt(x) ); + iran = static_cast(G4std::max( 0.0, x+normal()*sqrt(x) ) ); else { G4int mm = G4int(5.0*x); if( mm <= 0 ) // for very small x try iran=1,2,3 @@ -2689,93 +2685,64 @@ // inclusive distributions, but it is necessary for momentum conservation // const G4double atomicWeight = targetNucleus.GetN(); - const G4double atomicNumber = targetNucleus.GetZ(); const G4double logWeight = log(atomicWeight); G4ParticleDefinition *aPiMinus = G4PionMinus::PionMinus(); - G4ParticleDefinition *aProton = G4Proton::Proton(); - G4ParticleDefinition *aNeutron = G4Neutron::Neutron(); G4ParticleDefinition *aPiPlus = G4PionPlus::PionPlus(); G4ParticleDefinition *aPiZero = G4PionZero::PionZero(); G4int i; - G4ReactionProduct pseudoParticle[4]; - for( i=0; i<4; ++i )pseudoParticle[i].SetZero(); - pseudoParticle[0] = ( pseudoParticle[0] + currentParticle ) + targetParticle; - for( i=0; iGetMomentum()); // // Some smearing in transverse direction from Fermi motion // G4float pp, pp1; - G4double alekw, pix, piy, piz, p, rthnve, phinve; - G4double ry, rz, rx, a1, ran1, ran2, xxh, exh, pxTemp, pyTemp, pzTemp; + G4double alekw, p, rthnve, phinve; + G4double r1, r2, a1, ran1, ran2, xxh, exh, pxTemp, pyTemp, pzTemp; - ry = G4UniformRand(); - rz = G4UniformRand(); - rx = twopi*rz; - a1 = sqrt(-2.0*log(ry)); - ran1 = a1*sin(rx)*0.020*numberofFinalStateNucleons*GeV; - ran2 = a1*cos(rx)*0.020*numberofFinalStateNucleons*GeV; - pseudoParticle[0].SetMomentum( pseudoParticle[0].GetMomentum().x()+ran1, - pseudoParticle[0].GetMomentum().y()+ran2 ); - pseudoParticle[2].SetMomentum( temp ); - pseudoParticle[3].SetMomentum( pseudoParticle[0].GetMomentum() ); - - pix = pseudoParticle[2].GetMomentum().y()*pseudoParticle[3].GetMomentum().z() - - pseudoParticle[2].GetMomentum().z()*pseudoParticle[3].GetMomentum().y(); - piy = pseudoParticle[2].GetMomentum().z()*pseudoParticle[3].GetMomentum().x() - - pseudoParticle[2].GetMomentum().x()*pseudoParticle[3].GetMomentum().z(); - piz = pseudoParticle[2].GetMomentum().x()*pseudoParticle[3].GetMomentum().y() - - pseudoParticle[2].GetMomentum().y()*pseudoParticle[3].GetMomentum().x(); - pseudoParticle[1].SetMomentum( pix, piy, piz ); - - pix = pseudoParticle[3].GetMomentum().y()*pseudoParticle[1].GetMomentum().z() - - pseudoParticle[3].GetMomentum().z()*pseudoParticle[1].GetMomentum().y(); - piy = pseudoParticle[3].GetMomentum().z()*pseudoParticle[1].GetMomentum().x() - - pseudoParticle[3].GetMomentum().x()*pseudoParticle[1].GetMomentum().z(); - piz = pseudoParticle[3].GetMomentum().x()*pseudoParticle[1].GetMomentum().y() - - pseudoParticle[3].GetMomentum().y()*pseudoParticle[1].GetMomentum().x(); - pseudoParticle[2].SetMomentum( pix, piy, piz ); - - p = pseudoParticle[1].GetMomentum().mag(); - if( p == 0.0 ) - pseudoParticle[1].SetMomentum( 0.0, 0.0, 0.0 ); - else - pseudoParticle[1].SetMomentum( pseudoParticle[1].GetMomentum() * (1./p) ); - - p = pseudoParticle[2].GetMomentum().mag(); - if( p == 0.0 ) - pseudoParticle[2].SetMomentum( 0.0, 0.0, 0.0 ); - else - pseudoParticle[2].SetMomentum( pseudoParticle[2].GetMomentum() * (1./p) ); - - p = pseudoParticle[3].GetMomentum().mag(); - if( p == 0.0 ) - pseudoParticle[3].SetMomentum( 0.0, 0.0, 0.0 ); - else - pseudoParticle[3].SetMomentum( pseudoParticle[3].GetMomentum() * (1./p) ); + r1 = twopi*G4UniformRand(); + r2 = G4UniformRand(); + a1 = sqrt(-2.0*log(r2)); + ran1 = a1*sin(r1)*0.020*numberofFinalStateNucleons*GeV; + ran2 = a1*cos(r1)*0.020*numberofFinalStateNucleons*GeV; + G4ThreeVector fermi(ran1, ran2, 0); - pseudoParticle[0].SetZero(); + pseudoParticle[0] = pseudoParticle[0]+fermi; // all particles + fermi + pseudoParticle[2] = temp; // original in cms system + pseudoParticle[3] = pseudoParticle[0]; - pxTemp = (pseudoParticle[1].GetMomentum()).dot(currentParticle.GetMomentum()); - pyTemp = (pseudoParticle[2].GetMomentum()).dot(currentParticle.GetMomentum()); - pzTemp = (pseudoParticle[3].GetMomentum()).dot(currentParticle.GetMomentum()); + pseudoParticle[1] = pseudoParticle[2].cross(pseudoParticle[3]); + pseudoParticle[2] = pseudoParticle[3].cross(pseudoParticle[1]); + for(G4int ii=1; ii<=3; ii++) + { + p = pseudoParticle[ii].mag(); + if( p == 0.0 ) + pseudoParticle[ii]= G4ThreeVector( 0.0, 0.0, 0.0 ); + else + pseudoParticle[ii]= pseudoParticle[ii] * (1./p); + } + + pxTemp = pseudoParticle[1].dot(currentParticle.GetMomentum()); + pyTemp = pseudoParticle[2].dot(currentParticle.GetMomentum()); + pzTemp = pseudoParticle[3].dot(currentParticle.GetMomentum()); currentParticle.SetMomentum( pxTemp, pyTemp, pzTemp ); - pseudoParticle[0] = pseudoParticle[0] + currentParticle; - pxTemp = (pseudoParticle[1].GetMomentum()).dot(targetParticle.GetMomentum()); - pyTemp = (pseudoParticle[2].GetMomentum()).dot(targetParticle.GetMomentum()); - pzTemp = (pseudoParticle[3].GetMomentum()).dot(targetParticle.GetMomentum()); + pxTemp = pseudoParticle[1].dot(targetParticle.GetMomentum()); + pyTemp = pseudoParticle[2].dot(targetParticle.GetMomentum()); + pzTemp = pseudoParticle[3].dot(targetParticle.GetMomentum()); targetParticle.SetMomentum( pxTemp, pyTemp, pzTemp ); - pseudoParticle[0] = pseudoParticle[0] + targetParticle; for( i=0; iGetMomentum()); - pyTemp = (pseudoParticle[2].GetMomentum()).dot(vec[i]->GetMomentum()); - pzTemp = (pseudoParticle[3].GetMomentum()).dot(vec[i]->GetMomentum()); + pxTemp = pseudoParticle[1].dot(vec[i]->GetMomentum()); + pyTemp = pseudoParticle[2].dot(vec[i]->GetMomentum()); + pzTemp = pseudoParticle[3].dot(vec[i]->GetMomentum()); vec[i]->SetMomentum( pxTemp, pyTemp, pzTemp ); - pseudoParticle[0] = pseudoParticle[0] + (*vec[i]); } // // Rotate in direction of primary particle, subtract binding energies @@ -3526,7 +3493,7 @@ void G4ReactionDynamics::NuclearReaction( - G4FastVector &vec, + G4FastVector &vec, G4int &vecLen, const G4DynamicParticle *originalIncident, const G4Nucleus &targetNucleus, @@ -3687,8 +3654,7 @@ tempV.SetElement( tempLen++, v[1] ); if( nt == 3 )tempV.SetElement( tempLen++, v[2] ); G4bool constantCrossSection = true; - G4double wgt = - GenerateNBodyEvent( pseudo2.GetMass()/MeV, constantCrossSection, tempV, tempLen ); + GenerateNBodyEvent( pseudo2.GetMass()/MeV, constantCrossSection, tempV, tempLen ); v[0]->Lorentz( *v[0], pseudo2 ); v[1]->Lorentz( *v[1], pseudo2 ); if( nt == 3 )v[2]->Lorentz( *v[2], pseudo2 ); diff --git a/source/processes/hadronic/util/src/G4ReactionKinematics.cc b/source/processes/hadronic/util/src/G4ReactionKinematics.cc index 64ac540e89..cf3c55da77 100644 --- a/source/processes/hadronic/util/src/G4ReactionKinematics.cc +++ b/source/processes/hadronic/util/src/G4ReactionKinematics.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ReactionKinematics.cc,v 1.2.8.2 2001/06/28 20:20:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReactionKinematics.cc,v 1.4 2001/08/01 17:12:47 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // CERN Geneva Switzerland // diff --git a/source/processes/hadronic/util/src/G4ReactionProduct.cc b/source/processes/hadronic/util/src/G4ReactionProduct.cc index 0e193028e3..f8af47d3e9 100644 --- a/source/processes/hadronic/util/src/G4ReactionProduct.cc +++ b/source/processes/hadronic/util/src/G4ReactionProduct.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4ReactionProduct.cc,v 1.2.8.1 2001/06/28 19:15:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ReactionProduct.cc,v 1.4 2001/08/01 17:12:48 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // J.L. Chuma, TRIUMF, 31-Oct-1996 // last modified: 19-Dec-1996 diff --git a/source/processes/hadronic/util/src/G4StableIsotopes.cc b/source/processes/hadronic/util/src/G4StableIsotopes.cc index 2e74a30f57..2098fb07eb 100644 --- a/source/processes/hadronic/util/src/G4StableIsotopes.cc +++ b/source/processes/hadronic/util/src/G4StableIsotopes.cc @@ -14,15 +14,15 @@ // * use. * // * * // * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * +// * authors in the GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // -// $Id: G4StableIsotopes.cc,v 1.2.8.1 2001/06/28 19:15:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StableIsotopes.cc,v 1.4 2001/08/01 17:12:48 hpw Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4StableIsotopes.hh" diff --git a/source/processes/management/History b/source/processes/management/History index 364f9cf4ca..94eb10b42c 100644 --- a/source/processes/management/History +++ b/source/processes/management/History @@ -1,4 +1,4 @@ -$Id: History,v 1.17 2001/05/22 17:32:10 gcosmo Exp $ +$Id: History,v 1.23 2001/10/11 13:53:10 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,25 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +- Oct. 11, 2001 G.Cosmo (procman-V03-02-04) +- Replaced inclusion of ctoken.h with G4Tokenizer.hh in + G4ProcessTableMessenger.cc. +- Co-works with tag "globals-V03-02-03" where the STLInterface + module has been removed. + +- Sep. 20, 2001 H.Kurashige (procman-V03-02-03) +- Modify for STL migration for materials + +- Sep. 19, 2001 H.Kurashige (procman-V03-02-02) +- Add Set/GetProcessManager to G4VProcess and modify + G4ProcessManager::AddProcess to invoke SetProcessManager + +- Aug 16, H.Kurashige (procman-V03-02-01) +- Fixed bugs in the copy constructor of G4ProcessManager. + +- July, 31 H.Kurashige (procman-V03-02-00) +- Modify arguments for Retreive/StorePhysicsTable + - May 22, 01 G.Cosmo (procman-V03-01-00) - Cleared pedantic warnings from Linux-g++ ISO/ANSI setup. diff --git a/source/processes/management/include/G4IVContinuousDiscreteProcess.hh b/source/processes/management/include/G4IVContinuousDiscreteProcess.hh index 3efe30c309..18793d0c25 100644 --- a/source/processes/management/include/G4IVContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4IVContinuousDiscreteProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IVContinuousDiscreteProcess.hh,v 1.6.4.2 2001/06/28 20:20:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IVContinuousDiscreteProcess.hh,v 1.7 2001/07/11 10:08:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4IVRestDiscreteProcess.hh b/source/processes/management/include/G4IVRestDiscreteProcess.hh index bf5c543da1..197bf6bf68 100644 --- a/source/processes/management/include/G4IVRestDiscreteProcess.hh +++ b/source/processes/management/include/G4IVRestDiscreteProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IVRestDiscreteProcess.hh,v 1.6.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IVRestDiscreteProcess.hh,v 1.7 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ParticleTypes.hh b/source/processes/management/include/G4ParticleTypes.hh index e126d88648..f2f1483832 100644 --- a/source/processes/management/include/G4ParticleTypes.hh +++ b/source/processes/management/include/G4ParticleTypes.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleTypes.hh,v 1.4.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleTypes.hh,v 1.5 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcTblElement.hh b/source/processes/management/include/G4ProcTblElement.hh index 58f3c0875f..bc5c45f7fe 100644 --- a/source/processes/management/include/G4ProcTblElement.hh +++ b/source/processes/management/include/G4ProcTblElement.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcTblElement.hh,v 1.8.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcTblElement.hh,v 1.9 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcTblElement.icc b/source/processes/management/include/G4ProcTblElement.icc index b188c0890e..9387f53c96 100644 --- a/source/processes/management/include/G4ProcTblElement.icc +++ b/source/processes/management/include/G4ProcTblElement.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcTblElement.icc,v 1.6.2.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcTblElement.icc,v 1.7 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessAttribute.hh b/source/processes/management/include/G4ProcessAttribute.hh index be3298a9b5..be077e57a4 100644 --- a/source/processes/management/include/G4ProcessAttribute.hh +++ b/source/processes/management/include/G4ProcessAttribute.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessAttribute.hh,v 1.3.10.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessAttribute.hh,v 1.4 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessManager.hh b/source/processes/management/include/G4ProcessManager.hh index 9b1c8b81e7..f64e2efbc1 100644 --- a/source/processes/management/include/G4ProcessManager.hh +++ b/source/processes/management/include/G4ProcessManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessManager.hh,v 1.7.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessManager.hh,v 1.8 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessManager.icc b/source/processes/management/include/G4ProcessManager.icc index fd07e2a9f9..60cf1cb8cf 100644 --- a/source/processes/management/include/G4ProcessManager.icc +++ b/source/processes/management/include/G4ProcessManager.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessManager.icc,v 1.2.4.1 2001/06/28 19:15:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessManager.icc,v 1.3 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/processes/management/include/G4ProcessManagerMessenger.hh b/source/processes/management/include/G4ProcessManagerMessenger.hh index a18683b756..86384d406d 100644 --- a/source/processes/management/include/G4ProcessManagerMessenger.hh +++ b/source/processes/management/include/G4ProcessManagerMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessManagerMessenger.hh,v 1.4.10.1 2001/06/28 19:15:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessManagerMessenger.hh,v 1.5 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessTable.hh b/source/processes/management/include/G4ProcessTable.hh index 01f7ba1d38..0814f508b1 100644 --- a/source/processes/management/include/G4ProcessTable.hh +++ b/source/processes/management/include/G4ProcessTable.hh @@ -22,8 +22,8 @@ // // -// $Id: G4ProcessTable.hh,v 1.6.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessTable.hh,v 1.7 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4ProcessTable.icc b/source/processes/management/include/G4ProcessTable.icc index 91cece7285..148144df1d 100644 --- a/source/processes/management/include/G4ProcessTable.icc +++ b/source/processes/management/include/G4ProcessTable.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessTable.icc,v 1.3.4.1 2001/06/28 19:15:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessTable.icc,v 1.4 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // History: // Use STL vector instead of RW vector 1. Mar 00 H.Kurashige diff --git a/source/processes/management/include/G4ProcessTableMessenger.hh b/source/processes/management/include/G4ProcessTableMessenger.hh index b7c7805691..eb59518d5a 100644 --- a/source/processes/management/include/G4ProcessTableMessenger.hh +++ b/source/processes/management/include/G4ProcessTableMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessTableMessenger.hh,v 1.3.10.1 2001/06/28 19:15:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessTableMessenger.hh,v 1.4 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessType.hh b/source/processes/management/include/G4ProcessType.hh index a7bca2307c..b88284a61f 100644 --- a/source/processes/management/include/G4ProcessType.hh +++ b/source/processes/management/include/G4ProcessType.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessType.hh,v 1.3.10.1 2001/06/28 19:15:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessType.hh,v 1.4 2001/07/11 10:08:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/include/G4ProcessVector.hh b/source/processes/management/include/G4ProcessVector.hh index a443b83991..5f8d2e03ae 100644 --- a/source/processes/management/include/G4ProcessVector.hh +++ b/source/processes/management/include/G4ProcessVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessVector.hh,v 1.6.4.1 2001/06/28 19:15:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessVector.hh,v 1.8 2001/09/19 10:54:47 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -61,6 +61,7 @@ class G4ProcessVector // Returns the number of items G4int entries() const; G4int length() const; + G4int size() const; // Returns the position of the element G4int index(G4VProcess* aProcess) const; diff --git a/source/processes/management/include/G4ProcessVector.icc b/source/processes/management/include/G4ProcessVector.icc index f9a282132d..fcb7564fae 100644 --- a/source/processes/management/include/G4ProcessVector.icc +++ b/source/processes/management/include/G4ProcessVector.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessVector.icc,v 1.2.2.1 2001/06/28 19:15:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessVector.icc,v 1.4 2001/09/19 10:54:48 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // inline G4bool G4ProcessVector::operator==(const G4ProcessVector &right) const { @@ -34,6 +34,11 @@ inline G4int G4ProcessVector::entries() const return pProcVector->size(); } +inline G4int G4ProcessVector::size() const +{ + return pProcVector->size(); +} + inline G4int G4ProcessVector::length() const { return pProcVector->size(); diff --git a/source/processes/management/include/G4VContinuousDiscreteProcess.hh b/source/processes/management/include/G4VContinuousDiscreteProcess.hh index eb1220163b..d794d89b9a 100644 --- a/source/processes/management/include/G4VContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4VContinuousDiscreteProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VContinuousDiscreteProcess.hh,v 1.4.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VContinuousDiscreteProcess.hh,v 1.5 2001/07/11 10:08:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VContinuousProcess.hh b/source/processes/management/include/G4VContinuousProcess.hh index bcda8f01f8..050dd80180 100644 --- a/source/processes/management/include/G4VContinuousProcess.hh +++ b/source/processes/management/include/G4VContinuousProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VContinuousProcess.hh,v 1.4.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VContinuousProcess.hh,v 1.5 2001/07/11 10:08:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VDiscreteProcess.hh b/source/processes/management/include/G4VDiscreteProcess.hh index a14e177893..94549ec41c 100644 --- a/source/processes/management/include/G4VDiscreteProcess.hh +++ b/source/processes/management/include/G4VDiscreteProcess.hh @@ -22,8 +22,8 @@ // // -// $Id: G4VDiscreteProcess.hh,v 1.4.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDiscreteProcess.hh,v 1.5 2001/07/11 10:08:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VProcess.hh b/source/processes/management/include/G4VProcess.hh index 52e357471d..7336f83544 100644 --- a/source/processes/management/include/G4VProcess.hh +++ b/source/processes/management/include/G4VProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VProcess.hh,v 1.8.2.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VProcess.hh,v 1.11 2001/09/01 02:22:55 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -212,21 +212,28 @@ class G4VProcess // function. Not another BuildPhysicsTable, please. - virtual G4bool StorePhysicsTable(const G4String& directory, + virtual G4bool StorePhysicsTable(G4ParticleDefinition* , + const G4String& directory, G4bool ascii = false) {return true;} // Store PhysicsTable in a file. // (return false in case of failure at I/O ) - virtual G4bool RetrievePhysicsTable(const G4String& directory, - G4bool ascii = false) + virtual G4bool RetrievePhysicsTable( G4ParticleDefinition* , + const G4String& directory, + G4bool ascii = false) {return false;} // Retrieve Physics from a file. // (return true if the Physics Table can be build by using file) // (return false if the process has no functionality or in case of failure) // File name should be defined by each process // and the file should be placed under the directory specifed by the argument. - + const G4String& GetPhysicsTableFileName(G4ParticleDefinition* , + const G4String& directory, + const G4String& tableName, + G4bool ascii =false); + // this method is utility for Store/RetreivePhysicsTable + //////////////////////////// const G4String& GetProcessName() const; // Returns the name of the process. @@ -244,7 +251,16 @@ class G4VProcess virtual void EndTracking(); // inform Start/End of tracking for each track to the physics process - + public: + virtual void SetProcessManager(const G4ProcessManager*); + // A process manager set its own pointer when the process is registered + // the process Manager + virtual const G4ProcessManager* GetProcessManager(); + // Get the process manager which the process belongs to + + protected: + const G4ProcessManager* aProcessManager; + protected: G4VParticleChange* pParticleChange; // The pointer to G4VParticleChange object @@ -283,6 +299,8 @@ class G4VProcess G4String theProcessName; // The name of the process + G4String thePhysicsTableFileName; + G4ProcessType theProcessType; // The type of the process @@ -391,6 +409,18 @@ inline G4double G4VProcess::PostStepGPIL( const G4Track& track, =PostStepGetPhysicalInteractionLength(track, previousStepSize, condition); return thePILfactor*value; } + +inline + void G4VProcess::SetProcessManager(const G4ProcessManager* procMan) +{ + aProcessManager = procMan; +} + +inline + const G4ProcessManager* G4VProcess::GetProcessManager() +{ + return aProcessManager; +} #endif diff --git a/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh b/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh index d7a0b28ea5..582a18ed37 100644 --- a/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh +++ b/source/processes/management/include/G4VRestContinuousDiscreteProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRestContinuousDiscreteProcess.hh,v 1.4.4.2 2001/06/28 20:20:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRestContinuousDiscreteProcess.hh,v 1.5 2001/07/11 10:08:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestContinuousProcess.hh b/source/processes/management/include/G4VRestContinuousProcess.hh index c1e18edf1a..9fe120d65b 100644 --- a/source/processes/management/include/G4VRestContinuousProcess.hh +++ b/source/processes/management/include/G4VRestContinuousProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRestContinuousProcess.hh,v 1.4.4.2 2001/06/28 20:20:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRestContinuousProcess.hh,v 1.5 2001/07/11 10:08:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestDiscreteProcess.hh b/source/processes/management/include/G4VRestDiscreteProcess.hh index 8520a27ec7..ae86bb85c3 100644 --- a/source/processes/management/include/G4VRestDiscreteProcess.hh +++ b/source/processes/management/include/G4VRestDiscreteProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRestDiscreteProcess.hh,v 1.4.4.2 2001/06/28 20:20:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRestDiscreteProcess.hh,v 1.5 2001/07/11 10:08:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/include/G4VRestProcess.hh b/source/processes/management/include/G4VRestProcess.hh index f63a5305c5..b1f23509a3 100644 --- a/source/processes/management/include/G4VRestProcess.hh +++ b/source/processes/management/include/G4VRestProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRestProcess.hh,v 1.4.4.2 2001/06/28 20:20:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRestProcess.hh,v 1.5 2001/07/11 10:08:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4IVContinuousDiscreteProcess.cc b/source/processes/management/src/G4IVContinuousDiscreteProcess.cc index d6fee56e6c..178fc7e4fd 100644 --- a/source/processes/management/src/G4IVContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4IVContinuousDiscreteProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IVContinuousDiscreteProcess.cc,v 1.5.4.2 2001/06/28 20:20:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IVContinuousDiscreteProcess.cc,v 1.6 2001/07/11 10:08:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4IVRestDiscreteProcess.cc b/source/processes/management/src/G4IVRestDiscreteProcess.cc index f46063a478..e796dde861 100644 --- a/source/processes/management/src/G4IVRestDiscreteProcess.cc +++ b/source/processes/management/src/G4IVRestDiscreteProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4IVRestDiscreteProcess.cc,v 1.5.4.2 2001/06/28 20:20:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4IVRestDiscreteProcess.cc,v 1.6 2001/07/11 10:08:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4ProcTblElement.cc b/source/processes/management/src/G4ProcTblElement.cc index 9d34431269..708f2bf002 100644 --- a/source/processes/management/src/G4ProcTblElement.cc +++ b/source/processes/management/src/G4ProcTblElement.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcTblElement.cc,v 1.5.4.2 2001/06/28 20:20:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcTblElement.cc,v 1.6 2001/07/11 10:08:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4ProcessAttribute.cc b/source/processes/management/src/G4ProcessAttribute.cc index 0f24d0d4f5..3311944f98 100644 --- a/source/processes/management/src/G4ProcessAttribute.cc +++ b/source/processes/management/src/G4ProcessAttribute.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessAttribute.cc,v 1.3.4.2 2001/06/28 20:20:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessAttribute.cc,v 1.4 2001/07/11 10:08:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4ProcessManager.cc b/source/processes/management/src/G4ProcessManager.cc index 003d0e14b7..e780331c9f 100644 --- a/source/processes/management/src/G4ProcessManager.cc +++ b/source/processes/management/src/G4ProcessManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessManager.cc,v 1.17.2.2 2001/06/28 20:20:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessManager.cc,v 1.20 2001/09/01 02:22:55 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -106,7 +106,7 @@ G4ProcessManager::G4ProcessManager(G4ProcessManager &right) #endif theParticleType = right.theParticleType; - numberOfProcesses = right.numberOfProcesses; + numberOfProcesses = 0; // create the process List and ProcessAttr Vector theProcessList = new G4ProcessVector(); @@ -474,6 +474,9 @@ G4int G4ProcessManager::AddProcess( CreateGPILvectors(); + // inform process manager pointer to the process + aProcess->SetProcessManager(this); + return idx; } diff --git a/source/processes/management/src/G4ProcessManagerMessenger.cc b/source/processes/management/src/G4ProcessManagerMessenger.cc index 30fc0ca243..b3b51465e6 100644 --- a/source/processes/management/src/G4ProcessManagerMessenger.cc +++ b/source/processes/management/src/G4ProcessManagerMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessManagerMessenger.cc,v 1.4.4.1 2001/06/28 19:15:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessManagerMessenger.cc,v 1.5 2001/07/11 10:08:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/management/src/G4ProcessTable.cc b/source/processes/management/src/G4ProcessTable.cc index 48bde1668f..ba2c129862 100644 --- a/source/processes/management/src/G4ProcessTable.cc +++ b/source/processes/management/src/G4ProcessTable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessTable.cc,v 1.7.2.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessTable.cc,v 1.8 2001/07/11 10:08:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4ProcessTableMessenger.cc b/source/processes/management/src/G4ProcessTableMessenger.cc index 4e555ea9d2..beaff5b007 100644 --- a/source/processes/management/src/G4ProcessTableMessenger.cc +++ b/source/processes/management/src/G4ProcessTableMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessTableMessenger.cc,v 1.8.2.1 2001/06/28 19:15:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessTableMessenger.cc,v 1.10 2001/10/11 13:53:10 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -54,10 +54,8 @@ #include "G4ParticleTable.hh" #include "G4ios.hh" +#include "G4Tokenizer.hh" #include "g4std/iomanip" -#include "g4rw/ctoken.h" -#include "g4rw/rstream.h" - #include "g4std/strstream" ///////////////////////////////////////// diff --git a/source/processes/management/src/G4ProcessVector.cc b/source/processes/management/src/G4ProcessVector.cc index 7f80900d09..ae99391e92 100644 --- a/source/processes/management/src/G4ProcessVector.cc +++ b/source/processes/management/src/G4ProcessVector.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ProcessVector.cc,v 1.2.4.1 2001/06/28 19:15:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ProcessVector.cc,v 1.3 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/processes/management/src/G4VContinuousDiscreteProcess.cc b/source/processes/management/src/G4VContinuousDiscreteProcess.cc index cc3a291d16..a929632098 100644 --- a/source/processes/management/src/G4VContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4VContinuousDiscreteProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VContinuousDiscreteProcess.cc,v 1.2.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VContinuousDiscreteProcess.cc,v 1.3 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VContinuousProcess.cc b/source/processes/management/src/G4VContinuousProcess.cc index 65e9dbc790..88f0dee9e1 100644 --- a/source/processes/management/src/G4VContinuousProcess.cc +++ b/source/processes/management/src/G4VContinuousProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VContinuousProcess.cc,v 1.2.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VContinuousProcess.cc,v 1.3 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VDiscreteProcess.cc b/source/processes/management/src/G4VDiscreteProcess.cc index c2e5ff9c83..ff9e93d578 100644 --- a/source/processes/management/src/G4VDiscreteProcess.cc +++ b/source/processes/management/src/G4VDiscreteProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VDiscreteProcess.cc,v 1.2.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDiscreteProcess.cc,v 1.3 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VProcess.cc b/source/processes/management/src/G4VProcess.cc index d2216fa007..71def340ac 100644 --- a/source/processes/management/src/G4VProcess.cc +++ b/source/processes/management/src/G4VProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VProcess.cc,v 1.6.2.1 2001/06/28 19:15:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VProcess.cc,v 1.8 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -174,6 +174,22 @@ void G4VProcess::DumpInfo() const } +const G4String& G4VProcess::GetPhysicsTableFileName(G4ParticleDefinition* particle, + const G4String& directory, + const G4String& tableName, + G4bool ascii) +{ + G4String thePhysicsTableFileExt; + if (ascii) thePhysicsTableFileExt = ".asc"; + else thePhysicsTableFileExt = ".dat"; + + thePhysicsTableFileName = directory + "/"; + thePhysicsTableFileName += tableName + "." + theProcessName + "."; + thePhysicsTableFileName += particle->GetParticleName() + thePhysicsTableFileExt; + + return thePhysicsTableFileName; +} + diff --git a/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc b/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc index 21013d38a9..fce31cffc4 100644 --- a/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc +++ b/source/processes/management/src/G4VRestContinuousDiscreteProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRestContinuousDiscreteProcess.cc,v 1.2.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRestContinuousDiscreteProcess.cc,v 1.3 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VRestContinuousProcess.cc b/source/processes/management/src/G4VRestContinuousProcess.cc index 7dce84ced9..9222cfbd29 100644 --- a/source/processes/management/src/G4VRestContinuousProcess.cc +++ b/source/processes/management/src/G4VRestContinuousProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRestContinuousProcess.cc,v 1.2.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRestContinuousProcess.cc,v 1.3 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VRestDiscreteProcess.cc b/source/processes/management/src/G4VRestDiscreteProcess.cc index 1eb995afff..ae0a11e458 100644 --- a/source/processes/management/src/G4VRestDiscreteProcess.cc +++ b/source/processes/management/src/G4VRestDiscreteProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRestDiscreteProcess.cc,v 1.2.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRestDiscreteProcess.cc,v 1.3 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/management/src/G4VRestProcess.cc b/source/processes/management/src/G4VRestProcess.cc index 46ca59aee5..b008819f51 100644 --- a/source/processes/management/src/G4VRestProcess.cc +++ b/source/processes/management/src/G4VRestProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRestProcess.cc,v 1.2.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRestProcess.cc,v 1.3 2001/07/11 10:08:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/processes/optical/History b/source/processes/optical/History index effacdd80b..784eb51d8c 100644 --- a/source/processes/optical/History +++ b/source/processes/optical/History @@ -16,6 +16,16 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +18th October 2001 Peter Gumplinger (op-V03-02-01) + Avoid warnings on Linux (gcc-2.95.2) compiler +- G4OpRayleigh.cc: remove unused variable 'aMaterial' in PostStepDoIt and + 'no_unit' in RayleighAttenuationLengthGenerator +- G4OpBoundaryProcess.cc: moved definition of E2_perp, E2_parl, E2_total + outside IF-statement +31st August 2001 Peter Gumplinger (op-V03-02-00) +- G4OpRayleigh.hh, G4OpBoundary.hh and G4OpAbsorption.hh: changed processName + to 'OpRayleigh', 'OpBoundary' and 'OpAbsorption' respectively + 30th January 2001 Peter Gumplinger (op-V03-00-05) - G4OpRayleigh.cc: allow for positiv and negative CosTheta and force the new momentum direction to be in the same plane as the diff --git a/source/processes/optical/include/G4OpAbsorption.hh b/source/processes/optical/include/G4OpAbsorption.hh index 5b45a1a0dd..c97d6e0135 100644 --- a/source/processes/optical/include/G4OpAbsorption.hh +++ b/source/processes/optical/include/G4OpAbsorption.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpAbsorption.hh,v 1.5.4.1 2001/06/28 19:15:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpAbsorption.hh,v 1.7 2001/08/31 16:43:32 gum Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // Optical Photon Absorption Class Definition @@ -85,7 +85,7 @@ public: // Without description // Constructors and Destructor //////////////////////////////// - G4OpAbsorption(const G4String& processName = "Absorption"); + G4OpAbsorption(const G4String& processName = "OpAbsorption"); // G4OpAbsorption(const G4OpAbsorption &right); diff --git a/source/processes/optical/include/G4OpBoundaryProcess.hh b/source/processes/optical/include/G4OpBoundaryProcess.hh index 9c0fdd32f8..88c98a1c74 100644 --- a/source/processes/optical/include/G4OpBoundaryProcess.hh +++ b/source/processes/optical/include/G4OpBoundaryProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpBoundaryProcess.hh,v 1.5.4.1 2001/06/28 19:15:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpBoundaryProcess.hh,v 1.7 2001/08/31 16:44:24 gum Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// @@ -104,7 +104,7 @@ public: // Without description // Constructors and Destructor //////////////////////////////// - G4OpBoundaryProcess(const G4String& processName = "Boundary"); + G4OpBoundaryProcess(const G4String& processName = "OpBoundary"); ~G4OpBoundaryProcess(); diff --git a/source/processes/optical/include/G4OpRayleigh.hh b/source/processes/optical/include/G4OpRayleigh.hh index 8fe11dc147..c1a8fc58df 100644 --- a/source/processes/optical/include/G4OpRayleigh.hh +++ b/source/processes/optical/include/G4OpRayleigh.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpRayleigh.hh,v 1.4.4.1 2001/06/28 19:15:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpRayleigh.hh,v 1.6 2001/08/31 16:44:46 gum Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// @@ -87,7 +87,7 @@ public: // Without description // Constructors and Destructor //////////////////////////////// - G4OpRayleigh(const G4String& processName = "Rayleigh Scattering"); + G4OpRayleigh(const G4String& processName = "OpRayleigh"); // G4OpRayleigh(const G4OpRayleigh &right); diff --git a/source/processes/optical/src/G4OpAbsorption.cc b/source/processes/optical/src/G4OpAbsorption.cc index 264685cbba..852e9ab067 100644 --- a/source/processes/optical/src/G4OpAbsorption.cc +++ b/source/processes/optical/src/G4OpAbsorption.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpAbsorption.cc,v 1.3.4.1 2001/06/28 19:15:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpAbsorption.cc,v 1.4 2001/07/11 10:08:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //////////////////////////////////////////////////////////////////////// // Optical Photon Absorption Class Implementation diff --git a/source/processes/optical/src/G4OpBoundaryProcess.cc b/source/processes/optical/src/G4OpBoundaryProcess.cc index b948ed65f4..33d541ea48 100644 --- a/source/processes/optical/src/G4OpBoundaryProcess.cc +++ b/source/processes/optical/src/G4OpBoundaryProcess.cc @@ -44,6 +44,9 @@ // (thanks to Stefano Magni) // 1999-10-10 - Accommodate changes done in DoAbsorption by // changing logic in DielectricMetal +// 2001-10-18 - avoid Linux (gcc-2.95.2) warning about variables +// might be used uninitialized in this function +// moved E2_perp, E2_parl and E2_total out of 'if' // // Author: Peter Gumplinger // adopted from work by Werner Keil - April 2/96 @@ -516,14 +519,15 @@ void G4OpBoundaryProcess::DielectricDielectric() E1_parl = 1.0; } - G4double E2_perp, E2_parl, E2_total, TransCoeff; + G4double s1 = Rindex1*cost1; + G4double E2_perp = 2.*s1*E1_perp/(Rindex1*cost1+Rindex2*cost2); + G4double E2_parl = 2.*s1*E1_parl/(Rindex2*cost1+Rindex1*cost2); + G4double E2_total = E2_perp*E2_perp + E2_parl*E2_parl; + G4double s2 = Rindex2*cost2*E2_total; + + G4double TransCoeff; if (cost1 != 0.0) { - G4double s1 = Rindex1*cost1; - E2_perp = 2.*s1*E1_perp/(Rindex1*cost1+Rindex2*cost2); - E2_parl = 2.*s1*E1_parl/(Rindex2*cost1+Rindex1*cost2); - E2_total = E2_perp*E2_perp + E2_parl*E2_parl; - G4double s2 = Rindex2*cost2*E2_total; TransCoeff = s2/s1; } else { diff --git a/source/processes/optical/src/G4OpRayleigh.cc b/source/processes/optical/src/G4OpRayleigh.cc index 41c786beef..b84fc1f0b1 100644 --- a/source/processes/optical/src/G4OpRayleigh.cc +++ b/source/processes/optical/src/G4OpRayleigh.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpRayleigh.cc,v 1.5.2.1 2001/06/28 19:15:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpRayleigh.cc,v 1.8 2001/10/18 17:13:54 gum Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //////////////////////////////////////////////////////////////////////// @@ -35,6 +35,10 @@ // Version: 1.0 // Created: 1996-05-31 // Author: Juliet Armstrong +// Updated: 2001-10-18 by Peter Gumplinger +// eliminate unused variable warning on Linux (gcc-2.95.2) +// Updated: 2001-09-18 by mma +// >numOfMaterials=G4Material::GetNumberOfMaterials() in BuildPhy // Updated: 2001-01-30 by Peter Gumplinger // > allow for positiv and negative CosTheta and force the // > new momentum direction to be in the same plane as the @@ -108,7 +112,6 @@ G4OpRayleigh::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep) aParticleChange.Initialize(aTrack); const G4DynamicParticle* aParticle = aTrack.GetDynamicParticle(); - const G4Material* aMaterial = aTrack.GetMaterial(); if (verboseLevel>0) { G4cout << "Scattering Photon!" << G4endl; @@ -188,7 +191,7 @@ void G4OpRayleigh::BuildThePhysicsTable() const G4MaterialTable* theMaterialTable= G4Material::GetMaterialTable(); - G4int numOfMaterials = theMaterialTable->length(); + G4int numOfMaterials = G4Material::GetNumberOfMaterials(); // create a new physics table @@ -293,8 +296,6 @@ G4OpRayleigh::RayleighAttenuationLengthGenerator(G4MaterialPropertiesTable *aMPT G4double Dist; G4double refraction_index; - G4double no_unit = 1.0; - G4PhysicsOrderedFreeVector *RayleighScatteringLengths = new G4PhysicsOrderedFreeVector(); Rindex->ResetIterator(); diff --git a/source/processes/parameterisation/History b/source/processes/parameterisation/History index bf412696da..cdd041bb7d 100644 --- a/source/processes/parameterisation/History +++ b/source/processes/parameterisation/History @@ -1,4 +1,4 @@ -$Id: History,v 1.12 2001/04/03 15:26:42 japost Exp $ +$Id: History,v 1.14 2001/10/26 15:27:06 mverderi Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,18 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- + +Oct 26, 2001 M. Verderi - param-V03-02-00 + Fixes to clear warnings produced with gcc-2.95.2: + - loop index, where comparison with method "size()" of + G4std::vector, changed: int -> size_t + - change "if ( a=b ) {..}" by "if ( (a=b) ) {...}" + this makes the compiler sure you want to make an + assignement in the "if" condition + - re-order initialisations of a few variables in constructors + to match the declaration order. + Some warnings still exist, but regard the G4Propagator of geometry. + Apr 3, 2001 J. Apostolakis - param-V03-00-00 - Modified G4FastSimulationManagerProcess call to PropagatorInField ComputeStep to use new interface with G4FieldTrack (in place of now obsolete interface.) diff --git a/source/processes/parameterisation/include/G4FastSimulationManager.hh b/source/processes/parameterisation/include/G4FastSimulationManager.hh index 9c127f9c0f..38c73868c6 100644 --- a/source/processes/parameterisation/include/G4FastSimulationManager.hh +++ b/source/processes/parameterisation/include/G4FastSimulationManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastSimulationManager.hh,v 1.6.4.1 2001/06/28 19:15:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastSimulationManager.hh,v 1.7 2001/07/11 10:08:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh b/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh index ede17cf8c2..ff14144ed4 100644 --- a/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh +++ b/source/processes/parameterisation/include/G4FastSimulationManagerProcess.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastSimulationManagerProcess.hh,v 1.7.4.1 2001/06/28 19:15:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastSimulationManagerProcess.hh,v 1.8 2001/07/11 10:08:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4FastSimulationMessenger.hh b/source/processes/parameterisation/include/G4FastSimulationMessenger.hh index 6438009705..cbfe147c9b 100644 --- a/source/processes/parameterisation/include/G4FastSimulationMessenger.hh +++ b/source/processes/parameterisation/include/G4FastSimulationMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastSimulationMessenger.hh,v 1.3.4.1 2001/06/28 19:15:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastSimulationMessenger.hh,v 1.4 2001/07/11 10:08:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // GEANT 4 class header file diff --git a/source/processes/parameterisation/include/G4FastStep.hh b/source/processes/parameterisation/include/G4FastStep.hh index c329decacc..713d9b70e7 100644 --- a/source/processes/parameterisation/include/G4FastStep.hh +++ b/source/processes/parameterisation/include/G4FastStep.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastStep.hh,v 1.5.4.1 2001/06/28 19:15:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastStep.hh,v 1.6 2001/07/11 10:08:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4FastStep.icc b/source/processes/parameterisation/include/G4FastStep.icc index 3d6bf51754..0bec1883b9 100644 --- a/source/processes/parameterisation/include/G4FastStep.icc +++ b/source/processes/parameterisation/include/G4FastStep.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastStep.icc,v 1.2.4.1 2001/06/28 19:15:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastStep.icc,v 1.3 2001/07/11 10:08:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $id: G4ParticleChange.icc,v 1.6 1998/04/14 02:25:54 kurasige Exp $ diff --git a/source/processes/parameterisation/include/G4FastTrack.hh b/source/processes/parameterisation/include/G4FastTrack.hh index e7f25e9a4b..05b7473e75 100644 --- a/source/processes/parameterisation/include/G4FastTrack.hh +++ b/source/processes/parameterisation/include/G4FastTrack.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastTrack.hh,v 1.4.4.1 2001/06/28 19:15:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastTrack.hh,v 1.5 2001/07/11 10:08:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4FlavoredParallelWorld.hh b/source/processes/parameterisation/include/G4FlavoredParallelWorld.hh index 4366068315..3cd3695b71 100644 --- a/source/processes/parameterisation/include/G4FlavoredParallelWorld.hh +++ b/source/processes/parameterisation/include/G4FlavoredParallelWorld.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FlavoredParallelWorld.hh,v 1.4.4.1 2001/06/28 19:15:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FlavoredParallelWorld.hh,v 1.5 2001/07/11 10:08:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh b/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh index d35c37e033..83d31a44cc 100644 --- a/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh +++ b/source/processes/parameterisation/include/G4GlobalFastSimulationManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GlobalFastSimulationManager.hh,v 1.7.4.1 2001/06/28 19:15:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GlobalFastSimulationManager.hh,v 1.8 2001/07/11 10:08:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/include/G4VFastSimulationModel.hh b/source/processes/parameterisation/include/G4VFastSimulationModel.hh index 8be21d29ac..33fc81bf63 100644 --- a/source/processes/parameterisation/include/G4VFastSimulationModel.hh +++ b/source/processes/parameterisation/include/G4VFastSimulationModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VFastSimulationModel.hh,v 1.3.4.1 2001/06/28 19:15:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFastSimulationModel.hh,v 1.4 2001/07/11 10:08:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/processes/parameterisation/src/G4FastSimulationManager.cc b/source/processes/parameterisation/src/G4FastSimulationManager.cc index cd18e70ed9..1abd5c8f76 100644 --- a/source/processes/parameterisation/src/G4FastSimulationManager.cc +++ b/source/processes/parameterisation/src/G4FastSimulationManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastSimulationManager.cc,v 1.4.4.1 2001/06/28 19:15:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastSimulationManager.cc,v 1.6 2001/10/26 14:43:36 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //--------------------------------------------------------------- // @@ -82,7 +82,7 @@ G4FastSimulationManager::~G4FastSimulationManager() G4bool G4FastSimulationManager::ActivateFastSimulationModel(const G4String& aName) { - G4int iModel; + size_t iModel; // If the model is already active, do nothing. for (iModel=0; iModelGetName() == aName) { fInactivatedModels. push_back (ModelList.removeAt(iModel)); @@ -181,7 +181,7 @@ G4FastSimulationManager:: PostStepGetFastSimulationManagerTrigger(const G4Track& track, const G4Navigator* theNavigator) { - G4int iModel; + size_t iModel; // If particle type changed re-build the fApplicableModelList. if(fLastCrossedParticle!=track.GetDefinition()) { @@ -246,7 +246,7 @@ G4bool G4FastSimulationManager::AtRestGetFastSimulationManagerTrigger(const G4Track& track, const G4Navigator* theNavigator) { - G4int iModel; + size_t iModel; // If particle type changed re-build the fApplicableModelList. if(fLastCrossedParticle!=track.GetDefinition()) { @@ -301,10 +301,10 @@ InsertGhostHereIfNecessary(G4VPhysicalVolume* theClone, // If there are, verifies if at least one model is applicable // for theParticle. - for (G4int iModel=0; iModelIsApplicable(theParticle)) { // Ok, we find one. Place the ghost(s). - for (G4int ighost=0; ighostGetName(), @@ -328,7 +328,7 @@ G4FastSimulationManager::ListTitle() const void G4FastSimulationManager::ListModels() const { - G4int iModel; + size_t iModel; G4cout << "Current Models for the "; ListTitle(); @@ -345,7 +345,7 @@ G4FastSimulationManager::ListModels() const void G4FastSimulationManager::ListModels(const G4String& aName) const { - G4int iModel; + size_t iModel; G4int titled = 0; G4ParticleTable* theParticleTable= G4ParticleTable::GetParticleTable(); @@ -404,7 +404,7 @@ G4FastSimulationManager::ListModels(const G4String& aName) const void G4FastSimulationManager::ListModels(const G4ParticleDefinition* aPD) const { - G4int iModel; + size_t iModel; G4bool unique=true; // Active Models diff --git a/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc b/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc index 4e783ec254..1af6be4862 100644 --- a/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc +++ b/source/processes/parameterisation/src/G4FastSimulationManagerProcess.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastSimulationManagerProcess.cc,v 1.5.2.1 2001/06/28 19:15:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastSimulationManagerProcess.cc,v 1.7 2001/10/26 14:43:36 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -156,8 +156,8 @@ G4FastSimulationManagerProcess::PostStepGetPhysicalInteractionLength( //--------------------------------------------- // Normal Dispatcher (for tracking geometry) : //--------------------------------------------- - if(fFastSimulationManager = - track.GetVolume()->GetLogicalVolume()->GetFastSimulationManager()) + if( (fFastSimulationManager = + track.GetVolume()->GetLogicalVolume()->GetFastSimulationManager()) ) { // Yes, so should us trigger a fast simulation model now ? if(fFastSimulationTrigger = @@ -216,8 +216,8 @@ G4FastSimulationManagerProcess::PostStepGetPhysicalInteractionLength( if (!fOutOfGhostWorld) { - if(fFastSimulationManager = - fGhostTouchable->GetVolume()->GetLogicalVolume()->GetFastSimulationManager()) + if( (fFastSimulationManager = + fGhostTouchable->GetVolume()->GetLogicalVolume()->GetFastSimulationManager()) ) { // Yes, so should us trigger a fast simulation model now ? if(fFastSimulationTrigger = @@ -295,11 +295,11 @@ G4VParticleChange* G4FastSimulationManagerProcess::PostStepDoIt( track.GetPosition(), track.GetMomentumDirection(), &fTrackingHistory); - G4VPhysicalVolume* trackingVolume = fTrackingHistory.GetVolume(); + // G4VPhysicalVolume* trackingVolume = fTrackingHistory.GetVolume(); G4double trackingSafety(0.0); - G4double trackingLinearDistance = - fTrackingNavigator.ComputeStep( + // G4double trackingLinearDistance = + fTrackingNavigator.ComputeStep( track.GetPosition(), track.GetMomentumDirection(), DBL_MAX, @@ -489,8 +489,8 @@ G4FastSimulationManagerProcess::AtRestGetPhysicalInteractionLength( if (!fOutOfGhostWorld) { - if(fFastSimulationManager = - fGhostTouchable->GetVolume()->GetLogicalVolume()->GetFastSimulationManager()) + if( (fFastSimulationManager = + fGhostTouchable->GetVolume()->GetLogicalVolume()->GetFastSimulationManager()) ) { // Should it trigger a fast simulation model now ? if(fFastSimulationTrigger = diff --git a/source/processes/parameterisation/src/G4FastSimulationMessenger.cc b/source/processes/parameterisation/src/G4FastSimulationMessenger.cc index cbc623ee15..196e97c296 100644 --- a/source/processes/parameterisation/src/G4FastSimulationMessenger.cc +++ b/source/processes/parameterisation/src/G4FastSimulationMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastSimulationMessenger.cc,v 1.3.4.1 2001/06/28 19:15:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastSimulationMessenger.cc,v 1.4 2001/07/11 10:08:24 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4FastSimulationMessenger.hh" diff --git a/source/processes/parameterisation/src/G4FastStep.cc b/source/processes/parameterisation/src/G4FastStep.cc index 3889cb8565..ccf4af4e77 100644 --- a/source/processes/parameterisation/src/G4FastStep.cc +++ b/source/processes/parameterisation/src/G4FastStep.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastStep.cc,v 1.7.4.1 2001/06/28 19:15:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastStep.cc,v 1.9 2001/10/26 14:43:36 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //--------------------------------------------------------------- // @@ -320,10 +320,10 @@ G4Step* G4FastStep::UpdateStepForPostStep(G4Step* pStep) // pointer to G4ParticleMometum. Also it is a normalized // momentum vector. - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); + // G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); G4Track* aTrack = pStep->GetTrack(); - G4double mass = aTrack->GetDynamicParticle()->GetMass(); + // G4double mass = aTrack->GetDynamicParticle()->GetMass(); // update kinetic energy and momentum direction pPostStepPoint->SetMomentumDirection(theMomentumChange); @@ -353,10 +353,10 @@ G4Step* G4FastStep::UpdateStepForAtRest(G4Step* pStep) { // A physics process always calculates the final state of the particle - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); + // G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); G4Track* aTrack = pStep->GetTrack(); - G4double mass = aTrack->GetDynamicParticle()->GetMass(); + // G4double mass = aTrack->GetDynamicParticle()->GetMass(); // update kinetic energy and momentum direction pPostStepPoint->SetMomentumDirection(theMomentumChange); diff --git a/source/processes/parameterisation/src/G4FastTrack.cc b/source/processes/parameterisation/src/G4FastTrack.cc index 0af431db20..5f49d22bc4 100644 --- a/source/processes/parameterisation/src/G4FastTrack.cc +++ b/source/processes/parameterisation/src/G4FastTrack.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FastTrack.cc,v 1.4.4.1 2001/06/28 19:15:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FastTrack.cc,v 1.6 2001/10/26 14:43:37 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //--------------------------------------------------------------- // @@ -47,8 +47,8 @@ // G4FastTrack::G4FastTrack(G4Envelope *anEnvelope, G4bool IsUnique) : - fEnvelope(anEnvelope),fEnvelopeSolid(fEnvelope->GetSolid()), - fIsUnique(IsUnique), fAffineTransformationDefined(false) + fAffineTransformationDefined(false), fEnvelope(anEnvelope), + fIsUnique(IsUnique), fEnvelopeSolid(fEnvelope->GetSolid()) {} // ----------- diff --git a/source/processes/parameterisation/src/G4GlobalFastSimulationManager.cc b/source/processes/parameterisation/src/G4GlobalFastSimulationManager.cc index 78ae2680c1..2ed10dc0c2 100644 --- a/source/processes/parameterisation/src/G4GlobalFastSimulationManager.cc +++ b/source/processes/parameterisation/src/G4GlobalFastSimulationManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GlobalFastSimulationManager.cc,v 1.6.4.1 2001/06/28 19:15:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GlobalFastSimulationManager.cc,v 1.8 2001/10/26 14:43:37 mverderi Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -118,7 +118,7 @@ void G4GlobalFastSimulationManager::CloseFastSimulation() G4cout << "Closing FastSimulation\n"; for (G4int iParticle=0; iParticleentries(); iParticle++) { G4bool Needed = false; - for (G4int ifsm=0; ifsm InsertGhostHereIfNecessary(aClone, *(theParticleTable-> @@ -140,7 +140,7 @@ G4VFlavoredParallelWorld* G4GlobalFastSimulationManager:: GetFlavoredWorldForThis(G4ParticleDefinition* particle) { - for (G4int ipw=0; ipwGetTheParticleType()==particle) return NeededFlavoredWorlds[ipw]; return 0; @@ -150,7 +150,7 @@ void G4GlobalFastSimulationManager::ActivateFastSimulationModel(const G4String& aName) { G4bool result = false; - for (G4int ifsm=0; ifsmActivateFastSimulationModel(aName); if(result) G4cout << "Model " << aName << " activated."; @@ -163,7 +163,7 @@ void G4GlobalFastSimulationManager::InActivateFastSimulationModel(const G4String& aName) { G4bool result = false; - for (G4int ifsm=0; ifsmInActivateFastSimulationModel(aName); if(result) G4cout << "Model " << aName << " inactivated."; @@ -177,14 +177,14 @@ G4GlobalFastSimulationManager::ListEnvelopes(const G4String& aName, listType theType) { if(theType == ISAPPLICABLE) { - for (G4int ifsm=0; ifsmListModels(aName); return; } if(aName == "all") { G4int titled = 0; - for (G4int ifsm=0; ifsm GetEnvelope()->GetName()){ ManagedManagers[ifsm]->ListModels(); @@ -208,7 +208,7 @@ G4GlobalFastSimulationManager::ListEnvelopes(const G4String& aName, void G4GlobalFastSimulationManager::ListEnvelopes(const G4ParticleDefinition* aPD) { - for (G4int ifsm=0; ifsmListModels(aPD); } diff --git a/source/processes/parameterisation/src/G4VFastSimulationModel.cc b/source/processes/parameterisation/src/G4VFastSimulationModel.cc index 477e603b6a..a3edf3b837 100644 --- a/source/processes/parameterisation/src/G4VFastSimulationModel.cc +++ b/source/processes/parameterisation/src/G4VFastSimulationModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VFastSimulationModel.cc,v 1.4.4.1 2001/06/28 19:15:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFastSimulationModel.cc,v 1.5 2001/07/11 10:08:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //--------------------------------------------------------------- // diff --git a/source/processes/photolepton_hadron/History b/source/processes/photolepton_hadron/History index b113737e38..68d43bcaba 100644 --- a/source/processes/photolepton_hadron/History +++ b/source/processes/photolepton_hadron/History @@ -1,4 +1,4 @@ -$Id: History,v 1.3 2001/02/05 18:02:12 gcosmo Exp $ +$Id: History,v 1.5 2001/10/24 17:46:58 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,14 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +24-Oct-2001: G.Cosmo (photolepton_hadron-V03-02-01) +- Cleared warnings on Linux-g++. +- Replaced NULL with 0 wherever needed. + +23-Oct-2001: G.Cosmo (photolepton_hadron-V03-02-00) +- Synchronised files with HEAD revision. +- Migration to STL vector according to modifications in "materials-V03-02-04". + 05-Feb-2001: G.Cosmo (photolepton_hadron-V03-00-00) - STL migration for G4OrderedTable and G4DataVector. Modified files: G4MuNuclearInteraction.cc. diff --git a/source/processes/photolepton_hadron/include/G4LeptonHadronInteractionModel.hh b/source/processes/photolepton_hadron/include/G4LeptonHadronInteractionModel.hh index 99993d0c36..2e456e0148 100644 --- a/source/processes/photolepton_hadron/include/G4LeptonHadronInteractionModel.hh +++ b/source/processes/photolepton_hadron/include/G4LeptonHadronInteractionModel.hh @@ -38,7 +38,7 @@ public: G4LeptonHadronInteractionModel(); - ~G4LeptonHadronInteractionModel(); + virtual ~G4LeptonHadronInteractionModel(); virtual void makePhysicsVector() = 0; virtual G4VParticleChange* applyInteractionModel diff --git a/source/processes/photolepton_hadron/include/G4MuNuclearInteraction.hh b/source/processes/photolepton_hadron/include/G4MuNuclearInteraction.hh index 605e18d41f..c9c25b288c 100644 --- a/source/processes/photolepton_hadron/include/G4MuNuclearInteraction.hh +++ b/source/processes/photolepton_hadron/include/G4MuNuclearInteraction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuNuclearInteraction.hh,v 1.3.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuNuclearInteraction.hh,v 1.4 2001/07/11 10:08:25 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // ------------------------------------------------------------ diff --git a/source/processes/photolepton_hadron/include/G4MuNuclearInteraction.icc b/source/processes/photolepton_hadron/include/G4MuNuclearInteraction.icc index 0263caa990..4ddc9ba5b5 100644 --- a/source/processes/photolepton_hadron/include/G4MuNuclearInteraction.icc +++ b/source/processes/photolepton_hadron/include/G4MuNuclearInteraction.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuNuclearInteraction.icc,v 1.2.4.2 2001/06/28 20:20:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuNuclearInteraction.icc,v 1.5 2001/10/24 17:46:59 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // --------------------------------------------------------------- @@ -73,12 +73,12 @@ inline G4double G4MuNuclearInteraction::ComputeMeanFreePath( G4double SIGMA = 0 ; - for ( G4int i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) + for ( size_t i=0 ; i < aMaterial->GetNumberOfElements() ; i++ ) { SIGMA += theAtomNumDensityVector[i] * ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(i)->GetZ(), - (*theElementVector)(i)->GetA()) ; + (*theElementVector)[i]->GetZ(), + (*theElementVector)[i]->GetA()) ; } return SIGMA<=0.0 ? DBL_MAX : 1./SIGMA ; diff --git a/source/processes/photolepton_hadron/src/G4MuNuclearInteraction.cc b/source/processes/photolepton_hadron/src/G4MuNuclearInteraction.cc index 903705e425..e4104c3cce 100644 --- a/source/processes/photolepton_hadron/src/G4MuNuclearInteraction.cc +++ b/source/processes/photolepton_hadron/src/G4MuNuclearInteraction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuNuclearInteraction.cc,v 1.8.2.2 2001/06/28 20:20:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuNuclearInteraction.cc,v 1.11 2001/10/24 17:46:59 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // $Id: // -------------------------------------------------------------- @@ -48,20 +48,20 @@ G4double G4MuNuclearInteraction::tdat[]={1.e3,1.e4,1.e5,1.e6,1.e7,1.e8, 1.e9,1.e10}; G4int G4MuNuclearInteraction::NBIN = 1000 ; G4double G4MuNuclearInteraction::ya[1001]={0.}; -G4double G4MuNuclearInteraction::proba[5][8][1001]={0.}; +G4double G4MuNuclearInteraction::proba[5][8][1001]={{{0.}}}; G4MuNuclearInteraction::G4MuNuclearInteraction(const G4String& processName) : G4VDiscreteProcess(processName), - theCrossSectionTable(NULL), - theMeanFreePathTable(NULL), + theMeanFreePathTable(0), + theCrossSectionTable(0), LowestKineticEnergy (1.*GeV), HighestKineticEnergy (1000000.*TeV), TotBin(100), + CutFixed ( 0.200*GeV), + GramPerMole(g/mole), theMuonMinus ( G4MuonMinus::MuonMinus() ), theMuonPlus ( G4MuonPlus::MuonPlus() ), - thePionZero (G4PionZero::PionZero() ), - GramPerMole(g/mole), - CutFixed ( 0.200*GeV) + thePionZero (G4PionZero::PionZero() ) { } G4MuNuclearInteraction::~G4MuNuclearInteraction() @@ -98,18 +98,18 @@ void G4MuNuclearInteraction::BuildPhysicsTable( } // make tables for the sampling at initialization - if (theMeanFreePathTable == NULL) MakeSamplingTables(&aParticleType); + if (theMeanFreePathTable == 0) MakeSamplingTables(&aParticleType); theCrossSectionTable = new G4PhysicsTable (G4Element::GetNumberOfElements()); const G4ElementTable* theElementTable = G4Element::GetElementTable() ; G4double AtomicNumber,AtomicWeight ; - for (G4int J=0; J < G4Element::GetNumberOfElements(); J++ ) + for (size_t J=0; J < G4Element::GetNumberOfElements(); J++ ) { ptrVector = new G4PhysicsLogVector(LowestKineticEnergy, HighestKineticEnergy,TotBin) ; - AtomicNumber = (*theElementTable )(J)->GetZ() ; - AtomicWeight = (*theElementTable )(J)->GetA() ; + AtomicNumber = (*theElementTable )[J]->GetZ() ; + AtomicWeight = (*theElementTable )[J]->GetA() ; for ( G4int i = 0 ; i < TotBin ; i++) { @@ -135,7 +135,7 @@ void G4MuNuclearInteraction::BuildPhysicsTable( PartialSumSigma.resize(G4Material::GetNumberOfMaterials()); - for (G4int K=0 ; K < G4Material::GetNumberOfMaterials(); K++ ) + for (size_t K=0 ; K < G4Material::GetNumberOfMaterials(); K++ ) { ptrVector = new G4PhysicsLogVector(LowestKineticEnergy, HighestKineticEnergy, @@ -182,8 +182,8 @@ void G4MuNuclearInteraction::ComputePartialSumSigma( { SIGMA += theAtomNumDensityVector[Ielem] * ComputeMicroscopicCrossSection( ParticleType, KineticEnergy, - (*theElementVector)(Ielem)->GetZ(), - (*theElementVector)(Ielem)->GetA()) ; + (*theElementVector)[Ielem]->GetZ(), + (*theElementVector)[Ielem]->GetA()) ; PartialSumSigma[Imate]->push_back(SIGMA); } } @@ -215,7 +215,7 @@ G4double G4MuNuclearInteraction::ComputeMicroscopicCrossSection( aaa = log(epmin) ; bbb = log(epmax) ; - kkk = int((bbb-aaa)/ak1)+ak2 ; + kkk = G4int((bbb-aaa)/ak1 +ak2) ; hhh = (bbb-aaa)/kkk ; for (G4int l=0 ; lGetZ()) ; G4double delmin = 1.e10 ; G4double del ; - G4int izz,itt,NBINminus1 ; + G4int izz=0,itt=0,NBINminus1 ; NBINminus1 = NBIN-1 ; for (G4int iz=0; izGetName() << "' has no elements, NULL pointer returned." << G4endl; - return NULL; + return 0; } void G4MuNuclearInteraction::PrintInfoDefinition() { diff --git a/source/processes/photolepton_hadron/src/G4MuonNucleusInteractionModel.cc b/source/processes/photolepton_hadron/src/G4MuonNucleusInteractionModel.cc index 40f500f072..125edc414e 100644 --- a/source/processes/photolepton_hadron/src/G4MuonNucleusInteractionModel.cc +++ b/source/processes/photolepton_hadron/src/G4MuonNucleusInteractionModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4MuonNucleusInteractionModel.cc,v 1.3.4.1 2001/06/28 19:15:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4MuonNucleusInteractionModel.cc,v 1.5 2001/10/24 17:47:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- // G4MuonNucleusInteractionModel.cc @@ -144,8 +144,8 @@ (const G4Track &muonTrack, G4Nucleus &targetNucleus ) //----------------------------------------------------------------------------- { - G4int icos, ie1; - G4double E1, P1; + G4int icos=0, ie1=0; + G4double E1=0., P1=0.; G4double rndm[3]; G4bool isOutRange; diff --git a/source/processes/photolepton_hadron/src/G4ParametrizedHadronicVertex.cc b/source/processes/photolepton_hadron/src/G4ParametrizedHadronicVertex.cc index ce89ddf916..bf2bddd341 100644 --- a/source/processes/photolepton_hadron/src/G4ParametrizedHadronicVertex.cc +++ b/source/processes/photolepton_hadron/src/G4ParametrizedHadronicVertex.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParametrizedHadronicVertex.cc,v 1.3.4.1 2001/06/28 19:15:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParametrizedHadronicVertex.cc,v 1.5 2001/10/24 17:47:00 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- #include "G4ParametrizedHadronicVertex.hh" @@ -41,5 +41,5 @@ ApplyYourself(G4Nucleus & theTarget, const G4Track &thePhoton) if(theKineticEnergy<20*GeV) return theLowEPionPlus.ApplyYourself(thePhoton, theTarget); return theHighEPionPlus.ApplyYourself(thePhoton, theTarget); } - return NULL; + return 0; } diff --git a/source/processes/transportation/History b/source/processes/transportation/History index c99dfd11aa..e7496d294e 100644 --- a/source/processes/transportation/History +++ b/source/processes/transportation/History @@ -1,4 +1,4 @@ -$Id: History,v 1.11 2001/06/01 13:38:41 japost Exp $ +$Id: History,v 1.22 2001/12/08 15:22:44 japost Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,73 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Dec 8, 2001 J.Apostolakis - transport-V03-02-07 +--------------------------- + + Activated the killing of 'looping' particles -- to be used also to +abandon (kill) particles that are stuck (eg at boundaries). + [ Fix for problems of stuck particles reported by CMS (P.Arce), + and Atlas (A.Del'Acqua, A.Rimoldi) ] + +Nov 28, 2001 J.Apostolakis - transport-V03-02-06 +--------------------------- + + Fix for the new updating of the time for fields -- correcting previous + tag. By keeping account whether the field changes the energy (and + therefore the velocity) in the field manager. + + Requires and co-works with + - "field-V03-02-07" + - "geomvol-V03-02-02" + in order to compile (let alone have any effect.) + + +Nov 10, 2001 J.Apostolakis - transport-V03-02-05 +--------------------------- +- Motivated by the use case of an Electric Field, + * in order to achieve reasonable accuracy in time integration, + * and to enable fields that vary with the global time + + changed Transportation to try to obtain the delta_time from FieldTrack. + + Co-works with and requires "field-V03-02-03" to have any effect. + + +Nov 9, 2001 G. Cosmo - transport-V03-02-04 +------------------------ +- Fix in G4Transportation.cc for initialisation of touchable handle. + +Nov 8, 2001 G. Cosmo - transport-V03-02-03 +------------------------ +Introduced changes to G4Transportation for reference-counted +touchables (R.Chytracek). Added methods GetFreeTouchable() and +SetTheOtherTouchableFree(G4VTouchable*). + +Nov 6, 2001 J. Apostolakis - transport-V03-02-02 +------------------------------ +Added protection in G4Transportation::AlongStepGPIL for messaging +"ResestStepEstimate" of ChordFinder for the case there is no global field. +** NOTE this is not a perfect resolution (see NOTE in log file). ** + +--> Thanks to Radovan Chytracek for reporting this problem (move to file log) + +Aug 16, 2001 J. Apostolakis - transport-V03-02-01 +------------------------------ +Tagged. +(This tag requires field-V03-02-00) + +Aug 16, 2001 J. Apostolakis +------------------------------ +- Erasing state information from previous track at the first step of + each track. (-> this is required to ensure repeatability) + This should eliminate any non-repeatability due to the propagation + in field. + ( Requires updated version of G4ChordFinder ) + +Jul 19, 2001 G. Cosmo transport-V03-02-00 +------------------------ +- Synchronised with CVS HEAD after introduction of warrenty disclaimer. +- Modified author list in G4Transportation (P.Gumplinger). Apr 11, 2001 J. Apostolakis transport-V03-01-02 ------------------------------ diff --git a/source/processes/transportation/include/G4Transportation.hh b/source/processes/transportation/include/G4Transportation.hh index 5f12befb72..e193e40139 100644 --- a/source/processes/transportation/include/G4Transportation.hh +++ b/source/processes/transportation/include/G4Transportation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Transportation.hh,v 1.2.4.2 2001/06/28 20:20:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Transportation.hh,v 1.6 2001/11/28 18:27:50 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -109,17 +109,6 @@ class G4Transportation : public G4VProcess // Checks whether a field exists for the "global" field manager. G4bool DoesGlobalFieldExist(); - private: - // Needed to add the Relocation in the PostStepDoIt - // Copied from SteppingManager - G4VTouchable* GetFreeTouchable(); - // Get Touchable which is free, i.e. not assigined to Track/StepPoint - // If no free touchable is availabe, the NULL will be returned - // Once you get a Touchable, it will be set to NotFree. - void SetTheOtherTouchableFree(G4VTouchable* pTouch); - // Set the partner of the given Touchable to be free. For example, - // the argument has fTouchable1, then fTouchable2 will be set to - private: // The Propagators used to transport the particle G4Navigator* fLinearNavigator; @@ -135,10 +124,12 @@ class G4Transportation : public G4VProcess G4ThreeVector fTransportEndSpin; G4bool fMomentumChanged; G4bool fEnergyChanged; + G4bool fEndGlobalTimeComputed; + G4double fCandidateEndGlobalTime; G4bool fParticleIsLooping; - G4VTouchable* fCurrentTouchable; + G4TouchableHandle fCurrentTouchableHandle; // Whether a magnetic field exists ... // G4bool fFieldExists; @@ -153,12 +144,6 @@ class G4Transportation : public G4VProcess // the member function DoesGlobalFieldExist() in its place ... // John Apostolakis, July 7, 1997 - // Needed for the relocation - Copied from SteppingManager - G4VTouchable* fTouchable1; - G4VTouchable* fTouchable2; - G4bool fIsTouchable1Free; - G4bool fIsTouchable2Free; - // Flag to determine whether a boundary was reached. G4bool fGeometryLimitedStep; diff --git a/source/processes/transportation/include/G4Transportation.icc b/source/processes/transportation/include/G4Transportation.icc index 9645af011d..6c2e30bbf9 100644 --- a/source/processes/transportation/include/G4Transportation.icc +++ b/source/processes/transportation/include/G4Transportation.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Transportation.icc,v 1.2.4.1 2001/06/28 19:15:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Transportation.icc,v 1.4 2001/11/06 01:38:19 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -54,26 +54,3 @@ inline G4bool G4Transportation::DoesGlobalFieldExist() return transportMgr->GetFieldManager()->DoesFieldExist(); } -inline void G4Transportation::SetTheOtherTouchableFree(G4VTouchable* value) -{ - if(value == fTouchable1){ - fIsTouchable2Free = true; - } - else if(value == fTouchable2){ - fIsTouchable1Free = true; - } -} - -inline G4VTouchable* G4Transportation::GetFreeTouchable(){ - if(fIsTouchable1Free){ - fIsTouchable1Free = false; - return fTouchable1; - } - else if(fIsTouchable2Free){ - fIsTouchable2Free = false; - return fTouchable2; - } - else { - return NULL; - } -} diff --git a/source/processes/transportation/include/G4UserSpecialCuts.hh b/source/processes/transportation/include/G4UserSpecialCuts.hh index 18d9ea275b..e60e139cc8 100644 --- a/source/processes/transportation/include/G4UserSpecialCuts.hh +++ b/source/processes/transportation/include/G4UserSpecialCuts.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserSpecialCuts.hh,v 1.3.4.1 2001/06/28 19:15:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserSpecialCuts.hh,v 1.4 2001/07/11 10:08:30 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // ------------------------------------------------------------ // 15 April 1998 M.Maire // ------------------------------------------------------------ diff --git a/source/processes/transportation/src/G4Transportation.cc b/source/processes/transportation/src/G4Transportation.cc index 8022722454..0a13f6b028 100644 --- a/source/processes/transportation/src/G4Transportation.cc +++ b/source/processes/transportation/src/G4Transportation.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Transportation.cc,v 1.16.2.2 2001/06/28 20:20:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Transportation.cc,v 1.27 2001/12/08 15:20:30 japost Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // ------------------------------------------------------------ // GEANT 4 include file implementation @@ -36,8 +36,9 @@ // It is also tasked with part of updating the "safety". // // ======================================================================= -// Modified: -// 11 Aprl 2001, P. Gumplinger: correction for spin tracking +// Modified: +// 29 June 2001, J. Apostolakis, D. Cote-Ahern, P. Gumplinger: +// correction for spin tracking // 20 Febr 2001, J. Apostolakis: update for new FieldTrack // 22 Sept 2000, V. Grichine: update of Kinetic Energy // 9 June 1999, J. Apostolakis & S.Giani: protect full relocation @@ -84,25 +85,21 @@ G4VProcess(G4String("Transportation") ) // the member function DoesGlobalFieldExist() in its place ... // John Apostolakis, July 7, 1997 - fTouchable1 = new G4TouchableHistory() ; - fTouchable2 = new G4TouchableHistory() ; - - fIsTouchable1Free = true ; - fIsTouchable2Free = true ; - + fCurrentTouchableHandle = new G4TouchableHistory(); + // Initial value for safety and point-of-origin of safety fPreviousSafety = 0.0 ; fPreviousSftOrigin = G4ThreeVector(0.,0.,0.) ; - + + fEndGlobalTimeComputed= false; + fCandidateEndGlobalTime= 0; } ///////////////////////////////////////////////////////////////////////////// G4Transportation::~G4Transportation() { - delete fTouchable1 ; - delete fTouchable2 ; } ////////////////////////////////////////////////////////////////////////////// @@ -122,6 +119,18 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, G4double geometryStepLength, newSafety ; fParticleIsLooping = false ; + if(track.GetCurrentStepNumber()==1) { + // reset safety value + fPreviousSafety = 0.0 ; + fPreviousSftOrigin = G4ThreeVector(0.,0.,0.) ; + // ChordFinder reset internal state + if ( this->DoesGlobalFieldExist() ) + fFieldPropagator->GetChordFinder()->ResetStepEstimate(); + // We need to update the current transportation's touchable handle + // to the track's one + fCurrentTouchableHandle = track.GetTouchableHandle(); + } + // GPILSelection is set to defaule value of CandidateForSelection // It is a return value @@ -130,7 +139,6 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // Get initial Energy/Momentum of the track const G4DynamicParticle* pParticle = track.GetDynamicParticle() ; - G4double startEnergy = pParticle->GetKineticEnergy() ; G4ThreeVector startMomentumDir = pParticle->GetMomentumDirection() ; G4ThreeVector startPosition = track.GetPosition() ; @@ -157,6 +165,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, G4bool fieldExertsForce = false ; fGeometryLimitedStep = false ; + // fEndGlobalTimeComputed = false ; // There is no need to locate the current volume. It is Done elsewhere: // On track construction @@ -179,42 +188,42 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, if( currentMinimumStep <= currentSafety ) { - // The Step is guaranteed to be taken + // The Step is guaranteed to be taken - geometryStepLength = currentMinimumStep ; - fGeometryLimitedStep = false ; + geometryStepLength = currentMinimumStep ; + fGeometryLimitedStep = false ; } else { - // Find whether the straight path intersects a volume + // Find whether the straight path intersects a volume - linearStepLength = fLinearNavigator->ComputeStep( startPosition, - startMomentumDir, - currentMinimumStep, - newSafety) ; - // Remember last safety origin & value. + linearStepLength = fLinearNavigator->ComputeStep( startPosition, + startMomentumDir, + currentMinimumStep, + newSafety) ; + // Remember last safety origin & value. - fPreviousSftOrigin = startPosition ; - fPreviousSafety = newSafety ; + fPreviousSftOrigin = startPosition ; + fPreviousSafety = newSafety ; - // The safety at the initial point has been re-calculated: + // The safety at the initial point has been re-calculated: - currentSafety = newSafety ; + currentSafety = newSafety ; - if( linearStepLength <= currentMinimumStep) - { - // The geometry limits the Step size (an intersection was found.) + if( linearStepLength <= currentMinimumStep) + { + // The geometry limits the Step size (an intersection was found.) - geometryStepLength = linearStepLength ; - fGeometryLimitedStep = true ; - } - else - { - // The full Step is taken. + geometryStepLength = linearStepLength ; + fGeometryLimitedStep = true ; + } + else + { + // The full Step is taken. - geometryStepLength = currentMinimumStep ; - fGeometryLimitedStep = false ; - } + geometryStepLength = currentMinimumStep ; + fGeometryLimitedStep = false ; + } } endpointDistance = geometryStepLength ; @@ -229,6 +238,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, fTransportEndSpin = track.GetPolarization(); fParticleIsLooping = false ; fMomentumChanged = false ; + fEndGlobalTimeComputed = false ; } else { @@ -237,20 +247,20 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, G4double lengthAlongCurve ; G4double restMass = pParticleDef->GetPDGMass() ; - fFieldPropagator->SetChargeMomentumMass( particleCharge, // charge in e+ units - momentumMagnitude, // Momentum in Mev/c - restMass ) ; + fFieldPropagator->SetChargeMomentumMass( particleCharge, // charge in e+ units + momentumMagnitude, // Momentum in Mev/c + restMass ) ; G4ThreeVector spin = track.GetPolarization() ; G4FieldTrack aFieldTrack = G4FieldTrack( startPosition, - track.GetMomentumDirection(), - 0.0, + track.GetMomentumDirection(), + 0.0, track.GetKineticEnergy(), restMass, track.GetVelocity(), - track.GetLocalTime(), // tof lab ? - track.GetProperTime(), // tof proper + track.GetGlobalTime(), // Laboratory fr. + track.GetProperTime(), // Particle rest fr. &spin ) ; if( currentMinimumStep > 0 ) @@ -258,24 +268,24 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // Do the Transport in the field (non recti-linear) lengthAlongCurve = fFieldPropagator->ComputeStep( aFieldTrack, - currentMinimumStep, - currentSafety, - track.GetVolume() ) ; - if( lengthAlongCurve < currentMinimumStep) + currentMinimumStep, + currentSafety, + track.GetVolume() ) ; + if( lengthAlongCurve < currentMinimumStep) { - geometryStepLength = lengthAlongCurve ; - fGeometryLimitedStep = true ; - } + geometryStepLength = lengthAlongCurve ; + fGeometryLimitedStep = true ; + } else { - geometryStepLength = currentMinimumStep ; - fGeometryLimitedStep = false ; - } + geometryStepLength = currentMinimumStep ; + fGeometryLimitedStep = false ; + } } else { geometryStepLength = lengthAlongCurve= 0.0 ; - fGeometryLimitedStep = false ; + fGeometryLimitedStep = false ; } // Remember last safety origin & value. @@ -291,20 +301,24 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, fMomentumChanged = true ; fTransportEndMomentumDir = aFieldTrack.GetMomentumDir() ; -#if VELOCITY_RETURNED - G4ThreeVector endVelocity = aFieldTrack.GetVelocity() ; - G4double veloc_sq = endVelocity.mag2() ; - G4double inverse_gamma = sqrt( 1 - veloc_sq/c_squared ) ; - G4double gamma = 1.0 / inverse_gamma; - G4double kineticEnergy = restMass*( gamma - 1.0 ) ; // Lorentz correction - // The equation below is more stable for small velocities. - G4double kineticEnergy_agn = restMass* veloc_sq / - (inverse_gamma * (1.0 + inverse_gamma) ) ; -#endif - fTransportEndKineticEnergy = aFieldTrack.GetKineticEnergy() ; - // fTransportEndKineticEnergy = track.GetKineticEnergy() ; + // if( (track.GetKineticEnergy() - fTransportEndKineticEnergy) + // > perMillion * fTransportEndKineticEnergy ){ + + if( fFieldPropagator->GetCurrentFieldManager()->DoesFieldChangeEnergy() ){ + + // If the field can changed energy, then the time must be integrated + // - so this should have been updated + fCandidateEndGlobalTime = aFieldTrack.GetLabTimeOfFlight(); + fEndGlobalTimeComputed = true; + // was ( fCandidateEndGlobalTime != track.GetGlobalTime() ); + // a cleaner way is to have FieldTrack knowing whether time is updated. + }else{ + // The energy is unchanged by field transport, + // so the time changed will be calculated elsewhere + fEndGlobalTimeComputed = false; + } fTransportEndSpin = aFieldTrack.GetSpin(); @@ -335,16 +349,12 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, currentSafety += endpointDistance ; #ifdef G4DEBUG_TRANSPORT - - cout.precision(16) ; - cout << "***Transportation::AlongStepGPIL ** " << G4endl ; - cout << " Called Navigator->ComputeSafety " << G4endl - << " with position = " << fTransportEndPosition << G4endl - << " and it returned safety= " << endSafety << G4endl ; - cout << " I add the endpoint distance " << endpointDistance - << " to it " - << " to obtain a pseudo-safety= " << currentSafety - << " which I return." << G4endl ; + G4cout.precision(16) ; + G4cout << "***Transportation::AlongStepGPIL ** " << G4endl ; + G4cout << " Called Navigator->ComputeSafety at " << fTransportEndPosition + << " and it returned safety= " << endSafety << G4endl ; + G4cout << " Adding endpoint distance " << endpointDistance + << " we obtain pseudo-safety= " << currentSafety << G4endl ; #endif } @@ -359,7 +369,7 @@ AlongStepGetPhysicalInteractionLength( const G4Track& track, // to corresponding members in G4Track) G4VParticleChange* G4Transportation::AlongStepDoIt( const G4Track& track, - const G4Step& stepData ) + const G4Step& stepData ) { fParticleChange.Initialize(track) ; @@ -371,26 +381,33 @@ G4VParticleChange* G4Transportation::AlongStepDoIt( const G4Track& track, fParticleChange.SetMomentumChanged(fMomentumChanged) ; fParticleChange.SetPolarizationChange(fTransportEndSpin); - + G4double deltaTime = 0.0 ; -#if HARMONIC_MEAN_VELOCITY + // Calculate Lab Time of Flight (ONLY if field Equations used it!) + // G4double endTime = fCandidateEndGlobalTime; + // G4double delta_time = endTime - startTime; + G4double startTime = track.GetGlobalTime(); + + if (!fEndGlobalTimeComputed){ + // The time was not integrated .. make the best estimate possible + G4double finalVelocity = track.GetVelocity() ; + G4double initialVelocity = stepData.GetPreStepPoint()->GetVelocity(); + G4double stepLength = track.GetStepLength(); - G4double meanInverseVelocity ; - meanInverseVelocity = 0.5/stepData.GetPreStepPoint()->GetVelocity() + - 0.5/stepData.GetPostStepPoint()->GetVelocity() ; - - if ( meanInverseVelocity < kInfinity ) - { - deltaTime = track.GetStepLength() * meanInverseVelocity ; - } -#endif + if (finalVelocity > 0.0) { + G4double meanInverseVelocity ; + // deltaTime = stepLength/finalVelocity ; + meanInverseVelocity= 0.5 * ( 1.0 / initialVelocity + 1.0 / finalVelocity ); + deltaTime = stepLength * meanInverseVelocity ; + }else{ + deltaTime = stepLength/initialVelocity; + } + fCandidateEndGlobalTime = startTime + deltaTime; + }else + deltaTime = fCandidateEndGlobalTime - startTime; - G4double finalVelocity = track.GetVelocity() ; - - if ( finalVelocity > 0.0 ) deltaTime = track.GetStepLength()/finalVelocity ; - - fParticleChange. SetTimeChange( track.GetGlobalTime() + deltaTime ) ; + fParticleChange. SetTimeChange( fCandidateEndGlobalTime ) ; // Now Correct by Lorentz factor to get "proper" deltaTime @@ -398,24 +415,25 @@ G4VParticleChange* G4Transportation::AlongStepDoIt( const G4Track& track, G4double deltaProperTime = deltaTime*( restMass/track.GetTotalEnergy() ) ; fParticleChange.SetProperTimeChange( track.GetProperTime() + deltaProperTime ) ; - - // fParticleChange.SetEnergyChange( Energy ) ; //fParticleChange. SetTrueStepLength( track.GetStepLength() ) ; -#ifdef DETECT_LOOPER - // If the particle is caught looping in a magnetic field (doing many steps) - // this kills it ... - // But currently a user-limit maximum Step size alleviates this problem, - // so this code is no longer used. + // If the particle is caught looping or is stuck (in very difficult boundaries) + // in a magnetic field (doing many steps) + // THEN this kills it ... if ( fParticleIsLooping ) { // Kill the looping particle fParticleChange.SetStatusChange( fStopAndKill ) ; - +#ifdef G4VERBOSE + G4cout << " G4Transportation is killing track that is looping or stuck " << G4endl + << " This track has " << track.GetKineticEnergy() << " MeV energy." + << G4endl; +#endif // ClearNumberOfInteractionLengthLeft() ; } -#endif + // Another (sometimes better way) is to use a user-limit maximum Step size + // to alleviate this problem .. return &fParticleChange ; @@ -428,9 +446,9 @@ G4VParticleChange* G4Transportation::AlongStepDoIt( const G4Track& track, // G4double G4Transportation:: -PostStepGetPhysicalInteractionLength( const G4Track& , - G4double previousStepSize, - G4ForceCondition* pForceCond ) +PostStepGetPhysicalInteractionLength( const G4Track&, + G4double previousStepSize, + G4ForceCondition* pForceCond ) { *pForceCond = Forced ; @@ -441,9 +459,9 @@ PostStepGetPhysicalInteractionLength( const G4Track& , // G4VParticleChange* G4Transportation::PostStepDoIt( const G4Track& track, - const G4Step& stepData ) + const G4Step& stepData ) { - const G4VTouchable* retCurrentTouchable ; // The one to return + G4TouchableHandle retCurrentTouchable ; // The one to return // Initialize ParticleChange (by setting all its members equal // to corresponding members in G4Track) @@ -460,29 +478,27 @@ G4VParticleChange* G4Transportation::PostStepDoIt( const G4Track& track, // and what was the previous will be freed. // (Needed because the preStepPoint can point to the previous touchable) - SetTheOtherTouchableFree(fCurrentTouchable) ; - fCurrentTouchable = GetFreeTouchable() ; - fLinearNavigator->SetGeometricallyLimitedStep() ; - fLinearNavigator-> - LocateGlobalPointAndUpdateTouchable( track.GetPosition(), - track.GetMomentumDirection(), - fCurrentTouchable, - true ) ; - + fLinearNavigator-> + LocateGlobalPointAndUpdateTouchableHandle( track.GetPosition(), + track.GetMomentumDirection(), + fCurrentTouchableHandle, + true ) ; + // Check whether the particle is out of the world volume // If so it has exited and must be killed. - - if( fCurrentTouchable->GetVolume() == 0 ) + + if( fCurrentTouchableHandle->GetVolume() == 0 ) { fParticleChange.SetStatusChange( fStopAndKill ) ; } - retCurrentTouchable = fCurrentTouchable ; - fParticleChange.SetTouchableChange( fCurrentTouchable ) ; + retCurrentTouchable = fCurrentTouchableHandle; + fParticleChange.SetTouchableHandle( fCurrentTouchableHandle ) ; } else { // fGeometryLimitedStep is false -#ifdef G4DEBUG +//#ifdef G4DEBUG +#ifdef G4VERBOSE // Although the location is changed, we know that the physical // volume remains constant. // In order to help in checking the user geometry @@ -498,63 +514,59 @@ G4VParticleChange* G4Transportation::PostStepDoIt( const G4Track& track, if( startAtSurface_And_MoveEpsilon) { - // fCurrentTouchable will now become the previous touchable, - SetTheOtherTouchableFree(fCurrentTouchable) ; - fCurrentTouchable = GetFreeTouchable() ; - - fLinearNavigator-> - LocateGlobalPointAndUpdateTouchable( track.GetPosition(), - track.GetMomentumDirection(), - fCurrentTouchable, - true ) ; - if( fCurrentTouchable->GetVolume() != track.GetVolume() ) + fLinearNavigator-> + LocateGlobalPointAndUpdateTouchableHandle( track.GetPosition(), + track.GetMomentumDirection(), + fCurrentTouchableHandle, + true ); + if( fCurrentTouchableHandle->GetVolume() != track.GetVolume() ) { G4cerr << " ERROR: A relocation within safety has caused a volume change! " << G4endl ; G4cerr << " The old volume is called " << track.GetVolume()->GetName() << G4endl ; G4cerr << " The new volume is called " ; - if ( fCurrentTouchable->GetVolume() != 0 ) - { - G4cerr << fCurrentTouchable->GetVolume()->GetName() << G4endl ; - } - else - { - G4cerr << "Out of World" << G4endl ; - } + if ( fCurrentTouchableHandle->GetVolume() != 0 ) + { + G4cerr << fCurrentTouchableHandle->GetVolume()->GetName() << G4endl ; + } + else + { + G4cerr << "Out of World" << G4endl ; + } G4cerr.precision(7) ; G4cerr << " The position is " << track.GetPosition() << G4endl ; // Let us relocate again, for debuging - fLinearNavigator-> - LocateGlobalPointAndUpdateTouchable( track.GetPosition(), - track.GetMomentumDirection(), - fCurrentTouchable, - true ) ; + fLinearNavigator-> + LocateGlobalPointAndUpdateTouchableHandle( track.GetPosition(), + track.GetMomentumDirection(), + fCurrentTouchableHandle, + true ) ; G4cerr << " The newer volume is called " ; - if ( fCurrentTouchable->GetVolume() != 0 ) - { - G4cerr << fCurrentTouchable->GetVolume()->GetName() << G4endl ; - } + if ( fCurrentTouchableHandle->GetVolume() != 0 ) + { + G4cerr << fCurrentTouchableHandle->GetVolume()->GetName() << G4endl ; + } else - { - G4cerr << "Out of World" << G4endl ; - } + { + G4cerr << "Out of World" << G4endl ; + } } - assert( fCurrentTouchable->GetVolume()->GetName() == + assert( fCurrentTouchableHandle->GetVolume()->GetName() == track.GetVolume()->GetName() ) ; - retCurrentTouchable = fCurrentTouchable ; - fParticleChange.SetTouchableChange( fCurrentTouchable ) ; + retCurrentTouchable = fCurrentTouchableHandle ; + fParticleChange.SetTouchableHandle( fCurrentTouchableHandle ) ; } else { - retCurrentTouchable = track.GetTouchable() ; - fParticleChange.SetTouchableChange( track.GetTouchable() ) ; + retCurrentTouchable = track.GetTouchableHandle() ; + fParticleChange.SetTouchableHandle( track.GetTouchableHandle() ) ; } // This must be done in the above if ( AtSur ) fails // We also do it for if (true) in order to get debug/opt to @@ -574,8 +586,8 @@ G4VParticleChange* G4Transportation::PostStepDoIt( const G4Track& track, // Although in general this is fCurrentTouchable, at the start of // a step it could be different ... ?? - fParticleChange.SetTouchableChange( track.GetTouchable() ) ; - retCurrentTouchable = track.GetTouchable() ; + fParticleChange.SetTouchableHandle( track.GetTouchableHandle() ) ; + retCurrentTouchable = track.GetTouchableHandle() ; #endif } // endif ( fGeometryLimitedStep ) @@ -595,7 +607,8 @@ G4VParticleChange* G4Transportation::PostStepDoIt( const G4Track& track, // this must always be done because the particle change always // uses this value to overwrite the current touchable pointer. - fParticleChange.SetTouchableChange(retCurrentTouchable) ; + fParticleChange.SetTouchableHandle(retCurrentTouchable) ; return &fParticleChange ; } + diff --git a/source/processes/transportation/src/G4UserSpecialCuts.cc b/source/processes/transportation/src/G4UserSpecialCuts.cc index 5de1d3c67c..8753ec8d6f 100644 --- a/source/processes/transportation/src/G4UserSpecialCuts.cc +++ b/source/processes/transportation/src/G4UserSpecialCuts.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserSpecialCuts.cc,v 1.3.6.1 2001/06/28 19:15:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserSpecialCuts.cc,v 1.4 2001/07/11 10:08:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -------------------------------------------------------------- // History diff --git a/source/readout/History b/source/readout/History index 8f675b55f8..bc2888b01c 100644 --- a/source/readout/History +++ b/source/readout/History @@ -1,4 +1,4 @@ -$Id: History,v 1.4 2001/02/08 06:18:28 asaim Exp $ +$Id: History,v 1.5 2001/10/18 20:28:18 asaim Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,9 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Oct 18, 2001, M.Asai (readout-V03-02-00) +- Correction for warning messages by gcc-2.95.2 + Feb 8, 2001, M.Asai (readout-V03-00-01) - Migration to STL vector classes affected files : diff --git a/source/readout/include/G4DCtable.hh b/source/readout/include/G4DCtable.hh index ec01581348..ffe5bd3f0c 100644 --- a/source/readout/include/G4DCtable.hh +++ b/source/readout/include/G4DCtable.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DCtable.hh,v 1.5.2.1 2001/06/28 19:15:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DCtable.hh,v 1.6 2001/07/11 10:08:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4DCtable_H diff --git a/source/readout/include/G4DMmessenger.hh b/source/readout/include/G4DMmessenger.hh index fcb32b26ec..91f2e208dc 100644 --- a/source/readout/include/G4DMmessenger.hh +++ b/source/readout/include/G4DMmessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DMmessenger.hh,v 1.3.2.1 2001/06/28 19:15:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DMmessenger.hh,v 1.4 2001/07/11 10:08:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4DMmessenger_h diff --git a/source/readout/include/G4DigiManager.hh b/source/readout/include/G4DigiManager.hh index 79617e023c..dcdae3b698 100644 --- a/source/readout/include/G4DigiManager.hh +++ b/source/readout/include/G4DigiManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DigiManager.hh,v 1.5.2.1 2001/06/28 19:15:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DigiManager.hh,v 1.6 2001/07/11 10:08:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4DigiManager_h diff --git a/source/readout/include/G4VDigitizerModule.hh b/source/readout/include/G4VDigitizerModule.hh index 8fd8f8dfbd..ae1196314c 100644 --- a/source/readout/include/G4VDigitizerModule.hh +++ b/source/readout/include/G4VDigitizerModule.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VDigitizerModule.hh,v 1.5.2.1 2001/06/28 19:15:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDigitizerModule.hh,v 1.6 2001/07/11 10:08:31 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VDigitizerModule_H diff --git a/source/readout/src/G4DCtable.cc b/source/readout/src/G4DCtable.cc index 190674d608..2509d00b9a 100644 --- a/source/readout/src/G4DCtable.cc +++ b/source/readout/src/G4DCtable.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4DCtable.cc,v 1.4.2.1 2001/06/28 19:15:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DCtable.cc,v 1.6 2001/10/18 20:28:19 asaim Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4DCtable.hh" @@ -33,7 +33,7 @@ G4DCtable::~G4DCtable() {;} G4int G4DCtable::Registor(G4String DMname,G4String DCname) { - for(int i=0;iGetName(); - for(int j=0;jGetName() == mName) return DMtable[i]; } @@ -199,13 +199,13 @@ void G4DigiManager::SetDigiCollection(G4int DCID,G4VDigiCollection* aDC) void G4DigiManager::SetVerboseLevel(G4int val) { verboseLevel = val; - for(G4int i=0;iSetVerboseLevel(val); } } void G4DigiManager::List() const { - for(G4int i=0;iGetName() << G4endl; } } diff --git a/source/readout/src/G4VDigitizerModule.cc b/source/readout/src/G4VDigitizerModule.cc index d281c76394..d4f9ced640 100644 --- a/source/readout/src/G4VDigitizerModule.cc +++ b/source/readout/src/G4VDigitizerModule.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VDigitizerModule.cc,v 1.2.2.1 2001/06/28 19:15:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VDigitizerModule.cc,v 1.3 2001/07/11 10:08:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VDigitizerModule.hh" diff --git a/source/run/GNUmakefile b/source/run/GNUmakefile index b707cf6f15..20797d9323 100644 --- a/source/run/GNUmakefile +++ b/source/run/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.3 2000/10/24 14:00:56 gcosmo Exp $ +# $Id: GNUmakefile,v 1.5 2001/10/24 15:25:18 gcosmo Exp $ # ---------------------------------------------------------- # GNUmakefile for run library. Gabriele Cosmo, 3/4/1997. # ---------------------------------------------------------- diff --git a/source/run/History b/source/run/History index b38157e830..de72ff02f2 100644 --- a/source/run/History +++ b/source/run/History @@ -1,4 +1,4 @@ -$Id: History,v 1.31 2001/06/22 07:57:39 asaim Exp $ +$Id: History,v 1.50 2001/12/07 08:45:40 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,79 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Dec 07, 2001 G.Cosmo (run-V03-02-11) +- G4RunManager.cc: fixed new date for the December public release. + +Nov 27, 2001 M.Asai (run-V03-02-10) +- Change implementation in rndmSaveThisRun() and rndmSaveThisEvent(). + +Nov 23, 2001 M.Maire +- Add rndmSaveThisRun() and rndmSaveThisEvent() methods to G4RunManager. +- Add /random/ commands to G4RunMessenger + +Nov 20, 2001 M.Asai (run-V03-02-09) +- Add GetVersionString() method to G4RunManager. + +Oct 24, 2004 M.Asai (run-V03-02-08) + +Oct 20, 2001 H.Kurasige +- Modified Set/GetCuts() related methods in G4VUserPhysicsList + for "cut-per-materials" implementation. + +Oct 24, 2001 G.Cosmo (run-V03-02-07) +- Removed references to G4GeomTestMessenger now moved to geometry/volumes + module. Files G4RunManager[.hh.cc], GNUmakefile. + +Oct 23, 2001 G.Cosmo (run-V03-02-06) +- Merged changes in "run-V03-02-04a" and "run-V03-02-05" for removal of + STLinterface module. + +Oct 11, 2001 G.Cosmo (run-V03-02-05) +- Replaced inclusion of ctoken.h with G4Tokenizer.hh in + G4UserPhysicsListMessenger.cc. +- Co-works with tag "globals-V03-02-03" where the STLInterface + module has been removed. + +Oct 11, 2001 G.Cosmo (run-V03-02-04a) +- Modified G4RunManager: + o added pointer to G4GeomTestMessenger for including new default + set of commands /geomtest/* in kernel, providing ability to check + for volumes overlaps in the user's detector geometry. + o modified call to G4GeometryManager::CloseGeometry() by adding + argument to verbose-mode. +- The tag co-works with "geometry-V03-02-01" and "config-V03-02-06b" + +Oct 10, 2001 M.Asai (run-V03-02-04) +- Add an option to store random number engine status for BOTH + of each run and each event. + +Oct 10, 2001 H.Kurashige +- Modify G4VUserPhysicsList::SetCutsForOthers to fix problems of + no invocation of RetreivePhysicsTable() for muons + +Sep 19, 2001 H.Kurashige (run-V03-02-03) +- Modify G4VUserPhysicsList for STL migration of materials (Hisaya) + +Aug 02, 2001, G.Cosmo (run-V03-02-02) +- Add Set/GetApplyCuts methods in G4VUserPhysicsList (Hisaya) +- Add /run/particle/applyCuts command in G4UserPhysicsListMessenger (Hisaya) +- Updated revision number of G4RunManager.cc for reference tag. + +Jul 18, 2001, M.Asai (run-V03-02-01) +- Add a new feature for the user to increase the number of waiting stacks +- Co-working with event-V03-02-02 + +Jul 15, 2001 +- Fixed bugs in G4VUserPhysicsList (Hisaya) +--- Modify Store/RetreivePhysicsTable for new G4VProcess +--- Fixed bugs in StoreMaterialInfor and StoreCutValues in binary mode + +Jul 13, 2001, G.Cosmo (run-V03-02-00) +- Cleanup of pedantic warnings in Linux-g++ ANSI setup. +- Corrected "NULL" to "0". +- Synchronised with HEAD revision after inclusion of disclaimer + liability. + Jun 22, 2001, M.Asai (run-V03-01-00) - Tagging for the release diff --git a/source/run/include/G4Run.hh b/source/run/include/G4Run.hh index 954cebb9df..f0ffebf477 100644 --- a/source/run/include/G4Run.hh +++ b/source/run/include/G4Run.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Run.hh,v 1.3.4.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Run.hh,v 1.4 2001/07/11 10:08:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4Run_h diff --git a/source/run/include/G4RunManager.hh b/source/run/include/G4RunManager.hh index e20a9837a9..b4a5750c6e 100644 --- a/source/run/include/G4RunManager.hh +++ b/source/run/include/G4RunManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RunManager.hh,v 1.15.2.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RunManager.hh,v 1.22 2001/11/23 16:20:30 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -80,8 +80,8 @@ class G4Timer; class G4RunMessenger; class G4DCtable; class G4Run; -#include "G4Event.hh" +#include "G4Event.hh" #include "G4EventManager.hh" #include "globals.hh" #include "g4std/vector" @@ -104,7 +104,7 @@ class G4RunManager // bottom of the main(). public: // with description - virtual void BeamOn(G4int n_event,const char* macroFile=NULL,G4int n_select=-1); + virtual void BeamOn(G4int n_event,const char* macroFile=0,G4int n_select=-1); // This method starts an event loof of "n_event" events. The condition of Geant4 // is examined before starting the event loop. This method must be invoked at // Idle state. The state will be changed to GeomClosed during the event loop and @@ -146,7 +146,7 @@ class G4RunManager virtual G4bool ConfirmBeamOnCondition(); virtual void RunInitialization(); - virtual void DoEventLoop(G4int n_event,const char* macroFile=NULL,G4int n_select=-1); + virtual void DoEventLoop(G4int n_event,const char* macroFile=0,G4int n_select=-1); virtual void RunTermination(); // These four protected methods are invoked from BeamOn() method. These four methods // are invoked in this order. @@ -210,11 +210,13 @@ class G4RunManager G4std::vector* previousEvents; G4int n_perviousEventsToBeStored; - G4int storeRandomNumberStatus; + G4bool storeRandomNumberStatus; G4String randomNumberStatusDir; + G4String versionString; public: - virtual void StoreRandomNumberStatus(G4int eventID=-1); + virtual void rndmSaveThisRun(); + virtual void rndmSaveThisEvent(); virtual void RestoreRandomNumberStatus(G4String fileN); public: // with description @@ -264,11 +266,21 @@ class G4RunManager inline const G4UserSteppingAction* GetUserSteppingAction() const { return userSteppingAction; } // These methods returns respective user initialization and action classes. + + inline void SetNumberOfAdditionalWaitingStacks(G4int iAdd) + { eventManager->SetNumberOfAdditionalWaitingStacks(iAdd); } + // Set the number of additional (optional) waiting stacks. + // This method must be invoked at PreInit, Init or Idle states. + // Once the user set the number of additional waiting stacks, + // he/she can use the corresponding ENUM in G4ClassificationOfNewTrack. + + inline G4String GetVersionString() const + { return versionString; } public: - inline void SetRandomNumberStore(G4int i) - { storeRandomNumberStatus = i; } - inline G4int GetRandomNumberStore() const + inline void SetRandomNumberStore(G4bool flag) + { storeRandomNumberStatus = flag; } + inline G4bool GetRandomNumberStore() const { return storeRandomNumberStatus; } inline void SetRandomNumberStoreDir(G4String dir) { @@ -325,7 +337,7 @@ class G4RunManager { if(i>=1 && i<=n_perviousEventsToBeStored) { return (*previousEvents)[i-1]; } - return NULL; + return 0; } // Returns the pointer to the "i" previous event. This method is availavle for // EventProc state. In case the event loop has not yet to reach to the requested diff --git a/source/run/include/G4RunMessenger.hh b/source/run/include/G4RunMessenger.hh index 3b53fc34d1..1558c31d0d 100644 --- a/source/run/include/G4RunMessenger.hh +++ b/source/run/include/G4RunMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RunMessenger.hh,v 1.6.4.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RunMessenger.hh,v 1.8 2001/11/23 16:20:30 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // GEANT 4 class header file @@ -86,9 +86,17 @@ class G4RunMessenger: public G4UImessenger G4UIcmdWithoutParameter * initCmd; G4UIcmdWithoutParameter * geomCmd; G4UIcmdWithoutParameter * cutCmd; - G4UIcmdWithAnInteger * storeRandCmd; - G4UIcmdWithAString * restoreRandCmd; + + G4UIdirectory * randomDirectory; G4UIcmdWithAString * randDirCmd; + G4UIcmdWithABool * savingFlagCmd; + G4UIcmdWithoutParameter * saveThisRunCmd; + G4UIcmdWithoutParameter * saveThisEventCmd; + G4UIcmdWithAString * restoreRandCmd; + + G4UIcmdWithAString * randDirOld; + G4UIcmdWithAnInteger * storeRandOld; + G4UIcmdWithAString * restoreRandOld; }; #endif diff --git a/source/run/include/G4UserPhysicsListMessenger.hh b/source/run/include/G4UserPhysicsListMessenger.hh index 71221aabe6..1bacb1665a 100644 --- a/source/run/include/G4UserPhysicsListMessenger.hh +++ b/source/run/include/G4UserPhysicsListMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserPhysicsListMessenger.hh,v 1.7.2.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserPhysicsListMessenger.hh,v 1.10 2001/08/03 06:02:55 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -46,6 +46,7 @@ // storePhysicsTable * store physics table into files // retreivePhysicsTable * retreive physics table from files // setStoredInAscii * Switch on/off ascii mode in store/retreive Physics Table +// applyCuts * Set flag for ApplyCuts // ------------------------------------------------------------ // History // first version 09 Jan. 1998 by H.Kurashige @@ -53,6 +54,7 @@ // add buildPhysicsTable command 13 Apr. 1999 by H.Kurashige // add store/retreivePhysicsTable 08 Nov. 2000 by H.Kurashige // add setStoredInAscii command 12 Mar. 2001 by H.Kurashige +// add applyCuts command 2 Aug. 2001 by H.Kurashige // ------------------------------------------------------------ #ifndef G4UserPhysicsListMessenger_h @@ -98,6 +100,7 @@ public: // with description G4UIcmdWithAString * storeCmd; G4UIcmdWithAString * retrieveCmd; G4UIcmdWithAnInteger * asciiCmd; + G4UIcommand * applyCutsCmd; }; #endif diff --git a/source/run/include/G4UserRunAction.hh b/source/run/include/G4UserRunAction.hh index cbc551de90..23a3799f85 100644 --- a/source/run/include/G4UserRunAction.hh +++ b/source/run/include/G4UserRunAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserRunAction.hh,v 1.4.4.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserRunAction.hh,v 1.5 2001/07/11 10:08:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4UserRunAction_h diff --git a/source/run/include/G4VModularPhysicsList.hh b/source/run/include/G4VModularPhysicsList.hh index e96ea7060b..1a3221de68 100644 --- a/source/run/include/G4VModularPhysicsList.hh +++ b/source/run/include/G4VModularPhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VModularPhysicsList.hh,v 1.1.4.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VModularPhysicsList.hh,v 1.2 2001/07/11 10:08:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/run/include/G4VPersistencyManager.hh b/source/run/include/G4VPersistencyManager.hh index 503ef0f7f9..8d7b17a479 100644 --- a/source/run/include/G4VPersistencyManager.hh +++ b/source/run/include/G4VPersistencyManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPersistencyManager.hh,v 1.3.4.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPersistencyManager.hh,v 1.4 2001/07/11 10:08:32 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VPersistencyManager_h diff --git a/source/run/include/G4VPhysicsConstructor.hh b/source/run/include/G4VPhysicsConstructor.hh index 7ff8cc5638..21e62b7f11 100644 --- a/source/run/include/G4VPhysicsConstructor.hh +++ b/source/run/include/G4VPhysicsConstructor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPhysicsConstructor.hh,v 1.1.4.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPhysicsConstructor.hh,v 1.3 2001/11/06 06:08:04 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -82,8 +82,8 @@ class G4VPhysicsConstructor // verbose level is set equal to physics list when registered protected: - G4String namePhysics; G4int verboseLevel; + G4String namePhysics; protected: // the particle table has the complete List of existing particle types diff --git a/source/run/include/G4VUserDetectorConstruction.hh b/source/run/include/G4VUserDetectorConstruction.hh index 246f05d8e9..ca121b3518 100644 --- a/source/run/include/G4VUserDetectorConstruction.hh +++ b/source/run/include/G4VUserDetectorConstruction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VUserDetectorConstruction.hh,v 1.3.4.1 2001/06/28 19:15:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VUserDetectorConstruction.hh,v 1.4 2001/07/11 10:08:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VUserDetectorConstruction_h diff --git a/source/run/include/G4VUserPhysicsList.hh b/source/run/include/G4VUserPhysicsList.hh index 6edafe44a4..358f9132f4 100644 --- a/source/run/include/G4VUserPhysicsList.hh +++ b/source/run/include/G4VUserPhysicsList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VUserPhysicsList.hh,v 1.9.2.1 2001/06/28 19:15:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VUserPhysicsList.hh,v 1.14 2001/10/16 08:35:50 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -197,15 +197,15 @@ class G4VUserPhysicsList // other than particle types specified in arguments void SetCutValueForOtherThan(G4double cutValue, G4ParticleDefinition* first, - G4ParticleDefinition* second = NULL, - G4ParticleDefinition* third = NULL, - G4ParticleDefinition* fourth = NULL, - G4ParticleDefinition* fifth = NULL, - G4ParticleDefinition* sixth = NULL, - G4ParticleDefinition* seventh = NULL, - G4ParticleDefinition* eighth = NULL, - G4ParticleDefinition* nineth = NULL, - G4ParticleDefinition* tenth = NULL ); + G4ParticleDefinition* second = 0, + G4ParticleDefinition* third = 0, + G4ParticleDefinition* fourth = 0, + G4ParticleDefinition* fifth = 0, + G4ParticleDefinition* sixth = 0, + G4ParticleDefinition* seventh = 0, + G4ParticleDefinition* eighth = 0, + G4ParticleDefinition* nineth = 0, + G4ParticleDefinition* tenth = 0 ); // "reCalcCutsForOthers" method re-calculates a cut value // to all particle types which have not be called SetCuts() methods yet. @@ -216,8 +216,13 @@ class G4VUserPhysicsList // Cut values will be retrieved from files void SetParticleCuts( G4double cut, G4ParticleDefinition* ); - - /////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + public: + // Get/SetApplyCuts gets/sets the flag for ApplyCuts + void SetApplyCuts(G4bool value, const G4String& name); + G4bool GetApplyCuts(const G4String& name) const; + +/////////////////////////////////////////////////////////////////////////////// protected: // do BuildPhysicsTable for make the integral schema void BuildIntegralPhysicsTable(G4VProcess* ,G4ParticleDefinition* ); @@ -248,10 +253,7 @@ class G4VUserPhysicsList // check stored material is consistent with the current detector setup. virtual G4bool CheckMaterialInfo(const G4String& directory, G4bool ascii = false); - // check stored cut value is consistent with the current detector setup. - virtual G4bool CheckCutValues(const G4String& directory, - G4bool ascii = false); - ///////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////// protected: // adds new ProcessManager to all particles in the Particle Table // this routine is used in Construct() @@ -265,7 +267,7 @@ class G4VUserPhysicsList public: // with description // add process manager for particles created on-the-fly void AddProcessManager(G4ParticleDefinition* newParticle, - G4ProcessManager* newManager = NULL ); + G4ProcessManager* newManager = 0 ); //////////////////////////////////////////////////////////////////////// @@ -303,6 +305,12 @@ class G4VUserPhysicsList private: enum { FixedStringLengthForStore = 32 }; + //////////////////////////////////////////////////////////////////// + protected: + enum { NumberOfParticlesForStoreCuts = 9}; + static const G4String particleForStoreCuts[NumberOfParticlesForStoreCuts]; + G4bool isBuildPhysicsTable[NumberOfParticlesForStoreCuts]; + G4int isParticleForStoreCuts(const G4ParticleDefinition*) const; }; diff --git a/source/run/include/G4VUserPrimaryGeneratorAction.hh b/source/run/include/G4VUserPrimaryGeneratorAction.hh index dd1ea13759..826385d77e 100644 --- a/source/run/include/G4VUserPrimaryGeneratorAction.hh +++ b/source/run/include/G4VUserPrimaryGeneratorAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VUserPrimaryGeneratorAction.hh,v 1.3.4.1 2001/06/28 19:15:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VUserPrimaryGeneratorAction.hh,v 1.4 2001/07/11 10:08:33 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VUserPrimaryGeneratorAction_h diff --git a/source/run/src/G4Run.cc b/source/run/src/G4Run.cc index 916119ebf9..456d2c7b85 100644 --- a/source/run/src/G4Run.cc +++ b/source/run/src/G4Run.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Run.cc,v 1.2.4.1 2001/06/28 19:15:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Run.cc,v 1.4 2001/07/13 15:57:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4Run.hh" @@ -30,7 +30,7 @@ G4Allocator aRunAllocator; G4Run::G4Run() -:runID(0),numberOfEvent(0),HCtable(NULL),DCtable(NULL) +:runID(0),numberOfEvent(0),HCtable(0),DCtable(0) {;} G4Run::~G4Run() diff --git a/source/run/src/G4RunManager.cc b/source/run/src/G4RunManager.cc index 102a6f5860..c224ddd44d 100644 --- a/source/run/src/G4RunManager.cc +++ b/source/run/src/G4RunManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RunManager.cc,v 1.25.2.1 2001/06/28 19:15:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RunManager.cc,v 1.40 2001/12/06 16:54:07 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -56,21 +56,20 @@ #include "g4std/strstream" -G4RunManager* G4RunManager::fRunManager = NULL; +G4RunManager* G4RunManager::fRunManager = 0; G4RunManager* G4RunManager::GetRunManager() { return fRunManager; } G4RunManager::G4RunManager() -:userDetector(NULL),physicsList(NULL), - userRunAction(NULL),userPrimaryGeneratorAction(NULL),userEventAction(NULL), - userStackingAction(NULL),userTrackingAction(NULL),userSteppingAction(NULL), - currentRun(NULL),currentEvent(NULL),n_perviousEventsToBeStored(0), +:userDetector(0),physicsList(0), + userRunAction(0),userPrimaryGeneratorAction(0),userEventAction(0), + userStackingAction(0),userTrackingAction(0),userSteppingAction(0), geometryInitialized(false),physicsInitialized(false),cutoffInitialized(false), - geometryNeedsToBeClosed(true),initializedAtLeastOnce(false), - runAborted(false), - geometryToBeOptimized(true),verboseLevel(0),DCtable(NULL),runIDCounter(0), - storeRandomNumberStatus(0) + geometryNeedsToBeClosed(true),runAborted(false),initializedAtLeastOnce(false), + geometryToBeOptimized(true),runIDCounter(0),verboseLevel(0),DCtable(0), + currentRun(0),currentEvent(0),n_perviousEventsToBeStored(0), + storeRandomNumberStatus(false) { if(fRunManager) { G4Exception("G4RunManager constructed twice."); } @@ -83,10 +82,10 @@ G4RunManager::G4RunManager() G4ParticleTable::GetParticleTable()->CreateMessenger(); G4ProcessTable::GetProcessTable()->CreateMessenger(); randomNumberStatusDir = "./"; + versionString = " Geant4 version $Name: geant4-04-00 $\n (14-Dec-2001)"; G4cout << "**********************************************" << G4endl - << " Geant4 version $Name: $" << G4endl - << " (29-Jun-2001)" << G4endl + << versionString << G4endl << " Copyright : Geant4 Collaboration" << G4endl << "**********************************************" << G4endl; } @@ -206,22 +205,25 @@ void G4RunManager::RunInitialization() if(verboseLevel>1) G4cout << "Start closing geometry." << G4endl; G4GeometryManager* geomManager = G4GeometryManager::GetInstance(); geomManager->OpenGeometry(); - geomManager->CloseGeometry(geometryToBeOptimized); + geomManager->CloseGeometry(geometryToBeOptimized, verboseLevel>1); geometryNeedsToBeClosed = false; } G4StateManager* stateManager = G4StateManager::GetStateManager(); stateManager->SetNewState(GeomClosed); //previousEvents->clearAndDestroy(); - for(G4int itr=0;itrsize();itr++) + for(size_t itr=0;itrsize();itr++) { delete (*previousEvents)[itr]; } previousEvents->clear(); for(G4int i_prev=0;i_prevpush_back((G4Event*)NULL); } + { previousEvents->push_back((G4Event*)0); } runAborted = false; - if(storeRandomNumberStatus==1 || storeRandomNumberStatus==-1) StoreRandomNumberStatus(); + if(storeRandomNumberStatus) { + G4String fileN = randomNumberStatusDir + "currentRun.rndm"; + HepRandom::saveEngineStatus(fileN); + } if(verboseLevel>0) G4cout << "Start Run processing." << G4endl; } @@ -234,7 +236,7 @@ void G4RunManager::DoEventLoop(G4int n_event,const char* macroFile,G4int n_selec { timer->Start(); } G4String msg; - if(macroFile!=NULL) + if(macroFile!=0) { if(n_select<0) n_select = n_event; msg = "/control/execute "; @@ -257,7 +259,7 @@ void G4RunManager::DoEventLoop(G4int n_event,const char* macroFile,G4int n_selec if(i_eventApplyCommand(msg); stateManager->SetNewState(GeomClosed); StackPreviousEvent(currentEvent); - currentEvent = NULL; + currentEvent = 0; if(runAborted) break; } @@ -284,8 +286,11 @@ G4Event* G4RunManager::GenerateEvent(G4int i_event) G4Event* anEvent = new G4Event(i_event); - if(storeRandomNumberStatus==2 || storeRandomNumberStatus==-2) StoreRandomNumberStatus(anEvent->GetEventID()); - + if(storeRandomNumberStatus) { + G4String fileN = randomNumberStatusDir + "currentEvent.rndm"; + HepRandom::saveEngineStatus(fileN); + } + userPrimaryGeneratorAction->GeneratePrimaries(anEvent); return anEvent; } @@ -302,7 +307,7 @@ void G4RunManager::RunTermination() G4StateManager* stateManager = G4StateManager::GetStateManager(); //previousEvents->clearAndDestroy(); - for(G4int itr=0;itrsize();itr++) + for(size_t itr=0;itrsize();itr++) { delete (*previousEvents)[itr]; } previousEvents->clear(); @@ -311,7 +316,7 @@ void G4RunManager::RunTermination() G4VPersistencyManager* fPersM = G4VPersistencyManager::GetPersistencyManager(); if(fPersM) fPersM->Store(currentRun); delete currentRun; - currentRun = NULL; + currentRun = 0; runIDCounter++; stateManager->SetNewState(Idle); @@ -417,27 +422,47 @@ void G4RunManager::DefineWorldVolume(G4VPhysicalVolume* worldVol) geometryNeedsToBeClosed = true; } -void G4RunManager::StoreRandomNumberStatus(G4int eventID) +void G4RunManager::rndmSaveThisRun() { - G4String fileN = randomNumberStatusDir+"RandEngine"; - if(storeRandomNumberStatus>0 && currentRun != NULL) - { - char st[20]; - G4std::ostrstream os(st,20); - os << currentRun->GetRunID() << '\0'; - fileN += "R"; - fileN += st; + G4int runNumber = runIDCounter; + if(currentRun == 0) runNumber--; //state Idle; decrease runNumber + if(!storeRandomNumberStatus || runNumber < 0) { + G4cerr << "Warning from G4RunManager::rndmSaveThisRun():" + << " there is no currentRun or its RandomEngineStatus is not available." + << G4endl << "Command ignored." << G4endl; + return; } - if(storeRandomNumberStatus==2 && eventID>=0) - { - char st[20]; - G4std::ostrstream os(st,20); - os << eventID << '\0'; - fileN += "E"; - fileN += st; + + G4String fileIn = randomNumberStatusDir + "currentRun.rndm"; + + G4std::ostrstream os; + os << "run" << runNumber << ".rndm" << '\0'; + G4String fileOut = randomNumberStatusDir + os.str(); + + G4String copCmd = "/control/shell cp "+fileIn+" "+fileOut; + G4UImanager::GetUIpointer()->ApplyCommand(copCmd); + if(verboseLevel>0) G4cout << "currentRun.rndm is copied to file: " << fileOut << G4endl; +} + +void G4RunManager::rndmSaveThisEvent() +{ + if(!storeRandomNumberStatus || currentEvent == 0) { + G4cerr << "Warning from G4RunManager::rndmSaveThisEvent():" + << " there is no currentEvent or its RandomEngineStatus is not available." + << G4endl << "Command ignored." << G4endl; + return; } - fileN += ".stat"; - HepRandom::saveEngineStatus(fileN); + + G4String fileIn = randomNumberStatusDir + "currentEvent.rndm"; + + G4std::ostrstream os; + os << "run" << currentRun->GetRunID() << "evt" << currentEvent->GetEventID() + << ".rndm" << '\0'; + G4String fileOut = randomNumberStatusDir + os.str(); + + G4String copCmd = "/control/shell cp "+fileIn+" "+fileOut; + G4UImanager::GetUIpointer()->ApplyCommand(copCmd); + if(verboseLevel>0) G4cout << "currentEvent.rndm is copied to file: " << fileOut << G4endl; } void G4RunManager::RestoreRandomNumberStatus(G4String fileN) @@ -447,13 +472,9 @@ void G4RunManager::RestoreRandomNumberStatus(G4String fileN) { fileNameWithDirectory = randomNumberStatusDir+fileN; } else { fileNameWithDirectory = fileN; } + HepRandom::restoreEngineStatus(fileNameWithDirectory); + if(verboseLevel>0) G4cout << "RandomNumberEngineStatus restored from file: " + << fileNameWithDirectory << G4endl; + HepRandom::showEngineStatus(); } - - - - - - - - diff --git a/source/run/src/G4RunMessenger.cc b/source/run/src/G4RunMessenger.cc index 9564a00c54..9da87ca66b 100644 --- a/source/run/src/G4RunMessenger.cc +++ b/source/run/src/G4RunMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RunMessenger.cc,v 1.7.4.1 2001/06/28 19:15:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RunMessenger.cc,v 1.10 2001/11/23 16:20:30 maire Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4RunMessenger.hh" @@ -119,43 +119,68 @@ G4RunMessenger::G4RunMessenger(G4RunManager * runMgr) cutCmd->SetGuidance(" if cutoff value(s) have been modified after the"); cutCmd->SetGuidance(" first initialization (or BeamOn)."); cutCmd->AvailableForStates(PreInit,Idle); - - storeRandCmd = new G4UIcmdWithAnInteger("/run/storeRandomNumberStatus",this); - storeRandCmd->SetGuidance("Store the status of the random number engine to a file."); - storeRandCmd->SetGuidance("See CLHEP manual for detail."); - storeRandCmd->SetGuidance("Frequency : 0 - not stored"); - storeRandCmd->SetGuidance(" 1 - begining of each run"); - storeRandCmd->SetGuidance(" -1 - begining of each run (file overwritten)"); - storeRandCmd->SetGuidance(" 2 - begining of each event before generating primaries"); - storeRandCmd->SetGuidance(" -2 - begining of each event before generating primaries (file overwritten)"); - storeRandCmd->SetGuidance("Stored status can be restored by "); - storeRandCmd->SetGuidance(" /run/restoreRandomNumberStatus command."); - storeRandCmd->SetGuidance("In case Frequency is negative, a output file (file name RandEngine.stat)"); - storeRandCmd->SetGuidance(" is overwitten every time."); - storeRandCmd->SetGuidance("In case Frequency is 1, file names are RandEngineRxxx.stat,"); - storeRandCmd->SetGuidance(" where xxx is the run number."); - storeRandCmd->SetGuidance("In case Frequency is 2, file names are RandEngineRxxxEyyy.stat,"); - storeRandCmd->SetGuidance(" where xxx is the run number and yyy is the event number."); - storeRandCmd->AvailableForStates(PreInit,Idle); - storeRandCmd->SetParameterName("frequency",true); - storeRandCmd->SetDefaultValue(1); - storeRandCmd->SetRange("frequency >=-2 && frequency <=2"); - - restoreRandCmd = new G4UIcmdWithAString("/run/restoreRandomNumberStatus",this); - restoreRandCmd->SetGuidance("Restore the status of the random number engine from a file."); - restoreRandCmd->SetGuidance("See CLHEP manual for detail."); - restoreRandCmd->SetGuidance("The engine status must be stored beforehand."); - restoreRandCmd->SetGuidance("Directory of the status file should be set by /run/randomNumberStatusDirectory command."); - restoreRandCmd->SetParameterName("fileName",true); - restoreRandCmd->SetDefaultValue("RandEngine.stat"); - restoreRandCmd->AvailableForStates(PreInit,Idle,GeomClosed); - - randDirCmd = new G4UIcmdWithAString("/run/randomNumberStatusDirectory",this); - randDirCmd->SetGuidance("Define the directory name of the random number status files."); - randDirCmd->SetGuidance("Directory must be creates before storing the file."); + + randomDirectory = new G4UIdirectory("/random/"); + randomDirectory->SetGuidance("Random number status control commands."); + + randDirCmd = new G4UIcmdWithAString("/random/setDirectoryName",this); + randDirCmd->SetGuidance("Define the directory name of the rndm status files."); + randDirCmd->SetGuidance("Directory must be creates before storing the files."); randDirCmd->SetParameterName("fileName",true); randDirCmd->SetDefaultValue("./"); randDirCmd->AvailableForStates(PreInit,Idle,GeomClosed); + + savingFlagCmd = new G4UIcmdWithABool("/random/setSavingFlag",this); + savingFlagCmd->SetGuidance("The randomNumberStatus will be saved at :"); + savingFlagCmd->SetGuidance("begining of run (currentRun.rndm) and " + "begining of event (currentEvent.rndm) "); + savingFlagCmd->SetParameterName("flag",true); + savingFlagCmd->SetDefaultValue(true); + + saveThisRunCmd = new G4UIcmdWithoutParameter("/random/saveThisRun",this); + saveThisRunCmd->SetGuidance("copy currentRun.rndm to runXXX.rndm"); + saveThisRunCmd->AvailableForStates(Idle,GeomClosed,EventProc); + + saveThisEventCmd = new G4UIcmdWithoutParameter("/random/saveThisEvent",this); + saveThisEventCmd->SetGuidance("copy currentEvent.rndm to runXXXevtYYY.rndm"); + saveThisEventCmd->AvailableForStates(EventProc); + + restoreRandCmd = new G4UIcmdWithAString("/random/resetEngineFrom",this); + restoreRandCmd->SetGuidance("Reset the status of the rndm engine from a file."); + restoreRandCmd->SetGuidance("See CLHEP manual for detail."); + restoreRandCmd->SetGuidance("The engine status must be stored beforehand."); + restoreRandCmd->SetGuidance("Directory of the status file should be set by" + " /random/setDirectoryName."); + restoreRandCmd->SetParameterName("fileName",true); + restoreRandCmd->SetDefaultValue("currentRun.rndm"); + restoreRandCmd->AvailableForStates(PreInit,Idle,GeomClosed); + + //old commands for the rndm engine status handling + // + randDirOld = new G4UIcmdWithAString("/run/randomNumberStatusDirectory",this); + randDirOld->SetGuidance("Define the directory name of the rndm status files."); + randDirOld->SetGuidance("Directory must be creates before storing the files."); + randDirOld->SetParameterName("fileName",true); + randDirOld->SetDefaultValue("./"); + randDirOld->AvailableForStates(PreInit,Idle,GeomClosed); + + storeRandOld = new G4UIcmdWithAnInteger("/run/storeRandomNumberStatus",this); + storeRandOld->SetGuidance("The randomNumberStatus will be saved at :"); + storeRandOld->SetGuidance("begining of run (currentRun.rndm) and " + "begining of event (currentEvent.rndm) "); + storeRandOld->SetParameterName("flag",true); + storeRandOld->SetDefaultValue(1); + + restoreRandOld = new G4UIcmdWithAString("/run/restoreRandomNumberStatus",this); + restoreRandOld->SetGuidance("Reset the status of the rndm engine from a file."); + restoreRandOld->SetGuidance("See CLHEP manual for detail."); + restoreRandOld->SetGuidance("The engine status must be stored beforehand."); + restoreRandOld->SetGuidance("Directory of the status file should be set by" + " /random/setDirectoryName."); + restoreRandOld->SetParameterName("fileName",true); + restoreRandOld->SetDefaultValue("currentRun.rndm"); + restoreRandOld->AvailableForStates(PreInit,Idle,GeomClosed); + } G4RunMessenger::~G4RunMessenger() @@ -169,10 +194,15 @@ G4RunMessenger::~G4RunMessenger() delete initCmd; delete geomCmd; delete cutCmd; - delete storeRandCmd; - delete restoreRandCmd; - delete randDirCmd; + delete randDirOld; delete storeRandOld; delete restoreRandOld; delete runDirectory; + + delete randDirCmd; + delete savingFlagCmd; + delete saveThisRunCmd; + delete saveThisEventCmd; + delete restoreRandCmd; + delete randomDirectory; } void G4RunMessenger::SetNewValue(G4UIcommand * command,G4String newValue) @@ -205,12 +235,33 @@ void G4RunMessenger::SetNewValue(G4UIcommand * command,G4String newValue) { runManager->GeometryHasBeenModified(); } else if( command==cutCmd ) { runManager->CutOffHasBeenModified(); } - else if( command==storeRandCmd ) - { runManager->SetRandomNumberStore(storeRandCmd->GetNewIntValue(newValue)); } - else if( command==restoreRandCmd ) - { runManager->RestoreRandomNumberStatus(newValue); } + else if( command==randDirCmd ) { runManager->SetRandomNumberStoreDir(newValue); } + else if( command==savingFlagCmd ) + { runManager->SetRandomNumberStore(savingFlagCmd->GetNewBoolValue(newValue)); } + else if( command==saveThisRunCmd ) + { runManager->rndmSaveThisRun(); } + else if( command==saveThisEventCmd ) + { runManager->rndmSaveThisEvent(); } + else if( command==restoreRandCmd ) + { runManager->RestoreRandomNumberStatus(newValue); } + + else if( command==randDirOld ) + {G4cout << "warning: deprecated command. Use /random/setDirectoryName" + << G4endl; + runManager->SetRandomNumberStoreDir(newValue); } + else if( command==storeRandOld ) + {G4cout << "warning: deprecated command. Use /random/setSavingFlag" + << G4endl; + G4int frequency = storeRandOld->GetNewIntValue(newValue); + G4bool flag = false; + if(frequency != 0) flag = true; + runManager->SetRandomNumberStore(flag); } + else if( command==restoreRandOld ) + {G4cout << "warning: deprecated command. Use /random/resetEngineFrom" + << G4endl; + runManager->RestoreRandomNumberStatus(newValue); } } G4String G4RunMessenger::GetCurrentValue(G4UIcommand * command) @@ -219,8 +270,6 @@ G4String G4RunMessenger::GetCurrentValue(G4UIcommand * command) if( command==verboseCmd ) { cv = verboseCmd->ConvertToString(runManager->GetVerboseLevel()); } - else if( command==storeRandCmd ) - { cv = storeRandCmd->ConvertToString(runManager->GetRandomNumberStore()); } else if( command==randDirCmd ) { cv = runManager->GetRandomNumberStoreDir(); } diff --git a/source/run/src/G4UserPhysicsListMessenger.cc b/source/run/src/G4UserPhysicsListMessenger.cc index 80b5d591f8..b84c5ea703 100644 --- a/source/run/src/G4UserPhysicsListMessenger.cc +++ b/source/run/src/G4UserPhysicsListMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserPhysicsListMessenger.cc,v 1.6.2.1 2001/06/28 19:15:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserPhysicsListMessenger.cc,v 1.10 2001/10/11 13:44:37 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -44,6 +44,8 @@ #include "G4UIcmdWithAString.hh" #include "G4ParticleTable.hh" #include "G4ios.hh" +#include "G4Tokenizer.hh" + G4UserPhysicsListMessenger::G4UserPhysicsListMessenger(G4VUserPhysicsList* pParticleList):thePhysicsList(pParticleList) { @@ -124,6 +126,19 @@ G4UserPhysicsListMessenger::G4UserPhysicsListMessenger(G4VUserPhysicsList* pPart asciiCmd->AvailableForStates(PreInit,Idle); asciiCmd->SetRange("ascii ==0 || ascii ==1"); + //Commnad /run/particle/applyCuts command + applyCutsCmd = new G4UIcommand("/run/particle/applyCuts",this); + applyCutsCmd->SetGuidance("Set ApplyCuts flag "); + applyCutsCmd->SetGuidance(" applyCuts [value] [particle]"); + applyCutsCmd->SetGuidance(" value : true(default) or false "); + applyCutsCmd->SetGuidance(" particle : all(default) or particle name "); + G4UIparameter* param = new G4UIparameter("Flag",'s',true); + param->SetDefaultValue("true"); + applyCutsCmd->SetParameter(param); + param = new G4UIparameter("Particle",'s',true); + param->SetDefaultValue("all"); + applyCutsCmd->SetParameter(param); + applyCutsCmd->AvailableForStates(PreInit,Init,Idle); } G4UserPhysicsListMessenger::~G4UserPhysicsListMessenger() @@ -137,7 +152,8 @@ G4UserPhysicsListMessenger::~G4UserPhysicsListMessenger() delete storeCmd; delete retrieveCmd; delete theDirectory; - delete asciiCmd; + delete asciiCmd; + delete applyCutsCmd; } void G4UserPhysicsListMessenger::SetNewValue(G4UIcommand * command,G4String newValue) @@ -161,13 +177,13 @@ void G4UserPhysicsListMessenger::SetNewValue(G4UIcommand * command,G4String newV } else if( command == addProcManCmd ){ G4ParticleDefinition* particle = (G4ParticleTable::GetParticleTable())->FindParticle(newValue); - if (particle == NULL) return; - if (particle->GetProcessManager() != NULL) return; + if (particle == 0) return; + if (particle->GetProcessManager() != 0) return; thePhysicsList->AddProcessManager(particle); } else if( command == buildPTCmd ){ G4ParticleDefinition* particle = (G4ParticleTable::GetParticleTable())->FindParticle(newValue); - if (particle == NULL) return; + if (particle == 0) return; thePhysicsList->BuildPhysicsTable(particle); } else if ( command == storeCmd ){ @@ -187,6 +203,18 @@ void G4UserPhysicsListMessenger::SetNewValue(G4UIcommand * command,G4String newV thePhysicsList->SetStoredInAscii(); } + } else if( command == applyCutsCmd ) { + G4Tokenizer next( newValue ); + + // check 1st argument + G4String temp = G4String(next()); + G4bool flag = (temp =="true" || temp=="TRUE"); + + // check 2nd argument + G4String name = G4String(next()); + + thePhysicsList->SetApplyCuts(flag, name); + } } @@ -240,6 +268,12 @@ G4String G4UserPhysicsListMessenger::GetCurrentValue(G4UIcommand * command) cv = "0"; } + } else if( command == applyCutsCmd ) { + if (thePhysicsList->GetApplyCuts("proton")){ + cv = "true"; + } else { + cv = "false"; + } } return cv; diff --git a/source/run/src/G4UserRunAction.cc b/source/run/src/G4UserRunAction.cc index a966abf161..3c29586eb5 100644 --- a/source/run/src/G4UserRunAction.cc +++ b/source/run/src/G4UserRunAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserRunAction.cc,v 1.3.4.1 2001/06/28 19:15:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserRunAction.cc,v 1.4 2001/07/11 10:08:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4UserRunAction.hh" diff --git a/source/run/src/G4VPersistencyManager.cc b/source/run/src/G4VPersistencyManager.cc index 0e061ed3a9..f08611d235 100644 --- a/source/run/src/G4VPersistencyManager.cc +++ b/source/run/src/G4VPersistencyManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VPersistencyManager.cc,v 1.2.4.1 2001/06/28 19:15:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VPersistencyManager.cc,v 1.4 2001/07/13 15:57:06 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VPersistencyManager.hh" @@ -41,7 +41,7 @@ G4VPersistencyManager::G4VPersistencyManager() G4VPersistencyManager::~G4VPersistencyManager() { - fPersistencyManager = NULL; + fPersistencyManager = 0; } diff --git a/source/run/src/G4VUserDetectorConstruction.cc b/source/run/src/G4VUserDetectorConstruction.cc index 8569b84bdd..f7b41f956e 100644 --- a/source/run/src/G4VUserDetectorConstruction.cc +++ b/source/run/src/G4VUserDetectorConstruction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VUserDetectorConstruction.cc,v 1.2.4.1 2001/06/28 19:15:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VUserDetectorConstruction.cc,v 1.3 2001/07/11 10:08:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VUserDetectorConstruction.hh" diff --git a/source/run/src/G4VUserPhysicsList.cc b/source/run/src/G4VUserPhysicsList.cc index da842c1518..e797d73346 100644 --- a/source/run/src/G4VUserPhysicsList.cc +++ b/source/run/src/G4VUserPhysicsList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VUserPhysicsList.cc,v 1.13.2.1 2001/06/28 19:15:21 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VUserPhysicsList.cc,v 1.26 2001/10/23 02:36:38 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -61,12 +61,12 @@ //////////////////////////////////////////////////////// G4VUserPhysicsList::G4VUserPhysicsList() :verboseLevel(1), - numberOfMaterial(0), fRetrievePhysicsTable(false), - directoryPhysicsTable("."), - fIsCheckedForRetrievePhysicsTable(false), fStoredInAscii(true), - fIsRestoredCutValues(false) + fIsCheckedForRetrievePhysicsTable(false), + fIsRestoredCutValues(false), + directoryPhysicsTable("."), + numberOfMaterial(0) { // default cut value (1.0mm) @@ -435,6 +435,57 @@ void G4VUserPhysicsList::SetCutsWithDefault() } +//////////////////////////////////////////////////////// +void G4VUserPhysicsList::SetApplyCuts(G4bool value, const G4String& name) +{ + // Sets a value to particle + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + + // check if the cut value has already been set + if (name =="all" || name =="ALL" ){ + particle->SetApplyCutsFlag(value); + } else if (name == particle->GetParticleName()){ + particle->SetApplyCutsFlag(value); +#ifdef G4VERBOSE + if (verboseLevel >1) { + G4cout << "Set ApplyCutsFLag "; + if (value) { + G4cout << "TRUE "; + } else { + G4cout << "FALSE "; + } + G4cout << "for " << particle->GetParticleName() << G4endl; + } +#endif + break; + } + } +} +//////////////////////////////////////////////////////// +G4bool G4VUserPhysicsList::GetApplyCuts(const G4String& name) const +{ + // Sets a value to particle + theParticleIterator->reset(); + while( (*theParticleIterator)() ){ + G4ParticleDefinition* particle = theParticleIterator->value(); + + // check if the cut value has already been set + if (name == particle->GetParticleName()){ + return particle->GetApplyCutsFlag(); + } + } +#ifdef G4VERBOSE + if (verboseLevel >0){ + G4cout << "G4VUserPhysicsList::GetApplyCuts: "; + G4cout << " particle " << name ; + G4cout << " does not exist " << G4endl; + } +#endif + return false; +} + //////////////////////////////////////////////////////// void G4VUserPhysicsList::SetCutValueForOthers(G4double cutValue) { @@ -463,7 +514,7 @@ void G4VUserPhysicsList::SetCutValueForOthers(G4double cutValue) if (!particle->IsShortLived()) { // check if the cut value has already been set - if ((particle->GetLengthCuts()<0.0) ||(particle->GetEnergyCuts()==0)) { + if ((particle->GetLengthCuts()==0) ||(particle->GetEnergyCuts()==0)){ // set cut value SetParticleCuts( cutValue ,particle ); // build physics table @@ -474,8 +525,12 @@ void G4VUserPhysicsList::SetCutValueForOthers(G4double cutValue) G4cout << "Set cuts for " << particle->GetParticleName() << G4endl; #endif } + // special treatment for particles for store cuts + G4int idx = isParticleForStoreCuts(particle); + if (idx >=0) { + if (!isBuildPhysicsTable[idx])BuildPhysicsTable(particle); + } } - } } @@ -534,7 +589,6 @@ void G4VUserPhysicsList::ReCalcCutValueForOthers() } } - //////////////////////////////////////////////////////// //////////////////////////////////////////////////////// void G4VUserPhysicsList::SetParticleCuts( G4double cut, G4ParticleDefinition* particle) @@ -559,6 +613,8 @@ void G4VUserPhysicsList::SetParticleCuts( G4double cut, G4ParticleDefinition* pa /////////////////////////////////////////////////////////////// void G4VUserPhysicsList::BuildPhysicsTable(G4ParticleDefinition* particle) { + G4int idx = isParticleForStoreCuts(particle); + if (idx >=0) isBuildPhysicsTable[idx] = true; if (fRetrievePhysicsTable) { #ifdef G4VERBOSE if (verboseLevel>2){ @@ -590,10 +646,10 @@ void G4VUserPhysicsList::BuildPhysicsTable(G4ParticleDefinition* particle) G4int j; // Rebuild the physics tables for every process for this particle type G4ProcessVector* pVector = (particle->GetProcessManager())->GetProcessList(); - for ( j=0; j < pVector->entries(); ++j) { + for ( j=0; j < pVector->size(); ++j) { (*pVector)[j]->BuildPhysicsTable(*particle); } - for ( j=0; j < pVector->entries(); ++j) { + for ( j=0; j < pVector->size(); ++j) { // temporary addition to make the integral schema BuildIntegralPhysicsTable((*pVector)[j], particle); } @@ -675,24 +731,34 @@ void G4VUserPhysicsList::DumpCutValues( G4ParticleDefinition* particle) const // name field G4cout << " --- " << particle->GetParticleName() << " ------ " << G4endl; - // cut value in range field - G4cout << " - Cut in range = " << G4BestUnit(particle->GetLengthCuts(),"Length") << G4endl; + // cut value in range + G4double* theRangeCuts = particle->GetLengthCuts(); // material and energy cut value for the material G4double* theKineticEnergyCuts = particle->GetEnergyCuts(); - if (theKineticEnergyCuts != 0) { + if (theRangeCuts != 0) { const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - G4cout << " - Material ---------------- Energy Cut ---" << G4endl; - for (G4int idx=0; idxentries(); idx++){ + size_t numberOfMaterials = G4Material::GetNumberOfMaterials(); + G4cout << " - Material --- Cut in range ------------- Energy Cut ---" << G4endl; + for (size_t idx=0; idxGetName(); - G4cout << " : " << G4std::setw(10) << G4BestUnit(theKineticEnergyCuts[idx],"Energy"); + G4cout <<" : "; + G4cout << G4std::setw(12)<< G4BestUnit(theRangeCuts[idx],"Length"); + if (theKineticEnergyCuts ==0) { + G4cout << " : --------------------------------"; + } else { + G4cout << " : "; + G4cout << G4std::setw(10)<< G4BestUnit(theKineticEnergyCuts[idx],"Energy"); + } G4cout << G4endl; } - + if (theKineticEnergyCuts ==0) { + G4cout << " - Cuts in energy are not calculated yet --" << G4endl; + G4cout << " Enter /run/initialize command to calculate cuts " << G4endl; + } } else { - G4cout << " - Cuts in energy are not calculated yet --" << G4endl; - G4cout << " Enter /run/initialize command to calculate cuts " << G4endl; + G4cout << " - Cuts in range are not set yet --" << G4endl; } } @@ -729,24 +795,32 @@ void G4VUserPhysicsList::DumpCutValuesTable() const } G4cout << G4endl; + const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); + size_t numberOfMaterials = G4Material::GetNumberOfMaterials(); // line 4 - G4cout << "Cut in range "; - for (idx=0; idx GetLengthCuts(),"Length"); + G4cout << "Cut in range " << G4endl; + for (size_t I=0; IGetName(); + for (idx=0; idx GetLengthCuts() == 0) { + G4cout << " ---------- "; + } else { + G4cout << " " << G4std::setw(11) << G4BestUnit((particle[idx]->GetLengthCuts())[I],"Length"); + } + } } + G4cout << G4endl; } - G4cout << G4endl; // line 5 G4cout << "Cut in energy"; G4cout << G4endl; - // line 6 .. - const G4MaterialTable* materialTable = G4Material::GetMaterialTable(); - for (G4int J=0; Jentries(); J++) { + // line 6 .. + for (size_t J=0; JGetName(); for (idx=0; idx entries(); + numberOfMaterial = G4Material::GetNumberOfMaterials(); G4bool ascii = fStoredInAscii; G4String dir = directory; - if (dir.isNull()) dir = directoryPhysicsTable; + if (dir.isNull()) dir = directoryPhysicsTable; + else directoryPhysicsTable = dir; if (!StoreMaterialInfo(dir, ascii)) return false; if (!StoreCutValues(dir,ascii)) return false; #ifdef G4VERBOSE if (verboseLevel>2){ G4cout << "G4VUserPhysicsList::StorePhysicsTable "; - G4cout << " Store material and cu values successfully" << G4endl; + G4cout << " Store material and cut values successfully" << G4endl; } #endif @@ -802,12 +876,12 @@ G4bool G4VUserPhysicsList::StorePhysicsTable(const G4String& directory) // Store physics tables for every process for this particle type G4ProcessVector* pVector = (particle->GetProcessManager())->GetProcessList(); G4int j; - for ( j=0; j < pVector->entries(); ++j) { - if (!(*pVector)[j]->StorePhysicsTable(directoryPhysicsTable,ascii)){ + for ( j=0; j < pVector->size(); ++j) { + if (!(*pVector)[j]->StorePhysicsTable(particle,dir,ascii)){ #ifdef G4VERBOSE if (verboseLevel>2){ G4cout << "G4VUserPhysicsList::StorePhysicsTable "; - G4cout << " Fail to retrieve for "; + G4cout << " Fail to store for "; G4cout << (*pVector)[j]->GetProcessName(); G4cout << "(" << particle->GetParticleName() <<")" << G4endl; } @@ -850,7 +924,7 @@ G4bool G4VUserPhysicsList::StoreMaterialInfo(const G4String& directory, const G4MaterialTable* matTable = G4Material::GetMaterialTable(); // number of materials in the table - numberOfMaterial = matTable->entries(); + numberOfMaterial = G4Material::GetNumberOfMaterials(); if (ascii) { /////////////// ASCII mode ///////////////// @@ -863,7 +937,7 @@ G4bool G4VUserPhysicsList::StoreMaterialInfo(const G4String& directory, fOut.setf(G4std::ios::scientific); // material name and density - for (size_t idx=0; idxentries(); ++idx){ + for (size_t idx=0; idxGetName(); fOut << G4std::setw(FixedStringLengthForStore) << ((*matTable)[idx])->GetDensity()/(g/cm3) << G4endl; } @@ -884,9 +958,9 @@ G4bool G4VUserPhysicsList::StoreMaterialInfo(const G4String& directory, fOut.write( (char*)(&numberOfMaterial), sizeof (G4int)); // material name and density - for (size_t imat=0; imatentries(); ++imat){ + for (size_t imat=0; imatGetName(); - G4double density = ((*matTable)[imat])->GetDensity(); + G4double density = ((*matTable)[imat])->GetDensity()/(g/cm3); for (i=0; ivalue(); // Only following particles are concerned - if ( (particle->GetParticleName() == "gamma" ) || - (particle->GetParticleName() == "e-" ) || - (particle->GetParticleName() == "e+" ) || - (particle->GetParticleName() == "mu-" ) || - (particle->GetParticleName() == "mu+" ) || - (particle->GetParticleName() == "proton" ) || - (particle->GetParticleName() == "anti_proton" ) || - (particle->GetParticleName() == "neutron" ) || - (particle->GetParticleName() == "anti_neutron" ) ){ - - - // particle name and cut in length + G4int idx = isParticleForStoreCuts(particle); + if (idx >=0 ){ + // particle name if (ascii) { /////////////// ASCII mode ///////////////// fOut.setf(G4std::ios::scientific); fOut << G4std::setw(FixedStringLengthForStore) << particle->GetParticleName(); - fOut << G4std::setw(20) << particle->GetLengthCuts()/mm << G4endl; fOut.unsetf(G4std::ios::scientific); } else { /////////////// Binary mode ///////////////// G4String name = particle->GetParticleName(); - G4double cutLength = particle->GetLengthCuts(); for (i=0; iGetLengthCuts(); + if (rangeArray ==0) { +#ifdef G4VERBOSE + if (verboseLevel>0){ + G4cout << "G4VUserPhysicsList::StoreCutValues " ; + G4cout << ": Range Cut Values have not be set for"; + G4cout << particle->GetParticleName() << G4endl; + } +#endif + return false; + } + if (ascii) { + /////////////// ASCII mode ///////////////// + fOut.setf(G4std::ios::scientific); + G4int ii =0; + for(G4int jdx=0; jdxGetEnergyCuts(); if (cutArray ==0) { #ifdef G4VERBOSE @@ -989,18 +1088,16 @@ G4bool G4VUserPhysicsList::StoreCutValues(const G4String& directory, #endif return false; } - - // cut energy for each material if (ascii) { /////////////// ASCII mode ///////////////// fOut.setf(G4std::ios::scientific); G4int jj =0; - for(size_t idx=0; idxGetProcessManager())->GetProcessList(); - for ( j=0; j < pVector->entries(); ++j) { + for ( j=0; j < pVector->size(); ++j) { success[j] = - (*pVector)[j]->RetrievePhysicsTable(directory,ascii); + (*pVector)[j]->RetrievePhysicsTable(particle,directory,ascii); if (!success[j]) { #ifdef G4VERBOSE @@ -1052,7 +1149,7 @@ void G4VUserPhysicsList::RetrievePhysicsTable(G4ParticleDefinition* particle, (*pVector)[j]->BuildPhysicsTable(*particle); } } - for ( j=0; j < pVector->entries(); ++j) { + for ( j=0; j < pVector->size(); ++j) { // temporary addition to make the integral schema if (!success[j]) BuildIntegralPhysicsTable((*pVector)[j], particle); } @@ -1062,14 +1159,10 @@ void G4VUserPhysicsList::RetrievePhysicsTable(G4ParticleDefinition* particle, G4bool G4VUserPhysicsList::CheckForRetrievePhysicsTable(const G4String& directory, G4bool ascii) { - const G4MaterialTable* matTable = G4Material::GetMaterialTable(); - numberOfMaterial = matTable->entries(); + numberOfMaterial = G4Material::GetNumberOfMaterials(); if (!fIsCheckedForRetrievePhysicsTable) { - if (CheckMaterialInfo(directory, ascii)) { - if (CheckCutValues(directory,ascii)) - fIsCheckedForRetrievePhysicsTable = true; - } + fIsCheckedForRetrievePhysicsTable = CheckMaterialInfo(directory, ascii); } return fIsCheckedForRetrievePhysicsTable; } @@ -1100,7 +1193,6 @@ G4bool G4VUserPhysicsList::CheckMaterialInfo(const G4String& directory, } char temp[FixedStringLengthForStore]; - size_t i; // key word G4String keyword; @@ -1121,7 +1213,7 @@ G4bool G4VUserPhysicsList::CheckMaterialInfo(const G4String& directory, } const G4MaterialTable* matTable = G4Material::GetMaterialTable(); - numberOfMaterial = matTable->entries(); + numberOfMaterial = G4Material::GetNumberOfMaterials(); // number of materials in the table G4int nmat; if (ascii) { @@ -1140,7 +1232,7 @@ G4bool G4VUserPhysicsList::CheckMaterialInfo(const G4String& directory, } // list of material - for (G4int idx=0; idxentries(); ++idx){ + for (size_t idx=0; idx> keyword; - } else { - fIn.read(temp, FixedStringLengthForStore); - keyword = (const char*)(temp); - } - if (key!=keyword) { -#ifdef G4VERBOSE - if (verboseLevel>0){ - G4cout << "G4VUserPhysicsList::CheckCutValues "; - G4cout << " Can not find key word " << keyword << G4endl; - } -#endif - } - - // default cut value - G4double defaultCut; - if (ascii) { - fIn >> keyword >> defaultCut; - } else { - fIn.read( (char*)(&defaultCut), sizeof (G4double)); - } - if (fIn.fail()) { -#ifdef G4VERBOSE - if (verboseLevel>0){ - G4cout << "G4VUserPhysicsList::CheckCutValues "; - G4cout << " Bad data format " << G4endl; - } -#endif - fIn.close(); - return false; - } - - // check default value - G4double ratio = abs(defaultCut / (defaultCutValue/mm) ); - if ((keyword != "Default")|| (ratio<0.999) ||(ratio>1.001) ){ -#ifdef G4VERBOSE - if (verboseLevel>0){ - G4cout << "G4VUserPhysicsList::CheckCutValues "; - G4cout << " Inconsistent default cut values" << G4endl;; - } -#endif - fIn.close(); - return false; - } - - // loop over all particles - while(!fIn.eof()){ - // read in particle name and cut in length - char name[FixedStringLengthForStore]; - G4double cutLength; - if (ascii) { - fIn >> name >> cutLength; - } else { - fIn.read(name, FixedStringLengthForStore); - fIn.read((char*)(&cutLength), sizeof (G4double)); - } - if (fIn.eof()) break; - if (fIn.fail()) { -#ifdef G4VERBOSE - if (verboseLevel>0){ - G4cout << "G4VUserPhysicsList::CheckCutValues "; - G4cout << " Bad data format " << G4endl; - } -#endif - fIn.close(); - return false; - } - - // Search particle - G4ParticleDefinition* particle = theParticleTable->FindParticle(name); - if (particle==0) { -#ifdef G4VERBOSE - if (verboseLevel>0){ - G4cout << "G4VUserPhysicsList::CheckCutValues "; - G4cout << " Particle " << name <<" is not found "<< G4endl; - } - fIn.close(); - return false; -#endif - } - - // chech cut value in length - ratio = abs(cutLength/ (particle->GetLengthCuts()/mm) ); - if ((ratio<0.999) ||(ratio>1.001) ){ -#ifdef G4VERBOSE - if (verboseLevel>0){ - G4cout << "G4VUserPhysicsList::CheckCutValues "; - G4cout << " Inconsistent cut values for " << name << G4endl;; - } -#endif - fIn.close(); - return false; - } - - G4double* cutArray = new G4double[numberOfMaterial]; - // read in energy cut for all materials - if (ascii) { - /////////////// ASCII mode ///////////////// - G4int jj; - for(size_t idx=0; idx> value; - cutArray[idx] = value; - } - } else { - /////////////// Binary mode ///////////////// - fIn.read( (char*)(cutArray), numberOfMaterial*(sizeof (G4double)) ); - } - - } - - fIn.close(); - return true; -} - /////////////////////////////////////////////////////////////// G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, @@ -1371,7 +1317,6 @@ G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, } char temp[FixedStringLengthForStore]; - size_t i; // key word const G4String key = "CUT_VALUE"; @@ -1396,6 +1341,8 @@ G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, if (ascii) { fIn >> keyword >> defaultCut; } else { + fIn.read(temp, FixedStringLengthForStore); + keyword = (const char*)(temp); fIn.read( (char*)(&defaultCut), sizeof (G4double)); } if (fIn.fail()) { @@ -1410,7 +1357,7 @@ G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, } // set default value - defaultCutValue = defaultCut; + defaultCutValue = defaultCut*mm; #ifdef G4VERBOSE if (verboseLevel>2){ G4cout.setf(G4std::ios::scientific); @@ -1428,21 +1375,17 @@ G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, } // number of materials in the table - const G4MaterialTable* matTable = G4Material::GetMaterialTable(); - numberOfMaterial = matTable->entries(); + numberOfMaterial = G4Material::GetNumberOfMaterials(); // loop over all particles while(!fIn.eof()){ - // read in particle name and cut in length + // read in particle name char name[FixedStringLengthForStore]; - G4double cutLength; if (ascii) { - fIn >> name >> cutLength; + fIn >> name ; } else { fIn.read(name, FixedStringLengthForStore); - fIn.read((char*)(&cutLength), sizeof (G4double)); } - if (fIn.eof()) break; if (fIn.fail()) { #ifdef G4VERBOSE @@ -1458,7 +1401,7 @@ G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, #ifdef G4VERBOSE if (verboseLevel>2){ G4cout.setf(G4std::ios::scientific); - G4cout << name << G4std::setw(20) << cutLength << G4endl; + G4cout << name << G4endl; G4cout.unsetf(G4std::ios::scientific); } #endif @@ -1476,13 +1419,25 @@ G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, #endif } - G4double* cutArray = new G4double[numberOfMaterial]; - - // read in energy cut for all materials + // read in range cut for all materials + G4double* rangeArray = new G4double[numberOfMaterial]; if (ascii) { /////////////// ASCII mode ///////////////// - G4int jj; - for(size_t idx=0; idx> value; + rangeArray[jdx] = value; + } + } else { + /////////////// Binary mode ///////////////// + fIn.read( (char*)(rangeArray), numberOfMaterial*(sizeof (G4double)) ); + } + + // read in energy cut for all materials + G4double* cutArray = new G4double[numberOfMaterial]; + if (ascii) { + /////////////// ASCII mode ///////////////// + for(G4int idx=0; idx> value; cutArray[idx] = value; @@ -1494,10 +1449,12 @@ G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, // restore cut values - particle->RestoreCuts( cutLength , cutArray) ; + particle->RestoreCuts( rangeArray , cutArray) ; #ifdef G4VERBOSE if (verboseLevel >2)DumpCutValues(particle); #endif + G4int idx = isParticleForStoreCuts(particle); + if (idx >=0) isBuildPhysicsTable[idx] = false; } #ifdef G4VERBOSE @@ -1512,9 +1469,28 @@ G4bool G4VUserPhysicsList::RetrieveCutValues(const G4String& directory, return true; } - - - +G4int G4VUserPhysicsList::isParticleForStoreCuts(const G4ParticleDefinition* particle) const +{ + G4int idx; + for ( idx =0; idx < NumberOfParticlesForStoreCuts; ++idx) { + if (particle->GetParticleName()==particleForStoreCuts[idx]) return idx; + } + return -1; +} + +const G4String + G4VUserPhysicsList::particleForStoreCuts[NumberOfParticlesForStoreCuts] = +{ + "gamma", + "e-", + "e+", + "mu-", + "mu+", + "proton", + "anti_proton", + "neutron", + "anti_neutron" +}; diff --git a/source/run/src/G4VUserPrimaryGeneratorAction.cc b/source/run/src/G4VUserPrimaryGeneratorAction.cc index 8a00dc0850..fb25e1f572 100644 --- a/source/run/src/G4VUserPrimaryGeneratorAction.cc +++ b/source/run/src/G4VUserPrimaryGeneratorAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VUserPrimaryGeneratorAction.cc,v 1.2.4.1 2001/06/28 19:15:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VUserPrimaryGeneratorAction.cc,v 1.3 2001/07/11 10:08:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VUserPrimaryGeneratorAction.hh" diff --git a/source/track/History b/source/track/History index a88986c999..b54b8ca59c 100644 --- a/source/track/History +++ b/source/track/History @@ -1,4 +1,4 @@ -$Id: History,v 1.28 2001/03/06 09:59:14 kurasige Exp $ +$Id: History,v 1.40 2001/12/10 08:39:57 kurasige Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,6 +16,41 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Dec. 10, 01 H.Kurashige (track-V03-02-08) +- Modified assignment operator so that fCurrentStepNumber is set to 0 + +Nov.27, 01 J. Apostolakis (track-V03-02-07) for H. Kurashige +- Modified G4ParticleChange::AddSecondary to use touchable handle - by Hisaya + (only one of the AddSecondary methods has been modified - to date) + +Nov.10, 01 (track-V03-02-06) +- Fixed bugs in assignment operators in G4Track +- Added SetParentWeightByProcess +- Added SetSecondaryWeightByProcess + +Nov. 08, 01 G.Cosmo (track-V03-02-05) +- Merge changes included in "track-V03-02-02a". + +Oct. 22, 01 H.Kurashige (track-V03-02-04) +- Modify to intorduce TouchableHandle (Radovan) + +Oct. 20, 01 H.Kurashige (track-V03-02-03) +- Remove "static inline methods" +- Disable EventBiasingMechanism + +Oct. 26, 01 G.Cosmo (track-V03-02-02a) +- Added implementation to assignment operator in G4ParticleChangeForRadDecay.hh + (H.Kurasige) + +Sep. 20, 01 H.Kurashige (track-V03-02-02) +- Update to G4Mars5GeVMechanism for STL migration of materials + +Sep. 20, 01 H.Kurashige (track-V03-02-01) +- Modify G4Mars5GeVMechanism for STL migration of materials + +Aug. 16, 01 H.Kurashige (track-V03-02-00) +- Clean up codes + Mar 7, 01 H.Kurashige (track-V03-00-04) - Add protection for the zero-momentum case for UpdateStepForAlongStep in ParticleChange (J.A) diff --git a/source/track/include/G4EvtBiasMechanism.hh b/source/track/include/G4EvtBiasMechanism.hh index 43daab7459..a29898fcf9 100644 --- a/source/track/include/G4EvtBiasMechanism.hh +++ b/source/track/include/G4EvtBiasMechanism.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EvtBiasMechanism.hh,v 1.3.10.2 2001/06/28 20:20:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvtBiasMechanism.hh,v 1.4 2001/07/11 10:08:34 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ForceCondition.hh b/source/track/include/G4ForceCondition.hh index c713505079..0804061136 100644 --- a/source/track/include/G4ForceCondition.hh +++ b/source/track/include/G4ForceCondition.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ForceCondition.hh,v 1.2.10.1 2001/06/28 19:15:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ForceCondition.hh,v 1.3 2001/07/11 10:08:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4GPILSelection.hh b/source/track/include/G4GPILSelection.hh index 4ec34f7392..aa9ca43d38 100644 --- a/source/track/include/G4GPILSelection.hh +++ b/source/track/include/G4GPILSelection.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GPILSelection.hh,v 1.2.10.1 2001/06/28 19:15:22 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GPILSelection.hh,v 1.3 2001/07/11 10:08:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4Mars5GeVMechanism.hh b/source/track/include/G4Mars5GeVMechanism.hh index 818106cfac..1c09d3c681 100644 --- a/source/track/include/G4Mars5GeVMechanism.hh +++ b/source/track/include/G4Mars5GeVMechanism.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Mars5GeVMechanism.hh,v 1.3.10.2 2001/06/28 20:20:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Mars5GeVMechanism.hh,v 1.4 2001/07/11 10:08:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChange.hh b/source/track/include/G4ParticleChange.hh index cc4ae2ed6f..c683d0fbaa 100644 --- a/source/track/include/G4ParticleChange.hh +++ b/source/track/include/G4ParticleChange.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChange.hh,v 1.6.4.2 2001/06/28 20:20:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChange.hh,v 1.9 2001/11/21 14:05:57 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -73,7 +73,7 @@ class G4ParticleChange: public G4VParticleChange public: // default constructor G4ParticleChange(); - G4ParticleChange(G4bool useEB); +// G4ParticleChange(G4bool useEB); // destructor virtual ~G4ParticleChange(); @@ -239,14 +239,15 @@ class G4ParticleChange: public G4VParticleChange G4double theChargeChange; // The Changed (final) charge of a given track - + const G4Track* theCurrentTrack; + public: - // these methods is used for switch on/off EB in all ParticleChange objects - static void SwOnAllEB(); - static void SwOffAllEB(); + // these methods is used for switch on/off EB in all ParticleChange objects + // static void SwOnAllEB(); + // static void SwOffAllEB(); private: - static G4bool fUseEBForAll; + // static G4bool fUseEBForAll; public: // for Debug diff --git a/source/track/include/G4ParticleChange.icc b/source/track/include/G4ParticleChange.icc index d81b4b06e8..2f6b4dc66b 100644 --- a/source/track/include/G4ParticleChange.icc +++ b/source/track/include/G4ParticleChange.icc @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: G4ParticleChange.icc,v 1.7.4.1 2001/06/28 19:15:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChange.icc,v 1.9 2001/10/20 08:07:49 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // inline G4Step* G4ParticleChange::UpdateStepInfo(G4Step* pStep) { // use fUseEBForAll instead of fUseEB - fUseEB = fUseEBForAll; + // fUseEB = fUseEBForAll; return G4VParticleChange::UpdateStepInfo(pStep); } @@ -220,16 +220,20 @@ inline return direction*tMomentum; } -inline - void G4ParticleChange::SwOnAllEB() -{ - fUseEBForAll = true; -} +//inline +// void G4ParticleChange::SwOnAllEB() +//{ +// fUseEBForAll = true; +//} + +//inline void G4ParticleChange::SwOffAllEB() +//{ +// fUseEBForAll = false; +//} + + + -inline void G4ParticleChange::SwOffAllEB() -{ - fUseEBForAll = false; -} diff --git a/source/track/include/G4ParticleChangeForDecay.hh b/source/track/include/G4ParticleChangeForDecay.hh index d280d5e655..cd9b1bd482 100644 --- a/source/track/include/G4ParticleChangeForDecay.hh +++ b/source/track/include/G4ParticleChangeForDecay.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForDecay.hh,v 1.4.10.2 2001/06/28 20:20:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForDecay.hh,v 1.5 2001/07/11 10:08:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChangeForLoss.hh b/source/track/include/G4ParticleChangeForLoss.hh index ba83d1e840..d5d241f68e 100644 --- a/source/track/include/G4ParticleChangeForLoss.hh +++ b/source/track/include/G4ParticleChangeForLoss.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForLoss.hh,v 1.3.10.2 2001/06/28 20:20:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForLoss.hh,v 1.4 2001/07/11 10:08:35 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4ParticleChangeForMSC.hh b/source/track/include/G4ParticleChangeForMSC.hh index 2b72a0aab6..ac3077a981 100644 --- a/source/track/include/G4ParticleChangeForMSC.hh +++ b/source/track/include/G4ParticleChangeForMSC.hh @@ -21,7 +21,7 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForMSC.hh,v 1.4.10.2 2001/06/28 20:20:14 gunter Exp $ +// $Id: G4ParticleChangeForMSC.hh,v 1.5 2001/07/11 10:08:36 gunter Exp $ // GEANT4 tag $ $ // // diff --git a/source/track/include/G4ParticleChangeForMSC.icc b/source/track/include/G4ParticleChangeForMSC.icc index 5c9908f8a1..1398535a41 100644 --- a/source/track/include/G4ParticleChangeForMSC.icc +++ b/source/track/include/G4ParticleChangeForMSC.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForMSC.icc,v 1.3.4.1 2001/06/28 19:15:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForMSC.icc,v 1.4 2001/07/11 10:08:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/track/include/G4ParticleChangeForRadDecay.hh b/source/track/include/G4ParticleChangeForRadDecay.hh index ac004b5f12..71ef9a8e56 100644 --- a/source/track/include/G4ParticleChangeForRadDecay.hh +++ b/source/track/include/G4ParticleChangeForRadDecay.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForRadDecay.hh,v 1.2.4.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForRadDecay.hh,v 1.4 2001/10/24 05:41:46 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -55,7 +55,8 @@ class G4ParticleChangeForRadDecay: public G4ParticleChange protected: // hide copy constructor and assignment operaor as protected G4ParticleChangeForRadDecay(const G4ParticleChangeForRadDecay &right){} - G4ParticleChangeForRadDecay & operator=(const G4ParticleChangeForRadDecay &right){} + G4ParticleChangeForRadDecay & operator=(const G4ParticleChangeForRadDecay &right){return *this;} + public: // with description void AddSecondary(G4Track* aSecondary); diff --git a/source/track/include/G4ParticleChangeForTransport.hh b/source/track/include/G4ParticleChangeForTransport.hh index 16eb093c5f..b0b9ff2fe0 100644 --- a/source/track/include/G4ParticleChangeForTransport.hh +++ b/source/track/include/G4ParticleChangeForTransport.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForTransport.hh,v 1.6.2.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForTransport.hh,v 1.8 2001/10/22 04:19:39 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -32,7 +32,8 @@ // ------------------------------------------------------------ // Implemented for the new scheme 10 May. 1998 H.Kurahige // Added theMaterialChange 16 FEb. 2000 H.Kurahige -// Remove thePolarizationChange 12 Feb. 2001 H.Kurashige +// Remove thePolarizationChange 12 Feb. 2001 H.Kurashige +// Modification for G4TouchableHandle 22 Oct. 2001 R.Chytracek // // Class Description // This class is a concrete class for ParticleChange for transportation @@ -42,7 +43,7 @@ #include "globals.hh" #include "G4ios.hh" -class G4VTouchable; +#include "G4TouchableHandle.hh" #include "G4ParticleChange.hh" class G4ParticleChangeForTransport: public G4ParticleChange @@ -80,8 +81,8 @@ class G4ParticleChangeForTransport: public G4ParticleChange // "Change", what it stores (and returns in get) are the "FINAL" // values of the Position, Momentum, etc. - const G4VTouchable* GetTouchableChange() const; - void SetTouchableChange(const G4VTouchable* fTouchable); + const G4TouchableHandle& GetTouchableHandle() const; + void SetTouchableHandle(const G4TouchableHandle& fTouchable); // Get/Set the touchable of the current particle. // Note: Touchable in PostStepPoint will be updated only after PostStepDoIt @@ -96,7 +97,7 @@ class G4ParticleChangeForTransport: public G4ParticleChange virtual void DumpInfo() const; protected: - const G4VTouchable* theTouchableChange; + G4TouchableHandle theTouchableHandle; // The changed touchable of a given particle. private: diff --git a/source/track/include/G4ParticleChangeForTransport.icc b/source/track/include/G4ParticleChangeForTransport.icc index 58d9b925a5..3d7c047ac5 100644 --- a/source/track/include/G4ParticleChangeForTransport.icc +++ b/source/track/include/G4ParticleChangeForTransport.icc @@ -21,23 +21,24 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForTransport.icc,v 1.5.4.1 2001/06/28 19:15:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForTransport.icc,v 1.7 2001/10/22 04:19:40 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // - inline - void G4ParticleChangeForTransport::SetTouchableChange(const G4VTouchable* fTouchable) + void G4ParticleChangeForTransport::SetTouchableHandle(const G4TouchableHandle& +fTouchable) { - theTouchableChange = fTouchable; + theTouchableHandle = fTouchable; } inline - const G4VTouchable* G4ParticleChangeForTransport::GetTouchableChange() const + const G4TouchableHandle& G4ParticleChangeForTransport::GetTouchableHandle() const { - return theTouchableChange; + return theTouchableHandle; } + inline void G4ParticleChangeForTransport::SetMaterialChange(G4Material* fMaterial) { diff --git a/source/track/include/G4Step.hh b/source/track/include/G4Step.hh index cef037787e..0b61003761 100644 --- a/source/track/include/G4Step.hh +++ b/source/track/include/G4Step.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Step.hh,v 1.7.4.1 2001/06/28 19:15:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Step.hh,v 1.8 2001/07/11 10:08:36 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4Step.icc b/source/track/include/G4Step.icc index b661b97290..5436abdc8c 100644 --- a/source/track/include/G4Step.icc +++ b/source/track/include/G4Step.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Step.icc,v 1.4.2.1 2001/06/28 19:15:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Step.icc,v 1.7 2001/10/22 04:19:40 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -179,7 +179,7 @@ inline fpPreStepPoint->SetMomentumDirection(fpTrack->GetMomentumDirection()); fpPreStepPoint->SetKineticEnergy(fpTrack->GetKineticEnergy()); fpPreStepPoint->SetVelocity(fpTrack->GetVelocity()); - fpPreStepPoint->SetTouchable(fpTrack->GetTouchable()); + fpPreStepPoint->SetTouchableHandle(fpTrack->GetTouchableHandle()); fpPreStepPoint->SetMaterial( fpTrack->GetTouchable()->GetVolume()->GetLogicalVolume()->GetMaterial()); fpPreStepPoint->SetPolarization(fpTrack->GetPolarization()); fpPreStepPoint->SetSafety(0.); @@ -214,9 +214,12 @@ inline fpTrack->SetStepLength(fStepLength); // NextTouchable is updated // (G4Track::Touchable points touchable of Pre-StepPoint) - fpTrack->SetNextTouchable(fpPostStepPoint->GetTouchable()); + fpTrack->SetNextTouchableHandle(fpPostStepPoint->GetTouchableHandle()); fpTrack->SetWeight(fpPostStepPoint->GetWeight()); - } + + // set velocity + fpPostStepPoint->SetVelocity(fpTrack->GetVelocity()); +} diff --git a/source/track/include/G4StepPoint.hh b/source/track/include/G4StepPoint.hh index e3cd119180..300696061d 100644 --- a/source/track/include/G4StepPoint.hh +++ b/source/track/include/G4StepPoint.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StepPoint.hh,v 1.7.2.1 2001/06/28 19:15:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StepPoint.hh,v 1.9 2001/10/22 04:19:40 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -52,7 +52,7 @@ class G4VProcess; #include "G4SteppingControl.hh" #include "G4StepStatus.hh" // Include from 'track' -#include "G4VTouchable.hh" // Include from 'geometry' +#include "G4TouchableHandle.hh" // Include from 'geometry' #include "G4Material.hh" #include "G4LogicalVolume.hh" @@ -124,7 +124,8 @@ class G4StepPoint G4VPhysicalVolume* GetPhysicalVolume() const; const G4VTouchable* GetTouchable() const; - void SetTouchable(const G4VTouchable* apValue); + const G4TouchableHandle& GetTouchableHandle() const; + void SetTouchableHandle(const G4TouchableHandle& apValue); G4Material* GetMaterial() const; void SetMaterial(G4Material*); @@ -176,7 +177,9 @@ class G4StepPoint G4ThreeVector fMomentumDirection; G4double fKineticEnergy; G4double fVelocity; - const G4VTouchable* fpTouchable; + // Momentum,energy and velocity + G4TouchableHandle fpTouchable; + // Touchable Handle G4Material* fpMaterial; // Material of the volmue G4double fSafety; diff --git a/source/track/include/G4StepPoint.icc b/source/track/include/G4StepPoint.icc index 2ec8a3d81f..8717ae49db 100644 --- a/source/track/include/G4StepPoint.icc +++ b/source/track/include/G4StepPoint.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StepPoint.icc,v 1.3.2.1 2001/06/28 19:15:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StepPoint.icc,v 1.5 2001/10/22 04:19:40 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // inline const G4ThreeVector& G4StepPoint::GetPosition() const @@ -116,8 +116,10 @@ { return fpTouchable->GetVolume(); } inline const G4VTouchable* G4StepPoint::GetTouchable() const + { return fpTouchable(); } + inline const G4TouchableHandle& G4StepPoint::GetTouchableHandle() const { return fpTouchable; } - inline void G4StepPoint::SetTouchable(const G4VTouchable* apValue) + inline void G4StepPoint::SetTouchableHandle(const G4TouchableHandle& apValue) { fpTouchable = apValue; } inline G4double G4StepPoint::GetSafety() const diff --git a/source/track/include/G4StepStatus.hh b/source/track/include/G4StepStatus.hh index e5c3b0cb2f..fa78042288 100644 --- a/source/track/include/G4StepStatus.hh +++ b/source/track/include/G4StepStatus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StepStatus.hh,v 1.2.10.1 2001/06/28 19:15:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StepStatus.hh,v 1.3 2001/07/11 10:08:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4SteppingControl.hh b/source/track/include/G4SteppingControl.hh index 5353fb7a08..c3823402e9 100644 --- a/source/track/include/G4SteppingControl.hh +++ b/source/track/include/G4SteppingControl.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SteppingControl.hh,v 1.2.10.1 2001/06/28 19:15:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SteppingControl.hh,v 1.3 2001/07/11 10:08:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4Track.hh b/source/track/include/G4Track.hh index aaec1c71af..a102a12543 100644 --- a/source/track/include/G4Track.hh +++ b/source/track/include/G4Track.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Track.hh,v 1.10.2.1 2001/06/28 19:15:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Track.hh,v 1.13 2001/11/13 05:13:37 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -35,14 +35,10 @@ // 1) current position/time of the particle, // 2) static particle information, // 3) the pointer to the physical volume where currently -// the particle exists, -// -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) +// the particle exists // //--------------------------------------------------------------- +// Modification for G4TouchableHandle 22 Oct. 2001 R.Chytracek #ifndef G4Track_h #define G4Track_h 1 @@ -54,7 +50,7 @@ #include "G4Allocator.hh" // Include from 'particle+matter' #include "G4DynamicParticle.hh" // Include from 'particle+matter' #include "G4TrackStatus.hh" // Include from 'tracking' -#include "G4VTouchable.hh" // Include from 'geometry' +#include "G4TouchableHandle.hh" // Include from 'geometry' #include "G4VUserTrackInformation.hh" #include "G4Material.hh" @@ -134,11 +130,13 @@ public: // With description G4Material* GetMaterial() const; G4Material* GetNextMaterial() const; - const G4VTouchable* GetTouchable() const; - void SetTouchable(const G4VTouchable* apValue); + const G4VTouchable* GetTouchable() const; + const G4TouchableHandle& GetTouchableHandle() const; + void SetTouchableHandle( const G4TouchableHandle& apValue); - const G4VTouchable* GetNextTouchable() const; - void SetNextTouchable(const G4VTouchable* apValue); + const G4VTouchable* GetNextTouchable() const; + const G4TouchableHandle& GetNextTouchableHandle() const; + void SetNextTouchableHandle( const G4TouchableHandle& apValue); // energy G4double GetKineticEnergy() const; @@ -212,10 +210,7 @@ public: // With description void SetCreatorProcess(G4VProcess* aValue); // track weight - // These are methods for manipulating a weight for this track. - // The track weight is used by G4VEvtBiasMechanism - // to execute inclusive simulation for hadronic/electomagnetic shower - // and neutron transportation etc. + // These are methods for manipulating a weight for this track. G4double GetWeight() const; void SetWeight(G4double aValue); @@ -236,8 +231,9 @@ public: // With description G4int fParentID; G4int fTrackID; - const G4VTouchable* fpTouchable; - const G4VTouchable* fpNextTouchable; + G4TouchableHandle fpTouchable; + G4TouchableHandle fpNextTouchable; + // Touchable Handle G4DynamicParticle* fpDynamicParticle; G4TrackStatus fTrackStatus; diff --git a/source/track/include/G4Track.icc b/source/track/include/G4Track.icc index eddc4090a5..47c6fa1f3f 100644 --- a/source/track/include/G4Track.icc +++ b/source/track/include/G4Track.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Track.icc,v 1.6.4.1 2001/06/28 19:15:24 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Track.icc,v 1.8 2001/10/22 04:19:40 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //----------------------------------------------------------------- // Definitions of inline functions @@ -117,17 +117,36 @@ // touchable - inline const G4VTouchable* G4Track::GetTouchable() const - { return fpTouchable; } + inline const G4VTouchable* G4Track::GetTouchable() const + { + return fpTouchable(); + } - inline void G4Track::SetTouchable(const G4VTouchable* apValue) - { fpTouchable = apValue; } + inline const G4TouchableHandle& G4Track::GetTouchableHandle() const + { + return fpTouchable; + } - inline const G4VTouchable* G4Track::GetNextTouchable() const - { return fpNextTouchable; } + inline void G4Track::SetTouchableHandle( const G4TouchableHandle& apValue) + { + fpTouchable = apValue; + } + + inline const G4VTouchable* G4Track::GetNextTouchable() const + { + return fpNextTouchable(); + } + + inline const G4TouchableHandle& G4Track::GetNextTouchableHandle() const + { + return fpNextTouchable; + } + + inline void G4Track::SetNextTouchableHandle( const G4TouchableHandle& apValue) + { + fpNextTouchable = apValue; + } - inline void G4Track::SetNextTouchable(const G4VTouchable* apValue) - { fpNextTouchable = apValue; } // kinetic energy inline G4double G4Track::GetKineticEnergy() const diff --git a/source/track/include/G4TrackFastVector.hh b/source/track/include/G4TrackFastVector.hh index cb7d16e8e1..b5868c4eb9 100644 --- a/source/track/include/G4TrackFastVector.hh +++ b/source/track/include/G4TrackFastVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackFastVector.hh,v 1.3.10.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackFastVector.hh,v 1.4 2001/07/11 10:08:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4TrackStatus.hh b/source/track/include/G4TrackStatus.hh index 1733020097..efdd84043d 100644 --- a/source/track/include/G4TrackStatus.hh +++ b/source/track/include/G4TrackStatus.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackStatus.hh,v 1.2.10.1 2001/06/28 19:15:25 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackStatus.hh,v 1.3 2001/07/11 10:08:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/include/G4VEvtBiasMechanism.hh b/source/track/include/G4VEvtBiasMechanism.hh index 336f025fa5..1c71a97cb4 100644 --- a/source/track/include/G4VEvtBiasMechanism.hh +++ b/source/track/include/G4VEvtBiasMechanism.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VEvtBiasMechanism.hh,v 1.3.10.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEvtBiasMechanism.hh,v 1.4 2001/07/11 10:08:37 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ diff --git a/source/track/include/G4VParticleChange.hh b/source/track/include/G4VParticleChange.hh index 9482cd9413..c1e9874a71 100644 --- a/source/track/include/G4VParticleChange.hh +++ b/source/track/include/G4VParticleChange.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VParticleChange.hh,v 1.4.10.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VParticleChange.hh,v 1.7 2001/11/13 05:13:38 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -73,7 +73,6 @@ class G4Track; class G4Step; -class G4VEvtBiasMechanism; #include "G4TrackFastVector.hh" #include "G4TrackStatus.hh" @@ -85,7 +84,6 @@ class G4VParticleChange public: // default constructor G4VParticleChange(); - G4VParticleChange(G4bool useEvtBiasing); // destructor virtual ~G4VParticleChange(); @@ -178,6 +176,21 @@ class G4VParticleChange // ------------------------------------------------------ G4double GetParentWeight() const ; + // Get weight of the parent (i.e. current) track + + void SetParentWeight(G4double); + void SetParentWeightByProcess(G4bool); + G4bool IsParentWeightSetByProcess() const; + // If fParentWeightByProcess flag is false (true in default), + // G4VParticleChange can change the weight of the parent track, + // in any DoIt by using SetParentWeight(G4double) + + + void SetSecondaryWeightByProcess(G4bool); + G4bool IsSecondaryWeightSetByProcess() const; + // If fSecondaryWeightByProcess flag is false (false in default), + // G4VParticleChange set the weight of the secondary tracks + // equal to the parent weight when the secondary tracks are added. virtual void DumpInfo() const; // Print out information @@ -234,24 +247,15 @@ class G4VParticleChange static const G4double accuracyForWarning; static const G4double accuracyForException; - public: // with description - //---- following methods and members are used for Event Biasing - virtual void RegisterEBMechanism(G4VEvtBiasMechanism* ); - virtual void SwOnEB(); - virtual void SwOffEB(); - virtual G4bool IsEBActive() const; - virtual G4VEvtBiasMechanism* GetEBMechanism(); protected: - G4VEvtBiasMechanism* theEBMechanism; - G4bool fUseEB; G4double theParentWeight; - + G4bool fSetSecondaryWeightByProcess; + G4bool fSetParentWeightByProcess; }; #include "G4Step.hh" #include "G4Track.hh" -#include "G4VEvtBiasMechanism.hh" #include "G4VParticleChange.icc" #endif diff --git a/source/track/include/G4VParticleChange.icc b/source/track/include/G4VParticleChange.icc index ccb895730d..6fed227261 100644 --- a/source/track/include/G4VParticleChange.icc +++ b/source/track/include/G4VParticleChange.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VParticleChange.icc,v 1.5.4.1 2001/06/28 19:15:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VParticleChange.icc,v 1.8 2001/11/13 05:13:38 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //---------------------------------------------------------------- // Virtual methods for updating G4Step @@ -30,9 +30,6 @@ inline G4Step* G4VParticleChange::UpdateStepInfo(G4Step* pStep) { - // Apply math fomula if Event Biasing is active - if (fUseEB) theEBMechanism->ApplyMath( this, *pStep); - // Update the G4Step specific attributes pStep->SetStepLength( theTrueStepLength ); pStep->AddTotalEnergyDeposit( theLocalEnergyDeposit ); @@ -43,18 +40,27 @@ inline G4Step* G4VParticleChange::UpdateStepInfo(G4Step* pStep) inline G4Step* G4VParticleChange::UpdateStepForAtRest(G4Step* Step) { + if (!fSetParentWeightByProcess){ + Step->GetPostStepPoint()->SetWeight( theParentWeight ); + } return UpdateStepInfo(Step); } inline G4Step* G4VParticleChange::UpdateStepForAlongStep(G4Step* Step) { + if (!fSetParentWeightByProcess){ + Step->GetPostStepPoint()->SetWeight( theParentWeight ); + } return UpdateStepInfo(Step); } inline G4Step* G4VParticleChange::UpdateStepForPostStep(G4Step* Step) { + if (!fSetParentWeightByProcess){ + Step->GetPostStepPoint()->SetWeight( theParentWeight ); + } return UpdateStepInfo(Step); } @@ -219,9 +225,11 @@ inline void G4VParticleChange::InitializeSecondaries(const G4Track&) inline void G4VParticleChange::AddSecondary(G4Track *aTrack) { - // pass the weight of parent track - aTrack->SetWeight(theParentWeight); - + if (!fSetSecondaryWeightByProcess){ + // pass the weight of parent track + aTrack->SetWeight(theParentWeight); + } + // add a secondary after size check if (theSizeOftheListOfSecondaries > theNumberOfSecondaries) { theListOfSecondaries->SetElement(theNumberOfSecondaries, aTrack); @@ -271,36 +279,6 @@ inline void G4VParticleChange::Initialize(const G4Track& track) InitializeParentWeight(track); } -inline - void G4VParticleChange::RegisterEBMechanism(G4VEvtBiasMechanism* pEB) -{ - theEBMechanism = pEB; -} - -inline - void G4VParticleChange::SwOnEB() -{ - if (theEBMechanism!=0) fUseEB = true; -} - -inline - void G4VParticleChange::SwOffEB() -{ - fUseEB = false; -} - -inline - G4bool G4VParticleChange::IsEBActive() const -{ - return fUseEB; -} - -inline - G4VEvtBiasMechanism* G4VParticleChange::GetEBMechanism() -{ - return theEBMechanism; -} - inline void G4VParticleChange::ClearDebugFlag() { @@ -318,3 +296,35 @@ inline { return debugFlag; } + +inline + void G4VParticleChange::SetSecondaryWeightByProcess(G4bool flag) +{ + fSetSecondaryWeightByProcess = flag; +} + +inline + G4bool G4VParticleChange::IsSecondaryWeightSetByProcess() const +{ + return fSetSecondaryWeightByProcess; +} + +inline + void G4VParticleChange::SetParentWeight(G4double w) +{ + theParentWeight = w; +} + +inline + void G4VParticleChange::SetParentWeightByProcess(G4bool flag) +{ + fSetParentWeightByProcess = flag; +} + +inline + G4bool G4VParticleChange::IsParentWeightSetByProcess() const +{ + return fSetParentWeightByProcess; +} + + diff --git a/source/track/include/G4VUserTrackInformation.hh b/source/track/include/G4VUserTrackInformation.hh index 4df4a829cd..fcbed1e2b3 100644 --- a/source/track/include/G4VUserTrackInformation.hh +++ b/source/track/include/G4VUserTrackInformation.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VUserTrackInformation.hh,v 1.2.4.1 2001/06/28 19:15:26 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VUserTrackInformation.hh,v 1.3 2001/07/11 10:08:38 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/src/G4EvtBiasMechanism.cc b/source/track/src/G4EvtBiasMechanism.cc index 20fdc0157f..12ab602e0e 100644 --- a/source/track/src/G4EvtBiasMechanism.cc +++ b/source/track/src/G4EvtBiasMechanism.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4EvtBiasMechanism.cc,v 1.3.4.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4EvtBiasMechanism.cc,v 1.5 2001/08/16 08:17:58 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -42,8 +42,8 @@ G4EvtBiasMechanism::G4EvtBiasMechanism(const G4String& name, G4int mulFactor): G4VEvtBiasMechanism(name), - MultiplicationForSecondaries(mulFactor), - particleToBeBiased(0) + particleToBeBiased(0), + MultiplicationForSecondaries(mulFactor) { } diff --git a/source/track/src/G4Mars5GeVMechanism.cc b/source/track/src/G4Mars5GeVMechanism.cc index d11bcef28c..259b521b13 100644 --- a/source/track/src/G4Mars5GeVMechanism.cc +++ b/source/track/src/G4Mars5GeVMechanism.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Mars5GeVMechanism.cc,v 1.4.4.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Mars5GeVMechanism.cc,v 1.7 2001/09/19 11:05:29 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // ------------------------------------------------------------ @@ -107,12 +107,12 @@ void G4Mars5GeVMechanism::GetTargetNuclei(const G4Material* material) G4double totNumAtoms = 0.0; for (G4int iel=0; iel < numberOfElements; iel +=1) { totNumAtoms += theAtomicNumDensityVector[iel]; - fZNucl += theAtomicNumDensityVector[iel]*((*theElementVector)(iel)->GetZ()); - fANucl += theAtomicNumDensityVector[iel]*((*theElementVector)(iel)->GetN()); + fZNucl += theAtomicNumDensityVector[iel]*((*theElementVector)[iel]->GetZ()); + fANucl += theAtomicNumDensityVector[iel]*((*theElementVector)[iel]->GetN()); #ifdef G4VERBOSE if (GetVerboseLevel() > 2) { G4cout << iel << ": " << theAtomicNumDensityVector[iel]; - G4cout << " Z=" << (*theElementVector)(iel)->GetZ() << " A=" << (*theElementVector)(iel)->GetN(); + G4cout << " Z=" << (*theElementVector)[iel]->GetZ() << " A=" << (*theElementVector)[iel]->GetN(); G4cout << G4endl; } #endif @@ -131,8 +131,6 @@ void G4Mars5GeVMechanism::GetTargetNuclei(const G4Material* material) void G4Mars5GeVMechanism::Treem5() { - - G4double pMass = incidentParticle->GetDefinition()->GetPDGMass(); G4double pE = incidentParticle->GetKineticEnergy(); G4int pType = incidentMarsEncoding; @@ -248,8 +246,7 @@ void G4Mars5GeVMechanism::CreatePion(G4int ib, G4int pType, G4double pE) G4cout << " G4Mars5GeVMechanism::CreatePion()" << G4endl; } #endif - static const G4double PionProductionEth = 0.28*GeV; - static const G4double KaonProductionEth = 2.0*GeV; + static const G4double PionProductionEth = 0.28*GeV; if ( pE2) { - G4cout << "G4ParticleChange::G4ParticleChange() " << G4endl; - } -#endif -} - G4ParticleChange::~G4ParticleChange() { #ifdef G4VERBOSE @@ -139,7 +129,7 @@ void G4ParticleChange::AddSecondary(G4DynamicParticle* aParticle, if (IsGoodForTracking) aTrack->SetGoodForTrackingFlag(); // Touchable is a temporary object, so you cannot keep the pointer - aTrack->SetTouchable(0); + aTrack->SetTouchableHandle((G4VTouchable*)0); // add a secondary G4VParticleChange::AddSecondary(aTrack); @@ -156,7 +146,7 @@ void G4ParticleChange::AddSecondary(G4DynamicParticle* aParticle, if (IsGoodForTracking) aTrack->SetGoodForTrackingFlag(); // Touchable is a temporary object, so you cannot keep the pointer - aTrack->SetTouchable(0); + aTrack->SetTouchableHandle((G4VTouchable*)0); // add a secondary G4VParticleChange::AddSecondary(aTrack); @@ -172,8 +162,8 @@ void G4ParticleChange::AddSecondary(G4DynamicParticle* aParticle, // set IsGoodGorTrackingFlag if (IsGoodForTracking) aTrack->SetGoodForTrackingFlag(); - // Touchable is a temporary object, so you cannot keep the pointer - aTrack->SetTouchable(0); + // Touchable handle is copied to keep the pointer + aTrack->SetTouchableHandle(theCurrentTrack->GetTouchableHandle()); // add a secondary G4VParticleChange::AddSecondary(aTrack); @@ -193,6 +183,7 @@ void G4ParticleChange::Initialize(const G4Track& track) { // use base class's method at first G4VParticleChange::Initialize(track); + theCurrentTrack= &track; // set Energy/Momentum etc. equal to those of the parent particle const G4DynamicParticle* pParticle = track.GetDynamicParticle(); @@ -276,7 +267,7 @@ G4Step* G4ParticleChange::UpdateStepForAlongStep(G4Step* pStep) pPostStepPoint->AddProperTime( theProperTimeChange - pPreStepPoint->GetProperTime()); - // update weight if use EB + // update weight pPostStepPoint->SetWeight( theWeightChange ); #ifdef G4VERBOSE @@ -295,10 +286,8 @@ G4Step* G4ParticleChange::UpdateStepForPostStep(G4Step* pStep) // pointer to G4ParticleMometum. Also it is a normalized // momentum vector. - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); G4Track* aTrack = pStep->GetTrack(); - G4double mass = theMassChange; // Set Mass/Charge pPostStepPoint->SetMass(theMassChange); @@ -318,7 +307,7 @@ G4Step* G4ParticleChange::UpdateStepForPostStep(G4Step* pStep) - aTrack->GetGlobalTime()); pPostStepPoint->SetProperTime( theProperTimeChange ); - // update weight if use EB + // update weight pPostStepPoint->SetWeight( theWeightChange ); #ifdef G4VERBOSE @@ -334,10 +323,8 @@ G4Step* G4ParticleChange::UpdateStepForAtRest(G4Step* pStep) { // A physics process always calculates the final state of the particle - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); G4Track* aTrack = pStep->GetTrack(); - G4double mass = theMassChange; // Set Mass/Charge pPostStepPoint->SetMass(theMassChange); @@ -357,7 +344,7 @@ G4Step* G4ParticleChange::UpdateStepForAtRest(G4Step* pStep) - aTrack->GetGlobalTime()); pPostStepPoint->SetProperTime( theProperTimeChange ); - // update weight if use EB + // update weight pPostStepPoint->SetWeight( theWeightChange ); #ifdef G4VERBOSE diff --git a/source/track/src/G4ParticleChangeForDecay.cc b/source/track/src/G4ParticleChangeForDecay.cc index 4c5758f8d8..1cf23b8809 100644 --- a/source/track/src/G4ParticleChangeForDecay.cc +++ b/source/track/src/G4ParticleChangeForDecay.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForDecay.cc,v 1.5.4.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForDecay.cc,v 1.7 2001/08/16 08:17:59 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -110,9 +110,6 @@ void G4ParticleChangeForDecay::Initialize(const G4Track& track) G4Step* G4ParticleChangeForDecay::UpdateStepForPostStep(G4Step* pStep) { - // A physics process always calculates the final state of the particle - G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - // Update the G4Step specific attributes return UpdateStepInfo(pStep); } diff --git a/source/track/src/G4ParticleChangeForLoss.cc b/source/track/src/G4ParticleChangeForLoss.cc index 8790e505fe..61e059ffc7 100644 --- a/source/track/src/G4ParticleChangeForLoss.cc +++ b/source/track/src/G4ParticleChangeForLoss.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForLoss.cc,v 1.5.4.2 2001/06/28 20:20:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForLoss.cc,v 1.6 2001/07/11 10:08:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4ParticleChangeForMSC.cc b/source/track/src/G4ParticleChangeForMSC.cc index 234ed2f4f6..af841c04ee 100644 --- a/source/track/src/G4ParticleChangeForMSC.cc +++ b/source/track/src/G4ParticleChangeForMSC.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForMSC.cc,v 1.6.4.2 2001/06/28 20:20:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForMSC.cc,v 1.8 2001/08/16 08:17:59 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -131,7 +131,6 @@ G4Step* G4ParticleChangeForMSC::UpdateStepForPostStep(G4Step* pStep) // pointer to G4ParticleMometum. Also it is a normalized // momentum vector. - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); G4Track* aTrack = pStep->GetTrack(); diff --git a/source/track/src/G4ParticleChangeForTransport.cc b/source/track/src/G4ParticleChangeForTransport.cc index ef37e50354..ddef62931d 100644 --- a/source/track/src/G4ParticleChangeForTransport.cc +++ b/source/track/src/G4ParticleChangeForTransport.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ParticleChangeForTransport.cc,v 1.8.2.2 2001/06/28 20:20:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ParticleChangeForTransport.cc,v 1.11 2001/10/22 04:19:41 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -36,7 +36,7 @@ // -------------------------------------------------------------- #include "G4ParticleChangeForTransport.hh" -#include "G4VTouchable.hh" +#include "G4TouchableHandle.hh" #include "G4Track.hh" #include "G4Step.hh" #include "G4TrackFastVector.hh" @@ -62,7 +62,7 @@ G4ParticleChangeForTransport::G4ParticleChangeForTransport(const G4ParticleChang if (verboseLevel>0) { G4cout << "G4ParticleChangeForTransport:: copy constructor is called " << G4endl; } - theTouchableChange = right.theTouchableChange; + theTouchableHandle = right.theTouchableHandle; } // assignemnt operator @@ -77,7 +77,7 @@ G4ParticleChangeForTransport & G4ParticleChangeForTransport::operator=(const G4P theSizeOftheListOfSecondaries = right.theSizeOftheListOfSecondaries; theNumberOfSecondaries = right.theNumberOfSecondaries; theStatusChange = right.theStatusChange; - theTouchableChange = right.theTouchableChange; + theTouchableHandle = right.theTouchableHandle; theMaterialChange = right.theMaterialChange; theMomentumDirectionChange = right.theMomentumDirectionChange; thePolarizationChange = right.thePolarizationChange; @@ -188,13 +188,11 @@ G4Step* G4ParticleChangeForTransport::UpdateStepForPostStep(G4Step* pStep) { // A physics process always calculates the final state of the particle - G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint(); G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint(); - G4Track* aTrack = pStep->GetTrack(); // update next touchable // (touchable can be changed only at PostStepDoIt) - pPostStepPoint->SetTouchable( theTouchableChange ); + pPostStepPoint->SetTouchableHandle( theTouchableHandle ); pPostStepPoint->SetMaterial( theMaterialChange ); @@ -220,10 +218,14 @@ void G4ParticleChangeForTransport::DumpInfo() const G4cout.precision(3); G4cout << " Touchable (pointer) : " - << G4std::setw(20) << theTouchableChange + << G4std::setw(20) << theTouchableHandle() << G4endl; } + + + + diff --git a/source/track/src/G4Step.cc b/source/track/src/G4Step.cc index 293e2d69f2..450627a874 100644 --- a/source/track/src/G4Step.cc +++ b/source/track/src/G4Step.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Step.cc,v 1.4.4.1 2001/06/28 19:15:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Step.cc,v 1.5 2001/07/11 10:08:39 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/track/src/G4StepPoint.cc b/source/track/src/G4StepPoint.cc index dc58a4c601..205d7f2fbd 100644 --- a/source/track/src/G4StepPoint.cc +++ b/source/track/src/G4StepPoint.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4StepPoint.cc,v 1.5.2.1 2001/06/28 19:15:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4StepPoint.cc,v 1.7 2001/08/16 08:17:59 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -60,6 +60,7 @@ G4StepPoint::G4StepPoint(const G4StepPoint &right): fProperTime(right.fProperTime), fMomentumDirection(right.fMomentumDirection), fKineticEnergy(right.fKineticEnergy), + fVelocity(right.fVelocity), fpTouchable(right.fpTouchable), fpMaterial(right.fpMaterial), fSafety(right.fSafety), @@ -68,8 +69,7 @@ G4StepPoint::G4StepPoint(const G4StepPoint &right): fpProcessDefinedStep(right.fpProcessDefinedStep), fMass(right.fMass), fCharge(right.fCharge), - fWeight(right.fWeight), - fVelocity(right.fVelocity) + fWeight(right.fWeight) {} diff --git a/source/track/src/G4Track.cc b/source/track/src/G4Track.cc index bf0a8e4ecf..13586f6025 100644 --- a/source/track/src/G4Track.cc +++ b/source/track/src/G4Track.cc @@ -21,23 +21,18 @@ // ******************************************************************** // // -// $Id: G4Track.cc,v 1.11.2.1 2001/06/28 19:15:28 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Track.cc,v 1.15 2001/12/10 08:36:54 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- // // G4Track.cc // -// Contact: -// Questions and comments to this code should be sent to -// Katsuya Amako (e-mail: Katsuya.Amako@kek.jp) -// Takashi Sasaki (e-mail: Takashi.Sasaki@kek.jp) -// //--------------------------------------------------------------- // Add copy constructor Hisaya Feb. 07 01 // Fix GetVelocity Hisaya Feb. 17 01 -// +// Modification for G4TouchableHandle 22 Oct. 2001 R.Chytracek// #include "G4Track.hh" G4Allocator aTrackAllocator; @@ -47,53 +42,35 @@ G4Track::G4Track(G4DynamicParticle* apValueDynamicParticle, G4double aValueTime, const G4ThreeVector& aValuePosition) /////////////////////////////////////////////////////////// -{ - fpDynamicParticle = apValueDynamicParticle; - fCurrentStepNumber = 0; - fGlobalTime = aValueTime; - fLocalTime = 0.; - fTrackLength = 0.; - fPosition = aValuePosition; - fpTouchable = 0; - fpNextTouchable = 0; - fpStep=0; - - fpLVAtVertex = 0; - fpCreatorProcess = 0; - - fTrackStatus = fAlive; - - fBelowThreshold = false; - fGoodForTracking = false; - fWeight = 1.0; - - fpUserInformation = 0; + : fCurrentStepNumber(0), fPosition(aValuePosition), + fGlobalTime(aValueTime), fLocalTime(0.), + fTrackLength(0.), + fParentID(0), fTrackID(0), + fpDynamicParticle(apValueDynamicParticle), + fTrackStatus(fAlive), + fBelowThreshold(false), fGoodForTracking(false), + fWeight(1.0), + fpStep(0), + fpLVAtVertex(0), fpCreatorProcess(0), + fpUserInformation(0) +{ } ////////////////// G4Track::G4Track() ////////////////// + : fCurrentStepNumber(0), + fGlobalTime(0), fLocalTime(0.), + fTrackLength(0.), + fParentID(0), fTrackID(0), + fpDynamicParticle(0), + fTrackStatus(fAlive), + fBelowThreshold(false), fGoodForTracking(false), + fWeight(1.0), + fpStep(0), + fpLVAtVertex(0), fpCreatorProcess(0), + fpUserInformation(0) { - fCurrentStepNumber = 0; - fGlobalTime = 0.; - fLocalTime = 0.; - fTrackLength = 0.; - fParentID = 0; - fTrackID = 0; - fpTouchable = 0; - fpNextTouchable = 0; - fpStep=0; - - fpDynamicParticle = 0; - fpLVAtVertex = 0; - fpCreatorProcess = 0; - - fTrackStatus = fAlive; - fBelowThreshold = false; - fGoodForTracking = false; - fWeight = 1.0; - - fpUserInformation = 0; } ////////////////// G4Track::G4Track(const G4Track& right) @@ -115,32 +92,40 @@ G4Track & G4Track::operator=(const G4Track &right) ////////////////// { if (this != &right) { - fCurrentStepNumber = right.fCurrentStepNumber; + fPosition = right.fPosition; fGlobalTime = right.fGlobalTime; fLocalTime = right.fLocalTime; fTrackLength = right.fTrackLength; - fParentID = right.fParentID; + fWeight = right.fWeight; - // Track ID is not copied and set to zero for new track + // Track ID (and Parent ID) is not copied and set to zero for new track fTrackID = 0; + fParentID =0; - // pointers to Touchables or Step are not copied - fpTouchable = 0; - fpNextTouchable = 0; - fpStep=0; + // CurrentStepNumber is set to be 0 + fCurrentStepNumber = 0; + // dynamic particle information fpDynamicParticle = new G4DynamicParticle(*(right.fpDynamicParticle)); - - fVtxKineticEnergy = right.fVtxKineticEnergy; - fVtxPosition = right.fVtxPosition; - fpLVAtVertex = right.fpLVAtVertex; - fpCreatorProcess = right.fpCreatorProcess; - + + // track status and flags for tracking fTrackStatus = right.fTrackStatus; fBelowThreshold = right.fBelowThreshold; fGoodForTracking = right.fGoodForTracking; - fWeight = right.fWeight; + + // Step information (Step Length, Step Number, pointer to the Step,) + // are not copied + fpStep=0; + // vertex information + fVtxPosition = right.fVtxPosition; + fpLVAtVertex = right.fpLVAtVertex; + fVtxKineticEnergy = right.fVtxKineticEnergy; + fVtxMomentumDirection = right.fVtxMomentumDirection; + + // CreatorProcess is not copied + fpCreatorProcess = 0; + fpUserInformation = right.fpUserInformation; } return *this; diff --git a/source/track/src/G4VEvtBiasMechanism.cc b/source/track/src/G4VEvtBiasMechanism.cc index c9f72bcd48..0b86e0ea26 100644 --- a/source/track/src/G4VEvtBiasMechanism.cc +++ b/source/track/src/G4VEvtBiasMechanism.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VEvtBiasMechanism.cc,v 1.2.4.2 2001/06/28 20:20:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VEvtBiasMechanism.cc,v 1.3 2001/07/11 10:08:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- diff --git a/source/track/src/G4VParticleChange.cc b/source/track/src/G4VParticleChange.cc index a34060fa5d..f6be5f72b2 100644 --- a/source/track/src/G4VParticleChange.cc +++ b/source/track/src/G4VParticleChange.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VParticleChange.cc,v 1.5.4.2 2001/06/28 20:20:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VParticleChange.cc,v 1.9 2001/11/13 05:13:39 kurasige Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // -------------------------------------------------------------- @@ -48,10 +48,10 @@ G4VParticleChange::G4VParticleChange(): theStatusChange(fAlive), theSteppingControlFlag(NormalCondition), theLocalEnergyDeposit(0.0), + verboseLevel(1), theParentWeight(1.0), - theEBMechanism(0), - fUseEB(false), - verboseLevel(1) + fSetSecondaryWeightByProcess(false), + fSetParentWeightByProcess(true) { debugFlag = false; #ifdef G4VERBOSE @@ -61,27 +61,6 @@ G4VParticleChange::G4VParticleChange(): theListOfSecondaries = new G4TrackFastVector(); } -G4VParticleChange::G4VParticleChange(G4bool useEB): - theNumberOfSecondaries(0), - theSizeOftheListOfSecondaries(G4TrackFastVectorSize), - theStatusChange(fAlive), - theSteppingControlFlag(NormalCondition), - theLocalEnergyDeposit(0.0), - theParentWeight(1.0), - verboseLevel(1) -{ - fUseEB = useEB; - // debug flag (activate CheckIt() ) - debugFlag = false; -#ifdef G4VERBOSE - // activate CHeckIt if in VERBOSE mode - debugFlag = true; -#endif - theListOfSecondaries = new G4TrackFastVector(); - // register G4EvtBiasMechanism as a default - theEBMechanism = new G4Mars5GeVMechanism(); -} - G4VParticleChange::~G4VParticleChange() { // check if tracks still exist in theListOfSecondaries if (theNumberOfSecondaries>0) { @@ -95,7 +74,6 @@ G4VParticleChange::~G4VParticleChange() { if ( (*theListOfSecondaries)[index] ) delete (*theListOfSecondaries)[index] ; } } - if (theEBMechanism !=0) delete theEBMechanism; delete theListOfSecondaries; } @@ -106,9 +84,9 @@ G4VParticleChange::G4VParticleChange(const G4VParticleChange &right): theStatusChange(fAlive), theSteppingControlFlag(NormalCondition), theLocalEnergyDeposit(0.0), + verboseLevel(1), theParentWeight(1.0), - fUseEB(false), - verboseLevel(1) + fSetSecondaryWeightByProcess(false) { debugFlag = false; #ifdef G4VERBOSE @@ -123,6 +101,7 @@ G4VParticleChange::G4VParticleChange(const G4VParticleChange &right): theTrueStepLength = right.theTrueStepLength; theLocalEnergyDeposit = right.theLocalEnergyDeposit; theSteppingControlFlag = right.theSteppingControlFlag; + fSetParentWeightByProcess = right.fSetParentWeightByProcess; } @@ -142,6 +121,7 @@ G4VParticleChange & G4VParticleChange::operator=(const G4VParticleChange &right) theTrueStepLength = right.theTrueStepLength; theLocalEnergyDeposit = right.theLocalEnergyDeposit; theSteppingControlFlag = right.theSteppingControlFlag; + fSetParentWeightByProcess = right.fSetParentWeightByProcess; } return *this; } @@ -212,12 +192,6 @@ void G4VParticleChange::DumpInfo() const G4cout << " Stepping Control : " << G4std::setw(20) << theSteppingControlFlag << G4endl; - G4cout << " Event Biasing : "; - if (fUseEB) { - G4cout << G4std::setw(20) << theEBMechanism->GetName(); - } else { - G4cout << " not used "; - } G4cout << G4endl; } @@ -226,7 +200,6 @@ G4bool G4VParticleChange::CheckIt(const G4Track& aTrack) G4bool exitWithError = false; G4double accuracy; - G4double newEnergyDeposit; // Energy deposit should not be negative G4bool itsOKforEnergy = true; @@ -279,3 +252,13 @@ G4bool G4VParticleChange::CheckIt(const G4Track& aTrack) + + + + + + + + + + diff --git a/source/tracking/History b/source/tracking/History index 52955d5e55..bb129ff357 100644 --- a/source/tracking/History +++ b/source/tracking/History @@ -1,4 +1,4 @@ -$Id: History,v 1.21 2001/06/06 08:37:11 gcosmo Exp $ +$Id: History,v 1.27 2001/12/06 10:06:43 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,32 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +Dec 06, 01 G.Cosmo (tracking-V03-02-05) +- G4SteppingVerbose.cc: removed trigraph warning on Linux-g++. + +Nov 27, 01 J.Apostolakis (tracking-V03-02-04) + Correction to the use the touchable Handle for secondary tracks, + when it is available. + Now the direction is used in locating a particle (primary or + secondary) in SetInitialStep. This is in order to assist in + starting particles that are on/near-to boundaries in the correct + volume. + +Nov 27, 01 J.Apostolakis (tracking-V03-02-03) + Initial step now uses the touchable Handle of the secondary track, +when it exists and is valid. + + To be useful this tag depends the tag track-V03-02-07, + which enables touchable handles in secondaries. + +Nov 08, 01 G.Cosmo (tracking-V03-02-02) +- Introduced changes for reference-counted touchables (T.Sasaki). +- Removed warnings from Linux-g++ (R.Chytracek). +- Some reformatting (R.Chytracek). + +Oct 11, 01 G.Cosmo (tracking-V03-02-00) +- G4VSteppingVerbose.hh: removed redundant inclusion of RW wrapper header. + Jun 06, 01 G.Cosmo (tracking-V03-01-02) - G4SteppingManager.cc: explicitly initialise values to zero in STL collections fSelectedAtRestDoItVector, fSelectedAlongStepDoItVector, and diff --git a/source/tracking/include/G4SteppingManager.hh b/source/tracking/include/G4SteppingManager.hh index 156f0f8221..e8eac36f72 100644 --- a/source/tracking/include/G4SteppingManager.hh +++ b/source/tracking/include/G4SteppingManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SteppingManager.hh,v 1.16.2.1 2001/06/28 19:15:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SteppingManager.hh,v 1.18 2001/11/07 13:02:07 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //--------------------------------------------------------------- // @@ -73,8 +73,8 @@ class G4VSensitiveDetector; #include "G4Step.hh" // Include from 'tracking' #include "G4StepPoint.hh" // Include from 'tracking' #include "G4VSteppingVerbose.hh" // Include from 'tracking' -#include "G4VTouchable.hh" // Include from 'geometry' -#include "G4TouchableHistory.hh" // Include from 'geometry' +#include "G4TouchableHandle.hh" // Include from 'geometry' +#include "G4TouchableHistoryHandle.hh" // Include from 'geometry' // must be changed in elegant way static const size_t SizeOfSelectedDoItVector=100; @@ -172,10 +172,7 @@ public: //without description G4SelectedAlongStepDoItVector* GetfSelectedAlongStepDoItVector(); G4SelectedPostStepDoItVector* GetfSelectedPostStepDoItVector(); G4double GetfPreviousStepSize(); - const G4VTouchable* GetfTouchable1(); - const G4VTouchable* GetfTouchable2(); - G4bool GetfIsTouchable1Free(); - G4bool GetfIsTouchable2Free(); + const G4TouchableHandle& GetTouchableHandle(); G4SteppingControl GetStepControlFlag(); G4Navigator GetNavigator(); G4UserSteppingAction* GetUserAction(); @@ -200,18 +197,9 @@ public: //without description void SetNavigator(G4Navigator* value); G4double CalculateSafety(); // Return the estimated safety value at the PostStepPoint - const G4VTouchable* GetFreeTouchable(); - // Get Touchable which is free, i.e. not assigined to Track/StepPoint - // If no free touchable is availabe, the NULL will be returned - // Once you get a Touchable, it will be set to NotFree. - void SetAnotherTouchableFree(const G4VTouchable* value); - // Set the partner of the given Touchable to be free. For example, - // the argument has fTouchable1, then fTouchable2 will be set to - // free. The state of fTouchable1 is intact. - - -// Member data +// Member data + G4UserSteppingAction* fUserSteppingAction; G4VSteppingVerbose* fVerbose; @@ -278,10 +266,7 @@ public: //without description G4double fPreviousStepSize; - const G4VTouchable* fTouchable1; - const G4VTouchable* fTouchable2; - G4bool fIsTouchable1Free; - G4bool fIsTouchable2Free; + G4TouchableHandle fTouchableHandle; G4SteppingControl StepControlFlag; @@ -319,170 +304,161 @@ public: //without description inline G4double G4SteppingManager::GetCorrectedStep(){ return CorrectedStep; } - inline G4bool G4SteppingManager::GetPreStepPointIsGeom(){ - return PreStepPointIsGeom; - } + + inline G4bool G4SteppingManager::GetPreStepPointIsGeom(){ + return PreStepPointIsGeom; + } - inline G4bool G4SteppingManager::GetFirstStep(){ - return FirstStep; - } + inline G4bool G4SteppingManager::GetFirstStep(){ + return FirstStep; + } - inline G4StepStatus G4SteppingManager::GetfStepStatus(){ - return fStepStatus; - } + inline G4StepStatus G4SteppingManager::GetfStepStatus(){ + return fStepStatus; + } - inline G4double G4SteppingManager::GetTempInitVelocity(){ - return TempInitVelocity; - } - inline G4double G4SteppingManager::GetTempVelocity(){ - return TempVelocity; - } - inline G4double G4SteppingManager::GetMass(){ - return Mass; - } + inline G4double G4SteppingManager::GetTempInitVelocity(){ + return TempInitVelocity; + } + inline G4double G4SteppingManager::GetTempVelocity(){ + return TempVelocity; + } + inline G4double G4SteppingManager::GetMass(){ + return Mass; + } - inline G4double G4SteppingManager::GetsumEnergyChange(){ - return sumEnergyChange; - } + inline G4double G4SteppingManager::GetsumEnergyChange(){ + return sumEnergyChange; + } - inline G4VParticleChange* G4SteppingManager::GetfParticleChange(){ - return fParticleChange; - } + inline G4VParticleChange* G4SteppingManager::GetfParticleChange(){ + return fParticleChange; + } - inline G4Track* G4SteppingManager::GetfTrack(){ - return fTrack; - } + inline G4Track* G4SteppingManager::GetfTrack(){ + return fTrack; + } - inline G4TrackVector* G4SteppingManager::GetfSecondary(){ - return fSecondary; - } - inline G4Step* G4SteppingManager::GetfStep(){ - return fStep; - } - inline G4StepPoint* G4SteppingManager::GetfPreStepPoint(){ - return fPreStepPoint; - } - inline G4StepPoint* G4SteppingManager::GetfPostStepPoint(){ - return fPostStepPoint; - } + inline G4TrackVector* G4SteppingManager::GetfSecondary(){ + return fSecondary; + } + inline G4Step* G4SteppingManager::GetfStep(){ + return fStep; + } + inline G4StepPoint* G4SteppingManager::GetfPreStepPoint(){ + return fPreStepPoint; + } + inline G4StepPoint* G4SteppingManager::GetfPostStepPoint(){ + return fPostStepPoint; + } - inline G4VPhysicalVolume* G4SteppingManager::GetfCurrentVolume(){ - return fCurrentVolume; - } - inline G4VSensitiveDetector* G4SteppingManager::GetfSensitive(){ - return fSensitive; - } - inline G4VProcess* G4SteppingManager::GetfCurrentProcess(){ - return fCurrentProcess; - } + inline G4VPhysicalVolume* G4SteppingManager::GetfCurrentVolume(){ + return fCurrentVolume; + } + inline G4VSensitiveDetector* G4SteppingManager::GetfSensitive(){ + return fSensitive; + } + inline G4VProcess* G4SteppingManager::GetfCurrentProcess(){ + return fCurrentProcess; + } - inline G4ProcessVector* G4SteppingManager::GetfAtRestDoItVector(){ - return fAtRestDoItVector; - } - inline G4ProcessVector* G4SteppingManager::GetfAlongStepDoItVector(){ - return fAlongStepDoItVector; - } - inline G4ProcessVector* G4SteppingManager::GetfPostStepDoItVector(){ - return fPostStepDoItVector; - } + inline G4ProcessVector* G4SteppingManager::GetfAtRestDoItVector(){ + return fAtRestDoItVector; + } + inline G4ProcessVector* G4SteppingManager::GetfAlongStepDoItVector(){ + return fAlongStepDoItVector; + } + inline G4ProcessVector* G4SteppingManager::GetfPostStepDoItVector(){ + return fPostStepDoItVector; + } - inline G4ProcessVector* G4SteppingManager::GetfAtRestGetPhysIntVector(){ - return fAtRestGetPhysIntVector; - } + inline G4ProcessVector* G4SteppingManager::GetfAtRestGetPhysIntVector(){ + return fAtRestGetPhysIntVector; + } - inline G4ProcessVector* G4SteppingManager::GetfAlongStepGetPhysIntVector(){ - return fAlongStepGetPhysIntVector; - } + inline G4ProcessVector* G4SteppingManager::GetfAlongStepGetPhysIntVector(){ + return fAlongStepGetPhysIntVector; + } - inline G4ProcessVector* G4SteppingManager::GetfPostStepGetPhysIntVector(){ - return fPostStepGetPhysIntVector; - } + inline G4ProcessVector* G4SteppingManager::GetfPostStepGetPhysIntVector(){ + return fPostStepGetPhysIntVector; + } - inline size_t G4SteppingManager::GetMAXofAtRestLoops(){ - return MAXofAtRestLoops; - } - inline size_t G4SteppingManager::GetMAXofAlongStepLoops(){ - return MAXofAlongStepLoops; - } - inline size_t G4SteppingManager::GetMAXofPostStepLoops(){ - return MAXofPostStepLoops; - } + inline size_t G4SteppingManager::GetMAXofAtRestLoops(){ + return MAXofAtRestLoops; + } + inline size_t G4SteppingManager::GetMAXofAlongStepLoops(){ + return MAXofAlongStepLoops; + } + inline size_t G4SteppingManager::GetMAXofPostStepLoops(){ + return MAXofPostStepLoops; + } - inline G4double G4SteppingManager::GetcurrentMinimumStep(){ - return currentMinimumStep; - } - inline G4double G4SteppingManager::GetnumberOfInteractionLengthLeft(){ - return numberOfInteractionLengthLeft; - } + inline G4double G4SteppingManager::GetcurrentMinimumStep(){ + return currentMinimumStep; + } + inline G4double G4SteppingManager::GetnumberOfInteractionLengthLeft(){ + return numberOfInteractionLengthLeft; + } - inline size_t G4SteppingManager::GetfAtRestDoItProcTriggered(){ - return fAtRestDoItProcTriggered; - } - inline size_t G4SteppingManager::GetfAlongStepDoItProcTriggered(){ - return fAtRestDoItProcTriggered; - } - inline size_t G4SteppingManager::GetfPostStepDoItProcTriggered(){ - return fPostStepDoItProcTriggered; - } - inline G4int G4SteppingManager::GetfN2ndariesAtRestDoIt(){ - return fN2ndariesAtRestDoIt; - } - inline G4int G4SteppingManager::GetfN2ndariesAlongStepDoIt(){ - return fN2ndariesAlongStepDoIt; - } - inline G4int G4SteppingManager::GetfN2ndariesPostStepDoIt(){ - return fN2ndariesPostStepDoIt; - } + inline size_t G4SteppingManager::GetfAtRestDoItProcTriggered(){ + return fAtRestDoItProcTriggered; + } + inline size_t G4SteppingManager::GetfAlongStepDoItProcTriggered(){ + return fAtRestDoItProcTriggered; + } + inline size_t G4SteppingManager::GetfPostStepDoItProcTriggered(){ + return fPostStepDoItProcTriggered; + } + inline G4int G4SteppingManager::GetfN2ndariesAtRestDoIt(){ + return fN2ndariesAtRestDoIt; + } + inline G4int G4SteppingManager::GetfN2ndariesAlongStepDoIt(){ + return fN2ndariesAlongStepDoIt; + } + inline G4int G4SteppingManager::GetfN2ndariesPostStepDoIt(){ + return fN2ndariesPostStepDoIt; + } - inline G4Navigator* G4SteppingManager::GetfNavigator(){ - return fNavigator; - } - inline G4int G4SteppingManager::GetverboseLevel(){ - return verboseLevel; - } + inline G4Navigator* G4SteppingManager::GetfNavigator(){ + return fNavigator; + } + inline G4int G4SteppingManager::GetverboseLevel(){ + return verboseLevel; + } - inline G4SelectedAtRestDoItVector* G4SteppingManager::GetfSelectedAtRestDoItVector(){ - return fSelectedAtRestDoItVector; - } + inline G4SelectedAtRestDoItVector* G4SteppingManager::GetfSelectedAtRestDoItVector(){ + return fSelectedAtRestDoItVector; + } - inline G4SelectedAlongStepDoItVector* G4SteppingManager::GetfSelectedAlongStepDoItVector(){ - return fSelectedAlongStepDoItVector; - } + inline G4SelectedAlongStepDoItVector* G4SteppingManager::GetfSelectedAlongStepDoItVector(){ + return fSelectedAlongStepDoItVector; + } - inline G4SelectedPostStepDoItVector* G4SteppingManager::GetfSelectedPostStepDoItVector(){ - return fSelectedPostStepDoItVector; - } + inline G4SelectedPostStepDoItVector* G4SteppingManager::GetfSelectedPostStepDoItVector(){ + return fSelectedPostStepDoItVector; + } - inline G4double G4SteppingManager::GetfPreviousStepSize(){ - return fPreviousStepSize; - } + inline G4double G4SteppingManager::GetfPreviousStepSize(){ + return fPreviousStepSize; + } - inline const G4VTouchable* G4SteppingManager::GetfTouchable1(){ - return fTouchable1; - } - inline const G4VTouchable* G4SteppingManager::GetfTouchable2(){ - return fTouchable2; - } - inline G4bool G4SteppingManager::GetfIsTouchable1Free(){ - return fIsTouchable1Free; - } - inline G4bool G4SteppingManager::GetfIsTouchable2Free(){ - return fIsTouchable2Free; - } - - inline G4SteppingControl G4SteppingManager::GetStepControlFlag(){ - return StepControlFlag; - } - inline G4double G4SteppingManager::GetphysIntLength(){ - return physIntLength; - } - inline G4ForceCondition G4SteppingManager::GetfCondition(){ - return fCondition; - } - inline G4GPILSelection G4SteppingManager::GetfGPILSelection(){ - return fGPILSelection; - } + inline const G4TouchableHandle& G4SteppingManager::GetTouchableHandle() { + return fTouchableHandle; + } + inline G4SteppingControl G4SteppingManager::GetStepControlFlag(){ + return StepControlFlag; + } + inline G4double G4SteppingManager::GetphysIntLength(){ + return physIntLength; + } + inline G4ForceCondition G4SteppingManager::GetfCondition(){ + return fCondition; + } + inline G4GPILSelection G4SteppingManager::GetfGPILSelection(){ + return fGPILSelection; + } inline G4TrackVector* G4SteppingManager::GetSecondary() const { return fSecondary; @@ -521,30 +497,6 @@ public: //without description 0.); } - inline const G4VTouchable* G4SteppingManager::GetFreeTouchable(){ - if(fIsTouchable1Free){ - fIsTouchable1Free = false; - return fTouchable1; - } - else if(fIsTouchable2Free){ - fIsTouchable2Free = false; - return fTouchable2; - } - else { - return NULL; - } - } - - inline void G4SteppingManager::SetAnotherTouchableFree(const G4VTouchable* value){ - if(value == fTouchable1){ - fIsTouchable2Free = true; - } - else if(value == fTouchable2){ - fIsTouchable1Free = true; - } - } - -//#include "G4SteppingManager.icc" #endif diff --git a/source/tracking/include/G4SteppingVerbose.hh b/source/tracking/include/G4SteppingVerbose.hh index aa7a9cb529..30fdd414d6 100644 --- a/source/tracking/include/G4SteppingVerbose.hh +++ b/source/tracking/include/G4SteppingVerbose.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SteppingVerbose.hh,v 1.8.2.1 2001/06/28 19:15:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SteppingVerbose.hh,v 1.9 2001/07/11 10:08:40 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4TrackVector.hh b/source/tracking/include/G4TrackVector.hh index 1dbc3dd6e0..1986d1ff5e 100644 --- a/source/tracking/include/G4TrackVector.hh +++ b/source/tracking/include/G4TrackVector.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackVector.hh,v 1.7.2.1 2001/06/28 19:15:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackVector.hh,v 1.8 2001/07/11 10:08:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4TrackingManager.hh b/source/tracking/include/G4TrackingManager.hh index 10c7f456c1..e939f54a61 100644 --- a/source/tracking/include/G4TrackingManager.hh +++ b/source/tracking/include/G4TrackingManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackingManager.hh,v 1.12.2.1 2001/06/28 19:15:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackingManager.hh,v 1.13 2001/07/11 10:08:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4TrackingMessenger.hh b/source/tracking/include/G4TrackingMessenger.hh index b8885283bb..709e2fad35 100644 --- a/source/tracking/include/G4TrackingMessenger.hh +++ b/source/tracking/include/G4TrackingMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackingMessenger.hh,v 1.6.2.1 2001/06/28 19:15:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackingMessenger.hh,v 1.7 2001/07/11 10:08:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4Trajectory.hh b/source/tracking/include/G4Trajectory.hh index 3d13ca3592..ec4232f0ed 100644 --- a/source/tracking/include/G4Trajectory.hh +++ b/source/tracking/include/G4Trajectory.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Trajectory.hh,v 1.12.2.1 2001/06/28 19:15:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Trajectory.hh,v 1.14 2001/11/07 10:39:46 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -115,11 +115,11 @@ public: // with description //--------- TrajectoryPointContainer* positionRecord; - G4int fTrackID; - G4int fParentID; - G4String ParticleName; - G4double PDGCharge; - G4int PDGEncoding; + G4int fTrackID; + G4int fParentID; + G4int PDGEncoding; + G4double PDGCharge; + G4String ParticleName; }; diff --git a/source/tracking/include/G4TrajectoryPoint.hh b/source/tracking/include/G4TrajectoryPoint.hh index 1629279b0e..a6440bffbe 100644 --- a/source/tracking/include/G4TrajectoryPoint.hh +++ b/source/tracking/include/G4TrajectoryPoint.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrajectoryPoint.hh,v 1.6.2.1 2001/06/28 19:15:29 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrajectoryPoint.hh,v 1.7 2001/07/11 10:08:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4UserSteppingAction.hh b/source/tracking/include/G4UserSteppingAction.hh index f1b0194a98..8a471a8644 100644 --- a/source/tracking/include/G4UserSteppingAction.hh +++ b/source/tracking/include/G4UserSteppingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserSteppingAction.hh,v 1.6.2.1 2001/06/28 19:15:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserSteppingAction.hh,v 1.7 2001/07/11 10:08:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4UserTrackingAction.hh b/source/tracking/include/G4UserTrackingAction.hh index b870217ae4..4c769d3be8 100644 --- a/source/tracking/include/G4UserTrackingAction.hh +++ b/source/tracking/include/G4UserTrackingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserTrackingAction.hh,v 1.7.2.1 2001/06/28 19:15:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserTrackingAction.hh,v 1.8 2001/07/11 10:08:41 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4VSteppingVerbose.hh b/source/tracking/include/G4VSteppingVerbose.hh index 3a4eae08f0..3a47ee94b5 100644 --- a/source/tracking/include/G4VSteppingVerbose.hh +++ b/source/tracking/include/G4VSteppingVerbose.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSteppingVerbose.hh,v 1.9.2.1 2001/06/28 19:15:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSteppingVerbose.hh,v 1.13 2001/11/07 13:04:50 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -47,7 +47,8 @@ class G4SteppingManager; #include "globals.hh" // Include from 'global' -#include "g4rw/tvordvec.h" +#include "g4std/vector" + class G4Navigator; class G4VPhysicalVolume; class G4VSensitiveDetector; @@ -59,7 +60,7 @@ class G4Track; #include "G4StepStatus.hh" // Include from 'track' class G4UserSteppingAction; class G4StepPoint; -class G4VTouchable; +#include "G4TouchableHandle.hh" class G4VParticleChange; #include "G4ForceCondition.hh" //enum 'track' #include "G4GPILSelection.hh" //enum 'track' @@ -177,10 +178,7 @@ protected: G4double fPreviousStepSize; - const G4VTouchable* fTouchable1; - const G4VTouchable* fTouchable2; - G4bool fIsTouchable1Free; - G4bool fIsTouchable2Free; + G4TouchableHandle fTouchableHandle; G4SteppingControl StepControlFlag; diff --git a/source/tracking/include/G4VTrajectory.hh b/source/tracking/include/G4VTrajectory.hh index cddc83d6f3..ae2e205fe3 100644 --- a/source/tracking/include/G4VTrajectory.hh +++ b/source/tracking/include/G4VTrajectory.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTrajectory.hh,v 1.5.2.1 2001/06/28 19:15:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTrajectory.hh,v 1.6 2001/07/11 10:08:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/include/G4VTrajectoryPoint.hh b/source/tracking/include/G4VTrajectoryPoint.hh index 75ad3dd762..bb659fe283 100644 --- a/source/tracking/include/G4VTrajectoryPoint.hh +++ b/source/tracking/include/G4VTrajectoryPoint.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTrajectoryPoint.hh,v 1.4.2.1 2001/06/28 19:15:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTrajectoryPoint.hh,v 1.5 2001/07/11 10:08:42 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description diff --git a/source/tracking/src/G4SteppingManager.cc b/source/tracking/src/G4SteppingManager.cc index c7d76fb7d1..8e15fa96ce 100644 --- a/source/tracking/src/G4SteppingManager.cc +++ b/source/tracking/src/G4SteppingManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SteppingManager.cc,v 1.14.2.1 2001/06/28 19:15:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SteppingManager.cc,v 1.23 2001/12/04 17:15:50 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -53,7 +53,7 @@ ////////////////////////////////////// G4SteppingManager::G4SteppingManager() ////////////////////////////////////// - : verboseLevel(0), fUserSteppingAction(NULL) + : fUserSteppingAction(NULL), verboseLevel(0) { // Construct simple 'has-a' related objects @@ -87,8 +87,7 @@ G4SteppingManager::G4SteppingManager() SetNavigator(G4TransportationManager::GetTransportationManager() ->GetNavigatorForTracking()); - fTouchable1 = new G4TouchableHistory(); - fTouchable2 = new G4TouchableHistory(); +// fTouchableHandle = new G4TouchableHistory(); } /////////////////////////////////////// @@ -102,8 +101,6 @@ G4SteppingManager::~G4SteppingManager() delete fSelectedAtRestDoItVector; delete fSelectedAlongStepDoItVector; delete fSelectedPostStepDoItVector; - delete (G4VTouchable*)(fTouchable1); - delete (G4VTouchable*)(fTouchable2); if (fUserSteppingAction) delete fUserSteppingAction; #ifdef G4VERBOSE if(KillVerbose) delete fVerbose; @@ -130,10 +127,7 @@ G4StepStatus G4SteppingManager::Stepping() fStep->ResetTotalEnergyDeposit(); // Switch next touchable in track to current one - fTrack->SetTouchable(fTrack->GetNextTouchable()); - -// Free the touchable which is not used - SetAnotherTouchableFree(fPostStepPoint->GetTouchable()); + fTrack->SetTouchableHandle(fTrack->GetNextTouchableHandle()); // Reset the secondary particles fN2ndariesAtRestDoIt = 0; @@ -254,8 +248,6 @@ void G4SteppingManager::SetInitialStep(G4Track* valueTrack) fTrack = valueTrack; Mass = fTrack->GetDynamicParticle()->GetMass(); - fIsTouchable1Free = TRUE; - fIsTouchable2Free = TRUE; // If the primary track has 'Suspend' or 'PostponeToNextEvent' state, // set the track state to 'Alive'. @@ -270,37 +262,52 @@ void G4SteppingManager::SetInitialStep(G4Track* valueTrack) fTrack->SetTrackStatus( fStopButAlive ); } -// Initialize VTouchable using the point in the global coordinate -// system. - G4VTouchable* pTouchableFree = (G4VTouchable*)(GetFreeTouchable()); - fNavigator->LocateGlobalPointAndUpdateTouchable( - fTrack->GetPosition(), - pTouchableFree, - true ); - // Set Touchable to track and a private attribute of G4SteppingManager - fTrack->SetTouchable( pTouchableFree ); - fTrack->SetNextTouchable( pTouchableFree ); + + if ( ! fTrack->GetTouchableHandle() ) { + G4ThreeVector direction= fTrack->GetMomentumDirection(); + fNavigator->LocateGlobalPointAndSetup( fTrack->GetPosition(), &direction, true, false); + fTouchableHandle = fNavigator->CreateTouchableHistory(); + + fTrack->SetTouchableHandle( fTouchableHandle ); + fTrack->SetNextTouchableHandle( fTouchableHandle ); + }else{ + fTrack->SetNextTouchableHandle( fTrack->GetTouchableHandle() ); + G4VPhysicalVolume* oldTopVolume= fTrack->GetTouchableHandle()->GetVolume(); + G4VPhysicalVolume* newTopVolume= + fNavigator->LocateGlobalPointAndSetup( fTrack->GetPosition(), + fTrack->GetMomentumDirection(),*((G4TouchableHistory*)fTrack->GetTouchableHandle()()) ); + if(newTopVolume != oldTopVolume ){ + fTouchableHandle = fNavigator->CreateTouchableHistory(); + fTrack->SetTouchableHandle( fTouchableHandle ); + fTrack->SetNextTouchableHandle( fTouchableHandle ); + } + } // Set vertex information of G4Track at here -//corrected on 10APR2001/TS if ( fTrack->GetCurrentStepNumber() == 0 ) { fTrack->SetVertexPosition( fTrack->GetPosition() ); fTrack->SetVertexMomentumDirection( fTrack->GetMomentumDirection() ); fTrack->SetVertexKineticEnergy( fTrack->GetKineticEnergy() ); + fTrack->SetLogicalVolumeAtVertex( fTrack->GetVolume()->GetLogicalVolume() ); } // Initial set up for attributes of 'G4SteppingManager' - fCurrentVolume = pTouchableFree->GetVolume(); + fCurrentVolume = fTouchableHandle->GetVolume(); +// If track is already outside the world boundary, kill it + if( fCurrentVolume==0 ){ + fTrack->SetTrackStatus( fStopAndKill ); + G4cerr << "G4SteppingManager::SetInitialStep(): warning: " + << "initial track position is outside world! " + << fTrack->GetPosition() << G4endl; + } + else { // Initial set up for attribues of 'Step' - fStep->InitializeStep( fTrack ); + fStep->InitializeStep( fTrack ); + } #ifdef G4VERBOSE // !!!!! Verbose if(verboseLevel>0) fVerbose->TrackingStarted(); #endif -// If track is already outside the world boundary, kill it - if( fTrack->GetVolume()==0 ){ - fTrack->SetTrackStatus( fStopAndKill ); - } } diff --git a/source/tracking/src/G4SteppingManager2.cc b/source/tracking/src/G4SteppingManager2.cc index 48a39d3bd5..ae04019ff1 100644 --- a/source/tracking/src/G4SteppingManager2.cc +++ b/source/tracking/src/G4SteppingManager2.cc @@ -21,13 +21,13 @@ // ******************************************************************** // // -// $Id: G4SteppingManager2.cc,v 1.1.2.1 2001/06/28 19:15:30 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SteppingManager2.cc,v 1.4 2001/11/07 13:14:45 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- // -// G4SteppingManager.icc +// G4SteppingManager2.cc // // Description: // This class represents the manager who steers to move the give @@ -223,7 +223,7 @@ void G4SteppingManager::InvokeAtRestDoItProcs() fN2ndariesAtRestDoIt = 0; shortestLifeTime = DBL_MAX; - int NofInactiveProc=0; + unsigned int NofInactiveProc=0; for( size_t ri=0 ; ri < MAXofAtRestLoops ; ri++ ){ fCurrentProcess = (*fAtRestGetPhysIntVector)[ri]; if (fCurrentProcess== NULL) { diff --git a/source/tracking/src/G4SteppingVerbose.cc b/source/tracking/src/G4SteppingVerbose.cc index 3de5fab578..76ca636abd 100644 --- a/source/tracking/src/G4SteppingVerbose.cc +++ b/source/tracking/src/G4SteppingVerbose.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SteppingVerbose.cc,v 1.7.2.1 2001/06/28 19:15:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SteppingVerbose.cc,v 1.10 2001/12/06 10:04:59 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -87,41 +87,37 @@ void G4SteppingVerbose::AtRestDoItInvoked() for(size_t np=0; np < MAXofAtRestLoops; np++){ size_t npGPIL = MAXofAtRestLoops-np-1; if( (*fSelectedAtRestDoItVector)[npGPIL] == 2 ){ - npt++; - ptProcManager = (*fAtRestDoItVector)[np]; - G4cout << " # " << npt << " : " - << ptProcManager->GetProcessName() - << " (Forced)" << G4endl; + npt++; + ptProcManager = (*fAtRestDoItVector)[np]; + G4cout << " # " << npt << " : " + << ptProcManager->GetProcessName() + << " (Forced)" << G4endl; } else if ( (*fSelectedAtRestDoItVector)[npGPIL] == 1 ){ - npt++; - ptProcManager = (*fAtRestDoItVector)[np]; - G4cout << " # " << npt << " : " - << ptProcManager->GetProcessName() << G4endl; + npt++; + ptProcManager = (*fAtRestDoItVector)[np]; + G4cout << " # " << npt << " : " << ptProcManager->GetProcessName() << G4endl; } } G4cout << " Generated secondries # : " << fN2ndariesAtRestDoIt << G4endl; if( fN2ndariesAtRestDoIt > 0 ){ - G4cout << " -- List of secondaries generated : " - << "(x,y,z,kE,t,PID) --" << G4endl; - for( G4int lp1=(*fSecondary).size()-fN2ndariesAtRestDoIt; - lp1<(*fSecondary).size(); lp1++){ - G4cout << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime(),"Time") << " " - << G4std::setw(18) - << (*fSecondary)[lp1]->GetDefinition() - ->GetParticleName(); - G4cout << G4endl; + G4cout << " -- List of secondaries generated : " << "(x,y,z,kE,t,PID) --" << G4endl; + for( size_t lp1=(*fSecondary).size()-fN2ndariesAtRestDoIt; + lp1<(*fSecondary).size(); lp1++) { + G4cout << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime(),"Time") << " " + << G4std::setw(18) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName() << G4endl; } } } @@ -139,46 +135,44 @@ void G4SteppingVerbose::AlongStepDoItAllDone() CopyState(); - if(verboseLevel >= 3){ - G4cout << G4endl; - G4cout << " >>AlongStepDoIt (after all invocations):" << G4endl; - G4cout << " ++List of invoked processes " << G4endl; - - for(size_t ci=0; ciGetProcessName() << G4endl; - } - } + if(verboseLevel >= 3){ + G4cout << G4endl; + G4cout << " >>AlongStepDoIt (after all invocations):" << G4endl; + G4cout << " ++List of invoked processes " << G4endl; - ShowStep(); - G4cout << G4endl; - G4cout << " ++List of secondaries generated " + for(size_t ci=0; ciGetProcessName() << G4endl; + } + } + + ShowStep(); + G4cout << G4endl; + G4cout << " ++List of secondaries generated " << "(x,y,z,kE,t,PID):" << " No. of secodaries = " << (*fSecondary).size() << G4endl; - if((*fSecondary).size()>0){ - for(G4int lp1=0; lp1<(*fSecondary).size(); lp1++){ - G4cout << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime(),"Time") << " " - << G4std::setw(18) - << (*fSecondary)[lp1]->GetDefinition() - ->GetParticleName(); - G4cout << G4endl; - } - } - } + if((*fSecondary).size()>0){ + for(size_t lp1=0; lp1<(*fSecondary).size(); lp1++){ + G4cout << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime(),"Time") << " " + << G4std::setw(18) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName() << G4endl; + } + } + } } //////////////////////////////////////////////////// void G4SteppingVerbose::PostStepDoItAllDone() @@ -191,64 +185,60 @@ void G4SteppingVerbose::PostStepDoItAllDone() if(fStepStatus != fPostStepDoItProc) return; if(verboseLevel >= 3){ - G4int npt=0; - G4cout << G4endl; - G4cout << " **PostStepDoIt (after all invocations):" << G4endl; - G4cout << " ++List of invoked processes " << G4endl; + G4int npt=0; + G4cout << G4endl; + G4cout << " **PostStepDoIt (after all invocations):" << G4endl; + G4cout << " ++List of invoked processes " << G4endl; - for(size_t np=0; np < MAXofPostStepLoops; np++){ - size_t npGPIL = MAXofPostStepLoops-np-1; - if( (*fSelectedPostStepDoItVector)[npGPIL] == 2){ - npt++; - ptProcManager = (*fPostStepDoItVector)[np]; - G4cout << " " << npt << ") " - << ptProcManager->GetProcessName() - << " (Forced)" << G4endl; - } else if ( (*fSelectedPostStepDoItVector)[npGPIL] == 1){ - npt++; - ptProcManager = (*fPostStepDoItVector)[np]; - G4cout << " " << npt << ") " - << ptProcManager->GetProcessName() << G4endl; - } - } + for(size_t np=0; np < MAXofPostStepLoops; np++){ + size_t npGPIL = MAXofPostStepLoops-np-1; + if( (*fSelectedPostStepDoItVector)[npGPIL] == 2){ + npt++; + ptProcManager = (*fPostStepDoItVector)[np]; + G4cout << " " << npt << ") " + << ptProcManager->GetProcessName() + << " (Forced)" << G4endl; + } else if ( (*fSelectedPostStepDoItVector)[npGPIL] == 1){ + npt++; + ptProcManager = (*fPostStepDoItVector)[np]; + G4cout << " " << npt << ") " << ptProcManager->GetProcessName() << G4endl; + } + } - ShowStep(); - G4cout << G4endl; - G4cout << " ++List of secondaries generated " + ShowStep(); + G4cout << G4endl; + G4cout << " ++List of secondaries generated " << "(x,y,z,kE,t,PID):" << " No. of secodaries = " << (*fSecondary).size() << G4endl; - G4cout << " [Note]Secondaries from AlongStepDoIt included." - << G4endl; + G4cout << " [Note]Secondaries from AlongStepDoIt included." << G4endl; - if((*fSecondary).size()>0){ - for(G4int lp1=0; lp1<(*fSecondary).size(); lp1++){ - G4cout << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().x() , "Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().y() , "Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().z() , "Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy() , "Energy") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime() , "Time") << " " - << G4std::setw(18) - << (*fSecondary)[lp1]->GetDefinition() - ->GetParticleName(); - G4cout << G4endl; - } - } - } + if((*fSecondary).size()>0){ + for(size_t lp1=0; lp1<(*fSecondary).size(); lp1++){ + G4cout << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x() , "Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y() , "Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z() , "Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy() , "Energy") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime() , "Time") << " " + << G4std::setw(18) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName() << G4endl; + } + } + } +} - } ///////////////////////////////////////// void G4SteppingVerbose::StepInfo() ///////////////////////////////////////// { CopyState(); - + G4int prec = G4cout.precision(3); if( verboseLevel >= 1 ){ @@ -257,96 +247,76 @@ void G4SteppingVerbose::StepInfo() G4cout << G4endl; #ifdef G4_USE_G4BESTUNIT_FOR_VERBOSE G4cout << G4std::setw( 5) << "#Step#" << " " - << G4std::setw( 8) << "X" << " " - << G4std::setw( 8) << "Y" << " " + << G4std::setw( 8) << "X" << " " << G4std::setw( 8) << "Y" << " " << G4std::setw( 8) << "Z" << " " - << G4std::setw( 9) << "KineE" << " " - << G4std::setw( 8) << "dE" << " " - << G4std::setw(12) << "StepLeng" << " " - << G4std::setw(12) << "TrackLeng" << " " - << G4std::setw(12) << "NextVolume" << " " - << G4std::setw( 8) << "ProcName" << G4endl; + << G4std::setw( 9) << "KineE" << " " << G4std::setw( 8) << "dE" << " " + << G4std::setw(12) << "StepLeng" << " " << G4std::setw(12) << "TrackLeng" << " " + << G4std::setw(12) << "NextVolume" << " " << G4std::setw( 8) << "ProcName" << G4endl; #else - G4cout << G4std::setw( 5) << "#Step#" << " " - << G4std::setw( 8) << "X(mm)" << " " - << G4std::setw( 8) << "Y(mm)" << " " + G4cout << G4std::setw( 5) << "#Step#" << " " + << G4std::setw( 8) << "X(mm)" << " " << G4std::setw( 8) << "Y(mm)" << " " << G4std::setw( 8) << "Z(mm)" << " " - << G4std::setw( 9) << "KinE(MeV)" << " " - << G4std::setw( 8) << "dE(MeV)" << " " - << G4std::setw( 8) << "StepLeng" << " " - << G4std::setw( 9) << "TrackLeng" << " " - << G4std::setw(11) << "NextVolume" << " " - << G4std::setw( 8) << "ProcName" << G4endl; + << G4std::setw( 9) << "KinE(MeV)" << " " << G4std::setw( 8) << "dE(MeV)" << " " + << G4std::setw( 8) << "StepLeng" << " " << G4std::setw( 9) << "TrackLeng" << " " + << G4std::setw(11) << "NextVolume" << " " << G4std::setw( 8) << "ProcName" << G4endl; #endif } - G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().x() , "Length") << " " - << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().y() , "Length") << " " - << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().z() , "Length") << " " - << G4std::setw( 9) << G4BestUnit(fTrack->GetKineticEnergy() , "Energy") << " " - << G4std::setw( 8) << G4BestUnit(fStep->GetTotalEnergyDeposit(), "Energy") << " " - << G4std::setw( 8) << G4BestUnit(fStep->GetStepLength() , "Length") << " " - << G4std::setw( 9) << G4BestUnit(fTrack->GetTrackLength() , "Length") << " "; + << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().x() , "Length") << " " + << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().y() , "Length") << " " + << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().z() , "Length") << " " + << G4std::setw( 9) << G4BestUnit(fTrack->GetKineticEnergy() , "Energy") << " " + << G4std::setw( 8) << G4BestUnit(fStep->GetTotalEnergyDeposit(), "Energy") << " " + << G4std::setw( 8) << G4BestUnit(fStep->GetStepLength() , "Length") << " " + << G4std::setw( 9) << G4BestUnit(fTrack->GetTrackLength() , "Length") << " "; - // if( fStepStatus != fWorldBoundary){ + // Put cut comment here if( fTrack->GetNextVolume() != 0 ) { G4cout << G4std::setw(11) << fTrack->GetNextVolume()->GetName() << " "; } else { G4cout << G4std::setw(11) << "OutOfWorld" << " "; } - if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != NULL){ - G4cout << fStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + G4cout << fStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName(); } else { G4cout << "User Limit"; } - G4cout << G4endl; - - if( verboseLevel == 2 ){ - G4int tN2ndariesTot = fN2ndariesAtRestDoIt + - fN2ndariesAlongStepDoIt + - fN2ndariesPostStepDoIt; + if( verboseLevel == 2 ) + { + G4int tN2ndariesTot = fN2ndariesAtRestDoIt + fN2ndariesAlongStepDoIt + fN2ndariesPostStepDoIt; if(tN2ndariesTot>0){ - G4cout << " :----- List of 2ndaries - " - << "#SpawnInStep=" << G4std::setw(3) << tN2ndariesTot - << "(Rest=" << G4std::setw(2) << fN2ndariesAtRestDoIt - << ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt - << ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt - << "), " - << "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).size() - << " ---------------" - << G4endl; + G4cout << " :----- List of 2ndaries - " + << "#SpawnInStep=" << G4std::setw(3) << tN2ndariesTot + << "(Rest=" << G4std::setw(2) << fN2ndariesAtRestDoIt + << ",Along=" << G4std::setw(2) << fN2ndariesAlongStepDoIt + << ",Post=" << G4std::setw(2) << fN2ndariesPostStepDoIt + << "), " + << "#SpawnTotal=" << G4std::setw(3) << (*fSecondary).size() + << " ---------------" + << G4endl; - for(G4int lp1=(*fSecondary).size()-tN2ndariesTot; - lp1<(*fSecondary).size(); lp1++){ - G4cout << " : " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().x() , "Length")<< " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().y() , "Length")<< " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().z() , "Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy() , "Energy")<< " " - << G4std::setw(18) - << (*fSecondary)[lp1]->GetDefinition() - ->GetParticleName(); - G4cout << G4endl; - } - - G4cout << " :-----------------------------" - << "----------------------------------" - << "-- EndOf2ndaries Info ---------------" - << G4endl; + for(size_t lp1=(*fSecondary).size()-tN2ndariesTot; lp1<(*fSecondary).size(); lp1++){ + G4cout << " : " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x() , "Length")<< " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y() , "Length")<< " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z() , "Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy() , "Energy")<< " " + << G4std::setw(18) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName() << G4endl; + } + G4cout << " :-----------------------------" << "----------------------------------" + << "-- EndOf2ndaries Info ---------------" << G4endl; } } - } G4cout.precision(prec); } +// Put cut comment here if( fStepStatus != fWorldBoundary){ //////////////////////////////////////////// void G4SteppingVerbose::DPSLStarted() @@ -355,9 +325,7 @@ void G4SteppingVerbose::DPSLStarted() CopyState(); if( verboseLevel > 5 ){ - G4cout << G4endl; - G4cout << " >>DefinePhysicalStepLength (List of proposed StepLengths): " - << G4endl; + G4cout << G4endl << " >>DefinePhysicalStepLength (List of proposed StepLengths): " << G4endl; } } ////////////////////////////////////////////// @@ -368,11 +336,9 @@ void G4SteppingVerbose::DPSLUserLimit() if( verboseLevel > 5 ){ G4cout << G4endl << G4endl; - G4cout << "=== Defined Physical Step Length (DPSL)" << G4endl; - G4cout << " ++ProposedStep(UserLimit) = " - << G4std::setw( 9) << physIntLength - << " : ProcName = User defined maximum allowed Step" - << G4endl; + G4cout << "=== Defined Physical Step Length (DPSL)" << G4endl; + G4cout << " ++ProposedStep(UserLimit) = " << G4std::setw( 9) << physIntLength + << " : ProcName = User defined maximum allowed Step" << G4endl; } } ///////////////////////////////////////////// @@ -382,11 +348,8 @@ void G4SteppingVerbose::DPSLPostStep() CopyState(); if( verboseLevel > 5 ){ - G4cout << " ++ProposedStep(PostStep ) = " - << G4std::setw( 9) << physIntLength - << " : ProcName = " - << fCurrentProcess->GetProcessName() - << " ("; + G4cout << " ++ProposedStep(PostStep ) = " << G4std::setw( 9) << physIntLength + << " : ProcName = " << fCurrentProcess->GetProcessName() << " ("; if(fCondition==ExclusivelyForced){ G4cout << "ExclusivelyForced)" << G4endl; } @@ -419,7 +382,7 @@ void G4SteppingVerbose::DPSLAlongStep() G4cout << "NotCandidateForSelection)" << G4endl; } else{ - G4cout << "???)" << G4endl; + G4cout << "?!?)" << G4endl; } } } @@ -437,35 +400,35 @@ G4int prec = G4cout.precision(3); #ifdef G4_USE_G4BESTUNIT_FOR_VERBOSE G4cout << G4std::setw( 5) << "Step#" << " " << G4std::setw( 8) << "X" << " " - << G4std::setw( 8) << "Y" << " " - << G4std::setw( 8) << "Z" << " " - << G4std::setw( 9) << "KineE" << " " - << G4std::setw( 8) << "dE" << " " - << G4std::setw(12) << "StepLeng" << " " - << G4std::setw(12) << "TrackLeng" << " " - << G4std::setw(12) << "NextVolume" << " " - << G4std::setw( 8) << "ProcName" << G4endl; + << G4std::setw( 8) << "Y" << " " + << G4std::setw( 8) << "Z" << " " + << G4std::setw( 9) << "KineE" << " " + << G4std::setw( 8) << "dE" << " " + << G4std::setw(12) << "StepLeng" << " " + << G4std::setw(12) << "TrackLeng" << " " + << G4std::setw(12) << "NextVolume" << " " + << G4std::setw( 8) << "ProcName" << G4endl; #else G4cout << G4std::setw( 5) << "Step#" << " " - << G4std::setw( 8) << "X(mm)" << " " - << G4std::setw( 8) << "Y(mm)" << " " - << G4std::setw( 8) << "Z(mm)" << " " - << G4std::setw( 9) << "KinE(MeV)" << " " - << G4std::setw( 8) << "dE(MeV)" << " " - << G4std::setw( 8) << "StepLeng" << " " - << G4std::setw( 9) << "TrackLeng" << " " - << G4std::setw(11) << "NextVolume" << " " - << G4std::setw( 8) << "ProcName" << G4endl; + << G4std::setw( 8) << "X(mm)" << " " + << G4std::setw( 8) << "Y(mm)" << " " + << G4std::setw( 8) << "Z(mm)" << " " + << G4std::setw( 9) << "KinE(MeV)" << " " + << G4std::setw( 8) << "dE(MeV)" << " " + << G4std::setw( 8) << "StepLeng" << " " + << G4std::setw( 9) << "TrackLeng" << " " + << G4std::setw(11) << "NextVolume" << " " + << G4std::setw( 8) << "ProcName" << G4endl; #endif G4cout << G4std::setw( 5) << fTrack->GetCurrentStepNumber() << " " - << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().x(),"Length")<< " " - << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().y(),"Length") << " " - << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().z(),"Length")<< " " - << G4std::setw( 9) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")<< " " - << G4std::setw( 8) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") << " " - << G4std::setw( 8) << G4BestUnit(fStep->GetStepLength(),"Length")<< " " - << G4std::setw( 9) << G4BestUnit(fTrack->GetTrackLength(),"Length") << " "; + << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().x(),"Length")<< " " + << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().y(),"Length") << " " + << G4std::setw( 8) << G4BestUnit(fTrack->GetPosition().z(),"Length")<< " " + << G4std::setw( 9) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")<< " " + << G4std::setw( 8) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy") << " " + << G4std::setw( 8) << G4BestUnit(fStep->GetStepLength(),"Length")<< " " + << G4std::setw( 9) << G4BestUnit(fTrack->GetTrackLength(),"Length") << " "; if(fTrack->GetNextVolume()){ G4cout << G4std::setw(11) << fTrack->GetNextVolume()->GetName() << " "; @@ -481,94 +444,86 @@ void G4SteppingVerbose::AlongStepDoItOneByOne() ////////////////////////////////////////////////////// { CopyState(); - if(verboseLevel >= 4){ - G4cout << G4endl; - G4cout << " >>AlongStepDoIt (process by process): " - << " Process Name = " - << fCurrentProcess->GetProcessName() << G4endl; + if(verboseLevel >= 4){ + G4cout << G4endl; + G4cout << " >>AlongStepDoIt (process by process): " + << " Process Name = " + << fCurrentProcess->GetProcessName() << G4endl; - ShowStep(); - G4cout << " " - << "!Note! Safety of PostStep is only valid " - << "after all DoIt invocations." - << G4endl; + ShowStep(); + G4cout << " " + << "!Note! Safety of PostStep is only valid " + << "after all DoIt invocations." + << G4endl; - VerboseParticleChange(); - G4cout << G4endl; + VerboseParticleChange(); + G4cout << G4endl; - G4cout << " ++List of secondaries generated " - << "(x,y,z,kE,t,PID):" - << " No. of secodaries = " - << fN2ndariesAlongStepDoIt << G4endl; - - if(fN2ndariesAlongStepDoIt>0){ - for(G4int lp1=(*fSecondary).size()-fN2ndariesAlongStepDoIt; - lp1<(*fSecondary).size(); lp1++){ - G4cout << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().x() , "Length")<< " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().y() , "Length")<< " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().z() , "Length")<< " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy() , "Energy")<< " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime() , "Time")<< " " - << G4std::setw(18) - << (*fSecondary)[lp1]->GetDefinition() - ->GetParticleName(); - G4cout << G4endl; - } - } - } + G4cout << " ++List of secondaries generated " + << "(x,y,z,kE,t,PID):" + << " No. of secodaries = " + << fN2ndariesAlongStepDoIt << G4endl; + if(fN2ndariesAlongStepDoIt>0){ + for(size_t lp1=(*fSecondary).size()-fN2ndariesAlongStepDoIt; lp1<(*fSecondary).size(); lp1++){ + G4cout << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x() , "Length")<< " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y() , "Length")<< " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z() , "Length")<< " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy() , "Energy")<< " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime() , "Time")<< " " + << G4std::setw(18) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName() << G4endl; + } + } + } } ////////////////////////////////////////////////////// void G4SteppingVerbose::PostStepDoItOneByOne() ////////////////////////////////////////////////////// { CopyState(); - if(fStepStatus != fPostStepDoItProc) return; + if(fStepStatus != fPostStepDoItProc) return; - if(verboseLevel >= 4){ - G4cout << G4endl; - G4cout << " >>PostStepDoIt (process by process): " - << " Process Name = " - << fCurrentProcess->GetProcessName() << G4endl; + if(verboseLevel >= 4){ + G4cout << G4endl; + G4cout << " >>PostStepDoIt (process by process): " + << " Process Name = " + << fCurrentProcess->GetProcessName() << G4endl; - ShowStep(); - G4cout << G4endl; - VerboseParticleChange(); - G4cout << G4endl; - - G4cout << " ++List of secondaries generated " - << "(x,y,z,kE,t,PID):" - << " No. of secodaries = " - << fN2ndariesPostStepDoIt << G4endl; + ShowStep(); + G4cout << G4endl; + VerboseParticleChange(); + G4cout << G4endl; - if(fN2ndariesPostStepDoIt>0){ - for(G4int lp1=(*fSecondary).size()-fN2ndariesPostStepDoIt; - lp1<(*fSecondary).size(); lp1++){ - G4cout << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().x() , "Length")<< " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(), "Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(), "Length") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(), "Energy") << " " - << G4std::setw( 9) - << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime(), "Time") << " " - << G4std::setw(18) - << (*fSecondary)[lp1]->GetDefinition() - ->GetParticleName(); - G4cout << G4endl; - } - } - } + G4cout << " ++List of secondaries generated " + << "(x,y,z,kE,t,PID):" + << " No. of secodaries = " + << fN2ndariesPostStepDoIt << G4endl; + if(fN2ndariesPostStepDoIt>0){ + for(size_t lp1=(*fSecondary).size()-fN2ndariesPostStepDoIt; lp1<(*fSecondary).size(); lp1++){ + G4cout << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().x() , "Length")<< " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(), "Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(), "Length") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(), "Energy") << " " + << G4std::setw( 9) + << G4BestUnit((*fSecondary)[lp1]->GetGlobalTime(), "Time") << " " + << G4std::setw(18) + << (*fSecondary)[lp1]->GetDefinition()->GetParticleName() << G4endl; + } + } + } } @@ -863,14 +818,12 @@ void G4SteppingVerbose::ShowStep() const if( fStep->GetPreStepPoint()->GetProcessDefinedStep() == NULL ){ G4cout << G4std::setw(20) << "Undefined"; } else { - G4cout << G4std::setw(20) << fStep->GetPreStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + G4cout << G4std::setw(20) << fStep->GetPreStepPoint()->GetProcessDefinedStep()->GetProcessName(); } if( fStep->GetPostStepPoint()->GetProcessDefinedStep() == NULL){ G4cout << G4std::setw(20) << "Undefined"; } else { - G4cout << G4std::setw(20) << fStep->GetPostStepPoint()->GetProcessDefinedStep() - ->GetProcessName(); + G4cout << G4std::setw(20) << fStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName(); } G4cout << G4endl; diff --git a/source/tracking/src/G4TrackingManager.cc b/source/tracking/src/G4TrackingManager.cc index c7270c1851..db0d77d484 100644 --- a/source/tracking/src/G4TrackingManager.cc +++ b/source/tracking/src/G4TrackingManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackingManager.cc,v 1.8.2.1 2001/06/28 19:15:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackingManager.cc,v 1.10 2001/11/07 12:39:11 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -43,8 +43,8 @@ ////////////////////////////////////// G4TrackingManager::G4TrackingManager() ////////////////////////////////////// - : verboseLevel(0),StoreTrajectory(false), - fpTrajectory(NULL), fpUserTrackingAction(NULL) + : fpUserTrackingAction(NULL), fpTrajectory(NULL), + StoreTrajectory(false), verboseLevel(0) { fpSteppingManager = new G4SteppingManager(); messenger = new G4TrackingMessenger(this); @@ -71,7 +71,7 @@ void G4TrackingManager::ProcessOneTrack(G4Track* apValueG4Track) // Clear 2ndary particle vector // GimmeSecondaries()->clearAndDestroy(); // G4std::vector::iterator itr; - G4int itr; + size_t itr; // for(itr=GimmeSecondaries()->begin();itr=GimmeSecondaries()->end();itr++){ for(itr=0;itrsize();itr++){ delete (*GimmeSecondaries())[itr]; diff --git a/source/tracking/src/G4TrackingMessenger.cc b/source/tracking/src/G4TrackingMessenger.cc index ed97664d69..3062c92485 100644 --- a/source/tracking/src/G4TrackingMessenger.cc +++ b/source/tracking/src/G4TrackingMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrackingMessenger.cc,v 1.7.2.1 2001/06/28 19:15:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrackingMessenger.cc,v 1.8 2001/07/11 10:08:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- diff --git a/source/tracking/src/G4Trajectory.cc b/source/tracking/src/G4Trajectory.cc index ddd5b328a6..5b616b8439 100644 --- a/source/tracking/src/G4Trajectory.cc +++ b/source/tracking/src/G4Trajectory.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Trajectory.cc,v 1.12.2.1 2001/06/28 19:15:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Trajectory.cc,v 1.14 2001/11/07 10:45:37 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // --------------------------------------------------------------- @@ -52,15 +52,11 @@ G4Allocator aTrajectoryAllocator; /////////////////////////////////////////// G4Trajectory::G4Trajectory() +: positionRecord(0), fTrackID(0), fParentID(0), + PDGEncoding( 0 ), PDGCharge(0.0), ParticleName("") /////////////////////////////////////////// { - G4ParticleDefinition * fpParticleDefinition = 0; - ParticleName = ""; - PDGCharge = 0; - PDGEncoding = 0; - fTrackID = 0; - fParentID = 0; - positionRecord = 0; + // Unused: G4ParticleDefinition * fpParticleDefinition = 0; } /////////////////////////////////////////// diff --git a/source/tracking/src/G4TrajectoryPoint.cc b/source/tracking/src/G4TrajectoryPoint.cc index f8954973bd..ed1bcccc42 100644 --- a/source/tracking/src/G4TrajectoryPoint.cc +++ b/source/tracking/src/G4TrajectoryPoint.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrajectoryPoint.cc,v 1.5.2.1 2001/06/28 19:15:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrajectoryPoint.cc,v 1.6 2001/07/11 10:08:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4UserSteppingAction.cc b/source/tracking/src/G4UserSteppingAction.cc index acbbb2e823..915ae87d52 100644 --- a/source/tracking/src/G4UserSteppingAction.cc +++ b/source/tracking/src/G4UserSteppingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserSteppingAction.cc,v 1.5.2.1 2001/06/28 19:15:31 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserSteppingAction.cc,v 1.6 2001/07/11 10:08:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4UserTrackingAction.cc b/source/tracking/src/G4UserTrackingAction.cc index 753fd8ffbc..494602429b 100644 --- a/source/tracking/src/G4UserTrackingAction.cc +++ b/source/tracking/src/G4UserTrackingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4UserTrackingAction.cc,v 1.5.2.1 2001/06/28 19:15:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4UserTrackingAction.cc,v 1.6 2001/07/11 10:08:43 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // --------------------------------------------------------------- diff --git a/source/tracking/src/G4VSteppingVerbose.cc b/source/tracking/src/G4VSteppingVerbose.cc index 2ea167c783..79d06617a9 100644 --- a/source/tracking/src/G4VSteppingVerbose.cc +++ b/source/tracking/src/G4VSteppingVerbose.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSteppingVerbose.cc,v 1.5.2.1 2001/06/28 19:15:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSteppingVerbose.cc,v 1.7 2001/11/07 13:15:18 radoone Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //--------------------------------------------------------------- @@ -120,10 +120,7 @@ void G4VSteppingVerbose::CopyState() fPreviousStepSize = fManager->GetfPreviousStepSize(); - fTouchable1 = fManager->GetfTouchable1(); - fTouchable2 = fManager->GetfTouchable2(); - fIsTouchable1Free = fManager->GetfIsTouchable1Free(); - fIsTouchable2Free = fManager->GetfIsTouchable2Free(); + fTouchableHandle = fManager->GetTouchableHandle(); StepControlFlag = fManager->GetStepControlFlag(); diff --git a/source/visualization/FukuiRenderer/History b/source/visualization/FukuiRenderer/History index bd9e5640e6..2a22d4ad37 100644 --- a/source/visualization/FukuiRenderer/History +++ b/source/visualization/FukuiRenderer/History @@ -1,3 +1,10 @@ +DAWN-V03-02-01 Satoshi TANAKA Sept 18, 2001 +- Maximal number of g4.prim file is changed from 99 to 100. + +DAWN-V03-02-00 Satoshi TANAKA Sept 17, 2001 +- Updation for automatic visualization implemented at + Hebden Bridge mini-workshop. + DAWN-V01-01-04 - Target = standard target in scene + relative target in view diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh index 9348ec71e2..8c038b4741 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILE.hh @@ -21,16 +21,12 @@ // ******************************************************************** // // -// $Id: G4DAWNFILE.hh,v 1.6.2.1 2001/06/28 19:15:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DAWNFILE.hh,v 1.8 2001/07/27 22:32:55 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA // DAWNFILE driver factory. -//=================// -#if defined (G4VIS_BUILD_DAWNFILE_DRIVER) || defined (G4VIS_USE_DAWNFILE) -//=================// - #ifndef G4DAWNFILE_HH #define G4DAWNFILE_HH @@ -56,4 +52,3 @@ private: }; #endif -#endif diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh index b9c5735482..4294aa4979 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILESceneHandler.hh @@ -21,17 +21,11 @@ // ******************************************************************** // // -// $Id: G4DAWNFILESceneHandler.hh,v 1.6.2.1 2001/06/28 19:15:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DAWNFILESceneHandler.hh,v 1.10 2001/09/17 07:40:32 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA - -//=================// -#ifdef G4VIS_BUILD_DAWNFILE_DRIVER -//=================// - - #ifndef G4DAWNFILE_SCENE_HANDLER_HH #define G4DAWNFILE_SCENE_HANDLER_HH @@ -63,8 +57,13 @@ public: void AddPrimitive (const G4Text&); void AddPrimitive (const G4Circle&); void AddPrimitive (const G4Square&); + + //----- explicitly invoke base class methods to avoid warnings about + //----- hiding of base class methods. void AddPrimitive (const G4Polymarker& polymarker) { G4VSceneHandler::AddPrimitive (polymarker); } + void AddPrimitive (const G4Scale& scale) + { G4VSceneHandler::AddPrimitive (scale); } virtual void BeginModeling () { G4VSceneHandler::BeginModeling ();} virtual void EndModeling () { G4VSceneHandler::EndModeling ();} @@ -88,7 +87,7 @@ public: } void AddThis ( const G4VSolid& solid ); - void ClearStore (){} + void ClearTransientStore(); // Used for triggering detector re-drawing. //----- public methods inherent to this class static G4int GetSceneCount (); @@ -234,4 +233,3 @@ private: }; #endif -#endif //G4VIS_BUILD_DAWNFILE_DRIVER diff --git a/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh b/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh index 0ff326b0f2..3d4fbee387 100644 --- a/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh +++ b/source/visualization/FukuiRenderer/include/G4DAWNFILEViewer.hh @@ -21,17 +21,12 @@ // ******************************************************************** // // -// $Id: G4DAWNFILEViewer.hh,v 1.6.2.1 2001/06/28 19:15:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DAWNFILEViewer.hh,v 1.8 2001/07/27 22:32:57 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA // DAWNFILE viewer - opens window, hard copy, etc. -//=================// -#ifdef G4VIS_BUILD_DAWNFILE_DRIVER -//=================// - - #ifndef G4DAWNFILE_VIEWER_HH #define G4DAWNFILE_VIEWER_HH @@ -72,4 +67,3 @@ private: }; #endif -#endif //G4VIS_BUILD_DAWNFILE_DRIVER diff --git a/source/visualization/FukuiRenderer/include/G4FRClientServer.hh b/source/visualization/FukuiRenderer/include/G4FRClientServer.hh index 5572a53edd..a6f22b22e7 100644 --- a/source/visualization/FukuiRenderer/include/G4FRClientServer.hh +++ b/source/visualization/FukuiRenderer/include/G4FRClientServer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FRClientServer.hh,v 1.5.2.1 2001/06/28 19:15:32 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FRClientServer.hh,v 1.6 2001/07/11 10:08:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA, Wed Jul 3 14:13:52 JST 1996 //////////////////////////////// diff --git a/source/visualization/FukuiRenderer/include/G4FRConst.hh b/source/visualization/FukuiRenderer/include/G4FRConst.hh index db3748eac1..a8074ee58e 100644 --- a/source/visualization/FukuiRenderer/include/G4FRConst.hh +++ b/source/visualization/FukuiRenderer/include/G4FRConst.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FRConst.hh,v 1.5.2.1 2001/06/28 19:15:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FRConst.hh,v 1.6 2001/07/11 10:08:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA, Tue Jul 2 15:30:49 JST 1996 /////////////////////////////////// diff --git a/source/visualization/FukuiRenderer/include/G4FRFeatures.hh b/source/visualization/FukuiRenderer/include/G4FRFeatures.hh index 7f315e71ec..3ef2c1459e 100644 --- a/source/visualization/FukuiRenderer/include/G4FRFeatures.hh +++ b/source/visualization/FukuiRenderer/include/G4FRFeatures.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FRFeatures.hh,v 1.4.2.1 2001/06/28 19:15:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FRFeatures.hh,v 1.5 2001/07/11 10:08:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #if !defined G4_FR_FEATURES_HH #define G4_FR_FEATURES_HH diff --git a/source/visualization/FukuiRenderer/src/G4FRSceneFunc.icc b/source/visualization/FukuiRenderer/include/G4FRSceneFunc.icc similarity index 81% rename from source/visualization/FukuiRenderer/src/G4FRSceneFunc.icc rename to source/visualization/FukuiRenderer/include/G4FRSceneFunc.icc index 9fb432a1f8..96bdfdf053 100644 --- a/source/visualization/FukuiRenderer/src/G4FRSceneFunc.icc +++ b/source/visualization/FukuiRenderer/include/G4FRSceneFunc.icc @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: G4FRSceneFunc.icc,v 1.13.2.1 2001/06/28 19:15:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FRSceneFunc.icc,v 1.1 2001/12/01 20:59:59 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //========== AddPrimitive() functions ==========// - //----- G4FRSCENE::AddPrimitive (polyline) -void G4FRSCENE::AddPrimitive (const G4Polyline& polyline) +//----- Add polyline +void G4FRSCENEHANDLER::AddPrimitive (const G4Polyline& polyline) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddPrimitive\n"; @@ -70,11 +70,11 @@ void G4FRSCENE::AddPrimitive (const G4Polyline& polyline) //----- send ending of polyline SendStr( FR_END_POLYLINE ); -} // G4FRSCENE::AddPrimitive (polyline) +} // G4FRSCENEHANDLER::AddPrimitive (polyline) - //----- G4FRSCENE::AddPrimitive (nurbs) -void G4FRSCENE::AddPrimitive (const G4NURBS& nurb) +//----- Add nurbes +void G4FRSCENEHANDLER::AddPrimitive (const G4NURBS& nurb) { //----- #if defined DEBUG_FR_SCENE @@ -91,8 +91,8 @@ void G4FRSCENE::AddPrimitive (const G4NURBS& nurb) - //----- G4FRSCENE::AddPrimitive ( text ) -void G4FRSCENE::AddPrimitive ( const G4Text& text ) +//----- Add text +void G4FRSCENEHANDLER::AddPrimitive ( const G4Text& text ) { //----- #if defined DEBUG_FR_SCENE @@ -161,11 +161,11 @@ void G4FRSCENE::AddPrimitive ( const G4Text& text ) //----- delete buffer delete [] buf ; -} // G4FRSCENE::AddPrimitive ( text ) +} // G4FRSCENEHANDLER::AddPrimitive ( text ) - //----- G4FRSCENE::AddPrimitive ( mark_circle ) -void G4FRSCENE::AddPrimitive ( const G4Circle& mark_circle ) +//----- Add circle +void G4FRSCENEHANDLER::AddPrimitive ( const G4Circle& mark_circle ) { //----- #if defined DEBUG_FR_SCENE @@ -204,11 +204,11 @@ void G4FRSCENE::AddPrimitive ( const G4Circle& mark_circle ) break; } -} // G4FRSCENE::AddPrimitive ( mark_circle ) +} // G4FRSCENEHANDLER::AddPrimitive ( mark_circle ) - //----- G4FRSCENE::AddPrimitive ( mark_square ) -void G4FRSCENE::AddPrimitive (const G4Square& mark_square ) +//----- Add square +void G4FRSCENEHANDLER::AddPrimitive (const G4Square& mark_square ) { //----- #if defined DEBUG_FR_SCENE @@ -247,11 +247,11 @@ void G4FRSCENE::AddPrimitive (const G4Square& mark_square ) break; } -} // G4FRSCENE::AddPrimitive ( mark_square ) +} // G4FRSCENEHANDLER::AddPrimitive ( mark_square ) - //----- G4FRSCENE::AddPrimitive (polyhedron) -void G4FRSCENE::AddPrimitive ( const G4Polyhedron& polyhedron ) +//----- Add polyhedron +void G4FRSCENEHANDLER::AddPrimitive ( const G4Polyhedron& polyhedron ) { //----- #if defined DEBUG_FR_SCENE @@ -304,18 +304,18 @@ void G4FRSCENE::AddPrimitive ( const G4Polyhedron& polyhedron ) SendStrInt4(FR_FACET, work[0], work[1], work[2], work[3] ); break; default: - G4cerr << "ERROR G4FRSCENE::AddPrimitive(G4Polyhedron)\n"; + G4cerr << "ERROR G4FRSCENEHANDLER::AddPrimitive(G4Polyhedron)\n"; } } //---------- (4) Declare ending of Brep data SendStr(FR_END_POLYHEDRON); -} // G4FRSCENE::AddPrimitive (polyhedron) +} // G4FRSCENEHANDLER::AddPrimitive (polyhedron) - //----- G4FRSCENE::SendNdiv () -void G4FRSCENE::SendNdiv ( void ) +//----- +void G4FRSCENEHANDLER::SendNdiv ( void ) { ////////////////////////////////////////////////// //#if defined DEBUG_FR_SCENE @@ -352,8 +352,8 @@ void G4FRSCENE::SendNdiv ( void ) } - //----- G4FRSCENE::FREndModeling () -void G4FRSCENE::FREndModeling () +//----- +void G4FRSCENEHANDLER::FREndModeling () { //----- #if defined DEBUG_FR_SCENE @@ -385,8 +385,9 @@ void G4FRSCENE::FREndModeling () } } - //----- G4FRSCENE::BeginPrimitives (const G4Transform3D&) -void G4FRSCENE::BeginPrimitives (const G4Transform3D& objectTransformation) + +//----- +void G4FRSCENEHANDLER::BeginPrimitives (const G4Transform3D& objectTransformation) { #if defined DEBUG_FR_SCENE G4cerr << "***** BeginPrimitives \n"; @@ -399,8 +400,9 @@ void G4FRSCENE::BeginPrimitives (const G4Transform3D& objectTransformation) } - //----- G4FRSCENE::EndPrimitives () -void G4FRSCENE::EndPrimitives () + +//----- +void G4FRSCENEHANDLER::EndPrimitives () { #if defined DEBUG_FR_SCENE G4cerr << "***** EndPrimitives \n"; @@ -408,16 +410,17 @@ void G4FRSCENE::EndPrimitives () G4VSceneHandler::EndPrimitives (); } - //----- G4FRSCENE::GetSceneCount () -G4int G4FRSCENE::GetSceneCount () + +//----- +G4int G4FRSCENEHANDLER::GetSceneCount () { return fSceneCount; } //========== AddThis() functions ==========// - //----- G4FRSCENE::AddThis( box ) -void G4FRSCENE::AddThis( const G4Box& box ) +//----- Add box +void G4FRSCENEHANDLER::AddThis( const G4Box& box ) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddThis ( box )\n"; @@ -451,12 +454,12 @@ void G4FRSCENE::AddThis( const G4Box& box ) //----- send box to Fukui Renderer SendStrDouble3( FR_BOX, dx, dy, dz ); -} // void G4FRSCENE::AddThis( const G4Box& box ) +} // void G4FRSCENEHANDLER::AddThis( const G4Box& box ) - //----- G4FRSCENE::AddThis( tubes ) +//----- Add tubes void -G4FRSCENE::AddThis( const G4Tubs& tubes ) +G4FRSCENEHANDLER::AddThis( const G4Tubs& tubes ) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddThis ( tubes )\n"; @@ -492,13 +495,13 @@ G4FRSCENE::AddThis( const G4Tubs& tubes ) //----- send tubes to Fukui Renderer SendStrDouble5( FR_TUBS, r, R, dz , sphi, dphi ); -} // void G4FRSCENE::AddThis( const G4Tubs& ) +} // void G4FRSCENEHANDLER::AddThis( const G4Tubs& ) - //----- G4FRSCENE::AddThis( cons ) +//----- Add cons void -G4FRSCENE::AddThis( const G4Cons& cons ) +G4FRSCENEHANDLER::AddThis( const G4Cons& cons ) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddThis ( cons )\n"; @@ -536,11 +539,11 @@ G4FRSCENE::AddThis( const G4Cons& cons ) //----- send cons to Fukui Renderer SendStrDouble7( FR_CONS, r1, R1, r2, R2, dz , sphi, dphi ); -}// G4FRSCENE::AddThis( cons ) +}// G4FRSCENEHANDLER::AddThis( cons ) - //----- G4FRSCENE::AddThis ( trd ) -void G4FRSCENE::AddThis ( const G4Trd& trd ) +//----- Add trd +void G4FRSCENEHANDLER::AddThis ( const G4Trd& trd ) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddThis ( trd )\n"; @@ -577,11 +580,11 @@ void G4FRSCENE::AddThis ( const G4Trd& trd ) //----- send trd to Fukui Renderer SendStrDouble5( FR_TRD, dx1, dx2, dy1, dy2, dz ); -} // G4FRSCENE::AddThis ( trd ) +} // G4FRSCENEHANDLER::AddThis ( trd ) - //----- G4FRSCENE::AddThis ( sphere ) -void G4FRSCENE::AddThis ( const G4Sphere& sphere ) +//----- Add sphere +void G4FRSCENEHANDLER::AddThis ( const G4Sphere& sphere ) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddThis ( sphere )\n"; @@ -605,11 +608,11 @@ void G4FRSCENE::AddThis ( const G4Sphere& sphere ) } //----- parameters - const G4double rmin = sphere.GetRmin(); +// const G4double rmin = sphere.GetRmin(); const G4double rmax = sphere.GetRmax(); - const G4double sphi = sphere.GetSPhi(); +// const G4double sphi = sphere.GetSPhi(); const G4double dphi = sphere.GetDPhi(); - const G4double stheta = sphere.GetSTheta(); +// const G4double stheta = sphere.GetSTheta(); const G4double dtheta = sphere.GetDTheta(); //----- send coordinates to Fukui Renderer @@ -637,11 +640,11 @@ void G4FRSCENE::AddThis ( const G4Sphere& sphere ) } -} // G4FRSCENE::AddThis ( sphere ) +} // G4FRSCENEHANDLER::AddThis ( sphere ) - //----- G4FRSCENE::AddThis ( para ) -void G4FRSCENE::AddThis (const G4Para& para) +//----- Add para +void G4FRSCENEHANDLER::AddThis (const G4Para& para) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddThis ( para )\n"; @@ -693,11 +696,11 @@ void G4FRSCENE::AddThis (const G4Para& para) //----- send data to Fukui Renderer SendStrDouble6 ( FR_PARA, dx, dy, dz, tanAlpha, tanTheta_cosPhi, tanTheta_sinPhi ); -} // G4FRSCENE::AddThis ( para ) +} // G4FRSCENEHANDLER::AddThis ( para ) - //----- G4FRSCENE::AddThis (const G4Trap& trap) -void G4FRSCENE::AddThis (const G4Trap& trap) +//----- Add trap +void G4FRSCENEHANDLER::AddThis (const G4Trap& trap) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddThis ( trap )\n"; @@ -783,12 +786,12 @@ void G4FRSCENE::AddThis (const G4Trap& trap) tl2 , alpha2 ); -} // G4FRSCENE::AddThis (const G4Trap& trap) +} // G4FRSCENEHANDLER::AddThis (const G4Trap& trap) - //----- G4FRSCENE::AddThis( torus ) +//----- Add torus void -G4FRSCENE::AddThis( const G4Torus& torus ) +G4FRSCENEHANDLER::AddThis( const G4Torus& torus ) { #if defined DEBUG_FR_SCENE G4cerr << "***** AddThis ( torus )\n"; @@ -824,12 +827,12 @@ G4FRSCENE::AddThis( const G4Torus& torus ) //----- send torus to Fukui Renderer SendStrDouble5( FR_TORUS, r, R, t , sphi, dphi ); -} // void G4FRSCENE::AddThis( const G4Torus& ) +} // void G4FRSCENEHANDLER::AddThis( const G4Torus& ) - //----- G4FRSCENE::AddThis ( const G4VSolid& ) -void G4FRSCENE::AddThis ( const G4VSolid& solid ) +//----- Add a shape which is not treated above +void G4FRSCENEHANDLER::AddThis ( const G4VSolid& solid ) { //----- skip drawing invisible primitive if( !IsVisible() ) { return ; } @@ -846,12 +849,12 @@ void G4FRSCENE::AddThis ( const G4VSolid& solid ) //----- Send a primitive G4VSceneHandler::AddThis( solid ) ; -} //G4FRSCENE::AddThis ( const G4VSolid& ) +} //G4FRSCENEHANDLER::AddThis ( const G4VSolid& ) - //----- G4FRSCENE::SendVisAttributes () +//----- G4bool -G4FRSCENE::SendVisAttributes ( const G4VisAttributes* pAV ) +G4FRSCENEHANDLER::SendVisAttributes ( const G4VisAttributes* pAV ) { // Have a look at G4VSceneHandler::GetDrawingStyle (const G4Visible&). (John) @@ -884,11 +887,11 @@ G4FRSCENE::SendVisAttributes ( const G4VisAttributes* pAV ) return status ; -} // G4FRSCENE::SendVisAttributes () +} // G4FRSCENEHANDLER::SendVisAttributes () - //----- G4FRSCENE::IsVisible() -G4bool G4FRSCENE::IsVisible() +//----- +G4bool G4FRSCENEHANDLER::IsVisible() { //----- G4bool visibility = true ; @@ -908,11 +911,11 @@ G4bool G4FRSCENE::IsVisible() //----- return visibility ; -} // G4FRSCENE::IsVisible() +} // G4FRSCENEHANDLER::IsVisible() - //----- G4FRSCENE::SendBoundingBox() -void G4FRSCENE::SendBoundingBox( void ) +//----- +void G4FRSCENEHANDLER::SendBoundingBox( void ) { #if defined DEBUG_FR_SCENE G4cerr << "***** SendBoundingBox () (/BoundingBox)" << G4endl; @@ -945,12 +948,12 @@ void G4FRSCENE::SendBoundingBox( void ) xmin, ymin, zmin, xmax, ymax, zmax ); -} // G4FRSCENE::SendBoundingBox() +} // G4FRSCENEHANDLER::SendBoundingBox() - //----- G4FRSCENE::SendTransformedCoordinates() +//----- void -G4FRSCENE::SendTransformedCoordinates() +G4FRSCENEHANDLER::SendTransformedCoordinates() { //----- coord info G4Point3D zero ( 0.0 , 0.0 , 0.0 ); @@ -976,11 +979,11 @@ G4FRSCENE::SendTransformedCoordinates() (x_unit_vec.x()), (x_unit_vec.y()), (x_unit_vec.z()) , \ (y_unit_vec.x()), (y_unit_vec.y()), (y_unit_vec.z()) ) ; -} // G4FRSCENE::SendTransformedCoordinates() +} // G4FRSCENEHANDLER::SendTransformedCoordinates() - //----- G4FRSCENE::SendPhysVolName () -void G4FRSCENE::SendPhysVolName ( void ) +//----- +void G4FRSCENEHANDLER::SendPhysVolName ( void ) { // Local G4int i ; @@ -1010,18 +1013,18 @@ void G4FRSCENE::SendPhysVolName ( void ) SendStr ( "#--------------------" ); SendStr ( name_comment ); -} // G4FRSCENE::SendPhysVolName () +} // G4FRSCENEHANDLER::SendPhysVolName () - //----- G4FRSCENE::SendStr() -void G4FRSCENE::SendStr( const char* char_string ) +//----- +void G4FRSCENEHANDLER::SendStr( const char* char_string ) { fPrimDest.SendLine( char_string ); } - //----- G4FRSCENE::SendStrInt() -void G4FRSCENE::SendStrInt( const char* char_string , +//----- +void G4FRSCENEHANDLER::SendStrInt( const char* char_string , G4int ival ) { //----- make command char_string and send @@ -1030,16 +1033,16 @@ void G4FRSCENE::SendStrInt( const char* char_string , num_char = sprintf( command, "%s %d", char_string , ival ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrInt(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrInt(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrInt() +} // G4FRSCENEHANDLER::SendStrInt() - //----- G4FRSCENE::SendStrInt3() +//----- void -G4FRSCENE::SendStrInt3( const char* char_string , +G4FRSCENEHANDLER::SendStrInt3( const char* char_string , G4int ival1 , G4int ival2 , G4int ival3 ) @@ -1052,17 +1055,17 @@ G4FRSCENE::SendStrInt3( const char* char_string , sprintf( command, "%s %d %d %d", char_string , ival1, ival2, ival3 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrInt3(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrInt3(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrInt3() +} // G4FRSCENEHANDLER::SendStrInt3() - //----- G4FRSCENE::SendStrInt3() +//----- void -G4FRSCENE::SendStrInt4( const char* char_string , +G4FRSCENEHANDLER::SendStrInt4( const char* char_string , G4int ival1 , G4int ival2 , G4int ival3 , @@ -1076,34 +1079,34 @@ G4FRSCENE::SendStrInt4( const char* char_string , sprintf( command, "%s %d %d %d %d", char_string , ival1, ival2, ival3, ival4 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrInt4(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrInt4(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrInt4() +} // G4FRSCENEHANDLER::SendStrInt4() - //----- G4FRSCENE::SendStrDouble() -void G4FRSCENE::SendStrDouble( const char* char_string , +//----- +void G4FRSCENEHANDLER::SendStrDouble( const char* char_string , G4double dval ) { //----- make command char_string and send G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg", char_string , dval ) ; + num_char = sprintf( command, "%s %g", char_string , dval ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrDouble() +} // G4FRSCENEHANDLER::SendStrDouble() - //----- G4FRSCENE::SendStrDouble2() +//----- void -G4FRSCENE::SendStrDouble2( const char* char_string , +G4FRSCENEHANDLER::SendStrDouble2( const char* char_string , G4double dval1 , G4double dval2 ) { @@ -1111,19 +1114,19 @@ G4FRSCENE::SendStrDouble2( const char* char_string , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg %lg", char_string , dval1, dval2 ) ; + num_char = sprintf( command, "%s %g %g", char_string , dval1, dval2 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble2(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble2(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrDouble2() +} // G4FRSCENEHANDLER::SendStrDouble2() - //----- G4FRSCENE::SendStrDouble3() +//----- void -G4FRSCENE::SendStrDouble3( const char* char_string , +G4FRSCENEHANDLER::SendStrDouble3( const char* char_string , G4double dval1 , G4double dval2 , G4double dval3 ) @@ -1132,19 +1135,19 @@ G4FRSCENE::SendStrDouble3( const char* char_string , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg %lg %lg", char_string , dval1, dval2, dval3 ) ; + num_char = sprintf( command, "%s %g %g %g", char_string , dval1, dval2, dval3 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble3(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble3(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrDouble3() +} // G4FRSCENEHANDLER::SendStrDouble3() - //----- G4FRSCENE::SendStrDouble4() +//----- void -G4FRSCENE::SendStrDouble4( const char* char_string , +G4FRSCENEHANDLER::SendStrDouble4( const char* char_string , G4double dval1 , G4double dval2 , G4double dval3 , @@ -1154,20 +1157,20 @@ G4FRSCENE::SendStrDouble4( const char* char_string , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg %lg %lg %lg", \ + num_char = sprintf( command, "%s %g %g %g %g", \ char_string , dval1, dval2, dval3, dval4) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble4(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble4(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrDouble4() +} // G4FRSCENEHANDLER::SendStrDouble4() - //----- G4FRSCENE::SendStrDouble5() +//----- void -G4FRSCENE::SendStrDouble5( const char* char_string , +G4FRSCENEHANDLER::SendStrDouble5( const char* char_string , G4double dval1 , G4double dval2 , G4double dval3 , @@ -1178,20 +1181,20 @@ G4FRSCENE::SendStrDouble5( const char* char_string , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg %lg %lg %lg %lg", \ + num_char = sprintf( command, "%s %g %g %g %g %g", \ char_string , dval1, dval2, dval3, dval4, dval5 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble5(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble5(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrDouble5() +} // G4FRSCENEHANDLER::SendStrDouble5() - //----- G4FRSCENE::SendStrDouble6() +//----- void -G4FRSCENE::SendStrDouble6( const char* char_string , +G4FRSCENEHANDLER::SendStrDouble6( const char* char_string , G4double dval1 , G4double dval2 , G4double dval3 , @@ -1203,20 +1206,20 @@ G4FRSCENE::SendStrDouble6( const char* char_string , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg %lg %lg %lg %lg %lg", \ + num_char = sprintf( command, "%s %g %g %g %g %g %g", \ char_string , dval1, dval2, dval3, dval4, dval5, dval6 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble6(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble6(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrDouble6() +} // G4FRSCENEHANDLER::SendStrDouble6() - //----- G4FRSCENE::SendStrDouble7() +//----- void -G4FRSCENE::SendStrDouble7( const char* char_string , +G4FRSCENEHANDLER::SendStrDouble7( const char* char_string , G4double dval1 , G4double dval2 , G4double dval3 , @@ -1229,20 +1232,20 @@ G4FRSCENE::SendStrDouble7( const char* char_string , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg %lg %lg %lg %lg %lg %lg", \ + num_char = sprintf( command, "%s %g %g %g %g %g %g %g", \ char_string , dval1, dval2, dval3, dval4, dval5, dval6, dval7 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble7(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble7(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrDouble7() +} // G4FRSCENEHANDLER::SendStrDouble7() - //----- G4FRSCENE::SendStrDouble11() +//----- void -G4FRSCENE::SendStrDouble11( const char* char_string , +G4FRSCENEHANDLER::SendStrDouble11( const char* char_string , G4double dval1 , G4double dval2 , G4double dval3 , @@ -1259,22 +1262,21 @@ G4FRSCENE::SendStrDouble11( const char* char_string , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg", \ + num_char = sprintf( command, "%s %g %g %g %g %g %g %g %g %g %g %g", \ char_string , dval1, dval2, dval3, dval4, dval5, \ dval6, dval7, dval8, dval9, dval10, dval11 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble11(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble11(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrDouble11() +} // G4FRSCENEHANDLER::SendStrDouble11() - - //----- G4FRSCENE::SendIntDouble3() +//----- void -G4FRSCENE::SendIntDouble3( G4int ival , +G4FRSCENEHANDLER::SendIntDouble3( G4int ival , G4double dval1 , G4double dval2 , G4double dval3 ) @@ -1283,18 +1285,18 @@ G4FRSCENE::SendIntDouble3( G4int ival , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%d %lg %lg %lg", \ + num_char = sprintf( command, "%d %g %g %g", \ ival , dval1, dval2, dval3 ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendIntDouble3(),1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendIntDouble3(),1\n" ; } SendStr( command ); delete [] command ; } - //----- G4FRSCENE::SendInt3Str() +//----- void -G4FRSCENE::SendInt3Str( G4int ival1 , +G4FRSCENEHANDLER::SendInt3Str( G4int ival1 , G4int ival2 , G4int ival3 , const char* char_string ) @@ -1306,15 +1308,15 @@ G4FRSCENE::SendInt3Str( G4int ival1 , num_char = sprintf( command, "%d %d %d %s", \ ival1, ival2, ival3, char_string ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendInt3Str(),1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendInt3Str(),1\n" ; } SendStr( command ); delete [] command ; } - //----- G4FRSCENE::SendInt4Str() +//----- void -G4FRSCENE::SendInt4Str( G4int ival1 , +G4FRSCENEHANDLER::SendInt4Str( G4int ival1 , G4int ival2 , G4int ival3 , G4int ival4 , @@ -1327,15 +1329,15 @@ G4FRSCENE::SendInt4Str( G4int ival1 , num_char = sprintf( command, "%d %d %d %d %s", \ ival1, ival2, ival3, ival4, char_string ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendInt4Str(),1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendInt4Str(),1\n" ; } SendStr( command ); delete [] command ; } - //----- G4FRSCENE::SendStrDouble6Str() +//----- void -G4FRSCENE::SendStrDouble6Str( const char* char_string1 , +G4FRSCENEHANDLER::SendStrDouble6Str( const char* char_string1 , G4double dval1 , G4double dval2 , G4double dval3 , @@ -1348,11 +1350,11 @@ G4FRSCENE::SendStrDouble6Str( const char* char_string1 , G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%s %lg %lg %lg %lg %lg %lg %s", \ + num_char = sprintf( command, "%s %g %g %g %g %g %g %s", \ char_string1, dval1, dval2 , dval3, dval4, \ dval5 , dval6, char_string2 ); if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrDouble6Str(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrDouble6Str(), 1\n" ; } SendStr( command ); delete [] command ; @@ -1360,9 +1362,8 @@ G4FRSCENE::SendStrDouble6Str( const char* char_string1 , } - - //----- G4FRSCENE::SendStrInt() -void G4FRSCENE::SendInt( G4int val ) +//----- +void G4FRSCENEHANDLER::SendInt( G4int val ) { //----- make command char_string and send G4int num_char ; @@ -1370,24 +1371,39 @@ void G4FRSCENE::SendInt( G4int val ) num_char = sprintf( command, "%d", val ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrInt(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrInt(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrInt() +} // G4FRSCENEHANDLER::SendStrInt() - //----- G4FRSCENE::SendStrInt() -void G4FRSCENE::SendDouble( G4double val ) +//----- +void G4FRSCENEHANDLER::SendDouble( G4double val ) { //----- make command char_string and send G4int num_char ; char* command = new char [ COMMAND_BUF_SIZE ]; - num_char = sprintf( command, "%lg", val ) ; + num_char = sprintf( command, "%g", val ) ; if( num_char < 0 ) { - G4cerr << "ERROR G4FRSCENE::SendStrInt(), 1\n" ; + G4cerr << "ERROR G4FRSCENEHANDLER::SendStrInt(), 1\n" ; } SendStr( command ); delete [] command ; -} // G4FRSCENE::SendStrInt() +} // G4FRSCENEHANDLER::SendStrInt() + +//----- +void G4FRSCENEHANDLER::ClearTransientStore() +{ + G4VSceneHandler::ClearTransientStore (); + // This is typically called after an update and before drawing hits + // of the next event. To simulate the clearing of "transients" + // (hits, etc.) the detector is redrawn... + if (fpViewer) { + fpViewer -> SetView (); + fpViewer -> ClearView (); + fpViewer -> DrawView (); + } +} + diff --git a/source/visualization/FukuiRenderer/include/G4FRofstream.hh b/source/visualization/FukuiRenderer/include/G4FRofstream.hh index 33f8452b8f..dc06e44448 100644 --- a/source/visualization/FukuiRenderer/include/G4FRofstream.hh +++ b/source/visualization/FukuiRenderer/include/G4FRofstream.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FRofstream.hh,v 1.4.2.1 2001/06/28 19:15:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FRofstream.hh,v 1.5 2001/07/11 10:08:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include"g4std/fstream" diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh b/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh index fe1464caa7..591fc77540 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRenderer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FukuiRenderer.hh,v 1.6.2.1 2001/06/28 19:15:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FukuiRenderer.hh,v 1.7 2001/07/11 10:08:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Satoshi TANAKA diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh b/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh index f56dff7fdf..623dffd8b7 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRendererSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FukuiRendererSceneHandler.hh,v 1.6.2.1 2001/06/28 19:15:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FukuiRendererSceneHandler.hh,v 1.9 2001/09/17 07:40:32 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Satoshi TANAKA, Fri Jun 28 11:19:19 JST 1996 @@ -62,8 +62,13 @@ public: void AddPrimitive (const G4Text&); void AddPrimitive (const G4Circle&); void AddPrimitive (const G4Square&); + + //----- explicitly invoke base class methods to avoid warnings about + //----- hiding of base class methods. void AddPrimitive (const G4Polymarker& polymarker) { G4VSceneHandler::AddPrimitive (polymarker); } + void AddPrimitive (const G4Scale& scale) + { G4VSceneHandler::AddPrimitive (scale); } virtual void BeginModeling () { G4VSceneHandler::BeginModeling ();} virtual void EndModeling () { G4VSceneHandler::EndModeling ();} @@ -87,7 +92,7 @@ public: } void AddThis ( const G4VSolid& solid ); - void ClearStore (){} + void ClearTransientStore(); // Used for triggering detector re-drawing. //----- methods inherent to this class static G4int GetSceneCount (); diff --git a/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh b/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh index ab6ad0a636..f4c0c4fb28 100644 --- a/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh +++ b/source/visualization/FukuiRenderer/include/G4FukuiRendererViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FukuiRendererViewer.hh,v 1.6.2.1 2001/06/28 19:15:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FukuiRendererViewer.hh,v 1.7 2001/07/11 10:08:44 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Satoshi TANAKA, Fri Jun 28 12:10:14 JST 1996 diff --git a/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc b/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc index a99ddb3d9d..0de9bbd4b5 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILE.cc @@ -21,15 +21,12 @@ // ******************************************************************** // // -// $Id: G4DAWNFILE.cc,v 1.7.2.1 2001/06/28 19:15:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DAWNFILE.cc,v 1.9 2001/07/27 22:32:59 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA // DAWNFILE factory. -//=================// -#ifdef G4VIS_BUILD_DAWNFILE_DRIVER -//=================// //#define DEBUG_FR_SYSTEM @@ -77,6 +74,3 @@ G4VViewer* G4DAWNFILE::CreateViewer (G4VSceneHandler& scene, const G4String& nam new G4DAWNFILEViewer ((G4DAWNFILESceneHandler&) scene, name); return pView; } - - -#endif // G4VIS_BUILD_DAWNFILE_DRIVER diff --git a/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc b/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc index 00d3370008..bfac1d77d3 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILESceneHandler.cc @@ -21,18 +21,13 @@ // ******************************************************************** // // -// $Id: G4DAWNFILESceneHandler.cc,v 1.6.2.1 2001/06/28 19:15:33 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DAWNFILESceneHandler.cc,v 1.11 2001/12/01 20:52:06 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA // DAWNFILE scene. -//=================// -#ifdef G4VIS_BUILD_DAWNFILE_DRIVER -//=================// - - #define __G_ANSI_C__ // #define DEBUG_FR_SCENE @@ -76,7 +71,7 @@ const char DEFAULT_G4PRIM_FILE_NAME[] = "g4_00.prim"; // const int FR_MAX_FILE_NUM = 10 ; // const int FR_MAX_FILE_NUM = 15 ; // const int FR_MAX_FILE_NUM = 20 ; - const int FR_MAX_FILE_NUM = 99 ; + const int FR_MAX_FILE_NUM = 100 ; /////////////////////////// @@ -86,8 +81,8 @@ const char DEFAULT_G4PRIM_FILE_NAME[] = "g4_00.prim"; //----- G4DAWNFILESceneHandler, constructor G4DAWNFILESceneHandler::G4DAWNFILESceneHandler (G4DAWNFILE& system, const G4String& name): -fSystem (system) , G4VSceneHandler (system, fSceneIdCount++, name) , +fSystem (system) , fPrimDest () , FRflag_in_modeling (false) , flag_saving_g4_prim (false) , @@ -274,9 +269,9 @@ void G4DAWNFILESceneHandler::FRBeginModeling( void ) // Common to DAWN and DAWNFILE drivers // ///////////////////////////////////////// -#define G4FRSCENE G4DAWNFILESceneHandler +#define G4FRSCENEHANDLER G4DAWNFILESceneHandler #include "G4FRSceneFunc.icc" -#undef G4FRSCENE +#undef G4FRSCENEHANDLER ////////////////////// // static variables // @@ -287,5 +282,3 @@ G4int G4DAWNFILESceneHandler::fSceneIdCount = 0; G4int G4DAWNFILESceneHandler::fSceneCount = 0; // num of existing instances - -#endif // G4VIS_BUILD_DAWNFILE_DRIVER diff --git a/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc b/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc index d1d8ae4d7a..13400b0e48 100644 --- a/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc +++ b/source/visualization/FukuiRenderer/src/G4DAWNFILEViewer.cc @@ -21,17 +21,13 @@ // ******************************************************************** // // -// $Id: G4DAWNFILEViewer.cc,v 1.10.2.1 2001/06/28 19:15:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4DAWNFILEViewer.cc,v 1.13 2001/07/27 22:33:01 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA // DAWNFILE view - opens window, hard copy, etc. -//=================// -#ifdef G4VIS_BUILD_DAWNFILE_DRIVER -//=================// - #define __G_ANSI_C__ #define G4DAWNFILE_STRUCTURE_PRIORITY 1. @@ -347,7 +343,7 @@ void G4DAWNFILEViewer::SendViewParameters () } gui_out << GetPSViewer() << G4endl; // PS viewer - gui_out << 0 << G4endl ; // Do not add showpage + gui_out << 1 << G4endl ; // Do not add showpage gui_out << 0 << G4endl ; // Non-append mode gui_out.close(); @@ -355,7 +351,3 @@ void G4DAWNFILEViewer::SendViewParameters () } - - -#endif // G4VIS_BUILD_DAWNFILE_DRIVER - diff --git a/source/visualization/FukuiRenderer/src/G4FRClientServer.cc b/source/visualization/FukuiRenderer/src/G4FRClientServer.cc index 8e8d89c9ac..9383fb3456 100644 --- a/source/visualization/FukuiRenderer/src/G4FRClientServer.cc +++ b/source/visualization/FukuiRenderer/src/G4FRClientServer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FRClientServer.cc,v 1.4.2.1 2001/06/28 19:15:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FRClientServer.cc,v 1.5 2001/07/11 10:08:45 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Satoshi TANAKA, Wed Jul 3 14:14:29 JST 1996 //////////////////////////////// diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc b/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc index 60335b9412..69bf4a04cd 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRenderer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FukuiRenderer.cc,v 1.6.2.1 2001/06/28 19:15:34 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FukuiRenderer.cc,v 1.7 2001/07/11 10:08:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Satoshi TANAKA diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc b/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc index 2e1a83368b..8bf77a87de 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRendererSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FukuiRendererSceneHandler.cc,v 1.5.2.1 2001/06/28 19:15:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FukuiRendererSceneHandler.cc,v 1.8 2001/12/01 20:52:06 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Satoshi TANAKA, Fri Jun 28 11:34:24 JST 1996 @@ -79,8 +79,8 @@ const char FR_ENV_MULTI_WINDOW[] = "G4DAWN_MULTI_WINDOW" ; //----- G4FukuiRendererSceneHandler, constructor G4FukuiRendererSceneHandler::G4FukuiRendererSceneHandler (G4FukuiRenderer& system, const G4String& name): -fSystem (system) , G4VSceneHandler (system, fSceneIdCount++, name) , +fSystem (system) , fPrimDest (system.GetPrimDest() ) , FRflag_in_modeling (false) , flag_saving_g4_prim (false) , @@ -192,9 +192,9 @@ void G4FukuiRendererSceneHandler::FRBeginModeling( void ) // Common to DAWN and DAWNFILE drivers // ///////////////////////////////////////// -#define G4FRSCENE G4FukuiRendererSceneHandler +#define G4FRSCENEHANDLER G4FukuiRendererSceneHandler #include "G4FRSceneFunc.icc" -#undef G4FRSCENE +#undef G4FRSCENEHANDLER ////////////////////// // static variables // diff --git a/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc b/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc index c29ce9d4b4..38fdbbe175 100644 --- a/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc +++ b/source/visualization/FukuiRenderer/src/G4FukuiRendererViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FukuiRendererViewer.cc,v 1.6.2.1 2001/06/28 19:15:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FukuiRendererViewer.cc,v 1.7 2001/07/11 10:08:46 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Satoshi TANAKA, Fri Jun 28 12:09:11 JST 1996 diff --git a/source/visualization/GNUmakefile b/source/visualization/GNUmakefile index e41d20bb16..c97804d85b 100644 --- a/source/visualization/GNUmakefile +++ b/source/visualization/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.8 2001/04/10 15:11:05 johna Exp $ +# $Id: GNUmakefile,v 1.13 2001/11/06 12:50:20 johna Exp $ # ----------------------------------------------------------------------- # GNUmakefile for visualization and modeling. John Allison, 5/7/95. # Modeling is always made. Others by environment. John Allison 4/7/98. @@ -22,28 +22,22 @@ G4TMPDIR := $(G4TMP)/$(G4SYSTEM)/$(name) SUBDIRS := modeling SUBLIBS := G4modeling +# Libraries which can be used without external packages or libraries... ifdef G4VIS_BUILD SUBDIRS += management SUBLIBS += G4vis_management -endif - -# For DAWN and DAWNFILE drivers -ifdef G4VIS_BUILD_DAWN_DRIVER SUBDIRS += FukuiRenderer SUBLIBS += G4FR -endif -ifdef G4VIS_BUILD_DAWNFILE_DRIVER - ifndef G4VIS_BUILD_DAWN_DRIVER - SUBDIRS += FukuiRenderer - SUBLIBS += G4FR - endif -endif -# End of DAWN and DAWNFILE drivers - -ifdef G4VIS_BUILD_RAYTRACER_DRIVER + SUBDIRS += HepRep + SUBLIBS += G4visHepRep SUBDIRS += RayTracer SUBLIBS += G4RayTracer -endif + SUBDIRS += VRML + SUBLIBS += G4VRML + SUBDIRS += Tree + SUBLIBS += G4Tree + SUBDIRS += XXX + SUBLIBS += G4visXXX ifdef G4VIS_BUILD_OPACS_DRIVER SUBDIRS += OPACS @@ -57,24 +51,7 @@ ifdef G4VIS_BUILD_OI_DRIVER SUBDIRS += OpenInventor SUBLIBS += G4OpenInventor endif - -# For VRML and VRMLFILE drivers -ifdef G4VIS_BUILD_VRML_DRIVER - SUBDIRS += VRML - SUBLIBS += G4VRML -endif -ifdef G4VIS_BUILD_VRMLFILE_DRIVER - ifndef G4VIS_BUILD_VRML_DRIVER - SUBDIRS += VRML - SUBLIBS += G4VRML - endif -endif -# End of VRML and VRMLFILE drivers - -ifdef G4VIS_BUILD_ASCIITREE_DRIVER - SUBDIRS += Tree - SUBLIBS += G4Tree -endif +endif #G4VIS_BUILD .PHONY: granular glob global clean diff --git a/source/visualization/HepRep/GNUmakefile b/source/visualization/HepRep/GNUmakefile new file mode 100644 index 0000000000..3b1b6b4a3f --- /dev/null +++ b/source/visualization/HepRep/GNUmakefile @@ -0,0 +1,25 @@ +# $Id: GNUmakefile,v 1.3 2001/11/08 21:50:51 perl Exp $ + +name := G4visHepRep + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk +include $(G4INSTALL)/config/G4VIS_BUILD.gmk +include $(G4INSTALL)/config/interactivity.gmk + +CPPFLAGS += -I$(G4BASE)/visualization/management/include +CPPFLAGS += -I$(G4BASE)/visualization/modeling/include +CPPFLAGS += -I$(G4BASE)/global/management/include +CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include +CPPFLAGS += -I$(G4BASE)/graphics_reps/include +CPPFLAGS += -I$(G4BASE)/intercoms/include +CPPFLAGS += -I$(G4BASE)/geometry/management/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/volumes/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include +CPPFLAGS += -I$(G4BASE)/materials/include + +include $(G4INSTALL)/config/common.gmk diff --git a/source/visualization/HepRep/History b/source/visualization/HepRep/History new file mode 100644 index 0000000000..ef7f09818b --- /dev/null +++ b/source/visualization/HepRep/History @@ -0,0 +1,53 @@ +$Id: History,v 1.9 2001/11/19 15:08:37 johna Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Category History file + --------------------- +This file should be used by G4 developers and category coordinators +to briefly summarize all major modifications introduced in the code +and keep track of all category-tags. +It DOES NOT substitute the CVS log-message one should put at every +committal in the CVS repository ! + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +History file for visualization/HepRep sub-category +--------------------------------------------------------------------------- + +19th November 2001 John Allison (vis-V03-02-19) +- Added G4HEPREPFILEDEBUG to control debug code. +- Changed to "g4std/fstream". +- Changed cout to G4cout, endl to G4endl. +- Changed G4HepRep.xml to G4HepRepFile.xml in hepRepXMLWriter->open("...""); + +8th November 2001 Joseph Perl +- HepRep Type names now come from Physical Volume names. +- Added many HepRep Attributes for other volume properties. + +6th November 2001 John Allison (HepRep-pure-C++-1st-version) +- Removed HepRep files G4HepRep.hh, G4HepRepSceneHandler.hh, + G4HepRepViewer.hh, G4HepRep.cc, G4HepRepSceneHandler.cc and + G4HepRepViewer.cc (recoverable with tag HepRep-Java-version). +- Added HepRepFile from version of 27th September 2001 Joseph Perl. + First pure C++ version (eliminates need for Java jni or freehep). + Named as HepRepFile rather than HepRep. +- GNUmakefile: removed CPPFLAGS += -DHEPREP and CPPFLAGS += -DDEBUG. +- README: completely re-written for HepRepFile. + +6th November 2001 John Allison (HepRep-Java-version) +- Tagged before major revision. + +4th September 2001 Joseph Perl +- minor improvements to README. + +26th August 2001 Joseph Perl +- handle PolyHedron.getNoFacets()==0 and improve README. + +24th August 2001 Joseph Perl (vis-V03-02-13-00) +- First version of HepRep Graphics Driver diff --git a/source/visualization/HepRep/README b/source/visualization/HepRep/README new file mode 100644 index 0000000000..0f68f7a3e7 --- /dev/null +++ b/source/visualization/HepRep/README @@ -0,0 +1,20 @@ +This G4 Graphics Driver creates a HepRep File suitable for viewing +by the WIRED Event Display client. It requires no external packages. + +The HepRep graphics format is further described at +http://heprep.freehep.org +The version of HepRep produced by this driver is HepRep Version 1. + +Each call to /vis/viewer/update +rewrites the file G4HepRep.xml. + +View the file using the WIRED Event Display, available from: +http://www.slac.stanford.edu/BFROOT/www/Computing/Graphics/Wired/ + +WIRED can read xml files in zipped format as well as unzipped, +so you can save space by applying gzip to the xml file. +This will reduce the file to about five percent of its original size. + +Joseph Perl +9 November 2001 + diff --git a/source/global/STLInterface/g4rw/rw2stl_algo.h b/source/visualization/HepRep/include/G4HepRepFile.hh similarity index 71% rename from source/global/STLInterface/g4rw/rw2stl_algo.h rename to source/visualization/HepRep/include/G4HepRepFile.hh index a9fefc1730..1fb91b12fe 100644 --- a/source/global/STLInterface/g4rw/rw2stl_algo.h +++ b/source/visualization/HepRep/include/G4HepRepFile.hh @@ -21,35 +21,29 @@ // ******************************************************************** // // -// $Id: rw2stl_algo.h,v 1.4.8.1 2001/06/28 19:09:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HepRepFile.hh,v 1.1 2001/11/06 11:48:04 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//--------------------------------------------------------------- -// GEANT 4 class header file -// -// G4RW2STL_LessPtr -// -// STL wrapper utility class G4RW2STL_LessPtr. -//--------------------------------------------------------------- +// John Allison 5th April 2001 +// A graphics system to dump geometry hierarchy. -#ifndef rw2stl_algo_h -#define rw2stl_algo_h +#ifndef G4HepRepFile_HH +#define G4HepRepFile_HH -#include "g4rw/defs.h" +#include "G4VGraphicsSystem.hh" -template -class G4RW2STL_LessPtr -{ +// HepRep +#include "HepRepXMLWriter.hh" + +class G4HepRepFile: public G4VGraphicsSystem { public: + G4HepRepFile(); + virtual ~G4HepRepFile(); + G4VSceneHandler* CreateSceneHandler(const G4String& name = ""); + G4VViewer* CreateViewer (G4VSceneHandler&, const G4String& name = ""); - G4bool operator()(const T* a, const T* b) const - { - if(a==0) return false; - if(b==0) return true; - return *a<*b; - } - + HepRepXMLWriter *GetHepRepXMLWriter(); }; #endif diff --git a/source/visualization/HepRep/include/G4HepRepFileSceneHandler.hh b/source/visualization/HepRep/include/G4HepRepFileSceneHandler.hh new file mode 100644 index 0000000000..7a4e25633d --- /dev/null +++ b/source/visualization/HepRep/include/G4HepRepFileSceneHandler.hh @@ -0,0 +1,134 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4HepRepFileSceneHandler.hh,v 1.4 2001/11/21 16:48:58 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 5th April 2001 +// A base class for a scene handler to dump geometry hierarchy. + +#ifndef G4HepRepFileSCENEHANDLER_HH +#define G4HepRepFileSCENEHANDLER_HH + +// #define G4HEPREPFILEDEBUG // Comment this out to suppress debug code. + +#include "G4VSceneHandler.hh" +#include "G4Box.hh" +#include "G4Cons.hh" +#include "G4Tubs.hh" +#include "G4Trd.hh" +#include "G4Trap.hh" +#include "G4Sphere.hh" +#include "G4Para.hh" +#include "G4Torus.hh" +#include "G4Polycone.hh" +#include "G4Polyhedra.hh" + +// HepRep +#include "HepRepXMLWriter.hh" + +class G4VPhysicalVolume; +class G4LogicalVolume; +class G4ModelingParameters; + +class G4HepRepFileSceneHandler: public G4VSceneHandler { + +public: + G4HepRepFileSceneHandler(G4VGraphicsSystem& system, + const G4String& name); + virtual ~G4HepRepFileSceneHandler(); + + //////////////////////////////////////////////////////////////// + // No need to implement these, but if you do... + void AddThis(const G4Box&); + void AddThis(const G4Cons&); + void AddThis(const G4Tubs&); + void AddThis(const G4Trd&); + void AddThis(const G4Trap&); + void AddThis(const G4Sphere&); + void AddThis(const G4Para&); + void AddThis(const G4Torus&); + void AddThis(const G4Polycone&); + void AddThis(const G4Polyhedra&); + void AddThis(const G4VSolid&); + // void PreAddThis(const G4Transform3D& objectTransformation, + // const G4VisAttributes&); + // void PostAddThis(); + + // Allows G4PhysicalVolumeModel to provide extra information... + void EstablishSpecials(G4PhysicalVolumeModel&); + + //////////////////////////////////////////////////////////////// + // Required implementation of pure virtual functions... + + void AddPrimitive(const G4Polyline&); + void AddPrimitive(const G4Text&); + void AddPrimitive(const G4Circle&); + void AddPrimitive(const G4Square&); + void AddPrimitive(const G4Polyhedron&); + void AddPrimitive(const G4NURBS&); + + //////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////// + // Further optional AddPrimtive methods. Explicitly invoke base + // class methods if not otherwise defined to avoid warnings about + // hiding of base class methods. + void AddPrimitive(const G4Polymarker&); + void AddPrimitive(const G4Scale& scale) { + G4VSceneHandler::AddPrimitive (scale); + } + + //////////////////////////////////////////////////////////////// + // Further optional virtual functions... + + // void BeginPrimitives(const G4Transform3D& objectTransformation); + // void EndPrimitives(); + + // void BeginModeling(); + // void EndModeling(); + + //////////////////////////////////////////////////////////////// + // Required... + + static G4int GetSceneCount() {return fSceneCount;} + + HepRepXMLWriter *GetHepRepXMLWriter(); + +protected: + static G4int fSceneIdCount; // Counter for HepRep scene handlers. + static G4int fSceneCount; // No. of extanct scene handlers. + G4int fCurrentDepth; // Current depth of geom. hierarchy. + G4VPhysicalVolume* fpCurrentPV; // Current physical volume. + G4LogicalVolume* fpCurrentLV; // Current logical volume. + +private: + HepRepXMLWriter *hepRepXMLWriter; + +#ifdef G4HEPREPFILEDEBUG + void PrintThings(); +#endif + +}; + +#endif diff --git a/source/visualization/management/include/G4VisCommandsPrint.hh b/source/visualization/HepRep/include/G4HepRepFileViewer.hh similarity index 68% rename from source/visualization/management/include/G4VisCommandsPrint.hh rename to source/visualization/HepRep/include/G4HepRepFileViewer.hh index bfedb3965a..26735a1b49 100644 --- a/source/visualization/management/include/G4VisCommandsPrint.hh +++ b/source/visualization/HepRep/include/G4HepRepFileViewer.hh @@ -21,30 +21,33 @@ // ******************************************************************** // // -// $Id: G4VisCommandsPrint.hh,v 1.3.4.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HepRepFileViewer.hh,v 1.2 2001/11/19 15:06:52 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// /vis~/print/ commands -// John Allison 7th September 1997 +// John Allison 5th April 2001 +// A base class for a dummy viewer to dump geometry hierarchy. -#ifndef G4VISCOMMANDSPRINT_HH -#define G4VISCOMMANDSPRINT_HH +#ifndef G4HepRepFileVIEWER_HH +#define G4HepRepFileVIEWER_HH -#include "globals.hh" +// #define G4HEPREPFILEDEBUG // Comment this out to suppress debug code. -//////////////////////////////////////////////////// /vis~/print/... //// -//vis \hline -//vis /vis~/print/ && -//vis ...menu of printing possibilities, also controlled by ``Verbose'' -//vis parameter. \\% -class G4VisCommandPrint { +#include "G4VViewer.hh" + +#include "HepRepXMLWriter.hh" + +class G4HepRepFileViewer: public G4VViewer { public: - G4String GetCommandName () const {return "/vis~/print/";} - G4String GetGuidance () const { - return "...menu of printing possibilities, also controlled by \"Verbose\" " - "parameter."; - } + G4HepRepFileViewer(G4VSceneHandler&,const G4String& name); + virtual ~G4HepRepFileViewer(); + void SetView(); + void ClearView(); + void DrawView(); + void ShowView(); + +private: + HepRepXMLWriter *hepRepXMLWriter; }; #endif diff --git a/source/global/STLInterface/g4rw/tpvector.h b/source/visualization/HepRep/include/HepRepXMLWriter.hh similarity index 53% rename from source/global/STLInterface/g4rw/tpvector.h rename to source/visualization/HepRep/include/HepRepXMLWriter.hh index 9bf4b93857..ad4277f1b7 100644 --- a/source/global/STLInterface/g4rw/tpvector.h +++ b/source/visualization/HepRep/include/HepRepXMLWriter.hh @@ -20,66 +20,77 @@ // * statement, and all its terms. * // ******************************************************************** // +//-------------------------------------------------------------------------- +// File and Version Information: +// $Id: HepRepXMLWriter.hh,v 1.4 2001/12/13 12:04:25 gunter Exp $ // -// $Id: tpvector.h,v 1.9.4.1 2001/06/28 19:09:58 gunter Exp $ -// GEANT4 tag $Name: $ +// Description: +// Create a HepRep XML File (HepRep version 1). // -// -//--------------------------------------------------------------- -// GEANT 4 class header file +// Environment: +// Software developed for the general High Energy Physics community. // -// G4RWTPtrVector +// Author : +// J. Perl Original Author // -// Class description: -// -// STL wrapper class for Pointer arrays. It implements -// Rogue Wave RWTPtrVector signature but intrinsically -// using STL vector. +// Copyright Information: +// Copyright (C) 2001 Stanford Linear Accelerator Center +//------------------------------------------------------------------------ +#ifndef HepRepXMLWriter_hh +#define HepRepXMLWriter_hh -//--------------------------------------------------------------- +#include "globals.hh" +#include "g4std/fstream" -#ifndef __tpvector -#define __tpvector - -#include "g4std/vector" -#include "g4rw/defs.h" - -template -class G4RWTPtrVector : public G4std::vector +class HepRepXMLWriter { - - typedef G4std::vector std_pvector; - typedef typename std_pvector::iterator iterator; - typedef typename std_pvector::const_iterator const_iterator; - public: + HepRepXMLWriter(); - G4RWTPtrVector (); - G4RWTPtrVector (size_t); - G4RWTPtrVector (size_t, T* const &); - G4RWTPtrVector (const G4RWTPtrVector&); - virtual ~G4RWTPtrVector(); + void addType(const char* name); + void addInstance(); + void addPrimitive(); + void addPoint(double x, double y, double z); - G4RWTPtrVector& operator = (T*); + void addAttDef(const char* name, + const char* desc, + const char* type, + const char* extra); + + // Four methods to fill attValues + void addAttValue(const char* name, + const char* value); + + void addAttValue(const char* name, + double value); + + void addAttValue(const char* name, + int value); + + void addAttValue(const char* name, + bool value); + + void addAttValue(const char* name, + double value1, + double value2, + double value3); + + void open(const char* filespec); + void close(); - inline T* operator () (size_t) const; - inline T*& operator () (size_t); - - inline T* operator [] (size_t) const; - inline T*& operator [] (size_t); - inline T* const * data() const; - inline size_t length(); - inline void reshape(size_t); - void resize(size_t); - private: + G4std::ofstream fout; - size_t rwsize; + bool inType; + bool inInstance; + bool inPrimitive; + bool inPoint; + void endType(); + void endInstance(); + void endPrimitive(); + void endPoint(); + + void indent(); }; - -// Include actual implementations of templated class methods. - -#include "g4rw/tpvector.icc" - #endif diff --git a/source/visualization/HepRep/src/G4HepRepFile.cc b/source/visualization/HepRep/src/G4HepRepFile.cc new file mode 100644 index 0000000000..03d9ec3432 --- /dev/null +++ b/source/visualization/HepRep/src/G4HepRepFile.cc @@ -0,0 +1,83 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4HepRepFile.cc,v 1.1 2001/11/06 11:48:07 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// Joseph Perl 1 October 2001 +// A graphics system to dump geometry hierarchy to the +// HepRep graphics format (HepRep version 1). + +//HepRep +#include "HepRepXMLWriter.hh" + +#include "G4HepRepFile.hh" +#include "G4HepRepFileSceneHandler.hh" +#include "G4HepRepFileViewer.hh" + +static HepRepXMLWriter* hepRepXMLWriter; + +G4HepRepFile::G4HepRepFile(): + G4VGraphicsSystem("G4HepRepFile", + "HepRepFile", + "A template graphics driver", + G4VGraphicsSystem::noFunctionality) { + hepRepXMLWriter = new HepRepXMLWriter(); +} + +G4HepRepFile::~G4HepRepFile() {} + +G4VSceneHandler* G4HepRepFile::CreateSceneHandler(const G4String& name) { + G4VSceneHandler* pScene = new G4HepRepFileSceneHandler(*this, name); + G4cout << G4HepRepFileSceneHandler::GetSceneCount() + << ' ' << fName << " scene handlers extanct." << G4endl; + return pScene; +} + +G4VViewer* G4HepRepFile::CreateViewer(G4VSceneHandler& scene, + const G4String& name) { + G4VViewer* pView = + new G4HepRepFileViewer((G4HepRepFileSceneHandler&) scene, name); + if (pView) { + if (pView->GetViewId() < 0) { + G4cout << + "G4HepRepFile::CreateViewer: ERROR flagged by negative" + " view id in G4HepRepFileViewer creation." + "\n Destroying view and returning null pointer." + << G4endl; + delete pView; + pView = 0; + } + } + else { + G4cout << + "G4HepRepFile::CreateViewer: ERROR: null pointer on new G4HepRepFileViewer." + << G4endl; + } + return pView; +} + +HepRepXMLWriter* G4HepRepFile::GetHepRepXMLWriter () { + return hepRepXMLWriter; +} diff --git a/source/visualization/HepRep/src/G4HepRepFileSceneHandler.cc b/source/visualization/HepRep/src/G4HepRepFileSceneHandler.cc new file mode 100644 index 0000000000..522e6d6015 --- /dev/null +++ b/source/visualization/HepRep/src/G4HepRepFileSceneHandler.cc @@ -0,0 +1,397 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4HepRepFileSceneHandler.cc,v 1.3 2001/11/19 15:07:28 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 5th April 2001 +// A base class for a scene handler to dump geometry hierarchy. +// Based on a provisional G4HepRepFileGraphicsScene (was in modeling). + +#include "G4HepRepFileSceneHandler.hh" +#include "G4HepRepFile.hh" + +#include "G4VSolid.hh" +#include "G4PhysicalVolumeModel.hh" +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" +#include "G4Material.hh" +#include "G4ModelingParameters.hh" +#include "G4Polymarker.hh" +#include "G4Polyline.hh" +#include "G4Text.hh" +#include "G4Circle.hh" +#include "G4Square.hh" +#include "G4Polyhedron.hh" +#include "G4NURBS.hh" + +//HepRep +#include "HepRepXMLWriter.hh" + +G4int G4HepRepFileSceneHandler::fSceneIdCount = 0; +// Counter for HepRep scene handlers. + +G4int G4HepRepFileSceneHandler::fSceneCount = 0; +// No. of extanct scene handlers. + +G4HepRepFileSceneHandler::G4HepRepFileSceneHandler(G4VGraphicsSystem& system, + const G4String& name): + G4VSceneHandler(system, fSceneIdCount++, name), + fCurrentDepth (0), + fpCurrentPV (0), + fpCurrentLV (0) +{ + fSceneCount++; + + hepRepXMLWriter = ((G4HepRepFile*)(&system))->GetHepRepXMLWriter(); + G4cout << " From scene handler const: opening file, G4HepRepFile.xml" + << G4endl; +} + +G4HepRepFileSceneHandler::~G4HepRepFileSceneHandler() {} + +#ifdef G4HEPREPFILEDEBUG +void G4HepRepFileSceneHandler::PrintThings() { + G4cout << + " with transformation " + << (void*)fpObjectTransformation; + if (fpCurrentPV) { + G4cout << + "\n current physical volume: " + << fpCurrentPV->GetName() << + "\n current logical volume: " + << fpCurrentLV->GetName() << + "\n current depth of geometry tree: " + << fCurrentDepth; + } + G4cout << G4endl; +} +#endif + +void G4HepRepFileSceneHandler::AddThis(const G4Box& box) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Box& box) called for " + << box.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(box); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Cons& cons) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Cons& cons) called for " + << cons.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(cons); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Tubs& tubs) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Tubs& tubs) called for " + << tubs.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(tubs); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Trd& trd) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Trd& trd) called for " + << trd.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(trd); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Trap& trap) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Trap& trap) called for " + << trap.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(trap); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Sphere& sphere) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Sphere& sphere) called for " + << sphere.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(sphere); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Para& para) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Para& para) called for " + << para.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(para); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Torus& torus) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Torus& torus) called for " + << torus.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(torus); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Polycone& polycone) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Polycone& polycone) called for " + << polycone.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(polycone); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4Polyhedra& polyhedra) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Polyhedra& polyhedra) called for " + << polyhedra.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(polyhedra); // Invoke default action. +} + +void G4HepRepFileSceneHandler::AddThis(const G4VSolid& solid) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddThis(const G4Solid& solid) called for " + << solid.GetName() + << G4endl; + PrintThings(); +#endif + hepRepXMLWriter->addType(fpCurrentPV->GetName()); + G4VSceneHandler::AddThis(solid); // Invoke default action. +} + + +void G4HepRepFileSceneHandler::AddPrimitive(const G4Polyline& polyline) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddPrimitive(const G4Polyline& polyline) called:" + "\n polyline: " << polyline + << G4endl; + PrintThings(); +#endif + + hepRepXMLWriter->addInstance(); + hepRepXMLWriter->addAttValue("DrawAs","Line"); + + G4Colour color = GetColour(polyline); + hepRepXMLWriter->addAttValue("LineColor", color.GetRed(), color.GetGreen(), color.GetBlue()); + + hepRepXMLWriter->addPrimitive(); + + for (size_t i=0; i < polyline.size(); i++) { + G4Point3D vertex = (*fpObjectTransformation) * polyline[i]; + hepRepXMLWriter->addPoint(vertex.x(), vertex.y(), vertex.z()); + } +} + + +void G4HepRepFileSceneHandler::AddPrimitive (const G4Polymarker& line) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddPrimitive(const G4Polymarker& line) called" + << G4endl; + PrintThings(); +#endif + + hepRepXMLWriter->addInstance(); + hepRepXMLWriter->addAttValue("DrawAs","Point"); + + // FIXME: should be taken from G4 + hepRepXMLWriter->addAttValue("MarkName", "Square"); + hepRepXMLWriter->addAttValue("MarkSize", 5); + + G4Colour color = GetColour(line); + hepRepXMLWriter->addAttValue("LineColor", color.GetRed(), color.GetGreen(), color.GetBlue()); + + hepRepXMLWriter->addPrimitive(); + + for (size_t i=0; i < line.size(); i++) { + G4Point3D vertex = (*fpObjectTransformation) * line[i]; + hepRepXMLWriter->addPoint(vertex.x(), vertex.y(), vertex.z()); + } +} + +void G4HepRepFileSceneHandler::AddPrimitive(const G4Text& text) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddPrimitive(const G4Text& text) called:" + "\n text: " << text.GetText() + << G4endl; + PrintThings(); +#endif + G4cout << "G4HepRepFileSceneHandler::AddPrimitive G4Text : not yet implemented. " << G4endl; +} + +void G4HepRepFileSceneHandler::AddPrimitive(const G4Circle& circle) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddPrimitive(const G4Circle& circle) called:" + "\n radius: " << circle.GetWorldRadius() + << G4endl; + PrintThings(); +#endif + + hepRepXMLWriter->addInstance(); + hepRepXMLWriter->addAttValue("DrawAs","Point"); + hepRepXMLWriter->addAttValue("MarkName", "Dot"); + + G4Colour color = GetColour(circle); + hepRepXMLWriter->addAttValue("LineColor", color.GetRed(), color.GetGreen(), color.GetBlue()); + + hepRepXMLWriter->addPrimitive(); + + G4double radius = circle.GetWorldSize(); + hepRepXMLWriter->addAttValue("MarkSize", radius); + + G4Point3D center = (*fpObjectTransformation) * circle.GetPosition(); + hepRepXMLWriter->addPoint(center.x(), center.y(), center.z()); +} + +void G4HepRepFileSceneHandler::AddPrimitive(const G4Square& square) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddPrimitive(const G4Square& square) called:" + "\n side: " << square.GetWorldRadius() + << G4endl; + PrintThings(); +#endif + + hepRepXMLWriter->addInstance(); + hepRepXMLWriter->addAttValue("DrawAs","Point"); + hepRepXMLWriter->addAttValue("MarkName", "Square"); + + G4Colour color = GetColour(square); + hepRepXMLWriter->addAttValue("LineColor", color.GetRed(), color.GetGreen(), color.GetBlue()); + + hepRepXMLWriter->addPrimitive(); + + G4double size = square.GetWorldSize(); + hepRepXMLWriter->addAttValue("MarkSize", size); + + G4Point3D center = (*fpObjectTransformation) * square.GetPosition(); + hepRepXMLWriter->addPoint(center.x(), center.y(), center.z()); +} + +void G4HepRepFileSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called." + << G4endl; + PrintThings(); +#endif + if(polyhedron.GetNoFacets()==0)return; + + G4Normal3D surfaceNormal; + G4Point3D vertex; + + hepRepXMLWriter->addInstance(); + hepRepXMLWriter->addAttValue("DrawAs","Polygon"); + + G4Colour color = GetColour(polyhedron); + hepRepXMLWriter->addAttValue("LineColor", color.GetRed(), color.GetGreen(), color.GetBlue()); + + // Additional attributes. + hepRepXMLWriter->addAttValue("LVol", fpCurrentLV->GetName()); + hepRepXMLWriter->addAttValue("Solid", fpCurrentLV->GetSolid()->GetName()); + hepRepXMLWriter->addAttValue("EType", fpCurrentLV->GetSolid()->GetEntityType()); + hepRepXMLWriter->addAttValue("Material", fpCurrentLV->GetMaterial()->GetName()); + hepRepXMLWriter->addAttValue("Density", fpCurrentLV->GetMaterial()->GetDensity()); + hepRepXMLWriter->addAttValue("State", fpCurrentLV->GetMaterial()->GetState()); + hepRepXMLWriter->addAttValue("Radlen", fpCurrentLV->GetMaterial()->GetRadlen()); + + G4bool notLastFace; + do { + hepRepXMLWriter->addPrimitive(); + notLastFace = polyhedron.GetNextNormal (surfaceNormal); + + G4int edgeFlag = 1; + G4bool notLastEdge; + do { + notLastEdge = polyhedron.GetNextVertex (vertex, edgeFlag); + vertex = (*fpObjectTransformation) * vertex; + hepRepXMLWriter->addPoint(vertex.x(), vertex.y(), vertex.z()); + } while (notLastEdge); + } while (notLastFace); +} + +void G4HepRepFileSceneHandler::AddPrimitive(const G4NURBS& nurbs) { +#ifdef G4HEPREPFILEDEBUG + G4cout << + "G4HepRepFileSceneHandler::AddPrimitive(const G4NURBS& nurbs) called." + << G4endl; + PrintThings(); +#endif + G4cout << "G4HepRepFileSceneHandler::AddPrimitive G4NURBS : not implemented. " << G4endl; +} + +void G4HepRepFileSceneHandler::EstablishSpecials +(G4PhysicalVolumeModel& pvModel) { + pvModel.DefinePointersToWorkingSpace(&fCurrentDepth, + &fpCurrentPV, + &fpCurrentLV); +} + +HepRepXMLWriter *G4HepRepFileSceneHandler::GetHepRepXMLWriter() { + return hepRepXMLWriter; +} diff --git a/source/visualization/HepRep/src/G4HepRepFileViewer.cc b/source/visualization/HepRep/src/G4HepRepFileViewer.cc new file mode 100644 index 0000000000..ac0bf21c84 --- /dev/null +++ b/source/visualization/HepRep/src/G4HepRepFileViewer.cc @@ -0,0 +1,86 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4HepRepFileViewer.cc,v 1.3 2001/11/19 15:07:28 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ + +#include "G4HepRepFileViewer.hh" + +#include "G4ios.hh" +#include "g4std/strstream" + +#include "G4VSceneHandler.hh" + +#include "G4HepRepFileSceneHandler.hh" + +//HepRep +#include "HepRepXMLWriter.hh" + +G4HepRepFileViewer::G4HepRepFileViewer +(G4VSceneHandler& sceneHandler, const G4String& name): + G4VViewer(sceneHandler, sceneHandler.IncrementViewCount(), name) { + + hepRepXMLWriter = ((G4HepRepFileSceneHandler*)(&sceneHandler))->GetHepRepXMLWriter(); +} + +G4HepRepFileViewer::~G4HepRepFileViewer() {} + +void G4HepRepFileViewer::SetView() { +#ifdef G4HEPREPFILEDEBUG + G4cout << "G4HepRepFileViewer::SetView() called." << G4endl; +#endif + hepRepXMLWriter->open("G4HepRepFile.xml"); + hepRepXMLWriter->addAttDef("LVol", "Logical Volume", "Physics",""); + hepRepXMLWriter->addAttDef("Solid", "Solid Name", "Physics",""); + hepRepXMLWriter->addAttDef("EType", "Entity Type", "Physics",""); + hepRepXMLWriter->addAttDef("Material", "Material Name", "Physics",""); + hepRepXMLWriter->addAttDef("Density", "Material Density", "Physics",""); + hepRepXMLWriter->addAttDef("State", "Material State", "Physics",""); + hepRepXMLWriter->addAttDef("Radlen", "Material Radiation Length", "Physics",""); +} + +void G4HepRepFileViewer::ClearView() { +#ifdef G4HEPREPFILEDEBUG + G4cout << "G4HepRepFileViewer::ClearView() called." << G4endl; +#endif +} + +void G4HepRepFileViewer::DrawView() { +#ifdef G4HEPREPFILEDEBUG + G4cout << "G4HepRepFileViewer::DrawView() called." << G4endl; +#endif + NeedKernelVisit (); // Always need to visit G4 kernel. + ProcessView (); +} + +void G4HepRepFileViewer::ShowView () { +#ifdef G4HEPREPFILEDEBUG + G4cout << "G4HepRepFileViewer::ShowView" << G4endl; +#endif + G4VViewer::ShowView(); + + hepRepXMLWriter->close(); +} + + + diff --git a/source/visualization/HepRep/src/HepRepXMLWriter.cc b/source/visualization/HepRep/src/HepRepXMLWriter.cc new file mode 100644 index 0000000000..59551027e3 --- /dev/null +++ b/source/visualization/HepRep/src/HepRepXMLWriter.cc @@ -0,0 +1,297 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +//-------------------------------------------------------------------------- +// File and Version Information: +// $Id: HepRepXMLWriter.cc,v 1.3 2001/12/13 12:04:26 gunter Exp $ +// +// Description: +// Create a HepRep XML File (HepRep version 1). +// +// Environment: +// Software developed for the general High Energy Physics community. +// +// Author : +// J. Perl Original Author +// +// Copyright Information: +// Copyright (C) 2001 Stanford Linear Accelerator Center +//------------------------------------------------------------------------ + +#include "HepRepXMLWriter.hh" + +#include "G4ios.hh" + +HepRepXMLWriter::HepRepXMLWriter() +{ +} + +void HepRepXMLWriter::addType(const char* name) +{ + if (fout.good()) + { + endType(); + fout << " " + << G4endl; + inType = true; + } else { + G4cout << "HepRepXMLWriter:addType No file is currently open." << G4endl; + } +} + +void HepRepXMLWriter::addInstance() +{ + if (fout.good()) + { + if (inType) + { + endInstance(); + fout << " " << G4endl; + inInstance = true; + } else { + G4cout << "HepRepXMLWriter:addInstance No HepRep Type is currently open" + << G4endl; + } + } else { + G4cout << "HepRepXMLWriter:addInstance No file is currently open" + << G4endl; + } +} + +void HepRepXMLWriter::addPrimitive() +{ + if (fout.good()) + { + if (inInstance) + { + endPrimitive(); + fout << " " << G4endl; + inPrimitive = true; + } else { + G4cout << + "HepRepXMLWriter:addPrimitive No HepRep Instance is currently open" + << G4endl; + } + } else { + G4cout << "HepRepXMLWriter:addPrimitive No file is currently open" + << G4endl; + } +} + +void HepRepXMLWriter::addPoint(double x, double y, double z) +{ + if (fout.good()) + { + if (inPrimitive) + { + endPoint(); + fout << " " << G4endl; + inPoint = true; + } else { + G4cout << + "HepRepXMLWriter:addPoint No HepRep Primitive is currently open" + << G4endl; + } + } else { + G4cout << "HepRepXMLWriter:addPoint No file is currently open" << G4endl; + } +} + +void HepRepXMLWriter::addAttDef(const char* name, + const char* desc, + const char* type, + const char* extra) +{ + if (fout.good()) + { + indent(); + fout << " " << G4endl; + } else { + G4cout << "HepRepXMLWriter:addAttDef No file is currently open" << G4endl; + } +} + +// Four methods to fill attValues +void HepRepXMLWriter::addAttValue (const char* name, + const char* value) +{ + if (fout.good()) + { + indent(); + fout << " " << G4endl; + } else { + G4cout << "HepRepXMLWriter:addAttValue No file is currently open" << G4endl; + } +} + +void HepRepXMLWriter::addAttValue (const char* name, + double value) +{ + if (fout.good()) + { + indent(); + fout << " " << G4endl; + } else { + G4cout << "HepRepXMLWriter:addAttValue No file is currently open" << G4endl; + } +} + +void HepRepXMLWriter::addAttValue (const char* name, + int value) +{ + if (fout.good()) + { + indent(); + fout << " " << G4endl; + } else { + G4cout << "HepRepXMLWriter:addAttValue No file is currently open" << G4endl; + } +} + +void HepRepXMLWriter::addAttValue (const char* name, + bool value) +{ + if (fout.good()) + { + indent(); + fout << " " << G4endl; + } else { + G4cout << "HepRepXMLWriter:addAttValue No file is currently open" << G4endl; + } +} + +void HepRepXMLWriter::addAttValue (const char* name, + double value1, + double value2, + double value3) +{ + if (fout.good()) + { + indent(); + int redness = int(value1*255.); + int greenness = int(value2*255.); + int blueness = int(value3*255.); + fout << " " << G4endl; + } else { + G4cout << "HepRepXMLWriter:addAttValue No file is currently open" << G4endl; + } +} + +void HepRepXMLWriter::open(const char* filespec) +{ + if (fout.good()) + fout.close(); + + fout.open(filespec); + + if (fout.good()) + { + fout << "" << G4endl; + fout << "" << G4endl; + + inType = false; + inInstance = false; + inPrimitive = false; + inPoint = false; + } else { + G4cout << "HepRepXMLWriter:open Unable to write to file " << filespec << G4endl; + } +} + +void HepRepXMLWriter::close() +{ + if (fout.good()) + { + endType(); + fout << "" << G4endl; + fout.close( ); + } else { + G4cout << "HepRepXMLWriter:close No file is currently open" << G4endl; + } +} + +void HepRepXMLWriter::endType() +{ + if (inType) + { + endInstance(); + fout << " " << G4endl; + inType = false; + } +} + +void HepRepXMLWriter::endInstance() +{ + if (inInstance) + { + endPrimitive(); + fout << " " << G4endl; + inInstance = false; + } +} + +void HepRepXMLWriter::endPrimitive() +{ + if (inPrimitive) + { + endPoint(); + fout << " " << G4endl; + inPrimitive = false; + } +} + +void HepRepXMLWriter::endPoint() +{ + if (inPoint) + { + fout << " " << G4endl; + inPoint = false; + } +} + +void HepRepXMLWriter::indent() +{ + if (fout.good()) + { + if (inType) + fout << " "; + if (inInstance) + fout << " "; + if (inPrimitive) + fout << " "; + if (inPoint) + fout << " "; + } +} diff --git a/source/visualization/History b/source/visualization/History index 2086116e27..1b2e369b59 100644 --- a/source/visualization/History +++ b/source/visualization/History @@ -1,4 +1,4 @@ -$Id: History,v 1.133 2001/06/19 11:24:09 stanaka Exp $ +$Id: History,v 1.172 2001/12/01 21:07:26 stanaka Exp $ ------------------------------------------------------------------- ========================================================= @@ -24,6 +24,283 @@ committal in the CVS repository ! History file for visualization category --------------------------------------- +01th December 2001 vis-V03-02-21 +- Code refinements in FukuiRenderer/ directory: + * Noisy warnings for Linux-g++ are suppressed. + (%lg ==> %g etc) + * G4FRSceneFunc.icc is moved from /src to /include + +29th November 2001 John Allison +- Fixed some pedantic warnings and a bug thrown up by such in OpenGL. + +28th November 2001 Gabriele Cosmo (visman-V03-02-00 in management only). +- Fixed pointer initialisation for porting on VC++ in G4VisCommandsSceneAdd.cc. + +21st November 2001 John Allison (vis-V03-02-20) +- Fixed G4std bug in G4HepRepFileSceneHandler.hh. +- Fixed "hides the virtual function" warnings from G4HepRepFileSceneHandler. +- Change to comments in G4XXXSceneHandler.hh. + +19th November 2001 John Allison (vis-V03-02-19 needs config-V03-02-09+) +- Cosmetic changes to HepRep. + +16th November 2001 John Allison +- Added G4XXXDEBUG to XXX dummy system. + +14th November 2001 John Allison +- Fixed bug in G4VisManager::EndOfEvent. +- Moved code from G4VisManagerRegisterMessengers.cc to G4VisManager.cc and + removed G4VisManagerRegisterMessengers.cc. + +14th November 2001 Guy Barrand +- OpenInventor : move HEPVis/SoWindow under vis/OpenInventor/G4SoWindow + to prepare HEPVis/6.0. (HEPVis/SoWindow will disappear from HEPVis/6.0). + +14th November 2001 John Allison +- Added README.built_in_commands. + +13th November 2001 Satoshi Tanaka +- visualization/README file is updated, adding minimal description + on the HepRepFile driver. + +12th November 2001 John Allison (vis-V03-02-18 needs config-V03-02-09) +- Fixed some warnings and one error from gcc-2.95.2. +- HepRep Type names now come from Physical Volume names (Joseph Perl). +- Added many HepRep Attributes for other volume properties (Joseph Perl). + +13th Nov 2001 (JST) Hajime Yoshida and Minamimoto (vis-V03-02-17) +- Updation of G4RTJpegMaker.cc for Windows platform (raytracer-V03-02-01). + +7th November 2001 John Allison (vis-V03-02-16 needs config-V03-02-09) +- Corrected compilation error. + +6th November 2001 John Allison (vis-V03-02-15 needs config-V03-02-09) +- Added /vis/viewer/flush = refresh + update. +- Moved /vis/viewer/lights and viewpoint to /vis/viewer/set. +- Added /vis/viewer/set/upThetaPhi and upVector. +- Added refresh|flush option to /vis/scene/notifyHandlers. +- Moved HepRepFile classes to HepRep/ directory and removed HepRep classes + therein. + +1st October 2001 Joseph Perl +- Added first version of pure C++ HepRep driver, HepRepFile. + See HepRep/README for details. + +10th September 2001 John Allison (needs greps-V03-02-04) +- (Non-standard tag JA-RAEOE.) + +10th September 2001 John Allison (not tagged but needs greps-V03-02-04) +- Added BeginOfRun, BeginOfEvent and EndOfRun to G4VisManager, invoked via + G4VisStateDependent. +- Improved handling of refresh-at-end-of-event. All scene handlers need to + implement ClearTransientStore and ensure rebuilding of permanent store if + necessary. +- Auto-refresh (notifyHandlers) after attaching scene. +- Changed default colour of scale to red and fixed a couple of small bugs in + the implementation of AddPrimitive(G4Scale). +- Improved verbosity guidance. +- Improved /vis/scene/add/scale guidance (needs greps-V03-02-04). +- Removed /vis/viewer/refresh from compound commands. +- Capitalised 'R' in /vis/viewer/set/autoRefresh. + +29th August 2001 John Allison/Joseph Perl (vis-V03-02-14) +- Needs config-V03-02-06. +- First developers release of HepRep graphics driver. + +24th August 2001 Joseph Perl (vis-V03-02-13-00) +- First inclusion of HepRep graphics driver. + +24th August 2001 John Allison (vis-V03-02-13) +- Fixed bugs in G4VisManager::GeometryHasChanged. +- Separated out G4Scene::CalculateExtent. +- Improved robustness and timeliness of invocation of some commands. +- Improved READMEs. +- Reduced warnings from OpenGL - see OpenGL/History. +- Cosmetic changes to test. +- Added explicit invocation of base class methods to avoid warnings about + hiding of base class methods. + +17th August 2001 John Allison (vis-V03-02-12) +- Coworks with greps-V03-02-02 and intercoms-V03-02-04. +- Added G4VisManager::Draw(const G4Scale&,... Needs intercoms-V03-02-04. +- Added template graphics system XXX. +- Improved verbosity guidance. + +14th August 2001 John Allison (vis-V03-02-11) +- Coworks with greps-V03-02-02 and intercoms-V03-02-03. +- Moved default value G4Transform3D::Identity of argument from + G4VSceneHandler::BeginPrimitives to + G4VGraphicsScene::BeginPrimitives. Needs intercoms-V03-02-03. +- Fixed bug in G4VSceneHandler::AddPrimitive(const G4Scale&). Needs + greps-V03-02-02. +- Added sceneHandler.Begin/EndPrimitives messages to models (long + standing bug!). +- Removed "dummy" graphics systems in G4VisManager.cc. +- Improved robustness of some commands, particularly + /vis/scene/notifyHandlers. +- Improved support for multiple viewers (but see OpenGL/History). + +11th August 2001 John Allison (vis-V03-02-10-01) +- Implemented /vis/scene/endOfEventAction. + +9th August 2001 John Allison (vis-V03-02-10-00) +- Note: non-standard tag to indicate internal use only. +- Added /vis/scene/create at start of compound command /vis/open to avoid + warnings. +- Removed G4ModelingParameters::hierarchy. It is no longer used. The + textual or graphical representation of the geometry hierarchy is now + done in G4xxxTree classes in visua;ization/Tree. +- Removed /vis/scene/notifyHandlers from + G4VVisCommandScene::UpdateVisManagerScene - too much updating going on. + It was leading to recursive refreshing/updating. +- Implemented auto-refresh at end of event. (See also OpenGL/History.) + Introduced G4VSceneHandler::Get/SetMarkForClearingTransientStore for + postponed (lazy) clearing of transients (e.g., trajectories) from store + (graphical database) and view. The mark is set at the end of + G4VisManager::EndOfEvent and the actual clearing is done in: + void G4VisManager::ClearTransientStoreIfMarked(){ + // Assumes valid view. + if (fpSceneHandler->GetMarkForClearingTransientStore()) { + fpSceneHandler->SetMarkForClearingTransientStore(false); + fpSceneHandler->ClearTransientStore(); + } + } + which is called at the start of each G4VisManager::Draw and the beginning + of G4VisManager::EndOfEvent. Thus the picture stays from the end of all + drawing for the event until the first drawing of the next event. + +5th August 2001 John Allison +- Small refinements to printing under new verbosity control. + +4th August 2001 John Allison (vis-V03-02-10) +- Re-implemented verbosity control. Output statements wherever possible + are controlled by the verbosity in a simple graded message scheme: + enum Verbosity { + quiet, // Nothing is printed. + startup, // Startup and endup messages are printed... + errors, // ...and errors... + warnings, // ...and warnings... + confirmations, // ...and confirming messages... + parameters, // ...and parameters of scenes and views... + all // ...and everything available. + }; + Note that the G4VisManager member object name and type have changed: + Verbosity fVerbosity; // New. + const G4int fVerbose; + // fVerbose is kept for backwards compatibility for some user + // examples. (It is used in the derived user vis managers to print + // available graphics systems.) It is initialised to 1 in the + // constructor and cannot be changed. + +3rd August 2001 John Allison +- Added README.quick, a quick installation guide. + +30th July 2001 John Allison (vis-V03-02-09) +- Eliminated view parameters from G4VisManager. Now, each view maintains its + own parameters. Can be copied from one view to another with: + /vis/viewer/set/all + Copies view parameters from from-viewer to current viewer. + Affects current viewer. +- Removed redundant methods from G4VisManager, mostly to do with old-style + commands. + +27th July 2001 John Allison (vis-V03-02-08) +- Needs config-V03-02-01. +- Introduced environment variable G4VIS_NONE that, if set, no visualization + drivers are built and no vis libraries are built, not even + libG4vis_management. (libG4modeling is still built.) The C-pre-processor + variables G4VIS_BUILD and G4VIS_USE are *not* set. +- Removed the need to specify environment variables for visualization drivers + which do not need external packages or libraries, namely : + G4VIS_BUILD_DAWNFILE_DRIVER + G4VIS_BUILD_RAYTRACER_DRIVER + G4VIS_BUILD_VRMLFILE_DRIVER + G4VIS_BUILD_ASCIITREE_DRIVER + G4VIS_BUILD_GAGTREE_DRIVER + with associated G4VIS_USE environment variables: + G4VIS_USE_DAWNFILE + G4VIS_USE_RAYTRACER + G4VIS_USE_VRMLFILE + G4VIS_USE_ASCIITREE + G4VIS_USE_GAGTREE + For backwards compatibility, unless G4VIS_NONE is set, the corresponding + C-pre-processor variables are automatically set. Also, the C-pre-processor + variables G4VIS_BUILD and G4VIS_USE are set. +- As before, environment variables for other drivers still need positive + setting of their G4VIS_BUILD and G4VIS_USE environment variables. In this + category are: + G4VIS_BUILD_DAWN_DRIVER + G4VIS_BUILD_OPACS_DRIVER + G4VIS_BUILD_OPENGLX_DRIVER + G4VIS_BUILD_OPENGLWIN32_DRIVER + G4VIS_BUILD_OPENGLXM_DRIVER + G4VIS_BUILD_OIX_DRIVER + G4VIS_BUILD_OIWIN32_DRIVER + G4VIS_BUILD_VRML_DRIVER + with associated G4VIS_USE environment variables: + G4VIS_USE_DAWN + G4VIS_USE_OPACS + G4VIS_USE_OPENGLX + G4VIS_USE_OPENGLWIN32 + G4VIS_USE_OPENGLXM + G4VIS_USE_OIX + G4VIS_USE_OIWIN32 + G4VIS_USE_VRML + In this case G4VIS_NONE must *not* be set. +- Fixed unchecked pointer in G4VSceneHandler::ClearStore(). + +25th July 2001 John Allison (vis-V03-02-07) +- Improved access to models (modeling-V03-02-03). +- Made G4VSceneHandler::fpModel non-const G4VModel* for convenience. +- Improved checks and warning messages in /vis/scene/add/scale. + +24th July 2001 John Allison (vis-V03-02-06) +- Needs greps-V03-02-01 for small interface change to G4Scale. +- Includes modeling-V03-02-02. +- Force rebuild of graphics "stores" (graphical databases) and, if + auto-refresh is true, refresh of all views + (/vis/scene/notifyHandlers) after an addition to scene. +- Improvements to /vis/scene/add/scale: + o Added colour. + o Assigned a genuine extent. + +23rd July 2001 John Allison (vis-V03-02-05 is non existent - sorry!!!) +- Improved /vis/scene/add/scale. +- Improved auto-refreshing. + +21st July 2001 John Allison (vis-V03-02-04) +- Added /vis/scene/add/scale. Needs greps-V03-02-00 and intercoms-V03-02-02. + +19th July 2001 Satoshi Tanaka (vis-V03-02-03) +- Modification of G4DAWNFILEViewer.cc +- PostScript command "showpage" is always added to g4_XX.eps + so that it is printable. (It can also be inserted into + LaTeX documents. + +18th July 2001 John Allison (vis-V03-02-02) +- Ensured rotation and translation of replica is restored (modeling-V03-02-00) + (fixes crashes in replica tracking). + +14th July 2001 John Allison (vis-V03-02-01) +- Included raytracer-V03-02-00 (minor cosmetics). +- Minor changes in G4OpenGLXViewer.cc to eliminate pedantic ISO C++ warnings. +- Merged vis-V03-02-patch01 (below) to head. +- Included new disclaimer. + +14th July 2001 John Allison (vis-V03-02-patch01 in branch geant4-03-02-branch) +- Fixed crash in optimised mode: added Initialise() to viewers so + that windows are opened after viewers are fully constructed. + +10th July 2001 John Allison (vis-V03-02-00) +- Removed old-style commands. +- Removed maintenance of G4VisManager's G4ViewParameters object (this + will be removed soon). +- Merged vis-V03-02-patch00 (below) to head. + +10th July John Allison (vis-V03-02-patch00 in branch geant4-03-02-branch) +- Corrected mistake which could cause crash if user specified a non- + existent scene handler in /vis/sceneHandler/remove. + 19th June 2001 Satoshi Tanaka (vis-V03-01-07) -OS dependence is removed from the DAWN-network driver. * gethostname() removed diff --git a/source/visualization/OPACS/include/G4GoSceneHandler.hh b/source/visualization/OPACS/include/G4GoSceneHandler.hh index 3697297b15..4885c8b973 100644 --- a/source/visualization/OPACS/include/G4GoSceneHandler.hh +++ b/source/visualization/OPACS/include/G4GoSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GoSceneHandler.hh,v 1.6.4.1 2001/06/28 19:15:35 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GoSceneHandler.hh,v 1.8 2001/08/24 21:49:59 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 @@ -54,6 +54,12 @@ public: void AddPrimitive (const G4Polymarker&); void AddPrimitive (const G4Polyhedron&); void AddPrimitive (const G4NURBS&); + //////////////////////////////////////////////////////////////// + // Explicitly invoke base class methods to avoid warnings about + // hiding of base class methods. + void AddPrimitive (const G4Scale& scale) { + G4VSceneHandler::AddPrimitive (scale); + } void AddThis (const G4Box&); void AddThis (const G4Cons&); diff --git a/source/visualization/OPACS/include/G4Wo.hh b/source/visualization/OPACS/include/G4Wo.hh index 26dfa0e891..1553472e4f 100644 --- a/source/visualization/OPACS/include/G4Wo.hh +++ b/source/visualization/OPACS/include/G4Wo.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Wo.hh,v 1.5.4.1 2001/06/28 19:15:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Wo.hh,v 1.6 2001/07/11 10:08:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/include/G4WoViewer.hh b/source/visualization/OPACS/include/G4WoViewer.hh index f865bccaf6..26d06af404 100644 --- a/source/visualization/OPACS/include/G4WoViewer.hh +++ b/source/visualization/OPACS/include/G4WoViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4WoViewer.hh,v 1.4.4.1 2001/06/28 19:15:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4WoViewer.hh,v 1.5 2001/07/11 10:08:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/include/G4Xo.hh b/source/visualization/OPACS/include/G4Xo.hh index 7c9a149cc0..d5f3fd716e 100644 --- a/source/visualization/OPACS/include/G4Xo.hh +++ b/source/visualization/OPACS/include/G4Xo.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Xo.hh,v 1.5.4.1 2001/06/28 19:15:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Xo.hh,v 1.6 2001/07/11 10:08:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/include/G4XoViewer.hh b/source/visualization/OPACS/include/G4XoViewer.hh index a55e56c0da..db782376b2 100644 --- a/source/visualization/OPACS/include/G4XoViewer.hh +++ b/source/visualization/OPACS/include/G4XoViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XoViewer.hh,v 1.4.4.1 2001/06/28 19:15:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XoViewer.hh,v 1.5 2001/07/11 10:08:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/src/G4GoSceneHandler.cc b/source/visualization/OPACS/src/G4GoSceneHandler.cc index 6ffc758e29..c2b3312642 100644 --- a/source/visualization/OPACS/src/G4GoSceneHandler.cc +++ b/source/visualization/OPACS/src/G4GoSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GoSceneHandler.cc,v 1.11.2.1 2001/06/28 19:15:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GoSceneHandler.cc,v 1.13 2001/11/12 18:22:09 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 @@ -152,7 +152,7 @@ void G4GoSceneHandler::AddPrimitive ( { SetColour (GetColour(circle)); G4Point3D center = circle.GetPosition(); - G4double radius = circle.GetWorldSize(); + // G4double radius = circle.GetWorldSize(); ####### Unused. ####### #ifdef DEBUG G4cout << "G4GoSceneHandler::AddPrimitive(G4Circle&) : center : " << " x : " << center.x() diff --git a/source/visualization/OPACS/src/G4Wo.cc b/source/visualization/OPACS/src/G4Wo.cc index d14f7c88ce..eebb0773f8 100644 --- a/source/visualization/OPACS/src/G4Wo.cc +++ b/source/visualization/OPACS/src/G4Wo.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Wo.cc,v 1.4.4.1 2001/06/28 19:15:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Wo.cc,v 1.5 2001/07/11 10:08:47 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/src/G4WoViewer.cc b/source/visualization/OPACS/src/G4WoViewer.cc index b87a2f3306..9e06c2435d 100644 --- a/source/visualization/OPACS/src/G4WoViewer.cc +++ b/source/visualization/OPACS/src/G4WoViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4WoViewer.cc,v 1.6.4.1 2001/06/28 19:15:36 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4WoViewer.cc,v 1.7 2001/07/11 10:08:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/src/G4Xo.cc b/source/visualization/OPACS/src/G4Xo.cc index a20d903391..bc04fc542a 100644 --- a/source/visualization/OPACS/src/G4Xo.cc +++ b/source/visualization/OPACS/src/G4Xo.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Xo.cc,v 1.5.4.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Xo.cc,v 1.6 2001/07/11 10:08:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OPACS/src/G4XoViewer.cc b/source/visualization/OPACS/src/G4XoViewer.cc index 95f37769f2..8aeb8ad958 100644 --- a/source/visualization/OPACS/src/G4XoViewer.cc +++ b/source/visualization/OPACS/src/G4XoViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4XoViewer.cc,v 1.7.4.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XoViewer.cc,v 1.8 2001/07/11 10:08:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Guy Barrand 04 November 1996 diff --git a/source/visualization/OpenGL/History b/source/visualization/OpenGL/History index 81f6180d4e..3d06f0447a 100644 --- a/source/visualization/OpenGL/History +++ b/source/visualization/OpenGL/History @@ -1,4 +1,4 @@ -$Id: History,v 1.6 2001/04/02 14:05:54 johna Exp $ +$Id: History,v 1.15 2001/08/24 20:28:15 johna Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,6 +20,65 @@ committal in the CVS repository ! History file for visualization/OpenGL ------------------------------------- +24th August 2001 John Allison (vis-V03-02-13) +- Limited the printing of warnings in + G4OpenGLSceneHandler::AddPrimitive (const G4Text& text). + +14th August 2001 John Allison (vis-V03-02-11) +- Improved KernelVisitDecision. +- Fixed a few small bugs in multiple "stored" viewers, but see next item. +- There's an outstanding bug in OpenGL Stored. If there is more than + one viewer controlled by a scene handler, after a ClearStore on the + scene handler, e.g., with /vis/scene/notifyHandlers, the first + viewer to get refreshed should trigger the display list rebuild, but + the second need not. However, when the second viewer's turn comes, + the display lists are there, and are called, e.g., + G4OpenGLStoredXViewer::DrawView calls + G4OpenGLStoredViewer::DrawDisplayLists that calls glCallList, but + nothing appears on the screen. To overcome this there is some + temporary code in G4VViewer::NeedKernelVisit which marks *all* + viewers to force a rebuild. To see the symptoms, comment out that + temporary code and issue these commands: + /vis/verbose c + /control/verbose 2 + /vis/scene/create + /vis/scene/add/volume + /vis/sceneHandler/create OGLSX + /vis/viewer/create ! ! 1 + /run/beamOn + /vis/viewer/create ! ! 1 + /vis/viewer/select viewer-0 + /vis/viewer/viewpointThetaPhi 20 20 + /vis/viewer/select viewer-1 + /vis/viewer/viewpointThetaPhi 40 40 + /vis/viewer/set/style surface + /vis/viewer/refresh + /vis/viewer/select viewer-0 + /vis/viewer/refresh + /vis/viewer/select viewer-1 + /vis/viewer/set/style wireframe + /vis/scene/notifyHandlers + You may have to do this too: + /vis/viewer/select viewer-0 + /vis/scene/notifyHandlers + One of the viewers is empty. Curious!! + +9th August 2001 John Allison (vis-V03-02-10-00) +- Implemented G4OpenGLStoredSceneHandler::ClearTransientStore() +- Removed G4OpenGLSceneHandler::AddPrimitive (const G4Polymarker&) (it only + invoked G4VSceneHandler::AddPrimitive (const G4Polymarker&) which is + picked up by inheritance anyway. +- Removed lots of unnecessary header files from G4OpenGLStoredSceneHandler.cc. +- Corrected order of calling base class functions in + G4OpenGLStoredSceneHandler::Begin/EndModeling. + +24th July 2001 John Allison (vis-V03-02-06) +- G4OpenGLSceneHandler::AddPrimitive (const G4Text&) handles transformation. + +14th July 2001 John Allison (opengl-V03-02-00) +- Fixed crash in optimised mode: added Initialise() to viewers so + that windows are opened after viewers are fully constructed. + 2nd April 2001 John Allison (opengl-V03-00-01 wrt vis-V03-00-09) - Tidied G4OpenGLXmViewer callback code. Removed superfluous header files. diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh index 1e2d4ec0e2..a3ed37c562 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateSceneHandler.hh,v 1.4.4.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateSceneHandler.hh,v 1.6 2001/08/09 20:16:56 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -51,6 +51,7 @@ public: void EndPrimitives (); void BeginModeling (); void EndModeling (); + void ClearTransientStore (); static G4int GetSceneCount (); private: diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh index c33abdc9c1..1aecd5cae3 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateViewer.hh,v 1.5.2.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateViewer.hh,v 1.6 2001/07/11 10:08:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh index 38c64c235d..9332a6d519 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateWin32.hh,v 1.4.4.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateWin32.hh,v 1.5 2001/07/11 10:08:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // OpenGLImmediateWin32 graphics system factory. diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh index 11e29b70e3..6a64011820 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateWin32Viewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateWin32Viewer.hh,v 1.4.2.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateWin32Viewer.hh,v 1.6 2001/07/14 21:47:41 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4OpenGLImmediateWin32Viewer : a class derived from @@ -46,6 +46,7 @@ public G4OpenGLWin32Viewer, public G4OpenGLImmediateViewer{ public: G4OpenGLImmediateWin32Viewer (G4OpenGLImmediateSceneHandler& scene); + void Initialise (); void DrawView (); }; diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh index 5c76ba4c22..12249dbc3d 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateX.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateX.hh,v 1.5.4.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateX.hh,v 1.6 2001/07/11 10:08:48 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh index 11495c396e..c3939362ab 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateXViewer.hh,v 1.5.2.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateXViewer.hh,v 1.7 2001/07/14 21:47:42 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 @@ -49,6 +49,7 @@ public: G4OpenGLImmediateXViewer (G4OpenGLImmediateSceneHandler& scene, const G4String& name = ""); virtual ~G4OpenGLImmediateXViewer (); + void Initialise (); void DrawView (); }; diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh index 5c8f306bc9..239adf05de 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXm.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateXm.hh,v 1.5.2.1 2001/06/28 19:15:37 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateXm.hh,v 1.6 2001/07/11 10:08:49 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh b/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh index 372fb889d9..c820fe1bb0 100644 --- a/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLImmediateXmViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateXmViewer.hh,v 1.5.2.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateXmViewer.hh,v 1.7 2001/07/14 21:47:43 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -49,6 +49,7 @@ public: G4OpenGLImmediateXmViewer (G4OpenGLImmediateSceneHandler& scene, const G4String& name = ""); virtual ~G4OpenGLImmediateXmViewer (); + void Initialise (); void DrawView (); }; diff --git a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh index 3aff81b4fe..24d6795d0a 100644 --- a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLSceneHandler.hh,v 1.7.2.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLSceneHandler.hh,v 1.10 2001/08/24 21:46:45 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 27th March 1996 @@ -53,7 +53,14 @@ public: void AddPrimitive (const G4Square&); void AddPrimitive (const G4Polyhedron&); void AddPrimitive (const G4NURBS&); - void AddPrimitive (const G4Polymarker&); + // Explicitly invoke base class methods to avoid warnings about + // hiding of base class methods... + void AddPrimitive(const G4Polymarker& polymarker) { + G4VSceneHandler::AddPrimitive (polymarker); + } + void AddPrimitive (const G4Scale& scale) { + G4VSceneHandler::AddPrimitive (scale); + } void AddThis (const G4Box&); void AddThis (const G4Cons&); diff --git a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc index 402510069f..480e7d38f5 100644 --- a/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc +++ b/source/visualization/OpenGL/include/G4OpenGLSceneHandler.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLSceneHandler.icc,v 1.3.4.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLSceneHandler.icc,v 1.5 2001/08/09 20:16:06 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 20th January 1998 @@ -70,8 +70,3 @@ inline void G4OpenGLSceneHandler::AddThis (const G4Polyhedra& polyhedra) { inline void G4OpenGLSceneHandler::AddThis (const G4VSolid& vsolid) { G4VSceneHandler::AddThis (vsolid); } - -inline void G4OpenGLSceneHandler::AddPrimitive (const G4Polymarker& polymarker) { - G4VSceneHandler::AddPrimitive (polymarker); -} - diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh b/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh index 3c2aa7ca8a..61dff1a224 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredSceneHandler.hh,v 1.10.2.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredSceneHandler.hh,v 1.13 2001/08/14 18:03:14 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -54,16 +54,21 @@ public: void BeginModeling (); void EndModeling (); static G4int GetSceneCount (); - private: -friend class G4OpenGLStoredViewer; + friend class G4OpenGLStoredViewer; // ..allows access to P/TODLs. void ClearStore (); + void ClearTransientStore (); void RequestPrimitives (const G4VSolid& solid); - static G4int fSceneIdCount; // static counter for OpenGLStored scenes. - static G4int fSceneCount; // No. of extanct scene handlers. - G4int fDisplayListId; // Workspace. - G4bool fMemoryForDisplayLists; // avoid memory overflow + static G4int fSceneIdCount; // static counter for OpenGLStored scenes. + static G4int fSceneCount; // No. of extanct scene handlers. + G4int fDisplayListId; // Workspace. + G4bool fMemoryForDisplayLists; // avoid memory overflow + G4ViewParameters fLastVP; // Keeps memory of last view parameters, + // namely the ones which go with the graphical database + // (display lists). A view may interrogate this to decide if + // it needs to visit the kernel, i.e., to remake the + // graphical database. // PODL = Persistent Object Display List. GLint fTopPODL; // List which calls the other PODLs. diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh index db79d4cf64..290b9a15a9 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredViewer.hh,v 1.6.2.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredViewer.hh,v 1.8 2001/08/14 18:03:15 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 @@ -52,8 +52,10 @@ public: protected: void KernelVisitDecision (); + G4bool CompareForKernelVisit(G4ViewParameters&); void DrawDisplayLists (); - G4OpenGLStoredSceneHandler& fSceneHandler; // Graphics Scene for this view. + G4OpenGLStoredSceneHandler& fG4OpenGLStoredSceneHandler; + G4ViewParameters fLastVP; // Memory for making kernel visit decisions. }; #endif diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh b/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh index 54fc1ccabc..6df6cd3fd2 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredWin32.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredWin32.hh,v 1.4.4.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredWin32.hh,v 1.5 2001/07/11 10:08:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // OpenGLStoredWin32 graphics system factory. diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh index b3bd6ef5a7..3b70415381 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredWin32Viewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredWin32Viewer.hh,v 1.2.4.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredWin32Viewer.hh,v 1.4 2001/07/14 21:47:45 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4OpenGLStoredWin32Viewer : a class derived from @@ -44,6 +44,7 @@ public G4OpenGLWin32Viewer, public G4OpenGLStoredViewer{ public: G4OpenGLStoredWin32Viewer (G4OpenGLStoredSceneHandler& scene); + void Initialise (); void DrawView (); }; diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredX.hh b/source/visualization/OpenGL/include/G4OpenGLStoredX.hh index e69ab9405c..f71bf4f9b9 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredX.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredX.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredX.hh,v 1.5.4.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredX.hh,v 1.6 2001/07/11 10:08:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh index 9dd5330379..24ebc309f3 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredXViewer.hh,v 1.3.4.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredXViewer.hh,v 1.5 2001/07/14 21:47:46 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 @@ -46,6 +46,7 @@ public G4OpenGLXViewer, public G4OpenGLStoredViewer{ public: G4OpenGLStoredXViewer (G4OpenGLStoredSceneHandler& scene, const G4String& name = ""); virtual ~G4OpenGLStoredXViewer (); + void Initialise (); void DrawView (); }; diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh index 42a9a791dc..fbc64fb83a 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXm.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredXm.hh,v 1.4.4.1 2001/06/28 19:15:38 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredXm.hh,v 1.5 2001/07/11 10:08:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh b/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh index 59577265fd..bc91c7b2fc 100644 --- a/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLStoredXmViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredXmViewer.hh,v 1.3.2.1 2001/06/28 19:15:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredXmViewer.hh,v 1.5 2001/07/14 21:47:47 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -46,6 +46,7 @@ public G4OpenGLXmViewer, public G4OpenGLStoredViewer{ public: G4OpenGLStoredXmViewer (G4OpenGLStoredSceneHandler& scene, const G4String& name = ""); virtual ~G4OpenGLStoredXmViewer (); + void Initialise (); void DrawView (); }; diff --git a/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh b/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh index 5ba614e673..740ff401ac 100644 --- a/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh +++ b/source/visualization/OpenGL/include/G4OpenGLTransform3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLTransform3D.hh,v 1.3.4.1 2001/06/28 19:15:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLTransform3D.hh,v 1.4 2001/07/11 10:08:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 24th October 1996 diff --git a/source/visualization/OpenGL/include/G4OpenGLViewer.hh b/source/visualization/OpenGL/include/G4OpenGLViewer.hh index 50be0a3d8d..5629840a58 100644 --- a/source/visualization/OpenGL/include/G4OpenGLViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLViewer.hh,v 1.6.2.1 2001/06/28 19:15:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLViewer.hh,v 1.7 2001/07/11 10:08:50 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh b/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh index 7718c79fd5..40b1a0f11d 100644 --- a/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLWin32Viewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLWin32Viewer.hh,v 1.4.2.1 2001/06/28 19:15:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLWin32Viewer.hh,v 1.5 2001/07/11 10:08:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4OpenGLWin32Viewer : Class to provide WindowsNT specific diff --git a/source/visualization/OpenGL/include/G4OpenGLXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLXViewer.hh index e9cf7d3dfa..8b96590c7e 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXViewer.hh,v 1.11.2.1 2001/06/28 19:15:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXViewer.hh,v 1.12 2001/07/11 10:08:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/include/G4OpenGLXmBox.hh b/source/visualization/OpenGL/include/G4OpenGLXmBox.hh index 42fd2448f3..397dcba9ee 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmBox.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmBox.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmBox.hh,v 1.5.2.1 2001/06/28 19:15:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmBox.hh,v 1.6 2001/07/11 10:08:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Box container class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh b/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh index 5cdf6a018e..d3b06c69fa 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmFourArrowButtons.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmFourArrowButtons.hh,v 1.4.2.1 2001/06/28 19:15:39 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmFourArrowButtons.hh,v 1.5 2001/07/11 10:08:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Four arrow buttons class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh b/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh index dd39d9018c..bdc6d65c80 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmFramedBox.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmFramedBox.hh,v 1.5.2.1 2001/06/28 19:15:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmFramedBox.hh,v 1.6 2001/07/11 10:08:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Framed box container class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh b/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh index 09d0b763b7..538a178213 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmPushButton.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmPushButton.hh,v 1.5.2.1 2001/06/28 19:15:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmPushButton.hh,v 1.6 2001/07/11 10:08:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Push button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh b/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh index dd8660df38..0c149faef3 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmRadioButton.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmRadioButton.hh,v 1.5.2.1 2001/06/28 19:15:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmRadioButton.hh,v 1.6 2001/07/11 10:08:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Radio button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmResources.hh b/source/visualization/OpenGL/include/G4OpenGLXmResources.hh index 322851881b..2d7e3250ff 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmResources.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmResources.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmResources.hh,v 1.3.4.1 2001/06/28 19:15:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmResources.hh,v 1.4 2001/07/11 10:08:51 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Default resources file for GEANT4 OpenGL Motif windows. diff --git a/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh b/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh index e72ec74d04..74dcfe4431 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmSeparator.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmSeparator.hh,v 1.4.2.1 2001/06/28 19:15:40 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmSeparator.hh,v 1.5 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Separator class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh b/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh index dd920b448d..bdcf6888bd 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmSliderBar.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmSliderBar.hh,v 1.5.2.1 2001/06/28 19:15:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmSliderBar.hh,v 1.6 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Slider bar class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh b/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh index 82a0af0e7d..dc0223ee39 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmTextField.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmTextField.hh,v 1.5.2.1 2001/06/28 19:15:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmTextField.hh,v 1.6 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Text field class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh b/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh index 0362a3eb59..ddff149364 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmTopLevelShell.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmTopLevelShell.hh,v 1.4.2.1 2001/06/28 19:15:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmTopLevelShell.hh,v 1.5 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Top level shell class diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh index d458b84846..b7d43b0c81 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetComponent.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmVWidgetComponent.hh,v 1.4.2.1 2001/06/28 19:15:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmVWidgetComponent.hh,v 1.5 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Base class for all Motif component widgets diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh index 2f89619d1b..e326bddcc2 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetContainer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmVWidgetContainer.hh,v 1.4.2.1 2001/06/28 19:15:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmVWidgetContainer.hh,v 1.5 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Base class for all Motif container widgets diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh index 85ce1a0e0f..62f73fb614 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetObject.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmVWidgetObject.hh,v 1.4.2.1 2001/06/28 19:15:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmVWidgetObject.hh,v 1.5 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Virtual base class for all Motif widgets. diff --git a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh index 276fd3b32a..81c6dd7cc7 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmVWidgetShell.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmVWidgetShell.hh,v 1.4.2.1 2001/06/28 19:15:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmVWidgetShell.hh,v 1.5 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // //Base class for all Motif window widgets (shells) diff --git a/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh b/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh index caa101ca36..843296a21a 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXmViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmViewer.hh,v 1.5.2.1 2001/06/28 19:15:41 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmViewer.hh,v 1.6 2001/07/11 10:08:52 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc index 010f920d33..0862dc4fc8 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateSceneHandler.cc,v 1.3.4.1 2001/06/28 19:15:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateSceneHandler.cc,v 1.6 2001/08/14 18:03:16 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -100,19 +100,30 @@ void G4OpenGLImmediateSceneHandler::EndPrimitives () { } void G4OpenGLImmediateSceneHandler::BeginModeling () { - + G4VSceneHandler::BeginModeling(); if (fpViewer -> GetViewParameters ().GetDrawingStyle() == G4ViewParameters::hlr) { initialize_hlr = true; } - G4VSceneHandler::BeginModeling(); } void G4OpenGLImmediateSceneHandler::EndModeling () { - G4VSceneHandler::EndModeling (); if (fpViewer -> GetViewParameters ().GetDrawingStyle() == G4ViewParameters::hlr) { initialize_hlr = true; // glDisable (GL_POLYGON_OFFSET_FILL); } + G4VSceneHandler::EndModeling (); +} + +void G4OpenGLImmediateSceneHandler::ClearTransientStore () { + + G4VSceneHandler::ClearTransientStore (); + + // For immediate mode, clear screen and re-draw detector. + if (fpViewer) { + fpViewer -> SetView (); + fpViewer -> ClearView (); + fpViewer -> DrawView (); + } } G4int G4OpenGLImmediateSceneHandler::GetSceneCount () { @@ -124,4 +135,3 @@ G4int G4OpenGLImmediateSceneHandler::fSceneIdCount = 0; G4int G4OpenGLImmediateSceneHandler::fSceneCount = 0; #endif - diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc index 06b49b45cf..5cf8b24e5c 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateViewer.cc,v 1.3.4.1 2001/06/28 19:15:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateViewer.cc,v 1.4 2001/07/11 10:08:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc index 303645b718..112d4bccae 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateWin32.cc,v 1.5.4.1 2001/06/28 19:15:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateWin32.cc,v 1.6 2001/07/11 10:08:53 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // OpenGLImmediateWin32 graphics system factory. diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc index 0465cd3eb8..edaf764c02 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateWin32Viewer.cc,v 1.2.4.1 2001/06/28 19:15:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateWin32Viewer.cc,v 1.4 2001/07/14 21:47:49 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4OpenGLImmediateWin32Viewer : a class derived from G4OpenGLWin32Viewer and @@ -47,6 +47,9 @@ G4OpenGLImmediateViewer (scene), G4VViewer (scene, scene.IncrementViewCount ()) { if (fViewId < 0) return; // In case error in base class instantiation. +} + +void G4OpenGLImmediateWin32Viewer::Initialise () { // ensure a suitable window was found @@ -66,7 +69,6 @@ G4VViewer (scene, scene.IncrementViewCount ()) { glDepthFunc (GL_LEQUAL); glDepthMask (GL_TRUE); - } void G4OpenGLImmediateWin32Viewer::DrawView () { diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc index e821cd0e28..7350cafb21 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateX.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateX.cc,v 1.6.4.1 2001/06/28 19:15:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateX.cc,v 1.7 2001/07/11 10:08:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc index d241ca92b5..ff66c792a1 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateXViewer.cc,v 1.4.4.1 2001/06/28 19:15:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateXViewer.cc,v 1.6 2001/07/14 21:47:50 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 @@ -60,6 +60,11 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { fViewId = -1; // This flags an error. return; } +} + +G4OpenGLImmediateXViewer::~G4OpenGLImmediateXViewer () {} + +void G4OpenGLImmediateXViewer::Initialise () { CreateGLXContext (vi_immediate); @@ -71,6 +76,17 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { ClearView (); FinishView (); + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + //The following code was in the constructor and found not to work for + //the reasons below. It was moved to DrawView(), but has now been moved + //to Initialise(). + //The following code is useless in its current position, as the + //G4OpenGLXmViewer constructor gets called *after* it, and hence sets + //doublebuffer to true or false there, after our little test to correct + //it in the case of a double buffer being got for an immediate view. + //Hence, code moved to DrawView. + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // If a double buffer context has been forced upon us, ignore the // back buffer for this OpenGLImmediate view. if (doublebuffer) { @@ -80,20 +96,10 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { glDepthFunc (GL_LEQUAL); glDepthMask (GL_TRUE); - } -G4OpenGLImmediateXViewer::~G4OpenGLImmediateXViewer () {} - void G4OpenGLImmediateXViewer::DrawView () { - // If a double buffer context has been forced upon us, ignore the - // back buffer for this OpenGLImmediate view. - if (doublebuffer) { - doublebuffer = false; - glDrawBuffer (GL_FRONT); - } - if (white_background == true) { glClearColor (1., 1., 1., 1.); } else { diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc index b570554efe..d80d98a691 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXm.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateXm.cc,v 1.6.2.1 2001/06/28 19:15:42 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateXm.cc,v 1.7 2001/07/11 10:08:54 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc index fd5d387a33..03f27476dd 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLImmediateXmViewer.cc,v 1.4.2.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLImmediateXmViewer.cc,v 1.6 2001/07/14 21:47:51 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -58,6 +58,11 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { fViewId = -1; // This flags an error. return; } +} + +G4OpenGLImmediateXmViewer::~G4OpenGLImmediateXmViewer () {} + +void G4OpenGLImmediateXmViewer::Initialise () { CreateGLXContext (vi_immediate); @@ -80,6 +85,9 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { glShadeModel (GL_FLAT); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + //The following code was in the constructor and found not to work for + //the reasons below. It was moved to DrawView(), but has now been moved + //to Initialise(). //The following code is useless in its current position, as the //G4OpenGLXmViewer constructor gets called *after* it, and hence sets //doublebuffer to true or false there, after our little test to correct @@ -89,23 +97,14 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { // If a double buffer context has been forced upon us, ignore the // back buffer for this OpenGLImmediate view. - // if (doublebuffer) { - // doublebuffer = false; - // glDrawBuffer (GL_FRONT); - // } + if (doublebuffer) { + doublebuffer = false; + glDrawBuffer (GL_FRONT); + } } -G4OpenGLImmediateXmViewer::~G4OpenGLImmediateXmViewer () {} - void G4OpenGLImmediateXmViewer::DrawView () { - // If a double buffer context has been forced upon us, ignore the - // back buffer for this OpenGLImmediate view. - if (doublebuffer) { - doublebuffer = false; - glDrawBuffer (GL_FRONT); - } - if (white_background == true) { glClearColor (1., 1., 1., 1.); } else { diff --git a/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc index 07e0af8440..35ae36c345 100644 --- a/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLSceneHandler.cc,v 1.10.2.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLSceneHandler.cc,v 1.14 2001/08/24 18:37:09 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 27th March 1996 @@ -116,16 +116,25 @@ void G4OpenGLSceneHandler::AddPrimitive (const G4Polyline& line) } void G4OpenGLSceneHandler::AddPrimitive (const G4Text& text) { + + static G4int callCount (0); + ++callCount; + MarkerSizeType sizeType; G4double size = GetMarkerSize (text, sizeType); - G4cout - << "G4OpenGLSceneHandler::AddPrimitive (const G4Text& text) not implemented yet." - << "\n Called with text \"" << text.GetText () - << "\" at " << text.GetPosition () - << ", size " << size - << ", offsets " << text.GetXOffset () << ", " << text.GetYOffset () - << ", type " << G4int(sizeType) - << G4endl; + G4ThreeVector position (*fpObjectTransformation * text.GetPosition ()); + if (callCount <= 10 || callCount%100 == 0) { + G4cout << + "G4OpenGLSceneHandler::AddPrimitive (const G4Text&) call count " + << callCount << + "\n Not implemented yet. Called with text \"" + << text.GetText () + << "\"\n at " << position + << ", size " << size + << ", offsets " << text.GetXOffset () << ", " << text.GetYOffset () + << ", type " << G4int(sizeType) + << G4endl; + } } void G4OpenGLSceneHandler::AddPrimitive (const G4Circle& circle) { @@ -240,7 +249,7 @@ recreate the display lists. The down side is that the markers rotate. The only way to avoid this is to play with the modelview and projection matrices of OpenGL - which I need to think about. For future reference, here is the code to draw in window -coordinates; it's down side is tha markers do not follow global +coordinates; its down side is that markers do not follow global transformations. Some clever stuff is needed. ... diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc b/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc index 013b1c407b..499b3d74bf 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredSceneHandler.cc,v 1.10.2.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredSceneHandler.cc,v 1.13 2001/08/14 18:03:17 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -42,23 +42,10 @@ #include #include -#include "G4OpenGLSceneHandler.hh" -#include "G4OpenGLViewer.hh" -#include "G4OpenGLTransform3D.hh" -#include "G4Point3D.hh" -#include "G4Normal3D.hh" -#include "G4Transform3D.hh" -#include "G4Polyline.hh" -#include "G4Text.hh" -#include "G4Circle.hh" -#include "G4Square.hh" -#include "G4Polyhedron.hh" -#include "G4VisAttributes.hh" -#include "G4VPhysicalVolume.hh" -#include "G4ModelingParameters.hh" -#include "G4VModel.hh" #include "G4OpenGLStoredSceneHandler.hh" +#include "G4VPhysicalVolume.hh" + G4OpenGLStoredSceneHandler::G4OpenGLStoredSceneHandler (G4VGraphicsSystem& system, const G4String& name): G4OpenGLSceneHandler (system, fSceneIdCount++, name), @@ -123,13 +110,53 @@ void G4OpenGLStoredSceneHandler::EndPrimitives () { G4VSceneHandler::EndPrimitives (); } +void G4OpenGLStoredSceneHandler::BeginModeling () { + G4VSceneHandler::BeginModeling(); + if (fpViewer -> GetViewParameters ().GetDrawingStyle() == G4ViewParameters::hlr) { + initialize_hlr = true; + } + ClearStore(); // ...and all that goes with it. +} + +void G4OpenGLStoredSceneHandler::EndModeling () { + // Make a List which calls the other lists. + fTopPODL = glGenLists (1); + if (!fTopPODL) { + G4cout << + "ERROR: G4OpenGLStoredSceneHandler::EndModeling: Failure to allocate" + " display List for fTopPODL - suggest trying OpenGL Immediated mode." + << G4endl; + } + else { + + glNewList (fTopPODL, GL_COMPILE); { + for (size_t i = 0; i < fPODLList.size (); i++) { + glPushMatrix(); + G4OpenGLTransform3D oglt (fPODLTransformList [i]); + glMultMatrixd (oglt.GetGLMatrix ()); + glCallList (fPODLList[i]); + glPopMatrix(); + } + } + glEndList (); + + if (fpViewer -> GetViewParameters ().GetDrawingStyle() == G4ViewParameters::hlr) { + initialize_hlr = false; + // glDisable (GL_POLYGON_OFFSET_FILL); + } + + } + + G4VSceneHandler::EndModeling (); +} + void G4OpenGLStoredSceneHandler::ClearStore () { G4VSceneHandler::ClearStore (); // Sets need kernel visit, etc. size_t i; - // Delete OpenGL display lists. + // Delete OpenGL permanent display lists. for (i = 0; i < fPODLList.size (); i++) { if (fPODLList [i]) { glDeleteLists (fPODLList [i], 1); @@ -137,6 +164,34 @@ void G4OpenGLStoredSceneHandler::ClearStore () { G4cerr << "Warning : NULL display List in fPODLList." << G4endl; } } + + if (fTopPODL) glDeleteLists (fTopPODL, 1); + fTopPODL = 0; + + // Clear other lists, dictionary, etc. + fPODLList.clear (); + fPODLTransformList.clear (); + fSolidMap.clear (); + + // ...and clear transient store... + for (i = 0; i < fTODLList.size (); i++) { + if (fTODLList [i]) { + glDeleteLists (fTODLList [i], 1); + } else { + G4cerr << "Warning : NULL display List in fTODLList." << G4endl; + } + } + fTODLList.clear (); + fTODLTransformList.clear (); +} + +void G4OpenGLStoredSceneHandler::ClearTransientStore () { + + G4VSceneHandler::ClearTransientStore (); + + size_t i; + + // Delete OpenGL transient display lists. for (i = 0; i < fTODLList.size (); i++) { if (fTODLList [i]) { glDeleteLists (fTODLList [i], 1); @@ -145,56 +200,20 @@ void G4OpenGLStoredSceneHandler::ClearStore () { } } - if (fTopPODL) glDeleteLists (fTopPODL, 1); - fTopPODL = 0; - - fMemoryForDisplayLists = glIsList (fTopPODL = glGenLists (1)); - // Clear other lists, dictionary, etc. - fPODLList.clear (); fTODLList.clear (); - fPODLTransformList.clear (); fTODLTransformList.clear (); - fSolidMap.clear (); -} -void G4OpenGLStoredSceneHandler::BeginModeling () { - - if (fpViewer -> GetViewParameters ().GetDrawingStyle() == G4ViewParameters::hlr) { - initialize_hlr = true; - } - G4VSceneHandler::BeginModeling(); -} - -void G4OpenGLStoredSceneHandler::EndModeling () { - // Make a List which calls the other lists. - -// if (!(fTopPODL = glGenLists (1))) { -// G4Exception ("Unable to allocate display List for fTopPODL in G4OpenGLStoredSceneHandler"); -// } - - glNewList (fTopPODL, GL_COMPILE); { - for (size_t i = 0; i < fPODLList.size (); i++) { - glPushMatrix(); - G4OpenGLTransform3D oglt (fPODLTransformList [i]); - glMultMatrixd (oglt.GetGLMatrix ()); - glCallList (fPODLList[i]); - glPopMatrix(); - } - } - glEndList (); - G4VSceneHandler::EndModeling (); - - if (fpViewer -> GetViewParameters ().GetDrawingStyle() == G4ViewParameters::hlr) { - initialize_hlr = false; - // glDisable (GL_POLYGON_OFFSET_FILL); + // Make sure screen corresponds to graphical database... + if (fpViewer) { + fpViewer -> SetView (); + fpViewer -> ClearView (); + fpViewer -> DrawView (); } } void G4OpenGLStoredSceneHandler::RequestPrimitives (const G4VSolid& solid) { - if (fReadyForTransients || - GetModel () -> GetModelingParameters () -> GetRepStyle () == - G4ModelingParameters::hierarchy) { + if (fReadyForTransients) { G4VSceneHandler::RequestPrimitives (solid); } else { diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc index 2d40e4412a..dd6e84b899 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredViewer.cc,v 1.5.2.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredViewer.cc,v 1.7 2001/08/14 18:03:19 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 @@ -42,22 +42,36 @@ #include #include -class G4OpenGLStoredSceneHandler; +#include "G4OpenGLStoredSceneHandler.hh" -G4OpenGLStoredViewer::G4OpenGLStoredViewer (G4OpenGLStoredSceneHandler& scene): -G4VViewer (scene, -1), -G4OpenGLViewer (scene), -fSceneHandler (scene) -{} +G4OpenGLStoredViewer::G4OpenGLStoredViewer +(G4OpenGLStoredSceneHandler& sceneHandler): +G4VViewer (sceneHandler, -1), +G4OpenGLViewer (sceneHandler), +fG4OpenGLStoredSceneHandler (sceneHandler) +{ + fLastVP = fDefaultVP; // Not sure if this gets executed before or + // after G4VViewer::G4VViewer!! Doesn't matter much. +} G4OpenGLStoredViewer::~G4OpenGLStoredViewer () {} void G4OpenGLStoredViewer::KernelVisitDecision () { - // Trigger a display List refresh if necessary. This is a checklist - // of relevant view parameters. + // If there's a significant difference with the last view parameters + // of either the scene handler or this viewer, trigger a rebuild. + + if (!fG4OpenGLStoredSceneHandler.fTopPODL || + CompareForKernelVisit(fG4OpenGLStoredSceneHandler.fLastVP) || + CompareForKernelVisit(fLastVP)) { + NeedKernelVisit (); + } + fLastVP = fVP; + fG4OpenGLStoredSceneHandler.fLastVP = fVP; +} + +G4bool G4OpenGLStoredViewer::CompareForKernelVisit(G4ViewParameters& lastVP) { - static G4ViewParameters lastVP; // Initialised to default. G4bool need = false; if ( @@ -86,23 +100,22 @@ void G4OpenGLStoredViewer::KernelVisitDecision () { if (!need && lastVP.IsExplode () && (lastVP.GetExplodeFactor () != fVP.GetExplodeFactor ())) need = true; - - if (need) { - lastVP = fVP; - NeedKernelVisit (); - } + + return need; } void G4OpenGLStoredViewer::DrawDisplayLists () { - if (fSceneHandler.fTopPODL) glCallList (fSceneHandler.fTopPODL); + if (fG4OpenGLStoredSceneHandler.fTopPODL) + glCallList (fG4OpenGLStoredSceneHandler.fTopPODL); - G4int nTODLs = fSceneHandler.fTODLList.size (); + G4int nTODLs = fG4OpenGLStoredSceneHandler.fTODLList.size (); for (int i = 0; i < nTODLs; i++) { glPushMatrix(); - G4OpenGLTransform3D oglt (fSceneHandler.fTODLTransformList [i]); + G4OpenGLTransform3D oglt + (fG4OpenGLStoredSceneHandler.fTODLTransformList [i]); glMultMatrixd (oglt.GetGLMatrix ()); - glCallList (fSceneHandler.fTODLList[i]); + glCallList (fG4OpenGLStoredSceneHandler.fTODLList[i]); glPopMatrix(); } } diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc b/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc index b0a6770e52..8d3d1aabe3 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredWin32.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredWin32.cc,v 1.5.4.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredWin32.cc,v 1.6 2001/07/11 10:08:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // OpenGLStoredWin32 graphics system factory. diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc index 6deb6ae984..b4221023c6 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredWin32Viewer.cc,v 1.2.4.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredWin32Viewer.cc,v 1.4 2001/07/14 21:47:53 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Class G4OpenGLStoredWin32Viewer : a class derived from G4OpenGLWin32Viewer and @@ -47,6 +47,9 @@ G4OpenGLStoredViewer (scene), G4VViewer (scene, scene.IncrementViewCount ()) { if (fViewId < 0) return; // In case error in base class instantiation. +} + +void G4OpenGLStoredWin32Viewer::Initialse () { //Check that G4OpenGLWin32Viewer got a double buffered colour visual @@ -59,7 +62,6 @@ G4VViewer (scene, scene.IncrementViewCount ()) { glDepthFunc (GL_LEQUAL); glDepthMask (GL_TRUE); - } void G4OpenGLStoredWin32Viewer::DrawView () { diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredX.cc b/source/visualization/OpenGL/src/G4OpenGLStoredX.cc index 951cf180b9..7c2ff49bd0 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredX.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredX.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredX.cc,v 1.6.4.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredX.cc,v 1.7 2001/07/11 10:08:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc index a599639d32..1832a17b7e 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredXViewer.cc,v 1.4.4.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredXViewer.cc,v 1.7 2001/08/14 18:03:20 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 @@ -59,6 +59,11 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { " G4OpenGLXViewer couldn't get a visual." << G4endl; return; } +} + +G4OpenGLStoredXViewer::~G4OpenGLStoredXViewer () {} + +void G4OpenGLStoredXViewer::Initialise () { CreateGLXContext (vi_stored); @@ -72,22 +77,20 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { glDepthFunc (GL_LEQUAL); glDepthMask (GL_TRUE); - } -G4OpenGLStoredXViewer::~G4OpenGLStoredXViewer () {} - void G4OpenGLStoredXViewer::DrawView () { + //Make sure current viewer is attached and clean... + glXMakeCurrent (dpy, win, cx); + glViewport (0, 0, WinSize_x, WinSize_y); + if (white_background == true) { glClearColor (1., 1., 1., 1.); } else { glClearColor (0., 0., 0., 1.); } - //Make sure current viewer is attached and clean... - glXMakeCurrent (dpy, win, cx); - glViewport (0, 0, WinSize_x, WinSize_y); ClearView (); G4ViewParameters::DrawingStyle style = GetViewParameters().GetDrawingStyle(); diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc index c25e16b0a4..316946fd39 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXm.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredXm.cc,v 1.5.4.1 2001/06/28 19:15:43 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredXm.cc,v 1.6 2001/07/11 10:08:55 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc index 4ef5cd3b05..458b0cba36 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLStoredXmViewer.cc,v 1.4.2.1 2001/06/28 19:15:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLStoredXmViewer.cc,v 1.6 2001/07/14 21:47:55 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -56,6 +56,11 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { " G4OpenGLXmViewer couldn't get a visual." << G4endl; return; } +} + +G4OpenGLStoredXmViewer::~G4OpenGLStoredXmViewer () {} + +void G4OpenGLStoredXmViewer::Initialise () { CreateGLXContext (vi_stored); @@ -75,8 +80,6 @@ G4VViewer (scene, scene.IncrementViewCount (), name) { glShadeModel (GL_FLAT); } -G4OpenGLStoredXmViewer::~G4OpenGLStoredXmViewer () {} - void G4OpenGLStoredXmViewer::DrawView () { if (white_background == true) { diff --git a/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc b/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc index e994d7f297..168d11bb95 100644 --- a/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc +++ b/source/visualization/OpenGL/src/G4OpenGLTransform3D.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLTransform3D.cc,v 1.3.4.1 2001/06/28 19:15:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLTransform3D.cc,v 1.4 2001/07/11 10:08:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 24th October 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLViewer.cc b/source/visualization/OpenGL/src/G4OpenGLViewer.cc index 82d3d6c08b..c7c207c305 100644 --- a/source/visualization/OpenGL/src/G4OpenGLViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLViewer.cc,v 1.11.2.1 2001/06/28 19:15:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLViewer.cc,v 1.12 2001/07/11 10:08:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc index d40e028c36..ee277d6699 100644 --- a/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLWin32Viewer.cc,v 1.2.4.1 2001/06/28 19:15:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLWin32Viewer.cc,v 1.3 2001/07/11 10:08:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // G4OpenGLWin32Viewer : Class to provide WindowsNT specific diff --git a/source/visualization/OpenGL/src/G4OpenGLXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLXViewer.cc index 0603ea6cfa..aa1dd0fb7f 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXViewer.cc,v 1.10.2.1 2001/06/28 19:15:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXViewer.cc,v 1.13 2001/11/29 12:14:01 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 7th February 1997 @@ -540,8 +540,8 @@ G4float* G4OpenGLXViewer::spewPrimitiveEPS (FILE* file, GLfloat* loc) { GLfloat dx, dy, dr, dg, db, absR, absG, absB, colormax; G4int steps; Feedback3Dcolor *vertex; - GLfloat xstep, ystep, rstep, gstep, bstep; - GLfloat xnext, ynext, rnext, gnext, bnext, distance; + GLfloat xstep(0.), ystep(0.), rstep(0.), gstep(0.), bstep(0.); + GLfloat xnext(0.), ynext(0.), rnext(0.), gnext(0.), bnext(0.), distance(0.); token=G4int (*loc); loc++; @@ -863,13 +863,13 @@ GLXContext G4OpenGLXViewer::create_GL_print_context(XVisualInfo*& pvi, G4bool& d XDefaultScreen (dpy), snglBuf_RGBA); - if (pvi != NULL) { + if (pvi) { db=false; } else { pvi = glXChooseVisual (dpy, XDefaultScreen (dpy), dblBuf_RGBA); - if (NULL) { + if (!pvi) { db=true; } } diff --git a/source/visualization/OpenGL/src/G4OpenGLXmBox.cc b/source/visualization/OpenGL/src/G4OpenGLXmBox.cc index 821438ae2c..02c501d48a 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmBox.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmBox.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmBox.cc,v 1.4.2.1 2001/06/28 19:15:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmBox.cc,v 1.5 2001/07/11 10:08:56 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Box container class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc b/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc index da54d1e732..8fc64fdaaa 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmConvenienceRoutines.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmConvenienceRoutines.cc,v 1.5.2.1 2001/06/28 19:15:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmConvenienceRoutines.cc,v 1.7 2001/11/29 12:14:02 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 16th April 1997 @@ -191,7 +191,8 @@ void G4OpenGLXmViewer::Add_radio_box (char* label_string, G4OpenGLXmViewer* pView) { - XmString button_str; + XmString button_str = XmStringCreateLocalized(""); // ...to + // initialise to something to avoid pedantic warning. Arg** args; args = new Arg* [num_buttons]; Widget button; @@ -368,7 +369,8 @@ void G4OpenGLXmViewer::Add_slider_box (char* label_string, XtCallbackRec** slider_box_callbacks, Widget* parent_widget) { - XmString slider_name_str; + XmString slider_name_str = XmStringCreateLocalized(""); // ...to + // initialise to something to avoid pedantic warning. Arg** slider_args; slider_args = new Arg*[num_sliders]; Widget slider; diff --git a/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc b/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc index bc180d830f..55abc11cfe 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmFourArrowButtons.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmFourArrowButtons.cc,v 1.3.4.1 2001/06/28 19:15:44 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmFourArrowButtons.cc,v 1.4 2001/07/11 10:08:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Four arrow buttons class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc b/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc index 1c9e5eab82..e61f33bbba 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmFramedBox.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmFramedBox.cc,v 1.4.2.1 2001/06/28 19:15:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmFramedBox.cc,v 1.5 2001/07/11 10:08:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Framed box container class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc index ab96bbef8e..5c3b4859c1 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmMainMenubarCallbacks.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmMainMenubarCallbacks.cc,v 1.8.2.1 2001/06/28 19:15:45 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmMainMenubarCallbacks.cc,v 1.9 2001/07/11 10:08:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc index 6f191b22a5..05e2d76e12 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmPanningCallbacks.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmPanningCallbacks.cc,v 1.5.2.1 2001/06/28 19:15:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmPanningCallbacks.cc,v 1.6 2001/07/11 10:08:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc b/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc index 419ddd0f04..72b39966de 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmPushButton.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmPushButton.cc,v 1.4.2.1 2001/06/28 19:15:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmPushButton.cc,v 1.5 2001/07/11 10:08:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Push button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc b/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc index c923461c0d..16292edd86 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmRadioButton.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmRadioButton.cc,v 1.4.2.1 2001/06/28 19:15:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmRadioButton.cc,v 1.5 2001/07/11 10:08:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Radio button class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc index 92fce57c6b..9802508b56 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmRotationCallbacks.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmRotationCallbacks.cc,v 1.10.2.1 2001/06/28 19:15:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmRotationCallbacks.cc,v 1.11 2001/07/11 10:08:57 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 16th April 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc b/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc index ed601b793b..f7cc7b7812 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmSeparator.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmSeparator.cc,v 1.3.4.1 2001/06/28 19:15:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmSeparator.cc,v 1.4 2001/07/11 10:08:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Separator class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc b/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc index bb7c7d52e9..b273ba1e86 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmSliderBar.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmSliderBar.cc,v 1.4.2.1 2001/06/28 19:15:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmSliderBar.cc,v 1.5 2001/07/11 10:08:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Slider bar class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc index 74d446a26c..bed9283f2c 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmStyleCallbacks.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmStyleCallbacks.cc,v 1.4.2.1 2001/06/28 19:15:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmStyleCallbacks.cc,v 1.6 2001/11/12 18:22:09 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 16th April 1997 @@ -65,6 +65,7 @@ void G4OpenGLXmViewer::drawing_style_callback (Widget w, break; default: + style = G4ViewParameters::wireframe; G4Exception("Unrecognised case in drawing_style_callback."); } @@ -97,6 +98,7 @@ void G4OpenGLXmViewer::rep_style_callback (Widget w, break; default: + style = G4ViewParameters::polyhedron; G4Exception("Unrecognised case in rep_style_callback."); } diff --git a/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc b/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc index 4ad7106c0b..d0a2881bf0 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmTextField.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmTextField.cc,v 1.5.2.1 2001/06/28 19:15:46 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmTextField.cc,v 1.6 2001/07/11 10:08:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Text field class. Inherits from G4OpenGLXmVWidgetComponent diff --git a/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc b/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc index 683522f8ca..6a9fb8859a 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmTopLevelShell.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmTopLevelShell.cc,v 1.3.4.1 2001/06/28 19:15:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmTopLevelShell.cc,v 1.4 2001/07/11 10:08:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Top level shell class diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc index 35696335fd..39ddfa5bd4 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetComponent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmVWidgetComponent.cc,v 1.3.4.1 2001/06/28 19:15:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmVWidgetComponent.cc,v 1.4 2001/07/11 10:08:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Base class for all Motif component widgets diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc index 6baf95ce6d..54dd07cc2d 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetContainer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmVWidgetContainer.cc,v 1.3.4.1 2001/06/28 19:15:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmVWidgetContainer.cc,v 1.4 2001/07/11 10:08:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Base class for all Motif container widgets diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc index 770d97b937..63d44ddf13 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetObject.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmVWidgetObject.cc,v 1.3.4.1 2001/06/28 19:15:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmVWidgetObject.cc,v 1.4 2001/07/11 10:08:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Virtual base class for all Motif widgets. diff --git a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc index 7ef8644e19..3d024d80dd 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmVWidgetShell.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmVWidgetShell.cc,v 1.3.4.1 2001/06/28 19:15:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmVWidgetShell.cc,v 1.4 2001/07/11 10:08:58 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // //Base class for all Motif shell widgets diff --git a/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc index fd5c62ea23..f3e3ee2df2 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmViewer.cc,v 1.8.2.1 2001/06/28 19:15:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmViewer.cc,v 1.10 2001/07/30 23:34:22 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 10th February 1997 @@ -56,25 +56,12 @@ #include "G4Xt.hh" #include -static G4ViewParameters viewingParameters; -void G4OpenGLXmViewerSecondaryLoopPostAction (); - void G4OpenGLXmViewer::ShowView () { - viewingParameters = fVP; G4Xt::getInstance () -> SecondaryLoop (); } -void G4OpenGLXmViewerSecondaryLoopPostAction () -{ - if(G4Xt::getInstance () -> GetExitSecondaryLoopCode ()==OGL_EXIT_CODE) - { - G4VisManager::GetInstance() -> SetCurrentViewParameters() = viewingParameters; - } -} - - void G4OpenGLXmViewer::GetXmConnection () { G4Xt* interactorManager = G4Xt::getInstance (); @@ -109,7 +96,7 @@ void G4OpenGLXmViewer::GetXmConnection () { *toplevel*primaryColorSetId: 3\n\ *toplevel*secondaryColorSetId: 3\n\ "); - interactorManager->AddSecondaryLoopPostAction ((G4SecondaryLoopAction)G4OpenGLXmViewerSecondaryLoopPostAction); + // interactorManager->AddSecondaryLoopPostAction ((G4SecondaryLoopAction)G4OpenGLXmViewerSecondaryLoopPostAction); shell = XtAppCreateShell ((String)fName.data(),(String)fName.data(),topLevelShellWidgetClass,XtDisplay(toplevel),NULL,0); interactorManager->AddShell (shell); diff --git a/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc index a078ab0083..cfc621836f 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenGLXmWindowHandlingCallbacks.cc,v 1.4.2.1 2001/06/28 19:15:47 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenGLXmWindowHandlingCallbacks.cc,v 1.5 2001/07/11 10:08:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 16th June 1997 diff --git a/source/processes/electromagnetic/integral/History b/source/visualization/OpenInventor/History similarity index 77% rename from source/processes/electromagnetic/integral/History rename to source/visualization/OpenInventor/History index 14102a5412..3c2f0337fc 100644 --- a/source/processes/electromagnetic/integral/History +++ b/source/visualization/OpenInventor/History @@ -1,4 +1,4 @@ -$Id: History,v 1.1 2001/03/05 10:55:19 maire Exp $ +$Id: History,v 1.1 2001/08/14 18:38:30 johna Exp $ ------------------------------------------------------------------- ========================================================= @@ -16,8 +16,9 @@ committal in the CVS repository ! ---------------------------------------------------------- * Reverse chronological order (last date on top), please * ---------------------------------------------------------- - -05 mar 01: mma (integral-V03-00-04) -- creation of this subdirectory: - migration of all G4I.. processes from muons, standard, utils +History file for visualization/OpenInventor +------------------------------------------- + +14th August 2001 John Allison (vis-V03-02-11) +- Improved KernelVisitDecision - but see note therein. diff --git a/source/visualization/OpenInventor/include/G4OpenInventor.hh b/source/visualization/OpenInventor/include/G4OpenInventor.hh index f98d7540f4..a598b85f2d 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventor.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventor.hh,v 1.5.4.1 2001/06/28 19:15:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventor.hh,v 1.6 2001/07/11 10:08:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // Guy Barrand 26 Mar 1998. // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh index a50f6ba062..e55dad8095 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorSceneHandler.hh,v 1.9.4.1 2001/06/28 19:15:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorSceneHandler.hh,v 1.12 2001/08/24 21:48:32 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // J Kallenbach 27th Aug 1996 @@ -57,6 +57,12 @@ public: void AddPrimitive (const G4Polyhedron& p); void AddPrimitive (const G4NURBS& nurb); void AddPrimitive (const G4Polymarker&); + //////////////////////////////////////////////////////////////// + // Explicitly invoke base class methods to avoid warnings about + // hiding of base class methods. + void AddPrimitive (const G4Scale& scale) { + G4VSceneHandler::AddPrimitive (scale); + } // // Primitives for use of HEPVis @@ -89,6 +95,11 @@ private: static G4int fSceneIdCount; // static counter for OpenInventor scenes. static G4int fSceneCount; // No. of extanct scene handlers. G4double GetMarkerSize ( const G4VMarker& mark ) ; + G4ViewParameters fLastVP; // Keeps memory of last view parameters, + // namely the ones which go with the graphical database + // (display lists). A view may interrogate this to decide if + // it needs to visit the kernel, i.e., to remake the + // graphical database. // // Stop-gap solution of structure re-use. diff --git a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.icc b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.icc index 0d3f10e324..2469a582ee 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.icc +++ b/source/visualization/OpenInventor/include/G4OpenInventorSceneHandler.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorSceneHandler.icc,v 1.3.4.1 2001/06/28 19:15:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorSceneHandler.icc,v 1.4 2001/07/11 10:08:59 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // J Kallenbach 27th Aug 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh b/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh index 486a194b40..0b1992e908 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorTransform3D.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorTransform3D.hh,v 1.3.4.1 2001/06/28 19:15:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorTransform3D.hh,v 1.4 2001/07/11 10:09:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // jck 17 Dec 1996 diff --git a/source/visualization/OpenInventor/include/G4OpenInventorViewer.hh b/source/visualization/OpenInventor/include/G4OpenInventorViewer.hh index 6ecb66dd47..25ef2cf7d7 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorViewer.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorViewer.hh,v 1.7.2.1 2001/06/28 19:15:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorViewer.hh,v 1.10 2001/11/14 14:56:11 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Jeff Kallenbach 01 Aug 1996 @@ -39,7 +39,7 @@ class SoXtComponent; class SoSelection; -class SoWindow; +class G4SoWindow; class G4OpenInventorSceneHandler; class G4VInteractorManager; @@ -59,10 +59,12 @@ private: void FinishView (); void SetView (); void KernelVisitDecision (); + G4bool CompareForKernelVisit(G4ViewParameters&); - G4OpenInventorSceneHandler& fSceneHandler; // Graphics Scene for this view. + G4OpenInventorSceneHandler& fG4OpenInventorSceneHandler; + G4ViewParameters fLastVP; // Memory for making kernel visit decisions. Widget fShell; - SoWindow* fWindow; + G4SoWindow* fWindow; SoXtComponent* fViewer; // The Inventor Viewer SoSelection* fSelection; G4VInteractorManager* fInteractorManager; @@ -71,5 +73,3 @@ private: #endif #endif - - diff --git a/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh b/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh index 5408faa3d9..af208ef8ef 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorWin32.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorWin32.hh,v 1.4.4.1 2001/06/28 19:15:48 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorWin32.hh,v 1.5 2001/07/11 10:09:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/include/G4OpenInventorX.hh b/source/visualization/OpenInventor/include/G4OpenInventorX.hh index 0fa2d8cb7d..c13af1546b 100644 --- a/source/visualization/OpenInventor/include/G4OpenInventorX.hh +++ b/source/visualization/OpenInventor/include/G4OpenInventorX.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorX.hh,v 1.4.4.1 2001/06/28 19:15:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorX.hh,v 1.5 2001/07/11 10:09:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenInventor/include/G4SoWindow.hh b/source/visualization/OpenInventor/include/G4SoWindow.hh new file mode 100644 index 0000000000..9afd2c488e --- /dev/null +++ b/source/visualization/OpenInventor/include/G4SoWindow.hh @@ -0,0 +1,59 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#ifndef G4SOWINDOW_h +#define G4SOWINDOW_h + +#include +#include + +class SbDict; + +class G4SoWindow { +public: + G4SoWindow(const char*,SbBool=FALSE); + virtual ~G4SoWindow(); + Widget getWidget() const; + void show(); + void hide(); + void setTitle(const char*); + void setSize(const SbVec2s&); + SbVec2s getSize(); + void setWMClose(SbBool); + SbBool getWMClose() const; + static void clearClass(); +protected: + void registerWidget(Widget); + void unregisterWidget(Widget); + static G4SoWindow* getWindow(Widget); +private: + Widget fWidget; + SbBool fWMClose; + static SbDict* fWidgetDictionary; +#ifdef HEPVisXt + static void widgetDestroyedCB(Widget,XtPointer,XtPointer); +public: + static void closeWindow(Widget,XEvent*,char**,Cardinal*); +#endif +}; + +#endif diff --git a/source/visualization/OpenInventor/src/G4OpenInventor.cc b/source/visualization/OpenInventor/src/G4OpenInventor.cc index 1a9975fe41..0d47755d03 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventor.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventor.cc,v 1.7.4.1 2001/06/28 19:15:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventor.cc,v 1.8 2001/07/11 10:09:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifdef G4VIS_BUILD_OI_DRIVER diff --git a/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc b/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc index 763736d7e7..8dc7bbc500 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorSceneHandler.cc,v 1.11.2.1 2001/06/28 19:15:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorSceneHandler.cc,v 1.12 2001/07/11 10:09:00 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Jeff Kallenbach 01 Aug 1996 diff --git a/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc b/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc index f5fab41226..e32115647c 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorTransform3D.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorTransform3D.cc,v 1.3.4.1 2001/06/28 19:15:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorTransform3D.cc,v 1.4 2001/07/11 10:09:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // jck 17 Dec 1996 diff --git a/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc b/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc index b02ed0861c..f185841356 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorViewer.cc,v 1.5.2.1 2001/06/28 19:15:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorViewer.cc,v 1.8 2001/11/14 14:56:12 barrand Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /* * jck 05 Feb 1997 - Initial Implementation @@ -36,7 +36,7 @@ #include #include -#include +#include "G4SoWindow.hh" #ifdef WIN32 #include @@ -87,56 +87,69 @@ int quitCB(void* interactorManager) { void G4OpenInventorViewer::KernelVisitDecision () { - // - // Trigger a display List refresh if necessary. This is a checklist - // of relevant view parameters. - // - static G4ViewParameters lastVP; // Initialised to default. + // If there's a significant difference with the last view parameters + // of either the scene handler or this viewer, trigger a rebuild. + + if ( + //??fG4OpenInventorSceneHandler.fPODLList.size() == 0 || + // We need a test for empty scene graph, such as + // staticRoot.size() or something?????????? See temporary fix + // in contructor. (John Allison Aug 2001) + CompareForKernelVisit(fG4OpenInventorSceneHandler.fLastVP) || + CompareForKernelVisit(fLastVP)) { + NeedKernelVisit (); + } + fLastVP = fVP; + fG4OpenInventorSceneHandler.fLastVP = fVP; +} + +G4bool G4OpenInventorViewer::CompareForKernelVisit +(G4ViewParameters& lastVP) { G4bool need = false; if ( - (lastVP.GetDrawingStyle () != fVP.GetDrawingStyle ()) || - (lastVP.GetRepStyle () != fVP.GetRepStyle ()) || - (lastVP.IsCulling () != fVP.IsCulling ()) || - (lastVP.IsCullingInvisible () != fVP.IsCullingInvisible ()) || - (lastVP.IsDensityCulling () != fVP.IsDensityCulling ()) || - (lastVP.IsCullingCovered () != fVP.IsCullingCovered ()) || - (lastVP.IsSection () != fVP.IsSection ()) || + (fLastVP.GetDrawingStyle () != fVP.GetDrawingStyle ()) || + (fLastVP.GetRepStyle () != fVP.GetRepStyle ()) || + (fLastVP.IsCulling () != fVP.IsCulling ()) || + (fLastVP.IsCullingInvisible () != fVP.IsCullingInvisible ()) || + (fLastVP.IsDensityCulling () != fVP.IsDensityCulling ()) || + (fLastVP.IsCullingCovered () != fVP.IsCullingCovered ()) || + (fLastVP.IsSection () != fVP.IsSection ()) || - (lastVP.IsCutaway () != fVP.IsCutaway ()) || - (lastVP.GetCutawayPlanes ().size () != + (fLastVP.IsCutaway () != fVP.IsCutaway ()) || + (fLastVP.GetCutawayPlanes ().size () != fVP.GetCutawayPlanes ().size ()) || - (lastVP.IsExplode () != fVP.IsExplode ()) || - (lastVP.GetNoOfSides () != fVP.GetNoOfSides ()) + (fLastVP.IsExplode () != fVP.IsExplode ()) || + (fLastVP.GetNoOfSides () != fVP.GetNoOfSides ()) ) { need = true;; } - if (!need && lastVP.IsDensityCulling () && - (lastVP.GetVisibleDensity () != fVP.GetVisibleDensity ())) + if (!need && fLastVP.IsDensityCulling () && + (fLastVP.GetVisibleDensity () != fVP.GetVisibleDensity ())) need = true; - if (!need && lastVP.IsExplode () && - (lastVP.GetExplodeFactor () != fVP.GetExplodeFactor ())) + if (!need && fLastVP.IsExplode () && + (fLastVP.GetExplodeFactor () != fVP.GetExplodeFactor ())) need = true; - if (need) { - lastVP = fVP; - NeedKernelVisit (); - } + return need; } -G4OpenInventorViewer::G4OpenInventorViewer (G4OpenInventorSceneHandler& scene, - const G4String& name) -:G4VViewer (scene, scene.IncrementViewCount(), name) -,fSceneHandler(scene) +G4OpenInventorViewer::G4OpenInventorViewer +(G4OpenInventorSceneHandler& sceneHandler, + const G4String& name) +:G4VViewer (sceneHandler, sceneHandler.IncrementViewCount(), name) +,fG4OpenInventorSceneHandler(sceneHandler) ,fShell(NULL) ,fWindow(NULL) ,fViewer(NULL) ,fSelection(NULL) ,fInteractorManager(NULL) { + fNeedKernelVisit = true; //?? Temporary, until KernelVisitDecision fixed. + fInteractorManager = - ((G4OpenInventor*)fSceneHandler.GetGraphicsSystem())-> + ((G4OpenInventor*)fG4OpenInventorSceneHandler.GetGraphicsSystem())-> GetInteractorManager(); //Widget toplevel = (Widget)fInteractorManager->GetMainInteractor (); @@ -150,7 +163,7 @@ G4OpenInventorViewer::G4OpenInventorViewer (G4OpenInventorSceneHandler& scene, fSelection = new SoSelection; fSelection->policy = SoSelection::SINGLE; fSelection->ref(); - fSelection->addChild(fSceneHandler.root); + fSelection->addChild(fG4OpenInventorSceneHandler.root); Widget parent = (Widget)fInteractorManager->GetParentInteractor (); @@ -159,7 +172,7 @@ G4OpenInventorViewer::G4OpenInventorViewer (G4OpenInventorSceneHandler& scene, #define SIZE 400 if(parent==NULL) { //Create a shell window : - fWindow = new SoWindow(wname); + fWindow = new G4SoWindow(wname); fWindow->setTitle(wname); fWindow->setSize(SbVec2s(SIZE,SIZE)); fShell = parent = fWindow->getWidget(); diff --git a/source/visualization/OpenInventor/src/G4OpenInventorWin32.cc b/source/visualization/OpenInventor/src/G4OpenInventorWin32.cc index d2e45db6e5..33a00f1216 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorWin32.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorWin32.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorWin32.cc,v 1.4.4.1 2001/06/28 19:15:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorWin32.cc,v 1.5 2001/07/11 10:09:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // OpenInventor graphics system factory. diff --git a/source/visualization/OpenInventor/src/G4OpenInventorX.cc b/source/visualization/OpenInventor/src/G4OpenInventorX.cc index d1588a002e..5d92d16020 100644 --- a/source/visualization/OpenInventor/src/G4OpenInventorX.cc +++ b/source/visualization/OpenInventor/src/G4OpenInventorX.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4OpenInventorX.cc,v 1.4.4.1 2001/06/28 19:15:49 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4OpenInventorX.cc,v 1.5 2001/07/11 10:09:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Jeff Kallenbach 01 Aug 1996 diff --git a/source/visualization/OpenInventor/src/G4SoWindow.cc b/source/visualization/OpenInventor/src/G4SoWindow.cc new file mode 100644 index 0000000000..47e7d8d0cb --- /dev/null +++ b/source/visualization/OpenInventor/src/G4SoWindow.cc @@ -0,0 +1,403 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +#include +#include +#include +#define SbWarn printf + +#include + +// For backward compatibility : +#ifdef HEPVisWin +#define HEPVisWin32 +#endif + +#ifdef CDF +#ifndef LINUX +#define u_long unsigned long +#endif +#endif +#ifdef HEPVisXt +#include +#include +#include +#include +#endif +#ifdef HEPVisWin32 +#include //For GetWindowInstance. +#endif + +#include +#include + +#include "G4SoWindow.hh" + +#ifdef HEPVisXt +static XtTranslations trans_table = NULL; +static XtActionsRec closeAction = +{(String)"CloseG4SoWindow",G4SoWindow::closeWindow}; +//static void XWidgetSetDimension(Widget,Dimension,Dimension); +#endif +#ifdef HEPVisWin32 +static LRESULT CALLBACK WindowProc (HWND,UINT,WPARAM,LPARAM); +static const char className[] = "G4SoWindow"; +#endif + +SbDict* G4SoWindow::fWidgetDictionary = NULL; + +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::clearClass ( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(fWidgetDictionary!=NULL) delete fWidgetDictionary; + fWidgetDictionary = NULL; +} +////////////////////////////////////////////////////////////////////////////// +G4SoWindow::G4SoWindow( + const char* aName +,SbBool aWMClose +) +:fWidget(NULL) +,fWMClose(aWMClose) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ +#ifdef HEPVisXt + if(trans_table==NULL) { + trans_table = + XtParseTranslationTable("WM_PROTOCOLS:CloseG4SoWindow()"); + XtAppAddActions(SoXt::getAppContext(),&closeAction,1); + } + SbString shellName = aName; + shellName += "_shell"; + Arg args[2]; + XtSetArg(args[0],XtNgeometry,XtNewString("400x400")); + XtSetArg(args[1],XtNborderWidth,0); + fWidget = XtAppCreateShell(shellName.getString(),"Inventor", + topLevelShellWidgetClass, + SoXt::getDisplay(), + args,2); + if(fWidget!=NULL) { + XtOverrideTranslations(fWidget,trans_table); + XtAddCallback(fWidget,XtNdestroyCallback, + (XtCallbackProc)G4SoWindow::widgetDestroyedCB,NULL); + } +#endif +#ifdef HEPVisWin32 + static SbBool done = FALSE; + if(done==FALSE) { + WNDCLASS wc; + wc.style = CS_HREDRAW | CS_VREDRAW; + wc.lpfnWndProc = (WNDPROC)WindowProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = ::GetModuleHandle(NULL); + wc.hIcon = ::LoadIcon(NULL, IDI_APPLICATION); + wc.hCursor = ::LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = NULL; + wc.lpszMenuName = className; + wc.lpszClassName = className; + ::RegisterClass(&wc); + done = TRUE; + } + // Compell window to be created at 0,0 to bypass + // the 'black border' problem. + fWidget = ::CreateWindow(className, aName, + WS_OVERLAPPEDWINDOW, + //CW_USEDEFAULT, CW_USEDEFAULT, + 0,0, + 400,400, + NULL, NULL, + ::GetModuleHandle(NULL), + NULL); + // Retreive window and client sizez : + RECT wrect,crect; + GetWindowRect((HWND)fWidget,&wrect); + GetClientRect((HWND)fWidget,&crect); + int ww = wrect.right-wrect.left; + int wh = wrect.bottom-wrect.top; + int cw = crect.right-crect.left; + int ch = crect.bottom-crect.top; + // Compell client rect to be 400 400 : + MoveWindow((HWND)fWidget,wrect.left,wrect.top,400+ww-cw,400+wh-ch,TRUE); + // + ::SetWindowLong((HWND)fWidget,GWL_USERDATA,LONG(this)); +#endif + registerWidget(fWidget); +} +////////////////////////////////////////////////////////////////////////////// +G4SoWindow::~G4SoWindow( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(fWidget==NULL) return; + unregisterWidget(fWidget); +#ifdef HEPVisXt + XtDestroyWidget(fWidget); +#endif +#ifdef HEPVisWin32 + ::SetWindowLong((HWND)fWidget,GWL_USERDATA,LONG(NULL)); + ::DestroyWindow((HWND)fWidget); +#endif +} +////////////////////////////////////////////////////////////////////////////// +Widget G4SoWindow::getWidget( +) const +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + return fWidget; +} +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::setWMClose( + SbBool aValue +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + fWMClose = aValue; +} +////////////////////////////////////////////////////////////////////////////// +SbBool G4SoWindow::getWMClose( +) const +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + return fWMClose; +} +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::show( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(fWidget==NULL) return; + SoXt::show(fWidget); +} +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::hide( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(fWidget==NULL) return; + SoXt::hide(fWidget); +} +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::setTitle( + const char* aString +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(aString==NULL) return; +#ifdef HEPVisXt + Arg args[1]; + XtSetArg(args[0],XtNtitle,XtNewString(aString)); + XtSetValues(fWidget,args,1); +#endif +#ifdef HEPVisWin32 + ::SetWindowText((HWND)fWidget,aString); +#endif +} +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::setSize( + const SbVec2s& aSize +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(fWidget==NULL) return; +#ifdef HEPVisXt + Arg args[1]; + char s[32]; + sprintf(s,"%dx%d",aSize[0],aSize[1]); + XtSetArg(args[0],XtNgeometry,XtNewString(s)); + XtSetValues(fWidget,args,1); + //XWidgetSetDimension(fWidget,aSize[0],aSize[1]); +#endif +#ifdef HEPVisWin32 + // Retreive window and client sizez : + RECT wrect,crect; + GetWindowRect((HWND)fWidget,&wrect); + GetClientRect((HWND)fWidget,&crect); + int ww = wrect.right-wrect.left; + int wh = wrect.bottom-wrect.top; + int cw = crect.right-crect.left; + int ch = crect.bottom-crect.top; + // Compell client rect to be 400 400 : + MoveWindow((HWND)fWidget, + wrect.left,wrect.top, + aSize[0]+ww-cw,aSize[1]+wh-ch,TRUE); +#endif +} +////////////////////////////////////////////////////////////////////////////// +SbVec2s G4SoWindow::getSize( +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(fWidget==NULL) return SbVec2s(); +#ifdef HEPVisXt + Dimension width,height; + Arg args[2]; + XtSetArg(args[0],XtNwidth ,&width); + XtSetArg(args[1],XtNheight,&height); + XtGetValues(fWidget,args,2); + return SbVec2s(width,height); +#endif +#ifdef HEPVisWin32 + RECT rect; + ::GetClientRect((HWND)fWidget,&rect); + return SbVec2s((short)(rect.right-rect.left),(short)(rect.bottom-rect.top)); +#endif +} +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::registerWidget( + Widget aWidget +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(aWidget==NULL) return; + if(fWidgetDictionary==NULL) fWidgetDictionary = new SbDict; + fWidgetDictionary->enter((unsigned long)aWidget,this); +} +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::unregisterWidget( + Widget aWidget +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(aWidget==NULL) return; + if(fWidgetDictionary==NULL) return; + fWidgetDictionary->remove((unsigned long)aWidget); +} +////////////////////////////////////////////////////////////////////////////// +G4SoWindow* G4SoWindow::getWindow( + Widget aWidget +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + if(aWidget==NULL) return NULL; + if(fWidgetDictionary==NULL) return NULL; + void* value; + SbBool found = fWidgetDictionary->find((unsigned long)aWidget,value); + return (G4SoWindow*)(found==FALSE ? NULL : value); +} +#ifdef HEPVisXt +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::widgetDestroyedCB( + Widget aWidget +,XtPointer +,XtPointer +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + G4SoWindow* This = G4SoWindow::getWindow(aWidget); + if(This==NULL) return; // XtDestroyWidget called from ~G4SoWindow. + //printf("debug : G4SoWindow::widgetDestroyCB\n"); + This->unregisterWidget(aWidget); +} +////////////////////////////////////////////////////////////////////////////// +void G4SoWindow::closeWindow( + Widget aWidget +,XEvent* /*aEvent*/ +,char** /*aArgs*/ +,Cardinal* /*aNarg*/ +) +////////////////////////////////////////////////////////////////////////////// +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + G4SoWindow* This = G4SoWindow::getWindow(aWidget); + if( (This!=NULL) && (This->getWMClose()==TRUE) ) { + //SbWarn ("debug : CloseWindow : close\n"); +#ifdef SoFreePackage + SoXt::sendExit (); +#else + exit (EXIT_SUCCESS); +#endif + } else { + // Should destroy G4SoWindow. + XtUnmapWidget(aWidget); + } +} +/* +#include //Dangerous. +void XWidgetSetDimension(Widget aWidget,Dimension a_width,Dimension a_height){ + if(aWidget==NULL) return; + if((a_width<=0)||(a_height<=0)) return; + XtResizeWidget (aWidget,a_width,a_height,aWidget->core.border_width); +} +*/ +#endif +#ifdef HEPVisWin32 +////////////////////////////////////////////////////////////////////////////// +LRESULT CALLBACK WindowProc ( + HWND aWindow +,UINT aMessage +,WPARAM aWParam +,LPARAM aLParam +) +////////////////////////////////////////////////////////////////////////////// +// Below treatment of WM_SIZE, WM_SETFOCUS not necessary +// with TGS, but needed with SoFree. WM_DESTROY needed for +// 'main top level window' so that 'Close window' induces +// the end of the task. +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// +{ + switch (aMessage) { + case WM_SIZE:{ // Assume one child window ! + int width = LOWORD(aLParam); + int height = HIWORD(aLParam); + //printf("debug : G4SoWindow : WMS_SIZE : %d %d\n",width,height); + HWND hwnd = ::GetFirstChild(aWindow); + if(hwnd!=NULL) { + ::MoveWindow(hwnd,0,0,width,height,TRUE); + } + }return 0; + case WM_SETFOCUS:{ // Assume one child window ! + HWND hwnd = ::GetFirstChild(aWindow); + if(hwnd!=NULL) ::SetFocus(hwnd); + }return 0; + case WM_DESTROY:{ + G4SoWindow* This = (G4SoWindow*)::GetWindowLong(aWindow,GWL_USERDATA); + if( (This!=NULL) && (This->getWMClose()==TRUE) ) { + ::PostQuitMessage(0); + } + }return 0; + default: + return (::DefWindowProc(aWindow,aMessage,aWParam,aLParam)); + } +} +#endif + + + + diff --git a/source/visualization/README b/source/visualization/README index ce22f65f5c..26bfcfd1d0 100644 --- a/source/visualization/README +++ b/source/visualization/README @@ -1,13 +1,37 @@ -$Id: README,v 1.8 2000/05/20 10:18:38 johna Exp $ +$Id: README,v 1.11 2001/11/13 07:06:01 stanaka Exp $ -1) Decide which graphics systems drivers you want. The choice depends - on what graphics libraries you have access to. Set the appropriate - environment variables. Here are the current possibilities (see - example "rc" script in Appendix A): +Note: Specific graphics systems must be instantiated in a high level +library to avoid circular dependencies. Also, some specifically need +additional external libararies that the user must supply. Therefore we +ask the user to implement RegisterGraphicsSystems() in a subclass of +G4VisManager. We have to wait for the subclass to instantiate so +RegisterGraphicsSystems() cannot be called from G4VisManager's +constructor; it is called from G4VisManager::Initialise(). So we ask +the user: + (a) to write a subclass of G4VisManager and implement + RegisterGraphicsSystems(). See + visualization/include/MyVisManager.hh/cc as an example. + (b) instantiate the subclass. + (c) invoke the Initialise() method of the subclass. +For example, in your main(): + ... +#ifdef G4VIS_USE + // Instantiate and initialise Visualization Manager. + G4VisManager* visManager = new MyVisManager; + visManager -> SetVerboseLevel (Verbose); + visManager -> Initialise (); +#endif + // (Don't forget to delete visManager;) + ... +See, for example, examples/novices/N02/exampleN02.cc. + +1) Decide which graphics systems drivers you want. By default you get: + ASCIITree, DAWNFILE, GAGTree, HepRepFile, RayTracer, VRMLFILE. + + For others, the choice depends on what graphics libraries you have + access to. Set the appropriate environment variables. Here are + the current possibilities (see example "rc" script in Appendix A): - setenv G4VIS_BUILD_DAWNFILE_DRIVER 1 # Uses Fukui Renderer DAWN - # with file connection - # (recommended) setenv G4VIS_BUILD_DAWN_DRIVER 1 # Uses Fukui Renderer DAWN # with network connection # (for remote visualization) @@ -20,22 +44,17 @@ $Id: README,v 1.8 2000/05/20 10:18:38 johna Exp $ setenv G4VIS_BUILD_OIX_DRIVER 1 # Uses OpenInventor X11 - setenv G4VIS_BUILD_RAYTRACER_DRIVER 1 # Uses G4RayTracer - - setenv G4VIS_BUILD_VRMLFILE_DRIVER 1 # Writes VRML ascii files - # to a local host - # (recommended) setenv G4VIS_BUILD_VRML_DRIVER 1 # Sends VRML ascii files # to a remote host # (for remote visualization) - Setting any of these sets a C-pre-processor flag of the same name - and a C-pre-processor flag G4VIS_BUILD. + Unless an environment variable G4VIS_NONE is set, setting any of + these sets a C-pre-processor flag of the same name; also + C-pre-processor flag G4VIS_BUILD is set. In some cases you will need additional variables, e.g.: - setenv DAWN_HOME /afs/cern.ch/rd44/dev/DAWN/AIX-xlC - + setenv DAWN_HOME /user/local/bin set path=( $path $DAWN_HOME ) setenv OPACS_HOME ~/private/GEANT4/OPACS @@ -49,16 +68,6 @@ $Id: README,v 1.8 2000/05/20 10:18:38 johna Exp $ setenv XKEYSYMDB /usr/lib/X11/XKeysymDB - If you decided to use the Fukui Renderer DAWN, you will also need - to set, on rsplus, - - setenv TCL_LIBRARY /usr/local/lib/tcl8.0 - setenv TK_LIBRARY /usr/local/lib/tk8.0 - - Such setting is not necessary on other machines, where only one version - of Tcl/Tk is installed. - - 2) Compile and build the Geant4 libraries: cd $G4INSTALL/source @@ -86,27 +95,29 @@ $Id: README,v 1.8 2000/05/20 10:18:38 johna Exp $ 3) Decide which graphics systems you want to use in your particular - excutable. Of course, this has to be chosen from the set you - installed in (2) above. Here are the current possibilities: + excutable. By default you get: + ASCIITree, DAWNFILE, GAGTree, HepRepFile, RayTracer, VRMLFILE. + + Of course, this has to be chosen from the set you + installed in (1,2) above. Here are the current possibilities: - setenv G4VIS_USE_DAWNFILE 1 setenv G4VIS_USE_DAWN 1 setenv G4VIS_USE_OPACS 1 setenv G4VIS_USE_OPENGLX 1 setenv G4VIS_USE_OPENGLXM 1 setenv G4VIS_USE_OIX 1 - setenv G4VIS_USE_RAYTRACER 1 setenv G4VIS_USE_VRML 1 - Setting any of these sets a C-pre-processor flag of the same name. - Also, setting any of these sets the G4VIS_USE C-pre-processor flag - - see examples/novices/N02/exampleN02.cc to see a use of this. + Unless an environment variable G4VIS_NONE is set, setting any of + these sets a C-pre-processor flag of the same name; also, + C-pre-processor flag G4VIS_USE is set.C-pre-processor flag - see + examples/novices/N02/exampleN02.cc to see a use of this. - The default graphics systems are registered when you execute - G4VisManager::Initialise() (or G4VisManager::Initialize()). Note - also that you can register graphics systems directly, e.g., - pVisManager->RegisterGraphicsSystem ( new DAWNFILE ). You can - also register your own graphics system, e.g., + The graphics systems are instantiated and registered when you + execute MyVisManager::Initialise() (or MyVisManager::Initialize()). + Note also that you can register graphics systems directly, e.g., + pVisManager->RegisterGraphicsSystem ( new DAWNFILE ). You can also + register your own graphics system, e.g., pVisManager->RegisterGraphicsSystem (new MyGraphicsSystem). @@ -139,18 +150,42 @@ Appendix A: An "rc" example --------------------------- ---------------------- g4rc ------------------------------------------ -## Must be installed one level above $G4INSTALL and "sourced", i.e., -## using '. g4rc'. +## Must be run from a directory *containing* geant4/. +## It must be "sourced" from a Bourne/ksh.bash shell using `. ' +## or `source '. +## G4INSTALL becomes geant4. +## G4BIN, etc., in some apprpriate subdirectory of $disc1 + +disc1=/scratch/GEANT4 +if [ ! -e $disc1/$thisbase ]; then + mkdir $disc1/$thisbase +fi +if [ ! -e $disc1/$thisbase/geant4 ]; then + mkdir $disc1/$thisbase/geant4 +fi +disc2=/mnt/disc2 if [ -e `pwd`/geant4 ]; then -export G4INSTALL=`pwd`/geant4 +thiswd=`pwd` +thisbase=`basename $thiswd` +export G4INSTALL=$thiswd/geant4 +env | grep G4INSTALL= export G4WORKDIR=$G4INSTALL -export G4LIB=$G4INSTALL/lib +export G4BIN=$disc1/$thisbase/geant4/bin +env | grep G4BIN= +export G4LIB=$disc1/$thisbase/geant4/lib +env | grep G4LIB= +export G4TMP=$disc1/$thisbase/geant4/tmp +env | grep G4TMP= export G4SYSTEM=Linux-g++ export G4LEVELGAMMADATA=$G4INSTALL/data/PhotonEvaporation +export G4DEBUG=1 export CLHEP_BASE_DIR=/usr/local +env | grep G4DEBUG +env | grep CLHEP +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CLHEP_BASE_DIR/lib ##export CVSROOT=:pserver:allison@g4cvs.cern.ch:/afs/cern.ch/sw/geant4/cvs export CVSROOT=/afs/cern.ch/sw/geant4/cvs @@ -158,51 +193,43 @@ export CVSEDITOR=emacs ########## DAWN (Fukui) Renderer export G4VIS_BUILD_DAWN_DRIVER=1 -export G4VIS_BUILD_DAWNFILE_DRIVER=1 export G4VIS_USE_DAWN=1 -export G4VIS_USE_DAWNFILE=1 export DAWN_BSD_UNIX_DOMAIN=1 export DAWN_GUI_ALWAYS=1 -export DAWN_HOME=/home/johna/GEANT4/DAWN -export G4DAWNFILE_VIEWER=NONE -#export PATH=$PATH:$DAWN_HOME ###### Moved to .g4profile ?????????????? - -############ Ray Tracer -export G4VIS_BUILD_RAYTRACER_DRIVER=1 -export G4VIS_USE_RAYTRACER=1 +#export DAWN_HOME=/home/johna/GEANT4/DAWN # Now in /usr/local. +#export G4DAWNFILE_VIEWER=NONE # Uncomment if DAWN is not available. +#export PATH=$PATH:$DAWN_HOME # Now in /usr/local. ########## OPACS graphics -export G4VIS_BUILD_OPACS_DRIVER=1 -export G4VIS_USE_OPACS=1 -export OPACS_HOME=/disc2/OPACS -export OPACS_VERSION=v3 -export OPACS_SYSTEM=Linux-gxx -export OCONFIG=Linux -. /disc2/OPACS/OPACS/$OPACS_VERSION/setup.sh -LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/disc2/HEPVis/new/Linux-gxx-SF/ -LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/disc2/SoFree/new/Linux-gxx -OPATH="$OPATH $G4INSTALL/source/visualization/test/OPACS" + export G4VIS_BUILD_OPACS_DRIVER=1 + export G4VIS_USE_OPACS=1 + export OPACS_HOME=$disc2/OPACS + export OPACS_VERSION=v3 + export OPACS_SYSTEM=Linux-gxx + export OCONFIG=Linux + . $OPACS_HOME/OPACS/$OPACS_VERSION/setup.sh + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$disc2/HEPVis/new/Linux-gxx-SF/ + LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$disc2/SoFree/new/Linux-gxx + OPATH="$OPATH $G4INSTALL/source/visualization/test/OPACS" ########### OpenGL export G4VIS_BUILD_OPENGLX_DRIVER=1 export G4VIS_USE_OPENGLX=1 export G4VIS_BUILD_OPENGLXM_DRIVER=1 export G4VIS_USE_OPENGLXM=1 -export XKEYSYMDB=/usr/lib/X11/XKeysymDB +### export XKEYSYMDB=/usr/lib/X11/XKeysymDB export OGLHOME=/usr/X11 ########### OpenInventor export G4VIS_BUILD_OIX_DRIVER=1 export G4VIS_USE_OIX=1 -export OIVFLAGS="-I/disc2/HEPVis/new/include -DINVENTOR2_1 -I/disc2/SoFree/new/include" -export OIVLIBS="-L/disc2/HEPVis/new/Linux-gxx-SF -lHEPVis -L/disc2/SoFree/new/Linux-gxx -lSoFree" -export SOFREEUSER=/disc2/SoFree/new/user/ +export OIVFLAGS="-I$disc2/HEPVis/new/include -DINVENTOR2_1 -I$disc2/SoFree/new/include" +export OIVLIBS="-L$disc2/HEPVis/new/Linux-gxx-SF -lHEPVis -L$disc2/SoFree/new/Linux-gxx -lSoFree" +export SOFREEUSER=$disc2/SoFree/new/user/ ############ VRML -export G4VIS_BUILD_VRML_DRIVER=1 export G4VIS_USE_VRML=1 -export G4VIS_BUILD_VRMLFILE_DRIVER=1 -export G4VIS_USE_VRMLFILE=1 +export G4VIS_BUILD_VRML_DRIVER=1 ########### Interfaces export G4UI_BUILD_TERMINAL_SESSION=1 @@ -213,8 +240,8 @@ export G4UI_BUILD_XM_SESSION=1 export G4UI_USE_XM=1 export G4UI_BUILD_WO_SESSION=1 export G4UI_USE_WO=1 -#export G4UI_BUILD_XAW_SESSION=1 -#export G4UI_USE_XAW=1 +### #export G4UI_BUILD_XAW_SESSION=1 +### #export G4UI_USE_XAW=1 ############ Persistency # export G4USE_HEPODBMS=1 @@ -233,14 +260,25 @@ Appendix B: Sample session The Visualization Manager has been constructed with verbosity == 1. -$ test19 dumb 1 +$ test19 tcsh 1 RunManager is constructing.... +********************************************** + Geant4 version $Name: geant4-04-00 $ + (29-Jun-2001) + Copyright : Geant4 Collaboration +********************************************** +conv: Total cross sections from a parametrisation. Good description from 1.5 MeV to 100 GeV for all Z. + e+e- energies according Bethe-Heitler + PhysicsTables from 1.022 MeV to 100 GeV in 100 bins. +... Constructing Visualization Manager.... Initialising Visualization Manager.... The following graphics systems drivers are supported in the GEANT4 distribution: - DAWN (socket connection to the Fukui Renderer DAWN) High quality technical renderer. + ASCIITree (prints geometry hierarchy) + + DAWN (socket connection to the Fukui Renderer DAWN) High quality technical renderer. Features: exact hidden line, hidden surface algorithms. high (unlimited) resolution. renders to PostScript for viewing and/or hardcopy. @@ -261,7 +299,11 @@ The following graphics systems drivers are supported in the GEANT4 distribution: connection via g4.prim file to Fukui Renderer DAWN etc. Disadvantages: compute intensive, takes time (use a fast graphics system, such as OpenGL, to select view, then copy - to this renderer - /vis~/copy/view, /vis~/set/view). + view parameters to this renderer: + "/vis/viewer/set/all ". + + GAGTree (prints geometry hierarchy, connectable to GAG + user interface) OPACS (the Orsay Package) @@ -309,7 +351,10 @@ The following graphics systems drivers are supported in the GEANT4 distribution: Advantages: Open Inventor feature set (interactivity, scene control). Disadvantages: Requires Open Inventor license ($$), Hepvis library (Free). + RayTracer (produces JPEG file) + VRML1 (produces VRML 1 file over network) + VRML1FILE (produces VRML 1 file locally ) VRML2 (produces VRML 2 file over network) @@ -317,61 +362,79 @@ The following graphics systems drivers are supported in the GEANT4 distribution: VRML2FILE (produces VRML 2 file locally ) The following graphics systems drivers are installed on your system: + ASCII Tree (produces ASCII file of geometry hierarchy) DAWN (socket connection to the Fukui Renderer DAWN) DAWNFILE (file connection to the Fukui Renderer DAWN) + GAG Tree (produces ascii file of geometry hierarchy for GAG) OPACS (the Orsay Package) OpenGLIX (direct/immediate drawing on X Windows) OpenGLSX (display List/stored drawing on X Windows) OpenGLIXm (with Motif widgets) OpenGLSXm (with Motif widgets) + Open Inventor X11 + RayTracer (produces JPEG file) VRML1 (produces VRML 1 file over network) - VRML2 (produces VRML 2 file over network), in preparation - VRML1File (produces VRML 1 file locally) - VRML2File (produces VRML 2 file locally), in preparation + VRML2 (produces VRML 2 file over network) + VRML1FILE (produces VRML 1 file locally) + VRML2FILE (produces VRML 2 file locally) You have instantiated your own Visualization Manager, inheriting - G4VisManager and implementing RegisterGraphicsSystems. An example - class MyVisManager is provided which is controlled by the - following environment variables: + G4VisManager and implementing RegisterGraphicsSystems(), in which + you should, normally, instantiate drivers which do not need + external packages or libraries, namely: + ASCIITree, DAWNFILE, GAGTree, RayTracer, VRMLFILE + and, optionally, drivers under control of the following + environment variables: G4VIS_USE_DAWN - G4VIS_USE_DAWNFILE G4VIS_USE_OPACS G4VIS_USE_OPENGLX G4VIS_USE_OPENGLXM + G4VIS_USE_OIX G4VIS_USE_VRML - G4VIS_USE_VRMLFILE - Thus, in your main() you have something like: + See visualization/include/MyVisManager.hh/cc, for example. + In your main() you will have something like: + #ifdef G4VIS_USE G4VisManager* visManager = new MyVisManager; + visManager -> SetVerboseLevel (Verbose); visManager -> Initialize (); + #endif (Don't forget to delete visManager;) -Registering graphics systems.... -G4VisManager::RegisterGraphicsSystem: FukuiRenderer (DAWN) registered. +Registering additional graphics systems.... +G4VisManager::RegisterGraphicsSystem: ASCIITree (ATree) registered. G4VisManager::RegisterGraphicsSystem: DAWNFILE (DAWNFILE) registered. +G4VisManager::RegisterGraphicsSystem: GAGTree (GAGTree) registered. +G4VisManager::RegisterGraphicsSystem: RayTracer (RayTracer) registered. +G4VisManager::RegisterGraphicsSystem: VRML1FILE (VRML1FILE) registered. +G4VisManager::RegisterGraphicsSystem: VRML2FILE (VRML2FILE) registered. +G4VisManager::RegisterGraphicsSystem: FukuiRenderer (DAWN) registered. G4VisManager::RegisterGraphicsSystem: Wo registered. G4VisManager::RegisterGraphicsSystem: Xo registered. G4VisManager::RegisterGraphicsSystem: OpenGLImmediateX (OGLIX) registered. G4VisManager::RegisterGraphicsSystem: OpenGLStoredX (OGLSX) registered. G4VisManager::RegisterGraphicsSystem: OpenGLImmediateXm (OGLIXm) registered. G4VisManager::RegisterGraphicsSystem: OpenGLStoredXm (OGLSXm) registered. +G4VisManager::RegisterGraphicsSystem: OpenInventorX (OIX) registered. G4VisManager::RegisterGraphicsSystem: VRML1 (VRML1) registered. G4VisManager::RegisterGraphicsSystem: VRML2 (VRML2) registered. -G4VisManager::RegisterGraphicsSystem: VRML1FILE (VRML1FILE) registered. -G4VisManager::RegisterGraphicsSystem: VRML2FILE (VRML2FILE) registered. You have successfully chosen to use the following graphics systems. Current available graphics systems are: - FukuiRenderer (DAWN) + ASCIITree (ATree) DAWNFILE (DAWNFILE) + GAGTree (GAGTree) + RayTracer (RayTracer) + VRML1FILE (VRML1FILE) + VRML2FILE (VRML2FILE) + FukuiRenderer (DAWN) Wo Xo OpenGLImmediateX (OGLIX) OpenGLStoredX (OGLSX) OpenGLImmediateXm (OGLIXm) OpenGLStoredXm (OGLSXm) + OpenInventorX (OIX) VRML1 (VRML1) VRML2 (VRML2) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) Reading test19.g4m file.... # This is test19.g4m # @@ -380,14 +443,11 @@ Reading test19.g4m file.... /control/saveHistory # # John's personal preferences -/vis/lights/move_with_camera true -/vis~/lights/move_with_camera true -Issue Draw or refresh to see effect. -Current value of lights move flag is 1 -/vis/set/marker_choices 1 -/vis~/set/marker_choices 1 -Marker choice is now: hidden by surfaces. -Issue Draw or refresh to see effect. +/vis/viewer/set/lightsMove true +G4VisCommandsViewerSet::SetNewValue: no current viewer. +/vis/viewer/set/hiddenMarker true +G4VisCommandsViewerSet::SetNewValue: no current viewer. +#/vis/verbose 10 # # See list of detector possibilities. /test19det/detector @@ -404,51 +464,72 @@ Choose by specifying integer parameter. # # Initialise run, i.e., create geometry, set cuts, etc. /run/initialize -Detector not established - constructing default detector. -/test19det/detector 4 -MyPhysicsList::SetCuts: -... # # Set gun for demo (detector 1) #/gun/particle e+ #/gun/position 0 -100 0 cm #/gun/direction 0 1 0 # +# for drawing the tracks +/tracking/storeTrajectory 1 +# if too many tracks cause core dump =storeTrajectory 0 +# # Create empty scene. /vis/scene/create -/vis/camera/reset -/vis~/camera/reset +/vis/scene/notifyHandlers +G4Scene::AddWorldIfEmpty: The scene was empty, + "world" has been added. New empty scene "scene-0" created. # # Add volume to scene - "world" is default. /vis/scene/add/volume -/vis/camera/reset -/vis~/camera/reset -First occurrence of "expHall_P", copy no. 0, found at depth 0, - with further requested depth of descent -1, has been added to scene "scene-0" +G4Scene::AddRunDurationModel: model "G4PhysicalVolumeModel expHall_P.0" + is already in the run-duration list of scene "scene-0". +/vis/scene/notifyHandlers # # See list of graphics systems possibilities. help /vis/sceneHandler/create # # Create a scene handler for a specific graphics system. # Edit the next line(s) to choose another graphic system -/vis/sceneHandler/create DAWNFILE -G4VisManager::SetCurrentGraphicsSystem: system now DAWNFILE -Graphics system set to DAWNFILE -1 DAWNFILE scenes extanct. -New scene handler "scene-handler-0" created. -/vis/sceneHandler/attach -Scene "scene-0" attached to scene handler "scene-handler-0. +#/vis/sceneHandler/create DAWNFILE #/vis/sceneHandler/create DAWN +#/vis/sceneHandler/create OGLIXm +#/vis/sceneHandler/create OGLSXm #/vis/sceneHandler/create OGLIX -#/vis/sceneHandler/create OGLSX +/vis/sceneHandler/create OGLSX +G4VisManager::SetCurrentGraphicsSystem: system now OpenGLStoredX +Graphics system set to OpenGLStoredX +1 OpenGLStoredX scene handlers extanct. +New scene handler "scene-handler-0" created. +/vis/sceneHandler/attach +Scene "scene-0" attached to scene handler "scene-handler-0. #/vis/sceneHandler/create VRML1 #/vis/sceneHandler/create VRML1FILE #/vis/sceneHandler/create Xo #/vis/sceneHandler/create Wo # +# Add world volume. +/vis/scene/add/volume +G4Scene::AddRunDurationModel: model "G4PhysicalVolumeModel expHall_P.0" + is already in the run-duration list of scene "scene-0". +/vis/scene/notifyHandlers +/vis/scene/add/axes 0 0 0 2 m +/vis/scene/notifyHandlers +Axes have been added to scene "scene-0". +/vis/scene/add/text 0 0 0 mm 50 -120 -200 exampleN03 +/vis/scene/notifyHandlers +Text "exampleN03" has been added to scene "scene-0". +# +# Add scale +/vis/scene/add/scale +/vis/scene/notifyHandlers +Scale of 1 m has been added to scene "scene-0". +# # Create a viewer. /vis/viewer/create +Got standard cmap +Window name: viewer-0 (OpenGLStoredX) G4VisManager::CreateViewer: new viewer created: view parameters are: View parameters and options: Drawing style: wireframe @@ -467,7 +548,7 @@ G4VisManager::CreateViewer: new viewer created: view parameters are: Zoom factor: 1 Current target point: (0,0,0) Dolly distance: 0 - Light moves with camera + Light does not move with camera Relative lightpoint direction: (1,1,1) Actual lightpoint direction: (1,1,1) Derived parameters for standard view of object of unit radius: @@ -490,30 +571,16 @@ G4VisManager::CreateViewer: new viewer created: view parameters are: fill style: no fill No Visualization Attributes Global marker scale: 1 - Marker hidden by surfaces. + Marker not hidden by surfaces. Window size hint: 600x600 + Auto refresh: false NOTE: objects with visibility flag set to "false" will not be drawn! - "/vis~/set/culling off" to Draw such objects. - Also see other "/vis~/set" commands. -New viewer "viewer-0 (DAWNFILE)" created. + "/vis/set/culling off" to Draw such objects. + Also see other "/vis/set" commands. +New viewer "viewer-0 (OpenGLStoredX)" created. # -# Draw current scene -/vis/scene/notifyHandlers -=========================================== -Output file: g4.prim -Muximal number of file in the destination directory: 1 - (Customizable as: setenv G4DAWNFILE_MAX_FILE_NUM number) -=========================================== -Traversing scene data... -File g4.prim is generated. -No viewer is invoked. -Viewer "viewer-0 (DAWNFILE)" of scene handler "scene-handler-0" - refreshed at request of scene "scene-0". -# -# for drawing the tracks -# if too many tracks cause core dump => storeTrajectory 0 -/tracking/storeTrajectory 1 -/vis/scene/include/trajectories -Trajectories will be drawn in scene "scene-0". -Choose a detector with /test19det/detector (or let default be constructed). -Idle> +/vis/viewer/set/lineSegmentsPerCircle 100 +Number of line segements per circle in polygon approximation is 100 +/vis/viewer/refresh +Refreshing viewer "viewer-0 (OpenGLStoredX)"... +... diff --git a/source/visualization/README.adding_graphics_system b/source/visualization/README.adding_graphics_system index 34d6a4ae52..06131fc85f 100644 --- a/source/visualization/README.adding_graphics_system +++ b/source/visualization/README.adding_graphics_system @@ -1,319 +1,45 @@ -To add a graphics system implement 3 new classes: +To add a graphics system: + +1) implement 3 new classes: - class G4XXX: public G4VGraphicsSystem - class G4XXXSceneHandler: public G4VSceneHandler - class G4XXXViewer: virtual public G4VViewer + class G4XXX: public G4VGraphicsSystem + class G4XXXSceneHandler: public G4VSceneHandler + class G4XXXViewer: virtual public G4VViewer -Introduce two new environment variables G4VIS_BUILD_XXX_DRIVER and GG4VIS_USE_XXX and make the attached modifications to: + These should be placed in their own sub-directory under + visualization, together with a GNUmakefile and a History file. + Change the library name G4XXX in "name := G4XXX" in GNUmakefile. - source/visualization/management/include/MyVisManager.cc - (similarly all examples vis managers) - source/visualization/management/src/G4VisManager.cc - config/G4VIS_BUILD.gmk - config/G4VIS_USE.gmk +2) Add to SUBDIRS and SUBLIBS in visualization/GNUmakefile. -=================================================================== -include/G4XXX.hh -=================================================================== -#ifndef G4XXX_HH -#define G4XXX_HH +3) Look at the XXX graphics system teamplate in visualization/XXX and + use it to build your graphics system. -#include "G4VGraphicsSystem.hh" + You might also find it useful to look at ASCIITree (and VTree) as + an example of a minimal graphics system. -class G4XXX: public G4VGraphicsSystem { -public: - G4XXX (); - virtual ~G4XXX (); - G4VSceneHandler* CreateSceneHandler (const G4String& name = ""); - G4VViewer* CreateViewer (G4VSceneHandler&, const G4String& name = ""); -}; -#include "G4XXX.hh" -#include "G4XXXSceneHandler.hh" -#include "G4XXXViewer.hh" + Look at FukuiRenderer as an example of a system which implements + AddThis methods for some solids. -#endif -=================================================================== + Look at OpenGL as an example of a system which implements a graphical + database (display lists) and the machinery to decide when to rebuild. + (OpenGL is complicated by the proliferation of combinations of: -=================================================================== -include/G4XXXSceneHandler.hh -=================================================================== -#ifndef G4XXXSCENEHANDLER_HH -#define G4XXXSCENEHANDLER_HH + immediate (no display lists) ) ( X-windows + stored (uses display lists) ) x ( X with motif - interactive + ( Win32 -#include "G4VSceneHandler.hh" -#include "G4Box.hh" -#include "G4Cons.hh" -#include "G4Tubs.hh" -#include "G4Trd.hh" -#include "G4Trap.hh" -#include "G4Sphere.hh" -#include "G4Para.hh" -#include "G4Torus.hh" -#include "G4Polycone.hh" -#include "G4Polyhedra.hh" + (6 combinations) and much use is made of inheritance to avoid code + duplication.) -class G4VPhysicalVolume; -class G4LogicalVolume; +4) If it requires external libraries, introduce two new environment + variables G4VIS_BUILD_XXX_DRIVER and G4VIS_USE_XXX and make the + modifications to: -class G4XXXSceneHandler: public G4VSceneHandler { + source/visualization/management/include/MyVisManager.cc + (similarly all examples vis managers) + source/visualization/management/src/G4VisManager.cc + config/G4VIS_BUILD.gmk + config/G4VIS_USE.gmk -public: - G4XXXSceneHandler(G4VGraphicsSystem& system, - const G4String& name); - virtual ~G4XXXSceneHandler (); - void AddThis (const G4Box& s) {Dump (s);} - void AddThis (const G4Cons & s) {Dump (s);} - void AddThis (const G4Tubs& s) {Dump (s);} - void AddThis (const G4Trd& s) {Dump (s);} - void AddThis (const G4Trap& s) {Dump (s);} - void AddThis (const G4Sphere& s) {Dump (s);} - void AddThis (const G4Para& s) {Dump (s);} - void AddThis (const G4Torus& s) {Dump (s);} - void AddThis (const G4Polycone& s) {Dump (s);} - void AddThis (const G4Polyhedra& s) {Dump (s);} - void AddThis (const G4VSolid& s) {Dump (s);} - void PreAddThis (const G4Transform3D& objectTransformation, - const G4VisAttributes&); - void PostAddThis (); - void EstablishSpecials (G4PhysicalVolumeModel&); - G4int GetFoundDepth () const; - G4VPhysicalVolume* GetFoundVolume () const; - const G4Transform3D& GetFoundTransformation () const; - - //////////////////////////////////////////////////////////////// - // Functions not used but required by the abstract interface. - - virtual void BeginPrimitives (const G4Transform3D& objectTransformation) {} - virtual void EndPrimitives () {} - virtual void AddPrimitive (const G4Polyline&) {} - virtual void AddPrimitive (const G4Text&) {} - virtual void AddPrimitive (const G4Circle&) {} - virtual void AddPrimitive (const G4Square&) {} - virtual void AddPrimitive (const G4Polymarker&) {} - virtual void AddPrimitive (const G4Polyhedron&) {} - virtual void AddPrimitive (const G4NURBS&) {} - - static G4int GetSceneCount(); - -protected: - void Dump (const G4VSolid&); - static G4int fSceneIdCount; // Counter for Tree scene handlers. - static G4int fSceneCount; // No. of extanct scene handlers. - G4int fCurrentDepth; // Current depth of geom. hierarchy. - G4VPhysicalVolume* fpCurrentPV; // Current physical volume. - G4LogicalVolume* fpCurrentLV; // Current logical volume. - const G4Transform3D* fpCurrentObjectTransformation; -}; - -#include "G4XXXSceneHandler.icc" - -#endif -=================================================================== - -=================================================================== -include/G4XXXViewer.hh -=================================================================== -#ifndef G4XXXVIEWER_HH -#define G4XXXVIEWER_HH - -#include "G4VViewer.hh" - -class G4XXXViewer: virtual public G4VViewer { -public: - G4XXXViewer(G4VSceneHandler&,const G4String& name); - virtual ~G4XXXViewer(); - void SetView(); - void ClearView(); - void DrawView(); -private: - G4int fFileCount; -}; - -#endif -=================================================================== - -=================================================================== -src/G4XXX.cc -=================================================================== -G4XXX::G4XXX (): - G4VGraphicsSystem ("Full Name", - "Nickname", - "A description - could run to many lines - " - "\n advantages, disadvantages, etc.", - G4VGraphicsSystem::) // See enum. - {} - -G4XXX::~G4XXX () {} - -G4VSceneHandler* G4XXX::CreateSceneHandler (const G4String& name) { - G4VSceneHandler* pScene = new G4XXXSceneHandler (*this, name); - G4cout << G4XXXSceneHandler::GetSceneCount () - << ' ' << fName << " scene handlers extanct." << G4endl; - return pScene; -} - -G4VViewer* G4XXX::CreateViewer (G4VSceneHandler& scene, - const G4String& name) { - G4VViewer* pView = - new G4XXXViewer ((G4XXXSceneHandler&) scene, name); - if (pView) { - if (pView -> GetViewId () < 0) { - G4cerr << "G4XXX::CreateViewer: error flagged by negative" - " view id in G4XXXViewer creation." - "\n Destroying view and returning null pointer." - << G4endl; - delete pView; - pView = 0; - } - } - else { - G4cerr << "G4XXX::CreateViewer: null pointer on" - " new G4XXXViewer." << G4endl; - } - return pView; -} -=================================================================== - -=================================================================== -src/G4XXXSceneHandler.cc -=================================================================== -#include "G4XXXSceneHandler.hh" - -#include "G4VSolid.hh" -#include "G4PhysicalVolumeModel.hh" -#include "G4VPhysicalVolume.hh" -#include "G4LogicalVolume.hh" - -G4int G4XXXSceneHandler::fSceneIdCount = 0; -// Counter for XXX scene handlers. - -G4int G4XXXSceneHandler::fSceneCount = 0; -// No. of extanct scene handlers. - -G4XXXSceneHandler::G4XXXSceneHandler(G4VGraphicsSystem& system, - const G4String& name): - G4VSceneHandler(system, fSceneIdCount++, name), - fCurrentDepth (0), - fpCurrentPV (0), - fpCurrentLV (0), - fpCurrentObjectTransformation (0) -{ - fSceneCount++; -} - -G4XXXSceneHandler::~G4XXXSceneHandler () {} - -void G4XXXSceneHandler::EstablishSpecials -(G4PhysicalVolumeModel& pvModel) { - pvModel.DefinePointersToWorkingSpace (&fCurrentDepth, - &fpCurrentPV, - &fpCurrentLV); -} - -void G4XXXSceneHandler::Dump (const G4VSolid& solid) { - for (G4int i = 0; i < fCurrentDepth; i++ ) G4cout << " "; - G4cout << "\"" << fpCurrentPV -> GetName () - << "\", copy no. " << fpCurrentPV -> GetCopyNo () - << G4endl; - return; -} -=================================================================== - -=================================================================== -src/G4XXXViewer.cc -=================================================================== -#include "G4XXXViewer.hh" - -#include "G4ios.hh" -#include "g4std/strstream" - -#include "G4VSceneHandler.hh" - -G4XXXViewer::G4XXXViewer -(G4VSceneHandler& sceneHandler, const G4String& name): - G4VViewer(sceneHandler, sceneHandler.IncrementViewCount(), name) {} - -G4XXXViewer::~G4XXXViewer() {} - -void G4XXXViewer::SetView() {} - -void G4XXXViewer::ClearView() {} - -void G4XXXViewer::DrawView() { - NeedKernelVisit (); // Always need to visit G4 kernel. - ProcessView (); -} - -=================================================================== -Index: source/visualization/management/include/MyVisManager.cc -=================================================================== -RCS file: /afs/cern.ch/sw/geant4/cvs/geant4/source/visualization/management/include/MyVisManager.cc,v -retrieving revision 1.5 -diff -r1.5 MyVisManager.cc -67a68,71 -> #ifdef G4VIS_USE_XXX -> #include "G4XXX.hh" -> #endif -> -119a124,127 -> #endif -> -> #ifdef G4VIS_USE_XXX -> RegisterGraphicsSystem (new G4XXX); - -=================================================================== -Index: source/visualization/management/src/G4VisManager.cc -=================================================================== -RCS file: /afs/cern.ch/sw/geant4/cvs/geant4/source/visualization/management/src/G4VisManager.cc,v -retrieving revision 1.21 -diff -r1.21 G4VisManager.cc -142a143,145 -> #ifdef G4VIS_BUILD_XXX_DRIVER -> "\n G4VIS_USE_XXX" -> #endif -877a881,883 -> #ifdef G4VIS_BUILD_XXX_DRIVER -> << "\n Brief description)" -> #endif -1099a1106,1118 -> G4VGraphicsSystem::noFunctionality) {} -> -> #endif -> -> #ifndef G4VIS_BUILD_XXX_DRIVER -> -> class G4XXX: public G4VGraphicsSystem { -> public: -> G4XXX (); -> }; -> G4XXX::G4XXX (): -> G4VGraphicsSystem ("Full name", -> "Mick name", - -=================================================================== -Index: config/G4VIS_BUILD.gmk -=================================================================== -RCS file: /afs/cern.ch/sw/geant4/cvs/geant4/config/G4VIS_BUILD.gmk,v -retrieving revision 1.3 -diff -r1.3 G4VIS_BUILD.gmk -80a81,85 -> ifdef G4VIS_BUILD_XXX_DRIVER -> G4VIS_BUILD = 1 -> CPPFLAGS += -DG4VIS_BUILD_XXX_DRIVER -> endif -> - -=================================================================== -Index: config/G4VIS_USE.gmk -=================================================================== -RCS file: /afs/cern.ch/sw/geant4/cvs/geant4/config/G4VIS_USE.gmk,v -retrieving revision 1.3 -diff -r1.3 G4VIS_USE.gmk -93a94,100 -> ifdef G4VIS_USE_XXX -> G4VIS_USE = 1 -> CPPFLAGS += -DG4VIS_USE_XXX -> CPPFLAGS += -I$(G4BASE)/visualization/XXX/include -> VISLIBS += -lG4Tree -> endif -> + In any case, augment the informational printing in G4VisManager.cc. diff --git a/source/visualization/README.built_in_commands b/source/visualization/README.built_in_commands new file mode 100644 index 0000000000..d55a576f2a --- /dev/null +++ b/source/visualization/README.built_in_commands @@ -0,0 +1,519 @@ + Visualization Built In Commands + =============================== + +The old /vis~/ commands are no longer available. Here is some +guidance on the new commands available from Geant4 4.0. Note +particularly the new compound commands: + +/vis/drawTree +/vis/drawVolume +/vis/drawView +/vis/open +/vis/specify + +Introduction +============ + +See also the Users Guide For Application Developers, GettingStarted, +Visualization. + +For using the visualization commands, it is useful to know the concept +of "scene", "scene handler", and "viewer". A "scene" is a set of +visualizable objects. A "scene handler" is a graphics-data modeler, +which processes raw data in a scene for later visualization. And a +"viewer" generates images based on data processed by a scene handler. +Roughly speaking, a set of a scene handler and a viewer corresponds to +a visualization driver. + +The typical steps of performing Geant4 visualization are: + +Step 1. Create a scene handler and a viewer. + +Step 2. Create an empty scene. + +Step 3. Add raw 3D data to the created scene. + +Step 4. Attach the current scene handler to the current scene. + +Step 5. Set camera parameters, drawing style (wireframe/surface), etc. + +Step 6. Make the viewer execute visualization. + +Step 7. Declare the end of visualization for flushing. + +Note that the above list does not mean that you have to execute 7 +commands for visualization. You can use "compound commands" which can +execute several visualization commands at one time. + +A scene handler can handle only one scene at any one time but can have +any number of viewers. + +A scene can be attached to any number of scene handlers. + +It is important to realise that there is also the concept of a "current" +scene, "current" scene handler and "current" viewer which are maintained +by the G4VisManager. It is usually the last object created or selected +or operated upon. + +Note that there is also a concept of a "standard view" which is that which +comfortably includes all components of the scene. From this follow the +concept of standard target point, etc. It is the responsibility of +each viewer to apply its view parameters relatively, taking into account +the scene it represents. This is a dynamic operation and the scene handler +and its viewers must be smart enough to know when to recalculate +graphics-system-dependent quantities when the scene or the view parameters +change. + +See below for a more extended description. + +NI means "not implemented". + + +Scenes +====== + +A scene is a list of visualizable objects, such as detector components, +hits, trajectories, axes, etc. + +Scenes are graphics-system-independent. + +The G4VisManager has a list of scenes. + +Unless otherwise stated, commands affect the current scene only. + +/vis/scene/add/axes [] [] [] [] [] + default: 0 0 0 1 m + Draws axes at (x0, y0, z0) of given length. + +NI /vis/scene/add/ghost [] [] +NI [] [] + +/vis/scene/add/ghosts [] + default: all + +/vis/scene/add/hits [] + default: (argument not impl'd yet.) + Causes hits, if any, to be drawn at the end of processiing an event. + +/vis/scene/add/logicalVolume [] + default: 1 + +/vis/scene/add/scale [ ] [x|y|z] [] [] [] [auto|manual] [ ] + default: 1 m x 1 0 0 auto 0 0 0 m + Adds an annotated scale line to the current scene. See G4Scale.hh + for further description. + +/vis/scene/add/text + +/vis/scene/add/trajectories [] + default: (argument not impl'd yet.) + Causes trajectories, if any, to be drawn at the end of processiing an event. + +NI /vis/scene/add/transientObjects ???????????? (JA 9/Aug/01) + +/vis/scene/add/volume [] [] [] + default: world -1 -1 + Adds physical volume to current scene. + If copy-no is negative, first occurrence of physical-volume-name is + selected. + If depth is negative, search is made to all depths. + +/vis/scene/create [] + default auto-generated name + This scene becomes current. + +NI /vis/scene/edit (Just make a new one? JA 9/Aug/01) + +/vis/scene/endOfEventAction [accumulate|refresh] + default: refresh + The scene handler for this scene will, when a viewer of this scene is + current, be requested to accumulate "transient" objects, such as hits, + event by event or to erase them (refresh the screen) before drawing the + transient objects of the next event. Any "run-persistent" objects, such + as dectector geometry components, are unaffected and remain in the viewer. + +/vis/scene/list [] [] + default: all 0 + Current scene remains current. + +/vis/scene/notifyHandlers [] [r[efresh]]|f[lush]] + default: current scene name refresh + Clears and refreshes all viewers of current scene. + The default action "refresh" does not issue "update" (see + /vis/viewer/update). + If "flush" is specified, it issues an "update" as well as "refresh". Useful + for refreshing and initiating post-processing for graphics systems which + need post-processing. + +/vis/scene/remove + Current scene can change or become invalid. + +/vis/scene/select [] + default: current scene name + This scene becomes current. + +NI /vis/scene/set/hitOption accumulate|byEvent + default: byEvent + (Implemented as see /vis/scene/accumulate true|false.)) + +NI /vis/scene/set/modelingStyle [] + +NI /vis/scene/set/notifyOption immediate|delayed + + +Scene Handlers +============== + +A scene handler is an object which knows how to interpret a scene for a +specific graphics system. + +Each scene handler handles one scene and has, in general, any number of +viewers. + +The G4VisManager has a list of scene handlers. + +/vis/sceneHandler/attach [] + default: current scene name + Attaches scene to current scene handler. + +/vis/sceneHandler/create [] [] + default: error auto-generated name + (The first default simply triggers a list of possibilities.) + This scene handler becomes current. + The current scene, if any, is attached. + +/vis/sceneHandler/list [] [] + default: all 0 + Current scene handler remains current. + +NI /vis/sceneHandler/notifyEndOfProcessing + Issues "update" for each viewer of current scene handler. + +NI /vis/sceneHandler/processScene + Refreshes all viewers of current scene handler. + Does not issue "update" (see /vis/viewer/update). + +/vis/sceneHandler/remove + Current scene handler can change or become invalid. + +/vis/sceneHandler/select [] + default: current scene handler name + This scene handler becomes current. + + +Viewers +======= + +A viewer opens windows and draws to the screen or writes to file for +off-line viewing or hardcopy, etc. It can be dumb (a non-interactive +window) or intelligent (respond to mouse clicks, spawn other windows, +change viewpoint, etc.). + +Most viewer commands respond to the viewer "short name", which is the +name up to the first space character, if any. Thus, a viewer name can +contain spaces but must be unique up to the first space. + +Unless otherwise stated, commands affect the current viewer only. + +/vis/viewer/clear + +NI /vis/viewer/clone + Creates a clone. Clone becomes current viewer. + +/vis/viewer/create [] [] [] + default: current scene handler name auto-generated name 600 + Pixel size of square window (hint only). + This viewer becomes current. + +/vis/viewer/dolly [] [] + default: current-value m + Moves the camera incrementally in by this distance. + +/vis/viewer/dollyTo [] [] + default: current-value m + Moves the camera in this distance relative to standard target point. + +/vis/viewer/flush [] + Compound command: /vis/viewer/refresh [] + /vis/viewer/update [] + Useful for refreshing and initiating post-processing for graphics systems + which need post-processing. This viewer becomes current. + +/vis/viewer/list [] [] + default: all 0 + Current viewer remains current. + +/vis/viewer/pan [] [] [] + default: 0 0 + Moves the camera incrementally right and up by these amounts. + +/vis/viewer/panTo [] [] [] + default: 0 0 + Moves the camera to this position right and up relative to standard target + point. + +/vis/viewer/select + default: no default + This viewer becomes current. + +/vis/viewer/refresh [] + default: current viewer name + Re-traverses graphical data, which is enough in some cases to refresh the + view. In some cases post-processing is required to complete the view - + see /vis/viewer/update. + This viewer becomes current. + +/vis/viewer/remove + default: no default + Current viewer can change or become invalid. + +/vis/viewer/reset [] + default: current viewer name + Resets view parameters to defaults. + This viewer becomes current. + +/vis/viewer/zoom [] + default: 1 + Multiplies magnification by this factor. + +/vis/viewer/zoomTo [] + default: 1 + Magnifies by this factor relative to standard view. + +/vis/viewer/set/all + Copies view parameters from from-viewer to current viewer. + +/vis/viewer/set/autoRefresh [true|false] + default: false + View is automatically refreshed after a change of view parameters. + +/vis/viewer/set/culling + g[lobal]|c[overedDaughters]|i[nvisible]|d[ensity] [true|false] + [density] [unit] + default: none true 0.01 g/cm3 + +NI /vis/viewer/set/cutawayPlane ... + Set plane(s) for cutaway views. + +/vis/viewer/set/edge [true|false] + default: true + +/vis/viewer/set/hiddenEdge [true|false] + default: true + +/vis/viewer/set/hiddenMarker [true|false] + default: true + +/vis/viewer/set/lightsMove with-camera|with-object + +/vis/viewer/set/lightsThetaPhi [] [] [deg|rad] + default: 60 45 deg + after first use: and use "current as default". +/vis/viewer/set/lightsVector [] [] [] + default: 1 1 1 + after first use: current as default. + Set direction of main lighting. + +/vis/viewer/set/lineSegmentsPerCircle [] + default: 24 + Number of sides per circle in polygon/polyhedron graphical representation + of objects with curved lines/surfaces. + +/vis/viewer/set/projection + o[rthogonal]|p[erspective] [] [deg|rad] + default: none 30 deg + +/vis/viewer/set/sectionPlane ... + Set plane for drawing section (DCUT). Specify plane by x y z units nx ny nz, + e.g., for a y-z plane at x = 1 cm: + /vis/viewer/set/section_plane on 1 0 0 cm 1 0 0 + +/vis/viewer/set/style w[ireframe]|s[urface] + +/vis/viewer/set/upThetaPhi [] [] [deg|rad] + default: 90 90 deg + after first use: and use "current as default". +/vis/viewer/set/upVector [] [] [] + default: 0 1 0 + after first use: current as default. + Set up vector. Viewer will attempt always to show this direction upwards. + +/vis/viewer/set/viewpointThetaPhi [] [] [deg|rad] + default: 0 0 deg + after first use: and use "current as default". +/vis/viewer/set/viewpointVector [] [] [] + default: 0 0 1 + after first use: current as default. + Set direction from target to camera. Also changes lightpoint direction if + lights are set to move with camera. + +NI /vis/viewer/notifyOption immediate|delayed ?Issue of "update" after "set"? + +NI /vis/viewer/notifyHandler ?? + +/vis/viewer/update [] + default: current viewer name + Initiates post-processing if required. This viewer becomes current. + + +Attributes (nothing implemented yet) +========== + +The G4VisManager also keeps a list of visualization attributes which can +be created and changed and attributed to visualizable objects. + +Unless otherwise stated, commands affect the visualization attributes of +the current viewer only. + +NI /vis/attributes/create [] + default: auto-generated name + These attributes are passed to the current viewer??????????? + +NI /vis/attributes/set/colour [] [] [] [] [] +NI /vis/attributes/set/color [] [] [] [] [] + default: current attributes name 1 1 1 1 + Sets colour (red, green, blue, opacity). + +NI /vis/scene/set/attributes + Associates current vis attributes with logical volume. (Do we need to + provide possibility of resetting to original attributes?) + (Move to scene when implemented.) + + +General Commands +================ + +/vis/enable [true|false] + default: true +/vis/disable + Enables/disables visualization system. + +/vis/verbose [] + default: warnings + Simple graded message scheme - give first letter or a digit: + 0) quiet, // Nothing is printed. + 1) startup, // Startup and endup messages are printed... + 2) errors, // ...and errors... + 3) warnings, // ...and warnings... + 4) confirmations, // ...and confirming messages... + 5) parameters, // ...and parameters of scenes and views... + 6) all // ...and everything available. + + +Compound Commands +================= + +NI /vis/draw clashes with old /vis~/draw/, so... + +/vis/drawTree [] [] +default: world ATree + /vis/open $2 + /vis/drawVolume $1 + +/vis/drawVolume [] +default: world + /vis/scene/create + /vis/scene/add/volume $1 + /vis/sceneHandler/attach + +/vis/drawView [] [] + [] [] [] + [] + [] [] +default: 0 0 0 0 cm 1 0 cm + /vis/viewer/viewpointThetaPhi $1 $2 deg + /vis/viewer/panTo $3 $4 $5 + /vis/viewer/zoomTo $6 + /vis/viewer/dollyTo $7 $8 + +/vis/open [] [<[pixels>] +default: error 600 + /vis/sceneHandler/create $1 + /vis/viewer/create ! ! $2 + +/vis/specify + /geometry/print $1 + /vis/scene/create + /vis/scene/add/logicalVolume $1 + /vis/sceneHandler/attach + + +Appendix +======== + +About the Visualization Manager: + +G4VisManager is a "Singleton", i.e., only one instance of it or any +derived class may exist. A G4Exception is thrown if an attempt is +made to instantiate more than one. + +It is also an abstract class, so the user must derive his/her own +class from G4VisManager, implement the pure virtual function +RegisterGraphicsSystems, and instantiate an object of the derived +class - for an example see +visualization/include/MyVisManager.hh/cc. + +The recommended way for users to obtain a pointer to the vis +manager is with G4VVisManager::GetConcreteInstance (), being always +careful to test for non-zero. This pointer is non-zero only when +(a) an object of the derived class exists and (b) when there is a +valid viewer available. + +The VisManager creates graphics systems, scenes, scene handlers and +viewers and manages them. You can have any number. It has the +concept of a "current viewer", and the "current scene handler", the +"current scene" and the "current graphics system" which go with it. +You can select the current viewer. Most of the the operations of +the VisManager take place with the current viewer, in particular, +the Draw operations. + +Each scene comprises drawable objects such as detector components +and hits when appropriate. A scene handler translates a scene into +graphics-system-specific function calls and, possibly, a +graphics-system-dependent database - display lists, scene graphs, +etc. Each viewer has its "view parameters" (see class description +of G4ViewParameters for available parameters and also for a +description of the concept of a "standard view" and all that). + +A friend class G4VisStateDependent is "state dependent", i.e., it +is notified on change of state (G4ApplicationState). This is used +to message the G4VisManager to draw hits and trajectories in the +current scene at the end of event, as required. + + +About Views and View Parameters: + +THE STANDARD VIEW AND ALL THAT. + +In GEANT4 visualization, we have the concept of a "Standard +View". This is the view when the complete set of objects being +viewed is comfortably in view from any viewpoint. It is defined by +the "Bounding Sphere" of "visible" objects when initially +registered in the scene, and by the View Parameters. + +There is also the "Standard Target Point", which is the centre of +the Bounding Sphere (note that this belongs to the scene and is +stored in the G4Scene object). The "Current Target Point", defined +relative to the Standard Target Point, is changed by the +"dolly" and "zoom" commands, and can be reset to the Standard +Target Point with the "/vis/viewer/reset" command. + +Also, the "Standard Camera Position" is the "Standard Camera +Distance" along the Viewpoint Direction vector from the Standard +Target Point. The Standard Camera Distance is the radius of the +Bounding Sphere divided by fFieldHalfAngle. It is not stored +explicitly because of the singularity at fFieldHalfAngle = 0, +which implies parallel projection. + +Similarly, the "Current Camera Position" is the "Current Camera +Distance" along the Viewpoint Direction vector from the Current +Target Point. The Current Camera Distance is given by the formulae +below, but note that it can be negative, meaning that the camera +has moved *beyond* the Current Target Point, which is +conceptually possible, but which might give some problems when +setting up the view matrix - see, for example, G4OpenGLView::SetView (). + +All viewers are expected to keep the "Up Vector" vertical. + +Finally, the view is magnified by the "Zoom Factor" which is +reset to 1 by the "/vis/viewer/reset" command. diff --git a/source/visualization/README.quick b/source/visualization/README.quick new file mode 100644 index 0000000000..aec95662e9 --- /dev/null +++ b/source/visualization/README.quick @@ -0,0 +1,67 @@ + Quick installation on Linux (might work elsewhere) + ================================================== + +NOTE: tag names and CLHEP versions, etc., will change. These are +representative and apply on 2nd August 2001. + +NOTE: as for csh. For sh, ksh, bash, replace setenv by export and put +'=' between name and value, e.g., export G4=. + +1) setenv G4 + setenv SCRATCH (for binaries) + +2) cd $G4 + cvs co -r geant4-03-02-ref-02 geant4 + +3) Needs CLHEP1.7: go to Geant4 Web Page, Download, CLHEP version 1.6 + (sic), CLHEP, "LINUX V1.7 using egcs 1.1.2" and untar into, say, + G4/CLHEP1.7/. (egcs 1.1.2 is the default compiler on Noric.) + cd $G4 + mkdir CLHEP1.7 + cd CLHEP1.7 + tar xzf clhep-1.7.0.0-egcs-1.1.2.tar.gz + +4) Optionally, update to later subtags: + cd $G4/geant4/source/visualization + cvs update -d -P -r vis-V03-02-12 + cd $G4/geant4/graphics_reps + cvs update -d -P -r greps-V03-02-03 + cd $G4/geant4/intercoms + cvs update -d -P -r intercoms-V03-02-04 + +5) setenv G4INSTALL $G4/geant4 + setenv G4BIN $SCRATCH/bin + setenv G4LIB $SCRATCH/lib + setenv G4TMP $SCRATCH/tmp + setenv G4SYSTEM Linux-g++ + setenv G4LEVELGAMMADATA $G4INSTALL/data/PhotonEvaporation + setenv CLHEP_BASE_DIR $G4/CLHEP1.7 + setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:$CLHEP_BASE_DIR/lib + +5) VIS and UI variables (the BUILD variables are for installers, the + USE for users - you are both!): + setenv G4VIS_BUILD_OPENGLX_DRIVER 1 + setenv G4VIS_USE_OPENGLX 1 + setenv G4UI_BUILD_TERMINAL_SESSION 1 (*) + setenv G4UI_USE_TERMINAL 1 + setenv OGLHOME /usr/X11 (Might not be necessary) + +6) If you're more adventurous, have motif or lesstif... + setenv G4VIS_BUILD_OPENGLXM_DRIVER 1 + setenv G4VIS_USE_OPENGLXM 1 + setenv G4UI_BUILD_XM_SESSION 1 + setenv G4UI_USE_XM 1 + +7) ...or want to try GAG (Japanese GUI): + setenv G4UI_BUILD_GAG_SESSION 1 (*) + setenv G4UI_USE_GAG 1 + +8) Optionally: + setenv G4DEBUG 1 + +9) cd $G4INSTALL/source + gmake >& gmake.log & + +10) cd $G4INSTALL/examples/novice/N03 + gmake >& gmake.log & diff --git a/source/visualization/RayTracer/History b/source/visualization/RayTracer/History index 90e290ded7..49d75aef0d 100644 --- a/source/visualization/RayTracer/History +++ b/source/visualization/RayTracer/History @@ -1,4 +1,4 @@ -$Id: History,v 1.8 2001/05/18 10:00:22 johna Exp $ +$Id: History,v 1.11 2001/11/22 17:32:04 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -24,7 +24,18 @@ committal in the CVS repository ! History file for visualization category --------------------------------------- -18th May 2001 John Allison (raytracer-V03-01-00) +22nd Nov 2001 Gabriele Cosmo (raytracer-V03-02-02) +- G4RTJpegMaker.cc: added check on ISO compliance for binary mode on + file streamsi, to allow compilation on non-ISO compilers. + +13th Nov 2001 Hajime Yoshida and Minamimoto (raytracer-V03-02-01) +- Updation of G4RTJpegMaker.cc for Windows platform. + +14th July 2001 John Allison (raytracer-V03-02-00) +- Changed some arguments in G4RayTracer.hh from G4ThreeVector to const + G4ThreeVector& to keep Sun compiler happy. + +18th May 2001 John Allison (raytracer-V03-01-00) - Removed unnecessary virtual inheritance of G4VViewer in G4RayTracerViewer. 2nd May 2000 John Allison diff --git a/source/visualization/RayTracer/include/G4RTJpeg.hh b/source/visualization/RayTracer/include/G4RTJpeg.hh index 36a2fc04fe..9122b6742a 100644 --- a/source/visualization/RayTracer/include/G4RTJpeg.hh +++ b/source/visualization/RayTracer/include/G4RTJpeg.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTJpeg.hh,v 1.4.4.1 2001/06/28 19:15:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTJpeg.hh,v 1.5 2001/07/11 10:09:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RTJpegCoder.hh b/source/visualization/RayTracer/include/G4RTJpegCoder.hh index 76dfdfbc7a..1a04b990a8 100644 --- a/source/visualization/RayTracer/include/G4RTJpegCoder.hh +++ b/source/visualization/RayTracer/include/G4RTJpegCoder.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTJpegCoder.hh,v 1.4.4.1 2001/06/28 19:15:50 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTJpegCoder.hh,v 1.5 2001/07/11 10:09:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh b/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh index 878abc4115..c5f0475df5 100644 --- a/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh +++ b/source/visualization/RayTracer/include/G4RTJpegCoderTables.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTJpegCoderTables.hh,v 1.4.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTJpegCoderTables.hh,v 1.5 2001/07/11 10:09:01 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description: diff --git a/source/visualization/RayTracer/include/G4RTJpegMaker.hh b/source/visualization/RayTracer/include/G4RTJpegMaker.hh index cde98a1d1b..45f2cc0e9d 100644 --- a/source/visualization/RayTracer/include/G4RTJpegMaker.hh +++ b/source/visualization/RayTracer/include/G4RTJpegMaker.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTJpegMaker.hh,v 1.4.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTJpegMaker.hh,v 1.5 2001/07/11 10:09:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RTMessenger.hh b/source/visualization/RayTracer/include/G4RTMessenger.hh index b293f211ec..e2b46c12f6 100644 --- a/source/visualization/RayTracer/include/G4RTMessenger.hh +++ b/source/visualization/RayTracer/include/G4RTMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTMessenger.hh,v 1.3.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTMessenger.hh,v 1.4 2001/07/11 10:09:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RTOutBitStream.hh b/source/visualization/RayTracer/include/G4RTOutBitStream.hh index 4cccaf5781..4c6170e4bb 100644 --- a/source/visualization/RayTracer/include/G4RTOutBitStream.hh +++ b/source/visualization/RayTracer/include/G4RTOutBitStream.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTOutBitStream.hh,v 1.5.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTOutBitStream.hh,v 1.6 2001/07/11 10:09:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RTSteppingAction.hh b/source/visualization/RayTracer/include/G4RTSteppingAction.hh index 312d49d772..95c629bd32 100644 --- a/source/visualization/RayTracer/include/G4RTSteppingAction.hh +++ b/source/visualization/RayTracer/include/G4RTSteppingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTSteppingAction.hh,v 1.3.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTSteppingAction.hh,v 1.4 2001/07/11 10:09:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RTTrackingAction.hh b/source/visualization/RayTracer/include/G4RTTrackingAction.hh index d938e6dd49..e6e9306d15 100644 --- a/source/visualization/RayTracer/include/G4RTTrackingAction.hh +++ b/source/visualization/RayTracer/include/G4RTTrackingAction.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTTrackingAction.hh,v 1.3.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTTrackingAction.hh,v 1.4 2001/07/11 10:09:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RayShooter.hh b/source/visualization/RayTracer/include/G4RayShooter.hh index 668094c68b..cea8f39411 100644 --- a/source/visualization/RayTracer/include/G4RayShooter.hh +++ b/source/visualization/RayTracer/include/G4RayShooter.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayShooter.hh,v 1.2.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayShooter.hh,v 1.3 2001/07/11 10:09:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // class description: diff --git a/source/visualization/RayTracer/include/G4RayTracer.hh b/source/visualization/RayTracer/include/G4RayTracer.hh index 154db10849..b1c22a7729 100644 --- a/source/visualization/RayTracer/include/G4RayTracer.hh +++ b/source/visualization/RayTracer/include/G4RayTracer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTracer.hh,v 1.5.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTracer.hh,v 1.8 2001/07/27 22:33:03 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -54,8 +54,6 @@ // RegisterGraphicsSystem (new G4RayTracer); // -#if defined (G4VIS_BUILD_RAYTRACER_DRIVER) || defined (G4VIS_USE_RAYTRACER) - #include "globals.hh" #include "G4ThreeVector.hh" #include "G4VGraphicsSystem.hh" @@ -159,11 +157,11 @@ class G4RayTracer : public G4VGraphicsSystem inline G4int GetNColumn() const { return nColumn; } inline void SetNRow(G4int val) { nRow = val; } inline G4int GetNRow() const { return nRow; } - inline void SetEyePosition(G4ThreeVector val) { eyePosition = val; } + inline void SetEyePosition(const G4ThreeVector& val) { eyePosition = val; } inline G4ThreeVector GetEyePosition() const { return eyePosition; } - inline void SetTargetPosition(G4ThreeVector val) { targetPosition = val; } + inline void SetTargetPosition(const G4ThreeVector& val) { targetPosition = val; } inline G4ThreeVector GetTargetPosition() const { return targetPosition; } - inline void SetLightDirection(G4ThreeVector val) { lightDirection = val.unit(); } + inline void SetLightDirection(const G4ThreeVector& val) { lightDirection = val.unit(); } inline G4ThreeVector GetLightDirection() const { return lightDirection; } inline void SetHeadAngle(G4double val) { headAngle = val; } inline G4double GetHeadAngle() const { return headAngle; } @@ -176,6 +174,3 @@ class G4RayTracer : public G4VGraphicsSystem }; #endif -#endif - - diff --git a/source/visualization/RayTracer/include/G4RayTracerFeatures.hh b/source/visualization/RayTracer/include/G4RayTracerFeatures.hh index 20a81c5cde..ab44c9b8c9 100644 --- a/source/visualization/RayTracer/include/G4RayTracerFeatures.hh +++ b/source/visualization/RayTracer/include/G4RayTracerFeatures.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTracerFeatures.hh,v 1.2.4.1 2001/06/28 19:15:51 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTracerFeatures.hh,v 1.3 2001/07/11 10:09:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh b/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh index a81af4eae0..527910eee2 100644 --- a/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh +++ b/source/visualization/RayTracer/include/G4RayTracerSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTracerSceneHandler.hh,v 1.3.4.1 2001/06/28 19:15:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTracerSceneHandler.hh,v 1.5 2001/08/24 21:19:43 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // John Allison 17th March 2000 @@ -46,6 +46,7 @@ public: void AddPrimitive(const G4Polyhedron&){} void AddPrimitive(const G4NURBS&){} void AddPrimitive(const G4Polymarker&){} + void AddPrimitive(const G4Scale&){} void AddThis(const G4Box&){} void AddThis(const G4Cons&){} diff --git a/source/visualization/RayTracer/include/G4RayTracerViewer.hh b/source/visualization/RayTracer/include/G4RayTracerViewer.hh index c93f6d3758..bc7937f64f 100644 --- a/source/visualization/RayTracer/include/G4RayTracerViewer.hh +++ b/source/visualization/RayTracer/include/G4RayTracerViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTracerViewer.hh,v 1.3.2.1 2001/06/28 19:15:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTracerViewer.hh,v 1.4 2001/07/11 10:09:02 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // John Allison 17th March 2000 diff --git a/source/visualization/RayTracer/include/G4RayTrajectory.hh b/source/visualization/RayTracer/include/G4RayTrajectory.hh index 32330cad8a..5386475d7f 100644 --- a/source/visualization/RayTracer/include/G4RayTrajectory.hh +++ b/source/visualization/RayTracer/include/G4RayTrajectory.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTrajectory.hh,v 1.7.2.1 2001/06/28 19:15:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTrajectory.hh,v 1.8 2001/07/11 10:09:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh b/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh index 6e56e0db69..78c27c6a62 100644 --- a/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh +++ b/source/visualization/RayTracer/include/G4RayTrajectoryPoint.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTrajectoryPoint.hh,v 1.3.4.1 2001/06/28 19:15:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTrajectoryPoint.hh,v 1.4 2001/07/11 10:09:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/include/G4VFigureFileMaker.hh b/source/visualization/RayTracer/include/G4VFigureFileMaker.hh index 9e6ef29f42..5864725454 100644 --- a/source/visualization/RayTracer/include/G4VFigureFileMaker.hh +++ b/source/visualization/RayTracer/include/G4VFigureFileMaker.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VFigureFileMaker.hh,v 1.3.4.1 2001/06/28 19:15:52 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VFigureFileMaker.hh,v 1.4 2001/07/11 10:09:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/RayTracer/src/G4RTJpegCoder.cc b/source/visualization/RayTracer/src/G4RTJpegCoder.cc index cdc16b0bf7..6433ece664 100644 --- a/source/visualization/RayTracer/src/G4RTJpegCoder.cc +++ b/source/visualization/RayTracer/src/G4RTJpegCoder.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTJpegCoder.cc,v 1.3.4.1 2001/06/28 19:15:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTJpegCoder.cc,v 1.4 2001/07/11 10:09:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTJpegMaker.cc b/source/visualization/RayTracer/src/G4RTJpegMaker.cc index 96097d9970..c84b6b9aa6 100644 --- a/source/visualization/RayTracer/src/G4RTJpegMaker.cc +++ b/source/visualization/RayTracer/src/G4RTJpegMaker.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTJpegMaker.cc,v 1.4.4.1 2001/06/28 19:15:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTJpegMaker.cc,v 1.7 2001/11/22 17:29:01 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // @@ -30,7 +30,7 @@ #include "G4RTJpeg.hh" #include "G4RTJpegMaker.hh" #include "G4RTJpegCoder.hh" -#include +#include "g4std/fstream" G4RTJpegMaker::G4RTJpegMaker() {;} @@ -63,8 +63,21 @@ void G4RTJpegMaker::CreateFigureFile(G4String fileName, aFigure.GetJpegData(&jpegAddress,jpegSize); G4std::ofstream ofs; - ofs.open(fileName,G4std::ios::out); +#ifdef G4USE_STD_NAMESPACE + ofs.open(fileName,G4std::ios::out|G4std::ios::trunc|G4std::ios::binary); +#else + ofs.open(fileName,ios::out|ios::trunc); +#endif ofs.write(jpegAddress,jpegSize); ofs.close(); } + + + + + + + + + diff --git a/source/visualization/RayTracer/src/G4RTMessenger.cc b/source/visualization/RayTracer/src/G4RTMessenger.cc index f3b23b7b26..7b2f24d345 100644 --- a/source/visualization/RayTracer/src/G4RTMessenger.cc +++ b/source/visualization/RayTracer/src/G4RTMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTMessenger.cc,v 1.4.4.1 2001/06/28 19:15:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTMessenger.cc,v 1.5 2001/07/11 10:09:03 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTOutBitStream.cc b/source/visualization/RayTracer/src/G4RTOutBitStream.cc index 7899650159..2ceb33cae5 100644 --- a/source/visualization/RayTracer/src/G4RTOutBitStream.cc +++ b/source/visualization/RayTracer/src/G4RTOutBitStream.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTOutBitStream.cc,v 1.3.4.1 2001/06/28 19:15:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTOutBitStream.cc,v 1.4 2001/07/11 10:09:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTSteppingAction.cc b/source/visualization/RayTracer/src/G4RTSteppingAction.cc index 8dadfb46e6..15a022acc2 100644 --- a/source/visualization/RayTracer/src/G4RTSteppingAction.cc +++ b/source/visualization/RayTracer/src/G4RTSteppingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTSteppingAction.cc,v 1.5.4.1 2001/06/28 19:15:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTSteppingAction.cc,v 1.6 2001/07/11 10:09:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/visualization/RayTracer/src/G4RTTrackingAction.cc b/source/visualization/RayTracer/src/G4RTTrackingAction.cc index 0fe5cddd23..f2736a7b60 100644 --- a/source/visualization/RayTracer/src/G4RTTrackingAction.cc +++ b/source/visualization/RayTracer/src/G4RTTrackingAction.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RTTrackingAction.cc,v 1.2.4.1 2001/06/28 19:15:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RTTrackingAction.cc,v 1.3 2001/07/11 10:09:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/visualization/RayTracer/src/G4RayShooter.cc b/source/visualization/RayTracer/src/G4RayShooter.cc index 0f9231d4e9..6a9c7ed4f5 100644 --- a/source/visualization/RayTracer/src/G4RayShooter.cc +++ b/source/visualization/RayTracer/src/G4RayShooter.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayShooter.cc,v 1.1.4.1 2001/06/28 19:15:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayShooter.cc,v 1.2 2001/07/11 10:09:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4RayShooter.hh" diff --git a/source/visualization/RayTracer/src/G4RayTracer.cc b/source/visualization/RayTracer/src/G4RayTracer.cc index 000ca58316..3fe52a23cd 100644 --- a/source/visualization/RayTracer/src/G4RayTracer.cc +++ b/source/visualization/RayTracer/src/G4RayTracer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTracer.cc,v 1.7.4.1 2001/06/28 19:15:53 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTracer.cc,v 1.8 2001/07/11 10:09:04 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc b/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc index 8ac7874316..03912a9c16 100644 --- a/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc +++ b/source/visualization/RayTracer/src/G4RayTracerSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTracerSceneHandler.cc,v 1.1.4.1 2001/06/28 19:15:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTracerSceneHandler.cc,v 1.2 2001/07/11 10:09:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4RayTracerSceneHandler.hh" diff --git a/source/visualization/RayTracer/src/G4RayTracerViewer.cc b/source/visualization/RayTracer/src/G4RayTracerViewer.cc index dcc2a97378..16083539e7 100644 --- a/source/visualization/RayTracer/src/G4RayTracerViewer.cc +++ b/source/visualization/RayTracer/src/G4RayTracerViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTracerViewer.cc,v 1.7.2.1 2001/06/28 19:15:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTracerViewer.cc,v 1.9 2001/11/12 18:22:10 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4RayTracerViewer.hh" @@ -66,7 +66,9 @@ void G4RayTracerViewer::SetView() { theTracer->SetTargetPosition(targetPoint); theTracer->SetEyePosition(cameraPosition); theTracer->SetHeadAngle(fVP.GetViewpointDirection().phi()); - theTracer->SetLightDirection(-fVP.GetActualLightpointDirection()); + const G4Vector3D + actualLightpointDirection(-fVP.GetActualLightpointDirection()); + theTracer->SetLightDirection(actualLightpointDirection); } diff --git a/source/visualization/RayTracer/src/G4RayTrajectory.cc b/source/visualization/RayTracer/src/G4RayTrajectory.cc index 6473ef05da..ce75668a35 100644 --- a/source/visualization/RayTracer/src/G4RayTrajectory.cc +++ b/source/visualization/RayTracer/src/G4RayTrajectory.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTrajectory.cc,v 1.7.2.1 2001/06/28 19:15:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTrajectory.cc,v 1.8 2001/07/11 10:09:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc b/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc index b264384e7e..fae6b08cfa 100644 --- a/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc +++ b/source/visualization/RayTracer/src/G4RayTrajectoryPoint.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4RayTrajectoryPoint.cc,v 1.2.4.1 2001/06/28 19:15:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4RayTrajectoryPoint.cc,v 1.3 2001/07/11 10:09:05 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // diff --git a/source/visualization/Tree/History b/source/visualization/Tree/History index 93aa8f325c..3132c5030a 100644 --- a/source/visualization/Tree/History +++ b/source/visualization/Tree/History @@ -1,4 +1,4 @@ -$Id: History,v 1.6 2001/06/15 12:29:04 johna Exp $ +$Id: History,v 1.8 2001/08/24 20:41:25 johna Exp $ ------------------------------------------------------------------- ========================================================= @@ -24,6 +24,12 @@ committal in the CVS repository ! History file for visualization/Tree sub-category ------------------------------------------------ +24th August 2001 John Allison (vis-V03-02-13) +- Replaced Dump by RequestPrimitives. No change of functionality. + +25th July 2001 John Allison (vis-V03-02-07) +- Improved use of G4PhysicalVolumeModel::CurtailDescent(). + 15th June 2001 John Allison (vis-V03-01-06) - Changed char* to const char* in G4GAGTreeList.hh". - Added 2nd template argument (less) to sets in G4ASCIITreeSceneHandler and diff --git a/source/visualization/Tree/include/G4ASCIITree.hh b/source/visualization/Tree/include/G4ASCIITree.hh index 70542b9500..5a5ba8f5bc 100644 --- a/source/visualization/Tree/include/G4ASCIITree.hh +++ b/source/visualization/Tree/include/G4ASCIITree.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ASCIITree.hh,v 1.4.2.1 2001/06/28 19:15:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ASCIITree.hh,v 1.5 2001/07/11 10:09:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4ASCIITreeMessenger.hh b/source/visualization/Tree/include/G4ASCIITreeMessenger.hh index c699116ba6..6f195d6983 100644 --- a/source/visualization/Tree/include/G4ASCIITreeMessenger.hh +++ b/source/visualization/Tree/include/G4ASCIITreeMessenger.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ASCIITreeMessenger.hh,v 1.3.2.1 2001/06/28 19:15:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ASCIITreeMessenger.hh,v 1.4 2001/07/11 10:09:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4ASCIITreeSceneHandler.hh b/source/visualization/Tree/include/G4ASCIITreeSceneHandler.hh index f6e4dd7a08..cb8f476f58 100644 --- a/source/visualization/Tree/include/G4ASCIITreeSceneHandler.hh +++ b/source/visualization/Tree/include/G4ASCIITreeSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ASCIITreeSceneHandler.hh,v 1.8.2.1 2001/06/28 19:15:54 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ASCIITreeSceneHandler.hh,v 1.10 2001/08/24 20:41:26 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 @@ -47,7 +47,9 @@ public: virtual void BeginModeling(); virtual void EndModeling(); protected: - virtual void Dump(const G4VSolid&); + virtual void RequestPrimitives(const G4VSolid&); + // Overrides G4VScenehandler::RequestPrimitives and implements dump + // of leaves of the geometry heirachy. G4std::set > fLVSet; typedef G4std::set >::iterator diff --git a/source/visualization/Tree/include/G4ASCIITreeViewer.hh b/source/visualization/Tree/include/G4ASCIITreeViewer.hh index 01adf64605..d4650bd94d 100644 --- a/source/visualization/Tree/include/G4ASCIITreeViewer.hh +++ b/source/visualization/Tree/include/G4ASCIITreeViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ASCIITreeViewer.hh,v 1.3.2.1 2001/06/28 19:15:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ASCIITreeViewer.hh,v 1.4 2001/07/11 10:09:06 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4GAGTreeSceneHandler.hh b/source/visualization/Tree/include/G4GAGTreeSceneHandler.hh index 2f2db0cc8d..eff9a9ad77 100644 --- a/source/visualization/Tree/include/G4GAGTreeSceneHandler.hh +++ b/source/visualization/Tree/include/G4GAGTreeSceneHandler.hh @@ -82,7 +82,9 @@ public: void BeginModeling(); void EndModeling(); protected: - void Dump(const G4VSolid&); + void RequestPrimitives(const G4VSolid&); + // Overrides G4VScenehandler::RequestPrimitives and implements dump + // of leaves of the geometry heirachy. G4std::set > fLVSet; typedef G4std::set >::iterator diff --git a/source/visualization/Tree/include/G4VTree.hh b/source/visualization/Tree/include/G4VTree.hh index 622251eaf4..908a5efd63 100644 --- a/source/visualization/Tree/include/G4VTree.hh +++ b/source/visualization/Tree/include/G4VTree.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTree.hh,v 1.3.2.1 2001/06/28 19:15:55 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTree.hh,v 1.4 2001/07/11 10:09:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/include/G4VTreeSceneHandler.hh b/source/visualization/Tree/include/G4VTreeSceneHandler.hh index ea56e28468..9332a52f24 100644 --- a/source/visualization/Tree/include/G4VTreeSceneHandler.hh +++ b/source/visualization/Tree/include/G4VTreeSceneHandler.hh @@ -21,27 +21,19 @@ // ******************************************************************** // // -// $Id: G4VTreeSceneHandler.hh,v 1.4.2.1 2001/06/28 19:15:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTreeSceneHandler.hh,v 1.7 2001/08/24 21:42:13 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 // A base class for a scene handler to dump geometry hierarchy. +// In the derived class, override G4VScenehandler::RequestPrimitives +// to implement dump of the "leaves" of the geometry heirachy. #ifndef G4VTREESCENEHANDLER_HH #define G4VTREESCENEHANDLER_HH #include "G4VSceneHandler.hh" -#include "G4Box.hh" -#include "G4Cons.hh" -#include "G4Tubs.hh" -#include "G4Trd.hh" -#include "G4Trap.hh" -#include "G4Sphere.hh" -#include "G4Para.hh" -#include "G4Torus.hh" -#include "G4Polycone.hh" -#include "G4Polyhedra.hh" class G4VPhysicalVolume; class G4LogicalVolume; @@ -53,17 +45,6 @@ public: G4VTreeSceneHandler(G4VGraphicsSystem& system, const G4String& name); virtual ~G4VTreeSceneHandler (); - void AddThis (const G4Box& s) {Dump (s);} - void AddThis (const G4Cons & s) {Dump (s);} - void AddThis (const G4Tubs& s) {Dump (s);} - void AddThis (const G4Trd& s) {Dump (s);} - void AddThis (const G4Trap& s) {Dump (s);} - void AddThis (const G4Sphere& s) {Dump (s);} - void AddThis (const G4Para& s) {Dump (s);} - void AddThis (const G4Torus& s) {Dump (s);} - void AddThis (const G4Polycone& s) {Dump (s);} - void AddThis (const G4Polyhedra& s) {Dump (s);} - void AddThis (const G4VSolid& s) {Dump (s);} void PreAddThis (const G4Transform3D& objectTransformation, const G4VisAttributes&); void PostAddThis (); @@ -81,9 +62,10 @@ public: virtual void AddPrimitive (const G4Text&) {} virtual void AddPrimitive (const G4Circle&) {} virtual void AddPrimitive (const G4Square&) {} - virtual void AddPrimitive (const G4Polymarker&) {} virtual void AddPrimitive (const G4Polyhedron&) {} virtual void AddPrimitive (const G4NURBS&) {} + virtual void AddPrimitive (const G4Polymarker&) {} + virtual void AddPrimitive (const G4Scale&) {} virtual void BeginModeling(); virtual void EndModeling(); @@ -91,7 +73,8 @@ public: static G4int GetSceneCount(); protected: - virtual void Dump (const G4VSolid&) = 0; + // In the derived class, override G4VScenehandler::RequestPrimitives + // to implement dump of the "leaves" of the geometry heirachy. static G4int fSceneIdCount; // Counter for Tree scene handlers. static G4int fSceneCount; // No. of extanct scene handlers. G4int fCurrentDepth; // Current depth of geom. hierarchy. diff --git a/source/visualization/Tree/include/G4VTreeSceneHandler.icc b/source/visualization/Tree/include/G4VTreeSceneHandler.icc index 09c7be617b..a749742104 100644 --- a/source/visualization/Tree/include/G4VTreeSceneHandler.icc +++ b/source/visualization/Tree/include/G4VTreeSceneHandler.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTreeSceneHandler.icc,v 1.3.2.1 2001/06/28 19:15:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTreeSceneHandler.icc,v 1.4 2001/07/11 10:09:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 18th May 2000 diff --git a/source/visualization/Tree/include/G4VTreeViewer.hh b/source/visualization/Tree/include/G4VTreeViewer.hh index cc8433b207..b06d487c24 100644 --- a/source/visualization/Tree/include/G4VTreeViewer.hh +++ b/source/visualization/Tree/include/G4VTreeViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTreeViewer.hh,v 1.3.2.1 2001/06/28 19:15:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTreeViewer.hh,v 1.4 2001/07/11 10:09:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4ASCIITree.cc b/source/visualization/Tree/src/G4ASCIITree.cc index 6a83b85096..9973578b62 100644 --- a/source/visualization/Tree/src/G4ASCIITree.cc +++ b/source/visualization/Tree/src/G4ASCIITree.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ASCIITree.cc,v 1.5.2.1 2001/06/28 19:15:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ASCIITree.cc,v 1.7 2001/08/05 19:02:12 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 @@ -61,7 +61,7 @@ G4VViewer* G4ASCIITree::CreateViewer (G4VSceneHandler& scene, new G4ASCIITreeViewer ((G4ASCIITreeSceneHandler&) scene, name); if (pView) { if (pView -> GetViewId () < 0) { - G4cerr << "G4ASCIITree::CreateViewer: error flagged by negative" + G4cout << "G4ASCIITree::CreateViewer: ERROR flagged by negative" " view id in G4ASCIITreeViewer creation." "\n Destroying view and returning null pointer." << G4endl; @@ -70,7 +70,7 @@ G4VViewer* G4ASCIITree::CreateViewer (G4VSceneHandler& scene, } } else { - G4cerr << "G4ASCIITree::CreateViewer: null pointer on" + G4cout << "G4ASCIITree::CreateViewer: ERROR: null pointer on" " new G4ASCIITreeViewer." << G4endl; } return pView; diff --git a/source/visualization/Tree/src/G4ASCIITreeMessenger.cc b/source/visualization/Tree/src/G4ASCIITreeMessenger.cc index 415470b32b..0800cbc815 100644 --- a/source/visualization/Tree/src/G4ASCIITreeMessenger.cc +++ b/source/visualization/Tree/src/G4ASCIITreeMessenger.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ASCIITreeMessenger.cc,v 1.4.2.1 2001/06/28 19:15:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ASCIITreeMessenger.cc,v 1.5 2001/07/11 10:09:07 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4ASCIITreeSceneHandler.cc b/source/visualization/Tree/src/G4ASCIITreeSceneHandler.cc index 14757c6555..2092df8e2a 100644 --- a/source/visualization/Tree/src/G4ASCIITreeSceneHandler.cc +++ b/source/visualization/Tree/src/G4ASCIITreeSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ASCIITreeSceneHandler.cc,v 1.8.2.1 2001/06/28 19:15:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ASCIITreeSceneHandler.cc,v 1.11 2001/08/24 20:41:31 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 @@ -70,18 +70,17 @@ void G4ASCIITreeSceneHandler::EndModeling () { G4VTreeSceneHandler::EndModeling (); // To re-use "culling off" code. } -void G4ASCIITreeSceneHandler::Dump (const G4VSolid& solid) { +void G4ASCIITreeSceneHandler::RequestPrimitives(const G4VSolid& solid) { const G4ASCIITree* pSystem = (G4ASCIITree*)GetGraphicsSystem(); const G4int verbosity = pSystem->GetVerbosity(); const G4int detail = verbosity % 10; if (verbosity < 10 && fReplicaSet.find(fpCurrentPV) != fReplicaSet.end()) { - // Ignore if an already treated replica. (Assumes that the model - // which has invoked this function is a G4PhysicalVolumeModel - we - // check this by testing fpCurrentPV.) - if (fpCurrentPV) { - ((G4PhysicalVolumeModel*)fpModel)->CurtailDescent(); + // Ignore if an already treated replica. + G4PhysicalVolumeModel* pPVM = fpModel->GetG4PhysicalVolumeModel(); + if (pPVM) { + pPVM->CurtailDescent(); return; } } diff --git a/source/visualization/Tree/src/G4ASCIITreeViewer.cc b/source/visualization/Tree/src/G4ASCIITreeViewer.cc index bcaa6ce669..17c652dc51 100644 --- a/source/visualization/Tree/src/G4ASCIITreeViewer.cc +++ b/source/visualization/Tree/src/G4ASCIITreeViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ASCIITreeViewer.cc,v 1.3.2.1 2001/06/28 19:15:56 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ASCIITreeViewer.cc,v 1.4 2001/07/11 10:09:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4ASCIITreeViewer.hh" diff --git a/source/visualization/Tree/src/G4GAGTree.cc b/source/visualization/Tree/src/G4GAGTree.cc index 1a907a5381..cd8dcf2ed5 100644 --- a/source/visualization/Tree/src/G4GAGTree.cc +++ b/source/visualization/Tree/src/G4GAGTree.cc @@ -54,7 +54,7 @@ G4VViewer* G4GAGTree::CreateViewer (G4VSceneHandler& scene, new G4GAGTreeViewer ((G4GAGTreeSceneHandler&) scene, name); if (pView) { if (pView -> GetViewId () < 0) { - G4cerr << "G4GAGTree::CreateViewer: error flagged by negative" + G4cout << "G4GAGTree::CreateViewer: ERROR flagged by negative" " view id in G4GAGTreeViewer creation." "\n Destroying view and returning null pointer." << G4endl; @@ -63,7 +63,7 @@ G4VViewer* G4GAGTree::CreateViewer (G4VSceneHandler& scene, } } else { - G4cerr << "G4GAGTree::CreateViewer: null pointer on" + G4cout << "G4GAGTree::CreateViewer: ERROR: null pointer on" " new G4GAGTreeViewer." << G4endl; } return pView; diff --git a/source/visualization/Tree/src/G4GAGTreeSceneHandler.cc b/source/visualization/Tree/src/G4GAGTreeSceneHandler.cc index e6f12b956e..e5a2ecc5b9 100644 --- a/source/visualization/Tree/src/G4GAGTreeSceneHandler.cc +++ b/source/visualization/Tree/src/G4GAGTreeSceneHandler.cc @@ -131,7 +131,7 @@ void G4GAGTreeSceneHandler::EndModeling () G4VTreeSceneHandler::EndModeling (); } -void G4GAGTreeSceneHandler::Dump (const G4VSolid& solid) +void G4GAGTreeSceneHandler::RequestPrimitives (const G4VSolid& solid) { ////////////////////////////// G4String cur_abs_pv_name ; @@ -144,11 +144,10 @@ void G4GAGTreeSceneHandler::Dump (const G4VSolid& solid) const G4int detail = verbosity % 10; if (verbosity < 10 && fReplicaSet.find(fpCurrentPV) != fReplicaSet.end()) { - // Ignore if an already treated replica. (Assumes that the model - // which has invoked this function is a G4PhysicalVolumeModel - we - // check this by testing fpCurrentPV.) - if (fpCurrentPV) { - ((G4PhysicalVolumeModel*)fpModel)->CurtailDescent(); + // Ignore if an already treated replica. + G4PhysicalVolumeModel* pPVM = fpModel->GetG4PhysicalVolumeModel(); + if (pPVM) { + pPVM->CurtailDescent(); return; } } diff --git a/source/visualization/Tree/src/G4VTree.cc b/source/visualization/Tree/src/G4VTree.cc index ea753695f7..dabb1cd82f 100644 --- a/source/visualization/Tree/src/G4VTree.cc +++ b/source/visualization/Tree/src/G4VTree.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTree.cc,v 1.3.2.1 2001/06/28 19:15:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTree.cc,v 1.4 2001/07/11 10:09:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 diff --git a/source/visualization/Tree/src/G4VTreeSceneHandler.cc b/source/visualization/Tree/src/G4VTreeSceneHandler.cc index 009a2f9ae8..5b18e209ee 100644 --- a/source/visualization/Tree/src/G4VTreeSceneHandler.cc +++ b/source/visualization/Tree/src/G4VTreeSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTreeSceneHandler.cc,v 1.4.2.1 2001/06/28 19:15:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTreeSceneHandler.cc,v 1.6 2001/07/25 21:02:28 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 5th April 2001 @@ -71,15 +71,14 @@ void G4VTreeSceneHandler::BeginModeling() { if (fpOriginalMP) { fpNonCullingMP = new G4ModelingParameters(*fpOriginalMP); fpNonCullingMP->SetCulling(false); - ((G4VModel*)fpModel)->SetModelingParameters(fpNonCullingMP); - // Note the deliberate casting away of const. + fpModel->SetModelingParameters(fpNonCullingMP); } } } void G4VTreeSceneHandler::EndModeling() { if (fpModel && fpOriginalMP) { - ((G4VModel*)fpModel)->SetModelingParameters(fpOriginalMP); + fpModel->SetModelingParameters(fpOriginalMP); delete fpNonCullingMP; } G4VSceneHandler::EndModeling(); // Required: see G4VSceneHandler.hh. diff --git a/source/visualization/Tree/src/G4VTreeViewer.cc b/source/visualization/Tree/src/G4VTreeViewer.cc index f5076877d4..47f64874ac 100644 --- a/source/visualization/Tree/src/G4VTreeViewer.cc +++ b/source/visualization/Tree/src/G4VTreeViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VTreeViewer.cc,v 1.3.2.1 2001/06/28 19:15:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VTreeViewer.cc,v 1.4 2001/07/11 10:09:08 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4VTreeViewer.hh" diff --git a/source/visualization/VRML/GNUmakefile b/source/visualization/VRML/GNUmakefile index 8dfbcb521d..e60ca36bb6 100644 --- a/source/visualization/VRML/GNUmakefile +++ b/source/visualization/VRML/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.3 2000/04/07 13:32:42 gcosmo Exp $ +# $Id: GNUmakefile,v 1.4 2001/07/27 22:33:05 johna Exp $ # lib name name := G4VRML @@ -27,8 +27,6 @@ ifdef G4VIS_BUILD_VRML_DRIVER CPPFLAGS += -DVRML endif -ifdef G4VIS_BUILD_VRMLFILE_DRIVER - CPPFLAGS += -DVRMLFILE -endif +CPPFLAGS += -DVRMLFILE include $(G4INSTALL)/config/common.gmk diff --git a/source/visualization/VRML/History b/source/visualization/VRML/History index 80391bf6a8..84d94fd9e1 100644 --- a/source/visualization/VRML/History +++ b/source/visualization/VRML/History @@ -1,3 +1,7 @@ +VRML-V03-02-01 18th September 2001 +- Updation for automatic visualization at Hebden Bridge mini-workshop. +- Filename incrementation is made the same as the DAWNFILE driver + 27th April 2000 Gabriele Cosmo - Removed unnecessary #include "G4Transform.hh". diff --git a/source/visualization/VRML/g4vrmlview/g4mini.java b/source/visualization/VRML/g4vrmlview/g4mini.java index 282d2d9fab..e4943e5be1 100644 --- a/source/visualization/VRML/g4vrmlview/g4mini.java +++ b/source/visualization/VRML/g4vrmlview/g4mini.java @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: g4mini.java,v 1.2.4.1 2001/06/28 19:15:57 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: g4mini.java,v 1.3 2001/07/11 10:09:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // import java.io.*; import java.net.*; diff --git a/source/visualization/VRML/g4vrmlview/g4vrmlview.java b/source/visualization/VRML/g4vrmlview/g4vrmlview.java index fd7f0ea78a..f505a615bc 100644 --- a/source/visualization/VRML/g4vrmlview/g4vrmlview.java +++ b/source/visualization/VRML/g4vrmlview/g4vrmlview.java @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: g4vrmlview.java,v 1.2.4.1 2001/06/28 19:16:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: g4vrmlview.java,v 1.3 2001/07/11 10:09:09 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // import java.io.*; import java.net.*; diff --git a/source/visualization/VRML/include/FRClient.h b/source/visualization/VRML/include/FRClient.h index 1483666d84..3b24d6c3e5 100644 --- a/source/visualization/VRML/include/FRClient.h +++ b/source/visualization/VRML/include/FRClient.h @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: FRClient.h,v 1.2.4.1 2001/06/28 19:16:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: FRClient.h,v 1.4 2001/09/18 07:53:07 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // FRClient.h // FukuiRenderer Client diff --git a/source/visualization/VRML/include/G4FRClient.hh b/source/visualization/VRML/include/G4FRClient.hh index 3803a5c410..c7ff85fd8a 100644 --- a/source/visualization/VRML/include/G4FRClient.hh +++ b/source/visualization/VRML/include/G4FRClient.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FRClient.hh,v 1.4.4.1 2001/06/28 19:16:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FRClient.hh,v 1.6 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4FRClient.hh // Yasuhide Sawada and Satoshi Tanaka diff --git a/source/visualization/VRML/include/G4VRML1.hh b/source/visualization/VRML/include/G4VRML1.hh index 534ad8ad2d..3c29f5b120 100644 --- a/source/visualization/VRML/include/G4VRML1.hh +++ b/source/visualization/VRML/include/G4VRML1.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML1.hh,v 1.6.4.1 2001/06/28 19:16:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1.hh,v 1.8 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1.hh // Yasuhide Sawada and Satoshi Tanaka diff --git a/source/visualization/VRML/include/G4VRML1File.hh b/source/visualization/VRML/include/G4VRML1File.hh index c5eab25571..3cc022aeca 100644 --- a/source/visualization/VRML/include/G4VRML1File.hh +++ b/source/visualization/VRML/include/G4VRML1File.hh @@ -21,14 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML1File.hh,v 1.6.4.1 2001/06/28 19:16:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1File.hh,v 1.9 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1File.hh // Satoshi Tanaka & Yasuhide Sawada -#if defined (G4VIS_BUILD_VRMLFILE_DRIVER) || defined (G4VIS_USE_VRMLFILE) - #ifndef G4VRML1FILE_HH #define G4VRML1FILE_HH @@ -46,5 +44,3 @@ public: }; #endif //G4VRML1File_HH -#endif //G4VIS_BUILD_VRMLFILE_DRIVER - diff --git a/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh b/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh index de71d7b72b..70302f0edd 100644 --- a/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML1FileSceneHandler.hh @@ -21,14 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML1FileSceneHandler.hh,v 1.6.4.1 2001/06/28 19:16:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1FileSceneHandler.hh,v 1.10 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1FileSceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER - #ifndef G4VRML1FILE_SCENE_HANDLER_HH #define G4VRML1FILE_SCENE_HANDLER_HH @@ -76,8 +74,10 @@ public: void AddPrimitive(const G4Square&); void AddPrimitive (const G4Polymarker& polymarker) { G4VSceneHandler::AddPrimitive (polymarker); } + void AddPrimitive (const G4Scale& scale) + { G4VSceneHandler::AddPrimitive (scale); } - void ClearStore(); + void ClearTransientStore(); // Used for triggering detector re-drawing. void BeginModeling(); void EndModeling(); @@ -125,4 +125,3 @@ private: }; #endif //G4VRML1File_SCENE_HH -#endif //G4VIS_BUILD_VRMLFILE_DRIVER diff --git a/source/visualization/VRML/include/G4VRML1FileViewer.hh b/source/visualization/VRML/include/G4VRML1FileViewer.hh index 2dc8ea5a0b..8b99727930 100644 --- a/source/visualization/VRML/include/G4VRML1FileViewer.hh +++ b/source/visualization/VRML/include/G4VRML1FileViewer.hh @@ -21,14 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML1FileViewer.hh,v 1.4.4.1 2001/06/28 19:16:00 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1FileViewer.hh,v 1.7 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1FileViewer.hh // Satoshi Tanaka and Yasuhide Sawada -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER - #ifndef G4VRML1FILE_VIEWER_HH #define G4VRML1FILE_VIEWER_HH @@ -53,4 +51,3 @@ private: }; #endif //G4VRML1File_VIEW_HH -#endif //G4VIS_BUILD_VRMLFILE_DRIVER diff --git a/source/visualization/VRML/include/G4VRML1SceneHandler.hh b/source/visualization/VRML/include/G4VRML1SceneHandler.hh index 57a0bf66ef..4b6b8433fb 100644 --- a/source/visualization/VRML/include/G4VRML1SceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML1SceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML1SceneHandler.hh,v 1.6.4.1 2001/06/28 19:16:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1SceneHandler.hh,v 1.9 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1SceneHandler.hh // Yasuhide Sawada & Satoshi Tanaka @@ -77,8 +77,10 @@ public: void AddPrimitive(const G4Square&); void AddPrimitive (const G4Polymarker& polymarker) { G4VSceneHandler::AddPrimitive (polymarker); } + void AddPrimitive (const G4Scale& scale) + { G4VSceneHandler::AddPrimitive (scale); } - void ClearStore(); + void ClearTransientStore(); // Used for triggering detector re-drawing. void BeginModeling(); void EndModeling(); diff --git a/source/visualization/VRML/include/G4VRML1Viewer.hh b/source/visualization/VRML/include/G4VRML1Viewer.hh index 46bf7878d8..60581ee80e 100644 --- a/source/visualization/VRML/include/G4VRML1Viewer.hh +++ b/source/visualization/VRML/include/G4VRML1Viewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML1Viewer.hh,v 1.4.4.1 2001/06/28 19:16:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1Viewer.hh,v 1.6 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1Viewer.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2.hh b/source/visualization/VRML/include/G4VRML2.hh index 0d1fd20b27..70f1da3f47 100644 --- a/source/visualization/VRML/include/G4VRML2.hh +++ b/source/visualization/VRML/include/G4VRML2.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML2.hh,v 1.6.4.1 2001/06/28 19:16:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2.hh,v 1.8 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2.hh // Satoshi Tanaka and Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRML2File.hh b/source/visualization/VRML/include/G4VRML2File.hh index 5571c8a709..96d0ae2ff6 100644 --- a/source/visualization/VRML/include/G4VRML2File.hh +++ b/source/visualization/VRML/include/G4VRML2File.hh @@ -21,14 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML2File.hh,v 1.6.4.1 2001/06/28 19:16:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2File.hh,v 1.9 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2File.hh // Satoshi Tanaka & Yasuhide Sawada -#if defined (G4VIS_BUILD_VRMLFILE_DRIVER) || defined (G4VIS_USE_VRMLFILE) - #ifndef G4VRML2FILE_HH #define G4VRML2FILE_HH @@ -46,5 +44,3 @@ public: }; #endif //G4VRML2File_HH -#endif //G4VIS_BUILD_VRMLFILE_DRIVER - diff --git a/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh b/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh index a84efca3e2..84ca30ce24 100644 --- a/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML2FileSceneHandler.hh @@ -21,14 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML2FileSceneHandler.hh,v 1.5.4.1 2001/06/28 19:16:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2FileSceneHandler.hh,v 1.9 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2FileSceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER - #ifndef G4VRML2FILE_SCENE_HANDLER_HH #define G4VRML2FILE_SCENE_HANDLER_HH @@ -76,8 +74,10 @@ public: void AddPrimitive(const G4Square&); void AddPrimitive (const G4Polymarker& polymarker) { G4VSceneHandler::AddPrimitive (polymarker); } + void AddPrimitive (const G4Scale& scale) + { G4VSceneHandler::AddPrimitive (scale); } - void ClearStore(); + void ClearTransientStore(); // Used for triggering detector re-drawing. void BeginModeling(); void EndModeling(); @@ -135,4 +135,3 @@ public: }; #endif //G4VRML2File_SCENE_HH -#endif //G4VIS_BUILD_VRMLFILE_DRIVER diff --git a/source/visualization/VRML/include/G4VRML2FileViewer.hh b/source/visualization/VRML/include/G4VRML2FileViewer.hh index f680a1340d..46d649e772 100644 --- a/source/visualization/VRML/include/G4VRML2FileViewer.hh +++ b/source/visualization/VRML/include/G4VRML2FileViewer.hh @@ -21,14 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML2FileViewer.hh,v 1.4.4.1 2001/06/28 19:16:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2FileViewer.hh,v 1.7 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2FileViewer.hh // Satoshi Tanaka and Yasuhide Sawada -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER - #ifndef G4VRML2FILE_VIEWER_HH #define G4VRML2FILE_VIEWER_HH @@ -60,4 +58,3 @@ private: }; #endif //G4VRML2File_VIEW_HH -#endif //G4VIS_BUILD_VRMLFILE_DRIVER diff --git a/source/visualization/VRML/include/G4VRML2SceneHandler.hh b/source/visualization/VRML/include/G4VRML2SceneHandler.hh index a7d20c68d6..f67c113440 100644 --- a/source/visualization/VRML/include/G4VRML2SceneHandler.hh +++ b/source/visualization/VRML/include/G4VRML2SceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML2SceneHandler.hh,v 1.5.4.1 2001/06/28 19:16:01 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2SceneHandler.hh,v 1.8 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2SceneHandler.hh // Satoshi Tanaka & Yasuhide Sawada @@ -76,8 +76,10 @@ public: void AddPrimitive(const G4Square&); void AddPrimitive (const G4Polymarker& polymarker) { G4VSceneHandler::AddPrimitive (polymarker); } + void AddPrimitive (const G4Scale& scale) + { G4VSceneHandler::AddPrimitive (scale); } - void ClearStore(); + void ClearTransientStore(); // Used for triggering detector re-drawing. void BeginModeling(); void EndModeling(); diff --git a/source/visualization/VRML/include/G4VRML2Viewer.hh b/source/visualization/VRML/include/G4VRML2Viewer.hh index 111b06ecfd..7e6fc78032 100644 --- a/source/visualization/VRML/include/G4VRML2Viewer.hh +++ b/source/visualization/VRML/include/G4VRML2Viewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML2Viewer.hh,v 1.4.4.1 2001/06/28 19:16:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2Viewer.hh,v 1.6 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2Viewer.hh // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/include/G4VRMLNetConfig.hh b/source/visualization/VRML/include/G4VRMLNetConfig.hh index 84af6e0fab..bab2e6bc73 100644 --- a/source/visualization/VRML/include/G4VRMLNetConfig.hh +++ b/source/visualization/VRML/include/G4VRMLNetConfig.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRMLNetConfig.hh,v 1.3.4.1 2001/06/28 19:16:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRMLNetConfig.hh,v 1.5 2001/09/18 07:53:08 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRMLNetConfig.hh // Satoshi Tanaka diff --git a/source/visualization/VRML/src/FRClient.cc b/source/visualization/VRML/src/FRClient.cc index 7546a38757..1350ec1bb7 100644 --- a/source/visualization/VRML/src/FRClient.cc +++ b/source/visualization/VRML/src/FRClient.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: FRClient.cc,v 1.3.4.1 2001/06/28 19:16:02 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: FRClient.cc,v 1.5 2001/09/18 07:53:15 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // FRClient.cc // FukuiRenderer Client diff --git a/source/visualization/VRML/src/G4FRClient.cc b/source/visualization/VRML/src/G4FRClient.cc index 48319691af..94ccc6ee9e 100644 --- a/source/visualization/VRML/src/G4FRClient.cc +++ b/source/visualization/VRML/src/G4FRClient.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FRClient.cc,v 1.4.4.1 2001/06/28 19:16:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FRClient.cc,v 1.6 2001/09/18 07:53:15 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4FRClient.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML1.cc b/source/visualization/VRML/src/G4VRML1.cc index 4b25e80899..d0788e2400 100644 --- a/source/visualization/VRML/src/G4VRML1.cc +++ b/source/visualization/VRML/src/G4VRML1.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML1.cc,v 1.5.4.1 2001/06/28 19:16:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1.cc,v 1.7 2001/09/18 07:53:15 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML1File.cc b/source/visualization/VRML/src/G4VRML1File.cc index f612063471..918b793726 100644 --- a/source/visualization/VRML/src/G4VRML1File.cc +++ b/source/visualization/VRML/src/G4VRML1File.cc @@ -21,17 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML1File.cc,v 1.5.4.1 2001/06/28 19:16:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1File.cc,v 1.8 2001/09/18 07:53:15 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1File.cc // Satoshi Tanaka & Yasuhide Sawada -//=================// -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER -//=================// - - #include // sscanf #include // getenv @@ -75,5 +70,3 @@ G4VViewer* G4VRML1File::CreateViewer(G4VSceneHandler& scene, const G4String& nam return pView; } - -#endif diff --git a/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc b/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc index 6a251ba565..b1f9d1e3c9 100644 --- a/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML1FileSceneHandler.cc @@ -21,16 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML1FileSceneHandler.cc,v 1.4.4.1 2001/06/28 19:16:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1FileSceneHandler.cc,v 1.7 2001/09/18 07:53:15 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1FileSceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada -//=================// -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER -//=================// - //#define DEBUG_FR_SCENE @@ -70,7 +66,7 @@ const char DEFAULT_WRL_FILE_NAME[] = "g4.wrl"; const char ENV_VRML_VIEWER [] = "G4VRMLFILE_VIEWER"; const char NO_VRML_VIEWER [] = "NONE"; const char VRMLFILE_DEST_DIR [] = "G4VRMLFILE_DEST_DIR"; - +const int DEFAULT_MAX_WRL_FILE_NUM = 100 ; G4VRML1FileSceneHandler::G4VRML1FileSceneHandler(G4VRML1File& system, const G4String& name) : G4VSceneHandler(system, fSceneIdCount++, name), @@ -88,17 +84,16 @@ G4VRML1FileSceneHandler::G4VRML1FileSceneHandler(G4VRML1File& system, const G4St strcpy( fVRMLFileDestDir, getenv( VRMLFILE_DEST_DIR ) ); } - // maximum number of g4.prim files in the dest directory - fMaxFileNum = 1 ; // initialization + // maximum number of g4.wrl files in the dest directory + fMaxFileNum = DEFAULT_MAX_WRL_FILE_NUM ; // initialization if ( getenv( "G4VRMLFILE_MAX_FILE_NUM" ) != NULL ) { sscanf( getenv("G4VRMLFILE_MAX_FILE_NUM"), "%d", &fMaxFileNum ) ; } else { - fMaxFileNum = 1 ; + fMaxFileNum = DEFAULT_MAX_WRL_FILE_NUM ; } - if( fMaxFileNum < 1 ) { fMaxFileNum = 1 ; } - + if( fMaxFileNum < 1 ) { fMaxFileNum = 1; } } @@ -112,41 +107,44 @@ G4VRML1FileSceneHandler::~G4VRML1FileSceneHandler() } -#define G4VRML1SCENE G4VRML1FileSceneHandler +#define G4VRML1SCENEHANDLER G4VRML1FileSceneHandler #define IS_CONNECTED this->isConnected() #include "G4VRML1SceneHandlerFunc.icc" #undef IS_CONNECTED -#undef G4VRML1SCENE +#undef G4VRML1SCENEHANDLER void G4VRML1FileSceneHandler::connectPort() { - // g4.wrl, g4_1.wrl, ..., g4_MAX_FILE_INDEX.wrl + // g4_00.wrl, g4_01.wrl, ..., g4_MAX_FILE_INDEX.wrl const int MAX_FILE_INDEX = fMaxFileNum - 1 ; // dest directory (null if no environmental variables is set) strcpy ( fVRMLFileName, fVRMLFileDestDir) ; - // create full path name (default) + // create (full) path name (default) strcat ( fVRMLFileName, DEFAULT_WRL_FILE_NAME ); // Determine VRML file name for( int i = 0 ; i < fMaxFileNum ; i++) { - // Message - if( fMaxFileNum > 1 && i == MAX_FILE_INDEX ) { + // Message in the final execution + if( i == MAX_FILE_INDEX ) + { G4cerr << "===========================================" << G4endl; - G4cerr << "WARNING MESSAGE from VRML1FILE driver: " << G4endl; + G4cerr << "WARNING MESSAGE from VRML1FILE driver: " << G4endl; G4cerr << " This file name is the final one in the " << G4endl; G4cerr << " automatic updation of the output file name." << G4endl; - G4cerr << " You may overwrite an existing file of " << G4endl; - G4cerr << " the same name. " << G4endl; + G4cerr << " You may overwrite existing files, i.e. " << G4endl; + G4cerr << " g4_XX.wrl. " << G4endl; G4cerr << "===========================================" << G4endl; } - // re-determine file to G4VRMLFILE_DEST_DIR/g4_i.wrl for i>0 - if( i > 0 ) { - sprintf( fVRMLFileName, "%s%s%d.wrl" , fVRMLFileDestDir, WRL_FILE_HEADER, i ); + // re-determine file name as G4VRMLFILE_DEST_DIR/g4_XX.wrl + if( i >= 0 && i <= 9 ) { + sprintf( fVRMLFileName, "%s%s%s%d.wrl" , fVRMLFileDestDir, WRL_FILE_HEADER, "0", i ); + } else { + sprintf( fVRMLFileName, "%s%s%d.wrl" , fVRMLFileDestDir, WRL_FILE_HEADER, i ); } // check validity of the file name @@ -154,13 +152,14 @@ void G4VRML1FileSceneHandler::connectPort() fin.open(fVRMLFileName) ; if(!fin) { // new file - fin.close(); // error recovery + fin.close(); break; } else { // already exists (try next) fin.close(); } + } // for // open a VRML 1.0 file with determined file name @@ -205,5 +204,3 @@ void G4VRML1FileSceneHandler::closePort() G4int G4VRML1FileSceneHandler::fSceneIdCount = 0; G4int G4VRML1FileSceneHandler::fSceneCount = 0; - -#endif diff --git a/source/visualization/VRML/src/G4VRML1FileViewer.cc b/source/visualization/VRML/src/G4VRML1FileViewer.cc index d50fcafd98..c4c9a12b75 100644 --- a/source/visualization/VRML/src/G4VRML1FileViewer.cc +++ b/source/visualization/VRML/src/G4VRML1FileViewer.cc @@ -21,16 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML1FileViewer.cc,v 1.4.4.1 2001/06/28 19:16:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1FileViewer.cc,v 1.7 2001/09/18 07:53:15 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRMLView.cc // Satoshi Tanaka & Yasuhide Sawada -//=================// -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER -//=================// - //#define DEBUG_FR_VIEW @@ -90,6 +86,3 @@ void G4VRML1FileViewer::FinishView(void) G4cerr << "***** G4VRML1FileViewer::FinishView(): No effects" << G4endl; #endif } - - -#endif diff --git a/source/visualization/VRML/src/G4VRML1SceneHandler.cc b/source/visualization/VRML/src/G4VRML1SceneHandler.cc index 1e25926121..8e434e97b4 100644 --- a/source/visualization/VRML/src/G4VRML1SceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML1SceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML1SceneHandler.cc,v 1.4.4.1 2001/06/28 19:16:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1SceneHandler.cc,v 1.6 2001/09/18 07:53:15 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1SceneHandler.cc // Yasuhide Sawada and Satoshi Tanaka @@ -83,11 +83,11 @@ G4VRML1SceneHandler::~G4VRML1SceneHandler() -#define G4VRML1SCENE G4VRML1SceneHandler +#define G4VRML1SCENEHANDLER G4VRML1SceneHandler #define IS_CONNECTED fDest.isConnected() #include "G4VRML1SceneHandlerFunc.icc" #undef IS_CONNECTED -#undef G4VRML1SCENE +#undef G4VRML1SCENEHANDLER void G4VRML1SceneHandler::connectPort(G4int max_trial) diff --git a/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc b/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc index 47504c9519..bce1287f82 100644 --- a/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc +++ b/source/visualization/VRML/src/G4VRML1SceneHandlerFunc.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML1SceneHandlerFunc.icc,v 1.7.2.1 2001/06/28 19:16:03 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1SceneHandlerFunc.icc,v 1.9 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML1SceneHandlerFunc.icc // Satoshi Tanaka & Yasuhide Sawada @@ -37,7 +37,7 @@ // End of MACRO -void G4VRML1SCENE::AddThis(const G4Trd& trd) +void G4VRML1SCENEHANDLER::AddThis(const G4Trd& trd) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis trd" << "\n" ; @@ -46,7 +46,7 @@ void G4VRML1SCENE::AddThis(const G4Trd& trd) ADDTHIS_WITH_NAME(trd) } -void G4VRML1SCENE::AddThis(const G4Trap& trap) +void G4VRML1SCENEHANDLER::AddThis(const G4Trap& trap) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis trap" << "\n" ; @@ -55,7 +55,7 @@ void G4VRML1SCENE::AddThis(const G4Trap& trap) ADDTHIS_WITH_NAME(trap) } -void G4VRML1SCENE::AddThis(const G4Para& para) +void G4VRML1SCENEHANDLER::AddThis(const G4Para& para) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis para" << "\n" ; @@ -64,7 +64,7 @@ void G4VRML1SCENE::AddThis(const G4Para& para) ADDTHIS_WITH_NAME(para) } -void G4VRML1SCENE::AddThis(const G4Torus& torus ) +void G4VRML1SCENEHANDLER::AddThis(const G4Torus& torus ) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis torus" << "\n" ; @@ -74,7 +74,7 @@ void G4VRML1SCENE::AddThis(const G4Torus& torus ) } -void G4VRML1SCENE::AddThis(const G4VSolid& vsolid) +void G4VRML1SCENEHANDLER::AddThis(const G4VSolid& vsolid) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis vsolid" << "\n" ; @@ -83,7 +83,7 @@ void G4VRML1SCENE::AddThis(const G4VSolid& vsolid) ADDTHIS_WITH_NAME(vsolid) } -void G4VRML1SCENE::AddThis(const G4Tubs& tubs) +void G4VRML1SCENEHANDLER::AddThis(const G4Tubs& tubs) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis tubs" << "\n" ; @@ -120,7 +120,7 @@ void G4VRML1SCENE::AddThis(const G4Tubs& tubs) } -void G4VRML1SCENE::AddThis(const G4Cons& cons) +void G4VRML1SCENEHANDLER::AddThis(const G4Cons& cons) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis cons" << "\n" ; @@ -159,7 +159,7 @@ void G4VRML1SCENE::AddThis(const G4Cons& cons) fCurrentDEF = ""; } -void G4VRML1SCENE::AddThis(const G4Box& box) +void G4VRML1SCENEHANDLER::AddThis(const G4Box& box) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis box" << "\n" ; @@ -187,7 +187,7 @@ void G4VRML1SCENE::AddThis(const G4Box& box) } -void G4VRML1SCENE::AddThis(const G4Sphere& sphere) +void G4VRML1SCENEHANDLER::AddThis(const G4Sphere& sphere) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis sphere" << "\n" ; @@ -223,7 +223,7 @@ void G4VRML1SCENE::AddThis(const G4Sphere& sphere) fCurrentDEF = ""; } -void G4VRML1SCENE::AddPrimitive(const G4Polyline& polyline) +void G4VRML1SCENEHANDLER::AddPrimitive(const G4Polyline& polyline) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive polyline" << "\n" ; @@ -262,7 +262,7 @@ void G4VRML1SCENE::AddPrimitive(const G4Polyline& polyline) fDest << "}" << "\n"; // Separator } -void G4VRML1SCENE::AddPrimitive(const G4Polyhedron& polyhedron) +void G4VRML1SCENEHANDLER::AddPrimitive(const G4Polyhedron& polyhedron) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive(G4Polyhedron)" << "\n"; @@ -331,7 +331,7 @@ void G4VRML1SCENE::AddPrimitive(const G4Polyhedron& polyhedron) } -void G4VRML1SCENE::AddPrimitive(const G4NURBS& nurb) +void G4VRML1SCENEHANDLER::AddPrimitive(const G4NURBS& nurb) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive nurbs" << "\n" ; @@ -341,20 +341,20 @@ void G4VRML1SCENE::AddPrimitive(const G4NURBS& nurb) } -void G4VRML1SCENE::AddPrimitive( const G4Text& text ) +void G4VRML1SCENEHANDLER::AddPrimitive( const G4Text& text ) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive text" << "\n" ; #endif G4cerr << - "***** void G4VRML1SCENE::AddPrimitive( const G4Text& text )" + "***** void G4VRML1SCENEHANDLER::AddPrimitive( const G4Text& text )" " not implemented yet." << "\n"; VRMLBeginModeling () ; } -void G4VRML1SCENE::AddPrimitive( const G4Circle& circle ) +void G4VRML1SCENEHANDLER::AddPrimitive( const G4Circle& circle ) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive circle" << "\n" ; @@ -384,7 +384,7 @@ void G4VRML1SCENE::AddPrimitive( const G4Circle& circle ) } -void G4VRML1SCENE::AddPrimitive(const G4Square& square) +void G4VRML1SCENEHANDLER::AddPrimitive(const G4Square& square) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive square" << "\n" ; @@ -416,14 +416,7 @@ void G4VRML1SCENE::AddPrimitive(const G4Square& square) fDest << "}" << "\n"; // Separator } -void G4VRML1SCENE::ClearStore() -{ -#if defined DEBUG_SCENE_FUNC - G4cerr << "***** ClearStore(): No effects" << "\n" ; -#endif -} - -void G4VRML1SCENE::BeginModeling() +void G4VRML1SCENEHANDLER::BeginModeling() { #if defined DEBUG_SCENE_FUNC G4cerr << "***** BeginModeling " << "\n" ; @@ -431,7 +424,7 @@ void G4VRML1SCENE::BeginModeling() G4VSceneHandler::BeginModeling(); } -void G4VRML1SCENE::EndModeling() +void G4VRML1SCENEHANDLER::EndModeling() { #if defined DEBUG_SCENE_FUNC G4cerr << "***** EndModeling " << "\n" ; @@ -439,7 +432,7 @@ void G4VRML1SCENE::EndModeling() G4VSceneHandler::EndModeling(); } -void G4VRML1SCENE::BeginPrimitives(const G4Transform3D& objectTransformation) +void G4VRML1SCENEHANDLER::BeginPrimitives(const G4Transform3D& objectTransformation) { G4VSceneHandler::BeginPrimitives (objectTransformation); fpObjectTransformation = &objectTransformation; @@ -449,7 +442,7 @@ void G4VRML1SCENE::BeginPrimitives(const G4Transform3D& objectTransformation) VRMLBeginModeling(); } -void G4VRML1SCENE::EndPrimitives() +void G4VRML1SCENEHANDLER::EndPrimitives() { #if defined DEBUG_SCENE_FUNC G4cerr << "***** EndPrimitives " << "\n" ; @@ -457,7 +450,7 @@ void G4VRML1SCENE::EndPrimitives() G4VSceneHandler::EndPrimitives(); } -void G4VRML1SCENE::SendMaterialNode( const G4VisAttributes* pVA ) +void G4VRML1SCENEHANDLER::SendMaterialNode( const G4VisAttributes* pVA ) { // const double TRANSPARENCY = 0.9 ; const double TRANSPARENCY = 0.5 ; @@ -483,14 +476,14 @@ void G4VRML1SCENE::SendMaterialNode( const G4VisAttributes* pVA ) } -void G4VRML1SCENE::SendMaterialNode() +void G4VRML1SCENEHANDLER::SendMaterialNode() { SendMaterialNode ( fpViewer->GetApplicableVisAttributes (fpVisAttribs) ); } -void G4VRML1SCENE::SendMatrixTransformNode(const G4Transform3D *trans) +void G4VRML1SCENEHANDLER::SendMatrixTransformNode(const G4Transform3D *trans) { G4Point3D B (0.0, 0.0, 0.0); @@ -526,7 +519,7 @@ void G4VRML1SCENE::SendMatrixTransformNode(const G4Transform3D *trans) fDest << "\t" << "}" << "\n"; } -void G4VRML1SCENE::SendCubeNode(G4double w, G4double h, G4double d) +void G4VRML1SCENEHANDLER::SendCubeNode(G4double w, G4double h, G4double d) { fDest << "\t\t" << "Cube {" << "\n"; fDest << "\t\t\t" << "width " << w << "\n"; @@ -535,7 +528,7 @@ void G4VRML1SCENE::SendCubeNode(G4double w, G4double h, G4double d) fDest << "\t\t" << "}" << "\n"; } -void G4VRML1SCENE::SendCylinderNode(G4double R, G4double h) +void G4VRML1SCENEHANDLER::SendCylinderNode(G4double R, G4double h) { fDest << "\t\t" << "Transform {" << "\n"; fDest << "\t\t\t" << "rotation 1 0 0 " << (90. * deg) << "\n"; @@ -547,14 +540,14 @@ void G4VRML1SCENE::SendCylinderNode(G4double R, G4double h) fDest << "\t\t" << "}" << "\n"; } -void G4VRML1SCENE::SendSphereNode(G4double R) +void G4VRML1SCENEHANDLER::SendSphereNode(G4double R) { fDest << "\t\t" << "Sphere {" << "\n"; fDest << "\t\t\t" << "radius " << R << "\n"; fDest << "\t\t" << "}" << "\n"; } -void G4VRML1SCENE::VRMLBeginModeling() +void G4VRML1SCENEHANDLER::VRMLBeginModeling() { if (!IS_CONNECTED ) { #if defined DEBUG_SCENE_FUNC @@ -566,7 +559,7 @@ void G4VRML1SCENE::VRMLBeginModeling() } } -void G4VRML1SCENE::VRMLEndModeling() +void G4VRML1SCENEHANDLER::VRMLEndModeling() { if ( IS_CONNECTED ) { #if defined DEBUG_SCENE_FUNC @@ -578,7 +571,7 @@ void G4VRML1SCENE::VRMLEndModeling() } } -void G4VRML1SCENE::SendMarkerColor ( const G4VMarker& mark ) +void G4VRML1SCENEHANDLER::SendMarkerColor ( const G4VMarker& mark ) { const G4Color& color = GetColor( mark ); @@ -600,7 +593,7 @@ void G4VRML1SCENE::SendMarkerColor ( const G4VMarker& mark ) } void -G4VRML1SCENE::SendMarkerWorldPosition ( const G4VMarker& mark ) +G4VRML1SCENEHANDLER::SendMarkerWorldPosition ( const G4VMarker& mark ) { G4Point3D point = mark.GetPosition(); @@ -613,7 +606,7 @@ G4VRML1SCENE::SendMarkerWorldPosition ( const G4VMarker& mark ) } -G4double G4VRML1SCENE::GetMarkerHalfSize ( const G4VMarker& mark ) +G4double G4VRML1SCENEHANDLER::GetMarkerHalfSize ( const G4VMarker& mark ) { //----- return value ( marker radius in 3d units) G4double size = 1.0 ; // initialization @@ -660,6 +653,19 @@ G4double G4VRML1SCENE::GetMarkerHalfSize ( const G4VMarker& mark ) } +void G4VRML1SCENEHANDLER::ClearTransientStore() +{ + G4VSceneHandler::ClearTransientStore (); + // This is typically called after an update and before drawing hits + // of the next event. To simulate the clearing of "transients" + // (hits, etc.) the detector is redrawn... + if (fpViewer) { + fpViewer -> SetView (); + fpViewer -> ClearView (); + fpViewer -> DrawView (); + } +} + // #undef ADDTHIS_WITH_NAME(Solid) // #undef MAKE_NAME(Solid) diff --git a/source/visualization/VRML/src/G4VRML1Viewer.cc b/source/visualization/VRML/src/G4VRML1Viewer.cc index b9c6ae78d1..ec83d5ec7d 100644 --- a/source/visualization/VRML/src/G4VRML1Viewer.cc +++ b/source/visualization/VRML/src/G4VRML1Viewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML1Viewer.cc,v 1.4.4.1 2001/06/28 19:16:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML1Viewer.cc,v 1.6 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRMLView.cc // Yasuhide Sawada & Satoshi Tanaka diff --git a/source/visualization/VRML/src/G4VRML2.cc b/source/visualization/VRML/src/G4VRML2.cc index 06976e4164..d9b6011d98 100644 --- a/source/visualization/VRML/src/G4VRML2.cc +++ b/source/visualization/VRML/src/G4VRML2.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML2.cc,v 1.5.4.1 2001/06/28 19:16:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2.cc,v 1.7 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/VRML/src/G4VRML2File.cc b/source/visualization/VRML/src/G4VRML2File.cc index a8e2ca8ae0..72946f2ce2 100644 --- a/source/visualization/VRML/src/G4VRML2File.cc +++ b/source/visualization/VRML/src/G4VRML2File.cc @@ -21,17 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML2File.cc,v 1.5.4.1 2001/06/28 19:16:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2File.cc,v 1.8 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2File.cc // Satoshi Tanaka & Yasuhide Sawada -//=================// -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER -//=================// - - #include // sscanf #include // getenv @@ -75,5 +70,3 @@ G4VViewer* G4VRML2File::CreateViewer(G4VSceneHandler& scene, const G4String& nam return pView; } - -#endif diff --git a/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc b/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc index 4ba81aa6ef..480ed280fc 100644 --- a/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML2FileSceneHandler.cc @@ -21,16 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML2FileSceneHandler.cc,v 1.4.4.1 2001/06/28 19:16:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2FileSceneHandler.cc,v 1.7 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2FileSceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada -//=================// -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER -//=================// - //#define DEBUG_FR_SCENE @@ -68,6 +64,7 @@ const char DEFAULT_WRL_FILE_NAME[] = "g4.wrl"; const char ENV_VRML_VIEWER [] = "G4VRMLFILE_VIEWER"; const char NO_VRML_VIEWER [] = "NONE"; const char VRMLFILE_DEST_DIR [] = "G4VRMLFILE_DEST_DIR"; +const int DEFAULT_MAX_WRL_FILE_NUM = 100 ; G4VRML2FileSceneHandler::G4VRML2FileSceneHandler(G4VRML2File& system, const G4String& name) : @@ -91,15 +88,15 @@ G4VRML2FileSceneHandler::G4VRML2FileSceneHandler(G4VRML2File& system, const G4St // maximum number of g4.prim files in the dest directory - fMaxFileNum = 1 ; // initialization + fMaxFileNum = DEFAULT_MAX_WRL_FILE_NUM ; // initialization if ( getenv( "G4VRMLFILE_MAX_FILE_NUM" ) != NULL ) { sscanf( getenv("G4VRMLFILE_MAX_FILE_NUM"), "%d", &fMaxFileNum ) ; } else { - fMaxFileNum = 1 ; + fMaxFileNum = DEFAULT_MAX_WRL_FILE_NUM ; } - if( fMaxFileNum < 1 ) { fMaxFileNum = 1 ; } + if( fMaxFileNum < 1 ) { fMaxFileNum = 1; } // PV name pickability @@ -126,16 +123,16 @@ G4VRML2FileSceneHandler::~G4VRML2FileSceneHandler() } -#define G4VRML2SCENE G4VRML2FileSceneHandler +#define G4VRML2SCENEHANDLER G4VRML2FileSceneHandler #define IS_CONNECTED this->isConnected() #include "G4VRML2SceneHandlerFunc.icc" #undef IS_CONNECTED -#undef G4VRML2SCENE +#undef G4VRML2SCENEHANDLER void G4VRML2FileSceneHandler::connectPort() { - // g4.wrl, g4_1.wrl, ..., g4_MAX_FILE_INDEX.wrl + // g4_00.wrl, g4_01.wrl, ..., g4_MAX_FILE_INDEX.wrl const int MAX_FILE_INDEX = fMaxFileNum - 1 ; // dest directory (null if no environmental variables is set) @@ -147,20 +144,23 @@ void G4VRML2FileSceneHandler::connectPort() // Determine VRML file name for( int i = 0 ; i < fMaxFileNum ; i++) { - // Message - if( fMaxFileNum > 1 && i == MAX_FILE_INDEX ) { + // Message in the final execution + if( i == MAX_FILE_INDEX ) + { G4cerr << "===========================================" << G4endl; - G4cerr << "WARNING MESSAGE from VRML2FILE driver: " << G4endl; + G4cerr << "WARNING MESSAGE from VRML2FILE driver: " << G4endl; G4cerr << " This file name is the final one in the " << G4endl; G4cerr << " automatic updation of the output file name." << G4endl; - G4cerr << " You may overwrite an existing file of " << G4endl; - G4cerr << " the same name. " << G4endl; + G4cerr << " You may overwrite existing files, i.e. " << G4endl; + G4cerr << " g4_XX.wrl. " << G4endl; G4cerr << "===========================================" << G4endl; } - // re-determine file to G4VRMLFILE_DEST_DIR/g4_i.wrl for i>0 - if( i > 0 ) { - sprintf( fVRMLFileName, "%s%s%d.wrl" , fVRMLFileDestDir, WRL_FILE_HEADER, i ); + // re-determine file name as G4VRMLFILE_DEST_DIR/g4_XX.wrl + if( i >= 0 && i <= 9 ) { + sprintf( fVRMLFileName, "%s%s%s%d.wrl" , fVRMLFileDestDir, WRL_FILE_HEADER, "0", i ); + } else { + sprintf( fVRMLFileName, "%s%s%d.wrl" , fVRMLFileDestDir, WRL_FILE_HEADER, i ); } // check validity of the file name @@ -168,7 +168,7 @@ void G4VRML2FileSceneHandler::connectPort() fin.open(fVRMLFileName) ; if(!fin) { // new file - fin.close(); // error recovery + fin.close(); break; } else { // already exists (try next) @@ -219,5 +219,3 @@ void G4VRML2FileSceneHandler::closePort() G4int G4VRML2FileSceneHandler::fSceneIdCount = 0; G4int G4VRML2FileSceneHandler::fSceneCount = 0; - -#endif diff --git a/source/visualization/VRML/src/G4VRML2FileViewer.cc b/source/visualization/VRML/src/G4VRML2FileViewer.cc index 49befb9c74..1ae59d419b 100644 --- a/source/visualization/VRML/src/G4VRML2FileViewer.cc +++ b/source/visualization/VRML/src/G4VRML2FileViewer.cc @@ -21,16 +21,12 @@ // ******************************************************************** // // -// $Id: G4VRML2FileViewer.cc,v 1.5.4.1 2001/06/28 19:16:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2FileViewer.cc,v 1.8 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2FileViewer.cc // Satoshi Tanaka & Yasuhide Sawada -//=================// -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER -//=================// - //#define DEBUG_FR_VIEW @@ -140,6 +136,4 @@ void G4VRML2FileViewer::SendViewParameters () fDest << "}" << G4endl; fDest << G4endl; -} - -#endif +} diff --git a/source/visualization/VRML/src/G4VRML2SceneHandler.cc b/source/visualization/VRML/src/G4VRML2SceneHandler.cc index 05f1b7879a..762184077a 100644 --- a/source/visualization/VRML/src/G4VRML2SceneHandler.cc +++ b/source/visualization/VRML/src/G4VRML2SceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML2SceneHandler.cc,v 1.4.4.1 2001/06/28 19:16:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2SceneHandler.cc,v 1.6 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2SceneHandler.cc // Satoshi Tanaka & Yasuhide Sawada @@ -95,11 +95,11 @@ G4VRML2SceneHandler::~G4VRML2SceneHandler() -#define G4VRML2SCENE G4VRML2SceneHandler +#define G4VRML2SCENEHANDLER G4VRML2SceneHandler #define IS_CONNECTED fDest.isConnected() #include "G4VRML2SceneHandlerFunc.icc" #undef IS_CONNECTED -#undef G4VRML2SCENE +#undef G4VRML2SCENEHANDLER void G4VRML2SceneHandler::connectPort(G4int max_trial) diff --git a/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc b/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc index 248682dcbb..7c5eb0b11c 100644 --- a/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc +++ b/source/visualization/VRML/src/G4VRML2SceneHandlerFunc.icc @@ -21,15 +21,15 @@ // ******************************************************************** // // -// $Id: G4VRML2SceneHandlerFunc.icc,v 1.7.2.1 2001/06/28 19:16:04 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2SceneHandlerFunc.icc,v 1.9 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2SceneHandlerFunc.icc // Satoshi Tanaka & Yasuhide Sawada //#define DEBUG_SCENE_FUNC -void G4VRML2SCENE::AddThis(const G4Trd& trd) +void G4VRML2SCENEHANDLER::AddThis(const G4Trd& trd) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis trd" << "\n" ; @@ -38,7 +38,7 @@ void G4VRML2SCENE::AddThis(const G4Trd& trd) G4VSceneHandler::AddThis(trd); } -void G4VRML2SCENE::AddThis(const G4Trap& trap) +void G4VRML2SCENEHANDLER::AddThis(const G4Trap& trap) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis trap" << "\n" ; @@ -47,7 +47,7 @@ void G4VRML2SCENE::AddThis(const G4Trap& trap) G4VSceneHandler::AddThis(trap); } -void G4VRML2SCENE::AddThis(const G4Para& para) +void G4VRML2SCENEHANDLER::AddThis(const G4Para& para) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis para" << "\n" ; @@ -56,7 +56,7 @@ void G4VRML2SCENE::AddThis(const G4Para& para) G4VSceneHandler::AddThis(para); } -void G4VRML2SCENE::AddThis(const G4Torus& torus ) +void G4VRML2SCENEHANDLER::AddThis(const G4Torus& torus ) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis torus" << "\n" ; @@ -66,7 +66,7 @@ void G4VRML2SCENE::AddThis(const G4Torus& torus ) } -void G4VRML2SCENE::AddThis(const G4VSolid& vsolid) +void G4VRML2SCENEHANDLER::AddThis(const G4VSolid& vsolid) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis vsolid" << "\n" ; @@ -75,7 +75,7 @@ void G4VRML2SCENE::AddThis(const G4VSolid& vsolid) G4VSceneHandler::AddThis(vsolid); } -void G4VRML2SCENE::AddThis(const G4Tubs& tubs) +void G4VRML2SCENEHANDLER::AddThis(const G4Tubs& tubs) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis tubs" << "\n" ; @@ -86,7 +86,7 @@ void G4VRML2SCENE::AddThis(const G4Tubs& tubs) } -void G4VRML2SCENE::AddThis(const G4Cons& cons) +void G4VRML2SCENEHANDLER::AddThis(const G4Cons& cons) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis cons" << "\n" ; @@ -95,7 +95,7 @@ void G4VRML2SCENE::AddThis(const G4Cons& cons) G4VSceneHandler::AddThis(cons) ; } -void G4VRML2SCENE::AddThis(const G4Box& box) +void G4VRML2SCENEHANDLER::AddThis(const G4Box& box) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis box" << "\n" ; @@ -105,7 +105,7 @@ void G4VRML2SCENE::AddThis(const G4Box& box) } -void G4VRML2SCENE::AddThis(const G4Sphere& sphere) +void G4VRML2SCENEHANDLER::AddThis(const G4Sphere& sphere) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddThis sphere" << "\n" ; @@ -114,7 +114,7 @@ void G4VRML2SCENE::AddThis(const G4Sphere& sphere) G4VSceneHandler::AddThis(sphere) ; } -void G4VRML2SCENE::AddPrimitive(const G4Polyline& polyline) +void G4VRML2SCENEHANDLER::AddPrimitive(const G4Polyline& polyline) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive polyline" << "\n" ; @@ -163,7 +163,7 @@ void G4VRML2SCENE::AddPrimitive(const G4Polyline& polyline) } -void G4VRML2SCENE::AddPrimitive(const G4Polyhedron& polyhedron) +void G4VRML2SCENEHANDLER::AddPrimitive(const G4Polyhedron& polyhedron) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive(G4Polyhedron)" << "\n"; @@ -245,7 +245,7 @@ void G4VRML2SCENE::AddPrimitive(const G4Polyhedron& polyhedron) } -void G4VRML2SCENE::AddPrimitive(const G4NURBS& nurb) +void G4VRML2SCENEHANDLER::AddPrimitive(const G4NURBS& nurb) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive nurbs" << "\n" ; @@ -255,13 +255,13 @@ void G4VRML2SCENE::AddPrimitive(const G4NURBS& nurb) VRMLBeginModeling () ; } -void G4VRML2SCENE::AddPrimitive( const G4Text& text ) +void G4VRML2SCENEHANDLER::AddPrimitive( const G4Text& text ) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive text" << "\n" ; #endif G4cerr << - "***** void G4VRML2SCENE::AddPrimitive( const G4Text& text )" + "***** void G4VRML2SCENEHANDLER::AddPrimitive( const G4Text& text )" " not implemented yet." << "\n"; @@ -269,7 +269,7 @@ void G4VRML2SCENE::AddPrimitive( const G4Text& text ) } -void G4VRML2SCENE::AddPrimitive( const G4Circle& circle ) +void G4VRML2SCENEHANDLER::AddPrimitive( const G4Circle& circle ) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive circle" << "\n" ; @@ -327,7 +327,7 @@ void G4VRML2SCENE::AddPrimitive( const G4Circle& circle ) } -void G4VRML2SCENE::AddPrimitive(const G4Square& square) +void G4VRML2SCENEHANDLER::AddPrimitive(const G4Square& square) { #if defined DEBUG_SCENE_FUNC G4cerr << "***** AddPrimitive square" << "\n" ; @@ -388,14 +388,7 @@ void G4VRML2SCENE::AddPrimitive(const G4Square& square) } -void G4VRML2SCENE::ClearStore() -{ -#if defined DEBUG_SCENE_FUNC - G4cerr << "***** ClearStore(): No effetcs" << "\n" ; -#endif -} - -void G4VRML2SCENE::BeginModeling() +void G4VRML2SCENEHANDLER::BeginModeling() { #if defined DEBUG_SCENE_FUNC G4cerr << "***** BeginModeling" << "\n" ; @@ -404,7 +397,7 @@ void G4VRML2SCENE::BeginModeling() } -void G4VRML2SCENE::EndModeling() +void G4VRML2SCENEHANDLER::EndModeling() { #if defined DEBUG_SCENE_FUNC G4cerr << "***** EndModeling " << "\n" ; @@ -412,7 +405,7 @@ void G4VRML2SCENE::EndModeling() G4VSceneHandler::EndModeling(); } -void G4VRML2SCENE::BeginPrimitives(const G4Transform3D& objectTransformation) +void G4VRML2SCENEHANDLER::BeginPrimitives(const G4Transform3D& objectTransformation) { G4VSceneHandler::BeginPrimitives (objectTransformation); fpObjectTransformation = &objectTransformation; @@ -422,7 +415,7 @@ void G4VRML2SCENE::BeginPrimitives(const G4Transform3D& objectTransformation) VRMLBeginModeling(); } -void G4VRML2SCENE::EndPrimitives() +void G4VRML2SCENEHANDLER::EndPrimitives() { #if defined DEBUG_SCENE_FUNC G4cerr << "***** EndPrimitives " << "\n" ; @@ -430,7 +423,7 @@ void G4VRML2SCENE::EndPrimitives() G4VSceneHandler::EndPrimitives(); } -void G4VRML2SCENE::SendMaterialNode( const G4VisAttributes* pVA ) +void G4VRML2SCENEHANDLER::SendMaterialNode( const G4VisAttributes* pVA ) { // Initialization of drawing parameters G4bool flagWF = false ; @@ -491,14 +484,14 @@ void G4VRML2SCENE::SendMaterialNode( const G4VisAttributes* pVA ) } -void G4VRML2SCENE::SendMaterialNode() +void G4VRML2SCENEHANDLER::SendMaterialNode() { SendMaterialNode ( fpViewer->GetApplicableVisAttributes (fpVisAttribs) ); } -void G4VRML2SCENE::VRMLBeginModeling() +void G4VRML2SCENEHANDLER::VRMLBeginModeling() { if (!IS_CONNECTED ) { #if defined DEBUG_SCENE_FUNC @@ -510,7 +503,7 @@ void G4VRML2SCENE::VRMLBeginModeling() } } -void G4VRML2SCENE::VRMLEndModeling() +void G4VRML2SCENEHANDLER::VRMLEndModeling() { if ( IS_CONNECTED ) { #if defined DEBUG_SCENE_FUNC @@ -521,7 +514,7 @@ void G4VRML2SCENE::VRMLEndModeling() } } -void G4VRML2SCENE::SendMarkerColor ( const G4VMarker& mark ) +void G4VRML2SCENEHANDLER::SendMarkerColor ( const G4VMarker& mark ) { const G4Color& color = GetColor( mark ); @@ -541,7 +534,7 @@ void G4VRML2SCENE::SendMarkerColor ( const G4VMarker& mark ) } void -G4VRML2SCENE::SendMarkerWorldPosition ( const G4VMarker& mark ) +G4VRML2SCENEHANDLER::SendMarkerWorldPosition ( const G4VMarker& mark ) { G4Point3D point = mark.GetPosition(); @@ -552,7 +545,7 @@ G4VRML2SCENE::SendMarkerWorldPosition ( const G4VMarker& mark ) } -void G4VRML2SCENE::GetMarkerWorldPosition ( const G4VMarker& mark , +void G4VRML2SCENEHANDLER::GetMarkerWorldPosition ( const G4VMarker& mark , double* pX , double* pY , double* pZ ) @@ -566,7 +559,7 @@ void G4VRML2SCENE::GetMarkerWorldPosition ( const G4VMarker& mark , *pZ = point.z() ; } -G4double G4VRML2SCENE::GetMarkerHalfSize ( const G4VMarker& mark ) +G4double G4VRML2SCENEHANDLER::GetMarkerHalfSize ( const G4VMarker& mark ) { //----- return value ( marker radius in 3d units) G4double size = 1.0 ; // initialization @@ -613,7 +606,7 @@ G4double G4VRML2SCENE::GetMarkerHalfSize ( const G4VMarker& mark ) } -void G4VRML2SCENE::SendLineColor ( const G4VisAttributes* pVA ) +void G4VRML2SCENEHANDLER::SendLineColor ( const G4VisAttributes* pVA ) { const G4Color& color = pVA->GetColor(); @@ -632,7 +625,7 @@ void G4VRML2SCENE::SendLineColor ( const G4VisAttributes* pVA ) fDest << "\t" << "}" << "\n"; // appearance } -G4double G4VRML2SCENE::SetPVTransparency () +G4double G4VRML2SCENEHANDLER::SetPVTransparency () { G4double TRANSPARENCY = 0.7 ; // initialization @@ -652,4 +645,19 @@ G4double G4VRML2SCENE::SetPVTransparency () return fPVTransparency ; } + +void G4VRML2SCENEHANDLER::ClearTransientStore() +{ + G4VSceneHandler::ClearTransientStore (); + // This is typically called after an update and before drawing hits + // of the next event. To simulate the clearing of "transients" + // (hits, etc.) the detector is redrawn... + if (fpViewer) { + fpViewer -> SetView (); + fpViewer -> ClearView (); + fpViewer -> DrawView (); + } +} + + // End of file. diff --git a/source/visualization/VRML/src/G4VRML2Viewer.cc b/source/visualization/VRML/src/G4VRML2Viewer.cc index 87ea14788a..c3fb9e62f9 100644 --- a/source/visualization/VRML/src/G4VRML2Viewer.cc +++ b/source/visualization/VRML/src/G4VRML2Viewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VRML2Viewer.cc,v 1.6.4.1 2001/06/28 19:16:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VRML2Viewer.cc,v 1.8 2001/09/18 07:53:16 stanaka Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // G4VRML2Viewer.cc // Satoshi Tanaka & Yasuhide Sawada diff --git a/source/visualization/XXX/GNUmakefile b/source/visualization/XXX/GNUmakefile new file mode 100644 index 0000000000..12a833d619 --- /dev/null +++ b/source/visualization/XXX/GNUmakefile @@ -0,0 +1,24 @@ +# $Id: GNUmakefile,v 1.3 2001/08/25 00:21:52 johna Exp $ + +name := G4visXXX + +ifndef G4INSTALL + G4INSTALL = ../../.. +endif + +include $(G4INSTALL)/config/architecture.gmk +include $(G4INSTALL)/config/G4VIS_BUILD.gmk +include $(G4INSTALL)/config/interactivity.gmk + +CPPFLAGS += -I$(G4BASE)/visualization/management/include +CPPFLAGS += -I$(G4BASE)/visualization/modeling/include +CPPFLAGS += -I$(G4BASE)/global/management/include +CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include +CPPFLAGS += -I$(G4BASE)/graphics_reps/include +CPPFLAGS += -I$(G4BASE)/intercoms/include +CPPFLAGS += -I$(G4BASE)/geometry/management/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/CSG/include +CPPFLAGS += -I$(G4BASE)/geometry/volumes/include +CPPFLAGS += -I$(G4BASE)/geometry/solids/specific/include + +include $(G4INSTALL)/config/common.gmk diff --git a/source/visualization/XXX/History b/source/visualization/XXX/History new file mode 100644 index 0000000000..d44d2bcfaf --- /dev/null +++ b/source/visualization/XXX/History @@ -0,0 +1,30 @@ +$Id: History,v 1.5 2001/11/16 10:51:44 johna Exp $ +------------------------------------------------------------------- + + ========================================================= + Geant4 - an Object-Oriented Toolkit for Simulation in HEP + ========================================================= + + Category History file + --------------------- +This file should be used by G4 developers and category coordinators +to briefly summarize all major modifications introduced in the code +and keep track of all category-tags. +It DOES NOT substitute the CVS log-message one should put at every +committal in the CVS repository ! + + ---------------------------------------------------------- + * Reverse chronological order (last date on top), please * + ---------------------------------------------------------- + +History file for visualization/XXX sub-category (a template graphics system) +--------------------------------------------------------------------------- + +16th November 2001 John Allison +- Added G4XXXDEBUG. + +24th August 2001 John Allison (vis-V03-02-13) +- Added example unpacking code for G4Polyhedron objects. + +17th August 2001 John Allison (vis-V03-02-12) +- Added template graphics system XXX. diff --git a/source/analysis/jas/include/JasAxis.h b/source/visualization/XXX/include/G4XXX.hh similarity index 76% rename from source/analysis/jas/include/JasAxis.h rename to source/visualization/XXX/include/G4XXX.hh index b04cea94ec..449a335a39 100644 --- a/source/analysis/jas/include/JasAxis.h +++ b/source/visualization/XXX/include/G4XXX.hh @@ -20,27 +20,25 @@ // * statement, and all its terms. * // ******************************************************************** // -#ifndef JASAXIS_H -#define JASAXIS_H +// +// $Id: G4XXX.hh,v 1.3 2001/08/25 00:22:06 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 5th April 2001 +// A graphics system to dump geometry hierarchy. -#if defined(G4ANALYSIS_BUILD_JAS) +#ifndef G4XXX_HH +#define G4XXX_HH -#include +#include "G4VGraphicsSystem.hh" -class JasAxis : public IAxis { +class G4XXX: public G4VGraphicsSystem { public: - virtual ~JasAxis() {} -public: - virtual double lowerEdge() const; - virtual double upperEdge() const; - virtual int bins() const; - virtual double binLowerEdge(int) const; - virtual double binUpperEdge(int) const; - virtual double binWidth(int) const; - virtual double binCentre(int) const; - virtual int coordToIndex(double) const; + G4XXX(); + virtual ~G4XXX(); + G4VSceneHandler* CreateSceneHandler(const G4String& name = ""); + G4VViewer* CreateViewer (G4VSceneHandler&, const G4String& name = ""); }; #endif - -#endif diff --git a/source/visualization/XXX/include/G4XXXSceneHandler.hh b/source/visualization/XXX/include/G4XXXSceneHandler.hh new file mode 100644 index 0000000000..e90483b3c5 --- /dev/null +++ b/source/visualization/XXX/include/G4XXXSceneHandler.hh @@ -0,0 +1,133 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4XXXSceneHandler.hh,v 1.7 2001/11/21 16:47:32 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 5th April 2001 +// A base class for a scene handler to dump geometry hierarchy. + +#ifndef G4XXXSCENEHANDLER_HH +#define G4XXXSCENEHANDLER_HH + +#define G4XXXDEBUG // Comment this out to suppress debug code. + +#include "G4VSceneHandler.hh" +#include "G4Box.hh" +#include "G4Cons.hh" +#include "G4Tubs.hh" +#include "G4Trd.hh" +#include "G4Trap.hh" +#include "G4Sphere.hh" +#include "G4Para.hh" +#include "G4Torus.hh" +#include "G4Polycone.hh" +#include "G4Polyhedra.hh" + +class G4VPhysicalVolume; +class G4LogicalVolume; +class G4ModelingParameters; + +class G4XXXSceneHandler: public G4VSceneHandler { + +public: + G4XXXSceneHandler(G4VGraphicsSystem& system, + const G4String& name); + virtual ~G4XXXSceneHandler(); + + //////////////////////////////////////////////////////////////// + // No need to implement these, but if you do... + void AddThis(const G4Box&); + void AddThis(const G4Cons&); + void AddThis(const G4Tubs&); + void AddThis(const G4Trd&); + void AddThis(const G4Trap&); + void AddThis(const G4Sphere&); + void AddThis(const G4Para&); + void AddThis(const G4Torus&); + void AddThis(const G4Polycone&); + void AddThis(const G4Polyhedra&); + void AddThis(const G4VSolid&); + // void PreAddThis(const G4Transform3D& objectTransformation, + // const G4VisAttributes&); + // void PostAddThis(); + + // Allows G4PhysicalVolumeModel to provide extra information... + void EstablishSpecials(G4PhysicalVolumeModel&); + + //////////////////////////////////////////////////////////////// + // Required implementation of pure virtual functions... + + void AddPrimitive(const G4Polyline&); + void AddPrimitive(const G4Text&); + void AddPrimitive(const G4Circle&); + void AddPrimitive(const G4Square&); + void AddPrimitive(const G4Polyhedron&); + void AddPrimitive(const G4NURBS&); + + //////////////////////////////////////////////////////////////// + // Further optional AddPrimtive methods. Explicitly invoke base + // class methods if not otherwise defined to avoid warnings about + // hiding of base class methods. + void AddPrimitive(const G4Polymarker& polymarker) { + G4VSceneHandler::AddPrimitive (polymarker); + } + void AddPrimitive(const G4Scale& scale) { + G4VSceneHandler::AddPrimitive (scale); + } + + //////////////////////////////////////////////////////////////// + // Further optional AddPrimtive methods... + + // void AddPrimitive(const G4Scale&); + // void AddPrimitive(const G4Polymarker&); + + //////////////////////////////////////////////////////////////// + // Further optional virtual functions... + + // void BeginPrimitives(const G4Transform3D& objectTransformation); + // void EndPrimitives(); + + // void BeginModeling(); + // void EndModeling(); + + //////////////////////////////////////////////////////////////// + // Required... + + static G4int GetSceneCount() {return fSceneCount;} + +protected: + static G4int fSceneIdCount; // Counter for XXX scene handlers. + static G4int fSceneCount; // No. of extanct scene handlers. + G4int fCurrentDepth; // Current depth of geom. hierarchy. + G4VPhysicalVolume* fpCurrentPV; // Current physical volume. + G4LogicalVolume* fpCurrentLV; // Current logical volume. + +private: +#ifdef G4XXXDEBUG + void PrintThings(); +#endif +}; + +#endif diff --git a/source/global/STLInterface/g4rw/rstream.h b/source/visualization/XXX/include/G4XXXViewer.hh similarity index 74% rename from source/global/STLInterface/g4rw/rstream.h rename to source/visualization/XXX/include/G4XXXViewer.hh index 891911cf78..cd80b789f9 100644 --- a/source/global/STLInterface/g4rw/rstream.h +++ b/source/visualization/XXX/include/G4XXXViewer.hh @@ -21,26 +21,27 @@ // ******************************************************************** // // -// $Id: rstream.h,v 1.4.8.1 2001/06/28 19:09:58 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XXXViewer.hh,v 1.5 2001/11/19 15:09:23 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -//--------------------------------------------------------------- -// GEANT 4 utility file -// -// Definition of utility function rwEatwhite. -//--------------------------------------------------------------- +// John Allison 5th April 2001 +// A base class for a dummy viewer to dump geometry hierarchy. -#ifndef __rstream -#define __rstream +#ifndef G4XXXVIEWER_HH +#define G4XXXVIEWER_HH -#include "g4rw/defs.h" -#include "G4Types.hh" -#include "g4std/iostream" +#define G4XXXDEBUG // Comment this out to suppress debug code. -inline G4std::istream& rwEatwhite(G4std::istream& stream) -{ - return stream >> G4std::ws; -} +#include "G4VViewer.hh" + +class G4XXXViewer: public G4VViewer { +public: + G4XXXViewer(G4VSceneHandler&,const G4String& name); + virtual ~G4XXXViewer(); + void SetView(); + void ClearView(); + void DrawView(); +}; #endif diff --git a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.icc b/source/visualization/XXX/src/G4XXX.cc similarity index 54% rename from source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.icc rename to source/visualization/XXX/src/G4XXX.cc index 90f0d265ec..4e5ab9f43f 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4LowEnergyCompton.icc +++ b/source/visualization/XXX/src/G4XXX.cc @@ -21,52 +21,51 @@ // ******************************************************************** // // -// $Id: G4LowEnergyCompton.icc,v 1.13.2.2 2001/06/28 20:19:23 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4XXX.cc,v 1.3 2001/08/25 00:22:20 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // -// --------------------------------------------------------------- -// GEANT 4 class inlined methods file -// -// ------------ G4LowEnergyCompton physics process --------- -// by A.Forti 1999/03/02 -// *************************************************************** +// John Allison 5th April 2001 +// A graphics system to dump geometry hierarchy. -inline G4bool -G4LowEnergyCompton::IsApplicable(const G4ParticleDefinition& particle){ +#include "G4XXX.hh" +#include "G4XXXSceneHandler.hh" +#include "G4XXXViewer.hh" - return ( &particle == G4Gamma::Gamma() ); +G4XXX::G4XXX(): + G4VGraphicsSystem("G4XXX", + "XXX", + "A template graphics driver", + G4VGraphicsSystem::noFunctionality) {} + +G4XXX::~G4XXX() {} + +G4VSceneHandler* G4XXX::CreateSceneHandler(const G4String& name) { + G4VSceneHandler* pScene = new G4XXXSceneHandler(*this, name); + G4cout << G4XXXSceneHandler::GetSceneCount() + << ' ' << fName << " scene handlers extanct." << G4endl; + return pScene; } -inline G4double -G4LowEnergyCompton::GetMeanFreePath(const G4Track& aTrack, G4double, G4ForceCondition*){ - - // returns the gamma mean free path in GEANT4 internal units - const G4DynamicParticle* aDynamicGamma = aTrack.GetDynamicParticle(); - G4double GammaEnergy = aDynamicGamma->GetKineticEnergy(); - G4Material* aMaterial = aTrack.GetMaterial(); - - // G4bool isOutRange ; - - - if (GammaEnergy > highestEnergyLimit){ - meanFreePath = DBL_MAX; - } - else if(GammaEnergy < lowestEnergyLimit){ - - meanFreePath = DBL_MIN; - } - +G4VViewer* G4XXX::CreateViewer(G4VSceneHandler& scene, + const G4String& name) { + G4VViewer* pView = + new G4XXXViewer((G4XXXSceneHandler&) scene, name); + if (pView) { + if (pView->GetViewId() < 0) { + G4cout << + "G4XXX::CreateViewer: ERROR flagged by negative" + " view id in G4XXXViewer creation." + "\n Destroying view and returning null pointer." + << G4endl; + delete pView; + pView = 0; + } + } else { - - meanFreePath = util.DataLogInterpolation(GammaEnergy, - aMaterial->GetIndex(), - theMeanFreePathTable); - - } - - return meanFreePath; + G4cout << + "G4XXX::CreateViewer: ERROR: null pointer on new G4XXXViewer." + << G4endl; + } + return pView; } - - - diff --git a/source/visualization/XXX/src/G4XXXSceneHandler.cc b/source/visualization/XXX/src/G4XXXSceneHandler.cc new file mode 100644 index 0000000000..c323f9159d --- /dev/null +++ b/source/visualization/XXX/src/G4XXXSceneHandler.cc @@ -0,0 +1,339 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4XXXSceneHandler.cc,v 1.6 2001/11/16 10:50:08 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 5th April 2001 +// A base class for a scene handler to dump geometry hierarchy. +// Based on a provisional G4XXXGraphicsScene (was in modeling). + +#include "G4XXXSceneHandler.hh" + +#include "G4VSolid.hh" +#include "G4PhysicalVolumeModel.hh" +#include "G4VPhysicalVolume.hh" +#include "G4LogicalVolume.hh" +#include "G4ModelingParameters.hh" +#include "G4Polyline.hh" +#include "G4Text.hh" +#include "G4Circle.hh" +#include "G4Square.hh" +#include "G4Polyhedron.hh" +#include "G4NURBS.hh" + +G4int G4XXXSceneHandler::fSceneIdCount = 0; +// Counter for XXX scene handlers. + +G4int G4XXXSceneHandler::fSceneCount = 0; +// No. of extanct scene handlers. + +G4XXXSceneHandler::G4XXXSceneHandler(G4VGraphicsSystem& system, + const G4String& name): + G4VSceneHandler(system, fSceneIdCount++, name), + fCurrentDepth (0), + fpCurrentPV (0), + fpCurrentLV (0) +{ + fSceneCount++; +} + +G4XXXSceneHandler::~G4XXXSceneHandler() {} + +#ifdef G4XXXDEBUG +void G4XXXSceneHandler::PrintThings() { + G4cout << + " with transformation " + << (void*)fpObjectTransformation; + if (fpCurrentPV) { + G4cout << + "\n current physical volume: " + << fpCurrentPV->GetName() << + "\n current logical volume: " + << fpCurrentLV->GetName() << + "\n current depth of geometry tree: " + << fCurrentDepth; + } + G4cout << G4endl; +} +#endif + +void G4XXXSceneHandler::AddThis(const G4Box& box) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Box& box) called for " + << box.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(box); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Cons& cons) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Cons& cons) called for " + << cons.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(cons); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Tubs& tubs) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Tubs& tubs) called for " + << tubs.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(tubs); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Trd& trd) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Trd& trd) called for " + << trd.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(trd); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Trap& trap) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Trap& trap) called for " + << trap.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(trap); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Sphere& sphere) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Sphere& sphere) called for " + << sphere.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(sphere); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Para& para) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Para& para) called for " + << para.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(para); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Torus& torus) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Torus& torus) called for " + << torus.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(torus); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Polycone& polycone) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Polycone& polycone) called for " + << polycone.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(polycone); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4Polyhedra& polyhedra) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Polyhedra& polyhedra) called for " + << polyhedra.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(polyhedra); // Invoke default action. +} + +void G4XXXSceneHandler::AddThis(const G4VSolid& solid) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddThis(const G4Solid& solid) called for " + << solid.GetName() + << G4endl; + PrintThings(); +#endif + G4VSceneHandler::AddThis(solid); // Invoke default action. +} + + +void G4XXXSceneHandler::AddPrimitive(const G4Polyline& polyline) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddPrimitive(const G4Polyline& polyline) called:" + "\n polyline: " << polyline + << G4endl; + PrintThings(); +#endif +} + +void G4XXXSceneHandler::AddPrimitive(const G4Text& text) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddPrimitive(const G4Text& text) called:" + "\n text: " << text.GetText() + << G4endl; + PrintThings(); +#endif +} + +void G4XXXSceneHandler::AddPrimitive(const G4Circle& circle) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddPrimitive(const G4Circle& circle) called:" + "\n radius: " << circle.GetWorldRadius() + << G4endl; + PrintThings(); +#endif +} + +void G4XXXSceneHandler::AddPrimitive(const G4Square& square) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddPrimitive(const G4Square& square) called:" + "\n side: " << square.GetWorldRadius() + << G4endl; + PrintThings(); +#endif +} + +void G4XXXSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddPrimitive(const G4Polyhedron& polyhedron) called." + << G4endl; + PrintThings(); +#endif + + if (polyhedron.GetNoFacets() == 0) return; + + //Assume all facets are convex quadrilaterals. + //Draw each G4Facet individually + + //Get colour, etc.. + // const G4Colour& c = GetColour (polyhedron); + + G4ViewParameters::DrawingStyle drawing_style = GetDrawingStyle (polyhedron); + switch (drawing_style) { + case (G4ViewParameters::hsr): + { + break; + } + case (G4ViewParameters::hlr): + { + break; + } + case (G4ViewParameters::wireframe): + { + break; + } + default: + { + break; + } + } + + //Loop through all the facets... + G4bool notLastFace; + G4Normal3D SurfaceUnitNormal; + do { // loop over faces... + + //First, find surface normal for the facet... + notLastFace = polyhedron.GetNextUnitNormal (SurfaceUnitNormal); + + //Loop through the four edges of each G4Facet... + G4bool notLastEdge; + G4Point3D vertex[4]; + G4int edgeFlag[4], lastEdgeFlag (true); + edgeFlag[0] = G4int (true); + G4int edgeCount = 0; + // glEdgeFlag (GL_TRUE); + do { // loop over edges... + notLastEdge = polyhedron.GetNextVertex (vertex[edgeCount], + edgeFlag[edgeCount]); + // Check to see if edge is visible or not... + if (edgeFlag[edgeCount] != lastEdgeFlag) { + lastEdgeFlag = edgeFlag[edgeCount]; + if (edgeFlag[edgeCount]) { + // glEdgeFlag (GL_TRUE); + } else { + // glEdgeFlag (GL_FALSE); + } + } + // glVertex3d (vertex[edgeCount].x(), + // vertex[edgeCount].y(), + // vertex[edgeCount].z()); + edgeCount++; + } while (notLastEdge); + + // Duplicate last real vertex if necessary to guarantee quadrilateral.... + while (edgeCount < 4) { + vertex[edgeCount] = vertex[edgeCount-1]; + // glVertex3d (vertex[edgeCount].x(), + // vertex[edgeCount].y(), + // vertex[edgeCount].z()); + edgeCount++; + } + + } while (notLastFace); +} + +void G4XXXSceneHandler::AddPrimitive(const G4NURBS& nurbs) { +#ifdef G4XXXDEBUG + G4cout << + "G4XXXSceneHandler::AddPrimitive(const G4NURBS& nurbs) called." + << G4endl; + PrintThings(); +#endif +} + +void G4XXXSceneHandler::EstablishSpecials +(G4PhysicalVolumeModel& pvModel) { + pvModel.DefinePointersToWorkingSpace(&fCurrentDepth, + &fpCurrentPV, + &fpCurrentLV); +} diff --git a/source/analysis/jas/src/G4JasSystem.cc b/source/visualization/XXX/src/G4XXXViewer.cc similarity index 65% rename from source/analysis/jas/src/G4JasSystem.cc rename to source/visualization/XXX/src/G4XXXViewer.cc index 42241d700a..0304730549 100644 --- a/source/analysis/jas/src/G4JasSystem.cc +++ b/source/visualization/XXX/src/G4XXXViewer.cc @@ -21,45 +21,38 @@ // ******************************************************************** // // -// $Id: G4JasSystem.cc,v 1.8.4.1 2001/06/28 19:07:47 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Guy Barrand 14 September 2000 +// $Id: G4XXXViewer.cc,v 1.4 2001/11/16 10:50:27 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ -#ifdef G4ANALYSIS_BUILD_JAS - -#include "JasHistogramFactory.h" +#include "G4XXXViewer.hh" #include "G4ios.hh" +#include "g4std/strstream" -#include "G4JasSystem.hh" +#include "G4VSceneHandler.hh" -G4JasSystem::G4JasSystem ( - const G4String& aName -) -:fName(aName) -,fHistogramFactory(0) -{ -} -G4JasSystem::~G4JasSystem ( -) -{ - delete fHistogramFactory; -} -const G4String& G4JasSystem::GetName() const { - return fName; -} -IHistogramFactory* G4JasSystem::GetHistogramFactory() { - if(!fHistogramFactory) { - G4cout << "Activate jas analysis system" << G4std::endl; - fHistogramFactory = new JasHistogramFactory(); - } - return fHistogramFactory; -} -void G4JasSystem::Store(IHistogram*,const G4String&) { -} -void G4JasSystem::Plot(IHistogram*) { -} +G4XXXViewer::G4XXXViewer +(G4VSceneHandler& sceneHandler, const G4String& name): + G4VViewer(sceneHandler, sceneHandler.IncrementViewCount(), name) {} +G4XXXViewer::~G4XXXViewer() {} + +void G4XXXViewer::SetView() { +#ifdef G4XXXDEBUG + G4cout << "G4XXXViewer::SetView() called." << G4endl; #endif +} + +void G4XXXViewer::ClearView() { +#ifdef G4XXXDEBUG + G4cout << "G4XXXViewer::ClearView() called." << G4endl; +#endif +} + +void G4XXXViewer::DrawView() { +#ifdef G4XXXDEBUG + G4cout << "G4XXXViewer::DrawView() called." << G4endl; +#endif + NeedKernelVisit (); // Always need to visit G4 kernel. + ProcessView (); +} diff --git a/source/visualization/management/GNUmakefile b/source/visualization/management/GNUmakefile index a089ac8931..9d57eff784 100644 --- a/source/visualization/management/GNUmakefile +++ b/source/visualization/management/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.3 2000/04/07 13:32:42 gcosmo Exp $ +# $Id: GNUmakefile,v 1.4 2001/07/27 22:33:22 johna Exp $ # ------------------------------------------------------------- # GNUmakefile for visualization library. John Allison, 5/7/95. @@ -14,12 +14,6 @@ G4TMPDIR = $(G4TMP)/$(G4SYSTEM)/$(name) CPPFLAGS += -I$(G4BASE)/visualization/management/include CPPFLAGS += -I$(G4BASE)/visualization/modeling/include -CPPFLAGS += -I$(G4BASE)/visualization/FukuiRenderer/include -CPPFLAGS += -I$(G4BASE)/visualization/G4Ray/include -CPPFLAGS += -I$(G4BASE)/visualization/OPACS/include -CPPFLAGS += -I$(G4BASE)/visualization/OpenGL/include -CPPFLAGS += -I$(G4BASE)/visualization/OpenInventor/include -CPPFLAGS += -I$(G4BASE)/visualization/VRML/include CPPFLAGS += -I$(G4BASE)/graphics_reps/include CPPFLAGS += -I$(G4BASE)/global/management/include CPPFLAGS += -I$(G4BASE)/global/HEPGeometry/include @@ -41,9 +35,3 @@ CPPFLAGS += -I$(G4BASE)/particles/management/include CPPFLAGS += -I$(G4BASE)/materials/include include $(G4INSTALL)/config/common.gmk - -ifeq ($(G4SYSTEM),WIN32-VC-NICE) -CXXFLAGS_WITHOUT_O := $(filter-out -O% , $(CXXFLAGS)) -$(G4TMPDIR)/G4VisManMessSet.o: src/G4VisManMessSet.cc - $(CXX) $(CXXFLAGS_WITHOUT_O) $(CPPFLAGS) -c $(OUT_OBJ)$@ src/G4VisManMessSet.cc -endif diff --git a/source/visualization/management/include/G4GraphicsSystemList.hh b/source/visualization/management/include/G4GraphicsSystemList.hh index ada48a11dd..a59f0ef191 100644 --- a/source/visualization/management/include/G4GraphicsSystemList.hh +++ b/source/visualization/management/include/G4GraphicsSystemList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GraphicsSystemList.hh,v 1.6.2.1 2001/06/28 19:16:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GraphicsSystemList.hh,v 1.7 2001/07/11 10:09:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 2nd April 1996 diff --git a/source/visualization/management/include/G4Scene.hh b/source/visualization/management/include/G4Scene.hh index 287e406b9b..7a4f6e2221 100644 --- a/source/visualization/management/include/G4Scene.hh +++ b/source/visualization/management/include/G4Scene.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Scene.hh,v 1.8.2.1 2001/06/28 19:16:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Scene.hh,v 1.12 2001/08/24 20:47:39 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Scene John Allison 19th July 1996. @@ -82,24 +82,32 @@ public: // With description const G4Point3D& GetStandardTargetPoint () const; // Usually centre of extent. See G4ViewParameters for definition. + G4bool GetRefreshAtEndOfEvent () const; + // If true, the visualization manager will request viewer to refresh + // "transient" objects, such as hits, at end of event. Otherwise + // they will be accumulated. + ////////////////////////////////////////////// // Add, Set, Clear functions... - G4bool AddRunDurationModel (G4VModel*); + G4bool AddRunDurationModel (G4VModel*, G4bool warn = false); // Adds models of type which are expected to last for the duration // of the run, for example geometry volumes. // Returns false if model is already in the list. + // Prints warnings if warn is true. - G4bool AddWorldIfEmpty (); + G4bool AddWorldIfEmpty (G4bool warn = false); // In some situations, if the user asks for a drawing and has not // yet set any run duration models it makes sense to put the "world" // in there by default. // Returns false if model is already in the list. + // Prints warnings if warn is true. - G4bool AddEndOfEventModel (G4VModel*); + G4bool AddEndOfEventModel (G4VModel*, G4bool warn = false); // Adds models of type which are described at the end of event when // the scene is current. // Returns false if model is already in the list. + // Prints warnings if warn is true. G4std::vector& SetRunDurationModelList (); // Allows you to change the model list - do with care! @@ -110,12 +118,21 @@ public: // With description void Clear (); // Clears and destroys models in all lists. + void SetRefreshAtEndOfEvent(G4bool); + // If set true, the visualization manager will request viewer to + // refresh "transient" objects, such as hits, at end of event. + // Otherwise they will be accumulated. + + void CalculateExtent(); + // (Re-)calculates the extent from the extents of its models. + private: G4String fName; G4std::vector fRunDurationModelList; G4std::vector fEndOfEventModelList; G4VisExtent fExtent; G4Point3D fStandardTargetPoint; + G4bool fRefreshAtEndOfEvent; }; #include "G4Scene.icc" diff --git a/source/visualization/management/include/G4Scene.icc b/source/visualization/management/include/G4Scene.icc index 713f82d485..ecc6612957 100644 --- a/source/visualization/management/include/G4Scene.icc +++ b/source/visualization/management/include/G4Scene.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Scene.icc,v 1.7.2.1 2001/06/28 19:16:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Scene.icc,v 1.9 2001/08/11 21:39:54 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Scene data John Allison 19th July 1996. @@ -57,6 +57,10 @@ inline const G4Point3D& G4Scene::GetStandardTargetPoint () const { return fStandardTargetPoint; } +inline G4bool G4Scene::GetRefreshAtEndOfEvent () const { + return fRefreshAtEndOfEvent; +} + inline G4std::vector& G4Scene::SetRunDurationModelList () { return fRunDurationModelList; @@ -66,3 +70,7 @@ inline G4std::vector& G4Scene::SetEndOfEventModelList () { return fRunDurationModelList; } + +inline void G4Scene::SetRefreshAtEndOfEvent(G4bool refresh) { + fRefreshAtEndOfEvent = refresh; +} diff --git a/source/visualization/management/include/G4SceneHandlerList.hh b/source/visualization/management/include/G4SceneHandlerList.hh index efba7eebac..40148a54f3 100644 --- a/source/visualization/management/include/G4SceneHandlerList.hh +++ b/source/visualization/management/include/G4SceneHandlerList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SceneHandlerList.hh,v 1.5.2.1 2001/06/28 19:16:05 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SceneHandlerList.hh,v 1.6 2001/07/11 10:09:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison May 1996 diff --git a/source/visualization/management/include/G4SceneList.hh b/source/visualization/management/include/G4SceneList.hh index f421056c62..78ca35cf33 100644 --- a/source/visualization/management/include/G4SceneList.hh +++ b/source/visualization/management/include/G4SceneList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SceneList.hh,v 1.7.2.1 2001/06/28 19:16:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SceneList.hh,v 1.8 2001/07/11 10:09:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 9th August 1998 diff --git a/source/visualization/management/include/G4VGraphicsSystem.hh b/source/visualization/management/include/G4VGraphicsSystem.hh index fe3dbaeb47..dec0301e8f 100644 --- a/source/visualization/management/include/G4VGraphicsSystem.hh +++ b/source/visualization/management/include/G4VGraphicsSystem.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VGraphicsSystem.hh,v 1.8.2.1 2001/06/28 19:16:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VGraphicsSystem.hh,v 1.9 2001/07/11 10:09:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/include/G4VGraphicsSystem.icc b/source/visualization/management/include/G4VGraphicsSystem.icc index a38331e1f4..b5b1b9bbda 100644 --- a/source/visualization/management/include/G4VGraphicsSystem.icc +++ b/source/visualization/management/include/G4VGraphicsSystem.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VGraphicsSystem.icc,v 1.5.2.1 2001/06/28 19:16:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VGraphicsSystem.icc,v 1.6 2001/07/11 10:09:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/include/G4VSceneHandler.hh b/source/visualization/management/include/G4VSceneHandler.hh index 8812c34215..8b22404a8e 100644 --- a/source/visualization/management/include/G4VSceneHandler.hh +++ b/source/visualization/management/include/G4VSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSceneHandler.hh,v 1.13.2.1 2001/06/28 19:16:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSceneHandler.hh,v 1.18 2001/08/14 18:36:07 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 19th July 1996. @@ -132,7 +132,8 @@ public: // With description // G4VSceneHandler::EndModeling (); // } - virtual void BeginPrimitives (const G4Transform3D& objectTransformation); + virtual void BeginPrimitives + (const G4Transform3D& objectTransformation); // IMPORTANT: invoke this from your polymorphic versions, e.g.: // void MyXXXSceneHandler::BeginPrimitives // (const G4Transform3D& objectTransformation) { @@ -148,11 +149,13 @@ public: // With description // } virtual void AddPrimitive (const G4Polyline&) = 0; + virtual void AddPrimitive (const G4Scale&); + // Default implementation in this class but can be over-ridden. virtual void AddPrimitive (const G4Text&) = 0; virtual void AddPrimitive (const G4Circle&) = 0; virtual void AddPrimitive (const G4Square&) = 0; - virtual void AddPrimitive (const G4Polymarker&); // Implemented in terms - // of the above but can be over-ridden. + virtual void AddPrimitive (const G4Polymarker&); + // Default implementation in this class but can be over-ridden. virtual void AddPrimitive (const G4Polyhedron&) = 0; virtual void AddPrimitive (const G4NURBS&) = 0; @@ -165,12 +168,16 @@ public: // With description G4VGraphicsSystem* GetGraphicsSystem () const; G4Scene* GetScene () const; const G4ViewerList& GetViewerList () const; - const G4VModel* GetModel () const; + G4VModel* GetModel () const; G4VViewer* GetCurrentViewer () const; + G4bool GetMarkForClearingTransientStore () const; void SetCurrentViewer (G4VViewer*); void SetScene (G4Scene*); G4ViewerList& SetViewerList (); // Non-const so you can change. - void SetModel (const G4VModel*); + void SetModel (G4VModel*); + void SetMarkForClearingTransientStore (G4bool); + // Sets flag which will cause transient store to be cleared at the + // next call to BeginPrimitives(). ////////////////////////////////////////////////////////////// // Public utility functions. @@ -255,17 +262,18 @@ protected: G4ViewerList fViewerList; // Viewers. G4VViewer* fpViewer; // Current viewer. G4Scene* fpScene; // Scene for this scene handler. + G4bool fMarkForClearingTransientStore; ////////////////////////////////////////////////////////////// // Workspace... - G4bool fReadyForTransients; // I.e., not processing scene. - const G4VModel* fpModel; // Current model. - const G4Transform3D* fpObjectTransformation; // Accum'd obj. transfn. - const G4VisAttributes* fpVisAttribs; // Working vis attributes. - G4int fCurrentDepth; // Current depth of geom. hierarchy. - G4VPhysicalVolume* fpCurrentPV; // Current physical volume. - G4LogicalVolume* fpCurrentLV; // Current logical volume. + G4bool fReadyForTransients; // I.e., not processing scene. + G4VModel* fpModel; // Current model. + const G4Transform3D* fpObjectTransformation; // Accum'd obj. transfn. + const G4VisAttributes* fpVisAttribs; // Working vis attributes. + G4int fCurrentDepth; // Current depth of geom. hierarchy. + G4VPhysicalVolume* fpCurrentPV; // Current physical volume. + G4LogicalVolume* fpCurrentLV; // Current logical volume. private: diff --git a/source/visualization/management/include/G4VSceneHandler.icc b/source/visualization/management/include/G4VSceneHandler.icc index c63d3abd3f..347ec0de0a 100644 --- a/source/visualization/management/include/G4VSceneHandler.icc +++ b/source/visualization/management/include/G4VSceneHandler.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSceneHandler.icc,v 1.9.2.1 2001/06/28 19:16:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSceneHandler.icc,v 1.12 2001/08/09 20:13:40 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 19th July 1996. @@ -71,7 +71,7 @@ inline const G4ViewerList& G4VSceneHandler::GetViewerList () const { return fViewerList; } -inline const G4VModel* G4VSceneHandler::GetModel () const { +inline G4VModel* G4VSceneHandler::GetModel () const { return fpModel; } @@ -79,6 +79,10 @@ inline G4VViewer* G4VSceneHandler::GetCurrentViewer () const { return fpViewer; } +inline G4bool G4VSceneHandler::GetMarkForClearingTransientStore () const { + return fMarkForClearingTransientStore; +} + inline void G4VSceneHandler::SetCurrentViewer (G4VViewer* pViewer) { fpViewer = pViewer; } @@ -88,10 +92,14 @@ inline G4ViewerList& G4VSceneHandler::SetViewerList () { } inline void -G4VSceneHandler::SetModel (const G4VModel* pModel) { +G4VSceneHandler::SetModel (G4VModel* pModel) { fpModel = pModel; } +inline void G4VSceneHandler::SetMarkForClearingTransientStore (G4bool mark) { + fMarkForClearingTransientStore = mark; +} + inline const G4Colour& G4VSceneHandler::GetColor (const G4Visible& visible) { return GetColour (visible); } diff --git a/source/visualization/management/include/G4VViewer.hh b/source/visualization/management/include/G4VViewer.hh index e8c8c2fd89..0b54db7b1a 100644 --- a/source/visualization/management/include/G4VViewer.hh +++ b/source/visualization/management/include/G4VViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VViewer.hh,v 1.9.2.1 2001/06/28 19:16:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VViewer.hh,v 1.12 2001/08/14 18:35:19 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 27th March 1996 @@ -49,6 +49,16 @@ public: // With description G4VViewer (G4VSceneHandler& scene, G4int id, const G4String& name = ""); virtual ~G4VViewer (); + virtual void Initialise (); + // Called immediately after construction for those operations that + // must await complete contruction of viewer and all its bases. For + // example, if this class (G4VViewer) is inherited virtually, as in + // the OpenGL sub-category, it will not be fully constructed until + // *after* the the derived viewer (this is the rule about order of + // construction for virtual inheritance), so the derived viewer may + // not use information in G4VViewer in its contructor. Hence such + // code must be in Initialise(). + ////////////////////////////////////////////////////////////// // View manipulation functions. @@ -60,7 +70,8 @@ public: // With description // Clear screen/viewing buffers. virtual void DrawView () = 0; - // Draw scene - see example of a minimal function at end of this file. + // Draw view of the scene currently attached to the scene handler - + // see example of a minimal function at end of this file. virtual void ShowView (); // Show view (for graphics systems which require to process diff --git a/source/visualization/management/include/G4VViewer.icc b/source/visualization/management/include/G4VViewer.icc index d53bb12858..a483be0125 100644 --- a/source/visualization/management/include/G4VViewer.icc +++ b/source/visualization/management/include/G4VViewer.icc @@ -21,12 +21,14 @@ // ******************************************************************** // // -// $Id: G4VViewer.icc,v 1.7.2.1 2001/06/28 19:16:06 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VViewer.icc,v 1.9 2001/07/14 21:48:22 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 30th December 1996 +inline void G4VViewer::Initialise () {} + inline G4int G4VViewer::GetViewId () const { return fViewId; } diff --git a/source/visualization/management/include/G4VVisCommand.hh b/source/visualization/management/include/G4VVisCommand.hh index 758a265507..34307cbd59 100644 --- a/source/visualization/management/include/G4VVisCommand.hh +++ b/source/visualization/management/include/G4VVisCommand.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VVisCommand.hh,v 1.10.2.1 2001/06/28 19:16:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VVisCommand.hh,v 1.13 2001/09/10 10:49:07 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // Base class for visualization commands - John Allison 9th August 1998 // It is really a messenger - we have one command per messenger. @@ -30,11 +30,11 @@ #ifndef G4VVISCOMMAND_HH #define G4VVISCOMMAND_HH +#include "G4VisManager.hh" #include "G4UImessenger.hh" #include "G4ThreeVector.hh" #include "g4std/vector" -class G4VisManager; class G4UIcommand; class G4UIcmdWithAString; @@ -56,6 +56,8 @@ public: static void GetNewDoublePairValue(const G4String& paramString, G4double& xval, G4double& yval); + void UpdateVisManagerScene (const G4String& sceneName = ""); + protected: static G4VisManager* fpVisManager; static G4std::vector sceneNameCommands; diff --git a/source/visualization/management/include/G4VVisCommand.icc b/source/visualization/management/include/G4VVisCommand.icc index d65f7f39ef..487b3baedc 100644 --- a/source/visualization/management/include/G4VVisCommand.icc +++ b/source/visualization/management/include/G4VVisCommand.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VVisCommand.icc,v 1.3.4.1 2001/06/28 19:16:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VVisCommand.icc,v 1.4 2001/07/11 10:09:14 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // Base class for visualization commands - John Allison 9th August 1998 // It is really a messenger - we have one command per messenger. diff --git a/source/visualization/management/include/G4ViewParameters.hh b/source/visualization/management/include/G4ViewParameters.hh index 038da44e7a..c17b542cd6 100644 --- a/source/visualization/management/include/G4ViewParameters.hh +++ b/source/visualization/management/include/G4ViewParameters.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ViewParameters.hh,v 1.12.2.1 2001/06/28 19:16:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ViewParameters.hh,v 1.13 2001/07/11 10:09:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 19th July 1996 diff --git a/source/visualization/management/include/G4ViewParameters.icc b/source/visualization/management/include/G4ViewParameters.icc index c891072cc9..d3ac1c263d 100644 --- a/source/visualization/management/include/G4ViewParameters.icc +++ b/source/visualization/management/include/G4ViewParameters.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ViewParameters.icc,v 1.4.2.1 2001/06/28 19:16:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ViewParameters.icc,v 1.5 2001/07/11 10:09:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 20th October 1996 diff --git a/source/visualization/management/include/G4ViewerList.hh b/source/visualization/management/include/G4ViewerList.hh index 45d6bc5fc0..0cf147b9d9 100644 --- a/source/visualization/management/include/G4ViewerList.hh +++ b/source/visualization/management/include/G4ViewerList.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ViewerList.hh,v 1.5.2.1 2001/06/28 19:16:07 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ViewerList.hh,v 1.6 2001/07/11 10:09:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison May 1996 diff --git a/source/visualization/management/include/G4VisCommandTemplates.hh b/source/visualization/management/include/G4VisCommandTemplates.hh deleted file mode 100644 index 76f97f1504..0000000000 --- a/source/visualization/management/include/G4VisCommandTemplates.hh +++ /dev/null @@ -1,100 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandTemplates.hh,v 1.3.4.1 2001/06/28 19:16:08 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Visualization Command Messenger Templates. -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDTEMPLATES_HH -#define G4VISCOMMANDTEMPLATES_HH - -#include "globals.hh" -#include "G4UImessenger.hh" - -class G4UIcommand; - -/*************************************** -// Vis Command Messenger Template - General Purpose. -template -class G4VisCommandMessenger: public G4UImessenger { -public: - G4VisCommandMessenger (); - ~G4VisCommandMessenger (); - void SetNewValue (G4UIcommand* command, G4String newValues); -private: - T fCommand; -}; -************************************************/ - -// Command Messenger Template for directory - OLD STYLE!! -template -class G4VisCommandDirectoryMessenger: public G4UImessenger { -public: - G4VisCommandDirectoryMessenger (); - ~G4VisCommandDirectoryMessenger (); -private: - tCommandDirectory fCommandDirectory; - G4UIcommand* fpCommand; -}; - -// Command Messenger Template for simple commands with no arguments - -// OLD STYLE!! -template -class G4VisSimpleCommandMessenger: public G4UImessenger { -public: - G4VisSimpleCommandMessenger (); - ~G4VisSimpleCommandMessenger (); - void SetNewValue (G4UIcommand* command, G4String newValues); -private: - tSimpleCommand fSimpleCommand; - G4UIcommand* fpCommand; -}; - - -// Command Messenger Template for Boolean attributes which can -// usefully be implemented as a button on a GUI - OLD STYLE!! -template -class G4VisButtonCommandMessenger: public G4UImessenger { -public: - G4VisButtonCommandMessenger (); - ~G4VisButtonCommandMessenger (); - void SetNewValue (G4UIcommand* command, G4String newValues); -private: - tButtonCommand fButtonCommand; - G4UIcommand* fpCommand; -}; - -// OLD STYLE!! -G4UIcommand* G4VisButtonCommandMessengerRegister (G4String commandName, - G4String guidance, - G4UImessenger* messenger); - -// OLD STYLE!! -G4int G4VisButtonCommandMessengerInterpret (G4String newValues); - -#include "G4VisCommandTemplates.icc" - -#endif diff --git a/source/visualization/management/include/G4VisCommandTemplates.icc b/source/visualization/management/include/G4VisCommandTemplates.icc deleted file mode 100644 index dbe4829b02..0000000000 --- a/source/visualization/management/include/G4VisCommandTemplates.icc +++ /dev/null @@ -1,134 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandTemplates.icc,v 1.3.4.1 2001/06/28 19:16:08 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Command Messenger Templates. -// John Allison 7th September 1997 - -#include "G4UIcommand.hh" -#include "G4UIdirectory.hh" -#include "G4UIcmdWithoutParameter.hh" -#include "G4ios.hh" - -/************************************** - -// What follows is just a try at a general template. But I think I'll -abandon templates for this job - JA. - -template -G4VisCommandMessenger ::G4VisCommandMessenger () { - fpCommand = G4VisCommandMessengerRegister - (fCommand.GetCommandName (), - fCommand.GetGuidance (), - this); -} - -template -G4VisCommandMessenger -::~G4VisCommandMessenger () { - delete fpCommand; -} - -template -void G4VisCommandMessenger ::SetNewValue -(G4UIcommand*, G4String newValues) { - switch (G4VisCommandMessengerInterpret (newValues)) { - case 0: fCommand.SetValue (false); break; - case 1: fCommand.SetValue (true); break; - default: break; - } - G4cout << "Current value of " << fCommand.GetValueName () - << " is " << fCommand.GetValue () << G4endl; -} -************************************/ - -// OLD STYLE!! -template -G4VisCommandDirectoryMessenger -::G4VisCommandDirectoryMessenger () { - fpCommand = new G4UIdirectory (fCommandDirectory.GetCommandName ()); - fpCommand -> SetGuidance (fCommandDirectory.GetGuidance ()); -} - -// OLD STYLE!! -template -G4VisCommandDirectoryMessenger -::~G4VisCommandDirectoryMessenger () { - delete fpCommand; -} - -// OLD STYLE!! -template -G4VisSimpleCommandMessenger -::G4VisSimpleCommandMessenger () { - fpCommand = new G4UIcmdWithoutParameter - (fSimpleCommand.GetCommandName (), this); - fpCommand -> SetGuidance (fSimpleCommand.GetGuidance ()); -} - -// OLD STYLE!! -template -G4VisSimpleCommandMessenger -::~G4VisSimpleCommandMessenger () { - delete fpCommand; -} - -// OLD STYLE!! -template -void G4VisSimpleCommandMessenger ::SetNewValue -(G4UIcommand*, G4String) { - fSimpleCommand.SetValue (); -} - -// OLD STYLE!! -template -G4VisButtonCommandMessenger -::G4VisButtonCommandMessenger () { - fpCommand = G4VisButtonCommandMessengerRegister - (fButtonCommand.GetCommandName (), - fButtonCommand.GetGuidance (), - this); -} - -// OLD STYLE!! -template -G4VisButtonCommandMessenger -::~G4VisButtonCommandMessenger () { - delete fpCommand; -} - -// OLD STYLE!! -template -void G4VisButtonCommandMessenger ::SetNewValue -(G4UIcommand*, G4String newValues) { - switch (G4VisButtonCommandMessengerInterpret (newValues)) { - case 0: fButtonCommand.SetValue (false); break; - case 1: fButtonCommand.SetValue (true); break; - default: break; - } - G4cout << "Current value of " << fButtonCommand.GetValueName () - << " is " << fButtonCommand.GetValue () << G4endl; -} diff --git a/source/visualization/management/include/G4VisCommands.hh b/source/visualization/management/include/G4VisCommands.hh index e0d3ed2446..34e2d513b4 100644 --- a/source/visualization/management/include/G4VisCommands.hh +++ b/source/visualization/management/include/G4VisCommands.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommands.hh,v 1.1.2.1 2001/06/28 19:16:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommands.hh,v 1.3 2001/08/05 02:29:02 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/ top level commands - John Allison 5th February 2001 @@ -32,7 +32,7 @@ #include "G4VVisCommand.hh" class G4UIcmdWithABool; -class G4UIcmdWithAnInteger; +class G4UIcmdWithAString; class G4UIcmdWithoutParameter; class G4VisCommandEnable: public G4VVisCommand { @@ -57,7 +57,7 @@ public: private: G4VisCommandVerbose (const G4VisCommandVerbose&); G4VisCommandVerbose& operator = (const G4VisCommandVerbose&); - G4UIcmdWithAnInteger* fpCommand; + G4UIcmdWithAString* fpCommand; }; #endif diff --git a/source/visualization/management/include/G4VisCommandsClear.hh b/source/visualization/management/include/G4VisCommandsClear.hh deleted file mode 100644 index fbe6f1d144..0000000000 --- a/source/visualization/management/include/G4VisCommandsClear.hh +++ /dev/null @@ -1,124 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsClear.hh,v 1.5.2.1 2001/06/28 19:16:08 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/clear/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSCLEAR_HH -#define G4VISCOMMANDSCLEAR_HH - -#include "globals.hh" -#include "G4VisManager.hh" -#include "G4ViewParameters.hh" - -//////////////////////////////////////////////////// /vis~/clear/... //// -//vis \hline -//vis /vis~/clear/ && -//vis ...menu of clear commands. \\% -class G4VisCommandClear { -public: - G4String GetCommandName () const {return "/vis~/clear/";} - G4String GetGuidance () const { - return "...menu of clear commands."; - } -}; - -/**************** -///////////////////////////////////////// /vis~/clear/scene //// -//clear \hline -//clear /vis~/clear/scene && -//clear Clears current scene and scene data and marks all its views -//clear as needing refreshing (but does not clear them). \\% -class G4VisCommandClearScene { -public: - G4String GetCommandName () const {return "/vis~/clear/scene";} - G4String GetGuidance () const { - return "Clears current scene and scene data and marks all its views" - " as needing refreshing (but does not clear them)."; - } - void SetValue () { - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> ClearScene (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - } - } -}; -******************/ - -//////////////////////////////////////// /vis~/clear/view //// -//clear \hline -//clear /vis~/clear/view && -//clear Clears visible window of current view. \\% -class G4VisCommandClearView { -public: - G4String GetCommandName () const {return "/vis~/clear/view";} - G4String GetGuidance () const { - return "Clears visible window of current view."; - } - void SetValue () { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/clear\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> ClearView (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - } - } -}; - -/**************************** -/////////////////////////////////////// /vis~/clear/view_and_scene //// -//clear \hline -//clear /vis~/clear/view\_and\_scene && -//clear Combination command. \\% -class G4VisCommandClearViewAndScene { -public: - G4String GetCommandName () const {return "/vis~/clear/view_and_scene";} - G4String GetGuidance () const { - return "Combination command."; - } - void SetValue () { - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> ClearView (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - pVMan -> ClearScene (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - } - } -}; -********************/ - -#endif diff --git a/source/visualization/management/include/G4VisCommandsCompound.hh b/source/visualization/management/include/G4VisCommandsCompound.hh index f2d8abd8e0..e282b31864 100644 --- a/source/visualization/management/include/G4VisCommandsCompound.hh +++ b/source/visualization/management/include/G4VisCommandsCompound.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsCompound.hh,v 1.6.2.1 2001/06/28 19:16:08 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsCompound.hh,v 1.7 2001/07/11 10:09:15 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // Compound /vis/ commands - John Allison 15th May 2000 diff --git a/source/visualization/management/include/G4VisCommandsCopy.hh b/source/visualization/management/include/G4VisCommandsCopy.hh deleted file mode 100644 index 384ef3b4dc..0000000000 --- a/source/visualization/management/include/G4VisCommandsCopy.hh +++ /dev/null @@ -1,128 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsCopy.hh,v 1.5.2.1 2001/06/28 19:16:08 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/copy/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSCOPY_HH -#define G4VISCOMMANDSCOPY_HH - -#include "globals.hh" -#include "G4VisManager.hh" -#include "G4ViewParameters.hh" - -//////////////////////////////////////////////////// /vis~/copy/... //// -//vis \hline -//vis /vis~/copy/ && -//vis ...menu of copy commands. \\% -class G4VisCommandCopy { -public: - G4String GetCommandName () const {return "/vis~/copy/";} - G4String GetGuidance () const { - return "...menu of copy commands."; - } -}; - -/***************************** -////////////////////////////////////////////// /vis~/copy/all //// -//copy \hline -//copy /vis~/copy/all && -//copy Copy all data of current scene and view into current memory. -//copy WARNING: this overwrites the current scene data and -//copy current view parameters. \\% -class G4VisCommandCopyAll { -public: - G4String GetCommandName () const {return "/vis~/copy/all";} - G4String GetGuidance () const { - return "Copy all data of current scene and view into current memory." - " WARNING: this overwrites the current scene data and " - "current view parameters."; - } - void SetValue () { - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> CopyScene (); - pVMan -> CopyViewParameters (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentScene (); - } - } - } -}; - -////////////////////////////////////////// /vis~/copy/scene //// -//copy \hline -//copy /vis~/copy/scene && -//copy Copy scene data of current scene into current scene data. -//copy WARNING: this overwrites the current scene data. \\% -class G4VisCommandCopyScene { -public: - G4String GetCommandName () const {return "/vis~/copy/scene";} - G4String GetGuidance () const { - return "Copy scene data of current scene into current scene data." - " WARNING: this overwrites the current scene data."; - } - void SetValue () { - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> CopyScene (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentScene (); - } - } - } -}; -*********************/ - -////////////////////////////////////////// /vis~/copy/view //// -//copy \hline -//copy /vis~/copy/view && -//copy Copy view parameters of current view into current view parameters. -//copy WARNING: this overwrites the current view parameters. \\% -class G4VisCommandCopyView { -public: - G4String GetCommandName () const {return "/vis~/copy/view";} - G4String GetGuidance () const { - return "Copy view parameters of current view into current view parameters." - " WARNING: this overwrites the current view parameters."; - } - void SetValue () { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/set/all\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> CopyViewParameters (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - } - } -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsCreateView.hh b/source/visualization/management/include/G4VisCommandsCreateView.hh deleted file mode 100644 index fffddd5fa2..0000000000 --- a/source/visualization/management/include/G4VisCommandsCreateView.hh +++ /dev/null @@ -1,95 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsCreateView.hh,v 1.5.2.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/create_view/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSCREATEVIEW_HH -#define G4VISCOMMANDSCREATEVIEW_HH - -#include "globals.hh" -#include "G4VisManager.hh" - -///////////////////////////////////////////// /vis~/create_view/... //// -//vis \hline -//vis /vis~/create\_view/ && -//vis ...menu of view creation commands. \\% -class G4VisCommandCreateView { -public: - G4String GetCommandName () const {return "/vis~/create_view/";} - G4String GetGuidance () const { - return "...menu of view creation commands."; - } -}; - -// //////////////////////////////// /vis~/create_view/new_scene //// -// //cr_vw \hline -// //cr_vw /vis~/create\_view/new\_scene && -// //cr_vw Creates a new scene and a new view; both become current. \\% -class G4VisCommandCreateViewNewScene { -public: - G4String GetCommandName () const {return "/vis~/create_view/new_scene";} - G4String GetGuidance () const { - return "Creates a new scene and a new view; both become current."; - } - void SetValue () { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/create\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> CreateSceneHandler (); - pVMan -> CreateViewer (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentScene (); - } - } - } -}; - -//////////////////////////////// /vis~/create_view/new_view //// -//cr_vw \hline -//cr_vw /vis~/create\_view/new\_view && -//cr_vw Creates a new view of current scene; new view becomes -//cr_vw current view. \\% -class G4VisCommandCreateViewNewView { -public: - G4String GetCommandName () const {return "/vis~/create_view/new_view";} - G4String GetGuidance () const { - return "Creates a new view of current scene; new view becomes " - "current view."; - } - void SetValue () { - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> CreateViewer (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - } - } -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsDelete.hh b/source/visualization/management/include/G4VisCommandsDelete.hh deleted file mode 100644 index 9d93d407a5..0000000000 --- a/source/visualization/management/include/G4VisCommandsDelete.hh +++ /dev/null @@ -1,97 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsDelete.hh,v 1.5.2.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/delete/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSDELETE_HH -#define G4VISCOMMANDSDELETE_HH - -#include "globals.hh" -#include "G4VisManager.hh" -#include "G4ViewParameters.hh" - -//////////////////////////////////////////////////// /vis~/delete/... //// -//vis \hline -//vis /vis~/delete/ && -//vis ...menu of deleting possibilities. \\% -class G4VisCommandDelete { -public: - G4String GetCommandName () const {return "/vis~/delete/";} - G4String GetGuidance () const { - return "...menu of deleting possibilities."; - } -}; - -/////////////////////////////////////////// /vis~/delete/scene //// -//delete \hline -//delete /vis~/delete/scene && -//delete Deletes the current scene and its views. \\% -class G4VisCommandDeleteScene { -public: - G4String GetCommandName () const {return "/vis~/delete/scene";} - G4String GetGuidance () const { - return "Deletes the current scene and its views."; - } - void SetValue () { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/scene/remove\" and/or \"/vis/sceneHandler/remove\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - pVMan -> DeleteCurrentSceneHandler (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - } -}; - -/////////////////////////////////////////// /vis~/delete/view //// -//delete \hline -//delete /vis~/delete/view && -//delete Deletes the current view. \\% -class G4VisCommandDeleteView { -public: - G4String GetCommandName () const {return "/vis~/delete/view";} - G4String GetGuidance () const { - return "Deletes the current view."; - } - void SetValue () { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/remove\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - pVMan -> DeleteCurrentViewer (); - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - } -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsDraw.hh b/source/visualization/management/include/G4VisCommandsDraw.hh deleted file mode 100644 index d86a84ec43..0000000000 --- a/source/visualization/management/include/G4VisCommandsDraw.hh +++ /dev/null @@ -1,75 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsDraw.hh,v 1.4.2.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/draw/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSDRAW_HH -#define G4VISCOMMANDSDRAW_HH - -#include "globals.hh" -#include "G4VisManager.hh" -#include "G4ViewParameters.hh" - -//////////////////////////////////////////////////// /vis~/draw/... //// -//vis \hline -//vis /vis~/draw/ && -//vis ...menu of drawing possibilities. \\% -class G4VisCommandDraw { -public: - G4String GetCommandName () const {return "/vis~/draw/";} - G4String GetGuidance () const { - return "...menu of drawing possibilities."; - } -}; - -/////////////////////////////////////////// /vis~/draw/current //// -//draw \hline -//draw /vis~/draw/current && -//draw Draws the current scene in the current view using the current -//draw view parameters. \\% -class G4VisCommandDrawCurrent { -public: - G4String GetCommandName () const {return "/vis~/draw/current";} - G4String GetGuidance () const { - return "Draws the current scene in the current view using the current " - "view parameters."; - } - void SetValue () { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/refresh\" or \"/vis/scene/notifyHandlers\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - pVMan -> Draw (); - } - } -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsLights.hh b/source/visualization/management/include/G4VisCommandsLights.hh deleted file mode 100644 index 9edaa91cb9..0000000000 --- a/source/visualization/management/include/G4VisCommandsLights.hh +++ /dev/null @@ -1,79 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsLights.hh,v 1.6.2.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/lights/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSLIGHTS_HH -#define G4VISCOMMANDSLIGHTS_HH - -#include "globals.hh" -#include "G4VisManager.hh" -#include "G4ViewParameters.hh" - -//////////////////////////////////////////////////// /vis~/lights/... //// -//vis \hline -//vis /vis~/lights/ && -//vis ...menu of lights commands. \\% -class G4VisCommandLights { -public: - G4String GetCommandName () const {return "/vis~/lights/";} - G4String GetGuidance () const { - return "...menu of lights commands."; - } -}; - -/////////////////////////////////////// /vis~/lights/move_with_camera //// -//lights \hline -//lights /vis~/lights/move\_with\_camera & true/false & -//lights Lights move with change of viewpoint. \\% -class G4VisCommandLightsMoveWithCamera { -public: - G4String GetCommandName () const {return "/vis~/lights/move_with_camera";} - G4String GetGuidance () const { - return "Lights move with change of viewpoint."; - } - G4String GetValueName () const {return "lights move flag";} - G4bool GetValue () const { - return G4VisManager::GetInstance () -> GetCurrentViewParameters (). - GetLightsMoveWithCamera (); - } - void SetValue (G4bool value) { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/set/lightsMove\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - pVMan -> SetCurrentViewParameters ().SetLightsMoveWithCamera (value); - G4VViewer* pView = pVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (pVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsRefresh.hh b/source/visualization/management/include/G4VisCommandsRefresh.hh deleted file mode 100644 index e4d99ad37b..0000000000 --- a/source/visualization/management/include/G4VisCommandsRefresh.hh +++ /dev/null @@ -1,71 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsRefresh.hh,v 1.4.2.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/refresh/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSREFRESH_HH -#define G4VISCOMMANDSREFRESH_HH - -#include "globals.hh" -#include "G4VisManager.hh" - -/////////////////////////////////////////////////// /vis~/refresh/... //// -//vis \hline -//vis /vis~/refresh/ && -//vis ...menu of refresh commands. \\% -class G4VisCommandRefresh { -public: - G4String GetCommandName () const {return "/vis~/refresh/";} - G4String GetGuidance () const { - return "...menu of refresh commands."; - } -}; - -///////////////////////////////////////////// /vis~/refresh/view //// -//view \hline -//view /vis~/refresh/view && -//view Optimal redraw of current view of current scene - uses -//view double buffer and graphical database, if any. \\% -class G4VisCommandRefreshView { -public: - G4String GetCommandName () const {return "/vis~/refresh/view";} - G4String GetGuidance () const { - return "Optimal redraw of current view of current scene - uses " - "double buffer and graphical database, if any."; - } - void SetValue () { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/refresh\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - pVMan -> RefreshCurrentView (); - // Soft clear - clears back buffer only on double-buffered systems. - } - } -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsScene.hh b/source/visualization/management/include/G4VisCommandsScene.hh index 7050acc095..acdecf0688 100644 --- a/source/visualization/management/include/G4VisCommandsScene.hh +++ b/source/visualization/management/include/G4VisCommandsScene.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsScene.hh,v 1.9.2.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsScene.hh,v 1.13 2001/11/06 13:00:10 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/scene commands - John Allison 9th August 1998 @@ -42,7 +42,6 @@ public: protected: G4String CurrentSceneName (); void UpdateCandidateLists (); - void UpdateVisManagerScene (const G4String& sceneName = ""); private: G4VVisCommandScene (const G4VVisCommandScene&); G4VVisCommandScene& operator = (const G4VVisCommandScene&); @@ -74,6 +73,19 @@ private: G4UIcmdWithAString* fpCommand; }; +class G4VisCommandSceneEndOfEventAction: public G4VVisCommandScene { +public: + G4VisCommandSceneEndOfEventAction (); + virtual ~G4VisCommandSceneEndOfEventAction (); + G4String GetCurrentValue (G4UIcommand* command); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4VisCommandSceneEndOfEventAction (const G4VisCommandSceneEndOfEventAction&); + G4VisCommandSceneEndOfEventAction& operator = + (const G4VisCommandSceneEndOfEventAction&); + G4UIcmdWithAString* fpCommand; +}; + class G4VisCommandSceneList: public G4VVisCommandScene { public: G4VisCommandSceneList (); @@ -96,7 +108,7 @@ private: G4VisCommandSceneNotifyHandlers (const G4VisCommandSceneNotifyHandlers&); G4VisCommandSceneNotifyHandlers& operator = (const G4VisCommandSceneNotifyHandlers&); - G4UIcmdWithAString* fpCommand; + G4UIcommand* fpCommand; }; class G4VisCommandSceneRemove: public G4VVisCommandScene { diff --git a/source/visualization/management/include/G4VisCommandsSceneAdd.hh b/source/visualization/management/include/G4VisCommandsSceneAdd.hh index 5448902160..ede06bd019 100644 --- a/source/visualization/management/include/G4VisCommandsSceneAdd.hh +++ b/source/visualization/management/include/G4VisCommandsSceneAdd.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsSceneAdd.hh,v 1.7.2.1 2001/06/28 19:16:09 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsSceneAdd.hh,v 1.9 2001/07/22 01:05:00 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/scene commands - John Allison 9th August 1998 @@ -81,6 +81,18 @@ private: G4UIcommand* fpCommand; }; +class G4VisCommandSceneAddScale: public G4VVisCommandScene { +public: + G4VisCommandSceneAddScale (); + virtual ~G4VisCommandSceneAddScale (); + G4String GetCurrentValue (G4UIcommand* command); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4VisCommandSceneAddScale (const G4VisCommandSceneAddScale&); + G4VisCommandSceneAddScale& operator = (const G4VisCommandSceneAddScale&); + G4UIcommand* fpCommand; +}; + class G4VisCommandSceneAddText: public G4VVisCommandScene { public: G4VisCommandSceneAddText (); diff --git a/source/visualization/management/include/G4VisCommandsSceneHandler.hh b/source/visualization/management/include/G4VisCommandsSceneHandler.hh index 1072224b93..7907147232 100644 --- a/source/visualization/management/include/G4VisCommandsSceneHandler.hh +++ b/source/visualization/management/include/G4VisCommandsSceneHandler.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsSceneHandler.hh,v 1.5.4.1 2001/06/28 19:16:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsSceneHandler.hh,v 1.6 2001/07/11 10:09:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/sceneHandler commands - John Allison 10th October 1998 diff --git a/source/visualization/management/include/G4VisCommandsSceneInclude.hh b/source/visualization/management/include/G4VisCommandsSceneInclude.hh deleted file mode 100644 index a3fd59d6e2..0000000000 --- a/source/visualization/management/include/G4VisCommandsSceneInclude.hh +++ /dev/null @@ -1,56 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsSceneInclude.hh,v 1.3.4.1 2001/06/28 19:16:10 gunter Exp $ -// GEANT4 tag $Name: $ - -// /vis/scene commands - John Allison 9th August 1998 - -#ifndef G4VISCOMMANDSSCENEINCLUDE_HH -#define G4VISCOMMANDSSCENEINCLUDE_HH - -#include "G4VisCommandsScene.hh" - -class G4VisCommandSceneIncludeHits: public G4VVisCommandScene { -public: - // Uses compiler defaults for copy constructor and assignment. - G4VisCommandSceneIncludeHits (); - ~G4VisCommandSceneIncludeHits (); - G4String GetCurrentValue (G4UIcommand* command); - void SetNewValue (G4UIcommand* command, G4String newValue); -private: - G4UIcmdWithoutParameter* fpCommand; -}; - -class G4VisCommandSceneIncludeTrajectories: public G4VVisCommandScene { -public: - // Uses compiler defaults for copy constructor and assignment. - G4VisCommandSceneIncludeTrajectories (); - ~G4VisCommandSceneIncludeTrajectories (); - G4String GetCurrentValue (G4UIcommand* command); - void SetNewValue (G4UIcommand* command, G4String newValue); -private: - G4UIcmdWithoutParameter* fpCommand; -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsSet.hh b/source/visualization/management/include/G4VisCommandsSet.hh deleted file mode 100644 index e94905ab8d..0000000000 --- a/source/visualization/management/include/G4VisCommandsSet.hh +++ /dev/null @@ -1,138 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsSet.hh,v 1.6.2.1 2001/06/28 19:16:10 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/set/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSSET_HH -#define G4VISCOMMANDSSET_HH - -#include "globals.hh" -#include "G4VisManager.hh" -#include "G4ViewParameters.hh" - -//////////////////////////////////////////////////// /vis~/set/... //// -//vis \hline -//vis /vis~/set/ && -//vis ...menu of set commands. \\% -class G4VisCommandSet { -public: - G4String GetCommandName () const {return "/vis~/set/";} - G4String GetGuidance () const { - return "...menu of set commands."; - } -}; - -/////////////////////////////////////////// /vis~/set/culling //// -//set \hline -//set /vis~/set/culling & true/false & -//set Global culling flag. Does not change specific culling flags. \\% -class G4VisCommandSetCulling { -public: - G4String GetCommandName () const {return "/vis~/set/culling";} - G4String GetGuidance () const { - return "Global culling flag. Does not change specific culling flags."; - } - G4String GetValueName () const {return "global culling flag";} - G4bool GetValue () const { - return G4VisManager::GetInstance () -> GetCurrentViewParameters (). - IsCulling (); - } - void SetValue (G4bool value) { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/set/culling\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - pVMan -> SetCurrentViewParameters ().SetCulling (value); - G4VViewer* pView = pVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (pVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } -}; - -////////////////////////////////////////// /vis~/set/cull_covered_daughters -//set \hline -//set /vis~/set/ cull\_covered\_daughters & true/false & -//set Cull (i.e., do not Draw) daughters covered by opaque mothers. \\% -class G4VisCommandSetCullCoveredDaughters { -public: - G4String GetCommandName () const {return "/vis~/set/cull_covered_daughters";} - G4String GetGuidance () const { - return "Cull (i.e., do not Draw) daughters covered by opaque mothers."; - } - G4String GetValueName () const {return "culling covered daughters flag";} - G4bool GetValue () const { - return G4VisManager::GetInstance () -> GetCurrentViewParameters (). - IsCullingCovered (); - } - void SetValue (G4bool value) { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/set/culling\"."); - G4cout << "\nNote: this is only effective in surface drawing style," - "\nand then only if the volumes are visible and opaque, and then" - "\nonly if no sections or cutways are in operation." - << G4endl; - G4VisManager* pVMan = G4VisManager::GetInstance (); - pVMan -> SetCurrentViewParameters ().SetCullingCovered (value); - G4VViewer* pView = pVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (pVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } -}; - -////////////////////////////////////////// /vis~/set/cull_invisible_objects -//set \hline -//set /vis~/set/ cull\_invisible\_objects & true/false & -//set Cull (i.e., do not Draw) ``invisible'' objects. \\% -class G4VisCommandSetCullInvisible { -public: - G4String GetCommandName () const {return "/vis~/set/cull_invisible_objects";} - G4String GetGuidance () const { - return "Cull (i.e., do not Draw) \"invisible\" objects."; - } - G4String GetValueName () const {return "culling invisible objects flag";} - G4bool GetValue () const { - return G4VisManager::GetInstance () -> GetCurrentViewParameters (). - IsCullingInvisible (); - } - void SetValue (G4bool value) { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/set/culling\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - pVMan -> SetCurrentViewParameters ().SetCullingInvisible (value); - G4VViewer* pView = pVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (pVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsShow.hh b/source/visualization/management/include/G4VisCommandsShow.hh deleted file mode 100644 index 51a48def31..0000000000 --- a/source/visualization/management/include/G4VisCommandsShow.hh +++ /dev/null @@ -1,75 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsShow.hh,v 1.4.2.1 2001/06/28 19:16:10 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// /vis~/show/ commands -// John Allison 7th September 1997 - -#ifndef G4VISCOMMANDSSHOW_HH -#define G4VISCOMMANDSSHOW_HH - -#include "globals.hh" -#include "G4VisManager.hh" - -/////////////////////////////////////////////////// /vis~/show/... //// -//vis \hline -//vis /vis~/show/ && -//vis ...menu of show commands. \\% -class G4VisCommandShow { -public: - G4String GetCommandName () const {return "/vis~/show/";} - G4String GetGuidance () const { - return "...menu of show commands."; - } -}; - -//////////////////////////////////////////// /vis~/show/view //// -//view \hline -//view /vis~/show/view && -//view Make the view visible, if not so already (initiates -//view post-processing for -//view graphics systems which use such techniques). \\% -class G4VisCommandShowView { -public: - G4String GetCommandName () const {return "/vis~/show/view";} - G4String GetGuidance () const { - return "Make the view visible, if not so already (initiates " - "post-processing for " - "graphics systems which use such techniques)."; - } - void SetValue () { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/update\"."); - G4VisManager* pVMan = G4VisManager::GetInstance (); - if (pVMan -> IsValidView ()) { - if (pVMan -> GetVerboseLevel () > 1) { - pVMan -> PrintCurrentView (); - } - pVMan -> Show (); - } - } -}; - -#endif diff --git a/source/visualization/management/include/G4VisCommandsViewer.hh b/source/visualization/management/include/G4VisCommandsViewer.hh index a947ad9f7f..55abfa87ad 100644 --- a/source/visualization/management/include/G4VisCommandsViewer.hh +++ b/source/visualization/management/include/G4VisCommandsViewer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsViewer.hh,v 1.13.2.1 2001/06/28 19:16:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsViewer.hh,v 1.15 2001/11/06 12:55:28 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/viewer commands - John Allison 25th October 1998 @@ -91,6 +91,18 @@ private: G4double fDollyTo; }; +class G4VisCommandViewerFlush: public G4VVisCommandViewer { +public: + G4VisCommandViewerFlush (); + virtual ~G4VisCommandViewerFlush (); + G4String GetCurrentValue (G4UIcommand* command); + void SetNewValue (G4UIcommand* command, G4String newValue); +private: + G4VisCommandViewerFlush (const G4VisCommandViewerFlush&); + G4VisCommandViewerFlush& operator = (const G4VisCommandViewerFlush&); + G4UIcmdWithAString* fpCommand; +}; + class G4VisCommandViewerLights: public G4VVisCommandViewer { public: G4VisCommandViewerLights (); diff --git a/source/visualization/management/include/G4VisCommandsViewerSet.hh b/source/visualization/management/include/G4VisCommandsViewerSet.hh index 01b2202970..1230ad71b1 100644 --- a/source/visualization/management/include/G4VisCommandsViewerSet.hh +++ b/source/visualization/management/include/G4VisCommandsViewerSet.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsViewerSet.hh,v 1.8.2.1 2001/06/28 19:16:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsViewerSet.hh,v 1.10 2001/11/06 13:01:31 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/viewer/set commands - John Allison 16th May 2000 @@ -55,9 +55,18 @@ private: G4UIcmdWithABool* fpCommandHiddenMarker; G4UIcmdWithAnInteger* fpCommandLineSegments; G4UIcmdWithAString* fpCommandLightsMove; + G4UIcommand* fpCommandLightsThetaPhi; + G4UIcommand* fpCommandLightsVector; + G4ThreeVector fLightsVector; G4UIcommand* fpCommandProjection; G4UIcommand* fpCommandSectionPlane; G4UIcmdWithAString* fpCommandStyle; + G4UIcommand* fpCommandUpThetaPhi; + G4UIcommand* fpCommandUpVector; + G4ThreeVector fUpVector; + G4UIcommand* fpCommandViewpointThetaPhi; + G4UIcommand* fpCommandViewpointVector; + G4ThreeVector fViewpointVector; }; #endif diff --git a/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh b/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh index b87132d207..d4f9b3cc4b 100644 --- a/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh +++ b/source/visualization/management/include/G4VisFeaturesOfDAWNFILE.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfDAWNFILE.hh,v 1.3.4.1 2001/06/28 19:16:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisFeaturesOfDAWNFILE.hh,v 1.4 2001/07/11 10:09:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #ifndef G4VISFEATURESOFDAWNFILE_HH #define G4VISFEATURESOFDAWNFILE_HH diff --git a/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh b/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh index a9d0324b12..db3c9898e3 100644 --- a/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh +++ b/source/visualization/management/include/G4VisFeaturesOfFukuiRenderer.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfFukuiRenderer.hh,v 1.3.4.1 2001/06/28 19:16:10 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisFeaturesOfFukuiRenderer.hh,v 1.4 2001/07/11 10:09:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh b/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh index ec8fd6ef98..0d93282dcf 100644 --- a/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh +++ b/source/visualization/management/include/G4VisFeaturesOfOpenGL.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfOpenGL.hh,v 1.3.4.1 2001/06/28 19:16:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisFeaturesOfOpenGL.hh,v 1.4 2001/07/11 10:09:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh b/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh index 31cf93b8e8..141199f73d 100644 --- a/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh +++ b/source/visualization/management/include/G4VisFeaturesOfOpenInventor.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfOpenInventor.hh,v 1.3.4.1 2001/06/28 19:16:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisFeaturesOfOpenInventor.hh,v 1.4 2001/07/11 10:09:16 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/management/include/G4VisManMessenger.hh b/source/visualization/management/include/G4VisManMessenger.hh deleted file mode 100644 index 6e50b97c2d..0000000000 --- a/source/visualization/management/include/G4VisManMessenger.hh +++ /dev/null @@ -1,79 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisManMessenger.hh,v 1.6.2.1 2001/06/28 19:16:11 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. - -#ifndef G4VISMANMESSENGER_HH -#define G4VISMANMESSENGER_HH - -#include "G4UImessenger.hh" -#include "globals.hh" -#include "g4std//vector" - -class G4VisManager; -class G4UIcommand; - -class G4VisManMessenger: public G4UImessenger { -public: - G4VisManMessenger (G4VisManager* pVMan); - virtual ~G4VisManMessenger (); - void SetNewValue (G4UIcommand* command, G4String newValues); - G4String GetCurrentValue (G4UIcommand* command); -private: - G4VisManMessenger (const G4VisManMessenger&); - G4VisManMessenger& operator = (const G4VisManMessenger&); - void AddCommandCamera (); - // void AddCommandClear (); - // void AddCommandCopy (); - // void AddCommandCreateScene (); - void AddCommandCreateView (); - void AddCommandDraw (); - void AddCommandLights (); - // void AddCommandPrint (); - // void AddCommandRefresh (); - void AddCommandSet (); - // void AddCommandShow (); - void AddCommandExpert (); - void DoCommandCamera (const G4String& commandPath, G4String& newValues); - // void DoCommandClear (const G4String& commandPath, G4String& newValues); - // void DoCommandCopy (const G4String& commandPath, G4String& newValues); - // void DoCommandCreateScene (const G4String& commandPath, G4String& newValues); - void DoCommandCreateView (const G4String& commandPath, G4String& newValues); - void DoCommandDraw (const G4String& commandPath, G4String& newValues); - void DoCommandLights (const G4String& commandPath, G4String& newValues); - // void DoCommandPrint (const G4String& commandPath, G4String& newValues); - // void DoCommandRefresh (const G4String& commandPath, G4String& newValues); - void DoCommandSet (const G4String& commandPath, G4String& newValues); - // void DoCommandShow (const G4String& commandPath, G4String& newValues); - void DoCommandExpert (const G4String& commandPath, G4String& newValues); - G4bool ViewValid (); - void RotateViewpointAboutUpVectorBy (G4double dbeta); - G4VisManager* fpVMan; - G4std::vector fCommandList; -}; - -#endif diff --git a/source/visualization/management/include/G4VisManager.hh b/source/visualization/management/include/G4VisManager.hh index 6613e914ef..efc9e7464a 100644 --- a/source/visualization/management/include/G4VisManager.hh +++ b/source/visualization/management/include/G4VisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisManager.hh,v 1.18.2.1 2001/06/28 19:16:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisManager.hh,v 1.27 2001/09/10 11:00:36 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // @@ -30,7 +30,7 @@ // // The GEANT4 Visualization Manager - John Allison 02/Jan/1996. // -// G4VisManage is a "Singleton", i.e., only one instance of it or any +// G4VisManager is a "Singleton", i.e., only one instance of it or any // derived class may exist. A G4Exception is thrown if an attempt is // made to instantiate more than one. // @@ -83,14 +83,12 @@ #include "G4SceneHandlerList.hh" #include "G4Scene.hh" #include "G4SceneList.hh" -#include "G4ViewParameters.hh" #include "G4Transform3D.hh" #include "G4UImessenger.hh" #include "g4std/iostream" #include "g4std/vector" -class G4VisManMessenger; class G4VPhysicalVolume; class G4LogicalVolume; class G4VSolid; @@ -100,6 +98,7 @@ class G4VViewer; class G4Polyline; class G4Text; class G4Circle; +class G4Scale; class G4Square; class G4Polymarker; class G4Polyhedron; @@ -115,7 +114,6 @@ class G4VisManager: public G4VVisManager { // non-zero. // Odd friends that need access to various methods of the G4VisManager... - friend void G4OpenGLXmViewerSecondaryLoopPostAction (); // Mmmm! friend class G4RTSteppingAction; friend class G4RayTrajectory; @@ -131,26 +129,18 @@ class G4VisManager: public G4VVisManager { friend class G4VisStateDependent; - // Now classes associated with the old commands... - friend class G4VisManMessenger; - friend class G4VisCommandCameraReset; - friend class G4VisCommandClearScene; - friend class G4VisCommandClearView; - friend class G4VisCommandClearViewAndScene; - friend class G4VisCommandCopyAll; - friend class G4VisCommandCopyScene; - friend class G4VisCommandCopyView; - friend class G4VisCommandCreateViewNewScene; - friend class G4VisCommandCreateViewNewView; - friend class G4VisCommandDeleteScene; - friend class G4VisCommandDeleteView; - friend class G4VisCommandDrawCurrent; - friend class G4VisCommandLightsMoveWithCamera; - friend class G4VisCommandRefreshView; - friend class G4VisCommandSetCulling; - friend class G4VisCommandSetCullCoveredDaughters; - friend class G4VisCommandSetCullInvisible; - friend class G4VisCommandShowView; +public: // With description + + enum Verbosity { + quiet, // Nothing is printed. + startup, // Startup and endup messages are printed... + errors, // ...and errors... + warnings, // ...and warnings... + confirmations, // ...and confirming messages... + parameters, // ...and parameters of scenes and views... + all // ...and everything available. + }; + // Simple graded message scheme. protected: // With description @@ -182,65 +172,59 @@ public: // With description void Initialize (); // Alias Initialise (). G4bool RegisterGraphicsSystem (G4VGraphicsSystem* pSystem); - ////////////////////////////////////////////////////////////////////// - // Drawing routines! - - void ClearView (); - // Clear visible window of current viewer (both buffers of a double - // buffered system). - - void Draw (); - // Draw current scene in current view. - - void Show (); - // Show current view (initiates post-procesing of graphical - // databases for graphics systems which require it.) - - // /////////////////////////////////////////////////////////////// - // Now functions for drawing various visualization primitives, - // useful for representing hits, digis, etc. - - void Draw (const G4Polyline&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity); - - void Draw (const G4Text&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity); + ///////////////////////////////////////////////////////////////// + // Now functions that implement the pure virtual functions of + // G4VVisManager for drawing various visualization primitives, useful + // for representing hits, digis, etc. void Draw (const G4Circle&, const G4Transform3D& objectTransformation = G4Transform3D::Identity); - void Draw (const G4Square&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity); - - void Draw (const G4Polymarker&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity); - - void Draw (const G4Polyhedron&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity); - void Draw (const G4NURBS&, const G4Transform3D& objectTransformation = G4Transform3D::Identity); - // ////////////////////////////////////////////////////////////////// - // Now functions for drawing a GEANT4 geometry object. Note that + void Draw (const G4Polyhedron&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity); + + void Draw (const G4Polyline&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity); + + void Draw (const G4Polymarker&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity); + + void Draw (const G4Scale&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity); + + void Draw (const G4Square&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity); + + void Draw (const G4Text&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity); + + //////////////////////////////////////////////////////////////////// + // Now functions that implement the pure virtual functions of + // G4VVisManager for drawing a GEANT4 geometry object. Note that // the 2nd argument overrides any visualization attributes that are // associated with the object itself. - void Draw (const G4VSolid&, const G4VisAttributes&, - const G4Transform3D& objectTransformation = G4Transform3D::Identity); - void Draw (const G4LogicalVolume&, const G4VisAttributes&, const G4Transform3D& objectTransformation = G4Transform3D::Identity); void Draw (const G4VPhysicalVolume&, const G4VisAttributes&, const G4Transform3D& objectTransformation = G4Transform3D::Identity); + void Draw (const G4VSolid&, const G4VisAttributes&, + const G4Transform3D& objectTransformation = G4Transform3D::Identity); + + //////////////////////////////////////////////////////////////////////// + // Now other pure virtual functions of G4VVisManager... + + void GeometryHasChanged (); + // Used by run manager to notify change. + //////////////////////////////////////////////////////////////////////// // Administration routines. - void CopyViewParameters (); - // Copy view parameters of current viewer into current view parameters. - void CreateSceneHandler (G4String name = ""); // Creates scene handler for the current system. @@ -253,26 +237,18 @@ public: // With description void DeleteCurrentViewer (); // Leaves current scene and view undefined! - void GeometryHasChanged (); - // Used by run manager to notify change. - - void RefreshCurrentView (); - // Soft clear, then redraw. - private: + void BeginOfRun (); + + void BeginOfEvent (); + void EndOfEvent (); // This is called on change of state (G4ApplicationState). It is // used to draw hits and trajectories if included in the current // scene at the end of event, as required. -public: - - // These can go when OLD STYLE commands go... - void PrintCurrentSystem () const; - void PrintCurrentSystems () const; - void PrintCurrentScene () const; - void PrintCurrentView () const; + void EndOfRun (); public: // With description @@ -287,24 +263,27 @@ public: // With description G4Scene* GetCurrentScene () const; G4VSceneHandler* GetCurrentSceneHandler () const; G4VViewer* GetCurrentViewer () const; - const G4ViewParameters& GetCurrentViewParameters () const; const G4GraphicsSystemList& GetAvailableGraphicsSystems (); // The above is non-const because it checks and updates the List by // calling RegisterGraphicsSystems() if no graphics systems are // already registered. const G4SceneHandlerList& GetAvailableSceneHandlers () const; const G4SceneList& GetSceneList () const; - G4int GetVerboseLevel () const; + Verbosity GetVerbosity () const; + void GetWindowSizeHint (G4int& xHint, G4int& yHint) const; + // Note: GetWindowSizeHint information is returned via the G4int& arguments. void SetCurrentGraphicsSystemAndCreateViewer (G4VGraphicsSystem* pSystem); void SetCurrentGraphicsSystem (G4VGraphicsSystem* pSystem); void SetCurrentScene (G4Scene*); void SetCurrentSceneHandler (G4VSceneHandler* pScene); void SetCurrentViewer (G4VViewer* pView); - G4ViewParameters& SetCurrentViewParameters (); // Returns lvalue. G4SceneHandlerList& SetAvailableSceneHandlers (); // Returns lvalue. G4SceneList& SetSceneList (); // Returns lvalue. - void SetVerboseLevel (G4int vLevel); + void SetVerboseLevel (G4int); + void SetVerboseLevel (const G4String&); + void SetVerboseLevel (Verbosity); + void SetWindowSizeHint (G4int xHint, G4int yHint); ///////////////////////////////////////////////////////////////////// @@ -318,11 +297,18 @@ public: // With description // Returns zero if not found. Can use long or short name, but find // is done on short name. - G4bool IsValidView (); - // True if view is valid. Prints messages and sanitises varoius data. + static Verbosity GetVerbosityValue(const G4String&); + // Returns verbosity given a string. (Uses first character only.) - static void PrintCommandDeprecation(const G4String&); - // Temporary deprecation printing. + static Verbosity GetVerbosityValue(G4int); + // Returns verbosity given an integer. If integer is out of range, + // selects verbosity at extreme of range. + + static G4String VerbosityString(Verbosity); + // Converts the verbosity into a string for suitable for printing. + + static G4String VerbosityGuidanceString; + // Guidance on the use of visualization verbosity. protected: @@ -332,6 +318,12 @@ protected: void PrintInstalledGraphicsSystems () const; void PrintAvailableGraphicsSystems () const; void PrintInvalidPointers () const; + G4bool IsValidView (); + // True if view is valid. Prints messages and sanitises various data. + void ClearTransientStoreIfMarked(); + // Clears transient store of current scene handler if it is marked + // for clearing. Assumes view is valid. + static G4VisManager* fpInstance; // Pointer to single instance. G4bool fInitialised; G4VGraphicsSystem* fpGraphicsSystem; // Current graphics system. @@ -341,12 +333,16 @@ protected: G4GraphicsSystemList fAvailableGraphicsSystems; G4SceneList fSceneList; G4SceneHandlerList fAvailableSceneHandlers; - G4ViewParameters fVP; // Current viewing parameters. - G4int fVerbose; // Verbosity level 0-10. - G4VisManMessenger* fpMessenger; // Pointer to messenger. + Verbosity fVerbosity; + const G4int fVerbose; + // fVerbose is kept for backwards compatibility for some user + // examples. (It is used in the derived user vis managers to print + // available graphics systems.) It is initialised to 1 in the + // constructor and cannot be changed. G4std::vector fMessengerList; G4std::vector fDirectoryList; G4VisStateDependent* fpStateDependent; // Friend state dependent class. + G4int fWindowSizeHintX, fWindowSizeHintY; // For viewer construction. }; diff --git a/source/visualization/management/include/G4VisManager.icc b/source/visualization/management/include/G4VisManager.icc index 9f95c7adcd..9784ecc48b 100644 --- a/source/visualization/management/include/G4VisManager.icc +++ b/source/visualization/management/include/G4VisManager.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisManager.icc,v 1.5.4.1 2001/06/28 19:16:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisManager.icc,v 1.8 2001/08/05 02:29:05 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // GEANT4 Visualization Manager - John Allison 02/Jan/1996. @@ -43,11 +43,6 @@ inline G4Scene* G4VisManager::GetCurrentScene () const { return fpScene; } -inline const G4ViewParameters& -G4VisManager::GetCurrentViewParameters () const { - return fVP; -} - inline const G4SceneHandlerList& G4VisManager::GetAvailableSceneHandlers () const { return fAvailableSceneHandlers; @@ -62,18 +57,19 @@ G4VisManager::GetCurrentGraphicsSystem () const { return fpGraphicsSystem; } -inline G4int G4VisManager::GetVerboseLevel () const { - return fVerbose; +inline G4VisManager::Verbosity G4VisManager::GetVerbosity () const { + return fVerbosity; +} + +inline void G4VisManager::GetWindowSizeHint + (G4int& xHint, G4int& yHint) const { + xHint = fWindowSizeHintX; yHint = fWindowSizeHintY; } inline void G4VisManager::SetCurrentScene (G4Scene* pScene) { fpScene = pScene; } -inline G4ViewParameters& G4VisManager::SetCurrentViewParameters () { - return fVP; -} - inline G4SceneList& G4VisManager::SetSceneList () { return fSceneList; } @@ -82,6 +78,10 @@ inline G4SceneHandlerList& G4VisManager::SetAvailableSceneHandlers () { return fAvailableSceneHandlers; } -inline void G4VisManager::SetVerboseLevel (G4int vLevel) { - fVerbose = vLevel; +inline void G4VisManager::SetVerboseLevel (G4VisManager::Verbosity verbosity) { + fVerbosity = verbosity; +} + +inline void G4VisManager::SetWindowSizeHint (G4int xHint, G4int yHint) { + fWindowSizeHintX = xHint; fWindowSizeHintY = yHint; } diff --git a/source/visualization/management/include/G4VisStateDependent.hh b/source/visualization/management/include/G4VisStateDependent.hh index 53cd2d057f..dd37bb2522 100644 --- a/source/visualization/management/include/G4VisStateDependent.hh +++ b/source/visualization/management/include/G4VisStateDependent.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisStateDependent.hh,v 1.3.4.1 2001/06/28 19:16:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisStateDependent.hh,v 1.4 2001/07/11 10:09:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // A "state dependent" service class for G4VisManager. // John Allison 29th November 1999 diff --git a/source/visualization/management/include/G4VisToOldVisCommands.hh b/source/visualization/management/include/G4VisToOldVisCommands.hh index 67f07bfb47..e0be3efa20 100644 --- a/source/visualization/management/include/G4VisToOldVisCommands.hh +++ b/source/visualization/management/include/G4VisToOldVisCommands.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisToOldVisCommands.hh,v 1.5.2.1 2001/06/28 19:16:11 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisToOldVisCommands.hh,v 1.6 2001/07/11 10:09:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Implements some /vis/ commands as /vis~/ temporarily. diff --git a/source/visualization/management/include/MyVisManager.cc b/source/visualization/management/include/MyVisManager.cc index 8591db304b..db339c6d5f 100644 --- a/source/visualization/management/include/MyVisManager.cc +++ b/source/visualization/management/include/MyVisManager.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: MyVisManager.cc,v 1.8.2.1 2001/06/28 19:16:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: MyVisManager.cc,v 1.16 2001/11/15 14:39:27 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. @@ -31,22 +31,21 @@ // Supported drivers... -#ifdef G4VIS_USE_ASCIITREE +// Not needing external packages or libraries... #include "G4ASCIITree.hh" -#endif +#include "G4DAWNFILE.hh" +#include "G4GAGTree.hh" +#include "G4HepRepFile.hh" +#include "G4RayTracer.hh" +#include "G4VRML1File.hh" +#include "G4VRML2File.hh" + +// Needing external packages or libraries... #ifdef G4VIS_USE_DAWN #include "G4FukuiRenderer.hh" #endif -#ifdef G4VIS_USE_DAWNFILE -#include "G4DAWNFILE.hh" -#endif - -#ifdef G4VIS_USE_GAGTREE -#include "G4GAGTree.hh" -#endif - #ifdef G4VIS_USE_OPACS #include "G4Wo.hh" #include "G4Xo.hh" @@ -75,40 +74,31 @@ #include "G4OpenInventorWin32.hh" #endif -#ifdef G4VIS_USE_RAYTRACER -#include "G4RayTracer.hh" -#endif - #ifdef G4VIS_USE_VRML #include "G4VRML1.hh" #include "G4VRML2.hh" #endif -#ifdef G4VIS_USE_VRMLFILE -#include "G4VRML1File.hh" -#include "G4VRML2File.hh" -#endif MyVisManager::MyVisManager () {} void MyVisManager::RegisterGraphicsSystems () { -#ifdef G4VIS_USE_ASCIITREE + // Graphics Systems not needing external packages or libraries... RegisterGraphicsSystem (new G4ASCIITree); -#endif + RegisterGraphicsSystem (new G4DAWNFILE); + RegisterGraphicsSystem (new G4GAGTree); + RegisterGraphicsSystem (new G4HepRepFile); + RegisterGraphicsSystem (new G4RayTracer); + RegisterGraphicsSystem (new G4VRML1File); + RegisterGraphicsSystem (new G4VRML2File); + + // Graphics systems needing external packages or libraries... #ifdef G4VIS_USE_DAWN RegisterGraphicsSystem (new G4FukuiRenderer); #endif -#ifdef G4VIS_USE_DAWNFILE - RegisterGraphicsSystem (new G4DAWNFILE); -#endif - -#ifdef G4VIS_USE_GAGTREE - RegisterGraphicsSystem (new G4GAGTree); -#endif - #ifdef G4VIS_USE_OPACS RegisterGraphicsSystem (new G4Wo); RegisterGraphicsSystem (new G4Xo); @@ -137,24 +127,8 @@ void MyVisManager::RegisterGraphicsSystems () { RegisterGraphicsSystem (new G4OpenInventorWin32); #endif -#ifdef G4VIS_USE_RAYTRACER - RegisterGraphicsSystem (new G4RayTracer); -#endif - #ifdef G4VIS_USE_VRML RegisterGraphicsSystem (new G4VRML1); RegisterGraphicsSystem (new G4VRML2); #endif - -#ifdef G4VIS_USE_VRMLFILE - RegisterGraphicsSystem (new G4VRML1File); - RegisterGraphicsSystem (new G4VRML2File); -#endif - - if (fVerbose > 0) { - G4cout << - "\nYou have successfully chosen to use the following graphics systems." - << G4endl; - PrintAvailableGraphicsSystems (); - } } diff --git a/source/visualization/management/include/MyVisManager.hh b/source/visualization/management/include/MyVisManager.hh index cb045d0823..37a5ca7293 100644 --- a/source/visualization/management/include/MyVisManager.hh +++ b/source/visualization/management/include/MyVisManager.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: MyVisManager.hh,v 1.4.4.1 2001/06/28 19:16:12 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: MyVisManager.hh,v 1.5 2001/07/11 10:09:17 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 24th January 1998. diff --git a/source/visualization/management/src/G4GraphicsSystemList.cc b/source/visualization/management/src/G4GraphicsSystemList.cc index 2e6f4cabfe..4df8d92941 100644 --- a/source/visualization/management/src/G4GraphicsSystemList.cc +++ b/source/visualization/management/src/G4GraphicsSystemList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4GraphicsSystemList.cc,v 1.2.2.1 2001/06/28 19:16:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4GraphicsSystemList.cc,v 1.3 2001/07/11 10:09:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4GraphicsSystemList.hh" diff --git a/source/visualization/management/src/G4Scene.cc b/source/visualization/management/src/G4Scene.cc index 495a747e49..a87e093ac2 100644 --- a/source/visualization/management/src/G4Scene.cc +++ b/source/visualization/management/src/G4Scene.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4Scene.cc,v 1.7.2.1 2001/06/28 19:16:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4Scene.cc,v 1.11 2001/08/24 20:47:41 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // Scene data John Allison 19th July 1996. @@ -36,30 +36,38 @@ #include "G4TransportationManager.hh" G4Scene::G4Scene (const G4String& name): - fName (name) -{} // Note all data members have default initial values. + fName (name), + fRefreshAtEndOfEvent(true) +{} // Note all other data members have default initial values. G4Scene::~G4Scene () {} -G4bool G4Scene::AddRunDurationModel (G4VModel* pModel) { +G4bool G4Scene::AddRunDurationModel (G4VModel* pModel, G4bool warn) { G4int i, nModels = fRunDurationModelList.size (); for (i = 0; i < nModels; i++) { if (pModel -> GetGlobalDescription () == fRunDurationModelList [i] -> GetGlobalDescription ()) break; } if (i < nModels) { - G4cout << "G4Scene::AddRunDurationModel: model \"" - << pModel -> GetGlobalDescription () - << "\"\n is already in the run-duration list of scene \"" - << fName - << "\"." - << G4endl; + if (warn) { + G4cout << "G4Scene::AddRunDurationModel: model \"" + << pModel -> GetGlobalDescription () + << "\"\n is already in the run-duration list of scene \"" + << fName + << "\"." + << G4endl; + } return false; } fRunDurationModelList.push_back (pModel); - nModels = fRunDurationModelList.size (); // ...has increased by 1... + CalculateExtent (); + return true; +} + +void G4Scene::CalculateExtent () { + G4int nModels = fRunDurationModelList.size (); G4BoundingSphereScene boundingSphereScene; - for (i = 0; i < nModels; i++) { + for (G4int i = 0; i < nModels; i++) { const G4VisExtent& thisExtent = fRunDurationModelList[i] -> GetExtent (); G4Point3D thisCentre = thisExtent.GetExtentCentre (); @@ -69,12 +77,12 @@ G4bool G4Scene::AddRunDurationModel (G4VModel* pModel) { } fExtent = boundingSphereScene.GetBoundingSphereExtent (); fStandardTargetPoint = fExtent.GetExtentCentre (); - return true; } -G4bool G4Scene::AddWorldIfEmpty () { - G4bool successful = false; +G4bool G4Scene::AddWorldIfEmpty (G4bool warn) { + G4bool successful = true; if (IsEmpty ()) { + successful = false; G4VPhysicalVolume* pWorld = G4TransportationManager::GetTransportationManager () -> GetNavigatorForTracking () -> GetWorldVolume (); @@ -82,40 +90,46 @@ G4bool G4Scene::AddWorldIfEmpty () { const G4VisAttributes* pVisAttribs = pWorld -> GetLogicalVolume () -> GetVisAttributes (); if (!pVisAttribs || pVisAttribs -> IsVisible ()) { - G4cout << - "Your \"world\" has no vis attributes or is marked as visible." - "\n For a better view of the contents, mark the world as" - " invisible, e.g.," - "\n myWorldLogicalVol ->" - " SetVisAttributes (G4VisAttributes::Invisible);" - << G4endl; + if (warn) { + G4cout << + "Your \"world\" has no vis attributes or is marked as visible." + "\n For a better view of the contents, mark the world as" + " invisible, e.g.," + "\n myWorldLogicalVol ->" + " SetVisAttributes (G4VisAttributes::Invisible);" + << G4endl; + } } successful = AddRunDurationModel (new G4PhysicalVolumeModel (pWorld)); // Note: default depth and no modeling parameters. if (successful) { - G4cout << - "G4Scene::AddWorldIfEmpty: The scene was empty," - "\n \"world\" has been added."; - G4cout << G4endl; + if (warn) { + G4cout << + "G4Scene::AddWorldIfEmpty: The scene was empty," + "\n \"world\" has been added."; + G4cout << G4endl; + } } } } return successful; } -G4bool G4Scene::AddEndOfEventModel (G4VModel* pModel) { +G4bool G4Scene::AddEndOfEventModel (G4VModel* pModel, G4bool warn) { G4int i, nModels = fEndOfEventModelList.size (); for (i = 0; i < nModels; i++) { if (pModel -> GetGlobalDescription () == fEndOfEventModelList [i] -> GetGlobalDescription ()) break; } if (i < nModels) { - G4cout << "G4Scene::AddEndOfEventModel: model \"" - << pModel -> GetGlobalDescription () - << "\"\n is already in the run-duration list of scene \"" - << fName - << "\"." - << G4endl; + if (warn) { + G4cout << "G4Scene::AddEndOfEventModel: model \"" + << pModel -> GetGlobalDescription () + << "\"\n is already in the run-duration list of scene \"" + << fName + << "\"." + << G4endl; + } return false; } fEndOfEventModelList.push_back (pModel); @@ -132,25 +146,30 @@ void G4Scene::Clear () { } } -G4std::ostream& operator << (G4std::ostream& os, const G4Scene& d) { +G4std::ostream& operator << (G4std::ostream& os, const G4Scene& s) { size_t i; os << "Scene data:"; os << "\n Run-duration model list:"; - for (i = 0; i < d.fRunDurationModelList.size (); i++) { - os << "\n " << *(d.fRunDurationModelList[i]); + for (i = 0; i < s.fRunDurationModelList.size (); i++) { + os << "\n " << *(s.fRunDurationModelList[i]); } os << "\n End-of-event model list:"; - for (i = 0; i < d.fEndOfEventModelList.size (); i++) { - os << "\n " << *(d.fEndOfEventModelList[i]); + for (i = 0; i < s.fEndOfEventModelList.size (); i++) { + os << "\n " << *(s.fEndOfEventModelList[i]); } - os << "\n Extent or bounding box: " << d.fExtent; + os << "\n Extent or bounding box: " << s.fExtent; - os << "\n Standard target point: " << d.fStandardTargetPoint; + os << "\n Standard target point: " << s.fStandardTargetPoint; + + os << "\n End of event action set to \""; + if (s.fRefreshAtEndOfEvent) os << "refresh"; + else os << "accumulate"; + os << "\""; return os; } @@ -158,9 +177,10 @@ G4std::ostream& operator << (G4std::ostream& os, const G4Scene& d) { G4bool G4Scene::operator != (const G4Scene& s) const { if ( (fRunDurationModelList.size () != - s.fRunDurationModelList.size ()) || + s.fRunDurationModelList.size ()) || (fExtent != s.fExtent) || - !(fStandardTargetPoint == s.fStandardTargetPoint) + !(fStandardTargetPoint == s.fStandardTargetPoint) || + fRefreshAtEndOfEvent != s.fRefreshAtEndOfEvent ) return true; for (size_t i = 0; i < fRunDurationModelList.size (); i++) { diff --git a/source/visualization/management/src/G4SceneHandlerList.cc b/source/visualization/management/src/G4SceneHandlerList.cc index 16a5607d59..19c0470f63 100644 --- a/source/visualization/management/src/G4SceneHandlerList.cc +++ b/source/visualization/management/src/G4SceneHandlerList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SceneHandlerList.cc,v 1.2.2.1 2001/06/28 19:16:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SceneHandlerList.cc,v 1.3 2001/07/11 10:09:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4SceneHandlerList.hh" diff --git a/source/visualization/management/src/G4SceneList.cc b/source/visualization/management/src/G4SceneList.cc index e574e93c76..24ac17d71a 100644 --- a/source/visualization/management/src/G4SceneList.cc +++ b/source/visualization/management/src/G4SceneList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4SceneList.cc,v 1.4.2.1 2001/06/28 19:16:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4SceneList.cc,v 1.5 2001/07/11 10:09:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4SceneList.hh" diff --git a/source/visualization/management/src/G4VGraphicsSystem.cc b/source/visualization/management/src/G4VGraphicsSystem.cc index 8af140e282..afd4c56229 100644 --- a/source/visualization/management/src/G4VGraphicsSystem.cc +++ b/source/visualization/management/src/G4VGraphicsSystem.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VGraphicsSystem.cc,v 1.7.2.1 2001/06/28 19:16:13 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VGraphicsSystem.cc,v 1.9 2001/08/05 02:29:09 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 27th March 1996 @@ -69,7 +69,7 @@ G4std::ostream& operator << (G4std::ostream& os, const G4VGraphicsSystem& gs) { os << "\n Description: " << gs.GetDescription (); } os << "\n Functionality: " << G4int(gs.GetFunctionality()); - if (pVMan -> GetVerboseLevel () > 1) { + if (pVMan -> GetVerbosity() >= G4VisManager::parameters) { size_t nScenes = scenes.size (); if (nScenes) { G4int nScenesOfThisSystem = 0; diff --git a/source/visualization/management/src/G4VSceneHandler.cc b/source/visualization/management/src/G4VSceneHandler.cc index b43e283cb0..c6528d4f4b 100644 --- a/source/visualization/management/src/G4VSceneHandler.cc +++ b/source/visualization/management/src/G4VSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VSceneHandler.cc,v 1.14.2.1 2001/06/28 19:16:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VSceneHandler.cc,v 1.23 2001/09/10 10:52:01 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 19th July 1996 @@ -42,6 +42,7 @@ #include "G4VPhysicalVolume.hh" #include "G4Material.hh" #include "G4Polyline.hh" +#include "G4Scale.hh" #include "G4Text.hh" #include "G4Circle.hh" #include "G4Square.hh" @@ -70,6 +71,8 @@ G4VSceneHandler::G4VSceneHandler (G4VGraphicsSystem& system, G4int id, const G4S fSceneHandlerId (id), fViewCount (0), fpViewer (0), + fpScene (0), + fMarkForClearingTransientStore (false), fReadyForTransients (false), fpModel (0), fpObjectTransformation (&G4Transform3D::Identity), @@ -112,10 +115,14 @@ void G4VSceneHandler::PostAddThis () { } void G4VSceneHandler::ClearStore () { - fpViewer -> NeedKernelVisit (); + if (fpViewer) fpViewer -> NeedKernelVisit (); + // ?? Viewer is supposed to be smart enough to know when to visit + // kernel, but a problem in OpenGL Stored seems to require a forced + // kernel visit triggered by the above code. John Allison Aug 2001 } -void G4VSceneHandler::ClearTransientStore () {} +void G4VSceneHandler::ClearTransientStore () { +} void G4VSceneHandler::AddThis (const G4Box& box) { RequestPrimitives (box); @@ -183,7 +190,6 @@ void G4VSceneHandler::EstablishSpecials (G4PhysicalVolumeModel& pvModel) { } void G4VSceneHandler::BeginModeling () { - if (!GetModel ()) G4Exception ("G4VSceneHandler::BeginModeling: NO MODEL!!!"); } void G4VSceneHandler::BeginPrimitives @@ -194,6 +200,108 @@ void G4VSceneHandler::BeginPrimitives void G4VSceneHandler::EndPrimitives () {} +void G4VSceneHandler::AddPrimitive (const G4Scale& scale) { + + const G4double margin(0.01); + // Fractional margin - ensures scale is comfortably inside viewing + // volume. + const G4double oneMinusMargin (1. - margin); + + const G4VisExtent& sceneExtent = fpScene->GetExtent(); + + // Useful constants... + const G4double length(scale.GetLength()); + const G4double halfLength(length / 2.); + const G4double tickLength(length / 20.); + const G4double piBy2(M_PI / 2.); + + // Get size of scene... + const G4double xmin = sceneExtent.GetXmin(); + const G4double xmax = sceneExtent.GetXmax(); + const G4double ymin = sceneExtent.GetYmin(); + const G4double ymax = sceneExtent.GetYmax(); + const G4double zmin = sceneExtent.GetZmin(); + const G4double zmax = sceneExtent.GetZmax(); + + // Create (empty) polylines having the same vis attributes... + G4Polyline scaleLine, tick11, tick12, tick21, tick22; + G4VisAttributes visAtts(*scale.GetVisAttributes()); // Long enough life. + scaleLine.SetVisAttributes(&visAtts); + tick11.SetVisAttributes(&visAtts); + tick12.SetVisAttributes(&visAtts); + tick21.SetVisAttributes(&visAtts); + tick22.SetVisAttributes(&visAtts); + + // Add points to the polylines to represent an scale parallel to the + // x-axis centred on the origin... + G4Point3D r1(G4Point3D(-halfLength, 0., 0.)); + G4Point3D r2(G4Point3D( halfLength, 0., 0.)); + scaleLine.push_back(r1); + scaleLine.push_back(r2); + G4Point3D ticky(0., tickLength, 0.); + G4Point3D tickz(0., 0., tickLength); + tick11.push_back(r1 + ticky); + tick11.push_back(r1 - ticky); + tick12.push_back(r1 + tickz); + tick12.push_back(r1 - tickz); + tick21.push_back(r2 + ticky); + tick21.push_back(r2 - ticky); + tick22.push_back(r2 + tickz); + tick22.push_back(r2 - tickz); + G4Point3D textPosition(0., tickLength, 0.); + + // Transform appropriately... + + G4Transform3D rotation; + switch (scale.GetDirection()) { + case G4Scale::x: + break; + case G4Scale::y: + rotation = G4RotateZ3D(piBy2); + break; + case G4Scale::z: + rotation = G4RotateY3D(piBy2); + break; + } + + G4double sxmid(scale.GetXmid()); + G4double symid(scale.GetYmid()); + G4double szmid(scale.GetZmid()); + if (scale.GetAutoPlacing()) { + sxmid = xmin + oneMinusMargin * (xmax - xmin); + symid = ymin + margin * (ymax - ymin); + szmid = zmin + oneMinusMargin * (zmax - zmin); + switch (scale.GetDirection()) { + case G4Scale::x: + sxmid -= halfLength; + break; + case G4Scale::y: + symid += halfLength; + break; + case G4Scale::z: + szmid -= halfLength; + break; + } + } + + G4Translate3D translation(sxmid, symid, szmid); + + G4Transform3D transformation(translation * rotation); + + // Draw... + // We would like to call BeginPrimitives(transformation) here but + // calling BeginPrimitives from within an AddPrimitive is not + // allowed! So we have to do our own transformation... + AddPrimitive(scaleLine.transform(transformation)); + AddPrimitive(tick11.transform(transformation)); + AddPrimitive(tick12.transform(transformation)); + AddPrimitive(tick21.transform(transformation)); + AddPrimitive(tick22.transform(transformation)); + G4Text text(scale.GetAnnotation(),textPosition.transform(transformation)); + text.SetScreenSize(24.); + AddPrimitive(text); +} + void G4VSceneHandler::AddPrimitive (const G4Polymarker& polymarker) { switch (polymarker.GetMarkerType()) { default: @@ -252,6 +360,8 @@ void G4VSceneHandler::SetScene (G4Scene* pScene) { } void G4VSceneHandler::RequestPrimitives (const G4VSolid& solid) { + if (!GetModel ()) + G4Exception ("G4VSceneHandler::RequestPrimitives: NO MODEL!!!"); G4Polyhedron* pPolyhedron; G4NURBS* pNURBS; BeginPrimitives (*fpObjectTransformation); @@ -266,8 +376,15 @@ void G4VSceneHandler::RequestPrimitives (const G4VSolid& solid) { break; } else { - G4cerr << "NURBS not available for " << solid.GetName () << G4endl; - G4cerr << "Trying polyhedron." << G4endl; + G4VisManager::Verbosity verbosity = + G4VisManager::GetInstance()->GetVerbosity(); + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VSceneHandler::RequestPrimitives" + "\n NURBS not available for " + << solid.GetName () << G4endl; + G4cout << "Trying polyhedron." << G4endl; + } } // Dropping through to polyhedron... case G4ModelingParameters::polyhedron: @@ -283,18 +400,17 @@ void G4VSceneHandler::RequestPrimitives (const G4VSolid& solid) { delete pPolyhedron; } else { - G4cerr << "Polyhedron not available for " << solid.GetName () - <<".\nThis means it cannot be visualized on most systems." + G4VisManager::Verbosity verbosity = + G4VisManager::GetInstance()->GetVerbosity(); + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VSceneHandler::RequestPrimitives" + "\n Polyhedron not available for " << solid.GetName () << + ".\nThis means it cannot be visualized on most systems." "\nContact the Visualization Coordinator." << G4endl; + } } break; - case G4ModelingParameters::hierarchy: - G4cout << "Geometry hierarchy requested: tag " - << GetModel () -> GetCurrentTag () - << ", depth " - << fCurrentDepth - << G4endl; - break; } EndPrimitives (); } @@ -312,13 +428,18 @@ void G4VSceneHandler::ProcessScene (G4VViewer& view) { fpScene -> GetRunDurationModelList (); if (runDurationModelList.size ()) { - G4cout << "Traversing scene data..." << G4endl; + G4VisManager::Verbosity verbosity = + G4VisManager::GetInstance()->GetVerbosity(); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Traversing scene data..." << G4endl; + } + BeginModeling (); G4ModelingParameters* pMP = CreateModelingParameters (); for (size_t i = 0; i < runDurationModelList.size (); i++) { G4VModel* pModel = runDurationModelList[i]; const G4ModelingParameters* tempMP = pModel -> GetModelingParameters (); - // NOTE THAT tempMP COULD BE ZERO. + // NOTE THAT pModel->GetModelingParameters() COULD BE ZERO. // (Not sure the above is necessary; but in future we might // want to take notice of the modeling parameters with which // the model was created. For the time being we are ignoring @@ -330,16 +451,21 @@ void G4VSceneHandler::ProcessScene (G4VViewer& view) { // and convert using pMP = CreateModelingParameters () as above.) pModel -> SetModelingParameters (pMP); SetModel (pModel); // Store for use by derived class. - BeginModeling (); pModel -> DescribeYourselfTo (*this); - EndModeling (); pModel -> SetModelingParameters (tempMP); } delete pMP; SetModel (0); // Flags invalid model. + EndModeling (); } else { - G4cerr << "No run-duration models in scene data." << G4endl; + G4VisManager::Verbosity verbosity = + G4VisManager::GetInstance()->GetVerbosity(); + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VSceneHandler::ProcessScene:" + "\n No run-duration models in scene data." << G4endl; + } } fReadyForTransients = true; @@ -373,10 +499,6 @@ G4ModelingParameters* G4VSceneHandler::CreateModelingParameters () { vp.GetDrawingStyle () == G4ViewParameters::hlhsr ); - /////////////// TESTING TESTING - //modelRepStyle = G4ModelingParameters::hierarchy; - /////////////////////////////// - G4ModelingParameters* pModelingParams = new G4ModelingParameters (vp.GetDefaultVisAttributes (), modelRepStyle, @@ -490,13 +612,18 @@ G4double G4VSceneHandler::GetMarkerSize (const G4VMarker& marker, G4std::ostream& operator << (G4std::ostream& os, const G4VSceneHandler& s) { - os << "Scene " << s.fName << " has " - << s.fViewerList.size () << " viewers:"; + os << "Scene handler " << s.fName << " has " + << s.fViewerList.size () << " viewer(s):"; for (size_t i = 0; i < s.fViewerList.size (); i++) { os << "\n " << *(s.fViewerList [i]); } - os << "\n " << *s.fpScene; + if (s.fpScene) { + os << "\n " << *s.fpScene; + } + else { + os << "\n This scene handler currently has no scene."; + } return os; } diff --git a/source/visualization/management/src/G4VViewer.cc b/source/visualization/management/src/G4VViewer.cc index 0b76b42260..aa71ca8241 100644 --- a/source/visualization/management/src/G4VViewer.cc +++ b/source/visualization/management/src/G4VViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VViewer.cc,v 1.13.2.1 2001/06/28 19:16:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VViewer.cc,v 1.16 2001/08/14 18:34:47 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 27th March 1996 @@ -60,8 +60,8 @@ fNeedKernelVisit (true) fShortName.strip (); G4VisManager* pVisMan = G4VisManager::GetInstance(); - G4double xHint = pVisMan->GetCurrentViewParameters().GetWindowSizeHintX(); - G4double yHint = pVisMan->GetCurrentViewParameters().GetWindowSizeHintY(); + G4int xHint, yHint; + pVisMan->GetWindowSizeHint(xHint, yHint); fVP.SetWindowSizeHint(xHint,yHint); fDefaultVP.SetWindowSizeHint(xHint,yHint); } @@ -84,12 +84,26 @@ const G4VisAttributes* G4VViewer::GetApplicableVisAttributes } void G4VViewer::NeedKernelVisit () { - // Notify all views that a kernel visit is required. + + fNeedKernelVisit = true; + + // At one time I thought we'd better notify all viewers. But I guess + // each viewer can take care of itself, so the following code is + // redundant (but keep it commented out for now). (John Allison) + // Notify all viewers that a kernel visit is required. + // const G4ViewerList& viewerList = fSceneHandler.GetViewerList (); + // G4ViewerListConstIterator i; + // for (i = viewerList.begin(); i != viewerList.end(); i++) { + // (*i) -> SetNeedKernelVisit (); + // } + // ??...but, there's a problem in OpenGL Stored which seems to + // require *all* viewers to revisit the kernel, so... const G4ViewerList& viewerList = fSceneHandler.GetViewerList (); G4ViewerListConstIterator i; for (i = viewerList.begin(); i != viewerList.end(); i++) { (*i) -> SetNeedKernelVisit (); } + } void G4VViewer::FinishView () {} @@ -98,16 +112,17 @@ void G4VViewer::ShowView () {} void G4VViewer::ProcessView () { - // If view parameters have been modified, SetView () works out consequences. + // If view parameters have been modified, SetView works out consequences... if (fModified) { fModified = false; SetView (); } - // If the scene data has changed (fNeedVisit is set to true in - // G4VSceneHandler::SetSceneData), or if the concrete view has decided that it - // necessary to visit the kernel (this should be Done in the concrete - // object's DrawView ())... + // If ClearStore has been requested, e.g., if the scene has changed, + // of if the concrete viewer has decided that it necessary to visit + // the kernel, perhaps because the view parameters have changed + // drastically (this should be done in the concrete viewer's + // DrawView)... if (fNeedKernelVisit) { fSceneHandler.ProcessScene (*this); fNeedKernelVisit = false; diff --git a/source/visualization/management/src/G4VVisCommand.cc b/source/visualization/management/src/G4VVisCommand.cc index e7bf9e2791..96ca443d58 100644 --- a/source/visualization/management/src/G4VVisCommand.cc +++ b/source/visualization/management/src/G4VVisCommand.cc @@ -21,14 +21,15 @@ // ******************************************************************** // // -// $Id: G4VVisCommand.cc,v 1.8.2.1 2001/06/28 19:16:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VVisCommand.cc,v 1.10 2001/09/10 10:49:51 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // Base class for visualization commands - John Allison 9th August 1998 // It is really a messenger - we have one command per messenger. #include "G4VVisCommand.hh" +#include "G4UImanager.hh" #include "G4UnitsTable.hh" #include "g4std/strstream" @@ -134,3 +135,41 @@ void G4VVisCommand::GetNewDoublePairValue(const G4String& paramString, return; } + +void G4VVisCommand::UpdateVisManagerScene +(const G4String& sceneName) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + + G4SceneList& sceneList = fpVisManager -> SetSceneList (); + + G4int iScene, nScenes = sceneList.size (); + for (iScene = 0; iScene < nScenes; iScene++) { + if (sceneList [iScene] -> GetName () == sceneName) break; + } + + G4Scene* pScene = 0; // Zero unless scene has been found... + if (iScene < nScenes) { + pScene = sceneList [iScene]; + } + + if (!pScene) { + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: Scene \"" << sceneName << "\" not found." + << G4endl; + } + return; + } + + fpVisManager -> SetCurrentScene (pScene); + + // Scene has changed. Trigger a rebuild of graphical database... + G4VViewer* pViewer = fpVisManager -> GetCurrentViewer(); + G4VSceneHandler* sceneHandler = fpVisManager -> GetCurrentSceneHandler(); + if (sceneHandler && sceneHandler -> GetScene ()) { + if (pViewer && pViewer -> GetViewParameters().IsAutoRefresh()) { + G4UImanager::GetUIpointer () -> + ApplyCommand ("/vis/scene/notifyHandlers"); + } + } +} diff --git a/source/visualization/management/src/G4ViewParameters.cc b/source/visualization/management/src/G4ViewParameters.cc index 5cdf0ea4ad..5b3bca08ed 100644 --- a/source/visualization/management/src/G4ViewParameters.cc +++ b/source/visualization/management/src/G4ViewParameters.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ViewParameters.cc,v 1.12.2.1 2001/06/28 19:16:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ViewParameters.cc,v 1.14 2001/08/05 02:29:12 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 19th July 1996 @@ -137,7 +137,9 @@ void G4ViewParameters::AddCutawayPlane (const G4Plane3D& cutawayPlane) { fCutawayPlanes.push_back (cutawayPlane); } else { - G4cerr << "A maximum of 3 cutaway planes supported." << G4endl; + G4cout << + "ERROR: G4ViewParameters::AddCutawayPlane:" + "\n A maximum of 3 cutaway planes supported." << G4endl; } } diff --git a/source/visualization/management/src/G4ViewerList.cc b/source/visualization/management/src/G4ViewerList.cc index 646fc4d8b7..ea0cfdaf89 100644 --- a/source/visualization/management/src/G4ViewerList.cc +++ b/source/visualization/management/src/G4ViewerList.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ViewerList.cc,v 1.2.2.1 2001/06/28 19:16:14 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ViewerList.cc,v 1.3 2001/07/11 10:09:18 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4ViewerList.hh" diff --git a/source/visualization/management/src/G4VisCommandTemplates.cc b/source/visualization/management/src/G4VisCommandTemplates.cc deleted file mode 100644 index 4ca748c035..0000000000 --- a/source/visualization/management/src/G4VisCommandTemplates.cc +++ /dev/null @@ -1,68 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandTemplates.cc,v 1.4.4.1 2001/06/28 19:16:14 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Visualization Command Messenger Template private functions. -// John Allison 8th September 1997 - -#include "G4VisCommandTemplates.hh" - -#include "globals.hh" -#include "G4UImessenger.hh" -#include "G4UIcommand.hh" -#include "G4UIparameter.hh" -#include "G4ios.hh" - -// OLD STYLE!! -G4UIcommand* G4VisButtonCommandMessengerRegister (G4String commandName, - G4String guidance, - G4UImessenger* messenger) { - G4UIcommand* command; - G4UIparameter* param; - command = new G4UIcommand (commandName, messenger); - command -> SetGuidance (guidance); - param = new G4UIparameter ("Selector", 'c', false); - param -> SetDefaultValue ("?"); - command -> SetParameter (param); - return command; -} - -// OLD STYLE!! -G4int G4VisButtonCommandMessengerInterpret (G4String newValues) { - G4String& choice = newValues; - G4int iSelector = -1; - if (choice.compareTo ("0") == 0 || - choice.compareTo ("off", G4String::ignoreCase) == 0 || - choice.compareTo ("false", G4String::ignoreCase) == 0) iSelector = 0; - if (choice.compareTo ("1") == 0 || - choice.compareTo ("on", G4String::ignoreCase) == 0 || - choice.compareTo ("true", G4String::ignoreCase) == 0) iSelector = 1; - if (iSelector < 0 || choice.isNull ()) { - G4cout << "Choice not recognised." - "\n Choice is 0 (or off or false) or 1 (or on or true)." << G4endl;; - } - return iSelector; -} diff --git a/source/visualization/management/src/G4VisCommands.cc b/source/visualization/management/src/G4VisCommands.cc index 63b374fdac..de91a61fa2 100644 --- a/source/visualization/management/src/G4VisCommands.cc +++ b/source/visualization/management/src/G4VisCommands.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommands.cc,v 1.1.2.1 2001/06/28 19:16:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommands.cc,v 1.6 2001/09/10 10:54:30 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/ top level commands - John Allison 5th February 2001 @@ -30,7 +30,7 @@ #include "G4VisManager.hh" #include "G4UIcmdWithABool.hh" -#include "G4UIcmdWithAnInteger.hh" +#include "G4UIcmdWithAString.hh" #include "G4UIcmdWithoutParameter.hh" ////////////// /vis/enable /////////////////////////////////////// @@ -64,6 +64,7 @@ void G4VisCommandEnable::SetNewValue (G4UIcommand* command, if (enable) fpVisManager->Enable(); // Printing is in vis manager. else fpVisManager->Disable(); // Printing is in vis manager. } else fpVisManager->Disable(); // Printing is in vis manager. + // Note: Printing is in vis manager. } ////////////// /vis/verbose /////////////////////////////////////// @@ -71,11 +72,11 @@ void G4VisCommandEnable::SetNewValue (G4UIcommand* command, G4VisCommandVerbose::G4VisCommandVerbose () { G4bool omitable; - fpCommand = new G4UIcmdWithAnInteger("/vis/verbose", this); + fpCommand = new G4UIcmdWithAString("/vis/verbose", this); fpCommand -> SetGuidance("/vis/verbose []"); - fpCommand -> SetGuidance("0 = minimum, 10 = maximum verbosity."); + fpCommand -> SetGuidance(G4VisManager::VerbosityGuidanceString); fpCommand -> SetParameterName("verbosity", omitable=true); - fpCommand -> SetDefaultValue(0); + fpCommand -> SetDefaultValue("warnings"); } G4VisCommandVerbose::~G4VisCommandVerbose () { @@ -88,7 +89,10 @@ G4String G4VisCommandVerbose::GetCurrentValue (G4UIcommand* command) { void G4VisCommandVerbose::SetNewValue (G4UIcommand* command, G4String newValue) { - G4int verbosity (GetNewIntValue(newValue)); + G4VisManager::Verbosity verbosity = + fpVisManager->GetVerbosityValue(newValue); fpVisManager->SetVerboseLevel(verbosity); - G4cout << "Visualization verbosity changed to " << verbosity << G4endl; + // Always prints whatever the verbosity... + G4cout << "Visualization verbosity changed to " + << G4VisManager::VerbosityString(verbosity) << G4endl; } diff --git a/source/visualization/management/src/G4VisCommandsCompound.cc b/source/visualization/management/src/G4VisCommandsCompound.cc index dca18716fa..5d6c2a5b98 100644 --- a/source/visualization/management/src/G4VisCommandsCompound.cc +++ b/source/visualization/management/src/G4VisCommandsCompound.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsCompound.cc,v 1.12.2.1 2001/06/28 19:16:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsCompound.cc,v 1.20 2001/11/07 17:09:59 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // Compound /vis/ commands - John Allison 15th May 2000 @@ -66,9 +66,14 @@ void G4VisCommandDrawTree::SetNewValue G4UImanager* UImanager = G4UImanager::GetUIpointer(); G4int keepVerbose = UImanager->GetVerboseLevel(); - UImanager->SetVerboseLevel(2); + G4int newVerbose(0); + if (keepVerbose >= 2 || + fpVisManager->GetVerbosity() >= G4VisManager::confirmations) + newVerbose = 2; + UImanager->SetVerboseLevel(newVerbose); UImanager->ApplyCommand("/vis/open " + system); UImanager->ApplyCommand("/vis/drawVolume " + pvname); + UImanager->ApplyCommand("/vis/viewer/flush"); UImanager->SetVerboseLevel(keepVerbose); } @@ -115,10 +120,15 @@ G4VisCommandDrawView::~G4VisCommandDrawView() { void G4VisCommandDrawView::SetNewValue (G4UIcommand* command, G4String newValue) { + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4VViewer* currentViewer = fpVisManager->GetCurrentViewer(); if (!currentViewer) { - G4cout << "G4VisCommandsDrawView::SetNewValue: no current viewer." - << G4endl; + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: G4VisCommandsDrawView::SetNewValue: no current viewer." + << G4endl; + } return; } @@ -137,7 +147,11 @@ void G4VisCommandDrawView::SetNewValue G4UImanager* UImanager = G4UImanager::GetUIpointer(); G4int keepVerbose = UImanager->GetVerboseLevel(); - UImanager->SetVerboseLevel(2); + G4int newVerbose(0); + if (keepVerbose >= 2 || + fpVisManager->GetVerbosity() >= G4VisManager::confirmations) + newVerbose = 2; + UImanager->SetVerboseLevel(newVerbose); G4ViewParameters vp = currentViewer->GetViewParameters(); G4bool keepAutoRefresh = vp.IsAutoRefresh(); vp.SetAutoRefresh(false); @@ -177,14 +191,23 @@ G4VisCommandDrawVolume::~G4VisCommandDrawVolume() { void G4VisCommandDrawVolume::SetNewValue (G4UIcommand* command, G4String newValue) { + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); G4UImanager* UImanager = G4UImanager::GetUIpointer(); G4int keepVerbose = UImanager->GetVerboseLevel(); - UImanager->SetVerboseLevel(2); + G4int newVerbose(0); + if (keepVerbose >= 2 || verbosity >= G4VisManager::confirmations) + newVerbose = 2; + UImanager->SetVerboseLevel(newVerbose); UImanager->ApplyCommand("/vis/scene/create"); UImanager->ApplyCommand("/vis/scene/add/volume " + newValue); UImanager->ApplyCommand("/vis/sceneHandler/attach"); - UImanager->ApplyCommand("/vis/viewer/refresh"); UImanager->SetVerboseLevel(keepVerbose); + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: For systems which are not \"auto-refresh\" you will need to" + "\n issue \"/vis/viewer/refresh\" or \"/vis/viewer/flush\"." + << G4endl; + } } ////////////// /vis/open /////////////////////////////////////// @@ -233,7 +256,11 @@ void G4VisCommandOpen::SetNewValue (G4UIcommand* command, G4String newValue) { is >> systemName >> windowSizeHint; G4UImanager* UImanager = G4UImanager::GetUIpointer(); G4int keepVerbose = UImanager->GetVerboseLevel(); - UImanager->SetVerboseLevel(2); + G4int newVerbose(0); + if (keepVerbose >= 2 || + fpVisManager->GetVerbosity() >= G4VisManager::confirmations) + newVerbose = 2; + UImanager->SetVerboseLevel(newVerbose); UImanager->ApplyCommand("/vis/sceneHandler/create " + systemName); UImanager->ApplyCommand("/vis/viewer/create ! ! " + windowSizeHint); UImanager->SetVerboseLevel(keepVerbose); @@ -259,13 +286,22 @@ G4VisCommandSpecify::~G4VisCommandSpecify() { void G4VisCommandSpecify::SetNewValue (G4UIcommand* command, G4String newValue) { + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); G4UImanager* UImanager = G4UImanager::GetUIpointer(); G4int keepVerbose = UImanager->GetVerboseLevel(); - UImanager->SetVerboseLevel(2); + G4int newVerbose(0); + if (keepVerbose >= 2 || verbosity >= G4VisManager::confirmations) + newVerbose = 2; + UImanager->SetVerboseLevel(newVerbose); UImanager->ApplyCommand("/geometry/print " + newValue); UImanager->ApplyCommand("/vis/scene/create"); UImanager->ApplyCommand("/vis/scene/add/logicalVolume " + newValue); UImanager->ApplyCommand("/vis/sceneHandler/attach"); - UImanager->ApplyCommand("/vis/viewer/refresh"); UImanager->SetVerboseLevel(keepVerbose); + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: For systems which are not \"auto-refresh\" you will need to" + "\n issue \"/vis/viewer/refresh\" or \"/vis/viewer/flush\"." + << G4endl; + } } diff --git a/source/visualization/management/src/G4VisCommandsScene.cc b/source/visualization/management/src/G4VisCommandsScene.cc index c9068eea59..2c1dec20a4 100644 --- a/source/visualization/management/src/G4VisCommandsScene.cc +++ b/source/visualization/management/src/G4VisCommandsScene.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsScene.cc,v 1.17.2.1 2001/06/28 19:16:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsScene.cc,v 1.30 2001/11/12 18:22:11 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/scene commands - John Allison 9th August 1998 @@ -64,18 +64,6 @@ void G4VVisCommandScene::UpdateCandidateLists () { } } -void G4VVisCommandScene::UpdateVisManagerScene -(const G4String& sceneName) { - G4SceneList& sceneList = fpVisManager -> SetSceneList (); - G4int iScene, nScenes = sceneList.size (); - for (iScene = 0; iScene < nScenes; iScene++) { - if (sceneList [iScene] -> GetName () == sceneName) break; - } - G4Scene* pScene = 0; // Zero unless scene has been found... - if (iScene < nScenes) pScene = sceneList [iScene]; - fpVisManager -> SetCurrentScene (pScene); -} - ////////////// /vis/scene/create /////////////////////////////////////// G4VisCommandSceneCreate::G4VisCommandSceneCreate (): fId (0) { @@ -108,6 +96,9 @@ G4String G4VisCommandSceneCreate::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneCreate::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& newName = newValue; G4String nextName = NextName (); @@ -122,18 +113,23 @@ void G4VisCommandSceneCreate::SetNewValue (G4UIcommand* command, if (sceneList [iScene] -> GetName () == newName) break; } if (iScene < nScenes) { - G4cout << "Scene \"" << newName << "\" already exists." << G4endl; + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: Scene \"" << newName << "\" already exists." + << G4endl; + } } else { sceneList.push_back (new G4Scene (newName)); // Adds empty scene data object to list. - UpdateVisManagerScene (newName); - G4cout << "New empty scene \"" << newName << "\" created." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "New empty scene \"" << newName << "\" created." << G4endl; + } UpdateCandidateLists (); } + UpdateVisManagerScene (newName); } ////////////// /vis/scene/edit /////////////////////////////////////// @@ -160,6 +156,9 @@ G4String G4VisCommandSceneEdit::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneEdit::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String sceneName; G4std::istrstream is ((char*)newValue.data()); is >> sceneName; @@ -172,26 +171,95 @@ void G4VisCommandSceneEdit::SetNewValue (G4UIcommand* command, if (pScene -> GetName () == sceneName) break; } if (iScene >= nScenes) { - G4cout << "G4VisCommandSceneEdit::SetNewValue: Scene \"" - << sceneName << "\" not found." - "\n /vis/scene/list to see scenes." - << G4endl; + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: G4VisCommandSceneEdit::SetNewValue: Scene \"" + << sceneName << "\" not found." + "\n /vis/scene/list to see scenes." + << G4endl; + } return; } else { - G4cout << "Scene \"" << sceneName << "\" contains:" << G4endl; - G4String uiCommand ("/vis/scene/list "); - uiCommand += sceneName; - uiCommand += " 1"; - G4UImanager::GetUIpointer () -> ApplyCommand (uiCommand); - G4cout << - "(YOU CAN DO NOTHING YET - /vis/scene/edit FACILITY IN PREPARATION." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Scene \"" << sceneName << "\" contains:" << G4endl; + G4String uiCommand ("/vis/scene/list "); + uiCommand += sceneName; + uiCommand += " confirmations"; + G4UImanager::GetUIpointer () -> ApplyCommand (uiCommand); + G4cout << + "BUT...YOU CAN DO NOTHING YET - /vis/scene/edit FACILITY IN PREPARATION." + << G4endl; + } } UpdateVisManagerScene (sceneName); } +////////////// /vis/scene/endOfEventAction //////////////////////////// + +G4VisCommandSceneEndOfEventAction::G4VisCommandSceneEndOfEventAction () { + G4bool omitable; + fpCommand = new G4UIcmdWithAString ("/vis/scene/endOfEventAction", this); + fpCommand -> SetGuidance + ("/vis/scene/endOfEventAction [accumulate|refresh]"); + fpCommand -> SetGuidance + ("Requests viewer to refresh hits, tracks, etc., at end of event." + "\n Or they are accumulated. Detector remains or is redrawn."); + fpCommand -> SetParameterName ("action", + omitable = true); + fpCommand -> SetCandidates ("accumulate refresh"); + fpCommand -> SetDefaultValue ("refresh"); +} + +G4VisCommandSceneEndOfEventAction::~G4VisCommandSceneEndOfEventAction () { + delete fpCommand; +} + +G4String G4VisCommandSceneEndOfEventAction::GetCurrentValue +(G4UIcommand* command) { + return ""; +} + +void G4VisCommandSceneEndOfEventAction::SetNewValue (G4UIcommand* command, + G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + + G4String action; + G4std::istrstream is ((char*)newValue.data()); + is >> action; + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } + return; + } + + if (action == "accumulate") { + pScene->SetRefreshAtEndOfEvent(false); + } + else if (action == "refresh") { + pScene->SetRefreshAtEndOfEvent(true); + } + else { + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: unrecognised parameter \"" << action << "\"." + << G4endl; + } + return; + } + + if (verbosity >= G4VisManager::confirmations) { + G4cout << "End of event action set to \""; + if (pScene->GetRefreshAtEndOfEvent()) G4cout << "refresh"; + else G4cout << "accumulate"; + G4cout << "\"" << G4endl; + } +} + ////////////// /vis/scene/list /////////////////////////////////////// G4VisCommandSceneList::G4VisCommandSceneList () { @@ -201,14 +269,14 @@ G4VisCommandSceneList::G4VisCommandSceneList () { fpCommand -> SetGuidance ("Lists scene(s)."); fpCommand -> SetGuidance (" default is \"all\""); fpCommand -> SetGuidance - (" is 0/1/2 for short/medium/long listing."); + ("See /vis/verbose for definition of verbosity."); G4UIparameter* parameter; parameter = new G4UIparameter ("scene-name", 's', omitable = true); parameter -> SetCurrentAsDefault (false); parameter -> SetDefaultValue ("all"); fpCommand -> SetParameter (parameter); - parameter = new G4UIparameter ("verbosity", 'i', + parameter = new G4UIparameter ("verbosity", 's', omitable = true); parameter -> SetCurrentAsDefault (false); parameter -> SetDefaultValue (0); @@ -226,10 +294,11 @@ G4String G4VisCommandSceneList::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneList::SetNewValue (G4UIcommand* command, G4String newValue) { - G4String name; - G4int verbosity; + G4String name, verbosityString; G4std::istrstream is ((char*)newValue.data()); - is >> name >> verbosity; + is >> name >> verbosityString; + G4VisManager::Verbosity verbosity = + fpVisManager->GetVerbosityValue(verbosityString); G4SceneList& sceneList = fpVisManager -> SetSceneList (); G4int iScene, nScenes = sceneList.size (); @@ -242,7 +311,7 @@ void G4VisCommandSceneList::SetNewValue (G4UIcommand* command, } found = true; G4cout << "Scene name: \"" << iName << "\""; - if (verbosity == 1) { + if (verbosity >= G4VisManager::confirmations) { G4int i; G4cout << "\n Run-duration models:"; G4int nRunModels = pScene -> GetRunDurationModelList ().size (); @@ -263,7 +332,7 @@ void G4VisCommandSceneList::SetNewValue (G4UIcommand* command, G4cout << "\n " << pModel -> GetGlobalDescription (); } } - if (verbosity >= 2) { + if (verbosity >= G4VisManager::parameters) { G4cout << "\n " << *sceneList [iScene]; } G4cout << G4endl; @@ -280,17 +349,31 @@ void G4VisCommandSceneList::SetNewValue (G4UIcommand* command, ////////////// /vis/scene/notifyHandlers ///////////////////////// G4VisCommandSceneNotifyHandlers::G4VisCommandSceneNotifyHandlers () { - G4bool omitable, currentAsDefault; - fpCommand = new G4UIcmdWithAString ("/vis/scene/notifyHandlers", this); - fpCommand -> SetGuidance ("/vis/scene/notifyHandlers []"); + G4bool omitable; + fpCommand = new G4UIcommand ("/vis/scene/notifyHandlers", this); + fpCommand -> SetGuidance + ("/vis/scene/notifyHandlers [] [r[efresh]|f[lush]]"); fpCommand -> SetGuidance ("Notifies scene handlers of possible changes of scene."); fpCommand -> SetGuidance (" default is current scene name."); + fpCommand -> SetGuidance + ("Clears and refreshes all viewers of current scene." + "\n The default action \"refresh\" does not issue \"update\" (see" + "\n /vis/viewer/update)." + "\nIf \"flush\" is specified, it issues an \"update\" as well as" + "\n \"refresh\". Useful for refreshing and initiating post-processing" + "\n for graphics systems which need post-processing."); fpCommand -> SetGuidance ("This command does not change current scene, scene handler or viewer."); - fpCommand -> SetParameterName ("scene-name", - omitable = true, - currentAsDefault = true); + G4UIparameter* parameter; + parameter = new G4UIparameter ("scene-name", 's', + omitable = true); + parameter -> SetCurrentAsDefault(true); + fpCommand -> SetParameter (parameter); + parameter = new G4UIparameter ("refresh-flush", 's', + omitable = true); + parameter -> SetDefaultValue("refresh"); + fpCommand -> SetParameter (parameter); sceneNameCommands.push_back (fpCommand); } @@ -305,7 +388,15 @@ G4String G4VisCommandSceneNotifyHandlers::GetCurrentValue void G4VisCommandSceneNotifyHandlers::SetNewValue (G4UIcommand* command, G4String newValue) { - G4String& sceneName = newValue; + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + + G4String sceneName, refresh_flush; + G4std::istrstream is ((char*)newValue.data()); + is >> sceneName >> refresh_flush; + G4bool flush(false); + if (refresh_flush(0) == 'f') flush = true; + const G4SceneList& sceneList = fpVisManager -> GetSceneList (); G4SceneHandlerList& sceneHandlerList = fpVisManager -> SetAvailableSceneHandlers (); @@ -315,15 +406,14 @@ void G4VisCommandSceneNotifyHandlers::SetNewValue (G4UIcommand* command, G4int iScene; for (iScene = 0; iScene < nScenes; iScene++) { G4Scene* scene = sceneList [iScene]; - if (sceneName == scene -> GetName ()) { - scene -> AddWorldIfEmpty (); - break; - } + if (sceneName == scene -> GetName ()) break; } if (iScene >= nScenes ) { - G4cout << "Scene \"" << sceneName << "\" not found." - "\n /vis/scene/list to see scenes." - << G4endl; + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: Scene \"" << sceneName << "\" not found." + "\n /vis/scene/list to see scenes." + << G4endl; + } return; } @@ -337,33 +427,47 @@ void G4VisCommandSceneNotifyHandlers::SetNewValue (G4UIcommand* command, if (aScene) { const G4String& aSceneName = aScene -> GetName (); if (sceneName == aSceneName) { + // Clear store and force a rebuild of graphical database... aSceneHandler -> ClearStore (); - aSceneHandler -> ClearTransientStore (); G4ViewerList& viewerList = aSceneHandler -> SetViewerList (); const G4int nViewers = viewerList.size (); for (G4int iV = 0; iV < nViewers; iV++) { G4VViewer* aViewer = viewerList [iV]; - aViewer -> ClearView (); - aViewer -> SetView (); + aSceneHandler -> SetCurrentViewer (aViewer); // Temporarily. + aViewer -> SetView (); // Temporarily switch contexts. + //??aViewer -> ClearView (); aViewer -> DrawView (); - // Triggers rebuild of graphical database by notifying the scene - // handler. The viewer is supposed to be smart enough to know - // when not to do this. E.g., the second viewer of a scene - // handler does not do it. - G4cout << "Viewer \"" << aViewer -> GetName () - << "\" of scene handler \"" << aSceneHandler -> GetName () - << "\"\n prepared at request of scene \"" << sceneName - << "\"." << G4endl; + if (flush) aViewer -> ShowView (); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Viewer \"" << aViewer -> GetName () + << "\" of scene handler \"" << aSceneHandler -> GetName () + << "\"\n "; + if (flush) G4cout << "flushed"; + else G4cout << "refreshed"; + G4cout << " at request of scene \"" << sceneName + << "\"." << G4endl; + } } } } else { - G4cout << "G4VisCommandSceneNotifyHandlers: scene handler \"" - << aSceneHandler->GetName() - << "\" has a null scene." + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: G4VisCommandSceneNotifyHandlers: scene handler \"" + << aSceneHandler->GetName() + << "\" has a null scene." << G4endl; + } } } + // Reclaim original context... + G4VSceneHandler* pCurrentSceneHandler = + fpVisManager -> GetCurrentSceneHandler(); + G4VViewer* pCurrentViewer = fpVisManager -> GetCurrentViewer(); + if (pCurrentSceneHandler) { + pCurrentSceneHandler -> SetCurrentViewer (pCurrentViewer); + if (pCurrentViewer && pCurrentSceneHandler->GetScene()) + pCurrentViewer -> SetView (); + } } ////////////// /vis/scene/remove /////////////////////////////////////// @@ -391,6 +495,9 @@ G4String G4VisCommandSceneRemove::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneRemove::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& removeName = newValue; const G4String& currentSceneName = fpVisManager -> GetCurrentScene () -> GetName (); @@ -402,28 +509,39 @@ void G4VisCommandSceneRemove::SetNewValue (G4UIcommand* command, if (iScene != sceneList.end()) { delete *iScene; sceneList.erase (iScene); - G4cout << "Scene \"" << removeName << "\" removed." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Scene \"" << removeName << "\" removed." << G4endl; + } UpdateCandidateLists (); if (sceneList.empty ()) { + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: No scenes left. Please create a new one." + << G4endl; + } UpdateVisManagerScene (); - G4cout << "No scenes left. Please create a new one." << G4endl; } else { if (currentSceneName == removeName) { + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: Current scene is now \"" + << fpVisManager -> GetCurrentScene () -> GetName () + << "\"" << G4endl; + } UpdateVisManagerScene (sceneList [0] -> GetName ()); - G4cout << "Current scene is now \"" - << fpVisManager -> GetCurrentScene () -> GetName () - << "\"" << G4endl; } else { - G4cout << "Current scene unchanged." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Current scene unchanged." << G4endl; + } } } } else { - G4cout << "Scene \"" << removeName - << "\" not found - \"/vis/scene/list\" to see possibilities." - << G4endl; + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: Scene \"" << removeName + << "\" not found - \"/vis/scene/list\" to see possibilities." + << G4endl; + } } } @@ -452,19 +570,28 @@ G4String G4VisCommandSceneSelect::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneSelect::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& selectName = newValue; G4SceneList& sceneList = fpVisManager -> SetSceneList (); G4int iScene, nScenes = sceneList.size (); for (iScene = 0; iScene < nScenes; iScene++) { if (sceneList [iScene] -> GetName () == selectName) break; } - G4cout << "Scene \"" << selectName; - if (iScene < nScenes) { - UpdateVisManagerScene (selectName); - G4cout << "\" selected." << G4endl; + if (iScene >= nScenes) { + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: Scene \"" << selectName + << "\" not found - \"/vis/scene/list\" to see possibilities." + << G4endl; + } + return; } - else { - G4cout << "\" not found - \"/vis/scene/list\" to see possibilities." - << G4endl; + + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Scene \"" << selectName + << "\" selected." << G4endl; } + UpdateVisManagerScene (selectName); + } diff --git a/source/visualization/management/src/G4VisCommandsSceneAdd.cc b/source/visualization/management/src/G4VisCommandsSceneAdd.cc index 40877f5950..39661b1688 100644 --- a/source/visualization/management/src/G4VisCommandsSceneAdd.cc +++ b/source/visualization/management/src/G4VisCommandsSceneAdd.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsSceneAdd.cc,v 1.18.2.1 2001/06/28 19:16:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsSceneAdd.cc,v 1.29 2001/11/28 16:13:41 gcosmo Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/scene commands - John Allison 9th August 1998 @@ -36,6 +36,7 @@ #include "G4ModelingParameters.hh" #include "G4HitsModel.hh" #include "G4TrajectoriesModel.hh" +#include "G4ScaleModel.hh" #include "G4TextModel.hh" #include "G4AxesModel.hh" #include "G4PhysicalVolumeSearchScene.hh" @@ -50,12 +51,25 @@ #include "G4ios.hh" #include "g4std/strstream" +// Local function with some frequently used error printing... +static void G4VisCommandsSceneAddUnsuccessful +(G4VisManager::Verbosity verbosity) { + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: For some reason, possibly mentioned above, it has not been" + "\n possible to add to the scene." + << G4endl; + } +} ////////////// /vis/scene/add/axes ////////////////////////////////// G4VisCommandSceneAddAxes::G4VisCommandSceneAddAxes () { G4bool omitable; fpCommand = new G4UIcommand ("/vis/scene/add/axes", this); + fpCommand -> SetGuidance + ("/vis/scene/add/axes [] [] [] [] []"); + fpCommand -> SetGuidance ("Default: 0 0 0 1 m"); fpCommand -> SetGuidance ("Draws axes at (x0, y0, z0) of given length."); G4UIparameter* parameter; @@ -69,10 +83,10 @@ G4VisCommandSceneAddAxes::G4VisCommandSceneAddAxes () { parameter->SetDefaultValue (0.); fpCommand->SetParameter (parameter); parameter = new G4UIparameter ("length", 'd', omitable = true); - parameter->SetDefaultValue (1.*m); + parameter->SetDefaultValue (1.); fpCommand->SetParameter (parameter); parameter = new G4UIparameter ("unit", 's', omitable = true); - parameter->SetDefaultValue ("mm"); + parameter->SetDefaultValue ("m"); parameter->SetGuidance ("mm, cm, or m."); fpCommand->SetParameter (parameter); } @@ -87,10 +101,15 @@ G4String G4VisCommandSceneAddAxes::GetCurrentValue (G4UIcommand*) { void G4VisCommandSceneAddAxes::SetNewValue (G4UIcommand* command, G4String newValue) { - G4SceneList& sceneList = fpVisManager -> SetSceneList (); - if (sceneList.empty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } return; } @@ -104,14 +123,16 @@ void G4VisCommandSceneAddAxes::SetNewValue (G4UIcommand* command, x0 *= unit; y0 *= unit; z0 *= unit; length *= unit; G4VModel* model = new G4AxesModel(x0, y0, z0, length); - G4Scene* pScene = fpVisManager -> GetCurrentScene (); const G4String& currentSceneName = pScene -> GetName (); - G4bool succesful = pScene -> AddRunDurationModel (model); - UpdateVisManagerScene (currentSceneName); - if (succesful) { - G4cout << "Axes have been added to scene \"" << currentSceneName << "\"" - << G4endl; + G4bool successful = pScene -> AddRunDurationModel (model, warn); + if (successful) { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Axes have been added to scene \"" << currentSceneName << "\"." + << G4endl; + } } + else G4VisCommandsSceneAddUnsuccessful(verbosity); + UpdateVisManagerScene (currentSceneName); } @@ -140,62 +161,83 @@ G4String G4VisCommandSceneAddGhosts::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneAddGhosts::SetNewValue (G4UIcommand* command, G4String newValue) { - G4Scene* pCurrentScene = fpVisManager -> GetCurrentScene (); - const G4String& currentSceneName = pCurrentScene -> GetName (); - G4SceneList& sceneList = fpVisManager -> SetSceneList (); - if (sceneList.empty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } return; } + const G4String& currentSceneName = pScene -> GetName (); G4VGlobalFastSimulationManager* theGlobalFastSimulationManager; if(!(theGlobalFastSimulationManager = G4VGlobalFastSimulationManager::GetConcreteInstance ())){ - G4cout<< "WARNING: no G4GlobalFastSimulationManager" << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: no G4GlobalFastSimulationManager" << G4endl; + } return; } G4ParticleTable* theParticleTable=G4ParticleTable::GetParticleTable(); if(newValue=="all") { - G4VFlavoredParallelWorld* CurrentFlavoredWorld; - G4bool successful; + G4VFlavoredParallelWorld* CurrentFlavoredWorld = 0; + G4bool successful(false); for (G4int iParticle=0; iParticleentries(); iParticle++) CurrentFlavoredWorld = theGlobalFastSimulationManager-> GetFlavoredWorldForThis(theParticleTable->GetParticle(iParticle)); - if(CurrentFlavoredWorld) - successful = pCurrentScene -> AddRunDurationModel - (new G4FlavoredParallelWorldModel (CurrentFlavoredWorld)); - UpdateVisManagerScene (); + if(CurrentFlavoredWorld) + successful = pScene -> AddRunDurationModel + (new G4FlavoredParallelWorldModel (CurrentFlavoredWorld), warn); if (successful) { - G4cout << "Ghosts added to the Scene, refresh the view to see it." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Ghosts have been added to scene \"" + << currentSceneName << "\"." + << G4endl; + } + } + else { + G4VisCommandsSceneAddUnsuccessful(verbosity); + return; } - return; } G4ParticleDefinition* currentParticle = theParticleTable->FindParticle(newValue); if (currentParticle == NULL) { - G4cout << "\"" << newValue << "\": not found this particle name!" << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: \"" << newValue + << "\": not found this particle name!" << G4endl; + } return; } G4VFlavoredParallelWorld* worldForThis = theGlobalFastSimulationManager->GetFlavoredWorldForThis(currentParticle); if(worldForThis) { - G4bool successful = pCurrentScene -> AddRunDurationModel - (new G4FlavoredParallelWorldModel (worldForThis)); - UpdateVisManagerScene (currentSceneName); + G4bool successful = pScene -> AddRunDurationModel + (new G4FlavoredParallelWorldModel (worldForThis), warn); if (successful) { - G4cout << "Ghosts added to the Scene, refresh the view to see it." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Ghosts have been added to scene \"" + << currentSceneName << "\"." + << G4endl; + } } } - else G4cout << "There are no ghosts for \""<= G4VisManager::errors) { + G4cout << "ERROR: There are no ghosts for \""< SetSceneList (); - if (list.empty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } return; } G4HitsModel* model = new G4HitsModel; - G4Scene* pCurrentScene = fpVisManager -> GetCurrentScene (); - const G4String& currentSceneName = pCurrentScene -> GetName (); - pCurrentScene -> AddEndOfEventModel (model); - G4cout << "Hits will be drawn in scene \"" - << currentSceneName << "\"." - << G4endl; + const G4String& currentSceneName = pScene -> GetName (); + G4bool successful = pScene -> AddEndOfEventModel (model, warn); + if (successful) { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Hits will be drawn in scene \"" + << currentSceneName << "\"." + << G4endl; + } + } + else G4VisCommandsSceneAddUnsuccessful(verbosity); } ////////////// /vis/scene/add/logicalVolume ////////////////////////////////// @@ -269,10 +320,15 @@ G4String G4VisCommandSceneAddLogicalVolume::GetCurrentValue (G4UIcommand*) { void G4VisCommandSceneAddLogicalVolume::SetNewValue (G4UIcommand* command, G4String newValue) { - G4SceneList& sceneList = fpVisManager -> SetSceneList (); - if (sceneList.empty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } return; } @@ -285,29 +341,272 @@ void G4VisCommandSceneAddLogicalVolume::SetNewValue (G4UIcommand* command, G4LogicalVolumeStore *pLVStore = G4LogicalVolumeStore::GetInstance(); int nLV = pLVStore -> size (); int iLV; - G4LogicalVolume* pLV; + G4LogicalVolume* pLV = 0; for (iLV = 0; iLV < nLV; iLV++ ) { pLV = (*pLVStore) [iLV]; if (pLV -> GetName () == name) break; } if (iLV == nLV) { - G4cout << "Logical volume " << name - << " not found in logical volume Store." << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Logical volume " << name + << " not found in logical volume Store." << G4endl; + } return; } G4VModel* model = new G4LogicalVolumeModel (pLV, requestedDepthOfDescent); - G4Scene* pScene = fpVisManager -> GetCurrentScene (); const G4String& currentSceneName = pScene -> GetName (); - G4bool succesful = pScene -> AddRunDurationModel (model); - UpdateVisManagerScene (currentSceneName); - if (succesful) { - G4cout << "Logical volume \"" << pLV -> GetName () - << " with requested depth of descent " - << requestedDepthOfDescent - << ",\n has been added to scene \"" << currentSceneName << "\"" - << G4endl; + G4bool successful = pScene -> AddRunDurationModel (model, warn); + if (successful) { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Logical volume \"" << pLV -> GetName () + << " with requested depth of descent " + << requestedDepthOfDescent + << ",\n has been added to scene \"" << currentSceneName << "\"." + << G4endl; + } } + else G4VisCommandsSceneAddUnsuccessful(verbosity); + UpdateVisManagerScene (currentSceneName); +} + + +////////////// /vis/scene/add/scale ////////////////////////////////// + +G4VisCommandSceneAddScale::G4VisCommandSceneAddScale () { + G4bool omitable; + fpCommand = new G4UIcommand ("/vis/scene/add/scale", this); + fpCommand -> SetGuidance + ("/vis/scene/add/scale [ ] [x|y|z] [] [] [] [auto|manual] [ ]"); + fpCommand -> SetGuidance + ("Defaults: 1 m x 1 0 0 auto 0 0 0 m"); + fpCommand -> SetGuidance + ("Adds an annotated scale line to the current scene."); + fpCommand -> SetGuidance (G4Scale::GuidanceString); + G4UIparameter* parameter; + parameter = new G4UIparameter ("length", 'd', omitable = true); + parameter->SetDefaultValue (1.); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("unit", 's', omitable = true); + parameter->SetDefaultValue ("m"); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("direction", 's', omitable = true); + parameter->SetDefaultValue ("x"); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("red", 'd', omitable = true); + parameter->SetDefaultValue (1.); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("green", 'd', omitable = true); + parameter->SetDefaultValue (0.); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("blue", 'd', omitable = true); + parameter->SetDefaultValue (0.); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("auto|manual", 's', omitable = true); + parameter->SetDefaultValue ("auto"); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("xmid", 'd', omitable = true); + parameter->SetDefaultValue (0.); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("ymid", 'd', omitable = true); + parameter->SetDefaultValue (0.); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("zmid", 'd', omitable = true); + parameter->SetDefaultValue (0.); + fpCommand->SetParameter (parameter); + parameter = new G4UIparameter ("unit", 's', omitable = true); + parameter->SetDefaultValue ("m"); + fpCommand->SetParameter (parameter); +} + +G4VisCommandSceneAddScale::~G4VisCommandSceneAddScale () { + delete fpCommand; +} + +G4String G4VisCommandSceneAddScale::GetCurrentValue (G4UIcommand*) { + return ""; +} + +void G4VisCommandSceneAddScale::SetNewValue (G4UIcommand* command, + G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } + return; + } + + G4double userLength, red, green, blue, xmid, ymid, zmid; + G4String userLengthUnit, direction, auto_manual, positionUnit; + G4std::istrstream is (newValue); + is >> userLength >> userLengthUnit >> direction + >> red >> green >> blue + >> auto_manual + >> xmid >> ymid >> zmid >> positionUnit; + + G4double length = userLength * ValueOf(userLengthUnit); + G4double unit = ValueOf(positionUnit); + xmid *= unit; ymid *= unit; zmid *= unit; + + char tempcharstring [50]; + G4std::ostrstream ost (tempcharstring, 50); + ost << userLength << ' ' << userLengthUnit << G4std::ends; + G4String annotation(tempcharstring); + + G4Scale::Direction scaleDirection (G4Scale::x); + if (direction(0) == 'y') scaleDirection = G4Scale::y; + if (direction(0) == 'z') scaleDirection = G4Scale::z; + + G4bool autoPlacing (false); if (auto_manual(0) == 'a') autoPlacing = true; + // Parameters read and interpreted. + + // Useful constants, etc... + const G4double halfLength(length / 2.); + const G4double comfort(0.15); + const G4double onePlusComfort(1. + comfort); + const G4double freeLengthFraction (1. + 2. * comfort); + + const G4VisExtent& sceneExtent = pScene->GetExtent(); // Existing extent. + const G4double xmin = sceneExtent.GetXmin(); + const G4double xmax = sceneExtent.GetXmax(); + const G4double ymin = sceneExtent.GetYmin(); + const G4double ymax = sceneExtent.GetYmax(); + const G4double zmin = sceneExtent.GetZmin(); + const G4double zmax = sceneExtent.GetZmax(); + + // Test existing extent and issue warnings... + G4bool worried(false); + if (sceneExtent.GetExtentRadius() == 0) { + worried = true; + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: Existing scene does not yet have any extent." + "\n Maybe you have not yet added any geometrical object." + << G4endl; + } + } + // Test existing scene for room... + G4bool room (true); + switch (scaleDirection) { + case G4Scale::x: + if (freeLengthFraction * (xmax - xmin) < length) room = false; break; + case G4Scale::y: + if (freeLengthFraction * (ymax - ymin) < length) room = false; break; + case G4Scale::z: + if (freeLengthFraction * (zmax - zmin) < length) room = false; break; + } + if (!room) { + worried = true; + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: Not enough room in existing scene. Maybe scale is too long." + << G4endl; + } + } + if (worried) { + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: The scale you have asked for is bigger than the existing" + "\n scene. Maybe you have added it too soon. It is recommended that" + "\n you add the scale last so that it can be correctly auto-positioned" + "\n so as not to be obscured by any existing object and so that the" + "\n view parameters can be correctly recalculated." + << G4endl; + } + } + + // Let's go ahead a construct a scale and a scale model... + G4Scale scale(length, annotation, scaleDirection, + autoPlacing, xmid, ymid, zmid); + G4VisAttributes* pVisAttr = new G4VisAttributes(G4Colour(red, green, blue)); + // Created of the heap because it needs a long lifetime. This is a + // mess. The model determines the life but the vis atttributes are + // associated with the scale. There's no way of knowing when to + // delete the vis atttributes!!! + scale.SetVisAttributes(pVisAttr); + G4VModel* model = new G4ScaleModel(scale); + + // Now figure out the extent... + // + // From the G4Scale.hh: + // + // This creates a representation of annotated line in the specified + // direction with tick marks at the end. If autoPlacing is true it + // is required to be centred at the front, right, bottom corner of + // the world space, comfortably outside the existing bounding + // box/sphere so that existing objects do not obscure it. Otherwise + // it is required to be drawn with mid-point at (xmid, ymid, zmid). + // + // The auto placing algorithm might be: + // x = xmin + (1 + comfort) * (xmax - xmin) + // y = ymin - comfort * (ymax - ymin) + // z = zmin + (1 + comfort) * (zmax - zmin) + // if direction == x then (x - length,y,z) to (x,y,z) + // if direction == y then (x,y,z) to (x,y + length,z) + // if direction == z then (x,y,z - length) to (x,y,z) + // + // End of clip from G4Scale.hh: + // + // Implement this in two parts. Here, use the scale's extent to + // "expand" the scene's extent. Then rendering - in + // G4VSceneHandler::AddPrimitive(const G4Scale&) - simply has to + // ensure it's within the new extent. + // + G4double sxmid(xmid), symid(ymid), szmid(zmid); + if (autoPlacing) { + sxmid = xmin + onePlusComfort * (xmax - xmin); + symid = ymin - comfort * (ymax - ymin); + szmid = zmin + onePlusComfort * (zmax - zmin); + switch (scaleDirection) { + case G4Scale::x: + sxmid -= halfLength; + break; + case G4Scale::y: + symid += halfLength; + break; + case G4Scale::z: + szmid -= halfLength; + break; + } + } + G4double sxmin(sxmid), sxmax(sxmid); + G4double symin(symid), symax(symid); + G4double szmin(szmid), szmax(szmid); + switch (scaleDirection) { + case G4Scale::x: + sxmin = sxmid - halfLength; + sxmax = sxmid + halfLength; + break; + case G4Scale::y: + symin = symid - halfLength; + symax = symid + halfLength; + break; + case G4Scale::z: + szmin = szmid - halfLength; + szmax = szmid + halfLength; + break; + } + G4VisExtent scaleExtent(sxmin, sxmax, symin, symax, szmin, szmax); + model->SetExtent(scaleExtent); + // This extent gets "added" to existing scene extent in + // AddRunDurationModel below. + + const G4String& currentSceneName = pScene -> GetName (); + G4bool successful = pScene -> AddRunDurationModel (model, warn); + if (successful) { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Scale of " << annotation + << " has been added to scene \"" << currentSceneName << "\"." + << G4endl; + } + } + else G4VisCommandsSceneAddUnsuccessful(verbosity); + UpdateVisManagerScene (currentSceneName); } @@ -358,10 +657,15 @@ G4String G4VisCommandSceneAddText::GetCurrentValue (G4UIcommand*) { void G4VisCommandSceneAddText::SetNewValue (G4UIcommand* command, G4String newValue) { - G4SceneList& sceneList = fpVisManager -> SetSceneList (); - if (sceneList.empty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } return; } @@ -378,15 +682,17 @@ void G4VisCommandSceneAddText::SetNewValue (G4UIcommand* command, g4text.SetScreenSize(font_size); g4text.SetOffset(x_offset,y_offset); G4VModel* model = new G4TextModel(g4text); - G4Scene* pScene = fpVisManager -> GetCurrentScene (); const G4String& currentSceneName = pScene -> GetName (); - G4bool succesful = pScene -> AddRunDurationModel (model); - UpdateVisManagerScene (currentSceneName); - if (succesful) { - G4cout << "Text \"" << text - << "\" has been added to scene \"" << currentSceneName << "\"" - << G4endl; + G4bool successful = pScene -> AddRunDurationModel (model, warn); + if (successful) { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Text \"" << text + << "\" has been added to scene \"" << currentSceneName << "\"." + << G4endl; + } } + else G4VisCommandsSceneAddUnsuccessful(verbosity); + UpdateVisManagerScene (currentSceneName); } @@ -412,20 +718,29 @@ G4String G4VisCommandSceneAddTrajectories::GetCurrentValue (G4UIcommand* command void G4VisCommandSceneAddTrajectories::SetNewValue (G4UIcommand* command, G4String newValue) { - G4SceneList& list = fpVisManager -> SetSceneList (); - if (list.empty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } return; } G4TrajectoriesModel* model = new G4TrajectoriesModel; - G4Scene* pCurrentScene = fpVisManager -> GetCurrentScene (); - const G4String& currentSceneName = pCurrentScene -> GetName (); - pCurrentScene -> AddEndOfEventModel (model); - G4cout << "Trajectories will be drawn in scene \"" - << currentSceneName << "\"." - << G4endl; + const G4String& currentSceneName = pScene -> GetName (); + G4bool successful = pScene -> AddEndOfEventModel (model, warn); + if (successful) { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Trajectories will be drawn in scene \"" + << currentSceneName << "\"." + << G4endl; + } + } + else G4VisCommandsSceneAddUnsuccessful(verbosity); } ////////////// /vis/scene/add/volume /////////////////////////////////////// @@ -469,10 +784,15 @@ G4String G4VisCommandSceneAddVolume::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneAddVolume::SetNewValue (G4UIcommand* command, G4String newValue) { - G4SceneList& sceneList = fpVisManager -> SetSceneList (); - if (sceneList.empty ()) { - G4cout << "No scenes - please create one before adding anything." - << G4endl; + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + + G4Scene* pScene = fpVisManager->GetCurrentScene(); + if (!pScene) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: No current scene. Please create one." << G4endl; + } return; } @@ -495,9 +815,12 @@ void G4VisCommandSceneAddVolume::SetNewValue (G4UIcommand* command, foundVolume = world; } else { - G4cerr << "G4VisCommandSceneAddVolume::SetNewValue: *** ERROR ***" - << "\n No world - shouldn't happen if G4ApplicationState is" - << " being properly noted!!" << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: G4VisCommandSceneAddVolume::SetNewValue:" + << "\n No world - shouldn't happen if G4ApplicationState is" + << " being properly noted!!" << G4endl; + } + return; } } else { @@ -524,20 +847,21 @@ void G4VisCommandSceneAddVolume::SetNewValue (G4UIcommand* command, transformation); } else { - G4cout << "Volume \"" << name << "\""; - if (copyNo >= 0) { - G4cout << ", copy no. " << copyNo << ","; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Volume \"" << name << "\""; + if (copyNo >= 0) { + G4cout << ", copy no. " << copyNo << ","; + } + G4cout << " not found." << G4endl; } - G4cout << " not found." << G4endl; + return; } } - if (model) { - G4Scene* pScene = fpVisManager -> GetCurrentScene (); - const G4String& currentSceneName = pScene -> GetName (); - G4bool successful = pScene -> AddRunDurationModel (model); - UpdateVisManagerScene (currentSceneName); - if (successful) { + const G4String& currentSceneName = pScene -> GetName (); + G4bool successful = pScene -> AddRunDurationModel (model, warn); + if (successful) { + if (verbosity >= G4VisManager::confirmations) { G4cout << "First occurrence of \"" << foundVolume -> GetName () << "\""; @@ -548,13 +872,15 @@ void G4VisCommandSceneAddVolume::SetNewValue (G4UIcommand* command, << ",\n with "; if (requestedDepthOfDescent < 0) { G4cout << "unlimited (-1)"; - } + } else { G4cout << requestedDepthOfDescent; } G4cout << " further requested depth of descent" - << ",\n has been added to scene \"" << currentSceneName << "\"" + << ",\n has been added to scene \"" << currentSceneName << "\"." << G4endl; } } + else G4VisCommandsSceneAddUnsuccessful(verbosity); + UpdateVisManagerScene (currentSceneName); } diff --git a/source/visualization/management/src/G4VisCommandsSceneHandler.cc b/source/visualization/management/src/G4VisCommandsSceneHandler.cc index 44893e07fb..5e0b635ad3 100644 --- a/source/visualization/management/src/G4VisCommandsSceneHandler.cc +++ b/source/visualization/management/src/G4VisCommandsSceneHandler.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsSceneHandler.cc,v 1.16.2.1 2001/06/28 19:16:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsSceneHandler.cc,v 1.22 2001/09/10 10:56:55 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/sceneHandler commands - John Allison 10th October 1998 @@ -92,20 +92,27 @@ G4String G4VisCommandSceneHandlerAttach::GetCurrentValue (G4UIcommand* command) void G4VisCommandSceneHandlerAttach::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& sceneName = newValue; if (sceneName.length () == 0) { - G4cout << - "Null string specified. Maybe there are no scenes available yet." - "\n Please create one." << G4endl; + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: No scene specified. Maybe there are no scenes available" + "\n yet. Please create one." << G4endl; + } return; } G4VSceneHandler* pSceneHandler = fpVisManager -> GetCurrentSceneHandler (); if (!pSceneHandler) { - G4cout << - "Current scene handler not defined. Please select or create one." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: Current scene handler not defined. Please select or create one." + << G4endl; + } return; } @@ -113,9 +120,11 @@ void G4VisCommandSceneHandlerAttach::SetNewValue (G4UIcommand* command, fpVisManager -> SetSceneList (); if (sceneList.empty ()) { - G4cout << - "No valid scenes available yet. Please create one." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: No valid scenes available yet. Please create one." + << G4endl; + } return; } @@ -126,15 +135,20 @@ void G4VisCommandSceneHandlerAttach::SetNewValue (G4UIcommand* command, if (iScene < nScenes) { G4Scene* pScene = sceneList [iScene]; pSceneHandler -> SetScene (pScene); - fpVisManager -> SetCurrentScene (pScene); - G4cout << "Scene \"" << sceneName - << "\" attached to scene handler \"" << pSceneHandler -> GetName () - << "." << G4endl; + UpdateVisManagerScene(sceneName); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Scene \"" << sceneName + << "\" attached to scene handler \"" + << pSceneHandler -> GetName () + << "." << G4endl; + } } else { - G4cout << "Scene \"" << sceneName - << "\" not found. Use \"/vis/scene/list\" to see possibilities." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Scene \"" << sceneName + << "\" not found. Use \"/vis/scene/list\" to see possibilities." + << G4endl; + } } } @@ -222,6 +236,9 @@ G4String G4VisCommandSceneHandlerCreate::GetCurrentValue void G4VisCommandSceneHandlerCreate::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String graphicsSystem, newName; G4std::istrstream is ((char*)newValue.data()); is >> graphicsSystem >> newName; @@ -230,11 +247,13 @@ void G4VisCommandSceneHandlerCreate::SetNewValue (G4UIcommand* command, fpVisManager -> GetAvailableGraphicsSystems (); int nSystems = gsl.size (); if (nSystems <= 0) { - G4cout << "G4VisCommandSceneHandlerCreate::SetNewValue:" - " no graphics systems available." - "\n Did you instantiate any in" - " YourVisManager::RegisterGraphicsSystems()?" - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: G4VisCommandSceneHandlerCreate::SetNewValue:" + " no graphics systems available." + "\n Did you instantiate any in" + " YourVisManager::RegisterGraphicsSystems()?" + << G4endl; + } return; } int iGS; // Selector index. @@ -249,16 +268,18 @@ void G4VisCommandSceneHandlerCreate::SetNewValue (G4UIcommand* command, if (iGS < 0 || iGS >= nSystems) { // Invalid command line argument or non. // This shouldn't happen!!!!!! - G4cerr << "G4VisCommandSceneHandlerCreate::SetNewValue:" - " invalid graphics system specified." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: G4VisCommandSceneHandlerCreate::SetNewValue:" + " invalid graphics system specified." + << G4endl; + } return; } // Valid index. Set current graphics system in preparation for // creating scene handler. G4VGraphicsSystem* pSystem = gsl [iGS]; fpVisManager -> SetCurrentGraphicsSystem (pSystem); - if (fpVisManager -> GetVerboseLevel () > 0) { + if (verbosity >= G4VisManager::confirmations) { G4cout << "Graphics system set to " << pSystem -> GetName () << G4endl; } @@ -274,7 +295,10 @@ void G4VisCommandSceneHandlerCreate::SetNewValue (G4UIcommand* command, for (iScene = 0; iScene < list.size (); iScene++) { G4VSceneHandler* sceneHandler = list [iScene]; if (sceneHandler -> GetName () == newName) { - G4cout << "Scene handler \"" << newName << "\" already exists." << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Scene handler \"" << newName + << "\" already exists." << G4endl; + } return; } } @@ -284,10 +308,13 @@ void G4VisCommandSceneHandlerCreate::SetNewValue (G4UIcommand* command, if (fpVisManager -> GetCurrentSceneHandler () -> GetName () != newName) return; - G4cout << "New scene handler \"" << newName << "\" created." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "New scene handler \"" << newName << "\" created." << G4endl; + } // Attach scene. - G4UImanager::GetUIpointer () -> ApplyCommand ("/vis/sceneHandler/attach"); + if (fpVisManager -> GetCurrentScene ()) + G4UImanager::GetUIpointer () -> ApplyCommand ("/vis/sceneHandler/attach"); UpdateCandidateLists (); } @@ -302,14 +329,14 @@ G4VisCommandSceneHandlerList::G4VisCommandSceneHandlerList () { fpCommand -> SetGuidance ("Lists scene handler(s)."); fpCommand -> SetGuidance (" default is \"all\""); fpCommand -> SetGuidance - (" is 0 for short (default) or 1 for long listing."); + ("See /vis/verbose for definition of verbosity."); G4UIparameter* parameter; parameter = new G4UIparameter("scene-handler-name", 's', omitable = true); parameter -> SetCurrentAsDefault (false); parameter -> SetDefaultValue ("all"); fpCommand -> SetParameter (parameter); - parameter = new G4UIparameter ("verbosity", 'i', + parameter = new G4UIparameter ("verbosity", 's', omitable = true); parameter -> SetCurrentAsDefault (false); parameter -> SetDefaultValue (0); @@ -327,10 +354,11 @@ G4String G4VisCommandSceneHandlerList::GetCurrentValue (G4UIcommand* command) { void G4VisCommandSceneHandlerList::SetNewValue (G4UIcommand* command, G4String newValue) { - G4String name; - G4int verbosity; + G4String name, verbosityString; G4std::istrstream is ((char*)newValue.data()); - is >> name >> verbosity; + is >> name >> verbosityString; + G4VisManager::Verbosity verbosity = + fpVisManager->GetVerbosityValue(verbosityString); const G4SceneHandlerList& list = fpVisManager -> GetAvailableSceneHandlers (); G4bool found = false; @@ -341,7 +369,7 @@ void G4VisCommandSceneHandlerList::SetNewValue (G4UIcommand* command, found = true; G4cout << "Scene handler \"" << list [iSH] -> GetName () << "\"" << " (" << list [iSH] -> GetGraphicsSystem () -> GetName () << ")"; - if (verbosity > 0) { + if (verbosity >= G4VisManager::parameters) { G4cout << "\n " << *(list [iSH]); } G4cout << G4endl; @@ -387,6 +415,9 @@ G4String G4VisCommandSceneHandlerRemove::GetCurrentValue (G4UIcommand* command) void G4VisCommandSceneHandlerRemove::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& removeName = newValue; G4VSceneHandler* currentSceneHandler = fpVisManager -> GetCurrentSceneHandler (); @@ -401,21 +432,26 @@ void G4VisCommandSceneHandlerRemove::SetNewValue (G4UIcommand* command, if ((*iSH) -> GetName () == removeName) break; } - iSH = list.end(); - if (iSH) { - G4cout << "Scene handler \"" << removeName - << "\" not found - \"/vis/sceneHandler/list\" to see possibilities." - << G4endl; + if (iSH == list.end()) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Scene handler \"" << removeName << + "\" not found - \"/vis/sceneHandler/list\" to see possibilities." + << G4endl; + } return; } - G4cout << "Scene handler \"" << removeName << "\" removed." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Scene handler \"" << removeName << "\" removed." << G4endl; + } if (removeName == currentName) { fpVisManager -> DeleteCurrentSceneHandler (); } else { list.erase (iSH); - G4cout << "Current scene handler unchanged." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Current scene handler unchanged." << G4endl; + } } UpdateCandidateLists (); @@ -454,25 +490,38 @@ G4String G4VisCommandSceneHandlerSelect::GetCurrentValue void G4VisCommandSceneHandlerSelect::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& selectName = newValue; const G4SceneHandlerList& list = fpVisManager -> GetAvailableSceneHandlers (); - G4cout << "Scene handler \"" << selectName << "\""; + size_t iSH; for (iSH = 0; iSH < list.size (); iSH++) { if (list [iSH] -> GetName () == selectName) break; } if (iSH < list.size ()) { - if (fpVisManager -> GetCurrentSceneHandler () -> GetName () == selectName) { - G4cout << " already selected." << G4endl; + if (fpVisManager -> GetCurrentSceneHandler () -> GetName () + == selectName) { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Scene handler \"" << selectName << "\"" + << " already selected." << G4endl; + } } else { - G4cout << " being selected." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Scene handler \"" << selectName << "\"" + << " being selected." << G4endl; + } fpVisManager -> SetCurrentSceneHandler (list [iSH]); } } else { - G4cout << " not found - \"/vis/sceneHandler/list\"" - "\n to see possibilities." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Scene handler \"" << selectName << "\"" + << " not found - \"/vis/sceneHandler/list\"" + "\n to see possibilities." + << G4endl; + } } } diff --git a/source/visualization/management/src/G4VisCommandsSceneInclude.cc b/source/visualization/management/src/G4VisCommandsSceneInclude.cc deleted file mode 100644 index 3d06abc8e3..0000000000 --- a/source/visualization/management/src/G4VisCommandsSceneInclude.cc +++ /dev/null @@ -1,83 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisCommandsSceneInclude.cc,v 1.7.2.1 2001/06/28 19:16:15 gunter Exp $ -// GEANT4 tag $Name: $ - -// /vis/scene commands - John Allison 9th August 1998 - -#include "G4VisCommandsSceneInclude.hh" - -#include "G4VisManager.hh" -#include "G4UIcmdWithoutParameter.hh" -#include "G4HitsModel.hh" -#include "G4TrajectoriesModel.hh" - -////////////// /vis/scene/include/hits /////////////////////////////////////// - -G4VisCommandSceneIncludeHits::G4VisCommandSceneIncludeHits () { - fpCommand = new G4UIcmdWithoutParameter ("/vis/scene/include/hits", this); - fpCommand -> SetGuidance - ("Replaced by /vis/scene/add/hits."); -} - -G4VisCommandSceneIncludeHits::~G4VisCommandSceneIncludeHits () { - delete fpCommand; -} - -G4String G4VisCommandSceneIncludeHits::GetCurrentValue (G4UIcommand* command) { - return ""; -} - -void G4VisCommandSceneIncludeHits::SetNewValue (G4UIcommand* command, - G4String newValue) { - G4cout << - " **** /vis/scene/include/hits has been replaced - \n" - " please use the equivalent command /vis/scene/add/hits." - << G4endl; -} - -////////////// /vis/scene/include/trajectories /////////////////////////////////////// - -G4VisCommandSceneIncludeTrajectories::G4VisCommandSceneIncludeTrajectories () { - fpCommand = new G4UIcmdWithoutParameter - ("/vis/scene/include/trajectories", this); - fpCommand -> SetGuidance - ("Replaced by /vis/scene/add/trajectories."); -} - -G4VisCommandSceneIncludeTrajectories::~G4VisCommandSceneIncludeTrajectories () { - delete fpCommand; -} - -G4String G4VisCommandSceneIncludeTrajectories::GetCurrentValue (G4UIcommand* command) { - return ""; -} - -void G4VisCommandSceneIncludeTrajectories::SetNewValue (G4UIcommand* command, - G4String newValue) { - G4cout << - " **** /vis/scene/include/trajectories has been replaced - \n" - " please use the equivalent command /vis/scene/add/trajectories." - << G4endl; -} diff --git a/source/visualization/management/src/G4VisCommandsViewer.cc b/source/visualization/management/src/G4VisCommandsViewer.cc index 3456dc3cf7..8565651bf5 100644 --- a/source/visualization/management/src/G4VisCommandsViewer.cc +++ b/source/visualization/management/src/G4VisCommandsViewer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsViewer.cc,v 1.26.2.1 2001/06/28 19:16:15 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsViewer.cc,v 1.34 2001/11/06 12:56:48 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/viewer commands - John Allison 25th October 1998 @@ -46,15 +46,19 @@ G4VVisCommandViewer::~G4VVisCommandViewer () {} void G4VVisCommandViewer::SetViewParameters (G4VViewer* viewer, const G4ViewParameters& viewParams) { + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); viewer->SetViewParameters(viewParams); - if (viewParams.IsAutoRefresh()) { - G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/refresh"); + G4VSceneHandler* sceneHandler = viewer->GetSceneHandler(); + if (sceneHandler && sceneHandler->GetScene()) { + if (viewParams.IsAutoRefresh()) { + G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/refresh"); + } + else { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Issue /vis/viewer/refresh to see effect." << G4endl; + } + } } - else { - G4cout << "Issue /vis/viewer/refresh to see effect." << G4endl; - } - // For now... - fpVisManager->SetCurrentViewParameters() = viewParams; } void G4VVisCommandViewer::UpdateCandidateLists () { @@ -111,17 +115,23 @@ G4String G4VisCommandViewerClear::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerClear::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& clearName = newValue; G4VViewer* viewer = fpVisManager -> GetViewer (clearName); if (!viewer) { - G4cout << "Viewer \"" << clearName - << "\" not found - \"/vis/viewer/list\" to see possibilities." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << clearName + << "\" not found - \"/vis/viewer/list\" to see possibilities." + << G4endl; + } return; } viewer->ClearView(); - if (fpVisManager->GetVerboseLevel() > 0) { + viewer->FinishView(); + if (verbosity >= G4VisManager::confirmations) { G4cout << "Viewer \"" << clearName << "\" cleared." << G4endl; } @@ -202,6 +212,9 @@ G4String G4VisCommandViewerCreate::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerCreate::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String sceneHandlerName, newName; G4int windowSizeHint; G4std::istrstream is ((char*)newValue.data()); @@ -228,9 +241,12 @@ void G4VisCommandViewerCreate::SetNewValue (G4UIcommand* command, fpVisManager -> GetAvailableSceneHandlers (); G4int nHandlers = sceneHandlerList.size (); if (nHandlers <= 0) { - G4cout << "G4VisCommandViewerCreate::SetNewValue: no scene handlers." - "\n Create a scene handler with \"/vis/sceneHandler/create\"" - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VisCommandViewerCreate::SetNewValue: no scene handlers." + "\n Create a scene handler with \"/vis/sceneHandler/create\"" + << G4endl; + } return; } @@ -242,9 +258,11 @@ void G4VisCommandViewerCreate::SetNewValue (G4UIcommand* command, if (iHandler < 0 || iHandler >= nHandlers) { // Invalid command line argument or non. // This shouldn't happen!!!!!! - G4cerr << "G4VisCommandViewerCreate::SetNewValue:" - " invalid scene handler specified." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "G4VisCommandViewerCreate::SetNewValue:" + " invalid scene handler specified." + << G4endl; + } return; } @@ -268,23 +286,36 @@ void G4VisCommandViewerCreate::SetNewValue (G4UIcommand* command, const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); for (size_t iViewer = 0; iViewer < viewerList.size (); iViewer++) { if (viewerList [iViewer] -> GetShortName () == newShortName ) { - G4cout << "Viewer \"" << newShortName << "\" already exists." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << newShortName << "\" already exists." + << G4endl; + } return; } } } - fpVisManager->SetCurrentViewParameters().SetWindowSizeHint - (windowSizeHint, windowSizeHint); - // These are picked up in the G4VViewer contructor. + fpVisManager->SetWindowSizeHint (windowSizeHint, windowSizeHint); + // These are picked up in the G4VViewer constructor. The problem is + // these have to be set *before* construction, i.e., before we have + // a viewer. // Create viewer. fpVisManager -> CreateViewer (newName); - if (fpVisManager -> GetCurrentViewer () -> GetName () == newName) { - G4cout << "New viewer \"" << newName << "\" created." << G4endl; + G4VViewer* newViewer = fpVisManager -> GetCurrentViewer (); + if (newViewer -> GetName () == newName) { + if (verbosity >= G4VisManager::confirmations) { + G4cout << "New viewer \"" << newName << "\" created." << G4endl; + } UpdateCandidateLists (); } + else { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: New viewer doesn\'t match!!! Curious!!" << G4endl; + } + } + // Refresh if appropriate... + SetViewParameters(newViewer, newViewer->GetViewParameters()); } ////////////// /vis/viewer/dolly and dollyTo //////////////////////////// @@ -337,10 +368,16 @@ G4String G4VisCommandViewerDolly::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerDolly::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4VViewer* currentViewer = fpVisManager->GetCurrentViewer(); if (!currentViewer) { - G4cout << "G4VisCommandsViewerDolly::SetNewValue: no current viewer." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VisCommandsViewerDolly::SetNewValue: no current viewer." + << G4endl; + } return; } @@ -355,13 +392,79 @@ void G4VisCommandViewerDolly::SetNewValue (G4UIcommand* command, vp.SetDolly(fDollyTo); } - if (fpVisManager->GetVerboseLevel() > 0) { + if (verbosity >= G4VisManager::confirmations) { G4cout << "Dolly distance changed to " << vp.GetDolly() << G4endl; } SetViewParameters(currentViewer, vp); } +////////////// /vis/viewer/flush /////////////////////////////////////// + +G4VisCommandViewerFlush::G4VisCommandViewerFlush () { + G4bool omitable, currentAsDefault; + fpCommand = new G4UIcmdWithAString ("/vis/viewer/flush", this); + fpCommand -> SetGuidance ("/vis/viewer/flush []"); + fpCommand -> SetGuidance + ("Compound command: /vis/viewer/refresh + /vis/viewer/update."); + fpCommand -> SetGuidance + ("Useful for refreshing and initiating post-processing for graphics" + "\n systems which need post-processing. Viewer becomes current."); + fpCommand -> SetGuidance + ("Specify viewer by name (\"/vis/viewer/list\"" + "\n to see possibilities)."); + fpCommand -> SetParameterName ("viewer-name", + omitable = true, + currentAsDefault = true); + viewerNameCommands.push_back (fpCommand); +} + +G4VisCommandViewerFlush::~G4VisCommandViewerFlush () { + delete fpCommand; +} + +G4String G4VisCommandViewerFlush::GetCurrentValue +(G4UIcommand* command) { + G4VViewer* viewer = fpVisManager -> GetCurrentViewer (); + if (viewer) { + return viewer -> GetName (); + } + else { + return "none"; + } +} + +void G4VisCommandViewerFlush::SetNewValue (G4UIcommand* command, + G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + + G4String& flushName = newValue; + G4VViewer* viewer = fpVisManager -> GetViewer (flushName); + if (!viewer) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << flushName << "\"" << + " not found - \"/vis/viewer/list\"\n to see possibilities." + << G4endl; + } + return; + } + + G4UImanager* ui = G4UImanager::GetUIpointer(); + G4int keepVerbose = ui->GetVerboseLevel(); + G4int newVerbose(0); + if (keepVerbose >= 2 || verbosity >= G4VisManager::confirmations) + newVerbose = 2; + ui->SetVerboseLevel(newVerbose); + ui->ApplyCommand("/vis/viewer/refresh " + flushName); + ui->ApplyCommand("/vis/viewer/update " + flushName); + ui->SetVerboseLevel(keepVerbose); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Viewer \"" << viewer -> GetName () << "\"" + << " flushed." << G4endl; + } +} + //////// /vis/viewer/lightsThetaPhi and lightsVector ///////////// G4VisCommandViewerLights::G4VisCommandViewerLights (): @@ -422,34 +525,25 @@ G4String G4VisCommandViewerLights::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerLights::SetNewValue (G4UIcommand* command, G4String newValue) { - - G4VViewer* currentViewer = fpVisManager->GetCurrentViewer(); - if (!currentViewer) { - G4cout << "G4VisCommandsViewerLights::SetNewValue: no current viewer." - << G4endl; - return; - } - - G4ViewParameters vp = currentViewer->GetViewParameters(); - + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); if (command == fpCommandLightsThetaPhi) { - G4double theta, phi; - GetNewDoublePairValue(newValue, theta, phi); - G4double x = sin (theta) * cos (phi); - G4double y = sin (theta) * sin (phi); - G4double z = cos (theta); - fLightsVector = G4Vector3D (x, y, z); + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: DEPRECATED: use \"/vis/viewer/set/LightsThetaPhi\"." + << G4endl; + } + G4UImanager::GetUIpointer()->ApplyCommand + ("/vis/viewer/set/LightsThetaPhi " + newValue); } else if (command == fpCommandLightsVector) { - fLightsVector = GetNew3VectorValue(newValue); + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: DEPRECATED: use \"/vis/viewer/set/LightsVector\"." + << G4endl; + } + G4UImanager::GetUIpointer()->ApplyCommand + ("/vis/viewer/set/LightsVector " + newValue); } - vp.SetLightpointDirection(fLightsVector); - - if (fpVisManager->GetVerboseLevel() > 0) { - G4cout << "Lights direction set to " << fLightsVector << G4endl; - } - - SetViewParameters(currentViewer, vp); } ////////////// /vis/viewer/list /////////////////////////////////////// @@ -462,14 +556,14 @@ G4VisCommandViewerList::G4VisCommandViewerList () { fpCommand -> SetGuidance ("Lists viewers(s)."); fpCommand -> SetGuidance (" default is \"all\""); fpCommand -> SetGuidance - (" is 0 for short (default) or 1 for long listing."); + ("See /vis/verbose for definition of verbosity."); G4UIparameter* parameter; parameter = new G4UIparameter("viewer-name", 's', omitable = true); parameter -> SetCurrentAsDefault (false); parameter -> SetDefaultValue ("all"); fpCommand -> SetParameter (parameter); - parameter = new G4UIparameter ("verbosity", 'i', + parameter = new G4UIparameter ("verbosity", 's', omitable = true); parameter -> SetCurrentAsDefault (false); parameter -> SetDefaultValue (0); @@ -486,11 +580,12 @@ G4String G4VisCommandViewerList::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerList::SetNewValue (G4UIcommand* command, G4String newValue) { - G4String name; - G4int verbosity; + G4String name, verbosityString; G4std::istrstream is ((char*)newValue.data()); - is >> name >> verbosity; + is >> name >> verbosityString; G4String shortName = fpVisManager -> ViewerShortName (name); + G4VisManager::Verbosity verbosity = + fpVisManager->GetVerbosityValue(verbosityString); const G4VViewer* currentViewer = fpVisManager -> GetCurrentViewer (); G4String currentViewerShortName; @@ -507,10 +602,12 @@ void G4VisCommandViewerList::SetNewValue (G4UIcommand* command, G4bool foundCurrent = false; for (int iHandler = 0; iHandler < nHandlers; iHandler++) { G4VSceneHandler* sceneHandler = sceneHandlerList [iHandler]; - const G4Scene* pScene = sceneHandler -> GetScene (); const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); - G4cout << "Scene handler \"" << sceneHandler -> GetName () - << "\", scene \"" << pScene -> GetName () << "\":"; + G4cout << "Scene handler \"" << sceneHandler -> GetName (); + const G4Scene* pScene = sceneHandler -> GetScene (); + if (pScene) { + G4cout << "\", scene \"" << pScene -> GetName () << "\":"; + } G4int nViewers = viewerList.size (); if (nViewers == 0) { G4cout << "\n No viewers for this scene handler." << G4endl; @@ -533,12 +630,12 @@ void G4VisCommandViewerList::SetNewValue (G4UIcommand* command, G4cout << " "; } G4cout << " viewer \"" << thisName << "\""; - if (verbosity > 0) { - G4cout << "\n " << *thisViewer << '\n'; + if (verbosity >= G4VisManager::parameters) { + G4cout << "\n " << *thisViewer; } } - G4cout << G4endl; } + G4cout << G4endl; } if (!foundCurrent) { @@ -619,10 +716,16 @@ G4String G4VisCommandViewerPan::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerPan::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4VViewer* currentViewer = fpVisManager->GetCurrentViewer(); if (!currentViewer) { - G4cout << "G4VisCommandsViewerPan::SetNewValue: no current viewer." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VisCommandsViewerPan::SetNewValue: no current viewer." + << G4endl; + } return; } @@ -637,7 +740,7 @@ void G4VisCommandViewerPan::SetNewValue (G4UIcommand* command, vp.SetPan(fPanToRight, fPanToUp); } - if (fpVisManager->GetVerboseLevel() > 0) { + if (verbosity >= G4VisManager::confirmations) { G4cout << "Current target point now " << vp.GetCurrentTargetPoint() << G4endl; } @@ -680,42 +783,65 @@ G4String G4VisCommandViewerRefresh::GetCurrentValue void G4VisCommandViewerRefresh::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4bool warn(verbosity >= G4VisManager::warnings); + G4String& refreshName = newValue; G4VViewer* viewer = fpVisManager -> GetViewer (refreshName); if (!viewer) { - G4cout << "Viewer \"" << refreshName << "\"" << - " not found - \"/vis/viewer/list\"\n to see possibilities." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << refreshName << "\"" << + " not found - \"/vis/viewer/list\"\n to see possibilities." + << G4endl; + } return; } G4VSceneHandler* sceneHandler = viewer->GetSceneHandler(); if (!sceneHandler) { - G4cout << "Viewer \"" << refreshName << "\"" << - " has no scene handler - report serious bug." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << refreshName << "\"" << + " has no scene handler - report serious bug." + << G4endl; + } return; } G4Scene* scene = sceneHandler->GetScene(); if (!scene) { - G4cout << "SceneHandler \"" << sceneHandler->GetName() - << "\", to which viewer \"" << refreshName << "\"" << - "\n is attached, has no scene - \"/vis/scene/create\" and" - "\"/vis/sceneHandler/attach\"" - "\n (or use compound command \"/vis/drawVolume\")." - << G4endl; + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: SceneHandler \"" << sceneHandler->GetName() + << "\", to which viewer \"" << refreshName << "\"" << + "\n is attached, has no scene - \"/vis/scene/create\" and" + "\"/vis/sceneHandler/attach\"" + "\n (or use compound command \"/vis/drawVolume\")." + << G4endl; + } + return; + } + G4bool successful = scene -> AddWorldIfEmpty (warn); + if (!successful) { + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: Scene is empty. Perhaps no geometry exists." + "\n Try /run/initialize." + << G4endl; + } return; } - scene -> AddWorldIfEmpty (); - G4cout << "Refreshing viewer \"" << viewer -> GetName () << "\"..." - << G4endl; - viewer -> ClearView (); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Refreshing viewer \"" << viewer -> GetName () << "\"..." + << G4endl; + } viewer -> SetView (); + viewer -> ClearView (); viewer -> DrawView (); - G4cout << "Viewer \"" << viewer -> GetName () << "\"" << " refreshed." - "\n (You might also need \"/vis/viewer/update\".)" << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Viewer \"" << viewer -> GetName () << "\"" << " refreshed." + "\n (You might also need \"/vis/viewer/update\".)" << G4endl; + } } ////////////// /vis/viewer/remove /////////////////////////////////////// @@ -750,6 +876,9 @@ G4String G4VisCommandViewerRemove::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerRemove::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& removeName = newValue; G4VViewer* currentViewer = fpVisManager -> GetCurrentViewer (); @@ -763,13 +892,17 @@ void G4VisCommandViewerRemove::SetNewValue (G4UIcommand* command, G4VViewer* viewer = fpVisManager -> GetViewer (removeName); if (!viewer) { - G4cout << "Viewer \"" << removeName - << "\" not found - \"/vis/viewer/list\" to see possibilities." - << G4endl; - return; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << removeName + << "\" not found - \"/vis/viewer/list\" to see possibilities." + << G4endl; + } + return; } - G4cout << "Viewer \"" << viewer -> GetName () << "\" removed." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Viewer \"" << viewer -> GetName () << "\" removed." << G4endl; + } if (viewer -> GetShortName () == currentShortName) { fpVisManager -> DeleteCurrentViewer (); } @@ -777,8 +910,10 @@ void G4VisCommandViewerRemove::SetNewValue (G4UIcommand* command, G4VSceneHandler* sceneHandler = viewer -> GetSceneHandler (); G4ViewerList& viewerList = sceneHandler -> SetViewerList (); viewerList.remove (viewer); - G4cout << "Current viewer is unchanged (\"" - << currentViewer -> GetName () << "\")." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Current viewer is unchanged (\"" + << currentViewer -> GetName () << "\")." << G4endl; + } } UpdateCandidateLists (); @@ -817,12 +952,17 @@ G4String G4VisCommandViewerReset::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerReset::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& resetName = newValue; G4VViewer* viewer = fpVisManager -> GetViewer (resetName); if (!viewer) { - G4cout << "Viewer \"" << resetName - << "\" not found - \"/vis/viewer/list\" to see possibilities." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << resetName + << "\" not found - \"/vis/viewer/list\" to see possibilities." + << G4endl; + } return; } @@ -862,25 +1002,32 @@ G4String G4VisCommandViewerSelect::GetCurrentValue void G4VisCommandViewerSelect::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& selectName = newValue; G4VViewer* viewer = fpVisManager -> GetViewer (selectName); - if (viewer) { - G4cout << "Viewer \"" << viewer -> GetName () << "\""; - if (viewer == fpVisManager -> GetCurrentViewer ()) { - G4cout << " already selected." << G4endl; + if (!viewer) { + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << selectName << "\""; + G4cout << " not found - \"/vis/viewer/list\"" + "\n to see possibilities." + << G4endl; } - else { - G4cout << " being selected." << G4endl; - fpVisManager -> SetCurrentViewer (viewer); + return; + } + + if (viewer == fpVisManager -> GetCurrentViewer ()) { + if (verbosity >= G4VisManager::warnings) { + G4cout << "WARNING: Viewer \"" << viewer -> GetName () << "\"" + << " already selected." << G4endl; } + return; } - else { - G4cout << "Viewer \"" << selectName << "\""; - G4cout << " not found - \"/vis/viewer/list\"" - "\n to see possibilities." - << G4endl; - } + + fpVisManager -> SetCurrentViewer (viewer); // Prints confirmation. + } ////////////// /vis/viewer/update /////////////////////////////////////// @@ -930,18 +1077,25 @@ G4String G4VisCommandViewerUpdate::GetCurrentValue void G4VisCommandViewerUpdate::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4String& updateName = newValue; G4VViewer* viewer = fpVisManager -> GetViewer (updateName); if (viewer) { - G4cout << "Viewer \"" << viewer -> GetName () << "\""; - G4cout << " post-processing triggered." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Viewer \"" << viewer -> GetName () << "\""; + G4cout << " post-processing triggered." << G4endl; + } viewer -> ShowView (); } else { - G4cout << "Viewer \"" << updateName << "\""; - G4cout << " not found - \"/vis/viewer/list\"" - "\n to see possibilities." << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Viewer \"" << updateName << "\""; + G4cout << " not found - \"/vis/viewer/list\"" + "\n to see possibilities." << G4endl; + } } } @@ -1008,37 +1162,26 @@ G4String G4VisCommandViewerViewpoint::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerViewpoint::SetNewValue (G4UIcommand* command, G4String newValue) { - G4VViewer* currentViewer = fpVisManager->GetCurrentViewer(); - if (!currentViewer) { - G4cout << "G4VisCommandsViewerViewpoint::SetNewValue: no current viewer." - << G4endl; - return; - } - - G4ViewParameters viewParams = currentViewer->GetViewParameters(); + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); if (command == fpCommandViewpointThetaPhi) { - G4double theta, phi; - GetNewDoublePairValue(newValue, theta, phi); - G4double x = sin (theta) * cos (phi); - G4double y = sin (theta) * sin (phi); - G4double z = cos (theta); - fViewpointVector = G4Vector3D (x, y, z); + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: DEPRECATED: use \"/vis/viewer/set/viewpointThetaPhi\"." + << G4endl; + } + G4UImanager::GetUIpointer()->ApplyCommand + ("/vis/viewer/set/viewpointThetaPhi " + newValue); } else if (command == fpCommandViewpointVector) { - fViewpointVector = GetNew3VectorValue(newValue); - } - viewParams.SetViewAndLights(fViewpointVector); - - if (fpVisManager->GetVerboseLevel() > 0) { - G4cout << "Viewpoint direction set to " << fViewpointVector << G4endl; - if (viewParams.GetLightsMoveWithCamera ()) { - G4cout << "Lightpoint direction set to " - << viewParams.GetActualLightpointDirection () << G4endl; + if (verbosity >= G4VisManager::warnings) { + G4cout << + "WARNING: DEPRECATED: use \"/vis/viewer/set/viewpointVector\"." + << G4endl; } + G4UImanager::GetUIpointer()->ApplyCommand + ("/vis/viewer/set/viewpointVector " + newValue); } - - SetViewParameters(currentViewer, viewParams); } ////////////// /vis/viewer/zoom and zoomTo //////////////////////////// @@ -1089,10 +1232,16 @@ G4String G4VisCommandViewerZoom::GetCurrentValue (G4UIcommand* command) { void G4VisCommandViewerZoom::SetNewValue (G4UIcommand* command, G4String newValue) { + + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4VViewer* currentViewer = fpVisManager->GetCurrentViewer(); if (!currentViewer) { - G4cout << "G4VisCommandsViewerZoom::SetNewValue: no current viewer." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VisCommandsViewerZoom::SetNewValue: no current viewer." + << G4endl; + } return; } @@ -1107,7 +1256,7 @@ void G4VisCommandViewerZoom::SetNewValue (G4UIcommand* command, vp.SetZoomFactor(fZoomTo); } - if (fpVisManager->GetVerboseLevel() > 0) { + if (verbosity >= G4VisManager::confirmations) { G4cout << "Zoom factor changed to " << vp.GetZoomFactor() << G4endl; } diff --git a/source/visualization/management/src/G4VisCommandsViewerSet.cc b/source/visualization/management/src/G4VisCommandsViewerSet.cc index e96c246f93..392c9b87e9 100644 --- a/source/visualization/management/src/G4VisCommandsViewerSet.cc +++ b/source/visualization/management/src/G4VisCommandsViewerSet.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisCommandsViewerSet.cc,v 1.12.2.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisCommandsViewerSet.cc,v 1.17 2001/11/12 18:22:12 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // /vis/viewer/set commands - John Allison 16th May 2000 @@ -35,7 +35,11 @@ #include "G4UnitsTable.hh" #include "G4VisManager.hh" -G4VisCommandsViewerSet::G4VisCommandsViewerSet () { +G4VisCommandsViewerSet::G4VisCommandsViewerSet (): + fLightsVector (G4ThreeVector(1.,1.,1.)), + fUpVector (G4ThreeVector(0.,1.,0.)), + fViewpointVector (G4ThreeVector(0.,0.,1.)) +{ G4bool omitable; G4UIparameter* parameter; @@ -47,9 +51,9 @@ G4VisCommandsViewerSet::G4VisCommandsViewerSet () { viewerNameCommands.push_back (fpCommandAll); fpCommandAutoRefresh = new G4UIcmdWithABool - ("/vis/viewer/set/autorefresh",this); + ("/vis/viewer/set/autoRefresh",this); fpCommandAutoRefresh->SetGuidance - ("/vis/viewer/set/autorefresh [true|false]"); + ("/vis/viewer/set/autoRefresh [true|false]"); fpCommandAutoRefresh->SetGuidance ("View is automatically refreshed after a change of view parameters."); fpCommandAutoRefresh->SetParameterName("auto-refresh",omitable = true); @@ -105,6 +109,38 @@ G4VisCommandsViewerSet::G4VisCommandsViewerSet () { // fpCommandLightsMove->SetCandidates("move-with-camera move-with-object"); // Own parsing. + fpCommandLightsThetaPhi = new G4UIcommand + ("/vis/viewer/set/lightsThetaPhi", this); + fpCommandLightsThetaPhi -> SetGuidance + ("/vis/viewer/set/lightsThetaPhi [] [] [deg|rad]"); + fpCommandLightsThetaPhi -> SetGuidance + ("Set direction from target to lights."); + parameter = new G4UIparameter("theta", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandLightsThetaPhi -> SetParameter (parameter); + parameter = new G4UIparameter("phi", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandLightsThetaPhi -> SetParameter (parameter); + parameter = new G4UIparameter ("unit", 's', omitable = true); + parameter -> SetDefaultValue ("deg"); + fpCommandLightsThetaPhi -> SetParameter (parameter); + + fpCommandLightsVector = new G4UIcommand + ("/vis/viewer/set/lightsVector", this); + fpCommandLightsVector -> SetGuidance + ("/vis/viewer/set/lightsVector [] [] []"); + fpCommandLightsVector -> SetGuidance + ("Set direction from target to lights."); + parameter = new G4UIparameter("x", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandLightsVector -> SetParameter (parameter); + parameter = new G4UIparameter("y", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandLightsVector -> SetParameter (parameter); + parameter = new G4UIparameter ("z", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandLightsVector -> SetParameter (parameter); + fpCommandLineSegments = new G4UIcmdWithAnInteger ("/vis/viewer/set/lineSegmentsPerCircle",this); fpCommandLineSegments->SetGuidance @@ -178,6 +214,74 @@ G4VisCommandsViewerSet::G4VisCommandsViewerSet () { ("Note: parameter will be parsed for first character \"w\" or \"s\"."); fpCommandStyle->SetParameterName ("style",omitable = false); // fpCommandStyle->SetCandidates("wireframe surface"); // Own parsing. + + fpCommandUpThetaPhi = new G4UIcommand + ("/vis/viewer/set/upThetaPhi", this); + fpCommandUpThetaPhi -> SetGuidance + ("/vis/viewer/set/upThetaPhi [] [] [deg|rad]"); + fpCommandUpThetaPhi -> SetGuidance + ("Set up vector. Viewer will attempt always to show" + " this direction upwards."); + parameter = new G4UIparameter("theta", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandUpThetaPhi -> SetParameter (parameter); + parameter = new G4UIparameter("phi", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandUpThetaPhi -> SetParameter (parameter); + parameter = new G4UIparameter ("unit", 's', omitable = true); + parameter -> SetDefaultValue ("deg"); + fpCommandUpThetaPhi -> SetParameter (parameter); + + fpCommandUpVector = new G4UIcommand + ("/vis/viewer/set/upVector", this); + fpCommandUpVector -> SetGuidance + ("/vis/viewer/set/upVector [] [] []"); + fpCommandUpVector -> SetGuidance + ("Set up vector. Viewer will attempt always to show" + " this direction upwards."); + parameter = new G4UIparameter("x", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandUpVector -> SetParameter (parameter); + parameter = new G4UIparameter("y", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandUpVector -> SetParameter (parameter); + parameter = new G4UIparameter ("z", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandUpVector -> SetParameter (parameter); + + fpCommandViewpointThetaPhi = new G4UIcommand + ("/vis/viewer/set/viewpointThetaPhi", this); + fpCommandViewpointThetaPhi -> SetGuidance + ("/vis/viewer/set/viewpointThetaPhi [] [] [deg|rad]"); + fpCommandViewpointThetaPhi -> SetGuidance + ("Set direction from target to camera. Also changes lightpoint direction" + "\nif lights are set to move with camera."); + parameter = new G4UIparameter("theta", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandViewpointThetaPhi -> SetParameter (parameter); + parameter = new G4UIparameter("phi", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandViewpointThetaPhi -> SetParameter (parameter); + parameter = new G4UIparameter ("unit", 's', omitable = true); + parameter -> SetDefaultValue ("deg"); + fpCommandViewpointThetaPhi -> SetParameter (parameter); + + fpCommandViewpointVector = new G4UIcommand + ("/vis/viewer/set/viewpointVector", this); + fpCommandViewpointVector -> SetGuidance + ("/vis/viewer/set/viewpointVector [] [] []"); + fpCommandViewpointVector -> SetGuidance + ("Set direction from target to camera. Also changes lightpoint direction" + "\nif lights are set to move with camera."); + parameter = new G4UIparameter("x", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandViewpointVector -> SetParameter (parameter); + parameter = new G4UIparameter("y", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandViewpointVector -> SetParameter (parameter); + parameter = new G4UIparameter ("z", 'd', omitable = true); + parameter -> SetCurrentAsDefault (true); + fpCommandViewpointVector -> SetParameter (parameter); } G4VisCommandsViewerSet::~G4VisCommandsViewerSet() { @@ -189,22 +293,51 @@ G4VisCommandsViewerSet::~G4VisCommandsViewerSet() { delete fpCommandHiddenMarker; delete fpCommandLineSegments; delete fpCommandLightsMove; + delete fpCommandLightsThetaPhi; + delete fpCommandLightsVector; delete fpCommandProjection; delete fpCommandSectionPlane; delete fpCommandStyle; + delete fpCommandUpThetaPhi; + delete fpCommandUpVector; + delete fpCommandViewpointThetaPhi; + delete fpCommandViewpointVector; } G4String G4VisCommandsViewerSet::GetCurrentValue(G4UIcommand* command) { - return "invalid"; + G4String currentValue; + if (command == fpCommandLightsThetaPhi) { + currentValue = ConvertToString(fLightsVector.theta(), + fLightsVector.phi(), "deg"); + } + else if (command == fpCommandLightsVector) { + currentValue = ConvertToString(fLightsVector); + } + else if (command == fpCommandViewpointThetaPhi) { + currentValue = ConvertToString(fViewpointVector.theta(), + fViewpointVector.phi(), "deg"); + } + else if (command == fpCommandViewpointVector) { + currentValue = ConvertToString(fViewpointVector); + } + else { + currentValue = "invalid"; + } + return currentValue; } void G4VisCommandsViewerSet::SetNewValue (G4UIcommand* command,G4String newValue) { + G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); + G4VViewer* currentViewer = fpVisManager->GetCurrentViewer(); if (!currentViewer) { - G4cout << "G4VisCommandsViewerSet::SetNewValue: no current viewer." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VisCommandsViewerSet::SetNewValue: no current viewer." + << G4endl; + } return; } @@ -213,32 +346,41 @@ void G4VisCommandsViewerSet::SetNewValue if (command == fpCommandAll) { G4VViewer* fromViewer = fpVisManager->GetViewer(newValue); if (!fromViewer) { - G4cout << - "G4VisCommandsViewerSet::SetNewValue: all: unrecognised from-viewer." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VisCommandsViewerSet::SetNewValue: all:" + "\n unrecognised from-viewer." + << G4endl; + } return; } if (fromViewer == currentViewer) { + if (verbosity >= G4VisManager::warnings) { G4cout << - "G4VisCommandsViewerSet::SetNewValue: all:" + "WARNING: G4VisCommandsViewerSet::SetNewValue: all:" "\n from-viewer and current viewer are identical." << G4endl; + } return; } vp = fromViewer->GetViewParameters(); - G4cout << "View parameters of viewer \"" << currentViewer->GetName() - << "\"\n set to those of viewer \"" << fromViewer->GetName() - << "\"." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "View parameters of viewer \"" << currentViewer->GetName() + << "\"\n set to those of viewer \"" << fromViewer->GetName() + << "\"." + << G4endl; + } } else if (command == fpCommandAutoRefresh) { G4bool autoRefresh = GetNewBoolValue(newValue); vp.SetAutoRefresh(autoRefresh); - G4cout << "Views will "; - if (!vp.IsAutoRefresh()) G4cout << "not "; - G4cout << "be automatically refreshed after a change of view parameters." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Views will "; + if (!vp.IsAutoRefresh()) G4cout << "not "; + G4cout << "be automatically refreshed after a change of view parameters." + << G4endl; + } } else if (command == fpCommandCulling) { @@ -250,34 +392,40 @@ void G4VisCommandsViewerSet::SetNewValue boolFlag = GetNewBoolValue(stringFlag); if (cullingOption == "global") { vp.SetCulling(boolFlag); - G4cout << - "G4VisCommandsViewerSet::SetNewValue: culling: global culling flag" - " set to " << ConvertToString(boolFlag) << - ".\n Does not change specific culling flags." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << + "G4VisCommandsViewerSet::SetNewValue: culling: global culling flag" + " set to " << ConvertToString(boolFlag) << + ".\n Does not change specific culling flags." + << G4endl; + } } else if (cullingOption == "coveredDaughters") { vp.SetCullingCovered(boolFlag); - G4cout << - "G4VisCommandsViewerSet::SetNewValue: culling: culling covered" - "\n daughters flag set to " - << ConvertToString(boolFlag) << - ". Daughters covered by opaque mothers" - "\n will be culled, i.e., not drawn, if this flag is true." - "\n Note: this is only effective in surface drawing style," - "\n and then only if the volumes are visible and opaque, and then" - "\n only if no sections or cutways are in operation." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << + "G4VisCommandsViewerSet::SetNewValue: culling: culling covered" + "\n daughters flag set to " + << ConvertToString(boolFlag) << + ". Daughters covered by opaque mothers" + "\n will be culled, i.e., not drawn, if this flag is true." + "\n Note: this is only effective in surface drawing style," + "\n and then only if the volumes are visible and opaque, and then" + "\n only if no sections or cutways are in operation." + << G4endl; + } } else if (cullingOption == "invisible") { vp.SetCullingInvisible(boolFlag); - G4cout << - "G4VisCommandsViewerSet::SetNewValue: culling: culling invisible" - "\n flag set to " - << boolFlag << ConvertToString(boolFlag) << - ". Volumes marked invisible will be culled," - "\n i.e., not drawn, if this flag is true." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << + "G4VisCommandsViewerSet::SetNewValue: culling: culling invisible" + "\n flag set to " + << boolFlag << ConvertToString(boolFlag) << + ". Volumes marked invisible will be culled," + "\n i.e., not drawn, if this flag is true." + << G4endl; + } } else if (cullingOption == "density") { vp.SetDensityCulling(boolFlag); @@ -288,18 +436,23 @@ void G4VisCommandsViewerSet::SetNewValue else { density = vp.GetVisibleDensity(); } - G4cout << - "G4VisCommandsViewerSet::SetNewValue: culling: culling by density" - "\n flag set to " << ConvertToString(boolFlag) << - ". Volumes with density less than " << - G4BestUnit(density,"Volumic Mass") << - "\n will be culled, i.e., not drawn, if this flag is true." - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << + "G4VisCommandsViewerSet::SetNewValue: culling: culling by density" + "\n flag set to " << ConvertToString(boolFlag) << + ". Volumes with density less than " << + G4BestUnit(density,"Volumic Mass") << + "\n will be culled, i.e., not drawn, if this flag is true." + << G4endl; + } } else { - G4cout << - "G4VisCommandsViewerSet::SetNewValue: culling: option not recognised." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VisCommandsViewerSet::SetNewValue: culling:" + "\n option not recognised." + << G4endl; + } } } @@ -331,9 +484,11 @@ void G4VisCommandsViewerSet::SetNewValue break; } } - G4cout << "Drawing style of viewer \"" << currentViewer->GetName() - << "\" set to " << vp.GetDrawingStyle() - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Drawing style of viewer \"" << currentViewer->GetName() + << "\" set to " << vp.GetDrawingStyle() + << G4endl; + } } else if (command == fpCommandHiddenEdge) { @@ -366,18 +521,22 @@ void G4VisCommandsViewerSet::SetNewValue break; } } - G4cout << "Drawing style of viewer \"" << currentViewer->GetName() - << "\" set to " << vp.GetDrawingStyle() - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Drawing style of viewer \"" << currentViewer->GetName() + << "\" set to " << vp.GetDrawingStyle() + << G4endl; + } } else if (command == fpCommandHiddenMarker) { G4bool hidden = GetNewBoolValue(newValue); if (hidden) vp.SetMarkerHidden(); else vp.SetMarkerNotHidden(); - G4cout << "Markers will "; - if (vp.IsMarkerNotHidden()) G4cout << "not "; - G4cout << "be hidden under solid objects." << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Markers will "; + if (vp.IsMarkerNotHidden()) G4cout << "not "; + G4cout << "be hidden under solid objects." << G4endl; + } } else if (command == fpCommandLightsMove) { @@ -385,22 +544,51 @@ void G4VisCommandsViewerSet::SetNewValue if (s.find("cam") != G4String::npos) vp.SetLightsMoveWithCamera(true); else if(s.find("obj") != G4String::npos) vp.SetLightsMoveWithCamera(false); else { - G4cout << "\"" << newValue << "\" not recognised." + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: \"" << newValue << "\" not recognised." " Looking for \"cam\" or \"obj\" in string." << G4endl; + } + } + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Lights move with "; + if (vp.GetLightsMoveWithCamera()) + G4cout << "camera (object appears to rotate)."; + else G4cout << "object (the viewer appears to be moving)."; + G4cout << G4endl; + } + } + + else if (command == fpCommandLightsThetaPhi) { + G4double theta, phi; + GetNewDoublePairValue(newValue, theta, phi); + G4double x = sin (theta) * cos (phi); + G4double y = sin (theta) * sin (phi); + G4double z = cos (theta); + fLightsVector = G4ThreeVector (x, y, z); + vp.SetLightpointDirection(fLightsVector); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Lights direction set to " + << vp.GetLightpointDirection() << G4endl; + } + } + + else if (command == fpCommandLightsVector) { + fLightsVector = GetNew3VectorValue(newValue); + vp.SetLightpointDirection(fLightsVector); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Lights direction set to " + << vp.GetLightpointDirection() << G4endl; } - G4cout << "Lights move with "; - if (vp.GetLightsMoveWithCamera()) - G4cout << "camera (object appears to rotate)."; - else G4cout << "object (the viewer appears to be moving)."; - G4cout << G4endl; } else if (command == fpCommandLineSegments) { G4int nSides = GetNewIntValue(newValue); - G4cout << - "Number of line segements per circle in polygon approximation is " - << nSides << G4endl; vp.SetNoOfSides(nSides); + if (verbosity >= G4VisManager::confirmations) { + G4cout << + "Number of line segements per circle in polygon approximation is " + << nSides << G4endl; + } } else if (command == fpCommandProjection) { @@ -416,27 +604,34 @@ void G4VisCommandsViewerSet::SetNewValue is >> dummy >> fieldHalfAngle >> unit; fieldHalfAngle *= ValueOf(unit); if (fieldHalfAngle > 89.5 * deg || fieldHalfAngle <= 0.0) { - G4cout << "Field half angle should be 0 < angle <= 89.5 degrees."; - G4cout << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: Field half angle should be 0 < angle <= 89.5 degrees."; + G4cout << G4endl; + } return; } } else { - G4cout << "\"" << newValue << "\" not recognised." - " Looking for 'o' or 'p' first character." << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: \"" << newValue << "\" not recognised." + " Looking for 'o' or 'p' first character." << G4endl; + } return; } vp.SetFieldHalfAngle(fieldHalfAngle); - G4cout << "Projection style of viewer \"" << currentViewer->GetName() - << "\" set to "; - if (fieldHalfAngle == 0.) { - G4cout << "orthogonal."; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Projection style of viewer \"" << currentViewer->GetName() + << "\" set to "; + if (fieldHalfAngle == 0.) { + G4cout << "orthogonal."; + } + else { + G4cout << "perspective\n with half angle " << fieldHalfAngle / deg + << " degrees."; + } + G4cout << G4endl; } - else { - G4cout << "perspective\n with half angle " << fieldHalfAngle / deg - << " degrees."; - } - G4cout << G4endl; } else if (command == fpCommandSectionPlane) { @@ -450,13 +645,15 @@ void G4VisCommandsViewerSet::SetNewValue if (choice.compareTo("off",G4String::ignoreCase) == 0) iSelector = 0; if (choice.compareTo("on",G4String::ignoreCase) == 0) iSelector = 1; if (iSelector < 0) { - G4cout << "Choice not recognised (on/off)." << G4endl; - G4cout << "Section drawing is currently: "; - if (vp.IsSection ()) G4cout << "on"; - else G4cout << "off"; - G4cout << ".\nSection plane is currently: " - << vp.GetSectionPlane (); - G4cout << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "Choice not recognised (on/off)." << G4endl; + G4cout << "Section drawing is currently: "; + if (vp.IsSection ()) G4cout << "on"; + else G4cout << "off"; + G4cout << ".\nSection plane is currently: " + << vp.GetSectionPlane (); + G4cout << G4endl; + } return; } @@ -472,15 +669,22 @@ void G4VisCommandsViewerSet::SetNewValue G4Point3D(x,y,z))); vp.SetViewpointDirection(G4Normal3D(nx,ny,nz)); break; - default: G4cout << "Choice not recognised (on/off).\n"; break; + default: + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: Choice not recognised (on/off)." + << G4endl; + } + break; } - G4cout << "Section drawing is now: "; - if (vp.IsSection ()) G4cout << "on"; - else G4cout << "off"; - G4cout << ".\nSection plane is now: " - << vp.GetSectionPlane (); - G4cout << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Section drawing is now: "; + if (vp.IsSection ()) G4cout << "on"; + else G4cout << "off"; + G4cout << ".\nSection plane is now: " + << vp.GetSectionPlane (); + G4cout << G4endl; + } } else if (command == fpCommandStyle) { @@ -515,18 +719,77 @@ void G4VisCommandsViewerSet::SetNewValue } } else { - G4cout << "\"" << newValue << "\" not recognised." - " Looking for 'w' or 's' first character." << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << "ERROR: \"" << newValue << "\" not recognised." + " Looking for 'w' or 's' first character." << G4endl; + } return; } - G4cout << "Drawing style of viewer \"" << currentViewer->GetName() - << "\" set to " << vp.GetDrawingStyle() - << G4endl; + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Drawing style of viewer \"" << currentViewer->GetName() + << "\" set to " << vp.GetDrawingStyle() + << G4endl; + } + } + + else if (command == fpCommandUpThetaPhi) { + G4double theta, phi; + GetNewDoublePairValue(newValue, theta, phi); + G4double x = sin (theta) * cos (phi); + G4double y = sin (theta) * sin (phi); + G4double z = cos (theta); + fUpVector = G4ThreeVector (x, y, z); + vp.SetUpVector(fUpVector); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Up direction set to " << vp.GetUpVector() << G4endl; + } + } + + else if (command == fpCommandUpVector) { + fUpVector = GetNew3VectorValue(newValue); + vp.SetUpVector(fUpVector); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Up direction set to " << vp.GetUpVector() << G4endl; + } + } + + else if (command == fpCommandViewpointThetaPhi) { + G4double theta, phi; + GetNewDoublePairValue(newValue, theta, phi); + G4double x = sin (theta) * cos (phi); + G4double y = sin (theta) * sin (phi); + G4double z = cos (theta); + fViewpointVector = G4ThreeVector (x, y, z); + vp.SetViewAndLights(fViewpointVector); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Viewpoint direction set to " + << vp.GetViewpointDirection() << G4endl; + if (vp.GetLightsMoveWithCamera ()) { + G4cout << "Lightpoint direction set to " + << vp.GetActualLightpointDirection () << G4endl; + } + } + } + + else if (command == fpCommandViewpointVector) { + fViewpointVector = GetNew3VectorValue(newValue); + vp.SetViewAndLights(fViewpointVector); + if (verbosity >= G4VisManager::confirmations) { + G4cout << "Viewpoint direction set to " + << vp.GetViewpointDirection() << G4endl; + if (vp.GetLightsMoveWithCamera ()) { + G4cout << "Lightpoint direction set to " + << vp.GetActualLightpointDirection () << G4endl; + } + } } else { - G4cout << "G4VisCommandsViewerSet::SetNewValue: unrecognised command." - << G4endl; + if (verbosity >= G4VisManager::errors) { + G4cout << + "ERROR: G4VisCommandsViewerSet::SetNewValue: unrecognised command." + << G4endl; + } return; } diff --git a/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc b/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc index 7400092ab6..03a6703c7b 100644 --- a/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc +++ b/source/visualization/management/src/G4VisFeaturesOfDAWNFILE.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfDAWNFILE.cc,v 1.4.2.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisFeaturesOfDAWNFILE.cc,v 1.5 2001/07/11 10:09:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // #include "G4VisFeaturesOfDAWNFILE.hh" diff --git a/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc b/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc index 2d99c6de76..6c8ae9120c 100644 --- a/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc +++ b/source/visualization/management/src/G4VisFeaturesOfFukuiRenderer.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfFukuiRenderer.cc,v 1.3.4.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisFeaturesOfFukuiRenderer.cc,v 1.4 2001/07/11 10:09:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc b/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc index 75abc7f63b..255e94ad5c 100644 --- a/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc +++ b/source/visualization/management/src/G4VisFeaturesOfOpenGL.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfOpenGL.cc,v 1.3.4.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisFeaturesOfOpenGL.cc,v 1.4 2001/07/11 10:09:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc b/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc index e36a850c6f..019c819b47 100644 --- a/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc +++ b/source/visualization/management/src/G4VisFeaturesOfOpenInventor.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisFeaturesOfOpenInventor.cc,v 1.3.4.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisFeaturesOfOpenInventor.cc,v 1.4 2001/07/11 10:09:19 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // diff --git a/source/visualization/management/src/G4VisManMessCamera.cc b/source/visualization/management/src/G4VisManMessCamera.cc deleted file mode 100644 index ba88a3da1b..0000000000 --- a/source/visualization/management/src/G4VisManMessCamera.cc +++ /dev/null @@ -1,471 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisManMessCamera.cc,v 1.8.2.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. -// Camera sub-menu. - -#include "G4VisManMessenger.hh" - -#include "G4VisManager.hh" -#include "G4UImanager.hh" -#include "G4UIcommand.hh" -#include "G4UIparameter.hh" -#include "G4ios.hh" - -void G4VisManMessenger::AddCommandCamera () { - - G4UIcommand* command; - G4UIparameter* param; - - /////////////////////////////////////// /vis~/camera/dolly //// - //camera \hline - //camera /vis~/camera/dolly & distance & - //camera Moves the camera in by this distance. - //camera Reset with {\tt /vis~/camera/reset}. \\% - command = new G4UIcommand ("/vis~/camera/dolly", this); - command -> SetGuidance - ( - " Moves the camera in by this distance." - " Reset with /vis~/camera/reset." - ); - param = new G4UIparameter ("move in", 'd', true); - param -> SetDefaultValue (0.); - param -> SetGuidance ("world coordinates"); - command -> SetParameter (param); - fCommandList.push_back (command); - - //////////////////////////////////////// /vis~/camera/orbit //// - //camera \hline - //camera /vis~/camera/orbit & $N_\mathrm{frames}$, $\Delta\beta$ & - //camera Orbits the scene about the up-vector, lights fixed to the scene. - //camera Draws $N_\mathrm{frames}$ frames, the camera - //camera rotated $\Delta\beta$ about the up-vector each frame. \\% - command = new G4UIcommand ("/vis~/camera/orbit", this); - command -> SetGuidance - ( - "Orbits the scene about the up-vector, lights fixed to the scene." - " Draws N frames, the camera " - "rotated Delta-beta about the up-vector each frame." - ); - param = new G4UIparameter ("No. of frames", 'i', true); - param -> SetDefaultValue (1); - command -> SetParameter (param); - param = new G4UIparameter ("angle_increment", 'd', true); - param -> SetGuidance ("degrees"); - param -> SetDefaultValue (1.); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////// /vis~/camera/pan //// - //camera \hline - //camera /vis~/camera/pan & right, up & - //camera Moves the camera right and up by these amounts. - //camera Reset with {\tt /vis~/camera/reset}. \\% - command = new G4UIcommand ("/vis~/camera/pan", this); - command -> SetGuidance - ( - " Moves the camera by right and up by these amounts." - " Reset with /vis~/camera/reset." - ); - param = new G4UIparameter ("right shift", 'd', true); - param -> SetDefaultValue (0.); - param -> SetGuidance ("world coordinates"); - command -> SetParameter (param); - param = new G4UIparameter ("up shift", 'd', true); - param -> SetDefaultValue (0.); - param -> SetGuidance ("world coordinates"); - command -> SetParameter (param); - fCommandList.push_back (command); - - ///////////////////////////////////// /vis~/camera/projection_style //// - //camera \hline - //camera /vis~/camera/projection\_style & choice & - //camera Projection style (orthogonal, perspective). \\% - command = new G4UIcommand ("/vis~/camera/projection_style", this); - command -> SetGuidance - ( - "Projection style (orthogonal, perspective)." - ); - param = new G4UIparameter ("Style selector", 'i', true); - param -> SetDefaultValue (-1); - command -> SetParameter (param); - param = new G4UIparameter ("Perspective view half angle.", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - fCommandList.push_back (command); - - //////////////////////////////////////// /vis~/camera/spin //// - //camera \hline - //camera /vis~/camera/spin & $N_\mathrm{frames}$, $\Delta\beta$ & - //camera Spins the scene about the up-vector, lights fixed to the camera. - //camera Draws $N_\mathrm{frames}$ frames, the scene - //camera rotated $\Delta\beta$ about the up-vector each frame. \\% - command = new G4UIcommand ("/vis~/camera/spin", this); - command -> SetGuidance - ( - "Spins the scene about the up-vector, lights fixed to the camera." - " Draws N frames, the scene " - "rotated Delta-beta about the up-vector each frame." - ); - param = new G4UIparameter ("No. of frames", 'i', true); - param -> SetDefaultValue (1); - command -> SetParameter (param); - param = new G4UIparameter ("angle_increment", 'd', true); - param -> SetGuidance ("degrees"); - param -> SetDefaultValue (1.); - command -> SetParameter (param); - fCommandList.push_back (command); - - //////////////////////////////////////// /vis~/camera/viewpoint //// - //camera \hline - //camera /vis~/camera/viewpoint & $\theta$ $\phi$ & - //camera Set direction from target to camera as - //camera $\theta$, $\phi$ (in degrees). Also changes lightpoint - //camera direction if lights are set to move with camera.\\% - command = new G4UIcommand ("/vis~/camera/viewpoint", this); - command -> SetGuidance - ( - "Set direction from target to camera as " - "theta, phi (in degrees). Also changes lightpoint" - "\n direction if lights are set to move with camera." - ); - param = new G4UIparameter ("theta", 'd', true); - param -> SetGuidance ("degrees"); - param -> SetDefaultValue (0.0); - command -> SetParameter (param); - param = new G4UIparameter ("phi", 'd', true); - param -> SetGuidance ("degrees"); - param -> SetDefaultValue (0.0); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////// /vis~/camera/window_size_hint //// - //camera \hline - //camera /vis~/camera/window\_size\_hint & size& - //camera Size in pixels (Square window `size $\Times$ size'). Affects - //camera future create\_view commands (hint only). \\% - command = new G4UIcommand ("/vis~/camera/window_size_hint", this); - command -> SetGuidance - ( - "Size in pixels (Square window `size x size'). Affects " - "future create_view commands (hint only)." - ); - param = new G4UIparameter ("Window size hint in pixels", 'i', true); - param -> SetDefaultValue (600); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////// /vis~/camera/zoom //// - //camera \hline - //camera /vis~/camera/zoom & factor & - //camera Magnifies by this factor. - //camera Reset with {\tt /vis~/camera/reset}. \\% - command = new G4UIcommand ("/vis~/camera/zoom", this); - command -> SetGuidance - ( - "Magnifies by this factor." - " Reset with /vis~/camera/reset." - ); - param = new G4UIparameter ("zoom factor", 'd', true); - param -> SetDefaultValue (1.); - param -> SetGuidance ("magnifies by this"); - command -> SetParameter (param); - fCommandList.push_back (command); - -} - -void G4VisManMessenger::DoCommandCamera (const G4String& commandPath, - G4String& newValues) { - - /////////////////////////////// /vis~/camera/dolly //// - if (commandPath == "/vis~/camera/dolly") { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/dolly\"."); - if (ViewValid ()) { - G4double in; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> in; - G4cout << "Dolly " << in << " in." << G4endl; - fpVMan -> SetCurrentViewParameters ().IncrementDolly (in); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Dolly distance changed to " - << fpVMan -> GetCurrentViewParameters ().GetDolly () << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - // fpVMan -> GetCurrentViewer () -> ClearView (); // Clears buffer only. - // fpVMan -> Draw (); - // fpVMan -> Show (); - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (fpVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } - - //////////////////////////////// /vis~/camera/orbit //// - if (commandPath == "/vis~/camera/orbit") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - G4int nFrames; - G4double dbeta; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> nFrames >> dbeta; - dbeta = dbeta * deg; - fpVMan -> SetCurrentViewParameters ().SetLightsMoveWithCamera (false); - for (int i = 0; i < nFrames; i++) { - RotateViewpointAboutUpVectorBy (dbeta); - fpVMan -> GetCurrentViewer () -> ClearView (); // Clears buffer only. - fpVMan -> Draw (); - fpVMan -> Show (); - } - } - } - - /////////////////////////////// /vis~/camera/pan //// - if (commandPath == "/vis~/camera/pan") { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/pan\"."); - if (ViewValid ()) { - G4double right, up; - const char* aString = newValues; - G4std::istrstream is((char*) aString);is >> right >> up; - G4cout << "Pan " << right << " right, " << up << " up." << G4endl; - fpVMan -> SetCurrentViewParameters ().IncrementPan (right, up); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Current target point changed to " - << fpVMan -> GetCurrentViewParameters ().GetCurrentTargetPoint () - << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - // fpVMan -> GetCurrentViewer () -> ClearView (); // Clears buffer only. - // fpVMan -> Draw (); - // fpVMan -> Show (); - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (fpVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } - - ///////////////////////////////////// /vis~/camera/projection_style //// - if (commandPath == "/vis~/camera/projection_style") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/set/projection\"."); - G4int iStyle; - G4double fieldHalfAngleDegrees; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> iStyle >> fieldHalfAngleDegrees; - if (iStyle < 0 || iStyle > 1) { - G4cout << "Available representation styles:"; - G4cout << "\n 0) orthogonal"; - G4cout << "\n 1) perspective (also specify field half angle in degrees)"; - G4cout << "\nChoose by specifying integer parameter and field half angle" - " (if relevant)."; - G4cout << G4endl; - } - else { - switch (iStyle) { - default: - case 0: - fpVMan -> SetCurrentViewParameters ().SetFieldHalfAngle (0.); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "\nOrthogonal projection set." << G4endl; - } - break; - case 1: - if (fieldHalfAngleDegrees == 0.0) { - fieldHalfAngleDegrees = 30.; - G4cout << "Field half angle defaulted to " - << fieldHalfAngleDegrees << " degrees." << G4endl; - } - if (fieldHalfAngleDegrees > 89.5 || fieldHalfAngleDegrees <= 0.0) { - G4cout << "Field half angle should be 0 < angle <= 89.5 degrees."; - G4cout << G4endl; - } - else { - fpVMan -> SetCurrentViewParameters (). - SetFieldHalfAngle (fieldHalfAngleDegrees * deg); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "\nPerspective projection set."; - G4cout << "\nField half angle set to " << fieldHalfAngleDegrees - << " degrees" << " (" - << fpVMan -> GetCurrentViewParameters ().GetFieldHalfAngle () - << " radians)." << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - break; - } - } - // if (ViewValid ()) { - // fpVMan -> GetCurrentViewer () -> ClearView (); - // fpVMan -> Draw (); - // fpVMan -> Show (); - // } - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (fpVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } - - //////////////////////////////// /vis~/camera/spin //// - if (commandPath == "/vis~/camera/spin") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - G4int nFrames; - G4double dbeta; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> nFrames >> dbeta; - dbeta = dbeta * deg; - fpVMan -> SetCurrentViewParameters ().SetLightsMoveWithCamera (true); - for (int i = 0; i < nFrames; i++) { - RotateViewpointAboutUpVectorBy (dbeta); - fpVMan -> GetCurrentViewer () -> ClearView (); // Clears buffer only. - fpVMan -> Draw (); - fpVMan -> Show (); - } - } - } - - //////////////////////////////////////// /vis~/camera/viewpoint //// - if (commandPath == "/vis~/camera/viewpoint") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/viewpointThetaPhi\" or" - " \"/vis/viewer/viewpointVector\"."); - G4double theta, phi ; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> theta >> phi; - theta = theta * deg; - phi = phi * deg; - G4double x = sin (theta) * cos (phi); - G4double y = sin (theta) * sin (phi); - G4double z = cos (theta); - G4Vector3D vp (x, y, z); - fpVMan -> SetCurrentViewParameters().SetViewAndLights (vp); - const G4ViewParameters& viewParams = fpVMan -> GetCurrentViewParameters (); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Viewpoint direction set to " << vp << G4endl; - if (viewParams.GetLightsMoveWithCamera ()) { - G4cout << "Lightpoint direction set to " - << viewParams.GetLightpointDirection () << G4endl; - } - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - // if (ViewValid ()) { - // fpVMan -> GetCurrentViewer () -> ClearView (); // Clears buffer only. - // fpVMan -> Draw (); - // fpVMan -> Show (); - // } - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (fpVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - - /////////////////////////////////////// /vis~/camera/window_size_hint //// - if (commandPath == "/vis~/camera/window_size_hint") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/create ! ! \" or" - " \"/vis/open \"."); - G4int size; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> size; - fpVMan -> SetCurrentViewParameters ().SetWindowSizeHint (size, size); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Window size hint set to " << size << " x " << size << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - } - - //////////////////////////////// /vis~/camera/zoom //// - if (commandPath == "/vis~/camera/zoom") { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/zoom\"."); - if (ViewValid ()) { - G4double zoomBy; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> zoomBy; - fpVMan -> SetCurrentViewParameters ().MultiplyZoomFactor (zoomBy); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Zoom factor changed to " - << fpVMan -> GetCurrentViewParameters ().GetZoomFactor () << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - // fpVMan -> GetCurrentViewer () -> ClearView (); // Clears buffer only. - // fpVMan -> Draw (); - // fpVMan -> Show (); - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (fpVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } -} - -void G4VisManMessenger::RotateViewpointAboutUpVectorBy (G4double dbeta) { - // Rotates by fixed azimuthal angle dbeta. - const G4ViewParameters& viewParams = fpVMan -> GetCurrentViewParameters (); - G4Vector3D vp = viewParams.GetViewpointDirection ().unit (); - G4Vector3D up = viewParams.GetUpVector ().unit (); - G4Vector3D& zprime = up; - G4double cosalpha = up.dot (vp); - G4double sinalpha = sqrt (1. - pow (cosalpha, 2)); - G4Vector3D viewPoint = viewParams.GetViewpointDirection ().unit (); - G4Vector3D yprime = (zprime.cross (viewPoint)).unit (); - G4Vector3D xprime = yprime.cross (zprime); - // Projection of vp on plane perpendicular to up... - G4Vector3D a1 = sinalpha * xprime; - // Required new projection... - G4Vector3D a2 = - sinalpha * (cos (dbeta) * xprime + sin (dbeta) * yprime); - // Required Increment vector... - G4Vector3D delta = a2 - a1; - // So new viewpoint is... - viewPoint += delta; - fpVMan -> SetCurrentViewParameters ().SetViewAndLights (viewPoint); -} diff --git a/source/visualization/management/src/G4VisManMessCreateView.cc b/source/visualization/management/src/G4VisManMessCreateView.cc deleted file mode 100644 index 04d516e4a0..0000000000 --- a/source/visualization/management/src/G4VisManMessCreateView.cc +++ /dev/null @@ -1,171 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisManMessCreateView.cc,v 1.8.2.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. -// Create View sub-menu. - -#include "G4VisManMessenger.hh" - -#include "G4VisManager.hh" -#include "G4UImanager.hh" -#include "G4UIcommand.hh" -#include "G4UIparameter.hh" -#include "G4ios.hh" -#include - -void G4VisManMessenger::AddCommandCreateView () { - - G4UIcommand* command; - G4UIparameter* param; - - /////////////////// /vis~/create_view/new_graphics_system ///// - //cr_vw \hline - //cr_vw /vis~/create\_view/ new\_graphics\_system & choice & - //cr_vw Creates a new scene and a new view of a new graphics system; all - //cr_vw become current. \\% - command = new G4UIcommand ("/vis~/create_view/new_graphics_system", this); - command -> SetGuidance - ( - "Creates a new scene and a new view of a new graphics system; all " - "become current." - ); - param = new G4UIparameter ("Graphics system selector", 's', true); - param -> SetDefaultValue ("none"); - const G4GraphicsSystemList& gslist = - fpVMan -> GetAvailableGraphicsSystems (); - G4String candidates; - for (size_t igslist = 0; igslist < gslist.size (); igslist++) { - G4String nickname = gslist [igslist] -> GetNickname (); - if (nickname . length () > 0) { - candidates += nickname; - } - else { - candidates += gslist [igslist] -> GetName (); - } - candidates += " "; - } - param -> SetParameterCandidates(candidates); - command -> SetParameter (param); - fCommandList.push_back (command); - -} - -void G4VisManMessenger::DoCommandCreateView (const G4String& commandPath, - G4String& newValues) { - - /////////////////// /vis~/create_view/new_graphics_system ///// - if (commandPath == "/vis~/create_view/new_graphics_system") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/scenehandler/create\" or \"/vis/open\"."); - G4String selector; - const char* aString = newValues; - G4std::istrstream is ((char*) aString) ; is >> selector; - const G4GraphicsSystemList& gsl = fpVMan -> GetAvailableGraphicsSystems (); - int nSystems = gsl.size (); - if (nSystems > 0) { - int iGS; // Selector index. - for (iGS = 0; iGS < nSystems; iGS++) { - if (selector.compareTo (gsl [iGS] -> GetName (), - G4String::ignoreCase) == 0 || - selector.compareTo (gsl [iGS] -> GetNickname (), - G4String::ignoreCase) == 0) { - break; // Match found. - } - } - if (iGS < 0 || iGS >= nSystems) { - // Invalid command line argument or non. Print available systems. - G4bool help; - if (selector.compareTo ("help", G4String::ignoreCase) == 0 || - selector.compareTo ("info", G4String::ignoreCase) == 0) - help = true; - else help = false; - int maxNameLength = strlen ("class name"); - int nameLength; - int maxNicknameLength = strlen ("nickname"); - int nicknameLength; - int igs; - for (igs = 0; igs < nSystems; igs++) { - nameLength = strlen (gsl [igs] -> GetName ()); - if (maxNameLength < nameLength) maxNameLength = nameLength; - nicknameLength = strlen (gsl [igs] -> GetNickname ()); - if (maxNicknameLength < nicknameLength) - maxNicknameLength = nicknameLength; - } - G4String className, nickname, description; - className = "class name"; - int i; - for (i = className.length (); i < maxNameLength; i++) - className = className + " "; - G4cout << "Available graphics systems:\n " << className - << "nickname"; - className = "Help"; - for (i = className.length (); i < maxNameLength; i++) - className = className + " "; - if (help) G4cout << '\n'; - G4cout << "\n " << className << " info for more information"; - for (igs = 0; igs < nSystems; igs++) { - className = gsl [igs] -> GetName (); - for (i = className.length (); i < maxNameLength; i++) - className = className + " "; - if (help) G4cout << '\n'; - G4cout << "\n " << className; - nickname = gsl [igs] -> GetNickname (); - for (i = nickname.length (); i < maxNameLength; i++) - nickname = nickname + " "; - G4cout << " " << nickname; - if (help) { - description = gsl [igs] -> GetDescription (); - if (description != "") { - size_t index = 0; - while ((index = description.index ('\n', ++index)) != G4std::string::npos) { - description.replace (index, 1, "\n "); - } - G4cout << "\n " << description; - } - } - } - if (nSystems == 1) iGS = 0; // Only one system - create view anyway. - else { - G4cout << - "\nChoose by specifying class name or nickname, if any, or help."; - } - G4cout << G4endl; - } - if (iGS >=0 && iGS < nSystems) { - // Valid index. Create view. - G4VGraphicsSystem* pSystem = gsl [iGS];; - fpVMan -> SetCurrentGraphicsSystemAndCreateViewer (pSystem); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Graphics system set to " << pSystem -> GetName () << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentSystem (); - } - } - } - } - } -} diff --git a/source/visualization/management/src/G4VisManMessDraw.cc b/source/visualization/management/src/G4VisManMessDraw.cc deleted file mode 100644 index 89dd7cabd1..0000000000 --- a/source/visualization/management/src/G4VisManMessDraw.cc +++ /dev/null @@ -1,290 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisManMessDraw.cc,v 1.10.2.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. -// Draw sub-menu. - -#include "G4VisManMessenger.hh" - -#include "G4VisManager.hh" -#include "G4Polyline.hh" -#include "G4Text.hh" -#include "G4UImanager.hh" -#include "G4UIcommand.hh" -#include "G4UIparameter.hh" -#include "G4UnitsTable.hh" -#include "G4ios.hh" - -#include "G4VGlobalFastSimulationManager.hh" -#include "G4ParticleTable.hh" -#include "G4ParticleDefinition.hh" -#include "G4FlavoredParallelWorldModel.hh" -#include "G4ModelingParameters.hh" - - -void G4VisManMessenger::AddCommandDraw () { - - G4UIcommand* command; - G4UIparameter* param; - - //////////////////////////////////// /vis~/draw/axes ///// - //draw \hline - //draw /vis~/draw/axes & $x_0$, $y_0$, $z_0$, length, unit & - //draw Draws axes at $(x_0, y_0, z_0)$ of given length. \\% - command = new G4UIcommand ("/vis~/draw/axes", this); - command -> SetGuidance - ( - "Draws axes at (x0, y0, z0) of given length." - ); - param = new G4UIparameter ("x0", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("y0", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("z0", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("length", 'd', true); - param -> SetDefaultValue (10000.); - command -> SetParameter (param); - param = new G4UIparameter ("unit", 's', true); - param -> SetDefaultValue ("mm"); - param -> SetGuidance ("mm, cm, or m."); - command -> SetParameter (param); - fCommandList.push_back (command); - - //////////////////////////////////// /vis~/draw/text ///// - //draw \hline - //draw /vis~/draw/text & $x$, $y$, $z$, unit, - //draw font\_size, x\_offset, y\_offset, text & - //draw Draws text at $(x, y, z)$ with given parameters. - //draw Font size and offsets in pixels. \\% - command = new G4UIcommand ("/vis~/draw/text", this); - command -> SetGuidance - ("Draws at (x, y, z) unit font_size x_offset y_offset text."); - command -> SetGuidance - ("Font size and offsets in pixels."); - param = new G4UIparameter ("x", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("y", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("z", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("unit", 's', true); - param -> SetDefaultValue ("mm"); - param -> SetGuidance ("mm, cm, or m."); - command -> SetParameter (param); - param = new G4UIparameter ("font_size", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("x_offset", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("y_offset", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("text", 's', true); - param -> SetDefaultValue ("text"); - command -> SetParameter (param); - fCommandList.push_back (command); - - // - //////////////////////////////////// /vis~/draw/ghosts ///// - command = new G4UIcommand ("/vis~/draw/ghosts", this); - command -> SetGuidance - ( - "Adds to the current scene all ghost volumes" - ); - param = new G4UIparameter ("ParticleName", 's', true); - param -> SetDefaultValue ("all"); - command -> SetParameter (param); - fCommandList.push_back (command); - - - /******************************** UNDER DEVELOPMENT ????????????? - ////////////////////////// /vis~/draw/volume ///// - //??draw \hline - //??draw /vis~/draw/volume & name & - //??draw Clears the current scene, makes a new one consisting of the - //??draw physical volume ``name'' and - //??draw draws it in the current view, marking all other views of this scene - //??draw as needing refreshing. \\% - command = new G4UIcommand ("/vis~/draw/volume", this); - command -> SetGuidance - ( - "Clears the current scene, makes a new one consisting of the " - "physical volume \"name\" and " - "draws it in the current view, marking all other views of this scene " - "as needing refreshing." - ); - param = new G4UIparameter ("Physical volume name", 's', true); - param -> SetDefaultValue ("__none__"); - command -> SetParameter (param); - fCommandList.push_back (command); - **************************************************************/ - -} - -void G4VisManMessenger::DoCommandDraw (const G4String& commandPath, - G4String& newValues) { - - ///////////////////////////////////////// /vis~/draw/axes //// - if (commandPath == "/vis~/draw/axes") { - G4VisManager::PrintCommandDeprecation("Use \"/vis/scene/add/axes\"."); - if (ViewValid ()) { - G4double x0, y0, z0; - G4double length ; - G4String unitString; - const char* aString = newValues; - G4std::istrstream is((char*) aString); - is >> x0 >> y0 >> z0 >> length >> unitString; - - G4double unit = G4UnitDefinition::GetValueOf (unitString); - - x0 *= unit; y0 *= unit; z0 *= unit; length *= unit; - - G4Polyline x_axis, y_axis, z_axis; - - G4Colour cx(1.0, 0.0, 0.0); // color for x-axis - G4Colour cy(0.0, 1.0, 0.0); // color for y-axis - G4Colour cz(0.0, 0.0, 1.0); // color for z-axis - - G4VisAttributes ax(cx); // VA for x-axis - G4VisAttributes ay(cy); // VA for y-axis - G4VisAttributes az(cz); // VA for z-axis - - //----- Draw x-axis - x_axis.SetVisAttributes(&ax); - x_axis.push_back (G4Point3D (x0*unit,y0,z0)); - x_axis.push_back ( G4Point3D ( (x0 +length) , y0, z0 ) ); - fpVMan -> Draw (x_axis); - x_axis.clear (); - - //----- Draw y-axis - y_axis.SetVisAttributes(&ay); - y_axis.push_back (G4Point3D (x0,y0,z0)); - y_axis.push_back ( G4Point3D ( x0 , (y0 +length ) , z0 ) ); - fpVMan -> Draw (y_axis); - y_axis.clear (); - - //----- Draw z-axis - z_axis.SetVisAttributes(&az); - z_axis.push_back (G4Point3D (x0,y0,z0)); - z_axis.push_back ( G4Point3D ( x0 , y0 , ( z0 +length ) ) ); - fpVMan -> Draw (z_axis); - z_axis.clear (); - - } - } - - ///////////////////////////////////////// /vis~/draw/text //// - if (commandPath == "/vis~/draw/text") { - G4VisManager::PrintCommandDeprecation("Use \"/vis/scene/add/text\"."); - if (ViewValid ()) { - G4double x, y, z; - G4double font_size, x_offset, y_offset; - G4String unitString, textString; - const char* aString = newValues; - G4std::istrstream is((char*) aString); - is >> x >> y >> z >> unitString - >> font_size >> x_offset >> y_offset >> textString; - G4double unit = G4UnitDefinition::GetValueOf (unitString); - x *= unit; y *= unit; z *= unit; - G4Text g4Text (textString, G4Point3D (x, y, z)); - g4Text.SetScreenSize (font_size); - g4Text.SetOffset (x_offset, y_offset); - fpVMan -> Draw (g4Text); - } - } - - ////////////////////////// /vis~/draw/volume ///// - if (commandPath == "/vis~/draw/volume") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/scene/add/volume\" or \"/vis/drawVolume\"."); - // Find physical_volume. - G4String name; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> name; - - G4cout << "/vis~/draw/volume: requested name is " << name; - G4cout << "\n...but this command is \"UNDER DEVELOPMENT\"!"; - G4cout << G4endl; - } - ////////////////////////// /vis~/draw/ghosts ///// - if (commandPath == "/vis~/draw/ghosts") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/scene/add/ghosts\"."); - // preliminaries - G4VisManager* theVisManager; - if(!(theVisManager= G4VisManager::GetInstance())) { - G4cout<< "grafic system not yet avaliable." << G4endl; - return; - } - G4VGlobalFastSimulationManager* theGlobalFastSimulationManager; - if(!(theGlobalFastSimulationManager = - G4VGlobalFastSimulationManager::GetConcreteInstance ())){ - G4cout<< "WARNING: none G4GlobalFastSimulationManager" << G4endl; - return; - } - G4ParticleTable* theParticleTable=G4ParticleTable::GetParticleTable(); - - G4Scene* currentScene = theVisManager -> GetCurrentScene (); - // Ok, lets look on the parameters - if(newValues=="all") { - G4VFlavoredParallelWorld* CurrentFlavoredWorld; - for (G4int iParticle=0; iParticleentries(); - iParticle++) - CurrentFlavoredWorld = theGlobalFastSimulationManager-> - GetFlavoredWorldForThis(theParticleTable->GetParticle(iParticle)); - if(CurrentFlavoredWorld) - currentScene -> AddRunDurationModel - (new G4FlavoredParallelWorldModel (CurrentFlavoredWorld)); - G4cout << "Ghosts added to the Scene, refresh the view to see it." - << G4endl; - return; - } - G4ParticleDefinition* currentParticle = - theParticleTable->FindParticle(newValues); - if (currentParticle == NULL) { - G4cout << newValues << ": not found this particle name!" << G4endl; - return; - } - G4VFlavoredParallelWorld* worldForThis = - theGlobalFastSimulationManager->GetFlavoredWorldForThis(currentParticle); - if(worldForThis) { - currentScene -> AddRunDurationModel - (new G4FlavoredParallelWorldModel (worldForThis)); - G4cout << "Ghosts added to the Scene, refresh the view to see it." - << G4endl; - } - else G4cout << "There are no ghosts for "< SetGuidance - ( - "...menu of expert commands." - ); - fCommandList.push_back (command); - - //////////////////////////////////////// /vis~/expert/draw_circle //// - //expert \hline - //expert /vis~/expert/draw\_circle & $x$, $y$, $z$, $size$ & - //expert Specify coordinates and world size. \\% - command = new G4UIcommand ("/vis~/expert/draw_circle", this); - command -> SetGuidance ("Specify coordinates x, y, z and world size"); - param = new G4UIparameter ("x", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("y", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("z", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("size", 'd', true); - param -> SetDefaultValue (10.); - command -> SetParameter (param); - fCommandList.push_back (command); - - //////////////////////////////////////// /vis~/expert/draw_line //// - //expert \hline - //expert /vis~/expert/draw\_line & $x_0$, $y_0$, $z_0$, $x_1$, $y_1$, $z_1$ & - //expert Specify coordinates of start and end. \\% - command = new G4UIcommand ("/vis~/expert/draw_line", this); - command -> SetGuidance ("Specify coordinates x0, y0, z0, x1, y1 and z1"); - param = new G4UIparameter ("x0", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("y0", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("z0", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("x1", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("y1", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("z1", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - fCommandList.push_back (command); - - //////////////////////////////////// /vis~/expert/draw_marks_and_show //// - //expert \hline - //expert /vis~/expert/ draw\_marks\_and\_show & $x$, $y$, $z$, $size$ & - //expert Specify coordinates and world size. \\% - command = new G4UIcommand ("/vis~/expert/draw_marks_and_show", this); - command -> SetGuidance ("Specify coordinates x, y, z and world size"); - param = new G4UIparameter ("x", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("y", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("z", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("size", 'd', true); - param -> SetDefaultValue (10.); - command -> SetParameter (param); - fCommandList.push_back (command); - - /*************************************** - //////////////////////////////////// /vis~/expert/draw_physical_volume //// - //expert \hline - //expert /vis~/expert/ draw\_physical\_volume && - //expert A test of - //expert {\tt G4VisManager::Draw (const G4VPhysicalVolume\&},... \\% - command = new G4UIcommand ("/vis~/expert/draw_physical_volume", this); - command -> SetGuidance - ( - "A test of G4VisManager::Draw (const G4VPhysicalVolume&,..." - ); - fCommandList.push_back (command); - **************************************/ - - //////////////////////////////////////// /vis~/expert/draw_polymarkers //// - //expert \hline - //expert /vis~/expert/draw\_polymarkers & $N_\mathrm{spirals}$ & - //expert Draws {\tt G4Polymarker}s in the form of coloured spirals. \\% - command = new G4UIcommand ("/vis~/expert/draw_polymarkers", this); - command -> SetGuidance ("Takes 2 parameters: no. of random sets, type"); - param = new G4UIparameter ("no. of polymarker sets", 'i', true); - param -> SetDefaultValue (1); - command -> SetParameter (param); - param = new G4UIparameter ("marker type", 'i', true); - param -> SetGuidance ("0/1/2/3 = line/dots/circles/squares"); - param -> SetDefaultValue (0); - command -> SetParameter (param); - fCommandList.push_back (command); - - //////////////////////////////////////// /vis~/expert/draw_spiral //// - //expert \hline - //expert /vis~/expert/draw\_spiral && - //expert Draws a {\tt G4Polyline} in the form of a spiral. \\% - command = new G4UIcommand ("/vis~/expert/draw_spiral", this); - command -> SetGuidance - ( - "Draws a G4Polyline in the form of a spiral." - ); - fCommandList.push_back (command); - - //////////////////////////////////////// /vis~/expert/draw_spirals //// - //expert \hline - //expert /vis~/expert/draw\_spirals & $N_\mathrm{spirals}$ & - //expert Draws {\tt G4Polyline}s in the form of coloured spirals. \\% - command = new G4UIcommand ("/vis~/expert/draw_spirals", this); - command -> SetGuidance - ( - "Draws G4Polylines in the form of coloured spirals." - ); - param = new G4UIparameter ("no. of spirals", 'i', true); - param -> SetDefaultValue (1); - command -> SetParameter (param); - fCommandList.push_back (command); - - //////////////////////////////////////// /vis~/expert/draw_square //// - //expert \hline - //expert /vis~/expert/draw\_square & $x$, $y$, $z$, $size$ & - //expert Specify coordinates and world size. \\% - command = new G4UIcommand ("/vis~/expert/draw_square", this); - command -> SetGuidance ("Specify coordinates x, y, z and world size"); - param = new G4UIparameter ("x", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("y", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("z", 'd', true); - param -> SetDefaultValue (0.); - command -> SetParameter (param); - param = new G4UIparameter ("size", 'd', true); - param -> SetDefaultValue (10.); - command -> SetParameter (param); - fCommandList.push_back (command); - -} - -void G4VisManMessenger::DoCommandExpert (const G4String& commandPath, - G4String& newValues) { - - /////////////////////////////////////// /vis~/expert/draw_circle //// - if (commandPath == "/vis~/expert/draw_circle") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - G4double x, y, z, worldSize; - const char* aString = newValues; - G4std::istrstream is((char*) aString); is >> x >> y >> z >> worldSize; - G4Circle circle = G4Circle(G4Point3D(x,y,z)); - circle.SetWorldSize (worldSize); - G4Colour c(0.0, 1.0, 1.0 ); - G4VisAttributes a(c); - circle.SetVisAttributes(&a); - fpVMan->Draw (circle); - } - } - - /////////////////////////////////////// /vis~/expert/draw_line //// - if (commandPath == "/vis~/expert/draw_line") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - G4double x0, y0, z0; - G4double x1, y1, z1; - const char* aString = newValues; - G4std::istrstream is((char*) aString); is >> x0 >> y0 >> z0 >> x1 >> y1 >> z1 ; - - G4Polyline line; - G4Colour c(1.0, 0.0, 0.0); - G4VisAttributes a(c); - line.SetVisAttributes(&a); - line.push_back (G4Point3D (x0,y0,z0)); - line.push_back (G4Point3D (x1,y1,z1)); - fpVMan -> Draw (line); - line.clear (); - } - } - - //////////////////////////////////// /vis~/expert/draw_marks_and_show //// - if (commandPath == "/vis~/expert/draw_marks_and_show") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - - const G4int num_each_marks = 100 ; - const G4double mark_step = 1000.0 ; - G4int i ; - G4double xx, yy, zz ; - - - if (ViewValid ()) { - G4double x, y, z, worldSize; - const char* aString = newValues; - G4std::istrstream is((char*) aString); is >> x >> y >> z >> worldSize; - - // Draw squares - xx = x ; yy = y; zz = z ; - for( i = 0 ; i < num_each_marks ; i++ ) { - G4Square Square = G4Square(G4Point3D(xx,yy,zz)); - Square.SetWorldSize (worldSize); - G4Colour c(1.0, 0.0, 0.0 ); - G4VisAttributes a(c); - Square.SetVisAttributes(&a); - fpVMan->Draw (Square); - - xx += mark_step ; - yy = y ; zz = z ; - } // for - - // Draw circles - xx = x ; yy = y; zz = z ; - for( i = 0 ; i < num_each_marks ; i++ ) { - G4Circle circle = G4Circle (G4Point3D(xx,yy,zz)); - circle.SetWorldSize (worldSize); - G4Colour c(0.0, 1.0, 1.0 ); - G4VisAttributes a(c); - circle.SetVisAttributes(&a); - fpVMan->Draw (circle); - - yy += mark_step ; - xx = x ; zz = z ; - } // for - - // show - fpVMan -> Show (); - - } // if - } - - /**************************************** - ////////////////////////////////// /vis~/expert/draw_physical_volume //// - if (commandPath == "/vis~/expert/draw_physical_volume") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - - // Given a physical volume... - G4VPhysicalVolume* pPhysVol = - fpVMan -> GetCurrentScene ().GetPhysicalVolume (); - - // Given its transformation (normally, this would be known from - // the hits or digis information)... - HepRotation m; - Hep3Vector axis (G4UniformRand(), G4UniformRand(), G4UniformRand()); - m.rotate (twopi * G4UniformRand(), axis); - G4double scale = 1000. * G4UniformRand(); - Hep3Vector v (scale * G4UniformRand(), - scale * G4UniformRand(), - scale * G4UniformRand()); - G4Transform3D transform (m, v); - - // Change attributes - begin snippet. - // pPhysVol is the pointer to the physical volume. - // transform is the required G4Transform3D in the world - // coordinate system. - - // Find the corresponding logical volume... - G4LogicalVolume* pLV = pPhysVol -> GetLogicalVolume (); - - // Copy its visualization attributes into local variable... - const G4VisAttributes* pVA = pLV -> GetVisAttributes (); - G4VisAttributes attribs; // Default vis attributes. - if (pVA) attribs = *pVA; // Set to those of logical volume if any. - - // Modify the visualization attributes... - G4double red = G4UniformRand(); - G4double green = G4UniformRand(); - G4double blue = G4UniformRand(); - G4Colour c (red, green, blue); - attribs.SetColour (c); - attribs.SetForceSolid (true); - - // Draw it... - fpVMan -> Draw (*pPhysVol, attribs, transform); - // Change attributes - end snippet. - } - } - ***********************************/ - - /////////////////////////////////////// /vis~/expert/draw_polymarkers //// - if (commandPath == "/vis~/expert/draw_polymarkers") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - int nPolyMarkers, type; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ;is >> nPolyMarkers >> type; - G4Polymarker::MarkerType realType; - switch (type) { - default: - case 0: realType = G4Polymarker::line; break; - case 1: realType = G4Polymarker::dots; break; - case 2: realType = G4Polymarker::circles; break; - case 3: realType = G4Polymarker::squares; break; - } - G4int i; - G4double a, fa, z, dz, t, dt = M_PI / 20.; - for (int iPolyMarker = 0; iPolyMarker < nPolyMarkers; iPolyMarker++) { - G4double x0 = 2000. * (G4UniformRand() - 0.5); - G4double y0 = 2000. * (G4UniformRand() - 0.5); - G4double z0 = 2000. * (G4UniformRand() - 0.5); - a = 1000. * G4UniformRand(); - fa = 0.99 + 0.01 * G4UniformRand(); - z = 500. * (G4UniformRand() - 0.5); - dz = 50. * (G4UniformRand() - 0.5); - G4Polymarker polymarker; - G4int nPoints = G4int (100 * G4UniformRand()); - G4double tStart = twopi * G4UniformRand(); - for (i = 0, t = tStart; i < nPoints; t += dt, a *= fa, z += dz, i++) { - polymarker.push_back (G4Point3D (x0 + a * cos (t), - y0 + a * sin (t), z0 + z)); - } - G4double red = G4UniformRand(); - G4double green = G4UniformRand(); - G4double blue = G4UniformRand(); - G4Colour c (red, green, blue); - G4VisAttributes a(c); - polymarker.SetVisAttributes(&a); - polymarker.SetMarkerType (realType); - fpVMan -> Draw (polymarker); - } - } - } - - /////////////////////////////////////// /vis~/expert/draw_spiral //// - if (commandPath == "/vis~/expert/draw_spiral") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - G4Polyline line; - G4double t = 0., dt = M_PI / 50.; - G4double a = 2000., fa = 0.999; - G4double z = -500., dz = 1.; - for (int i = 0; i < 1000; t += dt, a *= fa, z += dz, i++) { - line.push_back (G4Point3D (a * cos (t), a * sin (t), z)); - } - fpVMan -> Draw (line); - } - } - - /////////////////////////////////////// /vis~/expert/draw_spirals //// - if (commandPath == "/vis~/expert/draw_spirals") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - int nSpirals; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> nSpirals; - G4int i; - G4double a, fa, z, dz, t, dt = M_PI / 50.; - G4Polyline line; - for (int iSpiral = 0; iSpiral < nSpirals; iSpiral++) { - G4double x0 = 2000. * (G4UniformRand() - 0.5); - G4double y0 = 2000. * (G4UniformRand() - 0.5); - G4double z0 = 2000. * (G4UniformRand() - 0.5); - a = 1000. * G4UniformRand(); - fa = 0.9985 + 0.001 * G4UniformRand(); - z = 500. * (G4UniformRand() - 0.5); - dz = 5. * (G4UniformRand() - 0.5); - G4int nPoints = G4int (1000 * G4UniformRand()); - G4double tStart = twopi * G4UniformRand(); - for (i = 0, t = tStart; i < nPoints; t += dt, a *= fa, z += dz, i++) { - line.push_back (G4Point3D (x0 + a * cos (t), y0 + a * sin (t), z0 + z)); - } - G4Colour c (G4UniformRand(), G4UniformRand(), G4UniformRand()); - G4VisAttributes a(c); - line.SetVisAttributes(&a); - fpVMan -> Draw (line); - line.clear (); - } - } - } - - /////////////////////////////////////// /vis~/expert/draw_square //// - if (commandPath == "/vis~/expert/draw_square") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - if (ViewValid ()) { - G4double x, y, z, worldSize; - const char* aString = newValues; - G4std::istrstream is((char*) aString); is >> x >> y >> z >> worldSize; - G4Square Square = G4Square (G4Point3D (x, y, z)); - // Set attributes - begin snippet. - Square.SetWorldSize (worldSize); - G4Colour c (1.0, 0.0, 0.0 ); - G4VisAttributes a(c); - Square.SetVisAttributes(&a); - // Set attributes - end snippet. - fpVMan->Draw (Square); - } - } - -} diff --git a/source/visualization/management/src/G4VisManMessLights.cc b/source/visualization/management/src/G4VisManMessLights.cc deleted file mode 100644 index 6621c0b907..0000000000 --- a/source/visualization/management/src/G4VisManMessLights.cc +++ /dev/null @@ -1,92 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisManMessLights.cc,v 1.7.2.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. -// Lights sub-menu. - -#include "G4VisManMessenger.hh" - -#include "G4VisManager.hh" -#include "G4UImanager.hh" -#include "G4UIcommand.hh" -#include "G4UIparameter.hh" -#include "G4ios.hh" - -void G4VisManMessenger::AddCommandLights () { - - G4UIcommand* command; - G4UIparameter* param; - - /////////////////////////////////////////////// /vis~/lights/direction //// - //lights \hline - //lights /vis~/lights/direction & $\theta$ $\phi$ & - //lights Set direction from target to light as - //lights $\theta$, $\phi$ (in degrees). \\% - command = new G4UIcommand ("/vis~/lights/direction", this); - command -> SetGuidance - ( - "Set direction from target to light as " - "theta, phi (in degrees)." - ); - param = new G4UIparameter ("theta", 'd', true); - param -> SetGuidance ("degrees"); - param -> SetDefaultValue (0.0); - command -> SetParameter (param); - param = new G4UIparameter ("phi", 'd', true); - param -> SetGuidance ("degrees"); - param -> SetDefaultValue (0.0); - command -> SetParameter (param); - fCommandList.push_back (command); -} - -void G4VisManMessenger::DoCommandLights (const G4String& commandPath, - G4String& newValues) { - - //////////////////////////////////////// /vis~/lights/direction //// - if (commandPath == "/vis~/lights/direction") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/lightsThetaPhi\" or \"/vis/viewer/lightsVector\"."); - G4double theta, phi ; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> theta >> phi; - theta = theta * deg; - phi = phi * deg; - G4double x = sin (theta) * cos (phi); - G4double y = sin (theta) * sin (phi); - G4double z = cos (theta); - G4Vector3D lightpointDirection (x, y, z); - G4ViewParameters& viewParams = fpVMan -> SetCurrentViewParameters(); - viewParams.SetLightpointDirection (lightpointDirection); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Lightpoint direction set to " << lightpointDirection << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } -} diff --git a/source/visualization/management/src/G4VisManMessSet.cc b/source/visualization/management/src/G4VisManMessSet.cc deleted file mode 100644 index 09216129c1..0000000000 --- a/source/visualization/management/src/G4VisManMessSet.cc +++ /dev/null @@ -1,705 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisManMessSet.cc,v 1.12.2.1 2001/06/28 19:16:16 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. -// Set sub-menu. - -#include "G4VisManMessenger.hh" - -#include "G4VisManager.hh" -#include "G4UImanager.hh" -#include "G4UIcommand.hh" -#include "G4UIparameter.hh" -#include "G4UnitsTable.hh" -#include "G4ios.hh" - -void G4VisManMessenger::AddCommandSet () { - - G4UIcommand* command; - G4UIparameter* param; - - /////////////////////////////////////////// /vis~/set/cull_by_density //// - //set \hline - //set /vis~/set/cull\_by\_density & choice, density & - //set Cull (i.e., do not Draw) geometry objects with density less - //set than specified --- on/off and density (g / cm3). \\% - command = new G4UIcommand ("/vis~/set/cull_by_density", this); - command -> SetGuidance - ( - "Cull (i.e., do not Draw) geometry objects with density less" - "\nthan specified - on/off and density (g / cm3)." - ); - param = new G4UIparameter ("Selector", 'c', true); - param -> SetDefaultValue ("?"); - command -> SetParameter (param); - param = new G4UIparameter ("density", 'd', true); - param -> SetDefaultValue (0.01); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////////// /vis~/set/drawing_style //// - //set \hline - //set /vis~/set/drawing\_style & choice & - //set Style of drawing (wireframe, etc.). \\% - command = new G4UIcommand ("/vis~/set/drawing_style", this); - command -> SetGuidance - ( - "Style of drawing (wireframe, etc.)." - ); - param = new G4UIparameter ("Style selector", 'i', true); - param -> SetDefaultValue (-1); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////////// /vis~/set/marker_choices //// - //set \hline - //set /vis~/set/marker\_choices & choice & - //set Choices for marker drawing (hidden by surfaces, etc.). \\% - command = new G4UIcommand ("/vis~/set/marker_choices", this); - command -> SetGuidance - ( - "Chioces for marker drawing (hidden by surfaces, etc.)." - ); - param = new G4UIparameter ("Style selector", 'i', true); - param -> SetDefaultValue (-1); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////////// /vis~/set/rep_style //// - //set \hline - //set /vis~/set/rep\_style & choice & - //set Style of graphics representation for geometrical volumes - //set (polyhedron, NURBS,...). \\% - command = new G4UIcommand ("/vis~/set/rep_style", this); - command -> SetGuidance - ( - "Style of graphics representation for geometrical volumes " - "(polyhedron, NURBS,...)." - ); - param = new G4UIparameter ("Style selector", 'i', true); - param -> SetDefaultValue (-1); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////////// /vis~/set/scene //// - //set \hline - //set /vis~/set/scene & choice & - //set Several ways of setting the scene. - //set For example, choosing a physical volume. \\% - command = new G4UIcommand ("/vis~/set/scene", this); - command -> SetGuidance - ( - "Several ways of setting the scene." - " For example, choosing a physical volume." - ); - param = new G4UIparameter ("Selector", 'i', true); - param -> SetDefaultValue (-1); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////////// /vis~/set/section_plane //// - //set \hline - //set /vis~/set/section & choice, plane & - //set Set plane for drawing section (DCUT). Specify plane by - //set x y z units nx ny nz, e.g., for a y-z plane at x = 1 cm: - //set /vis~/set/section\_plane on 1 0 0 cm 1 0 0 \\% - command = new G4UIcommand ("/vis~/set/section_plane", this); - command -> SetGuidance - ( - "Set plane for drawing section (DCUT). Specify plane by" - "\nx y z units nx ny nz, e.g., for a y-z plane at x = 1 cm:" - "\n/vis~/set/section_plane on 1 0 0 cm 1 0 0" - ); - param = new G4UIparameter ("Selector", 'c', true); - param -> SetDefaultValue ("?"); - command -> SetParameter (param); - param = new G4UIparameter ("x", 'd', true); - param -> SetDefaultValue (0); - param -> SetGuidance ("Coordinate of point on the plane."); - command -> SetParameter (param); - param = new G4UIparameter ("y", 'd', true); - param -> SetDefaultValue (0); - param -> SetGuidance ("Coordinate of point on the plane."); - command -> SetParameter (param); - param = new G4UIparameter ("z", 'd', true); - param -> SetDefaultValue (0); - param -> SetGuidance ("Coordinate of point on the plane."); - command -> SetParameter (param); - param = new G4UIparameter ("units", 's', true); - param -> SetDefaultValue ("mm"); - param -> SetGuidance ("mm, cm, or m."); - command -> SetParameter (param); - param = new G4UIparameter ("nx", 'd', true); - param -> SetDefaultValue (1); - param -> SetGuidance ("Component of plane normal."); - command -> SetParameter (param); - param = new G4UIparameter ("ny", 'd', true); - param -> SetDefaultValue (0); - param -> SetGuidance ("Component of plane normal."); - command -> SetParameter (param); - param = new G4UIparameter ("nz", 'd', true); - param -> SetDefaultValue (0); - param -> SetGuidance ("Component of plane normal."); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////////// /vis~/set/sides //// - //set \hline - //set /vis~/set/sides & n & - //set Number of sides per circle in polygon approximation. \\% - command = new G4UIcommand ("/vis~/set/sides", this); - command -> SetGuidance - ( - "Number of sides per circle in polygon approximation." - ); - param = new G4UIparameter ("No. of sides", 'i', true); - param -> SetDefaultValue (24); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////////// /vis~/set/verbose ////// - //set \hline - //set /vis~/set/verbose & integer & - //set Controls amount of printing (0 = quiet). \\% - command = new G4UIcommand ("/vis~/set/verbose", this); - command -> SetGuidance - ( - "Controls amount of printing (0 = quiet)." - ); - param = new G4UIparameter ("Verbosity level", 'i', true); - param -> SetDefaultValue (-1); - param -> SetGuidance ("0: quiet, >0: verbose"); - command -> SetParameter (param); - fCommandList.push_back (command); - - /////////////////////////////////////////// /vis~/set/view ///////// - //set \hline - //set /vis~/set/view & choice & - //set Make this view current. \\% - command = new G4UIcommand ("/vis~/set/view", this); - command -> SetGuidance - ( - "Make this view current." - ); - param = new G4UIparameter ("View selector", 'i', true); - param -> SetDefaultValue (-1); - command -> SetParameter (param); - fCommandList.push_back (command); -} - -void G4VisManMessenger::DoCommandSet (const G4String& commandPath, - G4String& newValues) { - - /////////////////////////////////////////// /vis~/set/cull_by_density //// - if (commandPath == "/vis~/set/cull_by_density") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/set/culling\"."); - G4String choice; - G4double density; // Units in this section are g / cm3 - WARNING!!! - const char* t = newValues; - G4std::istrstream is ((char*)t); is >> choice >> density; - G4int iSelector = -1; - if (choice.compareTo ("off",G4String::ignoreCase) == 0) iSelector = 0; - if (choice.compareTo ("on",G4String::ignoreCase) == 0) iSelector = 1; - if (iSelector < 0) { - G4cout << "Choice not recognised (on/off)." << G4endl; - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - G4cout << "Culling by density is currently: "; - if (getVP.IsDensityCulling ()) G4cout << "on"; - else G4cout << "off"; - G4cout << "\nDensity cut is currently: " - << getVP.GetVisibleDensity () * cm3 / g << " g/cm3."; - G4cout << G4endl; - } - else { - G4ViewParameters& setVP = fpVMan -> SetCurrentViewParameters (); - switch (iSelector) { - case 0: - setVP.SetDensityCulling (false); - break; - case 1: - setVP.SetDensityCulling (true); - setVP.SetVisibleDensity (density * g / cm3); - break; - default: G4cout << "Choice not recognised (on/off).\n"; break; - } - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - G4cout << "Culling by density is now: "; - if (getVP.IsDensityCulling ()) G4cout << "on"; - else G4cout << "off"; - G4cout << "\nDensity cut is now: " - << getVP.GetVisibleDensity () * cm3 / g << " g/cm3."; - G4cout << G4endl; - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (getVP); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } - - /////////////////////////////////////////// /vis~/set/drawing_style //// - if (commandPath == "/vis~/set/drawing_style") { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/set/style\"."); - G4int iStyle; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> iStyle; - if (iStyle < 0 || iStyle > 3) { - G4cout << "Available drawing styles:"; - G4cout << "\n 0) wireframe"; - G4cout << "\n 1) hidden line removal"; - G4cout << "\n 2) solid (hidden surface removal)"; - G4cout << "\n 3) solids with edges (hidden line, hidden surface removal)"; - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - //if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "\nDrawing style is currently" - << getVP.GetDrawingStyle (); - G4cout << "\nCulling is currently "; - if (getVP.IsCulling ()) G4cout << "on"; - else G4cout << "off"; - G4cout << "\nCulling of invisible objects is currently "; - if (getVP.IsCullingInvisible ()) G4cout << "on"; - else G4cout << "off"; - G4cout << "\nDensity culling is currently "; - if (getVP.IsDensityCulling ()) { - G4cout << "on - invisible if density less than " - << getVP.GetVisibleDensity () / (1. * g / cm3) << " g cm^-3"; - } - else G4cout << "off"; - G4cout << "\nCovered daughters are "; - if (getVP.IsCullingCovered ()) { - G4cout << "not"; - } - G4cout << " drawn."; - G4cout << "\nTo override culling, /vis~/set/culling off." - "\nTo set/reset culling of invisible objects," - "\n/vis~/set/cull_invisible_objects on/off." - "\nTo reset density culling, /vis~/set/cull_by_density off." - "\nTo set density culling, e.g., /vis~/set/cull_by_density on 0.01." - << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - //} - G4cout << "\nChoose by specifying integer parameter."; - G4cout << G4endl; - } - else { - G4ViewParameters& setVP = fpVMan -> SetCurrentViewParameters (); - switch (iStyle) { - default: - case 0: - setVP.SetDrawingStyle (G4ViewParameters::wireframe); - break; - case 1: - setVP.SetDrawingStyle (G4ViewParameters::hlr); - break; - case 2: - setVP.SetDrawingStyle (G4ViewParameters::hsr); - break; - case 3: - setVP.SetDrawingStyle (G4ViewParameters::hlhsr); - break; - } - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - //if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Drawing style changed to " - << getVP.GetDrawingStyle (); - G4cout << "\nCulling is now "; - if (getVP.IsCulling ()) G4cout << "on"; - else G4cout << "off"; - G4cout << "\nCulling of invisible objects is now "; - if (getVP.IsCullingInvisible ()) G4cout << "on"; - else G4cout << "off"; - G4cout << "\nDensity culling is now "; - if (getVP.IsDensityCulling ()) { - G4cout << "on - invisible if density less than " - << getVP.GetVisibleDensity () / (1. * g / cm3) << " g cm^-3"; - } - else G4cout << "off"; - G4cout << "\nCovered daughters are "; - if (getVP.IsCullingCovered ()) { - G4cout << "not"; - } - G4cout << " drawn."; - G4cout << "\nTo override culling, /vis~/set/culling off." - "\nTo set/reset culling of invisible objects," - "\n/vis~/set/cull_invisible_objects on/off." - "\nTo reset density culling, /vis~/set/cull_by_density off." - "\nTo set density culling, e.g., /vis~/set/cull_by_density on 0.01." - << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - //} - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (getVP); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } - - //////////////////////////////////////// /vis~/set/marker_choices //// - if (commandPath == "/vis~/set/marker_choices") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/set/hiddenMarker\"."); - G4int iChoice; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> iChoice; - if (iChoice < 0 || iChoice > 1) { - G4cout << "Available marker choices:"; - G4cout << "\n 0) not hidden"; - G4cout << "\n 1) hidden by surfaces"; - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - //if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "\nMarker choice is currently: "; - if (getVP.IsMarkerNotHidden ()) G4cout << "not"; - G4cout << " hidden by surfaces."; - //} - G4cout << "\nChoose by specifying integer parameter."; - G4cout << G4endl; - } - else { - G4ViewParameters& setVP = fpVMan -> SetCurrentViewParameters (); - switch (iChoice) { - default: - case 0: - setVP.SetMarkerNotHidden (); - break; - case 1: - setVP.SetMarkerHidden (); - break; - } - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - //if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Marker choice is now: "; - if (getVP.IsMarkerNotHidden ()) G4cout << "not"; - G4cout << " hidden by surfaces." << G4endl; - //} - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (getVP); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } - - - /////////////////////////////////////////// /vis~/set/section_plane //// - if (commandPath == "/vis~/set/section_plane") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/set/section_plane\"."); - G4String choice, unit; - G4double x, y, z, nx, ny, nz; - const char* t = newValues; - G4std::istrstream is ((char*)t); is >> choice >> x >> y >> z >> unit - >> nx >> ny >> nz; - G4int iSelector = -1; - if (choice.compareTo ("off",G4String::ignoreCase) == 0) iSelector = 0; - if (choice.compareTo ("on",G4String::ignoreCase) == 0) iSelector = 1; - if (iSelector < 0) { - G4cout << "Choice not recognised (on/off)." << G4endl; - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - G4cout << "Section drawing is currently: "; - if (getVP.IsSection ()) G4cout << "on"; - else G4cout << "off"; - G4cout << "\nSection plane is currently: " - << getVP.GetSectionPlane (); - G4cout << G4endl; - } - else { - G4ViewParameters& setVP = fpVMan -> SetCurrentViewParameters (); - G4double F; - switch (iSelector) { - case 0: - setVP.UnsetSectionPlane (); - break; - case 1: - F = G4UnitDefinition::GetValueOf (unit); - x *= F; y *= F; z *= F; - setVP.SetSectionPlane (G4Plane3D (G4Normal3D (nx, ny, nz), - G4Point3D (x, y, z))); - setVP.SetViewpointDirection (G4Normal3D (nx, ny, nz)); - break; - default: G4cout << "Choice not recognised (on/off).\n"; break; - } - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - G4cout << "Section drawing is now: "; - if (getVP.IsSection ()) G4cout << "on"; - else G4cout << "off"; - G4cout << "\nSection plane is now: " - << getVP.GetSectionPlane (); - G4cout << G4endl; - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (getVP); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } - - /////////////////////////////////////////// /vis~/set/sides //// - if (commandPath == "/vis~/set/sides") { - G4VisManager::PrintCommandDeprecation - ("Use \"/vis/viewer/set/lineSegmentsPerCircle\"."); - G4int nSides; - const char* t = newValues; - G4std::istrstream is ((char*)t); is >> nSides; - G4cout << "Number of sides per circle in polygon approximation is " - << nSides << G4endl; - fpVMan -> SetCurrentViewParameters ().SetNoOfSides (nSides); - const G4ViewParameters& getVP = fpVMan -> GetCurrentViewParameters (); - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (getVP); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - - /////////////////////////////////////////// /vis~/set/rep_style //// - if (commandPath == "/vis~/set/rep_style") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - G4int iStyle; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> iStyle; - if (iStyle < 0 || iStyle > 1) { - G4cout << "Available representation styles:"; - G4cout << "\n 0) polyhedron"; - G4cout << "\n 1) NURBS"; - G4cout << "\nChoose by specifying integer parameter."; - G4cout << G4endl; - } - else { - G4ViewParameters::RepStyle repStyle; - switch (iStyle) { - default: - case 0: repStyle = G4ViewParameters::polyhedron; break; - case 1: repStyle = G4ViewParameters::nurbs; break; - } - fpVMan -> SetCurrentViewParameters ().SetRepStyle (repStyle); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Representation style changed to " - << G4int(repStyle) << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - G4VViewer* pView = fpVMan -> GetCurrentViewer (); - if (pView) { - // Copy current view parameters into current view. - pView -> SetViewParameters (fpVMan -> GetCurrentViewParameters ()); - } - G4cout << "Issue Draw or refresh to see effect." << G4endl; - } - } - - /////////////////////////////////// /vis~/set/scene //// - if (commandPath == "/vis~/set/scene") { - G4VisManager::PrintCommandDeprecation - ("This command will no longer be maintained."); - static G4int iState = 0; - static G4int nOptions = 2; - G4int iSelector; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> iSelector; - switch (iState) { - case 0: - if (iSelector < 0 || iSelector > nOptions) { - G4cout << "Available options:"; - G4cout << "\n 0) reset selection algorithm"; - G4cout << "\n 1) select physical volume"; - G4cout << "\nChoose by specifying integer parameter."; - G4cout << G4endl; - } - else { - switch (iSelector) { - default: - case 0: - G4cout << "Resetting from state " << iState << G4endl; - iState = 0; nOptions = 2; - break; - case 1: - G4cout << "Option " << iSelector - << " selected from state " << iState << G4endl; - iState = 1; nOptions = 1; - break; - } - } - break; - case 1: - if (iSelector < 0 || iSelector > nOptions) { - G4cout << "Available options:"; - G4cout << "\n 0) reset selection algorithm"; - G4cout << "\nChoose by specifying integer parameter."; - G4cout << G4endl; - } - else { - switch (iSelector) { - default: - case 0: - G4cout << "Resetting from state " << iState << G4endl; - iState = 0; nOptions = 2; - break; - } - } - break; - } - /**************************************************** - G4cin.tie (&G4cout); // Tie streams together so output is - // flushed before any input. - G4cout << "Temporary algorithm..." << G4endl; - - G4VPhysicalVolume* pVPV = - fpVMan -> GetCurrentScene ().GetPhysicalVolume (); - G4VPhysicalVolume* pNewVPV = 0; - - if (pVPV) { - G4cout << "Current volume is " << pVPV -> GetName () << G4endl; - - G4VPhysicalVolume* pMother = pVPV -> GetMother (); - if (pMother) { - char c; - do { - G4cout << "Its mother is " << pMother -> GetName () - << ". Select? [y/n]: "; - c = G4cin.get (); - if (c != '\n') while (G4cin.get () != '\n'); // Read on to newline. - } while (c != 'y' && c != 'Y' && - c != 'n' && c != 'N'); - if (c == 'y' || c == 'Y') { - pNewVPV = pMother; - } - } - - if (!pNewVPV) { - G4int nDaughters = pVPV -> GetLogicalVolume () -> GetNoDaughters (); - G4int iDaughter; - if (nDaughters) { - do { - G4cout << "It has " << nDaughters << " daughters. Select [0-" - << nDaughters - 1 << "] (<0 to abandon): "; - G4cin >> iDaughter; - while (G4cin.get () != '\n'); // Read on to newline. - } while (iDaughter >= nDaughters); - if (iDaughter >= 0) { - G4VPhysicalVolume* pDaughter = - pVPV -> GetLogicalVolume () -> GetDaughter (iDaughter); - pNewVPV = pDaughter; - } - } - } - - if (pNewVPV) { - fpVMan -> AddToCurrentSceneData (pNewVPV); - fpVMan -> Clear (); // Comprehensive clear. - fpVMan -> Draw (); - fpVMan -> Show (); - } - else { - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Nothing selected; nothing changed." << G4endl; - } - } - } - else { - G4cerr << "No physical volume available." << G4endl; - } - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentScene (); - } - *********************************************************/ - } - - /////////////////////////////////////////// /vis~/set/verbose ////// - if (commandPath == "/vis~/set/verbose") { - G4VisManager::PrintCommandDeprecation("Use \"/vis/verbose\"."); - G4int vLevel; - const char* t = newValues; - G4std::istrstream is ((char*)t); is >> vLevel; - if (vLevel < 0 ) { - G4cout << "Verbosity is " << fpVMan -> GetVerboseLevel () << G4endl; - } - else { - fpVMan -> SetVerboseLevel (vLevel); - G4cout << "Verbosity set to " << fpVMan -> GetVerboseLevel () << G4endl; - } - } - - /////////////////////////////////////////// /vis~/set/view ///////// - if (commandPath == "/vis~/set/view") { - G4VisManager::PrintCommandDeprecation("Use \"/vis/viewer/select\"."); - // Make List of available views. - G4ViewerList vList; // Keep temporary list of viewers. - const G4SceneHandlerList& gml = fpVMan -> GetAvailableSceneHandlers (); - G4int nViewTotal = 0; - G4int iGM, nScenes = gml.size (); - for (iGM = 0; iGM < nScenes; iGM++) { - const G4ViewerList& views = gml [iGM] -> GetViewerList (); - int nViews = views.size (); - for (int iView = 0; iView < nViews; iView++) { - G4VViewer* pView = views [iView]; - vList.push_back (pView); - nViewTotal++; - } - } - if (nViewTotal == 0) { - G4cerr << "No views to select." << G4endl; - } - else { - // Select view and make it current. - G4int iSelect; - const char* aString = newValues; - G4std::istrstream is((char*) aString) ; is >> iSelect; - if (iSelect < 0 || iSelect >= nViewTotal) { - G4cout << "Available views:"; - for (int iView = 0; iView < nViewTotal; iView++) { - const G4VViewer* pView = vList [iView]; - G4cout << "\n " << iView << ") " << pView -> GetName (); - } - G4cout << "\nChoose by specifying integer parameter."; - G4cout << G4endl; - } - else { - G4VViewer* pView = vList[iSelect]; - fpVMan -> SetCurrentViewer (pView); - if (fpVMan -> GetVerboseLevel () > 0) { - G4cout << "Current view now " << pView -> GetName () << G4endl; - if (fpVMan -> GetVerboseLevel () > 1) { - fpVMan -> PrintCurrentView (); - } - } - } - } - } -} diff --git a/source/visualization/management/src/G4VisManMessenger.cc b/source/visualization/management/src/G4VisManMessenger.cc deleted file mode 100644 index fa3de21045..0000000000 --- a/source/visualization/management/src/G4VisManMessenger.cc +++ /dev/null @@ -1,139 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisManMessenger.cc,v 1.5.2.1 2001/06/28 19:16:17 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// GEANT4 Visualization Manager Messenger - John Allison 22nd July 1996. - -#include "G4VisManMessenger.hh" - -#include "G4VisManager.hh" - -#include "G4UImanager.hh" -#include "G4UIcommand.hh" -#include "G4UIparameter.hh" - -G4VisManMessenger::G4VisManMessenger (G4VisManager* pVMan): -fpVMan (pVMan) -{ - G4UIcommand* command; - - ///////////////////////////////////////////////// /vis~/... //// - command = new G4UIcommand ("/vis~/", this); - command -> SetGuidance ("Deprecated visualization commands."); - fCommandList.push_back (command); - - ////////////////////////////////////////////// /vis~/*/... //// - AddCommandCamera (); // Define the /vis~/camera/ sub-commands. - // AddCommandClear (); // Define the /vis~/clear/ sub-commands. - // AddCommandCopy (); // Define the /vis~/copy/ sub-commands. - // AddCommandCreateScene (); // Define the /vis~/create_scene/ sub-commands. - AddCommandCreateView (); // Define the /vis~/create_view/ sub-commands. - AddCommandDraw (); // Define the /vis~/draw/ sub-commands. - AddCommandLights (); // Define the /vis~/lights/ sub-commands. - // AddCommandPrint (); // Define the /vis~/print/ sub-commands. - // AddCommandRefresh (); // Define the /vis~/refresh/ sub-commands. - AddCommandSet (); // Define the /vis~/set/ sub-commands. - // AddCommandShow (); // Define the /vis~/show/ sub-commands. - AddCommandExpert (); // Define the /vis~/expert/ sub-commands. - -} - -G4VisManMessenger::~G4VisManMessenger () { - G4std::vector::iterator i; - for (i = fCommandList.begin(); - i != fCommandList.end(); - ++i) { - delete *i; - } -} - -void G4VisManMessenger::SetNewValue (G4UIcommand* command, G4String newValues) -{ - G4String commandPath = command -> GetCommandPath (); - - if (commandPath.contains ("/vis~/camera/")) { - DoCommandCamera (commandPath, newValues); - } - - // if (commandPath.contains ("/vis~/clear/")) { - // DoCommandClear (commandPath, newValues); - // } - - // if (commandPath.contains ("/vis~/copy/")) { - // DoCommandCopy (commandPath, newValues); - // } - - // if (commandPath.contains ("/vis~/create_scene/")) { - // DoCommandCreateScene (commandPath, newValues); - // } - - if (commandPath.contains ("/vis~/create_view/")) { - DoCommandCreateView (commandPath, newValues); - } - - if (commandPath.contains ("/vis~/draw/")) { - DoCommandDraw (commandPath, newValues); - } - - if (commandPath.contains ("/vis~/lights/")) { - DoCommandLights (commandPath, newValues); - } - - // if (commandPath.contains ("/vis~/print/")) { - // DoCommandPrint (commandPath, newValues); - // } - - // if (commandPath.contains ("/vis~/refresh/")) { - // DoCommandRefresh (commandPath, newValues); - // } - - if (commandPath.contains ("/vis~/set/")) { - DoCommandSet (commandPath, newValues); - } - - // if (commandPath.contains ("/vis~/show/")) { - // DoCommandShow (commandPath, newValues); - // } - - if (commandPath.contains ("/vis~/expert/")) { - DoCommandExpert (commandPath, newValues); - } - -} - -G4String G4VisManMessenger::GetCurrentValue (G4UIcommand* command) { - return ""; -} - -G4bool G4VisManMessenger::ViewValid () { - if (fpVMan -> IsValidView ()) { - return true; - } - else { - G4cerr << "Invalid view (have you selected a graphics system?)" << G4endl; - return false; - } -} diff --git a/source/visualization/management/src/G4VisManager.cc b/source/visualization/management/src/G4VisManager.cc index 1b794f170f..3c0f4d0a34 100644 --- a/source/visualization/management/src/G4VisManager.cc +++ b/source/visualization/management/src/G4VisManager.cc @@ -21,14 +21,21 @@ // ******************************************************************** // // -// $Id: G4VisManager.cc,v 1.26.2.1 2001/06/28 19:16:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisManager.cc,v 1.43 2001/12/03 11:46:38 stesting Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // GEANT4 Visualization Manager - John Allison 02/Jan/1996. #include "G4VisManager.hh" +#include "G4VisCommands.hh" +#include "G4VisCommandsCompound.hh" +#include "G4VisCommandsScene.hh" +#include "G4VisCommandsSceneAdd.hh" +#include "G4VisCommandsSceneHandler.hh" +#include "G4VisCommandsViewer.hh" +#include "G4VisCommandsViewerSet.hh" #include "G4UImanager.hh" #include "G4VisStateDependent.hh" #include "G4UIdirectory.hh" @@ -52,12 +59,6 @@ #include "G4ModelingParameters.hh" #include "G4TransportationManager.hh" -#include "G4VisManMessenger.hh" -// TEMPORARY /vis/ -> /vis~/ equivalence. -#include "G4VisToOldVisCommands.hh" - -#include "G4ios.hh" - G4VisManager* G4VisManager::fpInstance = 0; G4VisManager::G4VisManager (): @@ -66,8 +67,8 @@ G4VisManager::G4VisManager (): fpScene (0), fpSceneHandler (0), fpViewer (0), - fVerbose (0), - fpMessenger (0), + fVerbosity (warnings), + fVerbose (1), fpStateDependent (0) // All other objects use default constructors. { if (fpInstance) { @@ -81,10 +82,33 @@ G4VisManager::G4VisManager (): fpStateDependent = new G4VisStateDependent (this); // No need to delete this; G4StateManager does this. - G4cout << "Constructing Visualization Manager...." << G4endl; - // Note: You might think that we could register graphics systems - // and messengers here but we have to give the subclass time to - // instantiate. So the user has to invoke Initialise(). + if (fVerbosity >= startup) { + G4cout << "Visualization Manager instantiating..." << G4endl; + } + + // Note: The specific graphics systems must be instantiated in a + // higher level library to avoid circular dependencies. Also, + // some specifically need additional external libararies that the + // user must supply. Therefore we ask the user to implement + // RegisterGraphicsSystems() in a subclass. We have to wait for + // the subclass to instantiate so RegisterGraphicsSystems() cannot + // be called from this constructor; it is called from + // Initialise(). So we ask the user: + // (a) to write a subclass and implement + // RegisterGraphicsSystems(). See + // visualization/include/MyVisManager.hh/cc as an example. + // (b) instantiate the subclass. + // (c) invoke the Initialise() method of the subclass. + // For example: + // ... + // #ifdef G4VIS_USE + // // Instantiate and initialise Visualization Manager. + // G4VisManager* visManager = new MyVisManager; + // visManager -> SetVerboseLevel (Verbose); + // visManager -> Initialise (); + // #endif + // // (Don't forget to delete visManager;) + // ... } } @@ -100,12 +124,13 @@ G4VisManager::~G4VisManager () { for (i = 0; i < fAvailableGraphicsSystems.size (); ++i) { delete fAvailableGraphicsSystems[i]; } - G4cout << "Graphics systems deleted." << G4endl; - G4cout << "VisManager deleting." << G4endl; + if (fVerbosity >= startup) { + G4cout << "Graphics systems deleted." << G4endl; + G4cout << "Visualization Manager deleting..." << G4endl; + } for (i = 0; i < fMessengerList.size (); ++i) { delete fMessengerList[i]; } - delete fpMessenger; for (i = 0; i < fDirectoryList.size (); ++i) { delete fDirectoryList[i]; } @@ -121,22 +146,24 @@ G4VisManager* G4VisManager::GetInstance () { void G4VisManager::Initialise () { - G4cout << "Initialising Visualization Manager...." << G4endl; + if (fVerbosity >= startup) { + G4cout << "Visualization Manager initialising..." << G4endl; + } - if (fVerbose > 0) { + if (fVerbosity >= parameters) { PrintAllGraphicsSystems (); PrintInstalledGraphicsSystems (); G4cout << "\nYou have instantiated your own Visualization Manager, inheriting" - "\n G4VisManager and implementing RegisterGraphicsSystems. An example" - "\n class MyVisManager is provided which is controlled by the" - "\n following environment variables:" + "\n G4VisManager and implementing RegisterGraphicsSystems(), in which" + "\n you should, normally, instantiate drivers which do not need" + "\n external packages or libraries, namely:" + "\n ASCIITree, DAWNFILE, HepRepFile, GAGTree, RayTracer, VRMLFILE" + "\n and, optionally, drivers under control of the following" + "\n environment variables:" #ifdef G4VIS_BUILD_DAWN_DRIVER "\n G4VIS_USE_DAWN" #endif -#ifdef G4VIS_BUILD_DAWNFILE_DRIVER - "\n G4VIS_USE_DAWNFILE" -#endif #ifdef G4VIS_BUILD_OPACS_DRIVER "\n G4VIS_USE_OPACS" #endif @@ -155,37 +182,32 @@ void G4VisManager::Initialise () { #ifdef G4VIS_BUILD_VRML_DRIVER "\n G4VIS_USE_VRML" #endif -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER - "\n G4VIS_USE_VRMLFILE" -#endif -#ifdef G4VIS_BUILD_RAYTRACER_DRIVER - "\n G4VIS_USE_RAYTRACER" -#endif -#ifdef G4VIS_BUILD_ASCIITREE_DRIVER - "\n G4VIS_USE_ASCIITREE" -#endif -#ifdef G4VIS_BUILD_GAGTREE_DRIVER - "\n G4VIS_USE_GAGTREE" -#endif - "\n Thus, in your main() you have something like:" + "\n See visualization/include/MyVisManager.hh/cc, for example." + "\n In your main() you will have something like:" + "\n #ifdef G4VIS_USE" "\n G4VisManager* visManager = new MyVisManager;" + "\n visManager -> SetVerboseLevel (Verbose);" "\n visManager -> Initialize ();" + "\n #endif" "\n (Don't forget to delete visManager;)" << G4endl; } - - G4cout << "Registering graphics systems...." << G4endl; + + if (fVerbosity >= startup) { + G4cout << "Registering graphics systems..." << G4endl; + } RegisterGraphicsSystems (); + if (fVerbosity >= confirmations) { + G4cout << + "\nYou have successfully chosen to use the following graphics systems." + << G4endl; + PrintAvailableGraphicsSystems (); + } + RegisterMessengers (); - // Remaining commands - not yet template-ised. - fpMessenger = new G4VisManMessenger (this); - - // TEMPORARY /vis/ -> /vis~/ equivalence. - fMessengerList.push_back (new G4VisToOldVisCommands); - fInitialised = true; } @@ -194,195 +216,78 @@ void G4VisManager::Initialise () { void G4VisManager::Enable() { if (IsValidView ()) { - G4cout << "G4VisManager::Enable: visualization enabled." << G4endl; + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::Enable: visualization enabled." << G4endl; + } } else { - G4cout << - "G4VisManager::Enable: visualization remains disabled for above reasons." - "\n Rectifying with valid vis commands will automatically enable." - << G4endl; + if (fVerbosity >= warnings) { + G4cout << + "G4VisManager::Enable: WARNING: visualization remains disabled for" + "\n above reasons. Rectifying with valid vis commands will" + "\n automatically enable." + << G4endl; + } } } void G4VisManager::Disable() { fpConcreteInstance = 0; - G4cout << - "G4VisManager::Disable: visualization disabled." - "\n Note that it will become enabled after some valid vis commands." - << G4endl; + if (fVerbosity >= confirmations) { + G4cout << + "G4VisManager::Disable: visualization disabled." + "\n Note that it will become enabled after some valid vis commands." + << G4endl; + } } const G4GraphicsSystemList& G4VisManager::GetAvailableGraphicsSystems () { G4int nSystems = fAvailableGraphicsSystems.size (); if (nSystems == 0) { - G4cout << "G4VisManager::GetAvailableGraphicsSystems: WARNING: no graphics" - " system available!" - "\n 1) Did you have environment variables G4VIS_BUILD_xxxx_DRIVER set" - "\n when you compiled/built the visualization code?" - "\n 2) Did you instantiate your own Visualization Manager and forget" - "\n to implement RegisterGraphicsSystems correctly?" - "\n 3) You can register your own graphics system, e.g.," - "\n G4VisManager::GetInstance () ->" - "\n RegisterGraphicsSystem (new MyGraphicsSystem);)" - << G4endl; + if (fVerbosity >= warnings) { + G4cout << "G4VisManager::GetAvailableGraphicsSystems: WARNING: no" + "\n graphics system available!" + "\n 1) Did you have environment variables G4VIS_BUILD_xxxx_DRIVER set" + "\n when you compiled/built the visualization code?" + "\n 2) Did you instantiate your own Visualization Manager and forget" + "\n to implement RegisterGraphicsSystems correctly?" + "\n 3) You can register your own graphics system, e.g.," + "\n visManager->RegisterGraphicsSystem(new MyGraphicsSystem);)" + "\n after instantiating your vis manager and before" + "\n visManager->Initialize()." + << G4endl; + } } return fAvailableGraphicsSystems; } G4bool G4VisManager::RegisterGraphicsSystem (G4VGraphicsSystem* pSystem) { - if (pSystem -> GetFunctionality () == G4VGraphicsSystem::noFunctionality) { - G4cout << "G4VisManager::RegisterGraphicsSystem: WARNING: attempt to" - "\n register a \"no functionality\" graphics system, probably an" - "\n unbuilt system, i.e., a system not available locally. Please" - "\n consult your computer manager. System was " - << pSystem -> GetName (); - if (pSystem -> GetNickname () != "") { - G4cout << " (" << pSystem -> GetNickname () << ")"; - } - G4cout << G4endl; - return false; - } - else { + G4bool happy(true); + if (pSystem) { fAvailableGraphicsSystems.push_back (pSystem); - if (fVerbose > 0) { + if (fVerbosity >= confirmations) { G4cout << "G4VisManager::RegisterGraphicsSystem: " - << pSystem -> GetName (); + << pSystem -> GetName (); if (pSystem -> GetNickname () != "") { G4cout << " (" << pSystem -> GetNickname () << ")"; } G4cout << " registered." << G4endl; } - return true; } -} - -void G4VisManager::CopyViewParameters () { - if (IsValidView ()) { - fVP = fpViewer -> GetViewParameters (); - } -} - -/*********** -void G4VisManager::Clear () { - - // Clear current scene and current view, marking all its views as - // needing refreshing. This is a comprehensive clear which clears - // both framebuffers of a double buffered system and clears the - // scene's graphics databse (display lists, etc.) and clears the - // current scene data. - - if (IsValidView ()) { - - fpViewer -> ClearView (); - // Clears current buffer, i.e., back buffer in case of double - // buffered system. - - fpViewer -> FinishView (); - // Swaps buffers of double buffered systems. - - fpViewer -> ClearView (); - // Clears the swapped buffer. - - fpViewer -> NeedKernelVisit (); - // Informs all views of need to revisit kernel. - - fpSceneHandler -> ClearStore (); - // Clears the graphics database (display lists) if any. - - fSD.Clear (); - fpSceneHandler -> SetSceneData (fSD); - // Clears current scene data - then updates scene. - } -} -*****************/ - -/**************** -void G4VisManager::ClearScene () { - - // Clear current scene, marking all its views as needing refreshing. - // Clears the scene handler's graphics database (display lists, etc.) - - if (IsValidView ()) { - - fpViewer -> NeedKernelVisit (); - // Informs all views of need to revisit kernel. - - fpSceneHandler -> ClearStore (); - // Clears the graphics database (display lists) if any. - - fSD.Clear (); - fpSceneHandler -> SetSceneData (fSD); - // Clears current scene data - then updates scene. - } -} -********************/ - -void G4VisManager::ClearView () { - - // Clear visible window of current view (both buffers of a double - // buffered system). - - if (IsValidView ()) { - - fpViewer -> ClearView (); - // Clears current buffer, i.e., back buffer in case of double - // buffered system. - - fpViewer -> FinishView (); - // Swaps buffers of double buffered systems. - - fpViewer -> ClearView (); - // Clears the swapped buffer. - } -} - -void G4VisManager::Draw () { - if (IsValidView ()) { - fpViewer -> SetViewParameters (fVP); - fpViewer -> SetView (); - fpViewer -> DrawView (); - } -} - -void G4VisManager::Show () { - if (IsValidView ()) { - fpViewer -> ShowView (); - } -} - -void G4VisManager::Draw (const G4Polyline& line, - const G4Transform3D& objectTransform) { - if (IsValidView ()) { - G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); - G4VModel* pModel = new G4NullModel (pMP); - fpSceneHandler -> SetModel (pModel); - fpSceneHandler -> BeginPrimitives (objectTransform); - fpSceneHandler -> AddPrimitive (line); - fpSceneHandler -> EndPrimitives (); - fpSceneHandler -> SetModel (0); - delete pModel; - delete pMP; - } -} - -void G4VisManager::Draw (const G4Text& text, - const G4Transform3D& objectTransform) { - if (IsValidView ()) { - G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); - G4VModel* pModel = new G4NullModel (pMP); - fpSceneHandler -> SetModel (pModel); - fpSceneHandler -> BeginPrimitives (objectTransform); - fpSceneHandler -> AddPrimitive (text); - fpSceneHandler -> EndPrimitives (); - fpSceneHandler -> SetModel (0); - delete pModel; - delete pMP; + else { + if (fVerbosity >= errors) { + G4cout << "G4VisManager::RegisterGraphicsSystem: null pointer!" + < CreateModelingParameters (); G4VModel* pModel = new G4NullModel (pMP); fpSceneHandler -> SetModel (pModel); @@ -395,54 +300,10 @@ void G4VisManager::Draw (const G4Circle& circle, } } -void G4VisManager::Draw (const G4Square& Square, - const G4Transform3D& objectTransform) { - if (IsValidView ()) { - G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); - G4VModel* pModel = new G4NullModel (pMP); - fpSceneHandler -> SetModel (pModel); - fpSceneHandler -> BeginPrimitives (objectTransform); - fpSceneHandler -> AddPrimitive (Square); - fpSceneHandler -> EndPrimitives (); - fpSceneHandler -> SetModel (0); - delete pModel; - delete pMP; - } -} - -void G4VisManager::Draw (const G4Polymarker& polymarker, - const G4Transform3D& objectTransform) { - if (IsValidView ()) { - G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); - G4VModel* pModel = new G4NullModel (pMP); - fpSceneHandler -> SetModel (pModel); - fpSceneHandler -> BeginPrimitives (objectTransform); - fpSceneHandler -> AddPrimitive (polymarker); - fpSceneHandler -> EndPrimitives (); - fpSceneHandler -> SetModel (0); - delete pModel; - delete pMP; - } -} - -void G4VisManager::Draw (const G4Polyhedron& polyhedron, - const G4Transform3D& objectTransform) { - if (IsValidView ()) { - G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); - G4VModel* pModel = new G4NullModel (pMP); - fpSceneHandler -> SetModel (pModel); - fpSceneHandler -> BeginPrimitives (objectTransform); - fpSceneHandler -> AddPrimitive (polyhedron); - fpSceneHandler -> EndPrimitives (); - fpSceneHandler -> SetModel (0); - delete pModel; - delete pMP; - } -} - void G4VisManager::Draw (const G4NURBS& nurbs, const G4Transform3D& objectTransform) { if (IsValidView ()) { + ClearTransientStoreIfMarked(); G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); G4VModel* pModel = new G4NullModel (pMP); fpSceneHandler -> SetModel (pModel); @@ -455,16 +316,96 @@ void G4VisManager::Draw (const G4NURBS& nurbs, } } -void G4VisManager::Draw (const G4VSolid& solid, - const G4VisAttributes& attribs, +void G4VisManager::Draw (const G4Polyhedron& polyhedron, const G4Transform3D& objectTransform) { if (IsValidView ()) { + ClearTransientStoreIfMarked(); G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); G4VModel* pModel = new G4NullModel (pMP); fpSceneHandler -> SetModel (pModel); - fpSceneHandler -> PreAddThis (objectTransform, attribs); - solid.DescribeYourselfTo (*fpSceneHandler); - fpSceneHandler -> PostAddThis (); + fpSceneHandler -> BeginPrimitives (objectTransform); + fpSceneHandler -> AddPrimitive (polyhedron); + fpSceneHandler -> EndPrimitives (); + fpSceneHandler -> SetModel (0); + delete pModel; + delete pMP; + } +} + +void G4VisManager::Draw (const G4Polyline& line, + const G4Transform3D& objectTransform) { + if (IsValidView ()) { + ClearTransientStoreIfMarked(); + G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); + G4VModel* pModel = new G4NullModel (pMP); + fpSceneHandler -> SetModel (pModel); + fpSceneHandler -> BeginPrimitives (objectTransform); + fpSceneHandler -> AddPrimitive (line); + fpSceneHandler -> EndPrimitives (); + fpSceneHandler -> SetModel (0); + delete pModel; + delete pMP; + } +} + +void G4VisManager::Draw (const G4Polymarker& polymarker, + const G4Transform3D& objectTransform) { + if (IsValidView ()) { + ClearTransientStoreIfMarked(); + G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); + G4VModel* pModel = new G4NullModel (pMP); + fpSceneHandler -> SetModel (pModel); + fpSceneHandler -> BeginPrimitives (objectTransform); + fpSceneHandler -> AddPrimitive (polymarker); + fpSceneHandler -> EndPrimitives (); + fpSceneHandler -> SetModel (0); + delete pModel; + delete pMP; + } +} + +void G4VisManager::Draw (const G4Scale& scale, + const G4Transform3D& objectTransform) { + if (IsValidView ()) { + ClearTransientStoreIfMarked(); + G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); + G4VModel* pModel = new G4NullModel (pMP); + fpSceneHandler -> SetModel (pModel); + fpSceneHandler -> BeginPrimitives (objectTransform); + fpSceneHandler -> AddPrimitive (scale); + fpSceneHandler -> EndPrimitives (); + fpSceneHandler -> SetModel (0); + delete pModel; + delete pMP; + } +} + +void G4VisManager::Draw (const G4Square& square, + const G4Transform3D& objectTransform) { + if (IsValidView ()) { + ClearTransientStoreIfMarked(); + G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); + G4VModel* pModel = new G4NullModel (pMP); + fpSceneHandler -> SetModel (pModel); + fpSceneHandler -> BeginPrimitives (objectTransform); + fpSceneHandler -> AddPrimitive (square); + fpSceneHandler -> EndPrimitives (); + fpSceneHandler -> SetModel (0); + delete pModel; + delete pMP; + } +} + +void G4VisManager::Draw (const G4Text& text, + const G4Transform3D& objectTransform) { + if (IsValidView ()) { + ClearTransientStoreIfMarked(); + G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); + G4VModel* pModel = new G4NullModel (pMP); + fpSceneHandler -> SetModel (pModel); + fpSceneHandler -> BeginPrimitives (objectTransform); + fpSceneHandler -> AddPrimitive (text); + fpSceneHandler -> EndPrimitives (); fpSceneHandler -> SetModel (0); delete pModel; delete pMP; @@ -479,6 +420,23 @@ void G4VisManager::Draw (const G4LogicalVolume& logicalVol, Draw (*pSol, attribs, objectTransform); } +void G4VisManager::Draw (const G4VSolid& solid, + const G4VisAttributes& attribs, + const G4Transform3D& objectTransform) { + if (IsValidView ()) { + ClearTransientStoreIfMarked(); + G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); + G4VModel* pModel = new G4NullModel (pMP); + fpSceneHandler -> SetModel (pModel); + fpSceneHandler -> PreAddThis (objectTransform, attribs); + solid.DescribeYourselfTo (*fpSceneHandler); + fpSceneHandler -> PostAddThis (); + fpSceneHandler -> SetModel (0); + delete pModel; + delete pMP; + } +} + void G4VisManager::Draw (const G4VPhysicalVolume& physicalVol, const G4VisAttributes& attribs, const G4Transform3D& objectTransform) { @@ -498,10 +456,12 @@ void G4VisManager::CreateSceneHandler (G4String name) { fpSceneHandler = pSceneHandler; // Make current. } else { - G4cout << "Error in G4VisManager::CreateSceneHandler during " - << fpGraphicsSystem -> GetName () - << " scene creation.\n No action taken." - << G4endl; + if(fVerbosity >= errors) { + G4cout << "ERROR in G4VisManager::CreateSceneHandler during " + << fpGraphicsSystem -> GetName () + << " scene creation.\n No action taken." + << G4endl; + } } } else PrintInvalidPointers (); @@ -515,52 +475,73 @@ void G4VisManager::CreateViewer (G4String name) { G4VViewer* p = fpGraphicsSystem -> CreateViewer (*fpSceneHandler, name); if (p) { fpViewer = p; // Make current. + fpViewer -> Initialise (); fpSceneHandler -> AddViewerToList (fpViewer); fpSceneHandler -> SetCurrentViewer (fpViewer); // Make it possible for user action code to Draw. fpConcreteInstance = this; - G4bool warnings = false; - if (fVP.IsCulling () && fVP.IsCullingInvisible ()) { - warnings = true; - G4cout << "G4VisManager::CreateViewer: new viewer created:"; - if (fVerbose > 0) { - G4cout << " view parameters are:\n " << fVP; + const G4ViewParameters& vp = fpViewer->GetViewParameters(); + G4bool warn = false; + if (vp.IsCulling () && vp.IsCullingInvisible ()) { + warn = true; + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::CreateViewer: new viewer created:" + << G4endl; } - G4cout << - "\n NOTE: objects with visibility flag set to \"false\"" - " will not be drawn!" - "\n \"/vis/set/culling off\" to Draw such objects."; - } - if (fVP.IsCullingCovered ()) { - if (!warnings) { - G4cout << "G4VisManager::CreateViewer: new viewer created:"; + if (fVerbosity >= parameters) { + G4cout << " view parameters are:\n " << vp << G4endl; + } + if (fVerbosity >= warnings) { + G4cout << + "WARNING: objects with visibility flag set to \"false\"" + " will not be drawn!" + "\n \"/vis/set/culling off\" to Draw such objects." + << G4endl; } - warnings = true; - G4cout << - "\n ALSO: covered objects in solid mode will not be part of" - " the scene!" - "\n \"/vis/set/cull_covered_daughters off\" to reverse this."; } - if (warnings) { - G4cout << "\n Also see other \"/vis/set\" commands." - << G4endl; + if (vp.IsCullingCovered ()) { + if (!warn) { + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::CreateViewer: new viewer created:" + << G4endl; + } + } + warn = true; + if (fVerbosity >= warnings) { + G4cout << + "WARNING: covered objects in solid mode will not be part of" + " the scene!" + "\n \"/vis/set/cull_covered_daughters off\" to reverse this." + << G4endl; + } + } + if (warn) { + if (fVerbosity >= warnings) { + G4cout << " Also see other \"/vis/set\" commands." + << G4endl; + } } } else { - G4cout << "Error in G4VisManager::CreateViewer during " - << fpGraphicsSystem -> GetName () - << " viewer creation.\n No action taken." - << G4endl; + if (fVerbosity >= errors) { + G4cout << "ERROR in G4VisManager::CreateViewer during " + << fpGraphicsSystem -> GetName () + << " viewer creation.\n No action taken." + << G4endl; + } } } else PrintInvalidPointers (); } void G4VisManager::DeleteCurrentSceneHandler () { - G4cout << "G4VisManager::DeleteCurrentSceneHandler: scene handler \"" - << fpSceneHandler -> GetName () - << "\"\n and its viewer(s) are being deleted."; + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::DeleteCurrentSceneHandler: scene handler \"" + << fpSceneHandler -> GetName () + << "\"\n and its viewer(s) are being deleted." + << G4endl; + } if(fpSceneHandler) { fAvailableSceneHandlers.remove (fpSceneHandler); delete fpSceneHandler; @@ -573,40 +554,51 @@ void G4VisManager::DeleteCurrentSceneHandler () { } if (iSH < nSH) { fpSceneHandler = sceneHandlerList [iSH]; - G4cout << "\n scene handler is now \"" - << fpSceneHandler -> GetName (); fpViewer = fpSceneHandler -> GetViewerList () [0]; - G4cout << "\"\n and viewer now \"" - << fpViewer -> GetName () - << "."; + if (fVerbosity >= confirmations) { + G4cout << " Scene handler is now \"" + << fpSceneHandler -> GetName (); + G4cout << "\"\n and viewer now \"" + << fpViewer -> GetName () + << "." << G4endl; + } IsValidView (); // Check. } else if (nSH) { fpSceneHandler = fAvailableSceneHandlers [0]; - G4cout << "\n scene handler is now \"" - << fpSceneHandler -> GetName (); fpViewer = 0; // Make it impossible for user action code to Draw. fpConcreteInstance = 0; - G4cout << "\" but it has no viewers -\n please create one."; + if (fVerbosity >= warnings) { + G4cout << "WARNING: scene handler is now \"" + << fpSceneHandler -> GetName (); + G4cout << "\" but it has no viewers -\n please create one." + << G4endl; + } } else { fpSceneHandler = 0; fpViewer = 0; // Make it impossible for user action code to Draw. fpConcreteInstance = 0; - G4cout << - "\n There are now no scene handlers left. /vis/sceneHandler/select" - "\n to select a scene handler and /vis/viewer/select to select" - "\n a viewer, or maybe you will have to create some."; + if (fVerbosity >= warnings) { + G4cout << + "WARNING: There are now no scene handlers left." + "\n /vis/sceneHandler/select to select a scene handler and" + "\n /vis/viewer/select to select a viewer," + "\n or maybe you will have to create one." + << G4endl; + } } - G4cout << G4endl; } void G4VisManager::DeleteCurrentViewer () { - G4cout << "G4VisManager::DeleteCurrentViewer: viewer \"" - << fpViewer -> GetName () - << "\" being deleted."; + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::DeleteCurrentViewer: viewer \"" + << fpViewer -> GetName () + << "\" being deleted." + << G4endl; + } if (fpViewer ) { fpViewer -> GetSceneHandler () -> RemoveViewerFromList (fpViewer); delete fpViewer; @@ -616,9 +608,11 @@ void G4VisManager::DeleteCurrentViewer () { fpViewer = viewerList [0]; fpSceneHandler -> SetCurrentViewer (fpViewer); if (IsValidView ()) { - G4cout << "\n viewer is now \"" - << fpViewer -> GetName () - << "\"."; + if (fVerbosity >= confirmations) { + G4cout << " Viewer is now \"" + << fpViewer -> GetName () + << "\"." << G4endl; + } } } else { @@ -626,24 +620,30 @@ void G4VisManager::DeleteCurrentViewer () { fpSceneHandler -> SetCurrentViewer (0); // Make it impossible for user action code to Draw. fpConcreteInstance = 0; - G4cout << - "\n There are now no viewers left for this scene handler." - "\n /vis/sceneHandler/select to select a different scene handler" - "\n and /vis/viewer/select to select a viewer, or maybe you will" - "\n have to create some."; + if (fVerbosity >= warnings) { + G4cout << + "WARNING: There are now no viewers left for this scene handler." + "\n /vis/sceneHandler/select to select a different scene handler" + "\n and /vis/viewer/select to select a viewer, or maybe you will" + "\n have to create some." + << G4endl; + } } - G4cout << G4endl; } void G4VisManager::GeometryHasChanged () { - G4cout << "G4VisManager::GeometryHasChanged() called." << G4endl; + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::GeometryHasChanged() called." << G4endl; + } // Change the world... G4VPhysicalVolume* pWorld = G4TransportationManager::GetTransportationManager () -> GetNavigatorForTracking () -> GetWorldVolume (); if (!pWorld) { - G4cout << " There is no world volume!" << G4endl; + if (fVerbosity >= warnings) { + G4cout << "WARNING: There is no world volume!" << G4endl; + } } // Check scenes. @@ -653,42 +653,57 @@ void G4VisManager::GeometryHasChanged () { G4Scene* pScene = sceneList [iScene]; G4std::vector& modelList = pScene -> SetRunDurationModelList (); - G4bool modelInvalid; - do { // Remove, if required, one at a time. - modelInvalid = false; - G4std::vector::iterator iterModel; - for (iterModel = modelList.begin(); - iterModel != modelList.end(); - ++iterModel) { - if (modelInvalid = !((*iterModel) -> Validate ())) { - // Model invalid - remove and break. - G4cout << " Model \"" - << (*iterModel) -> GetGlobalDescription () - << - "\" is no longer valid - being removed\n from scene \"" - << pScene -> GetName () << "\"" - << G4endl; - modelList.erase (iterModel); + if (modelList.size ()) { + G4bool modelInvalid; + do { // Remove, if required, one at a time. + modelInvalid = false; + G4std::vector::iterator iterModel; + for (iterModel = modelList.begin(); + iterModel != modelList.end(); + ++iterModel) { + modelInvalid = !((*iterModel) -> Validate (fVerbosity >= warnings)); + if (modelInvalid) { + // Model invalid - remove and break. + if (fVerbosity >= warnings) { + G4cout << "WARNING: Model \"" + << (*iterModel) -> GetGlobalDescription () + << + "\" is no longer valid - being removed\n from scene \"" + << pScene -> GetName () << "\"" + << G4endl; + } + modelList.erase (iterModel); break; + } + } + } while (modelInvalid); + + if (modelList.size () == 0) { + if (fVerbosity >= warnings) { + G4cout << "WARNING: No models left in this scene \"" + << pScene -> GetName () + << "\"." + << G4endl; } } - } while (modelInvalid); - - if (modelList.size () == 0) { - G4cout << " No models left in this scene \"" - << pScene -> GetName () - << "\"." - << G4endl; + else { + pScene->CalculateExtent(); + G4UImanager::GetUIpointer () -> + ApplyCommand ("/vis/scene/notifyHandlers " + pScene->GetName()); + } } } // Check the manager's current scene... if (fpScene && fpScene -> GetRunDurationModelList ().size () == 0) { - G4cout << " The current scene \"" - << fpScene -> GetName () - << "\" has no models left." - << G4endl; - } + if (fVerbosity >= warnings) { + G4cout << "WARNING: The current scene \"" + << fpScene -> GetName () + << "\" has no models." + << G4endl; + } + } + } void G4VisManager::SetCurrentGraphicsSystemAndCreateViewer @@ -701,9 +716,11 @@ void G4VisManager::SetCurrentGraphicsSystemAndCreateViewer if (!fpScene) { fpScene = new G4Scene ("scene-vis~"); fSceneList.push_back (fpScene); - G4cout << "G4VisManager::SetCurrentGraphicsSystemAndCreateViewer:" - "\n Empty scene \"scene-vis~\" created." - << G4endl; + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::SetCurrentGraphicsSystemAndCreateViewer:" + "\n Empty scene \"scene-vis~\" created." + << G4endl; + } } CreateSceneHandler (); CreateViewer (); @@ -711,8 +728,10 @@ void G4VisManager::SetCurrentGraphicsSystemAndCreateViewer void G4VisManager::SetCurrentGraphicsSystem (G4VGraphicsSystem* pSystem) { fpGraphicsSystem = pSystem; - G4cout << "G4VisManager::SetCurrentGraphicsSystem: system now " - << pSystem -> GetName (); + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::SetCurrentGraphicsSystem: system now " + << pSystem -> GetName () << G4endl; + } // If current scene handler is of same graphics system, leave unchanged. // Else find the most recent scene handler of same graphics system. // Or clear pointers. @@ -725,12 +744,23 @@ void G4VisManager::SetCurrentGraphicsSystem (G4VGraphicsSystem* pSystem) { } if (iSH >= 0) { fpSceneHandler = sceneHandlerList [iSH]; - G4cout << "\n Scene Handler now " - << fpSceneHandler -> GetName (); + if (fVerbosity >= confirmations) { + G4cout << " Scene Handler now " + << fpSceneHandler -> GetName () << G4endl; + } + if (fpScene != fpSceneHandler -> GetScene ()) { + fpScene = fpSceneHandler -> GetScene (); + if (fVerbosity >= confirmations) { + G4cout << " Scene now \"" + << fpScene -> GetName () << "\"" << G4endl; + } + } const G4ViewerList& viewerList = fpSceneHandler -> GetViewerList (); if (viewerList.size ()) { fpViewer = viewerList [0]; - G4cout << "\n Viewer now " << fpViewer -> GetName (); + if (fVerbosity >= confirmations) { + G4cout << " Viewer now " << fpViewer -> GetName () << G4endl; + } } else { fpViewer = 0; @@ -745,17 +775,27 @@ void G4VisManager::SetCurrentGraphicsSystem (G4VGraphicsSystem* pSystem) { fpConcreteInstance = 0; } } - G4cout << G4endl; } void G4VisManager::SetCurrentSceneHandler (G4VSceneHandler* pSceneHandler) { fpSceneHandler = pSceneHandler; - G4cout << "G4VisManager::SetCurrentSceneHandler: scene handler now \"" - << pSceneHandler -> GetName () << "\""; + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::SetCurrentSceneHandler: scene handler now \"" + << pSceneHandler -> GetName () << "\"" << G4endl; + } + if (fpScene != fpSceneHandler -> GetScene ()) { + fpScene = fpSceneHandler -> GetScene (); + if (fVerbosity >= confirmations) { + G4cout << " Scene now \"" + << fpScene -> GetName () << "\"" << G4endl; + } + } if (fpGraphicsSystem != pSceneHandler -> GetGraphicsSystem ()) { fpGraphicsSystem = pSceneHandler -> GetGraphicsSystem (); - G4cout << "\n graphics system now \"" - << fpGraphicsSystem -> GetName () << "\""; + if (fVerbosity >= confirmations) { + G4cout << " Graphics system now \"" + << fpGraphicsSystem -> GetName () << "\"" << G4endl; + } } const G4ViewerList& viewerList = fpSceneHandler -> GetViewerList (); G4int nViewers = viewerList.size (); @@ -766,7 +806,10 @@ void G4VisManager::SetCurrentSceneHandler (G4VSceneHandler* pSceneHandler) { } if (iViewer >= nViewers) { fpViewer = viewerList [0]; - G4cout << "\n Viewer now \"" << fpViewer -> GetName () << "\""; + if (fVerbosity >= confirmations) { + G4cout << " Viewer now \"" << fpViewer -> GetName () << "\"" + << G4endl; + } } IsValidView (); // Checks. } @@ -774,106 +817,147 @@ void G4VisManager::SetCurrentSceneHandler (G4VSceneHandler* pSceneHandler) { fpViewer = 0; // Make it impossible for user action code to Draw. fpConcreteInstance = 0; - G4cout << "\n No viewers for this scene handler - please create one."; + if (fVerbosity >= warnings) { + G4cout << + "WARNING: No viewers for this scene handler - please create one." + << G4endl; + } } - G4cout << G4endl; } void G4VisManager::SetCurrentViewer (G4VViewer* pViewer) { fpViewer = pViewer; - G4cout << "G4VisManager::SetCurrentViewer: viewer now " - << pViewer -> GetName () - << G4endl; + if (fVerbosity >= confirmations) { + G4cout << "G4VisManager::SetCurrentViewer: viewer now " + << pViewer -> GetName () + << G4endl; + } fpSceneHandler = fpViewer -> GetSceneHandler (); fpSceneHandler -> SetCurrentViewer (pViewer); + fpScene = fpSceneHandler -> GetScene (); fpGraphicsSystem = fpSceneHandler -> GetGraphicsSystem (); IsValidView (); // Checks. } -void G4VisManager::PrintCurrentSystems () const { - if (fpGraphicsSystem && fpSceneHandler && fpViewer) { - G4int nSystems = fAvailableGraphicsSystems.size (); - if (nSystems <= 0) { - G4cout << "No graphics systems available yet." << G4endl; - } - else { - PrintAvailableGraphicsSystems (); - } - } - else PrintInvalidPointers (); -} +void G4VisManager::RegisterMessengers () { -void G4VisManager::PrintCurrentSystem () const { - if (fpGraphicsSystem && fpSceneHandler && fpViewer) { - G4cout << "Current graphics system is: " << *fpGraphicsSystem; - G4cout << G4endl; - } - else PrintInvalidPointers (); -} + // Instantiate individual messengers/commands (often one command per + // messenger). -void G4VisManager::PrintCurrentScene () const { - if (fpGraphicsSystem && fpSceneHandler && fpViewer) { - G4cout << "Current Scene is: " << fpSceneHandler -> GetName (); - G4cout << '\n' << *fpSceneHandler; - G4cout << G4endl; - } - else PrintInvalidPointers (); -} + G4VVisCommand::SetVisManager (this); // Sets shared pointer to vis manager. -void G4VisManager::PrintCurrentView () const { - if (fpGraphicsSystem && fpSceneHandler && fpViewer) { - G4cout << "Current View is: "; - G4cout << fpGraphicsSystem -> GetName () << '-' - << fpSceneHandler -> GetSceneHandlerId () << '-' - << fpViewer -> GetViewId () - << " selected (check: " << fpViewer -> GetName () << ")."; - G4cout << '\n' << *fpViewer; - G4cout << "\nCurrent view parameters"; - if (fVP != fpViewer -> GetViewParameters ()) { - G4cout << " differ in the following respect:\n"; - fVP.PrintDifferences (fpViewer -> GetViewParameters ()); - } - else { - G4cout << " are same." - << G4endl; - } - } - else PrintInvalidPointers (); + G4UIcommand* directory; + + directory = new G4UIdirectory ("/vis/"); + directory -> SetGuidance ("Visualization commands."); + fDirectoryList.push_back (directory); + fMessengerList.push_back (new G4VisCommandEnable); + fMessengerList.push_back (new G4VisCommandVerbose); + + directory = new G4UIdirectory ("/vis/scene/"); + directory -> SetGuidance ("Operations on Geant4 scenes."); + fDirectoryList.push_back (directory); + fMessengerList.push_back (new G4VisCommandSceneCreate); + fMessengerList.push_back (new G4VisCommandSceneEndOfEventAction); + fMessengerList.push_back (new G4VisCommandSceneList); + fMessengerList.push_back (new G4VisCommandSceneNotifyHandlers); + fMessengerList.push_back (new G4VisCommandSceneRemove); + fMessengerList.push_back (new G4VisCommandSceneSelect); + + directory = new G4UIdirectory ("/vis/scene/add/"); + directory -> SetGuidance ("Add model to current scene."); + fDirectoryList.push_back (directory); + fMessengerList.push_back (new G4VisCommandSceneAddAxes); + fMessengerList.push_back (new G4VisCommandSceneAddGhosts); + fMessengerList.push_back (new G4VisCommandSceneAddHits); + fMessengerList.push_back (new G4VisCommandSceneAddLogicalVolume); + fMessengerList.push_back (new G4VisCommandSceneAddScale); + fMessengerList.push_back (new G4VisCommandSceneAddText); + fMessengerList.push_back (new G4VisCommandSceneAddTrajectories); + fMessengerList.push_back (new G4VisCommandSceneAddVolume); + + directory = new G4UIdirectory ("/vis/sceneHandler/"); + directory -> SetGuidance ("Operations on Geant4 scene handlers."); + fDirectoryList.push_back (directory); + fMessengerList.push_back (new G4VisCommandSceneHandlerAttach); + fMessengerList.push_back (new G4VisCommandSceneHandlerCreate); + fMessengerList.push_back (new G4VisCommandSceneHandlerList); + fMessengerList.push_back (new G4VisCommandSceneHandlerRemove); + fMessengerList.push_back (new G4VisCommandSceneHandlerSelect); + + directory = new G4UIdirectory ("/vis/viewer/"); + directory -> SetGuidance ("Operations on Geant4 viewers."); + fDirectoryList.push_back (directory); + fMessengerList.push_back (new G4VisCommandViewerClear); + fMessengerList.push_back (new G4VisCommandViewerCreate); + fMessengerList.push_back (new G4VisCommandViewerDolly); + fMessengerList.push_back (new G4VisCommandViewerFlush); + fMessengerList.push_back (new G4VisCommandViewerLights); + // DEPRECATED - moved to /vis/viewer/set/. + fMessengerList.push_back (new G4VisCommandViewerList); + fMessengerList.push_back (new G4VisCommandViewerPan); + fMessengerList.push_back (new G4VisCommandViewerRefresh); + fMessengerList.push_back (new G4VisCommandViewerRemove); + fMessengerList.push_back (new G4VisCommandViewerReset); + fMessengerList.push_back (new G4VisCommandViewerSelect); + fMessengerList.push_back (new G4VisCommandViewerUpdate); + fMessengerList.push_back (new G4VisCommandViewerViewpoint); + // DEPRECATED - moved to /vis/viewer/set/. + fMessengerList.push_back (new G4VisCommandViewerZoom); + + directory = new G4UIdirectory ("/vis/viewer/set/"); + directory -> SetGuidance ("Set view parameters of current viewer."); + fDirectoryList.push_back (directory); + fMessengerList.push_back (new G4VisCommandsViewerSet); + + // Compound commands... + fMessengerList.push_back (new G4VisCommandDrawTree); + fMessengerList.push_back (new G4VisCommandDrawVolume); + fMessengerList.push_back (new G4VisCommandDrawView); + fMessengerList.push_back (new G4VisCommandOpen); + fMessengerList.push_back (new G4VisCommandSpecify); } void G4VisManager::PrintAllGraphicsSystems () const { - G4cout << "\nThe following graphics systems drivers are supported in the" + G4cout << + "\nThe following graphics systems drivers are supported in the" " GEANT4 distribution:" - << "\n\n DAWN (socket connection to the Fukui Renderer DAWN) " << G4VisFeaturesOfFukuiRenderer () - << "\n\n DAWNFILE (file connection to the Fukui Renderer DAWN ) " << G4VisFeaturesOfDAWNFILE () - << "\n\n OPACS (the Orsay Package) " - << "\n\n OpenGLIX (direct/immediate drawing on X Windows)\n" - << G4VisFeaturesOfOpenGLIX () - << "\n\n OpenGLSX (display List/stored drawing on X Windows)\n" - << G4VisFeaturesOfOpenGLSX () - << "\n\n OpenGLIXm (with Motif widgets)\n" - << G4VisFeaturesOfOpenGLIXm () - << "\n\n OpenGLSXm (with Motif widgets)\n" - << G4VisFeaturesOfOpenGLSXm () - << "\n\n Open Inventor" - << G4VisFeaturesOfOpenInventor () - << "\n\n VRML1 (produces VRML 1 file over network)" - << "\n\n VRML1FILE (produces VRML 1 file locally )" - << "\n\n VRML2 (produces VRML 2 file over network)" - << "\n\n VRML2FILE (produces VRML 2 file locally )" - << "\n\n RayTracer (produces JPEG file)" + "\n\n ASCIITree (prints geometry hierarchy)" + "\n\n DAWN (socket connection to the Fukui Renderer DAWN) " + << G4VisFeaturesOfFukuiRenderer () << + "\n\n DAWNFILE (file connection to the Fukui Renderer DAWN ) " + << G4VisFeaturesOfDAWNFILE () << + "\n\n GAGTree (prints geometry hierarchy, connectable to GAG" + "\n user interface)" + "\n\n HepRepFile (file connection to HepRep viewers, e.g., WIRED)" + "\n\n OPACS (the Orsay Package) " + "\n\n OpenGLIX (direct/immediate drawing on X Windows)\n" + << G4VisFeaturesOfOpenGLIX () << + "\n\n OpenGLSX (display List/stored drawing on X Windows)\n" + << G4VisFeaturesOfOpenGLSX () << + "\n\n OpenGLIXm (with Motif widgets)\n" + << G4VisFeaturesOfOpenGLIXm () << + "\n\n OpenGLSXm (with Motif widgets)\n" + << G4VisFeaturesOfOpenGLSXm () << + "\n\n Open Inventor" + << G4VisFeaturesOfOpenInventor () << + "\n\n RayTracer (produces JPEG file)" + "\n\n VRML1 (produces VRML 1 file over network)" + "\n\n VRML1FILE (produces VRML 1 file locally )" + "\n\n VRML2 (produces VRML 2 file over network)" + "\n\n VRML2FILE (produces VRML 2 file locally )" << G4endl; } void G4VisManager::PrintInstalledGraphicsSystems () const { G4cout << "\nThe following graphics systems drivers are installed on your" " system:" + << "\n ASCII Tree (produces ASCII file of geometry hierarchy)" #ifdef G4VIS_BUILD_DAWN_DRIVER << "\n DAWN (socket connection to the Fukui Renderer DAWN)" #endif -#ifdef G4VIS_BUILD_DAWNFILE_DRIVER << "\n DAWNFILE (file connection to the Fukui Renderer DAWN)" -#endif + << "\n GAG Tree (produces ascii file of geometry hierarchy for GAG)" #ifdef G4VIS_BUILD_OPACS_DRIVER << "\n OPACS (the Orsay Package)" #endif @@ -891,23 +975,13 @@ void G4VisManager::PrintInstalledGraphicsSystems () const { #ifdef G4VIS_BUILD_OIWIN32_DRIVER << "\n Open Inventor Win32" #endif + << "\n RayTracer (produces JPEG file)" #ifdef G4VIS_BUILD_VRML_DRIVER << "\n VRML1 (produces VRML 1 file over network)" << "\n VRML2 (produces VRML 2 file over network)" #endif -#ifdef G4VIS_BUILD_VRMLFILE_DRIVER << "\n VRML1FILE (produces VRML 1 file locally)" << "\n VRML2FILE (produces VRML 2 file locally)" -#endif -#ifdef G4VIS_BUILD_RAYTRACER_DRIVER - << "\n RayTracer (produces JPEG file)" -#endif -#ifdef G4VIS_BUILD_ASCIITREE_DRIVER - << "\n ASCII Tree (produces ASCII file of geometry hierarchy)" -#endif -#ifdef G4VIS_BUILD_GAGTREE_DRIVER - << "\n GAG Tree (produces ascii file of geometry hierarchy for GAG)" -#endif << G4endl; } @@ -930,42 +1004,66 @@ void G4VisManager::PrintAvailableGraphicsSystems () const { } void G4VisManager::PrintInvalidPointers () const { - G4cout << "Error in G4VisManager::PrintInvalidPointers:"; - if (!fpGraphicsSystem) { - G4cout << "\n null graphics system pointer."; + if (fVerbosity >= errors) { + G4cout << "ERROR: G4VisManager::PrintInvalidPointers:"; + if (!fpGraphicsSystem) { + G4cout << "\n null graphics system pointer."; + } + else { + G4cout << "\n graphics system is " << fpGraphicsSystem -> GetName () + << " but:"; + if (!fpScene) G4cout << "\nNull scene pointer. "; + if (!fpSceneHandler) G4cout << "\nNull scene handler pointer. "; + if (!fpViewer ) G4cout << "\nNull viewer pointer. "; + } + G4cout << G4endl; } - else { - G4cout << "\n graphics system is " << fpGraphicsSystem -> GetName () - << " but:"; - if (!fpScene) G4cout << "\nNull scene pointer. "; - if (!fpSceneHandler) G4cout << "\nNull scene handler pointer. "; - if (!fpViewer ) G4cout << "\nNull viewer pointer. "; - } - G4cout << G4endl; } -void G4VisManager::RefreshCurrentView () { // Soft clear, then redraw. - if (IsValidView ()) { - fpViewer -> ClearView (); // Soft clear, i.e., clears buffer only. - Draw (); - Show (); - } +void G4VisManager::BeginOfRun () { + //G4cout << "G4VisManager::BeginOfRun" << G4endl; +} + +void G4VisManager::BeginOfEvent () { + //G4cout << "G4VisManager::BeginOfEvent" << G4endl; } void G4VisManager::EndOfEvent () { + //G4cout << "G4VisManager::EndOfEvent" << G4endl; if (fpConcreteInstance && IsValidView ()) { + ClearTransientStoreIfMarked(); G4ModelingParameters* pMP = fpSceneHandler -> CreateModelingParameters (); const G4std::vector& EOEModelList = fpScene -> GetEndOfEventModelList (); - fpSceneHandler->ClearTransientStore(); //GB for (size_t i = 0; i < EOEModelList.size (); i++) { G4VModel* pModel = EOEModelList [i]; pModel -> SetModelingParameters (pMP); + fpSceneHandler -> SetModel (pModel); pModel -> DescribeYourselfTo (*fpSceneHandler); pModel -> SetModelingParameters (0); + fpSceneHandler -> SetModel (0); } delete pMP; + if (fpScene->GetRefreshAtEndOfEvent()) { + fpViewer->ShowView(); // ...for systems needing post processing. + fpSceneHandler->SetMarkForClearingTransientStore(true); + } + } +} + +void G4VisManager::EndOfRun () { + //G4cout << "G4VisManager::EndOfRun" << G4endl; + if (fpConcreteInstance && IsValidView ()) { + fpSceneHandler->SetMarkForClearingTransientStore(false); + } +} + +void G4VisManager::ClearTransientStoreIfMarked(){ + // Assumes valid view. + if (fpSceneHandler->GetMarkForClearingTransientStore()) { + fpSceneHandler->SetMarkForClearingTransientStore(false); + fpSceneHandler->ClearTransientStore(); } } @@ -979,11 +1077,10 @@ G4VViewer* G4VisManager::GetViewer (const G4String& viewerName) const { G4String viewerShortName = ViewerShortName (viewerName); size_t nHandlers = fAvailableSceneHandlers.size (); size_t iHandler, iViewer; - G4VSceneHandler* sceneHandler; - G4VViewer* viewer; + G4VViewer* viewer = 0; G4bool found = false; for (iHandler = 0; iHandler < nHandlers; iHandler++) { - sceneHandler = fAvailableSceneHandlers [iHandler]; + G4VSceneHandler* sceneHandler = fAvailableSceneHandlers [iHandler]; const G4ViewerList& viewerList = sceneHandler -> GetViewerList (); for (iViewer = 0; iViewer < viewerList.size (); iViewer++) { viewer = viewerList [iViewer]; @@ -998,6 +1095,79 @@ G4VViewer* G4VisManager::GetViewer (const G4String& viewerName) const { else return 0; } +G4String G4VisManager::VerbosityGuidanceString +("\n default: warnings" + "\nSimple graded message scheme - digit or string (1st character defines):" + "\n 0) quiet, // Nothing is printed." + "\n 1) startup, // Startup and endup messages are printed..." + "\n 2) errors, // ...and errors..." + "\n 3) warnings, // ...and warnings..." + "\n 4) confirmations, // ...and confirming messages..." + "\n 5) parameters, // ...and parameters of scenes and views..." + "\n 6) all // ...and everything available." + ); + +G4String G4VisManager::VerbosityString(Verbosity verbosity) { + G4String s; + switch (verbosity) { + case quiet: s = "quiet (0)"; break; + case startup: s = "startup (1)"; break; + case errors: s = "errors (2)"; break; + case warnings: s = "warnings (3)"; break; + case confirmations: s = "confirmations (4)"; break; + case parameters: s = "parameters (5)"; break; + case all: s = "all (6)"; break; + } + return s; +} + +G4VisManager::Verbosity +G4VisManager::GetVerbosityValue(const G4String& verbosityString) { + G4String s(verbosityString); s.toLower(); + Verbosity verbosity; + if (s(0) == 'q') verbosity = quiet; + else if (s(0) == 's') verbosity = startup; + else if (s(0) == 'e') verbosity = errors; + else if (s(0) == 'w') verbosity = warnings; + else if (s(0) == 'c') verbosity = confirmations; + else if (s(0) == 'p') verbosity = parameters; + else if (s(0) == 'a') verbosity = all; + else { + G4int intVerbosity; + const char* t = s; + G4std::istrstream is((char*)t); + is >> intVerbosity; + if (!is) { + G4cout << "ERROR: G4VisManager::GetVerbosityValue: invalid verbosity \"" + << verbosityString << "\"\n" + << VerbosityGuidanceString + << "\n Returning \"warnings\" == " << warnings + << G4endl; + verbosity = warnings; + } + else { + verbosity = GetVerbosityValue(intVerbosity); + } + } + return verbosity; +} + +G4VisManager::Verbosity G4VisManager::GetVerbosityValue(G4int intVerbosity) { + Verbosity verbosity; + if (intVerbosity < quiet) verbosity = quiet; + else if (intVerbosity > all) verbosity = all; + else verbosity = Verbosity(intVerbosity); + return verbosity; +} + +void G4VisManager::SetVerboseLevel (G4int intVerbosity) { + fVerbosity = GetVerbosityValue(intVerbosity); +} + +void G4VisManager::SetVerboseLevel (const G4String& verbosityString) { + fVerbosity = GetVerbosityValue(verbosityString); +} + G4bool G4VisManager::IsValidView () { if (!fInitialised) Initialise (); @@ -1010,286 +1180,88 @@ G4bool G4VisManager::IsValidView () { // user simply does not want to use graphics, e.g., in batch mode. if ((!fpScene) || (!fpSceneHandler) || (!fpViewer)) { - G4cout << "G4VisManager::IsValidView ():" - "\n Current view is not valid."; - G4cout << G4endl; - PrintInvalidPointers (); + if (fVerbosity >= errors) { + G4cout << + "ERROR: G4VisManager::IsValidView(): Current view is not valid." + << G4endl; + PrintInvalidPointers (); + } return false; } if (fpScene != fpSceneHandler -> GetScene ()) { - G4cout << "G4VisManager::IsValidView ():"; - if (fpSceneHandler -> GetScene ()) { - G4cout << - "\n The current scene \"" - << fpScene -> GetName () - << "\" is not handled by" - "\n the current scene handler \"" - << fpSceneHandler -> GetName () - << "\"" - "\n (it currently handles scene \"" - << fpSceneHandler -> GetScene () -> GetName () - << "\")." - "\n Either:" - "\n (a) attach it to the scene handler with" - "\n /vis/sceneHandler/attach " - << fpScene -> GetName () - << ", or" - "\n (b) create a new scene handler with " - "\n /vis/sceneHandler/create ," - "\n in which case it should pick up the the new scene." - << G4endl; - } - else { - G4cout << "\n Scene handler \"" - << fpSceneHandler -> GetName () - << "\" has null scene pointer." - "\n Attach a scene with /vis/sceneHandler/attach []" - << G4endl; + if (fVerbosity >= errors) { + G4cout << "ERROR: G4VisManager::IsValidView ():"; + if (fpSceneHandler -> GetScene ()) { + G4cout << + "\n The current scene \"" + << fpScene -> GetName () + << "\" is not handled by" + "\n the current scene handler \"" + << fpSceneHandler -> GetName () + << "\"" + "\n (it currently handles scene \"" + << fpSceneHandler -> GetScene () -> GetName () + << "\")." + "\n Either:" + "\n (a) attach it to the scene handler with" + "\n /vis/sceneHandler/attach " + << fpScene -> GetName () + << ", or" + "\n (b) create a new scene handler with " + "\n /vis/sceneHandler/create ," + "\n in which case it should pick up the the new scene." + << G4endl; + } + else { + G4cout << "\n Scene handler \"" + << fpSceneHandler -> GetName () + << "\" has null scene pointer." + "\n Attach a scene with /vis/sceneHandler/attach []" + << G4endl; + } } return false; } const G4ViewerList& viewerList = fpSceneHandler -> GetViewerList (); if (viewerList.size () == 0) { - G4cout << "G4VisManager::IsValidView (): the current scene handler\n \"" - << fpSceneHandler -> GetName () - << "\" has no viewers. Do /vis/viewer/create." - << G4endl; + if (fVerbosity >= errors) { + G4cout << + "ERROR: G4VisManager::IsValidView (): the current scene handler\n \"" + << fpSceneHandler -> GetName () + << "\" has no viewers. Do /vis/viewer/create." + << G4endl; + } return false; } fpConcreteInstance = this; // Unless we find another problem, users can use! G4bool isValid = true; - if (fpScene -> IsEmpty ()) { - fpScene -> AddWorldIfEmpty (); // Add world by default if possible. - if (fpScene -> IsEmpty ()) { // If still empty... - G4cout << "G4VisManager::IsViewValid ():"; - G4cout << - "\n Attempt at some drawing operation when scene is empty." - "\n Maybe the geometry has not yet been defined." - " Try /run/initialize." - << G4endl; + if (fpScene -> IsEmpty ()) { // Add world by default if possible... + G4bool warn(fVerbosity >= warnings); + G4bool successful = fpScene -> AddWorldIfEmpty (warn); + if (!successful || fpScene -> IsEmpty ()) { // If still empty... + if (fVerbosity >= errors) { + G4cout << "ERROR: G4VisManager::IsViewValid ():"; + G4cout << + "\n Attempt at some drawing operation when scene is empty." + "\n Maybe the geometry has not yet been defined." + " Try /run/initialize." + << G4endl; + } isValid = false; fpConcreteInstance = 0; // Users must not use! } else { - G4UImanager::GetUIpointer () -> ApplyCommand ("/vis/camera/reset"); - G4cout << - "G4VisManager: the scene was empty, \"world\" has been added" - "\n and the view parameters have been reset."; - G4cout << G4endl; + G4UImanager::GetUIpointer () -> ApplyCommand ("/vis/viewer/reset"); + if (fVerbosity >= warnings) { + G4cout << + "WARNING: G4VisManager: the scene was empty, \"world\" has been" + "\n added and the view parameters have been reset."; + G4cout << G4endl; + } } } return isValid; } - -void G4VisManager::PrintCommandDeprecation(const G4String& message) { - G4cout << - "**** DEPRECATED COMMAND ***" - "\n**** Will be discontinued as a \"/vis/\" command after Geant4 3.0." - "\n**** Will still be available as a \"/vis~/\" command for a while." - "\n**** " << message << G4endl; -} - -// "No functionality" graphics systems to trap accidental attempt to -// use unbuilt systems. - -#ifndef G4VIS_BUILD_DAWN_DRIVER - -class G4FukuiRenderer: public G4VGraphicsSystem { -public: - G4FukuiRenderer (); -}; -G4FukuiRenderer::G4FukuiRenderer (): - G4VGraphicsSystem ("FukuiRenderer", - "DAWN", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_DAWNFILE_DRIVER - -class G4DAWNFILE: public G4VGraphicsSystem { -public: - G4DAWNFILE (); -}; -G4DAWNFILE::G4DAWNFILE (): - G4VGraphicsSystem ("FukuiRendererFile", - "DAWNFILE", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_RAYTRACER_DRIVER - -class G4RayTracer: public G4VGraphicsSystem { -public: - G4RayTracer (); -}; -G4RayTracer::G4RayTracer (): - G4VGraphicsSystem ("RayTracer", - "RayTracer", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_ASCIITREE_DRIVER - -class G4ASCIITree: public G4VGraphicsSystem { -public: - G4ASCIITree (); -}; -G4ASCIITree::G4ASCIITree (): - G4VGraphicsSystem ("ASCIITree", - "ATree", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_GAGTREE_DRIVER - -class G4GAGTree: public G4VGraphicsSystem { -public: - G4GAGTree (); -}; -G4GAGTree::G4GAGTree (): - G4VGraphicsSystem ("GAGTree", - "GAGTree", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_OPACS_DRIVER - -class G4Wo: public G4VGraphicsSystem { -public: - G4Wo (); -}; -G4Wo::G4Wo (): - G4VGraphicsSystem ("Wo", - G4VGraphicsSystem::noFunctionality) {} - -class G4Xo: public G4VGraphicsSystem { -public: - G4Xo (); -}; -G4Xo::G4Xo (): - G4VGraphicsSystem ("Xo", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_OPENGLX_DRIVER - -class G4OpenGLImmediateX: public G4VGraphicsSystem { -public: - G4OpenGLImmediateX (); -}; -G4OpenGLImmediateX::G4OpenGLImmediateX (): - G4VGraphicsSystem ("OpenGLImmediateX", - "OGLIX", - G4VGraphicsSystem::noFunctionality) {} - -class G4OpenGLStoredX: public G4VGraphicsSystem { -public: - G4OpenGLStoredX (); -}; -G4OpenGLStoredX::G4OpenGLStoredX (): - G4VGraphicsSystem ("OpenGLStoredX", - "OGLSX", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_OPENGLXM_DRIVER - -class G4OpenGLImmediateXm: public G4VGraphicsSystem { -public: - G4OpenGLImmediateXm (); -}; -G4OpenGLImmediateXm::G4OpenGLImmediateXm (): - G4VGraphicsSystem ("OpenGLImmediateXm", - "OGLIXm", - G4VGraphicsSystem::noFunctionality) {} - -class G4OpenGLStoredXm: public G4VGraphicsSystem { -public: - G4OpenGLStoredXm (); -}; -G4OpenGLStoredXm::G4OpenGLStoredXm (): - G4VGraphicsSystem ("OpenGLStoredXm", - "OGLSXm", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_OIX_DRIVER - -class G4OpenInventorX: public G4VGraphicsSystem { -public: - G4OpenInventorX (); -}; -G4OpenInventorX::G4OpenInventorX (): - G4VGraphicsSystem ("OpenInventorX", - "OIX", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_OIWIN32_DRIVER - -class G4OpenInventorWin32: public G4VGraphicsSystem { -public: - G4OpenInventorWin32 (); -}; -G4OpenInventorWin32::G4OpenInventorWin32 (): - G4VGraphicsSystem ("OpenInventorWin32", - "OIWIN32", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_VRML_DRIVER - -class G4VRML1: public G4VGraphicsSystem { -public: - G4VRML1 (); -}; -G4VRML1::G4VRML1 (): - G4VGraphicsSystem ("VRML1.0", - "VRML1", - G4VGraphicsSystem::noFunctionality) {} - -class G4VRML2: public G4VGraphicsSystem { -public: - G4VRML2 (); -}; -G4VRML2::G4VRML2 (): - G4VGraphicsSystem ("VRML2.0", - "VRML2", - G4VGraphicsSystem::noFunctionality) {} - -#endif - -#ifndef G4VIS_BUILD_VRMLFILE_DRIVER - -class G4VRML1File: public G4VGraphicsSystem { -public: - G4VRML1File (); -}; -G4VRML1File::G4VRML1File (): - G4VGraphicsSystem ("VRML1.0File", - "VRML1File", - G4VGraphicsSystem::noFunctionality) {} - -class G4VRML2File: public G4VGraphicsSystem { -public: - G4VRML2File (); -}; -G4VRML2File::G4VRML2File (): - G4VGraphicsSystem ("VRML2.0File", - "VRML2File", - G4VGraphicsSystem::noFunctionality) {} - -#endif diff --git a/source/visualization/management/src/G4VisManagerRegisterMessengers.cc b/source/visualization/management/src/G4VisManagerRegisterMessengers.cc deleted file mode 100644 index fba4a24bb8..0000000000 --- a/source/visualization/management/src/G4VisManagerRegisterMessengers.cc +++ /dev/null @@ -1,624 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisManagerRegisterMessengers.cc,v 1.30.2.1 2001/06/28 19:16:17 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// G4VisManager::RegisterMessengers - John Allison 30/July/1998. - -#include "G4VisManager.hh" -#include "G4VVisCommand.hh" -#include "G4VisCommands.hh" -#include "G4VisCommandsCompound.hh" -#include "G4VisCommandsScene.hh" -#include "G4VisCommandsSceneAdd.hh" -#include "G4VisCommandsSceneInclude.hh" // Deprecated -#include "G4VisCommandsSceneHandler.hh" -#include "G4VisCommandsViewer.hh" -#include "G4VisCommandsViewerSet.hh" - -// OLD STYLE!! -#include "G4VisManMessenger.hh" -#include "G4VisCommandTemplates.hh" -#include "G4VisCommandsCamera.hh" -#include "G4VisCommandsClear.hh" -#include "G4VisCommandsCopy.hh" -#include "G4VisCommandsCreateScene.hh" -#include "G4VisCommandsCreateView.hh" -#include "G4VisCommandsDelete.hh" -#include "G4VisCommandsDraw.hh" -#include "G4VisCommandsLights.hh" -#include "G4VisCommandsPrint.hh" -#include "G4VisCommandsRefresh.hh" -#include "G4VisCommandsSet.hh" -#include "G4VisCommandsShow.hh" -// END OLD STYLE!! - -#include "G4ios.hh" -#include - -void G4VisManager::RegisterMessengers () { - - /****************************************************************** - -(Extract for working note.) - -NI means "not implemented yet". - - -Introduction -============ - -This note defines the concepts of scene, scene handler and viewer. - -A scene handler can handle only one scene at any one time but can have -any number of viewers. - -A scene can be attached to any number of scene handlers. - -It is important to realise that there is also the concept of a "current" -scene, "current" scene handler and "current" viewer which are maintained -by the G4VisManager. It is usually the last object created or selected -or operated upon. - -Note that there is also a concept of a "standard view" which is that which -comfortably includes all components of the scene. From this follow the -concept of standard target point, etc. It is the responsibility of -each viewer to apply its view parameters relatively, taking into account -the scene it represents. This is a dynamic operation and the scene handler -and its viewers must be smart enough to know when to recalculate -graphics-system-dependent quantities when the scene or the view parameters -change. - - -Scenes -====== - -A scene is a list of visualizable objects, such as detector components, -hits, trajectories, axes, etc. - -Scenes are graphics-system-independent. - -The G4VisManager has a list of scenes. - -/vis/scene/create [] - default auto-generated name - This scene becomes current. - -/vis/scene/list [] [] - default: all 0 - Current scene remains current. - -/vis/scene/select [] - default: current scene name - This scene becomes current. - -NI /vis/scene/edit - -/vis/scene/remove - Current scene can change or become invalid. - -/vis/scene/add/ghosts [] - default: all - Adds to current scene. - -NI /vis/scene/add/ghost [] [] -NI [] [] - -/vis/scene/add/logicalVolume [] - default: 1 - Adds logical volume to current scene. - -/vis/scene/add/volume [] [] [] - default: world -1 -1 - Adds physical volume to current scene. - If copy-no is negative, first occurrence of physical-volume-name is - selected. - If depth is negative, search is made to all depths. - -/vis/scene/add/hits [] - default: (argument not impl'd yet.) - Causes hits, if any, to be drawn at the end of processiing an event. - Adds to current scene. - -/vis/scene/add/trajectories [] - default: (argument not impl'd yet.) - Causes trajectories, if any, to be drawn at the end of processiing an event. - Adds to current scene. - -NI /vis/scene/add/transientObjects - Adds in current scene. - -NI /vis/scene/set/hitOption accumulate|byEvent - Affects current scene. - -NI /vis/scene/set/notifyOption immediate|delayed - Affects current scene. - -NI /vis/scene/set/modelingStyle [] - Affects current scene. - -/vis/scene/notifyHandlers - Refreshes all viewers of current scene. - Does not issue "update" (see /vis/viewer/update). - -/vis/scene/add/axes - Adds to current scene. - -/vis/scene/add/text - Adds to current scene. - - -Scene Handlers -============== - -A scene handler is an object which knows how to interpret a scene for a -specific graphics system. - -Each scene handler handles one scene and has, in general, any number of -viewers. - -The G4VisManager has a list of scene handlers. - -/vis/sceneHandler/create [] [] - default: error auto-generated name - (The first default simply triggers a list of possibilities.) - This scene handler becomes current. - The current scene, if any, is attached. - -/vis/sceneHandler/attach [] - default: current scene name - Attaches scene to current scene handler. - -/vis/sceneHandler/list [] [] - default: all 0 - Current scene handler remains current. - -/vis/sceneHandler/select [] - default: current scene handler name - This scene handler becomes current. - -/vis/sceneHandler/remove - Current scene handler can change or become invalid. - -NI /vis/sceneHandler/processScene - Refreshes all viewers of current scene handler. - Does not issue "update" (see /vis/viewer/update). - -NI /vis/sceneHandler/notifyEndOfProcessing - Issues "update" for each viewer of current scene handler. - - -Viewers -======= - -A viewer opens windows and draws to the screen or writes to file for -off-line viewing or hardcopy, etc. It can be dumb (a non-interactive -window) or intelligent (respond to mouse clicks, spawn other windows, -change viewpoint, etc.). - -Most viewer commands respond to the viewer "short name", which is the -name up to the first space character, if any. Thus, a viewer name can -contain spaces but must be unique up to the first space. - -/vis/viewer/clear - Affects current viewer. - -NI /vis/viewer/clone - Creates a clone. Clone becomes current viewer. - -/vis/viewer/create [] [] [] - default: current scene handler name auto-generated name 600 - Pixel size of square window (hint only). - This viewer becomes current. - -/vis/viewer/dolly [] [] - default: current-value m - Moves the camera incrementally in by this distance. - Affects current viewer. - -/vis/viewer/dollyTo [] [] - default: current-value m - Moves the camera in this distance relative to standard target point. - Affects current viewer. - -/vis/viewer/lightsThetaPhi [] [] [deg|rad] - default: current as default. -/vis/viewer/lightsVector [] [] [] - default: current as default. - Affects current viewer. - -/vis/viewer/list [] [] - default: all 0 - Current viewer remains current. - -/vis/viewer/pan [] [] [] - default: 0 0 - Moves the camera incrementally right and up by these amounts. - Affects current viewer. - -/vis/viewer/panTo [] [] [] - default: 0 0 - Moves the camera to this position right and up relative to standard target - point. - Affects current viewer. - -/vis/viewer/select - default: no default - This viewer becomes current. - -/vis/viewer/refresh [] - default: current viewer name - Re-traverses graphical data, which is enough in some cases to refresh the - view. In some cases post-processing is required to complete the view - - see /vis/viewer/update. This viewer becomes current. - -/vis/viewer/remove - default: no default - Current viewer can change or become invalid. - -/vis/viewer/reset [] - default: current viewer name - Resets view parameters to defaults. - This viewer becomes current. - -/vis/viewer/viewpointThetaPhi [] [] [deg|rad] - default: current as default. -/vis/viewer/viewpointVector [] [] [] - default: current as default. - Set direction from target to camera. Also changes lightpoint direction if - lights are set to move with camera. - Affects current viewer. - -/vis/viewer/set/zoom [] - default: 1 - Multiplies magnification by this factor. - Affects current viewer. - -/vis/viewer/set/zoomTo [] - default: 1 - Magnifies by this factor relative to standard view. - Affects current viewer. - -(Now follow some viewer/set commands. A possible syntax is: - -NI /vis/viewer/set []... - -but this would mean re-inventing parameter parsing which is already -contained in many G4UIcommand subclasses. To re-use this code we have -to know the type of the parameter, so we need separate commands.) - -/vis/viewer/set/all - Copies view parameters from from-viewer to current viewer. - Affects current viewer. - -/vis/viewer/set/autoRefresh [true|false] - default: false - View is automatically refreshed after a change of view parameters. - Affects current viewer. - -/vis/viewer/set/culling - g[lobal]|c[overedDaughters]|i[nvisible]|d[ensity] [true|false] - [density] [unit] - default: none true 0.01 g/cm3 - Affects current viewer. - -NI /vis/viewer/set/cutawayPlane ... - Set plane(s) for cutaway views. - Affects current viewer. - -/vis/viewer/set/edge [true|false] - default: true - Affects current viewer. - -/vis/viewer/set/hiddenEdge [true|false] - default: true - Affects current viewer. - -/vis/viewer/set/hiddenMarker [true|false] - default: true - Affects current viewer. - -/vis/viewer/set/lightsMove with-camera|with-object - Affects current viewer. - -/vis/viewer/set/lineSegmentsPerCircle [] - default: 24 - Number of sides per circle in polygon/polyhedron graphical representation - of objects with curved lines/surfaces. - Affects current viewer. - -/vis/viewer/set/projection - o[rthogonal]|p[erspective] [] [deg|rad] - default: none 30 deg - Affects current viewer. - -#specialNI /vis/viewer/set/orbit (parameters) - Orbits the scene about the up-vector, lights fixed to the scene. Draws N - frames, the camera rotated Delta-beta about the up-vector each frame. - Affects current viewer. - -/vis/viewer/set/sectionPlane ... - Set plane for drawing section (DCUT). Specify plane by x y z units nx ny nz, - e.g., for a y-z plane at x = 1 cm: - /vis/viewer/set/section_plane on 1 0 0 cm 1 0 0 - Affects current viewer. - -#specialNI /vis/viewer/set/spin (parameters) -#orNI /vis/viewer/advanced? - Spins the scene about the up-vector, lights fixed to the camera. Draws N - frames, the scene rotated Delta-beta about the up-vector each frame. - Affects current viewer. - -/vis/viewer/set/style w[ireframe]|s[urface] - Affects current viewer. - -NI /vis/viewer/notifyOption immediate|delayed ?Issue of "update" after "set"? - -NI /vis/viewer/notifyHandler ?? - -/vis/viewer/update [] - default: current viewer name - Initiates post-processing if required. This viewer becomes current. - - -Attributes (nothing implemented yet) -========== - -The G4VisManager also keeps a list of visualization attributes which can -be created and changed and attributed to visualizable objects. - -NI /vis/attributes/create [] - default: auto-generated name - These attributes become current. - -NI /vis/attributes/set/colour [] [] [] [] [] -NI /vis/attributes/set/color [] [] [] [] [] - default: current attributes name 1 1 1 1 - Sets colour (red, green, blue, opacity). - Affects current vis attributes. - -NI /vis/scene/set/attributes - Associates current vis attributes with logical volume. (Do we need to - provide possibility of resetting to original attributes?) - (Move to scene when implemented.) - - -General Commands -================ - -/vis/enable [true|false] - default: true -/vis/disable - Enables/disables visualization system. - -/vis/verbose [] - default: 0 - - -Compound Commands -================= - -/vis/open [] [<[pixels>] -default: error 600 - /vis/sceneHandler/create $1 - /vis/viewer/create ! ! $2 - -NI /vis/draw clashes with old /vis~/draw/, so... - -/vis/drawTree [] [] -default: world ATree - /vis/open $2 - /vis/drawVolume $1 - -/vis/drawVolume [] -default: world - /vis/scene/create - /vis/scene/add/volume $1 - /vis/sceneHandler/attach - /vis/viewer/refresh - -/vis/drawView [] [] - [] [] [] - [] - [] [] -default: 0 0 0 0 cm 1 0 cm - /vis/viewer/viewpointThetaPhi $1 $2 deg - /vis/viewer/panTo $3 $4 $5 - /vis/viewer/zoomTo $6 - /vis/viewer/dollyTo $7 $8 - -/vis/specify - /geometry/print $1 - /vis/scene/create - /vis/scene/add/logicalVolume $1 - /vis/sceneHandler/attach - /vis/viewer/refresh - - ******************************************************************/ - - // Instantiate individual messengers/commands (usually one command - // per messenger). - - G4VVisCommand::SetVisManager (this); - - G4UIcommand* directory; - - directory = new G4UIdirectory ("/vis/"); - directory -> SetGuidance ("Visualization commands."); - fDirectoryList.push_back (directory); - fMessengerList.push_back (new G4VisCommandEnable); - fMessengerList.push_back (new G4VisCommandVerbose); - - directory = new G4UIdirectory ("/vis/scene/"); - directory -> SetGuidance ("Operations on Geant4 scenes."); - fDirectoryList.push_back (directory); - fMessengerList.push_back (new G4VisCommandSceneCreate); - fMessengerList.push_back (new G4VisCommandSceneList); - fMessengerList.push_back (new G4VisCommandSceneNotifyHandlers); - fMessengerList.push_back (new G4VisCommandSceneSelect); - fMessengerList.push_back (new G4VisCommandSceneRemove); - - directory = new G4UIdirectory ("/vis/scene/add/"); - directory -> SetGuidance ("Add model to current scene."); - fDirectoryList.push_back (directory); - fMessengerList.push_back (new G4VisCommandSceneAddAxes); - fMessengerList.push_back (new G4VisCommandSceneAddGhosts); - fMessengerList.push_back (new G4VisCommandSceneAddHits); - fMessengerList.push_back (new G4VisCommandSceneAddLogicalVolume); - fMessengerList.push_back (new G4VisCommandSceneAddText); - fMessengerList.push_back (new G4VisCommandSceneAddTrajectories); - fMessengerList.push_back (new G4VisCommandSceneAddVolume); - - directory = new G4UIdirectory ("/vis/scene/include/"); - directory -> SetGuidance ("Deprecated commands; now in /vis/scene/add/."); - fDirectoryList.push_back (directory); - fMessengerList.push_back (new G4VisCommandSceneIncludeHits); - fMessengerList.push_back (new G4VisCommandSceneIncludeTrajectories); - - directory = new G4UIdirectory ("/vis/sceneHandler/"); - directory -> SetGuidance ("Operations on Geant4 scene handlers."); - fDirectoryList.push_back (directory); - fMessengerList.push_back (new G4VisCommandSceneHandlerAttach); - fMessengerList.push_back (new G4VisCommandSceneHandlerCreate); - fMessengerList.push_back (new G4VisCommandSceneHandlerList); - fMessengerList.push_back (new G4VisCommandSceneHandlerSelect); - fMessengerList.push_back (new G4VisCommandSceneHandlerRemove); - - directory = new G4UIdirectory ("/vis/viewer/"); - directory -> SetGuidance ("Operations on Geant4 viewers."); - fDirectoryList.push_back (directory); - fMessengerList.push_back (new G4VisCommandViewerClear); - fMessengerList.push_back (new G4VisCommandViewerCreate); - fMessengerList.push_back (new G4VisCommandViewerDolly); - fMessengerList.push_back (new G4VisCommandViewerLights); - fMessengerList.push_back (new G4VisCommandViewerList); - fMessengerList.push_back (new G4VisCommandViewerPan); - fMessengerList.push_back (new G4VisCommandViewerRefresh); - fMessengerList.push_back (new G4VisCommandViewerRemove); - fMessengerList.push_back (new G4VisCommandViewerReset); - fMessengerList.push_back (new G4VisCommandViewerSelect); - fMessengerList.push_back (new G4VisCommandViewerUpdate); - fMessengerList.push_back (new G4VisCommandViewerViewpoint); - fMessengerList.push_back (new G4VisCommandViewerZoom); - - directory = new G4UIdirectory ("/vis/viewer/set/"); - directory -> SetGuidance ("Set view parameters of current viewer."); - fDirectoryList.push_back (directory); - fMessengerList.push_back (new G4VisCommandsViewerSet); - - // Compound commands... - fMessengerList.push_back (new G4VisCommandDrawTree); - fMessengerList.push_back (new G4VisCommandDrawVolume); - fMessengerList.push_back (new G4VisCommandDrawView); - fMessengerList.push_back (new G4VisCommandOpen); - fMessengerList.push_back (new G4VisCommandSpecify); - - // Camera - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - - // Clear - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); -// fMessengerList.push_back -// (new G4VisSimpleCommandMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); -// fMessengerList.push_back -// (new G4VisSimpleCommandMessenger ); - - // Copy - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); -// fMessengerList.push_back -// (new G4VisSimpleCommandMessenger ); -// fMessengerList.push_back -// (new G4VisSimpleCommandMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - - // Create Scene - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - - // Create View - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - - // Delete - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - - // Draw - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - - // Lights - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisButtonCommandMessenger ); - - // Print - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - - // Refresh - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - - // Set - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisButtonCommandMessenger ); - fMessengerList.push_back - (new G4VisButtonCommandMessenger ); - fMessengerList.push_back - (new G4VisButtonCommandMessenger ); - - // Show - OLD STYLE!! - fMessengerList.push_back - (new G4VisCommandDirectoryMessenger ); - fMessengerList.push_back - (new G4VisSimpleCommandMessenger ); - -} diff --git a/source/visualization/management/src/G4VisStateDependent.cc b/source/visualization/management/src/G4VisStateDependent.cc index acfb569895..ea49224614 100644 --- a/source/visualization/management/src/G4VisStateDependent.cc +++ b/source/visualization/management/src/G4VisStateDependent.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VisStateDependent.cc,v 1.2.4.1 2001/06/28 19:16:17 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VisStateDependent.cc,v 1.4 2001/09/10 10:41:33 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ #include "G4VisStateDependent.hh" @@ -33,10 +33,19 @@ G4VisStateDependent::G4VisStateDependent (G4VisManager* pVisManager): fpVisManager (pVisManager) {} G4bool G4VisStateDependent::Notify (G4ApplicationState requestedState) { - G4StateManager* stateManager = G4StateManager::GetStateManager (); - if(stateManager -> GetPreviousState () == EventProc && - requestedState == GeomClosed) { + G4StateManager* stateManager = G4StateManager::GetStateManager(); + G4ApplicationState previousState = stateManager->GetPreviousState(); + if (previousState == Idle && requestedState == GeomClosed) { + fpVisManager -> BeginOfRun (); + } + else if (previousState == GeomClosed && requestedState == EventProc) { + fpVisManager -> BeginOfEvent (); + } + else if (previousState == EventProc && requestedState == GeomClosed) { fpVisManager -> EndOfEvent (); } + else if (previousState == GeomClosed && requestedState == Idle) { + fpVisManager -> EndOfRun (); + } return true; } diff --git a/source/visualization/management/src/G4VisToOldVisCommands.cc b/source/visualization/management/src/G4VisToOldVisCommands.cc deleted file mode 100644 index 1d0e4943e4..0000000000 --- a/source/visualization/management/src/G4VisToOldVisCommands.cc +++ /dev/null @@ -1,101 +0,0 @@ -// -// ******************************************************************** -// * DISCLAIMER * -// * * -// * The following disclaimer summarizes all the specific disclaimers * -// * of contributors to this software. The specific disclaimers,which * -// * govern, are listed with their locations in: * -// * http://cern.ch/geant4/license * -// * * -// * Neither the authors of this software system, nor their employing * -// * institutes,nor the agencies providing financial support for this * -// * work make any representation or warranty, express or implied, * -// * regarding this software system or assume any liability for its * -// * use. * -// * * -// * This code implementation is the intellectual property of the * -// * GEANT4 collaboration. * -// * By copying, distributing or modifying the Program (or any work * -// * based on the Program) you indicate your acceptance of this * -// * statement, and all its terms. * -// ******************************************************************** -// -// -// $Id: G4VisToOldVisCommands.cc,v 1.5.2.1 2001/06/28 19:16:17 gunter Exp $ -// GEANT4 tag $Name: $ -// -// -// Implements some /vis/ commands as /vis~/ temporarily. -// John Allison 9th December 1998. - -#include "G4VisToOldVisCommands.hh" - -#include "G4UImanager.hh" -#include "G4UIcommandTree.hh" -#include "G4UIdirectory.hh" - -G4VisToOldVisCommands::G4VisToOldVisCommands () { - - G4UIcommandTree* commandTree = G4UImanager::GetUIpointer () -> GetTree (); - G4UIcommandTree* oldVisCommandTree = commandTree -> GetTree ("/vis~/"); - G4int nOldVisTreeEntries = oldVisCommandTree -> GetTreeEntry (); - int i; - for (i = 1; i <= nOldVisTreeEntries; i++) { - G4UIcommandTree* subTree = oldVisCommandTree -> GetTree (i); - G4String subTreeName = subTree -> GetPathName (); - G4String newDirectoryName = subTreeName.replace (0, 6, "/vis/"); - newDirectoryName = newDirectoryName (0, newDirectoryName.last ('/') + 1); - // G4cout << "NewDirectoryName: " << newDirectoryName << G4endl; - new G4UIdirectory (newDirectoryName); - G4int nCommands = subTree -> GetCommandEntry (); - int j; - for (j = 1; j <= nCommands; j++) { - G4UIcommand* command = subTree -> GetCommand (j); - G4String commandPath = command -> GetCommandPath (); - // G4cout << "SubCommandPath: " << commandPath << G4endl; - G4String newCommandPath = commandPath.replace (0, 6, "/vis/"); - // G4cout << "NewSubCommandPath: " << newCommandPath << G4endl; - G4UIcommand* newCommand = new G4UIcommand (newCommandPath, this); - newCommand -> SetRange (command -> GetRange ()); - newCommand -> SetGuidance - ("**** DEPRECATED COMMAND ****" - " Will be discontinued after Geant4 3.0."); - newCommand -> SetGuidance - ("**** DEPRECATED COMMAND ****" - " Will still be available under /vis~/ for a while."); - G4int nGuidances = command -> GetGuidanceEntries (); - int k; - for (k = 0; k < nGuidances; k++) { - newCommand -> SetGuidance (command -> GetGuidanceLine (k)); - } - G4int nParameters = command -> GetParameterEntries (); - for (k = 0; k < nParameters; k++) { - newCommand -> SetParameter (command -> GetParameter (k)); - } - } - } -} - -G4VisToOldVisCommands::~G4VisToOldVisCommands () {} - -void G4VisToOldVisCommands::SetNewValue -(G4UIcommand* command, G4String newValues) { - G4String commandPath = command -> GetCommandPath (); - if (commandPath == "/vis/create_view/new_graphics_system") { - G4cout << - "Command superceded. Please use:" - "\n /vis/scene/create" - "\n /vis/sceneHandler/create " << newValues << - "\n /vis/viewer/create" - "\nThis way you can also use \"/vis/scene/addVolume\" to select" - "\n sub-detector components. (The command is still available" - "\n as \"/vis~/create_view/new_graphics_system " << newValues << - "\".)" - << G4endl; - } - else { - G4String oldCommandPath = commandPath.replace (0, 5, "/vis~/"); - G4UImanager::GetUIpointer () -> - ApplyCommand (oldCommandPath + " " + newValues); - } -} diff --git a/source/visualization/modeling/History b/source/visualization/modeling/History index 969ddffce3..3366f876e0 100644 --- a/source/visualization/modeling/History +++ b/source/visualization/modeling/History @@ -1,4 +1,4 @@ -$Id: History,v 1.8 2001/02/03 18:39:56 johna Exp $ +$Id: History,v 1.16 2001/08/24 20:36:11 johna Exp $ ------------------------------------------------------------------- ========================================================= @@ -20,6 +20,41 @@ committal in the CVS repository ! History file for visualization/modeling --------------------------------------- +24th August 2001 John Allison (vis-V03-02-13) +- Intoduced argument for printing in G4VModel::Validate(G4bool warn). +- Changed default return value in G4VModel::Validate(G4bool) to true. +- Invoke CalculateExtent after successful geometry change in + G4PhysicalVolumeModel::Validate, and other bug fixes.. + +14th August 2001 John Allison (vis-V03-02-11) +- Added sceneHandler.Begin/EndPrimitives messages to models (long + standing bug!). + +9th August 2001 John Allison (vis-V03-02-10-00) +- Removed G4ModelingParameters::hierarchy. It is no longer used. The + textual or graphical representation of the geometry hierarchy is now + done in G4xxxTree classes in visua;ization/Tree. + +25th July 2001 John Allison (modeling-V03-02-03) +- Added G4VModel::GetG4PhysicalVolumeModel(). +- Added G4VModel* argument to G4BoundingSphereScene constructor. + Both the above are to facilitate access to a model, if it exists, and + to invoke methods of G4PhysicalVolumeModel if it is one. +- Added code to curtail G4PhysicalVolumeModel search in G4BoundingSphereScene. + +24th July 2001 John Allison (modeling-V03-02-02) +- Added G4VModel::SetExtent(const G4VisExtent&). +- Cosmetic improvements to G4BoundingSphereScene. +- Augmented G4ScaleModel::fGlobalTag. + +21st July 2001 John Allison (modeling-V03-02-01) +- Added G4ScaleModel. +- Fixed bug in G4BoundingSphereScene::::Accrue(). +- Also a few cosmetic changes. + +18th July 2001 John Allison (modeling-V03-02-00) +- Ensured rotation and translation of replica is restored. + 3rd February 2001 John Allison (vis-V03-00-02) - Tidied for CodeWizard. diff --git a/source/visualization/modeling/include/G4AxesModel.hh b/source/visualization/modeling/include/G4AxesModel.hh index 8d67cdbf62..fc2e1d3fa0 100644 --- a/source/visualization/modeling/include/G4AxesModel.hh +++ b/source/visualization/modeling/include/G4AxesModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AxesModel.hh,v 1.1.2.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AxesModel.hh,v 1.4 2001/08/24 20:34:14 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 3rd April 2001 @@ -49,7 +49,7 @@ public: // With description virtual ~G4AxesModel (); virtual void DescribeYourselfTo (G4VGraphicsScene&); - // The main task of a model is to describe itself to the scene. + // The main task of a model is to describe itself to the graphics scene. virtual G4String GetCurrentDescription () const; // A description which depends on the current state of the model. @@ -57,12 +57,9 @@ public: // With description virtual G4String GetCurrentTag () const; // A tag which depends on the current state of the model. - virtual G4bool Validate (); - // Validate, but allow internal changes (hence non-const function). - private: - // Private copy contructor and assignmen to forbid uset... + // Private copy contructor and assignment to forbid use... G4AxesModel (const G4AxesModel&); G4AxesModel& operator = (const G4AxesModel&); diff --git a/source/visualization/modeling/include/G4AxesModel.icc b/source/visualization/modeling/include/G4AxesModel.icc index 1bf25052c5..8ea71035a8 100644 --- a/source/visualization/modeling/include/G4AxesModel.icc +++ b/source/visualization/modeling/include/G4AxesModel.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AxesModel.icc,v 1.1.2.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AxesModel.icc,v 1.3 2001/08/24 20:34:15 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ inline G4String G4AxesModel::GetCurrentTag () const { return fGlobalTag; @@ -31,7 +31,3 @@ inline G4String G4AxesModel::GetCurrentTag () const { inline G4String G4AxesModel::GetCurrentDescription () const { return fGlobalDescription; } - -inline G4bool G4AxesModel::Validate () { - return true; -} diff --git a/source/visualization/modeling/include/G4BoundingSphereScene.hh b/source/visualization/modeling/include/G4BoundingSphereScene.hh index be268425c6..006f0e9e94 100644 --- a/source/visualization/modeling/include/G4BoundingSphereScene.hh +++ b/source/visualization/modeling/include/G4BoundingSphereScene.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BoundingSphereScene.hh,v 1.8.2.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BoundingSphereScene.hh,v 1.11 2001/07/25 21:08:14 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 7th June 1997 @@ -44,10 +44,12 @@ #include "G4Polycone.hh" #include "G4Polyhedra.hh" +class G4VModel; + class G4BoundingSphereScene: public G4VGraphicsScene { public: - G4BoundingSphereScene (); + G4BoundingSphereScene (G4VModel* pModel = 0); virtual ~G4BoundingSphereScene (); void AddThis (const G4Box& s) {Accrue (s);} void AddThis (const G4Cons& s) {Accrue (s);} @@ -80,6 +82,7 @@ public: virtual void BeginPrimitives (const G4Transform3D& objectTransformation) {} virtual void EndPrimitives () {} virtual void AddPrimitive (const G4Polyline&) {} + virtual void AddPrimitive (const G4Scale&) {} virtual void AddPrimitive (const G4Text&) {} virtual void AddPrimitive (const G4Circle&) {} virtual void AddPrimitive (const G4Square&) {} @@ -89,6 +92,7 @@ public: private: void Accrue (const G4VSolid& solid); + G4VModel* fpModel; // Instantiating code may optionally set this. G4Point3D fCentre; G4double fRadius; const G4Transform3D* fpObjectTransformation; diff --git a/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh b/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh index f463561821..1939f334ea 100644 --- a/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh +++ b/source/visualization/modeling/include/G4FlavoredParallelWorldModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FlavoredParallelWorldModel.hh,v 1.5.4.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FlavoredParallelWorldModel.hh,v 1.6 2001/07/11 10:09:20 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // P. Mora de Freitas et M.Verderi - 19 June 1998. // diff --git a/source/visualization/modeling/include/G4HitsModel.hh b/source/visualization/modeling/include/G4HitsModel.hh index 787e36476a..b86fd57c09 100644 --- a/source/visualization/modeling/include/G4HitsModel.hh +++ b/source/visualization/modeling/include/G4HitsModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HitsModel.hh,v 1.4.4.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HitsModel.hh,v 1.7 2001/08/24 20:36:13 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 26th August 1998. @@ -49,7 +49,7 @@ public: // With description virtual ~G4HitsModel (); virtual void DescribeYourselfTo (G4VGraphicsScene&); - // The main task of a model is to describe itself to the scene. + // The main task of a model is to describe itself to the graphics scene. virtual G4String GetCurrentDescription () const; // A description which depends on the current state of the model. @@ -57,9 +57,6 @@ public: // With description virtual G4String GetCurrentTag () const; // A tag which depends on the current state of the model. - virtual G4bool Validate (); - // Validate, but allow internal changes (hence non-const function). - }; #include "G4HitsModel.icc" diff --git a/source/visualization/modeling/include/G4HitsModel.icc b/source/visualization/modeling/include/G4HitsModel.icc index 93caae3ab4..e6f7ad6574 100644 --- a/source/visualization/modeling/include/G4HitsModel.icc +++ b/source/visualization/modeling/include/G4HitsModel.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HitsModel.icc,v 1.4.4.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HitsModel.icc,v 1.6 2001/08/24 20:36:14 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ inline G4String G4HitsModel::GetCurrentTag () const { return fGlobalTag; @@ -31,7 +31,3 @@ inline G4String G4HitsModel::GetCurrentTag () const { inline G4String G4HitsModel::GetCurrentDescription () const { return fGlobalDescription; } - -inline G4bool G4HitsModel::Validate () { - return true; -} diff --git a/source/visualization/modeling/include/G4LogicalVolumeModel.hh b/source/visualization/modeling/include/G4LogicalVolumeModel.hh index f51e0ece75..5078fbde87 100644 --- a/source/visualization/modeling/include/G4LogicalVolumeModel.hh +++ b/source/visualization/modeling/include/G4LogicalVolumeModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalVolumeModel.hh,v 1.4.4.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalVolumeModel.hh,v 1.5 2001/07/11 10:09:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 26th July 1999. diff --git a/source/visualization/modeling/include/G4ModelingParameters.hh b/source/visualization/modeling/include/G4ModelingParameters.hh index 03ba6add94..82d10fdb09 100644 --- a/source/visualization/modeling/include/G4ModelingParameters.hh +++ b/source/visualization/modeling/include/G4ModelingParameters.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ModelingParameters.hh,v 1.5.4.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ModelingParameters.hh,v 1.7 2001/08/09 20:06:20 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 31st December 1997. @@ -50,8 +50,7 @@ public: // With description enum RepStyle { wireframe, // Use G4Wireframe. polyhedron, // Use G4Polyhedron. - nurbs, // Use G4NURBS. - hierarchy // Draw as geometry hierarchy (DTREE in GEANT3 language!). + nurbs // Use G4NURBS. }; // RepStyle is used to determine which graphics_reps classes to use, // if required. diff --git a/source/visualization/modeling/include/G4ModelingParameters.icc b/source/visualization/modeling/include/G4ModelingParameters.icc index 7b94e982eb..0bc5c7810e 100644 --- a/source/visualization/modeling/include/G4ModelingParameters.icc +++ b/source/visualization/modeling/include/G4ModelingParameters.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ModelingParameters.icc,v 1.3.4.1 2001/06/28 19:16:18 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ModelingParameters.icc,v 1.4 2001/07/11 10:09:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/include/G4NullModel.hh b/source/visualization/modeling/include/G4NullModel.hh index 642a3f66c6..5e0a9a67dd 100644 --- a/source/visualization/modeling/include/G4NullModel.hh +++ b/source/visualization/modeling/include/G4NullModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NullModel.hh,v 1.4.4.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NullModel.hh,v 1.6 2001/08/24 20:36:15 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 4th April 1998. @@ -45,9 +45,6 @@ public: void DescribeYourselfTo (G4VGraphicsScene&); // An exception is thrown if this is called!!!!!!!!!!!!!!!!!!!! - G4bool Validate (); - // Validate, but allow internal changes (hence non-const function). - ///////////////////////////////////////////////// // Access to other information: use GetModelingParameters() // (inherited from G4VModel) and the access functions of diff --git a/source/visualization/modeling/include/G4PhysicalVolumeModel.hh b/source/visualization/modeling/include/G4PhysicalVolumeModel.hh index ecf7859dae..1064c23416 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeModel.hh +++ b/source/visualization/modeling/include/G4PhysicalVolumeModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicalVolumeModel.hh,v 1.12.2.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicalVolumeModel.hh,v 1.16 2001/08/24 20:36:17 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 31st December 1997. @@ -66,7 +66,7 @@ public: // With description virtual ~G4PhysicalVolumeModel (); void DescribeYourselfTo (G4VGraphicsScene&); - // The main task of a model is to describe itself to the scene + // The main task of a model is to describe itself to the graphics scene // handler (a object which inherits G4VSceneHandler, which inherits // G4VGraphicsScene). It can also provide special information // through pointers to working space in the scene handler. These @@ -85,7 +85,14 @@ public: // With description G4String GetCurrentTag () const; // A tag which depends on the current state of the model. - G4bool Validate (); + const G4PhysicalVolumeModel* GetG4PhysicalVolumeModel () const { + return this; + } + G4PhysicalVolumeModel* GetG4PhysicalVolumeModel () { + return this; + } + + G4bool Validate (G4bool warn); // Validate, but allow internal changes (hence non-const function). void DefinePointersToWorkingSpace (G4int* pCurrentDepth, @@ -121,6 +128,8 @@ protected: G4bool IsDaughterCulled (const G4LogicalVolume* pMotherLV); + void CalculateExtent (); + ///////////////////////////////////////////////////////// // Data members... @@ -129,6 +138,7 @@ protected: G4int fTopPVCopyNo; // ...of the physical volume. G4int fRequestedDepth; // Requested depth of geom. hierarchy search. + G4bool fUseFullExtent; // ...if requested. G4int fCurrentDepth; // Current depth of geom. hierarchy. G4VPhysicalVolume* fpCurrentPV; // Current physical volume. G4LogicalVolume* fpCurrentLV; // Current logical volume. diff --git a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh index d66c972037..d3e47dde61 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh +++ b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicalVolumeSearchScene.hh,v 1.7.4.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicalVolumeSearchScene.hh,v 1.9 2001/07/22 01:00:24 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 10th August 1998. @@ -77,6 +77,7 @@ public: virtual void BeginPrimitives (const G4Transform3D& objectTransformation) {} virtual void EndPrimitives () {} virtual void AddPrimitive (const G4Polyline&) {} + virtual void AddPrimitive (const G4Scale&) {} virtual void AddPrimitive (const G4Text&) {} virtual void AddPrimitive (const G4Circle&) {} virtual void AddPrimitive (const G4Square&) {} diff --git a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc index 15baf0463b..c56a591120 100644 --- a/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc +++ b/source/visualization/modeling/include/G4PhysicalVolumeSearchScene.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicalVolumeSearchScene.icc,v 1.3.4.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicalVolumeSearchScene.icc,v 1.4 2001/07/11 10:09:21 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 10th August 1998. diff --git a/source/visualization/modeling/include/G4ScaleModel.hh b/source/visualization/modeling/include/G4ScaleModel.hh new file mode 100644 index 0000000000..d36118e7cc --- /dev/null +++ b/source/visualization/modeling/include/G4ScaleModel.hh @@ -0,0 +1,72 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ScaleModel.hh,v 1.2 2001/08/24 20:36:18 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 21st July 2001. +// +// Class Description: +// +// Model which knows how to draw a scale. +// +// For access to base class information, e.g., modeling parameters, +// use GetModelingParameters() inherited from G4VModel. See Class +// Description of the base class G4VModel. + +#ifndef G4SCALEMODEL_HH +#define G4SCALEMODEL_HH + +#include "G4VModel.hh" +#include "G4Scale.hh" + +class G4ScaleModel: public G4VModel { + +public: // With description + + G4ScaleModel (const G4Scale&); + + virtual ~G4ScaleModel (); + + virtual void DescribeYourselfTo (G4VGraphicsScene&); + // The main task of a model is to describe itself to the graphics scene. + + virtual G4String GetCurrentDescription () const; + // A description which depends on the current state of the model. + + virtual G4String GetCurrentTag () const; + // A tag which depends on the current state of the model. + +private: + + // Private copy contructor and assignment to forbid use... + G4ScaleModel (const G4ScaleModel&); + G4ScaleModel& operator = (const G4ScaleModel&); + + G4Scale fScale; +}; + +#include "G4ScaleModel.icc" + +#endif diff --git a/source/analysis/jas/src/JasAxis.cc b/source/visualization/modeling/include/G4ScaleModel.icc similarity index 76% rename from source/analysis/jas/src/JasAxis.cc rename to source/visualization/modeling/include/G4ScaleModel.icc index bd03f7c48c..316b46ba9a 100644 --- a/source/analysis/jas/src/JasAxis.cc +++ b/source/visualization/modeling/include/G4ScaleModel.icc @@ -20,18 +20,14 @@ // * statement, and all its terms. * // ******************************************************************** // +// +// $Id: G4ScaleModel.icc,v 1.2 2001/08/24 20:36:19 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ -#ifdef G4ANALYSIS_BUILD_JAS +inline G4String G4ScaleModel::GetCurrentTag () const { + return fGlobalTag; +} -#include "JasAxis.h" - -double JasAxis::lowerEdge() const {return 0;} -double JasAxis::upperEdge() const { return 0;} -int JasAxis::bins() const { return 0;} -double JasAxis::binLowerEdge(int) const { return 0;} -double JasAxis::binUpperEdge(int) const { return 0;} -double JasAxis::binWidth(int) const { return 0;} -double JasAxis::binCentre(int) const { return 0;} -int JasAxis::coordToIndex(double) const { return 0;} - -#endif +inline G4String G4ScaleModel::GetCurrentDescription () const { + return fGlobalDescription; +} diff --git a/source/visualization/modeling/include/G4TextModel.hh b/source/visualization/modeling/include/G4TextModel.hh index a8c4b841f8..6fc3b09c39 100644 --- a/source/visualization/modeling/include/G4TextModel.hh +++ b/source/visualization/modeling/include/G4TextModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TextModel.hh,v 1.1.2.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TextModel.hh,v 1.4 2001/08/24 20:36:21 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 3rd April 2001 @@ -50,7 +50,7 @@ public: // With description virtual ~G4TextModel (); virtual void DescribeYourselfTo (G4VGraphicsScene&); - // The main task of a model is to describe itself to the scene. + // The main task of a model is to describe itself to the graphics scene. virtual G4String GetCurrentDescription () const; // A description which depends on the current state of the model. @@ -58,12 +58,9 @@ public: // With description virtual G4String GetCurrentTag () const; // A tag which depends on the current state of the model. - virtual G4bool Validate (); - // Validate, but allow internal changes (hence non-const function). - private: - // Private copy contructor and assignmen to forbid uset... + // Private copy contructor and assignment to forbid use... G4TextModel (const G4TextModel&); G4TextModel& operator = (const G4TextModel&); diff --git a/source/visualization/modeling/include/G4TextModel.icc b/source/visualization/modeling/include/G4TextModel.icc index 873a609929..e707d10c51 100644 --- a/source/visualization/modeling/include/G4TextModel.icc +++ b/source/visualization/modeling/include/G4TextModel.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TextModel.icc,v 1.1.2.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TextModel.icc,v 1.3 2001/08/24 20:36:22 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ inline G4String G4TextModel::GetCurrentTag () const { return fGlobalTag; @@ -31,7 +31,3 @@ inline G4String G4TextModel::GetCurrentTag () const { inline G4String G4TextModel::GetCurrentDescription () const { return fGlobalDescription; } - -inline G4bool G4TextModel::Validate () { - return true; -} diff --git a/source/visualization/modeling/include/G4TrajectoriesModel.hh b/source/visualization/modeling/include/G4TrajectoriesModel.hh index 852a346539..512ac76cc3 100644 --- a/source/visualization/modeling/include/G4TrajectoriesModel.hh +++ b/source/visualization/modeling/include/G4TrajectoriesModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrajectoriesModel.hh,v 1.4.4.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrajectoriesModel.hh,v 1.7 2001/08/24 20:36:23 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 26th August 1998. @@ -49,7 +49,7 @@ public: // With description virtual ~G4TrajectoriesModel (); virtual void DescribeYourselfTo (G4VGraphicsScene&); - // The main task of a model is to describe itself to the scene. + // The main task of a model is to describe itself to the graphics scene. virtual G4String GetCurrentDescription () const; // A description which depends on the current state of the model. @@ -57,9 +57,6 @@ public: // With description virtual G4String GetCurrentTag () const; // A tag which depends on the current state of the model. - virtual G4bool Validate (); - // Validate, but allow internal changes (hence non-const function). - }; #include "G4TrajectoriesModel.icc" diff --git a/source/visualization/modeling/include/G4TrajectoriesModel.icc b/source/visualization/modeling/include/G4TrajectoriesModel.icc index e53ba903f3..2998ec895e 100644 --- a/source/visualization/modeling/include/G4TrajectoriesModel.icc +++ b/source/visualization/modeling/include/G4TrajectoriesModel.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrajectoriesModel.icc,v 1.4.4.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrajectoriesModel.icc,v 1.6 2001/08/24 20:36:24 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ inline G4String G4TrajectoriesModel::GetCurrentTag () const { return fGlobalTag; @@ -31,8 +31,3 @@ inline G4String G4TrajectoriesModel::GetCurrentTag () const { inline G4String G4TrajectoriesModel::GetCurrentDescription () const { return fGlobalDescription; } - -inline G4bool G4TrajectoriesModel::Validate () { - return true; -} - diff --git a/source/visualization/modeling/include/G4VModel.hh b/source/visualization/modeling/include/G4VModel.hh index ec625edacb..a14dd7c86a 100644 --- a/source/visualization/modeling/include/G4VModel.hh +++ b/source/visualization/modeling/include/G4VModel.hh @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VModel.hh,v 1.8.2.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VModel.hh,v 1.13 2001/08/24 20:36:26 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 31st December 1997. @@ -33,6 +33,8 @@ // graphics-system-indepedent description of a Geant4 component. // The key fuctionality of a model is to know how to describe itself // to a scene handler. A scene is a collection of models. +// A special case is made for G4PhysicalVolumeModel - a non-null pointer +// is to be returned by G4PhysicalVolumeModel::GetG4PhysicalVolumeModel(). #ifndef G4VMODEL_HH #define G4VMODEL_HH @@ -44,6 +46,8 @@ class G4VGraphicsScene; class G4ModelingParameters; +class G4PhysicalVolumeModel; // Special case - see above. + class G4VModel { public: // With description @@ -57,7 +61,7 @@ public: // With description virtual ~G4VModel (); virtual void DescribeYourselfTo (G4VGraphicsScene&) = 0; - // The main task of a model is to describe itself to the scene. + // The main task of a model is to describe itself to the graphics scene. const G4ModelingParameters* GetModelingParameters () const; @@ -82,9 +86,15 @@ public: // With description const G4Transform3D& GetTransformation () const; // Model transformation, i.e., position and orientation of model in world. + virtual const G4PhysicalVolumeModel* GetG4PhysicalVolumeModel () const; + virtual G4PhysicalVolumeModel* GetG4PhysicalVolumeModel (); + // Returns 0 unless implemented by derived class. + void SetModelingParameters (const G4ModelingParameters*); - virtual G4bool Validate (); + void SetExtent (const G4VisExtent&); + + virtual G4bool Validate (G4bool warn = true); // Validate, but allow internal changes (hence non-const function). protected: diff --git a/source/visualization/modeling/include/G4VModel.icc b/source/visualization/modeling/include/G4VModel.icc index 7878c67640..3f2fae0e63 100644 --- a/source/visualization/modeling/include/G4VModel.icc +++ b/source/visualization/modeling/include/G4VModel.icc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VModel.icc,v 1.6.2.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VModel.icc,v 1.9 2001/07/25 21:12:20 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 31st December 1997. @@ -48,6 +48,19 @@ inline const G4Transform3D& G4VModel::GetTransformation () const { return fTransform; } +inline const G4PhysicalVolumeModel* + G4VModel::GetG4PhysicalVolumeModel () const { + return 0; +} + +inline G4PhysicalVolumeModel* G4VModel::GetG4PhysicalVolumeModel () { + return 0; +} + inline void G4VModel::SetModelingParameters (const G4ModelingParameters* pMP) { fpMP = pMP; } + +inline void G4VModel::SetExtent (const G4VisExtent& extent) { + fExtent = extent; +} diff --git a/source/visualization/modeling/src/G4AxesModel.cc b/source/visualization/modeling/src/G4AxesModel.cc index 7915dc82c6..9c09116f3d 100644 --- a/source/visualization/modeling/src/G4AxesModel.cc +++ b/source/visualization/modeling/src/G4AxesModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4AxesModel.cc,v 1.2.2.1 2001/06/28 19:16:19 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4AxesModel.cc,v 1.5 2001/08/14 18:43:29 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 3rd April 2001 @@ -45,7 +45,7 @@ G4AxesModel::G4AxesModel fGlobalDescription = fGlobalTag; } -void G4AxesModel::DescribeYourselfTo (G4VGraphicsScene& scene) { +void G4AxesModel::DescribeYourselfTo (G4VGraphicsScene& sceneHandler) { G4Polyline x_axis, y_axis, z_axis; @@ -57,21 +57,25 @@ void G4AxesModel::DescribeYourselfTo (G4VGraphicsScene& scene) { G4VisAttributes ay(cy); // VA for y-axis G4VisAttributes az(cz); // VA for z-axis + sceneHandler.BeginPrimitives(); + //----- Draw x-axis x_axis.SetVisAttributes(&ax); x_axis.push_back(G4Point3D(fX0,fY0,fZ0)); x_axis.push_back(G4Point3D((fX0 + fLength),fY0,fZ0)); - scene.AddPrimitive(x_axis); + sceneHandler.AddPrimitive(x_axis); //----- Draw y-axis y_axis.SetVisAttributes(&ay); y_axis.push_back(G4Point3D(fX0,fY0,fZ0)); y_axis.push_back(G4Point3D(fX0,(fY0 + fLength),fZ0)); - scene.AddPrimitive(y_axis); + sceneHandler.AddPrimitive(y_axis); //----- Draw z-axis z_axis.SetVisAttributes(&az); z_axis.push_back(G4Point3D(fX0,fY0,fZ0)); z_axis.push_back(G4Point3D(fX0,fY0,(fZ0 + fLength))); - scene.AddPrimitive(z_axis); + sceneHandler.AddPrimitive(z_axis); + + sceneHandler.EndPrimitives(); } diff --git a/source/visualization/modeling/src/G4BoundingSphereScene.cc b/source/visualization/modeling/src/G4BoundingSphereScene.cc index 84d51bb483..61d88d7715 100644 --- a/source/visualization/modeling/src/G4BoundingSphereScene.cc +++ b/source/visualization/modeling/src/G4BoundingSphereScene.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4BoundingSphereScene.cc,v 1.4.4.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4BoundingSphereScene.cc,v 1.8 2001/07/25 21:10:22 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 7th June 1997 @@ -31,9 +31,11 @@ #include "G4BoundingSphereScene.hh" #include "G4VSolid.hh" +#include "G4PhysicalVolumeModel.hh" #include "G4Vector3D.hh" -G4BoundingSphereScene::G4BoundingSphereScene (): +G4BoundingSphereScene::G4BoundingSphereScene (G4VModel* pModel): + fpModel (pModel), fRadius (-1.), fpObjectTransformation (0) {} @@ -51,17 +53,18 @@ G4VisExtent G4BoundingSphereScene::GetBoundingSphereExtent () { } void G4BoundingSphereScene::Accrue (const G4VSolid& solid) { - const G4VisExtent& thisExtent = solid.GetExtent (); - G4Point3D thisCentre = thisExtent.GetExtentCentre (); + + const G4VisExtent& newExtent = solid.GetExtent (); + G4Point3D newCentre = newExtent.GetExtentCentre (); if (fpObjectTransformation) { - thisCentre.transform (*fpObjectTransformation); + newCentre.transform (*fpObjectTransformation); } - const G4double thisRadius = thisExtent.GetExtentRadius (); - AccrueBoundingSphere (thisCentre, thisRadius); - /*********************************************** - G4cout << "G4BoundingSphereScene::Accrue: centre: " << fCentre - << ", radius: " << fRadius << G4endl; - ***********************************************/ + const G4double newRadius = newExtent.GetExtentRadius (); + AccrueBoundingSphere (newCentre, newRadius); + + // Curtail descent - can assume daughters are contained within mother... + G4PhysicalVolumeModel* pPVM = fpModel->GetG4PhysicalVolumeModel(); + if (pPVM) pPVM->CurtailDescent(); } void G4BoundingSphereScene::ResetBoundingSphere () { @@ -71,28 +74,43 @@ void G4BoundingSphereScene::ResetBoundingSphere () { } void G4BoundingSphereScene::AccrueBoundingSphere -(const G4Point3D& thisCentre, - G4double thisRadius) { +(const G4Point3D& newCentre, + G4double newRadius) { if (fRadius < 0 ) { // First time. - fCentre = thisCentre; - fRadius = thisRadius; + fCentre = newCentre; + fRadius = newRadius; } else { - G4Vector3D join = thisCentre - fCentre; + G4Vector3D join = newCentre - fCentre; if (join == G4Vector3D (0., 0., 0.)) { // Centres coincide. - if (fRadius < thisRadius) fRadius = thisRadius; + if (fRadius < newRadius) fRadius = newRadius; } - else if (join.mag () + thisRadius <= fRadius) { // Inside accrued sphere. + else if (join.mag () + newRadius <= fRadius) { // Inside accrued sphere. // Do nothing. } else { G4Vector3D unitJoin = join.unit (); - G4Point3D extremity1 = fCentre - fRadius * unitJoin; - G4Point3D extremity2 = thisCentre + thisRadius * unitJoin; + G4Point3D oldExtremity1 = fCentre - fRadius * unitJoin; + G4Point3D newExtremity1 = newCentre - newRadius * unitJoin; + G4Point3D oldExtremity2 = fCentre + fRadius * unitJoin; + G4Point3D newExtremity2 = newCentre + newRadius * unitJoin; + G4Point3D extremity1; + if (oldExtremity1 * unitJoin < newExtremity1 * unitJoin) { + extremity1 = oldExtremity1; + } + else { + extremity1 = newExtremity1; + } + G4Point3D extremity2; + if (oldExtremity2 * unitJoin > newExtremity2 * unitJoin) { + extremity2 = oldExtremity2; + } + else { + extremity2 = newExtremity2; + } fCentre = 0.5 * (extremity2 + extremity1); fRadius = 0.5 * (extremity2 - extremity1).mag (); } } } - diff --git a/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc b/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc index 84175904fc..8face305d9 100644 --- a/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc +++ b/source/visualization/modeling/src/G4FlavoredParallelWorldModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4FlavoredParallelWorldModel.cc,v 1.4.4.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4FlavoredParallelWorldModel.cc,v 1.5 2001/07/11 10:09:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // P. Mora de Freitas et M.Verderi - 19 June 1998. // Model for flavored parallel world volumes. diff --git a/source/visualization/modeling/src/G4HitsModel.cc b/source/visualization/modeling/src/G4HitsModel.cc index 625871b3e6..571360378b 100644 --- a/source/visualization/modeling/src/G4HitsModel.cc +++ b/source/visualization/modeling/src/G4HitsModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4HitsModel.cc,v 1.4.4.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4HitsModel.cc,v 1.7 2001/08/14 18:43:30 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 26th August 1998. @@ -30,6 +30,7 @@ #include "G4HitsModel.hh" +#include "G4VGraphicsScene.hh" #include "G4ModelingParameters.hh" #include "G4RunManager.hh" #include "G4Event.hh" @@ -42,7 +43,7 @@ G4HitsModel::G4HitsModel () { fGlobalDescription = fGlobalTag; } -void G4HitsModel::DescribeYourselfTo (G4VGraphicsScene& scene) { +void G4HitsModel::DescribeYourselfTo (G4VGraphicsScene& sceneHandler) { if (fpMP && fpMP -> IsViewHits ()) { G4RunManager* runManager = G4RunManager::GetRunManager (); const G4Event* event = runManager -> GetCurrentEvent (); @@ -50,9 +51,11 @@ void G4HitsModel::DescribeYourselfTo (G4VGraphicsScene& scene) { G4HCofThisEvent* HCE = event -> GetHCofThisEvent (); if (HCE) { G4int nHC = HCE -> GetCapacity (); + sceneHandler.BeginPrimitives (); for (int iHC = 0; iHC < nHC; iHC++) { HCE -> GetHC (iHC) -> DrawAllHits (); } + sceneHandler.EndPrimitives (); } } } diff --git a/source/visualization/modeling/src/G4LogicalVolumeModel.cc b/source/visualization/modeling/src/G4LogicalVolumeModel.cc index 347cf70846..abfd3cad59 100644 --- a/source/visualization/modeling/src/G4LogicalVolumeModel.cc +++ b/source/visualization/modeling/src/G4LogicalVolumeModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4LogicalVolumeModel.cc,v 1.7.2.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4LogicalVolumeModel.cc,v 1.8 2001/07/11 10:09:22 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 26th July 1999. diff --git a/source/visualization/modeling/src/G4ModelingParameters.cc b/source/visualization/modeling/src/G4ModelingParameters.cc index 576fbcbed8..a318ed6416 100644 --- a/source/visualization/modeling/src/G4ModelingParameters.cc +++ b/source/visualization/modeling/src/G4ModelingParameters.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4ModelingParameters.cc,v 1.4.4.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4ModelingParameters.cc,v 1.5 2001/07/11 10:09:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 31st December 1997. diff --git a/source/visualization/modeling/src/G4NullModel.cc b/source/visualization/modeling/src/G4NullModel.cc index 7294c31f83..559c7df15b 100644 --- a/source/visualization/modeling/src/G4NullModel.cc +++ b/source/visualization/modeling/src/G4NullModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4NullModel.cc,v 1.3.4.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4NullModel.cc,v 1.6 2001/08/24 20:36:28 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 4th April 1998. @@ -36,10 +36,6 @@ G4NullModel::G4NullModel (const G4ModelingParameters* pMP): G4NullModel::~G4NullModel () {} -void G4NullModel::DescribeYourselfTo (G4VGraphicsScene& scene) { +void G4NullModel::DescribeYourselfTo (G4VGraphicsScene& sceneHandler) { G4Exception ("G4NullModel::DescribeYourselfTo called."); } - -G4bool G4NullModel::Validate () { - return true; -} diff --git a/source/visualization/modeling/src/G4PhysicalVolumeModel.cc b/source/visualization/modeling/src/G4PhysicalVolumeModel.cc index 44d97d98ed..8390f7ed02 100644 --- a/source/visualization/modeling/src/G4PhysicalVolumeModel.cc +++ b/source/visualization/modeling/src/G4PhysicalVolumeModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicalVolumeModel.cc,v 1.15.2.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicalVolumeModel.cc,v 1.20 2001/08/24 20:34:25 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 31st December 1997. @@ -55,6 +55,7 @@ G4PhysicalVolumeModel::G4PhysicalVolumeModel fTopPVName (pVPV -> GetName ()), fTopPVCopyNo (pVPV -> GetCopyNo ()), fRequestedDepth (requestedDepth), + fUseFullExtent (useFullExtent), fCurrentDepth (0), fpCurrentPV (0), fpCurrentLV (0), @@ -69,11 +70,17 @@ G4PhysicalVolumeModel::G4PhysicalVolumeModel fGlobalTag = fpTopPV -> GetName () + "." + a; fGlobalDescription = "G4PhysicalVolumeModel " + fGlobalTag; - if (useFullExtent) { + CalculateExtent (); +} + +G4PhysicalVolumeModel::~G4PhysicalVolumeModel () {} + +void G4PhysicalVolumeModel::CalculateExtent () { + if (fUseFullExtent) { fExtent = fpTopPV -> GetLogicalVolume () -> GetSolid () -> GetExtent (); } else { - G4BoundingSphereScene bsScene; + G4BoundingSphereScene bsScene(this); const G4ModelingParameters* tempMP = fpMP; G4ModelingParameters mParams (0, // No default vis attributes. @@ -94,8 +101,6 @@ G4PhysicalVolumeModel::G4PhysicalVolumeModel } } -G4PhysicalVolumeModel::~G4PhysicalVolumeModel () {} - void G4PhysicalVolumeModel::DescribeYourselfTo (G4VGraphicsScene& sceneHandler) { @@ -225,6 +230,8 @@ void G4PhysicalVolumeModel::VisitGeometryAndGetVisReps // They have phi of offset+n*width to offset+(n+1)*width where // n=0..nReplicas-1 // + G4ThreeVector originalTranslation = pVPV -> GetTranslation (); + G4RotationMatrix* pOriginalRotation = pVPV -> GetRotation (); for (int n = 0; n < nReplicas; n++) { G4ThreeVector translation; // Null. G4RotationMatrix rotation; // Null - life long enough for visualizing. @@ -241,7 +248,7 @@ void G4PhysicalVolumeModel::VisitGeometryAndGetVisReps translation = G4ThreeVector (0,0,-width*(nReplicas-1)*0.5+n*width); break; case kRho: - G4cerr << + G4cout << "G4PhysicalVolumeModel::VisitGeometryAndGetVisReps: WARNING:" "\n built-in replicated volumes replicated in radius are not yet" "\n properly visualizable." @@ -263,6 +270,9 @@ void G4PhysicalVolumeModel::VisitGeometryAndGetVisReps DescribeAndDescend (pVPV, requestedDepth, pLV, pSol, pMaterial, theAT, sceneHandler); } + // Restore originals... + pVPV -> SetTranslation (originalTranslation); + pVPV -> SetRotation (pOriginalRotation); } } @@ -432,32 +442,41 @@ G4bool G4PhysicalVolumeModel::IsDaughterCulled } } -G4bool G4PhysicalVolumeModel::Validate () { +G4bool G4PhysicalVolumeModel::Validate (G4bool warn) { G4VPhysicalVolume* world = G4TransportationManager::GetTransportationManager () -> GetNavigatorForTracking () -> GetWorldVolume (); // The idea now is to seek a PV with the same name and copy no // in the hope it's the same one!! - G4cout << "G4PhysicalVolumeModel::Validate() called." << G4endl; + if (warn) { + G4cout << "G4PhysicalVolumeModel::Validate() called." << G4endl; + } G4PhysicalVolumeSearchScene searchScene (fTopPVName, fTopPVCopyNo); G4PhysicalVolumeModel searchModel (world); + G4ModelingParameters mp; // Default modeling parameters for this search. + searchModel.SetModelingParameters (&mp); searchModel.DescribeYourselfTo (searchScene); G4VPhysicalVolume* foundVolume = searchScene.GetFoundVolume (); if (foundVolume) { - G4cout << " Volume of the same name and copy number (\"" - << fTopPVName << "\", copy " << fTopPVCopyNo - << ") still exists and is being used." - "\n Be warned that this does not necessarily guarantee it's the same" - "\n volume you originally specified in /vis/scene/add/." - << G4endl; + if (warn) { + G4cout << " Volume of the same name and copy number (\"" + << fTopPVName << "\", copy " << fTopPVCopyNo + << ") still exists and is being used." + "\n Be warned that this does not necessarily guarantee it's the same" + "\n volume you originally specified in /vis/scene/add/." + << G4endl; + } fpTopPV = foundVolume; + CalculateExtent (); return true; } else { - G4cout << " A volume of the same name and copy number (\"" - << fTopPVName << "\", copy " << fTopPVCopyNo - << ") no longer exists." - << G4endl; + if (warn) { + G4cout << " A volume of the same name and copy number (\"" + << fTopPVName << "\", copy " << fTopPVCopyNo + << ") no longer exists." + << G4endl; + } return false; } } diff --git a/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc b/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc index 644297b4ed..89d8ff001c 100644 --- a/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc +++ b/source/visualization/modeling/src/G4PhysicalVolumeSearchScene.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4PhysicalVolumeSearchScene.cc,v 1.5.2.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4PhysicalVolumeSearchScene.cc,v 1.6 2001/07/11 10:09:23 gunter Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 10th August 1998. diff --git a/source/visualization/modeling/src/G4ScaleModel.cc b/source/visualization/modeling/src/G4ScaleModel.cc new file mode 100644 index 0000000000..323971a216 --- /dev/null +++ b/source/visualization/modeling/src/G4ScaleModel.cc @@ -0,0 +1,58 @@ +// +// ******************************************************************** +// * DISCLAIMER * +// * * +// * The following disclaimer summarizes all the specific disclaimers * +// * of contributors to this software. The specific disclaimers,which * +// * govern, are listed with their locations in: * +// * http://cern.ch/geant4/license * +// * * +// * Neither the authors of this software system, nor their employing * +// * institutes,nor the agencies providing financial support for this * +// * work make any representation or warranty, express or implied, * +// * regarding this software system or assume any liability for its * +// * use. * +// * * +// * This code implementation is the intellectual property of the * +// * GEANT4 collaboration. * +// * By copying, distributing or modifying the Program (or any work * +// * based on the Program) you indicate your acceptance of this * +// * statement, and all its terms. * +// ******************************************************************** +// +// +// $Id: G4ScaleModel.cc,v 1.3 2001/08/14 18:43:31 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ +// +// +// John Allison 21st July 2001. +// Model which knows how to draw scale. + +#include "G4ScaleModel.hh" + +#include "G4ModelingParameters.hh" +#include "G4VGraphicsScene.hh" + +G4ScaleModel::~G4ScaleModel () {} + +G4ScaleModel::G4ScaleModel (const G4Scale& scale): fScale(scale) { + fGlobalTag = "G4ScaleModel: " + fScale.GetAnnotation(); + switch (fScale.GetDirection()) { + case G4Scale::x: + fGlobalTag += " x"; + break; + case G4Scale::y: + fGlobalTag += " y"; + break; + case G4Scale::z: + fGlobalTag += " z"; + break; + } + fGlobalDescription = fGlobalTag; +} + +void G4ScaleModel::DescribeYourselfTo (G4VGraphicsScene& sceneHandler) { + sceneHandler.BeginPrimitives (); + sceneHandler.AddPrimitive (fScale); + sceneHandler.EndPrimitives (); +} diff --git a/source/visualization/modeling/src/G4TextModel.cc b/source/visualization/modeling/src/G4TextModel.cc index d267ca76bb..e81c8d2b3b 100644 --- a/source/visualization/modeling/src/G4TextModel.cc +++ b/source/visualization/modeling/src/G4TextModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TextModel.cc,v 1.1.2.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TextModel.cc,v 1.4 2001/08/14 18:43:32 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 3rd April 2001 @@ -40,6 +40,8 @@ G4TextModel::G4TextModel (const G4Text& text): fText(text) { fGlobalDescription = fGlobalTag; } -void G4TextModel::DescribeYourselfTo (G4VGraphicsScene& scene) { - scene.AddPrimitive (fText); +void G4TextModel::DescribeYourselfTo (G4VGraphicsScene& sceneHandler) { + sceneHandler.BeginPrimitives (); + sceneHandler.AddPrimitive (fText); + sceneHandler.EndPrimitives (); } diff --git a/source/visualization/modeling/src/G4TrajectoriesModel.cc b/source/visualization/modeling/src/G4TrajectoriesModel.cc index dda126af74..8319be0224 100644 --- a/source/visualization/modeling/src/G4TrajectoriesModel.cc +++ b/source/visualization/modeling/src/G4TrajectoriesModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4TrajectoriesModel.cc,v 1.6.4.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4TrajectoriesModel.cc,v 1.9 2001/08/14 18:43:33 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 26th August 1998. @@ -30,6 +30,7 @@ #include "G4TrajectoriesModel.hh" +#include "G4VGraphicsScene.hh" #include "G4RunManager.hh" #include "G4Event.hh" @@ -40,13 +41,14 @@ G4TrajectoriesModel::G4TrajectoriesModel () { fGlobalDescription = fGlobalTag; } -void G4TrajectoriesModel::DescribeYourselfTo (G4VGraphicsScene& scene) { +void G4TrajectoriesModel::DescribeYourselfTo (G4VGraphicsScene& sceneHandler) { G4RunManager* runManager = G4RunManager::GetRunManager (); const G4Event* event = runManager -> GetCurrentEvent (); if (event) { G4TrajectoryContainer* TC = event -> GetTrajectoryContainer (); if (TC) { G4int nT = TC -> entries (); + sceneHandler.BeginPrimitives (); for (int iT = 0; iT < nT; iT++) { // GB : default representation should be the most efficent one. // Representation with a circle at each step should be an option @@ -54,6 +56,7 @@ void G4TrajectoriesModel::DescribeYourselfTo (G4VGraphicsScene& scene) { // (*TC) [iT] -> DrawTrajectory (50); (*TC) [iT] -> DrawTrajectory (); } + sceneHandler.EndPrimitives (); } } } diff --git a/source/visualization/modeling/src/G4VModel.cc b/source/visualization/modeling/src/G4VModel.cc index 1cfe24818a..9247886a80 100644 --- a/source/visualization/modeling/src/G4VModel.cc +++ b/source/visualization/modeling/src/G4VModel.cc @@ -21,8 +21,8 @@ // ******************************************************************** // // -// $Id: G4VModel.cc,v 1.5.2.1 2001/06/28 19:16:20 gunter Exp $ -// GEANT4 tag $Name: $ +// $Id: G4VModel.cc,v 1.7 2001/08/24 20:36:29 johna Exp $ +// GEANT4 tag $Name: geant4-04-00 $ // // // John Allison 31st December 1997. @@ -51,8 +51,8 @@ G4String G4VModel::GetCurrentDescription () const { return G4String("Default Current Description"); } -G4bool G4VModel::Validate () { - return false; +G4bool G4VModel::Validate (G4bool warn) { + return true; } G4std::ostream& operator << (G4std::ostream& os, const G4VModel& m) {